CREATE OR REPLACE PROCEDURE sp_fdt_cierre_embargos_ni
(  
    pch_compania char,  
    pch_trabajador char,  
    pch_tipo_nom char,  
    psi_anio_acum number,  
    pti_mes_acum number,  
    psi_num_liq number
)  
/*****************************************************************/  
/*** Modulo:      Módulo Fiscal Colombiano - Embargos          ***/  
/*** Descripcion: Actualiza saldos y controla situacion en NI  ***/  
/*** Autor:       Juan Carlos Leguizamon                       ***/  
/*** Fecha:       Sep-22-06                                    ***/  
/*****************************************************************/  
--DCR: JUL-17-07: Pasada a Oracle
--DCR: Julio-24-07: Cuando hay un calculo excedido, no deberia descontar esa cuota, pues al trabajador, no se le descontó
AS  
    vdt_fecha_pago date;
BEGIN  
    SELECT fecha_liquidacion
    INTO vdt_fecha_pago
    FROM liquidaciones_enc  
    WHERE compania = pch_compania  
    AND tipo_nomina = pch_tipo_nom  
    AND anio_acumular = psi_anio_acum  
    AND mes_acumular = pti_mes_acum  
    AND numero_liquidacion = psi_num_liq  
    AND trabajador = pch_trabajador;
    
    UPDATE
        fdt_embargos
    SET
        saldo_actual = saldo_actual - 
        (SELECT SUM(importe) FROM liquidaciones_det tns 
          WHERE tns.compania = fdt_embargos.compania 
          AND tns.trabajador = fdt_embargos.trabajador
          AND tns.concepto = fdt_embargos.concepto 
          AND tns.factor_02 = fdt_embargos.secuencia 
          AND compania = pch_compania  
          AND tipo_nomina = pch_tipo_nom  
          AND anio_acumular = psi_anio_acum  
          AND mes_acumular = pti_mes_acum  
          AND numero_liquidacion = psi_num_liq  
          AND trabajador = pch_trabajador
          AND tns.sit_transaccion = 2)
    WHERE 
        compania = pch_compania And 
        monto_total > 0 And
        situacion = 1 And
        EXISTS 
         (SELECT 1 FROM liquidaciones_det tns
          WHERE tns.compania = fdt_embargos.compania
          AND tns.trabajador = fdt_embargos.trabajador
          AND tns.concepto = fdt_embargos.concepto
          AND tns.factor_02 = fdt_embargos.secuencia
          AND compania = pch_compania  
          AND tipo_nomina = pch_tipo_nom  
          AND anio_acumular = psi_anio_acum  
          AND mes_acumular = pti_mes_acum  
          AND numero_liquidacion = psi_num_liq  
          AND trabajador = pch_trabajador);
    
    UPDATE  
        fdt_embargos  
    SET  
        saldo_actual = 0, situacion = 2, fecha_baja = vdt_fecha_pago  
    WHERE  
        compania = pch_compania And  
        monto_total > 0 And  
        situacion = 1 And  
        saldo_actual <= 0 And
        EXISTS 
         (SELECT 1 FROM liquidaciones_det
         WHERE compania = pch_compania  
         AND tipo_nomina = pch_tipo_nom  
         AND anio_acumular = psi_anio_acum  
         AND mes_acumular = pti_mes_acum  
         AND numero_liquidacion = psi_num_liq  
         AND trabajador = pch_trabajador);
        
  COMMIT WORK;
      
  EXCEPTION
  WHEN OTHERS THEN
       RAISE_APPLICATION_ERROR(-20002, SQLCODE||SQLERRM(SQLCODE));
       RETURN;

END;
/
CREATE OR REPLACE PUBLIC SYNONYM sp_fdt_cierre_embargos_ni FOR ADAM.sp_fdt_cierre_embargos_ni;
GRANT EXECUTE ON sp_fdt_cierre_embargos_ni TO adama;
