washington
Membros-
Total de ítens
51 -
Registro em
-
Última visita
Últimos Visitantes
O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.
washington's Achievements
-
DistribuicaoDFePorChaveNFe - Rejeição: Falha no schema XML
washington replied to mathlopes's tópico in ACBrNFe
Boa Tarde, Consegue fazer e tudo certo comigo. Tem como retornar a lista de NFe ou suas chaves de acesso no seu retorno?- 15 replies
-
- nfe
- distribuicaodfe
- (e 5 mais)
-
Boa noite. Obrigado e aguardo retorno.
-
Boa tarde. Conforme algumas alterações acima caso alguém tenha alguma dificuldade ao preencher os dados no componente, segue como estou fazendo aqui. Preenchimento do Cedente/Beneficiário. //CEDENTE - EMPRESA cBoleto.Banco.TipoCobranca := TACBrTipoCobranca(DM_Dados.qFiltro1.FieldByName('TIPO_COBRANCA').AsInteger); cBoleto.Cedente.CaracTitulo := TACBrCaracTitulo(DM_Dados.qFiltro1.FieldByName('CARACTER_TITULO').AsInteger); cBoleto.Cedente.TipoCarteira := TACBrTipoCarteira(DM_Dados.qFiltro1.FieldByName('TIPO_CARTEIRA').AsInteger); //LAYOUT REMESSA cBoleto.LayoutRemessa := TACBrLayoutRemessa(DM_Dados.qFiltro1.FieldByName('LAYOUT_REMESSA').AsInteger); cBoleto.LeCedenteRetorno := verificaAcao(DM_Dados.qFiltro1.FieldByName('LER_CEDENTE_RETORNO').AsString); //LAYOUT cBoleto.ACBrBoletoFC.LayOut := TACBrBolLayOut(DM_Dados.qFiltro1.FieldByName('LAYOUT').AsInteger); cBoleto.ACBrBoletoFC.SoftwareHouse := sSoftHouse; cBoleto.ACBrBoletoFC.DirLogo := sCaminhoDir(getField(DM_Dados.sConfigBoleto,'CONFIG_BOLETO','BOLETO_REPORT_DIR_LOGO','VARCHAR(255)','\Boleto\Logos\Colorido',bDebug),'\Boleto\Logos\Colorido'); if (cBoleto.ACBrBoletoFC is TACBrBoletoFCFR) then TACBrBoletoFCFR(cBoleto.ACBrBoletoFC).FastReportFile := sCaminhoDir(getField(DM_Dados.sConfigBoleto,'CONFIG_BOLETO','BOLETO_REPORT_FAST','VARCHAR(255)','\Boleto\Report\Boleto.fr3',bDebug),'\Boleto\Report\Boleto.fr3'); //TACBrTipoDocumento = (Tradicional=1, Escritural=2); cBoleto.Cedente.TipoDocumento := Tradicional; //VERIFICACAO cBoleto.Cedente.Modalidade := AllTrim(DM_Dados.qFiltro1.FieldByName('MODALIDADE').AsString); cBoleto.Cedente.Convenio := AllTrim(DM_Dados.qFiltro1.FieldByName('CONVENIO').AsString); cBoleto.Cedente.TipoInscricao := TACBrPessoaCedente(DM_Dados.qFiltro1.FieldByName('TIPO_INSCRICAO').AsInteger); //AGENCIA if contemCaracter(DM_Dados.qFiltro1.FieldByName('AGENCIA').AsString,'-') then begin posConta := pos('-',DM_Dados.qFiltro1.FieldByName('AGENCIA').AsString); cBoleto.Cedente.Agencia := Copy(DM_Dados.qFiltro1.FieldByName('AGENCIA').AsString,1,(posConta-1)); cBoleto.Cedente.AgenciaDigito := Copy(DM_Dados.qFiltro1.FieldByName('AGENCIA').AsString,posConta+1,(Length(DM_Dados.qFiltro1.FieldByName('AGENCIA').AsString))); end else begin cBoleto.Cedente.Agencia := Copy(DM_Dados.qFiltro1.FieldByName('AGENCIA').AsString,1,4); cBoleto.Cedente.AgenciaDigito := '0'; end; //CONTA if contemCaracter(DM_Dados.qFiltro1.FieldByName('CONTA').AsString,'-') then begin posConta := pos('-',DM_Dados.qFiltro1.FieldByName('CONTA').AsString); cBoleto.Cedente.Conta := Copy(DM_Dados.qFiltro1.FieldByName('CONTA').AsString,1,(posConta-1)); cBoleto.Cedente.ContaDigito := Copy(DM_Dados.qFiltro1.FieldByName('CONTA').AsString,posConta+1,(Length(DM_Dados.qFiltro1.FieldByName('CONTA').AsString))); end else begin cBoleto.Cedente.Conta := Copy(DM_Dados.qFiltro1.FieldByName('CONTA').AsString,1,(length(DM_Dados.qFiltro1.FieldByName('CONTA').AsString)-1)); cBoleto.Cedente.ContaDigito := Copy(DM_Dados.qFiltro1.FieldByName('CONTA').AsString,(length(DM_Dados.qFiltro1.FieldByName('CONTA').AsString)),1); end; if Length(AllTrim(SomenteNumero(cBoleto.Cedente.AgenciaDigito))) = 0 then cBoleto.Cedente.AgenciaDigito := '0'; if ( (UpperCase(cBoleto.Cedente.ContaDigito) = 'X') and (cBoleto.Banco.Numero = 1) ) then else if Length(AllTrim(SomenteNumero(cBoleto.Cedente.ContaDigito))) = 0 then cBoleto.Cedente.ContaDigito := '0'; cBoleto.Cedente.CodigoCedente := DM_Dados.qFiltro1.FieldByName('CEDENTE').AsString; cBoleto.Cedente.CodigoTransmissao := DM_Dados.qFiltro1.FieldByName('CODIGO_TRANSMISSAO').AsString; cBoleto.Cedente.Nome := DM_Dados.sConfig.FieldByName('NOME').AsString; cBoleto.Cedente.CNPJCPF := SomenteNumero(DM_Dados.sConfig.FieldByName('CGC_CNPJ').AsString); cBoleto.Cedente.NumeroRes := DM_Dados.qFiltro1.FieldByName('NUMERO_RESP').AsString; cBoleto.Cedente.ResponEmissao := TACBrResponEmissao(DM_Dados.qFiltro1.FieldByName('RESP_EMISSAO').AsInteger); //ENDERECO - CEDENTE - EMPRESA cBoleto.Cedente.Logradouro := DM_Dados.sConfig.FieldByName('LOGADOURO').AsString+', '+DM_Dados.sConfig.FieldByName('NUMERO').AsString; cBoleto.Cedente.Complemento := DM_Dados.sConfig.FieldByName('COMPLEMENTO').AsString; cBoleto.Cedente.Bairro := DM_Dados.sConfig.FieldByName('BAIRRO').AsString; cBoleto.Cedente.CEP := SomenteNumero(DM_Dados.sConfig.FieldByName('CEP').AsString); cBoleto.Cedente.Cidade := DM_Dados.sConfig.FieldByName('NOME CIDADE').AsString; cBoleto.Cedente.Telefone := DM_Dados.sConfig.FieldByName('FONE').AsString; cBoleto.Cedente.UF := DM_Dados.sConfig.FieldByName('UF').AsString; //CEDENTE - EMPRESA - FIM Preenchimento do Titulo //DADOS BOLETOS Titulo := cBoleto.CriarTituloNaLista; Titulo.Carteira := AllTrim(DM_Dados.qFiltro1.FieldByName('CARTEIRA').AsString); Titulo.EspecieDoc := 'DM'; Titulo.EspecieMod := 'R$'; //IMPRESSAO Titulo.TipoImpressao := TACBrTipoImpressao(DM_Dados.qFiltro1.FieldByName('TIPO_IMPRESSAO').AsInteger); //CARTEIRA DE ENVIO Titulo.CarteiraEnvio := TACBrCarteiraEnvio(DM_Dados.qFiltro1.FieldByName('TIPO_CARTEIRA_ENVIO').AsInteger); Titulo.Aceite := atNao; if verificaAcao(DM_Dados.qFiltro1.FieldByName('ACEITE').AsString) then Titulo.Aceite := atSim else Titulo.Aceite := atNao; Titulo.LocalPagamento := 'Pagável em qualquer banco até o vencimento.'; Titulo.Vencimento := CdsConta.FieldByName('VENCIMENTO').AsDateTime; Titulo.DataDocumento := Now;{CdsConta.FieldByName('EMISSAO').AsDateTime;} Titulo.DataProcessamento := Now; Titulo.NumeroDocumento := Copy(CdsConta.FieldByName('NUMERO').AsString,1,9)+'/'+GeraOrdemBoletoBancario(CdsConta.FieldByName('ORDEM').AsString); Titulo.NossoNumero := CdsConta.FieldByName('CODIGO').AsString; Titulo.SeuNumero := CdsConta.FieldByName('CODIGO').AsString; Titulo.ValorDocumento := CdsConta.FieldByName('VALOR').AsFloat; //DESCONTO PRA PAGAMENTO ATE O VENCIMENTO DE %(Percentual) Titulo.ValorDesconto := 0.00; Titulo.DataDesconto := 0.00; //TACBrTipoDesconto = (tdNaoConcederDesconto, tdValorFixoAteDataInformada, tdPercentualAteDataInformada, tdValorAntecipacaoDiaCorrido, tdValorAntecipacaoDiaUtil, tdPercentualSobreValorNominalDiaCorrido, tdPercentualSobreValorNominalDiaUtil, tdCancelamentoDesconto); //Titulo.TipoDesconto := TACBrTipoDesconto(DM_Dados.qFiltro1.FieldByName('TIPO_DESCONTO').AsInteger); //Titulo.TipoDesconto2 - falta implementar - não vi necessidade nos boletos homologados //TACBrCodigoDesconto = (cdSemDesconto, cdValorFixo); Titulo.CodigoDesconto := TACBrCodigoDesconto(DM_Dados.qFiltro1.FieldByName('TIPO_DESCONTO').AsInteger); Titulo.ValorDesconto := 0; if ( (getField(DM_Dados.qFiltro1,'CONTA_BANCO','DESCONTO_PERC','DOUBLE PRECISION',0.00) > 0) and (Titulo.CodigoDesconto <> cdSemDesconto) ) then begin rDescVencimento := ((CdsConta.FieldByName('VALOR').AsFloat * DM_Dados.qFiltro1.FieldByName('DESCONTO_PERC').AsFloat)/100); Titulo.ValorDesconto := RoundABNT(rDescVencimento,2); Titulo.DataDesconto := (CdsConta.FieldByName('EMISSAO').AsDateTime + VarToIntDef(getField(DM_Dados.qFiltro1,'CONTA_BANCO','DIAS_DESCONTO','INT',0),0)); end; //FIM DESCONTO //ABATIMENTO PRA PAGAMENTO ATE A DATA DE ABATIMENTO DE %(Percentual) Titulo.ValorAbatimento := 0.00; if (getField(DM_Dados.qFiltro1,'CONTA_BANCO','ABATIMENTO_PERC','DOUBLE PRECISION',0.00) > 0) then begin rDescVencimento := ((CdsConta.FieldByName('VALOR').AsFloat * DM_Dados.qFiltro1.FieldByName('DESCONTO_PERC').AsFloat)/100); Titulo.ValorAbatimento := RoundABNT(rDescVencimento,2); Titulo.DataAbatimento := CdsConta.FieldByName('VENCIMENTO').AsDateTime; end; //TACBrCodigoNegativacao = (cnNenhum, cnProtestarCorrido, cnProtestarUteis, cnNaoProtestar, cnNegativar, cnNaoNegativar); Titulo.CodigoNegativacao := TACBrCodigoNegativacao(DM_Dados.qFiltro1.FieldByName('CODIGO_NEGATIVACAO').AsInteger); //TACBrTipoDiasIntrucao = (diCorridos, diUteis); Titulo.TipoDiasProtesto := TACBrTipoDiasIntrucao(DM_Dados.qFiltro1.FieldByName('TIPO_DIAS_INSTRUCAO').AsInteger); if (VarToIntDef(getField(DM_Dados.qFiltro1,'CONTA_BANCO','DIAS_PROTESTO','INT',0),0) > 0) then begin //Titulo.DiasDeProtesto := DM_Dados.qFiltro1.FieldByName('DIAS_PROTESTO').AsInteger; //DataProtesto := StrToDateDef(edtDataProtesto.Text, 0); end; //JUROS MORA %(Percentual) //TACBrCodigoJuros = (cjValorDia, cjTaxaMensal, cjIsento); Titulo.CodigoMoraJuros := TACBrCodigoJuros(DM_Dados.qFiltro1.FieldByName('TIPO_JUROS').AsInteger); Titulo.ValorMoraJuros := 0.00; if ( (getField(DM_Dados.qFiltro1,'CONTA_BANCO','JUROS_PERC','DOUBLE PRECISION',0.00) > 0) and (Titulo.CodigoMoraJuros <> cjIsento) ) then begin Case Titulo.CodigoMoraJuros Of cjValorDia :begin end; cjTaxaMensal :begin end; End; rDescVencimento := ((CdsConta.FieldByName('VALOR').AsFloat * DM_Dados.qFiltro1.FieldByName('JUROS_PERC').AsFloat)/100); Titulo.ValorMoraJuros := RoundABNT(rDescVencimento,2); Titulo.DataMoraJuros := CdsConta.FieldByName('VENCIMENTO').AsDateTime + 1; end; //MULTA %(Percentual) Titulo.MultaValorFixo := False; //TACBrCodigoMulta = (cmValorFixo, cmPercentual); Titulo.CodigoMulta := TACBrCodigoMulta(DM_Dados.qFiltro1.FieldByName('TIPO_MULTA').AsInteger); Titulo.PercentualMulta := 0.00; if (getField(DM_Dados.qFiltro1,'CONTA_BANCO','MULTA_PERC','DOUBLE PRECISION',0.00) > 0) then begin Case Titulo.CodigoMulta Of cmValorFixo :begin end; cmPercentual :begin end; End; rDescVencimento := ((CdsConta.FieldByName('VALOR').AsFloat * DM_Dados.qFiltro1.FieldByName('MULTA_PERC').AsFloat)/100); Titulo.PercentualMulta := RoundABNT(rDescVencimento,2); end; Titulo.Mensagem.Clear; if Length(AllTrim(sOBS.Text)) > 0 then begin Titulo.Mensagem.Assign(sOBS); end; if Length(AllTrim(DM_Dados.qFiltro1.FieldByName('OBS').AsString)) > 0 then begin vListMSG.Clear; vListMSG.Text := DM_Dados.qFiltro1.FieldByName('OBS').AsString; for iObs := 0 to vListMSG.Count -1 do begin Titulo.Mensagem.Insert(iObs,vListMSG.Strings[iObs]); { Case iObs Of 0:Instrucao1 := vListMSG.Strings[iObs];//padL(trim(''),2,'0'); 1:Instrucao2 := vListMSG.Strings[iObs]; 2:Instrucao3 := vListMSG.Strings[iObs]; End; } if iObs = 4 then Break; end; end; vListMSG.Free; //01-Registrar Remessa Titulo.OcorrenciaOriginal.Tipo := toRemessaRegistrar; //ACBrBoleto1.AdicionarMensagensPadroes(Titulo,Mensagem); //FIM DADOS BOLETOS //SACADO - CLIENTE Case Length(SomenteNumero(DM_Dados.qFiltro2.FieldByName('CGC_CNPJ').AsString)) Of 11:Titulo.Sacado.Pessoa := pFisica; 14:Titulo.Sacado.Pessoa := pJuridica; else Titulo.Sacado.Pessoa := pFisica; End; Titulo.Sacado.NomeSacado := DM_Dados.qFiltro2.FieldByName('NOME').AsString; Titulo.Sacado.CNPJCPF := SomenteNumero(DM_Dados.qFiltro2.FieldByName('CGC_CNPJ').AsString); Titulo.Sacado.Logradouro := DM_Dados.qFiltro2.FieldByName('LOGADOURO').AsString; Titulo.Sacado.Numero := DM_Dados.qFiltro2.FieldByName('NUMERO').AsString; Titulo.Sacado.Bairro := DM_Dados.qFiltro2.FieldByName('BAIRRO').AsString; Titulo.Sacado.Cidade := DM_Dados.qFiltro2.FieldByName('NOME CIDADE').AsString; Titulo.Sacado.UF := DM_Dados.qFiltro2.FieldByName('UF').AsString; Titulo.Sacado.CEP := SomenteNumero(DM_Dados.qFiltro2.FieldByName('CEP').AsString); //FIM SACADO - CLIENTE Só pra um entendimento melhor nessa linha: //01-Registrar Remessa Titulo.OcorrenciaOriginal.Tipo := toRemessaRegistrar; Deve colocar a ocorrência do titulo, ou seja se for uma alteração de vencimento deve-se informar a ocorrência desejada. ex: toRemessaAlterarVencimento. Espero que ajude alguém.
-
Bom dia José M. S. Junior. Fiz a atualização da versão do SVN e alterei a classe com as informações do estinque. O único método que vi gerando algo diferente foi o método MontarCampoNossoNumero . As demais funções peguei da alteração do estinque e seguir o que estava nas alterações dele. Peço que os envolvidos façam o teste e comentem se possível. Recebi o retomo do Banese hoje informado que esta tudo normal com os arquivos de remessa e retorno. Um outro Arquivo que modifiquei foi o ACBrBoletoFCFR.pas onde adicionei o seguinte código pra exibir a chave ASBACE no boleto: ACBrBoletoFCFR.pas if ACBrBoleto.Banco.Numero = 21 then Field_Asbace.AsString := TACBrBancoBanestes(Banco).CalcularCampoASBACE(ListadeBoletos[iFor]) else if ACBrBoleto.Banco.Numero = 47 then begin Field_Asbace.AsString := 'CHAVE ASBACE: '+TACBrBancoBanese(Banco).CalcularCampoASBACE(ListadeBoletos[iFor]) +' BANESE'; end; Se possível analisar as alterações e subir ao SVN, Muito Obrigado. Acbr Boleto Homologado.rar
-
Boa Tarde , depois de analisar o código verifiquei que a function TACBrBancoBanese.MontarCampoNossoNumero (const ACBrTitulo: TACBrTitulo ) : String;, ela esta retornando o Nosso Numero errado, pelo manual ele aceita apenas 9 posições já com o digito verificador, ou seja informamos apenas 8 e a function TACBrBancoBanese.CalcularDigitoVerificador(const ACBrTitulo: TACBrTitulo ): String; retorna o 9º digito, conforme o DEBUG ele esta retornando o número da Agência com 3 posições "028". O primeiro Código que disponibilizei aqui no forum eles estava assim: function TACBrBancoBanese.MontarCampoNossoNumero ( const ACBrTitulo: TACBrTitulo ) : String; begin ACBrTitulo.NossoNumero := IntToStrZero( StrToIntDef((Trim(ACBrTitulo.NossoNumero)+Trim(CalcularDigitoVerificador(ACBrTitulo))),0) ,Self.TamanhoMaximoNossoNum); Result := ACBrTitulo.NossoNumero; end; function TACBrBancoBanese.MontarCampoNossoNumero ( const ACBrTitulo: TACBrTitulo ) : String; begin ACBrTitulo.NossoNumero := IntToStrZero( StrToIntDef((Trim(ACBrTitulo.NossoNumero)+Trim(CalcularDigitoVerificador(ACBrTitulo))),0) ,Self.TamanhoMaximoNossoNum); Result := ACBrTitulo.NossoNumero; end; A principio seguir os conselhos de um membro no grupo que pegasse um código fonte de um outro banco renomeasse pra o banco novo e assim fizesse as modificações. O que os Senhores me aconselham, pra ter um fonte no SVN e para que todos possam usar o mesmo. Desde já agradecido.
-
Bom dia, Depois de ter atualizado com os fontes aqui postado(ACBrBancoBanese.pas). o Boleto ainda esta saindo com a linha digitável incorreta. Segue imagem do boleto. Como esta sendo setado os dados no componente, pode ser isso que esta ocasionando o problema. A agencia ela vem com 3 dígitos que no meu caso é 028 e na chave asbace ela pega apenas 2 posições: Composição da Chave Asbace AACCCCCCCCCNNNNNNNNNBBBDD A - agência do cedente (2 posições) C - conta corrente do cedente (9 posições) N - nosso número, incluindo o dígito (9 posições) B - código do banco, 047 para o Banese (3 posições) D - duplo dígito (2 posições) Cálculo do duplo dígito verificador da Chave Asbace Vale ressaltar que no construtor esta com essas informações: constructor TACBrBancoBanese.create(AOwner: TACBrBanco); begin inherited create(AOwner); fpDigito := 7; fpNome := 'Banese'; fpNumero := 047; fpTamanhoMaximoNossoNum := 8; fpTamanhoAgencia := 3; fpTamanhoConta := 9; fpTamanhoCarteira := 1; fValorTotalDocs := 0; fQtRegLote := 0; fRegLote := 0; end; fpTamanhoAgencia := 3;(2) fpTamanhoMaximoNossoNum := 8; (9) Se for o caso pra poder Seguir o que Junior informou baixo a versão do SVN e faço as alterações necessárias a fim de ter um componente compatível e no padrão.
-
Boa tarde, Mano você consegue emitir um boleto em PDF e enviar aqui, vamos trabalhar juntos nessa mudança, na ultima versão que peguei esta com divergência no boleto banese o setor de homologação informou que falta a chave asbace no boleto e que o numero da agencia estava com 3 dígitos e não 2.
-
Bom dia. Já resolvi obrigado. Estava vinculado ao código de mora e juros Case Titulo.CodigoMoraJuros Of cjValorDia cjTaxaMensal cjIsento End; Caso seja 0 informar como cjIsento. Assim que terminar tudo informo aqui como foi o procedimento e ai já ajuda o pessoal.
-
Boa noite, depois de muita demora ao retornar os arquivos do Banese, veio mais esses erros: 403830 40383 34 1 3-Entrada Rejeitada 79-Data Juros de Mora Inválido 27-Valor/Taxa de Juros de Mora Inválido 403946 40394 34 2 3-Entrada Rejeitada 79-Data Juros de Mora Inválido 27-Valor/Taxa de Juros de Mora Inválido 403954 40395 34 3 3-Entrada Rejeitada 79-Data Juros de Mora Inválido 27-Valor/Taxa de Juros de Mora Inválido 403997 40399 34 4 3-Entrada Rejeitada 79-Data Juros de Mora Inválido 27-Valor/Taxa de Juros de Mora Inválido Como você está fazendo o preenchimento desses campos? Estou fazendo dessa forma: //JUROS %(Percentual) Titulo.ValorMoraJuros := 0.00; if (getField(DM_Dados.qFiltro1,'VW_CONTA_BANCO','JUROS_PERC','DOUBLE PRECISION',0.00) > 0) then begin rDescVencimento := ((CdsConta.FieldByName('VALOR').AsFloat * DM_Dados.qFiltro1.FieldByName('JUROS_PERC').AsFloat)/100); Titulo.ValorMoraJuros := RoundABNT(rDescVencimento,2); Titulo.DataMoraJuros := CdsConta.FieldByName('VENCIMENTO').AsDateTime; end; Obrigado.
-
Sobre o Aceite estou passando como Sim.
-
você chegou a fazer a homologação e deu tudo certo?
-
@estinque 40383 0000000000000000000040383 32 1 3-Entrada Rejeitada 23-Aceite Inválido 08-Nosso Número Inválido 40394 0000000000000000000040394 32 2 3-Entrada Rejeitada 23-Aceite Inválido 08-Nosso Número Inválido 40395 0000000000000000000040395 32 3 3-Entrada Rejeitada 23-Aceite Inválido 08-Nosso Número Inválido 40399 0000000000000000000040399 32 4 3-Entrada Rejeitada 23-Aceite Inválido 08-Nosso Número Inválido Do ultimo arquivo que esta no SVN foi rejeitado o Nosso Numero. Vou pegar esses arquivos. Quando disponibilizei aqui os arquivos já tinha sido homologado, mas o retorno não tinha implementando, era apenas isso que não tinha feito os demais ajustes foram feitos.
-
Boa Tarde, eu vi aqui baixei o svn novamente e vi o problema. Vou te passar como resolvi, quando gerar mais de uma vez, a variável fRegLote ele inicia do ultimo registro gerado no arquivo anterior e não iniciava novamente do 1. function TACBrBancoBanese.GerarRegistroHeader240(NumeroRemessa : Integer): String; var ATipoInscricao: string; AMensagemReservada: String; begin with ACBrBanco.ACBrBoleto.Cedente do begin case TipoInscricao of pFisica : ATipoInscricao := '1'; pJuridica: ATipoInscricao := '2'; end; if ACBrBanco.ACBrBoleto.Homologacao then AMensagemReservada := 'REMESSA-TESTE' else AMensagemReservada := 'REMESSA-PRODUCAO'; { GERAR REGISTRO-HEADER DO ARQUIVO } Result:= IntToStrZero(ACBrBanco.Numero, 3) + //1 a 3 - Código do banco '0000' + //4 a 7 - Lote de serviço - Se registro for Header do Arquivo preencher com '0000' '0' + //8 - Tipo de registro - Registro header de arquivo '0' = Header de Arquivo PadRight('', 9, ' ') + //9 a 17 Uso exclusivo FEBRABAN/CNAB ATipoInscricao + //18 - Tipo de inscrição do cedente [ '1' = CPF '2' = CGC / CNPJ ] PadLeft(OnlyNumber(CNPJCPF), 14, '0') + //19 a 32 -Número de inscrição do cedente CPF ou CNPJ PadLeft(Convenio,20, '0') + //33 a 52 - Código do convênio no banco PadLeft(OnlyNumber(Agencia), 5, '0') + //53 a 57 - Código da agência do cedente PadLeft(AgenciaDigito, 1 , '0') + //58 - Dígito da agência do cedente PadLeft(Conta, 12, '0') + //59 a 70 - Código Cedente (Código do Convênio no Banco) PadLeft(ContaDigito, 1, '0') + //71 - Digito verificado da conta - DEIXA BRANCO Space(1) + //72 - Digito verificado da Agencia/conta - DEIXA BRANCO PadRight(Nome, 30, ' ') + //73 a 102 - Nome do cedente PadRight('BANESE', 30, ' ') + //103 a 132 - Nome do banco PadRight('', 10, ' ') + //133 a 142 - Uso exclusivo FEBRABAN/CNAB '1' + //143 - Código de Remessa / Retorno ( '1' = Remessa (Cliente > Banco) '2' = Retorno (Banco > Cliente) ) FormatDateTime('ddmmyyyy', Now) + //144 a 151 - Data do de geração do arquivo FormatDateTime('hhmmss', Now) + //152 a 157 - Hora de geração do arquivo PadLeft(IntToStr(NumeroRemessa), 6, '0')+ //158 a 163 - Número seqüencial do arquivo '101' + //164 a 166 - Número da versão do layout do arquivo "101" PadRight('', 5, '0') + //167 a 171 - Densidade de gravação do arquivo (BPI) Space(20) + // 172 a 191 - Uso reservado do banco PadLeft(AMensagemReservada, 20, ' ') + // 192 a 211 - Uso reservado da empresa PadLeft('', 29, ' '); // 212 a 240 - Uso Exclusivo FEBRABAN / CNAB { GERAR REGISTRO HEADER DO LOTE } Result:= Result + #13#10 + IntToStrZero(ACBrBanco.Numero, 3) + //1 a 3 - Código do banco '0001' + //4 a 7 - Lote de serviço - Preencher com '0001' para o primeiro lote do arquivo. '1' + //8 - Tipo de registro - Registro header de arquivo '1' = Header de Lote 'R' + //9 - Tipo de operação: 'R' = Arquivo Remessa 'T' = Arquivo Retorno '01' + //10 a 11 - Tipo de serviço: 01' = Cobrança Space(2) + //12 a 13 - FUso Exclusivo FEBRABAN / CNAB: Preencher com Brancos. '060' + //14 a 16 - Número da versão do layout do lote Space(1) + //17 - Uso exclusivo FEBRABAN/CNAB ATipoInscricao + //18 - Tipo de inscrição do cedente [ '1' = CPF '2' = CGC / CNPJ ] PadLeft(OnlyNumber(CNPJCPF), 15, '0') + //19 a 33 -Número de inscrição do cedente CPF OU CNPJ PadLeft(Convenio, 20, '0') + //34 a 53 - Código do convênio no banco (código do Convenio) PadLeft(OnlyNumber(Agencia), 5 , '0') + //54 a 58 - Agência do cedente PadLeft(AgenciaDigito, 1 , '0') + //59 - Dígito da agência do cedente PadLeft(Conta, 12, '0') + //60 a 71 - Código do convênio no banco (código do cedente) PadLeft(ContaDigito, 1, '0') + //71 - Digito verificado da conta - DEIXA BRANCO Space(1) + //73 - Digito verificado da Agencia/conta - DEIXA BRANCO PadLeft(Nome, 30, ' ') + //74 a 103 - Nome do cedente PadLeft('', 40, ' ') + //104 a 143 - Mensagem 1 para todos os boletos do lote PadLeft('', 40, ' ') + //144 a 183 - Mensagem 2 para todos os boletos do lote PadLeft(IntToStr(NumeroRemessa), 8, '0') + //184 a 191 - Número do arquivo FormatDateTime('ddmmyyyy', Now) + //192 a 199 - Data de geração do arquivo PadLeft('', 8, '0') + //200 a 207 - Data do crédito - Só para arquivo retorno PadLeft('', 33, ' '); //208 a 240 - Uso exclusivo FEBRABAN/CNAB end; fRegLote := 0; end;
-
Boa tarde, realmente não tinha implementado esse código, vc tem como me passar o código pra eu poder adicionar aqui, depois que atualizei pelo SVN, os arquivos passaram a ser rejeitado pelo Banese, e tive que pegar um backup e atualizar no meus fontes e ai foram aceitos queria pegar essa parte do código de retorno pra poder atualizar e assim enviar pra teste aqui no estado já que sou de Sergipe e tenho contato com o pessoal do banco. Fico grato
-
Boa noite @joemil Eu tenho eles atualizados e já homologado pelo Banco Banese. Foi Homologado o layout do Boleto e envio de arquivo de remessa, não fiz o retorno ainda, mas acredito que assim que tiver um arquivo de um cliente já começo a trabalha nele, mais o arquivo de remessa já esta certo pra o modelo CBN240 que foi o exigido pelo Banco. Segue anexo com as alterações. Peço também que se possível atualizar os fontes do projeto. Obrigado e aguardo retorno dos moderadores do projeto ACBr. Alaterado.rar Boa noite, depois que instalei e copilei todos os pacotes em uma nova maquina com a instalação do Delphi zerada funcionou. Obrigado