CREATE OR REPLACE PROCEDURE sp_fdt_incorpora_embargos_ni
(
    pch_compania           	char,
    pch_tipo_nomina        	char,
    psi_anio_acumular      	smallint, 
    pti_mes_acumular       	smallint,
    psi_numero_liquidacion 	smallint, 
    pch_trabajador		char,
    pdt_fecha_liquidacion	date,
    pch_usuario            	char,
    pdt_fecha_hoy		date
)
/*********************************************************************/
/*** Modulo:      Modulo Fiscal Embargos                           ***/
/*** Descripcion: Incorpora embargos a la liquidación              ***/
/*** Autor:	  Juan Carlos Leguizamon                           ***/
/*** Fecha:	  Junio 14 de 2002                                 ***/
/*** Motor:	  SQL Server 7.0	Version interna: 1.00      ***/
/*********************************************************************/
AS
    cch_trabajador    char(10);
    csi_concepto      smallint;
    cti_secuencia     smallint;
    cch_agr_base      char(3);
    csi_cnc_base      smallint;
    cti_quinta_parte  smallint;
    cdc_monto_total   number(14,2);
    cdc_saldo_actual  number(14,2);
    cdc_porcentaje    number(4,2);
    cdc_cuota_fija    number(14,2);
    vdc_factor_01     number(15,6);
    vch_referencia    char(10);
    vch_referencia2   char(10);

    CURSOR cr_embargos IS
    SELECT
        e.trabajador, e.concepto, e.secuencia, e.agr_conceptos_base, 
        Nvl(e.concepto_base,0), Nvl(e.quinta_parte,0), 
        Nvl(e.monto_total,0), Nvl(e.saldo_actual,0),
        Nvl(e.porcentaje,0), Nvl(e.cuota_fija,0)
    FROM
        fdt_embargos e, trabajadores_grales tg, rel_conc_tipo_nomina rctn, fdt_embargos_tipo_nom fetn
    WHERE
	      e.compania = tg.compania And e.trabajador = tg.trabajador And
        rctn.compania = e.compania AND rctn.concepto = e.concepto AND rctn.tipo_nomina = pch_tipo_nomina AND
        fetn.compania = e.compania AND fetn.trabajador = e.trabajador AND fetn.concepto = e.concepto AND fetn.secuencia = e.secuencia AND fetn.tipo_nomina = pch_tipo_nomina  AND
        e.compania = pch_compania And
        tg.sit_trabajador = 1 And
        e.situacion = 1 And
        (
         (LTrim(RTrim(tg.trabajador)) = LTrim(RTrim(pch_trabajador)) And Nvl(LTrim(RTrim(pch_trabajador)) || 'vacio', 'vacio') <> 'vacio') OR
         (Nvl(LTrim(RTrim(pch_trabajador))||'vacio', 'vacio') = 'vacio' And 
          tg.trabajador in (SELECT trabajador FROM liquidaciones_enc 
                            WHERE compania = pch_compania And
                                  numero_liquidacion = psi_numero_liquidacion))
        );


BEGIN
    /* Eliminar las transacciones ya generadas por este incorpora */
    DELETE
        liquidaciones_det
    WHERE
        compania = pch_compania And
        tipo_nomina = pch_tipo_nomina And
        anio_acumular = psi_anio_acumular And
        mes_acumular = pti_mes_acumular And
        numero_liquidacion = psi_numero_liquidacion And
        origen_transaccion = 9 And
        (
         (trabajador = pch_trabajador And Nvl(LTrim(RTrim(pch_trabajador))||'vacio', 'vacio') <> 'vacio') OR
         (Nvl(LTrim(RTrim(pch_trabajador))||'vacio', 'vacio') = 'vacio')
        );


    /* Recorrer los embargos activos */
    OPEN cr_embargos;

    LOOP
        FETCH cr_embargos
        INTO cch_trabajador, csi_concepto, cti_secuencia, cch_agr_base, csi_cnc_base,
             cti_quinta_parte, cdc_monto_total, cdc_saldo_actual, cdc_porcentaje, cdc_cuota_fija;
        EXIT WHEN cr_embargos%NOTFOUND;


        IF (cdc_monto_total + cdc_saldo_actual > 0) OR (cdc_monto_total = 0) THEN
            /* factor_01 */
            IF cdc_monto_total + cdc_saldo_actual > 0 THEN
                IF cdc_saldo_actual - cdc_cuota_fija > 0 THEN
                    vdc_factor_01 := cdc_cuota_fija;
                ELSE
                    vdc_factor_01 := cdc_saldo_actual;
                END IF;
            ELSE
                vdc_factor_01 := cdc_cuota_fija;
            END IF;

            /* referencias */
            IF csi_cnc_base > 0 THEN
                vch_referencia := To_Char(csi_cnc_base);
                vch_referencia2 := 'C';
            ELSE
                vch_referencia := NVL(cch_agr_base,' ');
                vch_referencia2 := 'A';
            END IF;
            
            sp_alta_liquidaciones_det
		(
                pch_compania,
                pch_tipo_nomina,
                psi_anio_acumular,
                pti_mes_acumular,
                psi_numero_liquidacion,
                csi_concepto,
                cch_trabajador,
                vch_referencia,    /* referencia */
                cti_secuencia,     /* secuencia */--DCR Jul-17-07:Adecuacion de acuerdo a modificacion de JCL NOV-02-06
                vch_referencia2,   /* referencia2 */
                pdt_fecha_hoy,	   /* fecha */
                pdt_fecha_hoy,     /* fecha2*/
                cdc_porcentaje,	   /* tiempo */
                vdc_factor_01,     /* factor_01 */
                cti_secuencia, 	   /* factor_02 */
                cti_quinta_parte,  /* factor_03 */
                0,                 /* importe_reportado */
                0,       	   /* importe */
                null,              /* turno_trn */
                null,              /* puesto_trn */
                null,              /* agrupacion_01_trn */
                null,              /* dato_01_trn */
                null,              /* agrupacion_02_trn */
                null,              /* dato_02_trn */
                null,              /* agrupacion_03_trn */
                null,              /* dato_03_trn */
                null,              /* agrupacion_04_trn */
                null,              /* dato_04_trn */
                null,              /* coleccion_1 */
                null,              /* coleccion_2 */
                null,              /* coleccion_2 */
                9,    		   /* origen_transaccion */
                pch_usuario, 	   /* usuario_registro */
                pdt_fecha_hoy,	   /* fecha_registro */
                null,    	   /* usuario_proceso */
                null,		   /* fecha_proceso */
                null,              /* usuario_aplico */
                null,              /* fecha_aplico */
                1);    	           /* sit_transaccion */

           END IF; /* IF (cdc_monto_total + cdc_saldo_actual > 0) OR (cdc_monto_total = 0) */

    END LOOP; /* END LOOP */

    CLOSE cr_embargos;

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