Example #1
0
        public ActionResult FetchTransactions(TransactionSearchCriteria searchCriteria)
        {
            List <Transaction> transactions = GetTransactions(searchCriteria);

            Chart(transactions);
            return(View("Transactions", new UserTransactionViewModel(transactions, SearchPeriod.Weekly)));
        }
        public List <Transaction> GetTransactions(TransactionSearchCriteria searchCriteria)
        {
            ExpenseTrackerServiceClient client = new ExpenseTrackerServiceClient();

            using (new System.ServiceModel.OperationContextScope(client.InnerChannel))
            {
                AddAuthTokenHeader();
                return(Mapper.Map <List <Transaction> >(client.GetTransactions(Mapper.Map <TransactionSearchCriteriaDTO>(searchCriteria))));
            }
        }
Example #3
0
        public ActionResult Index()
        {
            TransactionSearchCriteria searchCriteria = new TransactionSearchCriteria
            {
                StartDate    = DateTime.Now.StartOfWeek(),
                EndDate      = DateTime.Now,
                SearchPeriod = SearchPeriod.Weekly
            };
            List <Transaction> transactions = GetTransactions(searchCriteria);

            Chart(transactions);
            return(View(new UserTransactionViewModel(transactions, SearchPeriod.Weekly)));
        }
            /// <summary>
            ///  Searches for transactions that match the given criteria in AX.
            /// </summary>
            /// <param name="currentChannelId">The current channel identifier.</param>
            /// <param name="criteria">Search criteria.</param>
            /// <param name="settings">The query result settings.</param>
            /// <returns>A collection of transactions.</returns>
            public IEnumerable <Transaction> SearchJournalTransactions(long currentChannelId, TransactionSearchCriteria criteria, QueryResultSettings settings)
            {
                ThrowIf.Null(criteria, "criteria");
                ThrowIf.Null(settings, "settings");

                var headQuarterCritera = new AxTransactionSearchCriteria();

                headQuarterCritera.BarCode               = criteria.Barcode;
                headQuarterCritera.ChannelReferenceId    = criteria.ChannelReferenceId;
                headQuarterCritera.CurrentChannelId      = currentChannelId;
                headQuarterCritera.CustomerAccountNumber = criteria.CustomerAccountNumber;
                headQuarterCritera.CustomerFirstName     = criteria.CustomerFirstName;
                headQuarterCritera.CustomerLastName      = criteria.CustomerLastName;
                headQuarterCritera.IncludeDetails        = false;
                headQuarterCritera.ItemId              = criteria.ItemId;
                headQuarterCritera.PagingInfo          = settings.Paging;
                headQuarterCritera.ReceiptId           = criteria.ReceiptId;
                headQuarterCritera.ReceiptEmailAddress = criteria.ReceiptEmailAddress;
                headQuarterCritera.SerialNumber        = criteria.SerialNumber;
                headQuarterCritera.SalesId             = criteria.SalesId;
                headQuarterCritera.StaffId             = criteria.StaffId;
                headQuarterCritera.StoreId             = criteria.StoreId;
                headQuarterCritera.TerminalId          = criteria.TerminalId;
                headQuarterCritera.TransactionIds.AddRange(criteria.TransactionIds);
                headQuarterCritera.StartDateTime = criteria.StartDateTime.HasValue
                    ? criteria.StartDateTime.Value.UtcDateTime.ToString("s")
                    : string.Empty;
                headQuarterCritera.EndDateTime = criteria.EndDateTime.HasValue
                    ? criteria.EndDateTime.Value.UtcDateTime.ToString("s")
                    : string.Empty;

                try
                {
                    if (!MethodsNotFoundInAx.Value.ContainsKey(SearchJournalTransactionsMethodName))
                    {
                        ReadOnlyCollection <object> transactionData = null;

                        transactionData = this.InvokeMethod(
                            SearchJournalTransactionsMethodName,
                            SerializationHelper.SerializeObjectToXml(headQuarterCritera));

                        // No matching orders were found.
                        if (transactionData == null)
                        {
                            return(Enumerable.Empty <Transaction>());
                        }

                        if (transactionData.Count != 1)
                        {
                            throw new InvalidOperationException(
                                      "TransactionServiceClient.SearchJournalTransactions returned an invalid result.");
                        }

                        // Parse transactions from results, the last value is the items for all transactions
                        string transactionsXml   = (string)transactionData[0];
                        var    salesTransactions =
                            SerializationHelper.DeserializeObjectDataContractFromXml <SalesTransaction[]>(transactionsXml);

                        var transactions = ConvertToTransactions(salesTransactions);
                        return(transactions);
                    }
                }
                catch (Exception)
                {
                    if (!MethodsNotFoundInAx.Value.ContainsKey(SearchJournalTransactionsMethodName))
                    {
                        throw;
                    }

                    // Need to trigger fallback logic.
                }

                // Fallback to existing SearchOrders() call to meet SE deployment requirement.
                var orderSearchCriteria = new SalesOrderSearchCriteria();

                orderSearchCriteria.Barcode               = criteria.Barcode;
                orderSearchCriteria.ChannelReferenceId    = criteria.ChannelReferenceId;
                orderSearchCriteria.CustomerAccountNumber = criteria.CustomerAccountNumber;
                orderSearchCriteria.CustomerFirstName     = criteria.CustomerFirstName;
                orderSearchCriteria.CustomerLastName      = criteria.CustomerLastName;
                orderSearchCriteria.IncludeDetails        = false;
                orderSearchCriteria.ItemId                     = criteria.ItemId;
                orderSearchCriteria.ReceiptId                  = criteria.ReceiptId;
                orderSearchCriteria.ReceiptEmailAddress        = criteria.ReceiptEmailAddress;
                orderSearchCriteria.SerialNumber               = criteria.SerialNumber;
                orderSearchCriteria.StaffId                    = criteria.StaffId;
                orderSearchCriteria.StoreId                    = criteria.StoreId;
                orderSearchCriteria.TerminalId                 = criteria.TerminalId;
                orderSearchCriteria.SalesTransactionTypeValues = new[]
                {
                    (int)TransactionType.BankDrop,
                    (int)TransactionType.Payment,
                    (int)TransactionType.TenderDeclaration,
                    (int)TransactionType.SalesOrder,
                    (int)TransactionType.SalesInvoice,
                    (int)TransactionType.BankDrop,
                    (int)TransactionType.SafeDrop,
                    (int)TransactionType.IncomeExpense,
                    (int)TransactionType.CustomerOrder
                };

                orderSearchCriteria.SearchType             = OrderSearchType.SalesTransaction;
                orderSearchCriteria.TransactionStatusTypes = new[]
                {
                    TransactionStatus.Normal,
                    TransactionStatus.Posted
                };
                orderSearchCriteria.StartDateTime = criteria.StartDateTime;
                orderSearchCriteria.EndDateTime   = criteria.EndDateTime;
                orderSearchCriteria.SalesId       = criteria.SalesId;

                var maxNumberOfResults = settings.Paging.Top + settings.Paging.Skip;
                var orders             = this.SearchOrders(orderSearchCriteria, maxNumberOfResults);

                return(ConvertToTransactions(orders.Results));
            }
