ユーザーが出荷注文を送信すると、「アップロードIN」というアクションを呼び出す必要があります。私はすでに注文を自動的に確認しています。出荷確認後、プログラムでUpdate INを呼び出すにはどうすればよいですか?
public delegate void CreateShipmentDelegate(SOOrder order, int? SiteID, DateTime? ShipDate, bool? useOptimalShipDate, string operation, DocumentList<SOShipment> list);
[PXOverride]
public virtual void CreateShipment(SOOrder order, int? SiteID, DateTime? ShipDate, bool? useOptimalShipDate, string operation, DocumentList<SOShipment> list, CreateShipmentDelegate baseMethod)
{
baseMethod(order, SiteID, ShipDate, useOptimalShipDate, operation, list);
foreach (var action in (Base.action.GetState(null) as PXButtonState).Menus)
{
if (action.Command == "Confirm Shipment")
{
PXAdapter adapter2 = new PXAdapter(new DummyView(Base, Base.Document.View.BqlSelect, new List<object> { Base.Document.Current }));
adapter2.Menu = action.Command;
Base.action.PressButton(adapter2);
TimeSpan timespan;
Exception ex;
while (PXLongOperation.GetStatus(Base.UID, out timespan, out ex) == PXLongRunStatus.InProcess)
{ }
break;
}
}
}
私は、foreachループを複製しようとしたが、代わりに「アップロードIN」を探してそれが希望の結果が得られませんでした:ここで別の質問の答えをベースにしています私のコード(Auto confirm shipment when create shipment from Sales Order by Automation Step)がある
foreach (var action in (Base.action.GetState(null) as PXButtonState).Menus)
{
if (action.Command == "Update IN")
{
PXAdapter adapter3 = new PXAdapter(new DummyView(Base, Base.Document.View.BqlSelect, new List<object> { Base.Document.Current }));
adapter3.Menu = action.Command;
Base.action.PressButton(adapter3);
TimeSpan timespan;
Exception ex;
while (PXLongOperation.GetStatus(Base.UID, out timespan, out ex) == PXLongRunStatus.InProcess)
{ }
break;
}
}
Actionを一般的に呼び出す方法はありますか?
私はこの特定の動作に気づいたことの1つは、バージョン6のインスタンスのソースでそのコードを見つけることができないということです。しかし、バージョン2017では、それを独自のアクションとしてVisibility = falseで見つけました。このアクションは2017年に廃止されましたか、または設定でこのアクションを表示/非表示する設定がありますか?
私はアクションが自動化ステップ(v6.x)からv2017の実際のソースコードに移動されたと考えています。その移動中に、フィールド修飾子が保護されているかプライベートになっているため、グラフや何かをその行に沿って拡張すると消えます。新しい2017バージョンにアップグレードするまで、グラフ拡張にそのアクションハンドラを追加することをお勧めします。 –