245 lines
8.4 KiB
Plaintext
245 lines
8.4 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------
|
|
PROGRAMA : COPRMT021
|
|
REALIZADO POR : Tadeo A. Ferreras F.
|
|
FECHA : Noviembre 17, 1994.
|
|
DESCRIPCION : Modificar Ordenes de Compras Guardando Original
|
|
--------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "coprgb000.4gl"
|
|
|
|
DEFINE c_i_d,c_i_d1,nota,nota1,nombre_mon CHAR(30)
|
|
DEFINE simb_mon CHAR(4)
|
|
DEFINE nom_via CHAR(10)
|
|
DEFINE req_ant ARRAY[100] OF INTEGER
|
|
DEFINE opc1,opc2,opc4,salir,proce CHAR(1)
|
|
DEFINE cod_mon,control_linea,control_item,idx2,total_parc INTEGER
|
|
DEFINE fecha1 DATE
|
|
DEFINE valor2,total DECIMAL(12,2)
|
|
DEFINE j RECORD LIKE cotb00025.*
|
|
DEFINE idx1,arr_1,requis INTEGER
|
|
|
|
FUNCTION coprmt021()
|
|
DEFINE p_cantidad DECIMAL(12,2),
|
|
p_precio DECIMAL(10,2)
|
|
|
|
CLEAR SCREEN
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 24,
|
|
COMMENT LINE 22,
|
|
PROMPT LINE 23,
|
|
MESSAGE LINE 22
|
|
|
|
OPEN FORM cofmmt021 FROM "cofmmt021"
|
|
DISPLAY FORM cofmmt021
|
|
CALL pantalla()
|
|
DISPLAY "coprmt021" AT 4,3
|
|
DISPLAY "Actualizacion de Ordenes" AT 6,28
|
|
|
|
#WHENEVER ERROR CONTINUE
|
|
|
|
|
|
SELECT dia INTO dia_aduana FROM cotb00028
|
|
# Aqui se prepara para la captura del criterio de seleccion
|
|
|
|
LET modifica = "S"
|
|
INPUT BY NAME ordenes.num_oc,ordenes.tipo,ordenes.cierre
|
|
|
|
AFTER FIELD num_oc
|
|
IF ordenes.num_oc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_oc
|
|
END IF
|
|
|
|
AFTER FIELD tipo
|
|
IF ordenes.tipo IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo
|
|
END IF
|
|
|
|
SELECT UNIQUE a.cod_sp,a.cod_sp_sec,b.nom_sp,a.fech_oc,a.cierre,a.cod_pt
|
|
INTO ordenes.cod_sp,ordenes.cod_sp_sec,suplidor.nom_sp,ordenes.fech_oc,
|
|
ordenes.cierre,ordenes.cod_pt
|
|
FROM cotb00014 a,cotb00001 b
|
|
WHERE a.cod_sp = b.cod_sp AND a.cod_sp_sec = b.cod_sp_sec AND
|
|
a.num_oc = ordenes.num_oc AND a.tipo = ordenes.tipo AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_oc
|
|
END IF
|
|
|
|
IF ordenes.cod_pt is not null THEN
|
|
SELECT a.nom_pt,a.duracion INTO nombre_p,m_articulos.dia_llegada
|
|
FROM cotb00019 a
|
|
WHERE cod_pt = ordenes.cod_pt
|
|
END IF
|
|
|
|
SELECT UNIQUE a.cod_mon INTO cod_mon FROM cotb00015 a
|
|
WHERE a.tipo = ordenes.tipo AND a.num_oc = ordenes.num_oc
|
|
|
|
DISPLAY BY NAME ordenes.cod_sp,ordenes.cod_sp_sec,suplidor.nom_sp,
|
|
ordenes.fech_oc,ordenes.cierre,nombre_p
|
|
|
|
AFTER FIELD cierre
|
|
IF ordenes.cierre IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cierre
|
|
END IF
|
|
END INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
DECLARE busca CURSOR FOR
|
|
SELECT UNIQUE a.num_req,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
|
|
a.cantidad,a.num_parte,a.precio,b.base * 1.0
|
|
FROM cotb00015 a,OUTER intb00002 b
|
|
WHERE a.tipo = ordenes.tipo AND a.num_oc = ordenes.num_oc AND
|
|
a.status_t IS NULL AND b.cod_n = a.cod_n AND
|
|
b.cod_grupo = a.cod_grupo AND b.cod_tipo = a.cod_tipo AND
|
|
b.cod_sec = a.cod_sec ORDER BY 1,2,3,4,5
|
|
|
|
LET idx = 1
|
|
LET idx1 = 0
|
|
FOREACH busca INTO arr_ordenes[idx].*
|
|
LET idx1= idx1+ 1
|
|
IF arr_ordenes[idx].valor IS NULL THEN
|
|
LET arr_ordenes[idx].valor = 1
|
|
END IF
|
|
LET arr_ordenes[idx].valor = (arr_ordenes[idx].cantidad/
|
|
arr_ordenes[idx].valor)*
|
|
arr_ordenes[idx].precio
|
|
|
|
SELECT a.cantidad,a.precio INTO
|
|
p_cantidad,p_precio
|
|
FROM cotb00015 a
|
|
WHERE a.cod_n=arr_ordenes[idx].cod_n and
|
|
a.cod_grupo=arr_ordenes[idx].cod_grupo and
|
|
a.cod_tipo=arr_ordenes[idx].cod_tipo and
|
|
a.cod_sec=arr_ordenes[idx].cod_sec AND
|
|
a.num_req= arr_ordenes[idx].num_req AND
|
|
a.num_oc = ordenes.num_oc AND
|
|
a.tipo = ordenes.tipo
|
|
|
|
LET arr_ordenes[idx1].cantidad = p_cantidad
|
|
LET arr_ordenes[idx1].precio = p_precio
|
|
|
|
LET arr_ordenes[idx].valor = arr_ordenes[idx].cantidad *
|
|
arr_ordenes[idx].precio
|
|
|
|
LET arr_ordenes21[idx1].num_req = arr_ordenes[idx].num_req
|
|
LET arr_ordenes21[idx1].cod_n = arr_ordenes[idx].cod_n
|
|
LET arr_ordenes21[idx1].cod_grupo = arr_ordenes[idx].cod_grupo
|
|
LET arr_ordenes21[idx1].cod_tipo = arr_ordenes[idx].cod_tipo
|
|
LET arr_ordenes21[idx1].cod_sec = arr_ordenes[idx].cod_sec
|
|
LET arr_ordenes21[idx1].cantidad = arr_ordenes[idx].cantidad
|
|
LET arr_ordenes21[idx1].precio = arr_ordenes[idx].precio
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL SET_COUNT(idx -1)
|
|
|
|
INPUT ARRAY arr_ordenes WITHOUT DEFAULTS FROM consart.* ATTRIBUTE (YELLOW)
|
|
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
BEFORE FIELD num_req
|
|
|
|
SELECT a.descrip_esp,a.unidad_med
|
|
INTO articulos.descrip_esp,articulos.unidad_med
|
|
FROM intb00001 a
|
|
WHERE a.cod_n=arr_ordenes[curr].cod_n and
|
|
a.cod_grupo=arr_ordenes[curr].cod_grupo and
|
|
a.cod_tipo=arr_ordenes[curr].cod_tipo and
|
|
a.cod_sec=arr_ordenes[curr].cod_sec
|
|
|
|
SELECT a.cod_nab,a.descrip_esp INTO m_articulos.cod_nab,descrip1
|
|
FROM cotb00005 a,intb00002 b
|
|
WHERE b.cod_n=arr_ordenes[curr].cod_n and
|
|
b.cod_grupo=arr_ordenes[curr].cod_grupo and
|
|
b.cod_tipo=arr_ordenes[curr].cod_tipo and
|
|
b.cod_sec=arr_ordenes[curr].cod_sec and
|
|
a.cod_nab = b.cod_nab
|
|
|
|
|
|
DISPLAY BY NAME m_articulos.cod_nab,descrip1,articulos.descrip_esp,
|
|
articulos.unidad_med
|
|
DISPLAY arr_ordenes[curr].cantidad,arr_ordenes[curr].precio,
|
|
arr_ordenes[curr].valor
|
|
TO consart[scr_l].cantidad,consart[scr_l].precio,
|
|
consart[scr_l].valor
|
|
|
|
NEXT FIELD num_parte
|
|
|
|
END INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LET opc = "N"
|
|
PROMPT "Toda la informacion esta correcta (S/N)?" FOR CHAR OPC
|
|
LET opc = UPSHIFT(opc)
|
|
|
|
IF opc = "S" THEN
|
|
|
|
INSERT INTO cotb00032 SELECT *FROM cotb00015
|
|
WHERE @tipo = ordenes.tipo AND @num_oc = ordenes.num_oc
|
|
|
|
UPDATE cotb00014 set (cierre,us_mod,fech_mod) =
|
|
(ordenes.cierre,USER,CURRENT)
|
|
WHERE @num_oc = ordenes.num_oc AND @tipo = ordenes.tipo
|
|
|
|
|
|
{ FOR idx = 1 TO idx1
|
|
|
|
INSERT INTO cotb00032 VALUES (ordenes.num_oc,arr_ordenes21[idx].num_req,
|
|
ordenes.tipo,arr_ordenes21[idx].cod_n,arr_ordenes21[idx].cod_grupo,
|
|
arr_ordenes21[idx].cod_tipo, arr_ordenes21[idx].cod_sec,
|
|
arr_ordenes21[idx].num_parte, arr_ordenes21[idx].cantidad,
|
|
arr_ordenes21[idx].precio,cod_mon,null,user,current,user,current)
|
|
END FOR
|
|
}
|
|
DELETE FROM cotb00015 WHERE tipo = ordenes.tipo AND
|
|
num_oc = ordenes.num_oc
|
|
|
|
FOR idx = 1 TO ARR_COUNT()
|
|
|
|
IF arr_ordenes[idx].num_req = 0 THEN
|
|
LET arr_ordenes[idx].num_req = null
|
|
END IF
|
|
|
|
IF arr_ordenes[idx].num_req IS NOT NULL THEN
|
|
IF arr_ordenes[idx].cod_n is not null THEN
|
|
|
|
INSERT INTO cotb00015 VALUES (ordenes.num_oc,arr_ordenes[idx].num_req,
|
|
ordenes.tipo,arr_ordenes[idx].cod_n,arr_ordenes[idx].cod_grupo,
|
|
arr_ordenes[idx].cod_tipo, arr_ordenes[idx].cod_sec,
|
|
arr_ordenes[idx].cantidad,
|
|
arr_ordenes[idx].precio,cod_mon,null,user,current,null,null)
|
|
END IF
|
|
END IF
|
|
|
|
END FOR
|
|
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
END FUNCTION
|
|
|