Example #5
0
 public Task <PagedResult <Transaction> > SearchJournalTransactions(TransactionSearchCriteria searchCriteria, QueryResultSettings queryResultSettings)
 {
     return(Task.Run(() => Runtime.Client.StoreOperationsManager.Create(CommerceRuntimeManager.Runtime).SearchJournalTransactions(searchCriteria, queryResultSettings)));
 }
Example #6
0
        private List <Transaction> GetTransactions(TransactionSearchCriteria searchCriteria)
        {
            UserBuilder user = new UserBuilder(AuthToken);

            return(user.GetTransactions(searchCriteria));
        }
Example #7
0
            private static PagedResult <Transaction> SearchJournalTransactionsRemotely(TransactionSearchCriteria criteria, QueryResultSettings settings, RequestContext context)
            {
                var remoteSearchRequest = new SearchJournalTransactionsRealtimeRequest(criteria, settings);
                SearchJournalTransactionsRealtimeResponse journalTransactionsServiceResponse = context.Execute <SearchJournalTransactionsRealtimeResponse>(remoteSearchRequest);

                return(journalTransactionsServiceResponse.Transactions);
            }
Example #8
0
            private static PagedResult <Transaction> SearchJournalTransactionsLocally(TransactionSearchCriteria criteria, QueryResultSettings settings, RequestContext context)
            {
                var searchTransactionsDataRequest = new SearchJournalTransactionsDataRequest(criteria, settings);
                EntityDataServiceResponse <Transaction> searchJournalTransactions = context.Runtime
                                                                                    .Execute <EntityDataServiceResponse <Transaction> >(searchTransactionsDataRequest, context);

                return(searchJournalTransactions.PagedEntityCollection);
            }