IF OBJECT_ID('dbo.sp_fco_crea_embargos_mm') IS NOT NULL
   DROP PROCEDURE dbo.sp_fco_crea_embargos_mm
GO
CREATE PROCEDURE sp_fco_crea_embargos_mm  
(
  @psi_id_rep  smallint,
  @pvc_usuario varchar(30),
  @pti_cod_rep tinyint,
  @pch_trab_dde char(10) = '',
  @pch_trab_hta char(10) = '',
  @pch_agr_1 char(10) = '',
  @pch_agr_2 char(10) = '',
  @pch_agr_3 char(10) = '',
  @pch_dato_dde char(10) = '',
  @pch_dato_hta char(10) = '',--hasta aqui serian parametros fijos
  @pch_compania char(4),
  @psi_anio char(5),
  @pti_mes char(3),
  @pch_ciudad_pago char(2)
)
/**********************************************************************/  
/*** Modulo:      Módulo Fiscal ADAM V.3                            ***/  
/*** Descripcion: Medio Magnético Embargos                          ***/  
-- REVISION GENERAL Juan Carlos Leguizamon  
-- DIC. 06/04. PARA SURTIGAS  
/**********************************************************************/  
/*** Adecuacion: Diana Cecilia Rios Peinado                         ***/  
/*** Mayo 15 de 2005                                                ***/  
--OCT-01-05: DCRP, Pasado a SQL de Oracle  
--NOV-09-06 JCL, Revisiones en Gracetales
AS  
DECLARE  
 @vch_agr_embargos  CHAR(3),  
 @csi_id_cal        INTEGER, --calendario_procesos.id_calendario%TYPE;  
 @vvc_sql           VARCHAR(2000),  
 @vvc_tabla         VARCHAR(16),    
 @vsi_registros     INTEGER,  
 @vdt_fecha_hoy    SMALLDATETIME,  
  
  @vsi_anio        smallint,  
  @vti_mes         tinyint,  
  @vch_ciudad_pago char(2),  
    
  @vti_trab_dde tinyint,  
  @vti_trab_hta tinyint  
      
  
