Vous êtes sur la page 1sur 2

-- Function: sp_co_facturacion_sri_refactura_tarifa_valores_2009(numeric, double

precision, numeric, integer, character varying)


-- DROP FUNCTION sp_co_facturacion_sri_refactura_tarifa_valores_2009(numeric, do
uble precision, numeric, integer, character varying);
CREATE OR REPLACE FUNCTION sp_co_facturacion_sri_refactura_tarifa_valores_2009(I
N v_vlitipocategoria numeric, IN v_vldvalorconsumo double precision, IN v_vliidc
uenta numeric, IN v_vliclasificador integer, IN v_vlsusuario character varying,
OUT v_respuesta integer)
RETURNS integer AS
$BODY$
DECLARE
v_vldAgua float;
v_tieneAlcantarillado numeric;
v_vldAlcantarillado float;
v_vliIdAlcantarillado numeric;
v_vlOtros float;
v_randomico INT;
v_v_IDENTITY numeric;
BEGIN
-PERFORM mscompat_start_procedure();
v_randomico:=10 + ((90-10+1)*RANDOM())::INT;

if v_vliClasificador=1 THEN
SELECT CUE_ALCANTARILLADO INTO v_tieneAlcantarillado FROM TBL
_CO_CUENTA WHERE CUE_ID=v_vliIdCuenta;
IF v_tieneAlcantarillado<>1 THEN
v_vldAlcantarillado:=0;
END IF;
else
v_tieneAlcantarillado:=v_vliIdCuenta;
END IF;

SELECT CES_ID INTO v_vliIdAlcantarillado FROM TBL_CO_COMPONENTE WHERE CE


S_NOMBRE ='ALCANTARILLADO';
INSERT INTO TMP_CO_CALCULO_TARIFAS (TRT_PADRE,TRT_CES_ID, TRT_CES_NOMBRE
, TRT_VALOR, TRT_3EDAD,TRT_USUARIO)
SELECT v_randomico,TBL_CO_PLIEGO_TARIF_DET_AGUA.CES_ID,CES_NOMBRE,
CASE TBL_CO_PLIEGO_TARIF_DET_AGUA.PTD_RANGO_F WHEN 9999 THEN
round(round( (0 * TBL_CO_PLIEGO_TARIF_DET_AGUA.PTD_FACTOR)+ TBL_CO_PLIEG
O_TARIF_DET_AGUA.PTD_VALOR_BASE,3) ,2)
ELSE round(round( (v_vldValorConsumo::numeric * TBL_CO_PLIEGO_TARIF_DET_
AGUA.PTD_FACTOR)+ TBL_CO_PLIEGO_TARIF_DET_AGUA.PTD_VALOR_BASE,3),2) END AS AGUA
,1,v_vlsUsuario
FROM TBL_CO_PLIEGO_TARIF_DET_AGUA INNER JOIN TBL_CO_PLIEGO_TARIFARIO
ON TBL_CO_PLIEGO_TARIFARIO.PLT_ID = TBL_CO_PLIEGO_TARIF_DET_AGUA.PLT_ID INNER JO
IN TBL_CO_COMPONENTE ON TBL_CO_PLIEGO_TARIF_DET_AGUA.CES_ID = TBL_CO_COMPONENTE.
CES_ID WHERE v_vldValorConsumo BETWEEN PTD_RANGO_I AND PTD_RANGO_F AND TBL_CO_
PLIEGO_TARIFARIO.PLT_ID=v_vliTipoCategoria RETURNING trt_id INTO v_v_IDENTITY;
SELECT TRT_VALOR INTO v_vldAgua FROM TMP_CO_CALCULO_TARIFAS WHERE TRT_ID
=v_v_IDENTITY;

