{ ========================================================================== 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 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 , Caso Contrario " 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