Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DROP FUNCTION pa_facturacion_generar(CHARACTER VARYING, SMALLINT, SMALLINT, TIMESTAMP WITHOUT TIME zone, TIMESTAMP WITHOUT TIME zone, CHARACTER VARYING, NUMERIC, INTEGER);
- CREATE OR REPLACE FUNCTION pa_facturacion_generar(
- IN idproyecto CHARACTER VARYING,
- IN tipoFacturacion SMALLINT,
- IN idpropiedad SMALLINT,
- IN anho SMALLINT,
- IN mes SMALLINT,
- IN fechavencimiento TIMESTAMP WITHOUT TIME zone,
- IN fechatope TIMESTAMP WITHOUT TIME zone,
- IN idmoneda CHARACTER VARYING,
- IN tipocambio NUMERIC,
- IN idusuario INTEGER,
- OUT rpta CHARACTER VARYING,
- OUT titulomsje CHARACTER VARYING,
- OUT contenidomsje CHARACTER VARYING)
- RETURNS record AS
- $BODY$
- DECLARE rPropiedad record;
- rConcepto record;
- rFacturacion record;
- idfactura CHARACTER VARYING(15);
- FACTURAS INTEGER;
- codigomoneda CHARACTER VARYING;
- codigofactura CHARACTER VARYING(15);
- codigofactpropietario CHARACTER VARYING(15);
- codigoconceptofact CHARACTER VARYING(15);
- importefacturado NUMERIC(10, 2);
- countfactpropietario BIGINT;
- areapropiedad NUMERIC(6, 2);
- valorconcepto NUMERIC(6,2);
- areadepartamento NUMERIC(6, 2);
- areaestacionamiento NUMERIC(6, 2);
- ratioProp NUMERIC(6, 4);
- areadeposito NUMERIC(6, 2);
- formula TEXT;
- consumomes NUMERIC(9, 2);
- tipovalorizacion CHARACTER VARYING;
- cantidadPropiedades SMALLINT;
- AreaProyecto NUMERIC (10,2);
- variableDuplex SMALLINT;
- PorcenDscto NUMERIC;
- BEGIN
- variableDuplex := 0;
- PorcenDscto :=0;
- CREATE TEMP SEQUENCE temp_seq;
- IF idmoneda = '0' THEN
- SELECT tm_idmoneda INTO codigomoneda FROM tm_moneda WHERE tm_default = 1 AND activo = 1;
- ELSE
- codigomoneda := idmoneda;
- END IF;
- SELECT ta_tipovaloracion INTO tipovalorizacion FROM tm_proyecto WHERE tm_idproyecto = idproyecto AND activo = 1;
- --- Traer campo descuento para Dúplex
- SELECT tm_tieneporcjduplex INTO variableDuplex FROM tm_proyecto WHERE tm_idproyecto = idproyecto AND activo = 1;
- --- Si se descuenta por dúplex, traer el % de descuento
- IF variableDuplex = 1 THEN
- SELECT tm_porcjduplex INTO PorcenDscto FROM tm_proyecto WHERE tm_idproyecto = idproyecto AND activo = 1;
- END IF;
- IF tipovalorizacion = '00' THEN
- SELECT COUNT(*) INTO cantidadPropiedades FROM tm_propiedad WHERE tm_idproyecto = idproyecto AND tm_idtipopropiedad = 'DPT' AND activo = 1;
- ELSE
- SELECT resultado INTO AreaProyecto FROM pa_area_proyecto(idproyecto,PorcenDscto);
- END IF;
- SELECT COUNT(*) INTO countfactpropietario FROM td_facturacionpropietario;
- IF tipoFacturacion = 1 THEN
- SELECT COUNT(*) INTO FACTURAS FROM tm_facturacion WHERE tm_per_ano = anho AND tm_per_mes = mes AND activo = 1;
- IF FACTURAS > 0 THEN
- UPDATE td_facturacionpropietario SET activo = 0 WHERE tm_idfacturacion IN (SELECT tm_idfacturacion FROM tm_facturacion WHERE tm_per_ano = anho AND tm_per_mes = mes AND activo = 1);
- UPDATE tm_facturacion SET activo = 0 WHERE tm_per_ano = anho AND tm_per_mes = mes AND activo = 1;
- UPDATE td_conceptosfacturacion SET activo = 0 WHERE tm_per_ano = anho AND tm_per_mes = mes AND activo = 1;
- END IF;
- FOR rPropiedad IN SELECT a.tm_idpropiedad, a.tm_idpropiedadrelacionada, a.tm_area FROM tm_propiedad AS a WHERE a.tm_idproyecto = idproyecto AND a.activo = 1 AND a.tm_idtipopropiedad = 'DPT' LOOP
- areadepartamento := rPropiedad.tm_area;
- SELECT 'FN' || LPAD((COUNT(*) + 1)::TEXT, 13, '0') INTO codigofactura FROM tm_facturacion;
- --- Se Calcula el porcentaje de participación y se graba en la cabecera de la factura
- IF tipovalorizacion = '00' THEN
- ratioProp := round(1/cantidadPropiedades,4);
- ELSE
- SELECT porcentaje INTO ratioProp FROM pa_porcentaje_participacion(rPropiedad.tm_idpropiedad, idproyecto, AreaProyecto);
- END IF;
- INSERT INTO tm_facturacion (tm_idfacturacion, tm_idproyecto, tm_per_ano, tm_per_mes, tm_ratio, tm_idmoneda, tm_tipo_cambio, tm_fechaemision, tm_fechavencimiento, tm_fechatope, tm_importefacturado, activo, idusuarioreg, fechareg, idusuarioact, fechaact)
- VALUES (codigofactura, idproyecto, anho, mes, ratioProp, codigomoneda, tipocambio, CURRENT_TIMESTAMP, fechavencimiento, fechatope, 0, 1, idusuario, CURRENT_TIMESTAMP, idusuario, CURRENT_TIMESTAMP);
- INSERT INTO td_facturacionpropietario (td_idfacturacionpropietario, tm_idpropietario, tm_idfacturacion, activo, idusuarioreg, fechareg, idusuarioact, fechaact)
- SELECT 'FP' || LPAD(( countfactpropietario + NEXTVAL('temp_seq'))::TEXT, 13, '0'), oldtable.tm_idtipopropietario, codigofactura, 1, idusuario, CURRENT_TIMESTAMP, idusuario, CURRENT_TIMESTAMP
- FROM (SELECT * FROM vstpropietario AS propt
- INNER JOIN td_propiedadpropietario AS b ON propt.tm_idtipopropietario = b.tm_idpropietario AND b.tm_idpropiedad = rPropiedad.tm_idpropiedad
- ORDER BY propt.tm_idtipopropietario) AS oldtable;
- SELECT areadepartamento + SUM(a.tm_area) INTO areapropiedad FROM tm_propiedad AS a WHERE tm_idpropiedadrelacionada = rPropiedad.tm_idpropiedad AND a.tm_idtipopropiedad <> 'DPT' AND a.activo = 1;
- FOR rConcepto IN SELECT a.tm_idconcepto, a.tm_definicion_formula, a.tm_esformula, a.tm_escalonable, a.tm_ascensor FROM tm_concepto AS a WHERE a.tm_idproyecto = idproyecto AND a.ta_tipoconcepto = '02' AND a.activo = 1 LOOP
- SELECT 'CF' || LPAD((COUNT(*) + 1)::TEXT, 13, '0') INTO codigoconceptofact FROM td_conceptosfacturacion;
- IF rConcepto.tm_escalonable = 1 THEN
- SELECT td_consumoperiodo INTO consumomes FROM td_consumoescalonable WHERE tm_idconcepto = rConcepto.tm_idconcepto AND tm_idproyecto = idproyecto AND tm_idpropiedad = rPropiedad.tm_idpropiedad AND tm_per_mes = mes AND tm_per_ano = anho;
- consumomes := COALESCE(consumomes, 0.0);
- SELECT a.pagoconsumo INTO valorconcepto FROM pa_conceptoescalonable_calcular(rConcepto.tm_idconcepto, consumomes) AS a;
- ELSE
- IF rConcepto.tm_ascensor = 1 THEN
- SELECT a.facturarconcepto INTO valorconcepto FROM pa_facturacion_ascensor(idproyecto, rPropiedad.tm_idpropiedad, anho, mes, idusuario ) AS a;
- ELSE
- IF rConcepto.tm_esformula = 1 THEN
- IF tipovalorizacion = '00' THEN
- SELECT a.facturarconcepto INTO valorconcepto FROM pa_facturacion_equitativa(rConcepto.tm_idconcepto, rPropiedad.tm_idpropiedad, idproyecto, mes, anho, cantidadPropiedades) AS a;
- ELSE
- SELECT a.facturarconcepto INTO valorconcepto FROM pa_facturacion_calcular(rConcepto.tm_idconcepto, rPropiedad.tm_idpropiedad, idproyecto, AreaProyecto, mes, anho) AS a;
- END IF;
- ELSE
- valorconcepto := 0.0;
- END IF;
- END IF;
- END IF;
- INSERT INTO td_conceptosfacturacion (td_idconceptofacturacion, tm_idproyecto, tm_idfacturacion, tm_per_ano, tm_per_mes, tm_idpropiedad, tm_idconcepto, td_valorconcepto, ta_tiporesultado, activo, idusuarioreg, fechareg, idusuarioact, fechaact)
- VALUES (codigoconceptofact, idproyecto, codigofactura, anho, mes, rPropiedad.tm_idpropiedad, rConcepto.tm_idconcepto, valorconcepto, '01', 1, idusuario, CURRENT_TIMESTAMP, idusuario, CURRENT_TIMESTAMP);
- END LOOP;
- SELECT SUM(td_valorconcepto) INTO importefacturado FROM td_conceptosfacturacion WHERE tm_idfacturacion = codigofactura;
- UPDATE tm_facturacion SET tm_importefacturado = importefacturado WHERE tm_idfacturacion = codigofactura;
- END LOOP;
- IF tipovalorizacion <> '00' THEN
- FOR rPropiedad IN SELECT a.tm_idpropiedad, a.tm_area FROM tm_propiedad AS a WHERE a.tm_idproyecto = idproyecto AND a.activo = 1 AND a.tm_idtipopropiedad <> 'DPT' AND (tm_idpropiedadrelacionada='' OR tm_idpropiedadrelacionada IS NULL) LOOP
- areadepartamento := rPropiedad.tm_area;
- SELECT 'FN' || LPAD((COUNT(*) + 1)::TEXT, 13, '0') INTO codigofactura FROM tm_facturacion;
- --- Se Calcula el porcentaje de participación y se graba en la cabecera de la factura
- SELECT porcentaje INTO ratioProp FROM pa_porcentaje_participacion(rPropiedad.tm_idpropiedad,idproyecto, AreaProyecto);
- INSERT INTO tm_facturacion (tm_idfacturacion, tm_idproyecto, tm_per_ano, tm_per_mes, tm_ratio, tm_idmoneda, tm_tipo_cambio, tm_fechaemision, tm_fechavencimiento, tm_fechatope, tm_importefacturado, activo, idusuarioreg, fechareg, idusuarioact, fechaact)
- VALUES (codigofactura, idproyecto, anho, mes, ratioProp, codigomoneda, tipocambio, CURRENT_TIMESTAMP, fechavencimiento, fechatope, 0, 1, idusuario, CURRENT_TIMESTAMP, idusuario, CURRENT_TIMESTAMP);
- INSERT INTO td_facturacionpropietario (td_idfacturacionpropietario, tm_idpropietario, tm_idfacturacion, activo, idusuarioreg, fechareg, idusuarioact, fechaact)
- SELECT 'FP' || LPAD(( countfactpropietario + NEXTVAL('temp_seq'))::TEXT, 13, '0'), oldtable.tm_idtipopropietario, codigofactura, 1, idusuario, CURRENT_TIMESTAMP, idusuario, CURRENT_TIMESTAMP
- FROM (SELECT * FROM vstpropietario AS propt
- INNER JOIN td_propiedadpropietario AS b ON propt.tm_idtipopropietario = b.tm_idpropietario AND b.tm_idpropiedad = rPropiedad.tm_idpropiedad
- ORDER BY propt.tm_idtipopropietario) AS oldtable;
- FOR rConcepto IN SELECT a.tm_idconcepto, a.tm_definicion_formula, a.tm_esformula, a.tm_escalonable FROM tm_concepto AS a WHERE a.tm_idproyecto = idproyecto AND a.ta_tipoconcepto = '02' AND a.activo = 1 LOOP
- SELECT 'CF' || LPAD((COUNT(*) + 1)::TEXT, 13, '0') INTO codigoconceptofact FROM td_conceptosfacturacion;
- IF rConcepto.tm_esformula = 1 THEN
- SELECT a.facturarconcepto INTO valorconcepto FROM pa_facturacion_calcular(rConcepto.tm_idconcepto, rPropiedad.tm_idpropiedad, idproyecto, AreaProyecto, mes, anho) AS a;
- ELSE
- valorconcepto := 0.0;
- END IF;
- INSERT INTO td_conceptosfacturacion (td_idconceptofacturacion, tm_idproyecto, tm_idfacturacion, tm_per_ano, tm_per_mes, tm_idpropiedad, tm_idconcepto, td_valorconcepto, ta_tiporesultado, activo, idusuarioreg, fechareg, idusuarioact, fechaact)
- VALUES (codigoconceptofact, idproyecto, codigofactura, anho, mes, rPropiedad.tm_idpropiedad, rConcepto.tm_idconcepto, valorconcepto, '01', 1, idusuario, CURRENT_TIMESTAMP, idusuario, CURRENT_TIMESTAMP);
- END LOOP;
- SELECT SUM(td_valorconcepto) INTO importefacturado FROM td_conceptosfacturacion WHERE tm_idfacturacion = codigofactura;
- UPDATE tm_facturacion SET tm_importefacturado = importefacturado WHERE tm_idfacturacion = codigofactura;
- END LOOP;
- END IF;
- ELSE
- FOR rPropiedad IN SELECT a.tm_idpropiedad, a.tm_idpropiedadrelacionada, a.tm_area FROM tm_propiedad AS a WHERE a.tm_idpropiedad = idpropiedad AND a.activo = 1 LOOP
- SELECT DISTINCT tm_idfacturacion INTO idfactura FROM td_conceptosfacturacion WHERE tm_per_ano = anho AND tm_per_mes = mes AND tm_idpropiedad = rPropiedad.tm_idpropiedad AND activo = 1;
- IF idfactura IS NOT NULL THEN
- UPDATE td_facturacionpropietario SET activo = 0 WHERE tm_idfacturacion = idfactura AND activo = 1;
- UPDATE tm_facturacion SET activo = 0 WHERE tm_idfacturacion = idfactura AND activo = 1;
- UPDATE td_conceptosfacturacion SET activo = 0 WHERE tm_idfacturacion = idfactura AND activo = 1;
- END IF;
- areadepartamento := rPropiedad.tm_area;
- SELECT 'FN' || LPAD((COUNT(*) + 1)::TEXT, 13, '0') INTO codigofactura FROM tm_facturacion;
- --- Se Calcula el porcentaje de participación y se graba en la cabecera de la factura
- IF tipovalorizacion = '00' THEN
- ratioProp := round(1/cantidadPropiedades,4);
- ELSE
- SELECT porcentaje INTO ratioProp FROM pa_porcentaje_participacion(rPropiedad.tm_idpropiedad, idproyecto, AreaProyecto);
- END IF;
- INSERT INTO tm_facturacion (tm_idfacturacion, tm_idproyecto, tm_per_ano, tm_per_mes, tm_ratio, tm_idmoneda, tm_tipo_cambio, tm_fechaemision, tm_fechavencimiento, tm_fechatope, tm_importefacturado, activo, idusuarioreg, fechareg, idusuarioact, fechaact)
- VALUES (codigofactura, idproyecto, anho, mes, ratioProp, codigomoneda, tipocambio, CURRENT_TIMESTAMP, fechavencimiento, fechatope, 0, 1, idusuario, CURRENT_TIMESTAMP, idusuario, CURRENT_TIMESTAMP);
- INSERT INTO td_facturacionpropietario (td_idfacturacionpropietario, tm_idpropietario, tm_idfacturacion, activo, idusuarioreg, fechareg, idusuarioact, fechaact)
- SELECT 'FP' || LPAD(( countfactpropietario + NEXTVAL('temp_seq'))::TEXT, 13, '0'), oldtable.tm_idtipopropietario, codigofactura, 1, idusuario, CURRENT_TIMESTAMP, idusuario, CURRENT_TIMESTAMP
- FROM (SELECT * FROM vstpropietario AS propt
- INNER JOIN td_propiedadpropietario AS b ON propt.tm_idtipopropietario = b.tm_idpropietario AND b.tm_idpropiedad = rPropiedad.tm_idpropiedad
- ORDER BY propt.tm_idtipopropietario) AS oldtable;
- SELECT areadepartamento + SUM(a.tm_area) INTO areapropiedad FROM tm_propiedad AS a WHERE tm_idpropiedadrelacionada = rPropiedad.tm_idpropiedad AND a.tm_idtipopropiedad <> 'DPT' AND a.activo = 1;
- FOR rConcepto IN SELECT a.tm_idconcepto, a.tm_definicion_formula, a.tm_esformula, a.tm_escalonable, a.tm_ascensor FROM tm_concepto AS a WHERE a.tm_idproyecto = idproyecto AND a.ta_tipoconcepto = '02' AND a.activo = 1 LOOP
- SELECT 'CF' || LPAD((COUNT(*) + 1)::TEXT, 13, '0') INTO codigoconceptofact FROM td_conceptosfacturacion;
- IF rConcepto.tm_escalonable = 1 THEN
- SELECT td_consumoperiodo INTO consumomes FROM td_consumoescalonable WHERE tm_idconcepto = rConcepto.tm_idconcepto AND tm_idproyecto = idproyecto AND tm_idpropiedad = rPropiedad.tm_idpropiedad AND tm_per_mes = mes AND tm_per_ano = anho;
- consumomes := COALESCE(consumomes, 0.0);
- SELECT a.pagoconsumo INTO valorconcepto FROM pa_conceptoescalonable_calcular(rConcepto.tm_idconcepto, consumomes) AS a;
- ELSE
- IF rConcepto.tm_ascensor = 1 THEN
- SELECT a.facturarconcepto INTO valorconcepto FROM pa_facturacion_ascensor(idproyecto, rPropiedad.tm_idpropiedad, anho, mes, idusuario) AS a;
- ELSE
- IF rConcepto.tm_esformula = 1 THEN
- IF tipovalorizacion = '00' THEN
- SELECT a.facturarconcepto INTO valorconcepto FROM pa_facturacion_equitativa(rConcepto.tm_idconcepto, rPropiedad.tm_idpropiedad, idproyecto, mes, anho, cantidadPropiedades) AS a;
- ELSE
- SELECT a.facturarconcepto INTO valorconcepto FROM pa_facturacion_calcular(rConcepto.tm_idconcepto, rPropiedad.tm_idpropiedad, idproyecto, AreaProyecto, mes, anho) AS a;
- END IF;
- ELSE
- valorconcepto := 0.0;
- END IF;
- END IF;
- END IF;
- INSERT INTO td_conceptosfacturacion (td_idconceptofacturacion, tm_idproyecto, tm_idfacturacion, tm_per_ano, tm_per_mes, tm_idpropiedad, tm_idconcepto, td_valorconcepto, ta_tiporesultado, activo, idusuarioreg, fechareg, idusuarioact, fechaact)
- VALUES (codigoconceptofact, idproyecto, codigofactura, anho, mes, rPropiedad.tm_idpropiedad, rConcepto.tm_idconcepto, valorconcepto, '01', 1, idusuario, CURRENT_TIMESTAMP, idusuario, CURRENT_TIMESTAMP);
- END LOOP;
- SELECT SUM(td_valorconcepto) INTO importefacturado FROM td_conceptosfacturacion WHERE tm_idfacturacion = codigofactura;
- UPDATE tm_facturacion SET tm_importefacturado = importefacturado WHERE tm_idfacturacion = codigofactura;
- END LOOP;
- END IF;
- DROP SEQUENCE temp_seq;
- rpta := '1';
- titulomsje := 'Generado correctamente';
- contenidomsje := 'La operación se realizó correctamente';
- END;
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100;
- CREATE OR REPLACE FUNCTION pa_facturacion_dividir(
- IN idfactura CHARACTER VARYING,
- IN idpropiedad CHARACTER VARYING,
- IN anho SMALLINT,
- IN mes SMALLINT,
- IN idusuario INTEGER,
- OUT rpta CHARACTER VARYING,
- OUT titulomsje CHARACTER VARYING,
- OUT contenidomsje CHARACTER VARYING)
- RETURNS record AS
- $BODY$
- DECLARE
- rFacturacion record;
- rFactura record;
- rIncidencias record;
- facturanueva CHARACTER VARYING(15);
- Importe NUMERIC;
- Incidencias SMALLINT;
- valorconcepto NUMERIC;
- ratio NUMERIC;
- codigoconceptofact CHARACTER VARYING(15);
- BEGIN
- SELECT COUNT(*) INTO Incidencias FROM td_incidencias WHERE td_propiedad = idpropiedad AND tm_per_ano = anho AND tm_per_mes = mes AND activo = 1;
- IF Incidencias > 0 THEN
- FOR rFactura IN SELECT a.tm_idfacturacion, a.tm_idproyecto, a.tm_per_ano, a.tm_per_mes, a.tm_ratio, a.tm_idmoneda, a.tm_tipo_cambio, a.tm_fechaemision, a.tm_fechavencimiento, a.tm_fechatope, a.tm_importefacturado FROM tm_facturacion AS a WHERE a.tm_idfacturacion = idfactura AND a.activo = 1 LOOP
- UPDATE td_facturacionpropietario SET activo = 0 WHERE tm_idfacturacion = idfactura AND activo = 1;
- UPDATE tm_facturacion SET activo = 0 WHERE tm_idfacturacion = idfactura AND activo = 1;
- UPDATE td_conceptosfacturacion SET activo = 0 WHERE tm_idfacturacion = idfactura AND activo = 1;
- FOR rIncidencias IN SELECT a.tm_idpropiedad, a.tm_idpropietario, a.tm_per_ano, a.tm_per_mes, a.td_diasincidencia FROM td_incidencias AS a WHERE a.td_propiedad = idpropiedad AND a.tm_per_ano = anho AND a.tm_per_mes = mes AND a.activo = 1 LOOP
- ratio := rIncidencias.td_diasincidencia/30;
- Importe := round(rFactura.tm_importefacturado*ratio,2);
- SELECT 'FN' || LPAD((COUNT(*) + 1)::TEXT, 13, '0') INTO facturanueva FROM tm_facturacion;
- INSERT INTO tm_facturacion (tm_idfacturacion, tm_idproyecto, tm_per_ano, tm_per_mes, tm_ratio, tm_idmoneda, tm_tipo_cambio, tm_fechaemision, tm_fechavencimiento, tm_fechatope, tm_importefacturado, activo, idusuarioreg, fechareg, idusuarioact, fechaact)
- VALUES (facturanueva, rFactura.tm_idproyecto, anho, mes, rFactura.tm_ratio, 1, rFactura.tm_tipo_cambio, CURRENT_TIMESTAMP, rFactura.fechavencimiento, rFactura.fechatope, Importe, 1, idusuario, CURRENT_TIMESTAMP, idusuario, CURRENT_TIMESTAMP);
- INSERT INTO td_facturacionpropietario (td_idfacturacionpropietario, tm_idpropietario, tm_idfacturacion, activo, idusuarioreg, fechareg, idusuarioact, fechaact)
- VALUES ('FP' || LPAD((COUNT(*) + 1)::TEXT, 13, '0'), rIncidencias.tm_idpropietario, facturanueva, 1, idusuario, CURRENT_TIMESTAMP, idusuario, CURRENT_TIMESTAMP);
- FOR rFacturacion IN SELECT a.tm_idconcepto, a.td_valorconcepto FROM td_conceptosfacturacion AS a WHERE a.tm_idfacturacion = idfactura AND a.activo = 1 LOOP
- SELECT 'CF' || LPAD((COUNT(*) + 1)::TEXT, 13, '0') INTO codigoconceptofact FROM td_conceptosfacturacion;
- valorconcepto := round(rFacturacion.td_valorconcepto*ratio,2);
- INSERT INTO td_conceptosfacturacion (td_idconceptofacturacion, tm_idproyecto, tm_idfacturacion, tm_per_ano, tm_per_mes, tm_idpropiedad, tm_idconcepto, td_valorconcepto, ta_tiporesultado, activo, idusuarioreg, fechareg, idusuarioact, fechaact)
- VALUES (codigoconceptofact, rFactura.tm_idproyecto, idfactura, anho, mes, idpropiedad, rFacturacion.tm_idconcepto, valorconcepto, '01', 1, idusuario, CURRENT_TIMESTAMP, idusuario, CURRENT_TIMESTAMP);
- END LOOP;
- END LOOP;
- END LOOP;
- rpta := '1';
- titulomsje := 'Generado correctamente';
- contenidomsje := 'La operación se realizó correctamente';
- ELSE
- rpta := '1';
- titulomsje := 'La propiedad relacionada no tiene incidencias en el periodo';
- contenidomsje := 'No se puede dividir la factura';
- END IF;
- END;
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100;
- CREATE OR REPLACE FUNCTION pa_facturacion_ascensor(
- IN idproyecto CHARACTER VARYING,
- IN idpropiedad CHARACTER VARYING,
- IN anho SMALLINT,
- IN mes SMALLINT,
- IN idusuario INTEGER,
- OUT facturarconcepto NUMERIC)
- RETURNS NUMERIC AS
- $BODY$
- DECLARE
- importe NUMERIC;
- ratio NUMERIC;
- torre CHARACTER VARYING(10);
- Departamentos INTEGER;
- BEGIN
- SELECT tm_torre INTO torre FROM tm_propiedad WHERE tm_idpropiedad = idpropiedad AND activo = 1;
- SELECT COUNT(*) INTO Departamentos FROM tm_propiedad WHERE tm_proyecto = idproyecto AND tm_idtorre = torre AND tm_idtipopropiedad = 'DPT' AND activo = 1;
- IF Departamentos > 0 THEN
- ratio = 1/Departamentos;
- SELECT a.td_importe INTO importe FROM td_consumoascensor AS a WHERE a.tm_idproyecto = a.tm_idtorre = torre AND a.tm_per_ano = anho AND a.tm_per_mes = mes AND a.activo = 1;
- facturarconcepto := round(importe*ratio,2);
- ELSE
- facturarconcepto := 0;
- END IF;
- END;
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement