public string GetNextCustomerOrderID()
        {
            try
            {
                ReceiptTransactionType transType = ReceiptTransactionType.OrnamentRepairReturn;
                string storeId    = LSRetailPosis.Settings.ApplicationSettings.Terminal.StoreId;
                string terminalId = LSRetailPosis.Settings.ApplicationSettings.Terminal.TerminalId;
                string staffId    = pos.OperatorId;
                string mask;

                string funcProfileId = LSRetailPosis.Settings.FunctionalityProfiles.Functions.ProfileId;
                orderNumber((int)transType, funcProfileId, out mask);
                if (string.IsNullOrEmpty(mask))
                {
                    return(string.Empty);
                }
                else
                {
                    string seedValue = GetSeedVal().ToString();
                    return(ReceiptMaskFiller.FillMask(mask, seedValue, storeId, terminalId, staffId));
                }
            }
            catch (Exception ex)
            {
                LSRetailPosis.ApplicationExceptionHandler.HandleException(this.ToString(), ex);
                throw;
            }
        }
Example #2
0
            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)
                });
            }