- 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).
303 lines
9.2 KiB
Plaintext
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
|
|
|