Files
MBS/PROYECTO/indir/inprmt099.4gl
T
jpeguero efdf8953dd Reorganiza MATERIA PRIMA a PROYECTO y avanza inprmt002/005/013/046
- Mueve todo el contenido de PROYECTOS/indir y varias funciones
  compartidas de PROYECTOS/otrodir hacia PROYECTO, siguiendo
  instruccion de Johnny (PROYECTOS se va a eliminar).
- inprmt002: agrega campo Desglose faltante, corrige typo "eLiminar".
- inprmt005: agrega formulario y 3 campos faltantes (Consumo,
  Requiere Autorizacion, Requisiciones), corrige typo "eLiminar".
- inprmt013: agrega formulario, titulo, corrige typo "eLiminar".
- inprmt046: agrega formulario y varias funciones/dependencias
  faltantes (cincodmov, clasf_bloque, medidas, defecto,
  buscaEmp, consultaTransportista, busca_departamento);
  corrige nombres de campo desalineados con el codigo
  (depto_a, bodega) y los convierte a ComboBox donde el
  codigo lo requiere.
- Corrige dependencia faltante de FORMULARIOS_IN a la libreria
  Database (bloqueaba todo el modulo de MATERIA PRIMA).
2026-08-26 13:31:09 -04:00

303 lines
9.2 KiB
Plaintext

