Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md
This commit is contained in:
@@ -0,0 +1,367 @@
|
||||
{
|
||||
--------------------------------------------------------------------------
|
||||
PROGRAMA : cpprmt005
|
||||
OBJETIVO : Este programa crea tipos de pagos
|
||||
REALIZADO POR : Ing. Luis Miguel Soto.
|
||||
FECHA : Agosto 16,2024.
|
||||
--------------------------------------------------------------------------
|
||||
}
|
||||
GLOBALS "cpprgb000.4gl"
|
||||
DEFINE tipo,tipo1 INT,opt1 CHAR(3)
|
||||
DEFINE desc_tipo,obj,us_crea,us_mod CHAR(80)
|
||||
DEFINE fech_mod,fech_crea DATE
|
||||
|
||||
DEFINE cuentas2 ARRAY[300] OF RECORD
|
||||
cuenta_no LIKE cgtb00001.cuenta_no,
|
||||
descripcion LIKE cgtb00001.descripcion,
|
||||
origen LIKE cgtb00001.origen
|
||||
END RECORD
|
||||
DEFINE tipos DYNAMIC ARRAY OF RECORD
|
||||
tipo2 INT,
|
||||
descripcion1 CHAR(80),
|
||||
obj1 CHAR(80),
|
||||
us_mod1 CHAR(50),
|
||||
fech_mod1 DATE,
|
||||
us_crea1 CHAR(50),
|
||||
fech_crea1 date
|
||||
END record
|
||||
|
||||
DEFINE cuentas DYNAMIC ARRAY OF RECORD
|
||||
cuenta_no LIKE cgtb00001.cuenta_no,
|
||||
descripcion char(80),
|
||||
origen CHAR(1)
|
||||
END RECORD
|
||||
|
||||
|
||||
MAIN
|
||||
DEFER INTERRUPT
|
||||
CALL ARG_VAL(1) RETURNING usuarios
|
||||
CALL ARG_VAL(2) RETURNING clave
|
||||
|
||||
|
||||
CONNECT to "sistemas" AS "MSSQL" USER usuarios USING clave
|
||||
|
||||
CALL cpprmt005()
|
||||
END MAIN
|
||||
|
||||
|
||||
FUNCTION cpprmt005()
|
||||
|
||||
CLEAR SCREEN
|
||||
OPEN WINDOW cpfmmt005 AT 4,3 with FORM "cpfmmt005"
|
||||
MENU
|
||||
ON ACTION adicionar
|
||||
CALL cpcad005()
|
||||
ON ACTION consultar_modificar
|
||||
CALL cpprmf005()
|
||||
ON ACTION salir
|
||||
EXIT menu
|
||||
END menu
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION cpcad005()
|
||||
DIALOG ATTRIBUTES (UNBUFFERED,FIELD ORDER FORM )
|
||||
|
||||
INPUT BY NAME desc_tipo,obj
|
||||
BEFORE INPUT
|
||||
LET tipo=0
|
||||
LET scr_l = scr_line()
|
||||
LET idx = arr_curr()
|
||||
SELECT MAX (a.tipo)INTO tipo FROM cptb00008 a
|
||||
|
||||
IF tipo IS NULL OR tipo=0 THEN
|
||||
LET tipo=1
|
||||
ELSE
|
||||
LET tipo=tipo+1
|
||||
END IF
|
||||
DISPLAY BY NAME tipo
|
||||
|
||||
END INPUT
|
||||
INPUT ARRAY cuentas FROM scuentas.* ATTRIBUTE(WITHOUT DEFAULTS)
|
||||
BEFORE INPUT
|
||||
LET curr = arr_curr()
|
||||
LET scr_l = scr_line()
|
||||
ON ACTION cuenta
|
||||
LET curr = arr_curr()
|
||||
LET scr_l = scr_line()
|
||||
CALL busca_cuenta()
|
||||
LET cuentas[curr].cuenta_no=cuentas2[curr].cuenta_no
|
||||
LET cuentas[curr].descripcion=cuentas2[curr].descripcion
|
||||
LET cuentas[curr].origen=cuentas2[curr].origen
|
||||
DISPLAY cuentas[curr].cuenta_no TO scuentas[scr_l].cuenta_no
|
||||
DISPLAY cuentas[curr].descripcion TO scuentas[scr_l].descripcion
|
||||
DISPLAY cuentas[curr].origen TO scuentas[scr_l].origen
|
||||
|
||||
|
||||
AFTER FIELD cuenta_no
|
||||
LET curr = arr_curr()
|
||||
LET scr_l = scr_line()
|
||||
IF cuentas[curr].cuenta_no IS NOT NULL THEN
|
||||
|
||||
SELECT unique a.descripcion,a.origen
|
||||
INTO cuentas[curr].descripcion,cuentas[curr].origen
|
||||
FROM cgtb00001 a
|
||||
WHERE a.cuenta_no=cuentas[curr].cuenta_no and a.status_t is null
|
||||
|
||||
IF status = notfound THEN
|
||||
LET numero_msg = 3
|
||||
CALL msg(numero_msg)
|
||||
NEXT FIELD cuenta_no
|
||||
END IF
|
||||
END IF
|
||||
DISPLAY cuentas[curr].cuenta_no TO scuentas[scr_l].cuenta_no
|
||||
DISPLAY cuentas[curr].descripcion TO scuentas[scr_l].descripcion
|
||||
DISPLAY cuentas[curr].origen TO scuentas[scr_l].origen
|
||||
END INPUT
|
||||
ON ACTION guardar
|
||||
IF desc_tipo IS NULL THEN
|
||||
CALL fgl_winmessage("ERROR","LA DESCRIPCION NO PUEDE ESTAR VACIO","STOP")
|
||||
NEXT FIELD DESC_TIPO
|
||||
END IF
|
||||
BEGIN WORK
|
||||
INSERT INTO cptb00008
|
||||
VALUES(tipo,desc_tipo,obj,null,usuarios,getdate(),NULL,NULL)
|
||||
|
||||
FOR idx=1 TO cuentas.getLength()
|
||||
IF cuentas[idx].cuenta_no IS NOT NULL THEN
|
||||
INSERT INTO cptb00009
|
||||
VALUES(tipo,cuentas[idx].cuenta_no,cuentas[idx].descripcion,cuentas[idx].origen,NULL,usuarios,getdate(),NULL,null)
|
||||
END IF
|
||||
END FOR
|
||||
|
||||
IF status<0 THEN
|
||||
ROLLBACK WORK
|
||||
CALL fgl_winmessage("error","NO SE PUDO ACTUALIZAR","STOP")
|
||||
ELSE
|
||||
COMMIT WORK
|
||||
LET numero_msg = 13
|
||||
CALL msg(numero_msg)
|
||||
RETURN
|
||||
END IF
|
||||
ON ACTION CANCEL
|
||||
LET int_flag = FALSE
|
||||
CALL cuentas.clear()
|
||||
CLEAR FORM
|
||||
EXIT DIALOG
|
||||
END DIALOG
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION cpprmf005()
|
||||
DIALOG ATTRIBUTES (UNBUFFERED, FIELD ORDER FORM)
|
||||
CONSTRUCT criterio ON a.tipo
|
||||
FROM tipo1
|
||||
BEFORE CONSTRUCT
|
||||
END CONSTRUCT
|
||||
|
||||
ON ACTION buscar
|
||||
CALL tipos.clear()
|
||||
LET curr=arr_curr()
|
||||
LET selec= "select unique a.tipo,a.desc_tipo,a.obj,us_crea,fech_crea,us_mod,fech_mod ",
|
||||
"from cptb00008 a ",
|
||||
"where a.status_t is null and ", criterio CLIPPED
|
||||
PREPARE busca FROM selec
|
||||
DECLARE datos SCROLL CURSOR WITH HOLD FOR busca
|
||||
LET idx=1
|
||||
FOREACH datos INTO tipos[idx].*
|
||||
LET idx=idx+1
|
||||
END FOREACH
|
||||
|
||||
IF idx= 1 THEN
|
||||
CALL fgl_winmessage("ERROR","NO HAY REGISTROS CON ESA CONDICION","STOP")
|
||||
EXIT DIALOG
|
||||
END IF
|
||||
DISPLAY ARRAY tipos TO stipo.*
|
||||
BEFORE ROW
|
||||
ON ACTION escoger
|
||||
LET curr=arr_curr()
|
||||
SELECT tipo FROM cptb00008
|
||||
WHERE status_t IS NULL AND tipo=tipos[curr].tipo2
|
||||
|
||||
IF status!= NOTFOUND THEN
|
||||
LET numero_msg=36
|
||||
CALL msg(numero_msg)
|
||||
ELSE
|
||||
CALL actualizar()
|
||||
END IF
|
||||
ON ACTION borrar
|
||||
LET curr=arr_curr()
|
||||
LET tipo=tipos[curr].tipo2
|
||||
LET OPT1 = FGL_WINQUESTION("WARNING","ESTA SEGURO DE ELIMINAR ESTE REGISTRO?","NO","YES|NO","QUESTION",0)
|
||||
|
||||
IF OPT1 = "YES" THEN
|
||||
|
||||
UPDATE cptb00008
|
||||
SET status_t="E",
|
||||
us_mod=usuarios,
|
||||
fech_mod=getdate()
|
||||
WHERE @tipo=tipos[curr].tipo2
|
||||
UPDATE cptb00009
|
||||
SET status_t="E",
|
||||
us_mod=usuarios,
|
||||
fech_mod=getdate()
|
||||
WHERE @tipo=tipos[curr].tipo2
|
||||
DISPLAY "tipo",tipos[curr].tipo2
|
||||
LET numero_msg = 39
|
||||
CALL msg(numero_msg)
|
||||
END IF
|
||||
END DISPLAY
|
||||
ON ACTION CANCEL
|
||||
LET int_flag= FALSE
|
||||
call tipos.clear()
|
||||
CLEAR FORM
|
||||
EXIT DIALOG
|
||||
|
||||
END DIALOG
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION busca_cuenta()
|
||||
OPEN WINDOW cons_cuenta AT 10,5 WITH FORM "cpfmwd006" ATTRIBUTE
|
||||
(BORDER,FORM LINE FIRST + 1,COMMENT LINE LAST)
|
||||
|
||||
CONSTRUCT BY NAME criterio ON descripcion
|
||||
IF int_flag THEN
|
||||
LET numero_msg = 2
|
||||
CALL msg(numero_msg)
|
||||
RETURN
|
||||
END IF
|
||||
LET selec =
|
||||
"SELECT cuenta_no,descripcion,origen FROM cgtb00001 ",
|
||||
"WHERE ",criterio clipped," AND status_t is null ORDER BY 1"
|
||||
|
||||
PREPARE comando FROM selec
|
||||
DECLARE busca2 CURSOR FOR comando
|
||||
OPEN busca2
|
||||
|
||||
|
||||
WHILE STATUS != NOTFOUND
|
||||
LET idx = 1
|
||||
FETCH busca2 INTO cuentas2[idx].cuenta_no,cuentas[idx].descripcion,cuentas[idx].origen
|
||||
IF status = notfound THEN
|
||||
EXIT WHILE
|
||||
END IF
|
||||
|
||||
LET idx = idx + 1
|
||||
END WHILE
|
||||
IF int_flag THEN
|
||||
LET numero_msg = 2
|
||||
CALL msg(numero_msg)
|
||||
RETURN
|
||||
END IF
|
||||
|
||||
CALL set_count (idx - 1)
|
||||
DISPLAY ARRAY cuentas2 TO s_cuentas.*
|
||||
LET curr1 = arr_curr()
|
||||
IF int_flag THEN
|
||||
LET numero_msg = 2
|
||||
CALL msg(numero_msg)
|
||||
RETURN
|
||||
END IF
|
||||
|
||||
CLOSE WINDOW cons_cuenta
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION actualizar()
|
||||
DIALOG ATTRIBUTES (UNBUFFERED, FIELD ORDER FORM)
|
||||
INPUT BY NAME desc_tipo,obj
|
||||
BEFORE INPUT
|
||||
LET tipo=tipos[curr].tipo2
|
||||
LET desc_tipo=tipos[curr].descripcion1
|
||||
LET obj=tipos[curr].obj1
|
||||
LET us_crea=tipos[curr].us_crea1
|
||||
LET fech_crea=tipos[curr].fech_crea1
|
||||
LET us_mod=tipos[curr].us_mod1
|
||||
LET fech_mod=tipos[curr].fech_mod1
|
||||
DISPLAY BY NAME tipo,desc_tipo,obj,us_crea,
|
||||
fech_crea,us_mod,fech_mod
|
||||
END INPUT
|
||||
INPUT ARRAY cuentas FROM scuentas.* ATTRIBUTES(WITHOUT DEFAULTS )
|
||||
BEFORE INPUT
|
||||
LET scr_l=scr_line()
|
||||
LET curr = arr_curr()
|
||||
LET selec= "select a.cuenta_no,a.descripcion,a.origen ",
|
||||
" from cptb00009 a",
|
||||
" where a.tipo=",tipos[curr].tipo2,
|
||||
" order by a.cuenta_no"
|
||||
PREPARE comando1 FROM selec
|
||||
DECLARE busca4 CURSOR FOR comando1
|
||||
LET idx=1
|
||||
FOREACH busca4 INTO cuentas[idx].cuenta_no,
|
||||
cuentas[idx].descripcion,cuentas[idx].origen
|
||||
|
||||
DISPLAY cuentas[idx].cuenta_no TO scuentas[idx].cuenta_no
|
||||
DISPLAY cuentas[idx].descripcion TO scuentas[idx].descripcion
|
||||
DISPLAY cuentas[idx].origen TO scuentas[idx].origen
|
||||
LET idx =idx+1
|
||||
END FOREACH
|
||||
|
||||
ON ACTION cuenta
|
||||
LET scr_l=scr_line()
|
||||
LET curr = arr_curr()
|
||||
CALL busca_cuenta()
|
||||
LET cuentas[curr].cuenta_no=cuentas2[curr].cuenta_no
|
||||
LET cuentas[curr].descripcion=cuentas2[curr].descripcion
|
||||
LET cuentas[curr].origen=cuentas2[curr].origen
|
||||
DISPLAY cuentas[curr].cuenta_no TO scuentas[scr_l].cuenta_no
|
||||
DISPLAY cuentas[curr].descripcion TO scuentas[scr_l].descripcion
|
||||
DISPLAY cuentas[curr].origen TO scuentas[scr_l].origen
|
||||
|
||||
|
||||
AFTER FIELD cuenta_no
|
||||
LET scr_l=scr_line()
|
||||
LET curr = arr_curr()
|
||||
IF cuentas[curr].cuenta_no IS NOT NULL THEN
|
||||
LET verdad = "N"
|
||||
#CALL otravez()
|
||||
IF verdad = "S" THEN
|
||||
NEXT FIELD cuenta
|
||||
END IF
|
||||
|
||||
SELECT unique a.descripcion,a.origen
|
||||
INTO cuentas[curr].descripcion,cuentas[curr].origen
|
||||
FROM cgtb00001 a
|
||||
WHERE a.cuenta_no=cuentas[curr].cuenta_no and a.status_t is null
|
||||
|
||||
IF status = notfound THEN
|
||||
LET numero_msg = 3
|
||||
CALL msg(numero_msg)
|
||||
NEXT FIELD cuenta_no
|
||||
END IF
|
||||
END IF
|
||||
DISPLAY cuentas[curr].cuenta_no TO scuentas[scr_l].cuenta_no
|
||||
DISPLAY cuentas[curr].descripcion TO scuentas[scr_l].descripcion
|
||||
DISPLAY cuentas[curr].origen TO scuentas[scr_l].origen
|
||||
END INPUT
|
||||
ON ACTION guardar
|
||||
IF desc_tipo IS NULL THEN
|
||||
CALL fgl_winmessage("ERROR","LA DESCRIPCION NO PUEDE ESTAR VACIO","STOP")
|
||||
NEXT FIELD DESC_TIPO
|
||||
END IF
|
||||
BEGIN WORK
|
||||
UPDATE cptb00008 SET desc_tipo=desc_tipo,
|
||||
obj=obj,
|
||||
us_mod=usuarios,
|
||||
fech_mod=getdate()
|
||||
DELETE FROM cptb00009
|
||||
WHERE tipo=tipo
|
||||
FOR idx=1 TO cuentas.getLength()
|
||||
IF cuentas[idx].cuenta_no IS NOT NULL THEN
|
||||
INSERT INTO cptb00009
|
||||
VALUES(tipo,cuentas[idx].cuenta_no,cuentas[idx].descripcion,cuentas[idx].origen,NULL,NULL,null,usuarios,getdate())
|
||||
END IF
|
||||
END FOR
|
||||
IF status<0 THEN
|
||||
ROLLBACK WORK
|
||||
CALL fgl_winmessage("error","NO SE PUDO ACTUALIZAR","STOP")
|
||||
ELSE
|
||||
COMMIT WORK
|
||||
LET numero_msg=13
|
||||
CALL msg(numero_msg)
|
||||
RETURN
|
||||
END IF
|
||||
ON ACTION CANCEL
|
||||
LET int_flag = FALSE
|
||||
CALL cuentas.clear()
|
||||
CLEAR FORM
|
||||
EXIT dialog
|
||||
END DIALOG
|
||||
END FUNCTION
|
||||
Reference in New Issue
Block a user