/// <summary> /// Get item availabilities by requested item quantities. /// </summary> /// <param name="request">The request.</param> /// <returns><see cref="NullResponse"/> object.</returns> private NullResponse DeleteStockCountJournals(DeleteStockCountJournalsDataRequest request) { var dataManager = new StockCountDataManager(request.RequestContext); dataManager.DeleteStockCountJournals(request.JournalIds); return(new NullResponse()); }
/// <summary> /// Deletes the stock count journal in channel and AX databases. /// </summary> /// <param name="context">The request context.</param> /// <param name="journalId">The journal identifier.</param> /// <returns> /// An empty response object. /// </returns> public static DeleteStockCountServiceResponse DeleteStockCountJournal(RequestContext context, string journalId) { // Delete the specified stock count journal as well as its journal transation(s) in AX database var deleteJournalRealtimeRequest = new DeleteStockCountJournalRealtimeRequest(journalId); context.Execute <NullResponse>(deleteJournalRealtimeRequest); // Delete the specified stock count journal as well as its journal transation(s) in channel database var deleteDataRequest = new DeleteStockCountJournalsDataRequest(journalId); context.Execute <NullResponse>(deleteDataRequest); return(new DeleteStockCountServiceResponse()); }
/// <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 StockCount Journal in AX /// If the StockCount creation is successful, it syncs the changes from AX to RetailServer tables. /// It deletes all the journals that are saved locally. /// </summary> /// <param name="context">The request context.</param> /// <param name="description">The journal description.</param> /// <returns> /// The stock count journal response. /// </returns> public static CreateStockCountJournalServiceResponse CreateStockCountJournal(RequestContext context, string description) { var channelConfiguration = context.GetChannelConfiguration(); var createStockCountJournalRealtimeRequest = new CreateStockCountJournalRealtimeRequest(channelConfiguration.InventLocation, description); var createdStockCountJournal = context.Execute <EntityDataServiceResponse <StockCountJournal> >(createStockCountJournalRealtimeRequest).PagedEntityCollection.Results; var stockCountJournalsRequest = new GetStockCountJournalsRealtimeRequest(channelConfiguration.InventLocation); var stockCountJournalList = context.Execute <EntityDataServiceResponse <StockCountJournal> >(stockCountJournalsRequest).PagedEntityCollection.Results; AddUpdateStockCountJournal(context, stockCountJournalList); var stockCountListToDelete = GetUnusedJournals(context, stockCountJournalList); // Deletes the unused journals that are saved locally in RetailServer if (stockCountListToDelete != null && stockCountListToDelete.Count > 0) { var deleteRequest = new DeleteStockCountJournalsDataRequest(stockCountListToDelete.Select(journal => journal.JournalId)); context.Runtime.Execute <NullResponse>(deleteRequest, context); } return(new CreateStockCountJournalServiceResponse(createdStockCountJournal.FirstOrDefault())); }
/// <summary> /// Commits the StockCount transactions to AX. /// </summary> /// <param name="context">The request context.</param> /// <param name="journalId">The journal identifier.</param> /// <param name="transactions">A collection of stock count transactions to commit to AX.</param> /// <returns>The response object.</returns> public static CommitStockCountTransactionsServiceResponse CommitStockCountTransactions(RequestContext context, string journalId, IEnumerable <StockCountJournalTransaction> transactions) { // Save the StockCount transactions into DB before commiting to AX. AddUpdateStockCount(journalId, context, transactions); var stockCountJournal = ConstructAxStockJournal(context, journalId); var commitStockCountsRequest = new CommitStockCountJournalRealtimeRequest(stockCountJournal); StockCountJournal commitedStockCounts = context.Execute <SingleEntityDataServiceResponse <StockCountJournal> >(commitStockCountsRequest).Entity; var removeStockCountTrans = new List <StockCountJournalTransaction>(); if (commitedStockCounts != null) { foreach (var transactionLine in stockCountJournal.StockCountTransactionLines) { StockCountJournalTransaction updatedLine = commitedStockCounts.StockCountTransactionLines .FirstOrDefault( line => string.Equals( line.TrackingGuid.ToString(), transactionLine.TrackingGuid.ToString(), StringComparison.OrdinalIgnoreCase) && line.UpdatedInAx); if (updatedLine != null) { removeStockCountTrans.Add(updatedLine); } } } // This deletes both the journals and transactions. var deleteDataRequest = new DeleteStockCountJournalsDataRequest(commitedStockCounts.JournalId); context.Runtime.Execute <NullResponse>(deleteDataRequest, context); return(new CommitStockCountTransactionsServiceResponse()); }