C Alves 1 Denunciar post Postado Março 29, 2010 Boa tarde pessoal. Tô precisando gerar vencimento de duplicatas mas estou com problemas e não é por falta de material na internet não. Se alguém puder me orientar agradeço muito. Tô usando delphi 7, interbase 7.5 e componente da peleta interbase. Na tabela tenho os campos condição de pagamento, número de parcelas, prazo1,prazo2,até prazo6. No formulário tenho um EditCondPagamento, Um EdtNumParcelas desativado e outros 6 Edits invisiveis:EdtPrazo1,....,6. Se condição de pagamento é <> de avista então o EditeNúmero de parcelas é ativado e entra-se com o número de parcela. De acordo com esse número de parcela os Edits de prazo ficam visíveis. Nesses Edits de prazo entra-se com o número de dias para o vencimento de cada duplicata. Ex: EdtPrazo1=30 dias, Edtprazo2=60 dias. Fiz um programinha de teste separado para tentar descobrir como gerar os vencimentos e estou usando seguinte código que algum colega postou na internet: procedure TForm1.ParcelarVenda(Valor: double; Condicao: string); var dias: TStringList; i: integer; espaco: shortint; datavencimento: TDate; parcela, valorparcela: double; begin if AnsiUpperCase( Condicao ) = 'A VISTA' then Condicao := '0'; espaco := pos(' ',condicao); if espaco > 0 then Condicao := Copy(Condicao,1,espaco-1); dias := TStringList.Create; dias.Delimiter := '/'; dias.DelimitedText := Condicao; try valorparcela := RoundTo(Valor / dias.Count,-2); except valorparcela := RoundTo(Valor,-2); end; for i := 0 to dias.Count-1 do begin // calcula a data de vencvimento e o valor da parcela datavencimento := date + StrToIntDef( dias,0 ); if i = (dias.Count-1) then parcela := valor - ((dias.Count-1) * valorparcela) else parcela := valorparcela; inclui o registro no dataset dataset.append; dataset.fieldbyname('vencimento').asdate := datavencimento; dataset.fieldbyname('valor').asdate := parcela; {demais campos} dataset.post; end; dias.Free; end; Tá dando erro na função RoundTo.Não está declarada. Se algum colega puder me dar uma orientação fico muito grato. obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
EltonWeb 0 Denunciar post Postado Março 30, 2010 Boa tarde pessoal. Tô precisando gerar vencimento de duplicatas mas estou com problemas e não é por falta de material na internet não. Se alguém puder me orientar agradeço muito. Tô usando delphi 7, interbase 7.5 e componente da peleta interbase. Na tabela tenho os campos condição de pagamento, número de parcelas, prazo1,prazo2,até prazo6. No formulário tenho um EditCondPagamento, Um EdtNumParcelas desativado e outros 6 Edits invisiveis:EdtPrazo1,....,6. Se condição de pagamento é <> de avista então o EditeNúmero de parcelas é ativado e entra-se com o número de parcela. De acordo com esse número de parcela os Edits de prazo ficam visíveis. Nesses Edits de prazo entra-se com o número de dias para o vencimento de cada duplicata. Ex: EdtPrazo1=30 dias, Edtprazo2=60 dias. Fiz um programinha de teste separado para tentar descobrir como gerar os vencimentos e estou usando seguinte código que algum colega postou na internet: procedure TForm1.ParcelarVenda(Valor: double; Condicao: string); var dias: TStringList; i: integer; espaco: shortint; datavencimento: TDate; parcela, valorparcela: double; begin if AnsiUpperCase( Condicao ) = 'A VISTA' then Condicao := '0'; espaco := pos(' ',condicao); if espaco > 0 then Condicao := Copy(Condicao,1,espaco-1); dias := TStringList.Create; dias.Delimiter := '/'; dias.DelimitedText := Condicao; try valorparcela := RoundTo(Valor / dias.Count,-2); except valorparcela := RoundTo(Valor,-2); end; for i := 0 to dias.Count-1 do begin // calcula a data de vencvimento e o valor da parcela datavencimento := date + StrToIntDef( dias,0 ); if i = (dias.Count-1) then parcela := valor - ((dias.Count-1) * valorparcela) else parcela := valorparcela; inclui o registro no dataset dataset.append; dataset.fieldbyname('vencimento').asdate := datavencimento; dataset.fieldbyname('valor').asdate := parcela; {demais campos} dataset.post; end; dias.Free; end; Tá dando erro na função RoundTo.Não está declarada. Se algum colega puder me dar uma orientação fico muito grato. obrigado. se não me engano, você tem que declarar a unit Math na uses Compartilhar este post Link para o post Compartilhar em outros sites
DárioFelix 0 Denunciar post Postado Março 31, 2010 Cara eu uso essa rotina para gerar parcelas fuciona certinho. Tenta ai! procedure TFrm_Aprovar.Bnt_AdionarClick(Sender: TObject); var Dias,Parcela:Integer; begin Parcela:=1; Dias:=0; //valor:=strtoInt(Edt_Vezes.Text)/strtofloat(Edt_total.Text); DmDados.Tbl_Duplicata.Open; while Parcela <= StrToInt(Edt_Vezes.Text) do Begin DmDados.Tbl_Duplicata.Insert; Dias:=Dias+30; DmDados.Tbl_DuplicataIDDULIPLICATA.Value:=Parcela; DmDados.Tbl_Duplicata.FieldByName('Valor').AsFloat:=strtofloat(Edt_total.Text)/strtoInt(Edt_Vezes.Text); DmDados.Tbl_DuplicataDATA_FATURAMENTO.Value:=Date + Dias; DmDados.Tbl_Duplicata.Post; inc(Parcela); end; Compartilhar este post Link para o post Compartilhar em outros sites
C Alves 1 Denunciar post Postado Abril 1, 2010 Elton e Dario, muito obrigado pela atenção e ajuda de vocês. Ontem e hoje tá muito corrido e ainda não consegui resolver o problema. Nesse feriado prolongado vou colocar em pratica a orientação de vocês e em seguida posto o resultado. Obrigado mais uma vez Compartilhar este post Link para o post Compartilhar em outros sites
C Alves 1 Denunciar post Postado Abril 5, 2010 Problema resolvido. Obrigado pela ajuda dos amigos desse forum. Breve o Senhor Jesus voltará. Prepara-te para encontrares com o teu Deus. Compartilhar este post Link para o post Compartilhar em outros sites