Files
MBS/PROYECTO/ipdir/GST_FGL_CE_TX325.4gl
jpegueroandClaude Sonnet 5 b6085d4140 Mueve ipdir (Productos Terminados) de PROYECTOS a PROYECTO
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>
2026-09-04 09:29:01 -04:00

2145 lines
74 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),
total_medida,cantidad_orden,cantidad_recibida,diferencia DEC(12,5)
DEFINE status_mo,ac_cli,opc4,reimpresion,pcerrada 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 despiece ARRAY[100] OF RECORD
etiqueta CHAR(20),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
lado_1 DEC(12,5),
lado_2 DEC(12,5),
lado_3 DEC(12,5),
cantidad DEC(12,5),
medida DEC(12,5)
END RECORD,
cantidad_entrada,cantidad_conduce,pendiente DEC(12,5)
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL ipprmt044()
END MAIN
FUNCTION busca_cliente()
LET int_flag = FALSE
OPEN WINDOW cliente AT 10,9 WITH FORM "ipfmwd009"
ATTRIBUTE(BORDER,FORM LINE FIRST + 2)
CONSTRUCT BY NAME criterio ON a.tipo_cliente,a.sec_cliente,a.nombre
LET selec = "SELECT a.tipo_cliente,a.sec_cliente,a.nombre FROM vetb00004 a ",
"WHERE a.status_t IS NULL AND ",criterio CLIPPED, "ORDER BY 1,2"
PREPARE comando3 FROM selec
DECLARE comp3 CURSOR FOR comando3
LET idx = 1
FOREACH comp3 INTO clientes[idx].*
LET idx = idx + 1
IF idx = 49 THEN
EXIT FOREACH
END IF
END FOREACH
CALL SET_COUNT(idx - 1)
DISPLAY ARRAY clientes TO s_cliente.*
LET idx = ARR_CURR()
CLOSE WINDOW cliente
END FUNCTION
FUNCTION ipprmt044()
DEFINE fecha CHAR(8)
DEFINE hora CHAR(5)
CLEAR SCREEN
OPTIONS
ERROR LINE 24,
FORM LINE 4,
COMMENT LINE 24,
PROMPT LINE 24
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(p_fechas)
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
LET otros_mov.cod_cia = 1
INPUT BY NAME otros_mov.* WITHOUT DEFAULTS
ON KEY (F2)
LET reimpresion = "S"
CALL consulta()
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 = p_companias.nombre
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(p_fechas)
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 or otros_mov.cod_mov = 13 THEN
IF otros_mov.fact_no is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fact_no
END IF
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
CONVERT(CHAR(10),fecha_factura,101) >= "01012007"
IF status = NOTFOUND THEN
LET numero_msg = 102
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
CONVERT(CHAR(10), fecha,101) >= "01011994" 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
END IF
DISPLAY BY NAME otros_mov.cod_sp,otros_mov.cod_sp_sec
AFTER FIELD cod_transp
IF otros_mov.cod_mov = 30 OR otros_mov.conduce_no = 31 OR otros_mov.cod_mov = 55
THEN
IF otros_mov.cod_transp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_transp
END IF
END IF
AFTER FIELD sec_transp
IF otros_mov.cod_mov = 30 OR otros_mov.conduce_no = 31 OR otros_mov.cod_mov = 55
THEN
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
END IF
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
SELECT num_doc INTO otros_mov.num_doc FROM iptb00007
WHERE cod_mov = otros_mov.cod_mov
IF otros_mov.num_doc IS NULL THEN
LET otros_mov.num_doc = 0
END IF
LET otros_mov.num_doc = otros_mov.num_doc + 1
DISPLAY BY NAME otros_mov.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
SELECT num_doc INTO otros_mov.num_doc FROM iptb00007
WHERE cod_mov = otros_mov.cod_mov
IF otros_mov.num_Doc IS NULL THEN
LET otros_mov.num_doc = 1
END IF
LET otros_mov.num_Doc = otros_mov.num_doc + 1
DISPLAY BY NAME otros_mov.num_doc
DISPLAY BY NAME otros_mov.descrip_mov
IF otros_mov.cod_sp IS NOT NULL THEN
SELECT a.cod_mov FROM vetb00060 a
WHERE a.cod_mov = otros_mov.cod_mov AND
a.tipo_cliente = otros_mov.cod_sp
IF STATUS = NOTFOUND THEN
LET numero_msg =386
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
END IF
{ 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 cod_transp
END IF
AFTER FIELD cod_mov1
IF otros_mov.entrada IS NOT NULL THEN
IF otros_mov.cod_mov IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD entrada
END IF
SELECT a.descrip_mov INTO otros_mov.descrip_mov1 FROM iptb00005 a
WHERE a.cod_mov = otros_mov.cod_mov1
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov1
END IF
DISPLAY BY NAME otros_mov.descrip_mov1
END IF
AFTER FIELD conduce_no
IF otros_mov.conduce_no IS NOT NULL THEN
LET ordenx = otros_mov.conduce_no
SELECT a.tipo_cliente,a.sec_cliente,a.cerrada
INTO otros_mov.cod_sp,otros_mov.cod_sp_sec,pcerrada
FROM prtb00012 a
WHERE a.num_oc = otros_mov.conduce_no AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD conduce_no
END IF
IF otros_mov.cod_mov <> 12 AND otros_mov.cod_mov <> 13 THEN
IF pcerrada = "S" THEN
LET numero_msg = 74
CALL msg(numero_msg)
NEXT FIELD conduce_no
END IF
END IF
DISPLAY BY NAME otros_mov.cod_sp,otros_mov.cod_sp_sec
IF otros_mov.cod_mov = 30 OR otros_mov.cod_mov = 31 OR otros_mov.cod_mov = 55 THEN
SELECT UNIQUE a.cod_mov
FROM vetb00060 a
WHERE a.tipo_cliente = otros_mov.cod_sp and
a.cod_mov = otros_mov.cod_mov
IF STATUS = NOTFOUND THEN
LET numero_msg = 386
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
END IF
END IF
IF otros_mov.cod_mov = 30 OR otros_mov.conduce_no = 31 OR otros_mov.cod_mov = 55
THEN
IF otros_mov.conduce_no IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD conduce_no
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
BEFORE FIELD entrada
IF otros_mov.cod_mov = 30 OR otros_mov.cod_mov = 31 OR otros_mov.cod_mov = 55 THEN
IF otros_mov.entrada IS NULL THEN
IF otros_mov.entrada IS NOT NULL THEN
SELECT MAX(a.num_doc),MAX(a.cod_mov) INTO otros_mov.entrada,otros_mov.cod_mov1
FROM iptb00006 a
WHERE (a.conduce_no = otros_mov.conduce_no) AND
(a.cod_mov in (70,71,72)) AND a.status_t IS NULL
END IF
DISPLAY BY NAME otros_mov.entrada,otros_mov.cod_mov1
END IF
END IF
AFTER FIELD entrada
IF otros_mov.entrada IS NOT NULL THEN
SELECT UNIQUE a.num_doc FROM iptb00006 a
WHERE a.cod_mov= otros_mov.cod_mov1 and a.num_doc = otros_mov.entrada
AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD entrada
END IF
{
LET cantidad_entrada = 0
SELECT SUM(a.cantidad_2) INTO cantidad_entrada
FROM iptb00006 a
WHERE a.num_doc = otros_mov.placa AND
a.cod_mov IN(70,71,72) AND
a.status_t IS NULL
IF cantidad_entrada IS NULL THEN
LET cantidad_entrada = 0
END IF
LET cantidad_conduce = 0
SELECT SUM(a.cantidad_2) INTO cantidad_conduce
FROM iptb00006 a,iptb00028 b
WHERE b.entrada = otros_mov.entrada AND
a.num_doc = b.num_doc and
a.cod_mov = b.cod_mov AND
a.status_t IS NULL
IF cantidad_conduce IS NULL THEN
LET cantidad_conduce = 0
END IF
LET pendiente = cantidad_entrada + cantidad_conduce
DISPLAY "CANTIDAD E ",cantidad_entrada," c salida ",cantidad_conduce
IF pendiente <= 0 THEN
LET numero_msg =46
CALL msg(numero_msg)
NEXT FIELD entrada
END IF
}
END IF
AFTER FIELD departamento
IF otros_mov.cod_mov = 70 OR
otros_mov.cod_mov = 71 OR otros_mov.conduce_no = 72 THEN
IF otros_mov.departamento IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD departamento
END IF
SELECT a.nom_dpto INTO otros_mov.nombre_depto
FROM adtb00001 a
WHERE a.departamento = otros_mov.departamento AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD departamento
END IF
DISPLAY BY NAME otros_mov.nombre_depto,otros_mov.cod_sp,otros_mov.cod_sp_sec
END IF
AFTER INPUT
IF int_flag THEN
EXIT INPUT
END IF
EXIT INPUT
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].cantidad_p = 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].cantidad_p = 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
IF otros_mov.conduce_no IS NOT NULL AND (otros_mov.cod_mov = 70 OR otros_mov.cod_mov = 71 OR
otros_mov.cod_mov = 72) THEN
DECLARE busca_orden CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,'0','0',a.cantidad,b.unidad_med,b.descrip_esp
FROM prtb00013 a,iptb00002 b
WHERE a.num_oc =otros_mov.conduce_no 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
LET idx = 1
FOREACH busca_orden INTO movi2[idx].*
LET idx = idx + 1
END FOREACH
END IF
IF otros_mov.cod_mov = 20 THEN
DECLARE busca_20 CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,'0','0',a.cantidad_2,b.unidad_med,b.descrip_esp
FROM iptb00006 a,iptb00002 b
WHERE a.conduce_no =otros_mov.conduce_no 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 AND
a.cod_mov = 20 and a.num_doc = otros_mov.entrada AND
a.status_t IS NULL
LET idx = 1
FOREACH busca_20 INTO movi2[idx].*
LET idx = idx + 1
END FOREACH
END IF
IF otros_mov.conduce_no IS NOT NULL AND (otros_mov.cod_mov = 30 OR otros_mov.cod_mov = 31 OR
otros_mov.cod_mov = 55) THEN
IF otros_mov.entrada IS NOT NULL THEN
DECLARE busca_entrada CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad_1,a.cantidad_2,a.cantidad_2*-1,b.unidad_med,b.descrip_esp
FROM iptb00006 a,iptb00002 b
WHERE a.conduce_no = otros_mov.conduce_no and a.status_t IS NULL AND
a.num_Doc = otros_mov.entrada 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
LET idx = 1
FOREACH busca_entrada INTO movi2[idx].*
LET idx = idx + 1
END FOREACH
END IF
IF otros_mov.entrada IS NULL THEN
DECLARE busca_orden1 CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,'0',a.cantidad,a.cantidad,b.unidad_med,b.descrip_esp
FROM prtb00013 a,iptb00002 b
WHERE a.num_oc = otros_mov.conduce_no and a.status_t IS NULL 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
LET idx = 1
FOREACH busca_orden1 INTO movi2[idx].*
LET idx = idx + 1
END FOREACH
END IF
END IF
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
DECLARE busca_dev CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad,a.cantidad,a.cantidad,b.unidad_med,b.descrip_esp
FROM vetb00003 a,iptb00002 b
WHERE a.factura = otros_mov.fact_no and a.status_t IS NULL 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
LET idx = 1
FOREACH busca_dev INTO movi2[idx].*
LET idx = idx + 1
END FOREACH
END IF
LET decide = null
LET selec_pt = 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()
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
NEXT FIELD cantidad_1
END IF
ON KEY(F10)
LET p_act = arr_curr()
LET scr_l = scr_line()
SELECT UNIQUE a.cod_n FROM iptb00027 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
IF STATUS = NOTFOUND THEN
LET numero_msg =399
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
CALL despiece()
display movi2[p_act].cantidad_1
# DISPLAY movi2[p_act].cantidad_1 TO smovi1[scr_l].cantidad_1
NEXT FIELD cod_sec
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[scr_l].cod_n, s_movi1[scr_l].cod_grupo,
s_movi1[scr_l].cod_tipo,s_movi1[scr_l].cod_sec,
s_movi1[scr_l].descrip_esp,s_movi1[scr_l].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[scr_l].cod_n, s_movi1[scr_l].cod_grupo,
s_movi1[scr_l].cod_tipo,s_movi1[scr_l].cod_sec,
s_movi1[scr_l].descrip_esp,s_movi1[scr_l].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[scr_l].cod_n, s_movi1[scr_l].cod_grupo,
s_movi1[scr_l].cod_tipo,s_movi1[scr_l].cod_sec,
s_movi1[scr_l].descrip_esp,s_movi1[scr_l].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[scr_l].cod_n, s_movi1[scr_l].cod_grupo,
s_movi1[scr_l].cod_tipo,s_movi1[scr_l].cod_sec,
s_movi1[scr_l].descrip_esp,s_movi1[scr_l].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
# CONTROL ITEMS EN LA ORDEN
IF otros_mov.conduce_no IS NOT NULL THEN
SELECT UNIQUE a.cod_n FROM prtb00013 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.num_oc = otros_mov.conduce_no
IF STATUS = NOTFOUND THEN
LET numero_msg =397
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
# CONTROL DESPIECE
SELECT UNIQUE a.cod_n FROM iptb00027 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
IF STATUS != NOTFOUND THEN
SELECT UNIQUE a.cod_n FROM iptb00025 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.cod_mov = otros_mov.cod_mov AND
a.num_doc = otros_mov.num_Doc
IF STATUS = NOTFOUND THEN
LET numero_msg =398
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
#CONTROL DEVOLUCION
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
IF movi2[p_Act].cantidad_2 > movi2[p_Act].cantidad_p then
LET numero_msg =28
CALL msg(numero_msg)
NEXT FIELD cantidad_1
end if
DISPLAY movi2[p_Act].cantidad_2 TO s_movi1[scr_l].cantidad_2
END IF
END IF # CONTROL CODIGO EN BLANCO
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
#CONTROL DEVOLUCION
IF otros_mov.cod_mov = 12 OR otros_mov.cod_mov = 13 THEN
IF movi2[p_act].cantidad_2 > movi2[p_act].cantidad_p THEN
LET numero_msg =28
CALL msg(numero_msg)
NEXT FIELD cantidad_1
END IF
END IF
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_1
END IF
END IF
#================================================================================
# CONTROL CANTIDAD DESPIECE
LET total_medida = 0
IF otros_mov.cod_mov = 30 OR otros_mov.cod_mov = 31 OR
otros_mov.cod_mov = 55 OR otros_mov.cod_mov = 70 OR otros_mov.cod_mov = 71 OR
otros_mov.cod_mov = 72 THEN
SELECT UNIQUE a.num_doc
FROM iptb00025 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.cod_mov = otros_mov.cod_mov AND
a.num_doc = otros_mov.num_doc
IF STATUS != NOTFOUND THEN
SELECT SUM(a.medida) INTO total_medida
FROM iptb00025 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.cod_mov = otros_mov.cod_mov AND
a.num_doc = otros_mov.num_doc
IF total_medida <> movi2[p_act].cantidad_1 THEN
LET numero_msg = 152
CALL msg(numero_msg)
NEXT FIELD cantidad_1
END IF
END IF
LET selec_pt = selec_pt CLIPPED,movi2[p_act].descrip_esp," CANTIDAD ",
movi2[p_act].cantidad_2," ",movi2[p_act].unidad_med
END IF
#=============================================================================
# CONTROL ORDEN
IF otros_mov.conduce_no IS NOT NULL THEN
IF otros_mov.cod_mov = 20 THEN
LET cantidad_conduce = 0
SELECT SUM(a.cantidad) INTO cantidad_conduce FROM prtb00013 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.num_oc = otros_mov.conduce_no AND
a.status_t IS NULL
IF cantidad_conduce IS NULL THEN
LET cantidad_conduce = 0
END IF
LET cantidad_recibida = 0
SELECT SUM(a.cantidad_2) INTO cantidad_recibida
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.conduce_no = otros_mov.conduce_no AND
a.cod_mov = 20 AND
a.status_t IS NULL
IF cantidad_Recibida IS NULL THEN
LET cantidad_Recibida = 0
END IF
IF (cantidad_Recibida + movi2[p_act].cantidad_2) > cantidad_conduce THEN
LET numero_msg = 46
CALL msg(numero_msg)
NEXT FIELD cantidad_1
END IF
END IF
IF otros_mov.cod_mov <> 12 AND otros_mov.cod_mov <> 13 and otros_mov.cod_mov <> 43 THEN
LET cantidad_conduce = 0
SELECT SUM(a.cantidad) INTO cantidad_conduce FROM prtb00013 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.num_oc = otros_mov.conduce_no AND
a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 397
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
LET cantidad_orden =0
IF otros_mov.cod_mov = 30 OR otros_mov.cod_mov = 31 OR otros_mov.cod_mov = 55 THEN
SELECT SUM(a.cantidad_2*-1) INTO cantidad_orden
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.conduce_no = otros_mov.conduce_no and cod_mov in (30,31,55,12,13,43)
and a.status_t IS NULL
IF cantidad_orden IS NULL THEN
LET cantidad_orden = 0
END IF
IF cantidad_conduce IS NULL THEN
LET cantidad_conduce = 0
END IF
display "AQUI PRIMERO ",cantidad_orden," ",cantidad_conduce
LET movi2[p_act].cantidad_p = cantidad_conduce - (cantidad_orden + movi2[p_act].cantidad_2)
display "pend ",movi2[p_act].cantidad_p," ",cantidad_conduce," ",cantidad_orden," ",movi2[p_act].cantidad_2
DISPLAY movi2[p_act].cantidad_p TO s_movi1[scr_l].cantidad_p
IF movi2[p_act].cantidad_p <-0.005 THEN
LET numero_msg = 46
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF # CONTROL ORDENS
END IF # CONTROL CONDUCE_NO
END IF # CONTROL DEVOLUCION
#=================================================================================================
LET movi3[p_act].cantidad_2 = movi2[p_act].cantidad_2
END IF
AFTER INPUT
IF int_flag THEN
DELETE FROM iptb00025 WHERE cod_mov = otros_mov.cod_mov and num_doc = otros_mov.num_Doc
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,getdate(),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 = getdate()
WHERE cod_mov = otros_mov.cod_mov
DISPLAY BY NAME otros_mov.num_doc ATTRIBUTE (BLUE)
# INSERTA REGISTROS DE ENTRADAS CON LOS CONDUCES
IF otros_mov.cod_mov1 IS NOT NULL THEN
INSERT INTO iptb00028 VALUES (otros_mov.cod_mov,otros_mov.num_doc,otros_mov.cod_mov1,
otros_mov.entrada)
END IF
# INFORMACIONES CUANDO EL MOVIMIENTO ES DE PRODUCCION
IF otros_mov.cod_mov = 70 OR otros_mov.cod_mov = 71 OR otros_mov.cod_mov = 72 THEN
INSERT INTO iptb00026 VALUES (otros_mov.cod_mov,otros_mov.num_doc,otros_mov.departamento)
END IF
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,getdate(),null,null)
INSERT INTO prordenlog VALUES (otros_mov.conduce_no,otros_mov.num_doc,movi2[idx].cod_n,
movi2[idx].cod_grupo,
movi2[idx].cod_tipo,movi2[idx].cod_sec,
movi2[idx].cantidad_2,getdate(),otros_mov.cod_mov,movi2[idx].cantidad_1,diferencia)
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
# CIERRE ORDENES
SELECT SUM(cantidad) INTO cantidad_orden
FROM prtb00013 a
WHERE a.num_oc = otros_mov.conduce_no #AND
#a.fech_Crea > datetime (2007-01-01 08:00) year to minute
IF cantidad_orden IS NULL THEN
LET cantidad_orden = 0
END IF
SELECT SUM(cantidad_2*-1) INTO cantidad_conduce
FROM iptb00006 a
WHERE a.conduce_no = otros_mov.conduce_no AND
a.cod_mov in (12,13,30,31,55,43) AND
CONVERT (CHAR(10),a.fecha,101) > "01/01/2007" AND
a.status_t is null
IF cantidad_conduce IS NULL THEN
LET cantidad_conduce = 0
END IF
LET diferencia = cantidad_orden - cantidad_conduce
IF diferencia < 0 THEN
LET diferencia = diferencia * -1
END IF
IF diferencia IS NULL THEN
LET diferencia = 0
END IF
IF diferencia <= .5 THEN
IF status_m <> 1 THEN
UPDATE prtb00012 set cerrada = "S",us_mod = user,fech_mod = getdate()
WHERE num_oc = otros_mov.conduce_no
END IF
END IF
#-> Actualiza la tabla de monitoreo de las ordenes de corte vg. Saturday, 03 March, 2001 10:51:42 AM
IF otros_mov.conduce_no IS NOT NULL THEN
LET prtb09.detalle =otros_mov.descrip_mov CLIPPED, " CON EL NUMERO DE DOCUMENTO: ",otros_mov.num_doc USING "<<<<<<<",
" DE FECHA : ",otros_mov.fecha USING "dd/mm/yyyy"
INSERT INTO prtb00009
VALUES (ordenx,otros_mov.fecha,NULL,"S",prtb09.detalle,NULL,USER,getdate(),NULL,NULL)
END IF
PROMPT "Desea Imprimir Formulario Ahora? (S/N)" FOR CHAR opt2
IF opt2 = "S" OR opt2 = "s" THEN
{START REPORT formu4 TO "C:\\archivo"}
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT formu4 TO 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 imprime
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
display "diferencia ",diferencia," ",otros_mov.conduce_no," ",otros_mov.cod_mov
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,
conduce_no LIKE iptb00006.conduce_no,
descrip_mov CHAR(40), #LIKE intb00005.descrip_mov,
bodega LIKE iptb00006.bodega,
detalle LIKE iptb00006.detalle,
cod_sp LIKE iptb00006.cod_sp,
cod_sp_sec LIKE iptb00006.cod_sp_sec,
departamento SMALLINT,
nombre_depto CHAR(30),
cod_mov1 SMALLINT,
entrada INT,
descrip_mov1 CHAR(40),
descrip4 CHAR(30)
END RECORD
DEFINE z RECORD
cod_n LIKE intb00003.cod_n,
cod_grupo LIKE intb00003.cod_grupo,
cod_tipo LIKE intb00003.cod_tipo,
cod_sec LIKE intb00003.cod_sec,
cantidad_1 LIKE iptb00006.cantidad_1,
cantidad_2 LIKE iptb00006.cantidad_2,
cantidad_p DEC(12,5),
unidad_med LIKE iptb00002.unidad_med,
descrip_esp CHAR(70)
END RECORD,
etiqueta,pcalle,purbanizacion,pcasa_num,ptelefono,pcelular,nombre,apellido CHAR(30),
plado1,plado2,plado3,pcantidad,pmedida DEC(12,5),
pprovincia SMALLINT,
nombre_provincia CHAR(30),
nombre_p,direccion_p CHAR(40),
total_unidades INT,
hora CHAR(5),
pobserva,pubica CHAR(60)
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 0
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
LET hora = time
PRINT doce
#PRINT COLUMN 1, negras,doble,p_companias.nombre CLIPPED
PRINT COLUMN 1,doble, "M A R M O T E C H, S. A.",doble_of
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"
PRINT COLUMN 71, hora
LET l = (70 - LENGTH (x.descrip_mov)) / 2
PRINT COLUMN l-2, doble,negras,"(",x.cod_mov using "&&",") ",x.descrip_mov,doble_of
PRINT negras_off
IF x.cod_mov = 12 THEN
PRINT COLUMN 1, "Factura No: ",x.fact_no using "&&&&&&"
END IF
IF x.detalle is null THEN
LET x.detalle = "**************************************"
END IF
SELECT a.calle,a.casa_num,a.urbanizacion,b.telefono,b.telex,c.nom1_emp,c.apell1_emp,b.cod_provincia
INTO pcalle,pcasa_num,purbanizacion,ptelefono,pcelular,nombre,apellido,pprovincia
FROM vetb00005 a,vetb00004 b,vetb00028 d,adtb00003 c
WHERE a.tipo_cliente = x.cod_sp AND
a.sec_cliente = x.cod_sp_sec AND
a.tipo_cliente = d.tipo_cliente AND
a.sec_cliente = d.sec_cliente AND
a.tipo_cliente = b.tipo_cliente AND
a.sec_cliente = b.sec_cliente AND
d.sec_vend = c.num_emp
LET nombre_provincia = NULL
IF x.cod_mov = 30 OR x.cod_mov = 31 THEN
SELECT a.nombre_provincia INTO nombre_provincia
FROM vetb00020 a
WHERE a.cod_provincia = pprovincia
END IF
IF x.cod_mov = 55 THEN
SELECT unique a.nom_pais INTO nombre_provincia FROM cotb00018 a
WHERE a.cod_pais = pprovincia
END IF
LET nombre_p = null
LET direccion_p = null
SELECT a.nombre_proyecto,a.direccion_proyecto INTO nombre_p,direccion_p
FROM vetb00049 a
WHERE a.tipo_cliente = x.cod_sp AND
a.sec_cliente = x.cod_sp_Sec
SELECT a.direccion INTO pubica FROM prtb00012 a
WHERE a.num_oc = x.conduce_no AND CONVERT (CHAR(10),a.fech_crea,103) > "01/01/2007"
# SELECT a.observacion INTO pobserva FROM prtb00014 a
# WHERE a.num_oc = x.conduce_no AND a.fech_crea > datetime (2007-01-01 08:00) year to minute
PRINT COLUMN 1, "CLIENTE : ",negras, x.descrip4," (",
x.cod_sp using "&&","-",
x.cod_sp_sec using "&&&&",")",negras_off
PRINT COLUMN 1, "DIRECCION: ",pcalle CLIPPED," ",pcasa_num CLIPPED," ",purbanizacion CLIPPED,
" TELEFONO: ",ptelefono CLIPPED," CELULAR: ",pcelular
PRINT COLUMN 1, "Proyecto : ",nombre_p CLIPPED, " DIRECCION: ",direccion_p CLIPPED
PRINT COLUMN 1, "Vendedor : ",nombre clipped," ",apellido
PRINT COLUMN 1, "Entrada : ",x.entrada USING "<<<<<<"," (",x.cod_mov1 USING "<<<",") ",x.descrip_mov1 CLIPPED
PRINT COLUMN 1, "Orden : ",x.conduce_no, COLUMN 20 #,"Observacion Orden: ",pobserva CLIPPED
PRINT COLUMN 1, "Ubicacion: ",pubica CLIPPED
IF x.cod_mov = 70 OR x.cod_mov = 71 OR x.cod_mov = 72 THEN
PRINT COLUMN 1, "DEPARTAMENTO: ",x.departamento USING "<<<<"," ",x.nombre_depto
END IF
PRINT doce
PRINT COLUMN 1,
"-----------------------------------------------------------------------------",
"-----------------"
PRINT COLUMN 2,doble, "PRODUCTO(S)",doble_of clipped
PRINT COLUMN 74, "CANTIDAD"
PRINT COLUMN 62, "CANTIDAD",
COLUMN 74, "PENDIENTE"
PRINT COLUMN 50, "UNIDADES",
COLUMN 62, "A DESPACHAR",
COLUMN 74, "CON ESTA TRANSACCION"
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," ";
IF cuenta = 1 THEN
LET signo = "+"
ELSE
LET signo = "-"
LET z.cantidad_2 = z.cantidad_2 * -1
END IF
IF z.cantidad_2 < 0 THEN
LET z.cantidad_2 = z.cantidad_2 * -1
END IF
PRINT COLUMN 48, z.cantidad_1 USING "###,###.#####",
COLUMN 56, z.cantidad_2 using "###,###.#####"," ",z.unidad_med,
COLUMN 75, z.cantidad_p using "###,###.#####"
DECLARE busca_d1 CURSOR FOR
SELECT a.etiqueta,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM iptb00025 a
WHERE a.cod_n = z.cod_n AND
a.cod_grupo = z.cod_grupo AND
a.cod_tipo = z.cod_tipo AND
a.cod_sec = z.cod_sec AND
a.cod_mov = X.cod_mov AND
a.num_Doc = x.num_doc
LET total_unidades = 0
FOREACH busca_d1 INTO etiqueta,plado1,plado2,plado3,pcantidad,pmedida
PRINT COLUMN 19,pcantidad USING "<,<<<"," ",etiqueta clipped," DE ",plado1 USING "<<.#####"," X ",
plado2 USING "<<.#####"," X ",plado3 USING "<<.#####"," = ",pmedida USING "<<<.#####"
LET total_unidades = total_unidades + pcantidad
END FOREACH
IF total_unidades > 0 THEN
PRINT COLUMN 19, "TOTAL UNIDADES ",total_unidades USING "<,<<<"
END IF
END IF
PAGE TRAILER
PRINT COLUMN 1, "OBSERVACIONES: ", UPSHIFT(x.detalle)
SKIP 1 LINE
PRINT COLUMN 1, "TRANSPORTISTA: ",descrip2
PRINT COLUMN 1, "PLACA : ",x.placa
SKIP 4 LINES
PRINT COLUMN 1, "------------------",
COLUMN 32, "------------------",
COLUMN 55, "------------------"
PRINT COLUMN 5, "Entregado Por",
COLUMN 34, "Recibido Por",
COLUMN 58, "Aprobado Por"
SKIP 1 LINE
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,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 despiece()
OPEN WINDOW wdespiece AT 5,3 WITH FORM "ipfmwd010" ATTRIBUTE (BORDER,FORM LINE
FIRST + 1,PROMPT LINE LAST)
DISPLAY BY NAME movi2[p_act].descrip_esp,movi2[p_act].unidad_med
IF otros_mov.entrada IS NOT NULL THEN
DECLARE busca_ent CURSOR FOR
SELECT a.etiqueta,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM iptb00025 a
WHERE a.cod_mov = otros_mov.cod_mov1 AND
a.num_doc = otros_mov.entrada AND
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
UNION
SELECT a.etiqueta,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM iptb00025 a
WHERE a.cod_mov = otros_mov.cod_mov AND
a.num_doc = otros_mov.num_doc AND
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
LET idx = 1
FOREACH busca_ent INTO despiece[idx].*
LET idx = idx + 1
END FOREACH
ELSE
SELECT UNIQUE a.cod_n FROM iptb00025 a
WHERE a.cod_mov = otros_mov.cod_mov AND
a.num_doc = otros_mov.num_doc AND
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
IF STATUS != NOTFOUND THEN
DECLARE busca_despiece CURSOR FOR
SELECT a.etiqueta,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM iptb00025 a
WHERE a.cod_mov = otros_mov.cod_mov AND
a.num_doc = otros_mov.num_doc AND
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
LET idx = 1
FOREACH busca_despiece INTO despiece[idx].*
LET idx = idx + 1
END FOREACH
ELSE
DECLARE busca_despiece1 CURSOR FOR
SELECT a.etiqueta,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.lado_1,a.lado_2,a.lado_3,a.cantidad,a.medida
FROM prtb00022 a
WHERE a.num_oc = otros_mov.conduce_no AND
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
LET idx = 1
FOREACH busca_despiece1 INTO despiece[idx].*
LET idx = idx + 1
END FOREACH
END IF
END IF
LET despiece[1].cod_n = movi2[p_act].cod_n
LET despiece[1].cod_grupo = movi2[p_act].cod_grupo
LET despiece[1].cod_tipo = movi2[p_act].cod_tipo
LET despiece[1].cod_sec = movi2[p_act].cod_sec
CALL set_count(idx-1)
INPUT ARRAY despiece WITHOUT DEFAULTS FROM sdespiece.*
BEFORE ROW
LET curr1 = arr_curr()
LET fila = scr_line()
LET despiece[curr1].cod_n = movi2[p_act].cod_n
LET despiece[curr1].cod_grupo = movi2[p_act].cod_grupo
LET despiece[curr1].cod_tipo = movi2[p_act].cod_tipo
LET despiece[curr1].cod_sec = movi2[p_act].cod_sec
IF curr1 > 1 THEN
IF despiece[curr1].etiqueta IS NULL THEN
LET despiece[curr1].etiqueta = despiece[curr1-1].etiqueta
END IF
END IF
DISPLAY despiece[curr1].etiqueta TO sdespiece[fila].etiqueta
DISPLAY movi2[p_act].cod_n TO sdespiece[fila].cod_n
DISPLAY movi2[p_act].cod_grupo TO sdespiece[fila].cod_grupo
DISPLAY movi2[p_act].cod_tipo TO sdespiece[fila].cod_tipo
DISPLAY movi2[p_act].cod_sec TO sdespiece[fila].cod_sec
AFTER FIELD cantidad
IF movi2[p_act].unidad_med = "M2" THEN
LET despiece[curr1].medida =
despiece[curr1].cantidad * (despiece[curr1].lado_1 * despiece[curr1].lado_2)
END IF
IF movi2[p_act].unidad_med = "M3" THEN
LET despiece[curr1].medida =
despiece[curr1].cantidad * (despiece[curr1].lado_1 * despiece[curr1].lado_2 * despiece[curr1].lado_3)
END IF
IF movi2[p_act].unidad_med = "ML" THEN
LET despiece[curr1].medida =
despiece[curr1].cantidad * despiece[curr1].lado_1
LET despiece[curr1].lado_2 = 0
END IF
IF movi2[p_act].unidad_med = "UD" OR movi2[p_act].unidad_med = "GL" THEN
LET despiece[curr1].medida = despiece[curr1].cantidad
END IF
DISPLAY despiece[curr1].medida TO sdespiece[fila].medida
AFTER ROW
IF despiece[curr1].medida IS NULL AND despiece[curr1].lado_1 IS NOT NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD lado_1
END IF
LET total_medida = 0
FOR idx = 1 TO arr_count()
IF despiece[idx].medida IS NOT NULL THEN
LET total_medida = total_medida + despiece[idx].medida
END IF
END FOR
DISPLAY BY NAME total_medida
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT INPUT
END IF
LET total_medida = 0
FOR idx = 1 TO arr_count()
IF despiece[idx].medida IS NOT NULL THEN
LET total_medida = total_medida + despiece[idx].medida
END IF
END FOR
DISPLAY BY NAME total_medida
END INPUT
IF int_flag THEN
LET int_flag = FALSE
RETURN
END IF
DELETE FROM iptb00025 WHERE num_doc = otros_mov.num_doc AND
cod_mov = otros_mov.cod_mov AND
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
LET total_medida = 0
FOR idx = 1 TO arr_count()
IF despiece[idx].medida IS NOT NULL THEN
INSERT INTO iptb00025 VALUES (despiece[idx].etiqueta,otros_mov.cod_mov,otros_mov.num_doc,
movi2[p_act].cod_n,movi2[p_act].cod_grupo,
movi2[p_act].cod_tipo,movi2[p_act].cod_sec,
despiece[idx].lado_1,despiece[idx].lado_2,
despiece[idx].lado_3,despiece[idx].cantidad,
despiece[idx].medida,null,user,getdate(),null,null)
LET total_medida = total_medida + despiece[idx].medida
END IF
END FOR
LET movi2[p_act].cantidad_1 = total_medida
CLOSE WINDOW wdespiece
END FUNCTION
FUNCTION consulta()
CONSTRUCT CRITERIO ON a.num_Doc,a.cod_mov,a.fecha,a.conduce_no,a.cod_sp,a.cod_sp_Sec
FROM num_doc,cod_mov,fecha,conduce_no,cod_sp,cod_sp_sec
}
LET selec = "SELECT a.num_doc,a.cod_cia,a.cod_mov,a.fact_no,a.cod_transp,a.sec_transp, ",
"a.cod_tarifa,a.placa,CONVERT(CHAR(10),a.fecha,101),a.conduce_no,b.descrip_mov,a.bodega,a.detalle,",
"a.cod_sp,a.cod_sp_Sec,f.departamento,e.nom_dpto,d.cod_mov1,d.entrada ",
" FROM iptb00006 a,iptb00005 b,OUTER (iptb00028 d,iptb00026 f,adtb00001 e) ",
" WHERE ",criterio CLIPPED,
" AND a.cod_mov = b.cod_mov ",
" AND a.cod_mov = d.cod_mov AND a.num_doc = d.num_doc ",
" AND a.cod_mov = f.cod_mov AND a.num_doc = f.num_doc ",
" AND f.departamento = e.departamento ",
" AND a.status_t IS NULL AND CONVERT(CHAR(10),a.fecha,101) > '01/01/2008' ",
" ORDER BY a.cod_mov,a.num_doc"
}
LET selec = "SELECT a.num_doc,a.cod_cia,a.cod_mov,a.fact_no,a.cod_transp,a.sec_transp, ",
"a.cod_tarifa,a.placa,CONVERT(CHAR(10),a.fecha,101),a.conduce_no,b.descrip_mov,a.bodega,a.detalle,",
"a.cod_sp,a.cod_sp_Sec,f.departamento,e.nom_dpto,d.cod_mov1,d.entrada ",
" FROM iptb00006 a,iptb00005 b,OUTER (iptb00028 d,iptb00026 f,adtb00001 e) ",
" WHERE ",criterio CLIPPED,
" AND a.cod_mov = b.cod_mov ",
" AND a.cod_mov = d.cod_mov AND a.num_doc = d.num_doc ",
" AND a.cod_mov = f.cod_mov AND a.num_doc = f.num_doc ",
" AND f.departamento = e.departamento ",
" AND a.status_t IS NULL AND CONVERT(CHAR(10),a.fecha,101) > '01/01/2008' ",
" ORDER BY a.cod_mov,a.num_doc"
PREPARE comando FROM selec
DECLARE busca4 SCROLL CURSOR FOR comando
OPEN busca4
FETCH FIRST busca4 INTO otros_mov.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
CALL busca_info()
DISPLAY BY NAME otros_mov.*
MENU "Busqueda "
COMMAND "Siguiete " "Sieguiente Registro Cumpla Condicion"
FETCH NEXT busca4 INTO otros_mov.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
CALL busca_info()
DISPLAY BY NAME otros_mov.*
COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS busca4 INTO otros_mov.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
CALL busca_info()
DISPLAY BY NAME otros_mov.*
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
FETCH FIRST busca4 INTO otros_mov.*
LET numero_msg = 5
CALL msg(numero_msg)
CALL busca_info()
DISPLAY BY NAME otros_mov.*
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
FETCH LAST busca4 INTO otros_mov.*
LET numero_msg = 4
CALL msg(numero_msg)
CALL busca_info()
DISPLAY BY NAME otros_mov.*
COMMAND "Items" "Busca Items"
DECLARE busca1 CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,
a.cantidad_1,a.cantidad_2,'0',b.unidad_med,b.descrip_esp
FROM iptb00006 a,iptb00002 b
WHERE a.num_doc = otros_mov.num_doc AND
a.cod_mov = otros_mov.cod_mov 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 AND
CONVERT(CHAR(10),a.fecha,101) > '01/01/2008'
ORDER BY 1,2,3,4
LET idx = 1
FOREACH busca1 INTO movi2[idx].*
IF movi2[idx].cantidad_2 < 0 THEN
LET movi2[idx].cantidad_2 = movi2[idx].cantidad_2 * -1
END IF
SELECT SUM(a.cantidad) INTO cantidad_conduce FROM prtb00013 a
WHERE a.cod_n = movi2[idx].cod_n AND
a.cod_grupo = movi2[idx].cod_grupo AND
a.cod_tipo = movi2[idx].cod_tipo AND
a.cod_sec = movi2[idx].cod_sec AND
a.num_oc = otros_mov.conduce_no AND
a.status_t IS NULL
LET cantidad_orden =0
IF otros_mov.cod_mov = 30 AND otros_mov.cod_mov = 31 OR otros_mov.cod_mov = 55 THEN
SELECT SUM(a.cantidad_2*-1) INTO cantidad_orden
FROM iptb00006 a
WHERE a.cod_n=movi2[idx].cod_n and a.cod_grupo=movi2[idx].cod_grupo
and a.cod_tipo=movi2[idx].cod_tipo and a.cod_sec=movi2[idx].cod_sec
and a.conduce_no = otros_mov.conduce_no and cod_mov in (30,31,55)
and a.status_t IS NULL
END IF
IF cantidad_orden IS NULL THEN
LET cantidad_orden = 0
END IF
IF cantidad_conduce IS NULL THEN
LET cantidad_conduce = 0
END IF
LET movi2[idx].cantidad_p = cantidad_conduce - cantidad_orden
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
DISPLAY ARRAY movi2 TO s_movi1.*
PROMPT "Desea Imprimir Formulario Ahora? (S/N)" FOR CHAR opt2
IF opt2 = "S" OR opt2 = "s" THEN
#LET archivo = FGL_GETENV("FGLSPOOL"),"\\ipmt44"
#START REPORT formu4 TO archivo
{START REPORT formu4 TO "C:\\archivo"}
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
START REPORT formu4 TO archivo
FOR idx = 1 TO arr_count()
IF movi2[idx].cod_sec IS NOT NULL THEN
IF movi2[idx].cantidad_2 IS NOT NULL AND
movi2[idx].cantidad_2 != 0 THEN
OUTPUT TO REPORT formu4(otros_mov.*,movi2[idx].*)
END IF
END IF
END FOR
FINISH REPORT formu4
IF opt2 = "S" OR opt2 = "s" THEN
# LET filename = "TYPE ",archivo CLIPPED," > %USPRINT%"
# RUN filename
RUN imprime
END IF
END IF
COMMAND "Retornar" "Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION
FUNCTION busca_info()
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
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
SELECT a.descrip_mov INTO otros_mov.descrip_mov1 FROM iptb00005 a
WHERE a.cod_mov = otros_mov.cod_mov1
DISPLAY BY NAME descrip2,otros_mov.descrip4,otros_mov.descrip_mov1
END FUNCTION
FUNCTION actualiza_st(forden)
DEFINE forden INTEGER,
prod_total,vent_total DEC(12,5),
prtb09 RECORD LIKE prtb00009.*
SELECT SUM(a.cantidad) INTO prod_total FROM prtb00013 a
WHERE a.num_oc = forden
IF STATUS = NOTFOUND THEN
LET prod_total = 0
END IF
LET vent_total = 0
SELECT SUM(b.cantidad_2) INTO vent_total
FROM IPTB00006 a
WHERE a.conduce_no = forden AND CONVERT(CHAR(10),a.fecha,101) > "31122006"
AND a.cod_sp = otros_mov.cod_sp
AND a.sec_cliente = otros_mov.cod_sp_Sec
AND a.cod_mov in (30,31,55,12,13)
AND a.status_t IS NULL
IF vent_total IS NULL THEN
LET vent_total = 0
END IF
#-> Actualiza la fecha de cierre de la orden de corte vg Wednesday, 17 January, 200112:42:33 PM
IF vent_total = prod_total THEN
UPDATE prtb00012 SET fecha_cierre = otros_mov.fecha,
cerrada = "S"
WHERE @num_oc = forden
AND @tipo_cliente = otros_mov.cod_sp
AND @sec_cliente = otros_mov.cod_sp_Sec
LET prtb09.num_oc = forden
LET prtb09.fecha = otros_mov.fecha
LET prtb09.pendiente = "N"
LET prtb09.detalle = "CIERRE DE ORDEN DE PRODUCCION SEGUN CONDUCE # ",otros_mov.num_doc USING "<<<<<<<",
" DE FECHA : ",otros_mov.fecha USING "dd/mm/yyyy"
INSERT INTO prtb00009 VALUES (prtb09.num_oc,prtb09.fecha,null,prtb09.pendiente,
prtb09.detalle,NULL,USER,getdate(),NULL,NULL)
ELSE
LET prtb09.num_oc = forden
LET prtb09.fecha = otros_mov.fecha
LET prtb09.pendiente = "N"
LET prtb09.detalle = "DESPACHO ",otros_mov.descrip_mov CLIPPED,
" SEGUN CONDUCE # ",otros_mov.num_doc USING "<<<<<<<",
" DE FECHA : ",otros_mov.fecha USING "dd/mm/yyyy"," CONTIENE PRODUCTO(S): ",
selec_pt CLIPPED
INSERT INTO prtb00009 VALUES (prtb09.num_oc,prtb09.fecha,null,prtb09.pendiente,
prtb09.detalle,NULL,USER,getdate(),NULL,NULL)
END IF
END FUNCTION