BEGIN  
  SET @vdt_fecha_hoy = getdate()  
  
  SET @vsi_anio = CONVERT(smallint, @psi_anio)    
  SET @vti_mes = CONVERT(tinyint, @pti_mes)  
  SET @vch_ciudad_pago = LTrim(RTrim(@pch_ciudad_pago))  
    
  /* Hallar la agrupación de embargos */  
  SELECT @vch_agr_embargos = dato  
  FROM vw_fdt_parametros  
  WHERE pais = 'COL'  
    AND compania = @pch_compania  
    AND parametro = 'otros'  
    AND secuencia = 1  
    
  /* ELIMINAR DATOS ACTUALES */      
  DELETE fco_embargos_trans      
  WHERE id_rep = @psi_id_rep  
    AND usuariow = @pvc_usuario  
    AND cod_rep = @pti_cod_rep  
        
  DELETE fco_reportes_mm  
  WHERE id_rep = @psi_id_rep  
    AND usuariow = @pvc_usuario  
    AND cod_rep = @pti_cod_rep  
  
   SET @vti_trab_dde = 0  
   IF IsNull(LTrim(RTrim(@pch_trab_dde)),'') = ''  
      SET @vti_trab_dde = 1  
    
   SET @vti_trab_hta = 0  
   IF IsNull(LTrim(RTrim(@pch_trab_hta)),'') = ''  
      SET @vti_trab_hta = 1  
      
  DECLARE cr_id_calendario  CURSOR FOR  
  SELECT      
    cp.id_calendario      
  FROM      
    calendario_procesos cp,   
    cal_proc_cias cpc      
  WHERE      
    cp.id_calendario = cpc.id_calendario   
    AND cpc.compania = @pch_compania   
    AND cp.anio = @vsi_anio   
    AND cp.mes_acumular = @vti_mes   
    AND cpc.sit_periodo = 2  
        AND cp.tipo_nomina <> 'CF'  /* No incluya en Med. MAgn valores cesantias embargadas - SCAV - 20060301 */            
  
  OPEN cr_id_calendario  
  FETCH NEXT FROM cr_id_calendario INTO @csi_id_cal  
  
  WHILE @@FETCH_STATUS = 0  
  BEGIN--w1  
  
    SET @vvc_sql =   
     'INSERT INTO fco_embargos_trans ' +  
    '(id_rep, usuariow, cod_rep, compania, anio, mes, trabajador, concepto, secuencia, importe)' +  
    ' SELECT ' +  RTrim(@psi_id_rep) + ', ''' + @pvc_usuario + ''', ' + RTrim(@pti_cod_rep) + ', ' +  
        ' tns.compania, ' + RTrim(@vsi_anio) + ',' + RTrim(@vti_mes) + ',' +      
        ' tns.trabajador, tns.concepto, tns.factor_02, SUM(tns.importe)' +      
    ' FROM' +      
        ' trans_' + RTrim(@pch_compania) + '_' + RTrim(@csi_id_cal) + ' tns,' +      
        ' rel_conceptos_agr rca' +      
    ' WHERE' +      
        ' tns.compania = rca.compania And tns.concepto = rca.concepto And' +      
        ' rca.agr_conceptos = ''' + @vch_agr_embargos + ''' And' +      
        ' rca.signo = ''+'' And' +  
        ' tns.compania = ''' + @pch_compania + ''' And' +      
        ' tns.id_calendario = ' + RTrim(@csi_id_cal) + ' And' +      
        ' tns.importe > 0' +  
        ' AND ' +  
        ' (( '+ RTrim(@vti_trab_dde) + ' = 1) OR (tns.trabajador >= RTrim(''' + @pch_trab_dde + ''') AND '+ RTrim(@vti_trab_dde) + ' = 0)) AND' +  
        ' (( '+ RTrim(@vti_trab_hta) + ' = 1) OR (tns.trabajador <= RTrim(''' + @pch_trab_hta + ''') AND '+ RTrim(@vti_trab_hta) + ' = 0)) ' +  
    ' GROUP BY' +      
        ' tns.compania, tns.trabajador, tns.concepto, tns.factor_02'  
  
  EXECUTE (@vvc_sql)  
  FETCH NEXT FROM cr_id_calendario INTO @csi_id_cal  
 END--w1  
  CLOSE cr_id_calendario  
 DEALLOCATE cr_id_calendario  
  
  /* INSERTAR REGISTROS DE LIQUIDACIONES */    
  INSERT INTO   
    fco_embargos_trans      
  SELECT      
    @psi_id_rep, @pvc_usuario, @pti_cod_rep, ld.compania, @vsi_anio, @vti_mes, ld.trabajador, ld.concepto, ld.factor_02, SUM(ld.importe)      
  FROM      
    liquidaciones_enc le, liquidaciones_det ld, rel_conceptos_agr rca      
  WHERE      
    le.compania = ld.compania   
    AND le.numero_liquidacion = ld.numero_liquidacion   
    AND ld.compania = rca.compania   
    AND ld.concepto = rca.concepto   
    AND rca.agr_conceptos = @vch_agr_embargos   
    AND rca.signo = '+'   
    AND ld.compania = @pch_compania   
    AND le.sit_liquidacion = 2   
    AND ld.sit_transaccion = 2   
    AND ld.anio_acumular = @vsi_anio   
    AND ld.mes_acumular = @vti_mes   
    AND ld.importe > 0     
    AND ((@vti_trab_dde = 1) OR (ld.trabajador >= RTrim(@pch_trab_dde) AND @vti_trab_dde = 0)) AND  
       ((@vti_trab_hta = 1) OR (ld.trabajador <= RTrim(@pch_trab_hta) AND @vti_trab_hta = 0))        
  GROUP BY       
    ld.compania, ld.trabajador, ld.concepto, ld.factor_02  
  
  -- NO PROCESAR LOS TRABAJADORES FUERA DEL RANGO DE DATOS DE LA AGR. 4  
  IF IsNull(LTrim(RTrim(@pch_dato_dde)),'') <> ''   
 BEGIN  
    DELETE fco_embargos_trans  
    WHERE id_rep = @psi_id_rep  
    AND usuariow = @pvc_usuario  
    AND cod_rep = @pti_cod_rep  
    AND trabajador IN  
      (SELECT trabajador FROM rel_trab_agr  
      WHERE agrupacion = @pch_agr_1  
      AND dato < @pch_dato_dde)  
  END  
      
  IF IsNull(LTrim(RTrim(@pch_dato_hta)),'') <> ''  
 BEGIN  
    DELETE fco_embargos_trans  
    WHERE id_rep = @psi_id_rep  
    AND usuariow = @pvc_usuario  
    AND cod_rep = @pti_cod_rep      
    AND trabajador IN  
        (SELECT trabajador FROM rel_trab_agr  
         WHERE agrupacion = @pch_agr_1  
         AND dato > @pch_dato_hta)  
  END  
          
  /* GENERACION DEL REGISTRO DE DATOS */  
  INSERT INTO fco_embargos_mm_paso0  
  SELECT @psi_id_rep, @pvc_usuario, @pti_cod_rep,  
        CONVERT(char(4), @psi_anio) +           
        CASE WHEN @pti_mes <= 9 THEN '0' + CONVERT(char(1), @pti_mes) ELSE CONVERT(char(2), @pti_mes) END +          
        CASE @pti_mes WHEN 2 THEN '28' ELSE '30' END +          
        Replicate('0', 4 - Len(IsNull(RTrim(a.oficina_origen),'10'))) + IsNull(RTrim(a.oficina_origen),'10') +                 
        Replicate('0', 4 - Len(IsNull(RTrim(a.oficina_destino),'10'))) + IsNull(RTrim(a.oficina_destino),'10') +              
        Substring(RTrim(clase_deposito),1,1) +              
        Space(10 - Len(RTrim(LTRim(numero_expediente)))) + RTrim(LTRim(numero_expediente)) +              
        Replicate('0', 12 - Len(IsNull(RTrim(a.codigo_juzgado),'0'))) + IsNull(RTrim(a.codigo_juzgado),'0') +              
        Replicate(' ', 12 - Len(IsNull(RTrim(a.cuenta),''))) + IsNull(RTrim(a.cuenta),'') +              
        Replicate(' ', 13 - Len(RTrim(Floor(Sum(IsNull(b.importe,0)))))) + RTrim(Floor(Sum(IsNull(b.importe,0)))) + '.00' +              
        Substring(RTrim(case when tipo_id_demandante in (0,3,5,6) then 3 else tipo_id_demandante end), 1, 1) +              
        Replicate(' ', 11 - Len(IsNull(RTrim(a.id_demandante),'0'))) + IsNull(RTrim(a.id_demandante),'0') +              
        '1' +              
        Replicate(' ', 11 - Len(IsNull(RTrim(a.cedula),'0'))) + IsNull(RTrim(a.cedula),'0') +              
        Convert(char(20), a.apellido_demandante) +              
        Convert(char(20), a.nombre_demandante) +              
        Convert(char(20), a.apellidos) +              
        Convert(char(20), a.nombres) registro              
  FROM       
    vw_fdt_embargos a, fco_embargos_trans b      
  WHERE      
    a.compania = b.compania   
    AND a.trabajador = b.trabajador   
    AND a.concepto = b.concepto   
    AND a.secuencia = b.secuencia   
    AND b.compania = @pch_compania   
    AND b.anio = @vsi_anio   
    AND b.mes = @vti_mes   
    AND a.banco = 1    
    AND (a.ciudad_pago = @vch_ciudad_pago or @vch_ciudad_pago = '')  
    AND b.id_rep = @psi_id_rep  
    AND b.usuariow = @pvc_usuario  
    AND b.cod_rep = @pti_cod_rep  
  GROUP BY      
    a.oficina_origen, a.oficina_destino, a.clase_deposito, a.numero_expediente,      
    a.codigo_juzgado, a.cuenta, a.tipo_id_demandante, a.id_demandante,      
    a.cedula, a.apellido_demandante, a.nombre_demandante,      
    a.apellidos, a.nombres  
  
  SELECT @psi_id_rep AS id_rep, @pvc_usuario AS usuario, @pti_cod_rep AS cod_rep,  
  IDENTITY(int, 1, 1) AS secuencia, registro  
 INTO #tmp_paso  
  FROM fco_embargos_mm_paso0  
  WHERE id_rep = @psi_id_rep  
    AND usuariow = @pvc_usuario  
    AND cod_rep = @pti_cod_rep  
  
  INSERT INTO fco_embargos_mm_paso   
 SELECT * FROM #tmp_paso  
  
 DROP TABLE #tmp_paso  
  
  --se guarda con secuencia de archivo 1  
  INSERT INTO   
    fco_reportes_mm      
  SELECT       
    @psi_id_rep, @pvc_usuario,  @pti_cod_rep, 1,   
    consecutivo + 2,  
  Replicate(' ', 6 - LEN(RTrim(consecutivo)))  + RTrim(consecutivo) + registro   
  FROM      
    fco_embargos_mm_paso  
  WHERE id_rep = @psi_id_rep  
    AND usuariow = @pvc_usuario  
    AND cod_rep = @pti_cod_rep  
      
  SELECT @vsi_registros = MAX(consecutivo)      
  FROM   
    fco_embargos_mm_paso  
  WHERE id_rep = @psi_id_rep  
    AND usuariow = @pvc_usuario  
    AND cod_rep = @pti_cod_rep  
      
  DELETE fco_embargos_mm_paso0  
  WHERE id_rep = @psi_id_rep  
    AND usuariow = @pvc_usuario  
    AND cod_rep = @pti_cod_rep  
    
  DELETE fco_embargos_mm_paso  
  WHERE id_rep = @psi_id_rep  
    AND usuariow = @pvc_usuario  
    AND cod_rep = @pti_cod_rep  
    
  SET @vsi_registros = IsNull(@vsi_registros, 0)  
  
  INSERT INTO   
    fco_reportes_mm      
  SELECT    
    @psi_id_rep, @pvc_usuario,  @pti_cod_rep, 1,  
    1,       
    Space(23) +  
    Right('          ' + RTrim(@vsi_registros), 10) +  
    Space(40) +  
    '3' +        /* Se cambio '5' segun solicitud GRAC Nov 11/04 - SCA 20050131 */        
    ' ' + SubString(registro_fiscal, 1, 10) +      
    Space(11) +  /* Se corrigió (12) segun especificaciones técnica DETE Ene 01/05 - SCA 20050131 */              
    Convert(char(40), nombre_cia) +   
    Replicate(' ', 51)  
  FROM      
    vw_fco_companias      
  WHERE      
    compania = @pch_compania  
            
END  
GO
GRANT EXECUTE ON dbo.sp_fco_crea_embargos_mm TO PUBLIC
GO
