U8根据采购订单制单人匹配存货档案中存在采购员的物料,查询采购订单中最低价格,显示在采购订单扩展自定义项27和28上
CREATE TRIGGER [dbo].[Tir_Poextra]
ON [dbo].[PO_Podetails_extradefine]
FOR INSERT, UPDATE
AS
DECLARE @ID NVARCHAR(500);
DECLARE @cPurPersonCode NVARCHAR(500);
DECLARE @cVenCode NVARCHAR(500);
DECLARE @cInvCode NVARCHAR(500);
SELECT @ID = Inserted.ID
FROM Inserted;
SELECT @cPurPersonCode =
(
SELECT cPsn_Num
FROM UserHrPersonContro
WHERE cUser_Id =
(
SELECT cUser_Id FROM UA_User WHERE cUser_Name = PO_Pomain.cMaker
)
),
@cVenCode = PO_Pomain.cVenCode,
@cInvCode = PO_Podetails.cInvCode
FROM dbo.PO_Pomain
JOIN dbo.PO_Podetails
ON PO_Podetails.POID = PO_Pomain.POID
AND dbo.PO_Podetails.ID = @ID;
UPDATE PO_Podetails_extradefine ---PO最低单价 自定义字段27
SET cbdefine27 =
(
SELECT MIN(iUnitPrice)
FROM dbo.PO_Pomain
JOIN dbo.PO_Podetails
ON PO_Podetails.POID = PO_Pomain.POID
AND PO_Pomain.cVenCode = @cVenCode
AND PO_Podetails.cInvCode = @cInvCode
AND PO_Podetails.cInvCode IN
(
SELECT cInvCode FROM dbo.Inventory WHERE cPurPersonCode = @cPurPersonCode
)
AND PO_Podetails.ID != @ID
)
WHERE PO_Podetails_extradefine.ID = @ID;
---最低单价比率 自定义字段28
UPDATE PO_Podetails_extradefine
SET cbdefine28 = ROUND( (((ISNULL(po_p.iUnitPrice, 0) - (CASE ISNULL(po_ex.cbdefine27, 0)
WHEN 0 THEN
po_p.iUnitPrice
ELSE
ISNULL(po_ex.cbdefine27, 0)
END
)
) / (CASE ISNULL(po_ex.cbdefine27, 0)
WHEN 0 THEN
po_p.iUnitPrice
ELSE
ISNULL(po_ex.cbdefine27, 0)
END
)
) * 100
),
4
)
FROM PO_Podetails_extradefine po_ex,
dbo.PO_Podetails po_p
WHERE po_ex.ID = @ID
AND po_p.ID = @ID
AND ISNULL(po_p.iUnitPrice, 0) <> 0;