22 lines
1.4 KiB
MySQL
22 lines
1.4 KiB
MySQL
|
|
-- Talepten Aktar: seçilen malzeme talebi kalemini (p_key = belge|kalem) taslak iç transfere satır olarak ekler; kalanı (talep − teslim) aktarılır.
|
|||
|
|
-- Belgenin hedef konumu boşsa talebin konumu yazılır.
|
|||
|
|
CREATE OR REPLACE PROCEDURE public."Inv_P_TransferImportItem"(p_key varchar)
|
|||
|
|
LANGUAGE plpgsql AS $$
|
|||
|
|
DECLARE v_doc uuid; v_tenant uuid; v_item uuid; v_product uuid; v_description varchar(256); v_quantity numeric(18, 4); v_uom varchar(64); v_location uuid;
|
|||
|
|
BEGIN
|
|||
|
|
SELECT "BaseId", "TenantId", "MaterialRequestItemId", "ProductId", "RequestReason", "Quantity", "UomId", "LocationId"
|
|||
|
|
INTO v_doc, v_tenant, v_item, v_product, v_description, v_quantity, v_uom, v_location
|
|||
|
|
FROM "Prc_V_MaterialRequestTransferItem"
|
|||
|
|
WHERE "Id" = p_key;
|
|||
|
|
IF v_doc IS NULL THEN
|
|||
|
|
RAISE EXCEPTION 'Talep kalemi artık aktarılamaz: belge taslak değil, kalem başka bir transfere aktarılmış ya da talep değişmiş.' USING ERRCODE = 'P0001', DETAIL = '50319';
|
|||
|
|
END IF;
|
|||
|
|
|
|||
|
|
INSERT INTO "Inv_T_TransferLine" ("Id", "TenantId", "TransferId", "ProductId", "Description", "DemandQuantity", "Quantity", "UomId", "MaterialRequestItemId", "CreationTime", "IsDeleted")
|
|||
|
|
VALUES (gen_random_uuid(), v_tenant, v_doc, v_product, v_description, v_quantity, 0, v_uom, v_item, NOW() AT TIME ZONE 'UTC', false);
|
|||
|
|
|
|||
|
|
UPDATE "Inv_T_Transfer" SET "DestinationLocationId" = COALESCE("DestinationLocationId", v_location) WHERE "Id" = v_doc;
|
|||
|
|
CALL public."Inv_P_TransferRecalc"(v_doc);
|
|||
|
|
END;
|
|||
|
|
$$;
|