-- Determina las diferencias que pueda tener las existencias de inventario contra el movimiento
drop table xx;
create table xx as
select  a.cod_bodega,a.cod_articulo,sum(decode(a.tip_movto,'E',a.can_articulo,-a.can_articulo)) cantidad
from inv_detmovimiento a,inv_encabmovimiento b
where a.cod_cia=b.cod_cia
and   a.sucursal=b.sucursal
and   a.tip_movto=b.tip_movto
and   a.cod_movto=b.cod_movto
and   a.num_docto=b.num_docto
and   b.estado='D'
group by a.cod_bodega,a.cod_articulo;


select a.cod_bodega,a.cod_articulo,a.can_existe,b.cantidad
from inv_artic_bodega a,xx b
where a.cod_bodega=b.cod_bodega
and a.cod_articulo=b.cod_articulo
and a.can_existe<>b.cantidad;

-- Actualiza las existencias de acuerdo a las diferencias encontradas
-- Solo se debe ejecutar si se considera necesario.


declare cursor xy is 
   select a.cod_bodega,a.cod_articulo,a.can_existe,b.cantidad
   from inv_artic_bodega a,xx b
   where a.cod_bodega=b.cod_bodega
   and a.cod_articulo=b.cod_articulo
   and a.can_existe<>b.cantidad
   and b.cantidad>=0;
begin
  for a in xy loop
     update inv_artic_Bodega
     set can_existe=a.cantidad
     where cod_cia='001'
     and   cod_bodega=a.cod_bodega
     and   cod_articulo=a.cod_articulo;

     update inv_lote_artic_Bodega
     set can_existe=a.cantidad
     where cod_cia='001'
     and   cod_bodega=a.cod_bodega
     and   cod_articulo=a.cod_articulo;

  end loop;
end;


delete inv_acum_periodo
where cod_cia='001'
and ano_fiscal=2005
and per_proceso=12
and clase_movto<>'EI';

commit;

drop table xx;
create table xx as 
select  a.cod_cia,a.sucursal,a.cod_bodega,a.cod_articulo,b.ano_fiscal,b.per_proceso,
c.clase_movto,sum(a.can_articulo) cantidad,sum(a.SUB_TOTAL) monto
from inv_detmovimiento a,inv_encabmovimiento b,inv_concepmovto c
where a.cod_cia   = b.cod_cia
and   a.sucursal  = b.sucursal
and   a.tip_movto = b.tip_movto
and   a.cod_movto = b.cod_movto
and   a.num_docto = b.num_docto
and   a.cod_cia   = c.cod_cia
and   a.tip_movto = c.tip_Movto
and   a.cod_movto = c.cod_movto
and   b.ano_fiscal=2005
and   b.per_proceso=12
and   b.estado    = 'D'
group by a.cod_cia,a.sucursal,a.cod_bodega,a.cod_articulo,
b.ano_fiscal,b.per_proceso,c.clase_movto;

insert into inv_acum_periodo
select * from xx;

commit;

drop table xy;
create table xy  as
select  b.cia cod_cia,b.sucursal,b.bodega cod_bodega,b.articulo cod_articulo,
2004 ano_fiscal,4 per_proceso,'SV' clase_movto,
sum(b.cantidad) cantidad,sum(b.costo*b.cantidad) monto
from venfactura a,vendetfactura b
where a.cia=b.cia
and   a.sucursal=b.sucursal
and   a.documento=b.documento
and   trunc(a.fecha) between to_date('01/01/2004','dd/mm/yyyy')
and   to_date('31/01/2004','dd/mm/yyyy')
and   a.estado='A'
group by b.cia,b.sucursal,b.bodega,b.articulo,2004,4,'SV';


select a.cod_articulo,a.cantidad,a.monto,b.cantidad canxx,b.monto monxx
from inv_acum_periodo a,xy b
where a.cod_cia=b.cod_cia
and   a.sucursal=b.sucursal
and   a.cod_bodega=b.cod_Bodega
and   a.clase_movto=b.clase_movto
and   a.cod_articulo=b.cod_articulo
and   a.ano_fiscal=2004
and   a.per_proceso=4
and   b.monto-a.monto>10;





declare cursor xx is 
select a.documento,a.moneda,a.tipocambio,a.cambiobase
from venfactura a
where a.cia='001'
and   a.sucursal='001'
and   trunc(a.fecha)>=to_date('01/11/2003','dd/mm/yyyy')
and   a.moneda<>'CL'
order by a.fecha;
begin
  for a in xx loop
    update vendetfactura
    set costo=costo/a.cambiobase
    where cia='001'
    and   sucursal='001'
    and   documento=a.documento
    and   costo>precio;
  end loop;
