IF OBJECT_ID('dbo.sp_var_aimtr_nnnn') IS NOT NULL
    DROP PROCEDURE dbo.sp_var_aimtr_nnnn  
GO
CREATE PROCEDURE dbo.sp_var_aimtr_nnnn  
(
    @pbi_calind bit,  
    @pch_compania char(4),  
    @pch_clase_nomina char(2),  
    @psi_id_cal smallint,  
    @pch_tipo_nomina char(2),  
    @psi_anio smallint,  
    @pti_periodo tinyint,  
    @pdt_fec_termino smalldatetime,  
    @pch_trabajador char(10),  
    @psi_concepto smallint,  
    @pch_referencia char(10),  
    @psi_secuencia smallint,   
    @chsub_var1 varchar(10),  
    @chsub_var2 varchar(10),  
    @mvar_value decimal(19,6) OUTPUT,   
    @chvar_value varchar(40) OUTPUT,  
    @pin_id_sesion smallint
)
AS 
/***************************************************************************************/
/*** Modulo:      Módulo Fiscal Colombiano ADAM V.3 - Embargos                       ***/
/*** Descripcion: Obtiene el valor acumulado de un mes para un embargo específico    ***/
/*** Autor:	      Juan Carlos Leguizamón                                             ***/
/*** Fecha:	      Noviembre 2 de 2006                                                ***/
/***************************************************************************************/
BEGIN 
DECLARE 
    @vdc_valor_ns decimal(19,6),
    @vdc_valor_ni decimal(19,6),
    @vvc_aux varchar(40),   
    @vch_class char(2),    
    @vti_flag tinyint, 
    @vti_status tinyint, 
    @vti_mes tinyint,
    @csi_id_cal smallint,
    @cti_sit_per tinyint,
    @vvc_sql varchar(4000)
 
    SELECT @vdc_valor_ns = 0, @vdc_valor_ni = 0, @mvar_value = 0, @chvar_value = NULL

    IF @pti_periodo = 0
        EXEC sp_varname 'mes_acumular', @vti_mes OUTPUT, @vvc_aux OUTPUT, @vch_class OUTPUT, @vti_flag OUTPUT, @vti_status OUTPUT, @pin_id_sesion  
    ELSE
        SELECT @vti_mes = mes_acumular     
        FROM calendario_procesos    
        WHERE tipo_nomina = @pch_tipo_nomina    
           AND anio = @psi_anio    
           AND periodo = @pti_periodo     

    SELECT
        @vdc_valor_ni = sum(importe)
    FROM
        liquidaciones_det
    WHERE
        compania = @pch_compania And
        anio_acumular = @psi_anio And
        mes_acumular = @vti_mes And
        concepto = convert(smallint, @chsub_var1) And
        trabajador = @pch_trabajador And
        referencia = @pch_referencia And
        secuencia = @psi_secuencia And
        sit_transaccion = 2


    SELECT TOP 0 importe INTO ##trans_emb FROM transacciones_ns

    DECLARE cr_trans CURSOR FOR
    SELECT a.id_calendario, b.sit_periodo 
    FROM calendario_procesos a
    INNER JOIN cal_proc_cias b ON a.id_calendario = b.id_calendario
    INNER JOIN rel_conc_tipo_nomina c ON c.compania = b.compania AND c.tipo_nomina = a.tipo_nomina
    WHERE b.compania = @pch_compania
      AND a.anio = @psi_anio
      AND a.mes_acumular = @vti_mes
      AND a.tipo_nomina + RTRIM(a.anio) + RTRIM(a.periodo) <> @pch_tipo_nomina + RTRIM(@psi_anio) + RTRIM(@pti_periodo)
      AND c.concepto = @psi_concepto
      
    OPEN cr_trans

    FETCH NEXT FROM cr_trans INTO @csi_id_cal, @cti_sit_per

    WHILE @@FETCH_STATUS = 0
    BEGIN
        IF @cti_sit_per = 2
        Begin
            SET @vvc_sql = 
             'INSERT INTO ##trans_emb (importe)' + 
            ' SELECT importe FROM trans_' + RTRIM(@pch_compania) + '_' + RTRIM(@csi_id_cal) + 
            ' WHERE compania = ''' + @pch_compania + '''' + 
              ' AND clase_nomina = ''' + @pch_clase_nomina + '''' +
              ' AND id_calendario = ' + RTRIM(@csi_id_cal) + 
              ' AND concepto = convert(smallint, ' + RTRIM(@chsub_var1) + ')' +
              ' AND trabajador = ''' + @pch_trabajador + '''' + 
              ' AND referencia = ''' + @pch_referencia + '''' +
              ' AND secuencia = ' + RTRIM(@psi_secuencia) + 
              ' AND sit_transaccion = 2'
            EXEC (@vvc_sql)
        End
        ELSE
            INSERT INTO ##trans_emb (importe)
            SELECT importe FROM transacciones_ns
            WHERE compania = @pch_compania
              AND clase_nomina = @pch_clase_nomina
              AND id_calendario = @csi_id_cal
              AND concepto = convert(smallint, @chsub_var1)
              AND trabajador = @pch_trabajador
              AND referencia = @pch_referencia
              AND secuencia = @psi_secuencia
              AND sit_transaccion = 2
        
        FETCH NEXT FROM cr_trans INTO @csi_id_cal, @cti_sit_per
    END
    CLOSE cr_trans
    DEALLOCATE cr_trans

    SELECT @vdc_valor_ns = SUM(importe) FROM ##trans_emb
    DROP TABLE ##trans_emb

    SELECT @mvar_value = IsNull(@vdc_valor_ns, 0) + IsNull(@vdc_valor_ni, 0)
    RETURN
END
GO
GRANT EXECUTE ON dbo.sp_var_aimtr_nnnn   TO PUBLIC
GO
