Development changes and improvements

If a ticket from the support portal is attached to the work described here below, the ticket number (both development and support ticket number) are listed after the description. If no ticket numbers are listed, then either this change request came from the LS One roadmap and/or backlog or the request came to us through some other channel.
Partner version
Partner version can now be set for Site Manager and POS, which is displayed on the about page. To see more information on how and where to set the partner version click here.
Demo data
Data packages can now be imported from an external folder located in ProgramData\LS Retail Default Data. The folder is automatically created when installing Site Manager or when opening the Insert default data dialog.
A new permission Import data packages needs to be granted for the user to be allowed to import default data. (ONE-8200, LSTS-1912)
The tool that has been used to create the demo data packs in LS One has now been rewritten to make it more user friendly and so that the LS One partners can use it for their own data packs. Information on how to use it can be viewed in the LS One development help. This tool is part of the LS One development pack.
Replication actions are no longer created when inserting demo data into Site Manager.
Some typos where fixed in various data in the demo data package
The SAP B1 touch button menus and layout have been removed from the standard demo data package and is now only a part of the SAP Business One data package.
In the 2017.2 SP1 the item search buttons in the POS layouts ran an external plugin which was missing from the install. This has been returned to the normal Item search operation.
Quotes configurations has been added to the demo data package
User management
In previous releases of LS One the functionality around creating a unique STAFFID for each user that was created was not done properly i.e. the STAFFID was set as the login value. If the user was then deleted and another created again with the same login then the STAFFID was created with the login value and a number added as a suffix. When this happened the connection between the USER table and RBOSTAFFTABLE became disconnected which meant that configurations in the user profile were getting lost. A similar thing happened also if the login value had more than 10 characters.
In this release when a user is created the STAFFID is a numbersequence value and has no connection any other value entered when the user is created, and the connection between the STAFFID and the login value has been completely disconnected.
What this also means is that if users have been created in an LS One database using an old login value and/or login value longer than 10 characters. Those users need to be looked at specifically as any user profile configurations can be lost during the POS processes. This can effect the max return and max discount value configurations, which store the user is assigned to and all other configurations on the user profile
Standalone / Is independent
The Is independent property on the terminal card has been removed and all code using this property has been removed.
This property was called Standalone in the LS One code. All the Standalone functionality was already marked as obsolete some versions ago but the code had not been removed.
Changes that were done:
- PosisCustomerTransaction table was only used for standalone functionality so the data providers and business objects associated with that table have been removed. The extended descriptions for the table in the SQL server have been updated but the table remains in the database.
- Standalone property on Terminal has been marked as obsolete
- Standalone field in TerminalTable has been marked as obsolete
- PosisCustomerTransaction table has been marked as obsolete
- Customer Transactions, Customer balance report and Customer transaction report operations now call new functions in the Customer service but those functions have not been implemented in the standard functionality and will need to be customized.
- Customer service description in development help was updated
- Field help for terminal view was update

The information previously printed or displayed in the Customer operations mentioned above can now be viewed in the Edit customer dialog on the POS
Tax exemption operation
The code for tax exemption functions have been moved to the Tax service so that they can be customized by partners.
Description of the tax service in the development help has been updated accordingly
Triggers
PostEndTransaction trigger is not called from Print gift receipt or Return transaction operations directly anymore. The trigger is called once the POS clears and saves the return transaction as with any other transaction.
The Price override operation was calling the PreLineDiscountAmount trigger not the PrePriceOverride trigger it was supposed to call. This has now been fixed.
Pre and post triggers for change unit of measurement operation have been added.
PreSale trigger was not displaying a message dialog even if the PreTriggerResult was configured to do so. This has now been fixed.
Price ID in sales prices
When an item is sold in the POS it selects a price to sell the item from various different prices and configurations that can be set up in the system. By adding a Price ID to the sales prices the system can now tell exactly which price was selected and what price type it was; Base price, Sales price or Promotion price.
In some ERP system the prices have a specific ID and when integrating with such an ERP system the LS One system has often lacked this ID for when the sales are being posted back to the ERP system. By adding this functionality, the system not only supports these types of ERP system but also makes it easier to report on KPI's around which prices are being used and when.
Site Manager framework changes
A new View attribute called Copy Entity has been added to the framework which allows each view to have an action called Copy ID in the context bar on each view page. When selected it can copy the current entity (or unique) ID (or any other value) to the clipboard. The action description can also be changed to be any text but the default functionality is to add an action called Copy ID to the view.

This new view attribute has only been added to the framework but not implemented in the Site Manager. So this option will not be available in any views in this release. But partners can use this attribute in any views that are added or being customized
Retail item hierarchy
Functions IsDeleted and Undelete added to data providers for:
- Retail group
- Retail department
- Retail division
Fields for Created and Modified (date time) added to same objects and database tables
Database changes

To view all database changes the update scripts for this release can be reviewed in the Development pack. The update scripts can be found at ..\DevPack\Source\Core\Datalayer\DatabaseUtil\SQLScripts\Update Database\LS One 2019

