使用图形添加和释放 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();
    }