CREATE TABLE fco_cias_datos_adi
(	compania		char(4)		NOT NULL,
  tipo_id			char(3)   NOT NULL,	
  cod_dpto    char(2)   	NOT NULL,
  cod_ciudad  char(3)  	NOT NULL,
  fax			    varchar2(20)    NULL,
  nit_ARP	    varchar2(11)    NULL,
  nombre_ARP	varchar2(30)    NULL,
  clase_aportante 	  char(1)         NULL,
  forma_presentacion	char(1)		NULL,
  sucursal_pagadora	  char(10)        NULL,
  nro_patronal		    char(11)	NULL,
  nombre_retenedor 	  varchar2(60)	NULL,
  cedula_retenedor 	  varchar2(60)	NULL,
  agencias 		varchar2(300) 	NULL,
  arp_iss			number(1)	NULL,
  dir_ARP     varchar2(50) NULL,
  tel_ARP     varchar2(20) NULL,
  nombre_SENA varchar2(30) NULL,
  nit_SENA    varchar2(11) NULL,
  dir_SENA    varchar2(50) NULL,
  tel_SENA    varchar2(20) NULL,
  nombre_ICBF varchar2(30) NULL,
  nit_ICBF    varchar2(11) NULL,
  dir_ICBF    varchar2(50) NULL,
  tel_ICBF    varchar2(20) NULL,
  cod_admon   varchar2(40) NULL, 
  iss_redondea number(1) NULL, -- Agregado en Marzo 28/06
  cod_ARP char(6) NULL, -- Agregado en Junio/06
        Constraint PK_cias_datos_adi PRIMARY KEY (compania),  
        Constraint ck_cdi_tipo CHECK (tipo_id IN ('NIT','CC','CE')),
       	Constraint ck_cdi_forma CHECK (forma_presentacion IN ('C','U','S')),
        Constraint ck_cdi_class CHECK (clase_aportante IN ('P','G'))
)
TABLESPACE TS_ADAMDATOS;

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

CREATE OR REPLACE VIEW vw_fco_cias_datos_adi
AS
SELECT 
    c.compania, a.tipo_id, a.fax, a.nit_ARP, a.nombre_ARP, a.clase_aportante, 
    a.sucursal_pagadora, a.nro_patronal, a.forma_presentacion, a.cod_ciudad, a.cod_dpto, 
    c.registro_fiscal, a.nombre_retenedor, a.cedula_retenedor, a.agencias, a.arp_iss, 
    a.dir_ARP, a.tel_ARP, a.nombre_SENA, a.nit_SENA, a.dir_SENA, a.tel_SENA, a.nombre_ICBF, 
    a.nit_ICBF, a.dir_ICBF, a.tel_ICBF, a.cod_admon, a.iss_redondea, a.cod_ARP
FROM companias c, fco_cias_datos_adi a
WHERE a.compania = c.compania(+);

