declare 
 cursor c_mae is
 select cod_cliente
 from cxc_credito
 where cod_cia = '001'
 and estado='B';

 cursor c_pago(cliente in varchar2) is
 select a.* from cxc_enc_movimiento a,cxc_documento b
 where a.cod_cia='001'
 and   a.sucursal='001'
 and   a.cod_cliente = cliente
 and   a.tip_doc=b.tip_doc
 and   b.tip_saldo='D'
 and   a.mon_saldo<>0;

 conse  number:=2200;
 vmonto number:=0;
 vtot   number:=0;
begin 
  for c in c_mae
  loop
     conse:=conse+1;
     if conse/100=0 then
        commit;
     end if;     
     vtot :=0;
     insert into cxc_enc_pago_nota
        (Cod_Cia, Sucursal, Tip_Doc, Num_Doc, Doc_ref, Cod_Cliente, Persona, Fec_Doc,
         Ano_Fiscal, Per_Proceso, linea, Cod_Moneda, Tip_Cambio, Ind_Forma_Pago,
         Num_Asiento, Ind_Reg_En_Contabilidad, nom_asiento,
         Mon_Pago, Interes, Int_Mora, Ind_Estado, Cod_Agente, Des_Observacion, Ind_Externo,
         Ind_Impreso, Deposito, Recibo_Agente)
      values 
        ('001', '001', 'NCR', conse, conse, c.cod_cliente, null, to_date('28/02/2001','dd/mm/yyyy'),
         2001, 5, '001', 'CL', 320, 'E', 
         Null, 'N', null,
         0,0, 0, 'C', '1', null, null, 
         'N', Null, Null);
      for a in c_pago(c.cod_cliente)   
      loop
           vmonto := a.mon_saldo;
           vtot   := vtot + vmonto;
           Insert Into cxc_Det_Pago_Nota
           (Cod_Cia, Sucursal, Tip_Doc, Num_Doc, sucursal_ref, Tip_Doc_Ref, Num_Doc_Ref, Num_Parte,
            Fec_Vence, Mon_Pago, Interes, Int_Mora, Mon_Descuento)
           values ('001', '001', 'NCR', conse, a.sucursal,a.tip_doc, a.num_doc, 1,
                  a.fec_doc, vmonto, 0, 0, 0);
      end loop;     
      update cxc_enc_pago_nota
      set mon_pago=vtot
      where cod_cia = '001'
      and   sucursal = '001'
      and   tip_doc  = 'NCR'
      and   num_doc  = conse;
  end loop; 
end;


declare
 cursor c_pago is
 select sum(decode(b.tip_saldo,'D',a.mon_saldo,-a.mon_saldo))
 from cxc_enc_movimiento a,cxc_documento b
 where a.cod_cia='001'
 and   a.sucursal='001'
 and   a.tip_doc=b.tip_doc
 and   a.est_movimiento='A';


begin
  for a in c_pago
  loop
     update cxc_credito
     set saldo=a.saldo
     where cod_cia ='001'
     and   linea   ='001'
     and   cod_cliente = a.cod_cliente;    
  end loop;
end;