When the database is updated through the DatabaseUtil.dll the POSISINFO table is now also marked with the date and time when the update occurred.
Here below are examples of some of the changes done but by no means all the database changes:
- Stored procedures spPOSGetItemSalesOrReturns_2_0 and spPOSGetItemSalesOrReturns_1_0 are no longer used and have been removed. Their logic has been rewritten in code using the data layer.
- Added the column INVENTITEMBARCODE.DELETED to mark barcodes as deleted. Default value is false (0)
- Added an index to INVENTJOURNALTRANS.LINENUM to improve performance when inserting records via data layer
- New configuration fields for the Integration framework added to POSTRANSACTIONSERVICEPROFILE
- TAREWEIGHT field has been added to tables RETAILITEM, RETAILGROUP and RBOTRANSCTIONSALESTRANS
See chapter Transaction table changes for changes done to the transaction tables

The primary key of the INVENTJOURNALTRANS has been changed to ignore duplicate key insertions in order to optimize the Excel import when there are existing rows with the same key. This affects all insert operations on this table.
Transaction table changes
Here below is a list of all changes done to the transaction tables. In some cases the description references a more detailed description of the changed functionality.
Functionality | Description |
---|---|
Price ID |
New columns have been added to RBOTRANSACTIONSALESTRANS table to store the ID of the price used for the item sale and what type of price it was. PRICEID - is the ID of the price. This ID has been added to the sales price functionality of the Site Manager. This ID is created when a new price is created and is not visible to the user. PRICETYPE - tells you what type of price was selected for the item i.e. Base price (0), Sales price (1) or Promotion price (2) For more information on the reason behind this change see chapter "Price ID in sales prices" |
Tax exemption code |
RBOTRANSACTIONTAXTRANS.TAXEXEMPTIONCODE field has been changed to have maximum 100 characters |
Tare weight | A new column has been added to RBOTRANSACTIONSALESTRANS to save the tare weight of the item (if any) |
Original number of transaction lines | A new column added to table RBOTRANSACTIONTABLE called ORIGNUMOFTRANSACTIONLINES (see more information in section "Number of transaction lines" here below on the functionality around this field) |
Float entry |
A new column has been added to the RBOTRANSACTIONTABLE called SUBTYPE. The default value is 0. Right now only the Float entry transaction uses this property: Declare start amount => SUBTYPE = 0 Float entry => SUBTYPE = 1 |
Replication counters | An index was added to replication counter fields in all transaction tables |
Number of transaction lines
When the POS is saving the transaction to the database it now counts how many lines are in total on the transaction i.e. item lines, payment lines, tax lines and etc. The total number of lines is then saved with the transaction header to a property called Original number of transaction lines. When the POS does this count, it also calls a function in the Transaction service where any additional lines created by a customization can be added to the total. For more information on the function and functionality required please see our development help.
This functionality was added so that an integration to a 3rd party ERP system can confirm that they have all the lines that belong to a transaction before including it in any calculations or functionality f.ex. sending sales information to the ERP system.

