CREATE OR REPLACE PROCEDURE sp_fdt_cierre_embargos_ns
(
    pch_compania      char,
    psi_id_calendario smallint
)
/*********************************************************************/
/*** Modulo:      Módulo Fiscal Colombiano - Embargos              ***/
/*** Descripcion: Actualiza saldos y controla situacion            ***/
/*** Autor:	  Juan Carlos Leguizamon                           ***/
/*** Fecha:	  Junio 14 de 2002                                 ***/
/*** Motor:	  Oracle 8i		Version interna: 1.0       ***/
/*********************************************************************/
--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;
    vvc_sql           varchar2(2500);
    vin_id_cursor     integer;
    vin_rows          integer;
BEGIN
    SELECT
        fecha_pago
    INTO
        vdt_fecha_pago 
    FROM
        calendario_procesos
    WHERE
        id_calendario = psi_id_calendario;

    UPDATE
        fdt_embargos
    SET
        saldo_actual = saldo_actual - 
        (SELECT SUM(importe) FROM transacciones_ns 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 tns.compania = pch_compania
            And tns.id_calendario = psi_id_calendario
            And tns.sit_transaccion = 2)
    WHERE 
        compania = pch_compania And 
        monto_total > 0 And
        situacion = 1 And
        EXISTS 
         (SELECT 1 FROM transacciones_ns 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 tns.compania = pch_compania
            And tns.id_calendario = psi_id_calendario);

    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 transacciones_ns 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 tns.compania = pch_compania
            And tns.id_calendario = psi_id_calendario);
        
  COMMIT WORK;
      
  EXCEPTION
  WHEN OTHERS THEN
       RAISE_APPLICATION_ERROR(-20002, SQLCODE||SQLERRM(SQLCODE));
       RETURN;

END;
/
CREATE PUBLIC SYNONYM sp_fdt_cierre_embargos_ns FOR ADAM.sp_fdt_cierre_embargos_ns;
GRANT EXECUTE ON sp_fdt_cierre_embargos_ns TO adama;
