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)); } } }
public virtual void SyncPaymentTransactionById(TPrimary doc, IEnumerable <string> tranIds) { if (!IsFeatureSupported(SelectedProcessingCenter, CCProcessingFeature.PaymentHostedForm)) { return; } ICCPayment pDoc = GetPaymentDoc(doc); using (PXTransactionScope scope = new PXTransactionScope()) { foreach (string tranId in tranIds) { IEnumerable <PaymentTransactionDetail> existsTran = base.PaymentTransaction.Select().RowCast <PaymentTransactionDetail>(); PaymentTransactionDetail storedTran = existsTran.FirstOrDefault(i => i.PCTranNumber == tranId); if (storedTran != null && storedTran.TranStatus == CCTranStatusCode.Approved) { continue; } var tranData = GetTranData(tranId); if (storedTran != null && CCTranStatusCode.GetCode(V2Converter.ConvertTranStatus(tranData.TranStatus)) == storedTran.TranStatus) { continue; } if (tranData?.CustomerId != null && !SuitableCustomerProfileId(tranData?.CustomerId)) { continue; } try { PXTrace.WriteInformation($"Synchronize tran. TranId = {tranData.TranID}, TranType = {tranData.TranType}, DocNum = {tranData.DocNum}, " + $"SubmitTime = {tranData.SubmitTime}, Amount = {tranData.Amount}, PCCustomerID = {tranData.CustomerId}, PCCustomerPaymentID = {tranData.PaymentId}"); } catch (Exception ex) { var v = ex; } V2.CCTranType tranType = tranData.TranType.Value; if (tranType == V2.CCTranType.Void) { RemoveSyncLock(doc); RecordVoid(pDoc, tranData); } if (tranType == V2.CCTranType.AuthorizeOnly) { if (tranData.TranStatus == V2.CCTranStatus.Approved) { GetOrCreatePaymentProfilrByTran(tranData, pDoc); } RemoveSyncLock(doc); RecordAuth(pDoc, tranData); } if (tranType == V2.CCTranType.AuthorizeAndCapture) { if (tranData.TranStatus == V2.CCTranStatus.Approved) { GetOrCreatePaymentProfilrByTran(tranData, pDoc); } RemoveSyncLock(doc); RecordCapture(pDoc, tranData); } if (tranType == V2.CCTranType.CaptureOnly) { if (tranData.TranStatus == V2.CCTranStatus.Approved) { GetOrCreatePaymentProfilrByTran(tranData, pDoc); } RemoveSyncLock(doc); RecordCapture(pDoc, tranData); } scope.Complete(); } } }