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)); } } }
private static ICCPaymentTransaction LastSuccessfulCCProcTranTran(int?extTranId, CCProcTranRepository repo) { var procTrans = repo.GetCCProcTranByTranID(extTranId).Cast <ICCPaymentTransaction>(); ICCPaymentTransaction paymentTran = CCProcTranHelper.FindCCLastSuccessfulTran(procTrans); return(paymentTran); }
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); }
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; }
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); } }
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); }
public static bool IsExpired(ICCPaymentTransaction tran) { return((tran.ExpirationDate.HasValue && tran.ExpirationDate.Value < PXTimeZoneInfo.Now) || tran.TranStatus == CCTranStatusCode.Expired); }
public virtual int Compare(ICCPaymentTransaction pt1, ICCPaymentTransaction pt2) { int order = pt1.TranNbr.Value.CompareTo(pt2.TranNbr.Value); return(this._descending ? -order : order); }