core-jgi/sqlj/postgresql/viewsmpc.sql

187 lines
7.5 KiB
SQL
Executable File

CREATE TABLE compiere.MPC_Order_Node_Trl
(
ad_language varchar(6) NOT NULL,
mpc_order_node_id int4 NOT NULL,
mpc_order_id int4 NOT NULL,
ad_client_id int4 NOT NULL,
ad_org_id int4 NOT NULL,
isactive char(1) NOT NULL DEFAULT 'Y'::bpchar,
created timestamp NOT NULL DEFAULT ('now'::text)::timestamp(6) with time zone,
createdby int4 NOT NULL,
updated timestamp NOT NULL DEFAULT ('now'::text)::timestamp(6) with time zone,
updatedby int4 NOT NULL,
name varchar(60) NOT NULL,
description varchar(255),
help varchar(2000),
istranslated char(1) NOT NULL DEFAULT 'N'::bpchar,
CONSTRAINT mpc_order_node_trl_key PRIMARY KEY (ad_language, mpc_order_node_id),
CONSTRAINT ad_language_ordernodetrl FOREIGN KEY (ad_language) REFERENCES compiere.ad_language (ad_language) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT mpc_ordernodetrl FOREIGN KEY (mpc_order_node_id, mpc_order_id) REFERENCES compiere.mpc_order_node (mpc_order_node_id, mpc_order_id) ON UPDATE NO ACTION ON DELETE CASCADE
)
WITH OIDS;
CREATE TABLE compiere.mpc_order_workflow_trl
(
mpc_order_workflow_id int4 NOT NULL,
mpc_order_id int4 NOT NULL,
ad_language varchar(6) NOT NULL,
ad_client_id int4 NOT NULL,
ad_org_id int4 NOT NULL,
isactive char(1) NOT NULL DEFAULT 'Y'::bpchar,
created timestamp NOT NULL DEFAULT ('now'::text)::timestamp(6) with time zone,
createdby int4 NOT NULL,
updated timestamp NOT NULL DEFAULT ('now'::text)::timestamp(6) with time zone,
updatedby int4 NOT NULL,
name varchar(60) NOT NULL,
description varchar(255),
help varchar(2000),
istranslated char(1) NOT NULL DEFAULT 'N'::bpchar,
CONSTRAINT mpc_order_workflow_trl_key PRIMARY KEY (ad_language, mpc_order_workflow_id),
CONSTRAINT ad_language_workflowtrl FOREIGN KEY (ad_language) REFERENCES compiere.ad_language (ad_language) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT mpc_order_workflowtrl FOREIGN KEY (mpc_order_workflow_id, mpc_order_id) REFERENCES compiere.mpc_order_workflow (mpc_order_workflow_id, mpc_order_id) ON UPDATE NO ACTION ON DELETE CASCADE
)
WITH OIDS;
CREATE OR REPLACE VIEW RV_MPC_Order AS
SELECT o.AD_Client_ID, o.AD_Org_ID,o.IsActive,o.Created, o.CreatedBy, o.Updated, o.UpdatedBy,
o.MPC_Order_ID, o.DocumentNo,o.DocStatus,o.M_Warehouse_ID,o.M_Product_ID,o.QtyEntered,
o.QtyReject,o.QtyScrap,o.QtyBatchs, o.QtyBatchSize,o.DateOrdered, o.DatePromised,o.DateStart,
o.DateStartSchedule,o.DateFinish,o.DateFinishSchedule,o.DateConfirm,o.DateDelivered,o.Lot,
o.MPC_Product_BOM_ID,o.AD_Workflow_ID, (select p.Weight from M_Product p where p.M_Product_ID=o.M_Product_ID) as Weight
FROM MPC_Order o;
CREATE OR REPLACE VIEW RV_MPC_Order_BOMLine AS
SELECT
obl.AD_Client_ID ,
obl.AD_Org_ID ,
obl.CreatedBy ,
obl.UpdatedBY ,
obl.Updated ,
obl.Created ,
obl.IsActive ,
obl.MPC_Order_BOM_ID,
obl.MPC_Order_BOMLine_ID ,
obl.MPC_Order_ID ,
obl.IsCritical ,
obl.ComponentType,
obl.M_Product_ID ,
obl.C_UOM_ID ,
ROUND(obl.QtyRequiered ,4) AS QtyRequiered ,
ROUND(BOMQtyReserved(obl.M_Product_ID,obl.M_Warehouse_ID,0), 4) AS QtyReserved ,
ROUND(BOMQtyAvailable(obl.M_Product_ID,obl.M_Warehouse_ID,0),4) AS QtyAvailable ,
ROUND(BOMQtyOnHand(obl.M_Product_ID,obl.M_Warehouse_ID,0),4) AS QtyOnHand ,
obl.M_Warehouse_ID ,
ROUND(obl.QtyBom,4) AS QtyBom,
obl.isQtyPercentage ,
ROUND(obl.QtyBatch,4) AS QtyBatch,
CASE WHEN o.QtyBatchs = 0 THEN 1 ELSE ROUND( obl.QtyRequiered / o.QtyBatchs, 4) END AS QtyBatchSize
--DECODE(o.QtyBatchs , 0 , 0 , ROUND( obl.QtyRequiered / o.QtyBatchs, 4) ) AS QtyBatchSize
FROM MPC_Order_BOMLine obl INNER JOIN MPC_Order o ON (o.MPC_Order_ID = obl.MPC_Order_ID);
--DROP VIEW RV_MPC_Order_Storage;
CREATE OR REPLACE VIEW RV_MPC_Order_Storage AS
SELECT
obl.AD_Client_ID ,
obl.AD_Org_ID ,
obl.CreatedBy ,
obl.UpdatedBY ,
obl.Updated ,
obl.Created ,
obl.IsActive ,
obl.MPC_Order_BOM_ID,
obl.MPC_Order_BOMLine_ID ,
obl.MPC_Order_ID ,
obl.IsCritical ,
obl.M_Product_ID ,
(Select p.Name FROM M_Product p Where p.M_Product_ID=o.M_Product_ID) as Name,
obl.C_UOM_ID ,
s.QtyOnhand ,
ROUND(obl.QtyRequiered ,4) AS QtyRequiered ,
CASE WHEN o.QtyBatchs = 0 THEN 1 ELSE ROUND( obl.QtyRequiered / o.QtyBatchs, 4) END AS QtyBatchSize,
--DECODE(o.QtyBatchs , 0 , 0 , ROUND( obl.QtyRequiered / o.QtyBatchs, 4) ) AS QtyBatchSize,
ROUND(BOMQtyReserved(obl.M_Product_ID,obl.M_Warehouse_ID,0), 4) AS QtyReserved ,
ROUND(BOMQtyAvailable(obl.M_Product_ID,obl.M_Warehouse_ID,0),4) AS QtyAvailable ,
obl.M_Warehouse_ID ,
obl.QtyBom ,
obl.isQtyPercentage ,
ROUND(obl.QtyBatch,4) AS QtyBatch ,
l.M_Locator_ID ,
s.m_attributesetinstance_id,
l.x ,
l.y ,
l.z
FROM MPC_Order_BOMLine obl INNER JOIN MPC_Order o ON (o.MPC_Order_ID = obl.MPC_Order_ID) LEFT OUTER JOIN M_Storage s ON ( s.M_Product_ID = obl.M_Product_ID AND s.QtyOnHand <> 0 AND obl.M_Warehouse_ID = (SELECT ld.M_Warehouse_ID FROM M_Locator ld WHERE s.M_Locator_ID=ld.M_Locator_ID)) LEFT OUTER JOIN M_Locator l ON (l.M_Locator_ID = s.M_Locator_ID) ORDER BY obl.M_Product_ID
;
CREATE OR REPLACE VIEW RV_MPC_Order_Transactions AS
SELECT DISTINCT o.AD_Client_ID,o.AD_Org_ID, o.IsActive, o.Created, o.CreatedBy, o.UpdatedBy, o.Updated,o.DocumentNo,ol.M_Product_ID, mt.M_Locator_ID,mt.MovementDate,o.MPC_Order_ID,
o.QtyDelivered, o.QtyScrap ,ol.QtyDelivered AS QtyDeliveredLine , (o.QtyDelivered * ol.QtyBatch)/100 AS QtyIssueShouldbe,
ol.QtyScrap AS QtyScrapLine , (o.QtyScrap * ol.QtyBatch)/100 AS QtyIssueScrapShouldBe , mt.CreatedBy AS CreatedByIssue, mt.UpdatedBy AS UpdatedByIssue,
(SELECT SUM(t.MovementQty) FROM M_Transaction t WHERE t.MPC_Order_BOMLine_ID=ol.MPC_Order_BOMLine_ID) AS QtyToDeliver,
((((o.QtyDelivered + o.QtyScrap) * ol.QtyBatch)/100) + (SELECT SUM(t.MovementQty) FROM M_Transaction t WHERE t.MPC_Order_BOMLine_ID = ol.MPC_Order_BOMLine_ID)) AS DifferenceQty
FROM MPC_Order o INNER JOIN MPC_Order_BOMLine ol ON (ol.MPC_Order_ID=o.MPC_Order_ID) LEFT JOIN M_Transaction mt ON( mt.MPC_Order_BOMLine_ID = ol.MPC_Order_BOMLine_ID)
;
--DROP VIEW RV_MPC_PRODUCT_BOMLINE ;
--DROP VIEW RV_MPC_PRODUCT_BOMLINE ;
CREATE OR REPLACE VIEW RV_MPC_PRODUCT_BOMLINE AS
SELECT
t.SeqNo,
t.LevelNo,
t.Levels,
t.AD_Client_ID ,
t.AD_Org_ID ,
t.CreatedBy ,
t.UpdatedBy ,
t.Updated ,
t.Created ,
t.AD_PInstance_ID,
bl.IsActive ,
bl.MPC_Product_BOM_ID,
bl.MPC_Product_BOMLine_ID ,
bl.Description,
bl.IsCritical ,
bl.ComponentType,
t.M_Product_ID ,
bl.C_UOM_ID ,
bl.IssueMethod,
bl.Line,
bl.M_AttributeSetInstance_ID,
bl.Scrap,
bl.ValidFrom,
bl.ValidTo,
bl.QtyBom,
bl.QtyBatch,
bl.isQtyPercentage
FROM MPC_Product_BOMLine bl RIGHT JOIN T_BOMLine t ON (t.MPC_Product_BOMLine_ID = bl.MPC_Product_BOMLine_ID) ORDER BY SeqNo ;
create view compiere.mpc_order_receipt_issue as
select
obl.mpc_order_bomline_id,
obl.iscritical,
p.value,
obl.m_product_id,
mos.name as productname,
mos.m_attributesetinstance_id,
asi.description as instancename,
mos.c_uom_id,
u.name as uomname,
obl.qtyrequiered,
obl.qtyreserved as qtyreserved_order,
mos.qtyonhand,
mos.qtyreserved as qtyreserved_storage,
mos.qtyavailable,
mos.m_locator_id,
mos.m_warehouse_id,
w.name as warehousename,
mos.qtybom,
mos.isqtypercentage,
mos.qtybatch,
obl.ComponentType,
mos.QtyRequiered - obl.QtyDelivered AS QtyOpen,
obl.mpc_order_id
from compiere.rv_mpc_order_storage mos
inner join compiere.mpc_order_bomline obl on mos.mpc_order_bomline_id = obl.mpc_order_bomline_id
inner join compiere.m_attributesetinstance asi on mos.m_attributesetinstance_id = asi.m_attributesetinstance_id
inner join compiere.c_uom u on mos.c_uom_id = u.c_uom_id
inner join compiere.m_product p on mos.m_product_id = p.m_product_id
inner join compiere.m_warehouse w on mos.m_warehouse_id = w.m_warehouse_id;