JSOTO Adicion grupos ADMINISTRACION PERSONAL Y NOMINA
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user