488 lines
14 KiB
Plaintext
488 lines
14 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
PROGRAMA : ACPRMT001
|
|
OBJETIVO : Capturar, Modificar, Elimacar registros de la
|
|
Tabla Catalogo de Bienes y Servicios
|
|
PROGRAMADOR : TAdeo A. Ferreras.
|
|
FECHA REALIZACION : Sept. 27, 1993.
|
|
------------------------------------------------------------------
|
|
}
|
|
|
|
IMPORT FGL fgldialog
|
|
IMPORT util
|
|
IMPORT com
|
|
|
|
GLOBALS "acprgb000.4gl"
|
|
|
|
DEFINE next_code INT
|
|
|
|
DEFINE des RECORD
|
|
descripcion2, descripcion3, descripcion4, descripcion5 STRING
|
|
END RECORD
|
|
|
|
DEFINE DisArray DYNAMIC ARRAY OF RECORD
|
|
codigo1 INT,
|
|
descripcion STRING,
|
|
cuenta_no1 CHAR(8),
|
|
departamento1 STRING
|
|
END RECORD
|
|
|
|
DEFINE infoArray RECORD
|
|
codigo INT,
|
|
descripcion1 STRING,
|
|
cuenta_no CHAR(8),
|
|
cta_depr CHAR(8),
|
|
cta_gasto CHAR(8),
|
|
departamento SMALLINT,
|
|
fech_compra DATE,
|
|
duracion INT,
|
|
fech_elim DATE,
|
|
referencia STRING,
|
|
fabricante STRING,
|
|
status_t CHAR(1),
|
|
us_crea STRING,
|
|
fech_crea DATE,
|
|
us_mod STRING,
|
|
fech_mod DATE,
|
|
id_MaintainX INT,
|
|
id_maquina INT,
|
|
desc_maquina STRING
|
|
END RECORD
|
|
|
|
DEFINE answer STRING, ApiCheck BOOLEAN
|
|
|
|
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_companias.* FROM companias a
|
|
|
|
CALL acprmt001()
|
|
END MAIN
|
|
|
|
FUNCTION acprmt001()
|
|
|
|
OPEN WINDOW w1 WITH FORM "acfmmt001"
|
|
CALL fgl_settitle("Maestra de Activos Fijos")
|
|
|
|
CALL acpcad001()
|
|
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
|
|
DISPLAY ARRAY DisArray TO Tabla.*
|
|
|
|
ON ACTION Adicionar
|
|
ATTRIBUTES(TEXT = 'Adicionar', IMAGE = 'fa-address-book-o')
|
|
INITIALIZE infoArray, des TO NULL
|
|
|
|
LET infoArray.us_crea = usuarios
|
|
LET infoArray.fech_crea = CURRENT YEAR TO DAY
|
|
|
|
SELECT TOP(1) codigo
|
|
INTO next_code
|
|
FROM actb00001
|
|
ORDER BY codigo DESC
|
|
|
|
LET infoArray.codigo = next_code + 1
|
|
|
|
INPUT BY NAME infoArray.*, des.*, apiCheck
|
|
ATTRIBUTES(UNBUFFERED, WITHOUT DEFAULTS)
|
|
|
|
AFTER FIELD cuenta_no
|
|
SELECT a.descripcion
|
|
INTO des.descripcion2
|
|
FROM cgtb00001 a
|
|
WHERE cuenta_no = infoArray.cuenta_no
|
|
|
|
DISPLAY BY NAME des.descripcion2
|
|
|
|
AFTER FIELD cta_depr
|
|
SELECT a.descripcion
|
|
INTO des.descripcion3
|
|
FROM cgtb00001 a
|
|
WHERE a.cuenta_no = infoArray.cta_depr
|
|
|
|
DISPLAY BY NAME des.descripcion3
|
|
|
|
AFTER FIELD cta_gasto
|
|
SELECT a.descripcion
|
|
INTO des.descripcion4
|
|
FROM cgtb00001 a
|
|
WHERE a.cuenta_no = infoArray.cta_gasto
|
|
|
|
DISPLAY BY NAME des.descripcion4
|
|
|
|
AFTER FIELD departamento
|
|
SELECT a.nom_dpto
|
|
INTO des.descripcion5
|
|
FROM adtb00001 a
|
|
WHERE a.departamento = infoArray.departamento
|
|
|
|
DISPLAY BY NAME des.descripcion5
|
|
|
|
AFTER INPUT
|
|
NEXT FIELD fabricante
|
|
|
|
ON ACTION ACCEPT
|
|
CALL insertData()
|
|
EXIT INPUT
|
|
|
|
ON ACTION CANCEL
|
|
CALL msg(2)
|
|
EXIT INPUT
|
|
|
|
END INPUT
|
|
|
|
ON ACTION Modificar
|
|
ATTRIBUTES(TEXT = 'Modificar', IMAGE = 'refresh')
|
|
|
|
INPUT BY NAME infoArray.*, apiCheck
|
|
ATTRIBUTES(UNBUFFERED, WITHOUT DEFAULTS)
|
|
|
|
|
|
AFTER FIELD cuenta_no
|
|
SELECT a.descripcion
|
|
INTO des.descripcion2
|
|
FROM cgtb00001 a
|
|
WHERE cuenta_no = infoArray.cuenta_no
|
|
|
|
DISPLAY BY NAME des.descripcion2
|
|
|
|
AFTER FIELD cta_depr
|
|
SELECT a.descripcion
|
|
INTO des.descripcion3
|
|
FROM cgtb00001 a
|
|
WHERE a.cuenta_no = infoArray.cta_depr
|
|
|
|
DISPLAY BY NAME des.descripcion3
|
|
|
|
AFTER FIELD cta_gasto
|
|
SELECT a.descripcion
|
|
INTO des.descripcion4
|
|
FROM cgtb00001 a
|
|
WHERE a.cuenta_no = infoArray.cta_gasto
|
|
|
|
DISPLAY BY NAME des.descripcion4
|
|
|
|
AFTER FIELD departamento
|
|
SELECT a.nom_dpto
|
|
INTO des.descripcion5
|
|
FROM adtb00001 a
|
|
WHERE a.departamento = infoArray.departamento
|
|
|
|
DISPLAY BY NAME des.descripcion5
|
|
|
|
AFTER INPUT
|
|
NEXT FIELD fabricante --Para que no se haga el auto accept
|
|
|
|
ON ACTION ACCEPT
|
|
CALL UpdateData(1)
|
|
EXIT INPUT
|
|
|
|
ON ACTION CANCEL
|
|
CALL msg(2)
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
ON ACTION Eliminar ATTRIBUTES(TEXT = 'Eliminar', IMAGE = 'delete')
|
|
|
|
LET answer =
|
|
fgl_winquestion(
|
|
"ELIMINAR REGISTRO",
|
|
"Esta seguro/a que desea eliminar este registro? ",
|
|
"yes",
|
|
"yes|no",
|
|
"question",
|
|
0)
|
|
|
|
IF answer = 'yes' THEN
|
|
CALL updateData(2)
|
|
ELSE
|
|
CALL msg(2)
|
|
END IF
|
|
|
|
ON ACTION Salir ATTRIBUTES(TEXT = 'Salir', IMAGE = 'exit2')
|
|
EXIT PROGRAM
|
|
|
|
BEFORE ROW
|
|
CALL getdata(arr_curr())
|
|
DISPLAY BY NAME infoArray.*
|
|
|
|
END DISPLAY
|
|
|
|
END DIALOG
|
|
|
|
CLOSE WINDOW w1
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION acpcad001() --Consultar Datos
|
|
|
|
DEFINE i INT
|
|
|
|
LET i = 1
|
|
|
|
PREPARE query
|
|
FROM "SELECT a.codigo, a.descripcion, a.cuenta_no, b.nom_dpto
|
|
FROM actb00001 a inner join adtb00001 b on a.departamento = b.departamento
|
|
where a.status_t is null
|
|
ORDER BY codigo"
|
|
|
|
DECLARE buscar CURSOR FOR query
|
|
|
|
FOREACH buscar INTO DisArray[i].*
|
|
|
|
LET i = i + 1
|
|
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION getdata(idx INT)
|
|
|
|
{PREPARE query
|
|
FROM 'SELECT a.codigo
|
|
,a.descripcion
|
|
,a.cuenta_no
|
|
,a.cta_depr
|
|
,a.cta_gasto
|
|
,a.departamento
|
|
,CONVERT(VARCHAR(10),fech_compra,103)
|
|
,a.duracion
|
|
,CONVERT(VARCHAR(10),fech_elim,103)
|
|
,a.referencia
|
|
,a.fabricante
|
|
,a.status_t
|
|
,a.us_crea
|
|
,a.fech_crea
|
|
,a.us_mod
|
|
,a.fech_mod
|
|
FROM actb00001 a
|
|
WHERE a.codigo = ' || DisArray[idx].codigo1 || '
|
|
ORDER BY a.codigo '}
|
|
|
|
PREPARE query
|
|
FROM "SELECT a.codigo
|
|
,a.descripcion
|
|
,a.cuenta_no
|
|
,a.cta_depr
|
|
,a.cta_gasto
|
|
,a.departamento
|
|
,CONVERT(VARCHAR(10),fech_compra,103)
|
|
,a.duracion
|
|
,CONVERT(VARCHAR(10),fech_elim,103)
|
|
,a.referencia
|
|
,a.fabricante
|
|
,a.status_t
|
|
,a.us_crea
|
|
,a.fech_crea
|
|
,a.us_mod
|
|
,a.fech_mod
|
|
,a.id_MaintainX
|
|
,a.id_codigo
|
|
,b.nombre
|
|
FROM actb00001 a left join irtb00009 b on a.id_codigo = b.codigo
|
|
WHERE a.codigo = " || DisArray[idx].codigo1 || "
|
|
AND a.status_t is null
|
|
ORDER BY a.codigo"
|
|
|
|
EXECUTE query INTO infoArray.*
|
|
|
|
SELECT a.descripcion
|
|
INTO des.descripcion2
|
|
FROM cgtb00001 a
|
|
WHERE cuenta_no = infoArray.cuenta_no
|
|
|
|
SELECT a.descripcion
|
|
INTO des.descripcion3
|
|
FROM cgtb00001 a
|
|
WHERE a.cuenta_no = infoArray.cta_depr
|
|
|
|
SELECT a.descripcion
|
|
INTO des.descripcion4
|
|
FROM cgtb00001 a
|
|
WHERE a.cuenta_no = infoArray.cta_gasto
|
|
|
|
SELECT a.nom_dpto
|
|
INTO des.descripcion5
|
|
FROM adtb00001 a
|
|
WHERE a.departamento = infoArray.departamento
|
|
|
|
DISPLAY BY NAME des.*
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION insertData()
|
|
|
|
LET infoArray.fech_crea = CURRENT YEAR TO FRACTION
|
|
|
|
BEGIN WORK
|
|
|
|
IF apiCheck THEN
|
|
CALL ApiMaintainX('POST',NULL, infoArray.*) RETURNING infoArray.id_MaintainX
|
|
|
|
IF infoArray.id_MaintainX IS NULL THEN
|
|
ROLLBACK WORK
|
|
ELSE
|
|
DISPLAY "nuevo ID: ",infoArray.id_MaintainX
|
|
END IF
|
|
END IF
|
|
|
|
INSERT INTO actb00001(
|
|
codigo,
|
|
descripcion,
|
|
cuenta_no,
|
|
cta_dpr,
|
|
cta_gasto,
|
|
departamento,
|
|
fech_compra,
|
|
duracion,
|
|
fech_elim,
|
|
referencia,
|
|
fabricante,
|
|
status_t,
|
|
us_crea,
|
|
fech_crea,
|
|
us_mod,
|
|
fech_mod,
|
|
id_maintainX,
|
|
id_codigo)
|
|
VALUES(infoArray.codigo,
|
|
infoArray.descripcion1,
|
|
infoArray.cuenta_no,
|
|
infoArray.cta_depr,
|
|
infoArray.cta_gasto,
|
|
infoArray.departamento,
|
|
infoArray.fech_compra,
|
|
infoArray.duracion,
|
|
NULL,
|
|
infoArray.referencia,
|
|
infoArray.fabricante,
|
|
NULL,
|
|
infoArray.us_crea,
|
|
infoArray.fech_crea,
|
|
NULL,
|
|
NULL,
|
|
infoArray.id_MaintainX,
|
|
infoArray.id_maquina)
|
|
|
|
INSERT INTO actb00005
|
|
VALUES(infoArray.codigo,
|
|
infoArray.descripcion1,
|
|
infoArray.cuenta_no,
|
|
infoArray.cta_depr,
|
|
infoArray.cta_gasto,
|
|
infoArray.departamento,
|
|
infoArray.fech_compra,
|
|
infoArray.duracion,
|
|
NULL,
|
|
NULL,
|
|
infoArray.us_crea,
|
|
infoArray.fech_crea,
|
|
NULL,
|
|
NULL,
|
|
NULL)
|
|
|
|
IF SQLCA.SQLCODE < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1663)
|
|
ELSE
|
|
COMMIT WORK
|
|
CALL msg(1)
|
|
END IF
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION updateData(CASO INT)
|
|
|
|
CASE CASO
|
|
|
|
WHEN 1
|
|
|
|
BEGIN WORK
|
|
|
|
UPDATE actb00001
|
|
SET descripcion = infoArray.descripcion1,
|
|
cuenta_no = infoArray.cuenta_no,
|
|
cta_depr = infoArray.cta_depr,
|
|
cta_gasto = infoArray.cta_gasto,
|
|
departamento = infoArray.departamento,
|
|
fech_compra = infoArray.fech_compra,
|
|
duracion = infoArray.duracion,
|
|
referencia = infoArray.referencia,
|
|
fabricante = infoArray.fabricante,
|
|
id_codigo = infoArray.id_maquina,
|
|
us_mod = usuarios,
|
|
fech_mod = CURRENT YEAR TO FRACTION
|
|
WHERE codigo = infoArray.codigo
|
|
|
|
UPDATE actb00005
|
|
SET descripcion = infoArray.descripcion1,
|
|
cuenta_no = infoArray.cuenta_no,
|
|
cta_depr = infoArray.cta_depr,
|
|
cta_gasto = infoArray.cta_gasto,
|
|
departamento = infoArray.departamento,
|
|
fech_compra = infoArray.fech_compra,
|
|
duracion = infoArray.duracion,
|
|
us_mod = usuarios,
|
|
fech_mod = CURRENT YEAR TO FRACTION
|
|
WHERE codigo = infoArray.codigo
|
|
|
|
IF apiCheck THEN
|
|
CALL ApiMaintainX('PATCH',infoArray.id_MaintainX, infoArray.*) RETURNING answer
|
|
|
|
IF answer IS NULL THEN
|
|
ROLLBACK WORK
|
|
ELSE
|
|
DISPLAY answer
|
|
END IF
|
|
END IF
|
|
|
|
IF SQLCA.SQLCODE < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1663)
|
|
ELSE
|
|
COMMIT WORK
|
|
CALL msg(13)
|
|
END IF
|
|
EXIT CASE
|
|
|
|
WHEN 2
|
|
|
|
BEGIN WORK
|
|
|
|
UPDATE actb00001
|
|
SET status_t = 'E',
|
|
us_mod = usuarios,
|
|
fech_mod = CURRENT YEAR TO FRACTION,
|
|
fech_elim = CURRENT YEAR TO FRACTION
|
|
WHERE codigo = infoArray.codigo
|
|
|
|
UPDATE actb00005
|
|
SET status_t = 'E',
|
|
us_mod = usuarios,
|
|
fech_mod = CURRENT YEAR TO FRACTION,
|
|
fech_elim = CURRENT YEAR TO FRACTION
|
|
WHERE codigo = infoArray.codigo
|
|
|
|
IF apiCheck THEN
|
|
CALL ApiMaintainX('DELETE',infoArray.id_MaintainX, infoArray.*) RETURNING answer
|
|
END IF
|
|
|
|
IF SQLCA.SQLCODE < 0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(1663)
|
|
ELSE
|
|
COMMIT WORK
|
|
CALL msg(39)
|
|
END IF
|
|
|
|
OTHERWISE
|
|
DISPLAY "Nothing happens..."
|
|
|
|
END CASE
|
|
|
|
END FUNCTION
|