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. Estava observando em uma leitura de RPS que alguns dados não vinham corretos. Pesquisando descobri que o provedor era identificado como sendo o local onde o serviço foi prestado e não onde foi gerado o lote RPS (Curitiba no caso). Pois bem, no código abaixo dá pra ver que realmente isso acontece. Primeiro tenta o orgão gerador, depois a tag SERVICO e por último a tag PRESTADOR DE SERVICO. No meu XML ocorre primeiro a tag servico e depois prestador de servico, isso gera um erro pois identifica o municipio do cliente como "emissor" da nota no que se refere ao provedor function TNFSeR.LerNFSe: Boolean; var ok: Boolean; CM: String; DataHorBR: String; begin if FProvedor = proNenhum then begin if (Leitor.rExtrai(1, 'OrgaoGerador') <> '') then begin CM := Leitor.rCampo(tcStr, 'CodigoMunicipio'); FProvedor := CodCidadeToProvedor(CM); end; if FProvedor = proNenhum then begin if (Leitor.rExtrai(1, 'Servico') <> '') then begin CM := Leitor.rCampo(tcStr, 'CodigoMunicipio'); FProvedor := CodCidadeToProvedor(CM); end; end; if FProvedor = proNenhum then begin if (Leitor.rExtrai(1, 'PrestadorServico') <> '') then begin CM := OnlyNumber(Leitor.rCampo(tcStr, 'CodigoMunicipio')); if CM = '' then CM := Leitor.rCampo(tcStr, 'Cidade'); FProvedor := CodCidadeToProvedor(CM); end end; if FProvedor = proNenhum then FProvedor := FProvedorConf; end;
  2. Bom dia, por conter dados de terceiros enviei o RPS em seu email
  3. Estive pesquisando o porque de importar somente a primeira nota do rps, comparando os fontes do acbr. Na unit pnfsConversao, na função Comentando o " if AProvedor = proGoverna then " para ficar igual as versões anteriores a importação do RPS volta a funcionar. Não entrei nos detalhes para saber exatamente o motivo mas creio que pra quem conheçe bem o acbr fique fácil Abaixo parte de um arquivo rps, note que tem uma tag contendo "tc" <?xml version="1.0" encoding="utf-8"?> <ConsultarLoteRpsResponse xmlns="http://www.e-governeapps2.com.br/"> <ConsultarLoteRpsResult> <ListaNfse> <CompNfse> <tcCompNfse> <Nfse> <InfNfse> <Numero>4765</Numero> <CodigoVerificacao>1EJJW10F</CodigoVerificacao> <DataEmissao>2016-10-03T00:00:00</DataEmissao> <IdentificacaoRps> <Numero>5898</Numero> <Serie>F</Serie> <Tipo>1</Tipo> </IdentificacaoRps> <DataEmissaoRps>2016-10-03T00:00:00</DataEmissaoRps> <NaturezaOperacao>1</NaturezaOperacao> <RegimeEspecialTributacao>0</RegimeEspecialTributacao> <OptanteSimplesNacional>1</OptanteSimplesNacional> <IncentivadorCultural>2</IncentivadorCultural> <Competencia>0001-01-01T00:00:00</Competencia> <NfseSubstituida>0</NfseSubstituida> <Servico> <Valores>
  4. Então porque será não está mais lendo após a atualização? Vou pesquisar nos fontes pra ver se acho algo ...
  5. Boa tarde, atualizei hoje os fontes acbr e começou a não importar todas as notas do arquivo de lote, somente a primeira. Sei que existia alguma rotina onde era feito um reconheçimento se o arquivo era de lote ou não mas como alterou os fontes não achei mais. O código abaixo achei estranho pois nem sempre um arquivo rps terá em seu nome "-rps.xml", estaria ali o erro? function TNotasFiscais.LoadFromFile(CaminhoArquivo: String; AGerarNFSe: Boolean = True): Boolean; var XMLStr: String; XMLUTF8: AnsiString; i, l: integer; MS: TMemoryStream; begin MS := TMemoryStream.Create; try MS.LoadFromFile(CaminhoArquivo); XMLUTF8 := ReadStrFromStream(MS, MS.Size); finally MS.Free; end; l := Self.Count; // Indice da última nota já existente // Converte de UTF8 para a String nativa da IDE // XMLStr := DecodeToString(XMLUTF8, True); Result := LoadFromString(XMLStr, AGerarNFSe); if Result then begin // Atribui Nome do arquivo a novas notas inseridas // for i := l to Self.Count - 1 do begin if Pos('-rps.xml', CaminhoArquivo) > 0 then Self.Items.NomeArqRps := CaminhoArquivo else Self.Items.NomeArq := CaminhoArquivo; end; end; end;
  6. Liguei na empresa que presta serviço para piraquara - http://www.elotech.com.br/suporte.php . Acho que é um provedor novo. Procurei no cidades.ini por algumas cidades que eles me informaram que atendem e, por exemplo Ponta Grossa/PR, tem um provedor cadastrado mas segundo eles já não seria mais esse (Provedor=fintelISS) O que fazer ?
  7. Estou tentando importar um xml/nfse do município de Piraquara/PR e notei que o mesmo não existe na lista de cidades. Ao ler a data de emissão ocorre um erro pois como o provedor é "proNenhum" é feita a tentativa de ler data e hora (código abaixo) porém no arquivo a informação é somente data. if FProvedor in [proFreire, proSpeedGov, proVitoria, proDBSeller] then NFSe.DataEmissao := Leitor.rCampo(tcDat, 'DataEmissao') else NFSe.DataEmissao := Leitor.rCampo(tcDatHor, 'DataEmissao'); Abaixo copiei o link da definição do xml da nfse. Com essas informações é possível inserir Piraquara na lista de cidades e atualizar o ACBR? http://shad.elotech.com.br/schemas/iss/nfse_v1_2.xsd
  8. Bom dia, estou tento problema em algumas importações do XML. Tomando por base uma alíquota de 5% algumas prefeituras me perece que representam com 0.05 outras com 5.00. O Acbr tem alguma tratamento, já passaram por algo assim ?
  9. O componente já existe, é justamente isso que está no título do tópico, basta instalar pelo trunk2o o instalador acbr). Quanto ao exemplo provavelmente por enquanto não vai ter mas segue o padrão dos outros componente e em uma das páginas iniciais do tópico tem um exemplo de código em Delphi que coloquei.
  10. Se está certo porque minhas units estão erradas ?
  11. Acabei de atualizar os fontes (meu AcbrSped.pas está atualizado) e os memory leaks voltaram. A primeira imagem são com as minhas alterações a segunda com o que está no trunk2. Repetindo, segui exatamente o que estava numa unit do SpedPisCofins (não tem os overloads) e você disse que não é assim. Ela está errada? Realmente não sei o que estou fazendo de errado. Se puder realmente verificar e explicar como deve ser ajudaria porque pelas imagens dá pra ver que não está ok. Do que conheço de OO na classe pai está declarado como virtual para ser implementada na filha. Essa implementação seria feita utilizando a diretiva Override e não Overload (que serve para criar métodos com o mesmo nome na mesma classe). Se a lógica é outra aguardo explicação ...
  12. Estou fazendo com base no que tem no SpedPisCofins que creio tem as modificações corretas para estarem no Trunk2. Esse por exemplo é o que está no ACBrEPCBloco_M_Class. " procedure CriaRegistros; procedure LiberaRegistros; public constructor Create ; /// Create destructor Destroy; override; /// Destroy procedure LimpaRegistros;" Quanto a atualização fiz antes de começar as alterações .... Talvez fosse o caso de criar uma unit template para que pudéssemos ter como referência. De qualquer forma antes, com o overload, estava dando memory leak e agora não. Como fazer então ?
  13. Os blocos X e Y estavam com implementação erradas dos create / destroy e a memória não era devidamente liberada --> memory leak. Foi efetuada a correção, vou dar uma olhada nos outros blocos, tem alguns com problema também. ACBrECFBloco_X.pas ACBrECFBloco_X_Class.pas ACBrECFBloco_Y.pas ACBrECFBloco_Y_Class.pas
  14. Uma pergunta, os blocos que não são informados não deveria gerar nada certo? Nem o registro de abertura nem o de fechamento certo?
  15. Justamente o problema é no registro 0020, um monte de Sim/Não que a princípio não existe em um sistema fiscal (ou até mesmo ERP). Vou ter que criar uma tela só pro cliente poder informar porque depois de importar não tem como alterar.
  16. Eu imaginei gerar algumas informações "default" (por não ter no sistema), dando a possibilidade do usuário alterar dentro do Sped ECF. Verifiquei porém que o validador não permite alterar a maior parte dos dados importados, alguém mais viu isso também? Mais um problema pra resolver.
  17. Então falta os arquivos :( agora com arquivos ... ACBrECFBloco_P.pas ACBrECFBloco_P_Class.pas
  18. Segue Bloco P. 1) Criados métodos "RegistroxxxNEW" 2) Os registros P300, P400, P500 estavam como listas mas pelo manual a ocorrência é única, dessa forma, observando os outros Sped, alterei os mesmos 3) Testei e está compilando, agora creio que a classe já pode ser alimentada com dados para gerar o registro, isso ainda não testei mas irei fazer hoje
  19. Se é pra mim, como pareçe, realmente não entendi essa observação
  20. Pessoal estou criando o métodos RegistroXXXXNEW para o Bloco P que está sem
  21. Procure nas mensagens deste tópico, tem uma unit em delphi que postei e pode servir como inspiração
  22. No LimpaRegistros do bloco Y tinha duas vezes o FRegistroY990.Free, gerando erro. ACBrECFBloco_Y_Class.pas
  23. Pessoal, o ecf está sendo feito com base no trunk2 ou trunk? Pergunto porque os fontes do ecf estavam no trunk2 mas por necessidade (pois o trunk 2 está com alguns problemas) estavam fazendo o desenvolvimento com base no trunk e que eu saiba houveram alterações nas units e não é compatível... ou é ? Quero ver como faço pra ajudar a dar continuidade
  24. Segue bloco P, não está pronto, falta implementar a propriedades mas o grosso da classe está feito. Não vou poder mexer no projeto por uns 10 dias então se os interessados puderem contribuir seria uma boa pra todos ! ACBrECFBloco_P.pas ACBrECFBloco_P_Class.pas
  25. Seguem units alteradas: Está gerando o bloco 0, já testei importação pelo ecf e deu tudo certo Alterei alguns parâmetros de inteiro para string, seguindo o padrão do sped contribuições (cep por exemplo) Implementei várias partes de código faltando ou incorretas O que vi que está faltando: limpar memória após gerar o arquivo (TStringList's) Acho que agora está mais fácil para todos que puderem contribuir pois temos um início. ACBrECFBloco_0_Class.pas ACBrECFBloco_0.pas ACBrSpedEcf.pas Vou anexar a unit do delphi que tenho e que gerou e validou o arquivo. Quem quiser usar como referência é só baixar e pegar a parte do código que gera o sped, é bem simples, tem alguns lugares que pego informações do banco de dados mas é só tirar e inserir os dados diretamente para testar. UFrmSpedEcf.pas
×
×
  • 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...