Ir para conteúdo
  • Cadastre-se

dev botao

ACBrSPEDPisCofins - Exemplo e testes no componente


  • Este tópico foi criado há 4528 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Eis o que estou corrigindo neste ultimo anexo que estou enviando:

Bloco 0:

Acrescentado validações de campos obrigatórios no 0110 e 0206

Corrigido tamanho do campo Suframa que estava errado

Bloco 9:

No uses está usando ACBrEFDBloco_9, quando deve-se usar ACBrEPCBloco_9

Bloco A:

A010 - Corrigido frase de validação do campo

Bloco C:

C010 - Corrigido frase de validação do campo

C100 - Estava faltando campo VL_MERC

C111 - Estava somando 1 no C100 em vez de mais 1 no C111

C120 - Estava inibido o campo NUM_ACDraw, fazendo com que mostra-se erro de tamanho do registro

Estava somando 1 no C100 em vez de mais 1 no C120

C190 - Estava somando 1 no C180 em vez de mais 1 no C190

C191,C195 - Não estava colocando o CFOP informado

C199 - Estava somando 1 no C190 em vez de mais 1 no C199

Bloco D:

D010 - Corrigido frase de validação do Campo

Bloco F:

F010 - Corrigido Frase de validação do campo

F800 - Acrescentado constante - COD_CRED = '307'

EPCBlocos:

Acrescentado '307' na constante TACBrCodCred

Notei que na segundo faze de validação já apareceram muitos outros erros.

Conforme for corrigindo, vou postando aqui no forum.

Esse arquivo é baseado em update de 20/04 as 12:00

Alterações no SVN.

Abraço

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

  • Respostas 74
  • Created
  • Última resposta

Top Posters In This Topic

Bom dia,

Isaque, eu encontrei um problema que eu acho que não foi pensado.

Por exemplo, as empresas que minha empresa atende, não tem nenhuma que trabalha com combustível nem com bebidas, então de acordo com o manual os registro 0206 e 0208 não devem ser informados no arquivo. O meu sistema faz isso, mas o componente no registro 0200 chama a rotina de preenchimento desses dois campos, e os preenchem mesmo não tendo informado nada.

Eu estou anexando uma correção pra isso, que faz a verificação no 0206 se o cod_comb estiver vazio não coloca no arquivo este registro.

E no 0208, eu acrescentei no arquivo blocos uma nova constante para o cod_tab, que se estiver for esta constante a informada, ele não acrescenta esse registro no arquivo texto.

Mas eu acho que deve ser feito uma analise, ou colocar no branches, uma modificação no componente:

Criar uma procedure ou algo do tipo para verificar se há dados no registro, se não existir dados colocar a verificação para não acrescentá-lo no arquivo texto.

O que vc acha?

Mas estou anexando de qualquer modo as alterações que eu fiz referentes a isso!

ACBrSPEDPisCofins.rar

Link para o comentário
Compartilhar em outros sites

Boa Tarde,

Encontrei mais alguns problemas na validação, foram os seguintes:

Blobo_C_Class:

c010 - estava tentando converter a constante para Integer; mesmo que coloca-se várias empresas o arquivo colocava Ind_Escri = 0

c181 e c185: Se preencher bc_pis tem que deixar em branco quant_bc_pis o mesmo vale para aliq_pis_quant, aliq_pis e com os campos do cofins.

Bloco_0_Class:

Corrigido alguns erros de português.

ACBrSPEDPisCofins.rar

Link para o comentário
Compartilhar em outros sites

Boa Tarde,

Encontrei mais alguns problemas na validação, foram os seguintes:

Blobo_C_Class:

c010 - estava tentando converter a constante para Integer; mesmo que coloca-se várias empresas o arquivo colocava Ind_Escri = 0

c181 e c185: Se preencher bc_pis tem que deixar em branco quant_bc_pis o mesmo vale para aliq_pis_quant, aliq_pis e com os campos do cofins.

Bloco_0_Class:

Corrigido alguns erros de português.

Baixado, vou analisar e subir pro SVN, obrigado.

Abs

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Boa Tarde,

Encontrei mais dois problemas no Bloco_C_Class:

C490: Não estava preenchendo os registros filhos pois não estava chamando eles na procedure

C491 E C495: estava preenchendo errado a CFOP.

Estes erros já estão corrigidos neste arquivo que estou anexando

Flw, já ta no SVN

Abs

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Olá amigos, estou testando o SPEDPisCofins e precisei realizar uma alteração no Bloco C,

Quando envio uma nota cancelada o validador diz que eu não posso preencher o valor da mercadoria, logo alterei a linha 803 de

