Reason codes in Dynamics AX 2012 for Retail are very powerful and at the same time flexible way of collecting additional information during sales process at POS terminal. It can be used for any sort of BI-related analysis requested, for example, by Marketing department.
To create a reason code, go to Retail->Setup->Reason codes.
Each reason code will need to be assigned input type. There are several input types available:
I would encourage you to read online help on this form as it gives very good explanations for each type.
I think the most powerful one is Subcode buttons type. For example, when one item is added to a transaction a popup message would show up asking a store associate if shipping charge item needs to be added. If the answer is Yes, then shipping item is automatically added to the sales transaction. If the answer is No, then no actions are performed. This can greatly simplify sales entering process for non-stocked products and eliminate human error when shipping was accidentally forgotten.
Now let's talk about different trigger actions for codes to pop up. Reason codes can be assigned to:
Items
Customers
Payment methods
Functionality profiles
Let's consider several examples.
When you attach a reason code to an item, it will be displayed on POS screen when this item is added to a sales transaction. This could be useful for items that require buyer's age verification.
To attach a reason code to an item, go to Product information management->Common forms->Released products, Retail tab and click on reason codes button. From here you will be able to select from one of the existing codes and if required modify default input parameters:
When you attach a reason code to a customer, it will be displayed on POS screen when this customer is added to a sales transaction. For example, reason code can remind store associate to verify shipping address or whether or not sales receipt should be emailed or just printed.
To attach a reason code to an item, go to AR->Common forms->All customers, double click on the customer you need to modify, select Retail tab and click Reason codes button.
When you attach reason code to payment method, it will be displayed on POS screen when this payment method is used to complete sales transaction. For example, the retail store may accept checks and they will be authorized using third part processing system that will return an authorization code at the end of successful authorization. You may want to capture this code when check payment is accepted, making the reconciliation process easier for head office employee. That is why you may want to create a reason code with input type Text and attach it to store payment method. To do this, go to Retail->Common forms->Retail channels->Retail stores, Set up tab, Payment methods button and then click on Reason codes button:
And finally, the place that is used to attach reason codes to a large list of predefined trigger actions can be found on Functionality profile form. Functionality profiles are assigned to retail stores and among other things used for reason code assignments for the following trigger actions:
To open functionality profile form, go to Retail->Setup->POS->Profiles->Functionality profiles.
As you can see you can attach reason codes to return transactions, price overrides and even at the beginning and end of each transaction among others.
There are several key parameters that define the behavior of any given reason code:
print either prompt, input or input name on sales receipts
specify the frequency with which reason code will pop up as well as weather input is reqired
max/min values allowed as inputs
Keep in mind that only prompt and not description of a reason code will show on POS screen.
Once the reason code shows on POS and input is typed in, the reason code transaction is recorded in POS database. Then P-1001 is executed which transfers all POS transaction (including reason code ones) to AX database. That is when you can review them by going to Retail->Inquiries->Transactions, click on Transactions button and select Reason code transactions. Remember that only transaction with type Sales and Customer order can have reason codes attached.
The table that holds these records in AX database is called RetailTransactionInfocodeTrans.
That is all for today. In my next post I plan to share my experience with setting up replenishment in AX. This will include creating replenishment rules and replenishment hierarchies as well as processing transfer orders created with buyer's push and cross-docking functions.