使用图形添加和释放 IN 收据
Using Graph To Add and Release IN Receipts
我创建了一个新的 screen/page,它具有创建和释放连续跟踪项目的 IN 收据的操作。我的操作似乎创建了文档和详细信息,包括串行规范。
我现在遇到的问题是,当我尝试使用 release.press 释放收据时,它会抱怨状态不正确,无法释放。我添加了代码以将 Hold 设置为 false,但它仍然失败。不确定我是否需要做任何其他事情 - 我期待它会像您取消选中 Hold 复选框时一样。
我想确定这是在系统中创建和发布文档的推荐方式。我也不确定是否有办法检查暂停或部分发布的结果。
这是我图表上的操作代码:
public PXAction<usrEdition> AddItems;
[PXUIField(DisplayName = "Add Items")]
[PXButton(CommitChanges = true)]
protected void addItems()
{
String mySer = "";
INReceiptEntry myRcptEntry = INReceiptEntry.CreateInstance<INReceiptEntry>();
INRegister myINReg = new INRegister();
myINReg.TranDesc = "Edition Creation";
myINReg.DocType = "R";
myINReg.ControlQty = this.Edition.Current.Limit;
myINReg.ControlCost = 0;
myINReg.ControlAmount = 0;
myRcptEntry.receipt.Insert(myINReg);
//Add 1 detail line
INTran myINTran = new INTran();
myINTran.SiteID = 5;
myINTran.InventoryID = this.Edition.Current.InventoryID;
myINTran.UOM = "PIECE";
myINTran.Qty = this.Edition.Current.Limit;
myINTran.TranAmt = 0;
myINTran.TranDesc = "Edition Creation";
myINTran.RefNbr = myRcptEntry.receipt.Current.RefNbr;
myINTran.DocType = "R";
myINTran.InvtMult = 1;
myINTran.UnitCost = 0;
myRcptEntry.transactions.Insert(myINTran);
for (int i = 1; i <= this.Edition.Current.Limit; i++)
{
mySer = this.Edition.Current.EditionType.ToString() + i.ToString().PadLeft(4, '0');
INTranSplit mySplit = new INTranSplit();
mySplit.InventoryID = this.Edition.Current.InventoryID;
mySplit.LotSerialNbr = mySer;
mySplit.Qty = 1;
mySplit.RefNbr = myRcptEntry.receipt.Current.RefNbr;
mySplit.DocType = "R";
mySplit.SiteID = 5;
mySplit.InvtMult = 1;
mySplit.UOM = "PIECE";
myRcptEntry.splits.Insert(mySplit);
}
myINReg.Hold = false;
myRcptEntry.Save.Press();
myRcptEntry.release.Press();
}
#endregion
您将 Hold 设置为 false 但不更新图表内的记录。这解释了为什么当您尝试发布时系统会抱怨状态。此外,您应该检索 Insert() 调用的结果并使用返回的更新版本来更新它。最后,我认为您不需要设置 DocType - 它会为您默认设置。
更新的代码示例:
public PXAction<SOOrder> AddItems;
[PXUIField(DisplayName = "Add Items")]
[PXButton(CommitChanges = true)]
protected void addItems()
{
INReceiptEntry myRcptEntry = INReceiptEntry.CreateInstance<INReceiptEntry>();
INRegister myINReg = new INRegister();
myINReg.TranDesc = "Sample Inventory Receipt";
myINReg = myRcptEntry.receipt.Insert(myINReg);
//TODO: Add your detail lines here
myINReg.Hold = false;
myINReg = myRcptEntry.receipt.Update(myINReg);
myRcptEntry.Save.Press();
myRcptEntry.release.Press();
}
我创建了一个新的 screen/page,它具有创建和释放连续跟踪项目的 IN 收据的操作。我的操作似乎创建了文档和详细信息,包括串行规范。
我现在遇到的问题是,当我尝试使用 release.press 释放收据时,它会抱怨状态不正确,无法释放。我添加了代码以将 Hold 设置为 false,但它仍然失败。不确定我是否需要做任何其他事情 - 我期待它会像您取消选中 Hold 复选框时一样。
我想确定这是在系统中创建和发布文档的推荐方式。我也不确定是否有办法检查暂停或部分发布的结果。
这是我图表上的操作代码:
public PXAction<usrEdition> AddItems;
[PXUIField(DisplayName = "Add Items")]
[PXButton(CommitChanges = true)]
protected void addItems()
{
String mySer = "";
INReceiptEntry myRcptEntry = INReceiptEntry.CreateInstance<INReceiptEntry>();
INRegister myINReg = new INRegister();
myINReg.TranDesc = "Edition Creation";
myINReg.DocType = "R";
myINReg.ControlQty = this.Edition.Current.Limit;
myINReg.ControlCost = 0;
myINReg.ControlAmount = 0;
myRcptEntry.receipt.Insert(myINReg);
//Add 1 detail line
INTran myINTran = new INTran();
myINTran.SiteID = 5;
myINTran.InventoryID = this.Edition.Current.InventoryID;
myINTran.UOM = "PIECE";
myINTran.Qty = this.Edition.Current.Limit;
myINTran.TranAmt = 0;
myINTran.TranDesc = "Edition Creation";
myINTran.RefNbr = myRcptEntry.receipt.Current.RefNbr;
myINTran.DocType = "R";
myINTran.InvtMult = 1;
myINTran.UnitCost = 0;
myRcptEntry.transactions.Insert(myINTran);
for (int i = 1; i <= this.Edition.Current.Limit; i++)
{
mySer = this.Edition.Current.EditionType.ToString() + i.ToString().PadLeft(4, '0');
INTranSplit mySplit = new INTranSplit();
mySplit.InventoryID = this.Edition.Current.InventoryID;
mySplit.LotSerialNbr = mySer;
mySplit.Qty = 1;
mySplit.RefNbr = myRcptEntry.receipt.Current.RefNbr;
mySplit.DocType = "R";
mySplit.SiteID = 5;
mySplit.InvtMult = 1;
mySplit.UOM = "PIECE";
myRcptEntry.splits.Insert(mySplit);
}
myINReg.Hold = false;
myRcptEntry.Save.Press();
myRcptEntry.release.Press();
}
#endregion
您将 Hold 设置为 false 但不更新图表内的记录。这解释了为什么当您尝试发布时系统会抱怨状态。此外,您应该检索 Insert() 调用的结果并使用返回的更新版本来更新它。最后,我认为您不需要设置 DocType - 它会为您默认设置。
更新的代码示例:
public PXAction<SOOrder> AddItems;
[PXUIField(DisplayName = "Add Items")]
[PXButton(CommitChanges = true)]
protected void addItems()
{
INReceiptEntry myRcptEntry = INReceiptEntry.CreateInstance<INReceiptEntry>();
INRegister myINReg = new INRegister();
myINReg.TranDesc = "Sample Inventory Receipt";
myINReg = myRcptEntry.receipt.Insert(myINReg);
//TODO: Add your detail lines here
myINReg.Hold = false;
myINReg = myRcptEntry.receipt.Update(myINReg);
myRcptEntry.Save.Press();
myRcptEntry.release.Press();
}