Exemple #1
0
        public override void Add(ARInvoice item0, SOInvoice item1, CurrencyInfo curyInfo)
        {
            base.Add(item0, item1, curyInfo);
            List <int> indexes;

            if (!typedInvoices.TryGetValue(item0.DocType, out indexes))
            {
                typedInvoices.Add(item0.DocType, indexes = new List <int>());
            }
            indexes.Add(Count - 1);
        }
        public virtual IEnumerable soInvoiceList()
        {
            if (Filter.Current.Action == "<SELECT>")
            {
                yield break;
            }

            SOInvoiceFilter filter = Filter.Current;


            string actionID = (string)SOInvoiceList.GetTargetFill(null, null, null, Filter.Current.Action, "@ActionName");

            if (_ActionChanged)
            {
                SOInvoiceList.Cache.Clear();
            }

            foreach (ARInvoice item in SOInvoiceList.Cache.Updated)
            {
                yield return(item);
            }

            PXSelectBase <ARInvoice> cmd;

            switch (actionID)
            {
            case "Release":
                cmd = new PXSelectJoin <ARInvoice,
                                        InnerJoin <SOInvoice, On <SOInvoice.docType, Equal <ARInvoice.docType>, And <SOInvoice.refNbr, Equal <ARInvoice.refNbr> > > >,
                                        Where <ARInvoice.hold, Equal <boolFalse>, And <ARInvoice.released, Equal <boolFalse> > > >(this);
                break;

            case "Post":
                cmd = new PXSelectJoinGroupBy <ARInvoice,
                                               InnerJoin <SOInvoice, On <SOInvoice.docType, Equal <ARInvoice.docType>, And <SOInvoice.refNbr, Equal <ARInvoice.refNbr> > >,
                                                          InnerJoin <SOOrderShipment, On <SOOrderShipment.invoiceType, Equal <ARInvoice.docType>, And <SOOrderShipment.invoiceNbr, Equal <ARInvoice.refNbr> > >,
                                                                     InnerJoin <SOOrderType, On <SOOrderType.orderType, Equal <SOOrderShipment.orderType> >,
                                                                                InnerJoin <ARTran, On <ARTran.tranType, Equal <ARInvoice.docType>, And <ARTran.refNbr, Equal <ARInvoice.refNbr> > >,
                                                                                           LeftJoin <INTran, On <INTran.aRDocType, Equal <ARTran.tranType>, And <INTran.aRRefNbr, Equal <ARTran.refNbr>, And <INTran.aRLineNbr, Equal <ARTran.lineNbr> > > > > > > > >,
                                               Where <ARInvoice.released, Equal <boolTrue>, And <SOOrderType.iNDocType, NotEqual <INTranType.noUpdate>, And <SOOrderShipment.invtRefNbr, IsNull, And <ARTran.lineType, Equal <SOLineType.inventory>, And <INTran.refNbr, IsNull> > > > >,
                                               Aggregate <
                                                   GroupBy <ARInvoice.docType,
                                                            GroupBy <ARInvoice.refNbr,
                                                                     GroupBy <ARInvoice.released> > > > >(this);
                break;

            case "CaptureCCPayment":
                cmd = new PXSelectJoin <ARInvoice,
                                        InnerJoin <SOInvoice, On <SOInvoice.docType, Equal <ARInvoice.docType>, And <SOInvoice.refNbr, Equal <ARInvoice.refNbr> > >,
                                                   InnerJoin <CustomerPaymentMethod, On <CustomerPaymentMethod.pMInstanceID, Equal <SOInvoice.pMInstanceID> >,
                                                              InnerJoin <PaymentMethod, On <PaymentMethod.paymentMethodID, Equal <CustomerPaymentMethod.paymentMethodID>,
                                                                                            And <PaymentMethod.paymentType, Equal <PaymentMethodType.creditCard>,
                                                                                                 And <PaymentMethod.aRIsProcessingRequired, Equal <True> > > > > > >,
                                        Where <SOInvoice.isCCCaptureFailed, Equal <Current <SOInvoiceFilter.showFailedCCCapture> > > >(this);
                break;

            case "CreditHold":
                cmd = new PXSelectJoin <ARInvoice,
                                        InnerJoin <SOInvoice, On <SOInvoice.docType, Equal <ARInvoice.docType>, And <SOInvoice.refNbr, Equal <ARInvoice.refNbr> > >,
                                                   LeftJoin <CustomerPaymentMethod, On <CustomerPaymentMethod.pMInstanceID, Equal <SOInvoice.pMInstanceID> >,
                                                             LeftJoin <PaymentMethod, On <PaymentMethod.paymentMethodID, Equal <CustomerPaymentMethod.paymentMethodID>,
                                                                                          And <PaymentMethod.paymentType, Equal <PaymentMethodType.creditCard>,
                                                                                               And <PaymentMethod.aRIsProcessingRequired, Equal <True> > > > > > >,
                                        Where <PaymentMethod.paymentMethodID, IsNull> >(this);
                break;

            default:
                cmd = new PXSelectJoin <ARInvoice,
                                        InnerJoin <SOInvoice, On <SOInvoice.docType, Equal <ARInvoice.docType>, And <SOInvoice.refNbr, Equal <ARInvoice.refNbr> > > > >(this);
                break;
            }

            cmd.WhereAnd <Where <ARInvoice.docDate, LessEqual <Current <SOInvoiceFilter.endDate> > > >();

            if (filter.StartDate != null)
            {
                cmd.WhereAnd <Where <ARInvoice.docDate, GreaterEqual <Current <SOInvoiceFilter.startDate> > > >();
            }

            if (filter.CustomerID != null)
            {
                cmd.WhereAnd <Where <ARInvoice.customerID, Equal <Current <SOInvoiceFilter.customerID> > > >();
            }

            int startRow  = PXView.StartRow;
            int totalRows = 0;

            foreach (PXResult <ARInvoice, SOInvoice> res in cmd.View.Select(PXView.Currents, null, PXView.Searches, PXView.SortColumns, PXView.Descendings, PXView.Filters, ref startRow, PXView.MaximumRows, ref totalRows))
            {
                ARInvoice item = res;
                SOInvoice ext  = res;

                object paymentmethod;
                if ((paymentmethod = res[typeof(PaymentMethod)]) != null)
                {
                    item.IsCCPayment = ((PaymentMethod)paymentmethod).ARIsProcessingRequired != null;
                }
                else
                {
                    item.IsCCPayment = false;
                }

                if ((item = (ARInvoice)SOInvoiceList.Cache.Locate(item)) == null || SOInvoiceList.Cache.GetStatus(item) == PXEntryStatus.Notchanged)
                {
                    yield return((ARInvoice)res);
                }

                PXView.StartRow = 0;
            }
        }
        public virtual void UpdateDocState(SOInvoice doc, PX.CCProcessing.CCTranType lastOperation)
        {
            this.Document.Current = Document.Search<ARInvoice.refNbr>(doc.RefNbr, doc.DocType);

            bool needUpdate = CCPaymentEntry.UpdateCapturedState<SOInvoice>(doc, this.ccProcTran.Select());

            if (needUpdate)
            {
                //doc.PreAuthTranNumber = null;
                doc = this.SODocument.Update(doc);
                Document.Search<ARInvoice.refNbr>(doc.RefNbr, doc.DocType);
				if (doc.IsCCCaptured == true) 
				{
					foreach (CCProcTran tran in this.ccProcTran.Select()) 
					{
						if (String.IsNullOrEmpty(tran.RefNbr) || String.IsNullOrEmpty(tran.DocType)) 
						{
							tran.DocType = doc.DocType;
							tran.RefNbr = doc.RefNbr;
							this.ccProcTran.Update(tran);
						}
					}
				}
                this.Save.Press();
            }
        }