
Lfm_
Membros-
Total de ítens
66 -
Registro em
-
Última visita
Últimos Visitantes
O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.
Lfm_'s Achievements
-
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;
-
Lfm_ started following Cancelamento provedor EL e Sequência lote Santander
-
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