From: | Ing(dot) Eris J(dot) Gómez <eris_jose(at)hotmail(dot)com> |
---|---|
To: | Ing(dot) Eris J(dot) Gómez <eris_jose(at)hotmail(dot)com>, "juan" <juanramirez(at)cajazacate(dot)com(dot)sv> |
Cc: | <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Funcion no funciona |
Date: | 2009-08-14 18:21:57 |
Message-ID: | COL116-DS58A69E1F312B592234DB28E020@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Gracias a todos por su ayuda.
Inicialice las variables debito y credito, y cambie los tipos de datos. La
funcion quedo como se puede apreciar aqui.
CREATE OR REPLACE FUNCTION "public"."cxp_balfactura" (x_codcia varchar,
x_suplidor varchar, x_factura varchar, x_moneda integer, x_monto numeric)
RETURNS numeric AS
$body$
DECLARE
cursor1 record;
debitos numeric(14,2);
creditos numeric(14,2);
balance numeric (14,2);
BEGIN
balance := x_monto;
creditos := 0;
debitos :=0;
for cursor1 in select
cxp_mov_item.tipo_transaccion,sum(item_monto+item_descuento) AS monto
from cxp_mov_item,cxp_mov_head
where cxp_mov_item.cia_codigo = cxp_mov_head.cia_codigo
and cxp_mov_item.mov_codigo = cxp_mov_head.mov_codigo
and cxp_mov_head.cia_codigo = x_codcia
and cxp_mov_head.supl_codigo = x_suplidor
and cxp_mov_item.fact_codigo = x_factura
and cxp_mov_head.id_moneda = x_moneda
and cxp_mov_head.mov_estado <> '*'
GROUP by cxp_mov_item.tipo_transaccion
loop
if cursor1.tipo_transaccion = 'ND' or cursor1.tipo_transaccion =
'CK' then
debitos := debitos + cursor1.monto;
end if;
if cursor1.tipo_transaccion = 'NC' then
creditos := creditos + cursor1.monto;
end if;
end loop;
/*Actualizando el balance de las facturas*/
if balance is null then
balance:=0;
end if;
if creditos is null then
creditos := 0;
end if;
if debitos is null then
debitos := 0;
end if;
balance := balance + creditos - debitos;
update cxp_facturas set fact_balance = balance
where cia_codigo = x_codcia
and fact_tipo = substr(x_factura,1,2)
and fact_codigo = substr(x_factura,3)
and supl_codigo = x_suplidor;
return balance;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2009-08-14 18:54:08 | Re: Re: [pgsql-es-ayuda] Correccion de Mensaje en Español |
Previous Message | Emanuel Calvo Franco | 2009-08-14 18:10:53 | Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Correccion de Mensaje en Español |