sozsoft-platform/configs/seeds/postgres/object/Inv_P_TransferAfterSave.sql
2026-10-14 22:26:03 +03:00

30 lines
1.9 KiB
PL/PgSQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- Transfer belgesi kaydı sonrası: tür, şube, depo ve boş konumlar operasyon türünden gelir (formda olmayan alımın
-- kaynağı ve teslimatın hedefi her zaman, iade belgesi hariç); teslimat politikası yalnız teslimatta tutulur. Tamamlanmış belgenin başlığı
-- yeniden türetilmez: stoğu belirleyen alanlar kilitlidir (Inv_TR_TransferLock) ve sonradan değişen operasyon türü İade Et'i 50328'e düşürürdü.
-- Numara, özet ve durum butonunun işlemi (PendingAction) buradan çalışır.
CREATE OR REPLACE PROCEDURE public."Inv_P_TransferAfterSave"(p_id uuid, p_user_id uuid DEFAULT NULL)
LANGUAGE plpgsql AS $$
DECLARE v_act varchar(16);
BEGIN
SELECT "PendingAction" INTO v_act FROM "Inv_T_Transfer" WHERE "Id" = p_id;
UPDATE "Inv_T_Transfer" t SET
"OperationKind" = ot."OperationKind",
"BranchId" = ot."BranchId",
"WarehouseId" = ot."WarehouseId",
"SourceLocationId" = CASE WHEN t."ReturnOfId" IS NULL AND (ot."OperationKind" = 'Receipt' OR t."SourceLocationId" IS NULL)
THEN COALESCE(ot."SourceLocationId", t."SourceLocationId") ELSE t."SourceLocationId" END,
"DestinationLocationId" = CASE WHEN t."ReturnOfId" IS NULL AND (ot."OperationKind" = 'Delivery' OR t."DestinationLocationId" IS NULL)
THEN COALESCE(ot."DestinationLocationId", t."DestinationLocationId") ELSE t."DestinationLocationId" END,
"DeliveryPolicy" = CASE WHEN ot."OperationKind" = 'Delivery' THEN COALESCE(t."DeliveryPolicy", 'Direct') END
FROM "Inv_T_OperationType" ot
WHERE t."Id" = p_id AND ot."Id" = t."OperationTypeId" AND t."Status" <> 'Done';
CALL public."Inv_P_TransferNumber"(p_id);
CALL public."Inv_P_TransferRecalc"(p_id);
-- Durum butonları işlemi PendingAction alanına yazıp ekranın güncelleme ucuyla kaydeder.
IF v_act IS NOT NULL THEN
CALL public."Inv_P_TransferSetStatus"(p_id, v_act, p_user_id);
END IF;
END;
$$;