{
==========================================================================
PROGRAMA : INPRMT099
OBJETIVO : Cierre Anual del Inventario de Materias Primas
REALIZADO POR : Abner Montalvo
FECHA : Septiembre 18, 1997.
==========================================================================
}
GLOBALS "inprgb000.4gl"
DEFINE trn RECORD
cod_n LIKE intb00006.cod_n,
cod_grupo LIKE intb00006.cod_grupo,
cod_tipo LIKE intb00006.cod_tipo,
cod_sec LIKE intb00006.cod_sec,
cantidad_2 LIKE intb00006.cantidad_2
END RECORD
DEFINE productos RECORD LIKE intb00002.*
DEFINE status_orden CHAR(1)
DEFINE secuencia INTEGER
DEFINE fecha_cierre, fecha_ultimo_cierre DATE
DEFINE intb6_ascii CHAR(100)
DEFINE intb2_ascii CHAR(100)
DEFINE intb6_dbsch CHAR(100)
DEFINE intb2_dbsch CHAR(100)
DEFINE intb24 CHAR(100)
DEFINE intb24_dat CHAR(100)
DEFINE intb24_idx CHAR(100)
DEFINE forma_ld CHAR(100)
DEFINE err_val INTEGER
FUNCTION inprmt099()
OPTIONS
PROMPT LINE 20,
FORM LINE 8,
ERROR LINE 24
OPEN FORM infmmt099 FROM "infmmt099"
DISPLAY FORM infmmt099
CALL pantalla()
DISPLAY "inprmt099" AT 4,3
DISPLAY " Cierre Anual " AT 6,33
LET c_ano = (YEAR(TODAY) - 2)
DISPLAY c_ano AT 11,49
SELECT MAX(fecha_corte) INTO fecha_cierre
FROM prdtable
WHERE ano = c_ano
IF status = NOTFOUND THEN
LET fecha_cierre = TODAY
END IF
DISPLAY BY NAME fecha_cierre
LET fecha_ultimo_cierre = NULL
SELECT UNIQUE MAX(fecha) INTO fecha_ultimo_cierre
FROM intb00006
WHERE tipo = "1" AND status_t IS NULL
IF fecha_ultimo_cierre <= fecha_cierre THEN
LET numero_msg = 380
CALL msg(numero_msg)
LET int_flag = FALSE
SLEEP 2
RETURN
END IF
{
LET fecha_cierre = TODAY
INPUT BY NAME fecha_cierre WITHOUT DEFAULTS
AFTER FIELD fecha_cierre
IF fecha_cierre IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_cierre
END IF
IF fecha_cierre > TODAY THEN
LET numero_msg = 375
CALL msg(numero_msg)
NEXT FIELD p_ano
END IF
# SELECT UNIQUE fecha FROM intb00025
# WHERE fecha = fecha_cierre
# IF status != NOTFOUND THEN
# LET numero_msg = 376
# CALL msg(numero_msg)
# NEXT FIELD p_ano
# END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
}
LET secuencia = fecha_cierre USING "DDMMYY"
LET intb6_ascii = fgl_getenv("DBPATH") CLIPPED,"/rayovac.dbs/",
"intb00006_ascii.", fecha_cierre USING "DDMMYY"
LET intb2_ascii = fgl_getenv("DBPATH") CLIPPED,"/rayovac.dbs/",
"intb00002_ascii.", fecha_cierre USING "DDMMYY"
LET intb6_dbsch = "dbschema -d rayovac -t intb00006 ",
fgl_getenv("DBPATH") CLIPPED,"/rayovac.dbs/",
"intb00006_dbsch.", fecha_cierre USING "DDMMYY"
LET intb2_dbsch = "dbschema -d rayovac -t intb00002 ",
fgl_getenv("DBPATH") CLIPPED,"/rayovac.dbs/",
"intb00002_dbsch.", fecha_cierre USING "DDMMYY"
SELECT dirpath INTO intb24 FROM systables
WHERE tabname = "intb00024"
LET intb24 = fgl_getenv("DBPATH") CLIPPED,"/rayovac.dbs/",intb24
LET intb24_dat = "cp ", intb24 CLIPPED, ".dat ", intb24 CLIPPED, ".dat.",
fecha_cierre USING "DDMMYY"
LET intb24_idx = "cp ", intb24 CLIPPED, ".idx ", intb24 CLIPPED, ".idx.",
fecha_cierre USING "DDMMYY"
#DISPLAY intb6_ascii AT 6,2
#DISPLAY intb2_ascii AT 7,2
#DISPLAY intb6_dbsch AT 8,2
#DISPLAY intb2_dbsch AT 9,2
#DISPLAY intb24 AT 10,2
#DISPLAY intb24_dat AT 11,2
#DISPLAY intb24_idx AT 12,2
LABEL volver:
PROMPT " Estas Seguro de Proceder (S/N)? "
FOR decide
LET decide = UPSHIFT(decide)
IF decide != "S" AND decide != "N" THEN
GOTO volver
END IF
IF decide != "S" THEN
RETURN
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DISPLAY " "
AT 20,10
DISPLAY " Haciendo Backup del Historico de Transacciones. "
AT 20,10
RUN intb24_dat
RUN intb24_idx
DISPLAY " Haciendo Backup de las Transacciones que Califican. "
AT 20,10
#----------- Trabajando con los Registros Anulados --------------------
DISPLAY " Haciendo Backup de las Transacciones que Anuladas. "
AT 20,10
UNLOAD TO "trn1.ld" SELECT * FROM intb00006
WHERE status_t = "E" AND
fecha <= fecha_cierre
INSERT INTO intb00024 SELECT * FROM intb00006
WHERE status_t = "E" AND
fecha <= fecha_cierre
DELETE FROM intb00006 WHERE status_t = "E" AND
fecha <= fecha_cierre
#----------- Trabajando con los Registros sin Ordenes de Compras -----
DISPLAY " Haciendo Backup de las Transacciones que no manejan O.C. "
AT 20,10
UNLOAD TO "trn2.ld" SELECT * FROM intb00006
WHERE status_t IS NULL AND
cod_mov NOT IN (34,35) AND
fecha <= fecha_cierre
UPDATE intb00006 SET status_t = "X"
WHERE status_t IS NULL AND
cod_mov NOT IN (34,35) AND
fecha <= fecha_cierre
INSERT INTO intb00024 SELECT * FROM intb00006
WHERE status_t = "X"
DELETE FROM intb00006 WHERE status_t = "X"
#----------- Trabajando con los Registros con Ordenes de Compras -----
DISPLAY " Haciendo Backup de las Transacciones que manejan O.C. "
AT 20,10
UNLOAD TO "trn3.ld" SELECT * FROM intb00006
WHERE status_t IS NULL AND
cod_mov IN (34,35) AND
fecha <= fecha_cierre AND
orden_compra IN ( SELECT num_oc FROM cotb00014
WHERE cierre = "S" )
UPDATE intb00006 SET status_t = "X"
WHERE status_t IS NULL AND
cod_mov IN (34,35) AND
fecha <= fecha_cierre AND
orden_compra IN ( SELECT num_oc FROM cotb00014
WHERE cierre = "S" )
#----------- Trabajando con los Registros sin Ordenes de Compras -----
DISPLAY " Haciendo Backup de las Transacciones cuyas O.C. no existen. "
AT 20,10
UNLOAD TO "trn4.ld" SELECT * FROM intb00006
WHERE status_t IS NULL AND
cod_mov IN (34,35) AND
fecha <= fecha_cierre AND
orden_compra NOT IN ( SELECT num_oc FROM cotb00014 )
UPDATE intb00006 SET status_t = "X"
WHERE status_t IS NULL AND
cod_mov IN (34,35) AND
fecha <= fecha_cierre AND
orden_compra NOT IN ( SELECT num_oc FROM cotb00014 )
INSERT INTO intb00024 SELECT * FROM intb00006
WHERE status_t = "X"
DELETE FROM intb00006 WHERE status_t = "X"
LET forma_ld = "cat trn1.ld trn2.ld trn3.ld trn4.ld > ", intb6_ascii
RUN forma_ld
#------ Creando los Balances Iniciales de las Materias Primas ----------
DISPLAY " Creando Balances Iniciales de las Materias Primas. "
AT 20,10
DECLARE transacciones CURSOR FOR SELECT cod_n, cod_grupo, cod_tipo, cod_sec,
SUM(cantidad_2)
FROM intb00024
WHERE status_t = "X"
GROUP BY 1,2,3,4
ORDER BY 1,2,3,4
FOREACH transacciones INTO trn.*
DISPLAY trn.cod_n USING "&" AT 21,30
DISPLAY trn.cod_grupo USING "&" AT 21,32
DISPLAY trn.cod_tipo USING "&&" AT 21,34
DISPLAY trn.cod_sec USING "&&&" AT 21,37
DISPLAY trn.cantidad_2 USING "###,###,##&.&&" AT 21,41
INSERT INTO intb00006(num_doc,fecha,cod_mov,cod_n,cod_grupo,cod_tipo,
cod_sec,cantidad_2,bodega,us_crea,fech_crea)
VALUES (secuencia,fecha_cierre,1,trn.cod_n,trn.cod_grupo,
trn.cod_tipo,trn.cod_sec,trn.cantidad_2,1,USER,
CURRENT)
END FOREACH
UPDATE intb00024 SET status_t = NULL WHERE status_t = "X"
UNLOAD TO intb2_ascii SELECT * FROM intb00002
DISPLAY " Actualizando el Historico de Materias Primas. "
AT 20,10
#INSERT INTO intb00025 SELECT "111111", * FROM intb00002
#UPDATE intb00025 SET fecha = fecha_cierre WHERE fecha = "111111"
RUN intb2_dbsch
RUN intb6_dbsch
END FUNCTION