0
我有貨在手在PO301000屏幕:如何處理質量手(自定義列)底座上的計量單位列PO 301000屏幕
這裏是我已存檔的
public class POLine_Extension : PXCacheExtension<POLine> {
[PXDecimal]
[PXUIField(DisplayName = "Qty On Hand", Enabled = false)]
[PXDBScalar(typeof(
Search<INSiteStatus.qtyOnHand,
Where<INSiteStatus.inventoryID, Equal<POLine.inventoryID>,
And<INSiteStatus.siteID, Equal<POLine.siteID>>>>))]
public virtual decimal? QtyOnHand { get; set; }
public abstract class qtyOnHand : IBqlField {}
}
public virtual void POLine_InventoryID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
{
UpdateQtyAvailable(sender, e);
}
public virtual void POLine_SiteID_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
{
UpdateQtyAvailable(sender, e);
}
public virtual void POLine_UOM_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
{
UpdateQtyAvailable(sender, e);
}
private void UpdateQtyAvailable(PXCache sender, PXFieldUpdatedEventArgs e)
{
if (e.Row == null) return;
POLine row = (POLine)e.Row;
foreach (INSiteStatus siteStatus in PXSelect<INSiteStatus,
Where<INSiteStatus.inventoryID, Equal<Required<INSiteStatus.inventoryID>>,
And<INSiteStatus.siteID, Equal<Required<INSiteStatus.siteID>>>>>.Select(sender.Graph, row.InventoryID, row.SiteID, row.UOM))
{
sender.SetValueExt<POLine_Extension.qtyOnHand>(row, siteStatus.QtyOnHand);
}
}
代碼
當我添加新的項目,並選擇通過轉換因子(數量手/轉換系數(轉換系數的值在PO細節電網計量單位列我想要的數量在手列的值劃分後Distribution => Stock Item => Stetti將軍納克=>度量單位=>網格)
例如,如果UOM值爲CASE12(具有轉換因子= 12)的意思是我的質量列的值已經通過12.否則來劃分,該值請勿更改
它的工作,但有一個問題。當數據庫中的項目質量發生變化時,我會在舊PO中看到我手中的定製質量已更新,但未由UOM列進行分割。例如,在將UOM從瓶子更改爲case12後的pictuce PO 000008中,手上的列從85更改爲85/12,但是當我釋放收據時,現有值從85更改爲90,我回到此000008 PO ,手上的列顯示爲90,而UOM列仍然是CASE12。這是非理性的,我希望它是90/12。請幫助我,謝謝你! –
您需要爲未綁定的字段使用字段選擇。您無法使用更新的事件,因爲採購訂單不會更新庫存量的變化。您的未綁定字段將設置在頁面刷新字段中選擇 – Brendan
您是否可以爲我特定請我是新手。我需要你更新你的答案和我需要一步一步編寫的所有代碼(刪除我的舊代碼完全沒問題)。我發現這個問題仍然與標題爲「基於UOM的流程數量」有關,所以我認爲開始一個新問題並不是一個好理想(如果我這樣做,它會長久,我不知道如何去做開始)我需要你的幫助我被卡住了 –