Files
DECOMARMOL/PROYECTOS COSTOS/indir/inprmt020.4gl
T
2026-09-22 20:38:51 -04:00

170 lines
4.3 KiB
Plaintext

{
==========================================================================
PROGRAMA : INPRMT020
OBJETIVO : Cerrar Inventario Materia Prima
REALIZADO POR : Tadeo A. Ferreras F.
FECHA : Febrero 12, 1996
==========================================================================
}
GLOBALS "inprgb000.4gl"
DEFINE trx RECORD LIKE intb00006.*
DEFINE p_fecha1,p_fecha2 DATE,
cantidad DECIMAL(12,2),
o1,opt1,opt4 CHAR(1),
p_ano SMALLINT,
ano1 CHAR(4),
ano2 CHAR(2),
err_val INTEGER,
unl1,unl,intb02ld1,intb06ld1 CHAR(1000)
DEFINE datos_20 RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad DECIMAL(12,2)
END RECORD
FUNCTION inprmt020()
OPTIONS
PROMPT LINE 12,
FORM LINE 8,
ERROR LINE 24
OPEN FORM infmmt020 FROM "infmmt020"
DISPLAY FORM infmmt020
CALL pantalla()
DISPLAY "inprmt020" AT 4,3
DISPLAY " " AT 6,1
DISPLAY "Cierre Anual" AT 6,34
LET p_ano = YEAR(TODAY) - 1
INPUT BY NAME p_ano WITHOUT DEFAULTS
AFTER FIELD p_ano
IF p_ano IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_ano
END IF
SELECT UNIQUE YEAR(fecha) FROM intb00024 WHERE YEAR(fecha) = p_ano
IF STATUS != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD p_ano
END IF
SELECT fecha_corte INTO p_fecha2 FROM prdtable
WHERE ano = p_ano AND mes = 12
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD p_ano
END IF
IF p_fecha2 > TODAY THEN
LET numero_msg = 189
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 ano1 = p_ano USING "&&&&"
LET ano2 = ano1[3,4]
LABEL volver:
PROMPT "Esta seguro de proceder (S/N)? " FOR opt1
LET opt1 = upshift(opt1)
IF opt1 != "S" AND opt1 != "N" THEN
GOTO volver
END IF
IF opt1 != "S" THEN
RETURN
END IF
DISPLAY "Cargando Datos a Copiar... Espere Por Favor" AT 17,14
# Copia de Seguridad en ASCII
UNLOAD TO "intb02.ld1" SELECT *FROM intb00002
UNLOAD TO "intb06.ld1" SELECT *FROM intb00006
RUN "dbschema -d rayovac -t intb00002 in2.sql"
RUN "dbschema -d rayovac -t intb00006 in6.sql"
DISPLAY "El Formato de copia se hara en CPIO " AT 10,1
DISPLAY "Introduzca La Cinta en La Unidad" AT 11,1
LABEL volver2:
PROMPT "Presione <ENTER> Cuando Este Listo" FOR opt4
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DISPLAY "En Proceso... Espere Por Favor" AT 23,1 ATTRIBUTE (BOLD)
RUN "ls intb02.ld1 intb06.ld1 in2.sql in6.sql| cpio -ocuv > /dev/rmt0 "
RETURNING err_val
IF err_val = 256 THEN
ERROR "UNIDAD NO ESTA LISTA"
SLEEP 1
GOTO volver2
END IF
DISPLAY err_val AT 13,1
DISPLAY " " AT 10,1
DISPLAY " " AT 11,1
DISPLAY " " AT 23,1 ATTRIBUTE (BOLD)
PROMPT "Backup es Correcto Presione [ENTER>, Caso Contrio <CTRL-C>" FOR CHAR o1
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DISPLAY "Insertando en Historicos... Espere Por Favor" AT 17,14
#### Proceso de Backup
INSERT INTO intb00024 SELECT *FROM intb00006
WHERE YEAR(fecha) <= p_ano
UPDATE intb00024 SET (us_mod,fech_mod) = (USER,CURRENT)
WHERE YEAR(fecha) <= p_ano
INSERT INTO intb00025 SELECT TODAY,*FROM intb00002
DISPLAY "Buscando Balances... Espere Por Favor" AT 17,14
DECLARE busca CURSOR FOR
SELECT cod_n,cod_grupo,cod_tipo,cod_sec,SUM(cantidad_2)
FROM intb00006
WHERE YEAR(fecha) <= p_ano AND status_t IS NULL
GROUP BY 1,2,3,4
LET p_fecha1 = p_fecha2 + 1
FOREACH busca INTO datos_20.*
IF datos_20.cantidad IS NULL THEN
LET datos_20.cantidad = 0
END IF
INSERT INTO intb00006(num_doc,fecha,cod_mov,cod_n,cod_grupo,cod_tipo,cod_sec,
cantidad_2,us_crea,fech_crea)
VALUES (1,p_fecha1,ano2,datos_20.cod_n,datos_20.cod_grupo,datos_20.cod_tipo,
datos_20.cod_sec,datos_20.cantidad,USER,CURRENT)
END FOREACH
# Borra las Informacion del historico
DISPLAY "Eliminando Transacciones... Espere Por Favor" AT 17,14
DELETE FROM intb00006 WHERE (YEAR(fecha) <= p_ano)
END FUNCTION