CREATE TABLE fdt_embargos
(
    compania            char(4) NOT NULL,
    trabajador          char(10) NOT NULL,
    concepto            smallint NOT NULL,
    secuencia           smallint NOT NULL,
    fecha_alta          date NULL,
    fecha_baja          date NULL,
    situacion           smallint NULL,
    consecutivo_oficina number(6,0) NULL,
    oficina_origen      char(4) NULL,
    oficina_destino     char(4) NULL,
    clase_deposito      smallint NULL,
    numero_expediente   varchar2(10) NULL,
    codigo_juzgado      number(12,0) NULL,
    banco               smallint NULL,
    cuenta              number(12,0) NULL,
    tipo_id_demandante  smallint NULL,
    id_demandante       number(11,0)  NULL,
    apellido_demandante varchar2(20) NULL,
    nombre_demandante   varchar2(100) NULL,
    agr_conceptos_base  char(3) NULL,
    concepto_base       smallint NULL,
    quinta_parte        smallint NULL,
    monto_total         number(14,2) NULL,
    saldo_actual        number(14,2) NULL,
    porcentaje          number(4,2) NULL,
    cuota_fija          number(14,2) NULL,
    ciudad_pago         char(2) NULL,
    porcentaje_aumento  number(2) NULL,
    valor_aumento       number(14,2) NULL,
    mes_aumento         number(2) NULL,
    anio_desde          number(4) NULL,
    CONSTRAINT PK_fdt_embargos PRIMARY KEY 
    (compania, trabajador, concepto, secuencia) 
	USING INDEX TABLESPACE TS_ADAMINDICES
)
TABLESPACE TS_ADAMDATOS;

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

CREATE TABLE fdt_embargos_oficinas (
	compania char (4) NOT NULL ,
	cod_oficina char (4) NOT NULL ,
	descripcion_oficina varchar2 (50) NULL 
)
TABLESPACE TS_ADAMDATOS;

CREATE PUBLIC SYNONYM fdt_embargos_oficinas FOR ADAM.fdt_embargos_oficinas;
GRANT ALL ON fdt_embargos_oficinas TO ADAMA;
CREATE TABLE fdt_ciudades_pago
(ciudad char(2), 
nombre varchar2(100)
)
TABLESPACE TS_ADAMDATOS;

CREATE PUBLIC SYNONYM fdt_ciudades_pago FOR ADAM.fdt_ciudades_pago;
GRANT ALL ON fdt_ciudades_pago TO ADAMA;
CREATE TABLE fdt_embargos_tipo_nom
(
    compania            char(4) NOT NULL,
    trabajador          char(10) NOT NULL,
    concepto            number(5) NOT NULL,
    secuencia           number(3) NOT NULL,
    tipo_nomina         char(4)  NOT NULL,
    CONSTRAINT PK_fdt_embargos_tipo_nom PRIMARY KEY 
    (compania, trabajador, concepto, secuencia, tipo_nomina) 
	USING INDEX TABLESPACE TS_ADAMINDICES
)
TABLESPACE TS_ADAMDATOS;

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

CREATE TABLE fdt_hist_aum_emb
(
    compania            char(4) NOT NULL,
    trabajador          char(10) NOT NULL,
    concepto            number(5) NOT NULL,
    secuencia           number(3) NOT NULL,
    id_calendario       number(5) NOT NULL,
    cuota_anterior      number(14,2) NULL,
    cuota_nueva         number(14,2) NULL,
    porcentaje_aum      number(14,2) NULL,
    valor_aum           number(14,2) NULL,
    tipo_nomina         char(2)   NULL,
    anio                number(4) NULL,
    periodo             number(3) NULL,
    CONSTRAINT PK_fdt_hist_aum_emb PRIMARY KEY
    (compania, trabajador, concepto, secuencia, id_calendario) 
    USING INDEX TABLESPACE TS_ADAMINDICES
)
TABLESPACE TS_ADAMDATOS;

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

CREATE OR REPLACE FUNCTION fn_Primer_Apellido
(
   i_Nombre IN Char
)
RETURN CHAR
IS
   w_Pos1    Integer;
   w_Pos2    Integer;
   w_Pos3    Integer;
   w_Cad     VarChar(20);
BEGIN
   w_Pos1 := InStr(i_Nombre, '/');
   w_Pos2 := InStr(SubStr(i_Nombre,w_Pos1+1,Length(i_Nombre)-w_Pos1), '/') + w_Pos1;
   w_Pos3 := InStr(SubStr(i_Nombre,w_Pos2+1,Length(i_Nombre)-w_Pos2), ' ') + w_Pos2;
   If w_Pos3 = w_Pos2 Then
      w_Pos3 := Length(i_Nombre);
   End If;
   SELECT Decode(w_Pos1, 1, ' ', RTrim(SubStr(i_Nombre,1,w_Pos1-1)))
   INTO w_Cad
   FROM DUAL;
   RETURN(w_Cad);
END;
/
CREATE PUBLIC SYNONYM fn_Primer_Apellido FOR ADAM.fn_Primer_Apellido;
GRANT ALL ON fn_Primer_Apellido TO ADAMA;
CREATE OR REPLACE FUNCTION fn_Primer_Nombre
(
   i_Nombre IN Char
)
RETURN CHAR
IS
   w_Pos1    Integer;
   w_Pos2    Integer;
   w_Pos3    Integer;
   w_Cad     VarChar(20);
