Lo prometido es deuda (gracias)
// Programacion boton PROCESAR
// Te recuerdo que son 3 tablas, movexist,kardex,movacep
// Aqui vamos
// Inicializa variables
INTEGER TOT_LIN,I,BODORIG,BODDEST,LINCOMP
STRING TIPMOV,CODPROD,POCMOV,IDUSUARIO
LONG NUCOMP,CANTMOVI,PRECMOV
TOT_LIN=DW_2.ROWCOUNT()
FOR I=1 TO TOT_LIN
// Leo tabla movimientos
TIPMOV=DW_2.GetItemString(I,"movexist_tip_mov")
NUCOMP=DW_2.GetItemNumber(I,"movexist_nu_comp")
LINCOMP=DW_2.GetItemNumber(I,"movexist_lin_comp")
FEMOVI=DW_2.GetItemDate(I,"movexist_fe_movi")
BODORIG=DW_2.GetItemNumber(I,"movexist_bod_orig")
CODPROD=DW_2.GetItemString(I,"movexist_cod_prod")
CANTMOVI=DW_2.GetItemNumber(I,"movexist_cant_movi")
PRECMOV=DW_2.GetItemNumber(I,"movexist_prec_mov")
POCMOV=DW_2.GetItemString(I,"movexist_poc_mov")
BODDEST=DW_2.GetItemNumber(I,"movexist_bod_dest")
IDUSUARIO=DW_2.GetItemString(I,"movexist_id_usuario")
// Busco el producto en el kardex
SELECT BODEGA_1,BODEGA_2,BODEGA_3 INTO :BODEGA1,:BODEGA2,:BODEGA3
FROM KARDEX WHERE COD_PROD=:CODPROD;
// Sumo o resto segun bodega indicada en movimientos
CHOOSE CASE tipmov
CASE IS >"10" AND <"20"
// Suma a bodega
// ? Como se puede acortar la instruccion
// ya que podrian ser hasta 20 bodegas ??
CHOOSE CASE BODORIG
CASE IS = 1
BODEGA1=BODEGA1+CANTMOVI
CASE IS = 2
BODEGA2=BODEGA2+CANTMOVI
CASE IS = 3
BODEGA3=BODEGA3+CANTMOVI
END CHOOSE
CASE ELSE
// Resta a bodega
CHOOSE CASE BODORIG
CASE IS = 1
BODEGA1=BODEGA1-CANTMOVI
CASE IS = 2
BODEGA2=BODEGA2-CANTMOVI
CASE IS = 3
BODEGA3=BODEGA3-CANTMOVI
END CHOOSE
END CHOOSE
// Actualizo los campos bodegas del kardex
UPDATE KARDEX SET BODEGA_1=:BODEGA1 , BODEGA_2=:BODEGA2 , BODEGA_3=:BODEGA3
WHERE COD_PROD=:CODPROD USING SQLCA;
// Agrego el registro en movimientos aceptados
INSERT INTO MOVACEP(TIP_MOV,NU_COMP,LIN_COMP,FE_MOVI,BOD_ORIG,COD_PROD,CANT_MOVI,PREC_MOV,POC_MOV,BOD_DEST,ID_USUARIO)
VALUES (:TIPMOV,:NUCOMP,:LINCOMP,:FEMOVI,:BODORIG,:CODPROD,:CANTMOVI,:PRECMOV,:POCMOV,:BODDEST,:XUSER);
NEXT
// Eso es todo por ahora, lo iré poniendo más complejo en la medida que
vaya siendo corregido.
// Te recuerdo que son 3 tablas, movexist,kardex,movacep
// Aqui vamos
// Inicializa variables
INTEGER TOT_LIN,I,BODORIG,BODDEST,LINCOMP
STRING TIPMOV,CODPROD,POCMOV,IDUSUARIO
LONG NUCOMP,CANTMOVI,PRECMOV
TOT_LIN=DW_2.ROWCOUNT()
FOR I=1 TO TOT_LIN
// Leo tabla movimientos
TIPMOV=DW_2.GetItemString(I,"movexist_tip_mov")
NUCOMP=DW_2.GetItemNumber(I,"movexist_nu_comp")
LINCOMP=DW_2.GetItemNumber(I,"movexist_lin_comp")
FEMOVI=DW_2.GetItemDate(I,"movexist_fe_movi")
BODORIG=DW_2.GetItemNumber(I,"movexist_bod_orig")
CODPROD=DW_2.GetItemString(I,"movexist_cod_prod")
CANTMOVI=DW_2.GetItemNumber(I,"movexist_cant_movi")
PRECMOV=DW_2.GetItemNumber(I,"movexist_prec_mov")
POCMOV=DW_2.GetItemString(I,"movexist_poc_mov")
BODDEST=DW_2.GetItemNumber(I,"movexist_bod_dest")
IDUSUARIO=DW_2.GetItemString(I,"movexist_id_usuario")
// Busco el producto en el kardex
SELECT BODEGA_1,BODEGA_2,BODEGA_3 INTO :BODEGA1,:BODEGA2,:BODEGA3
FROM KARDEX WHERE COD_PROD=:CODPROD;
// Sumo o resto segun bodega indicada en movimientos
CHOOSE CASE tipmov
CASE IS >"10" AND <"20"
// Suma a bodega
// ? Como se puede acortar la instruccion
// ya que podrian ser hasta 20 bodegas ??
CHOOSE CASE BODORIG
CASE IS = 1
BODEGA1=BODEGA1+CANTMOVI
CASE IS = 2
BODEGA2=BODEGA2+CANTMOVI
CASE IS = 3
BODEGA3=BODEGA3+CANTMOVI
END CHOOSE
CASE ELSE
// Resta a bodega
CHOOSE CASE BODORIG
CASE IS = 1
BODEGA1=BODEGA1-CANTMOVI
CASE IS = 2
BODEGA2=BODEGA2-CANTMOVI
CASE IS = 3
BODEGA3=BODEGA3-CANTMOVI
END CHOOSE
END CHOOSE
// Actualizo los campos bodegas del kardex
UPDATE KARDEX SET BODEGA_1=:BODEGA1 , BODEGA_2=:BODEGA2 , BODEGA_3=:BODEGA3
WHERE COD_PROD=:CODPROD USING SQLCA;
// Agrego el registro en movimientos aceptados
INSERT INTO MOVACEP(TIP_MOV,NU_COMP,LIN_COMP,FE_MOVI,BOD_ORIG,COD_PROD,CANT_MOVI,PREC_MOV,POC_MOV,BOD_DEST,ID_USUARIO)
VALUES (:TIPMOV,:NUCOMP,:LINCOMP,:FEMOVI,:BODORIG,:CODPROD,:CANTMOVI,:PRECMOV,:POCMOV,:BODDEST,:XUSER);
NEXT
// Eso es todo por ahora, lo iré poniendo más complejo en la medida que
vaya siendo corregido.
1 Respuesta
Respuesta de Antonio Garcia
1