Cálculo de lançamentos para contas à receber
olá galera... a dúvida é a seguinte..
Tenho um sistema completo funcionando mas, estou enfrentando problemas referentes a cáulculo de números de parcelas para lançamentos. Na verdade tenho uma tabela pra cadastro de faturamento, onde cadastro até 3x na contas a receber, até ai ok, mas se meu cliente quiser um sistema que possa fazer vendas em até 10x, tô ralado. meinha tabela de faturamentos tem campos pra cadastro do n° de parcelas e a quantidades de dias tipo... 2 parcelas, 30-60 dias ai na hora de confirmar pedido, ele divide em 2x com o intervalo 30-60 dias tudo bem mas em 4x não somente em 3. alguém sabe como posso fazer isso, ou algum exemplo ou artigo que explique ou de um idéia de como resolver isso. Uso paradox e delphi7.
Obrigado.
Tenho um sistema completo funcionando mas, estou enfrentando problemas referentes a cáulculo de números de parcelas para lançamentos. Na verdade tenho uma tabela pra cadastro de faturamento, onde cadastro até 3x na contas a receber, até ai ok, mas se meu cliente quiser um sistema que possa fazer vendas em até 10x, tô ralado. meinha tabela de faturamentos tem campos pra cadastro do n° de parcelas e a quantidades de dias tipo... 2 parcelas, 30-60 dias ai na hora de confirmar pedido, ele divide em 2x com o intervalo 30-60 dias tudo bem mas em 4x não somente em 3. alguém sabe como posso fazer isso, ou algum exemplo ou artigo que explique ou de um idéia de como resolver isso. Uso paradox e delphi7.
Obrigado.
Gtts
Curtidas 0
Respostas
Gigatel
18/08/2005
Estuda este código....e o que eu uso..
procedure T_FormContas.Geraparcelas(Sender: TObject);
var
v_count,v_parc: integer;
v_date:Tdatetime;
v_valor:REAL;
begin
v_date:=strtodate(eddata.text)+ strtofloat(ComboBox2.text);
v_count:=strtoint(edparcela.text);
v_parc:=1;
BD_CONT_REC.Open;
BD_CONTAS_TPA.Post;
while v_count>0 do
begin
BD_CONT_REC.insert;
BD_CONT_REC.FieldByName(´GS_COR_N_PARCELAS´).asinteger:=(v_parc);
V_VALOR:=((strtofloat(edvalor.text)-strtofloat(edentrada.text)))/strtoint((edparcela.text));
BD_CONT_REC.fieldbyname(´GS_COR_VALOR_PARCELA´).value:=floattostrf(v_valor,ffFixed,10,2);
BD_CONT_REC.FieldByName(´GS_COR_DATA_VENC´).asdatetime:=v_date;
BD_CONT_RECGS_COR_END.Value := BD_CLIENTESGS_CLI_END.Value;
BD_CONT_RECGS_COR_NOME.Value := BD_CLIENTESGS_CLI_NOME.Value;
BD_CONT_RECGS_COR_COMP.Value := BD_CLIENTESGS_CLI_COMP.Value;
BD_CONT_RECGS_COR_BAIRRO.Value := BD_CLIENTESGS_CLI_BAIRRO.Value;
BD_CONT_RECGS_COR_CIDADE.Value := BD_CLIENTESGS_CLI_CIDADE.Value;
BD_CONT_RECGS_COR_CEP.Value := BD_CLIENTESGS_CLI_CEP.Value;
BD_CONT_RECGS_COR_CODCLI.Value := BD_CLIENTESGS_CLI_CODIGO.value;
BD_CONT_RECGS_COR_TEL_01.Value := BD_CLIENTESGS_CLI_TEL_01.Value;
BD_CONT_RECGS_COR_TEL_02.Value := BD_CLIENTESGS_CLI_TEL_02.Value;
BD_CONT_RECGS_COR_TEL_03.Value := BD_CLIENTESGS_CLI_TEL_03.Value;
BD_CONT_RECGS_COR_TEL_04.Value := BD_CLIENTESGS_CLI_TEL_04.Value;
BD_CONT_RECGS_COR_UF.Value := BD_CLIENTESGS_CLI_UF.Value;
ZRLabel50.Caption := edvalor.Text;
BD_CONT_RECGS_COR_CODPROD.Value := Edit7.Text;
BD_CONT_RECGS_COR_VALOR_TOTAL.Value := edvalor.Text;
BD_CONT_RECGS_COR_VENDEDOR.Value := DBLookupComboBox1.Text;
BD_CONT_RECGS_COR_VALOR_ENT.Value := edentrada.Text;
BD_CONT_RECGS_COR_CPF_CNPJ.Value := BD_CLIENTESGS_CLI_CPF_CNPJ.Value;
BD_CONT_RECGS_COR_DESCRICAO.Value := Edit1.Text;
BD_CONT_RECGS_COR_DATA_CAD.Value := FormatDateTime(´dd/mm/yyyy´,Date);
BD_CONT_RECGS_COR_CODACES.Value := BD_CLIENTESGS_CLI_CODIGO.value;
BD_CONT_RECGS_COR_CODACESPAR.Value := BD_CONTAS_TPAGS_TPA_CODIGO.Value;
BD_CONT_REC.post;
v_count:=v_count-1;
v_parc:=v_parc+1;
v_date:=v_date+30;
BD_CONT_REC.next;
end;
Qualquer dúvida...
procedure T_FormContas.Geraparcelas(Sender: TObject);
var
v_count,v_parc: integer;
v_date:Tdatetime;
v_valor:REAL;
begin
v_date:=strtodate(eddata.text)+ strtofloat(ComboBox2.text);
v_count:=strtoint(edparcela.text);
v_parc:=1;
BD_CONT_REC.Open;
BD_CONTAS_TPA.Post;
while v_count>0 do
begin
BD_CONT_REC.insert;
BD_CONT_REC.FieldByName(´GS_COR_N_PARCELAS´).asinteger:=(v_parc);
V_VALOR:=((strtofloat(edvalor.text)-strtofloat(edentrada.text)))/strtoint((edparcela.text));
BD_CONT_REC.fieldbyname(´GS_COR_VALOR_PARCELA´).value:=floattostrf(v_valor,ffFixed,10,2);
BD_CONT_REC.FieldByName(´GS_COR_DATA_VENC´).asdatetime:=v_date;
BD_CONT_RECGS_COR_END.Value := BD_CLIENTESGS_CLI_END.Value;
BD_CONT_RECGS_COR_NOME.Value := BD_CLIENTESGS_CLI_NOME.Value;
BD_CONT_RECGS_COR_COMP.Value := BD_CLIENTESGS_CLI_COMP.Value;
BD_CONT_RECGS_COR_BAIRRO.Value := BD_CLIENTESGS_CLI_BAIRRO.Value;
BD_CONT_RECGS_COR_CIDADE.Value := BD_CLIENTESGS_CLI_CIDADE.Value;
BD_CONT_RECGS_COR_CEP.Value := BD_CLIENTESGS_CLI_CEP.Value;
BD_CONT_RECGS_COR_CODCLI.Value := BD_CLIENTESGS_CLI_CODIGO.value;
BD_CONT_RECGS_COR_TEL_01.Value := BD_CLIENTESGS_CLI_TEL_01.Value;
BD_CONT_RECGS_COR_TEL_02.Value := BD_CLIENTESGS_CLI_TEL_02.Value;
BD_CONT_RECGS_COR_TEL_03.Value := BD_CLIENTESGS_CLI_TEL_03.Value;
BD_CONT_RECGS_COR_TEL_04.Value := BD_CLIENTESGS_CLI_TEL_04.Value;
BD_CONT_RECGS_COR_UF.Value := BD_CLIENTESGS_CLI_UF.Value;
ZRLabel50.Caption := edvalor.Text;
BD_CONT_RECGS_COR_CODPROD.Value := Edit7.Text;
BD_CONT_RECGS_COR_VALOR_TOTAL.Value := edvalor.Text;
BD_CONT_RECGS_COR_VENDEDOR.Value := DBLookupComboBox1.Text;
BD_CONT_RECGS_COR_VALOR_ENT.Value := edentrada.Text;
BD_CONT_RECGS_COR_CPF_CNPJ.Value := BD_CLIENTESGS_CLI_CPF_CNPJ.Value;
BD_CONT_RECGS_COR_DESCRICAO.Value := Edit1.Text;
BD_CONT_RECGS_COR_DATA_CAD.Value := FormatDateTime(´dd/mm/yyyy´,Date);
BD_CONT_RECGS_COR_CODACES.Value := BD_CLIENTESGS_CLI_CODIGO.value;
BD_CONT_RECGS_COR_CODACESPAR.Value := BD_CONTAS_TPAGS_TPA_CODIGO.Value;
BD_CONT_REC.post;
v_count:=v_count-1;
v_parc:=v_parc+1;
v_date:=v_date+30;
BD_CONT_REC.next;
end;
Qualquer dúvida...
GOSTEI 0
Asensio
18/08/2005
Em vez de criar uma forma de pagamento limitando as colunas para os calculos de dias (desculpa o comentario, mas é errado, pois devemos evitar sempre que possível deixar o sistema maleavel). Cria uma tabela onde se cadastra as forma de pagamento e o dias inicial, final e fator de divisão para essa forma.
Ex. Ato,30,60,90
DIA_INICIAL=0
DIA_FINAL=90
FATOR_DE_DIVISAO=30
Nessa caso vc sabe que o primeiro titulo é para agora e o demais para até 90 dias (90/30=3). Sabesse que vc tem mais 3 parcelas ou resgistros para lançar no sistema.
Outro Ex.
15,30,45,60
DIA_INICIAL=15
DIA_FINAL=60
FATOR_DE_DIVISAO=15
4 parcelas com diferencia de dia de 15 dias (FATOR_DE_DIVISAO) (60/15=4).
Fui
Ex. Ato,30,60,90
DIA_INICIAL=0
DIA_FINAL=90
FATOR_DE_DIVISAO=30
Nessa caso vc sabe que o primeiro titulo é para agora e o demais para até 90 dias (90/30=3). Sabesse que vc tem mais 3 parcelas ou resgistros para lançar no sistema.
Outro Ex.
15,30,45,60
DIA_INICIAL=15
DIA_FINAL=60
FATOR_DE_DIVISAO=15
4 parcelas com diferencia de dia de 15 dias (FATOR_DE_DIVISAO) (60/15=4).
Fui
GOSTEI 0