CREATE PUBLIC SYNONYM vw_fco_cias_datos_adi FOR ADAM.vw_fco_cias_datos_adi;
GRANT ALL ON vw_fco_cias_datos_adi TO ADAMA;
CREATE OR REPLACE PROCEDURE sp_fco_cambio_cias_datos_adi
(
  pch_compania             char,
  pch_tipo_id              char,  
  pch_cod_dpto             char,  
  pvc_cod_ciudad           varchar2,  
  pvc_fax                  varchar2,  
  pvc_nit_ARP              varchar2,  
  pvc_nombre_ARP           varchar2,  
  pch_clase_aportante      char,  
  pch_forma_presentacion   char,  
  pch_sucursal_pagadora    char,  
  pch_nro_patronal         char,  
  pvc_nombre_retenedor     varchar2,  
  pvc_cedula_retenedor     varchar2,  
  pvc_agencias             varchar2,  
  pti_arp_iss              number,
--Agregado JAS, Reporte Dian Grasco
  pvc_dir_ARP              varchar2,
  pvc_tel_ARP              varchar2,
  pvc_nit_SENA             varchar2,
  pvc_nombre_SENA          varchar2,
  pvc_dir_SENA             varchar2,
  pvc_tel_SENA             varchar2,
  pvc_nit_ICBF             varchar2,
  pvc_nombre_ICBF          varchar2,
  pvc_dir_ICBF             varchar2,
  pvc_tel_ICBF             varchar2,
  pvc_cod_admon            varchar2,
  pti_iss_redondea         number,
  pch_cod_ARP              char
)
AS
vti_existe	 number(1);
BEGIN
   vti_existe := 0;
   BEGIN
      SELECT 1
      INTO vti_existe
      FROM fco_cias_datos_adi
      WHERE compania = pch_compania;
   EXCEPTION
      WHEN OTHERS THEN vti_existe := 0;               
   END;

   IF vti_existe = 1 THEN
      UPDATE  
          fco_cias_datos_adi 
      SET  
          tipo_id = pch_tipo_id,  
          cod_dpto = pch_cod_dpto,  
          cod_ciudad = pvc_cod_ciudad,  
          fax = pvc_fax,  
          nit_ARP = pvc_nit_ARP,  
          nombre_ARP = pvc_nombre_ARP,  
          clase_aportante = pch_clase_aportante,  
          forma_presentacion = pch_forma_presentacion,  
          sucursal_pagadora = pch_sucursal_pagadora,  
          nro_patronal = pch_nro_patronal,  
          nombre_retenedor = pvc_nombre_retenedor,  
          cedula_retenedor = pvc_cedula_retenedor,  
          agencias = pvc_agencias,  
          arp_iss = pti_arp_iss,
          dir_ARP = pvc_dir_ARP,
          tel_ARP = pvc_tel_ARP,
          nit_SENA = pvc_nit_SENA,
          nombre_SENA = pvc_nombre_SENA,
          dir_SENA = pvc_dir_SENA,
          tel_SENA = pvc_tel_SENA,
          nit_ICBF = pvc_nit_ICBF,
          nombre_ICBF = pvc_nombre_ICBF,
          dir_ICBF = pvc_dir_ICBF,
          tel_ICBF = pvc_tel_ICBF,
          cod_admon = pvc_cod_admon,
          iss_redondea = pti_iss_redondea,
          cod_arp = pch_cod_ARP
      WHERE  
          compania = pch_compania;
   ELSE
       INSERT INTO fco_cias_datos_adi
        (compania, tipo_id, cod_dpto, cod_ciudad, fax, nit_ARP, nombre_ARP, 
         clase_aportante, forma_presentacion, sucursal_pagadora, nro_patronal, 
         nombre_retenedor, cedula_retenedor, agencias, arp_iss, dir_ARP, 
         tel_ARP, nombre_SENA, nit_SENA, dir_SENA, tel_SENA, 
         nombre_ICBF, nit_ICBF, dir_ICBF, tel_ICBF, cod_admon, iss_redondea, cod_ARP)       
       VALUES (pch_compania, pch_tipo_id, pch_cod_dpto, pvc_cod_ciudad, pvc_fax,  
               pvc_nit_ARP, pvc_nombre_ARP, pch_clase_aportante, pch_forma_presentacion,  
               pch_sucursal_pagadora, pch_nro_patronal, pvc_nombre_retenedor, pvc_cedula_retenedor,
               pvc_agencias, pti_arp_iss, pvc_dir_ARP, pvc_tel_ARP, pvc_nombre_SENA, pvc_nit_SENA, 
               pvc_dir_SENA, pvc_tel_SENA, pvc_nombre_ICBF, pvc_nit_ICBF, pvc_dir_ICBF, pvc_tel_ICBF,
               pvc_cod_admon, pti_iss_redondea, pch_cod_ARP);

   END IF;

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

    INSERT INTO fco_cias_datos_adi
    (compania, tipo_id, cod_dpto, cod_ciudad, fax, nit_ARP, nombre_ARP, clase_aportante, forma_presentacion, 
     sucursal_pagadora, nro_patronal, nombre_retenedor, cedula_retenedor, agencias, arp_iss)
    SELECT 
     compania, tipo_id, cod_dpto, cod_ciudad, fax, nit_ARP, nombre_ARP, clase_aportante, forma_presentacion, 
     sucursal_pagadora, nro_patronal, nombre_retenedor, cedula_retenedor, agencias, arp_iss
    FROM companias_datos_adi ;
commit;
