434 lines
12 KiB
Plaintext
434 lines
12 KiB
Plaintext
{
|
|
-----------------------------------------------------------------------------
|
|
PROGRAMA : CGPRMT001
|
|
OBJETIVO : Catalogo de Cuentas Contables.
|
|
PROGRAMADOR : Ing. Juan Soto
|
|
FECHA REALIZACION: Septiembre 27, 1993.
|
|
------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS
|
|
"cgprgb000.4gl"
|
|
|
|
DEFINE tree DYNAMIC ARRAY OF RECORD
|
|
cuenta,descripcion1,aplica_a1 STRING,
|
|
nivel1,departamento,catalogo,
|
|
referencia STRING
|
|
END RECORD
|
|
|
|
DEFINE xaplica_a CHAR(10), xdescripcion, xdescrip_n CHAR (60),
|
|
xprimern CHAR(10)
|
|
|
|
|
|
DEFINE cuenta_ant CHAR(8)
|
|
|
|
DEFINE modifica CHAR(1),
|
|
balance DECIMAL(12,2)
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
CONNECT to "smarmotech" USER usuarios USING clave
|
|
SELECT a.* INTO p_compania.* FROM companias a
|
|
|
|
CALL cgprmt001()
|
|
END MAIN
|
|
|
|
|
|
FUNCTION cgprmt001()
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 24,
|
|
COMMENT LINE 23
|
|
|
|
OPEN FORM cgfmmt001 FROM "cgfmmt001"
|
|
DISPLAY FORM cgfmmt001
|
|
DISPLAY "cgprmt001" AT 4,3
|
|
DISPLAY "Catalogo de Cuentas" AT 6,30
|
|
|
|
INITIALIZE presupa.* TO NULL
|
|
CALL despliega_cuenta()
|
|
MENU
|
|
ON ACTION Adicionar
|
|
LET int_flag = false
|
|
LET modifica = "N"
|
|
CALL cgpcad()
|
|
ON ACTION consultar_modificar
|
|
CALL despliega_cuenta()
|
|
ON ACTION Salir # REPORTE AVERIA 156948
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION cgpcad()
|
|
# Inicializacion de la variable de captura de informacion en blanco
|
|
# y captura las informaciones
|
|
CLEAR FORM
|
|
|
|
LABEL vuelve:
|
|
INITIALIZE catalogo TO NULL
|
|
INPUT BY NAME catalogo.*
|
|
BEFORE INPUT
|
|
CALL ctipo_impuesto()
|
|
|
|
AFTER FIELD descripcion
|
|
IF catalogo.descripcion is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD descripcion
|
|
END IF
|
|
|
|
AFTER FIELD retencion
|
|
IF catalogo.retencion = 'SI' THEN
|
|
NEXT FIELD codigo_isr
|
|
ELSE
|
|
LET catalogo.codigo_isr =NULL
|
|
EXIT INPUT
|
|
END IF
|
|
|
|
AFTER FIELD cuenta_no
|
|
IF catalogo.cuenta_no is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
ELSE
|
|
|
|
# Selecciona los datos para saber si existen en el catalogo la cuenta que
|
|
# se esta digitando
|
|
SELECT * INTO catalogo.* FROM cgtb00001
|
|
WHERE cuenta_no = catalogo.cuenta_no
|
|
|
|
# Chequea que el registro no este eliminado
|
|
IF catalogo.status_t = "E" THEN
|
|
LET numero_msg = 36
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
|
|
# Chequea si el registro existe
|
|
IF status != notfound THEN
|
|
DISPLAY BY NAME catalogo.*
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
INITIALIZE catalogo TO NULL
|
|
NEXT FIELD cuenta_no
|
|
END IF
|
|
END IF
|
|
DISPLAY BY NAME catalogo.*
|
|
|
|
AFTER FIELD cata
|
|
IF catalogo.cata is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cata
|
|
END IF
|
|
|
|
AFTER FIELD aplica_a
|
|
|
|
# Chequeo de las cuentas que se sumarizan en otras cuentas
|
|
IF catalogo.nivel > 1 THEN
|
|
IF catalogo.aplica_a is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
SELECT nivel,descripcion INTO p_nivel ,descrip
|
|
FROM cgtb00001 WHERE cuenta_no = catalogo.aplica_a and
|
|
status_t is null
|
|
IF status = notfound THEN
|
|
LET numero_msg = 164
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
|
|
IF p_nivel = 3 THEN
|
|
LET numero_msg = 165
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
DISPLAY BY NAME descrip
|
|
|
|
END IF
|
|
ON ACTION guardar ATTRIBUTE(TEXT="Salvar",IMAGE="filesave")
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
IF catalogo.nivel > 1 THEN
|
|
IF catalogo.aplica_a is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
END IF
|
|
IF catalogo.retencion = "SI" AND catalogo.codigo_isr IS NULL THEN
|
|
NEXT FIELD codigo_isr
|
|
END IF
|
|
|
|
|
|
|
|
|
|
# Inserta los datos en el catalogo de cuentas del sistema
|
|
INSERT INTO cgtb00001 (cuenta_no,descripcion,descrip_ing,
|
|
analitico,cata,depto,nivel,ref,origen,estado_a,
|
|
estado_m, aplica_a,us_crea,fech_crea,cuenta_resultado,grupo,tipo_cuenta,
|
|
selectivo_consumo,retencion,codigo_isr)
|
|
VALUES (catalogo.cuenta_no,catalogo.descripcion,catalogo.descrip_ing,
|
|
catalogo.analitico,catalogo.cata,catalogo.depto,catalogo.nivel,
|
|
catalogo.ref,catalogo.origen,catalogo.estado_a,catalogo.estado_m,
|
|
catalogo.aplica_a,usuarios,getdate(),catalogo.cuenta_resultado,
|
|
catalogo.grupo,catalogo.tipo_cuenta,catalogo.selectivo_consumo,catalogo.retencion,
|
|
catalogo.codigo_isr)
|
|
|
|
|
|
LET xaplica_a = catalogo.cuenta_no
|
|
LET xdescripcion = catalogo.descripcion
|
|
LET xprimern = catalogo.aplica_a
|
|
|
|
SELECT a.descripcion INTO xdescrip_n FROM cgtb00001 a
|
|
WHERE a.nivel <= 2 AND a.cuenta_no = xprimern
|
|
|
|
IF catalogo.nivel <= 2 then
|
|
Insert into cgtb00083 (primern,descrip_n,aplica_a,descripcion)
|
|
|
|
VALUES
|
|
(xprimern,xdescrip_n,xaplica_a,xdescripcion)
|
|
END IF
|
|
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
CLEAR FORM
|
|
CONTINUE INPUT
|
|
END INPUT
|
|
END FUNCTION
|
|
|
|
FUNCTION cgprmod()
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
INPUT BY NAME catalogo.* ATTRIBUTE(WITHOUT DEFAULTS)
|
|
BEFORE INPUT
|
|
IF catalogo.status_t = 'E' THEN
|
|
CALL fgl_winmessage("INFO","CUENTA DESACTIVADA, NO PUEDE ACTUALIZAR","INFO")
|
|
RETURN
|
|
END IF
|
|
|
|
CALL ctipo_impuesto()
|
|
|
|
AFTER FIELD retencion
|
|
IF catalogo.retencion = 'SI' THEN
|
|
NEXT FIELD codigo_isr
|
|
ELSE
|
|
LET catalogo.codigo_isr =NULL
|
|
DISPLAY BY NAME catalogo.codigo_isr
|
|
# EXIT INPUT
|
|
END IF
|
|
|
|
AFTER FIELD descripcion
|
|
IF catalogo.descripcion is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD descripcion
|
|
END IF
|
|
|
|
BEFORE FIELD cuenta_no
|
|
LET cuenta_ant = catalogo.cuenta_no CLIPPED
|
|
|
|
AFTER FIELD cata
|
|
IF catalogo.cata is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cata
|
|
END IF
|
|
|
|
AFTER FIELD aplica_a
|
|
# Chequeo de las cuentas que se sumarizan en otras cuentas
|
|
IF catalogo.nivel > 1 THEN
|
|
IF catalogo.aplica_a is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
SELECT nivel,descripcion INTO p_nivel,descrip
|
|
FROM cgtb00001
|
|
WHERE @cuenta_no = catalogo.aplica_a and status_t is null
|
|
|
|
IF status = notfound THEN
|
|
LET numero_msg = 163
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
IF p_nivel = 3 THEN
|
|
LET numero_msg = 165
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
DISPLAY BY NAME descrip
|
|
|
|
END IF
|
|
|
|
ON ACTION guardar ATTRIBUTE(TEXT="Salvar", IMAGE="filesave")
|
|
IF catalogo.nivel > 1 THEN
|
|
IF catalogo.aplica_a is null THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD aplica_a
|
|
END IF
|
|
END IF
|
|
|
|
IF catalogo.retencion="NO" THEN
|
|
LET catalogo.codigo_isr = NULL
|
|
DISPLAY BY NAME catalogo.codigo_isr
|
|
END IF
|
|
IF catalogo.retencion = "SI" AND catalogo.codigo_isr IS NULL THEN
|
|
NEXT FIELD codigo_isr
|
|
END IF
|
|
|
|
# Actualizacion de la tabla del catalogo de cuentas
|
|
UPDATE cgtb00001 set (cuenta_no,descripcion,descrip_ing,analitico,cata,
|
|
depto,nivel,ref,origen,estado_a,estado_m,aplica_a,
|
|
us_mod,fech_mod,grupo,cuenta_resultado,tipo_cuenta,selectivo_consumo,
|
|
retencion,codigo_isr) =
|
|
(catalogo.cuenta_no,catalogo.descripcion,
|
|
catalogo.descrip_ing,catalogo.analitico,
|
|
catalogo.cata,catalogo.depto,catalogo.nivel,
|
|
catalogo.ref,catalogo.origen,catalogo.estado_a,
|
|
catalogo.estado_m,catalogo.aplica_a,usuarios,getdate(),catalogo.grupo,
|
|
catalogo.cuenta_resultado,catalogo.tipo_cuenta,catalogo.selectivo_consumo,
|
|
catalogo.retencion,catalogo.codigo_isr)
|
|
WHERE @cuenta_no = cuenta_ant
|
|
|
|
LET xaplica_a = catalogo.cuenta_no
|
|
LET xdescripcion = catalogo.descripcion
|
|
LET xprimern = catalogo.aplica_a
|
|
|
|
SELECT a.descripcion INTO xdescrip_n FROM cgtb00001 a
|
|
WHERE a.nivel <= 2 AND a.cuenta_no = xprimern
|
|
|
|
IF catalogo.nivel <= 2 then
|
|
UPDATE cgtb00083
|
|
SET (primern,descrip_n,aplica_a,descripcion)=
|
|
(xprimern,xdescrip_n,xaplica_a,xdescripcion)
|
|
WHERE aplica_a = catalogo.cuenta_no
|
|
END IF
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
|
|
CALL busca_criterio()
|
|
CALL desplegar()
|
|
|
|
|
|
|
|
END INPUT
|
|
ON ACTION CANCEL ATTRIBUTE(TEXT="Cancelar",IMAGE="quit")
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
|
|
END DIALOG
|
|
|
|
END FUNCTION
|
|
|
|
# Funcion para buscar los departamentos
|
|
FUNCTION busca_depto()
|
|
OPEN WINDOW ws_busca AT 3,2 WITH FORM "cgfmwd001" ATTRIBUTE (BORDER,
|
|
FORM LINE FIRST + 1,COMMENT LINE LAST -1)
|
|
CONSTRUCT BY NAME criterio ON adtb00001.nom_dpto
|
|
LET selec2 = "SELECT departamento,nom_dpto FROM adtb00001 WHERE ",
|
|
criterio clipped,
|
|
"ORDER BY 1"
|
|
PREPARE comando1 FROM selec2
|
|
DECLARE busca2 CURSOR FOR comando1
|
|
OPEN busca2
|
|
LET idx = 1
|
|
WHILE status != notfound
|
|
FETCH busca2 INTO ws[idx].*
|
|
IF status = notfound THEN
|
|
EXIT WHILE
|
|
END IF
|
|
LET idx = idx + 1
|
|
END WHILE
|
|
CALL set_count(idx-1)
|
|
DISPLAY ARRAY ws TO s_ws.*
|
|
LET curr = scr_line()
|
|
CLOSE WINDOW ws_busca
|
|
END FUNCTION
|
|
|
|
FUNCTION despliega_cuenta()
|
|
|
|
DEFINE NAME, id, parentId STRING
|
|
DEFINE p INT
|
|
DEFINE i INT
|
|
|
|
CONSTRUCT criterio ON a.cuenta_no FROM cuenta
|
|
AFTER CONSTRUCT
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
EXIT CONSTRUCT
|
|
END CONSTRUCT
|
|
CALL busca_criterio()
|
|
CALL desplegar()
|
|
END FUNCTION
|
|
FUNCTION busca_criterio()
|
|
LET selec =
|
|
"SELECT a.cuenta_no,a.descripcion,a.aplica_a,a.nivel,a.cata, a.depto,a.ref FROM cgtb00001 a
|
|
WHERE a.status_t IS NULL AND ",criterio CLIPPED,
|
|
" ORDER BY a.cuenta_no"
|
|
|
|
PREPARE comandob FROM selec
|
|
DECLARE busca_cuenta CURSOR FOR comandob
|
|
|
|
LET i = 1
|
|
FOREACH busca_cuenta INTO tree[i].*
|
|
LET i = i +1
|
|
|
|
END FOREACH
|
|
IF i = 1 THEN
|
|
CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS CON ESTA CONDICION","INFO")
|
|
RETURN
|
|
END IF
|
|
|
|
END FUNCTION
|
|
FUNCTION desplegar()
|
|
DISPLAY ARRAY tree TO arbol.*
|
|
BEFORE DISPLAY
|
|
CALL ctipo_impuesto()
|
|
ON ACTION modificar ATTRIBUTE(TEXT="Modificar", IMAGE="fa-download")
|
|
LET catalogo.cuenta_no = tree[arr_curr()].cuenta
|
|
SELECT a.* INTO catalogo.* FROM cgtb00001 a WHERE a.cuenta_no = catalogo.cuenta_no
|
|
CALL cgprmod()
|
|
ON ACTION eliminar ATTRIBUTE(TEXT="Desactivar", IMAGE="delete")
|
|
CALL eliminar()
|
|
ON ACTION CANCEL ATTRIBUTE(TEXT="Cancelar",IMAGE="quit")
|
|
LET int_flag = FALSE
|
|
EXIT PROGRAM
|
|
AFTER DISPLAY
|
|
EXIT DISPLAY
|
|
END DISPLAY
|
|
END FUNCTION
|
|
FUNCTION eliminar()
|
|
LET balance = 0
|
|
SELECT SUM(a.debito-a.credito) INTO balance
|
|
FROM cgtb00004 a
|
|
WHERE a.cuenta_no = catalogo.cuenta_no
|
|
|
|
IF balance != 0 THEN
|
|
LET numero_msg = 381
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
UPDATE cgtb00001 set status_t = "E"
|
|
WHERE cuenta_no = catalogo.cuenta_no
|
|
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
|
|
|
|
END FUNCTION |