Thursday, July 25, 2013

Change AX for Retail POS background color and create custom POS skins

When in the AX 2012 for Retail R2 POS, you may notice the background color is dark, light, green, etc. Depends on what is already configured (See Figure 1 below for dark theme).  You may want to change this theme.

Note: In order for the theme to be changed, you need to actually close out of the POS.exe instance and open a new one.

You can make changes to the theme via the visual profile in Figure 2. Alternately, for adhoc changes that will be overridden the next time the registers N (or A) job is run, you can make the changes in the RetailVisualProfile table to the POSSkinName field. This is a string so you can only put the following values out of the box (using default data):
  1. 'blue'(Figure 4)
  2. 'dark' (Figure 1)
  3. 'gray' (Figure 5)
  4. 'green' (Figure 6)
  5. 'light' (Figure 7)
  6. 'pink'. (Figure 8)
These options above are user configured so you can add your own if you have a DevExpress license. Remember that the POS uses a third party setup for POS layouts. In order to make a new skin, you need to use the SkinEditor located at '<root>\Program Files (x86)\DevExpress <version of the product>\Components\Tools\Windows Forms' For more info, see http://msdn.microsoft.com/en-us/library/jj937979.aspx

Figure 1- The POS 'dark' theme

Figure 2 - AX Visual Profile for setting the POS theme color

Figure 3 - Changing the visual layout in SQL

Figure 4 - Blue theme

Figure 5 - Grey theme

Figure 6 - Green Theme

Figure 7 - Light theme

Figure 8 - Pink theme




6 comments:

  1. Hello! Thank you very much for your post!

    I have the following requirement :

    A customer wants to ensure that the cashier never sells a product with less than a specified margin.
    The calculation is simple. The sales price should never be less than the cost price + % margin.

    From the Ax side, I added a new parameter to the tables RetailPositionPosPermission and RetailPosPermissionGroup

    I used cross-references in the field maxTotalDiscountPct and made all the customizations following the patterns.

    Here comes the problem!

    From the POS application side, the right place to edit seems to be the class PositionPosPermission and PosPermissionGroup that represent the AX tables.

    The issue is than I can not edit nor extend these classes because they are compiled and marked as sealed.

    Is the source code available?
    Is there any workaround?

    For almost every requirement I have the same kind of problems.

    Thanks in advance,
    Daniel.

    ReplyDelete
  2. Daniel,

    Not quite a question to the post above but a good one! Sounds like you know what you're doing in AX and POS which is pretty important.

    The requirement you specified above is pretty common especially when bargaining or lots of discounts come into play.

    Unfortunately, you cannot modify these. They are intentionally locked. If they opened up the ability to change the security, it would open up a pandora's box of potential issues for those that don't know what they are doing or have a bad design. Not saying you have either of those but Microsoft is trying to prevent that.

    There is still hope though! I would suggest putting your cost/margin line level validation check call (which could be local on the DB and not via CDE/RTS) in during something like trying to collect a tender or some other trigger that goes with the work flow that does have code exposed. Just make sure it addresses both the cash and carry and sales order/quotation transaction types. This shouldn't be considered a work around and actually works pretty well. Especially if you need additional validation on an order like rescheduling or inventory checks.

    Hope that helps!

    ReplyDelete
  3. Thank you very much for your answer!

    Yes, I found a trigger to put my code into.

    The problem is that I only have Pre and Post operations.

    In Pre operation the user has not yet entered the override price value, and in Post is already too late.

    The "solution" was to let the user enter the price and if the condition is not met, then put the previous price back.

    Anyway I’m just starting with POS, so perhaps there is a better way to do it.

    Thanks again for everything!

    Daniel

    ReplyDelete
  4. Daniel,

    Your solution above is the approach I would take as well. I can't think of a different way to do it. I've worked with the POS (2009/2012) for almost 4 years.

    You'll notice some quirks with it especially around variants but its much easier IMO than working with other POS solutions like RMS, Oracle RPOS, SAP Retail, or ShopKeep.

    Have fun! Hope it all goes well!

    ReplyDelete
  5. This comment has been removed by a blog administrator.

    ReplyDelete
  6. Thank full , EPOS he was new Way to help to us to get the business running sucessfull.

    ReplyDelete