JSOTO veconvierteorden/ccprmt003: evita ordenes duplicadas por cotizacion
Dos usuarios convirtiendo la misma cotizacion a la vez creaban dos ordenes (cot 340001 -> 262237 y 262238, ticket 12234). La validacion "cotizacion tiene orden" corria antes del BEGIN WORK; el segundo usuario la pasaba, esperaba el bloqueo de prtb00020 y al liberarse insertaba otra orden. - vedir/veconvierteorden: re-valida dentro de la transaccion, ya con el bloqueo de prtb00020. - WEBSERVICES/veconvierteorden: misma re-validacion (no tenia ninguna). - ccdir/ccprmt003 verifica_orden(): COUNT(*) en vez de SELECT num_oc, que daba -284 con ordenes duplicadas. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -2758,11 +2758,11 @@ REPORT cctb01b(
|
||||
|
||||
END REPORT
|
||||
FUNCTION verifica_orden()
|
||||
LET tieneorden = TRUE
|
||||
SELECT a.num_oc
|
||||
DEFINE cuantas INT
|
||||
# COUNT(*) en vez de SELECT num_oc: con ordenes duplicadas daba -284
|
||||
LET cuantas = 0
|
||||
SELECT COUNT(*) INTO cuantas
|
||||
FROM prtb00012 a
|
||||
WHERE a.cotizacion_no = recibo_nc.num_orden AND a.status_T IS NULL
|
||||
IF STATUS = NOTFOUND THEN
|
||||
LET tieneorden = FALSE
|
||||
END IF
|
||||
LET tieneorden = (cuantas > 0)
|
||||
END FUNCTION
|
||||
|
||||
Reference in New Issue
Block a user