Ir para conteúdo
  • Cadastre-se

rbleonel

Membros Pro
  • Total de ítens

    256
  • Registro em

  • Última visita

Tudo que rbleonel postou

  1. Pessoal, bom dia! Acredito ter encontrado o que gera duas vezes o mesmo danfe no preview. Fui até o LoadFromFile em ACBrNFeNotasFiscais.pas na function TNotasFiscais.LoadFromFile(CaminhoArquivo: string): boolean; Nessa função, simplesmente "travei" um segundo carregamento do XML e o problema foi solucionado. Veja abaixo como ficou: function TNotasFiscais.LoadFromFile(CaminhoArquivo: string): boolean; var LocNFeR : TNFeR; ArquivoXML: TStringList; XML : AnsiString; begin try ArquivoXML := TStringList.Create; ArquivoXML.LoadFromFile(CaminhoArquivo,TEncoding.UTF8); Result := True; while pos('</NFe>',ArquivoXML.Text) > 0 do begin if pos('</nfeProc>',ArquivoXML.Text) > 0 then begin XML := copy(ArquivoXML.Text,1,pos('</nfeProc>',ArquivoXML.Text)+5); ArquivoXML.Text := Trim(copy(ArquivoXML.Text,pos('</nfeProc>',ArquivoXML.Text)+10,length(ArquivoXML.Text))); end else begin XML := copy(ArquivoXML.Text,1,pos('</NFe>',ArquivoXML.Text)+5); ArquivoXML.Text := Trim(copy(ArquivoXML.Text,pos('</NFe>',ArquivoXML.Text)+6,length(ArquivoXML.Text))); end; LocNFeR := TNFeR.Create(Self.Add.NFe); try LocNFeR.Leitor.Arquivo := XML; LocNFeR.LerXml; Items[self.Count-1].XML := LocNFeR.Leitor.Arquivo; Items[self.Count-1].NomeArq := CaminhoArquivo; GerarNFe; finally LocNFeR.Free; end; //início do código travado {try ArquivoXML.LoadFromFile(CaminhoArquivo,TEncoding.UTF8); Result := True; while pos('</NFe>',ArquivoXML.Text) > 0 do begin if pos('</nfeProc>',ArquivoXML.Text) > 0 then begin XML := copy(ArquivoXML.Text,1,pos('</nfeProc>',ArquivoXML.Text)+5); ArquivoXML.Text := Trim(copy(ArquivoXML.Text,pos('</nfeProc>',ArquivoXML.Text)+10,length(ArquivoXML.Text))); end else begin XML := copy(ArquivoXML.Text,1,pos('</NFe>',ArquivoXML.Text)+5); ArquivoXML.Text := Trim(copy(ArquivoXML.Text,pos('</NFe>',ArquivoXML.Text)+6,length(ArquivoXML.Text))); end; LocNFeR := TNFeR.Create(Self.Add.NFe); try LocNFeR.Leitor.Arquivo := XML; LocNFeR.LerXml; Items[self.Count-1].XML := LocNFeR.Leitor.Arquivo; Items[self.Count-1].NomeArq := CaminhoArquivo; GerarNFe; finally LocNFeR.Free; end; end; finally ArquivoXML.Free; end;} //final do código travado end; except raise; Result := False; end; end; Da forma como está, não exibe mais duas vezes o mesmo danfe no preview. Minha dúvida é: A maneira como fiz está correta ou existe algum problema com o pacote ACBR que está na minha máquina? Lembrando que sempre faço atualizações dos pacotes e ultimamente tenho utilizado o programa instalador que vem junto com o pacote. Obrigado, Rogério.
  2. Ok... Se o problema pode estar na configuração da impressora, como explicar a ocorrência do mesmo problema em diversos clientes? No demo, abri novamente o XML para exibir o Danfe e no Setup mostra que a página está configurada para o tamanho A4. Onde mais posso olhar para saber se a configuração da impressora está errada? Obrigado, Rogério.
  3. Veja, não é que o preview está exibindo em duas páginas o mesmo danfe, ou seja, na página 2 seria o complemento da página 2. Não é isso que acontece! Simplesmente o preview exibe 2x o mesmo dando direitinho na página 1 e na página 2. Se mandar imprimir, será impresso 2x o mesmo danfe no papel certinho em cada folha. O preview não está exibindo na folha 1 parte do Danfe e na folha 2 os restante da folha 1. Não é isso que acontece! Simplesmente no preview, aparece o danfe na folha 1 e na folha 2 sua cópia fiel. Rogério.
  4. Vou anexar novamente por aqui. Estou clicanco em MAIS OPÇÕES e abre a opção de anexar arquivos. Caso não vá novamente, para onde eu poderia enviar o XML? Obrigado, Rogério
  5. Caso o XML não esteja em anexo, por favor, me avise para que eu possa enviar novamente.
  6. Bom dia. Bem, carreguei o XML no demo e visualizei a Danfe e apresentou o mesmo problema que no meu aplicativo. Vou anexar o XML aqui para que alguém possa analisar e me ajudar a identificar este problema. Obrigado, Rogério.
  7. Olá pessoal, tudo bem? Venho procurando a causa deste problema sem sucesso. Alguém poderia me dizer onde eu posso colocar um ponto de parada no ACBR para saber em que momento ele monta 2x a mesma NF para o mesmo preview. Alguém sabe dizer onde está essa rotina? Obrigado, Rogério.
  8. Utilizo Delphi 2010 + ACBR + ACBrNFeDANFERaveCB Pessoal, De uns dias para cá, venho recebendo reclamações de clientes, onde, o preview do Danfe está sendo exibido em duas páginas. Fui verificar e realmente isso está acontecendo. Dei uma olhada nas propriedades do componente ACBrNFeDANFERaveCB e encontrei uma propriedade chamada NumCopias = 1. Mudei essa propriedade para 0 (zero) e mesmo assim o Danfe é exibido no preview em duas páginas, inclusive imprime as duas duas páginas. Para isso ficar mais claro, alguns podem dizer que está saindo na segunda página o restante de impressão da primeira página, porém, afirmo que não é isso. Acontece que o componente ACBrNFeDANFERaveCB está exibindo 2x o mesmo Danfe, exatamente igual na página 1 e na página 2. Tudo igual, como se fosse solicitado 2x o preview do mesmo Danfe. Exibe página 1 e página 2 exatamente iguais. Como fazer para que aparece uma única vez o Danfe no preview? Ah! O pacote ACBR está atualizado! Ou será que isso é algum bug do componente? Obrigado, Rogério.
  9. Beleza!!! Atualizei os pacotes e agora bateu a linha. Obrigado, Rogério.
  10. Juliomar, Matou à pau!!! Fiz a alteração na linha 518 do ACBrNFeNotasFiscais.pas e ficou assim: ArquivoXML.LoadFromFile(CaminhoArquivo,TEncoding.UTF8); Agora o XML é carregado perfeitamente. Obrigado, Rogério.
  11. Juliomar, Infelizmente não funcionou! Na verdade, o Delphi nem compila. Erro: Too many actual parameters Entendo que seja pq a propriedade LoadFromFile do ACBR não possui mais de um parâmetro. Tem outra sugestão? Obrigado, Rogério.
  12. rbleonel

    Importar Xml Pelo Acbr

    Olá pessoal. Utilizo componente ACBR com Delphi 2010. Estou fazendo a importação de um XML de NFe e estou tendo problemas com vários caracteres que estão aparecendo em vários campos, como: Razão Social, endereço e etc. Veja um exemplo: Razão Social: UNIÃO VALÉRIO COMERCIAL LTDA-ME Quando o componente ACBrNFe é carregado com o XML, pego a informação da razão social da seguinte forma: For n:=0 to ACBrNFe1.NotasFiscais.Count-1 Do With ACBrNFe1.NotasFiscais.Items[n].NFe Do TreeView1.Items.AddChild(Nota,'RAZÃO SOCIAL = ' + AnsiUpperCase(UTF8Encode(Dest.xNome))); Também já tentei assim: For n:=0 to ACBrNFe1.NotasFiscais.Count-1 Do With ACBrNFe1.NotasFiscais.Items[n].NFe Do TreeView1.Items.AddChild(Nota,'RAZÃO SOCIAL = ' + UTF8Encode(AnsiUpperCase(Dest.xNome))); Também já tentei assim: For n:=0 to ACBrNFe1.NotasFiscais.Count-1 Do With ACBrNFe1.NotasFiscais.Items[n].NFe Do TreeView1.Items.AddChild(Nota,'RAZÃO SOCIAL = ' + UTF8Encode(Dest.xNome)); Qualquer forma que é feito a leitura deste campo, sempre vai aparecer no TreeView da seguinte forma: UNIÃO VALÉRIO COMERCIAL LTDA-ME Fiz um teste jogando o conteúdo do campo numa variável String e AnsiString e a razão social já vem com aqueles caracteres. Ex.: var teste: AnsiString; teste1: String; teste := Dest.xNome teste1 := Dest.xNome Seja lá qual for a maneira que obtenho o conteúdo do campo, ele sempre vem com esses caracteres. Qual é o segredo para que estes caracteres não apareçam? Obrigado, Rogério.
  13. Problema solucionado!!! Removí o pacote ACBR e reinstalei novamente e voltou a funcionar. Obrigado pela ajuda.
  14. Curioso... Eu fiz essa alteração e não vai. Está dando a seguinte mensagem de erro: [DCC Error] GerarSpedPISCOFINS.pas(3269): E2003 Undeclared identifier: 'csffRegular'
  15. Olá pessoal, tudo bem? Fiz a atualização do pacote ACBR e ao compilar meu projeto, apareceu a seguinte mensagem de erro: [DCC Error] GerarSpedPISCOFINS.pas(3266): E2010 Incompatible types: 'TACBrCodSitF' and 'TACBrCodSit' O erro é no registro 1900 COD_SIT := sdfRegular; Bem, fechei o projeto e recompilei o pacote SPED do ACBR e não resolveu o problema. Alguém sabe dizer como resolver este problema? Obrigado, Rogério.
  16. Prezados senhores, Agradeço à todos que de alguma forma me ajudou a resolver este problema. Realmente, bastava pressionar CTRL + M que o PVA fez tudo o que precisava. Em tempo eu preciso exclarecer esse problema aqui! 1°) Peço desculpas por ter poluido o grupo com uma questão nada a ver. 2°) Recorri ao grupo, pois, meu aplicativo gera o arquivo e envia para a contabilidade. A contabilidade, por sua vez, importou o arquivo para o PVA, que gerou a crítica e a contabilidade me disse que o arquivo que meu aplicativo gerou estava com problemas. Fui ver e realmente não importava devido falha na estrutura. Foi ai que recorri ao grupo e no fim, a FALHA ESTÁ na contabilidade, que não sabe utilizar o PVA e simplesmente empurra o problema. Quando eu fiz o teste aqui e deu tudo certo, entrei em contato com a contabilidade, expliquei como funciona e a resposta foi: - Ah!!! Não sabia que tinha que fazer isso nesse "programinha". Você poderia ter explicado antes. E minha resposta foi: - Eu também não sei utilizar o PVA, porém, sou programador e não contabilista. Bem, de qualquer forma, o problema já foi solucionado. Fora isso, gostaria de uma informação dos senhores à respeito do Sped EFD. Hoje, apenas 2 clientes estão utilizando o arquivo que meu aplicativo está gerando através do ACBR. Os demais clientes que também iriam utilizar, me disseram que a contabilidade não precisa de nenhum arquivo, além do XML. Eles estão gerando o arquivo para o EFD através do XML. Além disso, conversando com alguns clientes sobre esse assunto, eles me disseram que a contabilidade disse que eu estou perdendo meu tempo gerando esses arquivos através do meu aplicativo. Minha pergunta é: Estou mesmo perdendo meu tempo, tendo todo esse trabalho, e além disso eu vejo o pessoal aqui empenhado em criar um componente fantástico e no fim, estamos todos perdendo tempo? Olha, eu tenho quase certeza que não estou perdendo tempo, porém, ainda não consegui entender como a contabilidade está gerando os arquivo para o EFD apenas com o XML. Sempre soube que os arquivos EFD devem ser gerados pelo contribuinte e avaliado e transmitido pelo contabilista. Vários clientes que estavam no processo de gerar o EFD pelo meu aplicativo, pararam e tudo está nas mãos da contabilidade. Por acaso isso está correto? Quais as possíveis consequencias da contabilidade gerar um arquivo "genérico" todo mês sem critérios para as compras e vendas? Alguém poderia me esclarecer isso? Obrigado, Rogério.
  17. Senhores, Fiz a atualização do pacote ACBR e reinstalei novamente no meu Delphi. Infelizmente não surtiu nenhum efeito! Preciso implementar o Bloco M dentro do Bloco zero, porém, o componente gera o arquivo do bloco zero corretamente, só que, não implementa os dados do bloco M. O outro problema é que preciso implementar o registro 0000 no bloco M e também não consigo fazer. Simplesmente não existe o registro 0000 para o bloco M. Veja como estou fazendo: // Dados da Empresa With Bloco_M.Registro0000New Do Alguém tem alguma idéia de como posso resolver esses problemas? Obrigado, Rogério.
  18. Juliomar, É justamente isso que venho dizendo! Na verdade eu tenho 2 problemas com o bloco M. São eles: 1°) Como implementar o bloco M dentro do bloco 0 (zero)? Estou implementando o bloco M dentro do bloco zero e o arquivo é montado informando que o bloco M não possui dados, sendo que estou informando dados. Esse é o começo deste tópico. Por que quero fazer isso? Ao validar o bloco zero, o validador retorna dizendo que o registro filho obrigatório não foi informado (M200 e M600) Por causa disso, eu preciso implementar o bloco M dentro do arquivo do bloco zero. Só que ao fazer isso, o componente ACBRPISCOFINS está implementando o bloco M dentro do arquivo do bloco zero, sem dados. Acho que o componente está com algum bug! É por isso que recorri ao forum para obter ajuda e o Isaque me fez algumas orientações, só que, infelizmente nenhuma delas surtiu efeito. ################################################################################################################################ 2°) Como eu já tenho o bloco M montado e está criando o arquivo normalmente, separado do bloco zero, fui validar o arquivo e o validador retornou dizendo que os dados da empresa são obrigatórios no registro 0000. Porém, ao olhar o demo, lá também não tem uma explicação de como implementar o registro 0000 no bloco M, que é justamente essa primeira linha que você colocou ai que está toda zerada. Essa é a primeira linha do arquivo referente ao registro 000: |0000|001|0|0||01122012|31122012||||0000000|000000000|00|0| ################################################################################################################################ Como pode ver, eu tenho dois problemas, sendo que o segundo problema acabou ficando confuso aqui nesse tópico. Seria melhor eu abrir outro tópico referente ao segundo problema ou podemos tratá-lo aqui mesmo? Obrigado, Rogério.
  19. Será que o anexo está indo? Estou enviando novamente! EFD_PISCOFINS_BlocoM_Saida_01122012_31122012.txt
  20. Veja que o registro 0000 está sem dados na primeira linha do arquivo.
  21. Juliomar, Perfeito, eu também fiz separado! Agora, como explica o validador da fazenda exigir o bloco M dentro do bloco 0 (zero)? Eu mantive o bloco M totalmente separado e está funcionando quase que perfeito. Só não consigo implementar o registro 0000 no bloco M. O registro 0000 é a identificação da empresa emitente. Obrigado, Rogério.
  22. Isaque, Fiz uma verificação bem cuidadosa e não encontrei diferenças na forma de montar o "esqueleto". Também coloquei New para implementar um novo registro e mesmo assim não implementou. No BLOCO 0 (zero), ao validar pelo validador da fazenda, está retornando erro, pois, REGISTRO FILHO OBRIGATÓRIO NÃO INFORMADO. Os registros são: M200 e M600. Minha pergunta é: Bem, estou implementando o bloco M dentro do bloco 0 (zero). Está correto? Outra dúvida que apareceu, é que também estou implementando o bloco M fora do bloco 0. Está sendo implementado sem problemas, porém, ao valida-lo, está retornando: PREENCHIMENTO DO CAMPO OBRIGATÓRIO REGISTRO 0000. Esses campos são: Nome, CNPJ, UF e etc da empresa emitente. Porém, não estou conseguindo implementar o registro 0000 no bloco M conforme faço para os outros blocos. Nos outros blocos faço da seguinte forma: Exemplo é do bloco 1 With ACBrSPEDPisCofins1.Bloco_1 Do With Registro1001New Do Begin IND_MOV := imComDados; // Dados da Empresa With Bloco_0.Registro0000New Do Begin COD_VER := vlVersao201; NOME := MD.TbCadEmpresas.FieldByName('RazaoSocial').AsString; CNPJ := LimpaCampos(MD.TbCadEmpresas.FieldByName('CNPJ').AsString); UF := MD.TbCadEmpresas.FieldByName('Estado').AsString; COD_MUN := strTOint(MD.TbCadEmpresas.FieldByName('CodMunicipio').AsString); SUFRAMA := ''; end; ... Fui olha no exemplo, e para o bloco M não existe nenhuma implementação dos dados da empresa e o validador exige essas informação. Ao abrir o arquivo do bloco M, o registro 0000 está da seguinte forma: |0000|001|0|0||01122012|31122012||||0000000|000000000|00|0| Ou seja, o componente implementa o registro 0000 no arquivo, porém, não sei como fazer. Então, tenho agora duas dúvidas. São elas: 1°) Como implementar o bloco M no arquivo do bloco 0 (zero); e 2°) Como implementar o registro 0000 no bloco M. Obrigado, Rogério.
  23. Isaque, Não, o valor que está chegando é imSemDados. Veja a imagem que está no anexo para entender melhor. Abaixo está parte do código: With ACBrSPEDPisCofins1.Bloco_M Do With RegistroM001 Do Begin IND_MOV := imComDados; ... With RegistroM100New Do Begin COD_CRED := ''; If MD.TbCadEmpresasSped.FieldByName('IndCredito_BLM_PISCOFINS').AsString = '0' then IND_CRED_ORI := TACBrIndCredOri(0); If MD.TbCadEmpresasSped.FieldByName('IndCredito_BLM_PISCOFINS').AsString = '1' then IND_CRED_ORI := TACBrIndCredOri(1); VL_BC_PIS := MD.QyVendasItens.FieldByName('ValorTotalItem').AsFloat; ALIQ_PIS := MD.TbCadEmpresas.FieldByName('AliquotaPIS').AsFloat; QUANT_BC_PIS := 0; ALIQ_PIS_QUANT := 0; VL_CRED := 0; VL_AJUS_ACRES := 0; VL_AJUS_REDUC := 0; VL_CRED_DIF := 0; VL_CRED_DISP := 0; If MD.TbCadEmpresasSped.FieldByName('IndOpUtilCredDispPer_BLM_PISCOFINS').AsString = '0' then IND_DESC_CRED := TACBrIndDescCred(0); If MD.TbCadEmpresasSped.FieldByName('IndOpUtilCredDispPer_BLM_PISCOFINS').AsString = '1' then IND_DESC_CRED := TACBrIndDescCred(1); VL_CRED_DESC := 0; SLD_CRED := 0; end; With RegistroM200 Do Begin VL_TOT_CONT_NC_PER := (MD.QyVendasItens.FieldByName('ValorTotalItem').AsFloat * MD.TbCadEmpresas.FieldByName('AliquotaPIS').AsFloat) / 100; VL_TOT_CRED_DESC := 0; VL_TOT_CRED_DESC_ANT := 0; VL_TOT_CONT_NC_DEV := (MD.QyVendasItens.FieldByName('ValorTotalItem').AsFloat * MD.TbCadEmpresas.FieldByName('AliquotaPIS').AsFloat) / 100; VL_RET_NC := (MD.QyVendasItens.FieldByName('ValorTotalItem').AsFloat * MD.TbCadEmpresas.FieldByName('AliquotaPIS').AsFloat) / 100; VL_OUT_DED_NC := 0; VL_CONT_NC_REC := (MD.QyVendasItens.FieldByName('ValorTotalItem').AsFloat * MD.TbCadEmpresas.FieldByName('AliquotaPIS').AsFloat) / 100; VL_TOT_CONT_CUM_PER := (MD.QyVendasItens.FieldByName('ValorTotalItem').AsFloat * MD.TbCadEmpresas.FieldByName('AliquotaPIS').AsFloat) / 100; VL_RET_CUM := 0; VL_OUT_DED_CUM := 0; VL_CONT_CUM_REC := (MD.QyVendasItens.FieldByName('ValorTotalItem').AsFloat * MD.TbCadEmpresas.FieldByName('AliquotaPIS').AsFloat) / 100; VL_TOT_CONT_REC := (MD.QyVendasItens.FieldByName('ValorTotalItem').AsFloat * MD.TbCadEmpresas.FieldByName('AliquotaPIS').AsFloat) / 100; end; ... Obrigado, Rogério.
  24. Isaque, Mas já estou fazendo isso. Veja como está o início do código: With ACBrSPEDPisCofins1.Bloco_M Do With RegistroM001 Do Begin IND_MOV := imComDados; ... Tomei esse cuidado, pois, sei que quando a propriedade IND_MOv := imSemDados, o componente não implementa nada. Nesse caso, estou informando que é com dados. "Debugando", está entrando corretamente em todas as propriedades e implementando os registros, porém, não implementa no arquivo TXT. Estranho que os outros blocos e registros estão sendo implementados corretamente no TXT. Apenas o bloco M e filhos não estão. Obrigado, Rogério.
  25. rbleonel

    Bloco 0 (Zero)

    Prezados Senhores, Estou gerando o arquivo EFD PIS/COFINS e ao validar, apareceu a mensagem que o registro filho M200 e M600 são obrigatórios para o bloco 0 (zero). Implementei o bloco M e os registros M200 e M600, porém, não é inserido nenhum registro para o M200 e M600. No arquivo gerado pelo ACBR, eles ficam assim: |M001|1| |M990|2| Alguém sabe me dizer porque esses registros não são implementado dentro do arquivo para o bloco 0 (zero)? Obrigado, Rogério.
×
×
  • 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.