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...
The popup will be closed in 10 segundos...