Example #1
0
        private static void DoLoadCards(CreditCardsFilter filter)
        {
            CCSynchronizeCards graph = PXGraph.CreateInstance <CCSynchronizeCards>();

            filter.EnableCustomerPaymentDialog = false;
            graph.Filter.Current = filter;

            if (!graph.ValidateLoadCardsAction())
            {
                int newCardsCnt = graph.GetCardsAllProfiles();

                if (newCardsCnt > 0)
                {
                    foreach (CCSynchronizeCard syncCard in graph.CustomerCardPaymentData.Cache.Inserted)
                    {
                        if (syncCard.NoteID.HasValue)
                        {
                            ProcessingInfo.AppendProcessingInfo(syncCard.NoteID.Value, Messages.LoadCardCompleted);
                        }
                    }

                    try
                    {
                        graph.Persist();
                    }
                    catch
                    {
                        ProcessingInfo.ClearProcessingRows();
                        throw;
                    }
                }
            }
        }
Example #2
0
        public CCSynchronizeCards()
        {
            CustomerCardPaymentData.SetBeforeScheduleAddAction(() =>
                                                               Filter.Current.ScheduledServiceSync = true
                                                               );
            CustomerCardPaymentData.SetAfterScheduleAddAction(() =>
                                                              Filter.Current.ScheduledServiceSync = false
                                                              );
            CustomerCardPaymentData.SetBeforeScheduleProcessAllAction(() =>
                                                                      Filter.Current.IsScheduleProcess = true
                                                                      );
            CreditCardsFilter filter = Filter.Current;

            CustomerCardPaymentData.SetProcessDelegate((List <CCSynchronizeCard> items) =>
            {
                if (filter.IsScheduleProcess.GetValueOrDefault() == true &&
                    filter.ScheduledServiceSync.GetValueOrDefault() == true)
                {
                    DoLoadCards(filter);
                }
                else
                {
                    DoImportCards(items);
                }
            });
        }
Example #3
0
        protected virtual IEnumerable loadCards(PXAdapter adapter)
        {
            CreditCardsFilter filter = Filter.Current;

            filter.EnableCustomerPaymentDialog = false;
            CCProcessingHelper.CheckHttpsConnection();

            if (!ValidateLoadCardsAction())
            {
                int rowCnt = CustomerCardPaymentData.Select().Count;

                if (rowCnt == 0 || !adapter.ExternalCall ||
                    Filter.Ask(CA.Messages.RelodCardDataDialogMsg, MessageButtons.YesNo) == WebDialogResult.Yes)
                {
                    PXLongOperation.StartOperation(this, delegate
                    {
                        int newCardsCnt = GetCardsAllProfiles();
                        if (newCardsCnt > 0)
                        {
                            this.Persist();
                        }
                    });
                }
            }
            return(adapter.Get());
        }
Example #4
0
        private int GetCardsAllProfiles()
        {
            CreditCardsFilter                 filter                = Filter.Current;
            string                            processingCenter      = filter.ProcessingCenterId;
            CreditCardReceiverFactory         factory               = new CreditCardReceiverFactory(filter);
            CCSynchronizeCardManager          syncronizeCardManager = new CCSynchronizeCardManager(this, processingCenter, factory);
            Dictionary <string, CustomerData> customerDatas         = syncronizeCardManager.GetCustomerProfilesFromService();

            syncronizeCardManager.SetCustomerProfileIds(customerDatas.Select(i => i.Key));
            Dictionary <string, CustomerCreditCard> unsyncCustomerCreditCards = syncronizeCardManager.GetUnsynchronizedPaymentProfiles();
            int unsyncCardCnt = 0;

            foreach (var item in unsyncCustomerCreditCards)
            {
                List <CCSynchronizeCard> alreadyAdded = GetExistedSyncCardEntriesByCustomerCCPID(item.Key, processingCenter);
                CustomerCreditCard       cards        = item.Value;

                foreach (CreditCardData card in cards.CreditCards)
                {
                    if (CheckNotImportedRecordExists(cards.CustomerProfileId, card.PaymentProfileID, alreadyAdded))
                    {
                        continue;
                    }

                    CCSynchronizeCard syncCard     = new CCSynchronizeCard();
                    CustomerData      customerData = customerDatas[cards.CustomerProfileId];
                    string            cardNumber   = card.CardNumber.Trim('X');
                    FormatMaskedCardNum(syncCard, cardNumber);
                    syncCard.CCProcessingCenterID  = processingCenter;
                    syncCard.CustomerCCPID         = cards.CustomerProfileId;
                    syncCard.CustomerCCPIDHash     = CCSynchronizeCard.GetSha1HashString(syncCard.CustomerCCPID);
                    syncCard.PaymentCCPID          = card.PaymentProfileID;
                    syncCard.PCCustomerID          = customerData.CustomerCD;
                    syncCard.PCCustomerDescription = customerData.CustomerName;
                    syncCard.PCCustomerEmail       = customerData.Email;

                    if (card.CardExpirationDate != null)
                    {
                        syncCard.ExpirationDate = card.CardExpirationDate.Value;
                    }

                    if (card.AddressData != null)
                    {
                        AddressData addrData = card.AddressData;
                        syncCard.FirstName = addrData.FirstName;
                        syncCard.LastName  = addrData.LastName;
                    }

                    CustomerCardPaymentData.Insert(syncCard);
                    unsyncCardCnt++;
                }
            }

            return(unsyncCardCnt);
        }