LFill( VL_MERC,0,2 )                        +
para
LFill( VL_MERC,0,2, booNFCancelada )        +
alterei também a procedure de escrita do registro C170, pois aqui o validador diz que, ou eu informo o valor de base e aliquota, ou informo o valor em quantidade, logo deixei a procedure WriteRegistroC170(linha 1102) desta forma:
{28} DFill( QUANT_BC_PIS,3,true )  +

{29} DFill( ALIQ_PIS_R,4,true )    +

{30} LFill( VL_PIS,0,2 )           +

{31} LFill( strCST_COFINS )        +

{32} LFill( VL_BC_COFINS,0,2 )     +

{33} LFill( ALIQ_COFINS_PERC,0,2 ) +

{34} DFill( QUANT_BC_COFINS,3,true )+

{35} DFill( ALIQ_COFINS_R,4,true ) +

se tiver que postar em outro lugar, ou caso tenham outra solução estou a disposição, no mais, o que eu puder ajudar, estarei por aqui.

- Sou desenvolvedor.

- De que linguagem, delphi? .NET? Java?

- Qualquer uma, sou desenvolvedor.

Link para o comentário
Compartilhar em outros sites

Ainda em relação ao registro C400, achei outro erro, na hora de escrever o registro o ultimo campo esta como inteiro mais aparece como uma data, EX: |C400|2D|URANO POS-LOGGER|UR010701169|31121899|, se colocar por exemplo um numero 1 mesmo assim ele escreve do jeito acima.

O campo é do RegistroC400New --> ECF_CX

Suélio Santos

PROGRAMMER DELPHI/JAVA

Natal - RN

Link para o comentário
Compartilhar em outros sites

Olá amigos, estou testando o SPEDPisCofins e precisei realizar uma alteração no Bloco C,

Quando envio uma nota cancelada o validador diz que eu não posso preencher o valor da mercadoria, logo alterei a linha 803 de

LFill( VL_MERC,0,2 )                        +
para
LFill( VL_MERC,0,2, booNFCancelada )        +
alterei também a procedure de escrita do registro C170, pois aqui o validador diz que, ou eu informo o valor de base e aliquota, ou informo o valor em quantidade, logo deixei a procedure WriteRegistroC170(linha 1102) desta forma:
{28} DFill( QUANT_BC_PIS,3,true )  +
{29} DFill( ALIQ_PIS_R,4,true ) +
{30} LFill( VL_PIS,0,2 ) +
{31} LFill( strCST_COFINS ) +
{32} LFill( VL_BC_COFINS,0,2 ) +
{33} LFill( ALIQ_COFINS_PERC,0,2 ) +
{34} DFill( QUANT_BC_COFINS,3,true )+
{35} DFill( ALIQ_COFINS_R,4,true ) +[/code]

se tiver que postar em outro lugar, ou caso tenham outra solução estou a disposição, no mais, o que eu puder ajudar, estarei por aqui.

Ola, tem sim, façam a alteração e anexe aqui, somente a(s) Unit(s) que vcs fizeram a alteração, isso ajuda bastante, pois é só fazer um merge.

Abs

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia, desculpe a pergunta, pelo que entendi a idéia é agente que esta usando o componente fazer a alteração e postar a unit? Se for já tenho algumas correções para postar.

Olá Suélio,

Se você tiver correções no código baixado no SVN você é incentivado a postar as correções aqui sim. Daí alguém pode subir pro SVN a correção e disponibilizar pra todos. Assim teremos um componente mais robusto e sem erros. Também vai facilitar quando baixar alguma nova versão pois seu código alterado já vai estar no SVN. ;)

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Pessoal iniciei os teste hoje e vi alguns erros, tais como no registro A170 ele estava pegando O NUM_ITEM e a função LFILL

entendia que era data, ai troquei essa linha:

Add( LFill('A170') +

//(Value: Integer; Size: Integer; Nulo: Boolean = false; Caracter: Char = '0'): String;

LFill(NUM_ITEM,0,false,'0')+

LFill(COD_ITEM) +

LFill(DESCR_COMPL) +

LFill( VL_ITEM,0,2 ) +

LFill( VL_DESC,0,2 ) +

LFill( strNAT_BC_CRED) +

LFill(strIND_ORIG_CRED) +

LFill(strCST_PIS) +

LFill( VL_BC_PIS,0,2 ) +

LFill( ALIQ_PIS,0,2 ) +

LFill( VL_PIS,0,2 ) +

LFill(strCST_COFINS) +

LFill( VL_BC_COFINS,0,2 ) +

LFill( ALIQ_COFINS,0,2 ) +

LFill( VL_COFINS,0,2 ) +

LFill(COD_CTA) +

LFill(COD_CCUS) ) ;

