Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION pa_porcentaje_participacion(
- IN idpropiedad CHARACTER VARYING,
- IN idproyecto CHARACTER VARYING,
- IN areaproyecto NUMERIC,
- OUT porcentaje text)
- RETURNS text AS
- $BODY$
- DECLARE
- rPropiedad record;
- areapropiedad NUMERIC;
- sumaarearelacionada NUMERIC;
- BEGIN
- FOR rPropiedad IN SELECT a.tm_idpropiedad, a.tm_area, a.tm_area_sintechar, a.tm_area_techada, a.ta_clasepropiedad FROM tm_propiedad AS a WHERE a.tm_idproyecto = idproyecto AND a.tm_idpropiedad = idpropiedad AND a.activo = 1 LOOP
- IF rPropiedad.ta_clasepropiedad = '01' THEN
- areapropiedad := rPropiedad.tm_area_techada + (rPropiedad.tm_area_sintechar*0.5);
- ELSE
- areapropiedad := rPropiedad.tm_area;
- END IF;
- SELECT SUM(a.tm_area) INTO sumaarearelacionada FROM tm_propiedad AS a WHERE tm_idpropiedadrelacionada = rPropiedad.tm_idpropiedad AND a.tm_idtipopropiedad <> 'DPT' AND a.activo = 1;
- END LOOP;
- IF sumaarearelacionada > 0 THEN
- areapropiedad = areapropiedad + sumaarearelacionada;
- END IF;
- porcentaje = to_char(areapropiedad/areaproyecto*100,'99999999.99999');
- porcentaje = TRIM(porcentaje);
- END;
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100;
- -- DROP FUNCTION pa_area_proyecto(character varying, smallint, smallint);
- CREATE OR REPLACE FUNCTION pa_area_proyecto(
- IN idproyecto CHARACTER VARYING,
- IN Pduplex NUMERIC,
- OUT resultado NUMERIC)
- RETURNS NUMERIC AS
- $BODY$
- DECLARE
- rPropiedad record;
- arearelacionada NUMERIC;
- areadepartamento NUMERIC;
- Ratio NUMERIC(4,2);
- BEGIN
- resultado := 0;
- Ratio = (Pduplex/100);
- FOR rPropiedad IN SELECT a.tm_idpropiedad, a.tm_area, a.tm_area_sintechar, a.tm_area_techada, a.ta_clasepropiedad FROM tm_propiedad AS a WHERE a.tm_idproyecto = idproyecto AND a.activo = 1 AND a.tm_idtipopropiedad = 'DPT' LOOP
- areadepartamento := 0;
- IF rPropiedad.ta_clasepropiedad = '01' THEN
- areadepartamento := rPropiedad.tm_area_techada + (rPropiedad.tm_area_sintechar*0.5);
- ELSE
- areadepartamento := rPropiedad.tm_area;
- END IF;
- SELECT SUM(b.tm_area) INTO arearelacionada FROM tm_propiedad AS b WHERE b.tm_idpropiedadrelacionada = rPropiedad.tm_idpropiedad AND b.activo = 1;
- IF arearelacionada > 0 THEN
- resultado := resultado + areadepartamento + arearelacionada ;
- ELSE
- resultado := resultado + areadepartamento ;
- END IF;
- END LOOP;
- SELECT resultado+SUM(a.tm_area) INTO resultado FROM tm_propiedad AS a WHERE (tm_idpropiedadrelacionada = '' OR tm_idpropiedadrelacionada IS NULL) AND a.tm_idtipopropiedad <> 'DPT' AND a.activo = 1;
- END;
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100;
- DROP FUNCTION pa_facturacion_calcular(CHARACTER VARYING, CHARACTER VARYING, CHARACTER VARYING, SMALLINT, SMALLINT);
- CREATE OR REPLACE FUNCTION pa_facturacion_calcular(
- IN concepto CHARACTER VARYING,
- IN propiedad CHARACTER VARYING,
- IN proyecto CHARACTER VARYING,
- IN AreaTotal NUMERIC,
- IN mes SMALLINT,
- IN anno SMALLINT,
- OUT facturarconcepto NUMERIC)
- RETURNS NUMERIC AS
- $BODY$
- DECLARE
- presupuesto NUMERIC;
- ratio NUMERIC;
- BEGIN
- SELECT valorfinal INTO presupuesto FROM pa_concepto_calcular(concepto, ''::CHARACTER VARYING, proyecto , 0, mes, anno);
- SELECT porcentaje INTO ratio FROM pa_porcentaje_participacion(propiedad, proyecto, AreaTotal);
- facturarconcepto := presupuesto/100*ratio;
- END;
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement