fix(triggers): advisory lock e fconta corretos em fn_sync_pedido_aprovado_to_erp
- FOR UPDATE é inválido com MAX() no PG 18; substituído por pg_advisory_xact_lock - fconta=0 violava CHECK (1,2,3,4,5,6,9); corrigido para 1 (padrão SAR) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -52,12 +52,14 @@ BEGIN
|
|||||||
RETURN NEW;
|
RETURN NEW;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
-- Próximo número disponível para a empresa (com lock)
|
-- Lock por empresa para serializar geração do número (FOR UPDATE não
|
||||||
|
-- é permitido com funções de agregação no PG 18)
|
||||||
|
PERFORM pg_advisory_xact_lock(NEW.id_empresa::bigint);
|
||||||
|
|
||||||
SELECT COALESCE(MAX(numero), 0) + 1
|
SELECT COALESCE(MAX(numero), 0) + 1
|
||||||
INTO v_numero
|
INTO v_numero
|
||||||
FROM sig.pedidos
|
FROM sig.pedidos
|
||||||
WHERE id_empresa = NEW.id_empresa
|
WHERE id_empresa = NEW.id_empresa;
|
||||||
FOR UPDATE;
|
|
||||||
|
|
||||||
-- Código da pauta (sig usa codigo, SAR armazena id_pauta)
|
-- Código da pauta (sig usa codigo, SAR armazena id_pauta)
|
||||||
SELECT codigo INTO v_cod_pauta
|
SELECT codigo INTO v_cod_pauta
|
||||||
@@ -171,7 +173,7 @@ BEGIN
|
|||||||
COALESCE(NEW.acrescimo, 0),
|
COALESCE(NEW.acrescimo, 0),
|
||||||
NEW.num_ped_sar,
|
NEW.num_ped_sar,
|
||||||
1, -- inf_usuario=1: criado pelo SAR
|
1, -- inf_usuario=1: criado pelo SAR
|
||||||
0,
|
1, -- fconta: CHECK (1,2,3,4,5,6,9) — 1=padrão
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
|
|||||||
Reference in New Issue
Block a user