Example #5
0
        public IEnumerable customerCardPaymentData()
        {
            PXResultset <CCSynchronizeCard> resultSet = new PXResultset <CCSynchronizeCard>();
            CreditCardsFilter filter = Filter.Current;

            if (filter.ProcessingCenterId != null)
            {
                resultSet = GetSyncCardsByProcCenter(filter.ProcessingCenterId);
                foreach (CCSynchronizeCard res in resultSet)
                {
                    yield return(res);
                }
            }
        }
Example #6
0
        private bool ValidateLoadCardsAction()
        {
            bool errorOccured                  = false;
            CreditCardsFilter filter           = Filter.Current;
            string            processingCenter = filter.ProcessingCenterId;

            if (processingCenter == null && filter.ScheduledServiceSync.GetValueOrDefault() == true)
            {
                throw new PXException(Messages.ProcessingCenterNotSelected);
            }

            if (processingCenter == null)
            {
                Filter.Cache.RaiseExceptionHandling <CreditCardsFilter.processingCenterId>(filter, filter.ProcessingCenterId,
                                                                                           new PXSetPropertyException(Messages.ProcessingCenterNotSelected));
                errorOccured = true;
            }
            return(errorOccured);
        }
Example #7
0
        public void CreditCardsFilter_RowSelected(PXCache sender, PXRowSelectedEventArgs args)
        {
            CreditCardsFilter filter = args.Row as CreditCardsFilter;

            if (filter == null)
            {
                return;
            }

            CustomerCardPaymentData.AllowInsert = false;
            CustomerCardPaymentData.AllowDelete = false;
            PXButtonState buttonState = (PXButtonState)Actions["Process"].GetState(Filter.Current);
            bool          enabled     = buttonState.Visible && buttonState.Enabled;

            SetDefaultPaymentMethod.SetEnabled(enabled);
            LoadCards.SetEnabled(enabled);
            Save.SetEnabled(string.IsNullOrEmpty(filter.ProcessingCenterId) ? false : true);
            PXCache cache = Caches[typeof(CustomerPaymentMethod)];

            PXUIFieldAttribute.SetVisible <CustomerPaymentMethod.customerCCPID>(cache, null, true);
            PXUIFieldAttribute.SetVisible <CreditCardsFilter.scheduledServiceSync>(sender, null, false);
        }
Example #8
0
        protected virtual IEnumerable setDefaultPaymentMethod(PXAdapter adapter)
        {
            CreditCardsFilter filter = Filter.Current;

            if (!adapter.ExternalCall || PMFilter.AskExt((graph, vName) => filter.OverwritePaymentMethod = false) == WebDialogResult.OK)
            {
                string        paymentMethod             = filter.PaymentMethodId;
                PXFilterRow[] filterRows                = CustomerCardPaymentData.View.GetExternalFilters();
                int           startRow                  = 0;
                int           totalRows                 = 0;
                IEnumerable <CCSynchronizeCard> retList = CustomerCardPaymentData.View.Select(null, null, null, null, null, filterRows, ref startRow, 0, ref totalRows).OfType <CCSynchronizeCard>();

                foreach (CCSynchronizeCard item in retList)
                {
                    if (filter.OverwritePaymentMethod.GetValueOrDefault() == true || item.PaymentMethodID == null)
                    {
                        item.PaymentMethodID = paymentMethod;
                        CustomerCardPaymentData.Update(item);
                    }
                }
            }
            return(adapter.Get());
        }