{ ================================================================================ PROGRAMA : CGPRMT006 OBJETIVO : BORRAR ENTRADAS DE DIARIO FISICAMENTE Y CREA LOS REGISTROS QUE VA A ELIMINAR EN LA TABLA DE REGISTROS ELIMINADOS DE CONTABILIDAD (CGTB00019), CONTROLA SECUENCIA POR ENTRADAS (CGTB00020) PROGRAMADOR: JUAN F. SOTO FECHA : ENERO 2, 1995. ================================================================================ } GLOBALS "cgprgb000.4gl" DEFINE cgtb4 RECORD LIKE cgtb00004.* DEFINE reactivo ARRAY[50] OF RECORD no_entrada INTEGER, entrada CHAR(14), debito DECIMAL(12,2), credito DECIMAL(12,2), usuario CHAR(9), fecha_e DATE END RECORD, no_entrada,i_sec SMALLINT DEFINE reactiva,borra CHAR(1), entrada_no CHAR(14), fecha DATE MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT to "smarmotech" AS "MSSQL" USER usuarios USING clave SELECT a.* INTO p_compania.* FROM companias a CALL cgprmt006() END MAIN FUNCTION cgprmt006() OPTIONS FORM LINE 9, ERROR LINE 24 LET int_flag = false DISPLAY "Eliminacion Fisica Entradas de Diario " AT 6,20 DISPLAY "cgprmt006 " AT 4,2 OPEN FORM cgfmmt006 FROM "cgfmmt006" DISPLAY FORM cgfmmt006 MENU "OPCIONES" COMMAND "Eliminar" "Elimina Fisicamente, Para Grabar Cancela Operacion" LET int_flag = false CALL cgadmt06() COMMAND "Activar" "Introduce En La Tabla de Transaccion Entradas Eliminadas" LET int_flag = false CALL cgmfmt06() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION cgadmt06() DEFINE x RECORD id INTEGER, ref LIKE cgtb00004.ref, cuenta_no LIKE cgtb00004.cuenta_no, departamento LIKE cgtb00004.departamento, cod_aux LIKE cgtb00004.cod_aux, cod_sec LIKE cgtb00004.cod_sec, num_doc LIKE cgtb00004.num_doc, debito LIKE cgtb00004.debito, credito LIKE cgtb00004.credito END RECORD DEFINE tipo_e CHAR(1) LET tipo_e = "B" CALL entrada_datos(tipo_e) IF int_flag THEN LET int_flag = false RETURN END IF PROMPT "Esta Seguro de Borrar Esta Entrada(S/N)? " FOR borra LET borra = upshift(borra) IF borra = "S" THEN DISPLAY "En Proceso... Espere Por Favor" AT 22,1 SELECT MAX(@secuencia) INTO no_entrada FROM cgtb00019 WHERE @ref = entrada_no IF no_entrada is null THEN LET no_entrada = 1 ELSE LET no_entrada = no_entrada + 1 END IF # Este update es para cuando la informacion se inserte en la tabla cgtb00019 # se actualice el usuario que elimino la entrada y en que fecha UPDATE cgtb00004 SET (status_t,us_mod,fech_mod) = ("E",usuarios,getdate()) WHERE ref = entrada_no DECLARE busca10 CURSOR FOR SELECT *,rowid FROM cgtb00004 WHERE ref = entrada_no ORDER BY rowid FOREACH busca10 INTO cgtb4.* INSERT INTO cgtb00019 values (no_entrada,cgtb4.*) END FOREACH DELETE FROM cgtb00004 WHERE ref = entrada_no DISPLAY " " AT 22,1 DECLARE busca21 CURSOR FOR SELECT rowid,ref,cuenta_no,departamento,cod_aux,cod_sec,num_doc,debito, credito FROM cgtb00019 WHERE ref = entrada_no and @secuencia = no_entrada CALL seleccionarsalida() RETURNING r_output CALL configureoutput(r_output) RETURNING HANDLER START REPORT imp_entrada5 TO XML HANDLER handler FOREACH busca21 INTO x.* OUTPUT TO REPORT imp_entrada5(tipo_e,x.*) END FOREACH FINISH REPORT imp_entrada5 LET numero_msg = 39 CALL msg(numero_msg) END IF END FUNCTION # Funcion Para reactivar entradas de diario FUNCTION cgmfmt06() DEFINE x RECORD id INTEGER, ref LIKE cgtb00004.ref, cuenta_no LIKE cgtb00004.cuenta_no, departamento LIKE cgtb00004.departamento, cod_aux LIKE cgtb00004.cod_aux, cod_sec LIKE cgtb00004.cod_sec, num_doc LIKE cgtb00004.num_doc, debito LIKE cgtb00004.debito, credito LIKE cgtb00004.credito END RECORD DEFINE tipo_e CHAR(1) LET tipo_e = "R" CALL entrada_datos(tipo_e) IF int_flag THEN LET int_flag = false RETURN END IF DECLARE busca11 CURSOR FOR SELECT @secuencia,@ref,SUM(@debito),SUM(@credito),@us_mod, @fech_mod FROM cgtb00019 WHERE @ref = entrada_no GROUP BY 1,2,5,6 ORDER BY 1,2 FOR idx =1 TO 50 LET reactivo[idx].no_entrada = null LET reactivo[idx].entrada = null LET reactivo[idx].debito = null LET reactivo[idx].credito = null LET reactivo[idx].usuario = null LET reactivo[idx].fecha_e = null END FOR LET idx = 1 FOREACH busca11 INTO reactivo[idx].* LET idx = idx + 1 END FOREACH CALL set_count(idx-1) DISPLAY ARRAY reactivo TO s_react.* LET curr = scr_line() LET i_sec = reactivo[curr].no_entrada DISPLAY BY NAME i_sec ATTRIBUTE(BOLD) IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false CLEAR FORM RETURN END IF PROMPT "Esta Seguro de Reactivar Entrada (S/N)?" FOR reactiva LET reactiva = upshift(reactiva) IF reactiva = "S" THEN DISPLAY "En Proceso... Espere Por Favor" AT 22,1 UPDATE cgtb00019 SET status_t = "E", us_mod = user, fech_mod = current WHERE secuencia = i_sec and ref = entrada_no DECLARE busca12 CURSOR FOR SELECT @fecha,tipo,@ref,cuenta_no,departamento,num_doc, cod_aux,cod_sec,@detalles,@detalle_1,@detalle_2, @debito,@credito,status_t,us_crea,fech_crea, us_mod,fech_mod ,rowid FROM cgtb00019 WHERE @secuencia = i_sec and @ref = entrada_no ORDER BY rowid FOREACH busca12 INTO cgtb4.* INSERT INTO cgtb00004 VALUES (cgtb4.*) UPDATE cgtb00004 SET status_t = null, us_mod = user, fech_mod = current WHERE ref = entrada_no END FOREACH DECLARE busca20 CURSOR FOR SELECT rowid,ref,cuenta_no,departamento,cod_aux,cod_sec,num_doc,debito, credito FROM cgtb00004 WHERE ref = entrada_no START REPORT imp_entrada5 TO PIPE "lp -dcentral" FOREACH busca20 INTO x.* OUTPUT TO REPORT imp_entrada5(tipo_e, x.*) END FOREACH FINISH REPORT imp_entrada5 LET numero_msg = 14 CALL msg(numero_msg) END IF DISPLAY " " AT 22,1 CLEAR FORM END FUNCTION FUNCTION entrada_datos(tipo_e) DEFINE tipo_e CHAR(1) DEFINE p_ano CHAR(4) DEFINE u_mes SMALLINT CLEAR FORM INPUT BY NAME entrada_no BEFORE FIELD entrada_no LET p_ano = year(today) LET u_mes = month(today) LET entrada_no[11,14] = u_mes using "&&",p_ano[3,4] DISPLAY BY NAME entrada_no AFTER FIELD entrada_no IF entrada_no IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD entrada_no END IF IF tipo_e = "B" THEN SELECT UNIQUE @fecha,@detalle_1,@detalle_2 INTO fecha,detalle_1,detalle_2 FROM cgtb00004 WHERE ref = entrada_no IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD entrada_no END IF ELSE SELECT UNIQUE @fecha,@detalle_1,@detalle_2 INTO fecha,detalle_1,detalle_2 FROM cgtb00019 WHERE @ref = entrada_no IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD entrada_no END IF SELECT UNIQUE @fecha,@detalle_1,@detalle_2 INTO fecha,detalle_1,detalle_2 FROM cgtb00004 WHERE ref = entrada_no IF status != notfound THEN LET numero_msg = 231 CALL msg(numero_msg) NEXT FIELD entrada_no END IF END IF IF status < 0 THEN CALL integridad() IF bandera = 1 THEN LET detalle_1 = "HAY DIFERENTES DETALLES. NO DETALLES" END IF END IF DISPLAY BY NAME fecha,detalle_1,detalle_2 LET p_fechas = fecha CALL prd(p_fechas,usuarios) RETURNING bandera IF bandera = 1 THEN LET bandera = 0 NEXT FIELD fecha END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) RETURN END IF EXIT INPUT END INPUT END FUNCTION REPORT imp_entrada5(tipo_e,x) DEFINE tipo_e CHAR(1) DEFINE x RECORD id INTEGER, ref LIKE cgtb00004.ref, cuenta_no LIKE cgtb00004.cuenta_no, departamento LIKE cgtb00004.departamento, cod_aux LIKE cgtb00004.cod_aux, cod_sec LIKE cgtb00004.cod_sec, num_doc LIKE cgtb00004.num_doc, debito LIKE cgtb00004.debito, credito LIKE cgtb00004.credito END RECORD DEFINE fecha1,fecha2 DATE DEFINE t_debito,t_credito DECIMAL(12,2) DEFINE descripcion CHAR(30) DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE normal CHAR(2) DEFINE normall CHAR(3) DEFINE comprimido CHAR(3) DEFINE hora CHAR(5) DEFINE dpto INTEGER DEFINE nomina1 CHAR(24) DEFINE detalle1 CHAR(30) OUTPUT LEFT MARGIN 0 TOP MARGIN 0 ORDER BY x.id FORMAT PAGE HEADER LET doble_on = ASCII 001 LET doble_off = ASCII 002 LET negrillas_on = ASCII 027, ASCII 098 LET negrillas_off = ASCII 027, ASCII 099 LET comp_on = ASCII 31 LET comp_off = ASCII 029 LET comprimido = ASCII 031 LET doce = ASCII 030 LET normal = ASCII 27, ASCII 80 LET normall = ASCII 029 LET hora = time PRINT COLUMN 1, comp_off,"cgprmt006", COLUMN 23, "M A R M O T E C H, S. A.", COLUMN 75, "Pag. ",pageno using "###" PRINT COLUMN 35, "Sistema de Contabilidad", COLUMN 75, today using "dd/mm/yyyy" PRINT COLUMN 37, "Entradas al Diario", COLUMN 78, hora SELECT UNIQUE a.fecha_inicio,a.fecha_corte INTO fecha1,fecha2 FROM prdtable a WHERE a.mes = MONTH(fecha - 6) AND a.ano = YEAR(fecha) PRINT COLUMN 34, "Del ",fecha1 USING "dd/mm/yyyy", " Al ",fecha2 USING "dd/mm/yyyy" # , negrillas_off IF tipo_e = "B" THEN PRINT COLUMN 1,doble_on,"ELIMINADA" ELSE PRINT COLUMN 1,doble_on,"ACTIVADA" END IF PRINT doble_off PRINT comp_off,doce PRINT COLUMN 01,"Entrada de Diario No.", doble_on,entrada_no,doble_off PRINT COLUMN 1,"Observaciones: _____________________________________" PRINT COLUMN 1," _____________________________________" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", negrillas_on PRINT COLUMN 2, "Cuenta ", COLUMN 11, "Dpto", COLUMN 17, "Catalogo", COLUMN 26, "Refe", COLUMN 41, "Concepto", COLUMN 75, "Debe", COLUMN 93, "Haber",negrillas_off PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" ON EVERY ROW SELECT a.descripcion INTO descripcion FROM cgtb00001 a WHERE a.cuenta_no = x.cuenta_no AND a.status_t IS NULL IF t_debito is null THEN LET t_debito = 0 END IF IF t_credito is null THEN LET t_credito = 0 END IF IF x.debito != 0 THEN PRINT COLUMN 2, x.cuenta_no, COLUMN 11, x.departamento using "&&&&", COLUMN 17, x.cod_aux using "&&","-",x.cod_sec using "&&&&", COLUMN 26, x.num_doc, COLUMN 41, descripcion[1,25], COLUMN 68, x.debito using "##,###,###.##" LET t_debito = t_debito + x.debito END IF IF x.credito != 0 THEN PRINT COLUMN 2, x.cuenta_no, COLUMN 11, x.departamento using "&&&&", COLUMN 17, x.cod_aux using "&&","-",x.cod_sec using "&&&&", COLUMN 26, x.num_doc, COLUMN 41, descripcion[1,25], COLUMN 85, x.credito using "##,###,###.##" LET t_credito = t_credito + x.credito END IF ON LAST ROW PRINT COLUMN 1,negrillas_on PRINT COLUMN 67,"--------------", COLUMN 85,"--------------" PRINT COLUMN 35,"Totales-->", COLUMN 68, t_debito using "##,###,###.##", COLUMN 85, t_credito using "##,###,###.##" SKIP 2 LINE PRINT COLUMN 1, detalle_1 CLIPPED, detalle_2 CLIPPED LET t_debito = 0 LET t_credito = 0 PAGE TRAILER SKIP 4 LINE PRINT COLUMN 4,"_______________________", COLUMN 36,"_______________________", COLUMN 75,"_______________________" PRINT COLUMN 2," PREPARADO POR ", COLUMN 36," REVISADO POR ", COLUMN 75," AUTORIZADO POR " PRINT COLUMN 1,comp_off,negrillas_off END REPORT