Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md
This commit is contained in:
@@ -0,0 +1,705 @@
|
||||
{
|
||||
==========================================================================
|
||||
PROGRAMA : VEPRMT032
|
||||
OBJETIVO : ADMINISTRAR LOS KIT DE LOS PRODUCTOS TERMINADOS
|
||||
DESARROLLADO POR : ING. JUAN SOTO
|
||||
FECHA : 17/10/2014
|
||||
==========================================================================
|
||||
}
|
||||
GLOBALS "veprgb000.4gl"
|
||||
DEFINE dproducto DYNAMIC ARRAY OF RECORD
|
||||
pcodn SMALLINT,
|
||||
pcodgrupo SMALLINT,
|
||||
pcodtipo SMALLINT,
|
||||
pcodsec SMALLINT,
|
||||
descripcion_p1 VARCHAR(100),
|
||||
cantidad DEC(12,5),
|
||||
precio DEC(12,2),
|
||||
porc_desc DEC(12,2),
|
||||
valor DEC(12,2)
|
||||
END RECORD
|
||||
DEFINE x1 RECORD
|
||||
kit_id INT,
|
||||
descripcion VARCHAR(100),
|
||||
disponible VARCHAR(10),
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
descripcion_p VARCHAR(100),
|
||||
factor,cantidad_kit DEC(12,5),
|
||||
valor_total DEC(12,2),
|
||||
porc_Desc1 DEC(12,2),
|
||||
costeo_orden CHAR(2)
|
||||
END RECORD ,
|
||||
pkit int,pdescripcion VARCHAR(100),
|
||||
cuenta_reg SMALLINT
|
||||
|
||||
DEFINE arr_producto DYNAMIC ARRAY OF RECORD
|
||||
pcodn SMALLINT,
|
||||
pcodgrupo SMALLINT,
|
||||
pcodtipo SMALLINT,
|
||||
pcodsec SMALLINT,
|
||||
descripcion_p1 VARCHAR(100),
|
||||
factor_d,unidades DEC(12,5),
|
||||
cantidad DEC(12,5),
|
||||
precio DEC(12,2),
|
||||
porc_desc DEC(12,2),
|
||||
valor DEC(12,2)
|
||||
END RECORD
|
||||
|
||||
MAIN
|
||||
|
||||
DEFER INTERRUPT
|
||||
CALL ARG_VAL(1) RETURNING usuarios
|
||||
CALL ARG_VAL(2) RETURNING clave
|
||||
CALL ARG_VAL(4) RETURNING impresor
|
||||
CALL STARTLOG("veprmt32.txt")
|
||||
|
||||
CONNECT to "smarmotech" AS "MSSQL" USER usuarios USING clave
|
||||
|
||||
CALL veprmt032()
|
||||
|
||||
END MAIN
|
||||
|
||||
FUNCTION veprmt032()
|
||||
DEFINE mproducto RECORD
|
||||
kit_id INT,
|
||||
descripcion VARCHAR(100),
|
||||
disponible VARCHAR(10),
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
descripcion_p VARCHAR(100),
|
||||
factor,cantidad_kit DEC(12,5),
|
||||
valor_total DEC(12,2),
|
||||
porc_Desc1 DEC(12,2),
|
||||
costeo_orden CHAR(2)
|
||||
END RECORD,
|
||||
|
||||
exito BOOLEAN,
|
||||
modifica VARCHAR(3),
|
||||
pprecio DEC(12,2)
|
||||
|
||||
OPEN FORM w1 FROM "vefmmt032"
|
||||
DISPLAY FORM w1
|
||||
|
||||
DIALOG ATTRIBUTES(UNBUFFERED)
|
||||
INPUT BY NAME mproducto.* ATTRIBUTE(WITHOUT DEFAULTS)
|
||||
BEFORE INPUT
|
||||
LET p_vetb50.ventas = 3
|
||||
LET p_vetb50.tipo_cliente = NULL
|
||||
LET p_vetb50.sec_cliente=NULL
|
||||
LET mproducto.disponible='SI'
|
||||
# IF mproducto.costeo_orden IS NULL THEN
|
||||
LET mproducto.costeo_orden = "NO"
|
||||
# END IF
|
||||
ON ACTION copiar
|
||||
CALL copia_kit()
|
||||
AFTER FIELD cod_sec
|
||||
IF mproducto.cod_sec IS NOT NULL THEN
|
||||
CALL producto(mproducto.cod_n,mproducto.cod_grupo,mproducto.cod_tipo,mproducto.cod_sec)
|
||||
RETURNING pdescripcion,mproducto.factor
|
||||
|
||||
IF pdescripcion IS NULL THEN
|
||||
|
||||
CALL msg(3)
|
||||
NEXT FIELD cod_n
|
||||
END IF
|
||||
|
||||
LET modifica ="NO"
|
||||
SELECT COUNT(*) INTO cuenta_reg
|
||||
FROM vetb00029 a
|
||||
WHERE a.cod_n = mproducto.cod_n AND
|
||||
a.cod_grupo = mproducto.cod_grupo AND
|
||||
a.cod_tipo = mproducto.cod_tipo AND
|
||||
a.cod_sec = mproducto.cod_sec
|
||||
|
||||
IF cuenta_reg > 1 THEN
|
||||
|
||||
LET opt = fgl_winquestion("ADICIONA","DESEA MODIFICAR KIT EXISTENTE?","NO","YES|NO","QUESTION",0)
|
||||
IF opt = "YES" THEN
|
||||
|
||||
LET modifica = 'SI'
|
||||
CALL visualiza_kit(mproducto.cod_n,mproducto.cod_grupo,mproducto.cod_tipo,mproducto.cod_sec,pkit,"'SI','NO'")
|
||||
RETURNING pkit,mproducto.valor_total,mproducto.descripcion
|
||||
#CALL visualiza_detalle_kit(pkit) RETURNING arr_producto
|
||||
|
||||
LET mproducto.kit_id = pkit
|
||||
# SELECT DISTINCT a.id_kit FROM prtb00013 a WHERE a.id_kit = mproducto.kit_id
|
||||
|
||||
# IF STATUS <> NOTFOUND THEN
|
||||
# CALL FGL_WINMESSAGE("ERROR","KIT TIENE ORDEN, DEBES ADICIONAR UNO NUEVO","INFO")
|
||||
# NEXT FIELD cod_Sec
|
||||
# END IF
|
||||
|
||||
CALL consulta(mproducto.*) RETURNING mproducto.kit_id
|
||||
ELSE
|
||||
LET modifica = 'NO'
|
||||
END IF
|
||||
|
||||
|
||||
ELSE
|
||||
LET modifica = 'NO'
|
||||
SELECT a.id_kit,a.disponible,a.descripcion,a.porc_desc,a.factor_conv,a.cantidad_Venta
|
||||
INTO mproducto.kit_id,mproducto.disponible,mproducto.descripcion,mproducto.porc_desc1,
|
||||
mproducto.factor,mproducto.cantidad_kit
|
||||
FROM vetb00029 a
|
||||
WHERE a.cod_n = mproducto.cod_n AND
|
||||
a.cod_grupo = mproducto.cod_grupo AND
|
||||
a.cod_tipo = mproducto.cod_tipo AND
|
||||
a.cod_sec = mproducto.cod_sec
|
||||
|
||||
IF STATUS <> NOTFOUND THEN
|
||||
LET opt = fgl_winquestion("ADICIONA","DESEA MODIFICAR KIT EXISTENTE?","NO","YES|NO","QUESTION",0)
|
||||
IF opt = "YES" THEN
|
||||
LET modifica = 'SI'
|
||||
# SELECT DISTINCT a.id_kit FROM prtb00013 a WHERE a.id_kit = mproducto.kit_id
|
||||
|
||||
# IF STATUS <> NOTFOUND THEN
|
||||
# CALL FGL_WINMESSAGE("ERROR","KIT TIENE ORDEN, DEBES ADICIONAR UNO NUEVO","INFO")
|
||||
# NEXT FIELD cod_Sec
|
||||
# END IF
|
||||
|
||||
ELSE
|
||||
LET modifica = 'NO'
|
||||
END IF
|
||||
END IF
|
||||
|
||||
END IF
|
||||
|
||||
|
||||
LET mproducto.descripcion_p = pdescripcion
|
||||
DISPLAY BY NAME mproducto.descripcion_p
|
||||
DISPLAY BY NAME mproducto.*
|
||||
END IF
|
||||
|
||||
AFTER INPUT
|
||||
IF mproducto.cod_sec IS NOT NULL THEN
|
||||
CALL producto(mproducto.cod_n,mproducto.cod_grupo,mproducto.cod_tipo,mproducto.cod_sec)
|
||||
RETURNING pdescripcion,mproducto.factor
|
||||
IF pdescripcion IS NULL THEN
|
||||
|
||||
CALL msg(3)
|
||||
NEXT FIELD cod_n
|
||||
END IF
|
||||
DECLARE buscate CURSOR FOR
|
||||
|
||||
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp,b.cantidad,b.precio,b.porc_desc
|
||||
FROM iptb00002 a LEFT OUTER join vetb00030 b ON
|
||||
a.cod_n = b.cod_n AND
|
||||
a.cod_grupo = b.cod_grupo AND
|
||||
a.cod_tipo = b.cod_tipo AND
|
||||
a.cod_sec = b.cod_Sec
|
||||
|
||||
WHERE b.id_kit = mproducto.kit_id AND
|
||||
a.status_t IS NULL
|
||||
|
||||
LET idx = 1
|
||||
FOREACH buscate INTO arr_producto[idx].pcodn,arr_producto[idx].pcodgrupo,
|
||||
arr_producto[idx].pcodtipo,arr_producto[idx].pcodsec,
|
||||
arr_producto[idx].descripcion_p1,
|
||||
arr_producto[idx].cantidad,arr_producto[idx].precio,
|
||||
arr_producto[idx].porc_desc
|
||||
|
||||
IF arr_producto[idx].porc_desc IS NULL THEN
|
||||
LET arr_producto[idx].porc_desc=0
|
||||
END IF
|
||||
|
||||
LET arr_producto[idx].valor = arr_producto[idx].cantidad * (arr_producto[idx].precio-
|
||||
(arr_producto[idx].porc_desc * arr_producto[idx].precio)/100)
|
||||
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
|
||||
END IF
|
||||
END INPUT
|
||||
|
||||
INPUT ARRAY arr_producto FROM sproducto.* ATTRIBUTE(WITHOUT DEFAULTS)
|
||||
BEFORE INPUT
|
||||
IF modifica ="NO" THEN
|
||||
CALL arr_producto.clear()
|
||||
END IF
|
||||
AFTER FIELD pcodsec
|
||||
LET idx = arr_curr()
|
||||
LET scr_l = scr_line()
|
||||
IF arr_producto[idx].pcodsec IS NOT NULL THEN
|
||||
IF arr_producto[idx].pcodn = mproducto.cod_n AND
|
||||
arr_producto[idx].pcodgrupo = mproducto.cod_grupo AND
|
||||
arr_producto[idx].pcodtipo = mproducto.cod_tipo AND
|
||||
arr_producto[idx].pcodsec = mproducto.cod_sec THEN
|
||||
CALL fgl_Winmessage("ERROR","ESTE CODIGO NO PUEDE SER IGUAL QUE EL CODIGO PRINCIPAL","INFO")
|
||||
NEXT FIELD pcodsec
|
||||
END IF
|
||||
|
||||
CALL producto(arr_producto[idx].pcodn,arr_producto[idx].pcodgrupo,
|
||||
arr_producto[idx].pcodtipo,arr_producto[idx].pcodsec)
|
||||
RETURNING pdescripcion,arr_producto[idx].factor_d
|
||||
|
||||
IF pdescripcion IS NULL THEN
|
||||
CALL msg(3)
|
||||
NEXT FIELD pcodn
|
||||
END IF
|
||||
|
||||
END IF
|
||||
LET arr_producto[idx].descripcion_p1 = pdescripcion
|
||||
DISPLAY arr_producto[idx].descripcion_p1 TO sproducto[scr_l].descripcion_p1
|
||||
SELECT a.precio INTO pprecio
|
||||
FROM vetb00025 a,seg0009 b
|
||||
WHERE a.cod_n = arr_producto[idx].pcodn AND
|
||||
a.cod_grupo = arr_producto[idx].pcodgrupo AND
|
||||
a.cod_tipo = arr_producto[idx].pcodtipo AND
|
||||
a.cod_sec = arr_producto[idx].pcodsec AND
|
||||
a.ventas = 3 AND
|
||||
b.usuario = usuarios AND
|
||||
a.cod_lista = b.cod_lista
|
||||
IF STATUS = NOTFOUND THEN
|
||||
CALL fgl_winmessage("ERROR","PRODUCTO NO TIENE PRECIO, NO PUEDES VENDERLO","INFO")
|
||||
LET pprecio = 0
|
||||
# NEXT FIELD pcodn
|
||||
END IF
|
||||
IF mproducto.porc_Desc1 IS NOT NULL THEN
|
||||
LET arr_producto[idx].porc_desc = mproducto.porc_Desc1
|
||||
DISPLAY arr_producto[idx].porc_desc TO sproducto[scr_line()].porc_desc
|
||||
END IF
|
||||
|
||||
LET arr_producto[idx].precio = pprecio
|
||||
DISPLAY arr_producto[idx].precio TO sproducto[scr_l].precio
|
||||
AFTER FIELD porc_desc
|
||||
IF arr_producto[idx].porc_desc IS NULL THEN
|
||||
LET arr_producto[idx].porc_desc=0
|
||||
END IF
|
||||
LET arr_producto[idx].valor = arr_producto[idx].cantidad * (arr_producto[idx].precio-
|
||||
(arr_producto[idx].porc_desc * arr_producto[idx].precio)/100)
|
||||
DISPLAY arr_producto[idx].valor TO sproducto[scr_l].valor
|
||||
AFTER ROW
|
||||
IF arr_producto[idx].porc_desc IS NULL THEN
|
||||
LET arr_producto[idx].porc_desc=0
|
||||
END IF
|
||||
|
||||
LET arr_producto[idx].valor = arr_producto[idx].cantidad * (arr_producto[idx].precio-
|
||||
(arr_producto[idx].porc_desc * arr_producto[idx].precio)/100)
|
||||
DISPLAY arr_producto[idx].valor TO sproducto[scr_l].valor
|
||||
|
||||
CALL calcula_valor(arr_producto) RETURNING mproducto.valor_total,mproducto.factor
|
||||
DISPLAY BY NAME mproducto.valor_total
|
||||
|
||||
# AFTER INPUT
|
||||
# IF INT_FLAG THEN
|
||||
# CALL msg(2)
|
||||
# LET INT_FLAG = FALSE
|
||||
|
||||
# EXIT PROGRAM
|
||||
# END IF
|
||||
END INPUT
|
||||
ON ACTION guardar
|
||||
IF arr_producto.getLength()<= 0 THEN
|
||||
CALL fgl_winmessage("ERROR","NO PUEDE GUARDAR KIT SIN ELEMENTOS","INFO")
|
||||
CONTINUE DIALOG
|
||||
END IF
|
||||
CALL inserta(mproducto.*,arr_producto,modifica) RETURNING exito,mproducto.kit_id
|
||||
IF exito THEN
|
||||
COMMIT WORK
|
||||
DISPLAY BY NAME mproducto.kit_id
|
||||
CALL fgl_winmessage("ERROR","ADICION EXITOSA","INFO")
|
||||
CALL arr_producto.clear()
|
||||
CLEAR FORM
|
||||
ELSE
|
||||
ROLLBACK WORK
|
||||
CALL fgl_winmessage("ERROR","LA TRANSACCION NO SE ACTUALIZO CON EXITO","INFO")
|
||||
END IF
|
||||
CONTINUE DIALOG
|
||||
# ON ACTION buscar
|
||||
# CALL buscar_kit()
|
||||
ON ACTION CANCEL
|
||||
LET INT_FLAG = FALSE
|
||||
EXIT PROGRAM
|
||||
END DIALOG
|
||||
END FUNCTION
|
||||
FUNCTION inserta(x,z,modificacion)
|
||||
DEFINE x RECORD
|
||||
kit_id INT,
|
||||
descripcion VARCHAR(100),
|
||||
disponible VARCHAR(10),
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
descripcion_p VARCHAR(100),
|
||||
factor,cantidad_kit DEC(12,5),
|
||||
valor_total DEC(12,2),
|
||||
porc_Desc1 DEC(12,2),
|
||||
costeo_orden CHAR(2)
|
||||
END RECORD
|
||||
DEFINE z DYNAMIC ARRAY OF RECORD
|
||||
pcodn SMALLINT,
|
||||
pcodgrupo SMALLINT,
|
||||
pcodtipo SMALLINT,
|
||||
pcodsec SMALLINT,
|
||||
descripcion_p1 VARCHAR(100),
|
||||
factor_d,unidades DEC(12,5),
|
||||
cantidad DEC(12,5),
|
||||
precio DEC(12,2),
|
||||
porc_desc DEC(12,2),
|
||||
valor DEC(12,2)
|
||||
|
||||
END RECORD,
|
||||
modificacion VARCHAR(3),
|
||||
x_exito BOOLEAN
|
||||
LET x_exito = TRUE
|
||||
BEGIN WORK
|
||||
IF x.costeo_orden IS NULL THEN
|
||||
LET x.costeo_orden = "NO"
|
||||
END IF
|
||||
|
||||
IF modificacion = "NO" THEN
|
||||
SELECT MAX(a.id_kit) INTO x.kit_id FROM vetb00029 a
|
||||
IF x.kit_id IS NULL THEN
|
||||
LET x.kit_id = 1
|
||||
END IF
|
||||
LET x.kit_id = x.kit_id +1
|
||||
# WHENEVER ERROR CONTINUE
|
||||
IF x.costeo_orden IS NULL THEN
|
||||
LET x.costeo_orden = "NO"
|
||||
END IF
|
||||
|
||||
INSERT INTO vetb00029
|
||||
(id_kit,
|
||||
descripcion,
|
||||
disponible,
|
||||
cod_n,
|
||||
cod_grupo,
|
||||
cod_tipo,
|
||||
cod_sec,
|
||||
valor_total,
|
||||
us_crea,
|
||||
fech_crea,
|
||||
porc_desc,
|
||||
costeo_orden,
|
||||
factor_conv
|
||||
,cantidad_venta)
|
||||
VALUES
|
||||
(x.kit_id,
|
||||
x.descripcion,
|
||||
x.disponible,
|
||||
x.cod_n,
|
||||
x.cod_grupo,
|
||||
x.cod_tipo,
|
||||
x.cod_sec,
|
||||
x.valor_total,
|
||||
usuarios,
|
||||
getdate(),
|
||||
x.porc_Desc1,
|
||||
x.costeo_orden,
|
||||
x.factor
|
||||
,x.cantidad_kit)
|
||||
IF STATUS < 0 THEN
|
||||
ROLLBACK WORK
|
||||
CALL fgl_winmessage("ERROR","SE PRODUJO UN ERROR EN LA TABLA vetb00029","INFO")
|
||||
LET x_exito = FALSE
|
||||
RETURN x_exito
|
||||
END IF
|
||||
FOR curr = 1 TO z.getLength()
|
||||
IF z[curr].pcodsec IS NOT NULL THEN
|
||||
INSERT INTO vetb00030
|
||||
(id_kit,
|
||||
cod_n,
|
||||
cod_grupo,
|
||||
cod_tipo,
|
||||
cod_sec,
|
||||
cantidad,
|
||||
porc_desc,
|
||||
precio)
|
||||
VALUES
|
||||
(x.kit_id,
|
||||
z[curr].pcodn,
|
||||
z[curr].pcodgrupo,
|
||||
z[curr].pcodtipo,
|
||||
z[curr].pcodsec,
|
||||
z[curr].cantidad,
|
||||
z[curr].porc_desc,
|
||||
z[curr].precio)
|
||||
IF STATUS < 0 THEN
|
||||
ROLLBACK WORK
|
||||
CALL fgl_winmessage("ERROR","SE PRODUJO UN ERROR EN LA TABLA vetb00030","INFO")
|
||||
LET x_exito = FALSE
|
||||
EXIT FOR
|
||||
|
||||
END IF
|
||||
|
||||
END IF
|
||||
END FOR
|
||||
|
||||
ELSE
|
||||
|
||||
UPDATE vetb00029 SET disponible = x.disponible,
|
||||
descripcion = x.descripcion,
|
||||
valor_total = x.valor_total,
|
||||
porc_desc = x.porc_Desc1,
|
||||
costeo_orden = x.costeo_orden
|
||||
WHERE id_kit = x.kit_id
|
||||
IF STATUS < 0 THEN
|
||||
ROLLBACK WORK
|
||||
CALL fgl_winmessage("ERROR","SE PRODUJO UN ERROR EN LA TABLA vetb00029","INFO")
|
||||
LET x_exito = FALSE
|
||||
RETURN x_exito
|
||||
END IF
|
||||
DELETE FROM vetb00030 WHERE id_kit = x.kit_id
|
||||
IF STATUS < 0 THEN
|
||||
ROLLBACK WORK
|
||||
CALL fgl_winmessage("ERROR","SE PRODUJO UN ERROR EN LA TABLA vetb00030","INFO")
|
||||
LET x_exito = FALSE
|
||||
RETURN x_exito
|
||||
END IF
|
||||
|
||||
LET x_exito = TRUE
|
||||
FOR curr = 1 TO z.getLength()
|
||||
IF z[curr].pcodsec IS NOT NULL THEN
|
||||
INSERT INTO vetb00030
|
||||
(id_kit,
|
||||
cod_n,
|
||||
cod_grupo,
|
||||
cod_tipo,
|
||||
cod_sec,
|
||||
cantidad,
|
||||
porc_desc,
|
||||
precio)
|
||||
VALUES
|
||||
(x.kit_id,
|
||||
z[curr].pcodn,
|
||||
z[curr].pcodgrupo,
|
||||
z[curr].pcodtipo,
|
||||
z[curr].pcodsec,
|
||||
z[curr].cantidad,
|
||||
z[curr].porc_desc,
|
||||
z[curr].precio)
|
||||
IF STATUS < 0 THEN
|
||||
ROLLBACK WORK
|
||||
CALL fgl_winmessage("ERROR","SE PRODUJO UN ERROR EN LA TABLA vetb00030","INFO")
|
||||
LET x_exito = FALSE
|
||||
EXIT FOR
|
||||
|
||||
END IF
|
||||
|
||||
END IF
|
||||
END FOR
|
||||
END IF
|
||||
RETURN x_exito,x.kit_id
|
||||
END FUNCTION
|
||||
FUNCTION calcula_valor(z)
|
||||
DEFINE z DYNAMIC ARRAY OF RECORD
|
||||
pcodn SMALLINT,
|
||||
pcodgrupo SMALLINT,
|
||||
pcodtipo SMALLINT,
|
||||
pcodsec SMALLINT,
|
||||
descripcion_p1 VARCHAR(100),
|
||||
factor_d,unidades DEC(12,5),
|
||||
cantidad DEC(12,5),
|
||||
precio DEC(12,2),
|
||||
porc_desc DEC(12,2),
|
||||
valor DEC(12,2)
|
||||
END RECORD,
|
||||
valor1,valor DEC(12,2),
|
||||
cantidad_k,factor DEC(12,5)
|
||||
LET valor1 = 0
|
||||
LET valor = 0
|
||||
FOR curr = 1 TO z.getLength()
|
||||
IF z[curr].pcodsec IS NOT NULL THEN
|
||||
LET factor = z[curr].factor_d
|
||||
LET z[curr].cantidad = z[curr].factor_d * z[curr].unidades
|
||||
LET valor1 = z[curr].cantidad * (z[curr].precio-(z[curr].precio*(z[curr].porc_desc/100)))
|
||||
LET valor = valor + valor1
|
||||
END IF
|
||||
END FOR
|
||||
RETURN valor,factor
|
||||
END FUNCTION
|
||||
FUNCTION producto(x)
|
||||
DEFINE x RECORD
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT
|
||||
END RECORD,
|
||||
xdescripcion VARCHAR(100),
|
||||
xfactor DEC(12,5)
|
||||
|
||||
SELECT a.descrip_esp,b.factor_conv INTO xdescripcion,xfactor
|
||||
FROM iptb00002 a LEFT OUTER JOIN iptb00001 b ON a.cod_n = b.cod_n
|
||||
AND a.cod_grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND a.cod_Sec = b.cod_sec
|
||||
WHERE a.cod_n = x.cod_n AND
|
||||
a.cod_grupo = x.cod_grupo AND
|
||||
a.cod_tipo = x.cod_tipo AND
|
||||
a.cod_sec = x.cod_sec AND
|
||||
a.status_t IS NULL
|
||||
RETURN xdescripcion,xfactor
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION consulta(x)
|
||||
DEFINE x RECORD
|
||||
kit_id INT,
|
||||
descripcion VARCHAR(100),
|
||||
disponible VARCHAR(10),
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
descripcion_p VARCHAR(100),
|
||||
factor,cantidad_kit DEC(12,5),
|
||||
valor_total DEC(12,2),
|
||||
porc_desc1 DEC(12,2),
|
||||
costeo_orden CHAR(2)
|
||||
END RECORD
|
||||
|
||||
DECLARE busca SCROLL CURSOR FOR
|
||||
SELECT a.id_kit,a.disponible,a.descripcion,a.valor_total,b.descrip_esp,a.costeo_orden
|
||||
FROM vetb00029 a,iptb00002 b
|
||||
WHERE a.cod_n = x.cod_n AND
|
||||
a.cod_grupo = x.cod_grupo AND
|
||||
a.cod_tipo = x.cod_tipo AND
|
||||
a.cod_sec = x.cod_sec AND
|
||||
a.id_kit = x.kit_id AND
|
||||
a.cod_n = b.cod_n AND
|
||||
a.cod_grupo = b.cod_grupo AND
|
||||
a.cod_tipo = b.cod_tipo AND
|
||||
a.cod_sec = b.cod_sec
|
||||
OPEN busca
|
||||
|
||||
FETCH FIRST busca INTO x.kit_id,x.disponible,x.descripcion,x.valor_total,x.descripcion_p,x.costeo_orden
|
||||
LET x1.* = x.*
|
||||
CALL desplega()
|
||||
MENU "NAVEGACION"
|
||||
COMMAND "Siguiente"
|
||||
FETCH NEXT busca INTO x.kit_id,x.disponible,x.descripcion,x.valor_total,x.descripcion_p,x.costeo_orden
|
||||
LET x1.* = x.*
|
||||
|
||||
COMMAND "Anterior"
|
||||
FETCH PREVIOUS busca INTO x.kit_id,x.disponible,x.descripcion,x.valor_total,x.descripcion_p,x.costeo_orden
|
||||
DISPLAY BY NAME x.kit_id,x.disponible,x.descripcion,x.valor_total,x.descripcion_p,x.costeo_orden
|
||||
COMMAND "Primero"
|
||||
FETCH FIRST busca INTO x.kit_id,x.disponible,x.descripcion,x.valor_total,x.descripcion_p,x.costeo_orden
|
||||
DISPLAY BY NAME x.kit_id,x.disponible,x.descripcion,x.valor_total,x.descripcion_p,x.costeo_orden
|
||||
COMMAND "Ultimo"
|
||||
FETCH LAST busca INTO x.kit_id,x.disponible,x.descripcion,x.valor_total,x.descripcion_p,x.costeo_orden
|
||||
DISPLAY BY NAME x.kit_id,x.disponible,x.descripcion,x.valor_total,x.descripcion_p,x.costeo_orden
|
||||
COMMAND "Actualiza"
|
||||
RETURN x.kit_id
|
||||
COMMAND "Salir"
|
||||
EXIT MENU
|
||||
END MENU
|
||||
|
||||
RETURN x.kit_id
|
||||
END FUNCTION
|
||||
FUNCTION desplega()
|
||||
DEFINE xkit INT,
|
||||
mensaje STRING
|
||||
DECLARE busca1 CURSOR FOR
|
||||
SELECT a.cod_n,a.cod_Grupo,a.cod_tipo,a.cod_sec,a.cantidad,a.precio,a.porc_Desc,
|
||||
b.descrip_esp
|
||||
FROM vetb00030 a,iptb00002 b
|
||||
WHERE a.cod_n = b.cod_n AND
|
||||
a.cod_Grupo = b.cod_grupo AND
|
||||
a.cod_tipo = b.cod_tipo AND
|
||||
a.cod_sec = b.cod_Sec AND
|
||||
a.id_kit =x1.kit_id
|
||||
|
||||
|
||||
LET idx = 1
|
||||
FOREACH busca1 INTO dproducto[idx].pcodn,dproducto[idx].pcodgrupo,
|
||||
dproducto[idx].pcodtipo,dproducto[idx].pcodsec,
|
||||
dproducto[idx].cantidad,dproducto[idx].precio,
|
||||
dproducto[idx].porc_desc,dproducto[idx].descripcion_p1
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
DISPLAY ARRAY dproducto TO sproducto.*
|
||||
ON ACTION DUPLICA
|
||||
CALL duplica_kit(x1.kit_id) RETURNING xkit
|
||||
LET mensaje = "COPIA KIT ",xkit USING "&&&&&"," EXITOSA"
|
||||
CALL fgl_winmessage("INFO",mensaje,"INFO")
|
||||
EXIT PROGRAM
|
||||
BEFORE DISPLAY
|
||||
DISPLAY BY NAME x1.kit_id,x1.disponible,x1.descripcion,x1.valor_total,x1.descripcion_p
|
||||
AFTER DISPLAY
|
||||
END DISPLAY
|
||||
END FUNCTION
|
||||
{
|
||||
FUNCTION busar_kit()
|
||||
CONSTRUCT criterio ON a.id_kit,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
|
||||
FROM kit_id,cod_n,cod_grupo,cod_tipo,cod_Sec
|
||||
LET selec =
|
||||
" SELECT a.id_kit,a.descripcion,a.disponible,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec"
|
||||
kit_id INT,
|
||||
descripcion VARCHAR(100),
|
||||
disponible VARCHAR(10),
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
descripcion_p VARCHAR(100),
|
||||
valor_total DEC(12,2)
|
||||
|
||||
END FUNCTION
|
||||
}
|
||||
FUNCTION copia_kit()
|
||||
DEFINE codn2,codgrupo2,codtipo2,codsec2 SMALLINT,
|
||||
valor_total DEC(12,2)
|
||||
DEFINE arr_d DYNAMIC ARRAY OF RECORD
|
||||
area SMALLINT,
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
descripcion VARCHAR(100),
|
||||
cantidad DEC(12,5),
|
||||
precio DEC(12,2),
|
||||
porc_desc DEC(12,2)
|
||||
END RECORD
|
||||
INPUT BY NAME codn2,codgrupo2,codtipo2,codsec2
|
||||
AFTER FIELD codsec2
|
||||
IF codsec2 IS NOT NULL THEN
|
||||
CALL producto(codn2,codgrupo2,codtipo2,codsec2)
|
||||
RETURNING pdescripcion,x1.factor
|
||||
|
||||
IF pdescripcion IS NULL THEN
|
||||
|
||||
CALL msg(3)
|
||||
NEXT FIELD cod_n
|
||||
END IF
|
||||
DISPLAY pdescripcion TO descripcion_p
|
||||
SELECT DISTINCT a.cod_n FROM vetb00029 a
|
||||
WHERE a.cod_n = codn2 AND
|
||||
a.cod_grupo = codgrupo2 AND
|
||||
a.cod_tipo = codtipo2 AND
|
||||
a.cod_sec = codsec2
|
||||
|
||||
IF STATUS = NOTFOUND THEN
|
||||
CALL fgl_winmessage("INFO","NO EXISTEN KIT CON ESTE CODIGO","INFO")
|
||||
NEXT FIELD codn2
|
||||
ELSE
|
||||
CALL visualiza_kit(codn2,codgrupo2,codtipo2,codsec2,pkit,"'SI','NO'")
|
||||
RETURNING pkit,valor_total,pdescripcion
|
||||
CALL visualiza_detalle_kit(pkit) RETURNING arr_d
|
||||
|
||||
END IF
|
||||
END IF
|
||||
AFTER INPUT
|
||||
IF INT_FLAG THEN
|
||||
EXIT INPUT
|
||||
END IF
|
||||
FOR idx = 1 TO arr_d.getLength()
|
||||
LET arr_producto[idx].pcodn = arr_d[idx].cod_n
|
||||
LET arr_producto[idx].pcodgrupo = arr_d[idx].cod_grupo
|
||||
LET arr_producto[idx].pcodtipo = arr_d[idx].cod_tipo
|
||||
LET arr_producto[idx].pcodsec = arr_d[idx].cod_sec
|
||||
LET arr_producto[idx].descripcion_p1 = arr_d[idx].descripcion
|
||||
LET arr_producto[idx].cantidad = arr_d[idx].cantidad
|
||||
LET arr_producto[idx].precio = arr_d[idx].precio
|
||||
LET arr_producto[idx].porc_desc = arr_d[idx].porc_desc
|
||||
|
||||
END FOR
|
||||
END INPUT
|
||||
IF INT_FLAG THEN
|
||||
LET INT_FLAG = FALSE
|
||||
RETURN
|
||||
END IF
|
||||
END FUNCTION
|
||||
Reference in New Issue
Block a user