261 lines
11 KiB
Plaintext
261 lines
11 KiB
Plaintext
DEFINE pdesglose RECORD
|
|
|
|
descripcion VARCHAR(100),
|
|
unidad_med VARCHAR(4),
|
|
tipo_inventario VARCHAR(100),
|
|
seccion,tramo INT,
|
|
|
|
lado_2,lado_1,lado_3,cantidad,cantidad2 DEC(12,5),
|
|
tono,calidad VARCHAR(100),
|
|
observacion VARCHAR(100),
|
|
idproducto VARCHAR(25),
|
|
bodega,codid,codn,codgrupo,codtipo,codsec INT,
|
|
factor DEC(12,5),
|
|
fecha DATE
|
|
END RECORD,
|
|
recinfo DYNAMIC ARRAY OF RECORD
|
|
info STRING,
|
|
info2 STRING,
|
|
id INT,
|
|
cantidad2 DEC(12,5),
|
|
|
|
lado_1,lado_2,lado_3,seccion,tramo DEC(12,5)
|
|
END RECORD,
|
|
kcodid,xidrow,idx INT,
|
|
totalcantidad2 DEC(12,5)
|
|
|
|
FUNCTION desglose(pcodid,pbodega,pfecha,xtipo_inventario,pcodseccion, pcodtramo)
|
|
DEFINE pcodid,pbodega,pcodseccion, pcodtramo INT,
|
|
pfecha DATE,
|
|
xtipo_inventario VARCHAR(50)
|
|
|
|
LET pdesglose.tipo_inventario = xtipo_inventario
|
|
LET pdesglose.codid = pcodid
|
|
LET pdesglose.bodega = pbodega
|
|
LET pdesglose.fecha = pfecha
|
|
|
|
CALL limpiad()
|
|
LET totalcantidad2 =0
|
|
CALL busca_desglose()
|
|
IF idx > 1 THEN
|
|
OPEN WINDOW w21 WITH FORM "desglose_detalle"
|
|
DISPLAY ARRAY recinfo TO scr_info.* ATTRIBUTES(ACCESSORYTYPE=DISCLOSUREINDICATOR,
|
|
DETAILACTION=Actualiza)
|
|
BEFORE DISPLAY
|
|
LET xidrow = 0
|
|
ON ACTION padiciona ATTRIBUTE(IMAGE="fa-plus")
|
|
|
|
CALL limpiad()
|
|
# CALL seccion()
|
|
|
|
CALL busca_informacion()
|
|
|
|
# CALL tramo(pdesglose.seccion,pdesglose.bodega)
|
|
CALL entra_desglose()
|
|
CALL busca_desglose()
|
|
ON ACTION borrar ATTRIBUTE(IMAGE="fa-minus")
|
|
LET xidrow = recinfo[arr_curr()].id
|
|
|
|
DELETE FROM desglose WHERE idrow =xidrow
|
|
CALL recinfo.deleteElement(arr_curr())
|
|
CONTINUE DISPLAY
|
|
CALL busca_desglose()
|
|
ON ACTION actualiza ATTRIBUTE(TEXT="Actualiza")
|
|
LET xidrow = recinfo[arr_curr()].id
|
|
|
|
CALL busca_informacion()
|
|
|
|
CALL entra_desglose()
|
|
CALL busca_desglose()
|
|
AFTER DISPLAY
|
|
EXIT DISPLAY
|
|
END DISPLAY
|
|
CLOSE WINDOW w21
|
|
ELSE
|
|
CALL busca_informacion()
|
|
|
|
CALL entra_desglose()
|
|
CALL busca_desglose()
|
|
|
|
END IF
|
|
|
|
RETURN totalcantidad2
|
|
END FUNCTION
|
|
FUNCTION entra_desglose()
|
|
DEFINE respuesta VARCHAR(3)
|
|
OPEN WINDOW w20 WITH FORM "desglose"
|
|
DIALOG ATTRIBUTES(UNBUFFERED)
|
|
INPUT BY NAME pdesglose.* ATTRIBUTE(WITHOUT DEFAULTS)
|
|
BEFORE INPUT
|
|
|
|
CALL seccion()
|
|
IF pdesglose.seccion IS NOT NULL THEN
|
|
CALL tramo(pdesglose.seccion,pdesglose.bodega)
|
|
END IF
|
|
DISPLAY BY NAME pdesglose.seccion
|
|
CALL dialog.setActionActive('cancel',FALSE)
|
|
AFTER FIELD seccion
|
|
|
|
CALL tramo(pdesglose.seccion,pdesglose.bodega)
|
|
AFTER FIELD cantidad
|
|
IF pdesglose.lado_2 > 0 THEN
|
|
LET pdesglose.cantidad2 = pdesglose.cantidad * pdesglose.lado_1 *pdesglose.lado_2
|
|
END IF
|
|
IF pdesglose.lado_3 > 0 THEN
|
|
LET pdesglose.cantidad2 = pdesglose.cantidad2 * pdesglose.lado_3
|
|
END IF
|
|
DISPLAY BY NAME pdesglose.cantidad2
|
|
|
|
ON ACTION save
|
|
IF pdesglose.cantidad IS NULL THEN
|
|
ERROR "CANTIDAD EN BLANCO"
|
|
NEXT FIELD cantidad
|
|
END IF
|
|
|
|
IF pdesglose.idproducto IS NULL THEN
|
|
ERROR "COD BARRA EN BLANCO"
|
|
NEXT FIELD idproducto
|
|
END IF
|
|
IF pdesglose.cantidad2 IS NULL THEN
|
|
ERROR "CANTIDAD EN BLANCO"
|
|
NEXT FIELD cantidad1
|
|
END IF
|
|
IF pdesglose.lado_3 IS NULL THEN
|
|
LET pdesglose.lado_3 =0
|
|
END IF
|
|
IF pdesglose.seccion IS NULL THEN
|
|
ERROR "SECCION EN BLANCO"
|
|
NEXT FIELD seccion
|
|
END IF
|
|
IF pdesglose.tramo IS NULL THEN
|
|
ERROR "TRAMO EN BLANCO"
|
|
NEXT FIELD tramo
|
|
END IF
|
|
IF pdesglose.lado_2 > 0 THEN
|
|
LET pdesglose.cantidad2 = pdesglose.cantidad * pdesglose.lado_1 *pdesglose.lado_2
|
|
END IF
|
|
IF pdesglose.lado_3 > 0 THEN
|
|
LET pdesglose.cantidad2 = pdesglose.cantidad2 * pdesglose.lado_3
|
|
END IF
|
|
DISPLAY BY NAME pdesglose.cantidad2
|
|
SELECT a.idrow FROM desglose a WHERE a.idrow = xidrow
|
|
IF STATUS = NOTFOUND THEN
|
|
SELECT DISTINCT a.idproducto FROM desglose a WHERE a.idproducto = pdesglose.idproducto
|
|
IF STATUS <> NOTFOUND THEN
|
|
ERROR "ID PRODUCTO EXISTE"
|
|
NEXT FIELD idproducto
|
|
END IF
|
|
INSERT INTO desglose (descrip_esp,tipo_inventario,
|
|
unidad_med,codid,factor_conv,lado_1,lado_2,lado_3,
|
|
cantidad,cantidad2,observacion,
|
|
idproducto,cod_bodega,cod_seccion,cod_tramo,fecha,
|
|
cod_n,cod_grupo,cod_tipo,cod_sec,fecha,tono,calidad)
|
|
VALUES (pdesglose.descripcion,pdesglose.tipo_inventario,pdesglose.unidad_med,
|
|
pdesglose.codid,pdesglose.factor,
|
|
|
|
pdesglose.lado_1,pdesglose.lado_2,pdesglose.lado_3,pdesglose.cantidad,
|
|
pdesglose.cantidad2,pdesglose.observacion,pdesglose.idproducto,
|
|
pdesglose.bodega,pdesglose.seccion,pdesglose.tramo,pdesglose.fecha,
|
|
pdesglose.codn,pdesglose.codgrupo,pdesglose.codtipo,pdesglose.codsec,
|
|
pdesglose.fecha,pdesglose.tono,pdesglose.calidad)
|
|
|
|
ERROR "ADICION EXITOSA"
|
|
ELSE
|
|
UPDATE desglose SET (descrip_esp,tipo_inventario,
|
|
unidad_med,codid,factor_conv,lado_1,lado_2,lado_3,
|
|
cantidad,cantidad2,observacion,
|
|
idproducto,cod_bodega,cod_seccion,cod_tramo,fecha,
|
|
tono,calidad) =
|
|
(pdesglose.descripcion,pdesglose.tipo_inventario,pdesglose.unidad_med,
|
|
pdesglose.codid,pdesglose.factor,
|
|
|
|
pdesglose.lado_1,pdesglose.lado_2,pdesglose.lado_3,pdesglose.cantidad,
|
|
pdesglose.cantidad2,pdesglose.observacion,pdesglose.idproducto,
|
|
pdesglose.bodega,pdesglose.Seccion,pdesglose.tramo,pdesglose.fecha,
|
|
pdesglose.tono,pdesglose.calidad)
|
|
WHERE idrow =xidrow
|
|
|
|
ERROR "ACTUALIZACION EXITOSA"
|
|
END IF
|
|
IF pdesglose.cantidad2 IS NOT NULL THEN
|
|
LET totalcantidad2 = totalcantidad2 + pdesglose.cantidad2
|
|
END IF
|
|
AFTER INPUT
|
|
IF pdesglose.cantidad2 IS NULL THEN
|
|
ERROR "CANTIDAD EN BLANCO"
|
|
NEXT FIELD cantidad
|
|
END IF
|
|
IF pdesglose.lado_3 IS NULL THEN
|
|
LET pdesglose.lado_3 =0
|
|
END IF
|
|
CONTINUE DIALOG
|
|
END INPUT
|
|
ON ACTION CANCEL
|
|
EXIT DIALOG
|
|
END DIALOG
|
|
CLOSE WINDOW w20
|
|
END FUNCTION
|
|
FUNCTION busca_informacion()
|
|
|
|
IF xidrow > 0 THEN
|
|
SELECT a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.cantidad2,
|
|
a.observacion,a.idproducto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
|
|
a.tono,a.calidad,a.cod_seccion,a.cod_tramo
|
|
INTO pdesglose.lado_1,pdesglose.lado_2,pdesglose.lado_3,
|
|
pdesglose.cantidad,pdesglose.cantidad2,pdesglose.observacion,pdesglose.idproducto,
|
|
pdesglose.codn,pdesglose.codgrupo,pdesglose.codtipo,pdesglose.codsec,
|
|
pdesglose.tono,pdesglose.calidad,pdesglose.seccion,pdesglose.tramo
|
|
FROM desglose a
|
|
WHERE a.idrow = xidrow
|
|
|
|
|
|
|
|
END IF
|
|
SELECT a.descrip_esp,a.unidad_med,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
|
|
INTO pdesglose.descripcion,pdesglose.unidad_med,
|
|
pdesglose.codn,pdesglose.codgrupo,pdesglose.codtipo,pdesglose.codsec
|
|
FROM productos a WHERE a.tipo_inventario = pdesglose.tipo_inventario AND a.codid = pdesglose.codid
|
|
|
|
END FUNCTION
|
|
FUNCTION busca_desglose()
|
|
DEFINE idproducto STRING
|
|
|
|
DECLARE busca_d CURSOR FOR
|
|
SELECT a.descrip_esp,' ',
|
|
a.idrow,a.cantidad2,
|
|
a.lado_1,a.lado_2,a.lado_3,a.cod_seccion,a.cod_tramo,a.idproducto,
|
|
a.tono,a.calidad
|
|
|
|
FROM desglose a WHERE a.fecha = pdesglose.fecha AND a.codid = pdesglose.codid AND
|
|
a.cod_bodega = pdesglose.bodega
|
|
|
|
|
|
LET idx = 1
|
|
LET totalcantidad2 =0
|
|
FOREACH busca_d INTO recinfo[idx].*,idproducto
|
|
IF recinfo[idx].info IS NOT NULL THEN
|
|
LET recinfo[idx].info2 = recinfo[idx].lado_1 USING "&&.##","x",
|
|
recinfo[idx].lado_2 USING "&&.##","x",
|
|
recinfo[idx].lado_3 USING "&&.##", "CA-",
|
|
recinfo[idx].cantidad2 USING "<<<.###",
|
|
"-",idproducto CLIPPED
|
|
|
|
LET totalcantidad2 = totalcantidad2 + recinfo[idx].cantidad2
|
|
END IF
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION limpiad()
|
|
LET xidrow = NULL
|
|
LET pdesglose.lado_1=NULL
|
|
LET pdesglose.lado_2=NULL
|
|
LET pdesglose.lado_3=NULL
|
|
LET pdesglose.cantidad=NULL
|
|
LET pdesglose.cantidad2=NULL
|
|
LET pdesglose.observacion=NULL
|
|
LET pdesglose.idproducto=NULL
|
|
LET pdesglose.seccion = NULL
|
|
LET pdesglose.tramo =NULL
|
|
END FUNCTION |