Ir para conteúdo
  • Cadastre-se

dtybel

Membros
  • Total de ítens

    36
  • Registro em

  • Última visita

Tudo que dtybel postou

  1. Essa classe Tretorno_banco é uma que eu criei para representar minha tabela onde guardo os registros de retorno do banco. No seu caso vc pode ir alimentando sua tabela de retorno, não precisa usar essa classe que cada um terá diferenciado. Entendeu ? UCLretorno_banco.pas
  2. Olá pessoal, Passei por este problema e resolvi da seguinte forma: Corrigir o erro: Total do Produto / Servico difere do somatorio dos itens O vProd do item é a multiplicação do valor unitário pela quantidade: vProd = qCom * valorUnit Por exemplo, 3 itens a 100 reais cada e 1 item de 50 reais. Prod.qCom = 3 Prod.vProd = 300 Prod.qCom = 1 Prod.vProd = 50 Total.ICMSTot.vProd = 350
  3. Olá Juliana, Implementei o método TACBrCaixaEconomica.LerRetorno240 na classe TACBrCaixaEconomica. ACBrCaixaEconomica.rar Exemplo de uso: var oRetorno : Tretorno_banco; oParcela : Tparcelas; I : Integer; begin txtRelatorioRetorno.Clear; //Configurar banco ACBrBoleto1.Banco.Numero := DMEmpresa.ClientDataSet2NUM_BANCO.AsInteger; with ACBrBoleto1.Cedente do begin Nome := DMEmpresa.ClientDataSet1EMPRESA.AsString; Agencia := DMEmpresa.ClientDataSet2AGENC_BANCO.AsString; AgenciaDigito := DMEmpresa.ClientDataSet2DIGITO_AGENC_BANCO.AsString; CodigoCedente := DMEmpresa.ClientDataSet2COD_CEDENTE.AsString; Conta := DMEmpresa.ClientDataSet2NUM_CONTA_BANCO.AsString; ContaDigito := DMEmpresa.ClientDataSet2DIGITO_CONTA_BANCO.AsString; if ( Length(DMEmpresa.ClientDataSet2MODALIDADE.AsString) > 0) then Modalidade := DMEmpresa.ClientDataSet2MODALIDADE.AsString; if ( Length(DMEmpresa.ClientDataSet2CONVENIO.AsString) > 0) then Convenio := DMEmpresa.ClientDataSet2CONVENIO.AsString; end; ACBrBoleto1.NomeArqRetorno := txtNomeArquivoRetorno.Text; ACBrBoleto1.LerRetorno; for I := 0 to ACBrBoleto1.ListadeBoletos.Count-1 do begin try oParcela := Tparcelas.Create; oParcela.NOSSO_NUMERO := ACBrBoleto1.ListadeBoletos.Objects[I].NossoNumero; if ( Length(oParcela.NOSSO_NUMERO) > 0) then oParcela.Consultar; finally oParcela.Free; end; if (DMParcela.ClientDataSet1.IsEmpty) then txtRelatorioRetorno.Lines.Add(ACBrBoleto1.ListadeBoletos.Objects[I].NossoNumero + ' - Não encontrado') else begin try oRetorno := Tretorno_banco.Create; oRetorno.COD_PARCELA := DMParcela.ClientDataSet1COD_PARCELA.AsInteger; oRetorno.VALOR_DESPESA := ACBrBoleto1.ListadeBoletos.Objects[I].ValorDespesaCobranca; oRetorno.VALOR_DOC := ACBrBoleto1.ListadeBoletos.Objects[I].ValorDocumento; oRetorno.VALOR_CREDITO := ACBrBoleto1.ListadeBoletos.Objects[I].ValorRecebido; oRetorno.DAT_OCORRENCIA := FormatDateTime('dd/mm/yyyy', ACBrBoleto1.ListadeBoletos.Objects[I].DataOcorrencia ); oRetorno.TIPO_OCORRENCIA := 'Liquidação Sem Registro'; oRetorno.OCORRENCIA_ORIGINAL := '05'; oRetorno.NOSSO_NUMERO := StrToInt(ACBrBoleto1.ListadeBoletos.Objects[I].NossoNumero); oRetorno.SITUACAO := 'Lido'; oRetorno.Cadastrar; ORetorno.Consultar; finally oRetorno.Free; end; end; //else end;
  4. Juliana, como ficou ? Já implementado no projeto !? Os testes foram bem sucedidos.
  5. Olá Juliana, Implementei o método TACBrBancoob.LerRetorno400 na classe TACBrBancoob. ACBrBancoob.rar Necessário alteração na unit ACBrBoleto.pas em: procedure TACBrBoleto.LerRetorno( ) ; 400 : begin //Alterado de if Copy(SlRetorno.Strings[0],1,9) <> '02RETORNO01COBRANCA' then para o abaixo, sicoob coloca cobrança com Ç if Copy(SlRetorno.Strings[0],1,9) <> '02RETORNO' then Raise Exception.Create( ACBrStr( NomeArq + sLineBreak + 'Não é um arquivo de Retorno de cobrança com layout CNAB400')); LayoutRemessa := c400 ; end; ACBrBoleto.rar Exemplo do uso: procedure TFPRetorno.butLerRetornoClick(Sender: TObject); var oRetorno : Tretorno_banco; oParcela : Tparcelas; I : Integer; begin txtRelatorioRetorno.Clear; //Configurar banco ACBrBoleto1.Banco.Numero := DMEmpresa.ClientDataSet2NUM_BANCO.AsInteger; with ACBrBoleto1.Cedente do begin Nome := DMEmpresa.ClientDataSet1EMPRESA.AsString; Agencia := DMEmpresa.ClientDataSet2AGENC_BANCO.AsString; AgenciaDigito := DMEmpresa.ClientDataSet2DIGITO_AGENC_BANCO.AsString; CodigoCedente := DMEmpresa.ClientDataSet2COD_CEDENTE.AsString; Conta := DMEmpresa.ClientDataSet2NUM_CONTA_BANCO.AsString; ContaDigito := DMEmpresa.ClientDataSet2DIGITO_CONTA_BANCO.AsString; if ( Length(DMEmpresa.ClientDataSet2MODALIDADE.AsString) > 0) then Modalidade := DMEmpresa.ClientDataSet2MODALIDADE.AsString; if ( Length(DMEmpresa.ClientDataSet2CONVENIO.AsString) > 0) then Convenio := DMEmpresa.ClientDataSet2CONVENIO.AsString; end; ACBrBoleto1.NomeArqRetorno := txtNomeArquivoRetorno.Text; ACBrBoleto1.LerRetorno; for I := 0 to ACBrBoleto1.ListadeBoletos.Count-1 do begin try oParcela := Tparcelas.Create; oParcela.NOSSO_NUMERO := ACBrBoleto1.ListadeBoletos.Objects[I].NossoNumero; if ( Length(oParcela.NOSSO_NUMERO) > 0) then oParcela.Consultar; finally oParcela.Free; end; if (DMParcela.ClientDataSet1.IsEmpty) then txtRelatorioRetorno.Lines.Add(ACBrBoleto1.ListadeBoletos.Objects[I].NossoNumero + ' - Não encontrado') else begin try oRetorno := Tretorno_banco.Create; oRetorno.COD_PARCELA := DMParcela.ClientDataSet1COD_PARCELA.AsInteger; oRetorno.VALOR_DESPESA := ACBrBoleto1.ListadeBoletos.Objects[I].ValorDespesaCobranca; oRetorno.VALOR_DOC := ACBrBoleto1.ListadeBoletos.Objects[I].ValorDocumento; oRetorno.VALOR_CREDITO := ACBrBoleto1.ListadeBoletos.Objects[I].ValorRecebido; oRetorno.DAT_OCORRENCIA := FormatDateTime('dd/mm/yyyy', ACBrBoleto1.ListadeBoletos.Objects[I].DataOcorrencia ); oRetorno.TIPO_OCORRENCIA := 'Liquidação Sem Registro'; oRetorno.OCORRENCIA_ORIGINAL := '05'; oRetorno.NOSSO_NUMERO := StrToInt(ACBrBoleto1.ListadeBoletos.Objects[I].NossoNumero); oRetorno.SITUACAO := 'Lido'; oRetorno.Cadastrar; ORetorno.Consultar; finally oRetorno.Free; end; end; //else end; end;
  6. Olá Edson, Eu começei a classe inicialmente utilizando este manual que vc passou, mas quando enviei para homologação, vieram várias críticas(erros), contestei e informei seguir o manual. Foi passando "outro" manual sendo intitulado o "certo", segui este manual e consegui chegar a homologação bem sucedidas depois de muito suor. Sobre o nosso número funciona da seguinte forma: O número é sequencial e deve iniciar a partir do número que terminar lá na agência. Geralmente a pessoa já gera boleto sicoob pelo software deles e lá é gerado um sequencial (sem aquelas fulas de ano como diz o manual), então deste modo se o cliente for parar de emitir pelo programa para emitir por ele mesmo, deve ser solicitado homologação e posteriormente solicitado que seja desativado o modo do programa deles. Tem que informar que vc iniciará emitir independente do software deles, parece que eles desativam uma paradinha lá... Foi assim Edson a luta. Espero ter ajudado!
  7. Esqueci dos logos, segue em anexo. Logos.rar
  8. Olá Juliana, Recebi a resposta do banco e a Unit TACBrBancoob foi homologada com sucesso. Segue em anexo para implementar no ACBrBoleto. ACBrBancoob.rar Abaixo o boleto homologado: BOLETO_SICOOB_HOMOLOGACAO.pdf Abaixo o arquivo de remessa c400 homologado: REMESSA.TXT A Unit ACBrBoleto deve ser implementada a seguinte linha em negrito no método: SetNumero case AValue of 001 : fBancoClass := TACBrBancoBrasil.create(Self); 237 : fBancoClass := TACBrBancoBradesco.create(Self); 341 : fBancoClass := TACBrBancoItau.Create(self); 748 : fBancoClass := TACBrBancoSicredi.Create(self); 389 : fBancoClass := TACBrBancoMercantil.create(Self); 104 : fBancoClass := TACBrCaixaEconomica.create(Self); 041 : fBancoClass := TACBrBanrisul.create(Self); 033,353,008 : fBancoClass := TACBrBancoSantander.create(Self); 756 : fBancoClass := TACBrBancoob.create(Self); else fBancoClass := TACBrBancoClass.create(Self); end; Exemplo para envio de remessa: ACBrBoleto1.LayoutRemessa := c400; ACBrBoleto1.NomeArqRemessa := 'C:\ARQ.TXT'; ACBrBoleto1.GerarRemessa( 1 ); Uso do componente: ACBrBoletoFCFortes1 para impressão. Os dados de carteira deve ser passado o número 1 para sem carteira, não 01 que dá erro. A modalidade deve ser preenchida com 02. Nosso número é sequencial a partir do ultimo emitido pela agencia. É só isso, um abraço e obrigado pela ajuda.
  9. Passei por esse erro e descobri a solução em outros posts. uses RLConsts; //Definir a versão do fortesReport para o sistema RLConsts.SetVersion(3,70,'B');
  10. Olá Juliana, Segue em anexo o manual. Sobre a resposta da homologação, o funcionário que estava me atendendo saiu de férias, atrasando todo processo! Assim que tiver resposta posto aqui. Manual e Pré-homologação.rar
  11. Olá Moderador, Desenvolvi a classe TACBrBancoob para o ACBrBoleto. 1 - Boleto para o Sicoob (bancoob) 2 - Remessa c400 3 - Falta retorno c400. Foi enviado para Homologação, receberei resposta ainda esta semana. Estou com dúvida em como eu incluo a unit que criei no projeto ACBr. Aguardo Retorno. ACBrBancoob.rar BOLETO.pdf
×
×
  • 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.

The popup will be closed in 10 segundos...