JSOTO Adicion grupos ADMINISTRACION PERSONAL Y NOMINA

This commit is contained in:
2026-10-07 12:11:28 -04:00
parent ccf12198ba
commit a5ccd3083f
14 changed files with 1888 additions and 111 deletions
+63 -40
View File
@@ -18,37 +18,38 @@
pusuarios CHAR(50),
selec STRING,
txtmensaje VARCHAR(200),
pubicacion VARCHAR(170)
pubicacion VARCHAR(170),
idx_max INT
DEFINE arr_requisicion DYNAMIC ARRAY OF RECORD
procesa CHAR(3),
num_oc INT,
fecha CHAR(10),
cotizacion_no INT,
tipo_cliente SMALLINT,
sec_cliente INT,
nombre CHAR(30),
cantidad_1 DEC(12,5),
DEFINE arr_requisicion DYNAMIC ARRAY OF RECORD
procesa CHAR(3),
num_oc INT,
fecha CHAR(10),
cotizacion_no INT,
tipo_cliente SMALLINT,
sec_cliente INT,
nombre CHAR(30),
cantidad_1 DEC(12,5),
cantidad DEC(12,5),
area SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion CHAR(30),
unidad_med CHAR(3),
cantidad_ord1 DEC(12,5),
cantidad_ord DEC(12,5),
cantidad_pendiente DEC(12,5),
precio DEC(12,2),
descuento DEC(12,2),
descvalor DEC(12,2),
valor DEC(12,2)
area SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion CHAR(30),
unidad_med CHAR(3),
cantidad_ord1 DEC(12,5),
cantidad_ord DEC(12,5),
cantidad_pendiente DEC(12,5),
precio DEC(12,2),
descuento DEC(12,2),
descvalor DEC(12,2),
valor DEC(12,2)
END RECORD,
pitbis,xmonto,monto_cotizacion DEC(12,2),
estado_req varchar(30),
cuenta smallint
SET CONNECTION "MSSQL"
LET monto_cotizacion = xmonto
@@ -61,16 +62,37 @@
# PREPARE s FROM "SELECT @@IDENTITY"
SELECT a.num_req INTO xnumreq FROM cctb00019 a
IF xnumreq IS NULL THEN
LET xnumreq = 0
END IF
LET xnumreq = xnumreq + 1
# 05/10/2026 - Error -268 PK_cctb00025 duplicada: el consecutivo se leia
# fuera de la transaccion y sin bloqueo (con RCSI dos usuarios leen el mismo
# num_req). Ahora se lee DENTRO de BEGIN WORK con UPDLOCK,HOLDLOCK y se
# compara contra MAX(cctb00025) por si el contador quedo atrasado.
WHENEVER ERROR CONTINUE
BEGIN WORK
PREPARE p_numreq FROM "SELECT ISNULL(MAX(num_req),0) FROM cctb00019 WITH (UPDLOCK, HOLDLOCK)"
EXECUTE p_numreq INTO xnumreq
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLERRMESSAGE,"STOP")
RETURN 0,0
END IF
PREPARE p_maxreq FROM "SELECT ISNULL(MAX(num_req),0) FROM cctb00025 WITH (UPDLOCK, HOLDLOCK)"
EXECUTE p_maxreq INTO idx_max
IF xnumreq IS NULL THEN
LET xnumreq = 0
END IF
IF idx_max > xnumreq THEN
LET xnumreq = idx_max
END IF
LET xnumreq = xnumreq + 1
UPDATE cctb00019 SET num_req = xnumreq,us_crea=pusuarios,fech_crea=getdate()
# EXECUTE s INTO xnumreq
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLERRMESSAGE,"STOP")
RETURN 0,0
END IF
LET selec =
"INSERT INTO cctb00034 (id_kit,cotizacion_no,num_oc,num_req,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad)",
"SELECT a.id_kit,a.cotizacion_no,a.num_oc,'",xnumreq USING "<<<<<<","',a.secuencia,a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad ",
@@ -82,8 +104,8 @@ BEGIN WORK
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLCA.SQLCODE,"INFO")
RETURN xnumreq,xmonto
CALL fgl_winmessage("ERROR",SQLERRMESSAGE,"STOP")
RETURN 0,0
END IF
LET estado_req = 'NO AUTORIZADA'
@@ -169,8 +191,8 @@ BEGIN WORK
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLCA.SQLCODE,"INFO")
RETURN xnumreq,xmonto
CALL fgl_winmessage("ERROR",SQLERRMESSAGE,"STOP")
RETURN 0,0
END IF
@@ -208,8 +230,8 @@ BEGIN WORK
EXECUTE comando
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLCA.SQLCODE,"INFO")
RETURN xnumreq,xmonto
CALL fgl_winmessage("ERROR",SQLERRMESSAGE,"STOP")
RETURN 0,0
END IF
@@ -221,8 +243,8 @@ BEGIN WORK
"NO DESPACHADA",xmonto)
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLCA.SQLCODE,"INFO")
RETURN xnumreq,xmonto
CALL fgl_winmessage("ERROR",SQLERRMESSAGE,"STOP")
RETURN 0,0
END IF
COMMIT WORK
@@ -246,5 +268,6 @@ BEGIN WORK
# subject, procedimiento )
# CALL fgl_Winmessage("INFORMACION",chmensaje,"STOP")
WHENEVER ERROR STOP
RETURN xnumreq,xmonto
END FUNCTION