Pesquisar na Comunidade
Showing results for tags 'acbrbancosantander'.
Encontrado 4 registros
-
Segmento S - Santander e Banco do Brasil - Mensagem C 200
um tópico no fórum postou rodrigod6 ACBrBoleto
Boa tarde, Estou precisando enviar a mensagem do Segmento S, onde possui 200 colunas, para envio no Santander e no Banco do Brasil. Fiz uma análise do fonte da Caixa. Temos no Segmento R - de 40 colunas o campo mensagem 3 (Coluna 100 a 139 - Mensagem 3) - é enviado em branco. {SEGMENTO R} Result:= Result + #13#10 + IntToStrZero(ACBrBanco.Numero, 3) ... PadRight('', 40, ' ') + // 100 a 139 - Mensagem 3 No segmento S é enviado Mensagem 5, 6, 7, 8 e 9, totalizando 200 colunas de mensagem {SEGMENTO S} if (Mensagem.Count > 0) then begin Result := Result + #13#10 + ... MontarInstrucoes2 + // 019 - 058 / Mensagem 5 // 059 - 098 / Mensagem 6 // 099 - 138 / Mensagem 7 // 139 - 178 / Mensagem 8 // 179 - 218 / Mensagem 9 No Banco do Brasil e no Santander, não temos a programação das mensagens no segmento S. No Santander, no segmento S temos a rotina MontarInstrucoes2, mas gera as 200 colunas em branco. Seguindo o exemplo da Caixa, talvez mudando de: function MontarInstrucoes2: string; begin with ACBrTitulo do begin if Mensagem.Count <= 2 then begin // Somente duas linhas, foi montado o MonarInstrucoes1 Result := PadRight('', 200, ' '); // 5 registros Exit; end; Para: function MontarInstrucoes2: string; begin with ACBrTitulo do begin if (Mensagem.Count <= 2) then begin if (Mensagem.Count = 2) then Result := Copy(PadRight(Mensagem[0] +' / '+ Mensagem[1], 200, ' '), 1, 200) else Result := Copy(PadRight(Mensagem[0], 200, ' '), 1, 200); Exit; end; Já no Banco do Brasil, não é gerado nem a Mensagem 3 e nem a mensagem 5, 6, 7, 8 e 9, vejamos o Segmento R: {SEGMENTO R} Result:= Result + #13#10 + ... PadRight('',110,' ') + // 90 - 199 Obs.: Segmento S não tem. Então a sugestão de alteração seria mudar os 110 em branco para 10, 40 e 60: No segmento S: {SEGMENTO R} Result:= Result + #13#10 + ... PadRight('',10,' ') + // 90 - 99 - Informação ao Sacado PadRight(AMensagem,40,' ') + // 100 - 139 - Mensagem 3 PadRight('',60,' ') + // 140 - 199 - Não tratado Se no segmento S a nova programação: {SEGMENTO S} if (Mensagem.Count > 0) then begin Result := Result + #13#10 + IntToStrZero(ACBrBanco.Numero, 3) + // 001 a 003 - Código do banco '0001' + // 004 - 007 - Numero do lote remessa '3' + // 008 - 008 - Tipo de registro IntToStrZero((3 * ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo))+ 4 ,5) + // 009 - 013 - Número seqüencial do registro no lote - Cada título tem 2 registros (P e Q) 'S' + // 014 - 014 - Cód. Segmento do registro detalhe Space(1) + // 015 - 015 - Reservado (uso Banco) ATipoOcorrencia + // 016 - 017 - Código de movimento remessa ifthen( (Mensagem.Count <= 2), '0', '8' ) + // 018 - 018 - Identificação da impressão ifthen( (Mensagem.Count <= 2), '00', '' ) + // 019 - 020 - Reservado (uso Banco) para tipo de impressão 1 e 2 MontarInstrucoes2 + // 019 - 058 - Mensagem 5 // 059 - 098 - Mensagem 6 // 099 - 138 - Mensagem 7 // 139 - 178 - Mensagem 8 // 179 - 218 - Mensagem 9 ifthen( (Mensagem.Count <= 2), '00' + Space(78) ,Space(22)); // 219 - 240 - Reservado (uso Banco) para tipo de impressão 3 end; // 161 - 240 - Reservado (uso Banco) para tipo de impressão 1 e 2 {SEGMENTO S - FIM} Segue os arquivos modificados, para verificar a possibilidade de alteração para o envio das Obs no Segmento S do Banco Santander e Banco do Brasil. Obrigado, Rodrigo ACBrBancoSantanderCorrecao.pas ACBrBancoBrasilCorrecao.pas- 1 reply
-
- 1
-
- acbrboleto
- acbrbancobrasil
- (e 3 mais)
-
Correção na função LerRetorno240, ma conversão da data de vencimento. Antes Vencimento := StrToDateDef(Copy(Linha, 70, 8),0); MOdificação Vencimento := StringToDateTimeDef(Copy(Linha, 70, 2)+'/'+ Copy(Linha, 72, 2)+'/'+ Copy(Linha, 74,4),0, 'DD/MM/YYYY' ); ACBrBancoSantander.rar
-
Campo vencimento não é lido no retorno Santander 240
um tópico no fórum postou renan.sanches ACBrBoleto
Bom dia, O campo Vencimento não é lido do arquivo retorno 240 posições do Santander, método LerRetorno240(ARetorno: TStringList); Incluí o seguinte código: TempData := copy(Linha, 70, 2) + '/'+copy(Linha, 72, 2)+'/'+copy(Linha, 74, 4); if TempData<>'00/00/0000' then Vencimento := StringToDateTimeDef(TempData,0, 'DD/MM/YYYY' ); Obrigado, Renan. ACBrBancoSantander.pas -
Bom dia a todos, favor realizar a inclusão dos códigos na função: function CodMotivoRejeicaoToDescricao(const TipoOcorrencia:TACBrTipoOcorrencia; CodMotivo:Integer): String; override; 262: Result := '262-CAD.TXPERM.SK.INV.P.COD.MORA=3(D3P)'; 263: Result := '263-INSTRUCAO PARA TITULO NAO REGISTRADO'; 264: Result := '264-CODIGO DE ACEITE (A/N) INVALIDO.'; 265: Result := '265-TIT COM MAIS DE 3 INSTRUCOES FINANCEIRAS'; 266: Result := '266-CODIGO DE CEDENTE NAO CADASTRADO'; 267: Result := '267-TIT SEM ORDEM DE PROTESTO AUTOMATICA'; 268: Result := '268-DATA DE JUROS DE TOLERANCIA INVALIDO'; 269: Result := '269-DATA DE TOLERANCIA MENOR DATA VENCIMENTO; 270: Result := '270-PERC. DE JUROS DE TOLERANCIA INVALIDO'; 371: Result := '371-TITULO REJEITADO - OPERACAO DE DESCONTO'; 372: Result := '372-TIT. REJEITADO - HORARIO LIMITE OP DESCONTO';