467 lines
13 KiB
Plaintext
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
|