2016-02-12 89 views
1

我自定義了ARPaymentEntry,它創建了一個帶創建貸項憑證的日記憑證輸入,它檢索貸項憑證申請在當前付款中也應用的未清發票。要調用貸項憑證並在ARAdjust表中添加發票的實例,嘗試插入它時發生錯誤,但在系統中找不到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); 
     } 
    } 

回答

0

我覺得在下面的代碼執行後,它不會立即更新視圖。所以我所做的就是在發佈文檔時使用條件語句在ARPayment_RowSelected事件中執行我的代碼。

PXLongOperation.StartOperation(this.Base, delegate() { ARDocumentRelease.ReleaseDoc(list, false); }); 
1

我想看看在外地的選擇導致錯誤(「參考樹木包。」)作爲一個字段有選擇將所輸入的值進行驗證,以選擇的select語句(除非validatevalue = FALSE爲選擇器)。也許t他選擇器會給你一些指示,指出缺少什麼或導致驗證失敗。