-- 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; $$;