Acumaticaのカスタマとベンダの部品番号は、[在庫明細]画面の[相互参照]タブに保存されています。下のスクリーンショットに示すように、AlternateIDがINItemXRef DACで宣言さInventoryItemとINItemXRef DAC間の1対多の関係が存在している。
ということで、それが顧客を追加することはできませんし、ベンダーパート在庫列セレクタに列番号を設定すると、重複した在庫アイテムレコードが生成されます。
public class InventoryItemMaint_Extension : PXGraphExtension<InventoryItemMaint>
{
[PXOverride]
public void Persist(Action del)
{
using (PXTransactionScope ts = new PXTransactionScope())
{
InventoryItem item = Base.Item.Current;
if (item != null && Base.itemxrefrecords.Cache.IsDirty)
{
string alternateIDs = string.Empty;
foreach (INItemXRef crossRef in Base.itemxrefrecords.Select())
{
alternateIDs = string.IsNullOrEmpty(alternateIDs) ?
crossRef.AlternateID : alternateIDs + "; " + crossRef.AlternateID;
}
item.GetExtension<InventoryItemExt>().UsrAlternateIDs = alternateIDs;
Base.Item.Update(item);
}
del();
ts.Complete();
}
}
}
:
別の解決策は、InventoryItem DACにカスタムテキストフィールドを作成し、カスタムテキストフィールドに代替IDと店舗結果(DB列)を連結するInventoryItemMaint BLC延長に固執オーバーライドします初期設定を簡素化するため、InventoryItemMaint BLC拡張でRecalcAlternateIDsアクションを実装することもできます。 (定義されたとき、またはSubstituteKey)
が
public class InventoryItemMaint_Extension : PXGraphExtension<InventoryItemMaint>
{
...
public PXAction<InventoryItem> RecalcAlternateIDs;
[PXButton]
[PXUIField(DisplayName = "Concatenate Alternate IDs")]
protected void recalcAlternateIDs()
{
PXLongOperation.StartOperation(Base,() =>
{
InventoryItemMaint itemMaint = PXGraph.CreateInstance<InventoryItemMaint>();
var items = PXSelect<InventoryItem, Where<InventoryItem.stkItem, Equal<boolTrue>>>.Select(itemMaint);
foreach (InventoryItem item in items)
{
itemMaint.Clear();
itemMaint.Item.Current = item;
itemMaint.itemxrefrecords.Cache.IsDirty = true;
itemMaint.Actions.PressSave();
}
});
}
}
デフォルトでは、すべてのセレクタのコントロールがキーに対する検索インデックスを構築し、説明、定義されている場合、フィールド:RecalcAlternateIDsアクションは、ループのすべての株式のアプリケーションの項目とは別のIDを連結しますけれども。このリストを拡張するには、FilterByAllFieldsプロパティをAspxのPXSelector/PXSegmentMaskコントロールのTrueに設定するか、以下の手順に従ってFastFilterFieldsを使用します。私の意見では、FastFilterFieldsはあなたの要求に対処するためのより良い選択肢のようです。
:
次のステップは、InventoryIDセレクタ受注画面用
- 打ち上げレイアウトエディタ(SO301000)にUsrAlternateIDs列を追加し、[アクション]メニューから[Edit ASPXオプションを選択する必要があります
在庫IDセレクタのAspxファイルロケート宣言:
InventoryIDセレクタについては <px:PXSegmentMask CommitChanges=“True" ID="edInventoryID" runat="server" DataField="InventoryID" AllowEdit="True" />
、UsrAlternateIDs列を宣言することで、列を追加し、カスタマイズスクリプトの生成]をクリックします:
<px:PXSegmentMask CommitChanges="True" ID="edInventoryID" runat="server" DataField="InventoryID" AllowEdit="True" >
<GridProperties FastFilterFields="UsrAlternateIDs">
<Columns>
<px:PXGridColumn DataField="UsrAlternateIDs" AutoGenerateOption="Add" Width="250px" />
</Columns>
</GridProperties>
</px:PXSegmentMask>
行う方法、アイテムのための多くの得意先/仕入先の部品番号があることができそれをセレクタに表示する予定ですか? – Hybridzz