DROP TABLE fco_traslados_eps;
CREATE TABLE fco_traslados_eps 
(compania  char(4)  NOT NULL,
trabajador char(10) NOT NULL,
EPS_actual char(10) NOT NULL,
EPS_nueva  char(10) NULL,
fecha_cambio date NOT NULL,
estado number(1) NOT NULL,
CONSTRAINT pk_fco_traslado_eps
PRIMARY KEY (compania,trabajador,fecha_cambio)
USING INDEX TABLESPACE TS_ADAMINDICES
)
TABLESPACE TS_ADAMDATOS;

CREATE PUBLIC SYNONYM fco_traslados_eps FOR ADAM.fco_traslados_eps;
GRANT ALL ON fco_traslados_eps TO ADAMA;
DROP TABLE fco_traslados_fpo;
CREATE TABLE fco_traslados_fpo
(
   compania     char(4)   NOT NULL,
   trabajador   char(10)  NOT NULL,
   FPO_actual   char(10)  NOT NULL,
   FPO_nueva    char(10)  NULL,
   fecha_cambio date      NOT NULL,
   estado       number(1) NOT NULL,
   CONSTRAINT pk_fco_traslado_fpo PRIMARY KEY (compania,trabajador,fecha_cambio)
   USING INDEX TABLESPACE TS_ADAMINDICES
)
TABLESPACE TS_ADAMDATOS;

CREATE PUBLIC SYNONYM fco_traslados_fpo FOR ADAM.fco_traslados_fpo;
GRANT ALL ON fco_traslados_fpo TO ADAMA;

CREATE OR REPLACE VIEW VW_FCO_EPS_TRABAJADOR 
AS
Select
	r.compania, r.trabajador,
	d.dato, d.descripcion
From
	rel_trab_agr r,
	datos_agr_trab d
Where
	r.agrupacion = d.agrupacion And
	r.dato = d.dato And
	LTRIM(RTRIM(r.agrupacion)) = NVL((SELECT dato FROM vw_fdt_parametros x
     WHERE x.pais = 'COL' AND x.compania = r.compania AND x.parametro = 'autoliq' AND x.secuencia = 21), 'EPS');
CREATE PUBLIC SYNONYM vw_fco_fpo_trabajador FOR ADAM.vw_fco_fpo_trabajador;
GRANT ALL ON vw_fco_fpo_trabajador TO ADAMA;                  

Create Or Replace View vw_fco_fpo_trabajador
As
Select 
	r.compania, r.trabajador,
	d.dato, d.descripcion
From
	rel_trab_agr r,
	datos_agr_trab d
Where
	r.agrupacion = d.agrupacion And
	r.dato = d.dato And
	LTRIM(RTRIM(r.agrupacion)) = nvl((SELECT dato FROM vw_fdt_parametros x
     WHERE x.pais = 'COL' AND x.compania = r.compania AND x.parametro = 'autoliq' AND x.secuencia = 22), 'FPO');

CREATE PUBLIC SYNONYM vw_fco_fpo_trabajador FOR ADAM.vw_fco_fpo_trabajador;
GRANT ALL ON vw_fco_fpo_trabajador TO ADAMA;                  

CREATE OR REPLACE PROCEDURE sp_fco_alta_traslados_eps
(
	i_compania		char,
	i_trabajador		char,
	i_EPS_actual		char,
	i_EPS_nueva		char,
	i_fecha_cambio		date)
AS
BEGIN
    INSERT INTO fco_traslados_eps (compania, trabajador, eps_actual, eps_nueva, fecha_cambio, estado)
    VALUES 
    (i_compania,
     i_trabajador,
     i_EPS_actual,
     i_EPS_nueva,
     i_fecha_cambio, 0);
     commit;
END;
/
CREATE PUBLIC SYNONYM sp_fco_alta_traslados_eps FOR ADAM.sp_fco_alta_traslados_eps;
GRANT EXECUTE ON sp_fco_alta_traslados_eps TO adama;


CREATE OR REPLACE PROCEDURE sp_fco_alta_traslados_fpo
(
i_compania		char,
i_trabajador		char,
i_fpo_actual		char,
i_fpo_nueva		char,
i_fecha_cambio		date)
AS
BEGIN
	INSERT INTO fco_traslados_fpo 
	(compania, trabajador, fpo_actual, fpo_nueva, fecha_cambio, estado)
  VALUES 
  (i_compania,
   i_trabajador,
   i_fpo_actual,
   i_fpo_nueva,
   i_fecha_cambio, 0);
	commit;
END;
/
CREATE PUBLIC SYNONYM sp_fco_alta_traslados_fpo FOR ADAM.sp_fco_alta_traslados_fpo;
GRANT EXECUTE ON sp_fco_alta_traslados_fpo TO adama;

CREATE OR REPLACE PROCEDURE sp_fco_baja_traslados_eps
(
i_compania		char,
i_trabajador		char,
i_fecha                 date
)
AS
BEGIN
    DELETE  fco_traslados_eps
    WHERE compania = i_compania
    AND trabajador = i_trabajador
    AND fecha_cambio = i_fecha;
    
    COMMIT;
END;
/
CREATE PUBLIC SYNONYM sp_fco_baja_traslados_eps FOR ADAM.sp_fco_baja_traslados_eps;
GRANT EXECUTE ON sp_fco_baja_traslados_eps TO adama;

