Professional Documents
Culture Documents
Xstore 2300 Tg
Xstore 2300 Tg
Xstore 2300 Tg
Technical Guide
Release 23.0.0
F81321-03
April 2024
F81321-03
1 Preface........................................................................................1-xxvii
1 Introduction......................................................................................1-1
Overview ....................................................................................................................... 1-1
Configuration Changes Using Xstore Office.......................................................... 1-2
Audience........................................................................................................................ 1-2
About this Guide ......................................................................................................... 1-2
iv
Step #1 ..................................................................................................................... 4-9
Step #2 ................................................................................................................... 4-10
Step #3 ................................................................................................................... 4-10
Step #4 ................................................................................................................... 4-10
Step #5 ................................................................................................................... 4-11
Step #7 ................................................................................................................... 4-12
Multiple Taxes: Sample Setup Procedure............................................................. 4-12
Step #1 ................................................................................................................... 4-13
Step #2 ................................................................................................................... 4-13
Step #3 ................................................................................................................... 4-13
Step #4 ................................................................................................................... 4-14
Step #5 ................................................................................................................... 4-14
Step #6 ................................................................................................................... 4-14
Step #7 ................................................................................................................... 4-15
Automatic Tax Overrides: Sample Setup Procedure .......................................... 4-16
Tax Override Setup ............................................................................................. 4-16
When a User Makes a Tax Change: Configuring Reasons ................................ 4-17
Tax Change Reasons: XML Configuration ...................................................... 4-17
Tax Change Reasons: Sample Database Setup ................................................ 4-17
VAT Tax: Sample Setup Procedure........................................................................ 4-18
Step #1 ................................................................................................................... 4-18
Step #2 ................................................................................................................... 4-18
Step #3 ................................................................................................................... 4-19
Step #4 ................................................................................................................... 4-19
Step #5 ................................................................................................................... 4-19
Step #6 ................................................................................................................... 4-20
Step #7 ................................................................................................................... 4-20
Multiple VAT Taxation....................................................................................... 4-21
Compound Taxes ....................................................................................................... 4-22
How a Compound Tax is Applied: An Example ............................................ 4-22
Compound Taxes: Sample Setup Procedure ................................................... 4-22
Step #1 ............................................................................................................ 4-22
Step #2 ............................................................................................................ 4-23
Step #3 ............................................................................................................ 4-23
Step #4 ............................................................................................................ 4-23
Step #5 ............................................................................................................ 4-23
Step #6 ............................................................................................................ 4-24
Step #7 ............................................................................................................ 4-24
Threshold Taxes ......................................................................................................... 4-25
How a Threshold Tax is Applied: An Example .............................................. 4-25
Threshold Taxes: Sample Setup Procedure ..................................................... 4-26
Step #1 ............................................................................................................ 4-26
Step #2 ............................................................................................................ 4-26
Step #3 ............................................................................................................ 4-27
Step #4 ............................................................................................................ 4-27
Step #5 ............................................................................................................ 4-27
Step #6 ............................................................................................................ 4-28
v
Step #7 ............................................................................................................ 4-28
Taxing in Send Sale/Remote Sale Transactions .................................................. 4-30
Database Configuration...................................................................................... 4-30
XML Configuration ............................................................................................. 4-30
Changing Tax in a Transaction ............................................................................... 4-31
Tax Exemption Database Setup .............................................................................. 4-31
Tax Exemption Configuration ........................................................................... 4-31
Tax Exemption Reason Codes ........................................................................... 4-32
Configuring the Tax Display................................................................................... 4-32
Tax Group Mapping Overrides Setup................................................................... 4-32
Tax Mapping Example: tax_tax_group_mapping Table ............................... 4-33
Tax Bracket Setup ...................................................................................................... 4-33
Examples E1 & E2: tax_tax_bracket table......................................................... 4-34
vi
Similar Item Setup..................................................................................................... 5-17
Item Prompting Database Setup............................................................................. 5-18
Item Lookup Configuration in SysConfig.xml.................................................... 5-18
Kit Item Setup ............................................................................................................ 5-20
Database Setup for Kits ............................................................................... 5-21
System Config Setup for Kits...................................................................... 5-21
Item Matrix.................................................................................................................. 5-23
Item Matrix Database Setup............................................................................... 5-23
Item Matrix System Configuration ................................................................... 5-24
Item Images................................................................................................................. 5-24
Database Setup..................................................................................................... 5-25
Quick Items Tab......................................................................................................... 5-25
vii
Foreign Cash Currency As Change .......................................................................... 7-9
Upgrading From an Earlier Version of Xstore Point of Service.................... 7-10
Prior to version 7.0 ....................................................................................... 7-10
Version 7.0 and After ................................................................................... 7-10
8 Discount Configuration...................................................................8-1
Overview ....................................................................................................................... 8-1
Discount Database Setup ........................................................................................... 8-2
Associate a Customer Group to a Discount ............................................................ 8-2
Associate a Discount to a Transaction Type........................................................... 8-2
Associate Manufacturer's Coupon to a Discount .................................................. 8-2
Define Discount Item Exclusions and Inclusions ................................................. 8-2
Define Compatible Discounts................................................................................... 8-3
System Config Discount Options............................................................................. 8-3
Discounts in Return Transactions ....................................................................... 8-3
Discount Rounding Mode .................................................................................... 8-4
Line Item Discount Configuration Options....................................................... 8-4
Group Discount Configuration Options ............................................................ 8-5
You Saved Discount Options............................................................................... 8-5
Deal Data for Multiple Stores ................................................................................... 8-5
SysConfig.xml Settings ......................................................................................... 8-6
viii
Employee Search Location ................................................................................. 10-6
Employee Search Criteria ................................................................................... 10-6
Employee ID Length ........................................................................................... 10-6
Minimum Length ......................................................................................... 10-6
Maximum Length......................................................................................... 10-6
Employee Self-Sale .............................................................................................. 10-7
Employee Login Security ................................................................................... 10-7
Employee House Account ID ............................................................................ 10-7
Employee Security Groups ................................................................................ 10-7
Employee Challenge Questions Setup ............................................................. 10-7
ix
Securing Forms and Fields....................................................................................... 12-7
sec_access_types Table........................................................................................ 12-8
User Login and Password Security......................................................................... 12-9
Requirements for Password Validation ......................................................... 12-10
Employee Challenge Questions Setup ................................................................ 12-11
SysConfig.xml Setup ......................................................................................... 12-11
Database Table Setup ........................................................................................ 12-12
Security Overrides & Secondary Approvals ...................................................... 12-12
sec_activity_log Table ....................................................................................... 12-12
13 Address Mapping...........................................................................13-1
Overview ..................................................................................................................... 13-1
Address Mapping ...................................................................................................... 13-1
Database Mapping............................................................................................... 13-1
File Mapping ........................................................................................................ 13-1
Database Tables ......................................................................................................... 13-2
Supported Address Service Modes ........................................................................ 13-2
Multiple Customer Addresses/Change Country ................................................. 13-2
Base Xstore Point of Service: General Considerations ................................... 13-2
Change Country ........................................................................................... 13-2
StoreLocationsAvailable.xml file ............................................................... 13-2
Addresses ..................................................................................................... 13-3
x
used?...................................................................................................................... 14-7
What happens if multiple tiers have the same priority?................................ 14-7
xi
Xstore Point of Service UI Prorated Refund Example ............................ 17-3
Returns from the Customer’s Purchase History .................................................. 17-4
Requirements ....................................................................................................... 17-4
Cross-Border Returns................................................................................................ 17-5
About Verified Returns....................................................................................... 17-5
About Unverified Returns.................................................................................. 17-5
SysConfig.xml Setup.................................................................................... 17-5
SysConfig.xml Configuration Options ................................................................. 17-7
xii
SysConfig.xml Configurations ........................................................................ 18-15
TableLayoutConfig.xml .................................................................................... 18-17
Styling and CSS Customization....................................................................... 18-19
Audio Files.......................................................................................................... 18-20
Start Button......................................................................................................... 18-21
PromptConfig.xml...................................................................................... 18-21
ActionConfig.xml ....................................................................................... 18-22
ui.properties ................................................................................................ 18-22
Self Checkout Console ...................................................................................... 18-23
How to Access............................................................................................. 18-23
Security ........................................................................................................ 18-23
Self Checkout Console Permissions......................................................... 18-23
Self Checkout Console's Activate Command......................................... 18-24
Open/Close Commands vs. Xstore's TRN_TRANSACTION .............. 18-24
Configurations ............................................................................................ 18-24
Self Checkout Console Customization .................................................... 18-25
xiii
Database Setup........................................................................................................... 21-3
System Config Setup................................................................................................. 21-3
SysConfig.xml ...................................................................................................... 21-3
Non Merchandise Item Setup ................................................................................. 21-3
To Use Pack Size for Item Ordering ...................................................................... 21-4
To Search For Replenishment Documents By Source Entity ............................ 21-4
To Display The Source Of an Item......................................................................... 21-4
xiv
Clienteling Customer Lookup ......................................................................... 24-12
FAQ: Customer Engagement Cloud Services real-time updates.................... 24-12
Oracle Retail Promotions Engine Integration .................................................... 24-13
Spring Files Configuration ............................................................................... 24-13
system.properties Settings................................................................................ 24-16
Xservices Settings .............................................................................................. 24-16
Additional Details ............................................................................................. 24-16
xv
Rotating Credentials ................................................................................................. 28-1
xvi
Add COMPLETE and CANCEL action references to
CUSTOMER_ACCOUNT menu ................................................................ 31-2
ActionConfig.xml ................................................................................................ 31-4
Add entries as shown below....................................................................... 31-4
OpChainConfig.xml ............................................................................................ 31-4
Add a starting point for a CCA .................................................................. 31-4
RcptConfig.xml .................................................................................................... 31-5
Add receipt copy rules ................................................................................ 31-5
Added receipts ..................................................................................................... 31-5
SequenceConfig.xml............................................................................................ 31-5
Add entry for CCA....................................................................................... 31-5
PreFlightQueryConfig.xml................................................................................. 31-5
Add entry for CCA....................................................................................... 31-5
InputConfig.xml .................................................................................................. 31-6
Add entry for barcode scan......................................................................... 31-6
Add entry in ProcessingOrder section ...................................................... 31-6
EventConfig.xml .................................................................................................. 31-6
Add entry to SELLING EventActionMap section ................................... 31-6
Add entry to CUST_ACCOUNT EventActionMap section ................... 31-7
CustomerAccountConfig.xml (PRESALE Example) ...................................... 31-7
ComponentGroupConfig.xml file ..................................................................... 31-8
ComponentPropertySetConfig.xml file.......................................................... 31-10
ContextConfig.xml file...................................................................................... 31-10
xvii
Customer Birthdate Options.................................................................................... 32-9
SysConfig.xml Setting......................................................................................... 32-9
Task Management ..................................................................................................... 32-9
Tasks Tab ............................................................................................................ 32-10
About the Tasks Tab .................................................................................. 32-10
35 Context-Sensitive Help..................................................................35-1
Overview ..................................................................................................................... 35-1
About this Chapter .................................................................................................... 35-1
Setting Up Context-Sensitive Help ........................................................................ 35-1
The Basic Elements .............................................................................................. 35-3
xviii
DataLoader - Controlled By log4j2 ............................................................ 37-3
Transaction replicator - Controlled By log4j2 .......................................... 37-4
Xstore Point of Service Log Files - Transactional Data ...................................... 37-4
Log Controlled By the VeriFone Driver ................................................................ 37-5
Other Logs ................................................................................................................... 37-5
Log Tables Controlled by Xstore Point of Service and log4j2 .......................... 37-6
Log Troubleshooting Tips - xstore.log................................................................... 37-6
xstore.log logging level examples ..................................................................... 37-6
Operations ..................................................................................................... 37-7
Version Info................................................................................................... 37-7
Location Info ................................................................................................. 37-8
Configuration File Loading......................................................................... 37-8
Logging for Validation Rules.................................................................................. 37-8
xix
39 BIN Ranges.....................................................................................39-1
Overview ..................................................................................................................... 39-1
Specifications.............................................................................................................. 39-1
Examples............................................................................................................... 39-2
File Naming Conventions ........................................................................................ 39-2
42 Transaction Replicator..................................................................42-1
Overview ..................................................................................................................... 42-1
Run the Transaction Replicator Utility ................................................................. 42-2
xx
43 Internationalization........................................................................43-1
Overview ..................................................................................................................... 43-1
About this Chapter .............................................................................................. 43-1
Internationalization (i18n) ....................................................................................... 43-2
Implementing i18n .............................................................................................. 43-2
Applications of Internationalization in Xstore Point of Service ................... 43-2
Internationalization (i18n) and Localization (L10n) ....................................... 43-3
Multilingualization (m17n) ................................................................................ 43-3
Xstore Point of Service i18n Implementation....................................................... 43-3
Java Standards...................................................................................................... 43-3
Language Codes .................................................................................................. 43-3
Configure Languages in Xstore Point of Service ............................................ 43-4
Sample Entries in LocaleMap.xml: ............................................................ 43-4
Language Files ..................................................................................................... 43-4
Individual Customization .................................................................................. 43-5
Translation Resource Bundles ........................................................................... 43-6
Language and Country................................................................................ 43-6
Define Common Mappings for Different Keys........................................ 43-7
Xstore Office and SystemConfigMetadata.properties........................................ 43-8
i18n and the SystemConfigMetadata.properties File ..................................... 43-8
SystemConfigMetadata.properties File Example .................................... 43-9
Creating a "Stub" Metadata File for Other Languages............................ 43-9
xxi
Service IDs ............................................................................................................ 45-4
Operational Data ................................................................................................. 45-4
Replication..................................................................................................... 45-4
Creating a Temporary Store Request ........................................................ 45-6
Security Privileges........................................................................................ 45-7
Xcenter Temporary Store Services ............................................................. 45-7
Purging of Temporary Store Request Data........................................................... 45-7
46 Transaction Attachments..............................................................46-1
Overview ..................................................................................................................... 46-1
Additional Information on Different Attachment Types.................................. 46-2
xxii
SystemConfigMetadata.properties sample ............................................... A-6
I18N Information .................................................................................................. A-6
B EFTLink............................................................................................ B-1
Overview .......................................................................................................................B-1
Xstore Point of Service, EFTLink, and Payment Service Provider Responsibilities
B-1
EFTLink and Xstore Point of Service .................................................................. B-1
Xstore Point of Service Setup to Use EFTLink.......................................................B-2
AuthConfig.xml ...........................................................................................................B-4
Parameters in AuthConfig.xml............................................................................ B-4
PED Pooling in EFTLink ............................................................................... B-4
Auth Request Map ......................................................................................... B-5
SysConfig.xml ..............................................................................................................B-6
Processing Overview...................................................................................................B-6
xxiii
D Xstore Point of Service Configuration Path ................................. D-1
Overview ...................................................................................................................... D-1
Configuration Path Retrieval Process..................................................................... D-1
Xstore Office Config Path Properties Assembly .................................................. D-2
Global Configurations Path Properties ............................................................. D-2
xstore.config.path.global.extensions........................................................... D-8
xstore.config.path.base.features .................................................................. D-8
Workstation Overrides Config Path Properties ............................................. D-10
xstore.config.path.workstation.overrides.X ............................................ D-11
xstore.config.path.overrides.store.Y ......................................................... D-11
Xstore Point of Service Config Path Assembly................................................... D-11
If Xcenter Is Not Used to Get the Config Path ............................................... D-12
Resource Bundle Path Consolidation ................................................................... D-13
xxiv
Version 17.0, Revision 03............................................................................................ F-9
Version 17.0, Revision 02............................................................................................ F-9
Version 17.0, Revision 01.......................................................................................... F-10
Version 16.0.2, Revision 01....................................................................................... F-10
Version 16.0.0.1, Revision 03.................................................................................... F-10
Version 16.0.0.1, Revision 02.................................................................................... F-11
Version 16.0.0.1........................................................................................................... F-11
Version 16.0, Revision 02.......................................................................................... F-11
Version 16.0................................................................................................................. F-11
Version 15.0, Revision 02.......................................................................................... F-12
xxv
Send Us Your Comments
Oracle welcomes customers' comments and suggestions on the quality and usefulness of
this document.
Your feedback is important, and helps us to best meet your needs as a user of our
products. For example:
• Are the implementation steps correct and complete?
• Did you understand the context of the procedures?
• Did you find any errors in the information?
• Does the structure of the information help you with your tasks?
• Do you need different information or graphics? If so, where, and in what format?
• Are the examples correct? Do you need more examples?
If you find any errors or have any other suggestions for improvement, then please tell us
your name, the name of the company who has licensed our products, the title and part
number of the documentation and the chapter, section, and page number (if available).
Note: Before sending us your comments, you might like to check that
you have the latest version of the document and if any concerns are
already addressed. To do this, access the Online Documentation
available on the Oracle Help Center (docs.oracle.com) Web site. It
contains the most current Documentation Library plus all documents
revised or released recently.
xxvi
Preface
This guide describes the technical frameworks used in the development of Xstore Point
of Service.
Audience
This Technical Guide is for administrators and programmers of Oracle Retail Xstore
Point of Service.
Documentation Accessibility
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility
Program website at http://www.oracle.com/pls/topic/
lookup?ctx=acc&id=docacc.
Related Documents
For more information, see the following documents in the Xstore Point of Service 23.0.0
documentation set:
• Xstore Suite Release Notes
• Xstore Suite Implementation and Security Guide
Customer Support
To contact Oracle Customer Support, access My Oracle Support at the following URL:
https://support.oracle.com
When contacting Customer Support, please provide the following:
• Product version and program/module name
• Functional and technical description of the problem (include business impact)
• Detailed step-by-step instructions to re-create
• Exact error message received
• Screen shots of each step you take
xxvii
patch releases can contain critical information related to the base release, as well as
information about code changes since the base release.
Conventions
Navigate: This is a navigate statement. It tells you how to get to the start of the procedure
and ends with a screen shot of the starting point and the statement “the Window Name
window opens.”
This is a code sample
It is used to display examples of code
xxviii
xxix
1
Introduction
Overview
Note: It is assumed Xstore Office will now be used to configure
Xstore Point of Service. The purpose of this guide is to provide
information about Xstore Point of Service’s features and the underlying
technology, as well as general troubleshooting information.
Refer to the Xstore Office User Guide for configuration information.
Introduction 1-1
Configuration Changes Using Xstore Office
Audience
This guide is intended for technical personnel working with Xstore Point of Service. This
can include anyone responsible for altering or creating process flows, configuring Xstore
Point of Service, or those who are looking for a more fundamental understanding of
Xstore Point of Service. Anyone using this guide should have a working knowledge of
XML, SQL databases, the Windows or Linux operating systems, and the network system
being used.
Introduction 1-3
About this Guide
• Chapter 19, “ZPL II Label Configuration” - This chapter provides information about
using ZPL II (Zebra Programming Language) for communicating with label printers
for barcode label printing.
• Chapter 20, “Store Sales Goals Setup” - This chapter provides information about
importing store sales goals for a store into Xstore Point of Service where they can be
viewed by store associates.
• Chapter 21, “Store Replenishment Orders” - This chapter provides information
about store replenishment order management. This feature provides the ability for
stores to review and change inventory replenishment suggested orders that are
generated and downloaded from the home office or a third-party system. Stores may
also prepare new inventory replenishment and purchase order requests.
• Chapter 22, “Workstation Configuration” -This chapter provides information about
workstation configurations.
• Chapter 23, “Order Management System Options”- This chapter provides
information about using CW Order Management System as the System of Record
(SOR) for customer information.
• Chapter 24, “Customer Engagement Cloud Services Configuration” - This chapter
provides information about submitting a real-time add/update of a customer record
during a transaction to a 3rd party CRM system through the Web-service.
• Chapter 25, “Order Broker Configuration” - This chapter provides information
about the configurations that support the Oracle Retail Order Broker Cloud Service.
This optional module can be interfaced with Xstore Point of Service to provide
information about inventory availability across all sales channels.
• Chapter 27, “Oracle Hospitality OPERA Property Management Configuration”-
This chapter provides information about the configurations that support the Oracle
Hospitality OPERA Property Management. This optional module can be interfaced
with Xstore Point of Service.
• Chapter 28, “Rotating Service Credentials for Integrated Systems”- This chapter
provides information about how to rotate service credentials in Xstore Point of
Service for integrated systems.
• Chapter 29, “Email Customer Receipts” - This chapter provides information about
automatically sending receipts from a retail transaction to a customer’s valid email
address. After a retail transaction is completed, any receipts configured to be
emailed will be rendered as PDF documents, and sent to the customer's email
address as email attachments.
• Chapter 30, “Rain Check Setup & Configuration” - This chapter provides
information about setting up rain check functionality. Rain checks are issued to
customers that request an item that is out of stock. It allows the customer to
purchase the item at today's price at a later date (once stock is replenished).
• Chapter 31, “Customer Account Configuration” - This chapter provides information
about the configurations that support Configurable Customer Accounts (CCAs).
These accounts provide the ability to define unique customer account types, giving
retailers the flexibility to manage account types with different business rules.
• Chapter 32, “Customer Maintenance Configuration” - This chapter provides
information about implementing and maintaining the Customer Wish List and
Customer Attributes features.
• Chapter 33, “SSL Cert Check at Startup” - This chapter provides information about
the SSL check performed on the expiration dates of certificates used for SSL
communication with Xstore Office at startup.
• Chapter 34, “Update Services & File Movement” - This chapter provides summary
information at a high level about the Xstore Point of Service call made to the Update
Service on a scheduled interval to retrieve new manifests. Checking the update
service at regular intervals throughout the day provides the ability to pull down
data changes to stores in real time.
• Chapter 35, “Context-Sensitive Help” - This chapter provides information about
associating an HTML help file with an existing context. This chapter also provides
information about using dynamic flash content on the login screen.
• Chapter 36, “Country Pack Configuration” - This chapter provides information
about configurations available in country packs.
• Chapter 36, “Translation Files” - This chapter provides information about the Xstore
Point of Service translation files used for all messages and prompts in the system.
• Chapter 37, “Xstore Point of Service Log Files” - This chapter provides information
about the Xstore Point of Service log files, including a brief description of the file and
where it can be configured. The Log Troubleshooting Tips section briefly describes how
you can use the xstore.log file to troubleshoot an issue.
• Chapter 38, “Menu & Tab Configuration” - This chapter provides information about
hiding menu options based on security privilege, MenuConfig.xml options,
TabConfig.xml options, and configuring the menu button layout.
• Chapter 39, “BIN Ranges” - This chapter provides information about the BIN range
values that must be downloaded to Xstore Point of Service for authorized card
tenders.
• Chapter 40, “Data Purger Overview” - This chapter provides information about the
Data Purger application used for maintaining the database by deleting records
according to a set of configuration parameters.
• Chapter 41, “Xstore Point of Service Management Console” - This chapter provides
information about the Java Management Extensions (JMX) application that runs in
the background when Xstore Point of Service is running and allows users with the
appropriate security level to view system information about the application.
• Chapter 42, “Transaction Replicator” - This chapter provides information about the
Transaction Replicator utility which is used to retrieve transactions from the Store
Primary data source and add them to the replication queue on the system where the
utility is run.
• Chapter 43, “Internationalization”- This chapter provides a general overview of
internationalization, localization, and multilingualization, and describes how these
concepts are implemented and configured in Xstore Point of Service.
• Chapter 44, “Xstore Mobile Configuration” - This chapter provides information
about the Xstore Mobile configurations.
• Chapter 45, “Temporary Store Configuration” - This chapter provides information
about the temporary store configurations.
• Appendix A: “Configuration Files” - This appendix lists the various Xstore Point of
Service configuration files and directories, along with a brief description of their
effect on Xstore Point of Service processing.
• Appendix B: “EFTLink” - This appendix explains how to setup Xstore Point of
Service for EFTLink and provides an overview of the EFTLink process.
Introduction 1-5
About this Guide
Overview
Every modification to the Xstore Point of Service application results in a change to the
version number. To track these changes, the Xstore Point of Service version number
consists of three components:
1. Base Version
2. Customer Version
3. Patch Level
- For Xstore Office, the version number is visible in the following locations:
* On the splash screen.
* On the help screen.
* By pressing Alt+V.
* In the xstore.log file:
********************
VERSION INFORMATION
********************
Xstore version 18.0.0.0.414 - 0.0.0 - 0.0 (Tue Aug 21 22:10:32
CEST 2018)
Database [LOCAL] version 18.0.0.0.414 - 0.0.0 - 0.0 (2018-10-11
12:52:15.28)
Database [STORE] version 18.0.0.0.414 - 0.0.0 - 0.0 (2018-10-11
12:52:15.28)
Database [CENTRAL] version 18.0.0.0.414 - 0.0.0 - 0.0 (2018-10-11
12:52:15.28)
- For Xstore Office, the version number is visible in the following locations:
* In the Xstore Office version page.
* In the xcenter.log file:
2018-10,-11 11:37:19,178 INFO [WrapperSimpleAppMain]
[com.micros_retail.xcenter.bootstrap] Xcenter Version:
1.0.0.0.414 - 0.0.0 - 0.0
Formats
The version numbers are displayed in the format:
Base Version - Customer Version (including Patch Version)
Which displays as:
18.0.0.0.414 - 0.0.0 - 0.0
BASE CUSTOMER
A. B. C. D. E. F. G. H. I.
Base Version
The Base Version is made up of 4 components, separated by a decimal point.
A. Major Version
B. Minor Version
C. Maintenance (bug-fix) release number
D. Patch Release Number
Note: All subsequent version values are reset to 0 each time a new
major, minor, or maintenance release begins. For example, when the
Minor Version is incremented, both the Maintenance and Build
numbers are reset to 0.
Customer Version
The Customer Version is a series of 5 numbers in the format: 0.0.0 - 0.0. In order to
maintain consistent usage of the Customer Version for all customers, the following
versioning scheme is used:
E. Major Release Number - The Xstore Point of Service release for the customer. For a
pilot release, this will start at 1. This number corresponds to the project name. So while
working on the XYZ Release 6 project, the Major Release component of the customer
version would be 6. XYZ Release 2 would start with 2, and so on.
F. Customer Release Number - The number of releases to a customer lab for a given
Major Release. This will start at 1 for the first build delivered to a customer. As soon as
that build is delivered, the Customer Release version would change to 2. So the version
number of an initial pilot release on its 2nd release to a customer would start with 1.2.x.
G. Internal Build Number - The number of interim releases to the Oracle lab for a given
customer release. This will signify the number of times a customer release has been built
and delivered to Oracle QA for testing, without releasing it to the customer. For
example, if working on the 3rd internal build of the 2nd customer release for a
customer's initial pilot, the customer version would be 1.2.3.
H. and I. Patch Version - If a build is released to a customer or production, and
requires a patch, the 4th number is incremented. Each time a patch is released, that
number will increase. For a new release, that number will reset to 0. If there is ever a
need to patch a patch, the 5th number is incremented. So if the 1.0 patch had a fix issued
against it, the patch version would change to 1.1.
Overview
Xstore Point of Service data can be segregated by hierarchy in a horizontal approach (in
addition to the standard vertical approach), providing additional support for an item
hierarchy structure similar to the Xstore Point of Service pricing hierarchy scheme. This
type of data segregation is useful for franchise implementations.
To support this feature, org_code/org_value fields exist in many tables that do not have a
rtl_loc_id field, providing the ability to differentiate items by org hierarchy node. The
default for org_code/org_value is "*/*" (null values are not valid).
The org_code is the organization level code based on the customer’s store structure.
For example, STORE, DISTRICT, REGION, CHAIN, etc.
The org_value distinguishes one node in a hierarchy level from another, identifying a
node amongst its siblings. For example, two nodes with an org code of STORE might
have org values of 700 and 800. In this case, this would be the store number.
Define a Hierarchy
While there may be one chain within an organization, each chain may have regions,
districts, and stores. By definition, stores must be at the lowest level of a hierarchy. The
levels are completely arbitrary; what is important is the connection between the levels.
For example, if a store belongs to a district, a district belongs to a region, and a region
belongs to a chain, you can define a relationship where one node may have an arbitrary
number of children but only one parent. This describes a tree. Each node on the tree is
encapsulated in one record in whichever table is used. A node contains information used
to find the node itself as well as its parent, and it is the table's self relationship that builds
the tree.
• The loc_org_hierarchy table is a general-purpose hierarchy table that is able to drive
pricing, as well as other functionality. (See “Set Up a Location Hierarchy”).
• The loc_pricing_hierarchy table is a hierarchy table that drives pricing. (See “Set Up
a Location-Based Pricing Hierarchy”).
In the scope of the price provider itself, the two tables are interchangeable. Either table
can be used for location-based pricing, see “Location Based Hierarchical Pricing”.
See Chapter 5, “Item and Pricing Configuration” for more information about item
pricing structure and setup.
Note: Since the level code and level value provide no information on
ordering—only parent/child relationships—certain queries have
difficulty providing hierarchy nodes in order. (Specifically, querying a
price where the level code and level value are “IN” a list of nodes will
not give reliable results).
By joining the price table to one of the hierarchy tables, a user may
specify the “sort_order” field in the “ORDER BY” clause, allowing the
SQL engine to sort the results based on level code without using the
actual level code. This field is not necessary for the default
implementation but clients may wish to populate it anyway to
facilitate these types of queries.
Sample Hierarchy
If you sell an item while running LHP for Store 100 in the sample below, Xstore Point of
Service retrieves a price of $60 since it has the most recent effective date (today) within
the hierarchy (level code/level value).
REGION::NORTH_AMERICA
SUB_REGION::MIDWEST (price = $50 effective yesterday)
STATE::OHIO (price = $60 effective today)
COUNTY::SUMMIT (price = $70 expired today)
STORE::100 (price =$45 effective last week)
Overview
Xstore Point of Service supports a wide range of tax options, including tax schemes such
as sales tax, VAT, compound taxes, and bracketed taxes. Xstore Point of Service also has
the ability to look up tax rates by location, and to handle threshold taxing where the tax
rate varies by item amount or transaction amount. Xstore Point of Service may be
configured to add taxes to individual items or to a tax group for the entire transaction.
All of these tax scenarios rely on both database tables and configuration files.
In most cases, taxes are added automatically by the system. However, in cases where an
associate needs to change the tax rate for a specific item, or change the tax rate for an
entire transaction, Xstore Point of Service also supports making manual changes to the
taxes. Xstore Point of Service allows an associate to enter the tax change either as a
specific dollar amount, or as a tax percentage. Xstore Point of Service also supports
exempting tax on specific items or the entire transaction.
All sales taxes are calculated using three parameters: where the store is located, which
item is being sold, and when the tax is in effect. The “where” is important in order to
determine the taxing authorities to which the store is subject. The “item” is significant
since authorities may tax different items according to different rules. The “when” is
significant because tax rules all have effective and expiration dates that determine their
effectiveness.
Tax tables are populated to indicate the store’s tax location and the tax group to which
the item belongs. As an item is added to a transaction, the system knows which store it is
in (the tax location) and looks up the item to determine the associated tax group. The
system then puts these three pieces of data together to find the tax group information
and the associated rules.
5. Define the specific details for the tax group rule. Set up the table tax_tax_rate_rule to
specify the tax percentage rate and the tax amount. In addition, set up the
tax_tax_rate_rule_override table to specify when and how the normal tax rates are
temporarily replaced with the rates (or amounts) in the tax_tax_rate_rule table (“Tax
Rate Rule Setup”).
6. Assign the tax groups to items in the itm_item table (“Item Database Setup”).
For information about these tables and the Dataloader records used to populate them,
see the Xstore Point of Service Database Dictionary and the Xstore Point of Service Host
Interface Guide.
For information about these tables and the Dataloader records used to populate them,
see the Xstore Point of Service Database Dictionary and the Xstore Point of Service Host
Interface Guide.
HALF_UP Round to the nearest neighbor unless equidistant, then round up.
HALF_DOWN Round to the nearest neighbor unless equidistant, then round down.
HALF_EVEN Round to the nearest neighbor unless equidistant, then round to even
neighbor. Example; 2.5 rounds to 2 while 3.5 rounds to 4. Note: This
rounding method results in the least number of rounding errors during
repeat computations.
CEILING Round toward positive infinity. Note: This is the opposite of FLOOR
and never decreases the calculated value.
FLOOR Round down toward negative infinity. Note: This is the opposite of
CEILING and never increases the calculated value.
For information about these tables and the Dataloader records used to populate them,
see the Xstore Point of Service Database Dictionary and the Xstore Point of Service Host
Interface Guide.
For information about these tables and the Dataloader records used to populate them,
see the Xstore Point of Service Database Dictionary and the Xstore Point of Service Host
Interface Guide.
Step #1
In the tax_tax_loc table, create a tax_loc_id for the organization_id and provide a name
and brief description for the tax location.
Table: tax_tax_loc
Column Value
organization_id 1
tax_loc_id 100
name Solon
Table: tax_tax_loc
Column Value
org_code *
org_value *
Step #2
In the table tax_rtl_loc_tax_mapping, map the tax location ID to the retail location ID.
Table: tax_rtl_loc_tax_mapping
Column Value
organization_id 1
rtl_loc_id 301
tax_loc_id 100
Step #3
In the tax_tax_group table, create a tax_group_id for the organization_id and enter a
name and brief description for the new tax group.
Table: tax_tax_group
Column Value
organization_id 1
tax_group_id 1
org_code *
org_value *
Step #4
In the itm_item table, associate each item with a tax group by entering a tax_group_id
for it.
Table: itm_item
Column Value
organization_id 1
item_id 1002
tax_group_id 1
Step #5
In the tax_tax_authority table, define the rounding rules for the tax that is associated
with the same tax_authority_id.
Table: tax_tax_authority
Column Value
organization_id 1
name Tax
rounding_code HALF_UP
rounding_digits_quantity 2
org_code *
org_value *
Step #6
Define the tax group rules that will apply to the tax group.
Table: tax_tax_group_rule
Column Value
organization_id 1
tax_group_id 1
tax_loc_id 100
tax_rule_seq_nbr 1
compound_seq_nbr <Null>
tax_typcode SALES
org_code *
org_value *
Step #7
Define the specific details that will be used to calculate the tax for the tax group rule that
you set up in step #6.
Table: tax_tax_rate_rule
Column Value
organization_id 1
tax_group_id 1
tax_loc_id 100
tax_rule_seq_nbr 1
tax_rate_rule_seq 1
tax_rate_min_taxable_amt 0
effective_datetime <Null>
expr_datetime <Null>
percentage 0.05
amt <Null>
daily_start_time <Null>
daily_end_time <Null>
tax_rate_max_taxable_amt <Null>
breakpoint_typcode FULL
org_code *
org_value *
Step #1
In the tax_tax_loc table, create a tax_loc_id for the organization_id and provide a name
and brief description for the tax location.
Table: tax_tax_loc
Column Value
organization_id 1
tax_loc_id 100
name Solon
org_code *
org_value *
Step #2
In the table tax_rtl_loc_tax_mapping, map the tax location ID to the retail location ID.
Table: tax_rtl_loc_tax_mapping
Column Value
organization_id 1
tax_loc_id 100
rtl_loc_id 301
Step #3
In the tax_tax_group table, create a tax_group_id for the organization_id and enter a
name and brief description for the new tax group.
Table: tax_tax_group
Column Value
organization_id 1
tax_group_id 1
org_code *
org_value *
Step #4
In the itm_item table, associate each item with a tax group by entering a tax_group_id
for it.
Table: itm_item
Column Value
organization_id 1
Item_id 1002
tax_group_id 1
Step #5
In the tax_tax_authority table, define the rounding rules for the tax that is associated
with each tax_authority_id.
Table: tax_tax_authority
organization_id 1 1 1
rounding_digits_quantity 2 2 2
org_code * * *
org_value * * *
Step #6
Define the tax group rules that will apply to the tax groups.
Table: tax_tax_group_rule
organization_id 1 1 1
tax_group_id 1 1 1
tax_rul_seq_nbr 1 2 3
Table: tax_tax_group_rule
org_code * * *
org_value * * *
Step #7
Define the specific details that will be used to calculate the tax for each of the tax group
rules that you set up in step #6.
Table: tax_tax_rate_rule
organization_id 1 1 1
tax_group_id 1 1 1
tax_rule_seq_nbr 1 2 3
tax_rate_rule_seq 1 1 1
tax_rate_min_taxable_amt 0 0 0
org_code * * *
org_value * * *
Table: tax_tax_rate_rule_override
organization_id 1 1
tax_group_id 2 2
tax_rule_seq_nbr 1 1
tax_rate_rule_seq 1 1
tax_rate_min_taxable_ 0 0
amt
percentage 0.1 0
org_code *
org_value *
Note: This is not the same as the automatic, temporary tax override
described in the previous section, which does not require a reason.
Step #1
In the tax_tax_loc table, create a tax_loc_id for the organization_id and provide a name
and brief description for the tax location.
Table: tax_tax_loc
Column Value
organization_id 1
tax_loc_id 100
name BONN
org_code *
org_value *
Step #2
In the table tax_rtl_loc_tax_mapping, map the tax location ID to the retail location ID.
Table: tax_rtl_loc_tax_mapping
Column Value
organization_id 1
Table: tax_rtl_loc_tax_mapping
Column Value
tax_loc_id 100
rtl_loc_id 301
Step #3
In the tax_tax_group table, create a tax_group_id for the organization_id and enter a
name and brief description for the new tax group.
Table: tax_tax_group
Column Value
organization_id 1
tax_group_id 60
name VAT
org_code *
org_value *
Step #4
In the itm_item table, associate each item with a tax group by entering a tax_group_id
for it.
Table: itm_item
Column Value
organization_id 1
item_id 1010
tax_group_id 60
Step #5
In the tax_tax_authority table, define the rounding rules for the tax that is associated
with the same tax_authority_id.
Table: tax_tax_authority
Column Value
organization_id 1
name VAT
Table: tax_tax_authority
Column Value
rounding_code HALF_UP
rounding_digits_quantity 2
org_code *
org_value *
Step #6
Define the tax group rules that will apply to the tax group.
Table: tax_tax_group_rule
Column Value
organization_id 1
tax_loc_id 100
tax_group_id 60
tax_rul_seq_nbr 1
name VAT
compound_seq_nbr <Null>
tax_typcode VAT
org_code *
org_value *
Step #7
Define the specific details that will be used to calculate the tax for the tax group rule that
you set up in step #6.
Table: tax_tax_rate_rule
Column Value
organization_id 1
tax_group_id 60
tax_rule_seq_nbr 1
Table: tax_tax_rate_rule
Column Value
tax_rate_rule_seq 1
tax_loc_id 100
tax_rate_min_taxable_amt 0
effective_datetime <Null>
expr_datetime <Null>
percentage 0.20
amt <Null>
daily_start_time <Null>
daily_end_time <Null>
tax_rate_max_taxable_amt <Null>
breakpoint_typcode FULL
org_code *
org_value *
Compound Taxes
A compound tax is a special kind of tax that is calculated by applying it to a previously
taxed item. The value of the compound tax is based on the sum of an item’s price plus the
tax that was previously applied to it.
A tax is defined as a compound tax in the table tax_tax_group_rule. A compound
tax must also have a sequence number that indicates the order in which compound taxes
are applied, in case more than one compound tax is applicable.
Step #1
In the tax_tax_loc table, create a tax_loc_id for the organization_id and provide a name
and brief description for the tax location.
Table: tax_tax_loc
Column Value
organization_id 1
tax_loc_id 100
name Ontario
org_code *
org_value *
Step #2
In the table tax_rtl_loc_tax_mapping, map the tax location ID to the retail location ID.
Table: tax_rtl_loc_tax_mapping
Column Value
organization_id 1
tax_loc_id 100
rtl_loc_id 301
Step #3
In the tax_tax_group table, create a tax_group_id for the organization_id and enter a
name and brief description for the new tax group.
Table: tax_tax_group
Column Value
organization_id 1
tax_group_id 75
org_code *
org_value *
Step #4
In the itm_item table, associate each item with a tax group by entering a tax_group_id
for it.
Table: itm_item
Column Value
organization_id 1
item_id 1005
tax_group_id 75
Step #5
In the tax_tax_authority table, define the rounding rules for the GST and PST taxes
associated with their respective authorities.
Table: tax_tax_authority
organization_id 1 1
Table: tax_tax_authority
rounding_digits_quantity 2 2
org_code * *
org_value * *
Step #6
Define the tax group rules for the GST and PST that will apply to the tax group.
Table: tax_tax_group_rule
organization_id 1 1
tax_group_id 75 75
tax_rul_seq_nbr 1 2
compound_seq_nbr 1 2
org_code * *
org_value * *
Step #7
Define the specific details that will be used to calculate the GST and PST taxes for the tax
group rule that you set up in step #6.
Table: tax_tax_rate_rule
organization_id 1 1
Table: tax_tax_rate_rule
tax_group_id 75 75
tax_rule_seq_nbr 1 2
tax_rate_rule_seq 1 1
tax_rate_min_taxable_ 0 0
amt
org_code * *
org_value * *
Threshold Taxes
A threshold tax is a tax applied only within a specified range of values. Its entry
threshold is the minimum transaction value or item value at which it may first be
applied. A maximum value indicates the highest transaction value or item value at
which the tax may be applied. After the maximum value is exceeded, a different tax may
be applied as specified by a new threshold amount.
A common usage of a threshold tax is its application for “luxury items”: high-priced,
non-essential merchandise. But a threshold tax may be applied to any item, so that part
of the item’s price is taxed at one rate, and the balance is taxed at another rate.
1. The 10% rate is applied on the first $400.00 of the item price ($400.00 X .10) resulting
in a tax amount of $40.00. The total so far is $440.00 ($400.00 + $40.00).
2. The 20% rate is applied on the remaining $99.99 of the item price ($99.99 X .20)
resulting in a tax amount of $20.00 after rounding, for a result of $119.99 ($20.00 +
$99.99).
3. The final item total is calculated by adding the tax amounts, resulting in a final item
price of $559.99. ($400.00 + $40.00 = 440.00 and $99.99 + $20.00 = 119.99)
Step #1
In the tax_tax_loc table, create a tax_loc_id for the organization_id and provide a name
and brief description for the tax location.
Table: tax_tax_loc
Column Value
organization_id 1
tax_loc_id 100
name Solon
org_code *
org_value *
Step #2
In the table tax_rtl_loc_tax_mapping, map the tax location ID to the retail location ID.
Table: tax_rtl_loc_tax_mapping
Column Value
organization_id 1
tax_loc_id 100
rtl_loc_id 301
Step #3
In the tax_tax_group table, create a tax_group_id for the organization_id and enter a
name and brief description for the new tax group.
Table: tax_tax_group
Column Value
organization_id 1
tax_group_id 33
org_code *
org_value *
Step #4
In the itm_item table, associate each item with a tax group by entering a tax_group_id
for it.
Table: itm_item
Column Value
organization_id 1
item_id 1010
tax_group_id 33
Step #5
In the tax_tax_authority table, define the rounding rules for the threshold taxes that is
associated with their respective authorities.
Table: tax_tax_authority
Column Value
organization_id 1
tax_authority_id Auth 1
name Threshold
rounding_code HALF_UP
rounding_digits_quantity 2
org_code *
org_value *
Step #6
Define the tax group rules that will apply to the tax group.
Table: tax_tax_group_rule
organization_id 1 1
tax_group_id 33 33
tax_rul_seq_nbr 1 2
org_code * *
org_value * *
Step #7
Define the specific details that will be used to calculate the threshold taxes for the tax
group rule that you set up in step #6.
Table: tax_tax_rate_rule
organization_id 1 1
tax_group_id 33 33
tax_rule_seq_nbr 1 2
tax_rate_rule_seq 1 1
tax_rate_min_taxable_amt 0 400.01
Table: tax_tax_rate_rule
org_code * *
org_value * *
Database Configuration
The table tax_tax_rate_rule includes the column tax_loc_id and it should
contain an entry that is matched to an entry in the table tax_postal_code_mapping.
In the example below, tax_loc_id “TL-1000” is associated with postal_code
“44117”.
tax_tax_rate_rule Table
tax_postal_code_mapping
XML Configuration
The configuration file SysConfig.xml contains some options that are specifically related
to Send Sale/Remote Sale transactions. The configuration is found within the SendSale
section.
<Setting name="SendSale---UseThisStoreAsFailOverTaxRate">true</
Setting>
When the system cannot find the appropriate tax location based on the ship-to postal
code of the send sale order, the system uses this configuration to determine taxing.
- true = Use the current store’s tax location when unable to find the ship-to postal
code tax location.
- false = The system will charge no tax if the system cannot find tax information
for the destination ZIP code.
<Setting name="SendSale---SendTaxType">DESTINATION</Setting>
This is the method the system uses to calculate sales tax for send sale orders.
- DESTINATION - Use the destination tax rate.
- SELLING - Use the selling store tax rate.
- DEST_INSTATE - Use the selling store tax rate if the destination is located in the
same state as the current store.
Another option determines whether or not Xstore Point of Service will prompt for a
reason for applying a tax exemption. When true, a prompt displays where a reason can
be selected from a list of possible exemptions.
<Setting name="Tax---PromptForTaxExemptReason">true</Setting>
• If a value of ALL is found, then the new tax group id will be applied to the
transaction. The items sold on the transaction are summed up to one single tax
group in the POS and on the receipt.
• If a Customer group value is found, then the new tax group id will be applied to the
transaction only if the customer is a member of the specified group. The items sold
on the transaction are summarized by group in the POS and on the receipt.
priority 10 10
For more information about this table and the Dataloader record used to populate it, see
the Xstore Point of Service Database Dictionary and the Xstore Point of Service Host Interface
Guide.
Overview
Item setup is closely tied to item pricing. For this reason, both item setup and pricing
setup processes will be covered in this chapter. Refer to the Item Pricing Overview
section below to learn more about the pricing structures supported in Xstore Point of
Service. “Item Setup Overview” defines the steps required to set up items and item
prices in your organization.
Note: The pricing module in Xstore Office was designed without any
knowledge of the pricing_hierarchy, and is only aware of the
organization_hierarchy. Refer to the Xstore Office User Guide for
more information.
Because only a single base unit price for an item may be derived at any given time, the
rules for such a derivation, given an arbitrary number of pricing tiers, will usually be
client-specific.
Note: Before items can be set up, you must first set up taxing
information, including a unique identifier for the tax group in
tax_tax_group.tax_group_id. See Chapter 4, “Tax Setup &
Configuration”.
The process required to set up items for your stores is provided below, along with a link
that can be followed to each section for more information.
1. Define the item information in the itm_item table (“Item Database Setup”).
2. Define the item pricing information in the itm_item_prices table (“Hierarchy-
based Pricing Database Setup”).
3. Define the non-physical item information in the itm_non_phys_item table. Non-
physical item information must also be set up in the itm_item table (“Non-Physical
Item Database Setup”).
Note: All relevant item fields for non-physical items are loaded using
the NON_PHYSICAL_ITEM record. Refer to the Xstore Point of Service
Host Interface Guide for more information.
instead of an item ID during a sale transaction, the system automatically lists the
corresponding dimensions from the database tables and prompts the user to make
selections. By using this process, the system narrows the scope of the search, and
ultimately, allows the user to add the item with matching dimensions to the transaction.
In addition to using a style ID to identify a specific item ID in a sale transaction, setting
up the item dimensions in the database is also used to display the item grid in Item
Lookup functions.
Style setup is based on a “Dimension System”. A dimension system is a generic group of
dimension types and values with which one or more styles can be associated as a means
of specifying how items of a style are differentiated.
Setup Overview
1. Define a style:
- A style has a unique style ID that is stored in the item_id column of the
itm_item table and an item_lvlcode value of STYLE.
- Each style ID is linked to a dimension system in the dimension_system column
of the itm_item table.
For detailed information, see “itm_item Table Setup”.
2. Define the style dimension types and values:
- In the itm_item_dimension_type table, define the types of dimensions
associated with the dimension system and choose sequences and sort orders for
the dimensions.
For detailed information, see “itm_item_dimension_type Table Setup”.
Table Description
itm_item Contains item information to the lowest merchandise level for which
inventory and sales records are retained within the retail store.
DataLoaderConfig.xml Records
<RecordType name="ITEM">
DataLoaderConfig.xml Records
RecordType name="ITEM_DIMENSION_TYPE">
itm_item_dimension_ Contains all possible values associated with each dimension within a
value dimension system.
DataLoaderConfig.xml Records
<RecordType name="ITEM_DIMENSION_VALUE">
Table Description
DataLoaderConfig.xml Records
<RecordType name="ITEM_DIMENSION_2">
Note: *If provided, these fields can be sent in with the following fields
on the ITEM record as well:
<Field filePosition="83" name="Dimension1" />
<Field filePosition="84" name="Dimension2" />
<Field filePosition="85" name="Dimension3" />
<Field filePosition="86" name="OrgCode" />
<Field filePosition="87" name="OrgValue" />
<Setting name="ItemLookup---LoadSalesHistory">true</Setting>
<Setting name="ItemLookup---LoadSimilar">true</Setting>
<Setting name="ItemLookup---LoadSubstitute">true</Setting>
<Setting name="ItemLookup---LoadUpcs">true</Setting>
<Setting name="ItemLookup---PriceHistoryDays">30</Setting>
<Setting name="ItemLookup---SalesHistoryWeeks">12</Setting>
<Setting name="ItemLookup---ShowAdvancedSearchForm">false</
Setting>
- LoadGrid - Determines whether or not the system displays the first item grid
page for the item lookup screen.
* When true, the first item grid page for the item is displayed on the lookup
screen.
* When false, the item grid page for the item is not displayed.
Xstore Point of Service Example - Item Lookup By Style Using the Item
Grid
1. When the associate selects the Item Lookup menu option, Xstore Point of Service
displays the Item Lookup form.
2. The associate enters the itm_item.item_id for the style item and Xstore Point of
Service displays the item detail screen.
parent_ dimension_
item_id name description item_lvlcode item_id system
Note: Not all table values are shown for the grid example.
Note: Not all table values are shown for the grid example.
Note: Not all table values are shown for the grid example.
- The attached item icon displays next to an attached item on the View Port.
For information about this table and the Dataloader record used to populate it, see the
Xstore Point of Service Database Dictionary and the Xstore Point of Service Host Interface
Guide.
<Setting name="AttachedItems---NotifyItemAdded">true</Setting>
- EnableAttachedItems - This configuration option turns on/off the attached
item functionality.
* When true, attached item functionality is enabled.
* When false, attached item functionality is disabled.
- NotifyItemAdded - Determines whether or not the system displays a prompt
whenever an attached item is added to the retail transaction.
* When true, a prompt is displayed whenever an attached item is added to the
retail transaction.
* When false, no prompt is displayed when an attached item is added to the
retail transaction.
- AddWithMessage - Determines whether or not the system notifies the associate
by displaying the message in the instruction area of the sale screen whenever an
attached item is added to the retail transaction.
* If true, a notification message is displayed in the instruction area of the sale
screen whenever an attached item is added to the retail transaction.
* If false, a notification message is not displayed in the instruction area of the
sale screen when an attached item is added to the retail transaction.
- MessageTitle - If AddWithMessage is true, the text attached to this value in
the translations.properties file will be displayed in the message title. See
Chapter 6, “Item Messaging Configuration” for more information about item
messaging setup.
- MessageKey - If AddWithMessage is true, the text attached to this value in the
translations.properties file will be displayed as the message. See
Chapter 6, “Item Messaging Configuration” for more information about item
messaging setup.
- LoadSimilar - Determines whether or not the system displays all items with
the same style as the current item.
* When true, the system displays all items with the same style as the current
item.
* When false, the system does not display items with the same style as the
current item.
- LoadSubstitute - Determines whether or not the system displays all
substitute items for the current item.
* When true, the system displays all substitute items for the current item.
* When false, the system does not display substitute items.
- LoadPriceHistory - Determines whether or not the system displays the price
history of the current item.
* When true, the price history of the current item is displayed.
* When false, the price history of the current item is not displayed.
- LoadSalesHistory - Determines whether or not the system displays the sales
history of the current item.
* When true, the sales history of the current item is displayed.
* When false, the sales history of the current item is not displayed.
- LoadGrid - Determines whether or not the system displays the first item grid
page for the item lookup screen.
* When true, the first item grid page for the item is displayed on the lookup
screen.
* When false, the item grid page for the item is not displayed.
Note: Kits can be sold through layaway, send sale, remote send, and
special order, but not through distributed orders.
When a Kit is added to a sale, the component items are displayed in rows below, and
part of, the parent kit line item. Component items are displayed as the quantity included
in the Kit line item, along with the component item description. The lines that identify
the kit components are not line items themselves and cannot be changed: they are
provided as a visual reminder of what items make up the Kit. The Kit item itself cannot
prompt for price and cannot contain any components that are set to prompt for price.
Taxes and discounts applied to the Kit ignore the component items of the Kit. In
addition, any deals available for the component items individually will not be taken into
account in deal calculations for the kit.
Once a Kit is sold and its transaction has been persisted, the record of the Kit being sold
and what components made up the Kit resides in the database.
The trl_kit_component_mod table contains the collection of all kit component
modifiers for all persisted Kit sale line items. (As such, it can be thought of as a child of
the trl_sale_lineitm table). The kit component modifier records each belong to a
sale line item that represents the sale or return of a Kit item.
The kit component modifier records contain:
• the item ID of the kit component item,
1.This value will always be the number of component items per Kit times the number of Kits sold and is not affected
by the LinkComponentQtyToKitQty setting in SysConfig.xml
Note: A kit component whose begin and end dates do not include the
current day of business will not be included in the kit. This will not
affect the sale/availability of the kit itself, just the components that
make up the kit.
Note: Proceeding with the return is a secured option that requires the
user to have the RETURN_KIT privilege.
Note: Returns of items that are also components in one or more kits
are processed without consideration of their kit membership.
component items are multiplied by 3. That is, they display the total number
of items in all kits.
* When false, the component item quantity will not change, regardless of the
parent kit line item's quantity. For example if there are 3 kits sold, the
component items are unchanged. That is, they display the number of items
in each kit.
- NumKitComponentsToDisplay - The maximum number of kit components to
display on the virtual receipt for a kit line item. If there are more kit components
than rows available for display, then the last row will be used to display a
continuation string, such as an ellipsis (...).
For example, if NumKitComponentsToDisplay is set to 5 and a kit has 5 items,
then all 5 items will be displayed. However, if the kit has 6 items, then 4 items
will be displayed and the fifth line will be used for “more...”.
Note: The receipt will show all items regardless of this value.
Item Matrix
Note: A touch-screen or mouse is required to use this feature.
The Item Matrix function displays an item touch grid that can be used during a sale to
find and add sale items to the current transaction. This feature is used to provide fast
access to a small subset of the item file.
• To exclude items from appearing on the item grid, set the following flag in the
itm_item table to true:
itm_item.disallow_matrix_display_flag
• To exclude levels in the merch hierarchy from appearing on the item grid, set the
following flag in the itm_merch_hierarchy table to true:
itm_merch_hierarchy.disallow_matrix_display_flag
• Set up the color scheme in the com_code_value table.
Categories include the following:
ITEM_MATRIX_COLOR_CLASS
ITEM_MATRIX_COLOR_SUBCLASS
ITEM_MATRIX_COLOR_DEPT
ITEM_MATRIX_COLOR_ITEM
ITEM_MATRIX_COLOR_SUBDEPT
Supported colors include: DEFAULT, BLUE, AQUA, BRONZE, BROWN, GRAY,
GREEN, MAROON, ORANGE, PURPLE, RED, TEAL, and YELLOW
Item Images
Xstore Point of Service provides a method to display multiple sizes of an item image as
they correspond to contextual areas of Xstore Point of Service. Using this method, you
can specify different sizes of an image to correspond to the display area in Xstore Point
of Service. For example, you can store a thumbnail sized picture, an item lookup sized
picture, and a purchase history sized picture to be used within the specific Xstore Point
of Service context.
Product images can be called from a file or from an “http address” that will produce the
image.
Recommended image sizes on 1024x768 resolution:
Database Setup
The itm_item_images table stores image information for items. For information about
this table and the Dataloader record used to populate it, see the Xstore Point of Service
Database Dictionary and the Xstore Point of Service Host Interface Guide.
Figure 5-3: Tap the Image and the Item Information Displays in the View Port
The dot(s) at the bottom of the ITEMS page tab indicate the number of pages. (Only one
“dot” is shown in this example). If there are multiple dots, then there are multiple pages.
Swipe on the dots to get to the next available page.
The Quick Items tab displays items from the itm_quick_items table. It is populated
using DataLoader.
See Chapter 38, “Menu & Tab Configuration” for more information about setting up the
Quick Items tab.
Overview
There are several types of messages that may be displayed in the information section of
the register screen during a sale transaction: text messages, HTML messages, titled
image messages, and composite messages.
• Text messages consist of only text characters that will wrap within the confines of
the information section on the register screen. The text information will adjust to fit
within the information section according to the amount of text in the message. No
images can be included as part of a text message. Place the .txt file in the directory as
defined in <MessageFilePath> in SysConfig.xml.
• HTML messages may include both graphics and text. Often HTML messages are
used to show a picture of an item at the register as it is being sold. If an HTML
message is configured to display an image with embedded text, the text size and
picture size will always be the same when it displays. Place the HTML file in the
directory as defined in <MessageFilePath> in SysConfig.xml.
• Titled Image messages consist of an image displayed along with a title on the top of
the information section area. Place the graphic file in the directory as defined in
<MessageFilePath> in SysConfig.xml. Supported image types include: jpg, gif,
bmp, jpeg, png, wbmp.
• Composite messages include both graphics and text. An image and text message are
displayed together in the information section area. No title is displayed. The layout
of the image in relation to the text message is configured via four layout options
handled by four HTML templates. The templates are stored along with the item
message images in <MessageFilePath> in SysConfig.xml. Supported image types
include: jpg, gif, jpeg, png, wbmp (not bmp).
The procedure for setting up all types of messages is similar. If specific times or dates are
associated with an item, a message may be configured to display for just that period and
it must be associated with a specific transaction type.
The item message setup process uses both database tables and configuration files. In this
chapter, the database table information and the DataLoader Record and fields are listed
for each table and column. The SysConfig.xml item messaging options are also listed
here.
The process required to set up messages for items, and a link to each section for more
information, is provided below:
1. Set up the message detail in the itm_item_msg table to define messages that can be
specifically tied to items in a sale (“Item Message Detail Database Setup”).
2. Specify the type of transaction (Sale, Return, etc.) during which the message should
appear in the itm_item_msg_types table (“Transaction Type Database Setup”).
Note: You can then further classify the specific sale transaction types
(Send Sale, Layaway, etc.) in SysConfig.xml. (“Message Configuration
Options in System Config”)
Note: The configuration value for the message path should not be
changed.
• The message key contains the name of the HTML or text file, or an i18n translation
containing the name of a text, html, or image file in
translations_en.properties file (or other translation file such as
translations_fr_CA.properties).
• The title key is a text translation or an i18n translation key name for the title of the
message or the message that appears in the message window. This is optional in
some message types.
The message key and title key must begin with the underscore character (_) and are case
sensitive. An equal sign (=) separates the key from the message. The message key and
title key in the file must match the corresponding entries in the itm_item_msg table.
itm_item_msg Values:
message ID= SUM1
effective date= 01/15/2009
message key= _TESTItemMsg1Key
title key= _TESTItemMsg1Title
set content type to text/html
2: itm_item_msg_types Table
itm_item_msg_types Values:
message ID= SUM1
sale line item type code= SALE
3: itm_item_msg_cross_reference Table
itm_item_msg_cross_reference Values:
message ID= SUM1
item ID= 6015 (Charcoal Suit)
4: itm_item Table
itm_item Values:
Would result in this item HTML message displayed when the specified item (6015) is
sold:
In translations_en.properties:
Message Key Example =_TESTItemMsg1Key=Scarf.txt
Would result in this item text message displayed when the specified item (6015) is sold:
itm_item_msg Values:
message ID= Reminder, effective date= 01/15/2009
message key= _ItemMessageReminderKey
title key=_ItemMessageReminderTitle
set content type to multipart/mixed
Note: The content_type field of the itm_item_msg table for the item
message must contain the value: multipart/mixed.
2: itm_item_msg_types Table
itm_item_msg_types Values:
message ID= Reminder
sale line item type code= SALE
3: itm_item_msg_cross_reference Table
itm_item_msg_cross_reference Values:
message ID= Reminder
item ID= 6022 (Silk Tie)
4: itm_item Table
itm_item Values:
item messages flag= true for item ID 6022 (Silk Tie)
5: translations_en.properties
Define the message key and title key in translations_en.properties.
translations_en.properties Values:
_ItemMessageReminderKey=Necktie.png
Note: Images larger than the message area will NOT be scaled down
to fit. Large images may push the text message out of the user's view.
The sold item (6022) is associated with the message ID (Reminder) in a SALE transaction.
Message Title Example=_ItemMessageReminderTitle= Attention Associates: Don't
forget to remove the security tag from this item
itm_item_msg Values:
message ID= Adopt, effective date= 01/15/2009
message key= _ItemMessagePetAdoptionKey
title key=_ItemMessagePetAdoptionTitle
set content type to image/?
2: itm_item_msg_types Table
itm_item_msg_types Values:
message ID= Adopt
sale line item type code= SALE
3: itm_item_msg_cross_reference Table
itm_item_msg_cross_reference Values:
message ID= Adopt
item ID= 7005 (Pet Adoption)
4: itm_item Table
itm_item Values:
item messages flag= true for item ID 7005 (Pet Adoption)
5: translations_en.properties
Define the message key and title key in translations_en.properties.
translations_en.properties Values:
_ItemMessagePetAdoptionKey=Pet.gif
Note: Images larger than the message area will be scaled down to fit.
However, when an image is configured to be on the right, it may be
cut off if it is too large to fit into the space reserved for images.
_ItemMessagePetAdoptionTitle=Thank You!
The sold item (7005) is associated with the message ID (Adopt) in a SALE transaction.
Message Title Example=_ItemMessagePetAdoptionTitle=Thank You!
Message Key Example =_ItemMessagePetAdoptionKey=Pet.gif).
Images larger than the message area will be scaled down to fit.
* left – Maps to the template which orients item image to the left of text
message.
Overview
This chapter is designed to assist you in managing the Xstore Point of Service tender
types. Use the following information to define and set up the valid tender types and
tenders for your store.
The tender setup process uses both database tables and configuration files. In addition to
the database table information, the DataLoader Record and fields are listed for each table
and column.
Register sale transactions, till counting, petty cash, vouchers and other tender-related
transactions are all based on your tender configuration setup. Every tender is identified
by a "tender type" and has a "tender ID" associated with it.
The process required to set up tenders for your stores, and a link to each section for more
information, is provided below:
Note: Refer to the Xstore Point of Service Host Interface guide for more
information about the download record formats.
1. Define the tender types in the tnd_tndr_typcode table (“Tender Type Database
Setup”).
2. Define the tenders for each tender type in the tnd_tndr table (“Tender Database
Setup”).
3. Define the tender options for each tender type in the tnd_tndr_options table
(“Tender Options Database Setup”).
4. Define the unique denominations that are associated with each tender within an
organization in the tnd_tndr_denomination table (“Tender Denomination
Setup”).
5. Define when tenders may be used within the system by association with an
availability code in the tnd_tndr_availability table (“Tender Availability
Setup”).
6. Define the tenders that will be available to employee groups for specific transaction
types and uses, and the limits for those groups, in the tnd_tndr_user_settings
table (“Tender User Settings Setup”).
7. Define and set up the tender exchange rates for all foreign tenders used in your store
using the tnd_exchange_rate table (“Tender Exchange Rate Setup”).
8. Set up configuration options in SysConfig.xml as needed (“Miscellaneous Tender
Configuration Options”).
9. If needed, modify the MenuConfig.xml file to add new tenders or remove any
tenders that will not be used (“Menu Config Configuration”).
10. If needed, set up threshold limits for requiring a customer signature based on
transaction total (“Credit Card Signatures Based on Tender Amount”).
11. If applicable, set up additional configuration options if you support giving change
back to the customer in foreign cash currency (“Foreign Cash Currency As
Change”).
are most typically franked are gift certificates and checks. To view the MICR in the
Electronic Journal, you must enable ShowMicrButtonOnTransactionSearchForm
in System Config.
ACCOUNT ACCOUNT_RECEIVABLE
ACCOUNT_CREDIT ACCOUNT_CREDIT
CHECK CHECK
TRAVELERS_CHECK CAD_TRAVELERS_CHECK
USD_TRAVELERS_CHECK
COUPON COUPON
CREDIT_CARD AMERICAN_EXPRESS
DEBIT_CARD
DINERS_CARD
DISCOVER
JCB
MASTER_CARD
PRIVATE_LABEL
VISA
ROOM_CHARGE
VOUCHER MERCHANDISE_CREDIT_CARD
GIFT_CARD
GIFT_CERTIFICATE
STORE_CREDIT
AJB_GIFT_CARD
DACS_GIFT_CARD
RELOAD_DACS_GIFT_CARD
RELOAD_GIFT_CARD
RELOAD_MERCHANDISE_CREDIT_CARD
ISSUE_MERCHANDISE_CREDIT_CARD
ISSUE_GIFT_CARD
ISSUE_AJB_GIFT_CARD
ISSUE_DACS_GIFT_CARD
ISSUE_GIFT_CERTIFICATE
ISSUE_MERCHANDISE_CREDIT_CARD
ISSUE_STORE_CREDIT
ISSUE_XPAY_POINTS_CARD
CURRENCY USD_CURRENCY
CAD_CURRENCY
EUR_CURRENCY
LOCAL_CURRENCY_ROUNDING
GBP_CURRENCY
HOME_OFFICE_CHECK HOME_OFFICE_CHECK
MISCELLANEOUS MISC_TENDER_1
MANUFACTURER_COUPON
MISCELLANEOUS_VOUCHER MALL_CERTIFICATE
Note: The employee group IDs are set up in the sec_groups table.
See “Credit Card Signatures Based on Tender Amount” for more
information about eliminating the requirement for a customer
signature when the amount due is less than a pre-defined threshold
amount for a credit card tender.
For information about this table and the Dataloader record used to populate it, see the
Xstore Point of Service Database Dictionary and the Xstore Point of Service Host Interface
Guide.
Credit/Debit Table
Xstore Point of Service persists a SHA-1 hash value in its credit/debit table for the
account # used. (This is provided in order to track same card use for Loss Prevention
concerns). This functionality is configured on or off via a config switch in
system.properties.
If, for example, the minimum denomination amount is the nickel, enter
the value as 5.0, not .05
System.Properties
The following configuration option is found in the system.properties file and
determines the local currency in use.
dtv.location.CurrencyId=USD
TENDER::EXCHANGE_OUT
Refer to the following Oracle documentation for additional information:
• For a comprehensive listing of each table in the database, refer to the Xstore Point of
Service Database Dictionary.
• For more information about the files produced by the Xstore Point of Service
application for transmission to host systems and the files accepted for processing
updates to Xstore Point of Service operating tables, refer to the Xstore Point of Service
Host Interface guide.
override the halt prompt scenario when foreign change due exceeds Xstore Point of
Service's available funds.
Overview
Discount configuration requires a few key parameters: discount type code, application
method code, calculation method code, associating discounts to groups, and associating
discounts to transaction types. Once the discounts are set up, the sale associate can apply
these pre-defined discounts during sale transactions.
The discount setup process uses both database tables and configuration files. In this
chapter, the database table information and the DataLoader Record and fields are listed
for each table and column. The SysConfig.xml discount options are also listed here.
The process required to set up discounts for your stores is provided below, along with
links to each section for more information:
1. Define discount code, discount type code, discount application method code,
calculation method code and other discount details in the dsc_discount table
(“Discount Database Setup”).
2. Associate customer groups to the discount in the dsc_discount_group_mapping
table (“Associate a Customer Group to a Discount”).
3. Associate the discount code to valid transaction types in the
dsc_discount_type_eligibility table (“Associate a Discount to a Transaction
Type”).
4. Associate a manufacturer's coupon to the discount code in the dsc_coupon_xref
table (“Associate Manufacturer's Coupon to a Discount”).
5. Define discount code item exclusions in dsc_discount_item_exclusions and
item inclusions in dsc_discount_item_inclusions (“Define Discount Item
Exclusions and Inclusions”).
6. Define compatible discounts in the dsc_discount_compatibility table
(“Define Compatible Discounts”).
7. Set the discount-related options in the SysConfig.xml configuration file as needed
(“System Config Discount Options”).
Once the discount has been defined, you can specify items as invalid for it
(dsc_discount_item_exclusions), or specify items as eligible for it
(dsc_discount_item_inclusions). The combination of item ID and discount code
is unique within each of the tables. For information about these tables and the
Dataloader records used to populate them, see the Xstore Point of Service Database
Dictionary and the Xstore Point of Service Host Interface Guide.
SysConfig.xml Settings
The following settings are used to determine if deal data should be automatically
refreshed after a certain time period has passed. If this is set to true, Xstore will check if
data in any deal table has been modified since the last time the data was loaded. If there
are changes, the deal data will be reloaded.
• RefreshPromotions—CheckingForNewCachedPromotions
The default for this value is false. Set to true if automatic refreshes are desired.
• RefreshPromotions—
TimeIntervalForCheckingForNewCachedPromotions
The default is 60 minutes and cannot be less than 10.
Overview
This chapter provides information about the configurations that support the assignment
of sales associates from within a sale transaction. This configuration determines whether
sales commission can be distributed on line items within that sales transaction
(including returns, layaways etc.).
SysConfig.xml
<Setting name="CommissionedAssociates---
AllowCashierAsCommissionedAssociate">true</Setting>
<Setting name="CommissionedAssociates---
DefaultCashierAsFirstCommissionedAssociate">true</Setting>
<Setting name="CommissionedAssociates---
DefaultCommissionMethod">CURRENT_CASHIER</Setting>
<Setting name="CommissionedAssociates---
DisplayPerItemOnReturn">false</Setting>
<Setting name="CommissionedAssociates---
DisplayPerItemOnSale">false</Setting>
<Setting name="CommissionedAssociates---
MaxCommissionedAssociatesAllowed">3</Setting>
<Setting name="CommissionedAssociates---
MinCommissionedAssociatesAllowed">1</Setting>
<Setting name="CommissionedAssociates---
PromptForCommissionedAssociates">true</Setting>
<Setting name="CommissionedAssociates---PromptPerItem">false</
Setting>
<Setting name="CommissionedAssociates---PromptWithList">true</
Setting>
<Setting name="CommissionedAssociates---
RcptIncludeFirstName">true</Setting>
<Setting name="CommissionedAssociates---
RcptIncludeLastName">true</Setting>
<Setting name="CommissionedAssociates---
RcptNewLineBetween">true</Setting>
PromptForCommissionedAssociates - This flag determines whether or not the
system prompts the user to assign commissioned associates to the new sale transaction,
or to use the cashier as the only commissioned associate for the new sale transaction,
with no prompting.
- True - Configures the system to automatically prompt for commissioned
associates.
- False - Disables the automatic prompting for commissioned associates.
- True - Display separate lines for each commissioned associate for each verified
original purchase/return line displayed on the View Port.
- False - Do not display commissioned associate lines with each verified original
purchase/return line displayed on the View Port.
PromptWithList - This configuration determines whether the user is presented with a
list of employee names in a multi-select list or with a focus bar prompt for entry of
commissioned associates’ IDs.
- True - Configures the system to prompt the user with a multi-select list of
employee names.
- False - Configures the system to prompt the user with a focus bar prompt.
DefaultCashierAsFirstCommissionedAssociate - This flag determines whether
or not the system will automatically assign the current system user/cashier as the first
default commissioned associate.
- True - Configures the system to automatically assign the current system user/
cashier as the first default commissioned associate.
- False - Disables the automatic assignment of the current system user/cashier as
the first default commissioned associate.
AllowCashierAsCommissionedAssociate - This flag determines whether or not
the system will allow the assignment of the cashier as a commissioned associate. Notice
that this configuration may conflict with the previous configuration that automatically
associates the cashier as the first commissioned associate. In addition, if the prompting
for commissioned associates is disabled, then the commissioned associate is assumed to
be the cashier and this flag is deemed irrelevant.
- True - Configures the system to allow the cashier as a commissioned associate.
- False - Disables the ability to use the cashier as a commissioned associate.
DefaultCommissionMethod - This value determines the default method used for
assigning commissions.
- CURRENT_CASHIER
- HOUSE_ACCOUNT
Any other values, or no value, will result in no commission being recorded. This
configuration only applies when prompting for commissioned associates is turned off.
PromptForCommissionedAssociates =False.
MinCommissionedAssociatesAllowed - This value determines the minimum
number of commissioned associates that may be assigned to the sales transaction. This
value must be a valid non-zero positive number.
MaxCommissionedAssociatesAllowed - This value determines the maximum
number of commissioned associates that may be assigned to the sales transaction. This
value must be a valid non-zero positive number.
• If <Setting name="CommissionedAssociates---RcptNewLineBetween">false</
Setting>:
Overview
Employee setup, configuration, and maintenance includes all of the steps necessary for
entering or updating any information about your employees. The amount of employee
information you maintain can be very basic or highly detailed, depending upon your
business needs.
Employee information is used for a number of purposes, such as providing the
information used for timecards, payroll, and reporting. It is also used for assigning
system privileges, work assignments, employee benefits, and employee status.
The employee setup, configuration, and maintenance processes use both database tables
and configuration files. In this chapter we will cover the database table information, the
DataLoader record and fields, and the SysConfig.xml employee options.
1. Set up crm_party table entries for the party_id and employee_id. (“Employee
Party Database Setup”)
2. Set up crm_party_locale_information table entries for the party_id. This
record contains the employee’s address information. (“Employee Address Database
Setup”)
3. Set up crm_party_email table entries for the party_id. This record contains the
employee’s email address information. (“Employee E-mail Address Database
Setup”)
4. Set up crm_party_telephone table information for the party_id. This record
contains the employee’s telephone contact information. (“Employee Telephone
Information Database Setup”)
5. Set up employee passwords in hrs_employee_password. (“Employee Password
Database Setup”)
6. Define employee detail: pay status, role code, status code, type code, marital status
code, group code, department code, and other employee-specific information in the
hrs_employee table. (“Employee Detail Database Setup”)
7. Assign each employee to a particular store or stores, providing the ability for him or
her to log on to Xstore Point of Service at the specified location(s) during the given
date range in the hrs_employee_store table. (“Assign the Employee to a Store”)
ApplicabilityCondition
Determines if this record will be loaded based on whether or not a field value was
provided.
<Dao name="PartyEmail">
<ApplicabilityCondition
className="dtv.data2.dataloader.applicability.ValueApplicabilityC
ondition">
<Param key="testValue" value="filePosition=31" />
<Param key="applicableValue" value="" />
<Param key="invert" value="true" />
</ApplicabilityCondition>
<Field sysProp="dtv.dataloader.OrganizationId"
name="OrganizationId" />
<Field filePosition="03" name="PartyId" />
<Field literal="1" name="Sequence" />
<Field filePosition="31" name="EmailAddress" />
<Field literal="1" name="Primary" />
<Field literal="Home" name="EmailType" />
<Field filePosition="40" name="Contact" />
</Dao>
ApplicabilityConditions
Determines if this record will be loaded based on whether or not a field value was
provided.
<Dao name="PartyTelephone">
<ApplicabilityCondition
className="dtv.data2.dataloader.applicability.ValueApplicabilityC
ondition">
<Param key="testValue" value="filePosition=27" />
<Param key="applicableValue" value="" />
<Param key="invert" value="true" />
</ApplicabilityCondition>
<Field sysProp="dtv.dataloader.OrganizationId"
name="OrganizationId" />
<Field filePosition="03" name="PartyId" />
<Field literal="Home" name="TelephoneType" />
<Field filePosition="27" name="TelephoneNumber" />
</Dao>
<Dao name="PartyTelephone">
<ApplicabilityCondition
className="dtv.data2.dataloader.applicability.ValueApplicabilityC
ondition">
<Param key="testValue" value="filePosition=28" />
<Param key="applicableValue" value="" />
<Param key="invert" value="true" />
</ApplicabilityCondition>
<Field sysProp="dtv.dataloader.OrganizationId"
name="OrganizationId" />
<Field filePosition="03" name="PartyId" />
<Field literal="Work" name="TelephoneType" />
<Field filePosition="28" name="TelephoneNumber" />
</Dao>
<Dao name="PartyTelephone">
<ApplicabilityCondition
className="dtv.data2.dataloader.applicability.ValueApplicabilityC
ondition">
<Param key="testValue" value="filePosition=29" />
<Param key="applicableValue" value="" />
<Param key="invert" value="true" />
</ApplicabilityCondition>
<Field sysProp="dtv.dataloader.OrganizationId"
name="OrganizationId" />
<Field filePosition="03" name="PartyId" />
<Field literal="Mobile" name="TelephoneType" />
<Field filePosition="29" name="TelephoneNumber" />
</Dao>
<Dao name="PartyTelephone">
<ApplicabilityCondition
className="dtv.data2.dataloader.applicability.ValueApplicabilityC
ondition">
<Param key="testValue" value="filePosition=30" />
<Param key="applicableValue" value="" />
<Param key="invert" value="true" />
</ApplicabilityCondition>
<Field sysProp="dtv.dataloader.OrganizationId"
name="OrganizationId" />
<Field filePosition="03" name="PartyId" />
<Field literal="WorkFax" name="TelephoneType" />
<Field filePosition="30" name="TelephoneNumber" />
</Dao>
Employee ID Number
Set up the following SysConfig.xml configuration option to specify whether or not the
system automatically generates an employee ID when creating a new employee record.
<Setting name="AutoGenerateEmployeeId">true</Setting>
- When set to True, the system automatically generates an employee ID when
creating a new employee record.
- When set to False, the system prompts the associate to enter the employee ID
when creating a new employee record.
The following SysConfig.xml configuration option specifies the default employee group.
The EVERYONE group is included by default, and the Primary Group is set to the group
configured here.
<Setting name="DefaultEmployeeGroup">EVERYONE</Setting>
Employee ID Length
Set up the following SysConfig.xml configuration option to define the minimum and
maximum employee id lengths.
Minimum Length
<Setting name="MinimumEmployeeIdLength">5</Setting>
Maximum Length
<Setting name="MaximumEmployeeIdLength">20</Setting>
Employee Self-Sale
Set up the following SysConfig.xml configuration option to specify whether or not the
system allows employees to ring retail transactions for themselves.
<Setting name="EmployeeSale---AllowSelfSale">false</Setting>
- When set to True, employees can ring retail transactions for themselves.
- When set to False, employees cannot ring retail transactions for themselves.
Overview
The payroll and timecard setup process uses both database tables and configuration
files. In this chapter, the database table information and the DataLoader Record and
fields are listed for each table and column. The SysConfig.xml and
PayrollOvertimeConfig.xml payroll and timecard options are also listed here.
In addition to setting up payroll and timecards for your stores, you can also set up clock-
in and clock-out restrictions for your employees to enforce minimum meal break
durations. This configuration is done in the hrs_work_codes table. The process required
to set up payroll and timecards for your stores, and a link to each section for more
information, is provided below.
1. Define the payroll category and the timecard work codes in the hrs_work_codes
table (“Payroll and Timecard Work Code Database Setup”).
2. Set up the payroll category code details in the thr_payroll_category table
(“Payroll Category Database Setup”).
3. To have the system calculate overtime hours in Payroll, configure the payroll
overtime rule in SysConfig.xml file using the <OvertimeRuleType> tag. The
overtime rules are defined in PayrollOvertimeConfig.xml and are set in
SysConfig.xml (“Payroll Overtime Rule Configuration in System Config”).
4. Set up other payroll and timecard configuration options in the SysConfig.xml file as
needed (“Payroll Options in System Config”) and (“Timecard Options in System
Config”).
5. Set up clock-in and clock-out restrictions for your employees to enforce minimum
meal break durations as needed (“Clock-in and Clock-out Restrictions Setup”).
Rule Examples
- WEEKLYOVER40 - If associates work more than 40 hours in one week, they will
get time and one half for every hour over 40 (Base Default Value).
- DAILYOVER8 - If associates work more than 8 hours in one day, they will get
time and one half for every hour over 8.
- Multiple rule sets can be used together. For example, in the base configuration,
California uses this capability:
PayrollOvertimeConfig.xml Excerpt
<PayrollOvertimeRuleSet name="WEEKLYOVER40">
<PayrollOvertimeRule>
<PayrollCategory dtype="String">OT</PayrollCategory>
<Sequence dtype="Integer">99</Sequence>
<OvertimeRate dtype="BigDecimal">1.5</OvertimeRate>
<OTType dtype="String">WEEKLY</OTType>
<HoursOver dtype="BigDecimal">40</HoursOver>
</PayrollOvertimeRule>
</PayrollOvertimeRuleSet>
<PayrollOvertimeRuleSet name="DAILYOVER8">
<PayrollOvertimeRuleSetReference
dtype="String">WEEKLYOVER40</PayrollOvertimeRuleSetReference>
<PayrollOvertimeRule>
<PayrollCategory dtype="String">OT</PayrollCategory>
<Sequence dtype="Integer">90</Sequence>
<OvertimeRate dtype="BigDecimal">1.5</OvertimeRate>
<OTType dtype="String">DAILY</OTType>
<HoursOver dtype="BigDecimal">8</HoursOver>
</PayrollOvertimeRule>
</PayrollOvertimeRuleSet>
<PayrollOvertimeRuleSet name="DAILY_OVER8_LESSTHAN12">
<PayrollOvertimeRule>
<PayrollCategory dtype="String">OT</PayrollCategory>
<Sequence dtype="Integer">85</Sequence>
<OvertimeRate dtype="BigDecimal">1.5</OvertimeRate>
<OTType dtype="String">DAILY</OTType>
<HoursOver dtype="BigDecimal">8</HoursOver>
<HoursUnder dtype="BigDecimal">12</HoursUnder>
</PayrollOvertimeRule>
</PayrollOvertimeRuleSet>
Payroll Options
Set up the following SysConfig.xml configuration options to further classify the way
payroll functions in your organization.
<Setting name="Payroll---AllowFuturePayrollEntry">true</Setting>
<Setting name="Payroll---AllowPostPayrollPerEmployee">true</
Setting>
<Setting name="Payroll---AllowRepostingPayroll">true</Setting>
<Setting name="Payroll---AssocAdvanceAuthNumber">false</Setting>
<Setting name="Payroll---AssocAdvanceRepaymentAmount">false</
Setting>
<Setting name="Payroll---BasicCalendarPayrollWeekendingDay">7</
Setting>
<Setting name="Payroll---
IsRegularPayrollHoursFromTimeCard">true</Setting>
<Setting name="Payroll---MaxAssociateAdvanceAmount">999.99</
Setting>
<Setting name="Payroll---MaxDailyTotalPayrollHours">24.0</
Setting>
<Setting name="Payroll---PayrollCalendar---
DisplayNumberOfPreviousWeek">10</Setting>
<Setting name="Payroll---PayrollHoursRoundingMinutes">15</
Setting>
<Setting name="Payroll---PostPayroll---
AllowAutoPostWithError">true</Setting>
<Setting name="Payroll---PostPayroll---
DisplayPayrollNotYetPostMsgAtLoginIfPassPostDay">true</Setting>
<Setting name="Payroll---PostPayroll---
EnforcePostPayrollDateTime">false</Setting>
<Setting name="Payroll---PostPayroll---
OnlyWriteHourlyPayStatusEmpInPayrollLog">true</Setting>
<Setting name="Payroll---PostPayroll---PayrollPostDay">1</
Setting>
<Setting name="Payroll---PostPayroll---PayrollPostTime">12:00</
Setting>
<Setting name="Payroll---ReviewPayrollRequired">true</Setting>
• PayrollHoursRoundingMinutes - The system rounds payroll hours to the
nearest number of minutes specified here.
- 15: Minutes on a timesheet are rounded to the nearest 15-minute increment
- 30: Minutes on a timesheet are rounded to the nearest 30-minute increment
- 60: Minutes on a timesheet are rounded to the nearest hour
- NONE: Minutes on a timesheet are left as they are and not rounded at all
• PostPayroll - The system uses the payroll posting options specified here.
- EnforcePostPayrollDateTime - Determines whether or not the system
enforces the date and time to post payroll.
* When true, the date and time is enforced.
* When false, payroll posting date and time is not enforced.
- PayrollPostDay - If ProcessPayroll is set to True and payroll has not yet
been posted on this day of the week, the system automatically posts the payroll
at store close.
* 1= Sunday
* 2= Monday
* 3= Tuesday
* 4= Wednesday
* 5= Thursday
* 6= Friday
* 7= Saturday
- PayrollPostTime - If EnforcePostPayrollDateTime is set to True, the
system only allows posting payroll at this time. (format is hh:mm)
- DisplayPayrollNotYetPostMsgAtLoginIfPassPostDay - Determines
whether or not the system notifies the associate at application login when
payroll has not been posted and it’s past the payroll post day.
- 3= Tuesday
- 4= Wednesday
- 5= Thursday
- 6= Friday
- 7= Saturday
• MaxAssociateAdvanceAmount - The maximum amount of money an associate
can ask for as a pay advance.
• IsRegularPayrollHoursFromTimeCard - When set to TRUE, the system
automatically populates payroll regular hours with hours from the timecard and
does not allow the associate to edit the hours. When set to FALSE, the system allows
the associate to enter the payroll regular hours.
• AssocAdvanceAuthNumber - Determines whether or not the system prompts the
associate to enter an authorization number for an employee pay advance.
- When true, the system prompts the associate to enter an authorization number
for an employee pay advance.
- When false, the system does not prompt for an authorization number for an
employee pay advance.
• AllowFuturePayrollEntry - Determines whether or not the system allows
editing payroll for a future date.
- When true, the system will allow future payroll entries to be edited.
- When false, the system will not allow future payroll entries to be edited.
• AssocAdvanceRepaymentAmount - Determines whether or not the system
prompts for a “per paycheck” repayment amount for an employee pay advance.
- When true, the system prompts for a “per paycheck” repayment amount for an
employee pay advance.
- When false, the system does not prompt for a “per paycheck” repayment
amount for an employee pay advance.
Timecard Options
Set up the following SysConfig.xml configuration options to further classify the way
timecards are used in your organization.
<Setting name="Timecard---AllowFutureTimecardEntry">true</
Setting>
<Setting name="Timecard---
DefaultActiveEmployeeListSortType">LAST_NAME</Setting>
<Setting name="Timecard---DisplayDeletedTimecardEntry">true</
Setting>
<Setting name="Timecard---Exception---
TimecardHourGreaterThanHours">10</Setting>
<Setting name="Timecard---Exception---
TimecardHourLessThanHours">1</Setting>
<Setting name="Timecard---PrintAcceptanceForm">true</Setting>
• DefaultActiveEmployeeListSortType - The default timecard maintenance
employee list sort type.
- LAST_NAME: The system will sort the active employee list by employee last
name.
- DEPARTMENT_ID: The system will sort the active employee list by department
ID.
- EMPLOYEE_ID: The system will sort the active employee list by employee ID.
• Exception - Timecard hour exception threshold options:
- TimecardHourGreaterThanHours - This number is used to set the
maximum number of hours allowed in a timecard entry. The system marks a
timecard entry for exception if the hours exceed this threshold. If there is no
limit to the number of hours permitted in a timecard entry, enter a number that
is large enough (such as 999999) to effectively assign no limit.
- TimecardHourLessThanHours - This number is used to set the minimum
number of hours permitted in a timecard entry. The system marks a timecard
entry for exception if the hour is lower than this threshold.
• PrintAcceptanceForm - Determines whether or not the system prints an
acceptance form when a timecard entry is modified, added, or deleted in timecard
maintenance.
- When true, the system will print the acceptance form when saving a timecard
entry.
- When false, the system does not print the acceptance form when saving a
timecard entry.
• DisplayDeletedTimecardEntry - Determines whether or not the system
displays deleted timecard entries on the timecard maintenance screen.
- When true, the system displays deleted timecard entries on the timecard
maintenance screen.
- When false, the system does not display deleted timecard entries on the
timecard maintenance screen.
• AllowFutureTimecardEntry - Determines whether or not the system allows
timecard entries to be added to future dates in timecard maintenance.
- When true, the system allows timecard entries to be added to future dates in
timecard maintenance.
- When false, the system does not allow timecard entries to be added to future
dates in timecard maintenance.
Timeclock Options
Set up the following SysConfig.xml configuration options to specify clock-in rules.
<Setting name="TimeClock---
ClockInNotRequiredOnCreateEmpFlag">false</Setting>
<Setting name="TimeClock---
ClockInRequiredForAuthorizationFlag">false</Setting>
Any validation failures will always produce a user/password security override prompt,
even when the person clocking in/out has sufficient security to perform the operation
based on this privilege. This is odd behavior compared to other security privileges
which allow the user to proceed uninterrupted when they have sufficient security rights,
but it is consistent with Xstore Point of Service's "special" handling of clock-ins.
Overview
Application security is a feature that restricts user access to only those parts of the
system that are needed to perform the requirements of a role. Because Xstore Point of
Service security is role-based, user roles, membership groups, and privileges must be
defined so that security may be applied correctly.
Additional security is maintained through passwords and challenge questions. See
“User Login and Password Security”.
Privileges
A privilege is the ability to do something in the application. For example, a privilege
may be assigned to a specific portion of the application such as a button that performs a
function, a menu that provides access to related features or reports, or to a group of
fields on a form for the purpose of viewing or entering data.
A privilege may be assigned to a membership group, and thus, to an individual user
who is a member of that group. Security may be assigned by configuring an
AccessCheck in the file MenuConfig.xml.
Membership Groups
A membership group consists of one or more group IDs that are defined in the
group_id column of the sec_groups table. Examples of a group ID are MANAGER
and CASHIER. You may define as many group IDs as your security requirements
dictate, but as a general rule, do not create groups that have identical privileges assigned
to them.
Each of the group IDs is assigned to a different “bitmap position” in a binary number
that is generated when a user is assigned to a membership group. Bitmap positions are
numbered starting with “1” in the right-most position (low order bit). The next position
to the left is “2”, then “3” and so on. Users are assigned to groups in Xstore Point of
Service’s Employee Maintenance module (Back Office application).
The binary number is converted to a Base64 value because it can be represented using
ASCII (all printable) characters for the purpose of displaying the group membership.
Base64 characters include both upper case and lower case letters (52 characters), the
numbers zero through nine (0-9), and the characters “+” and “/”. As a result, Base64
includes a total of 64 characters.
If a user belongs to a membership group that includes only one group ID, then only the
bitmap position associated with that group ID is “turned on”, or has the value “1”. All of
the other bitmap positions in the group ID are “off”, that is, they all have the value of
“0”.
The following table represents the bitmap configuration for a membership group that
includes only a single group ID (using the group IDs in the sample sec_groups table,
Figure 12-1 above).
TRAINEE 2 0000010
KEYHOLDER 4 0001000
EVERYONE 1 0000001
CASHIER 3 0000100
MANAGER 5 0010000
Speed
Because the binary value that represents a group ID is based on bit positions, extremely
fast integer math is used to check an employee’s privileges. The check uses a logical
AND comparison between the employee’s group membership and the group
membership associated with the privilege being checked. If the result of the comparison
is not zero, the employee is in a group that has the privilege.
Equivalent Values
Some different group_membership settings can be decoded from their Base64 value to
equivalent binary values. This is a result of the way that Base64 encoding works.
For example, the group membership settings BQ== and BQAAAAAAAAA= are different.
But BQ== decodes to 00000101 and the group membership BQAAAAAAAAA= decodes to
0000000000000000000000000000000000000000000000000000000000000101.
The leading zeros are ignored in both group memberships which produce equivalent
binary values.
When you edit a user’s group membership in Xstore Point of Service’s Employee
Maintenance module, the longer binary value with leading zeros will be generated
because Xstore Point of Service uses at least a 64-bit number for all comparisons.
<Setting name="AllowEqualSecurityRankAccess">true</Setting>
- When set to true, employees can add/edit employees within their own rank and
lower.
- When set to false, employees can only add/edit employees with a lower group
rank.
For example, this flag determines whether or not an assistant manager can edit other
assistant managers (=true), or only those of ranks lower than assistant manager (=false).
1 0001 AQ==
2 0010 Ag==
3 0100 BA==
4 1000 CA==
Note: If two job titles have the identical set of privileges, keep things
simple by using a single group for both job titles. For example, if both
store managers and regional managers are completely unrestricted, it
doesn't make sense to set up two separate security groups. There are
other fields in the table hrs_employee that can be used to distinguish
between the two if necessary for some future function.
Security-Related Tables
Much of Xstore Point of Service security is implemented through the use of four
database tables:
• sec_groups
• hrs_employee
• sec_privilege
• sec_access_types
For information about these tables and the Dataloader records used to populate them,
see the Xstore Point of Service Database Dictionary and the Xstore Point of Service Host
Interface Guide.
<description
dtype="Translatable">_employeeMaintenanceDescription</
description>
<data_object_ref dtype="String">EMPLOYEE</data_object_ref>
<data_object_ref dtype="String">EMPLOYEE_PASSWORD</
data_object_ref>
...
</DaoEditMapping>
<DataObjectDefinition name="EMPLOYEE">
<KeyFields>
...
</KeyFields>
<DataEditFieldList>
<DataEditField name="hireDate">
<Class>Date</Class>
<cardinality dtype="String">0..1</cardinality>
<secured_object dtype="String">EMPLOYEE_DATA</
secured_object>
</DataEditField>
<DataEditField name="activeDate">
<Class>Date</Class>
<cardinality dtype="String">0..1</cardinality>
<secured_object dtype="String">EMPLOYEE_DATA</
secured_object>
</DataEditField>
<DataEditField name="employeeStatusCode">
...
sec_access_types Table
In the table sec_access_types, a secured object ID (such as EMPLOYEE_DATA in the
example found in the section “Securing Forms and Fields”) may be assigned privileges
including CREATE, READ and UPDATE. Those privileges are assigned by entering
them in the access_typcode column.
If a user is in the membership group associated with a secured object ID, the user has the
security privileges of that membership group.
<bean id="newPasswordForExistingEmployeeRules"
parent="newPasswordRules">
<property name="rules">
<list merge="true">
<ref bean="passwordValidationEmpMaintenance" />
</list>
</property>
</bean>
<bean id="newPasswordForForcePasswordChange"
parent="newPasswordRules">
<property name="rules">
<list merge="true">
<ref bean="passwordValidationSecurity" />
</list>
</property>
</bean>
SysConfig.xml Setup
Three configuration options control this functionality:
ChallengeQuestionsEnabled, NumberOfChallengeQuestions, and
ChallengeQuestionRetries. See “User Login and Password Security” for more
information about these configuration options.
sec_activity_log Table
Overview
This chapter provides information about the optional conversion of address mapping
data from flat files to database records.
The *.dat files included with Xstore Point of Service are used to determine valid address-
related values, and bind those values in geographical relationships. This allows Xstore
Point of Service to auto-populate some fields based on user entry and prevents the input
of invalid address combinations.
Xstore Point of Service allows porting the address data currently stored in the *.dat files
to the database and create download interfaces to populate the appropriate tables. This
enables clients to keep their store systems' address data in synch by downloading
DataLoader records.
The base distribution of Xstore Point of Service supports the *.dat file-based
implementation. The database address feature can be enabled through Spring
configuration.
Address Mapping
Address mapping is managed through Spring configurations in the
C:\xstoredata\lib\config.jar\dtv\res\config\spring\editmodels.xml
file.
Database Mapping
Database-based address mapping is enabled by setting the addressDataSource bean
to the following:
<bean id="addressDataSource"
class="dtv.xst.address.DtxAddressDataSource"
depends-on="dataFactoryAssistant"/>
File Mapping
File-based address mapping is enabled by setting the addressDataSource bean to the
following:
<bean id="addressDataSource"
class="dtv.util.address.datasource.FileAddressDataSource" />
When file-based address mapping is enabled, FileAddressDataSource retrieves
address mapping information from the *.dat files in the location specified in the
dtv.uti.address.FileLocation configuration in system.properties:
dtv.util.address.FileLocation=res/address/
Database Tables
The following database tables contain the mapping data for address information:
• com_address_country
• com_address_postalcode
• com_address_state
For more information about these tables, refer to the Xstore Point of Service Database
Dictionary and the Xstore Point of Service Host Interface Guide.
Change Country
• The “Change Country” feature applies to Customer Maintenance, Customer
Addresses, Send Sale, Special Order, and Order.
• Base Xstore Point of Service is configured for US and Canada. Therefore, in base
Xstore Point of Service, users will always have the ability to switch between the US
and Canada. This is based on the StoreLocationsAvailable.xml file.
StoreLocationsAvailable.xml file
<LocationList>
<Region id="America">
<Country code="US" name="_countryUS"/>
• The form name will not change when the Change Country menu option is selected
since the base forms for US and CA are the same on the customer lookup screen.
• A visibility rule supports the scenario in which a customer uses only one country
(i.e. US) so that the Change Country button is disabled.
Addresses
• If there is no country populated on the customer address in Customer Engagement
Cloud Services, then the country will be set to the default locale's country when the
customer record is retrieved.
• When using Customer Engagement Cloud Services, a delete for a given type of
address (e.g. "VACATION") will result in a delete of all addresses of that type.
• Only the primary address is written to the POS Log.
Overview
Specifying shipping fees for ship item accounts allows for more flexibility when
selecting the appropriate fee. Several elements can be taken into account when
determining shipping fees, including account type, retail location, shipping method, and
the item to be shipped. The actual calculation of the shipping fee itself includes the
ability to calculate the fee on a per-item basis or a per-transaction basis with several fee
aggregation strategies.
For example, if a send sale account has a ship to address in Georgia and a
given shipping fee record has the rule_type of SHIP_TO_STATE_RULE,
(which compares the state of the ship to address to a state abbreviation in
the param1 column) and the shipping fee record has a value of "HI" in the
param1 column, then the rule will evaluate to false and the shipping fee
record will not become the selected shipping fee.
- If no shipping fee record is selected (in the scenario that none pass the
evaluation), then this process is interrupted and no shipping fee will be
assessed.
4. When a shipping fee record is selected, several key elements of the shipping fee
calculation become known: the item number of the shipping fee line item, the
aggregation type to use for per item calculations, and the collection of shipping fee
tier records to be evaluated in the next step.
5. Xstore Point of Service retrieves the selected shipping fee's corresponding shipping
fee tier records, known as the potential shipping fee tier records. The potential
shipping fee tier records are sorted in priority order, ascending.
6. Xstore Point of Service looks up the shipping fee calculation strategy to use based on
the account's type. This mapping of account type to strategy is defined in
SysConfig.xml. There are two possible shipping fee calculation strategies, Per
Transaction (“Per Transaction Shipping Fee Calculation Strategy”) and Per Item
(“Per Item Shipping Fee Calculation Strategy”).
7. Once the shipping fee has been calculated, the shipping fee line item for the account
is updated with the new price. If no shipping fee line item exists for the account, one
is added using the item specified by the selected shipping fee record in the
com_shipping_fee.ship_item_id column.
* FEE - A flat shipping fee will be assigned to the account, the fee assigned is
equal to the com_shipping_fee_tier.fee_value of the selected
shipping fee tier record.
* FEE_PERCENT - A fee will be calculated based on a percentage of the
shippable subtotal. The shippable subtotal is multiplied by
com_shipping_fee_tier.fee_value. Normally,
com_shipping_fee_tier.fee_value should have a value between 0
and 1.
* SHIP_ITEM_PRICE - The fee for the account will be equal to the price of the
shipping fee item specified by the selected shipping fee record. Any value in
com_shipping_fee_tier.fee_value is ignored.
* SHIP_ITEM_PRICE - The fee for the account will be equal to the price of the
shipping fee item specified by the selected shipping fee record. Any value in
com_shipping_fee_tier.fee_value is ignored.
d. Once a shipping fee is calculated for each physical item in the account, the fees
will be aggregated according to the method specified by the selected shipping
fee record:
* TOTAL - Add all the fees together and make that sum the shipping fee for
the account
* AVERAGE - Take the average of all the fees and make that the shipping fee
for the account
* HIGHEST - Take the highest shipping fee among all the individual item fee
and make that the shipping fee for the account
* LOWEST - Take the lowest shipping fee among all the individual item fee
and make that the shipping fee for the account
Configuration Files
SysConfig.xml
<ShipCalcType dtype="String">PER_TRANSACTION</ShipCalcType>
This configuration applies to the following send sale types and defines whether these
accounts will have their shipping fee calculated on a per item or per transaction basis:
- SendSale
- SpecialOrder
- Order
Valid Values:
- PER_TRANSACTION - The calculation of the shipping fee will be based upon
properties of the account and current transaction, not taking into account the
values of the individual line items of the transaction. Examples of properties that
may be taken into consideration: transaction subtotal, ship to address.
- PER_ITEM - The calculation of the shipping fee for a transaction is based on an
aggregation of the shipping costs for the individual line items in the account.
The individual calculations of shipping cost may take into account properties of
the account and current transaction, along with properties of the item itself.
Examples of aggregations include: total shipping cost and greatest shipping
cost.
ShippingFeeConfig.xml
This configuration file contains the available shipping fee rules delivered with Xstore
Point of Service:
<ShippingFees xmlns:dtv="http://www.datavantagecorp.com/xstore"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ShippingFeeConfig.xsd">
<ShippingRule name="TRUE_RULE">
<Class>dtv.pos.shippingfee.rules.TrueRule</Class>
</ShippingRule>
<ShippingRule name="FALSE_RULE">
<Class>dtv.pos.shippingfee.rules.FalseRule</Class>
</ShippingRule>
<ShippingRule name="SHIP_TO_STATE_RULE">
<Class>dtv.pos.shippingfee.rules.ShipToStateCheckRule</Class>
</ShippingRule>
<ShippingRule name="SHIP_TO_ZIP_RULE">
<Class>dtv.pos.shippingfee.rules.ShipToZipCheckRule</Class>
</ShippingRule>
<ShippingRule name="ACCOUNT_TYPE_RULE">
<Class>dtv.pos.shippingfee.rules.AccountTypeRule</Class>
</ShippingRule>
<ShippingRule name="SPECIAL_ORDER_RULE">
<Class>dtv.pos.shippingfee.rules.SpecialOrderRule</Class>
</ShippingRule>
<FeeAggregation name="TOTAL">
<Class>dtv.pos.shippingfee.aggregation.TotalFeeAggregation</
Class>
</FeeAggregation>
<FeeAggregation name="AVERAGE">
<Class>dtv.pos.shippingfee.aggregation.AverageFeeAggregation</
Class>
</FeeAggregation>
<FeeAggregation name="HIGHEST">
<Class>dtv.pos.shippingfee.aggregation.HighestFeeAggregation</
Class>
</FeeAggregation>
<FeeAggregation name="LOWEST">
<Class>dtv.pos.shippingfee.aggregation.LowestFeeAggregation</
Class>
</FeeAggregation>
</ShippingFees>
• Shipping Rule Values: TRUE_RULE, FALSE_RULE, SHIP_TO_STATE_RULE,
SHIP_TO_ZIP_RULE, ACCOUNT_TYPE_RULE, SPECIAL_ORDER_RULE
• Fee Aggregation Values: TOTAL, AVERAGE, HIGHEST, LOWEST
Database Tables
All shipping fee schedules are found within two database tables: com_shipping_fee
and com_shipping_fee_tier. For information about these tables and the Dataloader
records used to populate them, see the Xstore Point of Service Database Dictionary and the
Xstore Point of Service Host Interface Guide.
Note: With PER_ITEM calculations, one item falling into a tier with
an invalid fee type may not result in no fee if other items happen to fall
into tiers with valid fee types. The items with invalid fee types are just
ignored for the final aggregate calculation.
Do you have an example of where param1 and param2 are both filled in
the shipping_fee_tier table?
All current rule_types require one or no parameters. param2 is for rule_types
developed in the future that may need more parameters.
Overview
A send sale item is an item that must be shipped to a customer-specified offsite location
after it is purchased.
A send sale transaction can be performed if the item is in the store’s saleable inventory
when the purchase is made.
<Setting name="SendSale---GenerateWeightedShippingFee">false</
Setting>
- When set to True, a weighted shipping fee is calculated for every send sale item
in the send sale order. The user will be prompted to enter the weight of the item.
- When set to False, a weighted shipping fee is not used for send sale items.
<Setting name="SendSale---
PrintSendSaleMerchandiseTicketPerItem">false</Setting>
- When set to True, the system prints a merchandise ticket for each send sale item
sold.
- When set to False, the system prints a single merchandise ticket for all send sale
items sold.
Overview
Xstore Point of Service supports the attachment of warranty or service plans to
merchandise items.
The warranty setup process uses both database tables and configuration files. In this
chapter, the database table information and the DataLoader Record and fields are listed
for each table and column. The SysConfig.xml and SequenceConfig.xml warranty
options are also listed and defined here. Additional configuration files are referenced by
Xstore Point of Service's warranty module; however, due to their technical nature and/or
the infrequency with which they need to be modified, they are only listed here and are
outside the scope of this document. See “Other Configuration Files” for a list of these
files.
The following database tables and configuration files must be set up to enable warranty
functionality in Xstore Point of Service. The process required to set up warranty
information for your stores, and a link to each section for more information, is provided
below:
1. Define a warranty item SKU representing a single warranty in the itm_item table.
2. For each warranty item SKU representing a single warranty, define the display
order, typecode, and subtype in the itm_non_phys_item table.
3. For each warranty item SKU representing a single warranty, provide additional
warranty-specific information in the itm_warranty_item table. This is the
primary detail table supporting all warranty items.
4. If required, set up this tiered pricing table for warranty items having an
itm_warranty_item.pricing_mthd_code of either TIERED_REGULAR or
TIERED_EXTENDED in the itm_warranty_item_price table.
5. Identify the items that are eligible for a warranty or warranties in the itm_item
table.
6. Map a each warranty-eligible merchandise item to one or more warranty items in the
itm_warranty_item_xref table.
7. Set up the sec_privilege table to define security privileges for warranty
functions.
8. Set the warranty-related options in the SysConfig.xml configuration file as needed.
See “Warranty Configuration - System Config” for SysConfig.xml setup.
9. Set the warranty-related options in the SequenceConfig.xml configuration file as
needed. See “Warranty Configuration - Sequence Config” for
SequenceConfig.xml setup.
Autogenerate Warranty Id
Set up the following SysConfig.xml configuration option to specify whether the system
automatically generates a warranty identifier.
<Setting name="Warranty---AutoGenerateWarrantyId">true</Setting>
- When true, the IDs of newly issued warranties are automatically generated by
Xstore Point of Service.
- When false, Xstore Point of Service prompts the user to enter a warranty ID.
- When true, prompt for the warranty customer (warranty owner) for a newly
added warranty.
- When false, the warranty owner is automatically defaulted to the customer
attached to the transaction.
<Setting name="Warranty---NotifyWhenNoWarranty">false</Setting>
- When true, the system will notify the associate that no warranty is available.
- When false, the associate will not be notified that there is no warranty available.
WARRANTY
Defines the structure of IDs assigned to newly issued warranties. Values appear in
itm_warranty.warranty_nbr and itm_warranty_journal.warranty_nbr
fields as part of those tables' primary keys.
<Sequence name="WARRANTY" ref="_COMMON_">
<FileName dtype="String">warranty.seq</FileName>
<Prefix dtype="String">WA</Prefix>
</Sequence>
WARRANTY_JOURNAL
Defines the structure of IDs assigned to newly issued warranty journal entries created to
record activity against a given warranty. Values appear in
itm_warranty_journal.journal_seq as part of that table's primary key.
<Sequence name="WARRANTY_JOURNAL" ref="_COMMON_">
<FileName dtype="String">warrantyJournal.seq</FileName>
<Numeric dtype="Boolean">true</Numeric>
</Sequence>
• calculators.xml
• validations.xml
Overview
Xstore Point of Service return processing provides the ability to accept returns for
transactions processed by outside systems. This functionality allows items purchased on
the web to be returned in a store location. See “Overview” on page 1.
Xstore Point of Service return processing also allows refund amounts to be prorated on a
per-item basis. Specified items may be returned at a prorated value from the original
purchase price as determined by the number of days between the date of purchase and
the date of return. See “Prorated Refund Amounts” on page 2.
If the customer does not have the original sale receipt, Xstore Point of Service can be
configured to process the return based on the customer’s purchase history record. See
“Returns from the Customer’s Purchase History” on page 4.
The credit card used in the original sale transaction can be used to find the items for a
return transaction and create a verified return using this information. See “About
Verified Returns” on page 5.
If the item cannot be found in the customer’s history or the Returns from the Customer’s
Purchase History configuration is disabled, a blind return is then used. There are several
configurations for blind returns. Blind Return Amount Threshold configurations
provide the ability to disallow large blind returns without authorization. The Blind
Returns Lowest Price Return Enabled configuration uses the lowest price for
the returned item from the item’s price history for blind returns. See “SysConfig.xml
Configuration Options” on page 7.
Xstore Point of Service also supports cross-border returns, both verified and unverified.
This is used to allow or disallow the return of items that were purchased in another
country. When this feature is enabled, return policies can be defined by country codes.
See “Cross-Border Returns” on page 5.
17-1
Prorated Refund Amounts
Configuration File
SysConfig.xml
<Setting name="ItemReturn---
ProRatedDiscountReturnsDisabled">false</Setting>
<Setting name="ItemReturn---ProRatedTaxOnReturnsDisabled">true</
Setting>
• ProrationTimeUnit - This configuration determines whether the proration
schedule and computation are based on days or months from the original date of
purchase.
Valid values:
- DAY
- MONTH
• ProRatedDiscountReturnsDisabled - Determines whether Xstore Point of
Service proration of discounts for returns is enabled.
- True = Proration of discounts for returns is turned off (disabled).
- False = Proration of discounts for returns is turned on (enabled).
Database Table
Returns are configured through the itm_refund_schedule table. For information about
this table and the Dataloader record used to populate it, see the Xstore Point of Service
Database Dictionary and the Xstore Point of Service Host Interface Guide.
Formula:
if (Td <= Tm) then Pr = Po (i.e. return at full purchase price)
else if (Td > Tm and Td <= T0) then Pr = (Po - (Po * (Td / T0));
else Pr = 0
Where:
• Po = the original purchase price
• Tu = the time units, days or months, to use when calculating prorated refund
amounts (Configured globally, see “Configuration File” on page 2).
• Td = the number of time units (Tu) between the original purchase date and the
returned-on date
• T0 = the minimum number of time units between the original purchase date and the
returned-on date (Td) after which refund amount = 0
(Configured on a per-item basis, see “Database Table” on page 2).
• Tm = the maximum number of time units (Tu) between the original purchase date
and the returned-on date (Td) where refund amount = original purchase price
(Configured on a per-item basis, see “Database Table” on page 2).
• Pr = the calculated prorated return amount
Example:
SKU 1231109 was originally purchased for $139.99 and is being returned 45 days later.
Per store policy, a full refund is given if the item is returned within 30 days. A reduced
refund is given, declining over time, for up to 180 days following the date of purchase,
after which no refund will be given.
Based on the formula above:
Po = 139.99
Td = 45
T0 = 180
Tm = 30
Requirements
• EnableCustomerHistoryLookup is set to true in SysConfig.xml. (If the flag
is set to false, the return will be processed as a blind return).
• Only transactions containing matching items meeting all of the following criteria
will be shown in the valid transaction list:
- Item is of type “SALE”.
- Item is not flagged as “disallowing returns”.
- Item has available quantity to return.
- Purchase transaction occurred within the configured “maximum days after
purchase” base setting.
• A customer must be attached to the return transaction when using the Lookup
History functionality. (If a customer is not attached to the return transaction,
depending upon the system configurations of requiring a customer for returns, the
associate is presented with the standard Customer search form so as to determine
the purchase history).
• The refund tender list available for returns based on customer purchase history is
the same as the list available for returns with receipts. The existing rules regarding
credit card refunds are also applicable.
• The PromptBeforeNotInHistoryReturn configuration option in SysConfig.xml
determines the behavior when an item is not found in the customer's purchase
history:
Cross-Border Returns
Cross-border returns functionality provides the ability to either allow or disallow
returns (verified and unverified) between different countries.
When this feature is enabled, it is also possible to further refine the return policy by
country in order to restrict cross-border returns between two countries using a mapping
table. For example, allow cross-border returns between all countries except the US and
Mexico. In this example, US and Mexico country codes would be specified in the
com_country_return_map table. If country codes are not explicitly specified in the
mapping table, it is assumed returns are permitted between countries.
SysConfig.xml Setup
<CrossBorderReturnsEnabled dtype="Boolean">true
</CrossBorderReturnsEnabled>
<Setting name="ItemReturn---CrossBorderReturnsEnabled">true</
Setting>
CrossBorderReturnsEnabled - Indicates whether cross-border returns are
supported.
- If set to true, cross-border returns are allowed.
- If the country of purchase has an entry in the table that corresponds to the return
store’s country, Xstore Point of Service looks at the disallow flag for the sold/
return country combination. If the flag is set to false, then the return can
proceed. If the flag is set to true, the return is not allowed.
- If the country of purchase does not have an entry in the table, then the return
will be processed since there are no restrictions.
Database Setup
The com_country_return_map mapping table is used to set up specific country-to-
country return restrictions. This table will include entries for the country codes for each
purchase location/return location, and a flag indicating if returns are allowed for the
country-to-country combination. For information about this table and the Dataloader
record used to populate it, see the Xstore Point of Service Database Dictionary and the
Xstore Point of Service Host Interface Guide.
Note: When cross-border returns are enabled and there are no entries
in the mapping table, cross-border returns will be accepted for all
country-to-country combinations.
US MX true
MX US true
sec_privilege Table
The default expected behavior is that the security prompt will only be displayed when
the user that is currently logged in does not have the proper privilege, otherwise if a
manager is already logged in then the security prompt will not appear at all. "EA==" is
the privilege assumed to be used by managers only.
To allow overrides, set the security privilege for the privilege_type
"RETURN_CROSS_BORDER" to the following:
authentication_rqrd = False
overridable_flag = True
group_member = EA==
<Setting name="ItemReturn---Discounts---
AllowDiscountsOnUnverifiedReturn">true</Setting>
<Setting name="ItemReturn---Discounts---
AllowDiscountsOnVerifiedReturn">true</Setting>
<Setting name="ItemReturn---HouseAccountEmployeeId">0</Setting>
<Setting name="ItemReturn---MaxDaysAfterPurchase">300</Setting>
<Setting name="ItemReturn---
MaxTotalTransactionRefundThreshold">10000</Setting>
<Setting name="ItemReturn---MaximumReturnItemPrice">5000</
Setting>
<Setting name="ItemReturn---MinimumReturnItemPrice">0</Setting>
<Setting name="ItemReturn---PriceHistory---
AutoCalculateHistoryPrice">false</Setting>
<Setting name="ItemReturn---PriceHistory---
LookupPriceHistory">true</Setting>
<Setting name="ItemReturn---PriceHistory---
LookupVerifiedPriceHistory">false</Setting>
<Setting name="ItemReturn---PriceHistory---
PriceHistoryLookupPreviousNumberOfDays">30</Setting>
<Setting name="ItemReturn---
ProRatedDiscountReturnsDisabled">false</Setting>
<Setting name="ItemReturn---ProRatedTaxOnReturnsDisabled">true</
Setting>
<Setting name="ItemReturn---PromptForCustomer">true</Setting>
<Setting name="ItemReturn---
PromptGiftRcptForVerifiedReturnBarcodeScan">false</Setting>
<Setting name="ItemReturn---
PromptOriginalTransactionListUponEntry">true</Setting>
<Setting name="ItemReturn---
PromptTndrAmtForOriginalCreditCardTender">true</Setting>
<Setting name="ItemReturn---ProrationTimeUnit">DAY</Setting>
<Setting name="ItemReturn---RestockingFee---
PromptApplyRestockingFeeMessage">true</Setting>
<Setting name="ItemReturn---ReturnVerification---
ReturnVerificationRequired">true</Setting>
<Setting name="ItemReturn---
ValidateReturnSerialNumberAgainstOriginalTrans">true</Setting>
• PromptForCustomer - Determines whether the system prompts for a customer
search when entering return mode.
• CustomerRecordRequired - Determines whether the system requires customer
association before entering return mode.
- CustomerRecordRequired and PromptForCustomer can be conflicting
configurations. If CustomerRecordRequired is set to True and
• ValidateReturnSerialNumberAgainstOriginalTrans - Determines
whether the system validates the item serial number against the item serial number
from the original sales transaction in verified return mode. (Customer presents the
original sales receipt and the system is able to retrieve the original sales transaction.)
• PromptTndrAmtForOriginalCreditCardTender - Determines whether the
system prompts for refund tender amount to be credited back to the selected original
sale credit card (TRUE), or assumes all of the refund amount will be credited back to
the selected original credit card (FALSE).
• AllowDiscountsOnBlindReturn - Determines whether the system allows
applying a discount on a blind return (Customer does not present the original sales
receipt.) This configuration applies only to line item and group discounts. This
configuration does not apply to transaction discounts.
• AllowDiscountsOnUnverifiedReturn - Determines whether the system allows
applying a discount on an unverified return. (Customer presents the original sales
receipt but the system is not able to retrieve the original sales transaction.) This
configuration applies only to line item and group discounts. This configuration does
not apply to transaction discounts.
• AllowDiscountsOnVerifiedReturn - Determines whether the system allows
applying a discount on a verified return. (Customer presents the original sales
receipt and the system is able to retrieve the original sales transaction.) This
configuration applies only to line item and group discounts. This configuration does
not apply to transaction discounts.
• ProrationTimeUnit - Determines whether proration schedule and computation
are based on days or months from the original date of purchase. Note: because a
"month" is a fixed calendar period and not an arbitrary time span, a return/purchase
defined dollar amount set by this configuration option. Enter the dollar amount that
a blind return must not exceed.
Overview
This chapter provides information about Xstore Point of Service hardware and UI
options.
Hardware Options
• Xstore Point of Service provides the ability to temporarily enable/disable specific
hardware devices through a Back Office menu option, Enable/Disable Hardware.
This process writes out a temporary HardwareConfig.xml file to a patch directory
for the devices that have been disabled, reloads the hardware configurations, and
then re-initializes the hardware. See “Enable/Disable Hardware”.
• Xstore Point of Service supports dual monitors to provide a customer-facing display
in addition to the POS display. See “Dual Monitor Setup”.
• Xstore Point of Service also supports a “virtual sigcap” window to allow for
signature capture on tablets. See “TransArmor Registration”.
• If needed, register VeriFone-supported devices with the First Data TransArmor
solution via the Reinitialize Hardware option in the Back Office Main Menu. See
“TransArmor Registration”.
UI Options
• Xstore Point of Service supports touch-screen mode, including a touch keyboard.
This keyboard provides the ability to type letters, numbers, and symbol characters
into data fields while using a touch-screen. See “Touch-Screen Keyboard Setup”.
• UI configuration also includes the ability to set up the POS screen orientation of the
focus bar to support different environments, such as a PC environment and a tablet
environment. See “UI Orientation Setup”.
• The Item Selection User Interfaces enables a retailer to use a button grid to select
configurable menu options and items. See
Enable/Disable Hardware
After selecting the Enable/Disable Hardware option from the Back Office Main Menu,
Xstore Point of Service displays the Hardware Device Management screen, listing the
hardware devices supported for this functionality.
A green check mark next to the device description indicates the device is currently
enabled.
A red next to the device description indicates the device is currently disabled.
Disable Device
When a device is disabled, Xstore Point of Service writes out a temporary
hardwareconfig.xml file to a patch directory. See “To disable device(s)”.
Enable Device
When a device is currently disabled, there are two options available to enable a
hardware device:
- The Enable Device option enables only the selected device(s), without removing
any configuration overrides (patch file entries) that may exist for other devices.
- The Clear Hardware Configs option removes all overrides to the device
configuration file which will enable all disabled devices. The system removes
the hardware configuration overrides (patch file entries) that were created when
the devices were disabled.
To disable device(s)
This example disables two devices through the Disable Device option: POS Printer and
Scanner.
<Hardware>
<Device type="POSPrinter" use="RECEIPT">
<Enabled dtype="Boolean">false</Enabled>
<name dtype="String">Generic-Printer-Log4j</name>
</Device>
<Device type="Scanner" use="BARCODE_SCANNER">
<Enabled dtype="Boolean">false</Enabled>
<name dtype="String">Virtual-Scanner-Swing</name>
</Device>
</Hardware>
To enable device(s)
If only one device is enabled through the Enable Device option (a Barcode Scanner in
this example), the POS Printer is still disabled as shown below. Note that the scanner
entry has been removed from the configuration file.
<Hardware>
<Device type="POSPrinter" use="RECEIPT">
<Enabled dtype="Boolean">false</Enabled>
<name dtype="String">Generic-Printer-Log4j</name>
</Device>
</Hardware>
If all devices are enabled through the Clear Hardware Configs option, the entire
HardwareConfig.xml file is removed.
Printer Selection
Xstore prompts you to scan or select a printer from a list of available and configured A4/
report printers, if there are multiple A4/report printers in a store. A4/report printers are
used for luxury receipts, BIP reports, and tax free invoice printing.
SysConfig.xml
<Setting name="Hardware---PromptPrinterSelectionList">true</
Setting>
HardwareConfig.xml
<ShowPrinterDialog dtype="Boolean">false</ShowPrinterDialog>
The ShowPrinter Dialog setting in the HardwareConfig.xml file must be set to
false, if the SysConfig.xml setting Hardware---PromptPrinterSelectionList
is set to true.
SysConfig.xml Example
<Setting name="DualDisplay---EnableDualDisplay">false</Setting>
EnableDualDisplay - Determines whether the dual display is enabled.
UIConfig.xml Example
<Name dtype="String">CUST_TRAINING_VIEW</Name>
<Component name="CUST_TRAINING_VIEW" type="TransparentPanel"
layout="dtv.ui.layout.TableLayout">
<Component type="SubstitutedPanel">
<ComponentParameter name="setComponentId"
value="CUST_DISPLAY_TRAINING"/>
</Component>
</Component>
</UI>
The setComponentId parameter of the SubstitutedPanel accepts a string
parameter which is the name of the substituted component to load from
SubstituteComponentConfig.xml.
SubstituteComponentConfig.xml Example
<SubstituteComponent name="CUST_DISPLAY_TRAINING">
<Component type="PanelText" layoutLocation="15, 15, 70, 70">
<ComponentParameter name="setFont">
<param_value
dtype="FontRef">_fontCustomerDisplayTrainingPanel</param_value>
</ComponentParameter>
<ComponentParameter name="setMessage"
value="_trainingModeCustomerMessage"/>
</Component>
</SubstituteComponent>
PanelText Set the setMessage property to a translation key. Can also call
setFont which references ui.properties for customizing
how the text is displayed. Can also call setFontColor with a
ColorConfig parameter to specify the color of the text.
Note: If the virtual sigcap is not capturing the entire signature, check
the touch-screen setting in the OS or in the touch-screen software and
disable the "Enable right click on hold" setting.
Note: Set the width and height to -1 to cover the full screen. The
default value is -1.
TransArmor Registration
The TransArmor registration process in Xstore Point of Service allows VeriFone-
supported devices to be registered with the First Data TransAmor solution. Whenever a
VeriFone device moves from one lane to another, whether previously encrypting or not,
or is brand new out of the box, the VeriFone device must be registered (or re-registered)
to work with the First Data TransArmor solution.
The TransArmor registration process is included in the "Re-Initialize Hardware" option
from the Back Office Main Menu. Refer to the Xstore Point of Service Manager’s Guide for
procedural information.
Operational Assumptions
• Hardware must be a VeriFone device that is capable of supporting TransArmor
encryption.
• The VeriFone device must have the VeriShield Crypto Library (VCL) installed with a
key management methodology.
• The VeriFone device must be configured to allow Manual Key Entry on the Device.
• The MSR swipe on the POS Terminal must be disabled for Credit and Debit
transactions.
Credit Cards cannot be manually entered at the register. Xstore Point of Service will
force the customer to utilize the VeriFone Device for all Credit and Debit transactions.
This keyboard takes the place of a physical keyboard, and will be accessible everywhere
within the Register and Back Office (including the store close procedure).
The keyboard is accessible via a button on the left side of the messages bar:
- Pressing the keyboard button slides the keyboard up from the bottom of
the screen.
- Pressing the keyboard button while the keyboard is visible slides the
keyboard down to hide it.
SysConfig.xml Setup
<Setting name="OnScreenKeyboard---AutomaticCall">false</Setting>
<Setting name="OnScreenKeyboard---AutomaticCallDecimal">true</
Setting>
<Setting name="OnScreenKeyboard---Enabled">true</Setting>
<Setting name="OnScreenKeyboard---KeyClickEnabled">true</Setting>
Enabled - Determines whether the touch-screen keyboard is enabled.
- If true, the touch-screen keyboard is enabled.
- If false, the touch-screen keyboard is not enabled.
Layout - Determines the starting/default layout of the keyboard. Valid values: From
KeyboardConfig.xml
AutomaticCall - Determines whether Xstore Point of Service automatically displays
the keyboard when keyboard input is necessary. See “Overrides of the automatic call”.
- If true, Xstore Point of Service automatically displays the keyboard when
keyboard input is necessary.
- If false, the keyboard is not displayed automatically.
KeyboardConfig.xml Setup
The KeyboardConfig.xml file is used to maintain the visual and functional aspect of
the keyboard. The file consists of definitions of one or more layouts, composed of
multiple panels containing rows of buttons.
Touch-Screen Configuration
The following touch-screen configurations are found in SysConfig.xml.
<Setting name="TouchConfiguration---EnableTapActionSound">false</
Setting>
<Setting name="TouchConfiguration---
StoreSwipeLoginToShowDashboard">false</Setting>
StoreSwipeLoginToShowDashboard - Set this configuration to true if the system
should prompt for authorization when a user swipes on the store name status cell before
invoking the dashboard.
UI Orientation Setup
Xstore Point of Service supports the ability to easily configure the orientation of the focus
bar to support different environments such as a PC environment and a tablet
environment. With the majority of people being right-handed, a user will likely hold a
tablet with their left hand and enter data with their right hand. For this reason, you may
want to change the base, left-side UI orientation to put the focus bar, and the messages
area above it, on the right side of the screen.
The UI orientation can be set up in SysConfig.xml. Specify either LEFT (default value) or
RIGHT orientation in the UserInterface section: UIOrientation.
SysConfig.xml Setup
<Setting name="UserInterface---ShowKeyStrokeOnButton">false</
Setting>
<Setting name="UserInterface---TabletScreenRatio">AUTO</Setting>
<Setting name="UserInterface---UIOrientation">LEFT</Setting>
Color Theme
The default color theme for both Xstore Point of Service and Xstore Mobile Point of
Service is controlled by the SysConfig.xml setting UserInterface---ColorTheme.
Table 18-1 SysConfig.xml Settings
UserInterface--- CLASSIC:
ColorTheme Classic color theme where context-based
color applies to info tabs, prompt/form/
activity headers, focus bars, and so on.
MINIMAL:
Minimal color theme where context-based
color applies to main screen background
and everything else is one, static color.
Note: The classic theme uses bright,
primary colors while the minimal theme
uses a more subdued, modern, and
coordinated color palette.
Example:
<Setting name="UserInterface---ColorTheme">MINIMAL</Setting>
OpChainConfig.xml
The following Self Checkout (SCO) configuration options are available in
<Xstore installation
directory>\lib\config.jar\selfcheckout\OpChainConfig.xml:
Table 18-2 OpChainConfig.xml SCO Settings
Example:
<OpChain name="PRINT_RECIPT">
<Op
class="dtv.pos.register.selfcheckout.NotifyTransactionCompletedOp
">
<Parameter name="TimeoutSeconds" value="5" />
</Op>
<Op class="dtv.pos.hardware.op.PrintRcptsOp"
breakpoint="true" />
</OpChain>
SysConfig.xml Configuration
The following Self Checkout (SCO) configuration options are available:
Table 18-3 SysConfig.xml SCO Settings
SelfCheckout--- Integer The user can add the item ID for the
CarrierBagItemId carrier bag.
Example:
<SysConfig xmlns="http://micros.com/xstore/config/settings">
<Setting name="CommissionedAssociates---
DisplayPerItemOnSale">false</Setting>
<Setting name="CommissionedAssociates---
PromptForCommissionedAssociates">false</Setting>
<Setting name="Email---Receipt---AlwaysPromptToEmail">false</
Setting>
<Setting name="Email---Receipt---SendEmailReceipts">false</
Setting>
<Setting name="Help---HelpKey"></Setting>
<Setting name="ItemSale---AllowItemNotOnFile">true</Setting>
<Setting name="ItemSale---PromptUserForSaleCompletion">false</
Setting>
<Setting name="LocationBasedInventory---
QuantityUnavailableAction">ALLOW</Setting>
<Setting name="PromptForCustomerOnLogin">true</Setting>
<Setting name="SelfCheckout---CarrierBagItemId">1013</Setting>
<Setting name="SelfCheckout---PromptForBagsUsed">false</
Setting>
<Setting name="EnableSelfCheckoutAudioAlerts">false</Setting>
<Setting name="SelfCheckoutEmployeeId">1</Setting>
<Setting name="SaleEndingChain">REGISTER_SCO</Setting>
<Setting name="Terminal---MenuButtonCount">5</Setting>
<Setting name="UserInterface---UIOrientation">RIGHT</Setting>
<Setting name="PromptForLoyaltyScan">false</Setting>
</SysConfig>
Note: For more information about the Xstore Point of Service Self
Checkout, see the Oracle Retail Xstore Point of Service Self Checkout User
Guide and the Oracle Retail Xstore Suite Services Guide.
SysConfig.xml Configurations
The following configuration options are available:
Table 18-4 SysConfig.xml REST-based SCO Settings
Data Type/
Setting Value Description
Data Type/
Setting Value Description
TableLayoutConfig.xml
The TableLayoutConfig.xml file was created for use with the self checkout application.
Below find the XML schema for the TableLayoutConfig.xml file. This file is used to
define the layout for a collection of data whose content consists of records with a
homogeneous structure.
TableLayoutConfig.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://micros.com/xstore/config/table"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:common="http://micros.com/xstore/config/common"
targetNamespace="http://micros.com/xstore/config/table"
jaxb:version="2.1"
attributeFormDefault="unqualified"
elementFormDefault="qualified">
<xs:element name="TableLayoutSet">
<xs:complexType>
<xs:sequence>
<xs:element name="TableLayout" type="TableLayout_Type"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="TableLayout_Type">
<xs:sequence>
<xs:element name="Column" type="TableLayoutColumn_Type"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="targetClass" type="xs:string" />
</xs:complexType>
<xs:complexType name="TableLayoutColumn_Type">
<xs:attribute name="headerText" type="xs:string" />
<xs:attribute name="id" type="xs:string" use="required" />
<xs:attribute name="value" type="xs:string" />
<xs:attribute name="formatterRef" type="xs:string" />
<xs:attribute name="width" type="xs:int" />
<xs:attribute name="resizable" type="xs:boolean" />
</xs:complexType>
</xs:schema>
Some things to note:
• The "targetClass" attribute that is defined in the table layout serves for visibility and
acknowledgment. Xstore will check and issue a warning if the class of the data
objects is not an instance of the target class for the layout, but it will not fail straight
away if the type of object does not match the targetClass.
• "headerText" is the test that is intended to be used to label the column in the table.
• "id" provides a unique identifier for the column within the table.
• If there is a "value" expression (a method chain), then the system will use that.
Otherwise, it assumes that the "id" attribute represents the value and that there is a
bean-style getter for it on the model class that is being used for the table's data.
• "formatterRef" is a name reference to a standard Xstore formatter to use to format
the data in this column.
• "width" is the intended width of the column in the table, specified as a percentage of
100 (without the percent sign).
• "resizable" indicates if the column that is identified should be able to be resized in
the table that is rendered from this configuration.
Below is a sample of a TableLayoutConfig.xml file.
TableLayoutConfig.xml Sample:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<TableLayoutSet xmlns="http://micros.com/xstore/config/table">
<TableLayout name="REASON_CODES"
targetClass="dtv.xst.dao.com.IReasonCode">
<Column headerText="_selectAnOption" id="Description"
formatterRef="Text" width="100" />
</TableLayout>
<TableLayout name="DISCOUNTS"
targetClass="dtv.xst.cleandto.dsc.Discount">
<Column headerText="_selectAnOption" id="Description"
formatterRef="Text" width="100" />
</TableLayout>
<TableLayout name="PRICE_MODIFIERS"
targetClass="dtv.xst.dao.trl.IRetailPriceModifier">
<Column headerText="_selectAnOption" id="Description"
formatterRef="Text" width="100" />
</TableLayout>
<TableLayout name="REPRINT_RECEIPT_SELECTION_LIST"
targetClass="dtv.pos.register.reprint.ReceiptReportModel">
<Column headerText="_receipts" id="DisplayName" width="100"
formatterRef="Text" />
</TableLayout>
<TableLayout name="TENDERS_TO_VOID"
targetClass="dtv.xst.dao.ttr.ITenderLineItem">
<Column headerText="_scoTenderType" id="TenderDescription"
formatterRef="Text" width="80" />
<Column headerText="_amount" id="Amount" formatterRef="Money"
width="20" />
</TableLayout>
<TableLayout name="COUPON_NOT_APPLIED"
targetClass="dtv.pos.coupon.CouponResult">
<Column headerText="_couponId" id="CouponId" width="20" />
<Column headerText="_commonDescription" id="Description"
width="80" />
</TableLayout>
<TableLayout name="SUSPENDED_TRANSACTIONS"
targetClass="dtv.xst.query.results.SuspendedTransSearchResult">
<Column headerText="_suspendTicket" id="TransactionSequence"
width="15" />
<Column headerText="_suspendRegisterId" id="WorkstationId"
width="15" />
<Column headerText="_suspendTranStartTime"
id="TransStartTime" formatterRef="TimeShort" width="10" />
<Column headerText="_selectcustomername"
id="CustomerDisplayName" formatterRef="Text" width="25" />
<Column headerText="_scoResumeTransItemCount" id="ItemCount"
formatterRef="Decimal" width="15" />
<Column headerText="_scoResumeTransTotal"
id="TransactionTotal" formatterRef="Money" width="20" />
</TableLayout>
</TableLayoutSet>
• If the CSS variable name ends with "rgb", this means that the value of the variable
must be expressed in a comma-separated set of red, green, and blue values from 0 to
255. For example, a valid value for the variable name --sco-bg-sale-summary-rgb
would be 123, 74, 201. Changing the variable to that value would result in a shade of
purple for the sale summary section of the main shopping cart screen.
• If the CSS variable name does not end in "rgb", then you are expected to provide an
actual color object for the value. This can be obtained by the using the rgb() function
in the value definition. There are several examples of this within the sco-app-
custom.css file, but one that would make the general background of the application a
bright green would be:
--oj-body-bg-color: rgb(91, 238, 88);
One final point to note is the existence of the CSS selector .oj-color-invert. There are
certain places in the base application that have a dark background by nature. Any place
that a dark background is used in the base application, the colors are "inverted" using
this style selector. What this means is that, if you would like to change the color of
something that shows on a dark background in the base application, then you are going
to need to define the CSS variable for it within the selector .oj-color-invert. The variables
for things that support having their color inverted in the custom CSS are listed within
the file already. The same rules for naming and value specification for the standard
variables apply to the values specified within .oj-color-invert as well.
Once you have changed the values of all of the CSS variables in the sco-app-custom.css
file to your liking, then the self checkout application must load.
Take your customized sco-app-custom.css file and place it in your customer overlay
project in the res/sco-static/styles directory. When the overlay project and the
corresponding installer are built, the sco-app-custom.css file should end up in the res/
sco-static/styles directory in the Xstore Point of Service Mobile install directory. Special
instructions that are in place for self checkout will cause this file to be loaded in
preference over the base file and your customization will be applied.
Audio Files
Sound bite prompts assist customers withe the self checkout process.
Sound resource files are used to define the sound file to play, allowing for different
sound files based on locale to be defined as well. Supported audio file types are .wav,
.mp3, and .ogg. The audio files are located in the folder where the Mobile Server is
installed.
The soundKey gives indicates where the sound plays within the SCO application:
_scoStartSaleWelcome = When starting a new transaction by either scanning loyalty,
scanning an item, pressing one of the "Start" buttons, or by using help and selecting a
language
_scoAssistanceNeeded = When the Assistance button is pressed.
_scoTenderMenu = When the tender selection screen displays
_scoSaleCompleteThankYou = When the transaction is finished and the Done screen
displays
_scoAttentionRequired = When pressing Finish and Pay and there are items that require
attentions for such things like age restrictions, serial number entry, warranty
requirements, etc...
_scoVoucherTender = When the gift card tender is selected and it is not configured to use
EftLink
_scoEftlinkTender = When a tender is selected that uses EftLink
_scoContinueSuggestion = When a transaction is in process and an item has been
scanned, after a configurable wait time, sound will play
Example Files:
sounds.properties
_scoStartSaleWelcome=res/audio/startSaleWelcome1.mp3
_scoAssistanceNeeded=res/audio/assistanceNeeded1.mp3
_scoTenderMenu=res/audio/tenderMenu1.mp3
_scoSaleCompleteThankYou=res/audio/saleCompleteThankYou1.mp3
_scoAttentionRequired=res/audio/attentionRequired1.mp3
_scoVoucherTender=res/audio/voucherTender1.mp3
_scoEftlinkTender=res/audio/eftlinkTender1.mp3
_scoContinueSuggestion=res/audio/continueSuggestion1.mp3
sounds_fr.properties
_scoStartSaleWelcome=res/audio/startSaleWelcome2.mp3
_scoAssistanceNeeded=res/audio/assistanceNeeded2.mp3
_scoTenderMenu=res/audio/tenderMenu2.mp3
_scoSaleCompleteThankYou=res/audio/saleCompleteThankYou2.mp3
_scoAttentionRequired=res/audio/attentionRequired2.mp3
_scoVoucherTender=res/audio/voucherTender2.mp3
_scoEftlinkTender=res/audio/eftlinkTender2.mp3
_scoContinueSuggestion=res/audio/continueSuggestion2.mp3
Start Button
Xstore Point of Service Self Checkout allows for an icon to be included in the Start
button, for example, to identify the country with a flag to distinguish the various
language options on the home screen.
PromptConfig.xml
The <Prompt> tag showButtonImages determines if images are displayed on the buttons.
Example PromptConfig.xml
<Prompt name="SELF_CHECKOUT_START_SALE_MAIN" type="Notify"
title="_scoActivateSelfCheckoutTitle" message="_startViewMessage"
secondary_message="_scoHomeScreenSecondaryMessage"
textColorRef="_colorPromptTextScoHome" modal="false"
showButtonImages="true">
<IconGroup logo="_imageScoHomeLogo"
background="_imageScoHomeBackground" />
<Action ref="SELF_CHECKOUT::ASSOCIATE_LOGIN_SPECIAL" />
<Action ref="SELF_CHECKOUT::ASSOCIATE_HELP_SPECIAL" />
<Action ref="SELF_CHECKOUT::CHANGE_LANGUAGE_AND_START_SALE" /
>
<Action ref="SELF_CHECKOUT::START_SALE" primary="true" />
<Action ref="SELF_CHECKOUT::START_SALE_FR_FR" primary="true"
/>
<Action ref="SELF_CHECKOUT::START_SALE_ES_ES" primary="true"
/>
</Prompt>
ActionConfig.xml
If the <Prompt> tag showButtonImages in the PromptConfig.xml is set to true, then you
also need to supply an image to be shown, or supply a predefined Redwood icon name
by including an <IconGroup> tag to the action for the start buttons.
Specifying an icon value of "_imageScoStartUS" references a ui.properties entry that
references an image that resides on the server and is retrieved by the client application.
Specifying an icon value of "oj-ux-ico-flag-checkered" references a predefined Oracle
Redwood icon that comes with the client application.
Exmaple ActionConifg.xml
<Action name="SELF_CHECKOUT::START_SALE_EN_US"
ref="SELF_CHECKOUT::START_SALE">
<IconGroup icon="_imageScoStartUS" />
<Parameter name="Locale" value="en_US" />
</Action>
<Action name="SELF_CHECKOUT::START_SALE_EN_US"
ref="SELF_CHECKOUT::START_SALE">
<IconGroup icon="oj-ux-ico-flag-checkered" />
<Parameter name="Locale" value="en_US" />
</Action>
ui.properties
Images can be located on the Mobile Server file system in the same folder as the Mobile
Server.
Example:
_imageScoStartExample=res/graphics/NewImage.png
How to Access
The Self Checkout Console can be accessed by any supported browser, as long as the
machine running the browser is on the store LAN with sufficient access to an Xstore
Mobile Server running in a store.
The URL depends on the hostname and port of the Xstore Mobile server:
https://{hostname}:{port}/xstorescoconsole
If a store has multiple Xstore Mobile Servers, you can connect to any server. The Self
Checkout Console application provides access to the status of all Self Checkout registers
in the store, regardless of which Self Checkout registers are connected to which servers.
Security
The Self Checkout Console completely relies on Xstore's authentication database and
permissions system, as configured in each store.
Users can log in to the Self Checkout Console and/or issue commands from the Self
Checkout Console, using their regular Xstore store credentials, provided they have the
necessary permissions configured.
SCO_MGMT_CONSOLE_ADMIN
This is one of two permissions in Xstore specifically related to the Self Checkout Console.
Users must be associated to this privilege in order to log on to the Self Checkout Console.
This permission is also required to issue a Pause command from the Console. The
application does not re-prompt for credentials when issuing a PAUSE command; simply
being logged-in to the console is sufficient.
UNPAUSE_SELF_CHECKOUT
When the Self Checkout Console issues a Pause command to a Self Checkout
Workstation, the workstation is placed in a paused state and an employee is required to
enter their credentials to allow the workstation to continue. The employee must have
this new privilege in order to allow the workstation to continue. If they do not have this
privilege, the workstation will remain paused until an employee who does have this
privilege enters their credentials.
Note: This privilege has no effect on the Self Checkout Console itself;
however, it affects Self Checkout workstations that have been paused
by the Self Checkout Console.
ACTIVATE_SELF_CHECKOUT
This permission is required when attempting to Activate or Deactivate a Self Checkout
workstation, regardless of whether the activating/deactivating is being performed
directly on the Self Checkout register, or from the Self Checkout Console via its Activate
and Deactivate commands.
TILL_MANAGEMENT
This permission has long been a part of Xstore and is required when performing a
register open or register close operation for any Xstore POS system.
This permission is required regardless of whether the register open/close is being
performed directly on the Self Checkout register, or from the Self Checkout Console via
its Activate and Close commands.
Configurations
Most configuration of the Self Checkout Console is controlled via Xstore's system
properties.
The properties can be found in xstore_mobile.properties.
By default, the Self Checkout Console is configured to always prompt the user to enter
their Xstore employee credentials each time they issue any command from the Console
(Open/Activate, Deactivate, Close). When prompted for credentials, the employee ID
and password does not need to match the logged-in user of the Self Checkout Console.
Any employee can issue a command from a running Self Checkout Console using their
own credentials.
This ensures that any command can only be issued by users with sufficient privileges. It
also allows the convenience of having a low-privilege user log-in to the Self Checkout
Console to see status, but require that only higher-privileged users may issue commands
to alter the state of Self Checkout registers.
If this configuration is disabled, then the Self Checkout Console will not prompt for
credentials. Instead, the logged-in user's privileges must be sufficient to issue any
commands.
Images
There are three images that are customizable in the SCO Console application. Two are on
the login screen and one is in the header section of the main screen. The location and
names of the images are defined in the ui.properties file. By default, after installation,
these images are defined as follows:
_imageScoConsoleLogo=classpath:graphics/selfcheckout/logo-oracle-
white.svg
_imageScoConsoleHomeBackground=classpath:graphics/selfcheckout/
image-start-screen-x2.jpg
_imageScoConsoleHeaderLogo=classpath:graphics/selfcheckout/
oracle-o-48.svg
To customize these images, change these values as follows:
_imageScoConsoleLogo=res/graphics/selfcheckout/my-logo.png
_imageScoConsoleHomeBackground=res/graphics/selfcheckout/my-
background.jpg
_imageScoConsoleHeaderLogo=res/graphics/selfcheckout/my-header-
logo.svg
Note the change in the beginning of the file path from classpath:graphics to
res/graphics. This is a required change. The custom images themselves should be
placed in the res/graphics/selfcheckout directory.
These values correspond to:
The Oracle logo on the login screen
The background image on the login screen
The Oracle "O" logo in the header section on the main screen
Translations
Text translations for the Self Checkout Console application are handled per Xstore's
current process. The translations can be found in the same file used for the Self Checkout
register application, which is located in config/formfactor/selfcheckout/
translations.properties.
Overview
Note: Only the IP-based printer is supported! USB printers are not
supported.
Functional Assumptions
• Xstore Point of Service will prompt for the stock to be used if the item does not have
one defined.
• If an item has a default stock-type associated with it, it will bypass the option of
selecting the stock to print, but will allow the user to override the default setting.
• The customer is responsible for loading stock-type information associated with the
items into the Xstore Point of Service and Xstore Office database.
• It is the user's responsibility to load the appropriate stock into the printer, Xstore
Point of Service will not be checking for correct stock before printing.
• There is no mechanism to mark items that have had tickets printed, or to prevent
printing duplicate tickets.
• Existing validation for item entry will be used.
• Any stock type (that the printer can hold) can be used by updating the
LabelConfig.xml file accordingly. The following label sizes have been configured
in base: 1"x1" Label, 2"x1" Label, ¾"x½" Barbell Label, and2"x1¾" Rat Tail Label
Supported Printers
Note: Only the IP-based printer is supported! USB printers are not
supported.
1x1 Was/Now
1x1 Inventory
Barbell Standard
Rat Tail Standard
Barbell Sale
SysConfig.xml
This configuration option determines if the Save Batch prompt is displayed after each
printing session.
<Setting name="ShelfLabelsItemTags---SaveBatchPrompt">false</
Setting>
• true = The Save Batch prompt is displayed after labels are printed.
• false = The Save Batch prompt is not displayed after labels are printed.
Base Default Value = false
HardwareConfig.xml
The following section must be present in the HardwareConfig.xml file to enable ZPL
II. If this section is not found in the file, the process flow using a report printer for labels
will be used.
Substitute values as needed for your organization.
<Device type="LabelPrinter" use="LABELS">
<name dtype="String">IpZplLabelPrinter</name>
<RemoteHost dtype="String"><IP ADDRESS></RemoteHost>
<RemotePort dtype="Integer"><PORT></RemotePort>
</Device> -->
Database Tables
The following database tables support ZPL II functionality:
• itm_item_label_batch
• itm_item_label_properties
For information about these tables and the Dataloader record used to populate it, see the
Xstore Point of Service Database Dictionary and the Xstore Point of Service Host
Interface Guide.
Note: X value is along the horizontal axis (i.e. starting point left to
right) and Y value is the vertical axis (i.e. starting point top to bottom)
LabelConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<LabelSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="LabelConfig.xsd">
<FormatterMap>
<Formatter name="Money"
class="dtv.pos.i18n.format.MoneyFormatter"/>
<Formatter name="DateShort"
class="dtv.pos.i18n.format.DateFormatter"
formatterType="DateShort"/>
<Formatter name="DateMedium"
class="dtv.pos.i18n.format.DateFormatter"
formatterType="DateMedium"/>
<Formatter name="DateTimeMedium"
class="dtv.pos.i18n.format.DateFormatter"
formatterType="DateTimeMedium"/>
</FormatterMap>
<!-- Available printer fonts A-Z, 0-9 -->
<FontMap>
<LabelFont name="AXSmall" font="A" height="9" width="5"/>
<LabelFont name="0Small" font="0" height="20" width="14"/>
<LabelFont name="0XSmall" font="0" height="15" width="10"/>
<LabelFont name="XMedium" font="0" height="25" width="20"/>
<LabelFont name="Medium" font="0" height="30" width="25"/>
<LabelFont name="Large" font="0" height="50" width="25"/>
<LabelFont name="Xlarge" font="0" height="50" width="40"/>
</FontMap>
<label name="1x1-Standard" width="200" height="200"
font="XMedium">
<field x="5" y="15" width="190" height="70"
method="getItem.getDescription" align="C" font="Medium"/>
Formatter 1 Unbounded
FontMap - a map of fonts that are used in the file to display data.
LabelFont 1 Unbounded
LabelFont - A font used across the file. The current version is ZPL specific. The fonts in
ZPL are named from A-Z and from 0 to 9.
font true ZPL font name. A-Z, 0-9. For more information about fonts,
refer to the ZPL Manual.
width true Font width. Some fonts might not respond to some values.
height true Font height. Some fonts might not respond to some values.
label - A single label configuration, or it may be called a template. A label will get a
source object and will be evaluated against it. A label must have at least one Field child.
Field 1 Unbounded
name true Label name that will be referenced from an item. Label
names should be unique.
field - A field can get the source object from a label and evaluate against it.
aggregate 0 1
line 0 1
method false A method that evaluates against the received source object.
font false A font reference. If not used the font from the label is used.
barcodeHeight false The height of the barcode. For more information, refer to the
ZPL Manual.
barcodeWidth false The width of the barcode. For more information, refer to the
ZPL Manual.
barcodeRatio false The ratio wide to narrow bar. 2.0 to 3.0 with 0.1 increments.
For more information, refer to the ZPL Manual.
align false Text alignment. Note that x, y, width, and height values
create a rectangle. The text is aligned in that rectangle. Also
note that barcodes do not center. You have to manually set
the x and y.
aggregate - A class that takes the source object and does some predefined
manipulation with it, and then returns a string value.
Overview
Sales goals for a store can be imported into Xstore Point of Service where they can be
viewed by employees. Goal progress can be viewed on the Goals tab, on the Dashboard,
and on the Store Goals Report.
Note: All goals are for individual stores, even if multiple stores are
included. For example, if a goal is $20k, that is the goal for each store
selected, it is not a collective goal.
Store sales goals are tracking Xstore Point of Service data only. No external data will be
looked at for this functionality.
The “Sales” value used in any calculations refers to Net Sales (total sales excluding tax),
not profits. If VAT is included in the price, then VAT is treated as part of the sales goal.
Goal status (% To Date) is based on the effective and/or end dates of the goal:
- “Completed” = today’s date > End Date
- “Completed, Met” = today’s date > End Date AND % to Goal >= 100
- “Completed, Not Met” = today’s date > End Date AND % to Goal < 100
- “Active” = today’s date is within the Effective Date and End Date range
- “Future” = today’s date < Effective Date
Completed goals are displayed based on the number of Completed Goals
(NumberCpltGoalsToDisplay) then all Active Goals are displayed, followed by any
Future Goals based on the number of future goals (NumberFutureGoalsToDisplay).
On the Dashboard, only active goals are displayed. The goals are sorted by ascending
end date, ascending effective date, and then description. Five is the maximum number of
goals that can display in the table. If there are more than five active goals, the first five
goals are displayed based on the sorting rules defined above.
Configuration Options
SysConfig.xml
There are two SysConfig.xml configuration options for Store Sales Goals:
<Setting name="SalesGoal---NumberCpltGoalsToDisplay">2</Setting>
<Setting name="SalesGoal---NumberFutureGoalsToDisplay">2</
Setting>
NumberFutureGoalsToDisplay - This is the number of goals that have not yet
started that will be displayed in the Xstore Point of Service Goals Tab. These goals are
displayed in ascending end date order, so the future goals with the earliest start date will
be displayed first.
NumberCpltGoalsToDisplay - This is the number of goals that are completed that
will be displayed in the Xstore Point of Service Goals Tab. The most recently completed
goals are displayed in ascending end date order.
Database Tables
The sls_sales_goal table contains the data for store goals information. For more
information about this table, refer to the Xstore Point of Service Database Dictionary and the
Xstore Point of Service Host Interface Guide.
Overview
Store Replenishment Order management provides the ability for stores to review and
change inventory replenishment suggested orders that are generated and downloaded
from the home office or a third-party system. Stores may also prepare new inventory
replenishment and purchase order requests. The suggested order, replenishment
receiving document, and confirmations are communicated to Xstore Point of Service
using DataLoader.
Order Status
• When a suggested order is received in Xstore Point of Service, the status will be set
to "Open", and the created field will be "HOME_OFFICE". Processing is the same
functionality as a new or "Open" request created in Xstore Point of Service.
• The Corporate System may send down a Push Order that has no Open or Submitted
order status. When Xstore Point of Service receives the Push Order, the status of the
document will be "Confirmed" and the document line items will have a confirmed
quantity.
• Only items on OPEN orders may be voided. Items on already confirmed orders
cannot be voided.
Document Status
Document status is generally controlled by the Corporate System. The following list
shows document status as it relates to the item details.
• Open - Indicates the document is open and all items are considered open at this
point.
• Submitted - Indicates the document has been submitted and all items are also
considered submitted.
• Confirmed - Indicates the document has been confirmed by the Corporate System
and all the items on the document have been updated with a confirmed quantity. A
confirmed item quantity of zero is valid, and indicates that no merchandise will be
received at the store for that line item.
• Partially Received - Indicates at least one item on the document has been received,
but not all items.
• Cancelled - Indicates an order has been cancelled by the host or corporate system.
• Closed - Indicates the document is considered closed and all line items have been
received for the order.
Database Setup
Store replenishment orders are configured in the following tables:
• inv_invctl_document_xref
• inv_rep_document_lineitm
• inv_shipment
• inv_invctl_document
For information about this table and the Dataloader record used to populate it, see the
Xstore Point of Service Database Dictionary and the Xstore Point of Service Host Interface
Guide.
SysConfig.xml
<Setting name="ItemLookup---LoadGrid">true</Setting>
<Setting name="ItemLookup---LoadPriceHistory">true</Setting>
<Setting name="ItemLookup---LoadSalesHistory">true</Setting>
<Setting name="ItemLookup---LoadSimilar">true</Setting>
<Setting name="ItemLookup---LoadSubstitute">true</Setting>
<Setting name="ItemLookup---LoadUpcs">true</Setting>
<Setting name="ItemLookup---PriceHistoryDays">30</Setting>
<Setting name="ItemLookup---SalesHistoryWeeks">12</Setting>
<Setting name="ItemLookup---ShowAdvancedSearchForm">false</
Setting>
SalesHistoryWeeks - Indicates how many weeks of sales history will be displayed
when an Item Lookup is done in the replenishment module. Sales history information is
displayed in the “Sales History” tab.
<Setting name="Replenishment---ConfirmQuantityThreshold">3000</
Setting>
ConfirmQuantityThreshold - The quantity above which the user will be prompted
to confirm the value entered on the store replenishment order.
- _dtv.pos.register.type.NonPhysicalItemSubType.GIFT_WRAPPING=G
ift Wrapping
10 8 10
10 5 10
10 4 0
10 14 10
10 16 20
Overview
In Xstore Point of Service, a workstation is any system running Xstore Point of Service.
This can be a register, a back-office system, or a handheld device. These workstations are
managed through the loc_wkstn table, and can be loaded into the database through
DataLoader.
Overview
Xstore Point of Service return processing provides the ability to accept returns for
transactions processed by outside systems. This functionality allows items purchased on
the web to be returned in a store location.
• A shipping document is required to process a cross-channel return. If the customer
does not have a shipping document, a standard blind return must be performed.
• The shipping document barcode is only accepted at the prompt for Web Order ID,
not at the item prompt. (Only transaction barcodes can initiate a return transaction
from the item prompt).
• If the OMS host is unreachable, Xstore Point of Service's existing unverified return
processing will be used.
Setup Required
• Items sold on the web must exist in the store database whether or not they are sold
in-store.
• In system.properties, add :crosschannelreturn to the config path
dtv.config.path.-500=:crosschannelreturn.
• Xstore Point of Service is communicating with the Order Management System for
cross-channel returns, for both OMS lookups and OMS returns, through the Xstore
services framework. The following three parameters must be included in the Order
Management System (OMS) service definition in the ServiceHandlers.xml:
Note: The values for the configurations below, may vary depending
on your Order Management System installation.
Note: Xstore Point of Service does not have the ability to translate the
Xstore return reason code to an equivalent OMS return reason code for
each item returned in Xstore Point of Service.
Note: If the lookup fails as unreachable, the user will be notified and
Xstore Point of Service will enter unverified return mode.
5. Xstore Point of Service prompts for a return reason code. Return codes are mapped
to Disposition codes (that is. return to warehouse, re-sale in store, and so on). Both
disposition and reason codes are included in the CWRETURNIN message.
6. When the transaction is completed, a CWRETURNIN message is sent.
7. Xstore Point of Service accepts a CWRETURNOUT message to confirm receipt of the
return. If the success_flag = N, then the text description of the failure is written to the
Xstore Point of Service log and the user will not be notified of message failure.
Overview
Customer Records
When using the certified Customer Engagement Cloud Services interface, Xstore Point of
Service submits real-time adds and updates of customer records to the CRM system
through its Web Services.
When a new customer record is added in Xstore Point of Service, it will immediately be
added to Customer Engagement Cloud Services. Replication will handle transporting
the customer record to Xstore Office. If a connection to Customer Engagement Cloud
Services cannot be established, the customer will be saved in the StorePrimary
DataSource (as configured by default), with replication handling persistence to both
Xstore Office and Customer Engagement Cloud Services. (As such, there is no need for a
backup write to relate.customers.xml because replication essentially guarantees
eventual delivery).
When a customer record is pulled down from Customer Engagement Cloud Services
and updated in Xstore Point of Service, the changes will be sent in real-time to all of the
destinations as described above (subject to replication delays).
There is no action required by the user to enable/disable this behavior since this is
standard Xstore Point of Service functionality.
The following sections define the setup required to use the Customer Engagement Cloud
Services module.
Example 1
<Service name="RELATE_CUSTOMER_WS">
<Parameters dtype="Map">
<WsdlLocation dtype="String">https://orce:<PORT>/ocl/
OrceWebServices/v3_0/CustomerServicesApiService?wsdl</
WsdlLocation>
<ReadTimeout dtype="Integer">30</ReadTimeout>
<ConnectTimeout dtype="Integer">30</ConnectTimeout>
<PriorityCustomerSegmentId dtype="Integer">940</
PriorityCustomerSegmentId>
<Entry dtype="MapEntry" key="Auth">
<value cipher="config" encrypted="${dtv.relate.Auth}"/>
</Entry>
</Parameters>
</Service>
Example 2
<Service name="RELATE_CARD_WS">
<Parameters dtype="Map">
<WsdlLocation dtype="String">https://orce:<PORT>/ocl/
OrceWebServices/v3_1/CardServicesApiService?wsdl</WsdlLocation>
<ReadTimeout dtype="Integer">30</ReadTimeout>
<ConnectTimeout dtype="Integer">30</ConnectTimeout>
<LoyaltyUpdateRetryInterval dtype="Integer">15</
LoyaltyUpdateRetryInterval>
Example 3
<Service name="RELATE_LOYALTY_WS">
<Parameters dtype="Map">
<WsdlLocation dtype="String">https://orce:<PORT>/ocl/
OrceWebServices/v3_3/LoyaltyAccountServicesApiService?wsdl</
WsdlLocation>
<ReadTimeout dtype="Integer">30</ReadTimeout>
<ConnectTimeout dtype="Integer">30</ConnectTimeout>
<Entry dtype="MapEntry" key="Auth">
<value cipher="config" encrypted="${dtv.relate.Auth}"/>
</Entry>
</Parameters>
</Service>
Example 4
<Service name="RELATE_AWARD_WS">
<Parameters dtype="Map">
<WsdlLocation dtype="String">https://orce:<PORT>/ocl/
OrceWebServices/v3_1/AwardAccountServicesApiService?wsdl</
WsdlLocation>
<ReadTimeout dtype="Integer">30</ReadTimeout>
<ConnectTimeout dtype="Integer">30</ConnectTimeout>
<Entry dtype="MapEntry" key="Auth">
<value cipher="config" encrypted="${dtv.relate.Auth}"/>
</Entry>
</Parameters>
</Service>
Example 5
<Service name="RELATE_PROMOTION_WS">
<Parameters dtype="Map">
<WsdlLocation dtype="String">https://orce:<PORT>/ocl/
OrceWebServices/v1_0/SerializedCouponServiceService?wsdl</
WsdlLocation>
<ReadTimeout dtype="Integer">30</ReadTimeout>
<ConnectTimeout dtype="Integer">30</ConnectTimeout>
<Entry dtype="MapEntry" key="Auth">
<value cipher="config" encrypted="${dtv.relate.Auth}"/>
</Entry>
</Parameters>
</Service>
Example 6
<Service name="RELATE_REGISTRY_WS">
<Parameters dtype="Map">
<WsdlLocation dtype="String">https://orce:<PORT>/ocl/
OrceWebServices/v3_1/RegistryServicesApiService?wsdl</
WsdlLocation>
<ReadTimeout dtype="Integer">30</ReadTimeout>
<ConnectTimeout dtype="Integer">30</ConnectTimeout>
<PurchaseRetryInterval dtype="Integer">15</
PurchaseRetryInterval>
<Entry dtype="MapEntry" key="Auth">
<value cipher="config" encrypted="${dtv.relate.Auth}"/>
</Entry>
</Parameters>
</Service>
Example 7
<Service name="RELATE_ATTRIBUTE_WS">
<Parameters dtype="Map">
<WsdlLocation dtype="String">https://orce:<PORT>/ocl/
OrceWebServices/v3_2/AttributesServiceApiService?wsdl</
WsdlLocation>
<ReadTimeout dtype="Integer">30</ReadTimeout>
<ConnectTimeout dtype="Integer">30</ConnectTimeout>
<Entry dtype="MapEntry" key="Auth">
<value cipher="config" encrypted="${dtv.relate.Auth}"/>
</Entry>
</Parameters>
</Service>
Example 8
<Service name="RELATE_TASK_WS">
<Parameters dtype="Map">
<WsdlLocation dtype="String">https://orce:<PORT>/ocl/
OrceWebServices/v1_2/TaskServicesApiService?wsdl</WsdlLocation>
<ReadTimeout dtype="Integer">30</ReadTimeout>
<ConnectTimeout dtype="Integer">30</ConnectTimeout>
<Entry dtype="MapEntry" key="Auth">
<value cipher="config" encrypted="${dtv.relate.Auth}"/>
</Entry>
</Parameters>
</Service>
Example 9
<Service name="RELATE_GIFT_CARD_SVC_TRANSACTION_WS">
<Parameters dtype="Map">
<WsdlLocation dtype="String">https://orce:<PORT>/ocl/
OrceWebServices/v3_1/SvcTransactionServicesApiService?wsdl</
WsdlLocation>
<ReadTimeout dtype="Integer">30</ReadTimeout>
<ConnectTimeout dtype="Integer">30</ConnectTimeout>
<CardPrefix dtype="String">33333</CardPrefix>
<CardSeries dtype="String">01</CardSeries>
<Entry dtype="MapEntry" key="Auth">
<value cipher="config" encrypted="${dtv.relate.Auth}"/>
</Entry>
</Parameters>
</Service>
Security Access
• If Customer Engagement Cloud Services is offline, customer search fails over to the
store primary.
• Customer Engagement Cloud Services security rules work together with any Xstore
Point of Service security privileges for buttons or actions that are in place to give the
user the least amount of editing rights. For example, if Customer Engagement Cloud
Services sends a Read/Write setting, but Xstore Point of Service only allows viewing
for the user, then the user cannot edit customers. Or, if Customer Engagement Cloud
Services sends a Limited Read access, but Xstore Point of Service allows full editing
rights for the user, then the user will have Limited Read access with no editing
rights.
• Sales Associates can always create new customers (unless offline with Customer
Engagement Cloud Services or invalid user on Customer Engagement Cloud
Services).
• Security rights do not affect any customer data that is displayed in Xstore Point of
Service reports.
There are three configuration options available for linking the Customer Engagement
Cloud Services security functionality to Xstore Point of Service:
- NO_SECURITY - Send the configured default user for every call. This option
will give the same security setting to everyone. The DefaultUserId value is
set up in Customer Engagement Cloud Services and in system.properties.
This guarantees that a user is always found. Customer Engagement Cloud
Services will send a security level in the response, but Xstore Point of Service
will not use it.
* Default user ID is passed for Security User on all Customer Engagement
Cloud Services requests.
* Logged in user ID is passed as Update User ID on all Customer Engagement
Cloud Services requests.
- USER_ID security - Send the actual user ID. For this option, every Xstore Point
of Service user must be set up in Customer Engagement Cloud Services. The
specific user ID is sent to Customer Engagement Cloud Services for all customer
requests. Customer Engagement Cloud Services will then take the user and
customer into account to determine the security rights that the user has for that
particular customer. (See “Customer Requests in Xstore Point of Service”).
* Logged in user ID is passed as Security User on all Customer Engagement
Cloud Services requests.
* Logged in user ID is passed as Update User ID on all Customer Engagement
Cloud Services requests.
- USER_ROLE security - Send the Primary Group ID of the user. For this option,
every Xstore Point of Service role must be set up as a user in Customer
Engagement Cloud Services. The user’s Primary Group ID is sent to Customer
Engagement Cloud Services for all customer requests. Customer Engagement
Cloud Services will then take the user role and customer into account to
determine the security rights that the user has for that particular customer. (See
“Customer Requests in Xstore Point of Service”).
* Primary group ID is passed as Security User on all requests to Customer
Engagement Cloud Services
Customer
Customer Retrieve
Add/Update Customer
Delete Customer
Registry
Get Registry
Add/Update Registry
Card Loyalty
- Customer Options (Add New, Print, Tax Exemption, and Create House Account)
are available.
- Wish List: Add Item, Purchase Item, and Delete Item buttons are disabled.
- Comment: Add Comment button is disabled.
No Access - No data is returned to Xstore Point of Service. Xstore Point of Service will
function as if the customer is not found and no name will display in the search results.
<Setting name="Loyalty---LoyaltyCardPurchaseItemId">1700</
Setting>
<Setting name="Loyalty---LoyaltyCardRenewalItemId">1701</Setting>
<Setting name="Loyalty---PurchaseLoyaltyCardEnabled">false</
Setting>
<Setting name="Loyalty---RegistrationMode">CARD_CENTRIC</Setting>
<Setting name="Loyalty---ShowCardExpirationDate">false</Setting>
</SysConfig>
RegistrationMode - Determines the method of distributing Loyalty cards to
customers:
- Card Centric (CARD_CENTRIC)- The store provides a physical card with a
Loyalty account number to the customer. The card's Loyalty number may be
entered manually or swiped in a device.
- Customer Centric (CUSTOMER_CENTRIC) - The store does not provide a
physical card to the customer. The Loyalty number is automatically assigned by
the system and associated with the customer record.
HistoryDaysToDisplay - The number of days the system will look back for a
customer's transaction history.
CouponExpirationNoticeThresholdDays - Determines the number of days before
a coupon expires in which users will receive warning of the expiration.
CardExpirationNoticeThresholdDays - Determines the number of days before a
card expires in which users will receive warning of the expiration.
CardExpirationDateRenewDays - Determines the number of days to renew a
Loyalty card for.
ShowCardExpirationDate - Determines whether to show the Loyalty card expiration
date in the display and on the receipt. If true, the Loyalty card expiration date will
display on the Xstore Point of Service screen and is printed on the receipt. If False,
Loyalty card expiration date will only be shown on the Loyalty Cards tab in customer
maintenance.
PurchaseLoyaltyCardEnabled - Determines whether Loyalty cards can be
purchased and renewed. When set to true, the ability to sell and renew Loyalty cards is
enabled. See Sell/Renew Loyalty Cards below for more information.
LoyaltyCardPurchaseItemId - If PurchaseLoyaltyCardEnabled is set to true,
this is the item identifier for the purchased-type Loyalty card.
LoyaltyCardRenewalItemId - If PurchaseLoyaltyCardEnabled is set to true,
this is the item identifier for the renewed-type Loyalty card.
Requirements
• Customer Engagement Cloud Services requires an expiration date on the account.
• Selling and renewing Loyalty cards is restricted to the sale transaction mode:
- In mixed transactions such as layaway, hold, pre-sale, etc., the sale of the Loyalty
card (the non-merchandise SKU) will not be available when in the extended
transaction mode.
- Loyalty card sale and renew will be disabled in the Back Office customer
maintenance. Purchasing Loyalty cards can only occur in the sale transaction
mode, not customer maintenance.
- At the beginning of the transaction, if the customer declines the Loyalty prompt,
the associate can access customer maintenance from the sale and select customer
options to add the Loyalty card to the sales transaction.
• The transaction will be processed in real-time communication with Customer
Engagement Cloud Services.
• The sale of a Loyalty card requires a customer to be attached to the sale transaction.
• The associate will be unable to detach a customer from a sales transaction that has a
Loyalty card purchase included. The button that allows removal of the customer is
not active and the associate will be unable to swipe to remove the customer.
• If the line item associated with the Loyalty card SKU is voided from the transaction,
either by swiping or by using the button, the Loyalty card will be dissociated/
unassigned from the customer in the sales transaction. When the Loyalty purchase is
voided from the transaction, a real-time call is made to Customer Engagement
Cloud Services disassociating the Loyalty card from the customer account.
• Loyalty Cards cannot be returned. If necessary, the transaction can be post-voided to
disassociate the Loyalty card from the customer record when the post void is
processed.
The customer will be persisted with the transaction and subsequently replicated directly
to Customer Engagement Cloud Services and also replicated to Xstore Office, as
discussed above. No batch mode operation is needed.
If there is a customer that only exists in Xstore Office, and the customer is selected in
Xstore Point of Service (whether in a transaction or in Customer Maintenance), and no
updates are made to the customer, should the customer information be sent in real-
time to Customer Engagement Cloud Services?
No, customers will not be saved to Customer Engagement Cloud Services unless they
are newly created or modified. The assumption is that, as Customer Engagement Cloud
Services is the SOR (System of Record), any record pulled from another source should
have found its way to Customer Engagement Cloud Services at some point prior.
Writing an unmodified record would either be redundant, or worse, replace the SOR’s
“good” data with stale data from a secondary data source.
The following properties are used to initialize to the Oracle Retail Promotions Engine
offline library, they are not validated by Xstore. The default value of the properties is set
by the library when a value is not set in Xstore:
system.properties Settings
The table below describes the system.properties settings.
Xservices Settings
When using Xservices, the above system.properties settings must be present in the
xservices.properties file.
In addition, the xstore.data.path setting should be added.
xstore.data.path=../xstoredata/xservices
In Xservices the initialization of the Oracle Retail Promotions Engine offline library is
delayed to allow the Jetty server to be fully started before the library downloads the deal
space. The default delay is 30 seconds. This value can be changed with the parameter
oracle.retail.promote.delayedStartTimeout.
Additional Details
Additional logging can be enabled by changing the level of the package
dtv.pos.pricing.promote in the log4j configuration.
<Logger name="dtv.pos.pricing.promote" level="debug" />
Xstore’s role in this integration is to correctly prepare the data for the Oracle Retail
Promotions Engine offline library and to apply the results to the sale.
If a deal is not applied as expected and it needs to be defined whether the issue is on the
Xstore side or on the Oracle Retail Promotions Engine library side, the log level can be
changed to "trace".
This level will write a JSON string in the Xstore log file with the request sent by Xstore
and the response returned by the library.
Overview
This chapter provides information about the configurations that support the Oracle
Retail Order Broker Cloud Service. This optional module can be interfaced with Xstore
Point of Service to provide information about inventory availability across all sales
channels.
Using this Order functionality, you can sell an item that is not in stock at your store and
Order Broker will automatically select the best location to fulfill the customer’s order
across the enterprise.
Order Functionality
There are two types of Order Broker order types: Legacy and New.
Legacy
With legacy order types, a Pick Up Other Store order contains items to be picked up
from a fulfilling store's inventory, and therefore never requires inventory transfer from
another store.
Legacy order types are enabled by setting the LegacyOrderType flag to true in
ServiceHandlers.xml.
New
With new order types, a Pick Up Other Store order can contain two kinds of items:
pickup items and ship for pickup items.
A pickup item is just like a Legacy Pick Up Other Store order. It is picked up from the
fulfilling store's inventory with no inventory transfer from another store.
A ship for pickup item is a new feature. It may not have available inventory in the
fulfilling store, and may need to be sourced and shipped from another store to the
fulfilling store to be picked up.
New order types are enabled by setting the LegacyOrderType flag to false in
ServiceHandlers.xml.
Fulfillment Types
There are several ways in which an Order Broker order can be fulfilled:
• Fulfill By Order: A store associate fulfills an entire order from one location.
• Fulfill By Order Line: A store associate can select one or more eligible order lines to
fulfill.
• Split Line Fulfillment: When Order Broker is configured to allow split line orders,
an order line may be split into multiple lines if there is not enough inventory to
fulfill from a single store.
• Fulfill By Partial Quantity: For an order line with multiple quantities, a store
associate can choose to fulfill part of it. The order line will be split into two in this
case. A new order line is created with the partially fulfilled quantity in the new
status. The existing order line’s quantity is decremented to reflect the split. A
boolean system configuration AllowPartialUpdates is added to Xstore to enable
or disable this feature. By default it is disabled. When it is enabled, Order Broker’s
Allow Partial Updates and Allow Split Order settings must both be turned on.
from another location to the pickup store. On the Work List screen this type of order
may be labeled a Transfer Pickup.
• TRANSFER PICKUP - (Pick Up This Store) This type involves shipping the item to
the store where the order is placed (originating store) for pickup. This may involve
multiple shipments when the split order option is enabled and all items cannot be
sourced from one location.
• DELIVERY - The items are shipped to the customer directly. This may also involve
multiple shipments when the split order option is enabled and all items cannot be
fulfilled by one store location.
Email Functionality
Xstore Point of Service sends emails to customers for Order Broker orders in the
scenarios described below. This email activity is not configurable.
• PICKUP - (Pick Up Other Store) An email is sent to the customer when the fulfilling
store picks/reserves the order.
• TRANSFER PICKUP - (Pick Up This Store) An email is sent to the customer when
the order is received by the originating store and the receiving document is closed.
• DELIVERY - An email is sent to the customer when the fulfilling store ships the
order.
Group Shipment
The “Group Shipment” configuration setting in Order Broker will indicate when
Customer Delivery and Pick Up This Store orders will be brokered by Order Broker or
when the Sales Associate will select the fulfilling location.
- When the “Group Shipment” setting in Order Broker is set to true, the response
web service sends back a 'v' flag for Virtual Inventory indicating that Order
Broker has the inventory and will be able to fulfill the order. Xstore Point of
Service will hand off the brokering process to the Order Broker.
- When the “Group Shipment” setting in Order Broker is set to false, the response
web service will send back no 'v' flag. The message response from Order Broker
will include the information on the location, items, inventory and the miles from
the originating store. The Sales Associate will pick the appropriate location
based on the information displayed.
Note: The Sales Associate must always pick the appropriate location
for Pick Up Other Store orders regardless of the Group Shipment
configuration.
ServiceHandlers.xml Settings
<Service name="LOCATE">
<Parameters dtype="Map">
<WsdlLocation dtype="String">http://hostname/Locate/
LocateServices?wsdl</WsdlLocation>
<ConnectTimeout dtype="Integer">30</ConnectTimeout>
<Destination dtype="String">Locate</Destination>
<LocateVersion dtype="String">16.0</LocateVersion>
<AllowSplitOrder dtype="String">true</AllowSplitOrder>
<LegacyOrderType dtype="String">true</LegacyOrderType>
<AllowPartialUpdates dtype="String">false</
AllowPartialUpdates>
</Parameters>
</Service>
WsdlLocation – This configuration sets the URL of the Order Broker server’s WSDL.
ConnectTimeout – This configuration sets the connection timeout for requests that are
sent to Order Broker.
StatusUpdateRetryInterval - This configuration sets the number of minutes
between attempts to resend failed status updates.
OrderSubmitRetryInterval - This configuration sets the interval number between
attempts to resend failed order submissions.
Destination - This value identifies what should be sent to Order Broker as the
destination in a request message. This is set in Order Broker and dictated by Order
Broker.
LocateVersion - This value is passed in request messages sent to Order Broker, and is
used by Order Broker to determine the response message version to return. The
configured version number should not be increased beyond the default value included
in the base file.
AllowSplitOrder - If set to true, split order functionality is enabled. With split order
functionality enabled, Order Broker will split a delivery order across multiple fulfilling
locations if there is no single location that can fulfill all the items in the order. This setting
must match the configuration setting in Order Broker.
LegacyOrderType - If set to true (default value), Xstore Point of Service will use order
types used by earlier versions of Order Broker. If set to false, Xstore Point of Service will
use new Order Broker order types.
Note: The Enable Ship for Pickup setting in Order Broker Cloud
Service must match the functionality in this configuration. If they do
not match, Order Broker orders will not work.
• If LegacyOrderType is set to true, Enable Ship for Pickup must be set to
No.
• If LegacyOrderType is set to false, Enable Ship for Pickup must be set to
Yes.
SysConfig.xml Settings
In base Xstore Point of Service, this file is found in the
C:\xstoredata\lib\config.jar\order\ directory.
<Setting name="Order---AgedNotificationDays">2</Setting>
<Setting name="Order---AllowShipOrderWhileStoreIsClosed">true</
Setting>
<Setting name="Order---AutoPickInventoryUponAccept">false</
Setting>
<Setting name="Order---
CancellableOrderLineStatus">NEW,POLLED,ACCEPTED,RECEIVED,UNFULFIL
LABLE</Setting>
<Setting name="Order---CustomerOrderNoShowMessageRegister">1</
Setting>
<Setting name="Order---CustomerOrderNoShowNotificationDays">30</
Setting>
<Setting name="Order---DefaultLocateItemDistance">200</Setting>
<Setting name="Order---DepositBasis">ITEM</Setting>
<Setting name="Order---DepositCalculation">PERCENT</Setting>
<Setting name="Order---DepositValue">10</Setting>
<Setting name="Order---DisplaySoldItemCount">false</Setting>
<Setting name="Order---EnableBorderControl">false</Setting>
<Setting name="Order---EnablePickListScanning">false</Setting>
<Setting name="Order---EnableSameDayDelivery">false</Setting>
<Setting name="Order---LocateItemOnQuantityChange">true</Setting>
<Setting name="Order---LocationConfirmationPrompt"></Setting>
<Setting name="Order---ProcessDeliveryOrdersFirst">true</Setting>
<Setting name="Order---PromptForItemQuantity">false</Setting>
<Setting name="Order---PromptOrdersOnStoreClose">false</Setting>
<Setting name="Order---PromptOrdersOnStoreOpen">false</Setting>
<Setting name="Order---PromptShowOrderCancelReasonCode">true</
Setting>
<Setting name="Order---PromptShowOrderRejectReasonCode">true</
Setting>
<Setting name="Order---PromptShowPickedOrderItemWarning">true</
Setting>
<Setting name="Order---SameDayDeliveryMessageRegister">1</
Setting>
<Setting name="Order---SameDayDeliveryPickupWindowTime">120</
Setting>
<Setting name="Order---SetupFeeBasis">ITEM</Setting>
<Setting name="Order---SetupFeeCalculation">PERCENT</Setting>
<Setting name="Order---SetupFeeValue">0</Setting>
<Setting name="Order---ShipCalcType">PER_ITEM</Setting>
<Setting name="Order---ShippingFeeOnDelayedPickup">false</
Setting>
<Setting name="Order---SkipSearchFormIfCustomer">true</Setting>
OPEN At least one of the items has one of the following statuses: NEW,
POLLED, ACCEPTED, IN_TRANSIT, IN_TRANSIT_POLLED.
COMPLETE There are no more actionable items. At least one of the items has
been fulfilled. All other items are either fulfilled or cancelled.
NEW Item Ordered - Indicates the item has been added to the order.
POLLED Item Ordered - Indicates the source/fulfilling location got the item
request.
ACCEPTED Item Ordered - Indicates the source location has confirmed it can
satisfy the order request.
PICKED/RESERVED Item Picked and Reserved - Indicates the item has been put aside at
the source/fulfilling location for the customer or to be shipped. In
Xstore Point of Service, the status is Reserved and the action is
Pick/Reserve. In Order Broker, the status is Picked.
IN TRANSIT Item In Transit - Indicates the item has been has been shipped to the
fulfilling location. This is to differentiate it from a Delivery order
whose status is Complete after it has been shipped.
IN_TRANSIT_POLLED Item in Transit - Indicates the fulfilling location is notified that the
item has been shipped and will arrive at the store to be picked up.
RECEIVED Item Received - Indicates the item has been received in the store.
FULFILLED Item Fulfilled - Indicates the item has been picked up/delivered.
UNFULFILLABLE Item Unfulfillable - Indicates the item cannot be fulfilled from any
location.
Accepting an Order
An order can be Accepted if at least one item is in the POLLED state.
Reserving an Order
An order can be picked/reserved if at least one item is in the ACCEPTED state.
Overview
This implementation is an extension of the Oracle Retail Order Broker Cloud Service
project. There is a new type of order distinguished by the delivery_service_level column
of the xom_order table. Orders where CaR functions are applicable have the value
"SAME_DAY" in that field. Those orders will be created from an external platform (Web
Order) and forwarded to Xstore via Oracle Retail Order Broker Cloud Service.
During the different phases of the processing of the order, a call to the CaR platform is
performed. CaR forwards the call to the service provider to schedule a driver for the
pickup returning some information about the confirmation and the expected pickup
time.
A "SAME_DAY" order is expected to be processed in its integrity: it is not possible to
select single lines.
Additional documents are created in Xstore for SAME_DAY orders and a different path
is expected for them.
Process Steps
Process Step Delivery Orders Same Day Delivery Orders
Ship order (changes for Header set to "COMPLETE" Enter "Number of packages"
Same Day orders)
Detail set to "FULFILLED" Call CaR to make Driver
booking request
OROB set to "FULFILLED"
Header set to
Inventory: –ORDER
"AWAIT_DRIVER_COLLEC
Require tracking number TION"
Print Packing Slip and Note: The
Shipping label AWAIT_DRIVER_COLLEC
TION status in unknown on
OROB environment, so it is
not sent to Oracle Retail
Order Broker Cloud
Service. It is only persisted
in Xstore. When the order is
downloaded again, the local
"AWAIT_DRIVER_COLLEC
TION" status is preserved if
the order downloaded from
Xstore is in status "Picked".
Detail no changes
OROB no changes
Inventory: nothing
Do not require tracking
number
Print packing slip and new
Shipping/Package labels
Print new Courier Delivery
Handover document
Database Structures
For more information about the database tables, see the XOM domain in the Oracle Retail
Xstore Point of Service Software Database Dictionary.
Carton Label
A new specific label for SAME_DAY orders is created: sameDayShippingLabel. This
is used in the OpChain for SAME_DAY orders when they are shipped.
Overview
This chapter provides information about the configurations that support the Oracle
Retail OPERA Property Management. This optional module can be interfaced with
Xstore Point of Service to enable the Room Charge and the Room Charge Refund as
tender options in Xstore Point of Service.
xstore.properties
The following information must be configured in the xstore.properties file with
the details provided by the Oracle Support team:
Overview
This chapter describes how to rotate service credentials in Xstore Point of Service for
integrated systems.
Rotating Credentials
Service credentials for systems integrated with Xstore Point of Service, like Customer
Engagement or Order Broker, are stored in the data base. You can update all stores from
Xstore Office/Xstore Office Cloud Service by deploying a data file (.mnt) with the new
credentials.
Note: For more information on how to deploy data files, see the
Oracle Retail Xstore Office/Xstore Office Cloud Service User Guide.
Each record needs to include the system/service, the effective and expiration date, the
encrypted user name and password. The effective and expiration dates allow you to load
the new credentials ahead of time for an easier rotation. Multiple credentials per system/
service can exist. Xstore Point of Service will use the most recently effective credentials
that are not yet expired when connecting to a system/service. A credential is considered
valid if its effective date is a date earlier than the current date and its expiration date is
after the current date.
Note: If the store is “Cloud” enabled, then the store’s OAuth Client
credentials will be rotated on a regular schedule.
If credentials are stored in both the database and the system.properties file for the
same service ID, Xstore Point of Service will use the credentials stored in the database. If
there are no credentials stored in the database, the system will retrieve the credentials
from the system.properties file, if available.
Valid entries for the service_id field in the sec_service_credentials table are
the service IDs defined in the ServiceHandlers.xml. However, it is possible for more
than one service to share the same credentials between them. In that case you need to
configure them in the following map, so that the credential provider knows how to map
a given service ID to a credential ID.
Note: This is not required if the service does not share its credentials
with other services.
Example: credeintialIdMapping
<!-- Note: This map is used to specify a set of services which share the
same authentication credentials. -->
<property name="credentialIdMapping">
<props>
<prop key="RELATE_CUSTOMER_WS">RELATE</prop>
<prop key="RELATE_CARD_WS">RELATE</prop>
<prop key="RELATE_LOYALTY_WS">RELATE</prop>
<prop key="RELATE_AWARD_WS">RELATE</prop>
<prop key="RELATE_PROMOTION_WS">RELATE</prop>
<prop key="RELATE_REGISTRY_WS">RELATE</prop>
<prop key="RELATE_ATTRIBUTE_WS">RELATE</prop>
<prop key="RELATE_TASK_WS">RELATE</prop>
<prop key="RELATE_GIFT_CARD_SVC_TRANSACTION_WS">RELATE</prop>
<prop key="RXM_DIGITAL_CART">RXM_APPLICATION</prop>
<prop key="RXM_ASSOCIATED_ITEMS">RXM_APPLICATION</prop>
<prop key="RXM_ITEM_INFORMATION">RXM_APPLICATION</prop>
<prop key="SIM_STORE_INVENTORY">SIM</prop>
<prop key="SIM_POS_TRANSACTION">SIM</prop>
<prop key="SIM_UIN_STORE_INVENTORY">SIM</prop>
</props>
</property>
...
If the credentials are still stored in the system.properties file (not recommended),
add a new entry to the alternativeServiceCredentialsMap property as shown
in the example below.
Example:
<bean id="serviceCredentialProvider"
class="dtv.servicex.impl.ServiceCredentialProvider" init-method="init"
depends-on="dataFactoryAssistant">
...
...
<!-- AlternativeServiceCredentialMap is intended to use as an alternative
way to provide credentials for the services by retrieving them via system
properties. Note: This should only be used in Xstore version 17 and
older. -->
<property name="alternativeServiceCredentialMap">
<map>
<entry key="RELATE">
<bean
class="dtv.servicex.impl.ServiceCredentialProvider.ServiceCredentials">
<constructor-arg index="0"
value="#{systemProperties['dtv.test.username']}" />
<constructor-arg index="1"
value="#{systemProperties['dtv.test.password']}" />
</bean>
</entry>
</map>
</property>
</bean>
Overview
Xstore Point of Service provides the ability to automatically send specified receipts from
a retail transaction to a customer’s valid email address. After a retail transaction is
completed, any receipts configured to be emailed will be rendered as PDF documents,
and sent to the customer's email address as email attachments. If desired, a watermark
can be applied to the PDF receipt images, typically to note them as copies of the original
receipts. (Receipts may also be printed at the store).
The recipient of the email will receive it in a reasonable time following the transaction.
The sales receipt document can be printed using a standard document printer. This PDF
receipt cannot be edited and there is no mechanism in place for allowing the customer to
respond to the email.
To use this feature, the customer must have an active email address and permission to
receive email from the store on file. (These values can be set up and maintained in Xstore
Point of Service Customer Maintenance).
Note: To avoid duplicate receipts (email and print), the Store Credit,
Gift Certificate, and Coupon receipt types should not be configured to
allow “email” and “email & print” options.
4. Set up the SysConfig.xml file. See “SysConfig.xml Example” for more information.
Note: Substitute appropriate values for the host, port, auth, user,
password, default sender and default recipient fields as needed for
your organization.
EmailReceipt.vm Example
#set ($subject = "Receipt from your recent purchase")
The receipts from your recent purchase are attached. Thank you for
shopping with us!
emailTemplate.properties Example
_emailReceipt=dtv/res/config/email/EmailReceipt.vm
_emailErrorInfo=dtv/res/config/email/ErrorInfo.vm
_emailPriceOverride=dtv/res/config/email/PriceOverride.vm
_emailTaxOverride=dtv/res/config/email/TaxOverride.vm
_emailReceivedOrder=dtv/res/config/email/OrderReceived.vm
_emailAllocatedOrder=dtv/res/config/email/OrderAllocated.vm
_emailShippedOrder=dtv/res/config/email/OrderShipped.vm
_emailReservedOrder=dtv/res/config/email/OrderReceived.vm
SysConfig.xml Example
<Setting name="Email---
DefaultRecipient">storeManager@thisOrg.com</Setting>
<Setting name="Email---Receipt---AlwaysPromptToEmail">true</
Setting>
<Setting name="Email---Receipt---From">_receiptEmailFrom</
Setting>
<Setting name="Email---Receipt---LineCharacterCount">80</Setting>
<Setting name="Email---Receipt---LineStyle">Andale Duospace WT</
Setting>
<Setting name="Email---Receipt---
SaveUpdatedEmailAddressToCustomer">true</Setting>
<Setting name="Email---Receipt---SendEmailReceipts">true</
Setting>
<Setting name="Email---Receipt---Subject">_receiptEmailSubject</
Setting>
<Setting name="Email---SmtpDebug">false</Setting>
<Setting name="Email---TestingModeAddressFilter">@oracle.com,</
Setting>
<Setting name="Email---UseTLS">true</Setting>
<Setting name="Email---UseTestingMode">true</Setting>
• UseTLS - If true, Xstore Point of Service will use TLS keys to encrypt
communications with the mail server.
• DefaultMailUser - Username to use if making secure SMTP connections.
• DefaultMailPassword - Password to use if making secure SMTP connections.
• SmtpDebug - If true, and logger severity is set to DEBUG, Xstore Point of Service
will log SMTP debug messages to the console.
• DefaultRecipient - The default email recipient.
• UseTestingMode - USED FOR TESTING ENVIRONMENTS ONLY!---Set this
value to true for Dev and QA testing to ensure that emails are not sent to live
customer email addresses. When set to true, emails are only sent when the email
Figure 29-2: Email Receipts Field in Xstore Point of Service Customer maintenance
After tendering the sale, the user is prompted to select a receipt method.
The choice made here applies to all receipts. (You Back = Return to the “Sale Complete?” prompt.
cannot print one receipt but email the other). Any Email Only = Send the email receipt, do not print
receipt types that are not supported for distribution in
one. Transaction is now complete.
an email will automatically print on the receipt
printer. Print & Email = Print the receipt and send the email.
Transaction is now complete.
• Print Only = Print the receipt(s) rather than
sending an email copy. All receipts will be printed
on the receipt printer and the transaction is
complete.
• Email = Email the receipt(s) to the customer.
Continue with “Email Receipt method
options”.
Figure 29-3: Send Email Receipt Prompt - Email Address On File Example
Overview
Numerous Third-Party Email Receipt providers are available for creating and emailing
professional digital receipts to customers.
Digital receipts are usually created starting from a dataset of information. If Xstore is
configured to manage third-party email receipts, the e-mail function is selected at
transaction completion, instead of sending the Xstore receipts via email to the customer,
a JSON payload will be stored as transaction attachment. This information is replicated,
as usual, in Xcenter. In this environment, a specific broadcasting function makes the
information available for third-parties to use for the enhanced e-mails.
Xadmin - Enablement
The new base feature can be enabled on Xadmin.
Payload Detail
The payload has a main section which includes:
• The main transaction data (transaction key, totals, email address, barcode);
• The workstation\store\legal entity information;
• The customer information;
• The item lines (which include the line data, the item information, the tax detail of the
line, the discount detail of the line);
• The tender lines;
• The tax lines;
• The related transactions information;
• The oupons detail;
• The gift receipts detail;
• The customer accounts information (send sale, warranty, work order, layaway,
special order);
• The order information (header, lines, payments);
• The country specific data (transaction signature, fiscal number, QR code content, ...);
and
• The airport\flight specific data (if the airside function is enabled).
All the extended properties are included by default, but it is possible to change the
behavior acting on spring configuration (for detail see the Payload Implementation
section).
The JSON schema defined for the payload is available as enhancedEMail.schema.json
under res\json in the customer overlay folder.
Payload Implementation
Extended Properties
It is possible to customize the behavior of the payload creation for the extended
properties of the different objects.
Consult the file enhancedemail-beans.xml (config\config\enhancedemail\spring).
The bean emailReceiptProperties is used to define a list of extended properties
that will be excluded from (or included in) the payload creation.
If the value of the property excludedProperties is true, the properties in the list
will be excluded from the payload and all the properties not included in the list will be
exported; if the value is set to false, the properties in the list will be included in the
payload and all the properties not included in the list will be ignored.
The bean trnPropertyCustomerEmailUpdated is an example about how to create
custom beans for the properties that need to be included in the list.
Spring Configurations
<!-- List of extended properties to be included or excluded from
the payload¬->
<bean id="emailReceiptProperties"
class="oracle.retail.xstore.emailrcpt.properties.EmailReceiptProp
erties" scope="prototype">
<property name="excludedProperties" value="true" />
<property name="properties">
<list>
Price Modifiers
It is possible to configure a list of price modifiers that don't need to be exported.
Consult the file enhancedemail-beans.xml (config\config\enhancedemail\spring).
The bean excludedPriceModifiers is used to define the list of the price modifiers
reason codes that will not be exported.
Spring Configurations
<!-- List of price modifiers to be excluded from the payload-->
<util:list id="excludedPriceModifiers" value-
type="java.lang.String"
scope="prototype">
<value>PROMPT_PRICE_CHANGE</value>
<value>PRICE_OVERRIDE</value>
<value>REFUND_PRORATION</value>
<value>CALCULATED_WARRANTY_PRICE</value>
</util:list>
Overview
This chapter provides information about setting up rain check functionality. Rain checks
are issued to customers that request an item that is out of stock. It allows the customer to
purchase the item at today's price at a later date (once stock is replenished). This is often
done because the retailer has temporarily sold out of an item that is/was selling at a
discounted price — this way, consumers can still receive the item and the discount.
In its physical form, a rain check is a slip of paper that identifies an item and its price.
This slip includes a barcode that can be scanned by a sales associate at the time of
redemption. It also includes the retailer's rain check policy and time limits.
Rain checks are consumable; meaning that once the customer uses the rain check, it
cannot be used again.
Assumptions
• Rain check functionality must be enabled.
• Rain checks are not issued as part of a transaction.
• Rain checks are consumable and can only be redeemed once.
• Rain checks are not issued for deals.
• Rain checks are printed from Item Lookup; therefore, only a single item is printed on
a rain check. Multiple items cannot exist on the same rain check.
• Rain checks are not allowed for items using prompt for price pricing.
• Rain checks are not allowed for items that do not have pricing available for a
quantity of one.
• Rain checks are not allowed for non-merchandise items.
Database Tables
The database tables trn_raincheck and trn_raincheck_trans store rain check
information. In addition, trn_trans, the standard base table for any Xstore Point of
Service transaction, also contains information about the rain check.
For information about these tables, see the Xstore Point of Service Database Dictionary.
sec_privilege Table
In the table sec_privilege, “PRINT_RAIN_CHECKS” security privilege must be set
up to identify users with rain check privileges. See Chapter 12, “Security Configuration”
for more information.
com_receipt_text Table
In the table com_receipt_text, define any arbitrary text (typically "terms and
conditions") related to every rain check receipt.
itm_item Table
In the table itm_item, disallow_rain_check is used to determine whether an item
is eligible for a rain check. For example, this option can be used to prevent associates
from printing rain checks for items that may be discounted with the goal of depleting
stock and never reordering.
See “Item Setup Overview” in Chapter 5, “Item and Pricing Configuration” for more
information about this table/column.
Receipt Setup
Receipt text contains the following information:
- The information of the store that issued the rain check.
- The rain check's item ID and description.
- The rain check's item's price.
- The rain check's expiration date.
- The rain check's quantity limit (if one exists).
- A bar code containing the rain check ID.
- Rain check terms and conditions.
Rain check receipts are configured in RcptConfig.xml.
<receipt document="RAIN_CHECK" sectionref="RainCheck"/>
...
<ReceiptCopyRule name="RAIN_CHECK" document="RAIN_CHECK">
<Rule
class="dtv.pos.hardware.rcptbuilding.copyrules.TransactionTypeRul
e" type="RAIN_CHECK"/>
</ReceiptCopyRule>
...
<section name="RainCheck">
<sectionref>header</sectionref>
<row align="C" charsize="X2HW">
<field method="getTransactionTypeCode"
formatter="TranType"/>
</row>
<row/>
<row align="L">
<field text="_itemId"/>
<field text=": "/>
<field method="getRainCheck.getItemId"/>
</row>
<row align="L">
<field method="getRainCheck.getItemDescription"
formatter="ItemDescriptionLength"/>
</row>
<row align="L">
<field text="_price"/>
...
Database-driven receipt data:
<section name="RAIN_CHECK_TERMS_DB"
dbRef="RAIN_CHECK_TERMS::DEFAULT::getBusinessDate"/>
Overview
Configurable Customer Accounts (CCAs) provide the ability to define unique customer
account types, giving retailers the flexibility to manage account types with different
business rules.
For example, a PRESALE customer account type may be set up so that customers can
pay for items and “reserve” them before they officially go on sale.
Another example of a Configurable Customer Account is an ONHOLD customer
account type. This account can be used to offer customers the service of holding
merchandise for a short time so they can return to the store later to pick it up.
Setting up a Configurable Customer Account requires both database entries and
configuration file entries.
• “translations.properties” • “SequenceConfig.xml”
• “resources.properties” • “PreFlightQueryConfig.xml”
• “MenuConfig.xml” • “InputConfig.xml”
• “ActionConfig.xml” • “EventConfig.xml”
• “RcptConfig.xml”
translations.properties
resources.properties
MenuConfig.xml
</MenuOption>
<MenuOption>
<Action ref="PRESALE::CANCEL" />
</MenuOption>
<SubMenu actionRef="CUSTOMER_ACCOUNT::MENU.MODIFY_ACCOUNT"
sticky="false">
<SubMenu actionRef="CUSTOMER_ACCOUNT::MENU.ADD_DISCOUNT"
displayType="LIST">
<MenuOption ref="CUSTOMER_ACCOUNT::ADD_DISCOUNT" />
<MenuOption ref="CUSTOMER_ACCOUNT::ADD_GROUP_DISCOUNT" />
<MenuOption ref="CUSTOMER_ACCOUNT::ADD_AWARD_DISCOUNT" />
</SubMenu>
<SubMenu actionRef="CUSTOMER_ACCOUNT::MENU.MODIFY_LINE">
<MenuOption ref="CUSTOMER_ACCOUNT::CHANGE_LINE_PRICE" />
<MenuOption ref="CUSTOMER_ACCOUNT::VOID_LINE" />
<MenuOption ref="CUSTOMER_ACCOUNT::VOID_DISCOUNT" />
</SubMenu>
</SubMenu>
<MenuOption ref="CUSTOMER_ACCOUNT::PICKUP_LINE" />
<MenuOption>
<Action ref="CUSTOMER_ACCOUNT::COMPLETE.TO_TENDERING" />
<Action ref="CUSTOMER_ACCOUNT::COMPLETE.NO_TENDERING" />
</MenuOption>
</MenuItem>
ActionConfig.xml
OpChainConfig.xml
RcptConfig.xml
Added receipts
<receipt document="PRESALE_ACCOUNT"
sectionref="CONFIGURABLE_CUSTOMER_ACCOUNTS" email="true" />
<receipt document="PRESALE_ACCOUNT_MAIN_STORE"
sectionref="CONFIGURABLE_CUSTOMER_ACCOUNTS_MAIN_STORE" />
SequenceConfig.xml
PreFlightQueryConfig.xml
InputConfig.xml
EventConfig.xml
ComponentGroupConfig.xml file
<ComponentGroupSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance"
xsi:noNamespaceSchemaLocation="ComponentGroupConfig.xsd"
xmlns="http://micros.com/xstore/config/componentgroup">
<ComponentGroup name="DEFAULT">
<ComponentPropertySet ref="FOCUS_BAR_BLACK" />
<ComponentPropertySet ref="TAB_BACKGROUND_BLACK" />
<ComponentPropertySet ref="TITLED_PANEL_BLACK" />
<ComponentPropertySet ref="INFORMATION_PANEL_BLACK" />
<ComponentPropertySet ref="CONTEXT_PANEL_HEADER_BLACK" />
<ComponentPropertySet ref="CONTEXT_PANEL_BLACK" />
<ComponentPropertySet ref="FORM_TAB_BACKGROUND_DEFAULT" />
<ComponentPropertySet ref="BUTTON" />
ComponentPropertySetConfig.xml file
<ComponentPropertySets xmlns:xsi="http://www.w3.org/2001/
XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ComponentGroupConfig.xsd"
xmlns="http://micros.com/xstore/config/componentproperty">
<ComponentPropertySet name="INFORMATION_PANEL_TEAL" >
<ComponentID>TransactionInformationPanel</ComponentID>
<ComponentProperty>
<Property>background</Property>
<Value
dtype="ColorRef">_colorTransactionInformationPanelTeal</Value>
</ComponentProperty>
</ComponentPropertySet>
<ComponentPropertySet name="INFORMATION_PANEL_BLACK" >
<ComponentID>TransactionInformationPanel</ComponentID>
<ComponentProperty>
<Property>background</Property>
<Value
dtype="ColorRef">_colorTransactionInformationPanelBlack</Value>
</ComponentProperty>
</ComponentPropertySet>
ContextConfig.xml file
<Context name=”DEFAULT”>
<SecondDisplayMode>OTHER</SecondDisplayMode>
<ColorGroup fgColorRef=”_colorContextSelectionfgWhite” />
<ComponentGroup ref=”DEFAULT” />
<ComponentPropertySet ref=”TABBED_PANE_DEFAULT” />
<!-- set the message view to enabled and visible -->
<Component>
<Name>INPUT_CONTROL_AREA</Name>
<Visible>true</Visible>
<Enabled>true</Enabled>
</Component>
</Context>
*****************Shortened for brevity************
<Context name="SALE">
<ParentContext>REGISTER_TRANSACTION_LIST</ParentContext>
<MenuKey>SALE</MenuKey>
<ListModelKey>CURRENT_TRANSACTION</ListModelKey>
<Text1>_contextSale</Text1>
<HelpKey>_helpMsgSale</HelpKey>
<ColorGroup bgColorRef="_colorContextSelectionbgSale"
bgColor2Ref="_colorContextSelectionbg2Sale" />
<ComponentGroup ref="BLUE" />
</Context>
*****************Shortened for brevity************
<Context> tags have a <ComponentGroup> tag that references the group of
<ComponentPropertySet> tags defining the background panels and focusbar to use.
<ColorGroup> — The color to use throughout the system to represent this customer
account type.
<ComponentGroup> — The reference to a component group which defines the color of
various background panels, and the color of the focusbar to use for the customer account
type. (See “ComponentGroupConfig.xml file”).
Overview
The customer maintenance features described in this chapter include Customer Wish
List, Customer Attributes, Activity Stream, Gift Registry, Customer Birthdate Options,
and Task Management.
Item Setup
1. To display an item image in Xstore Point of Service, the item image must be stored
on the local machine in xstore\res\graphics\items.
2. The path for the item image must be in the item_url field in the
itm_item_images table.
Note: The same image can be set up for all item display features, or a
different image can be set up for display in a Wish List. This is
controlled through the use of the feature_id field in itm_item_images.
See “Item Images” in Chapter 5, “Item and Pricing Configuration” for
more information.
2. Specify the user ID that will be sent to Customer Engagement Cloud Services for all
v2 customer messages.
Customer Attributes
Use the customer attributes feature to assign custom attributes to customers that can be
displayed in Customer Maintenance. The attributes can be retrieved from a CRM system
such as Customer Engagement Cloud Services or from Xstore Office itself.
com_code_value Table
Entries in the com_code_value table are not required, but if one exists, the description
for the code will display in Customer Maintenance. Otherwise, the code itself is
displayed.
To specify any attributes that should not be displayed, set the hidden flag to “true”.
The attribute is defined in com_code_value.category where
category=PARTY_PROPERTY_DISPLAY.
Activity Stream
The Activity Stream section on the Contact Information tab lists the customer's recent
transactions in chronological order by day.
Each transaction is associated with an icon that represents the transaction type such as
sale, special order, or return.
This feature encourages a dialog between the associate and the customer by showing
relevant information about the customer’s previous shopping experiences.
Messages can be shown in the Activity Stream when a customer is within X days of their
Loyalty card expiring, and within X days of a birthday or anniversary. These messages
always appear at the beginning of the activity stream.
Loyalty expiration display is a configurable option. See “Loyalty Expiration Display
Setup”.
SysConfig.xml Settings
<Setting name="CustomerHistoryAgeLimitDays">365</Setting>
<Setting name="CustomerActivityStreamMaxItems">50</Setting>
<Setting name="ActivityStream---AnniversaryDateReminderDays">5</
Setting>
<Setting name="ActivityStream---BirthDateReminderDays">5</
Setting>
<Setting name="ActivityStream---
LoyaltyExpirationReminderDays">30</Setting>
ActivityStreamConfig.xml Settings
ActivityStreamConfig.xml defines which data, and how the data is rendered, in
the activity stream. The configuration file, has basically 2 subdepartments: a DataSet
that defines where the data comes from and a RuleSet that defines how the data is
rendered.
DataSet example
<DataSet>
<Data
class="dtv.pos.customer.activitystream.dataretriever.ActivityStre
amModelBuilder">
<Parameter name="Rule" value="CUSTOMER_BIRTHDATE"/>
<Parameter name="Date">
<EvaluatedFormattable method="toDateWithinMargin">
<method_param>
<EvaluatedFormattable
method="getCurrentCmd.getParty.getBirthDate"/>
</method_param>
</EvaluatedFormattable>
</Parameter>
<Parameter name="Source">
<EvaluatedFormattable method="getCurrentCmd.getParty"/>
</Parameter>
<Parameter name="Icon">
<param_value dtype="IconRef">_imageIconHappyBirthday</
param_value>
</Parameter>
<Parameter name="DayMargin">
<EvaluatedFormattable
method="getConfigurationMgr.getActivityStreamBirthDateReminderDay
s"/>
</Parameter>
<VisibilityRule
class="dtv.pos.customer.activitystream.visibilityrules.YearDateIs
BeforeOrAfterVisibilityRule">
<Parameter name="Date">
<EvaluatedFormattable
method="getSource.getBirthDate"/>
</Parameter>
<Parameter name="DayMargin">
<EvaluatedFormattable
method="getConfigurationMgr.getActivityStreamBirthDateReminderDay
s"/>
</Parameter>
</VisibilityRule>
</Data>
</DataSet>
RuleSet example
<RuleSet>
<Rule name="CUSTOMER_BIRTHDATE">
<Parameter name="title">
<ParameterizedFormattable
translationKey="_activityStreamCustomerBirthdate">
<EvaluatedFormattable
method="getSource.getFirstName"/>
<EvaluatedFormattable method="getSource.getBirthDate"
formatter="DateMonthNameDay"/>
</ParameterizedFormattable>
</Parameter>
</Rule>
</RuleSet>
Gift Registry
The Gift Registry feature provides a communication channel between a person (or
persons) asking for gifts, and other people who wish to purchase gifts for that person (or
those persons). This feature allows them to manage that process.
Gift Registry is available if you are using Customer Engagement Cloud Services. Gift
registries can be set up and maintained in the system from the Back Office. Items in a
sale transaction can then be associated to a registry.
The Gift Registry feature allows the Sales Associate to create gift registries within Xstore
Point of Service by accessing Customer Engagement Cloud Services WSDLs. The Gift
Registry is accessed in Xstore Point of Service using a function key from within the
Customer Maintenance screen or from the Transaction screen.
system.properties Settings
SysConfig.xml Settings
<Setting name="GiftRegistry---AutoTriggerGiftReceipts">true</
Setting>
<Setting name="GiftRegistry---HidePurchasedQuantity">false</
Setting>
AutoTriggerGiftReceipts - When true and a gift registry item is purchased, the
item is automatically flagged for a gift receipt.
Database Settings
crm_gift_registry_journal Table
A row is persisted to this table for every change made to a gift registry in the Xstore
Point of Service back office. Examples of a "change" would be adding or removing an
item, attribute, or address, updating gift registry header information, etc.
Column Used to
journal_seq identify the journal sequence number for the journal entry.
REQUIRED
registry_id uniquely identify the gift registry that was created or modified.
action_code describe the change made to the gift registry. Valid Values:
CREATE_REGISTRY, UPDATE_DETAILS, ADD_ITEM,
CHANGE_ITEM_QUANTITY, DELETE_ITEM, ATTRIBUTE_ADD,
ATTRIBUTE_MODIFY, ATTRIBUTE_DELETE, ADDRESS_ADD,
ADDRESS_MODIFY, ADDRESS_DELETE, OWNER_ADD,
OWNER_MODIFY, OWNER_DELETE
registry_status specify the registry status returned from the system of record (i.e.
Customer Engagement Cloud Services) when the change was posted.
trans_rtl_loc_id specify the store number for the gift registry transaction associated with
the journal entry.
trans_wkstn_id specify the register number for the gift registry transaction associated
with the journal entry.
trans_business_ specify the business date for the gift registry transaction associated with
date the journal entry.
trans_trans_seq specify the transaction number for the gift registry transaction associated
with the journal entry.
trn_gift_registry_trans Table
A row is persisted to this table every time a gift registry is created or edited in the Xstore
Point of Service back office. One row per "editing session" is created.
Column Used to
Column Used to
registry_id specify the unique ID of the gift registry that was created or modified.
SysConfig.xml Setting
<Setting name="RequestCustomerBirthYear">true</Setting>
RequestCustomerBirthYear - Determines whether to collect the complete date
including the month, day, and year, or to only collect the month and day.
• When true, the user will be prompted to input the complete birth date: MM/dd/
yyyy.
• When false, only the MM/dd format is required. Note: A generic date for the year
(1900) will be appended to the MM/dd date.
Task Management
Note: Xstore Point of Service 15.0 has been certified with Customer
Engagement Cloud Services 11.4.
Task Management is a feature that combines store specific and customer related tasks
such as appointments into a single view. Task Management is designed to support both
Xstore Point of Service native tasks and those created within the Customer Engagement
Cloud Services system if configured.
The Task Services API Version 1.1 of Customer Engagement Cloud Services is integrated
with Xstore Point of Service to use this feature.
The URL for the WSDL is:
https://<localhost>:8443/soap/<companycode>/v1_1/
TaskServices?wsdl
where <localhost> is the name or address of the server, and <companycode> is the code
assigned to the company at installation.
Customer Engagement Cloud Services security is set in system.properties.
Tasks Tab
See “Tab Setup” in Chapter 38, “Menu & Tab Configuration” for setup and configuration
information. The Tasks tab is configured in the file:
C:\xstoredata\lib\config.jar\relate\uipropertysets\TabConfig.xml
Overview
When the first register is opened on the current system date, a check is performed on the
expiration dates of certificates used for SSL communication with Xstore Office and other
systems. At startup, a check is preformed based on the configuration to determine the
status of the SSL certificates. If any certificates are found to be near expiration,
information is logged detailing the issue.
Note: This check assumes HTTPS hosts are defined for Xstore Office
communications.
This check does not block startup, and no messages are displayed to the user. This
process simply logs information if the certificate is about to expire.
Configuration Options
Note: The SSLCertificateCheck has been moved to the
system.properties file.
system.properties
The following configuration is set in the xstore\root\system.properties file.
ssl.certificate.check.enabled=true
Determines whether the check should be enabled or not.The SSL cert check has three
behaviors based on the calculation diff = currentTime – expirationTime (in days):
1. if diff < 0, then log ERROR indicating the certificate is expired
2. if diff = 0, then log WARN indicating today is the last day
3. if diff between 1 the configured parameter, then log WARN indicating that the
certificate will expire in XXX days.
Spring Configuration
In the /config/config/dtv/res/config/spring/workers.xml file the list of
the .keystore files and certificates to be validated are configured.
There are also country specific configurations which can be found in the respective
countrypack-XX.xml spring files.
The number of days is configured in the daysBeforeExpiration of workers.xml
spring file.
3. The deployment data that Xenvironment receives contains information about files
that need to be downloaded, including when the files should be downloaded
(immediately or during the store close) and when the files should be applied
(immediately or during the store close).
4. After a file is downloaded, Xenvironment reports the status of the file download to
Xstore Office.
5. After a file is applied, Xenvironment reports the status of the file applied to Xstore
Office.
Overview
Context-sensitive help displays brief information describing the current condition, or
feature, of the software. When a user presses the [F1] key, Xstore Point of Service calls
and displays the HTML help file associated with the current context.
Note: Creating the HTML help files and creating a new context
within Xstore Point of Service is out of scope for this document.
1.The context for some features may be defined in other function-specific files rather than in ContextConfig.xml. For
example, the context for Customer Pre-sale Accounts is found in CustomerAccountConfig.xml.
</Context>
...
<Account name="PRESALE">
<Text dtype="Translatable">_ccaPreSale</Text>
<HelpKey dtype="Translatable"
bundle="dtv.pos.i18n.help">_helpMsg_cca_Presale</HelpKey>
<ColorGroup bgColor="0x660066" bgColor2="0xB400B4"/>
<ComponentGroup ref="PURPLE"/>
<DepositFeeType dtype="String">TRANSACTION</DepositFeeType>
................Edited for brevity...............
</Account>
2. Translations Properties File
Set up the help file properties (translations.properties) in
\dtv\res\config\ to associate the HelpKey to the HTML file.
_defaultHelpMessage=No quick help is available for this
function.
_defaultHelpTitle=Help
3. Resources Properties File
_helpAboutXstore=aboutXstore.htm
_helpMsgRegisterLogin=Logging_In.htm
_helpMsgRegisterLocked=Locking_and_Unlocking_a_Register.htm
_helpMsgBackOfficeLogin=Logging_in_to_the_Back_Office.htm
_helpMsgRegisterOptionsLogin=Register_Options_Login.htm
_helpMsgToRegisterLogin=Logging_In.htm
_helpMsgClockInOut=Clocking_In_and_Out.htm
.........Edited for brevity..............
4. HTML Help File
Place the HTML help file in the HTML help file folder:
C:\xstoredata\res\html\help.
If the help includes an image, place the image in the folder too.
_helpMsgRegisterLocked = Locking_and_Unlocking_a_Register.htm
Overview
For each language available in Xstore Point of Service, there is one corresponding
language translation file using the naming format shown below. The file extension
indicates that the file is a “properties” file.
translations_[locale].properties
The file translations_[locale].properties is an example of a resource bundle.
In the file name above, “[locale]” represents a 2-letter code for the language used in a
geographic location/locale — “en” for English, “fr” for French, “zh” for Chinese, etc. A
capitalized 2-letter code indicates a country — CA for Canada, JP for Japan, etc. — in
which there may be variations of a specified language. The file name may include both a
locale and a country designation. For example, fr_CA = French Canadian.
The file contains the actual text strings that will be substituted for a corresponding
translation key whenever the application encounters that key.
In Xstore Point of Service, all translation keys must begin with the underscore (_)
character. The translation key is identical in all of the language-specific translation
properties files, but its corresponding translation varies by language.
Example
In the translations_en.properties file:
_keyCodeA=Enter
Overview
Xstore Point of Service Log files are generated automatically and record Xstore Point of
Service application events. Viewing these log files provides valuable data about store
operations and troubleshooting information.
Note: Each time the application starts up, the log files are rotated.
xstore.log Contains progress and error information for the Xstore Point of
Service process. The layout, rolling, and log levels are configured in
log4j2.xml. This file is continually rotated by system date. The
time that this log is kept for is configurable, and the default value is
set to 14 days (<DefaultRolloverStrategy max="14" />).
cashdrawer.log Logs each time the cash drawer opens, highlighting if the drawer
was not opened through software (e.g. a key was used) or if the
drawer state did not change (e.g. the drawer is faulty or locked).
ejournal.log Logs all text that is sent to the receipt printer. This log includes
information as it is displayed on the receipt, including paper cuts
and barcode text data.
jmxHttpAccess.log Logs all HTTP requests made of the JMX console. Failed
authentications are logged. All authentication attempts can be logged
with a configuration change. (This is similar to access.log on a web
server).
failedPersistence.log Contains error messages for any objects that could not be persisted
(saved to the database). An XML version of each failed object is also
logged.
replicationAudit.log Gives full detail as each replication item comes into the replication
queue and is processed.
dataloader.log Logs everything the DataLoader does, from starting to completion, including
errors.
failures.dat Logs any failed download records lines, as well as an error indicating the
cause of the failure of those lines.
remc.xml "log" directory of config path Logs any events that come from
(typically in files.xml and a JavaPOS driver, including error
MiscLogConfig.xml) and status updates. This log is
based on the IXRetail Remote
Equipment Monitoring and
Control (REMC) log standard.
This log can be disabled with no
ill effect.
PosLog.xml or log/ "log" directory of config path The transaction log (t-log) in the
trickle (typically in files.xml and ARTS POSLog format. (See
TlogConfig.xml) “Log Tables Controlled by
Xstore Point of Service and
log4j2” for more information).
seclog.xml "log" directory of config path (in Contains entries for each login,
SecLogConfig.xml by authentication, override, or
default) receipt reprint. (Authentication
is re-entering ones password
after login to access a given
function). Both success and
failure are logged.
commonlog.xml "log" directory of config path Contains some data entities that
(typically in files.xml and didn't fit into other ARTS
MiscLogConfig.xml) defined files. Currently this
appears to be only transaction
notes.
Table 37-8 Xstore Point of Service Transaction Data Log Files (continued)
timecard.xml "log" directory of config path Contains an entry for each clock-
(typically in files.xml and in or clock-out that takes place
TimeLogConfig.xml) on a given register.
Other Logs
Table 37-10 Xstore Point of Service Log - Other
dtv.data2.access.status.StatusMgr.logOffline(StatusMgr.java:377)
[startup]
ERROR 2018-03-27 09:08:21,883 Failed to load
environment properties file [c:\environment\version.properties]
because it does not exist ::
dtv.pos.common.EnvironmentHelper.readFile(EnvironmentHelper.java:
375) [startup]
FATAL 2018-12-20 14:21:05,028 HELP DESK ERROR ::
dtv.pos.framework.op.req.AbstractPromptReqHandler$1.run(AbstractP
romptReqHandler.java:71) [AWT-EventQueue-0]
DEBUG [- ] 2018-11-07 17:02:53,181 -[Rule]
class dtv.pos.commission.ValidateCommAssocsRule
@@ (jar:file:/C:/xstore/lib/config.jar!/dtv/res/config/
ValidationRuleConfig.xml:444) [REGISTER:OCP [User]]
Operations
Search for operations to find the beginning of the transactions:
- CHAIN - REGISTER_LOGIN
- CHAIN - BACK_OFFICE_STARTUP
REGISTER_LOGIN
INFO [- ] 2013-11-07 09:50:34,311 >> +[CHAIN] REGISTER_LOGIN
@@ (jar:file:/C:/xstore/lib/config.jar!/dtv/res/config/
OpChainConfig.xml:7434) [startup]
BACK_OFFICE_STARTUP
INFO [- ] 2013-11-07 12:12:55,103 >> +[CHAIN]
BACK_OFFICE_STARTUP
@@ (jar:file:/C:/xstore/lib/config.jar!/dtv/res/config/
OpChainConfig.xml:438) [startup]
Version Info
Displays build information. Xstore Point of Service posts its version information in the
xstore.log every time it is started or restarted.
********************
VERSION INFORMATION
********************
Location Info
Displays location and register information. Xstore Point of Service posts its location
information in the xstore.log every time it is started or restarted.
INFO 2015-11-07 09:50:17,266 LOCATION
IDENTIFICATION:
dtv.CustomerId: XST
OrganizationId: 1000
RetailLocationId: 110
WorkstationId: 1
BusinessDate: 2013-08-15 ::
dtv.pos.framework.StationController$StartupWorker.run(StationCont
roller.java:681) [startup]
Overview
Menu configuration has been simplified by separating the technical details, such as Op
Chains and Visibility Rules, from the less technical options, such as button/menu option
name and location within the pre-defined menu structure. MenuConfig.xml has been
optimized to support configuration tools and to generally improve efficiency for menu
layout.
It is also possible to add tabs to the information area of screen by selecting from a pre-
configured set of tabs in the “Tab Library”. The Tab Library provides multiple options
for information tabs and web widgets, beyond the standard tabs traditionally provided
in the information area with base Xstore. See “Tab Setup”.
Note: For more information about menu and tab configuration, refer
to the Xstore Office User Guide. Menus and tabs can be maintained in
Xstore Office through an easy-to-use and intuitive GUI.
Menu Configuration
Note: For more information about menu configuration, refer to the
Xstore Office User Guide. Menus can be set up and maintained in Xstore
Office via an easy-to-use and intuitive GUI.
Functional Areas
The menus have been organized by logical, functional areas.
• ADMIN - These menus contain items pertaining to general administrative tasks in
both the Register and the Back Office. (<MenuItem name="ADMIN::)
• BALANCE_INQUIRY - These menus contain items allowing Balance Inquiries
against stored-value tenders. (<MenuItem name="BALANCE_INQUIRY::)
• CUSTOMER - These menus contain items pertaining to Customer and CRM
functionality. (<MenuItem name="CUSTOMER::)
• EMPLOYEE - These menus contain items pertaining to Employee functionality,
including Payroll, Scheduling, and Timecard functions. (<MenuItem
name="EMPLOYEE::)
The Components
Element Description
MenuItem
The top-level named menu, grouping the following menu options:
MenuOption (MenuOption), MenuOptions (MenuOptions), SubMenu (SubMenu -
(SubMenu inherits everything from MenuItem))
Table 38-1 MenuItem Elements
Element Description
Element Description
StickyParent If set to false, causes the opchain processor to return to the first sticky
ancestor of the current menu when escaping out. Defaults to "true".
(All menus are “sticky” by default).
See “About Menu Navigation” for more information about the
“StickyParent” element and the “sticky” attribute.
Action The action to perform when the user selects this menu item which
has more than one associated action. (Retained for backwards
compatibility).
SubMenuReferenceKey A text reference to the submenu to display when the user chooses
this menu option. (Retained for backwards compatibility).
MenuOption
The menu option for a function.
Table 38-3 MenuOption Element
Element Description
Action The business logic for the action to perform when the user selects this menu
item. Used when there is more than one option.
<MenuOption>
<Action ref="ADMIN::OPEN_REGISTER"/>
<Action ref="ADMIN::CLOSE_REGISTER"/>
</MenuOption>
MenuOptions
Used when the same set of options are referenced in multiple menus.
<MenuItem name="LOGIN::REGISTER" text="_menuLoginRegister"
displayType="BUTTON">
<MenuOptions ref="?LOGIN?"/>
<MenuOption>
<Action ref="LOGIN::BACK_OFFICE"/>
<Action ref="LOGIN::BACK_OFFICE.FROM_OTHER.START"/>
</MenuOption>
</MenuItem>
<MenuItem name="LOGIN::BACK_OFFICE" text="_menuLoginBackOffice"
displayType="BUTTON">
<MenuOptions ref="?LOGIN?"/>
<MenuOption>
<Action ref="LOGIN::REGISTER"/>
<Action ref="LOGIN::REGISTER.FROM_OTHER.START"/>
</MenuOption>
</MenuItem>
SubMenu inherits all attributes in MenuItem. See “MenuItem” for more information.
DisplayType
The menu option format. This enumerated value has the following possible values:
• LIST - Display menu options in a list format.
• BUTTON - Display menu options in a button format.
• BUTTON_EXCLUSIVE - Not used in menu configuration. (Used for prompts to force a
given set of options to completely replace whatever is there rather than amend it).
• POPUP - Not used in menu configuration.
• “Change Item” menu: sticky=true In this scenario, when “Change Price” is invoked
for a line and entry of the new price is completed, the user will be returned to the
same “Change Item” menu (with the same options as before). However, since it’s
unlikely that the user will be changing the price for more than one line, the user
must now manually escape out of the submenu(s) until he/she is returned to the
main sale function menu.
• “Change Item” menu: sticky=false In this scenario, when “Change Price” is invoked
for a line and entry of the new price is completed, then the menu asserted after the
“Change Price” operation will be whatever ancestor of “Change Item” is declared
(implicitly or otherwise) as “sticky”, thus eliminating the need to drill up.
Because we don’t need to invoke “Change Price” or “Change Qty” more than once, you
can either assign “sticky parent = false” to “Change Price” and “sticky parent = false” to
“Change Qty”, or you can just assign a single “sticky = false” to the parent “Change
Item” as shown below.
<MenuItem name="RETAIL::CHANGE_LINE"
actionRef="RETAIL::MENU.MODIFY_LINE" sticky="false"
category="Retail" keywords="universal,register_extended">
<MenuOption ref="RETAIL::CHANGE_LINE_QUANTITY"/>
<MenuOption ref="RETAIL::CHANGE_LINE_PRICE"/>
<SubMenu actionRef="RETAIL::MENU.MODIFY_LINE_TAX">
<MenuOption ref="RETAIL::TAX.CHANGE_LINE_LOCATION"/>
<MenuOption ref="RETAIL::TAX.EXEMPT_LINE"/>
<MenuOption ref="RETAIL::TAX.CHANGE_LINE_AMOUNT"/>
<MenuOption ref="RETAIL::TAX.CHANGE_LINE_PERCENT"/>
</SubMenu>
<MenuOption ref="RETAIL::VOID_LINE"/>
<MenuOption ref="RETAIL::CHANGE_DISCOUNT"/>
<MenuOption ref="RETAIL::CHANGE_COMMISSIONED_ASSOCIATES"/>
</MenuItem>
Note: These settings will not impact the Xmobile menu layout which
remains fixed at a 3x2 grid.
SysConfig.xml example
SysConfig.xml element "MenuButtonCount" dictates the number of buttons on a menu.
<Setting name="Terminal---MenuButtonCount">13</Setting>
system.properties example
The primary terminal number can be configured in the system.properties file.
Example:
dtv.location.primaryTerminalNumber=1
UIConfig.xml example
In addition, a corresponding change is required to UIConfig.xml in the following
locations:
<Component name="MENU_VIEW" type="MenuView" layoutLocation="0,
616, 1024, 75" layoutLayer="30"
layout="dtv.ui.layout.CenteringLayout">
<LayoutParameters dtype="ParameterList">
<parameter name="setSize">
<param_value dtype="Integer">13</param_value>
<param_value dtype="Integer">1</param_value>
</parameter>
<parameter name="setGaps">
<param_value dtype="InsetsRef">_gapsButtonView</
param_value>
</parameter>
<parameter name="setMargins">
<param_value dtype="InsetsRef">_marginButtonView</
param_value>
</parameter>
</LayoutParameters>
</Component>
For example, the "13" shown in “UIConfig.xml example” needs to be changed to match
whatever value is assigned to the "MenuButtonCount" element in SysConfig.xml.
Set SysConfig.xml
<Setting name="Terminal---MenuButtonCount">10</Setting>
<Setting name="Terminal---RegistrationHistoryDays">3</Setting>
Set UIConfig.xml
<Component name="MENU_VIEW" type="MenuView" layoutLocation="0,
616, 1024, 75" layoutLayer="30"
layout="dtv.ui.layout.CenteringLayout">
<LayoutParameters dtype="ParameterList">
<parameter name="setSize">
<param_value dtype="Integer">10</param_value>
<param_value dtype="Integer">2</param_value>
</parameter>
<parameter name="setGaps">
<param_value dtype="InsetsRef">_gapsButtonView</
param_value>
</parameter>
<parameter name="setMargins">
<param_value dtype="InsetsRef">_marginButtonView</
param_value>
</parameter>
</LayoutParameters>
</Component>
Tab Setup
The Tab Library provides multiple options for information tabs and web widgets,
beyond the standard tabs traditionally provided in the Information area with base
Xstore Point of Service.
These tabs can be configured to work in different contexts. For example, tabs that display
in “login mode” may not be the same tabs that are available during “transaction mode”.
The base implementation
of Xstore Point of Service
displays five (5)
information tabs: Info,
Tasks, (Sales) Goals,
Messages, and Keypad. The tabs and widgets in the library can be used in place of—or in
addition to—the tabs provided with base Xstore Point of Service.
Note: Xstore Office can be used to easily manage the library. You
decide which tabs will be in use, and where they will be used. It is
possible to add more or less than the standard five tabs delivered in
base Xstore Point of Service; however, for best results a limit of five
tabs per context is recommended.
Tab Description
ACTIVITY_STREAM This is a view-only tab that displays the activity stream for
the customer attached to the current transaction. This tab
allows the associate to quickly view information about the
customer without transitioning to customer maintenance.
The information shown here is the same activity stream
found in customer maintenance. This tab is only available
within the transaction context.
TRANSACTION_COUPONS This tab lists all of the deal coupons scanned during a
transaction. In base Xstore Point of Service, the Sales
Goals tab will be replaced with this Coupons tab when an
associate is in the transaction context. A check mark next to
each coupon indicates whether it has been applied in the
transaction. For example, if a coupon is voided in the
transaction, the check mark will be removed from the
coupon in the list, indicating it has been scanned, but is not
currently applied.
SALES_GOAL This tab displays information about sales goals that are set
for the store by the corporate office. These goals are
available for all employees to view and are set for a
specified date range.
EMPLOYEE_MESSAGES This tab displays messages sent from the corporate office, or
from store management. Messages require no action, and
may be store-specific or register-specific.
ASSOCIATE_TASKS This setting is for the Tasks tab. It is view-only and displays
open and in progress tasks for the current system day.
TabConfig.xml Setup
Note: TabConfig.xml is located in the uipropertysets folder.
TabConfig.xml contains a set of tab definitions available to use in the information area
of Xstore Point of Service. The TabConfig.xml tab definitions are represented by
ComponentPropertySet configs.
<ComponentPropertySet name="TABBED_PANE_DEFAULT">
<ComponentID>MessageAreaTabs</ComponentID>
<ComponentProperty>
<Property>tab1</Property>
<Value>MESSAGE_AREA</Value>
</ComponentProperty>
<ComponentProperty>
<Property>tab2</Property>
<Value>ASSOCIATE_TASKS</Value>
</ComponentProperty>
<ComponentProperty>
<Property>tab3</Property>
<Value>SALES_GOAL</Value>
</ComponentProperty>
<ComponentProperty>
<Property>tab4</Property>
<Value>EMPLOYEE_MESSAGES</Value>
</ComponentProperty>
<ComponentProperty>
<Property>tab5</Property>
<Value>NUMERIC_KEYPAD</Value>
</ComponentProperty>
</ComponentPropertySet>
<Property>tabIcon</Property>
<ComplexValue>
<Icon>_imageInfoTab</Icon>
<Scale>false</Scale>
</ComplexValue>
</ComponentProperty>
</ComponentPropertySet>
ComponentPropertySetConfig.xml
Note: ComponentPropertySetConfig.xml is located in the
uipropertysets folder.
<bean id="associateTasksHtmlContentInfo"
class="dtv.pos.framework.html.ContentInfo" init-method="init">
<constructor-arg value="ASSOCIATE_TASKS" />
<property name="refreshInterval" value="5" />
</bean>
<bean id="transactionCouponsHtmlContentInfo"
class="dtv.pos.framework.html.ContentInfo" init-method="init">
<constructor-arg value="TRANSACTION_COUPONS" />
<property name="transactionBased" value="true" />
</bean>
<bean id="messageAreaHtmlContentInfo"
class="dtv.pos.framework.html.ContentInfo" init-method="init">
<bean id="airsideMessagesHtmlContentInfo"
class="dtv.pos.framework.html.ContentInfo" init-method="init">
<constructor-arg value="AIRSIDE_MESSAGES" />
<property name="refreshSignals">
<list>
<value>TransactionComplete</value>
<value>TransactionCancelled</value>
<value>TransactionResumed</value>
</list>
</property>
</bean>
SysConfig.xml Settings
The following configuration options are available in SysConfig.xml:
</ComponentProperty>
a. Value - Type the name of the new tab (as specified in the TabConfig.xml) to
replace the name of the existing tab.
b. Save the file.
• To add another tab, add a new ComponentProperty in TabConfig.xml:
<ComponentProperty>
<Property>tab6</Property>
<Value>ORDER_WORKLIST</Value>
</ComponentProperty>
a. Property - Type the tab number.
b. Value - Type the tab name.
c. Save the file.
Note: It is possible to add more or less than the standard five tabs
delivered in base Xstore Point of Service; however, for best results, a
limit of six tabs is recommended.
com_button_grid Table
The button grid configurations are stored in the com_button_grid table. For more
information on the table and the button grid record, see the Oracle Retail Xstore‐Point‐of‐
Service Software Database Dictionary and the Oracle Retail Xstore Point of Service Host
Interface Guide.
Drilldown Button
A button with the KEY_NAME of DRILLDOWN will behave as drilldown option and will
drop one level down in the button matrix. Drilldown buttons should always have a
CHILD_ID. The CHILD_ID will be the GRID_ID for the next level down.
For example, if a drilldown button has a CHILD_ID of SALE_CHILD then all the
buttons, which need to be displayed in the next level down, should have SALE_CHILD
as the GRID_ID.
Button Coloring
There are different button colors available for different buttons. All the colors defined in
the ui.properties file.
• Action Buttons - These buttons are colored as per default Xstore.
• Item Button
The coloring options are:
_colorItemButtonNormal=127,0,0
_colorItemButtonDisabled=184,184,184
_colorItemButtonPressed=62,79,81
_colorItemButtonMouseover=127,50,49
• Drilldown Buttons
The coloring options are:
_colorDrilldownButtonNormal=4,14,215
_colorDrilldownButtonDisabled=184,184,184
_colorDrilldownButtonPressed=62,79,81
_colorDrilldownButtonMouseover=54,64,215
Overview
BIN (Bank Identification Number) range values for authorized card tenders must be
downloaded to Xstore Point of Service.
Card number specifications, as defined by the issuing authority, need to be loaded onto
POS systems to support card number differentiation. This drives authorization-related
functionality. The card number specification is based on BIN range prefix definition,
along with the length of the PAN (Primary Account Number).
Specifications
In Xstore Point of Service, the card number specifications are downloaded and stored in
a flat text format. A file is maintained for each separate card type such as debit, gift card
(also known as stored value), Discover, or VISA. The card number specifications for each
card type will need to be sorted within the file, first by PAN length and then by BIN
(prefix). Comments may be added to the file by starting a line with the “pound” sign (#).
Here are some theoretical examples for a file that would be named debit.txt:
00503223
12582322
13409449
13419002125
13500072
16412345
1641246
The format of the card number specification files is always:
XXYYYY...
where:
• XX = the number of digits in the card number (a.k.a., card number length)
• YYYY... = 1 or more digits of the card number prefix
Two zeros (00) can be used to signify any card number length.
Examples
• 14121212 indicates a 14-digit number starting with “121212”
• 00503223 indicates a number of any length starting with “503223”.
Overview
The Data Purger is a database maintenance tool used to delete records according to a set
of configuration parameters. A base set of configuration options is provided with the
tool that will delete data from the database based on a configurable time period. For
example, retail sale transactions older than 365 days, or employee payroll records older
than 180 days can be scheduled for deletion.
There are two types of purges:
1. Transactional — Transactional purges are rooted at the primary transaction table
trn_trans and are handled by the purge group named “Transaction”. They alone
support the “type” parameter identifying the trn_trans.trans_typcode value
for records to be considered for purging.
2. Non-transactional — Non-transactional purges are defined by various criteria
outside a trn_trans-rooted hierarchy. They are defined by purge groups named
for the Xstore Point of Service schema domain whose tables they purge. For
example, the “HRS” group purges data from tables in the “hrs” domain. Specifically
in this case, it purges all hrs_employee records whose terminated_dates are a
specified number of days in the past, then purges all associated tables (e.g.
hrs_employee_password) that are left orphaned by the primary delete.
Assumptions
Data Purger assumes the use of a standard base Xstore Point of Service database.
Custom, non-base Xstore Point of Service databases may require specialized
configuration, or possibly a customized version of the Data Purger.
Specifications
• The primary purge configuration set is defined in purge/PurgeConfig.xml.
• All queries referenced by PurgeConfig.xml can be found in
/purge/query/purges.*.xml, where * is a dash-separated list of three-letter
table domains located in that file. The exception is purges.transaction.xml,
which handles all purges rooted at the primary transaction table trn_trans.
• To run the Data Purge tool, run the datapurger.bat in the Xstore Point of Service
directory.
• Data Purger results are reported in log/purge.log.
2. If the CRM group purge is enabled (TRUE), there is a clause in the crm_party purge query that ensures only re-
cords without any corresponding customer accounts are deleted.
The CRM group has been assigned a higher order than the CAT group in PurgeConfig.xml so the CAT group can
run first and delete any customer accounts that satisfy specified criteria (e.g. CLOSED). The net effect is that a
crm_party record will not be purged if it has any corresponding customer accounts that do not qualify for purging.
3. itm_warranty_journal records are transactional and will be purged if their parent trn_trans records are
also purged.
4. TSN tables that are transactionalized will be purged if their parent trn_trans record is also purged. TSN tables
representing non-transactionalized session information (specifically: tsn_session, tsn_session_tndr, and
tsn_session_wkstn) will not be purged by default.
Tag Description
Group
name Name of the purge group to run. For non-transactional purges, named for the
Xstore Point of Service schema domain whose tables they purge.
age Group records older than the number of days here will be purged.
status The status of records to be considered for purging. This value is ignored in
cases where status is irrelevant.
enabled If TRUE, this group is available for purging. If FALSE, this group will not be
purged. See “Data Purger Configuration” for a list of applicable groups.
Query
age Group records older than the number of days here will be queried.
PurgeConfig.xml example
..............Edited for brevity.........
<Group name="XOM" order="0" age="365" status1="COMPLETE"
status2="CANCELLED">
<Query name="xom_order" order="0"/>
<Query name="xom_order_line" key="xom_order.child" order="10"/
>
<Query name="xom_order_line_detail" key="xom_order.child"
order="10"/>
<Query name="xom_customer_mod" key="xom_order.child"
order="10"/>
<Query name="xom_address_mod" key="xom_order.child"
order="10"/>
<Query name="xom_fulfillment_mod" key="xom_order.child"
order="10"/>
<Query name="xom_source_mod" key="xom_order.child" order="10"/
>
<Query name="xom_item_mod" key="xom_order.child" order="10"/>
<Query name="xom_order_payment" key="xom_order.child"
order="10"/>
<Query name="xom_order_fee" key="xom_order.child" order="10"/>
<Query name="xom_balance_mod" key="xom_order.child"
order="10"/>
<Query name="xom_fee_mod" key="xom_order.child" order="10"/>
<Query name="xom_order_mod" key="xom_order.child" order="10"/>
</Group>
............Edited for brevity.........
purges.*.xml
Note: In this section, * represents a dash-separated list of three-letter
table domains covered in that file. For example, purges.hrs-sch-
thr.xml
These files can be found in a query within the Xstore Point of Service config path (e.g. as
purge/query/purges.hrs-sch-thr.xml, purge/query/purges.xom.xml,
etc.). The query name is the same as referenced in the PurgeConfig.xml.
Table 40-2 purges.*.xml Properties Definitions
Tag Description
purges.xom.xml example
<Query name="xom_order">
<QueryHandler
dtype="Class">dtv.data2.access.query.SqlQueryHandler</
QueryHandler>
<SQL>
<Statement dtype="String"><![CDATA[
DELETE FROM xom_order
WHERE organization_id = ?
AND order_date < ?]]></Statement>
<Parameter name="argOrganizationId"/>
<Parameter name="argDate"/>
<Expression trigger="argStatus1" parameters="argStatus1,
argStatus2"><![CDATA[(status_code = ? OR status_code = ?)]]></
Expression>
</SQL>
</Query>
<Query name="xom_order.child">
<QueryHandler
dtype="Class">dtv.data2.access.query.SqlQueryHandler</
QueryHandler>
<SQL>
<Statement dtype="String"><![CDATA[
Transactional Purges
Refer to “PurgeConfig.xml Properties Definitions” for an explanation of the purge
configuration values shown in the following tables for both Transactional and Non-
Transactional purges.
Transaction 10 365 NA
trn_trans2 0
cat_authorizations trn_trans.child3 10
cwo_work_order_line_item trn_trans.child 10
inv_invctl_trans trn_trans.child 10
inv_invctl_trans_detail trn_trans.child 10
inv_inventory_journal trn_trans.child 10
inv_movement_pending trn_trans.child 10
inv_movement_pending_detail trn_trans.child 10
inv_mptrans_lineitm trn_trans.child 10
inv_sum_count_trans_dtl trn_trans.child 10
itm_warranty_journal4 10
rpt_sale_line trn_trans.child 10
thr_timeclk_trans trn_trans.child 10
trl_ar_sale_lineitm trn_trans.child 10
trl_commission_mod trn_trans.child 10
trl_correction_mod trn_trans.child 10
trl_coupon_lineitm trn_trans.child 10
trl_cust_item_acct_mod trn_trans.child 10
Transaction 10 365 NA
trl_deal_lineitm trn_trans.child 10
trl_dimension_mod trn_trans.child 10
trl_discount_lineitm trn_trans.child 10
trl_escrow_trans trn_trans.child 10
trl_invctl_document_mod trn_trans.child 10
trl_inventory_loc_mod trn_trans.child 10
trl_returned_item_count trn_trans.child 10
trl_returned_item_journal trn_trans.child 10
trl_rtl_price_mod trn_trans.child 10
trl_rtrans trn_trans.child 10
tr._rtrans_flight_info trn_trans.child 10
trl_rtrans_lineitm trn_trans.child 10
trl_sale_lineitm trn_trans.child 10
trl_sale_tax_lineitm trn_trans.child 10
trl_tax_lineitm trn_trans.child 10
trl_voucher_discount_lineitm trn_trans.child 10
trl_voucher_sale_lineitm trn_trans.child 10
trl_warranty_modifier trn_trans.child 10
trn_generic_lineitm_storage trn_trans.child 10
trn_no_sale_trans trn_trans.child 10
trn_poslog_data trn_trans.child 10
trn_post_void_trans trn_trans.child 10
trn_raincheck_trans trn_trans.child 10
trn_receipt_data trn_trans.child 10
trn_receipt_lookup trn_trans.child 10
trn_trans_link trn_trans.child 10
trn_trans_notes trn_trans.child 10
trn_trans_p trn_trans.child 10
Transaction 10 365 NA
tsn_serialized_tndr_count trn_trans.child 10
tsn_session_control_trans trn_trans.child 10
tsn_till_control_trans trn_trans.child 10
tsn_till_ctrl_trans_detail trn_trans.child 10
tsn_tndr_control_trans trn_trans.child 10
tsn_tndr_denomination_cont trn_trans.child 10
tsn_tndr_tndr_count trn_trans.child 10
tsn_tndr_typcode_count trn_trans.child 10
tsn_xrtrans_lineitm trn_trans.child 10
ttr_acct_credit_tndr_lineitm trn_trans.child 10
ttr_ar_tndr_lineitm trn_trans.child 10
ttr_check_tndr_lineitm trn_trans.child 10
ttr_coupon_tndr_lineitm trn_trans.child 10
ttr_credit_debit_tndr_lineitm trn_trans.child 10
ttr_identity_verification trn_trans.child 10
ttr_send_check_tndr_lineitm trn_trans.child 10
ttr_signature trn_trans.child 10
ttr_tndr_auth_log trn_trans.child 10
ttr_tndr_lineitm trn_trans.child 10
ttr_voucher_tndr_lineitm trn_trans.child 10
xom_order_mod trn_trans.child 10
1. Where a key is not explicitly specified it is the same as the query name (e.g. the key for the
"trn_trans" query is "trn_trans").
2. WHERE business_date < ? AND
<no customer account activity exists for this transaction>
i.e. there is no row match joining:
organization_id = cat_cust_item_acct_activity.organization_id AND
rtl_loc_id = cat_cust_item_acct_activity.rtl_loc_id AND
wkstn_id = cat_cust_item_acct_activity.wkstn_id AND
business_date = cat_cust_item_acct_activity.business_date AND
trans_seq = cat_cust_item_acct_activity.trans_seq
Non-Transactional Purges
Table 40-4 CAT Domain - Tables Purged by Data Purger (Sheet 1 of 2)
cat_cust_acct2 0
cat_cust_acct_card3 0
cat_cust_loyalty_acct4 0
cat_cust_acct_plan5 0
cat_escrow_acct6 0
cat_acct_note cat_cust_acct.child7 10
cat_charge_acct_history cat_cust_acct.child 10
cat_charge_acct_invoice cat_cust_acct.child 10
cat_charge_acct_users cat_cust_acct.child 10
cat_cust_acct_journal cat_cust_acct.child 10
cat_cust_acct_p cat_cust_acct.child 10
cat_cust_consumer_charge_acct cat_cust_acct.child 10
cat_cust_item_acct cat_cust_acct.child 10
cat_cust_item_acct_activity cat_cust_acct.child 10
cat_cust_item_acct_detail cat_cust_acct.child 10
cat_cust_item_acct_journal cat_cust_acct.child 10
cat_delivery_modifier cat_cust_acct.child 10
cat_payment_schedule cat_cust_acct.child 10
cwo_work_item cat_cust_acct.child 10
cwo_work_order_acct cat_cust_acct.child 10
cwo_work_order_acct_journal cat_cust_acct.child 10
cwo_invoice cwo_work_order 20
_acct.child8
cwo_invoice_lineitm cwo_work_order 20
_acct.child
cat_award_acct cat_cust_acct_ 10
card.child9
cat_award_acct_coupon cat_cust_acct_ 10
card.child
cat_cust_loyalty_acct cat_cust_acct_ 10
card.child
cat_escrow_acct_activity cat_escrow_acct.chi 10
ld10
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2. WHERE last_activity_date < ?
3. WHERE expr_date < ?
4. WHERE expiration_date < ?
5. WHERE expiration_date < ?
6. WHERE last_activity_date < ?
7. WHERE <no matching customer account exists>
i.e. there is no row match joining:
organization_id = cat_cust_acct.organization_id AND
cust_acct_code = cat_cust_acct.cust_acct_code AND
cust_acct_id = cat_cust_acct.cust_acct_id
8. WHERE <no matching work order account exists>
i.e. there is no row match joining:
organization_id = cwo_work_order_acct.organization_id AND
service_loc_id = cwo_work_order_acct.service_loc_id AND
invoice_number = cwo_work_order_acct.invoice_number
9. WHERE <no matching customer card account exists>
i.e. there is no row match joining:
organization_id = cat_cust_acct_card.organization_id AND
cust_card_nbr = cat_cust_acct_card.cust_acct_card_nbr
10. WHERE <no matching escrow account exists>
i.e. there is no row match joining:
organization_id = cat_escrow_acct.organization_id AND
cust_acct_id = cat_escrow_acct.cust_acct_id
civc_invoice2 0
civc_invoice_p civc_invoice.child3 10
civc_invoice_xref civc_invoice.child 10
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2.DELETE FROM civc_invoice WHERE organization_id = ? AND business_date < ?
3.DELETE {%ALIAS%} FROM {%TABLE%} c WHERE organization_id = ? AND NOT EXISTS
(Select p.* From civc_invoice p Where p.organization_id = c.organization_id And p.rtl_loc_id =
c.rtl_loc_id And p.wkstn_id = c.wkstn_id And p.business_year = c.business_year And p.se-
quence_id = c.sequence_id And p.sequence_nbr = c.sequence_nbr)
COM 0 365 NA
com_receipt_text2 0
com_report_data3 0
com_report_lookup4 0
com_trans_prompt_properties5 0
com_report_lookup com_report_data.c 10
hild6
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2. WHERE expiration_date < ?
3. WHERE delete_flag = 1
4. WHERE delete_flag = 1
5. WHERE expiration_date < ?
6. WHERE <no matching report data exists>
i.e. there is no row match joining:
organization_id = com_report_data.organization_id AND
owner_type_enum = com_report_data.owner_type_enum AND
owner_id = com_report_data.owner_id AND
report_id = com_report_data.report_id
CRPT 0 365 NA
crpt_daily_header2 0
crpt_daily_header_p crpt_daily_header. 10
child3
crpt_daily_detail crpt_daily_header. 10
child
crpt_daily_detail_p crpt_daily_header. 10
child
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2. DELETE FROM crpt_daily_header WHERE organization_id = ? AND business_date < ?
3. DELETE {%ALIAS%} FROM {%TABLE%} c WHERE organization_id = ? AND NOT EXISTS
(Select p.* From crpt_daily_header p Where p.organization_id = c.organization_id And
p.rtl_loc_id = c.rtl_loc_id And p.wkstn_id = c.wkstn_id And p.business_date = c.business_date
And p.trans_seq = c.trans_seq)
The CRM purge group is assigned a higher order (10) so that a restriction may be
enforced ensuring that customer records are not purged if they correspond to customer
accounts which themselves are not eligible for purging. This requires the CAT group
purge to run first. When the “enabled” flag is set to FALSE, no customer records are
purged.
Default Enabled
Group Default Order Value
CRM 10 FALSE
crm_party2 0
crm_customer_affiliation crm_party.child3 10
crm_customer_notes crm_party.child 10
crm_party_cross_reference4 10
crm_party_id_xref crm_party.child 10
crm_party_locale_information crm_party.child 10
crm_party_p crm_party.child 10
crm_party_telephone crm_party.child 10
crm_party_email crm_party.child 10
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2. WHERE void_flag = 1
AND
<no matching customer account exists>
i.e. there is no row match joining:
organization_id = cat_cust_acct.organization_id AND
party_id = cat_cust_acct.party_id
3. WHERE <no matching party exists>
i.e. there is no row match joining:
organization_id = crm_party.organization_id AND
party_id = crm_party.party_id
4. WHERE <no matching party exists for the parent record in the association>
i.e. there is no row match joining:
organization_id = crm_party.organization_id AND
parent_party_id = crm_party.party_id
OR
<no matching party exists for the parent record in the association>
i.e. there is no row match joining:
organization_id = crm_party.organization_id AND
child_party_id = crm_party.party_id
CTL 0 30 NA
ctl_device_registration1 0
ctl_event_log2 0
ctl_log_trickle3 0
DOC 0 365 NA
doc_document1 0
doc_document_lineitm2 10
doc_document_p3 10
Note: When the “enabled” flag is set to FALSE, discount records are
not purged.
Default Enabled
Group Default Order Default Age Value
dsc_discount2 0
dsc_discount_compatibility3 10
dsc_discount_group_mapping dsc_discount.child4 10
dsc_discount_item_exclusions dsc_discount.child 10
dsc_discount_item_inclusions dsc_discount.child 10
dsc_discount_type_eligibility dsc_discount.child 10
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2. WHERE expr_datetime < ?
3. WHERE <no matching discount exists for the primary discount code>
i.e. there is no row match joining:
organization_id = dsc_discount.organization_id AND
primary_discount_code = dsc_discount.discount_code
OR
<no matching discount exists for the compatible discount code>
i.e. there is no row match joining:
organization_id = dsc_discount.organization_id AND
compatible_discount_code = dsc_discount.discount_code
4. WHERE <no matching discount exists>
i.e. there is no row match joining:
organization_id = dsc_discount.organization_id AND
discount_code = dsc_discount.discount_code
Note: When the “enabled” flag is set to FALSE, employee records are
not purged.
Default Enabled
Group Default Order Default Age Value
hrs_employee2 0
hrs_employee_message3 0
hrs_employee_task4 0
hrs_employee_fingerprint hrs_employee.child5 10
hrs_employee_notes hrs_employee.child 10
hrs_employee_password hrs_employee.child 10
hrs_employee_store hrs_employee.child 10
hrs_employee_task_notes hrs_employee_task. 10
child6
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2. WHERE terminated_date < ?
3. WHERE end_date < ?
4. WHERE due_date < ?
5. WHERE <no matching employee exists>
i.e. there is no row match joining:
organization_id = hrs_employee.organization_id AND
employee_id = hrs_employee.employee_id
6.DELETE {%ALIAS%} FROM {%TABLE%} c WHERE organization_id = ? AND NOT EXISTS
(Select p.* From hrs_employee_task p Where p.organization_id = c.organization_id And
p.rtl_loc_id = c.rtl_loc_id And p.task_id = c.task_id)
Default
Group Default Order Default Age Status
INV 0 365 NA
inv_invctl_document2 0
inv_count3 0
inv_carton inv_invctl_document.child4 10
inv_document_notes inv_invctl_document.child 10
inv_invctl_doc_lineserial inv_invctl_document.child 10
inv_invctl_document_lineitm inv_invctl_document.child 10
inv_invctl_document_p inv_invctl_document.child 10
inv_inventory_loc_mod inv_invctl_document.child2 10
5
inv_item_acct_mod inv_invctl_document.child 10
inv_shipment inv_invctl_document.child 10
inv_shipment_address inv_invctl_document.child 10
inv_shipment_lines inv_invctl_document.child 10
inv_invctl_trans inv_invctl_document.child 10
inv_invctl_trans_detail inv_invctl_document.child 10
inv_count_bucket inv_count.child 10
inv_count_sheet inv_count.child6 10
inv_count_sheet_lineitm inv_count.child 10
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2. WHERE complete_date_timestamp < ?
3. WHERE end_date < ?
4. WHERE <no matching inventory document exists>
i.e. there is no row match joining:
organization_id = inv_invctl_document.organization_id AND
rtl_loc_id = inv_invctl_document.rtl_loc_id AND
document_typcode = inv_invctl_document.document_typcode AND
invctl_document_id = inv_invctl_document.invctl_document_id
5. WHERE <no matching inventory document exists>
i.e. there is no row match joining:
organization_id = inv_invctl_document.organization_id AND
rtl_loc_id = inv_invctl_document.rtl_loc_id AND
document_typcode = inv_invctl_document.document_typcode AND
document_id = inv_invctl_document.invctl_document_id
Note: When the “enabled” flag is set to FALSE, item records are not
purged.
Exception: itm_warranty_journal records are transactional and
will be purged if their parent trn_trans records are also purged.
(This table is referenced in both the “ITM” and “Transaction” groups).
Other than historical reporting—which should be impacted by
purges—the itm_warranty_journal is used for testing whether or
not a given transaction involving warranty activity may be post-
voided. Specifically, if the user attempts to post-void a transaction
involving warranty activity, it must be the most recent transaction
involving any activity for that warranty. Therefore, if a transaction
record is deemed “purgable”, its corresponding
itm_warranty_journal record is not needed.
Default
Enabled
Group Default Order Default Age Default Status Value
itm_attached_items2 0
itm_item_msg3 0
itm_item_prices4 0
itm_item_deal_prop5 0
itm_item_restriction6 0
itm_item_restriction_calendar7 0
itm_refund_schedule8 0
itm_warranty9 0 CLOSED
itm_item_restrict_calendar itm_item_ 10
restriction.child10
itm_warranty_journal itm_warranty.child 10
11
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
Default
Group Default Order Default Age Status
LOC 0 365 NA
loc_cycle_question_answers2 0
loc_cycle_questions3 0
loc_state_journal4 0
loc_cycle_question_choices loc_cycle_questions.child5 10
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2. WHERE answer_timestamp < ?
3. WHERE expiration_datetime < ?
4. WHERE time_stamp < ?
5. WHERE <no matching cycle question exists>
i.e. there is no row match joining:
organization_id = loc_cycle_questions.organization_id AND
question_id = loc_cycle_questions.question_id
Note: When the “enabled” flag is set to FALSE, deal records are not
purged.
Default Enabled
Group Default Order Default Age Value
prc_deal2 0
prc_deal_cust_groups prc_deal.child3 10
prc_deal_document_xref prc_deal.child 10
prc_deal_field_test prc_deal.child 10
prc_deal_item prc_deal.child 10
prc_deal_trig prc_deal.child 10
prc_deal_week prc_deal.child 10
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2. WHERE end_date < ?
3. WHERE <no matching deal exists>
i.e. there is no row match joining:
organization_id = prc_deal.organization_id AND
deal_id = prc_deal.deal_id
RPT 0 365 NA
rpt_merchlvl1_sales rpt.general2 0
rpt_flash_sales rpt.general 0
rpt_flash_sales_goal rpt.general 0
rpt_sales_by_hour rpt.general 0
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2. WHERE business_date < ?
SCH 0 365 NA
sch_emp_time_off1 0
sch_schedule2 0
TAX 0 365 NA
tax_tax_exemption1 0
tax_tax_rate_rule2 0
tax_tax_rate_rule_override3 0
THR 0 365 NA
thr_payroll1 0
thr_payroll_header2 0
thr_payroll_notes3 0
thr_timecard_entry4 0
thr_timecard_entry_comment5 0
thr_timecard_journal6 0
Note: When the “enabled” flag is set to FALSE, tender records are not
purged.
Default Enabled
Group Default Order Default Age Value
tnd_tndr2 0
tnd_tndr_availability tnd_tndr.child3 10
tnd_tndr_denomination tnd_tndr.child 10
tnd_tndr_user_settings tnd_tndr.child 10
tnd_tndr_options tnd_tndr.child 10
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2. WHERE expr_date < ?
3. WHERE <no matching tender exists>
i.e. there is no row match joining:
organization_id = tnd_tndr.organization_id AND
tndr_id = tnd_tndr.tndr_id
Note: When the “enabled” flag is set to FALSE, session records are
not purged.
Exception: TSN tables that are transactionalized will be purged if their
parent trn_trans record is also purged. TSN tables representing
non-transactionalized session information (specifically:
tsn_session, tsn_session_tndr, and tsn_session_wkstn)
will not be purged by default.
Default Enabled
Group Default Order Default Age Value
tsn_session2 0
tsn_session_tndr tsn_session.child3 10
tsn_session_wkstn tsn_session.child 10
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2. WHERE end_datetime < ?
3. WHERE <no matching session exists>
i.e. there is no row match joining:
organization_id = tsn_session.organization_id AND
rtl_loc_id = tsn_session.rtl_loc_id AND
session_id = tsn_session.session_id
TTR 0 365 NA
ttr_voucher2 0
ttr_voucher_history ttr_voucher.child3 10
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2. WHERE expr_date < ?
3. WHERE <no matching voucher exists>
i.e. there is no row match joining:
organization_id = ttr_voucher.organization_id AND
voucher_typcode = ttr_voucher.voucher_typcode AND
serial_nbr = ttr_voucher.serial_nbr
xom_order2 0
xom_order_line xom_order.child3 10
xom_order_line_detail xom_order.child 10
xom_customer_mod xom_order.child 10
xom_address_mod xom_order.child 10
xom_fulfillment_mod xom_order.child 10
xom_source_mod xom_order.child 10
xom_item_mod xom_order.child 10
xom_order_payment xom_order.child 10
xom_order_fee xom_order.child 10
xom_balance_mod xom_order.child 10
xom_fee_mod xom_order.child 10
xom_order_mod xom_order.child 10
xom_customization_mod xom_order.child 10
1. Where a key is not explicitly specified it is the same as the query name (for example, the key
for the "trn_trans" query is "trn_trans").
2. WHERE order_date < ?
3. WHERE <no matching order exists>
i.e. there is no row match joining:
organization_id = xom_order.organization_id AND
order_id = xom_order.order_id
Note: This email purge clears out the email addresses saved from the
Receipt/Transaction database without affecting the addresses stored in
customer profiles.
Default
Group Default Order Default Age Status
Email 0 30 NA
trn_trans_properties_email trn_trans_properties_email1 0
Default
Group Default Order Default Age Status
Air 0 30 NA
com_flight_info 0
Default
Group Default Order Default Age Status
TEMP_STORE 0 365 NA
_REQUEST
loc_temp_store_ 0
request 1)
Overview
This Java Management Extensions (JMX) application runs in the background when
Xstore Point of Service is running and allows users with the appropriate security level to
view system information about the application. JMX allows developers to use
management beans to simplify management of processes and data. Xstore Point of
Service uses JMX to pull reports from the database as well as other back-office tasks.
When Xstore Point of Service is running, you can use the Xstore Point of Service
Management Console connect manage JMX configurations. Connect to port 2020 using
https and a web browser to access various management features.If you are connecting
from the same machine, the URL would be https://localhost:2020.
Note: This web interface is secured using the same logins that can be
used to log in to Xstore Point of Service. A security privilege is
required to access this console. Not all employee logins may have
access.
Once authorized, you will see the Xstore Point of Service Management Console.
Debug Domains
Cache Status
Use this MBean to view information about JCS caches.
• To view cache status, click the getCacheStatus button to see the Cache Id, Status,
and where the cache is configured.
• To clear all caches, click the clearCaches button to send a clear request to the
CacheManager to clear all caches.
- Replication Status
LogLevelConfig
Use this MBean to configure runtime log levels.
PosDebugger
Use this MBean to view information about the current system state.
• Click the debugMenu button to view information about the currently loaded menu.
(menu model, prompt action model, app change actions, and current form)
• Click the debugTransaction button to view information about the current
transaction.
• Click the debugAccountManager button to view information about current
customer accounts.
• Click the debugModel button to view information about the current model.
• Click the debugCurrentMemory button to view information about the current
memory usage. (total memory and free memory)
• Click the debugFocus button to view information about the current focus.
(focusedWindow, focusOwner, and permanentFocusOwner)
• Click the forceGarbageCollection button to force garbage collection. (The total
memory, the free memory, and the free memory after garbage collection).
• Click the debugOpChainProcessor button to view current state of op chain
processors. (USER OPCHAIN PROCESSOR and SYSTEM OPCHAIN PROCESSOR)
ReceiptDebugger
Use this MBean to trace receipt configuration during a transaction.
• To generate the receipts for the current transaction, set up the following:
a. If Original is set to true, reprint text is not included.
b. If Suppress Tracing is set to true, tracing information is not included.
c. [OPTIONAL] Enter the line width in characters for the generated receipts.
(Defaults to 44 if left blank).
d. Click the viewReceipt button.
• To generate files that graphviz can turn into SVG files, set up the following:
a. [OPTIONAL] Specify the directory in which to save generated files.
b. [OPTIONAL] Specify the receipt type to generate. (Defaults to “all” if left blank).
c. Click the traceRcpt button.
General Domain
Tlog Generation
Use this MBean to generate Tlogs. The Tlog Generator (dtv.pos.tools.TlogGenerator
class) was created to enable recreation of Tlog records for transactions. The Tlog
Generator supports an array of parameters for controlling which transactions will have
logs regenerated. All parameters are optional, but care should be taken in executing the
generator for a large set of transactions.
Information Domain
AuthManager
Use this MBean to view and manage the status of authorization processors.
• View the AuthConfig.xml settings - You can modify the online/offline status of
each authorization type. For example, you can force gift card authorizations to be
processed offline just like you had started up with the setting
communicationEnabled=false in AuthConfig.xml. The change resets when
Xstore Point of Service is restarted.
• View the recent communications between Xstore Point of Service and the
authorization engine - For example, you can view credit card authorizations.
Sensitive information, such as the card number and track data, is masked in this
view.
The list of AuthManager attributes shows the name, description, and status value for
each authorization processor.
ClassPathInformation
Use this MBean to explore the classpath. This is useful for determining conflicts between
jar files. You can view where a given file is found and view all locations of a given
package.
ConfigurationInformation
Use this MBean to view information about POS configuration. You can view each setting
in the SysConfig.xml file and which file specified the value.
b. Click the SystemConfig button to view configuration setting, value, and source
from SysConfig.xml.
f. Click the PreFlightChecks button to run the pre-flight checks and view each
result. Preflight checks are a way in Xstore Point of Service to check for common
problems at startup. If any of the problems are found, a warning dialog is
displayed.
HardwareDeviceManager
HardwareDeviceManager calls the same functionality as the Xstore Point of Service
Enable/Disable Hardware back office function. Refer to the Xstore Point of Service
Manager’s Guide for more information.
Use this MBean to view and manage the status of hardware devices. This option
provides a way to temporarily disable and then enable hardware devices. This process
writes out a hardwareconfig.xml file to a patch directory for the devices that have
been disabled, reloads the hardware configurations, and then re-initializes the hardware.
The configured hardware and COM ports visible by the JVM are listed.
The list of HardwareDeviceManager attributes shows the name, description, and status
value for each hardware device. If needed, change a hardware value, then click the
Apply button to enable/disable only the selected device(s), without removing any
configuration overrides (patch file entries) that may exist for other devices. For example,
this option can be used when you have disabled several devices and only want to enable
one device, not all of the disabled devices.
To clear recent hardware configurations, click the clearHardwareConfigs button to
remove all overrides to the device configuration file which enables all disabled devices.
For example, this option can be used when you want to enable all disabled devices at
once. The system removes the hardware configuration overrides (patch file entries) that
were created when the devices were disabled.
PrintQueueMgr
Use this MBean to manage the receipt print queue. A receipt printer under the control of
Xstore Point of Service becomes a shared device. A nearby register can be configured to
use another register's receipt printer as a backup. The Receipt Printer Manager allows
you administer the print queue used for this function.
You can also manually add jobs to the print queue from the web interface. This could be
used to print a barcode for use in a lab, or to allow a help desk to remotely print a
message that will be visible on the receipt printer.
The list of PrintQueueMgr attributes shows the port, whether remote queueing is
enabled, the pending count, and status of the print queue.
• To view print jobs that are in the queue, click the listJobs button.
• To cancel a print job, enter the ID of the job to cancel, then click the cancelPrintJob
button.
• To start the queue, click the start button.
• To stop the queue, click the stop button.
• To pause the queue, click the pause button.
• To resume the queue, click the resume button.
• To flush the queue, click the flush button.
Overview
The purpose of the Transaction Replicator utility is to fill in transactional gaps for sales
audit purposes.
The Transaction Replicator utility retrieves transactions from the default lookup location
for this type of data and adds them to the replication queue on the system where the
utility is run. The utility will run for the organization ID that is set in
system.properties.
The utility is found in C:\xstoredata on an installed system. Xstore Point of Service
must be running for the data to be replicated.
The Transaction Replicator only targets the mainline transaction graph (sale lines,
tenders, etc.) and not any ancillary data. This utility is not intended to fully recover any
and all data that may normally be replicated from the register. The following list shows
transactional data that will not be replicated using this tool.
- sec_activity_log data
- ttr_tndr_auth_log data
- trn_trans_version data
- Timecard-related data
- Receipt data
- Session Control transaction details
- Start Date [REQUIRED] - The starting business date of the transactions to add.
- End Date - The ending business date of the transactions to add.
* Defaults to the current system date and must be greater than the start date.
* If not populated, assumes current date as end date.
- Store # - The retail location ID of transactions to add.
- Register # - The workstation ID of transactions to add.
- Transaction Id Start - The ID of the first transaction that should be added.
- Transaction Id End - The ID of the last transaction that should be added. This
must be higher than the starting transaction ID.
3. Click Process.
Any transactions inclusively between the Start Date and the End Date, and
inclusively between the Transaction Id Start and the Transaction Id End (when
provided), will be included.
Overview
This chapter provides a general overview of internationalization, localization, and
multilingualization, and describes how these concepts are implemented and configured
in Xstore Point of Service.
Internationalization is a general term used to describe the ability of a software
application to be customized for use in different locations by people from different
cultures who speak different languages. The implementation of internationalization in
Xstore Point of Service allows it to be quickly customized to almost any language, even
though the developers may not know any language other than their own native
language.
Internationalization 43-1
Internationalization (i18n)
Internationalization (i18n)
Internationalization refers to the process and methods that enable an application to be
used in a variety of geographic locations that have different languages and cultural
requirements. Although the source code is developed in one language, such as English,
the user interface is presented in the local language with sensitivity to cultural
requirements.
The abbreviation “i18n” is frequently used to signify internationalization, with the “18”
in the middle of “i18n” signifying the number of letters that were removed.1
Implementing i18n
Xstore Point of Service delivers the benefits of internationalization without requiring
changes to the source code. Through various files that contain “key/translation” pairs,
language-specific translations can be implemented in software created by a developer
who is not multilingual.
Each pair consists of a text key in the developer’s language followed by the translated
word or phrase in a different language. The key is a unique identifier used by Xstore
Point of Service to access the corresponding translation. Xstore Point of Service accesses
the correct translation at runtime.
Note: In Xstore Point of Service, all translation keys must begin with
the underscore (_) character.
The translation key is identical in all of the language-specific translation properties files,
but its corresponding translation varies by language. Each language has its own file with
all of the required key/translation pairs.
Multilingualization (m17n)
In cases where several languages and character sets are required, multilingualization, or
“m17n”, is required. This methodology makes several different character sets from
several different languages available to users. Implementing m17n typically requires the
software to use Unicode or UTF-8 character sets.
Java Standards
Xstore Point of Service uses several Java standards in its implementation of i18n. Locales
are used to designate the language and country in which the application is to be used,
and Xstore Point of Service uses the language and country code standards defined by
Java. Xstore Point of Service also uses standard Java i18n methods and libraries.
Language Codes
Xstore Point of Service language codes combine an ISO-639-1 language code and an ISO-
3661-1 country code to identify the specific language files for the user interface. Samples
of some of the codes are specified in the table below:
Table 43-1 Sample Language CodesInternationalization.fm
Japanese ja_JP
Chinese zh_CN
Internationalization 43-3
Xstore Point of Service i18n Implementation
Language Files
For each language available in Xstore Point of Service, there is one corresponding file
that contains all the text items that a user will see. This includes all messages and
prompts in the system. Each text item in the file is indexed so that different translations
of the same message are found in a consistent manner.
Each language translation file is named using the format shown below. The file extension
indicates that the file is a “properties” file.
translations_[language code].properties
The designation of [language code] is replaced by the proper language code as
shown in the table below. Samples of translations that use the same character data are
also shown. Xstore Point of Service uses the UTF-8 standard to encode character data.
Table 43-3 Sample TranslationsInternationalization.fm
Individual Customization
In addition to setting a default language for the Xstore Point of Service system, the
language can also be configured for each individual user. When a user logs in, the
interface’s language can be adjusted to match the needs or desires of that user. For
example, if a French-speaking Canadian were working in the United States, the system
could display prompts in French instead of the system’s default English language.
Note: To configure the language for a user, set the preferred locale for
an employee in the preferred_locale column in the crm_party
table. Also, verify the locale is listed in the AvailableLocales.xml
file.
Internationalization 43-5
Xstore Point of Service i18n Implementation
The first translations file that contains the requested key also contains the corresponding
translation string that will be used as the resulting output in the application. If there is
no corresponding key mapping in any of the translation files that is searched, a string in
the form “mr@[invalid translation key]” is used as the output.
Internationalization 43-7
Xstore Office and SystemConfigMetadata.properties
entry exists, then the application-specified key will serve as the effective key for
translation lookup purposes.
Example in translations.map.properties
_customerSearchName=_commonName
_employeeSearchName=_commonName
Example in translations_en.properties
_commonName=Name
Example in translations_es_MX.properties
_commonName=Nombre
In the preceding example, the principle of unique keys is preserved, but only a single
translation must be performed for each supported locale. Any number of labels, such as
“Name”, can similarly be accommodated by mapping their unique keys to the
_commonName effective key without requiring any additional translation work in any
language.
Whenever a divergent translation is needed for any of the commonly mapped keys,
those keys can be remapped in, or removed from, the
translations.map.properties file. If necessary, a new entry might also need to be
added to each locale-specific translation file.
Internationalization 43-9
Xstore Office and SystemConfigMetadata.properties
Overview
This chapter provides information about the Xstore Mobile configurations.
system.properties
The following configuration is found in the system.properties file.
Table 44-1 system.properties
ctl_mobile_server Table
The connection details of the available Xstore Point of Service Mobile servers are stored
in the ctl_mobile_server table.
• During the Xstore Point of Service Mobile server startup, the server can register itself
by inserting a record to the database using its host name, port and alias. This is
configured in the mobile.server.display.name system property.
This feature can be disabled by overriding the
populateDBWithMobileServerConnectionInfo worker bean and setting the
enableSelfReporting property to false.
Example:
<bean id="populateDBWithMobileServerConnectionInfo"
class="dtv.pos.common.PopulateDBWithMobileServerConnectInfoWor
ker" scope="prototype">
<property name="enableSelfReporting" value="false" />
</bean>
• When the system is configured to not to use the self reporting feature, users can
download data to the ctl_mobile_server table via dataloader.
Note: For more information about the Mobile Server Record, see the
Oracle Retail Xstore Point of Service Host Interface Guide.
SysConfig.xml Settings
This section describes Xstore Point of Service Mobile SysConfig settings.
Table 44-2 SysConfig.xml
Default
Setting Value Valid Values Description
Default
Setting Value Valid Values Description
Sequences
Xstore Mobile Point of Service now uses database sequences by default instead of file-
based sequences. To continue to use file-based sequences in a single mobile server
environment, set the following in the system.properties file:
dtv.util.sequence.useDbBasedSequenceStrategy=false
Overview
This chapter provides information about the temporary store configurations.
There are two types of temporary stores:
• The Event store has a separate store number from all brick-and-mortar locations.
• The Extension store shares a store number with a specific brick-and-mortar location.
Note: For more information about how to request a mobile server for
an extension store, see the Xstore Point of Service Mobile User Guide. For
more information about how to manage mobile server requests for
event and extension stores, see the Xstore Office User Guide.
Data Seeding
Retailers should send a full primary data refresh (that is, MNT files from systems of
record, not Xadmin Data Publisher) to a store in order to get store data loaded into the
temporary store database. This is valid for event stores as well as extension stores. For an
extension store, this means that the rest of the physical store registers also receive the
data refresh.
For extension stores, both the in-store lead register and the temporary store mobile
server will download deployments.
Each temporary store server has a dedicated local database.
Xenvironment
During installation, the following configurations should be selected:
• Non-lead Workstation
• Xstore Present? - Unchecked
• Mobile Server Present – Checked
• Is Extension Store? - Checked
• All DB configurations should use localhost.
For more information, see the Oracle Retail Xstore Suite Implementation and Security Guide.
Once installation is complete, the following critical DB settings will be applied in
\environment\cust_config\version1\actions.properties:
• atom.get-remote-sql-server-backup.disabled = true
• chain.DATABASE_BACKUP_DOWNLOAD_AND_RESTORE.disabled = true
• Mobile Server Register # - Must be unique from home store Mobile Server.
• Mobile Register Range Start/End – Must be unique from home store Mobile Server
range.
• All DB configurations should use localhost.
For more information, see the Oracle Retail Xstore Suite Implementation and Security Guide.
This polling interval is defined as a Spring scheduled task, and can be found in the
spring.xml file, added to the springTaskScheduler bean:
<task:scheduled-tasks scheduler="springTaskScheduler">
[...]
<task:scheduled ref="extensionStoreConnectivityCheck"
method="check" fixed-delay="3600000" initial-delay="10000" />
</task:scheduled-tasks>
Persistent Timeout
The persistence strategy supports DTX replication in both directions (home store to
extension store and extension store to home store). Regardless of the direction, the
fundamental operation is the same: one end is sending a DTX object to the other end, so
that it will persist that DTX object on its behalf.
One end is waiting for the other end to perform the persistence. If no response is
received (either a successful response, or an error response), the request will timeout and
assume that the other end failed to perform the requested persistence.
By default, this timeout is 30 seconds.
This timeout can be configured as a JVM system property on any home store system, or
on the extension store mobile server.
xstore.dtxws.makepersistent.timeout.seconds=60
For example, the above system property sets the timeout to one minute.
Security/Authentication
In-store registers that need to connect to the extension store server use a secured
websocket. The websocket authentication leverages the Xstore security credentials
(sec_service_credentials) database table, which allows for preemptive (that is,
ahead of time) credential rotation.
When the retailer approves a temporary store event for an extension store in Xadmin, the
retailer needs to ensure that the necessary credentials are both configured at the
temporary store server (during staging) and loaded at the store.
A specific service ID is used for the credential records. The same service ID will be used
regardless of which temporary store server is hosting the event, however, the credentials
themselves may differ between temporary store servers.
The retailer should treat configuring and rotating these credentials as they would for any
other outbound service calls made from Xstore, for example, to Customer Engagement,
Order Broker, and so on.
IDCS Credentials
IDCS Credentials need to be shared between all registers in the store. This data is stored
in the StorePrimary database, and sharing is achieved by having the non-lead registers
access that data from that database. Because the extension store cannot access the
StorePrimary data source at the store, this information is transmitted over the websocket
to the extension store server so it can be stored in the extension store database.
Service IDs
Xstore and Xenvironment use their own individual service key when looking up
credentials from sec_service_credentials:
• Xstore uses EXTENSION_STORE_MOBILE_SERVER
• Xenvironment uses EXTENSION_STORE_XENV
However, in the default configuration, these keys are both mapped to the same actual
service ID: EXTENSION_STORE. The configuration for this can be found in the
services.xml file. For details, see the credentialIdMapping properties of the
serviceCredentialProvider bean.
Thus, a single record in sec_service_credentials table with a service ID of
EXTENSION_STORE can be shared by both Xstore and Xenvironment for authenticating
to their respective extension store servers.
If retailers want to have finer control over the credentials of their extension store servers,
they can configure the credentialIdMapping properties of the
serviceCredentialProvider bean in the services.xml file, and maintain the
credential records in sec_service_credentials table.
Operational Data
This section provides details on operational data within a home store/extension store
setup.
Replication
critical for temporary store operations, such as retail location status and inventory stock
ledger updates.
Orders
Note that orders can be submitted from the extension store, however, preexisting orders
not created by the extension store cannot be accessed from the extension store. Order
pickup and fulfillment is expected to be managed from the home store.
Customer Accounts
Customer account (layaway, special order, work order, and so on) creation and
management can only be conducted from the home store at this time.
Inventory
For inventory counting purposes, home and extension stores should have different
default inventory locations. Under this setup, the home store would count in its
inventory location and the extension store would count in its inventory location, and
inventory count documents would not need to replicate between the home and
extension store. By default, home store workstations sell items out of the home store
default inventory location and extension workstations sell items out of the extension
inventory location.
Clock In/Out
Clocked in associates are only visible within the home and extension stores in isolation.
An associate cannot clock in at the home store and clock out at the extension store; the
associate would first have to clock out of the home store. Additionally, there are two
SysConfig.xml entries for clocking out associates during a store close:
• AutoClockOutOnRtlLocClose - Determines which associates will be
automatically clocked out at store close.
• ValidateAnyEmployeeNotClockOutYet - Determines whether or not the
system validates that all of the associates are clocked out prior to starting the store
close.
If these are enabled, when closing the store from the extension store, the validations only
apply to employees that were clocked in at the extension store. The extension store does
not have visibility of associates clocked in at the home store.
Other
Certain back office functionality, for example, shipping/receiving, employee
maintenance, and so on, is reserved for the home store only. The extensionstore/
MenuConfig.xml file controls which base-supported features are available to the
extension store.
Note: For details about the endpoint tempstore, see the Xstore Suite
Services Guide.
For more details about the loc_temp_store_request table, see the Xstore
POS Database Dictionary.
For more information about how to request a mobile server for an
extension store, how to generate QR codes to quickly set up mobile
devices for temporary stores, and how to set a tax location during the
register open process for a temporary store, see the Xstore Point of
Service Mobile User Guide.
The request will also be written to the Store Primary database. It will not go through the
replication process. This functionality is also available in training mode, except for the
calls to the Xcenter service.
Security Privileges
Security privileges were added to Xstore to handle viewing and creating/editing of
temporary store requests:
• VIEW_TEMP_STORE_REQUESTS - This privilege is used to determine if an associate
can see the list of temporary store requests or a specific request from that list.
• EDIT_TEMP_STORE_REQUESTS - This privilege is used to determine if an associate
can create a new request or edit an existing request
Note: For details about the endpoint tempstore, see the Xstore Suite
Services Guide.
For more details about Application Alerts, see the Xstore Office User
Guide.
Note: For details about purge settings for temporary store requests,
see the Xstore Office User Guide.
Overview
As part of the transaction, Xstore could create attachments in the table
trn_trans_attachments. They can be created for different reasons and the
attachment_type is used to distinguish them. The attachments are mainly exported from
Xcenter. See chapter Xcenter Attachment Export in Oracle Retail Xstore Office User Guide
for additional information on how to export the attachments from Xcenter.
attachment_bytes
content (data are
saved as array of attachment_bytes
Attachment Type Function bytes) data extension
Additional information can be found in the Oracle Retail Country Accelerator Technical
Guide.
Overview
The integration with Vertex Tax Calculation APIs V2 replaces the Xstore Tax Engine. The
Vertex integration can be configured to use both the cloud and a local container.
Base Feature
To enable Vertex External Tax Integrations, add :vertex to your
xstore.config.path.base.features in the configPath.properties file. In case
OAuth2 authentication is required, add :vertex:vertex/oauth2.
Base features are managed through Xstore Office. For more information about base
features, see the Personality Maintenance section in the Oracle Retail Xstore Office User
Guide.
For more information about xstore.config.path.base.features in the
configPath.properties file, see the Xstore Point of Service Configuration Path chapter in
this guide.
Installer
Additionally, you need to define the Vertex Service Endpoint URL.
xstore.properties
#
#################################################################
############
# # Vertex External Tax Services Integration
#
#################################################################
############
oracle.retail.xstore.vertex.url=
oracle.retail.xstore.vertex.ServiceTimeout=
ant.install.properties
You can also define the Vertex Service Endpoint URL during the installation process as
ant.install.properties or through the Xstore Point of Service Installer in GUI mode.
ant.install.properties
#----------------------------------------------------------------
# # Vertex External Tax Services Integration
#----------------------------------------------------------------
vertex.protocol = https
vertex.host = localhost
vertex.port = 443
vertex.ServiceTimeout = 30
}
},
"lineItemId": "<LINEITEMID>",
"lineItemNumber": 1,
"product": {
"productClass": "1"
},
"quantity": {
"value": 1.0
},
"taxIncludedIndicator": false,
"unitPrice": 79.99
}
],
"roundAtLineLevel": true,
"saleMessageType": "QUOTATION",
"seller": {
"company": "US_LEGAL_ENTITY_TEST",
"physicalOrigin": {
"city": "<CITY>",
"country": "US",
"latitude": "<LATITUDE>",
"longitude": "-<LONGITUDE>,
"mainDivision": "OH",
"postalCode": "<POSTALCODE>",
"streetAddress1": "<STREETADDRESS1>"
}
},
"transactionId": "<TRANSACTIONID>",
"transactionType": "SALE"
}
seller loc_legal_entity/loc_rtl_loc NA
tables
product itm_item_options/ NA
itm_non_phys_item
quantity NA NA
quantity.unitOfMeasure itm_item_options.unit_of_m NA
easure_code and
com_measurement.code
vertex-beans.xml
<util:constant id="VERTEX_ITEM_NONE"
static-
field="dtv.pos.register.tax.ext.vertex.VertexTaxSystemConfig.ITE
M_NONE" />
<util:constant id="VERTEX_ITEM_ITEM_ID"
static-
field="dtv.pos.register.tax.ext.vertex.VertexTaxSystemConfig.ITE
M_ITEM_ID" />
<util:constant id="VERTEX_ITEM_MERCH_LEVEL_CONCAT"
static-
field="dtv.pos.register.tax.ext.vertex.VertexTaxSystemConfig.ITE
M_MERCH_LEVEL_CONCAT" />
<util:constant id="VERTEX_ITEM_MERCH_LEVEL_FIRST_NOT_NULL"
static-
field="dtv.pos.register.tax.ext.vertex.VertexTaxSystemConfig.ITE
M_MERCH_LEVEL_FIRST_NOT_NULL" />
<util:constant id="VERTEX_ITEM_TAX_GROUP_ID"
static-
field="dtv.pos.register.tax.ext.vertex.VertexTaxSystemConfig.ITE
M_TAX_GROUP_ID" />
<util:constant id="VERTEX_ITEM_NP_SUBTYPE"
static-
field="dtv.pos.register.tax.ext.vertex.VertexTaxSystemConfig.ITE
M_NP_SUBTYPE" />
<util:constant id="VERTEX_ITEM_NP_TYPE"
static-
field="dtv.pos.register.tax.ext.vertex.VertexTaxSystemConfig.ITE
M_NP_TYPE" />
<util:constant id="VERTEX_ITEM_NP_TYPE_CONCAT"
static-
field="dtv.pos.register.tax.ext.vertex.VertexTaxSystemConfig.ITE
M_NP_TYPE_CONCAT" />
<bean id="vertexTaxSystemConfig"
class="dtv.pos.register.tax.ext.vertex.VertexTaxSystemConfig">
<property name="itemMerchCodeType" ref="VERTEX_ITEM_NONE" />
<property name="itemNonMerchCodeType"
ref="VERTEX_ITEM_NP_SUBTYPE" />
<property name="itemMerchTaxCodeType"
ref="VERTEX_ITEM_TAX_GROUP_ID" />
<property name="itemNonMerchTaxCodeType"
ref="VERTEX_ITEM_TAX_GROUP_ID" />
</bean>
Note: The Vertex maximal field length is 40, therefore the result could
be truncated.
"product": {
"productClass": "1"
},
"quantity": {
"value": 1.0
},
"seller": {
"company": "US_LEGAL_ENTITY_TEST",
"physicalOrigin": {
"city": "<CITY>",
"country": "US",
"latitude": "<LATITUDE>",
"longitude": "<LONGITUDE>",
"mainDivision": "OH",
"postalCode": "<POSTALCODE>",
"streetAddress1": "<ADDRESS>",
"taxAreaId": "<TAXAREAID>"
},
"taxRegistrations": []
},
"taxIncludedIndicator": false,
"taxes": [
{
"calculatedTax": 4.6,
"calculationRuleId": {
"salesTaxHolidayIndicator": false,
"userDefined": false,
"value": "v516381"
},
"effectiveRate": 0.0575,
"exempt": 0.0,
"imposition": {
"impositionId": "v1j28101",
"userDefined": false,
},
"isService": false,
"jurisdiction": {
"effectiveDate": "1900-01-01", "expirationDate": "9999-12-
31", "jurisdictionId": "28101", "jurisdictionType":
"STATE", "value": "OHIO"
},
"maxTaxIndicator": false, "nominalRate": 0.0575,
"nonTaxable": 0.0, "notRegisteredIndicator": false,
"situs": "DESTINATION", "taxCollectedFromParty": "BUYER",
"taxResult": "TAXABLE", "taxStructure": "SINGLE_RATE",
"taxType": "SELLER_USE",
"taxable": 79.99
},
{
"calculatedTax": 1.0,
"calculationRuleId": {
"salesTaxHolidayIndicator": false,
"userDefined": false,
"value": "v144561"
},
"effectiveRate": 0.0125,
"exempt": 0.0,
"imposition": {
"impositionId": "v1j28405",
"userDefined": false,
"value": "Local Sales and Use Tax"
},
"impositionType": {
"impositionTypeId": "v1",
"userDefined": false,
"value": "General Sales and Use Tax"
},
"inclusionRuleId": {
"salesTaxHolidayIndicator": false,
"userDefined": false,
"value": "v1286088"
},
"isService": false,
"jurisdiction": {
"effectiveDate": "1900-01-
01", "expirationDate": "9999-
12-31", "jurisdictionId":
"28405", "jurisdictionType":
"COUNTY", "value": "CUYAHOGA"
},
"maxTaxIndicator": false,
"nominalRate": 0.0125,
"nonTaxable": 0.0,
"notRegisteredIndicator":
false, "situs": "DESTINATION",
"taxCollectedFromParty":
"BUYER", "taxResult":
"TAXABLE", "taxStructure":
"SINGLE_RATE",
"taxType":
"SELLER_USE",
"taxable": 79.99
},
{
"calculatedTax": 0.8,
"calculationRuleId": {
"salesTaxHolidayIndicator": false,
"userDefined":
false, "value":
"v14822"
},
"effectiveRate": 0.01,
"exempt": 0.0,
"imposition": {
"impositionId": "v1j28406",
"userDefined": false,
"value": "Local Sales and Use Tax"
},
"impositionType": {
"impositionTypeId": "v1",
"userDefined": false,
"value": "General Sales and Use Tax"
},
"inclusionRuleId": {
"salesTaxHolidayIndicator": false,
"userDefined": false,
"value": "v1284340"
},
"isService": false,
"jurisdiction": {
"effectiveDate": "1900-01-01",
"expirationDate": "9999-12-31",
"jurisdictionId": "28406",
"jurisdictionType": "DISTRICT",
"value": "GREATER CLEVELAND TRANSIT
AUTHORITY TAX"
},
"maxTaxIndicator": false,
"nominalRate": 0.01,
"nonTaxable": 0.0,
"notRegisteredIndicator":
false, "situs": "DESTINATION",
"taxCollectedFromParty":
"BUYER", "taxResult":
"TAXABLE",
"taxStructure": "SINGLE_RATE",
"taxType": "SELLER_USE",
"taxable": 79.99
}
],
"totalTax": 6.4,
"transactionType": "SALE",
"unitPrice": 79.99
}
],
"returnAssistedParametersIndicator": true,
"roundAtLineLevel": false,
"saleMessageType": "QUOTATION",
"seller": {
"company": "US_LEGAL_ENTITY_TEST",
"physicalOrigin": {
"city": "<CITY>",
"country": "US",
"latitude": "<LATITUDE>",
"longitude": "<LONGITUDE>",
"mainDivision": "OH",
"postalCode": "<POSTALCODE>",
"streetAddress1": "<ADDRESS>",
"taxAreaId": "<TAXAREAID>"
},
"taxRegistrations": []
},
"subTotal": 79.99,
"total": 86.39,
"totalTax": 6.4,
"transactionId": "1000::101::1678406400000::1::111",
"transactionType": "SALE"
},
"meta": {
"app": "vertex-ws.war v9.0.11.2.6",
"timeElapsed(ms)": 109,
"timeReceived": "2023-03-10T11:38:53.505Z"
}
}
TaxInfoResponse
Vertex object Xstore notes
calculatedTax TaxAmount trl_sale_tax_lineitm.ra Vertex calculatedTax
w_tax_amountif not amount is multiplied
exempt or override by Xstore line item
trl_sale_tax_lineitm.tax quantity.
_amt
taxable TaxableAmount if not exempt or Vertex taxable amount
override is multiplied by Xstore
trl_sale_tax_lineitm.tax line item quantity.
able_amt
effectiveRate TaxPercentage trl_sale_tax_lineitm.ra NA
w_tax_percentage
jurisdiction.value AuthorityId trl_sale_tax_lineitm.aut NA
hority_id
imposition.value AuthorityName trl_sale_tax_lineitm.aut For Canada contains
hority_name GST/HST.
jurisdiction.jurisdiction AuthorityType trl_sale_tax_lineitm.aut NA
Type hority_type
TaxInfoResponse
Vertex object Xstore notes
jurisdiction.jurisdiction TaxLocationId trl_sale_tax_lineitm.tax This fills tax modifiers
Id _loc_id tax_loc_id with the
external Tax
Calculation Service
jurisdiction id to ensure
the uniquess of tax
group rules
jusrisdiction/authority.
filingCategoryCode TaxType TaxGroupRule.TaxType Fixed to
dtv.pos.register.tax.Tax
Type.SALES.
For Canada for tax
which belongs to
COUNTRY jurisdiction
type based on
filingCategoryCode is
present or not, it will
return TaxType.HST or
TaxType.GST.
For tax which belongs
to PROVINCE
jurisdiction type it
returns TaxType.PST.
#################################
...OMITTED MULTIPLE LOOKUP RESULT
#################################
]
},
"meta": {
"app": "vertex-ws.war v9.0.11.2.6",
"timeElapsed(ms)": 31,
"timeReceived": "2023-03-16T10:01:23.593Z"
}
}
Logging
Vertex integrations takes advantage of the base service framework capabilities.
log4j2.xml
<Logger
name="dtv.servicex.impl.WSLoggingHandler.VERTEX_TAX_AREA_LOOKUP_S
ERVICE" level="trace" />
<Logger
name="dtv.servicex.impl.WSLoggingHandler.VERTEX_CALCULATE_TAX_SER
VICE" level="trace" />
Based on how much information (size) you want to log of the entity you need to set the
above logging level to debug or trace for your services ID.
In order to log the message entity you need to change the services bean configuration.
There are two properties you can set on your service spring bean:
logEntity: If set to true, the system will log the message entity content. This boolean
property value is mapped into Vertex spring beans to a system.property that can be
defined in the xstore.properties to set the value instead of overriding the spring bean
definition:
xstore.properties
oracle.retail.xstore.vertex.logEntity=true
logMaxEntitySize: If not defined, the system will use the default based on log4j logging
level. If defined, the system will override the default max entity size.
Additional debug traces about tax calculation process can be obtained by enabling these
logging categories:
log4j2.xml
<Logger name="dtv.pos.register.tax.ext" level="debug" />
<Logger name="oracle.retail.xstore.tax.ext" level="debug" />
Store Configuration
If you are using standard basic authentication, that is :vertex configuration path only,
valid service credentials must be configured in the sec_service_credentials table for
VERTEX_CALCULATE_TAX_SERVICE and
VERTEX_TAX_AREA_LOOKUP_SERVICE. Implemented as a preflight check.
If you are using OAuth2 authentication, that is :vertex:vertex/oauth2 configuration path,
valid service credentials must be configured in the sec_service_credentials table for the
service id configured as parameter of the dtv.pos.services.CredentialsTokenManager
bean class in the services-vertex.xml (VERTEX_TAX_SERVICES). Implemented as a
preflight check.
A valid store location address must be configured for the store. This is validated through
the Vertex Tax-Area-Lookup API. A location is valid as long as the Vertex service can be
contacted and returns at least one tax area ID for the configured address. Implemented
as a preflight check.
Tax locations for a current store needs to be configured, note that this is a mandatory
field in the Xstore Office store configuration. It is already part of the base preflight
checks.
No active tax group rules for the current tax location have to be found. Implemented as a
preflight check. Ideally the tax_tax_group_rule and tax_tax_rate_rule tables should be
empty but it is not a constraint as long as no tax rates are active.
A legal entity must be defined for the current store, the
loc_legal_entity.external_tax_system_company_id is identifying the Vertex Tax Payer.
Implemented as a preflight check.
The DisallowCountryChangeForShippingInExtendedTransactions
SysConfig.xml flag must be set to true, this is already set to true in the ":vertex" base
feature config.path.
The ItemReturn---AllowVerifiedReturnChanges SysConfig.xml flag needs to
be set to false, this is already set to true in the ":vertex" base feature config.path.
Overview
This section lists the various Xstore Point of Service configuration files and directories,
along with a brief description of their effect on Xstore Point of Service processing.
Once the customer-specific values for any of Xstore Point of Service’s operations are
defined, they can be specified in an XML configuration file. Each XML configuration file
contains the settings for some aspect of Xstore Point of Service’s operation or function.
Within each configuration file, each individual property of that function is paired with
the customer-specific value to be used.
system.properties
When Xstore Point of Service starts, it opens the system.properties file, which
contains the directory path where the configuration settings are stored. These settings
affect many aspects of Xstore Point of Service’s operation, such as data sources, operating
processes (business logic), and hardware configurations.
In Xstore Point of Service, each brand, store, and terminal can be uniquely identified.
This enables configuration settings to be applied at the appropriate level according to
business or legal requirements. An example of this identification is seen here:
#----------------------------------------------------------------
----------------------------
# SYSTEM IDENTITY
#----------------------------------------------------------------
----------------------------
dtv.location.organizationId=1000
dtv.location.storeNumber=101
dtv.location.terminalNumber=1
dtv.location.primaryTerminalNumber=1
dtv.location.CurrencyId=USD
dtv.location.device.formfactor=desktop
SystemConfigMetadata.properties
To use the Xstore Office SysConfig GUI, the SystemConfigMetadata.properties
file must be maintained along with all SysConfig.xml changes.
The SystemConfigMetadata.properties file contains critical information needed
by the Xstore Office System Config GUI. This file is a counterpart to Xstore Point of
Service's SysConfig.xml file, which is the main file for storing system configuration
settings.
As there are multiple copies of SysConfig.xml in Xstore Point of Service which support
base configurations and customer overrides (via the Xstore Point of Service "config path"
system), there are also multiple SystemConfigMetadata.properties files.
However, unlike SysConfig.xml, these metadata files are not governed/configurable by
config path. In fact, there will only ever be exactly two copies of
SystemConfigMetadata.properties:
- dtv/res/config/SystemConfigMetadata.properties - The base
definition found in config.jar, and companion to SysConfig.xml in the same
location.
- version1/SystemConfigMetadata.properties - The Operations team's
"overrides", typically found in the customer jar. All customer-specific overrides
for metadata must be put into this file.
Metadata Information
The metadata provides the following additional information for each configurable item
in SysConfig.xml:
• Category - Each configuration is assigned to a single category. Configurations in the
GUI are organized/grouped by this category. This category is separate from the
structure imposed by the SysConfig.xml file itself. Categories can be altered at any
time and are also I18N translatable.
• Label - Each configuration has an I18N descriptive title, often presented in the form
of a question (ex. Allow Cashier to be Eligible as Commissioned Associate?).
• Description - This is an I18N long description (generally a paragraph) that details
the meaning, impact, etc. of each configuration.
• Order - This is a way to optionally force the order in which each group of
configurations within a given category will be sorted in the GUI. Configurations are
sorted first by this order setting, and then alphabetically.
• Module(s)/Tag(s) - each configuration has at least one (and possibly more)
associated modules/tags. These modules/tags can be simply thought of as
"keywords". The GUI uses this information to provide a filtering function that lets
the user zero-in on configurations which are pertinent to the task at hand (or weed
out configurations which are not pertinent).
• Datatype - Although each configuration in SysConfig.xml is already associated to a
"dtype", these datatypes are very rudimentary and are intended to be a convenience
for Xstore Point of Service developers. In comparison, the metadata Datatype has
additional capabilities that allow the GUI to much more strictly control and validate
the user's input.
• Privilege - This is an optional attribute that refers to an Xstore Office (not Xstore
Point of Service) privilege. When a configuration is associated to an Xstore Office
privilege, the Xstore Office user's role must have that privilege in order for that
configuration to be available in the System Config GUI. In base, most configurations
are unprotected (i.e. have no associated privilege) and are therefore available in the
GUI; however, a small number of configurations are intentionally hidden. If needed,
privileges may be added to prevent certain types of Xstore Office users from
accessing certain system configurations. (For example, for chains that have
"franchisee" stores, where a franchisee store needs to be able to make certain system
configuration changes, but must not be allowed full access to all system
configurations).
SystemConfigMetadata.properties sample
_Store---SystemConfig---ItemSale---
RequireItemVoidReasonCode.label=Prompt For Line Item Void Reason
Code?
_Store---SystemConfig---ItemSale---
RequireItemVoidReasonCode.description=Determines whether or not
the system prompts the associate to select a reason code when
voiding an item.
Store---SystemConfig---ItemSale---
RequireItemVoidReasonCode.datatype=Bool
Store---SystemConfig---ItemSale---
RequireItemVoidReasonCode.category=_sales
Store---SystemConfig---ItemSale---
RequireItemVoidReasonCode.order=0
Store---SystemConfig---ItemSale---
RequireItemVoidReasonCode.tag.1=_sale
I18N Information
The SystemConfigMetadata.properties file is used in two different ways by
Xstore Office. First, it is used by custom code which parses all of the properties and
dynamically constructs the System Config GUI using its information in combination
with the contents of SysConfig.xml.
Also, it is separately loaded using the DtvResourceBundle library, and its contents are
treated as Xstore Point of Service-style I18N translations.
Overview
EFTLink is a middleware application used to communicate with authorization
processors. With EFTLink, the communication protocol and data exchange is handled by
the payment service provider (PSP) instead of Xstore Point of Service. Credit and Debit
messages are supported.
EFTLink B-1
Xstore Point of Service Setup to Use EFTLink
EFTLink B-3
AuthConfig.xml
AuthConfig.xml
The following auth processes are found in config/eftlink/AuthConfig.xml:
EFT_LINK_HOST, EFT_LINK_STORE_SETTINGS, EFT_LINK_CREDIT and auth
request map EFT_LINK.
Parameters in AuthConfig.xml
<Parameter name="deviceCommChannel" value="socket://
localhost:10101"/>
• Defines the port for the secondary channel EFTLink will use to communicate to get
user inputs (EFT_LINK_HOST). For base Xstore Point of Service, the server will
always be 'localhost' since this port is opened on the system where the Xstore Point
of Service is installed.
<Parameter name="communicatorHosts">
<param_value dtype="List">
<Host dtype="String">socket://localhost:<PORT>;timeout=1000
</Host>
• Defines the standard settings Xstore Point of Service will use when supplying the list
of EFTLink hosts.
<Parameter name="displayTimeout" value="1000"/>
• Defines how many milliseconds the EFTLink information messages will display on
the screen.
<parameter name="RequestType" value="PAYMENT"/>
• Defines the request type Xstore Point of Service will use when it sends the
authorization request to EFTLink.
<Parameter name="DisableCashback" value="false" />
• When set to true, this setting disables the cashback functionality in EFTLink.
EFTLink will not give the customer an option to select a cashback during the
authorization. For Xstore, the default value is set to false and for the SelfCheckout
mode the default value is set to true.
TLSEnabled = true
pos1.description = POS 1
pos2.description = POS 2
PEDPoolOneCatchAllChannel0:
• true - to enable the PED pooling support.
• false - for a stand alone mode setup for EFTLink
ServerChannel0 - This is the default base channel of EFTLink.
pos clients - To add a new client, add a new line using the following format:
pos[register rumber].description = [name of the client]
Example:
pos1.description = POS 1
pos2.description = POS 2
pos35.description = Handheld
pos36.description = Tablet
EFTLink B-5
SysConfig.xml
SysConfig.xml
This section describes EFTLink SysConfig settings.
Table B-1 SysConfig.xml
Default
Setting Value Valid Values Description
Processing Overview
1. At tendering, Xstore Point of Service sends an authorization request for the amount
tendered to EFTLink.
2. Xstore Point of Service effectively goes into a listening state waiting for relevant
responses from the EFTLink system.
3. EFTLink sends a request for payment to the payment service provider (PSP).
4. The PSP prompts the customer to swipe their credit/debit card on the PIN Entry
Device (PED).
5. The customer swipes the credit/debit card:
- If the card swipe cannot be read by the PED, then the customer is prompted to
key in the credit card number and expiration date.
- If the card being used requires a PIN, then the PSP will prompt the customer for
the PIN number on the PED.
6. Response from the PSP:
- If an approval is sent from the PSP, an approval will be sent back to Xstore Point
of Service from EFTLink for the amount authorized (partial payment is allowed
for Debit and Credit).
- If a decline is sent from the PSP, the decline will be sent back to Xstore Point of
Service from EFTLink. In Xstore Point of Service the tender is declined and
Xstore Point of Service will prompt for another form of tender.
- If a call center message is sent from the PSP, a call center message is displayed on
the PED to call for verification and to enter an approval code:
* If an approval code is provided, the approval code is entered on the PED
and the approval is sent back to Xstore Point of Service from EFTLink for the
amount tendered.
* If no approval code is provided, then the tender is declined by the PSP and
the decline is sent back to Xstore Point of Service from EFTLink.
7. If EFTLink times out, EFTLink returns the failure to Xstore Point of Service and
displays the appropriate message.
8. Once the tender is approved, the merchant and customer copy of the Credit/Debit
card receipt prints.
EFTLink B-7
Processing Overview
Overview
This chapter contains technical details for the Xstore integration with QAS services,
including Address Verification (REST and SOAP), Email Verification and Phone Number
verification.
Implementation details for each QAS functionality are described below.
Xadmin offers the following features:
• Experian Address Verification (Manual) - for the SOAP version
• Experian Address Verification (Auto) - for the REST version
• Experian Email Address Verification
• Experian Phone Number Verification
Config Paths
For more information about the config paths, see Appendix D: “Xstore Point of Service
Configuration Path”.
</LocationList>
Engine Properties
There are a number of QAS search engine properties that either select the engine or
influence the way the selected engine behaves:
1. QasEngineTimeout (timeout) - The amount of time the search has to perform the
search
2. QasResponseLimit (threshold) - The maximum number of search results to return
3. Engine value(value) - This feature supports two different search engines:
Singleline and Verification; few countries, such as Great Britain work best with the
Singleline engine; all other countries should use the Verification engine.
The first two are independent of the country selected and are stored in a
ServiceHandlers.xml file. The engine value is country dependent and is covered in the
next section.
<bean id="usaQasCountryConversion"
class="oracle.retail.avs.qas.soap.impl.QASCountryConversionBean"
init-method="init">
<property name="countryUNCode" value="USA" />
<property name="countryISOCode" value="US" />
<property name="engineType" value="Verification" />
<property name="addressLinesToLocaleAdapter"
ref="usaAddressLinesAdapter" />
<property name="stateNameToCodeEnum" value="NoReplacement" />
</bean>
There are three additional properties:
1. engineType - This value must contain either "Verification" or "Singleline", which
indicates which engine type is associated with a country. Product values are
"Verification", "Singleline", and "MexVerification".
2. addressLinesToLocaleAdapter - This is a reference to another spring bean.
This bean is responsible for converting a QAS address layout into an
IPartyLocaleInformation (Xstore address) object.
3. stateNameToCodeEnum - This refers to type of state code processing that should
be performed. This will be covered in the next section.
Experain/QAS provides addresses in the form of a series of text lines that contain the
equivalent of address lines, city, state, country, and so on. These lines can be identified by
a label value or by the their position in the list. Customers can request their own specific
layouts. It is possible that customers will have specific address layout requirements for
specific countries. The addressLinesToLocaleAdapter supports the current lack of
a standard layout and possible future customer extension requirements. It also supports
the fact that the "Database Layout" actually turns one of two formats, depending on the
country data set.
Following are examples of the two addressLinesToLocaleAdapter spring bean
definitions available for the "Database Layout":
The DatabaseLayoutToLocaleAdapter class was moved from
oracle.retail.avs.qas.impl.format to
oracle.retail.avs.qas.soap.impl.format package
<bean id="nldAddressLinesAdapter"
class="oracle.retail.avs.qas.soap.impl.format.DatabaseLayoutToLoc
aleAdapter">
<property name="layout" value="Database Layout" />
<property name="cityLabel" value="NEN town/city" />
<property name="stateLabel" value="Province" />
<property name="postalCodeLabel" value="Postcode" />
</bean>
<bean id="altAddressLinesAdapter"
class="oracle.retail.avs.qas.soap.impl.format.AltDatabaseLayoutLa
youtToLocaleAdapter">
getLayout String
containing the
name of the
layout
NoReplacement QAS returns the ISO 3166-2 code; the feature performs no
replacement.
PartialReplaceme QAS returns the ISO 3166-2 code in some cases. The feature attempts
nt to map the QAS value; if not found, it uses the QAS value.
CompleteRepaceme QAS returns values, none of which are the ISO 3166-2 code. The
nt application expects to map all values; if not found, the feature logs a
warning and returns null value in the state field.
Mobile Configuration
The type-ahead feature is available for mobile devices. This function must be configured
in the FieldDefinitionConfig.xml file as shown below:
<Field name="addressLine" type="Search" resource="addressLine" >
<Parameter name="SearchType" value="ADDRESS_LOOKUP" />
</Field>
The search is triggered immediately each time the user types a single character in the
address lookup view.
The configuration file for mobile devices is located in the following directory /config/
config/mobile/forms/ADDRESS_LOOKUP.xml.
</property>
<property name="timeoutSeconds" value="5" />
<property name="statesCountryMap" ref="qasStateCountryMap" />
</bean>
<Region id="America">
<Country code="US" name="_countryUS"
addressVerificationEnabled="true"/>
<Country code="CA" name="_countryCA"
addressVerificationEnabled="true" />
<Country code="MX" name="_countryMX"
addressVerificationEnabled="true" />
<Country code="BR" name="_countryBR"
addressVerificationEnabled="true" />
</Region>
<Region id="Asia-Pacific">
</Region>
<Region id="Africa" />
<Region id="Europe">
<Country code="DE" name="_countryDE"
addressVerificationEnabled="true"/>
<Country code="FR" name="_countryFR"
addressVerificationEnabled="true" />
<Country code="GB" name="_countryGB"
addressVerificationEnabled="true" />
<Country code="ES" name="_countryES"
addressVerificationEnabled="true" />
<Country code="NL" name="_countryNL"
addressVerificationEnabled="true" />
<Country code="IT" name="_countryIT"
addressVerificationEnabled="true" />
<Country code="PT" name="_countryPT"
addressVerificationEnabled="true" />
<Country code="SE" name="_countrySE"
addressVerificationEnabled="true" />
</Region>
</LocationList>
Overview
Xstore Point of Service can be configured to check Xstore Office for updates to its config
path and update configPath.properties accordingly for updates generated by the
Xstore Office Store Personalities feature. (Store Personalities identify a store based on
attributes that define the store and the store's config path). See the Xstore Office User
Guide for more information about the Xstore Office Store Personalities feature and
configuration paths.
• For the desktop application, the global config path properties and the workstation
override property for the specific workstation the system represents are retrieved
from Xcenter and written to the configPath.properties file.
• For the Xstore Mobile server, the global config path properties and the workstation
override properties for the entire range of mobile device workstations are retrieved
from Xcenter and written to the configPath.properties file. The range of
mobile device workstation IDs is defined in the system.properties file using
the properties xstore.location.mobile.workstationId.range.start
and xstore.location.mobile.workstationId.range.end.
The table below contains all available base global config path elements. Each element
indicates the value of the xstore.application.type VM argument that must be
specified in order for the element to apply. The order in which they are listed, is the
order in which they appear in the config path. Elements with an application type
DEFAULT are always included in the config path.
Table D-1 Base Global Config Path Elements
xstore.application.
Type Config Path Entries type Description
xstore.application.
Type Config Path Entries type Description
xstore.application.
Type Config Path Entries type Description
xstore.application.
Type Config Path Entries type Description
xstore.application.
Type Config Path Entries type Description
xstore.application.
Type Config Path Entries type Description
xstore.config.path.global.extensions
Config path global extensions indicate non-standard config directories that are applied
globally and are included in the config path between static retailer global overrides
(version1) and Xstore Office-controlled global overrides (MASTER/DEFAULT). The
config path global extensions are controlled by the
xstore.config.path.global.extensions property in the
configPath.properties file. Since the global extensions property is more of a
hidden feature, the property is not maintainable through Xstore Office and must be set
manually on any workstation that uses it.
xstore.config.path.base.features
Base features represent config path elements that are used to enable a certain
functionality or feature within the application, such as loyalty, a payment processor or
integration with external applications such as Customer Engagement, Order Broker, and
others.
The base features can be enabled and disabled through the Personality Maintenance
feature in Xstore Office. For more information on Personality Maintenance, see the Xstore
Office User guide.
The table below lists all Xstore Point of Service base features that can be enabled and
disabled as well as their corresponding config path entries. The enabled base features are
Loyalty NA :cust/loyalty
Xcommerce NA :xcommerce
Invoice NA :invoice
workstation, each override path property name contains the workstation ID to which it
applies. The primary purpose of workstation overrides is to support profile group/
element pairs that are defined in Xstore Office as part of the profile maintenance. Profile
groups and elements are defined and associated with personalities, landscapes, and
store personalities in Xstore Office and then each register (or mobile server) in a store
downloads its own workstation override config path properties from Xcenter just prior
to startup.
xstore.config.path.workstation.overrides.X
The properties containing the workstation overrides config path are
xstore.config.path.workstation.overrides.X, where X is the workstation ID
to which the property applies. The workstation overrides property only contains the
profile group and element pairs that make up the landscape for a particular workstation.
The following configuration files support workstation-level overrides. All other
configurations will load files only from global config path elements.
• SysConfig.xml
• ActionConfig.xml
• OpChainConfig.xml
• MenuConfig.xml
• PromptConfig.xml
• DataFieldConfig.xml
• forms" directory-based configurations
• FieldLayoutConfig.xml
• FieldDefinitionConfig.xml
• FontConfig.xml
• ListViewConfig.xml
• ContextConfig.xml
• "componentPropertySet" directory-based configurations
• translations.properties
xstore.config.path.overrides.store.Y
The config path property, xstore.config.path.overrides.store.Y, where Y is the store
number, is created. This property contains the profile group and element pairs that make
up the personality for a particular store. The files that are located in any of the config
path entries defined in this property will be loaded at the global (application) level.
If Xstore Point of Service ever used Xcenter to obtain the config path, and the
configPath.properties file contains properties, those properties will continue to be
used, even if updating from Xcenter is turned off. They will no longer be updated from
Xcenter.
Overview
A list of Xstore Point of Service’s root directories and a brief description of the files
contained within them is found in the Xstore Point of Service Directories List section
below.
Directory Description
C:\xstore\config General config space, contains files read into the classpath.
Directory Description
C:\xstore\sequence This directory has two folders that contain the sequence files
used in preflight checks: “active” for active Xstore Point of
Service mode and “train” for training mode. Upon startup
Xstore Point of Service checks a set of sequence files against
values located in the database. If values in these text files do
not match what is in the database, then it will throw a
preflight error, or fix the files automatically if configured to do
so.
Directory Description
Directory Description
Chapter 47- Vertex Added info that Vertex integration can be configured to use both the
Integration Cloud and a local container.
Chapter 18 - Hardware/ added the following settings to the SysConfig Settings in the Xstore
UI Configuration Point of Service Self Checkout section:
• OpenClose---PrintSystemCycleReceipts
• AutoPlaySound---Enabled,
• AutoPlaySound---WaitSeconds,
• CheckSaleComplete---UseSaleCompleteForm,
• Receipts—AllowReceiptNoPrint,
added Audio Files section:
• added note for possible additional accessibility requirements
• Start Button section,
• added SCO Console,
Chapter Change
Chapter 17 – Return added note for MaxDaysAfterPurchase that override prompt will
Transaction occur
Configuration
Chapter 24 - Customer added Promote Deal Engine Integration section and changed
Engagement Cloud Promote Deal Engine to Oracle Retail Promotions Engine
Services Configuration
Appendix D - Xstore added base feature for the Oracle Retail Promotions Engine
Point of Service
Configuration Path
Chapter Change
Chapter Change
Chapter Change
Item Messaging Updated Item Messaging Database Setup section, changed itm_item
Configuration to itm_item_options
Menu & Tab Removed Weather Tab and added ui-beans.xml Spring File section
Configurations Chapter
Chapter Change
Appendix C - Xstore Added IDCS access config path settings for sim,serenade and locate.
Point of Service
Configuration Path
Appendix C - Xstore Added IDCS access config path settings for CE.
Point of Service
Configuration Path
Airside Stores Tax-Free Changed name from “Airside Stores & Tax-Free Transactions” to
Transactions reflect that the section describes only the tax-free transactions
performed at airside stores.
Chapter Change
Airside Stores & Tax- Changed zone_id code to airport_code in the table
Free Transactions loc_rtl_loc.
Removed line saying that transactions cannot be suspended and
resumed in airside stores.
Rewrote section “How tax mode is determined from the flight
information” to reflect changes in 17.0.
Rewrote “Airside Tax-Free Configuration & Setup” section to include
new configurations.
Entire document Removed database tables and Dataloader records. Referred to Xstore
Point of Service Database Dictionary and Xstore Point of Service Host
Interface Guide for the information.
Country Pack Removed information in the “Brazil Country Pack” section and
Configuration added note explaining that Brazil is not supported in 17.0.
Xstore Point of Service Added auth.log file to the table “Xstore Point of Service Log Files” in
Log Files the “Logs Configured/Controlled in log4j2” section.
Corrected table names.
Version 16.0.0.1
Chapter Change
Send Us Your Changed name of Xstore Point of Service for Grocery User Guide to
Comments Oracle Retail Xstore Point‐of‐Service, Lane Checkout User Interface User
Guide.
Customer Engagement Updated URLs for ORCE web services in the example configurations
Cloud Services for the ServiceHandlers.xml file.
Configuration
Version 16.0
Chapter Change
Item and Pricing Removed restriction_category and tare_typecode from ITEM record.
Configuration
Added tare_value and tare_unit_of_measure to ITEM record.
Removed restriction_category and tare_typecode from
ITEM_OPTIONS record.
Added tare_value and tare_unit_of_measure to ITEM_OPTIONS
record.
Removed restriction_category from NON_PHYSICAL_ITEM record.
Chapter Change
Airside Stores & Tax- Removed note indicating that a generic boarding pass must be used
Free Transactions for tax-free shopping by employees or arriving passengers.
Removed zone_id from RETAIL_LOCATION record.
Added airport_code to RETAIL_LOCATION record.
Removed destination_country, destination_eu_code, via_1_country,
via_1_eu_code, via_2_country, via_2_eu_code, via_3_country,
via_3_eu_code, final_flight_eu_code, expiration_date,
destination_airport_name, and employee_flag from
FLIGHT_INFORMATION record.
Removed com_airport_zone_mapping table and
AIRPORT_ZONE_MAPPING record.
Added com_airport table and AIRPORT record.
Xstore Point of Service Corrected image of Xstore Point of Service Management Console.
Management Console
Put domains into correct order.
Removed “AutoLogoutTimer” and “Environment Re-Poll” sections.