-
Total de ítens
221 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que aocampioni postou
-
Bom dia estimada, Se for Santander, lembre-se de preencher a propriedade MODALIDADE (que é o próprio numero da carteira que você está usando, ao que parece, 102, simples sem registro). Lembre-se também que no título do seu post poderia ser Divergência Linha Digitável SANTANDER. Qualquer coisa vai postando aí, Até mais,
-
Estimado leandrox364, Boa tarde. Não é mais permitido pelo branco (ops, banco) central a emissão de boletos sem vencimento (a vista ou 'contra apresentação) e sem valor (ou valor 0,00) desde 28/06/2013 se não me engano. Por isso que nos arquivos (ao menos no ACBrBoletoFCFortesFr) não há tratamento para essa situação. Uma opção seria tratar nos fontes onde o caption das datas é preenchido algo do tipo assim: ........ fBoletoFC.CarregaLogo( imgBanco2.Picture, Banco.Numero ); ........ txtDataVencimento2.Caption := IfThen(Titulo.Vencimento > 0,FormatDateTime('dd/mm/yyyy', Titulo.Vencimento),'CONTRA APRESENTACAO'); ........ Mas é só uma opção. Até mais,
-
Alterações Remessa Caixa E Retorno Banrisul
aocampioni replied to Denise Lima's tópico in ACBrBoleto
Estimado, Bom dia! Sua alteração é boa, mas o ACBr já possui uma propriedade Modalidade que pode ser utilizada. Fixo como está, necessitará de outra alteração no futuro pois há quem use a carteira 12 (cobrança rápida), e/ou ainda a 41 (descontada). Sugestão: if( padR(trim(ACBrBoleto.Cedente.Modalidade),2,'0') = '00') then begin if ACBrTitulo.CarteiraEnvio = tceCedente then ACBrBoleto.Cedente.Modalidade := '14' else ACBrBoleto.Cedente.Modalidade := '11'; end; Isso daria chance para o usuário escolher também a carteira 12 ou 41 usando a propriedade Modalidade. E no registro gerado ao invés de : padL(ACBrBoleto.Cedente.CodigoCedente, 6, '0') + //24 a 29 - Código do Convênio no Banco (Codigo do cedente) padL('', 11, '0') + //30 a 40 - Uso Exclusivo da CAIXA ACarteiraEnvio + //41 a 42 - Modalidade da Carteira padR(Copy(ANossoNumero,3,17), 15, '0') + //43 a 57 - Nosso número - identificação do título no banco '1' + //58 - Cobrança Simples Isso: padL(ACBrBoleto.Cedente.CodigoCedente, 6, '0') + //24 a 29 - Código do Convênio no Banco (Codigo do cedente) padL('', 11, '0') + //30 a 40 - Uso Exclusivo da CAIXA padR(ACBrBoleto.Cedente.Modalidade, 2, '0') + //41 a 42 - Modalidade da Carteira:11 simples / 12 rápida / 14 sem registro / 41 descontada padR(Copy(ANossoNumero,3,17), 15, '0') + //43 a 57 - Nosso número - identificação do título no banco '1' + //58 - Cobrança Simples Mas é apenas uma sugestão tá ok, já que remessa não se gera com modalidade 14, mas veja aí o que você acha e se a Juliana ou o Juliomar concordarem também, pode-se alterar a unit da caixa assim. Até mais, -
Estimado, Boa noite, donde você faz menção à: Titulo := ACBrBoleto.CriarTituloNaLista; with Titulo do ................. O seu banco de dados deve tá com o conteúdo inválido para a linha: Carteira := CDSContasBCARTEIRA.AsString; // Aqui é que vai a informação 'RG' ou 'SR'. Dá uma verificada aí no que tá indo nesse campo CDSContasBCARTEIRA.AsString. E veja também a linha: OcorrenciaOriginal.Tipo := toRemessaBaixar; Se você está enviando uma remessa pela primeira vez tem que ser: OcorrenciaOriginal.Tipo := toRemessaRegistrar; .. também estaria faltando as tags CodigoMora := '1' e TipoDiasProtesto := diCorridos Até mais,
-
Erro "cnpj Deve Ter 14 Dígitos" Ao Processar Retorno Do Banco Santander
aocampioni replied to joaolenosi's tópico in ACBrBoleto
Blz estimado, espero que sirva para o joao também. Até mais, -
Erro "cnpj Deve Ter 14 Dígitos" Ao Processar Retorno Do Banco Santander
aocampioni replied to joaolenosi's tópico in ACBrBoleto
Olá, Tenho Santander Homologado a dois meses pelo ACBr, carteira registrada com remessa e retorno. Faço tratamento do retorno e não tenho esse problema relatado não. Pode ser que você esteja com o fonte desatualizado, pois no meu método LerRetorno240 do Santander a linha está assim: rCNPJCPF := RightStr(OnlyNumber(Copy(ARetorno[0], 18, 15)), 14); Que dispensaria todas as outras alterações, ao meu ver é claro. Até mais, -
Boa noite, Consegui homologar sem a linha digitável. Até mais,
- 5 replies
-
- linha digitavel
- recibo
- (e 4 mais)
-
Boa noite, Segue: // remessa procedure TForm1.Remessa; var nValorMora : Currency; //.. outros begin ACBrBoleto.ListadeBoletos.Clear; TituloACBr := ACBrBoleto.CriarTituloNaLista; TituloACBr.TipoDiasProtesto := diCorridos; TituloACBr.CarteiraEnvio := Iif(Trim(sBancoEmite)='SIM', tceBanco, tceCedente); TituloACBr.SeuNumero := sConrecSeq; TituloACBr.Aceite := atNao; TituloACBr.NumeroDocumento := sNumNotaFiscal; TituloACBr.Sacado.CNPJCPF := sCpfCnpj; if(length(trim(TituloACBr.Sacado.CNPJCPF)) > 11) then TituloACBr.Sacado.Pessoa := pJuridica else TituloACBr.Sacado.Pessoa := pFisica; TituloACBr.Sacado.Logradouro := sEndereco; TituloACBr.Sacado.Numero := ''; TituloACBr.Sacado.Complemento := ''; TituloACBr.Sacado.Bairro := sBairro; TituloACBr.Sacado.Cidade := sCidade; TituloACBr.Sacado.UF := sEstado; TituloACBr.Sacado.CEP := sCep; TituloACBr.Sacado.Email := sEmail; TituloACBr.Sacado.Fone := sTelefone; TituloACBr.Vencimento := StrToDate(FormatDateTime('dd/mm/yyyy', dDataVencto)); TituloACBr.DataDocumento := StrToDate(FormatDateTime('dd/mm/yyyy', dDataDocto)); TituloACBr.DataProcessamento := StrToDate(FormatDateTime('dd/mm/yyyy', Date)); TituloACBr.ValorDocumento := rValorDocto; TituloACBr.CodigoMora := '1'; TituloACBr.ValorMoraJuros := 0; TituloACBr.DataMoraJuros := 0; if njuromensal>0 then TituloACBr.PercentualMulta := njuromensal; if nMoraDiaria>0 then begin nValorMora:=(TituloACBr.ValorDocumento*(nMoraDiaria/30))/100; if(nValorMora >= 0.01) then begin TituloACBr.ValorMoraJuros := nValorMora; TituloACBr.DataMoraJuros := TituloACBr.Vencimento+1; end; end; if(iDiasProtesto = 0) then TituloACBr.DataProtesto := 0 else TituloACBr.DataProtesto := StrToDate(FormatDateTime('dd/mm/yyyy', TituloACBr.Vencimento+iDiasProtesto) ); TituloACBr.EspecieDoc := 'DM'; TituloACBr.OcorrenciaOriginal.Tipo := toRemessaRegistrar; TituloACBr.Carteira := sCarteira; TituloACBr.LocalPagamento := sLocalPagto; // nosso numero TituloACBr.NossoNumero := sNossoNum; TituloACBr.Instrucao1 := ''; TituloACBr.Instrucao2 := ''; TituloACBr.Parcela := iParc; end; // ler retorno procedure TForm1.Retorno; var i : Integer; begin if OpenDialog1.Execute then begin //Configurar ConfiguracoesACBr; // ACBrBoleto.NomeArqRetorno := OpenDialog1.FileName; ACBrBoleto.LerRetorno; for i := 0 to ACBrBoleto.ListadeBoletos.Count-1 do begin if ACBrBoleto.ListadeBoletos.Objects[i].ValorRecebido > 0 then begin SQLAux.Close; SQLAux.SQL.Clear; SQLAux.SQL.Add('update conrec set'); SQLAux.SQL.Add('data_baixa = :pData,'); SQLAux.SQL.Add('valor_pago = :pValor,'); SQLAux.SQL.Add('taxa_cobranca = :pTaxa'); SQLAux.SQL.Add('where nosso_numero = :pNossoNum'); SQLAux.Params.ParamByName('pData').AsDate := ACBrBoleto.ListadeBoletos.Objects[i].DataCredito; SQLAux.Params.ParamByName('pValor').AsFloat := ACBrBoleto.ListadeBoletos.Objects[i].ValorRecebido; SQLAux.Params.ParamByName('pNossoNum').AsString:= Copy(ACBrBoleto.ListadeBoletos.Objects[i].NossoNumero,1,ACBrBoleto.Banco.TamanhoMaximoNossoNum); // vir sem o dígito, se quiser SQLAux.Params.ParamByName('pTaxa').AsFloat := ACBrBoleto.ListadeBoletos.Objects[i].ValorDespesaCobranca; SQLAux.ExecSQL(False); end; end; SQLAux.Close; end; end; procedure TForm1.ConfiguracoesACBr; begin ACBrBoleto.ACBrBoletoFC.DirLogo := sPathLogo; ACBrBoleto.ACBrBoletoFC.Filtro := fiNenhum; ACBrBoleto.ACBrBoletoFC.LayOut := lPadrao; ACBrBoleto.ACBrBoletoFC.MostrarSetup:= true; ACBrBoleto.ACBrBoletoFC.SoftwareHouse:= 'SUA EMPRESA'; ACBrBoleto.Banco.TipoCobranca := cobSantander; // escolha o seu tipo de cobrança ACBrBoleto.Banco.Digito := iDigBanco; // 33 ACBrBoleto.Banco.Numero := iBanco; // 7 ACBrBoleto.Banco.Nome := sBanco; // 'Santander'; ACBrBoleto.Banco.TamanhoMaximoNossoNum := iTamNossoNum; // 12 ACBrBoleto.Cedente.CaracTitulo := tcSimples; // simples com registro ACBrBoleto.Cedente.Nome := sNomCedente; ACBrBoleto.Cedente.Telefone := sTelefoneCedente; ACBrBoleto.Cedente.UF := sUFCedente; ACBrBoleto.Cedente.Bairro := sBairroCedente; ACBrBoleto.Cedente.CEP := sCepCedente; ACBrBoleto.Cedente.Cidade := sCidadeCedente; ACBrBoleto.Cedente.CNPJCPF := sCnpjCedente; ACBrBoleto.Cedente.Complemento := ''; ACBrBoleto.Cedente.Conta := sContaCorrente; ACBrBoleto.Cedente.ContaDigito := sContaCorrenteDig; ACBrBoleto.Cedente.Logradouro := sLogradouroCedente; ACBrBoleto.Cedente.NumeroRes := ''; ACBrBoleto.Cedente.Convenio := sConvenio; // ACBrBoleto.Cedente.Modalidade := sModalidade; // ACBrBoleto.Cedente.CodigoCedente := sCodCedente; ACBrBoleto.Cedente.CodigoTransmissao:= sCodigoTransmissao; // no santander tem ACBrBoleto.Cedente.ResponEmissao := Iif(Trim(sBancoEmite)='SIM', tbBancoEmite, tbCliEmite); ACBrBoleto.Cedente.TipoInscricao := pJuridica; ACBrBoleto.Cedente.TipoCarteira := Iif(Trim(sRegistrar)='SIM', tctRegistrada, tctSimples); ACBrBoleto.DataArquivo := Date; ACBrBoleto.NomeArqRemessa := FormatDateTime('DDMMYYYYHHMMSS',Now)+'.TXT'; ACBrBoleto.DirArqRemessa := sPathRemessa; ACBrBoleto.DirArqRetorno := sPathRetorno; ACBrBoleto.ImprimirMensagemPadrao := False; ACBrBoleto.LayoutRemessa := Iif(Pos(sLayoutArqRet,'400')>0,c400,c240); ACBrBoleto.LeCedenteRetorno := true; end; Veja se te ajuda. Até mais,
-
Estimado, Boa tarde. Minhas propriedades estão assim: TituloACBr.CodigoMora := '1'; TituloACBr.ValorMoraJuros := 0; TituloACBr.DataMoraJuros := 0; if njuromensal>0 then // multa por atraso TituloACBr.PercentualMulta := njuromensal; (ex:2%) if nMoraDiaria>0 then //(ex:5%) begin nValorMora:=(TituloACBr.ValorDocumento*(nMoraDiaria/30))/100; if(nValorMora >= 0.01) then begin TituloACBr.ValorMoraJuros := nValorMora; TituloACBr.DataMoraJuros := TituloACBr.Vencimento+1; end; end; E é isso. Verifique aí as informações pois aqui está tudo normal. Não visualizei DATAMORAJUROS no seu exemplo e nem o código da mora. Até mais,
-
Criação Layout Adicional Para Acbrboletofcfortes E Alteração Unit Santander
um tópico no fórum postou aocampioni ACBrBoleto
Pessoal, Boa tarde. Gostaria de contribuir com um novo layout de boleto no ACBrBoletoFCFortes que tenho que é tipo um lPadraoEntrega só que o recibo do topo é compacto, que eu coloquei como sendo lReciboTopo. É interessante pois permite imprimir dois boletos numa mesma folha e os usuários que vem do CobreBemX conhecem este layout (e todos os meus clientes preferem este, portanto, toda vez que atualizo o acbr tenho que atualizar manualmente esta unit). Se puder disponibilizar seria interessante. Outra atualização que fiz foi na unit do Santander, que é relativo ao complemento do código de transmissão. É uma atualização simples, pois, quem tem carteiras muito antigas de cobrança do Santander (contas com 8 dígitos e no caso alguns de meus clientes tem), segundo NOTAS 2 do manual de cobrança cnab400 do Santander, esse complemento de transmissão não pode ser incluído no arquivo de cobrança de contas de cobrança muito antigas. Caso a conta de cobrança já tenha 10 posições, sim, este código de complemento é obrigatório (Atualmente ele é obrigatório para qualquer situação). Segue anexo as units alteradas com a última atualização de hoje. No começo da minha utilização do ACBrBoleto fiz alterações até desnecessárias, mas depois fui encontrando soluções para contornar certas situações porém estas que mencionei acima não tive como contornar. Obrigado e até mais, (editei o post pois faltou uma informacao a ser inserida no arquivo do santander. Voltarei a postar em breve) -
Pessoal, Boa noite. Por favor, poderiam atualizar a função geturl em acbrgnreutil.pas onde o site de testes mudou de https://www.gnre-h.pe.gov.brpara https://www.testegnre.pe.gov.br ? Toda vez que atualizo tenho que fazer essa alteração. Antiga: class function GNREUtil.GetURL(const AAmbiente: Integer; ALayOut: TLayOut): WideString; begin case ALayOut of LayGNRERecepcao: Result := DFeUtil.SeSenao(AAmbiente = 1, 'https://www.gnre.pe.gov.br/gnreWS/services/GnreLoteRecepcao?wsdl' , 'https://www.gnre-h.pe.gov.br/gnreWS/services/GnreLoteRecepcao?wsdl'); LayGNRERetRecepcao: Result := DFeUtil.SeSenao(AAmbiente = 1, 'https://www.gnre.pe.gov.br/gnreWS/services/GnreResultadoLote?wsdl' , 'https://www.gnre-h.pe.gov.br/gnreWS/services/GnreResultadoLote?wsdl'); LayGNREConsultaConfigUF: Result := DFeUtil.SeSenao(AAmbiente = 1, 'https://www.gnre.pe.gov.br/gnreWS/services/GnreConfigUF?wsdl' , 'https://www.gnre-h.pe.gov.br/gnreWS/services/GnreConfigUF?wsdl'); end; end; Nova: class function GNREUtil.GetURL(const AAmbiente: Integer; ALayOut: TLayOut): WideString; begin case ALayOut of LayGNRERecepcao: Result := DFeUtil.SeSenao(AAmbiente = 1, 'https://www.gnre.pe.gov.br/gnreWS/services/GnreLoteRecepcao?wsdl' , 'https://www.testegnre.pe.gov.br/gnreWS/services/GnreLoteRecepcao?wsdl'); LayGNRERetRecepcao: Result := DFeUtil.SeSenao(AAmbiente = 1, 'https://www.gnre.pe.gov.br/gnreWS/services/GnreResultadoLote?wsdl' , 'https://www.testegnre.pe.gov.br/gnreWS/services/GnreResultadoLote?wsdl'); LayGNREConsultaConfigUF: Result := DFeUtil.SeSenao(AAmbiente = 1, 'https://www.gnre.pe.gov.br/gnreWS/services/GnreConfigUF?wsdl' , 'https://www.testegnre.pe.gov.br/gnreWS/services/GnreConfigUF?wsdl'); end; end; Agradecido, Até mais,
-
Erro Na Formação Do Nosso Numero Caixa Econômica Federal Sr Sicob
aocampioni replied to ganef's tópico in ACBrBoleto
Pessoal, Boa tarde. Segue anexo boleto relativo aos dados do trecho do código postado. Até mais, teste boleto caixasicob sem reg nosso numero 11 posicoes.pdf teste boleto caixasicob sem reg nosso numero 11 posicoes.pdf -
Erro Na Formação Do Nosso Numero Caixa Econômica Federal Sr Sicob
aocampioni replied to ganef's tópico in ACBrBoleto
Juliomar, Bom dia! Alguns dados (bem poucos) como agência, nome correto do cedente endereço, número e tals saiu no boleto por engano. Na hora de colar o código eu revisei e coloquei dados aleatórios (mas no formato correto) mas o trecho do código reflete exatamente a formatação que eu fiz pra gerar o boleto desse jeito. O boleto tem um recibo do pagador compacto porque eu desenvolvi um modelo pro fortes e não foi aprovado para subir no svn porque existe um semelhante no repositório (padraoentrega). Mas todos os meus clientes usavam cobrebemx e tinha esse modelo lá porque ele permite sair dois boletos em uma única folha, só isso, mas tá ok, eu vou gerar novamente o boleto baseado no trecho anexado e posto assim que possível. Até mais, -
Erro Na Formação Do Nosso Numero Caixa Econômica Federal Sr Sicob
aocampioni replied to ganef's tópico in ACBrBoleto
ganef, Boa tarde. No meu sistema, eu utilizo com as configurações que estão e tudo funciona perfeitamente, basta você formatar como passei anteriormente. Tenho vários clientes CAIXASICOB, CAIXA ECONOMICA, várias carteiras e todos funcionando bem. Tudo depende das configurações do componente. Na hora de configurar o componente eu passo o seguinte, carteira SR, caixasicob, 11 posições com o DV. // configurando para caixasicob, sem reg, nosso número de 11 posições com DV // na realidade o nosso número tem 8 posições mas o prefixo 82 e o DV totaliza 11 pos ACBrBoleto.Banco.TipoCobranca := cobCaixaSicob; ACBrBoleto.Banco.Numero := 104; ACBrBoleto.Banco.Digito := 0; ACBrBoleto.Banco.Nome := 'Caixa Economica Federal'; ACBrBoleto.Banco.TamanhoMaximoNossoNum := 8; ACBrBoleto.Cedente.Agencia := '0000'; ACBrBoleto.Cedente.AgenciaDigito := '0'; ACBrBoleto.Cedente.CaracTitulo := tcSimples; ACBrBoleto.Cedente.CNPJCPF := '67.734.078/0001-00'; // cnpj de teste gerado: http://highportal.no.sapo.pt/geradorcpf.html ACBrBoleto.Cedente.CodigoCedente := 000000000000000; // 0000 000 00000000 (agencia,operacao,codigo cedente) ACBrBoleto.Cedente.Conta := '000000'; ACBrBoleto.Cedente.ContaDigito := '0'; ACBrBoleto.Cedente.Convenio := ''; ACBrBoleto.Cedente.Modalidade := ''; ACBrBoleto.Cedente.Nome := 'CEDENTE DE TESTE'; ACBrBoleto.Cedente.Logradouro := 'ENDERECO DO CEDENTE DE TESTE' ; ACBrBoleto.Cedente.NumeroRes := '1000'; ACBrBoleto.Cedente.Complemento := ''; ACBrBoleto.Cedente.Bairro := 'BAIRRO'; ACBrBoleto.Cedente.CEP := '00000000'; ACBrBoleto.Cedente.Cidade := 'CIDADE'; ACBrBoleto.Cedente.Telefone := '999999999'; ACBrBoleto.Cedente.UF := 'SP'; ACBrBoleto.Cedente.ResponEmissao := tbCliEmite; ACBrBoleto.Cedente.TipoInscricao := pJuridica; ACBrBoleto.Cedente.TipoCarteira := tctSimples; ACBrBoleto.DataArquivo := Date; ACBrBoleto.NomeArqRemessa := FormatDateTime('DDMMYYYYHHMMSS',Now)+'.TXT'; ACBrBoleto.DirArqRemessa := 'c:\caixa\remessa\'; ACBrBoleto.DirArqRetorno := 'c:\caixa\retorno\'; ACBrBoleto.ImprimirMensagemPadrao := False; ACBrBoleto.LayoutRemessa := c240; ACBrBoleto.LeCedenteRetorno := false; // Na hora de imprimir os boletos // ... nNossoNum := 1; iVencto := 0; ACBrBoleto.ListadeBoletos.Clear; AStringList := TStringList.Create; for i := 1 to 1 do begin TituloACBr := ACBrBoleto.CriarTituloNaLista; AStringList.Clear; // dias de protestos e carteira de envio TituloACBr.TipoDiasProtesto := diCorridos; TituloACBr.CarteiraEnvio := tceCedente; with TituloACBr do begin Sacado.Avalista := ''; Sacado.NomeSacado := 'Fulano de Tal ' + IntToStr(i); Sacado.CNPJCPF := '111.111.111-1' + IntToStr(i); if(length(trim(Sacado.CNPJCPF)) > 11) then Sacado.Pessoa := pJuridica else Sacado.Pessoa := pFisica; Sacado.Logradouro := 'Rua do Sacado ' + IntToStr(i); Sacado.Numero := IntToStr(i) + ' 123'; Sacado.Complemento := IntToStr(i) + ' complemento'; Sacado.Bairro := 'Bairro do Sacado ' + IntToStr(i); Sacado.Cidade := 'Cidade do Sacado' + IntToStr(i); Sacado.UF := 'SP'; Sacado.CEP := '01001-001'; Sacado.Email := '[email protected]'; Sacado.Fone := '11 1111 1111'; Vencimento := StrToDate(FormatDateTime('dd/mm/yyyy', txtDataVencto.Date+iVencto)); DataDocumento := StrToDate(FormatDateTime('dd/mm/yyyy', txtDataDocto.Date)); DataProcessamento := StrToDate(FormatDateTime('dd/mm/yyyy', txtDataProc.Date)); NumeroDocumento := IntToStr(i); EspecieDoc := cmbEspecieDocto.Text; NossoNumero := FormatFloat(txtMascaraNNum.Text,nNossoNum); // aqui, minha máscara está 00000000 com oito posicoes, sem o 82, o acbr já coloca o 82, como o cobrebemx Carteira := txtCarteira.Text; LocalPagamento := txtLocalPagto.Text; if cmbAceite.ItemIndex = 0 then Aceite := atSim else Aceite := atNao; ValorDocumento := 1.90; ValorDesconto := 0; DataDesconto := 0; ValorAbatimento := 0; DataAbatimento := 0; ValorDescontoAntDia := 0; if txtJuroMensal.Value>0 then PercentualMulta := txtJuroMensal.Value; CodigoMora := '1'; ValorMoraJuros := 0; DataMoraJuros := 0; if txtMoraDiaria.Value>0 then begin nValorMora:=(ValorDocumento*(txtMoraDiaria.Value/30))/100; if(nValorMora >= 0.01) then begin ValorMoraJuros := nValorMora; DataMoraJuros := Vencimento+1; end; end; if(txtDiasProtesto.AsInteger = 0) then DataProtesto := 0 else DataProtesto := StrToDate(FormatDateTime('dd/mm/yyyy', Vencimento+txtDiasProtesto.AsInteger) ); // mensagens padrão if DataProtesto <> 0 then begin if TipoDiasProtesto = diCorridos then AStringList.Add(ACBrStr('Protestar em ' + IntToStr(DaysBetween(Vencimento, DataProtesto))+ ' dias corridos após o vencimento')) else AStringList.Add(ACBrStr('Protestar no ' + IntToStr(DaysBetween(Vencimento, DataProtesto))+ ' dia útil após o vencimento')); end; if ValorMoraJuros <> 0 then begin if DataMoraJuros <> 0 then AStringList.Add(ACBrStr('Cobrar Juros de ' + ifthen(CodigoMora = '2', FloatToStr(ValorMoraJuros) + '%', FormatCurr('R$ #,##0.00',ValorMoraJuros)) + ' por dia de atraso para pagamento a partir de ' + FormatDateTime('dd/mm/yyyy',ifthen(Vencimento = DataMoraJuros, IncDay(DataMoraJuros,1),DataMoraJuros)))) else AStringList.Add(ACBrStr('Cobrar Juros de ' + ifthen(CodigoMora = '2', FloatToStr(ValorMoraJuros) + '%', FormatCurr('R$ #,##0.00',ValorMoraJuros)) + ' por dia de atraso')); end; if PercentualMulta <> 0 then AStringList.Add(ACBrStr('Cobrar Multa de ' + FormatCurr('R$ #,##0.00',ValorDocumento*( 1+ PercentualMulta/100)-ValorDocumento) + ' após o vencimento.')); Mensagem.Text := AStringList.Text + txtInstrucaoCob1.Text + #13+#10 + txtInstrucaoCob2.Text; OcorrenciaOriginal.Tipo:= toRemessaRegistrar; Instrucao1 := trim(txtCodInstr1.Text); Instrucao2 := trim(txtCodInstr2.Text); Parcela := i; end; nNossoNum := nNossoNum + 1; iVencto := iVencto + 30; end; ACBrBoleto.Imprimir; O resultado está no anexo no PDF. Verifique as configurações do componente, não é necessário mexer no fonte do ACBr, na minha opinião. Até mais, teste boleto caixasicob sem reg nosso numero 11 posicoes.pdf -
Olá, Boa noite. Não há informação/propriedade para este complemento. Nos meus fontes eu implementei (nota 2 do manual cobrança santander) pois tem clientes muito antigos do Santander/Banespa que já enviavam cobrança via outro sistema e ao começar a enviar pelo nosso começo a gerar rejeição, pois a informação era fixa. Mas não se preocupe, o seu cliente já deve estar com conta de cobrança nova (com 10 posições), portanto essa informação, que é o último dígito da conta mais o DV o ACBr gera automático pra você dentro do arquivo. Até mais,
-
Retorno Caixa Econômica Federal, Campo Nosso Número
aocampioni replied to aocampioni's tópico in ACBrBoleto
Ok, vou verificar junto ao banco qual é a regra tá ok. Pois conversando com o cliente, ele disse que: imprimiu o título mas não enviou movimento (mesmo que sem registro ele poderia ter enviado) pro banco...mas, o banco leu o nosso número lá sim, até porque gravou ele (mesmo que formatado de outra maneira) no arquivo de retorno. Vou consultar o suporte da Caixa. Até mais, -
Retorno Caixa Econômica Federal, Campo Nosso Número
aocampioni replied to aocampioni's tópico in ACBrBoleto
Pessoal, Bom dia! Resolvido aqui tá ok, quando a cobrança for cobCaixaSicob e a carteira for simples ou rápida e cadastrado sem registro eu pego o campo NUMERODOCUMENTO senão pego o NOSSONUMERO. Valeu e até mais, -
Leotelles, Bom dia! Essa prática já foi proibida pelo Banco Central, segundo a Carta Circular 3.349, que proíbe o repasse da cobrança da tarifa bancária ao pagador (sacado). No arquivo de retorno existe a propriedade ValorDespesaCobranca que revela a você o valor cobrado pela compensação daquele título. Até mais,
-
Pessoal, Bom dia! Gostaria de obter com vocês aí uma opinião (quem sabe uma possibilidade de alteração até) sobre o retorno da caixa econômica com relação à propriedade nossonumero. Explico: quando a cobrança é simples ou rápida com registro está tudo certo, mas quando é cadastrada sem registro, vem uma numeração formatada um pouco diferente da que geramos originalmente, por exemplo, se eu gerei uma cobrança simples ou rápida SEM registro de um título cujo nosso número gerado pelo ACBr foi o 8000000000019293 (16 posições com dígito), quando vem o retorno, no campo nosso número mesmo, vem 8700001929. Tem o nosso número aqui, mas formatado diferente, sem digito e tudo mais. Bom, daria pra tratar pela carteira e forma de cadastramento (como eu fiz, porque senão, não identifico o título nos meus clientes), ou então, criando uma propriedade USOEMPRESA e nos bancos que não tiverem esse campo, colocar nela o nossonumero de cada um mesmo. Não sei se me fiz entender mas, qual a melhor saída no entendimento de vocês? De antemão, agradecido.
-
Boa noite GAC, Eu faço dessa maneira: // na hora de configurar ACBrBoleto.Banco.TipoCobranca := cobSantander ; ACBrBoleto.Banco.Numero := 33; ACBrBoleto.Banco.Digito := 7; ACBrBoleto.Banco.Nome := 'Santander'; ACBrBoleto.Banco.TamanhoMaximoNossoNum := 12; ACBrBoleto.Cedente.Agencia := '0000'; ACBrBoleto.Cedente.AgenciaDigito := '0'; ACBrBoleto.Cedente.CaracTitulo := tcSimples; ACBrBoleto.Cedente.CNPJCPF := '00000000000000'; ACBrBoleto.Cedente.CodigoCedente := '0000000'; ACBrBoleto.Cedente.CodigoTransmissao:= agencia+digito+000+codcedente; ACBrBoleto.Cedente.Conta := '000000000'; ACBrBoleto.Cedente.ContaDigito := '0'; ACBrBoleto.Cedente.Convenio := ''; ACBrBoleto.Cedente.Modalidade := '101'; ACBrBoleto.Cedente.Nome := 'NOME'; ACBrBoleto.Cedente.Logradouro := 'ENDERECO'; ACBrBoleto.Cedente.Complemento := ''; ACBrBoleto.Cedente.Bairro := 'BAIRRO'; ACBrBoleto.Cedente.CEP := 'CEP'; ACBrBoleto.Cedente.Cidade := 'CIDADE'; ACBrBoleto.Cedente.NumeroRes := ''; ACBrBoleto.Cedente.Telefone := 'FONE'; ACBrBoleto.Cedente.UF := 'UF'; ACBrBoleto.Cedente.ResponEmissao := tbBancoEmite; ACBrBoleto.Cedente.TipoInscricao := pJuridica; ACBrBoleto.Cedente.TipoCarteira := tctRegistrada; ACBrBoleto.DataArquivo := Date; ACBrBoleto.NomeArqRemessa := FormatDateTime('DDMMYYYYHHMMSS',Now)+'.TXT'; ACBrBoleto.DirArqRemessa := 'x:\'; ACBrBoleto.DirArqRetorno := 'x:\'; ACBrBoleto.ImprimirMensagemPadrao := False; ACBrBoleto.LayoutRemessa := c240; ACBrBoleto.LeCedenteRetorno := false; // na hora de gerar var TituloACBr : TACBrTitulo; AStringList: TStrings; ContadorRemessa : Integer; ..... ACBrBoleto.ListadeBoletos.Clear; AStringList := TStringList.Create; TituloACBr := ACBrBoleto.CriarTituloNaLista; AStringList.Clear; // dias de protestos e carteira de envio TituloACBr.TipoDiasProtesto := diCorridos; TituloACBr.CarteiraEnvio := tceBanco; with TituloACBr do begin Sacado.Avalista := ''; Sacado.NomeSacado := 'Fulano de Tal '; Sacado.CNPJCPF := '111.111.111-1'; Sacado.Pessoa := pJuridica; Sacado.Logradouro := 'Rua do Sacado '; Sacado.Numero := ' 123'; Sacado.Complemento := ''; Sacado.Bairro := 'Bairro do Sacado '; Sacado.Cidade := 'Cidade do Sacado'; Sacado.UF := 'SP'; Sacado.CEP := '01001-001'; Sacado.Email := '[email protected]'; Sacado.Fone := '11 1111 1111'; Vencimento := StrToDate('13/04/2015'); DataDocumento := StrToDate('13/04/2015'); DataProcessamento := StrToDate('13/04/2015'); NumeroDocumento := 1; SeuNumero := 1; EspecieDoc := 'DM'; NossoNumero := FormatFloat('000000000000',1); Carteira := '101'; LocalPagamento := 'NA REDE BANCARIA'; Aceite := atNao; ValorDocumento := 1.90; ValorDesconto := 0; DataDesconto := 0; ValorAbatimento := 0; DataAbatimento := 0; ValorDescontoAntDia := 0; if txtJuroMensal.Value>0 then PercentualMulta := txtJuroMensal.Value; CodigoMora := '1'; ValorMoraJuros := 0; DataMoraJuros := 0; if txtMoraDiaria.Value>0 then begin nValorMora:=(ValorDocumento*(txtMoraDiaria.Value/30))/100; if(nValorMora >= 0.01) then begin ValorMoraJuros := nValorMora; DataMoraJuros := Vencimento+1; end; end; if(txtDiasProtesto.AsInteger = 0) then DataProtesto := 0 else DataProtesto := StrToDate(FormatDateTime('dd/mm/yyyy', Vencimento+txtDiasProtesto.AsInteger) ); // mensagens padrão, se for o banco a emitir if(TituloACBr.CarteiraEnvio = tceBanco) then begin if DataProtesto <> 0 then begin if TipoDiasProtesto = diCorridos then AStringList.Add(ACBrStr('Protestar em ' + IntToStr(DaysBetween(Vencimento, DataProtesto))+ ' dias corridos após o vencimento')) else AStringList.Add(ACBrStr('Protestar no ' + IntToStr(DaysBetween(Vencimento, DataProtesto))+ ' dia útil após o vencimento')); end; if ValorMoraJuros <> 0 then begin if DataMoraJuros <> 0 then AStringList.Add(ACBrStr('Cobrar Juros de ' + ifthen(CodigoMora = '2', FloatToStr(ValorMoraJuros) + '%', FormatCurr('R$ #,##0.00',ValorMoraJuros)) + ' por dia de atraso para pagamento a partir de ' + FormatDateTime('dd/mm/yyyy',ifthen(Vencimento = DataMoraJuros, IncDay(DataMoraJuros,1),DataMoraJuros)))) else AStringList.Add(ACBrStr('Cobrar Juros de ' + ifthen(CodigoMora = '2', FloatToStr(ValorMoraJuros) + '%', FormatCurr('R$ #,##0.00',ValorMoraJuros)) + ' por dia de atraso')); end; if PercentualMulta <> 0 then AStringList.Add(ACBrStr('Cobrar Multa de ' + FormatCurr('R$ #,##0.00',ValorDocumento*( 1+ PercentualMulta/100)-ValorDocumento) + ' após o vencimento.')); Mensagem.Text := AStringList.Text + txtInstrucaoCob1.Text + #13+#10 + txtInstrucaoCob2.Text; end else Mensagem.Text := ''; OcorrenciaOriginal.Tipo:= toRemessaRegistrar; Instrucao1 := '00'; Instrucao2 := '00'; Parcela := 1; end; ContadorRemessa := 1; ACBrBoleto.GerarRemessa(ContadorRemessa); Tem alguns edit's no meio mas deve servir pra você adaptar aí. Até mais,
-
Erro Na Formação Do Nosso Numero Caixa Econômica Federal Sr Sicob
aocampioni replied to ganef's tópico in ACBrBoleto
Olá, Outro detalhe que esqueci de mencionar é que, 10 dígitos com o 82, que é fixo, portanto, eu configuraria o componente dessa maneira: ACBrBoleto.Banco.TipoCobranca := cobCaixaSicob; ACBrBoleto.Banco.Numero := 104; ACBrBoleto.Banco.Digito := 0; ACBrBoleto.Banco.Nome := 'Caixa Economica Federal'; if(StrToInt(txtTamanhoNNum.Text) > 0) then ACBrBoleto.Banco.TamanhoMaximoNossoNum := StrToInt(txtTamanhoNNum.Text) else ACBrBoleto.Banco.TamanhoMaximoNossoNum := 15; Então, defini em txtTamanhoNNum.Text que o tamanho do nosso número é 8 (82NNNNNNNN-D, tiro o 82 que é fixo e o Dv) e usando 8 posições de zeros formato o nosso número e dai forma o nosso número do jeito que você quer. Até mais, -
Erro Na Formação Do Nosso Numero Caixa Econômica Federal Sr Sicob
aocampioni replied to ganef's tópico in ACBrBoleto
Olá, Boa noite. Bom, eu utilizo aqui de boa. Não sei se o manual que uso é atualizado, mas com certeza a formatação que você apresentou é bastante encontrada na internet. Mas faz o seguinte, porque você não configura utilizando o manual do COBCAIXA (produto em questão) ? Vais notar que as carteiras no cobcaixa, quando rápida (começa com 9) ou simples (começa com 3) tem os 10 benditos dígitos, já na SR começa apenas com 8 e já tem 15 dígitos (16 com o DV). Segue anexo, espero que ajude. Até mais, COBCAIXA_Manual_de_Instalacao_v112013.pdf -
Olá, Também estamos ansiosos por novidades. Até mais,
-
Problemas Ao Gerar Pdf No Delphi Xe6 Com Fortes
aocampioni replied to Rudimar's tópico in ACBrBoleto
Pessoal, boa noite. Vocês atualizaram a versão do fortes para Xe6 ? Recomendável 3.72b. Até mais, -
Estimado, Boa tarde. O complemento hoje, se você usa cnab400, é formado pelo texto fixo 'I' + o último dígito da conta do beneficiário (sem o DV) mais o próprio DV da conta. Exemplo : CONTA CORRENTE:00385487-3 O complemento seria I73. Portanto, verifique as informações de conta e dígito pra ver se não estão incorretas ou se você colocou conta e dígito no campo CONTA e esqueceu de separar em CONTA e CONTADIGITO ou algo do tipo. No mais é isso, Até,
