错误:参考Nbr。在系统中找不到..“}

时间:2016-02-12 09:30:28

标签: acumatica

我自定义了ARPaymentEntry,在其中创建了一个带有创建的贷记凭证的日记帐凭证条目,它检索贷记凭证应用了当前付款中也应用的未结发票。当我创建实例来调用Credit Memo并在ARAdjust表中添加Invoice时,在尝试插入它时会发生错误,在系统中找不到Reference Nbr,尽管当我尝试手动应用它时我可以见开盘发票。

    public void ReleaseCreditMemo(string refNbr)
    {
        try
        {
            ARPaymentEntry docGraph = PXGraph.CreateInstance<ARPaymentEntry>();
            List<ARRegister> list = new List<ARRegister>();
            ARPayment payment;

            ARRegister invoice = PXSelect<ARRegister, Where<ARRegister.docType, Equal<Required<ARRegister.docType>>, And<ARRegister.refNbr, Equal<Required<ARRegister.refNbr>>>>>.Select(docGraph, ARInvoiceType.CreditMemo, refNbr);

            docGraph.Document.Current = PXSelect<ARPayment, Where<ARPayment.docType, Equal<Required<ARPayment.docType>>, And<ARPayment.refNbr, Equal<Required<ARPayment.refNbr>>>>>.Select(docGraph, ARInvoiceType.CreditMemo, refNbr);

            payment = docGraph.Document.Current;

            list.Add(payment);

            foreach (ISARWhTax item in ARWhLine.Select())
            {
                decimal? _CuryAdjgAmt = payment.CuryOrigDocAmt > invoice.CuryDocBal ? invoice.CuryDocBal : payment.CuryOrigDocAmt;
                decimal? _CuryAdjgDiscAmt = payment.CuryOrigDocAmt > invoice.CuryDocBal ? 0m : invoice.CuryDiscBal;
                ARAdjust adj = new ARAdjust();
                adj.AdjdBranchID = item.AdjdBranchID;
                adj.AdjdDocType = ARInvoiceType.Invoice;
                adj.AdjdRefNbr = item.AdjdRefNbr;
                adj.AdjdCustomerID = item.CustomerID;
                adj.AdjdDocDate = invoice.DocDate;
                adj.CuryAdjgAmt = _CuryAdjgAmt;
                adj.CuryAdjdDiscAmt = _CuryAdjgDiscAmt;

                if (docGraph.Document.Current.CuryUnappliedBal == 0m && docGraph.Document.Current.CuryOrigDocAmt > 0m)
                {
                    throw new PXLoadInvoiceException();
                }
                //This line code below OCCURS THE ERROR
                docGraph.Adjustments.Insert(adj);
            }
            docGraph.Save.Press();
            PXLongOperation.StartOperation(docGraph, delegate() { ARDocumentRelease.ReleaseDoc(list, false); });
        }
        catch (Exception ex)
        {
            throw new PXException(ex.Message);
        }
    }

2 个答案:

答案 0 :(得分:1)

我会查看导致错误的字段的选择器(&#34;参考Nbr。&#34;),因为在字段上有一个选择器将验证输入的值到选择器的select语句(除非选择器的validatevalue = false。也许选择器会给你一些关于缺少什么或导致验证失败的指示。

答案 1 :(得分:0)

我认为在下面的代码执行后它不会立即更新View。所以我做的是如果文档被释放,用条件语句在ARPayment_RowSelected事件中执行我的代码。

var indexArray = NSMutableArray()