Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Function: pa_proceso_registrar(character varying, character varying, smallint, smallint, integer)
- DROP FUNCTION pa_proceso_registrar(character varying, character varying, smallint, smallint, integer);
- CREATE OR REPLACE FUNCTION pa_proceso_registrar(IN idproceso character varying, IN idproyecto character varying, IN per_ano smallint, IN per_mes smallint, IN idusuario integer, OUT rpta character varying, OUT titulomsje character varying, OUT contenidomsje character varying)
- RETURNS record AS
- $BODY$
- DECLARE
- codigo CHARACTER VARYING(10);
- rFacturacion record;
- BEGIN
- IF idproceso = '0' THEN
- IF (SELECT COUNT(*) FROM tm_proceso WHERE tm_idproyecto = idproyecto AND tm_idestadoproceso = 1 AND activo = 1) > 0 THEN
- rpta := '0';
- titulomsje := 'No se puede crear el proceso';
- contenidomsje := 'Todavía existen procesos abiertos en el sistema';
- RETURN;
- END IF;
- --SELECT 'PR' || LPAD((COUNT(*) + 1)::text, 8, '0') INTO codigo FROM tm_proceso;
- SELECT 'PR' || LPAD((COALESCE(MAX((substring(tm_idproceso from 3 for (char_length(tm_idproceso) - 2)))::integer), 0) + 1)::text, 8, '0') INTO codigo FROM tm_proceso;
- INSERT INTO tm_proceso (tm_idproceso, tm_idproyecto, tm_per_mes, tm_per_ano, tm_idestadoproceso, activo, idusuarioreg, fechareg, idusuarioact, fechaact)
- VALUES (codigo, idproyecto, per_mes, per_ano, 1, 1, idusuario, CURRENT_TIMESTAMP, idusuario, CURRENT_TIMESTAMP);
- rpta := codigo;
- titulomsje := 'Proceso creado';
- ELSE
- UPDATE tm_proceso SET tm_idproyecto = idproyecto, tm_per_mes = per_mes, tm_per_ano = per_ano , tm_idestadoproceso = 0, idusuarioact = idusuario, fechaact = CURRENT_TIMESTAMP
- WHERE tm_idproceso = idproceso;
- FOR rFacturacion IN SELECT a.tm_idfacturacion, b.tm_codigoproyecto FROM tm_facturacion AS a INNER JOIN tm_proyecto AS b ON a.tm_idproyecto = b.tm_idproyecto WHERE a.tm_per_ano = per_ano AND a.tm_idproyecto = idproyecto AND a.activo = 1) LOOP
- SELECT prefijoproyecto || anho::character varying || mes::character varying || LPAD((COUNT(*) + 1)::TEXT, 10, '0') INTO correlativofacturacion FROM tm_facturacion WHERE activo = 1;
- -- SELECT rFacturacion.tm_codigoproyecto || per_ano::character varying || mes::charcter varying || LPAD((COUNT(*) + 1)::TEXT, 10, '0') INTO correlativofacturacion FROM tm_facturacion WHERE activo = 1;
- UPDATE tm_facturacion SET tm_codigo = correlativofacturacion WHERE tm_idfacturacion = rFacturacion.tm_idfacturacion;
- END LOOP;
- SELECT a.rpta INTO rpta FROM pa_detalle_cuentacorriente_masivo(idproyecto,per_ano,per_mes,idusuario) AS a;
- titulomsje := 'Proceso cerrado';
- END IF;
- contenidomsje := 'La operación se completó satisfactoriamente';
- END;
- $BODY$
- LANGUAGE plpgsql VOLATILE
- COST 100;
- ALTER FUNCTION pa_proceso_registrar(character varying, character varying, smallint, smallint, integer)
- OWNER TO postgres;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement