Ir para conteúdo
  • Cadastre-se

Rodrigo - Digibyte

Membros Pro
  • Total de ítens

    325
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Rodrigo - Digibyte postou

  1. Atualizei e estou fazendo grandes alterações no bloco 0 e na units acbrspedecf pois não estavam sendo gerados vários registros. Aguardem que ainda hoje posto as alterações.
  2. Foi, sem a correção ... ACBrSpedContabil.pas
  3. Boa tarde, a procedure como está gera um erro AV, para corrigir voltei ao que era anteriormente, seguem os dois blocos para análise: Com erro: Bloco.NomeArquivo := FACBrTXT.NomeArquivo; Bloco.LinhasBuffer := FACBrTXT.LinhasBuffer; Bloco.Gravado := False ; Bloco.Conteudo.Clear; <<---- erro AV Sem erro: Bloco.NomeArquivo := FACBrTXT.NomeArquivo; Bloco.LinhasBuffer := FACBrTXT.LinhasBuffer; Bloco.Gravado := False ; if not Assigned(Bloco.Conteudo) then Bloco.Conteudo := TStringList.Create; Bloco.Conteudo.Clear; Obs: repositório trunk
  4. Os mantenedores do acbr poderiam dar uma força e incluir o ecf na instalação do acbr? Assim ficaria mais fácil para usarmos e principalmente implementarmos as correções, que estariam disponíveis no svn para todos. Se não for possível posso tentar por aqui mas tenho medo de estar fazendo em desacordo com o padrão que utilizam ou outro usuários estar fazendo a mesma coisa/correçoes em paralelo.
  5. Alguém tem os fontes mais atualizados que os do svn? Quero começar a mexer/testar o sped ecf
  6. Os totalizadores desses registros estavam sendo gerados de forma incorreta, o do I155 estava fora de ordem (mas validava no pva), o do I310 não totalizava e acusava erro. Constatei s seguinte trecho de código, mesma coisa ocorria no WriteRegistroI150: procedure TACBrSPEDContabil.WriteRegistroI300; begin if Bloco_I.RegistroI300.Count > 0 then begin with Bloco_9.Registro9900.New do begin REG_BLC := 'I300'; QTD_REG_BLC := Bloco_I.RegistroI300.Count; end; end; if Bloco_I.RegistroI310Count > 0 then begin with Bloco_9.Registro9900.New do begin REG_BLC := 'I310'; QTD_REG_BLC := Bloco_I.RegistroI310Count; end; end; Bloco_I.WriteRegistroI300; end; Correção: procedure TACBrSPEDContabil.WriteRegistroI300; begin Bloco_I.WriteRegistroI300; if Bloco_I.RegistroI300.Count > 0 then begin with Bloco_9.Registro9900.New do begin REG_BLC := 'I300'; QTD_REG_BLC := Bloco_I.RegistroI300.Count; end; end; if Bloco_I.RegistroI310Count > 0 then begin with Bloco_9.Registro9900.New do begin REG_BLC := 'I310'; QTD_REG_BLC := Bloco_I.RegistroI310Count; end; end; end; Outro erro que acabava gerando os totais mas fora de ordem e do padrão: procedure TACBrSPEDContabil.WriteRegistroI990; begin with Bloco_9.Registro9900.New do begin REG_BLC := 'I990'; QTD_REG_BLC := 1; end; Bloco_I.WriteRegistroI990; with Bloco_9.Registro9900 do begin if Bloco_I.RegistroI155Count > 0 then begin with New do begin REG_BLC := 'I155'; QTD_REG_BLC := Bloco_I.RegistroI155Count; end; end; if Bloco_I.RegistroI250Count > 0 then begin with New do begin REG_BLC := 'I250'; QTD_REG_BLC := Bloco_I.RegistroI250Count; end; end; end; end; O trecho em vermelho foi retirado pois agora os totais estão sendo gerados no local correto. Validei aqui e funcionou tudo certo mas é sempre bom alguém com mais experiência no ACBR dar uma olhada se as alterações estão corretas. ACBrSpedContabil.pas
  7. Ops, achei que tinha anexado, segue ... ACBrECDBloco_0_Class.pas
  8. Existiam duas mensagens de erro/aviso que estavam sendo tratadas incorretamente, segue correção em anexo 1) (0-0000) O indicador "%s" de situação especial, deve ser informado o número 1 ou 2 ou 3 ou 4 ou 5! Estava duplicado no código Não respeitava os valores possíveis de acordo com o layout/ano Dava mensagem de erro ao ser informado em branco, qué é a situação mais comum e possível 2) (0-0000) A inscrição estadual "%s" digitada é inválida! Algumas empresas não tem IE, não estava sendo tratada essa possibilidade
  9. Boa tarde, gostaria de saber o que significa "orgão gerador" na nfse. Ocorre que na importação de algumas notas o código do município está vindo (aparentemente) errado dentro da tag <orgaogerador><codigomunicipio>, com isso o acbr não localiza o provedor e não é feita a importação pois esta é a primeira tag que é verificada para determinar o provedor: unit pnfsNFSeR; if FProvedor = proNenhum then begin if (Leitor.rExtrai(1, 'OrgaoGerador') <> '') then begin CM := Leitor.rCampo(tcStr, 'CodigoMunicipio'); FProvedor := StrToProvedor(Ok, CodCidadeToProvedor(StrToIntDef(CM, 0))); end; if (CM = '') or (CM = '0') then begin if (Leitor.rExtrai(1, 'Servico') <> '') then begin CM := Leitor.rCampo(tcStr, 'CodigoMunicipio'); FProvedor := StrToProvedor(Ok, CodCidadeToProvedor(StrToIntDef(CM, 0))); end; end; if (CM = '') or (CM = '0') then begin if (Leitor.rExtrai(1, 'PrestadorServico') <> '') then begin CM := OnlyNumber(Leitor.rCampo(tcStr, 'CodigoMunicipio')); if CM = '' then CM := Leitor.rCampo(tcStr, 'Cidade'); FProvedor := StrToProvedor(Ok, CodCidadeToProvedor(StrToIntDef(CM, 0))); end else FProvedor := proNenhum; end; { Alterado Por Cleiver em - 22-08-2014 } if (FProvedor = proNenhum) and (Pos('https://nfse.goiania.go.gov.br/ws/'Leitor.Arquivo) > 0) then FProvedor := proGoiania; end;
  10. Estava fazendo alguns testes de importação de lote nfse com um arquivo contendo cerca de 650 notas. Ao tentar fazer a importação notei que o sistema travava no método LoadFromFile, debugando a unit notei que o problema eram nas funções StringReplace de Delphi que são muito lentas ao menipular uma quantidade maior de caracteres. Essas 650 notas quando chegou em 5 minutos desisti de esperar ... se pesquisarem por "faster delphi stringreplace" no google irão ver que essa lentidão é bastante discutida Pesquisando um pouco achei alguns substitutos otimizados para o StringReplace, um deles foi o StrReplace, da biblioteca Jedi (unit JclStrings). Fiz as alterações no código para testar e agora demora cerca de 20 segundos a importação. Gostaria de saber a posição dos demais programadores a respeito de uma possível alteração, incorporando a função StrReplace do Jedi dentro do ACBR. A dica peguei neste link http://conferences.embarcadero.com/article/32120 no final do artigo (Alternative String Routines (FastStrings and other Libraries)) Abaixo os trechos de código alterado: Unit AcbrNfseNotasFiscais try {$IFDEF DELPHI2009_UP} Encoding := NotaUtil.LoadXML(CaminhoArquivo); {$ENDIF} ArquivoXML := TStringList.Create; ArquivoXML.LoadFromFile(CaminhoArquivo {$IFDEF DELPHI2009_UP},Encoding{$ENDIF}); Result := True; aux := ArquivoXML.Text; StrReplace(aux, '&lt;', '<', [rfReplaceAll]); StrReplace(aux, '&gt;', '>', [rfReplaceAll]); // ArquivoXML.Text := StrReplace(StringReplace( ArquivoXML.Text, '&lt;', '<', [rfReplaceAll]), '&gt;', '>', [rfReplaceAll]); ArquivoXML.Text := NotaUtil.RetirarPrefixos(aux); Unit AcbrNfseUtil class function NotaUtil.RetirarPrefixos(const AXML: String): String; var XML: string; begin XML := AXML; StrReplace( XML, 'ns1:', '', [rfReplaceAll] ); StrReplace( XML, 'ns2:', '', [rfReplaceAll] ); StrReplace( XML, 'ns3:', '', [rfReplaceAll] ); StrReplace( XML, 'ns4:', '', [rfReplaceAll] ); StrReplace( XML, 'ns5:', '', [rfReplaceAll] ); StrReplace( XML, 'tc:', '', [rfReplaceAll] ); StrReplace( XML, 'ii:', '', [rfReplaceAll] ); StrReplace( XML, 'p1:', '', [rfReplaceAll] ); StrReplace( XML, 'nfse:', '', [rfReplaceAll] ); StrReplace( XML, 'soap:', '', [rfReplaceAll] ); StrReplace( XML, 'soap12:', '', [rfReplaceAll] ); StrReplace( XML, 'SOAP-ENV:', '', [rfReplaceAll] ); result := XML; end;
  11. Bom dia, um cliente me mandou um xml que é o lote de notas gerados pela prefeitura de João Pessoa. É possível fazer a importação dessas notas com auxílio do ACBR? Se for possível podem dar uma dica das configurações básicas pra isso?
  12. Boa tarde, ao tentar compilar meu projeto (após uma atualização hoje) está retornando erro nas linhas abaixo destacadas. Verifiquei rapidamente e aparentemente está errado mesmo. Erro: "[DCC Error] pcnRetEnvEventoNFe.pas(274): E2018 Record, object or class type required" while Leitor.rExtrai(3, 'chNFePend', '', j + 1) <> '' do begin FretEvento.Items.FRetInfEvento.chNFePend.Add; FretEvento.Items.FRetInfEvento.chNFePend[j].ChavePend := Leitor.rCampo(tcStr, 'chNFePend'); inc(j); end; inc(i); end;
  13. Não tem como termos acesso a uma pasta específica do SVN, só para o esocial? O controle das alterações seria bem mais fácil
  14. Preciso estar a par também dos rumos do componente, poderíamos conversar via skype
  15. Precisamos de ajuda sim, o jeancantu ia dar uma olhada e estou esperando retorno dele, se quizer baixar e fazer uns testes seria uma boa. Não vi que saiu a versão 1.2 mas isso podemos ver depois, precisamos definir o projeto inicial e quem faz o quê.
  16. Pessoal, estou anexando o que tenho do projeto. Estão sendo gerados os eventos iniciais e mais as duas primeiras tabelas. A situação é a seguinte: o programador que estava na empresa saiu (talvez dê continuidade como free) então não sei exatamente a situação do componente. Ele foi feito baseado no ACBRNfe, seguindo o mesmo padrão, gostaria de seguir esse caminho. Precisamos acertar as arestas, o ponto inicial para então darmos continuidade. Por favor, qualquer duvida me perguntem ou passem mensagem, inclusive se faltou alguma coisa .... AcbrEsocial.zip
  17. Sim, completamos os eventos iniciais e atualizamos o layout. Me comprometo a colocar isso aqui até amanhã. Feito isso podemos ter um ponto de partida pra melhorarmos o componente. Rodrigo.
  18. O que precisar é só ir perguntando ou me passando mensagem.
  19. Estou aos poucos implementando o componente mas seria importante se desse um feedback sobre a usabilidade do mesmo, sugestões, etc
  20. Segue mais uma atualização com novos registros, quanto as alterações que houveram em breve terá mais uma atualização.AcbrEsocial.zip
  21. Já tenho vários outros registros prontos no ACBResocial, vou ver se até amanhã posto aqui.
  22. Segue componente e exemplo de uso, lembrando que está em fase inicial Depois temos que organizar quem faz o que pra não repetir trabalho ACBr.rar
  23. Vou disponibilizar os fontes ainda hoje, na verdade aproveitei parte de sua idéia mas implementando conforme é a nota fiscal eletrônica no acbr ...
×
×
  • 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.

The popup will be closed in 10 segundos...