DROP TABLE fco_centros_trabajo;
CREATE TABLE fco_centros_trabajo
(
    compania char(4) NOT NULL,
    centro_trabajo char(10) NOT NULL,
    descripcion varchar2(60) NOT NULL,
    codigo_reporte number(9) NOT NULL,
    tarifa number(6,5) NOT NULL,
    CONSTRAINT pk_fco_centros_trabajo PRIMARY KEY (compania, centro_trabajo)
    USING INDEX TABLESPACE TS_ADAMINDICES
)
TABLESPACE TS_ADAMDATOS;

CREATE PUBLIC SYNONYM fco_centros_trabajo FOR ADAM.fco_centros_trabajo;
GRANT ALL ON fco_centros_trabajo TO ADAMA;
CREATE OR REPLACE VIEW vw_fco_centros_trabajo
AS
SELECT 
  rac.compania, dato AS centro_trabajo, 
  NVL((SELECT ct.descripcion FROM fco_centros_trabajo ct 
       WHERE rac.compania = ct.compania AND ct.centro_trabajo = dat.dato), dat.descripcion) AS descripcion, 
  NVL((SELECT TO_CHAR(ct.codigo_reporte) FROM fco_centros_trabajo ct 
       WHERE rac.compania = ct.compania AND ct.centro_trabajo = dat.dato), dato) AS codigo_reporte , 
  (SELECT ct.tarifa FROM fco_centros_trabajo ct 
   WHERE rac.compania = ct.compania AND ct.centro_trabajo = dat.dato) AS tarifa
FROM rel_agr_companias rac, datos_agr_trab dat 
WHERE rac.agrupacion = dat.agrupacion
AND rtrim(rac.agrupacion) = rtrim(NVL(
(Select dato FROM vw_fdt_parametros x
 Where x.pais = 'COL' and x.compania = rac.compania 
   and x.parametro = 'autoliq' and secuencia = 24), 'CENTROS_TR'));

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

CREATE OR REPLACE PROCEDURE sp_fco_upd_centros_trabajo
(
    pch_compania char,
    pch_centro_trabajo char,
    pvc_descripcion varchar2,
    pdc_cod_reporte number,
    pdc_tarifa number
)
AS
    vti_existe number(1);
BEGIN
    vti_existe := 0;

    BEGIN
      SELECT 1 INTO vti_existe 
      FROM fco_centros_trabajo 
      WHERE compania = pch_compania AND centro_trabajo = pch_centro_trabajo;
    EXCEPTION
      WHEN OTHERS THEN vti_existe := 0;
    END;

    IF vti_existe = 1 THEN
        UPDATE fco_centros_trabajo
        SET descripcion = pvc_descripcion,
            codigo_reporte = pdc_cod_reporte,
            tarifa = pdc_tarifa
        WHERE compania = pch_compania
          AND centro_trabajo = pch_centro_trabajo;
    ELSE
        INSERT INTO fco_centros_trabajo
        (compania, centro_trabajo, descripcion, codigo_reporte, tarifa)
        VALUES (pch_compania, pch_centro_trabajo, pvc_descripcion, pdc_cod_reporte, pdc_tarifa);
    END IF;
END;
/
CREATE PUBLIC SYNONYM sp_fco_upd_centros_trabajo FOR ADAM.sp_fco_upd_centros_trabajo;
GRANT EXECUTE ON sp_fco_upd_centros_trabajo TO adama;
CREATE OR REPLACE PROCEDURE sp_var_riesgos
(
i_bcalind NUMBER ,
i_chcompania CHAR ,
i_chclase_nomina CHAR ,
i_nid_calendario  NUMBER,
i_chtipo_nomina CHAR ,
i_sianio INTEGER ,
i_tiperiodo INTEGER ,
i_dfecha_termino  DATE,
i_chtrabajador CHAR ,
i_siconcepto INTEGER ,
i_chreferencia CHAR ,
i_sisequencia INTEGER ,
i_vchsub_var1 VARCHAR2 ,
i_chsub_var2 VARCHAR2 ,
i_mvar_value IN OUT NUMBER,
i_chvar_value IN OUT VARCHAR2
)
AS
BEGIN


/* Declaración de variables locales */

-- Recupera % de Riesgo
i_chvar_value := null;
i_mvar_value := fn_fco_tarifa_ARP(i_chcompania,i_chtrabajador);

RETURN;
END;
/
CREATE PUBLIC SYNONYM sp_var_riesgos FOR ADAM.sp_var_riesgos;
GRANT EXECUTE ON sp_var_riesgos TO adama;
DELETE FROM defn_variables_ns WHERE variable = 'riesgos';
INSERT INTO defn_variables_ns 
(compania, variable, descripcion_var, titulo_superior, titulo_inferior, modulo, clasificacion, corporativa)
VALUES('0','riesgos','Porcentaje de ARP',NULL,NULL,'NS',4,0);
EXECUTE sp_companias_defn_var ('riesgos');
commit;
