Files
MBS/PROYECTO/cgdir/cgprmt006.4gl
T

467 lines
13 KiB
Plaintext

{
================================================================================
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, <Esc> Para Grabar <Ctrl-C> 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