INSERT INTO TMP_CO_CALCULO_TARIFAS (TRT_PADRE,TRT_CES_ID, TRT_CES_NOMBRE


, TRT_VALOR, TRT_3EDAD,TRT_USUARIO)
SELECT v_randomico,TBL_CO_PLIEGO_TARIF_DET_OTROS.CES_ID,CES_NOMBRE,
CASE TBL_CO_COMPONENTE.CES_ID WHEN v_vliIdAlcantarillado THEN
round(round(((TBL_CO_PLIEGO_TARIF_DET_OTROS.PTO_PORCENTAJE/100)* v_vldAg
ua::numeric)*COALESCE (v_tieneAlcantarillado,0),3),2)
ELSE round(round(TBL_CO_PLIEGO_TARIF_DET_OTROS.PTO_VALOR_BASE+(TBL_CO_P
LIEGO_TARIF_DET_OTROS.PTO_PORCENTAJE/100)* v_vldAgua::numeric,3),2)
END AS OTROS,
PTO_3EDAD,v_vlsUsuario
FROM
TBL_CO_PLIEGO_TARIF_DET_OTROS INNER JOIN TBL_CO_PLIEGO_TA
RIFARIO ON
TBL_CO_PLIEGO_TARIFARIO.PLT_ID = TBL_CO_PLIEGO_TARIF_DET_OTROS.PLT_ID IN
NER JOIN
TBL_CO_COMPONENTE ON TBL_CO_PLIEGO_TARIF_DET_OTROS.CES_ID = TBL_CO_COMPO
NENTE.CES_ID
WHERE TBL_CO_PLIEGO_TARIFARIO.PLT_ID=v_vliTipoCategoria and TBL_CO_COMP
ONENTE.CES_ID<>10;
--SELECT v_vlOtros=COALESCE(SUM(TRT_VALOR),0) FROM TMP_CO_CALCULO_TARIFA
S WHERE TRT_PADRE=v_randomico AND TRT_3EDAD=1;
SELECT ISNULL(SUM(TRT_VALOR),0) INTO v_vlOtros FROM TMP_CO_CALCULO_TARIFAS WHERE
TRT_PADRE=v_randomico AND TRT_3EDAD=1;
INSERT INTO TMP_CO_CALCULO_TARIFAS (TRT_PADRE,TRT_CES_ID, TRT_CES_NOMBRE
, TRT_VALOR, TRT_3EDAD,TRT_USUARIO)
SELECT v_randomico,TBL_CO_PLIEGO_TARIF_DET_OTROS.CES_ID,CES_NOMBRE, CASE
WHEN v_vldValorConsumo <= 20 THEN (PTO_PORCENTAJE/100)*v_vlOtros ELSE (PTO_PORC
ENTAJE/100)*(AGUAVALOR + OTROSVALOR) END AS TERCERA,0,v_vlsUsuario
FROM TBL_CO_PLIEGO_TARIFARIO INNER JOIN
TBL_CO_PLIEGO_TARIF_DET_OTROS ON TBL_CO_PLIEGO_TARIFARIO.PLT_ID = TBL_CO
_PLIEGO_TARIF_DET_OTROS.PLT_ID INNER JOIN
TBL_CO_COMPONENTE ON TBL_CO_PLIEGO_TARIF_DET_OTROS.CES_ID = TBL_CO_COMPO
NENTE.CES_ID INNER JOIN
VIS_CO_EMISION_3DAD_VALOR_2009 ON VIS_CO_EMISION_3DAD_VALOR_2009.TPT_ID=
TBL_CO_PLIEGO_TARIFARIO.TPT_ID
WHERE (TBL_CO_PLIEGO_TARIF_DET_OTROS.CES_ID=10) and (TBL_CO_PLIEGO_TARIF
ARIO.PLT_ID=v_vliTipoCategoria);
v_respuesta:=v_randomico;
PERFORM mscompat_end_procedure();
END;
$BODY$
LANGUAGE plpgsql VOLATILE STRICT
COST 100;
ALTER FUNCTION sp_co_facturacion_sri_refactura_tarifa_valores_2009(numeric, doub
le precision, numeric, integer, character varying)
OWNER TO sa;

Vous aimerez peut-être aussi