コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }