You are on page 1of 4

CREATE OR REPLACE FUNCTION iudmovimientocaja( inid INTEGER, intipo VARCHAR, inserie VARCHAR, innumero VARCHAR, intipopago VARCHAR, inconcepto

VARCHAR, inmoneda VARCHAR, intipocambio NUMERIC, inmonto NUMERIC, inmontototalsoles NUMERIC, innrovoucher VARCHAR, inestado VARCHAR, intipomovimientoid INTEGER, inmovimientoprodservid INTEGER, indocumentoid INTEGER, incuentaid INTEGER, incuentabancariaid INTEGER, inpagoquincenalid INTEGER, infecha VARCHAR, intipopersona VARCHAR, inidpersona INTEGER, inpersona VARCHAR, inempresaid INTEGER, inaccion VARCHAR) RETURNS BOOLEAN AS $BODY$ BEGIN CASE inaccion WHEN 'I' THEN INSERT INTO tb_movimientocaja( tb_movimientocaja_tipo, tb_movimientocaja_serie, tb_movimientocaja_numero, tb_movimientocaja_tipopago, tb_movimientocaja_concepto, tb_movimientocaja_moneda, tb_movimientocaja_tipocambio, tb_movimientocaja_monto, tb_movimientocaja_montototalsoles, tb_movimientocaja_nrovoucher, tb_movimientocaja_estado, tb_tipomovimiento_id, tb_movimientoprodserv_id, tb_documento_id, tb_cuenta_id, tb_cuentabancaria_id, tb_pagoquincenal_id, tb_movimientocaja_fecha, tb_movimientocaja_tipopersona, tb_movimientocaja_idpersona, tb_movimientocaja_persona, tb_empresa_id) VALUES (intipo , inserie , innumero , intipopago , inconcepto ,

inmoneda , intipocambio , inmonto , inmontototalsoles , innrovoucher , inestado , intipomovimientoid , inmovimientoprodservid , indocumentoid , incuentaid , incuentabancariaid , inpagoquincenalid , CAST(infecha AS DATE), intipopersona , inidpersona , inpersona , inempresaid ); IF FOUND THEN RETURN TRUE ; ELSE RETURN FALSE ; END IF ; END CASE ; END $BODY$ LANGUAGE plpgsql VOLATILE COST 100; select iudmovimientocaja(NULL,'I','001','0000001','E','tu mai','S',2.82,120,300, '1234','H',5,22,2,NULL,NULL,NULL,'2015-01-02','EMPRESA',2,'KIME',2,'I')

-------------------------------------------------------------------------CREATE OR REPLACE FUNCTION iudcuenta( infecha VARCHAR, intipo VARCHAR, incondicion VARCHAR , inmonto NUMERIC, inidref INTEGER, inmovimientoprodservid INTEGER, incuotas INTEGER, inaccion VARCHAR ) RETURNS BOOLEAN AS $BODY$ DECLARE contador INTEGER ; fecha_pagos DATE ; monto_pagar NUMERIC; BEGIN contador = 1; fecha_pagos = (CAST(infecha AS DATE) +'1 month'::interval) ; monto_pagar = (inmonto/incuotas) ; CASE inaccion WHEN 'I' THEN

--LOOP IF incondicion='D' THEN LOOP IF contador <= incuotas THEN INSERT INTO tb_cuenta( tb_cuenta_fecha, tb_cuenta_tipo, tb_cuenta_condicion, tb_cuenta_monto, tb_cuenta_idref, tb_movimientoprodserv_id ) VALUES ( fecha_pagos, intipo, incondicion, monto_pagar, inidref, inmovimientoprodservid ) ; ELSE EXIT; END IF ; contador = contador + 1 ; fecha_pagos = fecha_pagos +'1 month': :interval; END LOOP ; ELSE INSERT INTO tb_cuenta( tb_cuenta_fecha, tb_cuenta_tipo, tb_cuenta_condicion, tb_cuenta_monto, tb_cuenta_idref, tb_movimientoprodserv_id ) VALUES ( CAST(infecha AS DATE), intipo, incondicion, inmonto, inidref, inmovimientoprodservid ); END IF ; --END LOOP ; IF FOUND THEN RETURN TRUE ;

ELSE RETURN FALSE ; END IF ; END CASE ; END $BODY$ LANGUAGE plpgsql VOLATILE COST 100; select iudcuenta('2014-12-12','C','P',400,NULL,25,3,'I'); ----------------------------------------------------------------------------------------

You might also like