JSOTO Adicion grupos ADMINISTRACION PERSONAL Y NOMINA
This commit is contained in:
@@ -55,6 +55,7 @@ FUNCTION convierteorden(
|
||||
pprecio, monto_cotizacion DEC(12, 2),
|
||||
pdesc DEC(8, 2),
|
||||
pkit INT,
|
||||
existe_oc INT,
|
||||
pfecha_compromiso DATE
|
||||
|
||||
CALL STARTLOG("veconvierte.txt")
|
||||
@@ -71,11 +72,8 @@ FUNCTION convierteorden(
|
||||
LET pcantidad = 0
|
||||
LET pcantidad1 = 0
|
||||
|
||||
SELECT num_oc INTO ult_numero FROM prtb00020
|
||||
IF ult_numero IS NULL THEN
|
||||
LET ult_numero = 0
|
||||
END IF
|
||||
LET ult_numero = ult_numero + 1
|
||||
# El consecutivo num_oc se toma DENTRO de la transaccion (ver BEGIN WORK)
|
||||
LET ult_numero = 0
|
||||
LET xsecvend_a = NULL
|
||||
|
||||
SELECT a.tipo_cliente,
|
||||
@@ -122,8 +120,20 @@ FUNCTION convierteorden(
|
||||
WHENEVER ANY ERROR STOP
|
||||
|
||||
BEGIN WORK
|
||||
# CONSECUTIVO ATOMICO: el UPDATE incrementa y bloquea la fila de prtb00020
|
||||
# hasta el COMMIT/ROLLBACK, asi dos usuarios no pueden tomar el mismo num_oc
|
||||
# (antes se leia fuera de la transaccion -> PK_prtb00012 duplicada)
|
||||
UPDATE prtb00020
|
||||
SET num_oc = ult_numero, us_crea = xusuario, fech_crea = GETDATE()
|
||||
SET num_oc = ISNULL(num_oc, 0) + 1, us_crea = xusuario, fech_crea = GETDATE()
|
||||
SELECT num_oc INTO ult_numero FROM prtb00020
|
||||
# AUTOCORRECCION: si el contador quedo por detras de prtb00012
|
||||
# (otro programa creo ordenes sin avanzarlo), salta al siguiente libre
|
||||
LET existe_oc = 0
|
||||
SELECT COUNT(*) INTO existe_oc FROM prtb00012 WHERE num_oc = ult_numero
|
||||
IF existe_oc > 0 THEN
|
||||
SELECT MAX(num_oc) + 1 INTO ult_numero FROM prtb00012
|
||||
UPDATE prtb00020 SET num_oc = ult_numero
|
||||
END IF
|
||||
|
||||
IF xsecvend_a IS NULL OR xsecvend_a = 0 THEN
|
||||
|
||||
|
||||
Reference in New Issue
Block a user