vi tbm que ao gerar o registro 0200 ele gerava o o registro 0208 mas foi apenas trocar pra isso:

TACBrIndCodIncidencia = (

codIndiTabNaoTem,

codIndTabI, // 01 - Tabela I

codIndTabII, // 02 - Tabela II

codIndTabIII, // 03 - Tabela III

codIndTabIV, // 04 - Tabela IV

codIndTabV, // 05 - Tabela V

codIndTabVI, // 06 - Tabela VI

codIndTabVII, // 07 - Tabela VII

codIndTabVIII, // 08 - Tabela VIII

codIndTabIX, // 09 - Tabela IX

codIndTabX, // 10 - Tabela X

codIndTabXI, // 11 - Tabela XI

codIndiTabXII // 12 - Tabela XII

);

não sei trabalhar com classe no delphi mas alterei os arquivos nessas linhas e resolveu.

Desculpa a falta de experiencia.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Leia com atenção as instruções de instalação no arquivo LEIA-ME.TXT (na raiz da pasta)

(provavelmente vc não adicionou os Paths ao LibPath do Delphi)

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Pessoal estou com problema no totalizador dos registros C001 e C010 estão gerando 1 para cada C100 e os totalizadores C0999 não fecha com os registro C, já foi ajustado o componente? Grato!

Dei uma olhada no fonte, e não consegui detectar o problema reporto por vc, se conseguir detectar ai, poste aqui que subi a correção.

Abs

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Bom dia, desculpe a pergunta, pelo que entendi a idéia é agente que esta usando o componente fazer a alteração e postar a unit? Se for já tenho algumas correções para postar.

Exatamente isso.

Anexando baixou as units, faço a avaliação e se tiver deacordo com o projeto, subo suas alterações/implementações para o SVN, do projeto pricipal.

Abs

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Boa tarde, algumas melhorias:

1) Classe: ACBrEPCBloco_C_Class

* Registro C400, LFill(ECF_CX, 2) colocar delimitador, para não trazer formato de data não encontrada, exemplo: 31121899. Esse campo é um integer.

2) Classe: ACBrEPCBloco_1_Class

* Registro 1100

LFill( PER_APU_CRED, 6) + // Ou criar tabela no ACBrEPCBlocos ou colocar delimitador e deixar que o desenvolvedor passe a informação correta. Ex: 042011

LFill( ORIG_CRED, 2 ) + // Ou criar tabela no ACBrEPCBlocos ou colocar delimitador e deixar que o desenvolvedor passe a informação correta. Ex: 01

LFill( COD_CRED, 3 ) // Ou criar tabela no ACBrEPCBlocos ou colocar delimitador e deixar que o desenvolvedor passe a informação correta. Ex: 101

LFill( SLD_CRED_FIM, 0, 2) é um valor currency e não esta com o (0, 2)

Segue em anexo.

Correções_PISCOFINS.rar

Suélio Santos

PROGRAMMER DELPHI/JAVA

Natal - RN

Link para o comentário
Compartilhar em outros sites

Boa tarde, algumas melhorias:

1) Classe: ACBrEPCBloco_C_Class

* Registro C400, LFill(ECF_CX, 2) colocar delimitador, para não trazer formato de data não encontrada, exemplo: 31121899. Esse campo é um integer.

2) Classe: ACBrEPCBloco_1_Class

* Registro 1100

LFill( PER_APU_CRED, 6) + // Ou criar tabela no ACBrEPCBlocos ou colocar delimitador e deixar que o desenvolvedor passe a informação correta. Ex: 042011

LFill( ORIG_CRED, 2 ) + // Ou criar tabela no ACBrEPCBlocos ou colocar delimitador e deixar que o desenvolvedor passe a informação correta. Ex: 01

LFill( COD_CRED, 3 ) // Ou criar tabela no ACBrEPCBlocos ou colocar delimitador e deixar que o desenvolvedor passe a informação correta. Ex: 101

LFill( SLD_CRED_FIM, 0, 2) é um valor currency e não esta com o (0, 2)

Segue em anexo.

ok, assim que puder subo suas alterações, caso tenha mais alguma correção, faça o mesmo procedimento, ficou bem explicativo

Abrigado

Abs

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Correção:

Classe: ACBrEPCBloco_1_Class

* Registro 1500

