Files
MBS/PROYECTOS/irdir/irprmt006.4gl
T

1055 lines
36 KiB
Plaintext

{
----------------------------------------------------------------------------
PROGRAMA : IRPRMT006
OBJETIVO : Programa Captura Documento Movimiento:REPORTE ENTRADA
de Inventario de Repuestos.
PROGRAMADOR : Juan Fco. Soto (Johnny)
FECHA REALIZACION : Febrero 1, 1993.
MODIFICADO POR : Juan Fco. Soto
FECHA : Septiembre 8, 1993.
----------------------------------------------------------------------------
}
GLOBALS "irprgb000.4gl"
DEFINE total_cantidad,
porciento,
r_cantidad,
ordenada,
recibida,
existe_act,
r_cantidad1,
tasa
DECIMAL(12, 2)
DEFINE p_maquina SMALLINT
DEFINE
errores, cerrada CHAR(1),
pano SMALLINT
DEFINE pcosto DYNAMIC ARRAY OF FLOAT
DEFINE pcosto_old DYNAMIC ARRAY OF FLOAT
DEFINE opc1 CHAR(1)
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 a.* INTO p_companias.* FROM companias a
CALL irprmt006()
END MAIN
FUNCTION irprmt006()
DEFINE fecha CHAR(8)
CLEAR SCREEN
OPTIONS ERROR LINE 24, FORM LINE 4, COMMENT LINE 22, PROMPT LINE 23
LET fecha = TODAY USING "dd/mm/yyyy"
OPEN FORM irfmmt006 FROM "irfmmt006"
DISPLAY FORM irfmmt006
MENU
ON ACTION nuevo
CALL inpcad006()
ON ACTION buscar
CALL irprmf006()
ON ACTION salir
EXIT MENU
END MENU
END FUNCTION
FUNCTION inpcad006()
LET int_flag = FALSE
INITIALIZE datos_gen.* TO NULL
LET datos_gen.fecha = TODAY USING "dd/mm/yyyy"
LABEL otra_vez:
LABEL vuelve:
IF (OPC = "S" OR OPC = "s") OR opc IS NULL THEN
INITIALIZE datos_gen.* TO NULL
END IF
LET datos_gen.cod_mov = cod_mov_ant
LET datos_gen.fecha = TODAY USING "dd/mm/yyyy"
INPUT BY NAME datos_gen.cod_mov THRU datos_gen.descrip_mov WITHOUT DEFAULTS
BEFORE FIELD num_doc
LET datos_gen.fecha = TODAY USING "dd/mm/yyyy"
DISPLAY BY NAME datos_gen.fecha
AFTER FIELD sec_a
SELECT a.nom_dpto
INTO nombre_d
FROM adtb00001 a
WHERE a.departamento = datos_gen.sec_a
IF STATUS = NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD num_doc
END IF
AFTER FIELD fecha
IF datos_gen.fecha IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha
END IF
IF datos_gen.fecha > TODAY THEN
LET numero_msg = 189
CALL msg(numero_msg)
NEXT FIELD fecha
END IF
LET p_fechas = datos_gen.fecha USING "ddmmyyyy"
CALL prd(p_fechas, usuarios) RETURNING bandera
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD fecha
END IF
AFTER FIELD cod_mov
IF datos_gen.cod_mov IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
LET cod_mov_ant = datos_gen.cod_mov
# Control codigos para este programa
SELECT UNIQUE a.cod_mov
FROM irtb00018 a
WHERE a.cod_mov = datos_gen.cod_mov
AND a.usuario = SUSER_SNAME()
IF status = NOTFOUND THEN
LET numero_msg = 139
CALL msg(numero_msg)
#NEXT FIELD cod_mov
END IF
IF datos_gen.cod_mov IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
SELECT a.descrip_mov
INTO datos_gen.descrip_mov
FROM irtb00005 a
WHERE a.cod_mov = datos_gen.cod_mov AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
DISPLAY BY NAME datos_gen.descrip_mov
AFTER FIELD orden_compra
SELECT DISTINCT a.cod_sp, a.cod_sp_sec, cierre, c.tasa_cambio
INTO datos_gen.cod_sp, datos_gen.cod_sp_sec, cerrada, tasa
FROM cotb00014 a, cotb00015 b, cotb00031 c
WHERE a.num_oc = datos_gen.orden_compra
AND a.tipo = datos_gen.tipo
AND a.num_oc = b.num_oc
AND b.cod_mon = c.cod_mon
AND a.status_t IS NULL
IF status >= 0 THEN
IF cerrada = "S" THEN
LET numero_msg = 74
CALL msg(numero_msg)
NEXT FIELD tipo
END IF
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD tipo
END IF
END IF
SELECT UNIQUE nom_sp
INTO datos_gen.nom_sp
FROM cotb00001
WHERE cod_sp = datos_gen.cod_sp
AND cod_sp_sec = datos_gen.cod_sp_sec
AND status_t IS NULL
IF status >= 0 THEN
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD tipo
END IF
END IF
DISPLAY BY NAME datos_gen.cod_sp,
datos_gen.cod_sp_sec,
datos_gen.nom_sp
NEXT FIELD conduce_no
AFTER FIELD fact_no
# Verifica que el numero de la factura no se repita con el mismo numero de
# documento.
IF datos_gen.conduce_no IS NULL AND datos_gen.fact_no IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD conduce_no
END IF
IF datos_gen.conduce_no IS NOT NULL
AND datos_gen.fact_no IS NOT NULL THEN
LET numero_msg = 29
CALL msg(numero_msg)
NEXT FIELD conduce_no
END IF
IF datos_gen.fact_no IS NOT NULL THEN
SELECT UNIQUE num_doc
FROM irtb00006
WHERE num_doc = datos_gen.num_doc
AND orden_compra = datos_gen.orden_compra
AND fact_no = datos_gen.fact_no
AND cod_mov = datos_gen.cod_mov
AND status_t IS NULL
IF status >= 0 THEN
IF STATUS != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD num_doc
END IF
END IF
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CALL movi.clear()
SLEEP 2
RETURN
END IF
SELECT UNIQUE a.num_doc
FROM irtb00006 a
WHERE a.num_doc = datos_gen.num_doc
AND a.orden_compra = datos_gen.orden_compra
AND a.fact_no = datos_gen.fact_no
AND a.cod_mov = datos_gen.cod_mov
AND a.status_t IS NULL
IF status >= 0 THEN
IF STATUS != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD num_doc
END IF
END IF
IF datos_gen.conduce_no IS NULL AND datos_gen.fact_no IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD conduce_no
END IF
IF datos_gen.fecha IS NULL THEN
CALL msg(16)
NEXT FIELD fecha
END IF
EXIT INPUT
END INPUT
INITIALIZE ant_art.* TO NULL
IF opc = "S" OR opc = "s" OR opc IS NULL THEN
CALL movi.clear()
END IF
DECLARE busca CURSOR FOR
SELECT a.cod_n,
a.cod_grupo,
a.cod_tipo,
a.cod_sec,
b.descrip_esp,
b.unidad_med,
SUM(a.cantidad),
SUM(a.precio)
FROM cotb00015 a, irtb00002 b
WHERE a.num_oc = datos_gen.orden_compra
AND a.tipo = datos_gen.tipo
AND a.status_t IS NULL
AND a.cod_n = b.cod_n
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 b.status_t IS NULL
GROUP BY a.cod_n,
a.cod_grupo,
a.cod_tipo,
a.cod_sec,
b.descrip_esp,
b.unidad_med
LET errores = "N"
LET idx = 1
FOREACH busca INTO movi[idx].cod_n,
movi[idx].cod_grupo,
movi[idx].cod_tipo,
movi[idx].cod_sec,
movi[idx].descrip_esp,
movi[idx].unidad_med,
movi[idx].cantidad_1,
pcosto[idx]
IF (movi[idx].cod_n < 4 OR movi[idx].cod_n > 9) THEN
LET numero_msg = 83
CALL msg(numero_msg)
LET errores = "S"
EXIT FOREACH
END IF
LET existe_act = 0
IF movi[idx].cod_n = 4 THEN
SELECT SUM(a.cantidad_2)
INTO existe_act
FROM ihtb00006 a
WHERE a.orden_compra = datos_gen.orden_compra
AND a.tipo = datos_gen.tipo
AND a.status_t IS NULL
AND a.cod_n = movi[idx].cod_n
AND a.cod_grupo = movi[idx].cod_grupo
AND a.cod_tipo = movi[idx].cod_tipo
AND a.cod_sec = movi[idx].cod_sec
ELSE
SELECT SUM(a.cantidad_2)
INTO existe_act
FROM irtb00006 a
WHERE a.orden_compra = datos_gen.orden_compra
AND a.tipo = datos_gen.tipo
AND a.status_t IS NULL
AND a.cod_n = movi[idx].cod_n
AND a.cod_grupo = movi[idx].cod_grupo
AND a.cod_tipo = movi[idx].cod_tipo
AND a.cod_sec = movi[idx].cod_sec
END IF
IF existe_act IS NULL THEN
LET existe_act = 0
END IF
LET movi[idx].cantidad_2 = movi[idx].cantidad_2 - existe_act
LET movi[idx].maquina = NULL
SELECT ISNULL(a.costo_st, 0)
INTO pcosto_old[idx]
FROM irtb00013 a
WHERE a.cod_n = movi[idx].cod_n
AND a.cod_grupo = movi[idx].cod_grupo
AND a.cod_tipo = movi[idx].cod_tipo
AND a.cod_sec = movi[idx].cod_sec
AND a.mes_ini = '01'
AND a.mes_fin = '12'
AND a.ano = YEAR(TODAY)
LET idx = idx + 1
END FOREACH
# CAPTURA ARREGLO DE LOS CODIGOS DE MATERIA PRIMA
IF errores = "S" THEN
LET idx = idx + 1
END IF
CALL set_count(idx - 1)
INPUT ARRAY movi WITHOUT DEFAULTS FROM s_movi1.*
BEFORE ROW
LET p_act = arr_curr()
LET scr_l = scr_line()
BEFORE FIELD cod_n
NEXT FIELD cantidad_2
BEFORE FIELD cod_sec
NEXT FIELD cantidad_2
BEFORE DELETE
CALL pcosto.deleteElement(p_act)
CALL pcosto_old.deleteElement(p_act)
AFTER FIELD maquina
IF movi[p_act].maquina IS NOT NULL THEN
SELECT a.nombre
INTO maquinaria.nombre
FROM irtb00009 a
WHERE a.codigo = movi[p_act].maquina
IF status = NOTFOUND THEN
LET numero_msg = 115
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
END IF
DISPLAY BY NAME maquinaria.nombre
AFTER FIELD cantidad_2
IF errores = "S" THEN
RETURN
END IF
LET ordenada = 0
LET recibida = 0
IF movi[p_act].cantidad_2 IS NOT NULL THEN
IF movi[p_act].cod_n = 4 THEN
SELECT UNIQUE *
FROM irtb00002
WHERE cod_n = movi[p_act].cod_n
AND cod_grupo = movi[p_act].cod_grupo
AND cod_tipo = movi[p_act].cod_tipo
AND cod_sec = movi[p_act].cod_sec
AND status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 35
CALL msg(numero_msg)
NEXT FIELD cantidad_2
END IF
SELECT SUM(a.cantidad_2)
INTO recibida
FROM ihtb00006 a
WHERE a.orden_compra = datos_gen.orden_compra
AND a.tipo = datos_gen.tipo
AND a.cod_n = movi[p_act].cod_n
AND a.cod_grupo = movi[p_act].cod_grupo
AND a.cod_tipo = movi[p_act].cod_tipo
AND a.cod_sec = movi[p_act].cod_sec
AND a.status_t IS NULL
SELECT SUM(a.cantidad)
INTO ordenada
FROM cotb00015 a
WHERE a.num_oc = datos_gen.orden_compra
AND a.tipo = datos_gen.tipo
AND a.cod_n = movi[p_act].cod_n
AND a.cod_grupo = movi[p_act].cod_grupo
AND a.cod_tipo = movi[p_act].cod_tipo
AND a.cod_sec = movi[p_act].cod_sec
ELSE
SELECT UNIQUE *
FROM irtb00002
WHERE cod_n = movi[p_act].cod_n
AND cod_grupo = movi[p_act].cod_grupo
AND cod_tipo = movi[p_act].cod_tipo
AND cod_sec = movi[p_act].cod_sec
AND status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 35
CALL msg(numero_msg)
NEXT FIELD cantidad_2
END IF
SELECT SUM(a.cantidad_2)
INTO recibida
FROM irtb00006 a
WHERE a.orden_compra = datos_gen.orden_compra
AND a.tipo = datos_gen.tipo
AND a.cod_n = movi[p_act].cod_n
AND a.cod_grupo = movi[p_act].cod_grupo
AND a.cod_tipo = movi[p_act].cod_tipo
AND a.cod_sec = movi[p_act].cod_sec
AND a.status_t IS NULL
SELECT SUM(a.cantidad)
INTO ordenada
FROM cotb00015 a
WHERE a.num_oc = datos_gen.orden_compra
AND a.tipo = datos_gen.tipo
AND a.cod_n = movi[p_act].cod_n
AND a.cod_grupo = movi[p_act].cod_grupo
AND a.cod_tipo = movi[p_act].cod_tipo
AND a.cod_sec = movi[p_act].cod_sec
END IF
IF recibida IS NULL THEN
LET recibida = 0
END IF
IF ordenada IS NULL THEN
LET ordenada = 0
END IF
LET porciento = ordenada * 0.10
LET recibida = recibida + movi[p_act].cantidad_2
LET r_cantidad = ordenada + porciento
DISPLAY recibida
DISPLAY r_cantidad
IF recibida > r_cantidad THEN
LET numero_msg = 28
CALL msg(numero_msg)
NEXT FIELD cantidad_2
END IF
# BUSCA EL COSTO DE LAS ORDENES
{ CALL pcosto.deleteElement(p_act)
CALL pcosto_old.deleteElement(p_act)
SELECT ISNULL(a.costo_st, 0)
INTO pcosto_old[p_act]
FROM irtb00013 a
WHERE a.cod_n = movi[p_act].cod_n
AND a.cod_grupo = movi[p_act].cod_grupo
AND a.cod_tipo = movi[p_act].cod_tipo
AND a.cod_sec = movi[p_act].cod_sec
AND a.mes_ini = '01'
AND a.mes_fin = '12'
AND a.ano = YEAR(TODAY)
SELECT ISNULL(a.precio, 0)
INTO pcosto[p_act]
FROM cotb00015 a
WHERE a.cod_n = movi[p_act].cod_n
AND a.cod_grupo = movi[p_act].cod_grupo
AND a.cod_tipo = movi[p_act].cod_tipo
AND a.cod_sec = movi[p_act].cod_sec
AND a.num_oc = datos_gen.orden_compra
AND a.tipo = datos_Gen.tipo}
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CALL movi.clear()
SLEEP 2
RETURN
END IF
PROMPT "Toda la Informacion Esta Correcta? (S/N)" FOR CHAR opc
LET opc = UPSHIFT(opc)
IF OPC = "S" THEN
PROMPT "Imprimo documento ahora? (S/N)" FOR CHAR opc1
LET opc1 = upshift(opc1)
IF opc1 = "S" THEN
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 rep_ent TO archivo
END IF
# BUSCA ULTIMO NUMERO DOCUMENTO
LET p_ultimo = 0
SELECT MAX(num_salida)
INTO p_ultimo
FROM irtb00014
WHERE cod_mov = datos_gen.cod_mov
IF p_ultimo IS NULL THEN
LET p_ultimo = 0
END IF
LET datos_gen.num_doc = p_ultimo + 1
SELECT UNIQUE a.num_doc
FROM irtb00006 a
WHERE a.num_doc = p_ultimo AND a.cod_mov = datos_gen.cod_mov
IF status != NOTFOUND THEN
SELECT MAX(a.num_doc)
INTO p_ultimo
FROM irtb00006 a
WHERE a.cod_mov = datos_gen.cod_mov
IF p_ultimo IS NULL THEN
LET p_ultimo = 0
END IF
LET datos_gen.num_doc = p_ultimo + 1
END IF
DISPLAY BY NAME datos_gen.num_doc
LET pano = YEAR(datos_gen.fecha)
BEGIN WORK
#--------------------------------------------------------------------------
FOR idx = 1 TO arr_count()
IF movi[idx].cod_n IS NOT NULL
AND movi[idx].cod_grupo IS NOT NULL
AND movi[idx].cod_tipo IS NOT NULL
AND movi[idx].cod_sec IS NOT NULL THEN
IF movi[idx].cantidad_2 IS NOT NULL THEN
IF movi[idx].cod_n = 4 THEN
INSERT INTO irtb00006(
num_doc,
fecha,
fact_no,
conduce_no,
tipo,
orden_compra,
cod_sp,
cod_sp_Sec,
cod_mov,
maquina,
cod_n,
cod_grupo,
cod_tipo,
cod_Sec,
cantidad_1,
cantidad_2,
sec_a,
us_Crea,
fech_Crea,
bodega)
VALUES(datos_gen.num_doc,
datos_gen.fecha,
datos_gen.fact_no,
datos_gen.conduce_no,
datos_gen.tipo,
datos_gen.orden_compra,
datos_gen.cod_sp,
datos_gen.cod_sp_sec,
datos_gen.cod_mov,
movi[idx].maquina,
movi[idx].cod_n,
movi[idx].cod_grupo,
movi[idx].cod_tipo,
movi[idx].cod_sec,
movi[idx].cantidad_1,
movi[idx].cantidad_2,
datos_gen.sec_a,
SUSER_SNAME(),
GETDATE(),
'1')
ELSE
INSERT INTO irtb00006(
num_doc,
fecha,
fact_no,
conduce_no,
tipo,
orden_compra,
cod_sp,
cod_sp_Sec,
cod_mov,
maquina,
cod_n,
cod_grupo,
cod_tipo,
cod_Sec,
cantidad_1,
cantidad_2,
us_Crea,
fech_Crea,
bodega,
costo_act,
costo_old)
VALUES(datos_gen.num_doc,
datos_gen.fecha,
datos_gen.fact_no,
datos_gen.conduce_no,
datos_gen.tipo,
datos_gen.orden_compra,
datos_gen.cod_sp,
datos_gen.cod_sp_sec,
datos_gen.cod_mov,
movi[idx].maquina,
movi[idx].cod_n,
movi[idx].cod_grupo,
movi[idx].cod_tipo,
movi[idx].cod_sec,
movi[idx].cantidad_1,
movi[idx].cantidad_2,
SUSER_SNAME(),
GETDATE(),
'1',
pcosto[idx],
pcosto_old[idx])
IF datos_gen.cod_mov = 35 THEN
LET pcosto[idx] = pcosto[idx] * tasa
SELECT DISTINCT a.cod_n
FROM irtb00013 a
WHERE a.cod_n = movi[idx].cod_n
AND a.cod_grupo = movi[idx].cod_grupo
AND a.cod_tipo = movi[idx].cod_tipo
AND a.cod_sec = movi[idx].cod_Sec
AND a.ano = YEAR(datos_gen.fecha)
IF STATUS = NOTFOUND THEN
INSERT INTO irtb00013(
ano,
mes_ini,
mes_fin,
cod_n,
cod_grupo,
cod_tipo,
cod_sec,
costo_st,
us_crea,
fech_crea)
VALUES(pano,
'01',
'12',
movi[idx].cod_n,
movi[idx].cod_grupo,
movi[idx].cod_tipo,
movi[idx].cod_sec,
pcosto[idx],
usuarios,
getdate())
ELSE
UPDATE irtb00013
SET costo_st = pcosto[idx],
us_mod = USUARIOS,
fech_mod = getdate()
WHERE cod_n = movi[idx].cod_n
AND cod_grupo = movi[idx].cod_grupo
AND cod_tipo = movi[idx].cod_tipo
AND cod_sec = movi[idx].cod_Sec
AND ano = pano
END IF
END IF
END IF
END IF
IF opc1 = "S" THEN
IF movi[idx].cantidad_2 IS NOT NULL THEN
OUTPUT TO REPORT rep_ent(datos_gen.*, movi[idx].*)
END IF
END IF
END IF
END FOR
COMMIT WORK
CALL movi.clear()
IF opc1 = "S" THEN
DISPLAY " " AT 1, 1
FINISH REPORT rep_ent
RUN imprime
END IF
SELECT * FROM irtb00014 WHERE @cod_mov = datos_gen.cod_mov
IF status = NOTFOUND THEN
INSERT INTO irtb00014
VALUES(datos_gen.num_doc,
datos_gen.cod_mov,
NULL,
SUSER_SNAME(),
GETDATE(),
NULL,
NULL)
END IF
UPDATE irtb00014
SET num_salida = datos_gen.num_doc
WHERE cod_mov = datos_gen.cod_mov
SELECT * FROM irtb00014 WHERE cod_mov = datos_gen.cod_mov
IF status = NOTFOUND THEN
INSERT INTO irtb00014
VALUES(datos_gen.num_doc,
datos_gen.cod_mov,
SUSER_SNAME(),
GETDATE())
END IF
UPDATE irtb00014
SET num_salida = datos_gen.num_doc
WHERE cod_mov = datos_gen.cod_mov
UPDATE cotb00014
SET cierre = cerrada
WHERE num_oc = datos_gen.orden_compra AND tipo = datos_gen.tipo
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
ELSE
GOTO otra_vez
END IF
GOTO vuelve
END FUNCTION
FUNCTION limpia()
CALL movi.clear()
END FUNCTION
REPORT rep_ent(x, z)
DEFINE x RECORD
cod_mov LIKE irtb00006.cod_mov,
num_doc LIKE irtb00006.num_doc,
tipo CHAR(2),
orden_compra LIKE irtb00006.orden_compra,
cod_sp LIKE irtb00006.cod_sp,
cod_sp_sec LIKE irtb00006.cod_sp_sec,
conduce_no LIKE irtb00006.conduce_no,
fact_no LIKE irtb00006.fact_no,
fecha DATE,
sec_a LIKE irtb00006.sec_a,
nom_sp LIKE cotb00001.nom_sp,
descrip_mov CHAR(30)
END RECORD
DEFINE z RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp LIKE intb00001.descrip_esp,
unidad_med LIKE intb00001.unidad_med,
cantidad_1 LIKE iptb00006.cantidad_1,
cantidad_2 LIKE iptb00006.cantidad_2,
maquina SMALLINT
END RECORD
DEFINE l SMALLINT
DEFINE negras_of, negras_on, doble_on, doble_of CHAR(2)
DEFINE unidades INTEGER
DEFINE p_nombre, p_descrip CHAR(30)
DEFINE p_unidad CHAR(4)
OUTPUT
TOP MARGIN 0
BOTTOM MARGIN 0
LEFT MARGIN 0
FORMAT
BEFORE GROUP OF x.num_doc
LET negras_on = ASCII 27, ASCII 69
LET negras_of = ASCII 27, ASCII 70
LET doble_on = ASCII 14
LET doble_of = ASCII 20
PRINT COLUMN 1,
negras_on,
doble_on,
COLUMN 1,
p_companias.nombre CLIPPED,
negras_of
PRINT COLUMN 58, "REPORTE DE ENTRADA"
PRINT COLUMN 58, "No.", doble_on, x.num_doc USING "&&&&&&"
LET l = (80 - LENGTH(x.descrip_mov)) / 2
PRINT COLUMN l, "REPUESTOS"
PRINT COLUMN l,
negras_on,
"(",
x.cod_mov USING "<<<",
")",
x.descrip_mov,
negras_of
SKIP 1 LINE
PRINT COLUMN 1,
"Fecha : ",
x.fecha USING "dd/mm/yyyy",
COLUMN 53,
"Orden de Compra: ",
x.tipo,
"-",
x.orden_compra USING "&&&&&&"
PRINT COLUMN 1,
"Departamento: ",
x.sec_a USING "<<<<",
" ",
nombre_d
PRINT COLUMN 1,
"Proveedor : ",
x.cod_sp USING "&&",
"-",
x.cod_sp_sec USING "&&&&",
" ",
x.nom_sp
PRINT COLUMN 1, "Conduce : ", x.conduce_no CLIPPED
PRINT COLUMN 1, "Factura : ", x.fact_no CLIPPED
PRINT COLUMN 1,
"==========================================================================="
PRINT COLUMN 1,
"CODIGO",
COLUMN 16,
"CANTIDAD",
COLUMN 30,
"UNIDAD",
COLUMN 45,
"D E S C R I P C I O N"
PRINT COLUMN 1,
"==========================================================================="
SKIP 1 LINE
ON EVERY ROW
IF z.maquina IS NOT NULL THEN
SELECT UNIQUE a.nombre
INTO p_nombre
FROM irtb00009 a
WHERE a.codigo = z.maquina
END IF
PRINT COLUMN 1,
z.cod_n USING "&",
"-",
COLUMN 3,
z.cod_grupo USING "&",
"-",
COLUMN 5,
z.cod_tipo USING "&&",
"-",
COLUMN 8,
z.cod_sec USING "&&&",
COLUMN 16,
z.cantidad_2 USING "##,###",
COLUMN 30,
z.unidad_med,
5 SPACES,
z.descrip_esp
IF z.maquina IS NOT NULL THEN
PRINT COLUMN 30,
z.maquina USING "&&#",
" (",
p_nombre CLIPPED,
")"
END IF
PAGE TRAILER
PRINT COLUMN 1, "OBSERVACION :"
PRINT
PRINT COLUMN 1,
"--------------------------------------------------------------------------"
PRINT
PRINT COLUMN 1,
"--------------------------------------------------------------------------"
SKIP 2 LINE
PRINT COLUMN 3,
"----------------------",
COLUMN 30,
"----------------------",
COLUMN 60,
"--------------------"
PRINT COLUMN 3,
"Entregado Por",
COLUMN 30,
"Recibido Por",
COLUMN 60,
"Aprobado Por"
SKIP 4 LINES
END REPORT
FUNCTION irprmf006()
CONSTRUCT criterio ON a.num_doc, a.cod_mov FROM num_doc, cod_mov
LET selec =
"SELECT DISTINCT a.cod_mov,a.num_doc,a.tipo,a.orden_compra,a.cod_sp,a.cod_sp_Sec,a.conduce_no,",
"a.fact_no,a.fecha,a.sec_a,b.nom_sp,c.descrip_mov ",
"FROM irtb00006 a,cotb00001 b,irtb00005 c ",
"WHERE a.cod_sp = b.cod_sp and a.cod_sp_Sec = b.cod_sp_sec and a.cod_mov = c.cod_mov and a.status_t IS NULL AND ",
criterio CLIPPED
PREPARE comando FROM selec
DECLARE busca_entrada SCROLL CURSOR FOR comando
OPEN busca_entrada
FETCH FIRST busca_entrada INTO datos_gen.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
DISPLAY BY NAME datos_gen.*
MENU "NAVEGA"
COMMAND "Siguiente"
FETCH NEXT busca_entrada INTO datos_gen.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME datos_gen.*
COMMAND "Anterior"
FETCH PREVIOUS busca_entrada INTO datos_gen.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME datos_gen.*
COMMAND "Ultimo"
FETCH LAST busca_entrada INTO datos_gen.*
DISPLAY BY NAME datos_gen.*
COMMAND "Rimprimir"
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 rep_ent TO archivo
DECLARE busca_material CURSOR FOR
SELECT a.cod_n,
a.cod_grupo,
a.cod_tipo,
a.cod_sec,
b.descrip_esp,
b.unidad_med,
a.cantidad_1,
a.cantidad_2,
a.maquina
FROM irtb00006 a, irtb00002 b
WHERE a.num_doc = datos_Gen.num_doc
AND a.cod_mov = datos_gen.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
LET idx = 1
FOREACH busca_material INTO movi[idx].*
OUTPUT TO REPORT rep_ent(datos_gen.*, movi[idx].*)
LET idx = idx + 1
END FOREACH
CALL set_count(idx - 1)
DISPLAY ARRAY movi TO s_movi1.*
FINISH REPORT rep_ent
RUN imprime
COMMAND KEY("T") "reTornar"
EXIT MENU
END MENU
END FUNCTION