Instruccion de Johnny: todos los directorios de fuentes de inventario deben migrarse de la carpeta temporal PROYECTOS a la carpeta real PROYECTO, ya que PROYECTOS sera eliminada. Se elimino tambien un archivo suelto sin relacion llamado "ipdir" que existia en PROYECTO (del commit inicial) y bloqueaba el nombre de la carpeta. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
154 lines
3.9 KiB
Plaintext
154 lines
3.9 KiB
Plaintext
{
|
|
==========================================================================
|
|
PROGRAMA : IPPRMT006
|
|
OBJETIVO : Cerrar Anualmente Inventario Productos
|
|
REALIZADO POR : Tadeo A. Ferreras F.
|
|
FECHA : Febrero 12, 1996
|
|
==========================================================================
|
|
}
|
|
GLOBALS "ipprgb000.4gl"
|
|
DEFINE trx RECORD LIKE iptb00006.*
|
|
DEFINE p_fecha1,p_fecha2 DATE,
|
|
cantidad DECIMAL(12,2),
|
|
o1,opt1 CHAR(1),
|
|
ano1 CHAR(4),
|
|
ano2 CHAR(2),
|
|
p_ano SMALLINT,
|
|
err_val INTEGER
|
|
|
|
DEFINE datos_6 RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cantidad DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
FUNCTION ipprmt006()
|
|
|
|
OPTIONS
|
|
PROMPT LINE 12,
|
|
FORM LINE 8,
|
|
ERROR LINE 24
|
|
|
|
OPEN FORM ipfmmt006 FROM "ipfmmt006"
|
|
DISPLAY FORM ipfmmt006
|
|
CALL pantalla()
|
|
DISPLAY "ipprmt006" AT 4,3
|
|
DISPLAY " " AT 6,1
|
|
DISPLAY " Cierre Anual" AT 6,30
|
|
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 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 "Haciendo Copia Seguridad... Espere Por Favor" AT 17,14
|
|
# Copia de Seguridad en ASCII
|
|
UNLOAD TO "iptb02.ld1" SELECT *FROM iptb00002
|
|
UNLOAD TO "iptb06.ld1" SELECT *FROM iptb00006
|
|
|
|
RUN "dbschema -t iptb00002 -d rayovac ip2.sql"
|
|
RUN "dbschema -t iptb00006 -d rayovac ip6.sql"
|
|
|
|
DISPLAY " " AT 17,14
|
|
DISPLAY "El Formato de copia se hara en CPIO " AT 10,1
|
|
DISPLAY "Introduzca La Cinta en La Unidad" AT 11,1
|
|
LABEL volver1:
|
|
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 iptb06.ld1 iptb02.ld1 ip2.sql ip6.sql| cpio -ocuv > /dev/rmt0 "
|
|
RETURNING err_val
|
|
IF err_val = 256 THEN
|
|
ERROR "UNIDAD NO ESTA LISTA"
|
|
SLEEP 3
|
|
GOTO volver1
|
|
END IF
|
|
DISPLAY err_val AT 13,1
|
|
|
|
PROMPT "Backup Es Correcto Digite <ENTER>, Caso Contrario <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 iptb00008 SELECT *FROM iptb00006
|
|
WHERE YEAR(fecha) <= p_ano
|
|
UPDATE iptb00008 SET (us_mod,fech_mod) = (USER,CURRENT)
|
|
WHERE YEAR(fecha) <= p_ano
|
|
|
|
INSERT INTO iptb00009 SELECT TODAY,*FROM iptb00002
|
|
|
|
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 iptb00008
|
|
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_6.*
|
|
|
|
INSERT INTO iptb00006(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_6.cod_n,datos_6.cod_grupo,datos_6.cod_tipo,
|
|
datos_6.cod_sec,datos_6.cantidad,USER,CURRENT)
|
|
|
|
END FOREACH
|
|
|
|
DISPLAY "Eliminando Transacciones... Espere Por Favor" AT 17,14
|
|
# Borra las Informacion del historico
|
|
DELETE FROM iptb00006 WHERE (YEAR(fecha) <= p_ano)
|
|
END FUNCTION
|