
rbleonel
Membros Pro-
Total de ítens
256 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que rbleonel postou
-
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.
-
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.
-
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.
-
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
-
Caso o XML não esteja em anexo, por favor, me avise para que eu possa enviar novamente.
-
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.
-
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.
-
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.
-
Beleza!!! Atualizei os pacotes e agora bateu a linha. Obrigado, Rogério.
-
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.
-
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.
-
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.
-
Problema solucionado!!! Removí o pacote ACBR e reinstalei novamente e voltou a funcionar. Obrigado pela ajuda.
-
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'
-
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.
-
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.
-
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.
-
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.
-
Será que o anexo está indo? Estou enviando novamente! EFD_PISCOFINS_BlocoM_Saida_01122012_31122012.txt
-
Veja que o registro 0000 está sem dados na primeira linha do arquivo.
-
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.
-
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.
-
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.
-
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.
-
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.