end;

      INSERT INTO SALDO(COD_CLIENTE,DEBITO,CREDITO) 
      SELECT A.COD_CLIENTE,SUM(DECODE(B.TIP_SALDO,'D',A.MON_DOCTO,0)),
             SUM(DECODE(B.TIP_SALDO,'C',A.MON_DOCTO,0))
      FROM   CXC_ENC_MOVIMIENTO A,
             CXC_DOCUMENTO B
      WHERE  A.COD_CIA = '001'
      AND    A.LINEA = '001'
      AND    A.ANO_FISCAL = 2004
      AND    A.PER_PROCESO = 2
      AND    A.ESTADO = 'A'
      AND    A.TIP_DOC = B.TIP_DOC
      GROUP BY A.COD_CLIENTE;

      INSERT INTO SALDO(COD_CLIENTE,DEBITO,CREDITO) 
      SELECT A.COD_CLIENTE,SUM(DECODE(B.TIP_SALDO,'D',C.MON_PAGO+C.MON_DESCUENTO,0)),
             SUM(DECODE(B.TIP_SALDO,'C',C.MON_PAGO+C.MON_DESCUENTO,0))
      FROM   CXC_ENC_PAGO_NOTA A,
             CXC_DOCUMENTO B,
           CXC_DET_PAGO_NOTA C
      WHERE  A.COD_CIA = '001'
      AND    C.COD_CIA = '001'
      AND    A.SUCURSAL= C.SUCURSAL
      AND    A.TIP_DOC = C.TIP_DOC
      AND    A.NUM_DOC = C.NUM_DOC
      AND    A.LINEA = '001'
      AND    A.ANO_FISCAL = 2004
      AND    A.PER_PROCESO = 2
      AND    A.ESTADO = 'A'
      AND    A.TIP_DOC_REF IS NULL
      AND    A.TIP_DOC = B.TIP_DOC
      GROUP BY A.COD_CLIENTE;


      INSERT INTO SALDO(COD_CLIENTE,SALDO) 
      SELECT A.COD_CLIENTE,NVL(SUM(DECODE(B.TIP_SALDO,'D',A.MON_DOCTO,-A.MON_DOCTO)),0)
      FROM   CXC_ENC_MOVIMIENTO A,
             CXC_DOCUMENTO B
      WHERE  A.COD_CIA = '001'
      AND    A.LINEA = '001'
      AND   (A.ANO_FISCAL*100+A.PER_PROCESO) < 200402
      AND    A.ESTADO = 'A'
      AND    A.TIP_DOC = B.TIP_DOC
      GROUP BY A.COD_CLIENTE;


      INSERT INTO SALDO(COD_CLIENTE,SALDO) 
      SELECT A.COD_CLIENTE,NVL(SUM(DECODE(B.TIP_SALDO,'D',(C.MON_PAGO+C.MON_DESCUENTO),-(C.MON_PAGO+C.MON_DESCUENTO))),0)
      FROM   CXC_ENC_PAGO_NOTA A,
             CXC_DOCUMENTO B,
             CXC_DET_PAGO_NOTA C
      WHERE  A.COD_CIA = '001'
      AND    C.COD_CIA = '001'
      AND    a.sucursal=c.sucursal
      AND    A.TIP_DOC = C.TIP_DOC
      AND    A.NUM_DOC = C.NUM_DOC
      AND    A.LINEA = '001'
      AND   (A.ANO_FISCAL*100+A.PER_PROCESO) < 200402
      AND    A.ESTADO = 'A'
      AND    A.TIP_DOC_REF IS NULL
      AND    A.TIP_DOC = B.TIP_DOC
      GROUP BY A.COD_CLIENTE;


drop table saldoper;
create table saldoper as
select cod_cliente,sum(nvl(saldo,0)+nvl(debito,0)-nvl(credito,0)) saldo from saldo
group by cod_cliente;



create table saldodia as 
select cod_cliente,sum(mon_saldo) from xx
group by cod_cliente;




 create table saldodia as 
 select cod_cliente,sum(mon_saldo)  saldo from cxc_movimientotmp
 group by cod_cliente;



select a.cod_articulo,a.clase_movto,a.monto,b.monto monxx,a.monto-b.monto dife
from inv_acum_periodo a,xx b
where a.cod_cia=b.cod_cia
and   a.sucursal=b.sucursal
and   a.clase_movto=b.clase_movto
and   a.cod_articulo=b.cod_articulo
and   a.cod_bodega=b.cod_bodega
and   a.ano_fiscal=2004
and   a.per_proceso=9
and   b.ano_fiscal=2004
and   b.per_proceso=9
and   a.monto<>b.monto
and   a.cod_bodega='004';


