Exemple #1
0
        protected virtual void RowSelected(Events.RowSelected <PaymentTransactionDetail> e)
        {
            e.Cache.AllowInsert = false;
            e.Cache.AllowUpdate = false;
            e.Cache.AllowDelete = false;
            PaymentTransactionDetail row = e?.Row;

            if (row != null)
            {
                IEnumerable <ICCPaymentTransaction> storedTrans = GetProcTrans();
                if (e.Row.TranStatus == CCTranStatusCode.HeldForReview)
                {
                    ICCPaymentTransaction searchTran = CCProcTranHelper.FindOpenForReviewTran(storedTrans);
                    if (searchTran != null && searchTran.TranNbr == row.TranNbr)
                    {
                        PaymentTransaction.Cache.RaiseExceptionHandling <CCProcTran.tranNbr>(row, row.TranNbr,
                                                                                             new PXSetPropertyException(TranHeldwarnMsg, PXErrorLevel.RowWarning));
                    }
                }
                IEnumerable <ICCPaymentTransaction> activeAuthCapture = CCProcTranHelper.FindAuthCaptureActiveTrans(storedTrans);
                if (activeAuthCapture.Count() > 1 && activeAuthCapture.Where(i => i.TranNbr == row.TranNbr).Any())
                {
                    PaymentTransaction.Cache.RaiseExceptionHandling <CCProcTran.tranNbr>(row, row.TranNbr,
                                                                                         new PXSetPropertyException(AR.Messages.CCProcessingARPaymentMultipleActiveTranWarning, PXErrorLevel.RowWarning));
                }
            }
        }
Exemple #2
0
        private static ICCPaymentTransaction LastSuccessfulCCProcTranTran(int?extTranId, CCProcTranRepository repo)
        {
            var procTrans = repo.GetCCProcTranByTranID(extTranId).Cast <ICCPaymentTransaction>();
            ICCPaymentTransaction paymentTran = CCProcTranHelper.FindCCLastSuccessfulTran(procTrans);

            return(paymentTran);
        }
Exemple #3
0
        public static ICCPaymentTransaction FindOpenForReviewTran(IEnumerable <ICCPaymentTransaction> ccProcTran)
        {
            IEnumerable <ICCPaymentTransaction> filtered = FilterDeclinedTrans(ccProcTran);
            ICCPaymentTransaction openTran = filtered.Where(i => i.TranStatus == CCTranStatusCode.HeldForReview)
                                             .Where(i => !ccProcTran.Where(ii => ii.PCTranNumber == i.PCTranNumber && ii.TranNbr != i.TranNbr).Any())
                                             .FirstOrDefault();

            return(openTran);
        }
Exemple #4
0
        public static void FormatDescription(CCProcTranRepository repo, ExternalTransactionState extTranState)
        {
            string descr                 = null;
            string currStatus            = null;
            string prevStatus            = null;
            IExternalTransaction extTran = extTranState.ExternalTransaction;

            if (extTran == null)
            {
                return;
            }
            ExtTransactionProcStatusCode.ListAttribute attr = new ExtTransactionProcStatusCode.ListAttribute();
            string procStatusStr = ExtTransactionProcStatusCode.GetProcStatusStrByProcessingStatus(extTranState.ProcessingStatus);

            if (!string.IsNullOrEmpty(procStatusStr))
            {
                currStatus = PXMessages.LocalizeNoPrefix(attr.ValueLabelDic[procStatusStr]);
            }
            bool needPrevStatus = extTranState.HasErrors;

            if (!string.IsNullOrEmpty(currStatus) && needPrevStatus)
            {
                ICCPaymentTransaction procTran = LastSuccessfulCCProcTranTran(extTranState.ExternalTransaction.TransactionID, repo);
                if (procTran != null)
                {
                    prevStatus = GetStatusByTranType(procTran.TranType);
                }
            }
            if (!string.IsNullOrEmpty(currStatus) && !string.IsNullOrEmpty(prevStatus))
            {
                descr = prevStatus + ", " + currStatus;
            }
            else if (!string.IsNullOrEmpty(currStatus))
            {
                descr = currStatus;
            }
            else
            {
                descr = string.Empty;
            }
            extTranState.Description = descr;
        }
Exemple #5
0
        private static void ApplyLastSuccessfulTran(CCProcTranRepository repo, ExternalTransactionState state)
        {
            ICCPaymentTransaction paymentTran = LastSuccessfulCCProcTranTran(state.ExternalTransaction.TransactionID, repo);

            if (paymentTran != null)
            {
                switch (paymentTran.TranType)
                {
                case CCTranTypeCode.Authorize: state.IsPreAuthorized = true; break;

                case CCTranTypeCode.AuthorizeAndCapture:
                case CCTranTypeCode.PriorAuthorizedCapture:
                case CCTranTypeCode.CaptureOnly: state.IsCaptured = true; break;

                case CCTranTypeCode.Credit: state.IsRefunded = true; break;
                }
                state.IsOpenForReview = paymentTran.TranStatus == CCTranStatusCode.HeldForReview;
                CheckAuthExpired(state);
            }
        }
Exemple #6
0
        public static ICCPaymentTransaction FindCCLastSuccessfulTran(IEnumerable <ICCPaymentTransaction> ccProcTran)
        {
            IEnumerable <ICCPaymentTransaction> filtered = FilterDeclinedTrans(ccProcTran);
            ICCPaymentTransaction   lastTran             = null;
            CCProcTranOrderComparer ascComparer          = new CCProcTranOrderComparer();

            foreach (ICCPaymentTransaction iTran in filtered)
            {
                if (iTran.ProcStatus != CCProcStatus.Finalized)
                {
                    continue;
                }
                if (iTran.TranStatus == CCTranStatusCode.Approved || iTran.TranStatus == CCTranStatusCode.HeldForReview)
                {
                    if (lastTran == null || (ascComparer.Compare(iTran, lastTran) > 0))
                    {
                        lastTran = iTran;
                    }
                }
            }
            return(lastTran);
        }
Exemple #7
0
 public static bool IsExpired(ICCPaymentTransaction tran)
 {
     return((tran.ExpirationDate.HasValue && tran.ExpirationDate.Value < PXTimeZoneInfo.Now) || tran.TranStatus == CCTranStatusCode.Expired);
 }
Exemple #8
0
            public virtual int Compare(ICCPaymentTransaction pt1, ICCPaymentTransaction pt2)
            {
                int order = pt1.TranNbr.Value.CompareTo(pt2.TranNbr.Value);

                return(this._descending ? -order : order);
            }