Ir para conteúdo
  • Cadastre-se

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

Enthusiast

Enthusiast (6/14)

  • Dedicated Rare
  • First Post
  • Collaborator Rare
  • Conversation Starter
  • Week One Done

Recent Badges

3

Reputação

1

Community Answers

  1. 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..
  2. 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
  3. Tá certo, pela educação não estão afim de resolver.
  4. 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; ...
  5. 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?
  6. Todo esse código é dividido em rotinas, juntei tudo em só pra mostrar aqui, antes dele eu faço isso: Titulo := VACBrBoleto.CriarTituloNaLista;
  7. 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;
  8. Lfm_

    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
  9. Inacreditável esses provedores hein?!
  10. 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
  11. Lfm_

    Cancelamento provedor EL

    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
  12. Boa tarde @Italo Giurizzato Junior, pode deixar, muito obrigado Abraço, Luiz
  13. 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;
  14. @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
  15. 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
×
×
  • 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.