Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md
This commit is contained in:
@@ -0,0 +1,244 @@
|
||||
{
|
||||
-------------------------------------------------------------------------
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user