CREATE OR REPLACE PROCEDURE sp_fco_baja_traslados_fpo
(
i_compania		char,
i_trabajador		char,
i_fecha                 date
)
AS
BEGIN
    DELETE  fco_traslados_fpo
    WHERE compania = i_compania
    AND trabajador = i_trabajador
    AND fecha_cambio = i_fecha;
    
    COMMIT;
END;
/
CREATE PUBLIC SYNONYM sp_fco_baja_traslados_fpo FOR ADAM.sp_fco_baja_traslados_fpo;
GRANT EXECUTE ON sp_fco_baja_traslados_fpo TO adama;
CREATE OR REPLACE PROCEDURE sp_fco_cambio_traslados_eps
(
i_compania		char,
i_trabajador		char,
i_EPS_actual		char,
i_EPS_nueva		char,
i_fecha_cambio		date)
AS
BEGIN
    UPDATE fco_traslados_eps
    SET 	
    EPS_actual = i_EPS_actual,
    EPS_nueva   = i_EPS_nueva,
    estado = 2
    WHERE compania = i_compania
    AND trabajador = i_trabajador
    AND fecha_cambio  = i_fecha_cambio;
    
    COMMIT;
	
END;
/
CREATE PUBLIC SYNONYM sp_fco_cambio_traslados_eps FOR ADAM.sp_fco_cambio_traslados_eps;
GRANT EXECUTE ON sp_fco_cambio_traslados_eps TO adama;

CREATE OR REPLACE PROCEDURE sp_fco_cambio_traslados_fpo
(
i_compania		char,
i_trabajador		char,
i_fpo_actual		char,
i_fpo_nueva		char,
i_fecha_cambio		date)
AS
BEGIN
    UPDATE fco_traslados_fpo
    SET 	
    fpo_actual = i_fpo_actual,
    fpo_nueva   = i_fpo_nueva,
    estado = 2
    WHERE compania = i_compania
    AND trabajador = i_trabajador
    AND fecha_cambio  = i_fecha_cambio;
    
    COMMIT;
	
END;
/
CREATE PUBLIC SYNONYM sp_fco_cambio_traslados_fpo FOR ADAM.sp_fco_cambio_traslados_fpo;
GRANT EXECUTE ON sp_fco_cambio_traslados_fpo TO adama;
CREATE OR REPLACE PROCEDURE sp_fco_proc_traslados_eps
(
	i_compania       char,
	i_anio		 char,
	i_mes		 char
)
AS
	w_trabajador 	char(10);
	w_nueva		char(10);

	CURSOR cr_traslados IS
	SELECT	trabajador, eps_nueva
 	FROM	fco_traslados_eps
	WHERE	compania = i_compania AND
		SUBSTR(TO_CHAR(fecha_cambio,'YYYYMMDD'),1,6) = i_anio || LPad(LTrim(RTrim(i_mes)), 2, '0');
BEGIN
	OPEN cr_traslados;
	LOOP
		FETCH cr_traslados INTO w_trabajador, w_nueva;
		EXIT WHEN cr_traslados%NOTFOUND;

		UPDATE 	REL_TRAB_AGR
		SET	dato = w_nueva
		WHERE	compania = i_compania
		AND	trabajador = w_trabajador
		AND	agrupacion = 'EPS';
        END LOOP;
	CLOSE cr_traslados;

        UPDATE fco_traslados_eps SET estado = 1
	WHERE	compania = i_compania AND
		SUBSTR(TO_CHAR(fecha_cambio,'YYYYMMDD'),1,6) = i_anio || LPad(LTrim(RTrim(i_mes)), 2, '0');
	COMMIT;
END;
/
CREATE PUBLIC SYNONYM sp_fco_proc_traslados_eps FOR ADAM.sp_fco_proc_traslados_eps;
GRANT EXECUTE ON sp_fco_proc_traslados_eps TO adama;

CREATE OR REPLACE PROCEDURE sp_fco_proc_traslados_fpo
(
	i_compania       char,
	i_anio		 char,
	i_mes		 char
)
AS
	w_trabajador 	char(10);
	w_nueva		char(10);

	CURSOR cr_traslados IS
	SELECT	trabajador, fpo_nueva
 	FROM	fco_traslados_fpo
	WHERE	compania = i_compania AND
		SUBSTR(TO_CHAR(fecha_cambio,'YYYYMMDD'),1,6) = i_anio || LPad(LTrim(RTrim(i_mes)), 2, '0');
BEGIN
	OPEN cr_traslados;
	LOOP
		FETCH cr_traslados INTO w_trabajador, w_nueva;
		EXIT WHEN cr_traslados%NOTFOUND;

		UPDATE 	REL_TRAB_AGR
		SET	dato = w_nueva
		WHERE	compania = i_compania
		AND	trabajador = w_trabajador
		AND	agrupacion = 'FPO';
        END LOOP;
	CLOSE cr_traslados;

  	UPDATE fco_traslados_fpo SET estado = 1
	WHERE	compania = i_compania AND
		SUBSTR(TO_CHAR(fecha_cambio,'YYYYMMDD'),1,6) = i_anio || LPad(LTrim(RTrim(i_mes)), 2, '0');

    COMMIT WORK;

END;
/
CREATE PUBLIC SYNONYM sp_fco_proc_traslados_fpo FOR ADAM.sp_fco_proc_traslados_fpo;
GRANT EXECUTE ON sp_fco_proc_traslados_fpo TO adama;
