{ ========================================================================== 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 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 " 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