private NumberSequenceSeedData GetNumberSequenceDataByReceiptId(SalesTransaction salesTransaction) { ReceiptTransactionType receiptType = NumberSequenceSeedTypeHelper.GetReceiptTransactionType(salesTransaction.TransactionType, salesTransaction.NetAmountWithNoTax, salesTransaction.CustomerOrderMode); NumberSequenceSeedType seedType = NumberSequenceSeedTypeHelper.GetNumberSequenceSeedType(receiptType); // get receipt mask from db string functionalityProfileId = this.GetOrgUnit().FunctionalityProfileId; var getReceiptMaskRequest = new GetReceiptMaskDataRequest(functionalityProfileId, receiptType); ReceiptMask mask = this.Context.Runtime.Execute <SingleEntityDataServiceResponse <ReceiptMask> >( getReceiptMaskRequest, this.Context).Entity; // parse receipt number long numberSequenceId; // if mask is not available, try parsing it as a integer if (mask == null) { if (!long.TryParse(salesTransaction.ReceiptId, out numberSequenceId)) { string message = string.Format("Receipt mask is not available for receipt type {0} when using functionality profile {1}. Parsing receipt identifier as a number failed.", receiptType, functionalityProfileId); RetailLogger.Log.CrtWorkflowParsingReceiptIdentifierFailure(receiptType.ToString(), functionalityProfileId); throw new ConfigurationException(ConfigurationErrors.Microsoft_Dynamics_Commerce_Runtime_InvalidChannelConfiguration, ExceptionSeverity.Warning, message); } } else { numberSequenceId = ReceiptMaskFiller.GetNumberSequenceFromReceipt(mask.Mask, salesTransaction.ReceiptId); } // compose number sequence seed object return(new NumberSequenceSeedData { DataType = seedType, DataValue = IncrementByOne(numberSequenceId) }); }