[firebase-br] Arredondamento de Parcelas
Edvaldo (bol)
evgomes em bol.com.br
Dom Set 24 22:29:44 -03 2006
Antes de você lançar a última parcela, some as parcelas anteriores e coloque
a diferença na última.
855,00 - 12,33 = 842,67
1a. Parcela = 421,34
2a. Parclea = 421,33
Com este tipo de valor você nunca irá conseguir fazer fechar o total. Tem
que colocar a diferença na última parcela.
edvaldo
----- Original Message -----
From: "ibestvip" <zottissistemas em ibestvip.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Sunday, September 24, 2006 9:29 PM
Subject: [firebase-br] Arredondamento de Parcelas
galera, to com um dilema.
tenho uma venda de R$855,00 e que é pago R$12,33
Restando R$842,67 que serão lançadas duas parcelas.
Dividindo R$ 842,67 por 2 fica = R$421,335 que no
Delphi arredonda para R$421,34 Multiplicando R$421,34 * 2 = 842,68
ou seja R$ 0,01 de diferença a mais. tentei de todas as formas fazer no
delphi e não consegui, pois ele não enxerga a diferença.
tentei fazer uma SP e também não consegui.
alguém poderia me dar uma luz?
Segue em anexo a SP:
SET TERM ^ ;
CREATE PROCEDURE PRC_GERAR_PARCELAS (
P_COD_VENDA INTEGER)
AS
BEGIN
EXIT;
END^
SET TERM ; ^
SET TERM ^ ;
ALTER PROCEDURE PRC_GERAR_PARCELAS (
P_COD_VENDA INTEGER)
AS
DECLARE VARIABLE V_COD_COND_PGTO INTEGER;
DECLARE VARIABLE V_COD_CLIENTE INTEGER;
DECLARE VARIABLE V_VENCIMENTO DATE;
DECLARE VARIABLE V_DTA_ENTREGA DATE;
DECLARE VARIABLE V_QTDE_PARC INTEGER;
DECLARE VARIABLE V_INT_DIAS INTEGER;
DECLARE VARIABLE V_VLR_PARCELA_N NUMERIC(18,2);
DECLARE VARIABLE I INTEGER;
DECLARE VARIABLE V_VLR_PARCELA FLOAT;
DECLARE VARIABLE V_TOTAL_VENDA NUMERIC(18,2);
DECLARE VARIABLE V_DIFERENCA INTEGER;
DECLARE VARIABLE V_TOTAL_VENDA_R NUMERIC(18,2);
DECLARE VARIABLE V_PRIM_VENC INTEGER;
begin
delete from cta_receber
where COD_VENDA = :p_cod_venda;
select COD_CLIENTE, cod_pgto, total_venda, dta_entrega
from venda
where COD_VENDA = :p_cod_venda
into :v_cod_cliente, :v_cod_cond_pgto, :v_total_venda, :v_dta_entrega;
select intervalo_dias,primeiro_venc, qtd_parc
from cond_pgto
where cod_pgto = :v_cod_cond_pgto
into :v_int_dias, :v_prim_venc, :v_qtde_parc;
v_vlr_parcela = :v_total_venda / :v_qtde_parc;
v_vlr_parcela_n = cast(:v_vlr_parcela as numeric(18,2));
v_vlr_parcela = cast(:v_vlr_parcela as float);
v_total_venda_r = :v_vlr_parcela * :v_qtde_parc;
v_diferenca = :v_total_venda - :v_total_venda_r;
if (:v_total_venda_r + :v_diferenca > :v_total_venda) then
begin
v_diferenca = :V_DIFERENCA * (-1);
end
if (:v_qtde_parc = 0) then
begin
v_vencimento = current_date;
insert into cta_receber
(cod_cliente, cod_venda, com_entrada, desconto, dta_lanc,
dta_venc, pago, taxa_juro, total_pago, total_venda,valor_parcela)
values
(:v_cod_cliente, :p_cod_venda, 'N', 0, current_date,
:v_vencimento, 'N', 0, 0, :v_total_venda,:v_vlr_parcela_n);
end
else if (:v_qtde_parc > 0) then
begin
I = 1;
while (:I <= :v_qtde_parc) do
begin
if (:I = 1) then
begin
v_vencimento = :v_dta_entrega + (:v_int_dias * :I);
insert into cta_receber
(cod_cliente, cod_venda, com_entrada, desconto,
dta_lanc, dta_venc, pago, taxa_juro, total_pago, total_venda,valor_parcela)
values
(:v_cod_cliente, :p_cod_venda, 'N', 0, current_date,
:v_vencimento, 'N', 0, 0, :v_total_venda,:v_vlr_parcela_n + :v_diferenca);
end
/*depois lança normalmente*/
else
begin
v_vencimento = :v_dta_entrega + (:v_int_dias * :I);
insert into cta_receber
(cod_cliente, cod_venda, com_entrada, desconto,
dta_lanc, dta_venc, pago, taxa_juro, total_pago, total_venda,valor_parcela)
values
(:v_cod_cliente, :p_cod_venda, 'N', 0, current_date,
:v_vencimento, 'N', 0, 0, :v_total_venda,:v_vlr_parcela_n);
end
I = I + 1;
end
end
end
^
SET TERM ; ^
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
--
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.1.405 / Virus Database: 268.12.8/455 - Release Date: 22/09/2006
Mais detalhes sobre a lista de discussão lista