170 lines
4.3 KiB
Plaintext
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
|