protected virtual void InsertUpdatePOAdjust(APAdjust apadjust) { if (Base.Document.Current?.DocType.IsNotIn(APDocType.Prepayment, APDocType.VoidCheck) == true || apadjust?.AdjdDocType != APDocType.Prepayment) { return; } var prepaymentRequests = new PXSelectJoin <POOrderPrepayment, InnerJoin <POOrder, On <POOrderPrepayment.orderType, Equal <POOrder.orderType>, And <POOrderPrepayment.orderNbr, Equal <POOrder.orderNbr> > > >, Where <POOrderPrepayment.aPDocType, Equal <Required <APAdjust.adjdDocType> >, And <POOrderPrepayment.aPRefNbr, Equal <Required <APAdjust.adjdRefNbr> >, And <POOrderPrepayment.aPDocType, Equal <APDocType.prepayment> > > > >(Base) .Select(apadjust.AdjdDocType, apadjust.AdjdRefNbr); foreach (PXResult <POOrderPrepayment, POOrder> row in prepaymentRequests) { POOrder order = row; POOrderPrepayment prepaymentRequest = row; POAdjust poadjustment = new PXSelect <POAdjust, Where <POAdjust.adjgDocType, Equal <Current <APPayment.docType> >, And <POAdjust.adjgRefNbr, Equal <Current <APPayment.refNbr> >, And <POAdjust.adjNbr, Equal <Current <APPayment.adjCntr> >, And <POAdjust.adjdDocType, Equal <Required <APInvoice.docType> >, And <POAdjust.adjdRefNbr, Equal <Required <APInvoice.refNbr> > > > > > > >(Base) .Select(apadjust.AdjdDocType, apadjust.AdjdRefNbr); if (poadjustment == null) { poadjustment = POAdjustments.Insert(new POAdjust() { AdjgDocType = Base.Document.Current.DocType, AdjgRefNbr = Base.Document.Current.RefNbr, AdjdOrderType = prepaymentRequest.OrderType, AdjdOrderNbr = prepaymentRequest.OrderNbr, AdjdDocType = apadjust.AdjdDocType, AdjdRefNbr = apadjust.AdjdRefNbr, AdjNbr = Base.Document.Current.AdjCntr, IsRequest = true, }); } if (order.CuryID == Base.Document.Current.CuryID) { POAdjustments.Cache.SetValueExt <POAdjust.curyAdjgAmt>(poadjustment, apadjust.CuryAdjgAmt); } else { PXCurrencyAttribute.CuryConvCury(Base.Document.Cache, Base.Document.Current, apadjust.AdjAmt ?? 0, out decimal curyamount); POAdjustments.Cache.SetValueExt <POAdjust.curyAdjgAmt>(poadjustment, curyamount); } POAdjustments.Update(poadjustment); } }
public virtual void VoidPrepayment(APRegister doc, Action <APRegister> baseMethod) { foreach (PXResult <APTran, POLine> poLineRes in Base.TransactionsPOLine.Select()) { POLine line = poLineRes; if (line?.OrderNbr == null) { continue; } POLine updLine = PXCache <POLine> .CreateCopy(line); APTran tran = poLineRes; updLine.ReqPrepaidQty -= tran.Qty; updLine.CuryReqPrepaidAmt -= tran.CuryTranAmt + tran.CuryRetainageAmt; updLine = this.POLines.Update(updLine); } POOrderPrepayment prepay = PrepaidOrders.Select(); if (prepay != null) { POOrderPrepayment updPrepay = PXCache <POOrderPrepayment> .CreateCopy(prepay); updPrepay.CuryAppliedAmt -= doc.CuryOrigDocAmt; updPrepay = this.PrepaidOrders.Update(updPrepay); POOrder order = POOrders.Select(prepay.OrderType, prepay.OrderNbr); POOrder updOrder = PXCache <POOrder> .CreateCopy(order); updOrder.CuryPrepaidTotal -= doc.CuryDocBal; updOrder = this.POOrders.Update(updOrder); } baseMethod(doc); }