Instruccion de Johnny: todos los directorios de fuentes de inventario deben migrarse de la carpeta temporal PROYECTOS a la carpeta real PROYECTO, ya que PROYECTOS sera eliminada. Se elimino tambien un archivo suelto sin relacion llamado "ipdir" que existia en PROYECTO (del commit inicial) y bloqueaba el nombre de la carpeta. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
534 lines
19 KiB
Plaintext
534 lines
19 KiB
Plaintext
{
|
|
==========================================================================
|
|
PROGRAMA : VEPRMT032
|
|
OBJETIVO : ADMINISTRAR LOS KIT DE LOS PRODUCTOS TERMINADOS
|
|
DESARROLLADO POR : ING. JUAN SOTO
|
|
FECHA : 17/10/2014
|
|
==========================================================================
|
|
}
|
|
GLOBALS "ipprgb000.4gl"
|
|
DEFINE dataR RECORD
|
|
pcodn SMALLINT,
|
|
pcodgrupo SMALLINT,
|
|
pcodtipo SMALLINT,
|
|
pcodsec SMALLINT,
|
|
descripcion_p1 VARCHAR(100),
|
|
factor_d DEC(12,5),
|
|
cantidad DEC(12,5),
|
|
umedida CHAR(10),
|
|
longitud DEC(12,5),
|
|
creferencia VARCHAR(100),
|
|
costo DEC(12,5),
|
|
precio DEC(12,2),
|
|
valor DEC(12,2)
|
|
END RECORD
|
|
|
|
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
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descripcion_p VARCHAR(100)
|
|
END RECORD,
|
|
pkit int,pdescripcion VARCHAR(100),
|
|
cuenta_reg,curr SMALLINT
|
|
|
|
DEFINE arr_producto DYNAMIC ARRAY OF RECORD
|
|
pcodn SMALLINT,
|
|
pcodgrupo SMALLINT,
|
|
pcodtipo SMALLINT,
|
|
pcodsec SMALLINT,
|
|
descripcion_p1 VARCHAR(100),
|
|
factor_d DEC(12,5),
|
|
cantidad DEC(12,5),
|
|
umedida CHAR(10),
|
|
longitud DEC(12,5),
|
|
creferencia VARCHAR(100),
|
|
costo DEC(12,5),
|
|
precio 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
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descripcion_p VARCHAR(100)
|
|
END RECORD,
|
|
exito BOOLEAN,
|
|
modifica VARCHAR(3),
|
|
pprecio DEC(12,2)
|
|
|
|
OPEN FORM w1 FROM "ipfmmt076"
|
|
DISPLAY FORM w1
|
|
|
|
DIALOG ATTRIBUTES(UNBUFFERED)
|
|
INPUT BY NAME mproducto.* ATTRIBUTE(WITHOUT DEFAULTS)
|
|
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
|
|
|
|
IF pdescripcion IS NULL THEN
|
|
CALL msg(3)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
LET mproducto.descripcion_p = pdescripcion
|
|
DISPLAY BY NAME mproducto.descripcion_p
|
|
DISPLAY BY NAME mproducto.*
|
|
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
|
|
|
|
BEFORE ROW
|
|
LET idx = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
DISPLAY "idx: ",idx
|
|
DISPLAY "scr_l: ", scr_l
|
|
|
|
AFTER FIELD pcodsec
|
|
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 productoDetalle(arr_producto[idx].pcodn,
|
|
arr_producto[idx].pcodgrupo,
|
|
arr_producto[idx].pcodtipo,
|
|
arr_producto[idx].pcodsec,
|
|
idx,
|
|
scr_l)
|
|
|
|
IF arr_producto[idx].descripcion_p1 IS NULL THEN
|
|
CALL fgl_Winmessage("ERROR","ESTE CODIGO NO EXISTE","INFO")
|
|
NEXT FIELD pcodsec
|
|
END IF
|
|
|
|
--LET arr_producto[idx].* = dataR.*
|
|
--DISPLAY dataR.* TO sproducto[scr_l].*
|
|
|
|
AFTER FIELD cantidad
|
|
IF arr_producto[idx].cantidad IS NULL THEN
|
|
CALL fgl_Winmessage("ERROR","DEBE INGRESAR LA CANTIDAD DE ESTE PRODUCTO","INFO")
|
|
NEXT FIELD cantidad
|
|
END IF
|
|
|
|
LET arr_producto[idx].valor = arr_producto[idx].cantidad * arr_producto[idx].costo
|
|
|
|
ON ACTION producto ATTRIBUTE(TEXT="Producto")
|
|
CALL busca_prod1()
|
|
DISPLAY "busca_p: ",busca_p.*
|
|
|
|
CALL productoDetalle(busca_p.cod_n,busca_p.cod_grupo,busca_p.cod_tipo,busca_p.cod_sec,idx,scr_l)
|
|
DISPLAY "length: ",arr_producto.getLength()
|
|
IF arr_producto.getLength()<= 0 THEN
|
|
CALL fgl_Winmessage("ERROR","ESTE CODIGO NO EXISTE","INFO")
|
|
NEXT FIELD pcodsec
|
|
END IF
|
|
|
|
END INPUT
|
|
|
|
ON ACTION buscar
|
|
CALL actualiza_kit()
|
|
|
|
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
|
|
|
|
IF exito THEN
|
|
COMMIT WORK
|
|
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
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descripcion_p VARCHAR(100)
|
|
END RECORD
|
|
|
|
DEFINE z DYNAMIC ARRAY OF RECORD
|
|
pcodn SMALLINT,
|
|
pcodgrupo SMALLINT,
|
|
pcodtipo SMALLINT,
|
|
pcodsec SMALLINT,
|
|
descripcion_p1 VARCHAR(100),
|
|
factor_d DEC(12,5),
|
|
cantidad DEC(12,5),
|
|
umedida CHAR(10),
|
|
longitud DEC(12,5),
|
|
creferencia VARCHAR(100),
|
|
costo DEC(12,5),
|
|
precio DEC(12,2),
|
|
valor DEC(12,2)
|
|
END RECORD,
|
|
modificacion VARCHAR(3),
|
|
x_exito BOOLEAN,
|
|
codid INT
|
|
|
|
LET x_exito = TRUE
|
|
|
|
BEGIN WORK
|
|
DISPLAY "modificacion: ",modificacion
|
|
INSERT INTO iptb00060 (cod_n,cod_grupo,cod_tipo,cod_sec,us_crea,fech_crea)
|
|
VALUES(x.cod_n,x.cod_grupo,x.cod_tipo,x.cod_sec,usuarios,getdate())
|
|
|
|
LET codid = SQLCA.SQLERRD[2]
|
|
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","SE PRODUJO UN ERROR EN LA TABLA iptb00060","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 iptb00061(codid,cod_n,cod_grupo,cod_tipo,cod_sec,descripcion,
|
|
factor_d,cantidad,umedida,longitud,creferencia,
|
|
costo,precio,valor,us_crea,fech_crea)
|
|
VALUES(codid,z[curr].pcodn,z[curr].pcodgrupo,z[curr].pcodtipo,z[curr].pcodsec,
|
|
z[curr].descripcion_p1,z[curr].factor_d,z[curr].cantidad,z[curr].umedida,
|
|
z[curr].longitud,z[curr].creferencia,z[curr].costo,z[curr].precio,z[curr].valor,
|
|
usuarios,getdate())
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL fgl_winmessage("ERROR","SE PRODUJO UN ERROR EN LA TABLA vetb00061","INFO")
|
|
LET x_exito = FALSE
|
|
EXIT FOR
|
|
|
|
END IF
|
|
|
|
END IF
|
|
END FOR
|
|
RETURN x_exito
|
|
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)
|
|
|
|
SELECT a.descrip_esp, a.codid INTO xdescripcion
|
|
FROM iptb00002 a
|
|
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
|
|
END FUNCTION
|
|
|
|
FUNCTION productoDetalle(x,ind,lin)
|
|
DEFINE x RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT
|
|
END RECORD,
|
|
ind,lin SMALLINT
|
|
|
|
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp, b.factor_conv,null, a.unidad_med,
|
|
null,null,(c.gastos + c.labor + c.material),d.precio,NULL
|
|
INTO arr_producto[ind].pcodn, arr_producto[ind].pcodgrupo,arr_producto[ind].pcodtipo,
|
|
arr_producto[ind].pcodsec,arr_producto[ind].descripcion_p1,arr_producto[ind].factor_d,
|
|
arr_producto[ind].cantidad,arr_producto[ind].umedida,arr_producto[ind].longitud,
|
|
arr_producto[ind].creferencia,arr_producto[ind].costo,arr_producto[ind].precio,
|
|
arr_producto[ind].valor
|
|
FROM iptb00002 a
|
|
inner 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
|
|
inner join Iptb00004 c on a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_Sec
|
|
inner join vetb00025 d on a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND a.cod_tipo = d.cod_tipo AND a.cod_sec = d.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
|
|
c.ano = year(getdate()) and
|
|
d.ventas = 3
|
|
|
|
DISPLAY "ind,lin: ",ind,lin
|
|
DISPLAY "arr_producto[ind]: ",arr_producto[ind].*
|
|
--DISPLAY arr_producto[ind].* TO sproducto[lin].*
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_prod1()
|
|
DEFINE arr_prod DYNAMIC ARRAY OF RECORD
|
|
cod_n INTEGER,
|
|
cod_grupo INTEGER,
|
|
cod_tipo INTEGER,
|
|
cod_sec INTEGER,
|
|
descrip_esp CHAR(30),
|
|
unidad_med CHAR(5)
|
|
END RECORD
|
|
|
|
OPEN WINDOW busca_2 AT 8,4 WITH FORM "ipfmwd001" ATTRIBUTE (BORDER,FORM LINE
|
|
FIRST + 1,PROMPT LINE LAST)
|
|
|
|
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp
|
|
FROM cod_n,cod_grupo,cod_tipo,cod_sec,descrip_esp
|
|
|
|
LET selec_pt =
|
|
"SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ",
|
|
" a.unidad_med FROM iptb00002 a ",
|
|
"WHERE a.status_t IS NULL AND ",criterio CLIPPED," ORDER BY a.descrip_esp "
|
|
|
|
PREPARE comando_p FROM selec_pt
|
|
DECLARE busca_2 CURSOR FOR comando_p
|
|
|
|
LET idx = 1
|
|
FOREACH busca_2 INTO arr_prod[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL SET_COUNT(idx - 1)
|
|
|
|
DISPLAY ARRAY arr_prod TO s_prod.*
|
|
LET idx = ARR_CURR()
|
|
|
|
LET busca_p.cod_n = arr_prod[idx].cod_n
|
|
LET busca_p.cod_grupo = arr_prod[idx].cod_grupo
|
|
LET busca_p.cod_tipo = arr_prod[idx].cod_tipo
|
|
LET busca_p.cod_sec = arr_prod[idx].cod_sec
|
|
LET busca_p.descrip_esp = arr_prod[idx].descrip_esp
|
|
LET busca_p.unidad_med = arr_prod[idx].unidad_med
|
|
|
|
# para el precio
|
|
LET p_vetb25.cod_n = arr_prod[idx].cod_n
|
|
LET p_vetb25.cod_grupo = arr_prod[idx].cod_grupo
|
|
LET p_vetb25.cod_tipo = arr_prod[idx].cod_tipo
|
|
LET p_vetb25.cod_sec = arr_prod[idx].cod_sec
|
|
|
|
LET descrip1 = arr_prod[idx].descrip_esp
|
|
LET medida = arr_prod[idx].unidad_med
|
|
|
|
CLOSE WINDOW busca_2
|
|
END FUNCTION
|
|
|
|
FUNCTION actualiza_kit()
|
|
|
|
DEFINE cod_n,cod_grupo,cod_tipo,cod_sec SMALLINT,
|
|
id INT
|
|
|
|
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
|
|
CALL arr_producto.clear()
|
|
|
|
DIALOG ATTRIBUTES(UNBUFFERED)
|
|
|
|
INPUT BY NAME cod_n,cod_grupo,cod_tipo,cod_sec
|
|
BEFORE INPUT
|
|
NEXT FIELD cod_n
|
|
|
|
AFTER FIELD cod_sec
|
|
IF cod_sec IS NOT NULL THEN
|
|
CALL producto(cod_n,cod_grupo,cod_tipo,cod_sec) RETURNING pdescripcion
|
|
DISPLAY "pdescripcion: ",pdescripcion
|
|
|
|
IF pdescripcion IS NULL THEN
|
|
CALL msg(3)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
DISPLAY pdescripcion TO descripcion_p
|
|
|
|
SELECT DISTINCT a.id INTO id
|
|
FROM iptb00060 a
|
|
WHERE a.cod_n = cod_n AND
|
|
a.cod_grupo = cod_grupo AND
|
|
a.cod_tipo = cod_tipo AND
|
|
a.cod_sec = cod_sec
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","NO EXISTEN KIT CON ESTE CODIGO","INFO")
|
|
NEXT FIELD cod_n
|
|
ELSE
|
|
|
|
DECLARE busca_pdetalle CURSOR FOR
|
|
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descripcion,a.factor_d,a.cantidad,
|
|
a.umedida,a.longitud,a.creferencia,a.costo,a.precio,a.valor
|
|
FROM iptb00061 a
|
|
where a.codid = id
|
|
|
|
LET idx = 1
|
|
FOREACH busca_pdetalle 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].factor_d,
|
|
arr_producto[idx].cantidad,arr_producto[idx].umedida,arr_producto[idx].longitud,
|
|
arr_producto[idx].creferencia,arr_producto[idx].costo,arr_producto[idx].precio,arr_producto[idx].valor
|
|
LET idx = idx + 1
|
|
|
|
END FOREACH
|
|
|
|
IF idx > 1 THEN
|
|
INPUT ARRAY arr_producto FROM sproducto.* ATTRIBUTE(WITHOUT DEFAULTS)
|
|
|
|
BEFORE ROW
|
|
LET idx = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
DISPLAY "idx-2: ",idx
|
|
DISPLAY "scr_l-2: ", scr_l
|
|
|
|
AFTER FIELD pcodsec
|
|
IF arr_producto[idx].pcodn = cod_n AND
|
|
arr_producto[idx].pcodgrupo = cod_grupo AND
|
|
arr_producto[idx].pcodtipo = cod_tipo AND
|
|
arr_producto[idx].pcodsec = cod_sec THEN
|
|
CALL fgl_Winmessage("ERROR","ESTE CODIGO NO PUEDE SER IGUAL QUE EL CODIGO PRINCIPAL","INFO")
|
|
NEXT FIELD pcodsec
|
|
END IF
|
|
|
|
IF arr_producto[idx].descripcion_p1 IS NULL THEN
|
|
CALL fgl_Winmessage("ERROR","ESTE CODIGO NO EXISTE","INFO")
|
|
NEXT FIELD pcodsec
|
|
END IF
|
|
|
|
AFTER FIELD cantidad
|
|
DISPLAY "valor: ", arr_producto[idx].valor
|
|
IF arr_producto[idx].cantidad IS NULL THEN
|
|
CALL fgl_Winmessage("ERROR","DEBE INGRESAR LA CANTIDAD DE ESTE PRODUCTO","INFO")
|
|
NEXT FIELD cantidad
|
|
END IF
|
|
|
|
LET arr_producto[idx].valor = arr_producto[idx].cantidad * arr_producto[idx].costo
|
|
|
|
ON ACTION producto ATTRIBUTE(TEXT="Producto")
|
|
CALL busca_prod1()
|
|
DISPLAY "busca_p: ",busca_p.*
|
|
|
|
CALL productoDetalle(busca_p.cod_n,busca_p.cod_grupo,busca_p.cod_tipo,busca_p.cod_sec,idx,scr_l)
|
|
DISPLAY "length: ",arr_producto.getLength()
|
|
IF arr_producto.getLength()<= 0 THEN
|
|
CALL fgl_Winmessage("ERROR","ESTE CODIGO NO EXISTE","INFO")
|
|
NEXT FIELD pcodsec
|
|
END IF
|
|
|
|
ON ACTION Actualizar
|
|
DISPLAY "arr_producto.getLength(): ", arr_producto.getLength()
|
|
FOR idx =1 TO arr_producto.getLength()
|
|
IF arr_producto[idx].pcodn IS NOT NULL THEN
|
|
DISPLAY "id: ",id
|
|
DISPLAY arr_producto[idx].pcodn
|
|
DISPLAY arr_producto[idx].pcodgrupo
|
|
DISPLAY arr_producto[idx].pcodtipo
|
|
DISPLAY arr_producto[idx].pcodsec
|
|
|
|
UPDATE iptb00061 SET factor_d = arr_producto[idx].factor_d,
|
|
cantidad = arr_producto[idx].cantidad,
|
|
umedida = arr_producto[idx].umedida,
|
|
longitud = arr_producto[idx].longitud,
|
|
creferencia = arr_producto[idx].creferencia,
|
|
costo = arr_producto[idx].costo,
|
|
precio = arr_producto[idx].precio,
|
|
valor = arr_producto[idx].valor
|
|
WHERE codid = id --AND
|
|
--cod_n = arr_producto[idx].pcodn AND
|
|
--cod_grupo = arr_producto[idx].pcodgrupo AND
|
|
--cod_tipo = arr_producto[idx].pcodtipo AND
|
|
--cod_sec = arr_producto[idx].pcodsec
|
|
|
|
END IF
|
|
END FOR
|
|
|
|
CALL fgl_Winmessage("ERROR","REGISTRO ACTUALIZADO","INFO")
|
|
ON ACTION Eliminar
|
|
DISPLAY "Eliminar"
|
|
|
|
END INPUT
|
|
END IF
|
|
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
|
|
END FOR
|
|
END INPUT
|
|
|
|
|
|
END DIALOG
|
|
IF INT_FLAG THEN
|
|
LET INT_FLAG = FALSE
|
|
RETURN
|
|
END IF
|
|
END FUNCTION |