1051 lines
34 KiB
Plaintext
1051 lines
34 KiB
Plaintext
{
|
|
--------------------------------------------------------------------------
|
|
PROGRAMA : IPPRMT044
|
|
OBJETIVO : Programa Captura Documento Otros Movimientos de
|
|
Inventario de Producto Terminados.
|
|
PROGRAMADOR : Juan Soto.
|
|
FECHA REALIZACION : AGOSTO 1997.
|
|
ASESOR : JOSE ALFREDO PAULINO ALEJO
|
|
MODIFICADO POR : VICTOR GOMEZ C.
|
|
OBJETIVO : ACTUALIZAR EL ARCHIVO DE MONITOREO DE LAS ORDENES DE PRODUCCION
|
|
FECHA : Saturday, 03 March, 2001 11:01:36 AM
|
|
--------------------------------------------------------------------------
|
|
}
|
|
|
|
GLOBALS
|
|
"ipprgb000.4gl"
|
|
|
|
DEFINE selec_pt CHAR(1000)
|
|
DEFINE num_row,cuenta1,cuenta,ordenx INTEGER
|
|
DEFINE cant_ant ARRAY[50] OF INTEGER
|
|
DEFINE factor_conv ARRAY[200] OF DECIMAL(12,5)
|
|
DEFINE status_mo,ac_cli,opc4 CHAR(1)
|
|
DEFINE usuario CHAR(9)
|
|
DEFINE descrip_mov CHAR(30)
|
|
DEFINE canti34 LIKE iptb00006.cantidad_2
|
|
DEFINE prtb09 RECORD LIKE prtb00009.*
|
|
DEFINE busca_v RECORD
|
|
sec_cliente INTEGER,
|
|
nombre CHAR(30)
|
|
END RECORD
|
|
DEFINE busca_p RECORD
|
|
cod_n INTEGER,
|
|
cod_grupo INTEGER,
|
|
cod_tipo INTEGER,
|
|
cod_sec INTEGER,
|
|
descrip_esp CHAR(30),
|
|
unidad_med CHAR(5)
|
|
END RECORD
|
|
|
|
FUNCTION ipprmt044()
|
|
DEFINE fecha CHAR(8)
|
|
DEFINE hora CHAR(5)
|
|
|
|
CLEAR SCREEN
|
|
OPTIONS
|
|
ERROR LINE 24,
|
|
FORM LINE 4,
|
|
COMMENT LINE 22,
|
|
PROMPT LINE 23
|
|
LET fecha = today USING "dd/mm/yyyy"
|
|
LET hora = time
|
|
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
DISPLAY p_companias.nombre CLIPPED AT 1,lj
|
|
ATTRIBUTE (REVERSE,BLUE)
|
|
DISPLAY fecha AT 1,70 ATTRIBUTE (BLUE)
|
|
DISPLAY hora AT 2,73 ATTRIBUTE (BLUE)
|
|
DISPLAY "ipprmt044" AT 1,3 ATTRIBUTE (BLUE)
|
|
DISPLAY "Otros Movimientos" AT 2,30
|
|
DISPLAY "<Esc> Adiciona Registro" AT 3,2 ATTRIBUTE (BLUE,REVERSE)
|
|
DISPLAY "<Delete> Cancela Operacion" AT 3,54 ATTRIBUTE (BLUE,REVERSE)
|
|
OPEN FORM ipfmmt044 FROM "ipfmmt044"
|
|
DISPLAY FORM ipfmmt044
|
|
|
|
CALL ipprad44()
|
|
END FUNCTION
|
|
|
|
FUNCTION ipprad44()
|
|
DEFINE cajas ARRAY[200] OF INTEGER
|
|
# WHENEVER ERROR CONTINUE
|
|
LET int_flag = FALSE
|
|
INITIALIZE otros_mov.* TO NULL
|
|
|
|
LABEL otra_vez:
|
|
LABEL vuelve:
|
|
IF (OPC = "S" OR OPC = "s") OR opc is null THEN
|
|
INITIALIZE otros_mov.* TO NULL
|
|
END IF
|
|
|
|
|
|
IF otros_mov.num_doc is null THEN
|
|
LET otros_mov.num_doc = 0
|
|
END IF
|
|
|
|
LET p_fechas = otros_mov.fecha USING "dd/mm/yyyy"
|
|
|
|
CALL prd()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
|
|
INPUT BY NAME otros_mov.* WITHOUT DEFAULTS
|
|
ON KEY(CONTROL-W)
|
|
IF INFIELD(cod_sp_sec) OR INFIELD(cod_sp) THEN
|
|
CALL busca_cliente()
|
|
LET otros_mov.cod_sp = clientes[idx].tipo_cliente
|
|
LET otros_mov.cod_sp_sec = clientes[idx].sec_cliente
|
|
LET otros_mov.descrip4 = clientes[idx].nombre
|
|
|
|
DISPLAY BY NAME otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,
|
|
otros_mov.descrip4
|
|
EXIT INPUT
|
|
END IF
|
|
AFTER FIELD cod_cia
|
|
IF otros_mov.cod_cia IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_cia
|
|
END IF
|
|
|
|
IF otros_mov.cod_cia = 1 THEN
|
|
LET nombre_cia = "MARMOTECH"
|
|
ELSE
|
|
LET nombre_cia = ""
|
|
END IF
|
|
DISPLAY BY NAME nombre_cia
|
|
|
|
BEFORE FIELD bodega
|
|
LET otros_mov.bodega = 1
|
|
DISPLAY BY NAME otros_mov.bodega
|
|
|
|
AFTER FIELD fecha
|
|
IF otros_mov.fecha > TODAY THEN
|
|
LET numero_msg = 189
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
LET p_fechas = otros_mov.fecha using "dd/mm/yyyy"
|
|
|
|
CALL prd()
|
|
LET otros_mov.fecha = p_fechas
|
|
DISPLAY BY NAME otros_mov.fecha
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
AFTER FIELD fact_no
|
|
LET otros_mov.cod_sp = null
|
|
LET otros_mov.cod_sp_sec = null
|
|
|
|
IF otros_mov.cod_mov = 12 THEN
|
|
IF otros_mov.fact_no is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD fact_no
|
|
END IF
|
|
END IF
|
|
|
|
IF otros_mov.fact_no is not null THEN
|
|
IF otros_mov.cod_mov = 32 THEN
|
|
|
|
SELECT unique cod_n FROM iptb00006
|
|
WHERE fact_no = otros_mov.fact_no and cod_mov = otros_mov.cod_mov and
|
|
fecha >= "010194" AND status_t is null
|
|
|
|
IF status != NOTFOUND THEN
|
|
LET numero_msg = 103
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD fact_no
|
|
END IF
|
|
END IF
|
|
ELSE
|
|
IF otros_mov.cod_mov = 12 THEN
|
|
SELECT UNIQUE tipo_cliente,sec_cliente
|
|
INTO otros_mov.cod_sp,otros_mov.cod_sp_sec
|
|
FROM vetb00002 WHERE factura=otros_mov.fact_no and status_t is null AND
|
|
fecha_factura >= "010194"
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 102
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD fact_no
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY BY NAME otros_mov.cod_sp,otros_mov.cod_sp_sec
|
|
|
|
AFTER FIELD cod_transp
|
|
IF otros_mov.cod_transp is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD cod_transp
|
|
END IF
|
|
|
|
AFTER FIELD sec_transp
|
|
IF otros_mov.sec_transp is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD cod_transp
|
|
END IF
|
|
SELECT nombre INTO descrip2 FROM vetb00015
|
|
WHERE cod_transp=otros_mov.cod_transp and
|
|
sec_transp=otros_mov.sec_transp and
|
|
status_t is null
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
# NEXT FIELD cod_transp
|
|
END IF
|
|
DISPLAY BY NAME descrip2
|
|
|
|
AFTER FIELD cod_tarifa
|
|
IF otros_mov.cod_tarifa is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
# NEXT FIELD cod_tarifa
|
|
END IF
|
|
SELECT descrip INTO descrip1 FROM vetb00023
|
|
WHERE cod_tarifa = otros_mov.cod_tarifa and status_t is null
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
#NEXT FIELD cod_tarifa
|
|
END IF
|
|
DISPLAY BY NAME descrip1
|
|
|
|
AFTER FIELD bodega
|
|
SELECT *FROM intb00009 WHERE cod_bodega = otros_mov.bodega
|
|
IF status >= 0 THEN
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD bodega
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
|
|
BEFORE FIELD num_doc
|
|
|
|
LET otros_mov.fecha = today
|
|
DISPLAY BY NAME otros_mov.fecha
|
|
|
|
AFTER FIELD cod_mov
|
|
|
|
IF (otros_mov.cod_mov IS NULL OR otros_mov.cod_mov = 30 OR
|
|
otros_mov.cod_mov = 31) THEN
|
|
LET numero_msg = 1660
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
SELECT a.descrip_mov,a.status_mov INTO otros_mov.descrip_mov,status_m
|
|
FROM iptb00005 a WHERE a.cod_mov = otros_mov.cod_mov AND a.status_t is null
|
|
|
|
IF status >= 0 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
|
|
if bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
end if
|
|
END IF
|
|
|
|
DISPLAY BY NAME otros_mov.descrip_mov
|
|
{ CHEQUEO DE PERMISOS PARA EL USUARIO
|
|
SELECT * FROM iptb00005 where cod_mov = otros_mov.cod_mov and
|
|
us_crea = user
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 139
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
}
|
|
IF otros_mov.cod_mov = 32 or
|
|
otros_mov.cod_mov = 12
|
|
THEN
|
|
NEXT FIELD fact_no
|
|
ELSE
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
AFTER FIELD conduce_no
|
|
IF otros_mov.cod_mov = 20 THEN
|
|
IF otros_mov.conduce_no IS NULL THEN
|
|
LET numero_msg = 1662
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD conduce_no
|
|
ELSE
|
|
LET ordenx = otros_mov.conduce_no
|
|
SELECT * FROM prtb00012 #-> Valida si la orden digitada existe vg.
|
|
WHERE num_oc = ordenx
|
|
AND status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 85
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD conduce_no
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
BEFORE FIELD cod_sp
|
|
IF otros_mov.cod_mov = 33 OR otros_mov.cod_mov = 34 THEN
|
|
CALL busca_vend()
|
|
LET otros_mov.cod_sp = 12
|
|
LET otros_mov.cod_sp_sec= busca_v.sec_cliente
|
|
LET otros_mov.descrip4 = busca_v.nombre
|
|
DISPLAY BY NAME otros_mov.cod_sp,otros_mov.cod_sp_sec,otros_mov.descrip4
|
|
NEXT FIELD cod_sp_sec
|
|
END IF
|
|
|
|
AFTER FIELD cod_sp
|
|
IF ac_cli = "S" AND otros_mov.cod_sp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
|
|
AFTER FIELD cod_sp_sec
|
|
IF ac_cli = "S" AND otros_mov.cod_sp_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
|
|
IF otros_mov.cod_mov = 12 THEN
|
|
IF otros_mov.cod_sp_sec is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
END IF
|
|
|
|
IF otros_mov.cod_sp_sec is not null THEN
|
|
SELECT nombre INTO otros_mov.descrip4 FROM vetb00004
|
|
WHERE tipo_cliente = otros_mov.cod_sp and
|
|
sec_cliente = otros_mov.cod_sp_sec and
|
|
status_t is null
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
|
|
DISPLAY BY NAME otros_mov.descrip4
|
|
|
|
IF otros_mov.fact_no is not null THEN
|
|
SELECT sec_cliente FROM vetb00002
|
|
WHERE factura = otros_mov.fact_no and
|
|
sec_cliente = otros_mov.cod_sp_sec
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 237
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp_sec
|
|
END IF
|
|
END IF
|
|
END IF
|
|
IF otros_mov.cod_mov = 33 OR otros_mov.cod_mov = 34 THEN
|
|
|
|
SELECT unique sec_cliente FROM vetb00033
|
|
WHERE sec_cliente = otros_mov.cod_sp_sec
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = -1301
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sp
|
|
END IF
|
|
END IF
|
|
|
|
END INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
|
|
FOR idx = 1 to arr_count()
|
|
LET movi2[idx].cod_n = null
|
|
LET movi2[idx].cod_grupo = null
|
|
LET movi2[idx].cod_tipo = null
|
|
LET movi2[idx].cod_sec = null
|
|
LET movi2[idx].cantidad_1 = null
|
|
LET movi2[idx].cantidad_2 = null
|
|
LET movi2[idx].unidad_med = null
|
|
LET movi2[idx].descrip_esp = null
|
|
END FOR
|
|
SLEEP 1
|
|
RETURN
|
|
END IF
|
|
|
|
IF opc = "S" or opc = "s" OR opc IS NULL THEN
|
|
FOR idx = 1 to arr_count()
|
|
LET movi2[idx].cod_n = null
|
|
LET movi2[idx].cod_grupo = null
|
|
LET movi2[idx].cod_tipo = null
|
|
LET movi2[idx].cod_sec = null
|
|
LET movi2[idx].cantidad_2 = null
|
|
LET movi2[idx].cantidad_1 = null
|
|
LET movi2[idx].unidad_med = null
|
|
LET movi2[idx].descrip_esp = null
|
|
END FOR
|
|
END IF
|
|
INITIALIZE ant_art.* TO NULL
|
|
|
|
IF status_m = "S" THEN
|
|
PREPARE b_fact FROM selec2
|
|
DECLARE facturas CURSOR FOR b_fact
|
|
OPEN facturas USING otros_mov.fact_no
|
|
|
|
LET idx = 1
|
|
FOREACH facturas INTO movi2[idx].*,cajas[idx],cant_ant[idx]
|
|
IF status = notfound THEN
|
|
EXIT FOREACH
|
|
END IF
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
END IF
|
|
|
|
|
|
LET decide = null
|
|
|
|
CALL set_count(idx - 1)
|
|
INPUT ARRAY movi2 WITHOUT DEFAULTS FROM s_movi1.*
|
|
|
|
# Este BEFORE FIELD estaba en comentario por disposicion de alguien hace algun
|
|
# tiempo y ahora no se sabe porque se determino que cuando usted hace una
|
|
# devolucion le permita al usuario modificar el codigo del producto
|
|
|
|
# Hoy 13 de noviembre de 1993 el Ing. de informatica dispuso que
|
|
# cuando sea una devolucion a una factura no se permitiera la actualizacion
|
|
# del codigo del producto
|
|
|
|
BEFORE ROW
|
|
LET p_act = arr_curr()
|
|
LET scr_l = scr_line()
|
|
|
|
ON KEY(CONTROL-W)
|
|
CASE
|
|
WHEN INFIELD (cod_n)
|
|
CALL busca_prod1()
|
|
|
|
LET movi2[p_act].cod_n = busca_p.cod_n
|
|
LET movi2[p_act].cod_grupo = busca_p.cod_grupo
|
|
LET movi2[p_act].cod_tipo = busca_p.cod_tipo
|
|
LET movi2[p_act].cod_sec = busca_p.cod_sec
|
|
LET movi2[p_act].descrip_esp= busca_p.descrip_esp
|
|
LET movi2[p_act].unidad_med = busca_p.unidad_med
|
|
|
|
DISPLAY movi2[p_act].cod_n, movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,movi2[p_act].cod_sec,
|
|
movi2[p_act].descrip_esp,movi2[p_act].unidad_med
|
|
TO s_movi1[p_act].cod_n, s_movi1[p_act].cod_grupo,
|
|
s_movi1[p_act].cod_tipo,s_movi1[p_act].cod_sec,
|
|
s_movi1[p_act].descrip_esp,s_movi1[p_act].unidad_med
|
|
|
|
WHEN INFIELD (cod_grupo)
|
|
CALL busca_prod1()
|
|
|
|
LET movi2[p_act].cod_n = busca_p.cod_n
|
|
LET movi2[p_act].cod_grupo = busca_p.cod_grupo
|
|
LET movi2[p_act].cod_tipo = busca_p.cod_tipo
|
|
LET movi2[p_act].cod_sec = busca_p.cod_sec
|
|
LET movi2[p_act].descrip_esp= busca_p.descrip_esp
|
|
LET movi2[p_act].unidad_med = busca_p.unidad_med
|
|
|
|
DISPLAY movi2[p_act].cod_n, movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,movi2[p_act].cod_sec,
|
|
movi2[p_act].descrip_esp,movi2[p_act].unidad_med
|
|
TO s_movi1[p_act].cod_n, s_movi1[p_act].cod_grupo,
|
|
s_movi1[p_act].cod_tipo,s_movi1[p_act].cod_sec,
|
|
s_movi1[p_act].descrip_esp,s_movi1[p_act].unidad_med
|
|
|
|
WHEN INFIELD (cod_tipo)
|
|
CALL busca_prod1()
|
|
|
|
LET movi2[p_act].cod_n = busca_p.cod_n
|
|
LET movi2[p_act].cod_grupo = busca_p.cod_grupo
|
|
LET movi2[p_act].cod_tipo = busca_p.cod_tipo
|
|
LET movi2[p_act].cod_sec = busca_p.cod_sec
|
|
LET movi2[p_act].descrip_esp= busca_p.descrip_esp
|
|
LET movi2[p_act].unidad_med = busca_p.unidad_med
|
|
|
|
DISPLAY movi2[p_act].cod_n, movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,movi2[p_act].cod_sec,
|
|
movi2[p_act].descrip_esp,movi2[p_act].unidad_med
|
|
TO s_movi1[p_act].cod_n, s_movi1[p_act].cod_grupo,
|
|
s_movi1[p_act].cod_tipo,s_movi1[p_act].cod_sec,
|
|
s_movi1[p_act].descrip_esp,s_movi1[p_act].unidad_med
|
|
|
|
WHEN INFIELD (cod_sec)
|
|
CALL busca_prod1()
|
|
|
|
LET movi2[p_act].cod_n = busca_p.cod_n
|
|
LET movi2[p_act].cod_grupo = busca_p.cod_grupo
|
|
LET movi2[p_act].cod_tipo = busca_p.cod_tipo
|
|
LET movi2[p_act].cod_sec = busca_p.cod_sec
|
|
LET movi2[p_act].descrip_esp= busca_p.descrip_esp
|
|
LET movi2[p_act].unidad_med = busca_p.unidad_med
|
|
|
|
DISPLAY movi2[p_act].cod_n, movi2[p_act].cod_grupo,
|
|
movi2[p_act].cod_tipo,movi2[p_act].cod_sec,
|
|
movi2[p_act].descrip_esp,movi2[p_act].unidad_med
|
|
TO s_movi1[p_act].cod_n, s_movi1[p_act].cod_grupo,
|
|
s_movi1[p_act].cod_tipo,s_movi1[p_act].cod_sec,
|
|
s_movi1[p_act].descrip_esp,s_movi1[p_act].unidad_med
|
|
|
|
END CASE
|
|
CALL integridad()
|
|
if bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
end if
|
|
|
|
|
|
AFTER ROW
|
|
LET p_act = arr_curr()
|
|
IF movi2[p_act].cod_n is not null and movi2[p_act].cod_grupo is not null and
|
|
movi2[p_act].cod_tipo is not null and movi2[p_act].cod_sec is not null then
|
|
|
|
LET ant_art.cod_n = movi2[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi2[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi2[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi2[p_act].cod_sec
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != p_act THEN
|
|
IF movi2[idx].cod_n = ant_art.cod_n AND
|
|
movi2[idx].cod_grupo = ant_art.cod_grupo AND
|
|
movi2[idx].cod_tipo = ant_art.cod_tipo AND
|
|
movi2[idx].cod_sec = ant_art.cod_sec THEN
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
LET p_act = p_act - 1
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
|
|
AFTER FIELD cod_n
|
|
LET p_act = arr_curr()
|
|
IF movi2[p_act].cod_n is not null then
|
|
|
|
LET ant_art.cod_n = movi2[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi2[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi2[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi2[p_act].cod_sec
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != p_act THEN
|
|
IF movi2[idx].cod_n = ant_art.cod_n AND
|
|
movi2[idx].cod_grupo = ant_art.cod_grupo AND
|
|
movi2[idx].cod_tipo = ant_art.cod_tipo AND
|
|
movi2[idx].cod_sec = ant_art.cod_sec THEN
|
|
LET p_act = p_act - 1
|
|
NEXT FIELD cod_grupo
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
|
|
|
|
AFTER FIELD cod_grupo
|
|
LET p_act = arr_curr()
|
|
IF movi2[p_act].cod_grupo is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
LET ant_art.cod_n = movi2[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi2[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi2[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi2[p_act].cod_sec
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != p_act THEN
|
|
IF movi2[idx].cod_n = ant_art.cod_n AND
|
|
movi2[idx].cod_grupo = ant_art.cod_grupo AND
|
|
movi2[idx].cod_tipo = ant_art.cod_tipo AND
|
|
movi2[idx].cod_sec = ant_art.cod_sec THEN
|
|
LET p_act = p_act - 1
|
|
NEXT FIELD cod_tipo
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
AFTER FIELD cod_tipo
|
|
LET p_act = arr_curr()
|
|
IF movi2[p_act].cod_tipo is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
LET ant_art.cod_n = movi2[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi2[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi2[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi2[p_act].cod_sec
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != p_act THEN
|
|
IF movi2[idx].cod_n = ant_art.cod_n AND
|
|
movi2[idx].cod_grupo = ant_art.cod_grupo AND
|
|
movi2[idx].cod_tipo = ant_art.cod_tipo AND
|
|
movi2[idx].cod_sec = ant_art.cod_sec THEN
|
|
LET p_act = p_act - 1
|
|
NEXT FIELD cod_sec
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
|
|
AFTER FIELD cod_sec
|
|
LET p_act = arr_curr()
|
|
IF movi2[p_act].cod_sec is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
IF movi2[p_act].cod_n is null AND movi2[p_act].cod_sec is not null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
IF movi2[p_act].cod_n is not null and movi2[p_act].cod_grupo is not null and
|
|
movi2[p_act].cod_tipo is not null and movi2[p_act].cod_sec is not null then
|
|
|
|
|
|
SELECT * INTO p_iptb02.* FROM iptb00002
|
|
WHERE cod_n=movi2[p_act].cod_n and cod_grupo = movi2[p_act].cod_grupo and
|
|
cod_tipo=movi2[p_act].cod_tipo and cod_sec = movi2[p_act].cod_sec and
|
|
status_t is null
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
SELECT UNIQUE a.factor_conv INTO factor_conv[p_act] FROM iptb00001 a
|
|
WHERE a.cod_n=movi2[p_act].cod_n and a.cod_grupo=movi2[p_act].cod_grupo
|
|
and a.cod_tipo=movi2[p_act].cod_tipo and a.cod_sec=movi2[p_act].cod_sec
|
|
and a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
ERROR "NO EXISTE FACTOR DE CONVERSION"
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
LET movi2[p_act].descrip_esp = p_iptb02.descrip_esp CLIPPED
|
|
LET movi2[p_act].unidad_med = p_iptb02.unidad_med CLIPPED
|
|
|
|
DISPLAY movi2[p_act].descrip_esp TO s_movi1[scr_l].descrip_esp
|
|
ATTRIBUTE(CYAN)
|
|
DISPLAY movi2[p_act].unidad_med TO s_movi1[scr_l].unidad_med
|
|
ATTRIBUTE(CYAN)
|
|
|
|
LET ant_art.cod_n = movi2[p_act].cod_n
|
|
LET ant_art.cod_grupo = movi2[p_act].cod_grupo
|
|
LET ant_art.cod_tipo = movi2[p_act].cod_tipo
|
|
LET ant_art.cod_sec = movi2[p_act].cod_sec
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF idx != p_act THEN
|
|
IF movi2[idx].cod_n = ant_art.cod_n AND
|
|
movi2[idx].cod_grupo = ant_art.cod_grupo AND
|
|
movi2[idx].cod_tipo = ant_art.cod_tipo AND
|
|
movi2[idx].cod_sec = ant_art.cod_sec THEN
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END IF
|
|
|
|
AFTER FIELD cantidad_1
|
|
LET p_act = arr_curr()
|
|
|
|
IF movi2[p_act].cod_n is not null and movi2[p_act].cod_grupo is not null and
|
|
movi2[p_act].cod_tipo is not null and movi2[p_act].cod_sec is not null
|
|
THEN
|
|
|
|
IF movi2[p_act].cantidad_1 IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cantidad_1
|
|
END IF
|
|
|
|
LET movi2[p_act].cantidad_2=movi2[p_act].cantidad_1*factor_conv[p_act]
|
|
DISPLAY movi2[p_act].cantidad_2 TO s_movi1[scr_l].cantidad_2
|
|
LET p_iptb06.cantidad_2 = 0
|
|
|
|
IF status_m = "2" THEN
|
|
# BUSCA LA EXISTENCIA
|
|
SELECT SUM(a.cantidad_2) INTO p_iptb06.cantidad_2 FROM iptb00006 a
|
|
WHERE a.cod_n=movi2[p_act].cod_n and a.cod_grupo=movi2[p_act].cod_grupo
|
|
and a.cod_tipo=movi2[p_act].cod_tipo and a.cod_sec=movi2[p_act].cod_sec
|
|
and a.status_t IS NULL
|
|
|
|
IF p_iptb06.cantidad_2 IS NULL THEN
|
|
LET p_iptb06.cantidad_2 = 0
|
|
END IF
|
|
|
|
IF movi2[p_act].cantidad_2 > p_iptb06.cantidad_2 THEN
|
|
LET numero_msg = 30
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cantidad_2
|
|
END IF
|
|
END IF
|
|
LET movi3[p_act].cantidad_2 = movi2[p_act].cantidad_2
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
END INPUT
|
|
|
|
LABEL sale_boni:
|
|
PROMPT "Toda la Informacion Esta Correcta? (S/N)" FOR CHAR opc
|
|
|
|
IF OPC = "S" or OPC = "s" THEN
|
|
# Actualiza tabla control ultimo documento
|
|
SELECT num_doc INTO otros_mov.num_doc FROM iptb00007
|
|
WHERE cod_mov = otros_mov.cod_mov
|
|
|
|
IF status = notfound THEN
|
|
LET otros_mov.num_doc = 0
|
|
INSERT INTO iptb00007 values(1,otros_mov.cod_mov,null,user,current,null,null)
|
|
END IF
|
|
|
|
LET otros_mov.num_doc = otros_mov.num_doc + 1
|
|
|
|
UPDATE iptb00007 set num_doc = otros_mov.num_doc,
|
|
us_crea = user,
|
|
fech_crea = current
|
|
WHERE cod_mov = otros_mov.cod_mov
|
|
|
|
DISPLAY BY NAME otros_mov.num_doc ATTRIBUTE (BLUE)
|
|
|
|
FOR idx = 1 TO arr_count()
|
|
IF movi2[idx].cod_n is not null and movi2[idx].cod_grupo is not null and
|
|
movi2[idx].cod_tipo is not null and movi2[idx].cod_sec is not null THEN
|
|
|
|
IF movi2[idx].cantidad_2 is not null THEN
|
|
|
|
IF status_m = "2" THEN
|
|
LET movi2[idx].cantidad_2 = movi2[idx].cantidad_2 * -1
|
|
END IF
|
|
|
|
INSERT INTO iptb00006 VALUES
|
|
(otros_mov.cod_cia,otros_mov.num_doc,otros_mov.fecha,
|
|
otros_mov.fact_no,otros_mov.conduce_no,null,null,otros_mov.cod_sp,
|
|
otros_mov.cod_sp_sec,otros_mov.cod_transp,
|
|
otros_mov.sec_transp,otros_mov.placa,otros_mov.cod_tarifa,
|
|
otros_mov.cod_mov,otros_mov.detalle,movi2[idx].cod_n,
|
|
movi2[idx].cod_grupo,
|
|
movi2[idx].cod_tipo,movi2[idx].cod_sec,
|
|
movi2[idx].cantidad_1,movi2[idx].cantidad_2,
|
|
null,null,otros_mov.bodega,null,user,current,null,null)
|
|
|
|
CALL integridad()
|
|
|
|
if bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
end if
|
|
|
|
END IF { if de cantidad_2 no NULL }
|
|
END IF {if cod_n cod_tipo ........ is not null }
|
|
END FOR
|
|
#-> Actualiza la tabla de monitoreo de las ordenes de corte vg. Saturday, 03 March, 2001 10:51:42 AM
|
|
IF otros_mov.cod_mov = 20 THEN
|
|
LET prtb09.detalle = "ENTRADA DE PRODUCCION A ALMACEN # ",otros_mov.num_doc USING "<<<<<<<",
|
|
" DE FECHA : ",otros_mov.fecha USING "dd/mm/yyyy"
|
|
INSERT INTO prtb00009
|
|
VALUES (ordenx,otros_mov.fecha,"S",prtb09.detalle,NULL,USER,CURRENT,NULL,NULL)
|
|
END IF
|
|
DISPLAY " "
|
|
|
|
PROMPT "Desea Imprimir Formulario Ahora? (S/N)" FOR CHAR opt2
|
|
|
|
IF opt2 = "S" OR opt2 = "s" THEN
|
|
START REPORT formu4 TO "C:\\archivo"
|
|
LET ya = null
|
|
FOR idx = 1 TO arr_count()
|
|
IF movi2[idx].cod_sec IS NOT NULL THEN
|
|
OUTPUT TO REPORT formu4(otros_mov.*,movi2[idx].*)
|
|
END IF
|
|
END FOR
|
|
|
|
FINISH REPORT formu4
|
|
RUN "TYPE C:\\ARCHIVO > LPT3"
|
|
END IF
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
CLEAR FORM
|
|
|
|
FOR idx = 1 to 6
|
|
LET movi2[idx].cod_n = null
|
|
LET movi2[idx].cod_grupo = null
|
|
LET movi2[idx].cod_tipo = null
|
|
LET movi2[idx].cod_sec = null
|
|
LET movi2[idx].cantidad_2 = null
|
|
LET movi2[idx].unidad_med = null
|
|
LET movi2[idx].descrip_esp = null
|
|
DISPLAY movi2[idx].cod_n to s_movi1[idx].cod_n
|
|
DISPLAY movi2[idx].cod_grupo to s_movi1[idx].cod_grupo
|
|
DISPLAY movi2[idx].cod_tipo to s_movi1[idx].cod_tipo
|
|
DISPLAY movi2[idx].cod_sec to s_movi1[idx].cod_sec
|
|
DISPLAY movi2[idx].descrip_esp to s_movi1[idx].descrip_esp
|
|
DISPLAY movi2[idx].unidad_med to s_movi1[idx].unidad_med
|
|
END FOR
|
|
|
|
FOR idx = 1 to 20
|
|
LET movi2[idx].cod_n = null
|
|
LET movi2[idx].cod_grupo = null
|
|
LET movi2[idx].cod_tipo = null
|
|
LET movi2[idx].cod_sec = null
|
|
LET movi2[idx].cantidad_2 = null
|
|
LET movi2[idx].unidad_med = null
|
|
LET movi2[idx].descrip_esp = null
|
|
END FOR
|
|
ELSE
|
|
GOTO otra_vez
|
|
END IF
|
|
GOTO vuelve
|
|
END FUNCTION
|
|
|
|
REPORT formu4(x,z)
|
|
|
|
DEFINE x RECORD
|
|
num_doc LIKE iptb00006.num_doc,
|
|
cod_cia LIKE iptb00006.cod_cia,
|
|
cod_mov LIKE iptb00006.cod_mov,
|
|
fact_no LIKE iptb00006.fact_no,
|
|
cod_transp LIKE iptb00006.cod_transp,
|
|
sec_transp LIKE iptb00006.sec_transp,
|
|
cod_tarifa LIKE iptb00006.cod_tarifa,
|
|
placa LIKE iptb00006.placa,
|
|
fecha LIKE iptb00006.fecha,
|
|
descrip_mov LIKE intb00005.descrip_mov,
|
|
bodega LIKE iptb00006.bodega,
|
|
conduce_no LIKE iptb00006.conduce_no,
|
|
detalle LIKE iptb00006.detalle,
|
|
cod_sp LIKE iptb00006.cod_sp,
|
|
cod_sp_sec LIKE iptb00006.cod_sp_sec,
|
|
descrip4 CHAR(30)
|
|
END RECORD
|
|
|
|
DEFINE z RECORD
|
|
cod_n LIKE iptb00002.cod_n,
|
|
cod_grupo LIKE iptb00002.cod_grupo,
|
|
cod_tipo LIKE iptb00002.cod_tipo,
|
|
cod_sec LIKE iptb00002.cod_sec,
|
|
cantidad_1 LIKE iptb00006.cantidad_1,
|
|
cantidad_2 LIKE iptb00006.cantidad_2,
|
|
unidad_med LIKE iptb00002.unidad_med,
|
|
descrip_esp CHAR(40)
|
|
END RECORD
|
|
|
|
DEFINE usuario_c CHAR(9)
|
|
DEFINE signo CHAR(1)
|
|
DEFINE doce,normal,doble,doble_of,negras,negras_off CHAR(2)
|
|
DEFINE l,cuenta SMALLINT
|
|
|
|
OUTPUT
|
|
LEFT MARGIN 5
|
|
|
|
ORDER BY x.num_doc,z.cod_sec
|
|
FORMAT
|
|
|
|
BEFORE GROUP OF x.num_doc
|
|
LET doble = ASCII 14
|
|
LET doble_of = ASCII 20
|
|
LET negras = ASCII 27, ASCII 69
|
|
LET negras_off = ASCII 27, ASCII 70
|
|
SELECT unique us_crea INTO usuario_c
|
|
FROM iptb00006 WHERE num_doc = x.num_doc and
|
|
cod_mov = x.cod_mov and
|
|
us_crea = user
|
|
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 27, ASCII 80
|
|
|
|
PRINT doce
|
|
PRINT COLUMN 1, negras,doble,p_companias.nombre CLIPPED
|
|
PRINT COLUMN 71,"No. ",doble,x.num_doc using "<<<<<<"
|
|
LET l = (80 - LENGTH ("OTROS MOVIMIENTOS")) / 2
|
|
PRINT COLUMN l, "OTROS MOVIMIENTOS",
|
|
COLUMN 71, x.fecha using "dd/mm/yyyy"
|
|
|
|
SKIP 1 LINES
|
|
|
|
LET l = (80 - LENGTH (x.descrip_mov)) / 2
|
|
|
|
PRINT COLUMN l-2, "(",x.cod_mov using "&&",") ",x.descrip_mov,negras_off
|
|
PRINT COLUMN 1, "Factura No: ",x.fact_no using "&&&&&&"
|
|
|
|
IF x.detalle is null THEN
|
|
LET x.detalle = "**************************************"
|
|
END IF
|
|
|
|
PRINT COLUMN 1, "Detalle : ", x.detalle
|
|
PRINT COLUMN 1, "Cliente : ", x.cod_sp using "&&","-",
|
|
x.cod_sp_sec using "&&&&"," ",
|
|
x.descrip4
|
|
SKIP 1 LINES
|
|
PRINT COLUMN 1,
|
|
"-----------------------------------------------------------------------------",
|
|
"--------------"
|
|
|
|
PRINT COLUMN 2,doble, "PRODUCTO",doble_of clipped,
|
|
COLUMN 76, "UNIDADES"
|
|
|
|
PRINT COLUMN 1,
|
|
"-----------------------------------------------------------------------------",
|
|
"-------------"
|
|
SKIP 1 LINES
|
|
|
|
ON EVERY ROW
|
|
IF z.cod_n is not null and z.cod_grupo is not null and
|
|
z.cod_tipo is not null and z.cod_sec is not null THEN
|
|
PRINT COLUMN 2, z.cod_n using "&","-",
|
|
COLUMN 4, z.cod_grupo using "&","-",
|
|
COLUMN 6, z.cod_tipo using "&&","-",
|
|
COLUMN 9, z.cod_sec using "&&&",
|
|
COLUMN 17, z.descrip_esp clipped," ",z.unidad_med CLIPPED;
|
|
|
|
IF cuenta = 1 THEN
|
|
LET signo = "+"
|
|
ELSE
|
|
LET signo = "-"
|
|
LET z.cantidad_2 = z.cantidad_2 * -1
|
|
END IF
|
|
|
|
PRINT COLUMN 75, signo, z.cantidad_2 using "#,###,###.##"
|
|
END IF
|
|
|
|
PAGE TRAILER
|
|
PRINT COLUMN 1, "------------------",
|
|
COLUMN 22, "------------------",
|
|
COLUMN 45, "------------------",
|
|
COLUMN 65, "------------------"
|
|
|
|
PRINT COLUMN 5, "Entregado Por",
|
|
COLUMN 24, "Recibido Por",
|
|
COLUMN 48, "Aprobado Por",
|
|
COLUMN 68, "Aprobado Por"
|
|
|
|
PRINT COLUMN 2,
|
|
"Original: Contabilidad Copia: Vendedor Copia: Ventas Copia: Almacen"
|
|
|
|
PRINT normal
|
|
END REPORT
|
|
|
|
FUNCTION busca_vend()
|
|
|
|
DEFINE arr_vend ARRAY[200] OF RECORD
|
|
sec_cliente INTEGER,
|
|
num_emp INTEGER,
|
|
nombre CHAR(30)
|
|
END RECORD
|
|
|
|
OPEN WINDOW busca_1 AT 8,4 WITH FORM "ipfmwd004" ATTRIBUTE (BORDER,FORM LINE
|
|
FIRST + 1,PROMPT LINE LAST)
|
|
|
|
DECLARE busca_1 CURSOR FOR
|
|
SELECT a.sec_cliente,a.num_emp,b.nombre FROM vetb00033 a,vetb00004 b
|
|
WHERE a.sec_cliente = b.sec_cliente AND a.status_t IS NULL AND
|
|
b.status_t IS NULL
|
|
ORDER BY 1
|
|
|
|
LET idx = 1
|
|
FOREACH busca_1 INTO arr_vend[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
CALL SET_COUNT(idx - 1)
|
|
|
|
DISPLAY ARRAY arr_vend TO sc_vend.*
|
|
LET idx = ARR_CURR()
|
|
|
|
LET busca_v.sec_cliente = arr_vend[idx].sec_cliente
|
|
LET busca_v.nombre = arr_vend[idx].nombre
|
|
|
|
CLOSE WINDOW busca_1
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_prod1()
|
|
|
|
DEFINE arr_prod ARRAY[500] 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
|
|
FROM cod_n,cod_grupo,cod_tipo,cod_sec
|
|
|
|
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 5 "
|
|
|
|
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
|
|
|
|
CLOSE WINDOW busca_2
|
|
END FUNCTION
|