sozsoft-platform/configs/seeds/postgres/object/Prc_V_MaterialRequestPlanTrack.sql

44 lines
3.5 KiB
MySQL
Raw Normal View History

2026-10-14 09:07:11 +00:00
-- Plan Takibi (App.Prc.MaterialRequestPlanTrack): talep kalemleri için verilen her karar — satınalmada ihalenin kök teklif talebindeki kalem
-- (alternatif tedarikçilere kopyalanan satırlar tekrar listelenmez; siparişe dönüştüyse ihale kaleminin siparişi ve tedarikçisi), iç
-- transferde transfer satırı, stoktan karşılamada kalemin kendisi (belgesiz; konum talebin teslim konumu). Gerçekleşen: siparişte alınan,
-- transferde tamamlanmış belgede yapılan, stokta karşılanan miktar.
CREATE OR REPLACE VIEW public."Prc_V_MaterialRequestPlanTrack" AS
SELECT rl."Id", rl."TenantId", i."Id" AS "MaterialRequestItemId", i."MaterialRequestId", r."RequestNo", r."BranchId", r."DepartmentId", r."WarehouseId",
r."LocationId", i."ProductId", i."DueDate", CAST('Purchase' AS varchar(16)) AS "PlanMethod", q."Id" AS "DocumentId", q."RfqNo" AS "DocumentNo",
q."Status" AS "DocumentStatus", COALESCE(o."SupplierId", q."SupplierId") AS "SupplierId", CAST(NULL AS uuid) AS "SourceLocationId",
o."Id" AS "PurchaseOrderId", o."OrderNo" AS "PurchaseOrderNo", o."Status" AS "OrderStatus", rl."Quantity", rl."UomId",
COALESCE(o."ReceivedQuantity", 0) AS "DoneQuantity", rl."CreationTime" AS "PlanDate", rl."CreatorId" AS "PlannerUserId", rl."IsDeleted"
FROM "Prc_T_PurchaseRfqLine" rl
INNER JOIN "Prc_T_PurchaseRfq" q ON q."Id" = rl."PurchaseRfqId" AND q."IsDeleted" = false AND q."Id" = COALESCE(q."TenderGroupId", q."Id")
INNER JOIN "Prc_T_MaterialRequestItem" i ON i."Id" = rl."MaterialRequestItemId"
INNER JOIN "Prc_T_MaterialRequest" r ON r."Id" = i."MaterialRequestId"
LEFT JOIN LATERAL (
SELECT po."Id", po."OrderNo", po."Status", po."SupplierId", ol."ReceivedQuantity"
FROM "Prc_T_PurchaseRfqLine" al
INNER JOIN "Prc_T_PurchaseOrderLine" ol ON ol."PurchaseRfqLineId" = al."Id" AND ol."IsDeleted" = false
INNER JOIN "Prc_T_PurchaseOrder" po ON po."Id" = ol."PurchaseOrderId" AND po."IsDeleted" = false
WHERE al."TenderLineId" = COALESCE(rl."TenderLineId", rl."Id") AND al."IsDeleted" = false
ORDER BY CASE WHEN po."Status" = 'Cancelled' THEN 1 ELSE 0 END, po."CreationTime" DESC
LIMIT 1) o ON true
WHERE rl."IsDeleted" = false
UNION ALL
SELECT tl."Id", tl."TenantId", i."Id", i."MaterialRequestId", r."RequestNo", r."BranchId", r."DepartmentId", r."WarehouseId",
r."LocationId", i."ProductId", i."DueDate", CAST('Transfer' AS varchar(16)), t."Id", t."TransferNo",
t."Status", NULL, t."SourceLocationId",
NULL, NULL, NULL, tl."DemandQuantity", tl."UomId",
CASE WHEN t."Status" = 'Done' THEN tl."Quantity" ELSE 0 END, tl."CreationTime", tl."CreatorId", tl."IsDeleted"
FROM "Inv_T_TransferLine" tl
INNER JOIN "Inv_T_Transfer" t ON t."Id" = tl."TransferId" AND t."IsDeleted" = false AND t."OperationKind" = 'InternalTransfer' AND t."ReturnOfId" IS NULL
INNER JOIN "Prc_T_MaterialRequestItem" i ON i."Id" = tl."MaterialRequestItemId"
INNER JOIN "Prc_T_MaterialRequest" r ON r."Id" = i."MaterialRequestId"
WHERE tl."IsDeleted" = false
UNION ALL
SELECT i."Id", i."TenantId", i."Id", i."MaterialRequestId", r."RequestNo", r."BranchId", r."DepartmentId", r."WarehouseId",
r."LocationId", i."ProductId", i."DueDate", CAST('Stock' AS varchar(16)), NULL, NULL,
NULL, NULL, r."LocationId",
NULL, NULL, NULL, i."FromStockQuantity", i."UomId",
i."FromStockQuantity", i."LastModificationTime", i."LastModifierId", i."IsDeleted"
FROM "Prc_T_MaterialRequestItem" i
INNER JOIN "Prc_T_MaterialRequest" r ON r."Id" = i."MaterialRequestId"
WHERE i."FromStockQuantity" > 0;