LFill( PER_APU_CRED, 6) + // Ou criar tabela no ACBrEPCBlocos ou colocar delimitador e deixar que o desenvolvedor passe a informação correta. Ex: 042011

LFill( ORIG_CRED, 2 ) + // Ou criar tabela no ACBrEPCBlocos ou colocar delimitador e deixar que o desenvolvedor passe a informação correta. Ex: 01

LFill( COD_CRED, 3 ) // Ou criar tabela no ACBrEPCBlocos ou colocar delimitador e deixar que o desenvolvedor passe a informação correta. Ex: 101

Mesmo caso do 1100

Correção em anexo.

ACBrEPCBloco_1_Class.rar

Suélio Santos

PROGRAMMER DELPHI/JAVA

Natal - RN

Link para o comentário
Compartilhar em outros sites

Correção:

Classe: ACBrEPCBloco_1_Class

* Registro 1500

LFill( PER_APU_CRED, 6) + // Ou criar tabela no ACBrEPCBlocos ou colocar delimitador e deixar que o desenvolvedor passe a informação correta. Ex: 042011

LFill( ORIG_CRED, 2 ) + // Ou criar tabela no ACBrEPCBlocos ou colocar delimitador e deixar que o desenvolvedor passe a informação correta. Ex: 01

LFill( COD_CRED, 3 ) // Ou criar tabela no ACBrEPCBlocos ou colocar delimitador e deixar que o desenvolvedor passe a informação correta. Ex: 101

Mesmo caso do 1100

Correção em anexo.

Corrigido e já esta disponivel, obrigado

Se quiser criar as tabelas no ACBrEPCBloco, fique a vontade.

Abs

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Boa Noite a todos,

Venho por meio deste informar que fiz os teste hoje no componente acbrpiscofins e vi alguns erros,mas simples de corrigir.

toda vez que gerava o registro 0200 ele gerava o 0208.

alterei apenas a posição.

//Código indicador da tabela de incidencia, conforme anexo III

TACBrIndCodIncidencia = (

codIndiTabNaoTem,

codIndTabI, // 01 - Tabela I

codIndTabII, // 02 - Tabela II

codIndTabIII, // 03 - Tabela III

codIndTabIV, // 04 - Tabela IV

codIndTabV, // 05 - Tabela V

codIndTabVI, // 06 - Tabela VI

codIndTabVII, // 07 - Tabela VII

codIndTabVIII, // 08 - Tabela VIII

codIndTabIX, // 09 - Tabela IX

codIndTabX, // 10 - Tabela X

codIndTabXI, // 11 - Tabela XI

codIndiTabXII // 12 - Tabela XII

);

antes estava assim :

TACBrIndCodIncidencia = (

codIndTabI, // 01 - Tabela I

codIndTabII, // 02 - Tabela II

codIndTabIII, // 03 - Tabela III

codIndTabIV, // 04 - Tabela IV

codIndTabV, // 05 - Tabela V

codIndTabVI, // 06 - Tabela VI

codIndTabVII, // 07 - Tabela VII

codIndTabVIII, // 08 - Tabela VIII

codIndTabIX, // 09 - Tabela IX

codIndTabX, // 10 - Tabela X

codIndTabXI, // 11 - Tabela XI

codIndiTabXII, // 12 - Tabela XII

codIndiTabNaoTem

);

e essa linha na class_c

{27} LFill( ALIQ_PIS_PERC,8, 4, False, '0','#0.000' ) +

{33} LFill( ALIQ_COFINS_PERC,8,4, False, '0' ,'#0.000') +

{27} LFill( ALIQ_PIS_PERC,8, 4, False, '0') +

{33} LFill( ALIQ_COFINS_PERC,8,4, False, '0' ) +

como não consegui anexar os arquivos aqui no forum dá sempre essa msg:Desculpe, o limite de quota de anexos foi alcançado.

segue link http://www.vendassr.com.br/ACBrSPEDPisCofins.rar

valeu.

Link para o comentário
Compartilhar em outros sites

Boa Noite a todos,

Ola Washington

A primeira alteração, foi aceita, inclusive coloquei no create do 0208, para ele definir como padrão "codIndiTabNaoTem"

A sugunda não pode ser alterada, no Guia Pratico diz que deve ser tamanho=8 e decimal=4, para atender a essa exigencia tive que alterar o componente hoje, colocando assim um parametro a mais que é a mascara, se ela não for passada como vc fez o campo será gerado com a quantidade de casas decimais definida na propriedade CurMascara, a qual para a maioria dos campos do SPED, deve ser #0.00 (duas casas)

Abs

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4528 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.