Ir para conteúdo
  • Cadastre-se

Lucas Peres

Membros
  • Total de ítens

    33
  • Registro em

  • Última visita

Tudo que Lucas Peres postou

  1. Italo, Entendi. Seguem os dois arquivos com uma pequena refatoração. Att Lucas ACBrNFSeWebServices.pas ACBrNFSeNotasFiscais.pas
  2. Italo, A linha 2848 não foi alterada conforme o diff abaixo. A modificação foi no else nas linhas 2853 e 2854. --- C:/Users/Lucas/AppData/Local/Temp/ACBrNFSeWebServices.pas-rev7359.svn000.tmp.pas qui ago 28 17:51:07 2014 +++ C:/work/libs/acbr/Fontes/ACBrNFSe/ACBrNFSeWebServices.pas ter set 2 08:44:18 2014 @@ -2850,8 +2850,8 @@ Self.ConsNfseRps.RazaoSocial := ''; end else begin - Self.ConsNfseRps.Cnpj := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj; - Self.ConsNfseRps.InscricaoMunicipal := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.PrestadorServico.IdentificacaoPrestador.InscricaoMunicipal; + Self.ConsNfseRps.Cnpj := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.Prestador.Cnpj; + Self.ConsNfseRps.InscricaoMunicipal := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.Prestador.InscricaoMunicipal; Self.ConsNfseRps.RazaoSocial := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.PrestadorServico.RazaoSocial; end; Fiz a alteração, pois qdo faço: ACBrNFse1.NotasFiscais.LoadFromFile a function TNFSeR.LerRPS_ABRASF_V1 da unit pnfsNFSeR: if (Leitor.rExtrai(3, 'Prestador') <> '') or (Leitor.rExtrai(2, 'Prestador') <> '') then begin NFSe.Prestador.Cnpj := Leitor.rCampo(tcStr, 'Cnpj'); NFSe.Prestador.InscricaoMunicipal := Leitor.rCampo(tcStr, 'InscricaoMunicipal'); end; // fim Prestador O Cnpj e a inscrição é atribuída em NFSe.Prestador.CNPJ, não em NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj. Aí a consulta após o concelamento estava sendo feita com o parametro CNPJ em branco. Já na function TNFSeR.LerRPS_ABRASF_V2, o CNPJ é atribúido tanto em NFSe.Prestador.CNPJ quanto em NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj. Conforme: if (Leitor.rExtrai(3, 'Prestador') <> '') or (Leitor.rExtrai(2, 'Prestador') <> '') then begin NFSe.PrestadorServico.IdentificacaoPrestador.InscricaoMunicipal := Leitor.rCampo(tcStr, 'InscricaoMunicipal'); NFSe.Prestador.InscricaoMunicipal := NFSe.PrestadorServico.IdentificacaoPrestador.InscricaoMunicipal; if (VersaoXML = '1') or (FProvedor = proDigifred) then begin if (Leitor.rExtrai(4, 'CpfCnpj') <> '') or (Leitor.rExtrai(3, 'CpfCnpj') <> '') then begin NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj := Leitor.rCampo(tcStr, 'Cpf'); if NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj = '' then NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj := Leitor.rCampo(tcStr, 'Cnpj'); end; end else begin NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj := Leitor.rCampo(tcStr, 'Cnpj'); end; NFSe.Prestador.Cnpj := NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj; end; // fim Prestador Por isso a alteração não irá conflitar com outros provedores, pois a variável, NFSe.Prestador.Cnpj será atribuída tanto para TNFSeR.LerRPS_ABRASF_V1, quanto para TNFSeR.LerRPS_ABRASF_V2. Procede ? De qq forma fiquei na dúvida pois na class TNFSe tem uma redundância ??: property Prestador: TIdentificacaoPrestador read FPrestador write FPrestador; property PrestadorServico: TDadosPrestador read FPrestadorServico write FPrestadorServico; e a TDadoPrestador também tem uma propriedade TIdentificaoPrestador: property IdentificacaoPrestador: TIdentificacaoPrestador read FIdentificacaoPrestador write FIdentificacaoPrestador; Lucas
  3. Favor considerar está última versão, pois tive q fazer um outra alteração para a consulta após o cancelamento retornar corretamente. Att ACBrNFSeWebServices.pas
  4. Segue o arquivo em anexo. ACBrNFSeNotasFiscais.pas
  5. Tive que fazer a seguinte alteração para a consulta do protocolo após o cancelamento. --- C:/Users/Lucas/AppData/Local/Temp/ACBrNFSeNotasFiscais.pas-rev7213.svn000.tmp.pas qua jul 16 16:29:43 2014 +++ C:/work/libs/acbr/Fontes/ACBrNFSe/ACBrNFSeNotasFiscais.pas seg set 1 17:23:10 2014 @@ -899,17 +899,17 @@ Pos('<Prestador><CpfCnpj><Cnpj>', ArquivoXML.Text) + 26, Pos('</Cnpj></CpfCnpj>',ArquivoXML.Text) - (Pos('<Prestador><CpfCnpj><Cnpj>', ArquivoXML.Text) + 26)); - if Trim(CNPJ) = '' then + if ((Length(CNPJ) <> 11) and (Length(CNPJ) <> 14)) or (Trim(CNPJ) = '') then CNPJ:= Copy(ArquivoXML.Text, Pos('<Prestador><CpfCnpj><Cpf>', ArquivoXML.Text) + 25, Pos('</Cpf></CpfCnpj>',ArquivoXML.Text) - (Pos('<Prestador><CpfCnpj><Cpf>', ArquivoXML.Text) + 25)); - if Trim(CNPJ) = '' then + if ((Length(CNPJ) <> 11) and (Length(CNPJ) <> 14)) or (Trim(CNPJ) = '') then CNPJ := Copy(ArquivoXML.Text, Pos('<Prestador><Cnpj>', ArquivoXML.Text) + 17, Pos('</Cnpj>',ArquivoXML.Text) - (Pos('<Prestador><Cnpj>', ArquivoXML.Text) + 17)); - if Trim(CNPJ) = '' then + if ((Length(CNPJ) <> 11) and (Length(CNPJ) <> 14)) or (Trim(CNPJ) = '') then CNPJ:= Copy(ArquivoXML.Text, Pos('<Prestador><Cpf>', ArquivoXML.Text) + 16, Pos('</Cpf>',ArquivoXML.Text) - (Pos('<Prestador><Cpf>', ArquivoXML.Text) + 16)); Segue um pedaço do XML. <Prestador><Cnpj>07901904000137</Cnpj><InscricaoMunicipal>8665</InscricaoMunicipal></Prestador><Tomador><IdentificacaoTomador><CpfCnpj><Cnpj>08753889000190</Cnpj></CpfCnpj><InscricaoEstadual>9040116220</InscricaoMunicipal> </Prestador><Tomador> <IdentificacaoTomador><CpfCnpj><Cnpj>08753889000190</Cnpj></CpfCnpj> Qual o procedimento para submeter a alteração ?
  6. Ok. Mas os S10xx(00-70), todos são todos chamados "eventos iniciais" pelo manual, independente de ser inc/alt/exc. Sera sempre enviado antes dos outros registros.
  7. Olá Painna, oque exatamente vc não entendeu ? Resumindo isso é a implementação do layout 1.0. E so preencher os campos e chamar o método AsXML nas classes (S1000, S1010....) para gerar o XML, conforme o demo anexado.
  8. Régys, por favor poderia me dizer onde esta especificado esta regra. Estou no meio da homolgação em SP com a sotware express e fiquei pendente uma sequencia que de acordo com o homologador: deve imprimir dinheiro POR ULTIMO. A sequencia é TEF + Dinheiro + TEF. A automação esta fechando, DINHEIRO + CARTÃO (SOMA), nessa ordem, porém o homologador diz para CIELO PREMIA, dinheiro deve ser a última: CARTÃO (SOMA) + DINHEIRO. Obrigado, no aguardo.
×
×
  • 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...