IF OBJECT_ID('dbo.sp_fdt_incorpora_embargos_ns') IS NOT NULL
   DROP PROCEDURE dbo.sp_fdt_incorpora_embargos_ns
GO
CREATE PROCEDURE dbo.sp_fdt_incorpora_embargos_ns  
(  
    @pch_compania        char(4),  
    @psi_id_calendario   smallint,  
    @pch_clase_nomina    char(2),  
    @pch_trabajador      char(10),  
    @pvc_usuario         varchar(30),  
    @pdt_fecha_hoy       smalldatetime  
)  
AS  
/*********************************************************************/  
/*** Modulo:      Modulo Fiscal ADAM v3 - Embargos                 ***/  
/*** Descripcion: Incorpora embargos a la nómina                   ***/  
/*** Autor:   Juan Carlos Leguizamon                               ***/  
/*** Fecha:   Abril 23 de 2002                                     ***/  
-- Revisiones:   
-- Sept.01/04.   
-- Sept.02/04. Incorporar el saldo actual en el factor_03 (implica   
-- variable para que la política halle si debe utilizar "quinta parte"  
-- Junio 29/06.  Tener en cuenta nueva tabla fdt_embargos_tipo_nom ***/  
-- NOV-02-06. Incluir secuencia del embargo en el campo secuencia de la transacción
-- NOV-14-06. Solo incorporar los embargos cuyo consecutivo_oficina sea 10
/*********************************************************************/  
DECLARE   
    @cch_trabajador    char(10),  
    @csi_concepto      smallint,  
    @cti_secuencia     tinyint,  
    @cch_agr_base      char(3),  
    @csi_cnc_base      smallint,  
    @cti_quinta_parte  tinyint,  
    @cdc_monto_total   decimal(14,2),  
    @cdc_saldo_actual  decimal(14,2),  
    @cdc_porcentaje    decimal(5,2),  
    @cdc_cuota_fija    decimal(14,2),  
    @vdc_factor_01     decimal(15,6),  
    @vch_referencia    char(10),  
    @vch_referencia2   char(10),  
    @vch_tipo_nomina   char(2)  
BEGIN  
    IF EXISTS (SELECT 1 FROM cal_proc_cias WHERE compania = @pch_compania AND id_calendario = @psi_id_calendario AND sit_periodo = 2)  
    BEGIN  
        RAISERROR ('El periodo está cerrado', 16, 1)  
        RETURN  
    END  
  
    /* Hallar el Tipo de Nómina */  
    SELECT @vch_tipo_nomina = tipo_nomina FROM calendario_procesos  
    WHERE id_calendario = @psi_id_calendario  
  
    /* Eliminar las transacciones ya generadas por este incorpora */  
    DELETE  
        transacciones_ns  
    WHERE  
        compania = @pch_compania And  
        clase_nomina = @pch_clase_nomina And  
        id_calendario = @psi_id_calendario And  
        origen_transaccion = 9 And  
        (  
         (trabajador = @pch_trabajador And IsNull(LTrim(RTrim(@pch_trabajador)), '') <> '') OR  
         (IsNull(LTrim(RTrim(@pch_trabajador)), '') = '')  
        )  
  
    /* Recorrer los embargos activos */  
    DECLARE cr_embargos CURSOR FOR  
    SELECT  
        e.trabajador, e.concepto, e.secuencia, e.agr_conceptos_base,   
        IsNull(e.concepto_base,0), IsNull(e.quinta_parte,0),   
        IsNull(e.monto_total,0), IsNull(e.saldo_actual,0),  
        IsNull(e.porcentaje,0), IsNull(e.cuota_fija,0)  
    FROM fdt_embargos e  
    INNER JOIN trabajadores_grales tg ON e.compania = tg.compania And e.trabajador = tg.trabajador AND tg.sit_trabajador = 1  
    INNER JOIN rel_conc_tipo_nomina rctn ON rctn.compania = e.compania AND rctn.concepto = e.concepto AND rctn.tipo_nomina = @vch_tipo_nomina  
    INNER JOIN fdt_embargos_tipo_nom fetn ON fetn.compania = e.compania AND fetn.trabajador = e.trabajador AND fetn.concepto = e.concepto AND fetn.secuencia = e.secuencia AND fetn.tipo_nomina = @vch_tipo_nomina  
    WHERE  
        e.compania = @pch_compania And  
        tg.clase_nomina = @pch_clase_nomina And  
        e.situacion = 1 And  
        (  
         (e.trabajador = @pch_trabajador And IsNull(LTrim(RTrim(@pch_trabajador)), '') <> '') OR  
         (IsNull(LTrim(RTrim(@pch_trabajador)), '') = '')  
        )   
    -- jcl nov-14-06 ajuste para Avidesa MacPollo
        and e.consecutivo_oficina = '10'
  
    OPEN cr_embargos  
  
    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  
  
    WHILE @@FETCH_STATUS = 0   
    BEGIN  
        IF (@cdc_monto_total + @cdc_saldo_actual > 0) OR (@cdc_monto_total = 0)  
        BEGIN  
            /* factor_01 */  
            IF @cdc_monto_total + @cdc_saldo_actual > 0  
     BEGIN  
                IF @cdc_saldo_actual - @cdc_cuota_fija > 0  
                    SET @vdc_factor_01 = @cdc_cuota_fija  
                ELSE  
                    SET @vdc_factor_01 = @cdc_saldo_actual  
     END  
     ELSE  
                    SET @vdc_factor_01 = @cdc_cuota_fija  
  
  
        /* referencias */                          
        IF @csi_cnc_base > 0  
            SELECT @vch_referencia = Convert(varchar, @csi_cnc_base),  
                   @vch_referencia2 = 'C'  
        ELSE  
            SELECT @vch_referencia = @cch_agr_base,  
                   @vch_referencia2 = 'A'  
  
        SET @vch_referencia = ISNULL(@vch_referencia, '')  
          
        EXEC sp_alta_transacciones_ns  
            @pch_compania,  
            @pch_clase_nomina,  
            @psi_id_calendario,  
            @csi_concepto,  
            @cch_trabajador,  
            @vch_referencia,   /* referencia */  
            @cti_secuencia,      /* secuencia */  -- 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 */  
            9,      /* origen_transaccion */  
            @pvc_usuario,  /* usuario_registro */  
            @pdt_fecha_hoy, /* fecha_registro */  
            null,      /* usuario_proceso */  
            null,  /* fecha_proceso */  
            null,      /* usuario_cambio */  
            null,      /* fecha_cambio */  
            1,      /* sit_transaccion */  
            1          /* checa bajas del periodo */  
  
        END /* IF (@cdc_monto_total + @cdc_saldo_actual > 0) OR (@cdc_monto_total = 0) */  
  
        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  
  
    END /* WHILE @@FETCH_STATUS = 0 */  
  
    CLOSE cr_embargos  
    DEALLOCATE cr_embargos  
END  
GO
GRANT EXECUTE ON dbo.sp_fdt_incorpora_embargos_ns TO PUBLIC
GO
