{ ------------------------------------------------------------------ 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" " Actualiza Registro 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