2026-10-14 09:07:11 +00:00
|
|
|
|
-- Transfer belgesinin talep kalemlerinin satır durumunu planla eşler (yeniden hesap ve iptal sonrası): kalanın tamamı iç transferle
|
|
|
|
|
|
-- planlanmış, satınalma payı olmayan bekleyen kalem kapanır (Tamamlandı); transfer iptal edilir, satırı silinir ya da eksik tamamlanıp kalanı
|
2026-10-14 19:26:03 +00:00
|
|
|
|
-- yeniden açılırsa kapalı kalem Bekliyor'a döner ve Planlama'da görünür. Silinmiş satırların kalemleri de kapsamdadır. Ardından
|
|
|
|
|
|
-- kalemlerin taleplerinin durumu yenilenir (teslim tamamlandıysa Tamamlandı; alım belgesi de buradan geçer).
|
2026-10-14 09:07:11 +00:00
|
|
|
|
CREATE OR REPLACE PROCEDURE public."Prc_P_MaterialRequestItemSync"(p_transfer_id uuid)
|
|
|
|
|
|
LANGUAGE plpgsql AS $$
|
|
|
|
|
|
BEGIN
|
|
|
|
|
|
UPDATE "Prc_T_MaterialRequestItem" i
|
|
|
|
|
|
SET "LineStatus" = CASE WHEN i."LineStatus" = 'Waiting' THEN 'Done' ELSE 'Waiting' END
|
|
|
|
|
|
FROM public."Prc_V_MaterialRequestItemPlan" p
|
|
|
|
|
|
WHERE p."Id" = i."Id"
|
2026-10-19 14:35:08 +00:00
|
|
|
|
AND i."Id" IN (SELECT "MaterialRequestItemId" FROM "Stk_T_TransferLine" WHERE "TransferId" = p_transfer_id AND "MaterialRequestItemId" IS NOT NULL)
|
2026-10-14 09:07:11 +00:00
|
|
|
|
AND p."PurchaseQuantity" = 0
|
|
|
|
|
|
AND ((i."LineStatus" = 'Waiting' AND p."RemainingQuantity" <= 0)
|
|
|
|
|
|
OR (i."LineStatus" = 'Done' AND p."RemainingQuantity" > 0 AND i."DeliveredQuantity" < i."Quantity"));
|
2026-10-14 19:26:03 +00:00
|
|
|
|
|
|
|
|
|
|
CALL public."Prc_P_MaterialRequestSyncStatus"(p_transfer_id);
|
2026-10-14 09:07:11 +00:00
|
|
|
|
END;
|
|
|
|
|
|
$$;
|