BEGIN
   w_Pos1 := InStr(i_Nombre, '/');
   w_Pos2 := InStr(SubStr(i_Nombre,w_Pos1+1,Length(i_Nombre)-w_Pos1), '/') + w_Pos1;
   w_Pos3 := InStr(SubStr(i_Nombre,w_Pos2+1,Length(i_Nombre)-w_Pos2), ' ') + w_Pos2;
   If w_Pos3 = w_Pos2 Then
      w_Pos3 := Length(i_Nombre);
   End If;
   SELECT Decode(w_Pos3, w_Pos2+1, ' ', RTrim(SubStr(i_Nombre,w_Pos2+1,w_Pos3-w_Pos2)))
   INTO w_Cad
   FROM DUAL;
   RETURN(w_Cad);
END;
/
CREATE PUBLIC SYNONYM fn_Primer_Nombre FOR ADAM.fn_Primer_Nombre;
GRANT ALL ON fn_Primer_Nombre TO ADAMA;
CREATE OR REPLACE FUNCTION fn_Segundo_Apellido
(
   i_Nombre IN Char
)
RETURN CHAR
IS
   w_Pos1    Integer;
   w_Pos2    Integer;
   w_Pos3    Integer;
   w_Cad     VarChar(20);
BEGIN
   w_Pos1 := InStr(i_Nombre, '/');
   w_Pos2 := InStr(SubStr(i_Nombre,w_Pos1+1,Length(i_Nombre)-w_Pos1), '/') + w_Pos1;
   w_Pos3 := InStr(SubStr(i_Nombre,w_Pos2+1,Length(i_Nombre)-w_Pos2), ' ') + w_Pos2;
   If w_Pos3 = w_Pos2 Then
      w_Pos3 := Length(i_Nombre);
   End If;
   SELECT Decode(w_Pos2, w_Pos1+1, ' ', RTrim(SubStr(i_Nombre,w_Pos1+1,w_Pos2-w_Pos1-1)))
   INTO w_Cad
   FROM DUAL;
   RETURN(w_Cad);
END;
/
CREATE PUBLIC SYNONYM fn_Segundo_Apellido FOR ADAM.fn_Segundo_Apellido;
GRANT ALL ON fn_Segundo_Apellido TO ADAMA;
CREATE OR REPLACE FUNCTION fn_Segundo_Nombre
(
   i_Nombre IN Char
)
RETURN CHAR
IS
   w_Pos1    Integer;
   w_Pos2    Integer;
   w_Pos3    Integer;
   w_Cad     VarChar(20);
BEGIN
   w_Pos1 := InStr(i_Nombre, '/');
   w_Pos2 := InStr(SubStr(i_Nombre,w_Pos1+1,Length(i_Nombre)-w_Pos1), '/') + w_Pos1;
   w_Pos3 := InStr(SubStr(i_Nombre,w_Pos2+1,Length(i_Nombre)-w_Pos2), ' ') + w_Pos2;
   If w_Pos3 = w_Pos2 Then
      w_Pos3 := Length(i_Nombre);
   End If;
   w_Cad := RTrim(SubStr(i_Nombre,w_Pos3 + 1,Length(i_Nombre)-w_Pos3));
   RETURN(w_Cad);
END;
/
CREATE PUBLIC SYNONYM fn_Segundo_Nombre FOR ADAM.fn_Segundo_Nombre;
GRANT ALL ON fn_Segundo_Nombre TO ADAMA;
CREATE OR REPLACE VIEW vw_fdt_embargos
AS
SELECT
    E.compania, D.nombre_cia, D.registro_fiscal,
    E.trabajador, T.clave_unica AS cedula,
    fn_Primer_Apellido(T.nombre) || ' ' || fn_Segundo_Apellido(T.nombre) As Apellidos,
    fn_Primer_Nombre(T.nombre) || ' ' ||  fn_Segundo_Nombre(T.nombre) As Nombres,
    E.concepto, C.descripcion, E.secuencia,
    E.fecha_alta, E.fecha_baja, E.situacion, E.consecutivo_oficina,
    E.oficina_origen, E.oficina_destino, E.clase_deposito,
    E.numero_expediente, E.codigo_juzgado, E.banco, E.cuenta,
    E.tipo_id_demandante, E.id_demandante, E.apellido_demandante,
    E.nombre_demandante, E.agr_conceptos_base, E.concepto_base,
    Decode(Nvl(E.concepto_base, 0),0,E.agr_conceptos_base,To_Char(E.concepto_base)) Base,
    E.quinta_parte, E.monto_total, E.saldo_actual, E.porcentaje, E.cuota_fija, E.ciudad_pago,
    E.porcentaje_aumento, E.valor_aumento, E.mes_aumento, E.anio_desde
FROM
    fdt_embargos E, trabajadores T, conceptos C, companias D
WHERE
    E.compania = D.compania And
    E.trabajador = T.trabajador And
    E.concepto = C.concepto;

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

INSERT INTO criterios_valores_col (campo, item, descripcion) VALUES ('emb_bancos', 0, 'Pago en Cheque');
INSERT INTO criterios_valores_col (campo, item, descripcion) VALUES ('emb_bancos', 1, 'Banco Agrario');
delete fdt_bancos where descripcion = 'Pago en Cheque';
delete fdt_bancos where descripcion = 'Banco Agrario';
commit;

INSERT INTO fdt_ciudades_pago select * from mf_ciudades_pago;
insert into fdt_embargos_oficinas select * from mf_embargos_oficinas;
commit;