When an existing customer is updated to use this release the existing transactions are not updated with this value but a stored procedure has been created, and is included in the database update, that can be run manually to calculate this value for old transactions if needed. Please see the development help topic for more information.
Pull from POS functionality changes
The code that surrounds the Pull from POS replication functionality, configured on the Functionality profile, has been moved to the DD Service. The function RunPostTransactionJob is now called from the Transaction service when concluding a sale.
This functionality has been changed to not wait for the scheduled jobs to finished before allowing the user to log off.
Scheduler improvements
An interface has been added to the LSOne.ViewPlugins.Scheduler plugin, so that Scheduler External Commands can implement a user interface. Click here for more information.
A topic has been added in development help on how to implement External command jobs for LS Retail Data Director Scheduler.
The size of the fields for the filters that can be set on subjobs have been increased in the database to be nvarchar(max) so there is no limit to the length of the filters
DD plugin parameters are no longer limited to 60 characters.
Stock counting improvements
In this release we have gone through the entire stock counting process to make sure that all processes are streamlined and are running as fast as possible. The user interface and the processes have, in most cases, not been changed but the underlying functionality has been streamlined considerably.
What this means for the development environment is that the interfaces around the stock counting functionality both in the Site service and the services around the inventory (Inventory service and Site service service) have been changed considerably. Now all work is done server side and in some cases done by stored procedures not in the data layer.
In some cases the interfaces of the functions have been changed by changing a long line of parameters to a parameter that is a class with properties so that the parameter is not a long list but rather an object that has many properties. An example of this would be the SearchJournalTransaction function in the Site service.
The following methods from the Site Manager plugin used in stock counting have been made obsolete but in most cases other functions have been created that do the same work: GetStockCountingJournalList, GetInventoryJournalTransactionsForStockCountingJournal, DeleteJournalTransaction, JournalHasUnpostedLines, PostStockCountingJournal, PostStockCountingLine, SaveJournalTransactionsItemList.
Site service logging
The Site service now logs everything that it does. Most of the functions also log the parameter values that are sent into the functions. The logs are saved to a file where one file is created per day. These files are saved to the Site service ProgramData folder usually under the path <C:\ProgramData\LS Retail\LS One Site Service\Logs>. Each month gets it's own folder and in each month's folder there is one file per day.
Each log line includes information about date and time as well as the source of the information, thread number, and then the log line itself.
Each function starts with a string of "---->>>" and then the function call ends with a line of "=====".
Depending on the functionality some of the functions will log additional information during it's run, but others will only have the start and end string with information about parameter values at the most. For example stock counting functions will log down if the stock counting journal that is being posted doesn't exist and therefore the posting is cancelled. The user posting the journal will of course also get a message regarding this issue but for better information during investigation into any issue the function does log this down as well.
Any exceptions that are thrown are also logged with the inner exception information if available.
There is a new configuration in the Site Service configuration file called "Days to keep logs" which decides how many days of logs the Site Service should retain. The default value is that it will remove any logs that are older than 30 days. This setting can be set in the Configuration dialog on the Site Service profile view.
Also:
Site Service can now process incoming requests concurrently. This prevents time consuming processes from blocking other site service requests.
Address component
The data used by the Address component (used both in the Site Manager and the POS ) to display countries and states has been changed to be completely in the database. Before some of this information was in code
Drop Down EFT module
The Drop down EFT module has been changed to use operation Authorize card instead of Pay card operation. If an existing customer is using this EFT implementation the POS layout needs to be changed to use Authorize card operation
Report Viewer
Report viewer module from Site Manager was updated to version 14, that's compatible with both 2008 and 2016 report schema. (ONE-7430, LSTS-481)
This new version does not require the "Microsoft ReportViewer 2010 Redistributable" to be installed so the latest version of the Site Manager does not install it automatically (as it did before).
Other improvements
Issue number | Support issue | Description |
---|---|---|
ONE-8151 | Added a new method in the Event Service that allows the customization of the terminal and operator status bar on the POS. See PreRefreshStatusStrip information in the Event service information in the development help | |
ONE-7416 | LSTS-362 | Added barcode customization for UPC Type 2 random weight barcode. This requires a mask with format 2IIIIIXPPPPM. |
ONE-8007 | LSTS-2602 | The User job in the replication data has been fixed. Action jobs were added for missing tables. |
ONE-9486 | Replication data: The pull from POS job now uses the subjobs from the Transactions from POS job rather than using linked tables. | |
ONE-8740 | The POS settings job in replication data package now only contains action jobs. | |
ONE-8007 | LSTS-2602 | The User job in the replication data has been fixed. Action jobs were added for missing tables. |
ONE-9422 | LSTS-5353 | A bug was fixed where names containing apostrophes were not being replicated correctly (the "O'Neal problem") |
ONE-9282 | LS One installers are now build using Inno Setup 5.6.1(u) so that they can be started from a directory with unicode characters in its name | |
ONE-8837 | LSTS-3517 | When the LS One setup includes a Head office and Store level with databases at all levels, and the user's password was changed at Head office level then in some cases the user had to change their password again and again. This issue has now been fixed |
ONE-8992 | LSTS-3889 | Fixed a bug where a SQL connection was not closed when connecting to the Site service. |
ONE-9305 | A topic was added to the online help on how to be able to connect to the Site Service from the Site Manager and LS One POS without running them as admin. See new topic here | |
ONE-9188 | LSTS-4670 | A bug has been fixed in Site Service where connection to database was initialized using incorrect settings. |
ONE-7982 | LSTS-1608 | Added CreatedDate and ModifiedDate columns to RETAILITEM table |
ONE-8064 | LSTS-1701 | Issue fixed with wrong data type of parameter in spSECURITY_DoesUserHavePermission_1_0 |
Power BI template has been created and published in the online help | ||
ONE-8009 | LSTS-1647 | Fixed an issue where Comment and Invoice Comment would not be populated correctly on a transaction when it was being recreated by PopulateTransaction functionality |
ONE-9042 | LSTS-2515 | In some cases the POS would hang when the user is logging out and logging back in again. This was traced to the unloading and loading of the OPOS devices, specifically the printer. It seems that in some cases the OPOS printer does not like it when it is being unclaimed/claimed often. To prevent this from happening the POS does not unload the OPOS devices at logout but if, for whatever reason, the devices need to be unloaded and loaded again the user can select an option under Settings in the POS logon dialog to restart all OPOS devices at next logon. |
ONE-9252 | If the regional settings are configured to have the decimal symbol the same as the digit grouping symbol, the POS cannot be started. A dialog will be displayed with an explanation of the reason why the POS cannot be started | |
ONE-9171 | LSTS-4462 | Additional ExtraInfo variables added to the Receipt designer for header, lines and footer |
ONE-9578 | The TransactionServiceProfile views were renamed to SiteServiceProfile. And the online help calls to these views were fixed. | |
ONE-9611 | Fixed an issue where the layout customization dialog would remain open after logging out of the POS. | |