Files
MBS/PROYECTO/vedir/veprmt020.4gl
T

240 lines
8.2 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : VEPRMT020
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Comprobantes Fiscales
PROGRAMADOR : Ing. Juan Soto.
FECHA REALIZACION : Diciembre 27, 2006
------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(4) RETURNING impresor
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
CONNECT to "marmotech" AS "IFMX" USER usuarios USING clave
CALL veprmt020()
END MAIN
FUNCTION veprmt020()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM vefmmt020 FROM "vefmmt020"
DISPLAY FORM vefmmt020
MENU
ON ACTION nuevo
CALL vepcad020()
ON ACTION modificar
CALL vepcmf020()
ON ACTION Salir
EXIT MENU
EXIT PROGRAM
END MENU
END FUNCTION
FUNCTION vepcad020()
DEFINE hoy DATE
## Captura los datos que va a contener el registro
# WHENEVER ERROR CONTINUE
LET hoy = today
INPUT BY NAME ncf.*
BEFORE INPUT
CALL localidades('1')
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
SET CONNECTION "IFMX"
INSERT INTO vetb00071 (fecha,tipo_ncf,tipo_doc,ncf_inicial,ncf_final,
codigo_dgii,disponible,itbis,us_mod,fech_mod,sucid)
VALUES (ncf.fecha,ncf.tipo_ncf,ncf.tipo_doc,ncf.ncf_inicial,
ncf.ncf_final,ncf.codigo_dgii,ncf.disponible,
ncf.itbis,usuarios,current,ncf.sucid)
SET CONNECTION "MSSQL"
INSERT INTO vetb00071 (fecha,tipo_ncf,tipo_doc,ncf_inicial,ncf_final,
codigo_dgii,disponible,itbis,us_mod,fech_mod,sucid)
VALUES (ncf.fecha,ncf.tipo_ncf,ncf.tipo_doc,ncf.ncf_inicial,
ncf.ncf_final,ncf.codigo_dgii,ncf.disponible,
ncf.itbis,usuarios,getdate(),ncf.sucid)
LET numero_msg = 1
CALL msg(numero_msg)
END INPUT
END FUNCTION
FUNCTION vepcmf020()
## Aqui se prepara para la captura del criterio de seleccion
#WHENEVER ERROR CONTINUE
SET CONNECTION "IFMX"
CONSTRUCT criterio ON a.fecha,a.tipo_doc,a.codigo_dgii
FROM fecha,tipo_doc,codigo_dgii
BEFORE CONSTRUCT
CALL localidades('1')
AFTER CONSTRUCT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
END CONSTRUCT
LET SELEC = " SELECT CONVERT(CHAR(10),a.fecha,103),a.tipo_ncf,a.tipo_doc,a.codigo_dgii,a.ncf_inicial,",
#" a.ncf_final,a.disponible,a.us_crea,a.fech_crea,a.us_mod,a.fech_mod ,",
" a.ncf_final,a.disponible,a.itbis,a.us_crea,a.fech_crea,a.us_mod,a.fech_mod,",
" a.sucid,a.fecha_vencimiento ",
" FROM vetb00071 a ",
" WHERE ",
criterio clipped,
" ORDER BY a.sucid"
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR WITH HOLD FOR busca
OPEN datos
FETCH FIRST datos INTO ncf.*
DISPLAY BY NAME ncf.*
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO ncf.*
DISPLAY BY NAME ncf.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO ncf.*
DISPLAY BY NAME ncf.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO ncf.*
DISPLAY BY NAME ncf.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO ncf.*
DISPLAY BY NAME ncf.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Delete> Cancela Operacion"
INPUT BY NAME ncf.* WITHOUT DEFAULTS
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
EXIT MENU
END IF
EXIT INPUT
END INPUT
SET CONNECTION "IFMX"
SELECT UNIQUE a.sucid FROM vetb00071 a
WHERE a.sucid = ncf.sucid AND
a.fecha = ncf.fecha AND
a.tipo_ncf = ncf.tipo_ncf
IF STATUS <> NOTFOUND THEN
UPDATE vetb00071 SET
tipo_doc = ncf.tipo_doc,
ncf_inicial = ncf.ncf_inicial,
ncf_final = ncf.ncf_final,
itbis = ncf.itbis,
us_mod = USUARIOS,
fech_mod = getdate(),
fecha_vencimiento = ncf.fecha_vencimiento
WHERE fecha = ncf.fecha AND
sucid = ncf.sucid AND
tipo_ncf = ncf.tipo_ncf
ELSE
INSERT INTO vetb00071 (fecha,tipo_ncf,tipo_doc,ncf_inicial,ncf_final,
codigo_dgii,disponible,itbis,us_mod,fech_mod,sucid,fecha_vencimiento)
VALUES (ncf.fecha,ncf.tipo_ncf,ncf.tipo_doc,ncf.ncf_inicial,
ncf.ncf_final,ncf.codigo_dgii,ncf.disponible,
ncf.itbis,usuarios,current,ncf.sucid,ncf.fecha_vencimiento)
END IF
SET CONNECTION "MSSQL"
SELECT UNIQUE a.sucid FROM vetb00071 a
WHERE a.sucid = ncf.sucid AND
a.fecha = ncf.fecha AND
a.tipo_ncf = ncf.tipo_ncf
IF STATUS <> NOTFOUND THEN
UPDATE vetb00071 SET
tipo_doc = ncf.tipo_doc,
ncf_inicial = ncf.ncf_inicial,
ncf_final = ncf.ncf_final,
itbis = ncf.itbis,
us_mod = USUARIOS,
fech_mod = GETDATE(),
fecha_vencimiento = ncf.fecha_vencimiento
WHERE fecha = ncf.fecha AND
sucid = ncf.sucid AND
tipo_ncf = ncf.tipo_ncf
ELSE
INSERT INTO vetb00071 (fecha,tipo_ncf,tipo_doc,ncf_inicial,ncf_final,
codigo_dgii,disponible,itbis,us_mod,fech_mod,sucid,fecha_vencimiento)
VALUES (ncf.fecha,ncf.tipo_ncf,ncf.tipo_doc,ncf.ncf_inicial,
ncf.ncf_final,ncf.codigo_dgii,ncf.disponible,
ncf.itbis,usuarios,getdate(),ncf.sucid,ncf.fecha_vencimiento)
END IF
LET numero_msg = 13
CALL msg(numero_msg)
COMMAND KEY ("L") "eLiminar"
SELECT a.ncf FROM vetb00072 a
WHERE a.ncf BETWEEN ncf.ncf_inicial AND ncf.ncf_final AND
sucid = ncf.sucid
IF STATUS = NOTFOUND THEN
DELETE FROM vetb00071 WHERE fecha = ncf.fecha AND
sucid = ncf.sucid
ELSE
LET numero_msg =32
CALL msg(numero_msg)
EXIT MENU
END IF
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION