/// <summary> /// Retrieves the stock count journal transactions. /// </summary> /// <param name="context">The request context.</param> /// <param name="journalId">The journal identifier.</param> /// <returns> /// The response. /// </returns> public static GetStockCountJournalTransactionServiceResponse GetStockCountJournalTransactions(RequestContext context, string journalId) { var dataRequest = new GetStockCountDataRequest { JournalId = journalId, TransactionRecordsOnly = true, QueryResultSettings = QueryResultSettings.AllRecords }; var journalTransactions = context.Runtime.Execute <EntityDataServiceResponse <StockCountJournalTransaction> >(dataRequest, context).PagedEntityCollection; return(new GetStockCountJournalTransactionServiceResponse(journalTransactions)); }
/// <summary> /// Retrieves the stock count journal. /// </summary> /// <param name="request">The request.</param> /// <returns> /// A collection of stock count journals. /// </returns> public static GetStockCountJournalServiceResponse GetStockCountJournal(GetStockCountJournalServiceRequest request) { var dataRequest = new GetStockCountDataRequest { QueryResultSettings = request.QueryResultSettings }; if (!string.IsNullOrWhiteSpace(request.JournalId)) { dataRequest.JournalId = request.JournalId; } PagedResult <StockCountJournal> journals = request.RequestContext.Runtime.Execute <EntityDataServiceResponse <StockCountJournal> >(dataRequest, request.RequestContext).PagedEntityCollection; return(new GetStockCountJournalServiceResponse(journals)); }
/// <summary> /// Sync Stock count journal transactions from AX. /// </summary> /// <param name="context">The request context.</param> /// <param name="journalId">The journal identifier.</param> /// <returns>The response.</returns> public static SyncStockCountTransactionsFromAxServiceResponse SyncStockCountJournalTransactions(RequestContext context, string journalId) { var currJournalTrans = GetStockCountJournalTransFromAx(context, journalId); AddUpdateStockCount(journalId, context, currJournalTrans); var dataRequest = new GetStockCountDataRequest { TransactionRecordsOnly = true, JournalId = journalId, QueryResultSettings = QueryResultSettings.AllRecords }; var currentScDbTransactions = context.Runtime.Execute <EntityDataServiceResponse <StockCountJournalTransaction> >(dataRequest, context).PagedEntityCollection; return(new SyncStockCountTransactionsFromAxServiceResponse(currentScDbTransactions)); }
/// <summary> /// Syncs StockCount journal from AX. /// </summary> /// <param name="context">The request context.</param> /// <returns>The response.</returns> public static SyncStockCountJournalsFromAxServiceResponse SyncStockCountJournalFromAx(RequestContext context) { var stockCountJournals = GetStockCountJournalsFromAx(context); // Remove stock count journals that are not available on AX anymore. var journalsToRemoved = GetUnusedJournals(context, stockCountJournals); var dataRequest = new DeleteStockCountJournalsDataRequest(journalsToRemoved.Select(journal => journal.JournalId)); context.Runtime.Execute <NullResponse>(dataRequest, context); AddUpdateStockCountJournal(context, stockCountJournals); // Get all the stock count journals from RetailServer database and send the dataset to client. var stockDataRequest = new GetStockCountDataRequest { QueryResultSettings = QueryResultSettings.AllRecords }; var currentJournals = context.Runtime.Execute <EntityDataServiceResponse <StockCountJournal> >(stockDataRequest, context).PagedEntityCollection; return(new SyncStockCountJournalsFromAxServiceResponse(currentJournals)); }
/// <summary> /// Creates the <see cref="StockCountJournal"/> object to commit to AX. /// </summary> /// <param name="context">The request context.</param> /// <param name="journalId">The journal identifier.</param> /// <returns> /// The stock count journal with transaction lines to be committed to AX. /// </returns> private static StockCountJournal ConstructAxStockJournal(RequestContext context, string journalId) { ChannelConfiguration channelConfiguration = context.GetChannelConfiguration(); var dataRequest = new GetStockCountDataRequest { TransactionRecordsOnly = true, JournalId = journalId, QueryResultSettings = QueryResultSettings.AllRecords }; var currentScDbTransactions = context.Runtime.Execute <EntityDataServiceResponse <StockCountJournalTransaction> >(dataRequest, context).PagedEntityCollection.Results; StockCountJournal stockCountJournal = new StockCountJournal(); stockCountJournal.JournalId = journalId; foreach (var currScDbTran in currentScDbTransactions) { StockCountJournalTransaction journalTransaction = new StockCountJournalTransaction(); journalTransaction.RecordId = currScDbTran.RecordId; journalTransaction.ItemId = currScDbTran.ItemId; journalTransaction.ItemName = currScDbTran.ItemName; journalTransaction.Counted = currScDbTran.Counted; journalTransaction.Quantity = currScDbTran.Quantity; journalTransaction.ConfigId = currScDbTran.ConfigId; journalTransaction.TrackingGuid = currScDbTran.TrackingGuid; journalTransaction.InventColorId = currScDbTran.InventColorId; journalTransaction.InventSizeId = currScDbTran.InventSizeId; journalTransaction.InventStyleId = currScDbTran.InventStyleId; journalTransaction.InventDimId = currScDbTran.InventDimId; journalTransaction.InventSiteId = currScDbTran.InventSiteId; journalTransaction.InventLocationId = channelConfiguration.InventLocation; journalTransaction.Status = currScDbTran.Status; stockCountJournal.StockCountTransactionLines.Add(journalTransaction); } return(stockCountJournal); }
/// <summary> /// Gets the unused journals. /// </summary> /// <param name="context">The request context.</param> /// <param name="activeList">The active list.</param> /// <returns>The stock count journals.</returns> private static ReadOnlyCollection <StockCountJournal> GetUnusedJournals(RequestContext context, IEnumerable <StockCountJournal> activeList) { var dataRequest = new GetStockCountDataRequest { QueryResultSettings = QueryResultSettings.AllRecords }; var currentJournals = context.Runtime.Execute <EntityDataServiceResponse <StockCountJournal> >(dataRequest, context).PagedEntityCollection.Results; IList <StockCountJournal> unusedList = new List <StockCountJournal>(); foreach (var currScj in currentJournals) { // check whether the current journal is present in active journal var stockCountJournalExists = activeList.Where(active => string.Equals(active.JournalId, currScj.JournalId, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); // if the current journal does not exist in active journal delete them if (stockCountJournalExists == null) { unusedList.Add(currScj); } } return(new ReadOnlyCollection <StockCountJournal>(unusedList)); }
/// <summary> /// Dispatches stock count request. /// </summary> /// <param name="request">The data service request.</param> /// <returns>The data service response.</returns> private Response GetStockCountData(GetStockCountDataRequest request) { var dataManager = new StockCountDataManager(request.RequestContext); return(dataManager.GetStockCountData(request)); }