
Lfm_
Membros-
Total de ítens
66 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Lfm_ postou
-
A sequência, sai de sequência, se na remessa tiver boletos variados, um com multa e outro não, o certo era iniciar o ISequencia com a sequencia gerada no registro anterior. ISequencia := (ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo) * fpQtdRegsLote) + 1; //AQUI TERIA QUE INICIAR COM A SEQUENCIA ANTERIOR Terei que ver como resolver agora..
-
Eu tbm não uso santander, é um cliente que passou a usar, e não conheço a lógica ou não-lógica do banco... A forma como alimento o componente funciona bem gostoso pra todos os bancos, só pra essa coisa fofa ai que não... Já busquei uma solução pra não ter que ficar depurando e perdendo tempo buscando... como vc disse o fórum é gratuito e aberto, ou seja, esperamos que alguém que conheça o banco ou as maluquices dele responda, se não responder, ai terei que correr atrás.. que pelo visto é o que vou ter que fazer
-
Tá certo, pela educação não estão afim de resolver.
-
Então, eu vi que ele faz isso aqui embaixo, mas não entendi pq faz, qual a regra disso: ACBrBancoSantander.pas Linhas 641 à 816 fpQtdRegsLote := 1; if sCodMovimento = '01' then begin if (PercentualMulta = 0) then fpQtdRegsLote := 3 else fpQtdRegsLote := 4; if (ACBrTitulo.ACBrBoleto.Cedente.PIX.TipoChavePIX <> tchNenhuma) then fpQtdRegsLote := fpQtdRegsLote + 1; end; ISequencia := (ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo) * fpQtdRegsLote) + 1; ...
-
Opa, removi aqui e a geração dos arquivos ficou idêntica. Fiz um antes e depois, pq de fato não compreendi o que poderia mudar removendo ele, vejo apenas para o debug uma melhoria. Mas esse sequencial do arquivo, em algum lugar preciso informar?
-
Todo esse código é dividido em rotinas, juntei tudo em só pra mostrar aqui, antes dele eu faço isso: Titulo := VACBrBoleto.CriarTituloNaLista;
-
Bom dia, segue: VACBrBoleto.Banco.TipoCobranca := cobSantander; with VACBrBoleto.Cedente do begin Nome := VQueryTitulo.FieldByName('NM_CEDENTE').AsString; CodigoCedente := VQueryTitulo.FieldByName('CD_CEDENTE').AsString; CodigoTransmissao := VQueryTitulo.FieldByName('CD_TRANSMISSAO_BOLETO').AsString; Agencia := VQueryTitulo.FieldByName('NR_BANCO_AGENCIA').AsString; AgenciaDigito := Geral.Decode((VACBrBoleto.Banco.TipoCobranca = cobBancoDoBrasil) and (VQueryTitulo.FieldByName('NR_DIGITO_AGENCIA').AsString = '0'), 'X', VQueryTitulo.FieldByName('NR_DIGITO_AGENCIA').AsString); DigitoVerificadorAgenciaConta := Geral.Decode(VACBrBoleto.Banco.Numero = 756, '0', ''); Conta := VQueryTitulo.FieldByName('NR_CONTA_BANCO').AsString; ContaDigito := VQueryTitulo.FieldByName('NR_DIGITO').AsString; Modalidade := VQueryTitulo.FieldByName('TP_VARIACAO_CARTEIRA').AsString; Convenio := Geral.Decode(VACBrBoleto.Banco.Numero = 756, ' ', VQueryTitulo.FieldByName('CD_CONVENIO').AsString); TipoCarteira := tctRegistrada; TipoInscricao := pJuridica; CNPJCPF := VQueryTitulo.FieldByName('NR_CNPJ_CEDENTE').AsString; Nome := VQueryTitulo.FieldByName('NM_CEDENTE').AsString; Logradouro := VQueryTitulo.FieldByName('DS_ENDERECO_CEDENTE').AsString; NumeroRes := VQueryTitulo.FieldByName('NR_ENDERECO_CEDENTE').AsString; Bairro := VQueryTitulo.FieldByName('DS_BAIRRO_CEDENTE').AsString; UF := VQueryTitulo.FieldByName('CD_UF_CEDENTE').AsString; Cidade := VQueryTitulo.FieldByName('DS_MUNICIPIO_CEDENTE').AsString; Complemento := VQueryTitulo.FieldByName('DS_COMPLEMENTO_CEDENTE').AsString; end; with Titulo.Sacado do begin Pessoa := Geral.Decode(VQueryTitulo.FieldByName('TP_SACADO').AsString = 'F', pFisica, pJuridica); NomeSacado := VQueryTitulo.FieldByName('NM_SACADO').AsString; CNPJCPF := VQueryTitulo.FieldByName('NR_DOCUMENTO_SACADO').AsString; Logradouro := VQueryTitulo.FieldByName('DS_ENDERECO_SACADO').AsString; Numero := VQueryTitulo.FieldByName('NR_ENDERECO_SACADO').AsString; Complemento := VQueryTitulo.FieldByName('DS_COMPLEMENTO_SACADO').AsString; Bairro := VQueryTitulo.FieldByName('DS_BAIRRO_SACADO').AsString; Cidade := VQueryTitulo.FieldByName('DS_MUNICIPIO_SACADO').AsString; UF := VQueryTitulo.FieldByName('CD_UF_SACADO').AsString; CEP := VQueryTitulo.FieldByName('CD_CEP_SACADO').AsString; end; with Titulo do begin SeuNumero := VQueryTitulo.FieldByName('CD_CONTA_RECEBER').AsString; Vencimento := VQueryTitulo.FieldByName('DT_VENCIMENTO').AsDateTime; DataDocumento := VQueryTitulo.FieldByName('DT_EMISSAO').AsDateTime; NumeroDocumento := VQueryTitulo.FieldByName('NR_DOCUMENTO').AsString; EspecieDoc := VQueryTitulo.FieldByName('DS_ESPECIE').AsString; EspecieMod := VQueryTitulo.FieldByName('TP_MOEDA').AsString; Aceite := Geral.Decode(VQueryTitulo.FieldByName('TP_ACEITE').AsString = 'S', atSim, atNao); DataProcessamento := VQueryTitulo.FieldByName('DT_PROCESSAMENTO').AsDateTime; Carteira := VQueryTitulo.FieldByName('TP_CARTEIRA').AsString; CarteiraEnvio := tceCedente; CaracTitulo := ObterCaracTitulo(Titulo.Carteira); NossoNumero := VQueryTitulo.FieldByName('NR_NOSSO_NUMERO').AsString; ValorDocumento := VQueryTitulo.FieldByName('VL_DOCUMENTO').AsFloat; ValorMoraJuros := VQueryTitulo.FieldByName('VL_JUROS').AsFloat; ValorDesconto := 0; PercentualMulta := VQueryTitulo.FieldByName('VL_MULTA_ATRASO').AsFloat; OcorrenciaOriginal.Tipo := TACBrTipoOcorrencia(VQueryTitulo.FieldByName('TP_OCORRENCIA_BOLETO').AsInteger); QtdePagamentoParcial := 1; TipoPagamento := tpNao_Aceita_Valor_Divergente; PercentualMinPagamento := 0; PercentualMaxPagamento := 0; ValorMinPagamento := 0; ValorMaxPagamento := 0; Instrucao1 := VQueryTitulo.FieldByName('CD_INSTRUCAO_1').AsString; Instrucao2 := VQueryTitulo.FieldByName('CD_INSTRUCAO_2').AsString; Mensagem.Add(VQueryTitulo.FieldByName('DS_MENSAGEM').AsString); if (VQueryTitulo.FieldByName('TP_CLIENTE_GERA_PROTESTO').AsString = 'S') and (VQueryTitulo.FieldByName('QT_DIAS_PROTESTO').AsInteger > 0) then begin DataProtesto := IncDay(Vencimento, VQueryTitulo.FieldByName('QT_DIAS_PROTESTO').AsInteger); TipoDiasProtesto := diCorridos; CodigoNegativacao := cnProtestarCorrido; Mensagem.Add('PROTESTAR EM ' + VQueryTitulo.FieldByName('QT_DIAS_PROTESTO').AsString + ' DIAS CORRIDOS APOS O VENCIMENTO'); end; if (ValorMoraJuros > 0) then begin //CodigoMora := '1'; if (VQueryTitulo.FieldByName('TP_VALOR_JUROS').AsString = 'P') then CodigoMoraJuros := Geral.Decode(VQueryTitulo.FieldByName('TP_JUROS').AsString = 'D', TACBrCodigoJuros.cjTaxaDiaria, TACBrCodigoJuros.cjTaxaMensal) else CodigoMoraJuros := Geral.Decode(VQueryTitulo.FieldByName('TP_JUROS').AsString = 'D', TACBrCodigoJuros.cjValorDia, TACBrCodigoJuros.cjValorMensal); if (VQueryTitulo.FieldByName('QT_TOLERANCIA_PAGAMENTO').AsInteger > 0) then DataMoraJuros := IncDay(Vencimento, VQueryTitulo.FieldByName('QT_TOLERANCIA_PAGAMENTO').AsInteger) else DataMoraJuros := IncDay(Vencimento, 1); if (VACBrBoleto.Banco.TipoCobranca = cobCaixaEconomica) then Mensagem.Add('COBRAR JUROS DE ' + FormatCurr('#,##0.00', ValorMoraJuros) + ' POR CENTO, POR ' + Geral.Decode(VQueryTitulo.FieldByName('TP_JUROS').AsString = 'D', 'DIA', 'MES') + ' DE ATRASO PARA PAGAMENTO ' + Geral.Decode(Vencimento = DataMoraJuros, 'APOS O VENCIMENTO', 'A PARTIR DE ' + FormatDateTime('dd/mm/yyyy', DataMoraJuros))) else Mensagem.Add('COBRAR JUROS DE ' + FormatCurr('#,##0.00 %', ValorMoraJuros) + ' POR ' + Geral.Decode(VQueryTitulo.FieldByName('TP_JUROS').AsString = 'D', 'DIA', 'MES') + ' DE ATRASO PARA PAGAMENTO ' + Geral.Decode(Vencimento = DataMoraJuros, 'APOS O VENCIMENTO', 'A PARTIR DE ' + FormatDateTime('dd/mm/yyyy', DataMoraJuros))) end; if (PercentualMulta > 0) then begin CodigoMulta := cmPercentual; if (VQueryTitulo.FieldByName('QT_TOLERANCIA_PAGAMENTO').AsInteger > 0) then DataMulta := IncDay(Vencimento, VQueryTitulo.FieldByName('QT_TOLERANCIA_PAGAMENTO').AsInteger) else DataMulta := IncDay(Vencimento, 1); if (VACBrBoleto.Banco.TipoCobranca = cobCaixaEconomica) then Mensagem.Add('COBRAR MULTA DE ' + FormatCurr('#,##0.00', PercentualMulta) + ' POR CENTO,' + Geral.Decode(Vencimento = DataMoraJuros, ' APOS O VENCIMENTO', ' A PARTIR DE ' + FormatDateTime('dd/mm/yyyy', DataMoraJuros))) else Mensagem.Add('COBRAR MULTA DE ' + FormatCurr('#,##0.00 %', PercentualMulta) + Geral.Decode(Vencimento = DataMoraJuros, ' APOS O VENCIMENTO', ' A PARTIR DE ' + FormatDateTime('dd/mm/yyyy', DataMoraJuros))); end; if (VACBrBoleto.Banco.TipoCobranca = cobCaixaEconomica) then LocalPagamento := 'EM TODA A REDE BANCÁRIA E SEUS CORRESPONDENTES ATÉ O VALOR LIMITE' else LocalPagamento := VACBrBoleto.Banco.LocalPagamento; end;
-
Bom dia Pessoal, estou gerando remessa CNAB240 para o Santander e o banco me retorna o seguinte: Segue exemplo em anexo. Porém no componente eu envio Lote 01 apenas, este sequencial devo informar tbm? É o único banco que tenho problemas. Desde já agradeço a atenção, Luiz
-
Inacreditável esses provedores hein?!
-
Consegui esse link do provedor EL e ali consegui abrir um chamado de Ajuda no item Ouvidoria, agora estou aguardando resposta. https://gpi.el.com.br/ServerExec/acessoBase/?idPortal=233b25d5-f5de-43bf-a292-bc598d617cad
-
Boa tarde, estou tentando cancelar uma nota fiscal pelo provedor EL e ocorre a mensagem abaixo: EL55 Arquivo Inválido - Verifique a extrutura do arquivo se esta nos padrões solicitados!. Porém, o preenchimento do componente segue os padrões do exemplo, será que pode ser algo no próprio provedor? Segue os arquivos gerados no processo de cancelamento. 475-nfse.xml000000000000475000000000000475000001-lista-nfse-fai.xml000000000000475000000000000475000001-lista-nfse-fai-soap.xml000000000000475000000000000475000001-con-nfse-fai-soap.xml000000000000475000000000000475000001-con-nfse-fai.xml475-can.xml475-can-soap.xml475-ped-can-soap.xml475-ped-can.xml
-
Boa tarde @Italo Giurizzato Junior, pode deixar, muito obrigado Abraço, Luiz
-
Oi @Italo Giurizzato Junior, em modo debug, adiciono um breakpoint até chegar na procedure TACBrNFSeProviderABRASFv2.GerarMsgDadosCancelaNFSe, adicionei um comentário: procedure TACBrNFSeProviderABRASFv2.GerarMsgDadosCancelaNFSe( Response: TNFSeCancelaNFSeResponse; Params: TNFSeParamsResponse); var Emitente: TEmitenteConfNFSe; InfoCanc: TInfCancelamento; begin Emitente := TACBrNFSeX(FAOwner).Configuracoes.Geral.Emitente; InfoCanc := Response.InfCancelamento; with Params do begin Response.ArquivoEnvio := '<' + Prefixo + 'CancelarNfseEnvio' + NameSpace + '>' + '<' + Prefixo2 + 'Pedido>' + '<' + Prefixo2 + 'InfPedidoCancelamento' + IdAttr + NameSpace2 + '>' + '<' + Prefixo2 + 'IdentificacaoNfse>' + '<' + Prefixo2 + 'Numero>' + InfoCanc.NumeroNFSe + '</' + Prefixo2 + 'Numero>' + Serie + '<' + Prefixo2 + 'CpfCnpj>' + GetCpfCnpj(Emitente.CNPJ, Prefixo2) + '</' + Prefixo2 + 'CpfCnpj>' + GetInscMunic(Emitente.InscMun, Prefixo2) + '<' + Prefixo2 + 'CodigoMunicipio>' + IntToStr(InfoCanc.CodMunicipio) + //NESTE PONTO, EM MODO DEBUG, ALTERO A VARIÁVEL EM TEMPO DE EXECUÇÃO // IntToStr(TACBrNFSeX(FAOwner).Configuracoes.Geral.CodigoMunicipio) + '</' + Prefixo2 + 'CodigoMunicipio>' + CodigoVerificacao + '</' + Prefixo2 + 'IdentificacaoNfse>' + '<' + Prefixo2 + 'CodigoCancelamento>' + InfoCanc.CodCancelamento + '</' + Prefixo2 + 'CodigoCancelamento>' + Motivo + '</' + Prefixo2 + 'InfPedidoCancelamento>' + '</' + Prefixo2 + 'Pedido>' + '</' + Prefixo + 'CancelarNfseEnvio>'; end; end;
-
@Italo Giurizzato Junior Segue os arquivos de exemplo que encontrei no site da prefeitura de Erechim, onde consta a informação do CodigoMunicipio no xml de substituição. Exemplos_WebService.zip
-
Bom dia Italo, tudo bem? Então, até novembro isso não ocorria, porém meus clientes de lá agora começaram a relatar o erro abaixo ao tentarem substituir uma nota fiscal: L8: Município inválido: Código do município do cancelamento não é o mesmo do Município gerador. Então ao informar o município manualmente no componente, a substituição é realizada com sucesso. Att, Luiz
-
Boa tarde Pessoal, O município de Erechim\RS solicita a inclusão do código do município ao substituir uma nota fiscal. Verifiquei no código fonte da ACBrNFSeX e não consta estes dados, para incluí-lo como posso proceder? Solicito a vocês ou tenho a liberdade de fazer? No aguardo, Luiz
-
Bom dia Pessoal, agradeço a atenção e as respostas. O prestador tem os dois casos\cnpjs, simples nacional e lucro presumido. Já estou tentando entender junto com eles o processo, de fato não vi o processo de autenticação no componente da Acbr via certificado digital, mas olharei mais atentamente ao exemplo. Att, Luiz
-
Boa tarde pessoal, estou precisando emitir uma nota fiscal para uma pessoa jurídica de Porto Alegre, porém eles não tem usuário e senha de acesso, eles realizam o acesso por certificado digital, nestes casos como devo configurar o componente? Pois ao tentar emitir o retorno é este: <GerarNfseResposta xmlns="http://www.abrasf.org.br/nfse.xsd"> <ListaMensagemRetorno> <MensagemRetorno> <Codigo>E182</Codigo> <Mensagem>Erro na autenticação.</Mensagem> </MensagemRetorno> </ListaMensagemRetorno> </GerarNfseResposta> Agradeço a atenção desde já! Att, Luiz
-
Boa tarde Ítalo, desculpe pela demora e obrigado pelo retorno. Deu certo!!! Abraço, Luiz
-
Bom Dia, não sei se algo mudou na nota carioca, porém neste mês o componente ACBrNFSeX não consegue mais fazer a leitura do retorno da emissão de nota fiscal única (modoEnvio = meUnitario). Segue em anexo o XML de retorno gerado pelo componente. Abaixo segue linhas do código da unit ISSRio.Provider, método TACBrNFSeProviderISSRio.TratarRetornoEmitir, percebam que o componente busca a tag ListaNfse, porém no XML de retorno ela não existe quando é nota única: if Response.ModoEnvio <> meUnitario then begin inherited TratarRetornoEmitir(Response); Exit; end; Document := TACBrXmlDocument.Create; try try Document.LoadFromXml(Response.ArquivoRetorno); ProcessarMensagemErros(Document.Root, Response); ProcessarMensagemErros(Document.Root, Response, 'ListaMensagemRetornoLote'); ANode := Document.Root; Response.Data := ObterConteudoTag(ANode.Childrens.FindAnyNs('DataRecebimento'), tcDatHor); Response.Protocolo := ObterConteudoTag(ANode.Childrens.FindAnyNs('Protocolo'), tcStr); ANode := Document.Root.Childrens.FindAnyNs('ListaNfse'); if not Assigned(ANode) then begin AErro := Response.Erros.New; AErro.Codigo := Cod202; AErro.Descricao := ACBrStr(Desc202); Exit; end; Estou configurando algo errado ou de fato mudou algo no provedor ISSRio? Fico no aguardo e agradeço a atenção. Luiz 0-ger-nfse.xml 0-lista-nfse-ger.xml
-
Boa noite Pessoal, estou tentando emitir uma nota fiscal para o provedor SigISS para a cidade de Londrina-PR. A nota não possuí retenção de ISS e a prestação do serviço é realizada dentro do município. Como não há retenção, não informo a alíquota do ISS, porém o componente gera a tag com o valor zerado. Ocorre o seguinte erro: E0013 - Início do processoNFSe_1.xml Correção: Valor da alíquota do simples nacional inválida. Segue o xml gerado pelo componente. Alguém pode dar uma ajuda?
-
Boa Tarde Ítalo, Sim, com certeza, é bem recorrente essa situação. Att, Luiz
-
Verificando o código da unit Bauhaus.GravarJson, na rotina GerarDadosNota: .AddPair('MunicipioPrestacao', StrToIntDef(NFSe.Prestador.Endereco.CodigoMunicipio, 0)) Neste caso, não deveria obter o município do Tomador? Que seria o local onde o serviço está sendo prestado? No aguardo, Luiz
-
Bom Dia Renato, muito obrigado pelo retorno. Essa chave de autorização seria o que? Devo solicitar ao provedor? Obrigado, Luiz
-
Boa Tarde Pessoal, estou tentando implementar no meu sistema o provedor Bauhaus para a cidade de Itapema. O retorno do componente é este: <?xml version="1.0" encoding="UTF-8"?> {"Message":{"Kind":"Error","Code":"PAD-E001","Message":"Token Inv\u00E1lido.","Detail":""}}{"Message":{"Kind":"Error","Code":"PAD-E001","Message":"Token Inv\u00E1lido.","Detail":""}} Alguém poderia me ajudar?