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;
|
||||
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
|
||||
INTO v_numero
|
||||
FROM sig.pedidos
|
||||
WHERE id_empresa = NEW.id_empresa
|
||||
FOR UPDATE;
|
||||
WHERE id_empresa = NEW.id_empresa;
|
||||
|
||||
-- Código da pauta (sig usa codigo, SAR armazena id_pauta)
|
||||
SELECT codigo INTO v_cod_pauta
|
||||
@@ -171,7 +173,7 @@ BEGIN
|
||||
COALESCE(NEW.acrescimo, 0),
|
||||
NEW.num_ped_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,
|
||||
|
||||
Reference in New Issue
Block a user