This document contains information about the status of software development issues.
The following is a list of important information that you must read before you upgrade.
For data security, you should back up your system database and the files in the installation directory and its subdirectories if you are updating an existing installation.
The following is a list of the required software to run the system:
Microsoft Windows 2000 Server or XP Professional
Microsoft SQL Server 2000 or later.
The following table shows the required hardware to run the system at a central or remote location.
Note: All systems must support DirectX and 256 color video at a minimum or the system cannot run.
Central Location Recommended |
Remote Location Recommended |
|
CPU |
Pentium 4 HT Server Class PC |
750Mhz or faster Pentium class |
RAM |
4GB DDR |
512MB |
Hard Drive Free Space |
50MB for software + 10MB per location |
50MB |
Hard Drive Interface |
SATA IDE Drives Multiple HD configured in a RAID 0 (for performance) or RAID 5 for fault tolerance and performance |
SCSI U2W or ATA/66 |
Video Card |
1024x768, 256 colors, and DirectX |
1024x768, 256 colors, and DirectX |
See Installing EDM for step-by-step instructions for installing the system.
This section describes how to update a system running EDM version 6.0 or later to a newer version. If you have EDM 3.1 or later installed, see Upgrading from EDM 3.1 or Later If you have EDM 3.0.x installed, see Upgrading from EDM 3.0.x. If you have EDM 2.9.x or earlier installed, see Upgrading from EDM 2.9 or earlier.
To upgrade a central EDM 6.0 or later installation, take the following steps:
Create an install directory, such as C:\EDM_INSTALL.
Download the EDM CD Image from https://ftp.xpient.com.
Extract the archive file to the install directory.
Stop the Apache Tomcat service
Create a backup directory, such as C:\EDM_BACKUP.
Backup your EDM folder on the central server (usually C:\apache-tomcat-6.0.18\webapps\edm).
Backup all the central EDM databases referenced in your central config.xml file (usually called EdmWebHQ).
Copy system.jar from the EDM_INSTALL\data\lib folder to C:\apache-tomcat-6.0.18\webapps\edm\web-inf\lib
Copy mail.jar from the EDM_INSTALL\data\lib folder to C:\apache-tomcat-6.0.18\webapps\edm\web-inf\lib
Copy edmclient.jar from the EDM_INSTALL\data\lib folder to C:\apache-tomcat-6.0.18\webapps\edm
Copy jcalendar.jar from the EDM_INSTALL\data\lib folder to C:\apache-tomcat-6.0.18\webapps\edm
Copy loginPage.jsp from the EDM_INSTALL\data\config\common folder to C:\apache-tomcat-6.0.18\webapps\edm
Copy mail.properties from the EDM_INSTALL\data\config\common folder to C:\apache-tomcat-6.0.18\webapps\edm\web-inf\lib
Restart the Apache Tomcat service from the Start menu by using Control Panel - Administrative Tools - Services.
Test the installation by opening your browser to: http://localhost:8080/edm (if you are not on the same machine as the server, replace localhost with the server name).
To update a remote site running EDM 6.0 or later take the following steps:
Determine your installation directory (dir). By default, the installation folder is C:\EdmWeb.
Backup dir\lib\system.jar to a different folder (don't just rename it or it will still be used).
Copy the new system.jar to dir\lib.
This document describes how to update a EDM version 3.1 or later to a newer version. If you have EDM 3.0.x installed, see Upgrading from EDM 3.0.x. If you have EDM 2.9.x or earlier installed, see Upgrading from EDM 2.9 or earlier.
To upgrade a central EDM 3.1 or later installation, take the following steps:
Create an install directory, such as C:\EDM_INSTALL.
Download the EDM 6.0 CD Image from https://ftp.xpient.com.
Extract the archive file to the install directory.
Stop the Apache Tomcat service
Create a backup directory, such as C:\EDM_BACKUP.
Backup your EDM folder on the central server (usually C:\jakarta-tomcat-5.5.7\webapps\edm).
Backup all the central EDM databases referenced in your central config.xml file (usually called EdmWebHQ).
If you have modified the Tomcat users file to provide access to the Tomcat Manager or for other reasons, copy the jakarta-tomcat-5.5.7\conf\Tomcat-users.xml file to the backup directory.
Uninstall Apache via the Uninstall.exe in jakarta-tomcat-5.5.7 or Add/Remove Programs in the Control Panel.
When prompted to delete the contents of jakarta-tomcat-5.5.7, answer No.
From the install directory, run the batch file that most closely matches your application version. For example, if you are running IRIS 3.5.7 or later with LaborPro, run setup_central_iris_3.5.7_laborpro_2.6.2.bat.
Stop the Apache Tomcat service.
Copy the files in the EDM_BACKUP\WEB-INF\Classes folder EXCEPT APP_???.XML and MENU_???.XML to C:\apache-tomcat-6.0.18\webapps\edm\WEB-INF\classes
Copy and overwrite the following folders and their contents (if applicable) from the EDM_BACKUP directory to the C:\apache-tomcat-6.0.18\webapps\edm folder:
EDM_BACKUP\IRIS
EDM_BACKUP\Incoming
EDM_BACKUP\Outgoing
Copy the following files (if applicable) from the EDM_BACKUP directory to the specified directories:
EDM_BACKUP\System.policy to C:\apache-tomcat-6.0.18\webapps\edm\
EDM_BACKUP\Tomcat-Users.xml to C:\apache-tomcat-6.0.18\conf\Tomcat-Users.xml
Edit the C:\apache-tomcat-6.0.18\webapps\edm\WEB-INF\classes\config.xml and replace C:\jakarta-tomcat-5.5.7 with C:\apache-tomcat-6.0.18
Restart the Apache Tomcat service from the Start menu by using Control Panel - Administrative Tools - Services.
Test the installation by opening your browser to: http://localhost:8080/edm (if you are not on the same machine as the server, replace localhost with the server name).
Upon successful load, you will be prompted with an "Invalid License" error. You will need to provide the error information to your Xpient representative to have a new license generated.
To update a remote EDM 3.1 or later installation, take the following steps:
Determine your installation directory (dir). By default, the installation folder is C:\EdmWeb.
Backup dir\lib\system.jar to a different folder (don't just rename it or it will still be used).
Copy the new system.jar to dir\lib.
Install Java 1.6.0_07 by extracting the jre1.6.0_07.zip file included in the EDM CD Image into the installation directory.
Modify go.bat to change the path to Java.exe to C:\EdmWeb\jre1.6.0_07.
If EDM 3.0.x is already installed, take the following steps to upgrade to EDM 3.1 or later:
Copy the updated system.jar over the existing one in the installation folder.
Copy the updated edmclient.jar over the existing one in the installation folder.
Copy the updated app_appname.xml over the existing one in the installation folder.
Copy the appropriate conversion file (convert_appname_version.xml to the installation folder containing config.xml.
If EDM 2.9.x or earlier is already installed, contact your vendor for installation instructions.
The following sections describe the enhancements and fixes made in each version.
Java 1.8 will be installed alongside EDM by default, so if you use the installation program, you should be fine. This was necessary due to Oracle discontinuing security fixes to older Java libraries, which have been retired. If you just upgrade the JAR files at the store without using the installation program, you must also upgrade Java to the latest version. You may also need to change your end of day scripts to use the correct version of Java, if you use a different version of Java than what is shipped with EDM. This can be accomplished by using the new File Sharing and Server Text File editor functionalities of EDM.
This release was tested with Java version 1.8 update 60.
Authentication is now done from a separate database. All users are migrated from the company database into a new authentication database named "auth" by default.
This database contains the mapping of the users to the companies that they have access to, and is maintained by the upgraded User editor. This means that only 1 user record exists, and that a user with access to multiple companies no longer needs to change their password in each separate company.
When the authentication database is initially created, if there is a user record in 2 or more companies with different passwords, only the first user record is created. If you have multiple companies in your EDM server, check the log file after initial startup to see if there were any users with this scenario.
The User editor has been upgraded and now supports editing all users in any company, as long as the current user has access to the company and the user. If the current user has access to only 1 company, the editor hides UI controls that are only pertinent to multiple companies. RESTful API
There is a new API that can be used to authenticate with XCM. You can read more about it here.
The Bulk Inserter logic that EDM uses to insert a lot of records quickly into a SQL Server database has been upgraded to be faster by using the "Insert into tbl (col1, col2, col3) values (va1, val2, val3), (val4, val5, val6), (val7, val8, val9)" format. This allows SQL Server to create a plan for the inserts and minimizes the number of batches and transactions that are created.
The IRIS menu editor menu buttons only update the sequence numbers when absolutely necessary, which eliminates the number of updates that are sent to remote sites and minimizes the threat of packages released at different times updating the wrong menu buttons.
Checkboxes are now utilized to set which day of the week a discount is valid on the Discount editor form.
Importing transactions from a file now creates the associated package and will also populate the default sites from what was specified in the import file. This means that you can bring up the package and all of the sites that had imported transactions will be selected by default when the site selection screen is shown.
The following changes were made in this release.
This release was tested with Java version 1.8 update 40.
The following changes were made in this release.
The EDM Signing certificate was updated to SHA256 with RSA security and is valid through March 2018.
The IRIS Config Groups editor is used to manage and edit IRIS INI files from a central location.
See editIrisConfigGroups function documentation for details.
The server text file editor allows the end user to select a text file on the server, edit it, and then update it on the server.
See editServerTextFile function documentation for details.
The state of the "Show Detail" checkbox is now restored after editing a tax rule.
Fixed priority and sequence # assignment to new tax rules and to existing tax rules added as a top level tax rule. They now match the numbering of the original tax rules editor.
The following changes were made in this release.
Creating new conditional tax rules was fixed.
The following changes were made in this release.
Delete a row or rows from a table for a given list of sites that match the given columns and values in the table with the given name. For example, when a form uses addRow() to add a row in a table that is not part of the form, it should use deleteRow() to remove the row from the other table when the form's data is deleted by the user.
deleteRow( 'IRIS_dbo_Table', getNamedControlValues( 'Id� ), getSelectedSites() )
See deleteRow function documentation for details.
The effective date was still being set when inserting new transactions into the audit trail. This has been fixed.
The following changes were made in this release.
Editing a Tax Rule Condition no longer changes the underlying Tax Rule record's Active state. The sequence numbers of the Tax Rule Conditions are now set properly when adding an existing Tax Rule as a condition. Fixed interaction with the drop down controls when using both the keyboard and the mouse. Changed some of the text on the labels in the Tax Rule Condition form to better reflect that a condition is being edited.
The web services that get changes since a certain date (audit/changes) and that get a list of tables that have changed since a certain date (audit/changedTables) have been changed to use the new DeployDate column in the audit table to determine if a change has been deployed since a certain date. The deploy date is null for open transactions. When a transaction is committed, the deploy date is set to either the current date/time or the transaction's effective date/time, whichever is greater. This resolves the issue that occurred when users created a transaction one day then committed it the next day. When requesting changes at the end of the first day the transaction was ignore because it was not committed. When request changes at the end of the second day, the transaction was being incorrectly ignored because its effective date was earlier than the date of the previous request for changes.
The effective date is not updated when transactions are committed, only the deploy date is updated.
Fixed the Menu Bar option on the menu displayed when a user right-clicks on the IRIS Menu Editor so that it hides and displays the property window correctly.
The following changes were made in this release.
A new Tax Rules Editor has been created to manage taxes for IRIS. On new installations the editor can be opened by clicking POS - Tax Rules. If it is not on your menu, you can add it by creating a menu item where the action is 'editIrisTaxRules()'.
Improved the performance of rolling back transactions when sending a table refresh or when getting the current data values in response to a web service call.
When the system is set to FINER logging to log all SQL statements, the ID of the user that initiated the query is now logged. This was done to help identify users who need training to avoid unknowingly running queries that adversely affect performance. For example, opening the CDMAudit table by selecting Application - Tables - CDMAudit then clicking a column heading to sort the data can cause performance to suffer if there are millions of rows in the audit table.
Users can now connect to MS Access databases using the JDBC-ODBC bridge instead of the older ODBC connection which is more flexible and works with both 32 and 64-bit operating systems. To use the JDBC connection to Access set the data source type in config.xml to ACCESS_JDBC and set the connect string like this example:
<systemDataSource name = "EdmWeb" version = "1" type = "ACCESS_JDBC" connect = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\EdmWeb\EdmWeb.mdb" database = "C:\EdmWeb\EdmWeb.mdb" server = "localhost"/>
Made some minor adjustments to the user interface to support changes in Java 8 while remaining compatible with Java 7. When running Java 8 in the browser, the "Find by" combo boxes on forms did not move to the selected row when the enter key was pressed, right-clicking a button in the menu editor did not display the popup menu, and moving and sizing menu buttons did not work properly.
The following changes were made in this release.
Changed the web services that get changes and that get changed tables since a specific date to use the transaction date instead of the effective date if the effective date is null or is less than the transaction date.
Fixed retry timeout when an error occurs in the JMS receive listener so that it resets to 0 after a successful connection instead of using the next higher timeout value. Previously, when a retry failed the timeout was doubled to avoid sending to many connection requests but when a retry succeeded the retry timeout was not reset to 0 so the next failure was waiting too long before retrying.
Changed registering lock ID's in the CDMValue table to be company-specific so that, if there are multiple companies on the server, each company registers its own lock ID's and removes them if they exist at startup. This fixes the problem of a lock row being left in the ValueDao table in the second company that is not deleted during during startup by the lock ID registration process and causing errors when the system tries to get the lock.
Fixed the SendEvaluateTransaction to prompt for the sites and package only if the sites and package were not specified in the function parameters.
Fixed the sendSynchronizeDirectoryTransaction to prompt for the sites and package only if the sites and package were not specified in the function parameters.
Fixed a problem with the Value Popup window causing the setting to not be saved. It affects both the standard forms and the Micros button editor which uses the Value Popup window for prices.
Change the system initialization routine to just log a warning when an error occurs while processing an onStartup expression for one of the companies. This will allow the system to finish its initialization process and be available for users instead of not allowing users to access the system until the onStartup expression error is corrected.
Change the addProcessReceivedTransactionsListener function so that if errors occur during the initial transaction processing, they are logged but the error does not prevent the listener from being added.
Changed the process that loads transactions from the audit trail to log a warning and ignore any columns that are not in the table schema. The will enable the transaction processing to proceed instead of preventing it from completing altogether.
The setConfigProperty function enables callers to set the value of a property in the config.xml file. For example, to set the awsCredentials property to the encrypted AWS credentials call:
setConfigProperty( 'awsCredentials', 'myencryptedawscredentials' )
See setConfigProperty function documentation for details.
The fileExists function returns true if the given file or directory name exists. For example:
fileExists( 'myfile.txt' )
See fileExists function documentation for details.
The addTransactionsProcessedListener function evaluates an expression whenever transaction processing completes. This function is normally called in the onStartup property of the configuration to cause the system to do something every time transactions are processed. For example, to open Notepad after transaction processing is complete call:
addTransactionsProcessedListener( 'runApp( ''notepad.exe'', false )' )
See addTransactionsProcessedListener function documentation for details.
The removeTransactionsProcessedListener function removes a listener that was previously added with the addTransactionsProcessedListener function and the given expression. For example, to remove a listener that opens Notepad after transaction processing is complete call:
removeTransactionsProcessedListener( 'runApp( ''notepad.exe'', false )' )
See removeTransactionsProcessedListener function documentation for details.
The getConfigProperty function enables users to get the value of a property in the config.xml file. This can be used to pass values from config.xml to functions. For example, if the encrypted Amazon AWS credentials are in the config.xml in a property called awsCredentials then you can call the Amazon transaction file transfer functions like this:
receiveTransactionFilesFromAmazon( '*', 'mybucket', 'incoming', getConfigProperty( 'awsCredentials' ) )
See getConfigProperty function documentation for details.
The getConfigPropertyWithDefault function enables users to get the value of a property in the config.xml file or a default value if the property is not found. This can be used to pass values from config.xml to functions. For example, if the encrypted Amazon AWS credentials are in the config.xml in a property called awsCredentials then you can call the Amazon transaction file transfer functions like this:
receiveTransactionFilesFromAmazon( '*', 'mybucket', 'incoming', getConfigPropertyWithDefault( 'awsCredentials', 'defaultCredentials' ) )
See getConfigPropertyWithDefault function documentation for details.
The clearSessionPackage function removes the selected session package on the client to users have to select a package when making changes.
Example usage:
clearSessionPackage()
See clearSessionPackage function documentation for details.
Added logging to show when web service calls start and end. Users can see what web services, scheduled tasks, and background jobs are currently running using the View Server Processes menu option.
When transactions are committed, if the effective date is null or less than the current date/time it is updated to the current date/time. This enables web service calls that get the changes since a specific date/time to get the transaction even if the transaction was created before the specific date/time. If the effective date is in the future it is not modified.
The publishXCEDataTables publishes current data values with open and future transactions rolled back into CSV files. The function creates one export file per table and uses share group numbers instead of site numbers when data is shared. The share group data is only included in the file once and the individual sites in the share group are not included. The data for the lowest site number in the share group is used for the share group data.
Example usage:
publishXCEDataTables( '', '', 'PublishedData' )
See publishXCEDataTables function documentation for details.
The publishXCEDataTableList function works just like the publishXCEDataTables function except that instead of passing in a list of table names, the name of a table list is passed in and the function gets the table names from the snapshot file.
Example usage:
publishXCEDataTableList( '', '', 'PublishedData' )
See publishXCEDataTableList function documentation for details.
Increased the size of the 'Find Item' dialog so that in browsers where the users have increased the font size the fields are not wrapped to the next line or hidden. The dialog has also been made resizable.
Fixed subforms when a single site is selected so that when the user clicks on a field to edit it the data will be saved properly. This will correct the problem seen on the Item Master form's Combo tab where entering combo information into the sub-form then entering components in the sub-sub-form did not save the changes.
The following changes were made in this release.
Reduced the time required to get a response from the changedTables web service by a factor of 100.
The following changes were made in this release.
The "view" function can now be used to open forms that have a system table, such as the site table, as their source. This provides users with a better row selection screen including full filtering and sorting capability as well as eliminating the multiple "Find By ..." combo boxes used to select rows on forms opened with the "open" function. The "view" function has better performance than the "open" function due to eliminating the need for multiple "Find By ..." combo boxes whose queries are executed separately. The "view" function is also more scalable also because it uses newer data access methods that do not keep database queries open on the server while the user is using the form.
A new version of the site form is available to use with the view function by adding the following action to the menu:
view( 'Form', 'CDMLocationsAndGroups View' )
Corrected the SQL generation of queries containins joins to eliminate redundant join processing which was causing slow performance for forms containing queries with joins especially on databases with a large number of sites.
The following changes were made in this release.
If any transaction files are missing when the remote site receives updates, the missing transactions are automatically recovered from central. A new configuration option "processUnexpectedFiles" was added to control this functionality. It is enabled by default.
The sendSynchronizeDirectoryTransaction function synchronize an entire directory between the central location and a remote location. Either the remote directory can be updated to match the central directory or the central directory can be updated to match the remote directory. It is optional to include sub-directories and to delete files in the destination directory if they are missing in the source directory.
See sendSynchronizeDirectoryTransaction for details.
The changedTables web service returns a list of tables that have been updated since a given date along with the sites that were affected by the updates.
Example: http://myserver/edm/rest/audit/changedTables?sites=12&table=IRIS_dbo_tbl_ItemMaster&since=2013-08-15%2016:33:45.321
The sites parameter is a comma-separated list of site IDs to include in list of changed tables ('*' means all sites)
The table parameter is the table name for to check for changes (null or blank means all tables).
The since parameter is the earliest effective date of transactions to be include.
Updated Item Master forms so that users can simply check the box next to each monitor or printer to which the item should be routed instead of selecting from a list of all possible combinations.
Added plug-in functions for the Nucleus POS system to enable editing House, Vendor, and User accounts and to transfer report files to central for central access to reports from remote sites.
The following changes were made in this release.
Oracle changed the requirements for the "accessEventQueue" permission, which is used by EDM's client UI. The change to this permission will cause a sandboxed applet to fail with an "access denied" error. Due to this change, we have changed EDM's client applet to request all permissions, which is the only other available security setting. EDM's philosophy of not altering anything on the client computer has not changed, however. It will not write anything to the client computer's filesystem or registry.
The popular open source database PostgreSQL is now fully supported by the system. The system can be configured to use it by setting the data source type in config.xml to POSTGRESQL_JDBC.
Connection strings may also be used of the form:
jdbc:postgresql://hostname/databasename?user=myusername&password=mypassword&stringtype=unspecified"
The dialog used to select sites in the Routing Wizard, the Transaction Report Dialog, among others has been optimized to work faster with systems that have many thousands of sites.
Fixed the form viewer so that if the CDMRecordSelector has a join in it the form operates correctly. This is useful when a subform needs to be sorted by a name field that coming from another table such as in the Xpress subform that edits the SecurityGroupMap table where the CDMRecordSelector is "SELECT b.name, a.authId, a.securityGroupId FROM TNG_dbo_SecurityGroupMap a, TNG_dbo_SecurityGroups b WHERE a.[securityGroupId]=b.[securityGroupId] order by b.name".
The database schema reader was changed so that if no default value was specified for a column, the default column value is set to NULL instead of a blank string.
This addresses issues like the XPRESS menu editor where after starting up a new remote system and adding a button to the menu editor was generating foreign key violations due to '0' being used for Popup Panel IDs.
Changed package selection screen to not display a message telling the user that an effective date must be entered when there is no effective date field on the screen where the user can enter the date. This resolves the issue for users that require effective dates and don't use the default package but want to send a refresh which does not prompt for the effective date.
When the IRIS Availability Editor is used to activate buttons, the button that is activated may have a sequence number that is higher than the number of buttons on the menu. This was causing an error because the sequence number of the button was used in the calculation of the Z order of the button on the menu. The sequence number is no longer used, so the error has been eliminated.
The transaction viewer no longer clears the transaction list when the "Mark as fixed" button is clicked.
The following changes were made in this release.
Changed the commit wizard to sort the list of packages by name to make it easier for users to find the package they want to commit.
After a remote site receives a reset transaction and any transactions sent after the reset, it now deletes the remaining .XML files from the incoming directory but leaves any .FIL files. This corrects the problem where users would send a reset followed by a refresh or other transaction that comes with a .FIL to a site and the .FIL was deleted before the transaction was processed.
The startup process was changed to check for commitable packages in a background thread so that users don't have to wait for that server call to complete before using the system when they first log in. When the call is complete, the Commit button will flash if there are packages to commit.
Updated splash screen with latest logo.
To see the system name, version, and copyright info users can now right click on any menu item and select 'About'.
When opening up a menu editor or a form using the view() function, copying a row and then editing a value in the row that appears in the selection list, the value would not be updated the selection list after saving the row and returning to the list.
The logic for limiting the records shown to the user was moved from the Application Layer to the Database Layer.
Changed the layout of the check boxes on the Elstar button properties window to use 3 columns and be closer together vertically so that users can edit them with less scrolling.
The getServerTime function returns the current system time on the server in milliseconds since 1/1/1970 UTC. This can be used to synchronize system times.
See getServerTime for details.
The getServerCallsPerSecond function returns the average number of calls per second that can be made to the server after sending as many calls to the server as possible for 5 seconds.
See getServerCallsPerSecond for details.
A problem was fixed where the Mobile Item Sequence screen would close when the user pressed the cancel button. It now returns to the previous screen.
When requireEffectiveDate was set to "Y", requesting a Table List from a site would display an error message. This has been fixed.
The "Copy Record" button was removed from the Mobile Modifier Sequence screen as the screen is meant only to manage the sequence of the records in the table, not to add/update/delete mobile modifier records.
A problem was fixed with the UI that displays sites to the user when there are multiple versions of a record at the sites in the package.
Records in the form viewer are all saved as a single unit. If any of the records fails to save, the records that did save are rolled back so that the user can fix the problem(s) and save them again.
In order to help users see differences in white space between column values, difference reports now put quotes around all values so a value like Kansas is shown as "Kansas" and a value consisting of three spaces is shown as " ".
Clicking the "X" at the top of the tab prompts the user to save any changes that were made. Clicking the "YES" button will now correctly save the changes as expected.
Change the task scheduling procedure to check for errors when scheduling the task and, if an error occurs, reschedule the next execution of the task anyway. This resolves the issue of getting an error while scheduling a periodic process, such as a daily transaction file transfer, and not rescheduling the next execution of the task.
New sub packages were created in the edmclient package to help better organize our client related classes. You can find the list of moved classes here.
Change database reconnection to support additional errors, such as "Connection timed out", which trigger the system to automatically try to reconnect to the database. Also made it possible for users to add additional errors by adding them to config.xml with property names made up of a prefix and a sequence number beginning with 0. The messages are not case-sensitive and if a database operation returns an error that contains one of the messages then the database connection will be retried.
For example to add two new errors to cause SQL Server to automatically attempt to reconnect, add properties like the following:
sqlServerRetryableConnectError0 = "Connection reset" sqlServerRetryableConnectError1 = "Software caused connection abort"
Oracle servers use prefixes like the following:
oracleRetryableConnectError0 = "Connection reset" oracleRetryableConnectError1 = "Software caused connection abort"
If your system has both SQL Server and Oracle data sources, you can add messages for each one by using the appropriate prefix.
The synchronizeWithOpenText function calls a special API provided by OpenText to compare the item, category, category item, and modifier data in OpenText with the existing data in the tables: MDM_dbo_MobileItemTable, MDM_dbo_MobileCategory, MDM_dbo_MobileCategoryItem, and MDM_dbo_MobileModifierGroup. If the data exists in OpenText but not in the table it is added to the table. If the data exists in the table but does not exist in OpenText it is deleted from the table. If the data exists in both OpenText and the table but some of the column values are different, the data in the table is updated to match the OpenText table.
This function can be called from the menu or from a scheduled task that runs periodically. An example of the call is shown below.
synchronizeWithOpenText( 'https://myserver/opentext/api', 'user', 'password', '777777' )
See synchronizeWithOpenText for details.
The addAmazonCommitListener function adds a system listener that automatically sends transaction files to Amazon S3 as soon as they are committed. This enables users to send files to Amazon immediately instead of waiting for a scheduled transfer. The function can be called in the onStartup property of config.xml as shown below:
xxx onStartup = "addAmazonCommitListener( '*', 'com.xpient.edm.transactions', 'outgoing', getPropertyFileValue( 'credentials', 'aws.properties' ) )"
See addAmazonCommitListener for details.
Fixed the remote table load function so that if the cache of remote tables needs to be reloaded and a user browses to the server, the remote tables are loaded without throwing a NullPointerException because the user is not logged in yet and returning a 404 error to the user's browser.
EDM Form Designers can now include calls to EDM functions in a new "After Save" event that is triggered once a record (and its sub records) are saved. This event will not be triggered if there was an error while saving.
Taco Bell BLIMP specific functions and commands are now located in edmclient.plugin.tacobell.ClientPlugins. The config file for Taco Bell will need to load this plugin.
A new function was added that will resequence Mobile Categories. If no Mobile Items are assigned to a Mobile Category, the category's sequence will be set to NULL and the other Mobile Categories will be resequenced so that no gaps in the sequence order will exist.
NOTE: If Share Groups are used, Mobile Items and their Mobile Categories must all reside in the same group or the resequencing operation will fail.
See resequenceMobileCategories for details.
This function returns a comma-delimited list of site IDs that the user currently has selected in the active form.
EDM has a new login screen that features a background image and version information as well as the username and password text fields.
This screen is brandable via new attributes in the Config node in the config.xml file.
The new Config node attributes are:
EDM will use default values if these entries are ommitted from the config file.
Since the image file will be streamed to the client from the server, the size of the image will affect how quickly the client displays the login screen.
The default login image is provided in the edmclient.jar, which is cached on the client after the initial load of the applet.
The message box that appears after processing transactions no longer contains all processed transactions, but only the transactions processed for the sites that the currently logged in user has access to.
The following changes were made in this release.
Some servers have multiple companies defined in their config.xml so to make it easier for users to know which company generated a particular log message, users can now set a flag in config.xml to tell the system to include the company name in every log message. To include the company name in log messages, change the root element in config.xml from this:
<config version = "4">
to this:
<config version = "4" logCompanyName = "Y">
Changed the session package processing so that when a user has a session package selected and he opens one form and selects a list of sites then, while the first form is still open, he opens another form and selects a different list of sites, each form remembers the sites that were selected for it.
The updateTransferSettings function updates the transfer host, user ID, password, and company name on the central site record. This information is used when connecting to the central system to transfer transaction files. To have the information automatically saved when the system starts up, the function can be called in the onStartupProperty of config.xml as shown in the following example.
onStartup = "updateTransferSettings( 'localhost:8080/edm', 'remote', 'remote', 'HQ' )"
See updateTransferSettings for details.
The createRemoteInstaller function creates an installation program that can be downloaded and used to install EDM at a remote site with pre-configured settings for the current company.
See createRemoteInstaller for details.
Change the SQL Server driver so that the IDENTITY_INSERT property is always turned off for a table even if the SQL INSERT statement fails. This resolves the problem of transactions failing because they can't insert into a table with an identity column because the IDENTITY_INSERT property is not on.
The following changes were made in this release.
The form designer now allows the entry of "column headings" for bit editor controls. These headings are separated by semicolons and will be displayed next to the checkbox that represent the bit.
Clicking the info icon in the attributes tool in the form designer will show a message box that contains the informative text.
Fixed the form processing so that forms that do not have CDMRecordSelector controls still save changes properly when the user only selects a single site.
Fixed a situation where EDM would not timeout when the sessionTimeoutMinutes config file option was specified.
Fixed a validation error when EDM would not prompt the user to enter a value into blank fields that were marked as 'required' by the form designer.
Fixed a condition where EDM would sometimes save changes when the user clicked "NO" to the save prompt.
Fixed painting so that when user first browses to EDM and opens a table the rows and columns are displayed correctly.
Changed server so that when an InvalidClassException occurs while deserializing a client request, indicating that the client browser has an old edmclient.jar in the cache, the error is only logged once for the clients IP address.
Changed form viewer selection screen so that the user may enter a '\' character (in the process of entering a quoted character such as '\.') without immediately getting a 'Bad Syntax' error message.
Changed the field value editor pop-up such that it will provide a 'Set to Null' button only if a null value is allowed for this field.
Clicking this button will show a panel containing the locations in the package that have and do not have the selected menu. This is useful for when you want to see which locations in the package do not have any version of a selected menu without editing the menu.
Clicking this button will show a panel containing the locations in the package that have the selected version of the menu and locations in the package that do not have any version of the selected menu.
Improved the status display of the copy record function so that the estimated time remaining is much more accurate on very long copying jobs.
Improved performance of copy record function when very large number of transactions are being inserted in the audit trail with the bulk insert function.
The EDM applet is now signed with a certificate issued by the COMODO Trusted Publisher. This will eliminate the warning that users receive when they connect to the EDM server that they cannot confirm who published the app.
The Commit Wizard now uses the full site selector by default, giving the user a much better visual overview of the sites that are to be committed.
A simplified site selector can be used by setting the "useSimpleSiteSelection" config property to "Y". This will indicate to EDM that simple site selection is desired in the package creation wizard as well.
Fixed query designer so that it no longer get a StringIndexOutOfBoundsException error when running a query where the table name is longer than the sum of the unique index column names.
Change the Elstar screen editor so that if the user tries to move a button on a screen where the Auto Sort box is checked, a message is displayed only once telling the user that they cannot move buttons when Auto Sort is enabled.
Fixed error that occurred when selecting a screen after enter a value in the filter window.
Fixed NullPointerException that occurred when clicking the Edit button on the Price tab of the button properties dialog.
The system can now get lists of packages to select when opening forms or committing transactions much more quickly.
The update buttons in EDM forms opened using the "open()" function can optionally be displayed when editing data for a single site using the "useUpdateButtonForSingleSite" config file option. It is off by default.
Corrected the problem that was causing "Error adding new row" to be displayed to the user when they click the "New" button on the Elstar screen editor.
Fixed the "invalid syntax" error that was displayed when non-administrator users tried to filter reports, such as the Transaction Report, by selecting packages.
Changed Elstar screen editor so that when user begins editing the text of a button that shares a merchandise record with other buttons on the same or different screens, he is only prompted once to confirm that it is ok to change the text on the shared buttons as well instead of being prompted on every keystroke.
Fixed Elstar screen editor so that when user edits a screen with multiple versions and selects two of them and clicks "Show Differences", all the differences are properly displayed.
Changed the button handling in the IRIS menu editor so that if a button is loaded from the table with an unknown button type, it is left unchanged. If the user selects the button, they will see a message that there was an error setting the button properties for the unknown button type along with the button type ID. Users can still edit the button text and position without the button type being changed. This was done so that if a new button type is introduced in IRIS, the IRIS menu editor can still be used to edit the menus with the exception of being able to select the button value for the unknown types and the button types will not be changed to -1.
Updated the functions that accept a list of sites as a parameter where '*' means all sites so that they only affect sites for which the user has 'view' permission. This eliminates the error message displayed to users that do not have access to all sites when they execute a function with '*' as the site list parameter.
NOTE: This does not affect menu options with '' as the site list parameter, which means prompt the user to select the sites, which is the normal case. It also does not affect functions called from remote sites which only have their own site and the central site in the site list.
The affected functions are:
This function deletes transaction files (*.xml and *.fil) from the Amazon Simple Storage Service (S3).
See deleteTransactionFilesFromAmazon for details.
This function adds a listener that deletes transaction files from the Amazon incoming and outgoing directories when a reset site transaction is committed. To enable the listener call it in the onStartup property of config.xml as shown in the following example:
onStartup = "addDeleteAmazonTransactionsOnResetListener( '*', 'com.xpient.edm.christransactions', 'incoming', 'outgoing', getPropertyFileValue( 'credentials', 'aws.properties' ) )"
See addDeleteAmazonTransactionsOnResetListener for details.
Set to 'Y' if the system will perform regex searches during filter operations by default, else 'N' to perform literal searches.
The default is "N". See Table Filter Help for more information.
Changed the Elstar screen editor and other functions to not look up table and query names in the Application menu. This resolves the problem of users who do not have permission to see the Application menu getting an error when opening the Elstar screen editor.
Changed the data structure used to cache the remote table records loaded from the database so that it takes up much less memory and improves the performance of cache searching operations.
Changed the query that looks for a site's group ID so that the query does not use an IN() clause with more than 1000 site id's. This was causing an error in Oracle systems which do not allow more than 1000 elements in an IN clause.
The following changes were made in this release.
This function queries OpenText data via a web service provided by Taco Bell to get item and category images and other data which is then saved in the master data tables for the mobile system. The data is then made available to callers of the Menu Service API.
See updateTacoBellMasterDataFromOpenTextData for details.
The site reset function has been changed so that if there are transactions that have future effective dates, when the reset is processed at the remote site, the future transactions are added to the audit trail.
Change package cache to not be shared across companies so that if the Default Package is deleted at one company we don't get "0-Default Package does not exist" error at other companies when the SelectSessionPackage function is called.
The Copy Menu/Panel buttons in Aloha, IRIS, and POSItouch were not working properly. They were supposed to prompt for the sites to copy to, but were prompting for a whole new package and were not copying the menus properly. It now just prompts for the sites to copy to, copies the menu to the selected site(s) that don't already have it, and informs the user when the copy has completed successfully.
The following changes were made in this release.
The attachMasterTables function can be used to create a new master data table in the EDM central database by loading the table schema from another database. When the central table is created, remote table records and remote data sources will be created for the central site and every remote site so that the table may be immediately edited and all remote sites will be supported.
The insertTableList function can be used to add a new table list to the system.
See insertTableList
The updateTableList function can be used to update an existing table list.
See updateTableList
The deleteTableList function can be used to delete a table list from the system.
See deleteTableList
EDM would use too much memory when switching between menus in these editors. This has been fixed.
The IRIS menu editor would generate error code 515 when saving changes to a menu due to columns that had been added to the schema. This has been fixed.
The following changes were made in this release.
Changed the Elstar menu editor so that users can assign items to buttons even if the items have an AII number of 0.
A new "Commit" button has been added to the EDM client UI that takes the place of the prompt to commit packages when forms and menu editors are closed. The button's text will animate for a short time when there are packages to commit. Clicking the button will prompt the user to select packages and sites to which to commit the selected package. The button is hidden from the UI if the user does not have permission to commit packages.
The following changes were made in this release.
The exportSecurityPolicyToXml function can be used to save the users, roles, and other security objects in an XML file which can be used to load the security tables when creating a new company's system database.
Added the following client functions:
These functions can be used in an EDM form to store and retrieve values without requiring the use of another control on the form. The values will be removed once the EDM session has terminated.
If you have selected multiple sites in a package and have opened an EDM form using the view( 'FORM', 'formName' ) function, you will be prompted to select a version if differences are found between the sites in the package. Once you have selected a version and are editing a field, you can press the "CTRL+ENTER" keys on the keyboard or click the wrench icon and select "Edit all values" from the "Edit" menu to get a popup window where the data for all sites in the package can be set for that field.
The transfer_web process was getting stuck at the exit after processing a reset site transaction. This has been fixed.
Corrected the "cancel" behavior in the fuel price editing form so that when a user changes a price, then cancels the change, he can now make additional changes without closing the form and re-opening it.
A versions screen is displayed when a row is selected to be edited and the row has multiple versions across sites in the package. This screen has been simplified to display the row information in the title of the screen and the list displays the locations that contain differing versions.
Fixed problem with modifier images not being updated reliably. This fixed a problem with row updates being misapplied at central from remote due to missing column information.
The following changes were made in this release.
Fixed the Elstar screen editor to correctly save the data when the user renames a screen without displaying an IndexOutOfBounds error.
Using the function "getVersion()" will return the current version of EDM. This function is available via the EDM web service as well.
Fixed MDM deploy to handle deleting rows in IRIS tables in EDM central db when master row is deleted.
When a form was set to not allow the deletion of rows, pressing the delete key on the keyboard would still delete the row. This has been fixed.
The following changes were made in this release.
When numeric values such as prices are stored in the database as integer values but the form designer wishes to display and edit the data formatted as a number with a decimal place then set the 'Assumed decimal places' property of the control to the number of digits that should be shown to the right of the decimal point.
For example, if prices are stored as integers such as 123 and the assumed decimal places is set to 2 and the format is set to GC (general currency) then the value will be displayed as $1.23 (in the United States) and when the user is editing the value it will be displayed as 1.23. The user can change the value by entering a new value with decimal places such as 4.56 and the value will be saved to the database as 456.
The replaceAll function can be used in expressions to replace portions of a string. For example, to replace single quotes in a string with two single quotes before using the string in a SQL statement use the expression replaceAll( "Mom's House", "'", "''" ).
See replaceAll
Fixed the Elstar screen editor to no longer throw an exception when the user selects a screen to edit.
Fixed the concurrent modification error that occurred in the reloadCachedData function if any of the companies had registerd JMS connections.
The JMS listener sometimes did not receive all the existing messages in the queue before listening for incoming messages when there were thousands of messages queued before starting the listener. This works correctly now.
Changed the createTransactionTriggers function that generates an SQL script to install triggers on Xpress tables whose updates need to be sent to central so that when a row is updated but none of the column values are changed it no longer generates an update transaction in the EDM audit table. The script was also changed to get the site ID from the site table so that the same script could be used at all sites without regenerating it.
The following changes were made in this release.
The background color used in the main UI of EDM is now configurable. Valid entries are a comma separated list of RGB values or a valid Java color name.
Java color names are white, lightGray, gray, darkGray, black, red, pink, orange, yellow, green, magenta, cyan, and blue. Some of these colors will look better than others.
The default is "black".
The pricing data could be updated for the wrong combo items that were in more than 1 group. This has been fixed.
The text displayed when a database field is NULL can now be set in config.xml. The default is "<NULL>".
Valid values for this option are "Y" or "N", with "N" being the default. If set to "Y", the Site Selection screen is greatly simplified. The Share and Location groups, the Site Properties and Search controls and the Save Package Defaults button are removed from the screen.
The executeSQL() method was moved from ReportServer to ExecuteQueryCmdExecutor
The Aloha panel editor now correctly loads and saves the function parameter values for buttons with the Smart Item and Smart Select function type.
When a remote site reports a transaction error and the override setting for the table is for central to override remote, the refresh transaction that is sent to the remote site now rolls back open and future transactions.
Changed the resetSite command to re-commit any committed transactions plus any transactions with the status "sent" or "received" to the site to ensure the site gets them. Transactions with future effective dates will have the status "received" if the site responds that it has received the transaction but has not yet committed it.
Changed the "Process Transactions" functions to sort the transactions to be processed by the effective date, if it is not null, otherwise sort by the transaction date instead of sorting by the transaction ID. This resolves the problem of sending a transaction to a site with a future effective date, then just before the effective date arrives, sending a refresh to the site. When transactions were sorted by ID, the refresh would be processed after the transaction with the effective date which had now arrived overwriting the effective change. By sorting by the effective date, if the refresh is sent before the effective date of the other transaction arrives, the refresh transaction will be processed before the transaction with the effective date and the data will have the correct values.
The system can now be configured to process transactions as soon as the transaction file is received by adding the following line to the plugin section of config.xml.
<serverPlugin class = "edmserver.plugin.ProcessTransactionsOnReceivePlugin"/>
The system can now be configured to automatically commit changes made in forms instead of requiring the user to commit them. To enable auto-commit, add the following attribute to config.xml.
autoCommit = "Y"
The system can now be configured so that the users don't have to select packages when managing data. All changes will be stored in the default package. To remove the need to select packages, change the onLogin attribute in config.xml to include a call to selectSessionPackage('0-Default Package', false) as shown in the following example.
onLogin = "iif( hasPermission( 'execute', 'function', 'showSiteManager' ), showSiteManager(), 0 ) + iif( hasPermission( 'execute', 'function', 'selectSessionPackage' ), selectSessionPackage('0-Default Package', false), 0 )"
The getNamedControlValues function gets a list of name-value pairs for a given list of controls on the active form. This function is useful for getting a list of names and values used to insert rows in the database with functions such as the addNLSRows function.
The getNamedControlValues function gets a list of name-value pairs for a given list of controls on the given form. This function is useful for getting a list of names and values used to insert rows in the database with functions such as the addNLSRows function.
The Xpress plugin function addNLSRows inserts a row in the given NLS table for every languages defined in the Locales table using a list of column name-value pairs. The function automatically populates the CDMLOCID and locale columns and gets the values for the other columns from the list of name-value pairs. For example, to add rows to the TNG_dbo_NLSHiringSources table after the user inserts a row in the TNG_dbo_HiringSources table, set the afterInsert property of the Hiring Sources form to:
=addNLSRows( 'TNG_dbo_NLSHiringSources', getNamedControlValues( 'hiringId,name,description' ), getSelectedSites() )
See addNLSRows
Added an isView attribute to table objects so that EDM can distinguish between database tables and views. Users can update a table entry in the schema file to include the isView flag if they have created a view that they wish EDM to be able to use for reading data as shown in the following example:
<table name = "TNG_dbo_VIEW_Price" dbName = "[dbo].[TNG_dbo_VIEW_Price]" dsn = "EdmWebHQ" isView = "Y"> <col name = "CDMLOCID" desc = "Site id" type = "Number" len = "9" required = "Y"/> <col name = "ID" type = "Number" len = "10" required = "Y"/> <col name = "PRICE" type = "Number" len = "10" scale="2" required = "Y"/> <key name = "PK" type = "PRIMARY"> <seg name = "CDMLOCID"/> <seg name = "ID"/> </key> </table>
Modified the copyLocationData function to ignore tables with the flag isView="Y" since data cannot be copied to a view.
Users can add an 'onStartup' property to the config.xml file to specify an expression to evaluate when the system starts. The expression may only contain server functions since it is executed by the server. For example, the following expression will start a JMS listener when the system is started.
onStartup = "addJMSCommitListener( '*', 'com.xpient.edm.outgoing', 'tcp://192.168.1.65:61616', 'userid', 'password' )"
The plugin function addRow inserts a row in the given table for the selected sites using a list of column name-value pairs. The function automatically populates the CDMLOCID column and gets the values for the other columns from the list of name-value pairs. For example, to add rows to the TNG_dbo_ProductType table after the user inserts a row in the TNG_dbo_Products table, set the afterInsert property of the Product form to:
=addRow( 'TNG_dbo_ProductTypes', getNamedControlValues( 'Id,name,description' ), getSelectedSites() )
See addRow
Creates a SQL script called EDM_Transaction_Functions.sql that creates functions in the EDM database that can be called by triggers in the remote application database to generate transactions. Also creates a script called App_Transaction_Triggers.sql to create triggers on the tables in the given table list that generate transactions in the EDM audit table on insert, update, and delete. Currently this function only supports SQL Server databases.
=createTransactionTriggers( 'Xpress Transaction Tables' )
See createTransactionTriggers for details.
The following changes were made in this release.
EDM can now optionally allow a user to select only a single site (or a single Share Group) when opening an EDM Form or a menu editor.
Just add the following setting to the config.XML file:
Multi site editing is allowed by default.
It is now possible to restrict which buttons and popup menu items can be seen by the user in the IRIS menu editor.
Just add any combination of the following settings to the config.XML file:
None of these settings are active by default.
selectSessionPackage() now supports a second parameter, "requireVersionedPackages". If it is set to 'true', then only packages with versions will be displayed to the user to select. If it is not set or 'false', then all packages will be displayed.
Packages are no longer deleted until they are older than the auditHistoryDays setting in the config.XML file.
The Menu Button Editor was always using the complete list of the current package's sites when bringing up the price editor popup. It has been changed to use the current version's sites if a version has been selected.
The copyConfigurationVersionData function copies the master data for a configuration from one version of a configuration to another version. If the destination configuration version does not exist, it is created. Data for all the tables in the configuration type's shared table group is copied. Existing data, if any, is overwritten.
See copyConfigurationVersionData
The copyVersionData function copies the master data for all the configurations of one version to the same configurations in another version. If the destination configuration versions do not exist, they are created. Data for all the tables in the configuration type's shared table group is copied. Existing data, if any, is overwritten.
See copyVersionData
The copySiteSubscriptions function copies the configuration subscriptions from one site to one or more other sites. The version ID's of the new subscriptions are left blank and users must schedule the version assigments for the new subscriptions.
Master data management users can use the IRIS Menu Editor to edit master tables if they create the appropriate master tables and views and set the table name overrides in config.xml.
There will need to be master tables with the same structure as the IRIS tables that are updated by the menu editor:
IRIS_dbo_tbl_MenuMaster IRIS_dbo_tbl_MenuBtns IRIS_dbo_tbl_ItemMaster - updated when a menu ID referenced by this table is changed IRIS_dbo_tblConcept - updated when a menu ID referenced by this table is changed IRIS_dbo_tbl_ItemMenus - updated when a menu ID referenced by this table is changed IRIS_dbo_tblItemComponents - updated when a menu ID referenced by this table is changed IRIS_dbo_tbl_ItemAttachments - updated when a menu ID referenced by this table is changed
There will also need to be master tables or views with the same structure as the IRIS tables that are read, but not updated, by the menu editor:
IRIS_dbo_tbl_ItemModifiers IRIS_dbo_tbl_MenuCmds IRIS_dbo_tbl_MenuMacros IRIS_dbo_tbl_MenuObj IRIS_dbo_tbl_Tare IRIS_dbo_tblMenuResolutionCurrent IRIS_dbo_tbl_PayType IRIS_dbo_tbl_ItemPeriods IRIS_dbo_tblCfgSetting IRIS_dbo_tbl_UpsizeType IRIS_dbo_tblDiscounts IRIS_dbo_tblDiscountCoupon IRIS_dbo_tblMsg IRIS_dbo_tblDestination
To tell the system the name of the master table or view that is to be used in place of each IRIS table, add override table names to the config.xml file as shown below using your own MDM table names:
overrideTableName_IRIS_dbo_tbl_MenuMaster = "MDM_dbo_tbl_MenuMaster" overrideTableName_IRIS_dbo_tbl_MenuBtns = "MDM_dbo_tbl_MenuBtns" overrideTableName_IRIS_dbo_tbl_ItemMaster = "MDM_dbo_tbl_ItemMaster" overrideTableName_IRIS_dbo_tbl_ItemModifiers = "MDM_dbo_tbl_ItemModifiers" overrideTableName_IRIS_dbo_tbl_MenuCmds = "MDM_dbo_tbl_MenuCmds" overrideTableName_IRIS_dbo_tbl_MenuMacros = "MDM_dbo_tbl_MenuMacros" overrideTableName_IRIS_dbo_tbl_MenuObj = "MDM_dbo_tbl_MenuObj" overrideTableName_IRIS_dbo_tbl_Tare = "MDM_dbo_tbl_Tare" overrideTableName_IRIS_dbo_tblMenuResolutionCurrent = "MDM_dbo_tblMenuResolutionCurrent" overrideTableName_IRIS_dbo_tbl_PayType = "MDM_dbo_tbl_PayType" overrideTableName_IRIS_dbo_tbl_ItemPeriods = "MDM_dbo_tbl_ItemPeriods" overrideTableName_IRIS_dbo_tblCfgSetting = "MDM_dbo_tblCfgSetting" overrideTableName_IRIS_dbo_tbl_UpsizeType = "MDM_dbo_tbl_UpsizeType" overrideTableName_IRIS_dbo_tblConcept = "MDM_dbo_tblConcept" overrideTableName_IRIS_dbo_tblDiscounts = "MDM_dbo_tblDiscounts" overrideTableName_IRIS_dbo_tblDiscountCoupon = "MDM_dbo_tblDiscountCoupon" overrideTableName_IRIS_dbo_tblMsg = "MDM_dbo_tblMsg" overrideTableName_IRIS_dbo_tblDestination = "MDM_dbo_tblDestination"
Master data management users can use the IRIS Combo and Shake Price Editor to edit master tables if they create the appropriate master tables and views and set the table name overrides in config.xml.
There will need to be master tables with the same structure as the IRIS tables that are updated by the editor:
IRIS_dbo_tbl_ItemPricing
There will also need to be master tables or views with the same structure as the IRIS tables that are read, but not updated, by the menu editor:
IRIS_dbo_tbl_ItemMaster IRIS_dbo_tbl_ItemModifiers
To tell the system the name of the master table or view that is to be used in place of each IRIS table, add override table names to the config.xml file as shown below using your own MDM table names:
overrideTableName_IRIS_dbo_tbl_ItemMaster = "MDM_dbo_tbl_ItemMaster" overrideTableName_IRIS_dbo_tbl_ItemModifiers = "MDM_dbo_tbl_ItemModifiers"
Added "Column headings" property to combo boxes so that form designers can specify the desired column headings for the CDMRecordSelector combo box. If the form designer specifies the column headings then when the form viewer displays the list of rows available to edit, the specified column headings will be used instead of the column names. If a column heading is not specified for a column then the column name will be used. The column headings property is only used for the CDMRecordSelector combo box when using the form viewer and is ignored otherwise.
The column headings should be specified with semicolons between them like this: ID;Item Name;Day Part. The number of column headings should match the "column count" property, if there are fewer headings than columns, then the column names will be used for the columns without headings.
The form viewer no longer validates every field when saving an update to an existing row. Fields on existing rows are now validated only when the field value changes.
Fixed Smart menu builder so that it opens properly instead of throwing an error that it needs a Frame or Dialog.
The form viewer can now support CDMRecordSelector source queries that contain joins such as when the designer wants to display the name of the item from the item table when showing a list of prices from the price table. For example, to select from a list of prices joined to the item table to show the item names you could set the Row Souce property to:
SELECT tbl_ItemPricing.ItemNum, tbl_ItemMaster.ItemDesc, tbl_ItemPricing.TimePeriod FROM tbl_ItemPricing, tbl_ItemMaster, tbl_ItemPricing INNER JOIN tbl_ItemMaster ON tbl_ItemMaster.[ItemNum]=tbl_ItemPricing.[ItemNum] ORDER BY tbl_ItemPricing.ItemNum
Added a command-line client to call the EDM Evaluate Expression web service.
The command-line arguments are:
Run it from the DOS command line with a batch file like the following (ensure paths are correct):
"@C:\EdmWeb\jre1.6.0_07\bin\java.exe" -cp C:\EdmWeb\lib\system.jar edmserver.EvaluateExpressionWebMethodMain "processTransactions('*')" "remote" "1b06345acc9ffc3d26e6019fc94c3696a2d286cee6a80bfe00000010" "HQ" "http://localhost:8080/edm/service?wsdl"
Or, allow the caller to pass the expression to the batch file as a parameter like this:
@echo off if ""=="%1" goto usage "C:\EdmWeb\jre1.6.0_07\bin\java.exe" -cp C:\EdmWeb\lib\system.jar edmserver.EvaluateExpressionWebMethodMain %1 "remote" "1b06345acc9ffc3d26e6019fc94c3696a2d286cee6a80bfe00000010" "HQ" "http://localhost:8080/edm/service?wsdl" goto end :usage echo Usage: web_service "expression" :end
The following changes were made in this release.
EDM no longer appends the user and date information to user entered package names, so the screen where new packages are created has been changed to verify that the package name is unique.
The list of packages has been modified to be easier to read and display more information to the user, such as the user who created the package and the date that it was created as well as the version, if it is set.
Added function to return true or false if the active form is on a new row. This can be used to perform logic on a new record that you wouldn't want to perform on an existing record.
See isOnNewRow function documentation for details.
This function, which is available on the client side as well as from the web service, will return a list of User Ids and Names with the given role separated by semicolons.
See getValueListOfUsersWithRole
The view and viewForm functions provide an alternative form interface that prompts the user to first select from a list of rows, then compares the selected rows from all the selected sites and, if there are multiple versions of the row values, prompts the user to edit each version of the row separately. When the form is displayed it behaves as if the user were editing the row at a single site where there will never be more than one value in a field so the form no longer requires the use of the location value popup window. This also allows advanced form processing such as disabling or updating controls when a control is updated.
See view function documentation for details.
See viewForm function documentation for details.
Added functions to maximize and restore the content area in the main EDM window.
See maximizeContentArea function documentation for details.
See restoreContentArea function documentation for details.
The package selection screen that is shown when opening an EDM form ( such as "Item Prices" ) has been modified to be a table rather than just a list.
The table contains 3 columns:
The packages in the table can be sorted by these columns if the column header is clicked.
There is also a new "Search" field that can be used to filter the list of packages by any of the values in these 3 columns.
Added function to roll back open and future transactions from selected tables and write the data to .csv files.
See publishMasterDataTables function documentation for details.
The hasPermission function returns true if the current user has the given permission type for the given object type and name.
See hasPermission function documentation for details.
The system can be configured to perform an action every time a user logs in by setting the onLogin property in config.xml to an expression. The expression will be evaluated by the EDM client so any client functions may be used in the expression such as "open( 'form', 'MyForm' )".
The Site Manager is no longer automatically displayed when the user logs in. If you want the system to continue to display the Site Manager for all users with permission to use it, add the following option to your config.xml file:
onLogin = "iif( hasPermission( 'execute', 'function', 'showSiteManager' ), showSiteManager(), 0 )"
When editing a form (such as pricing or items) with a package that has just 1 site, the forms framework no longer requires you to click an update button in order to change a value. You can now edit it in place just like if you were on a new record.
A new function has been added that will set the current package in the session.
See selectSessionPackage function documentation for details.
A new function has been added that opens a Table, Query, or Form on the client.
See openPlayer function documentation for details.
EDM Forms are transparent by default to promote a more harmonious and integrated experience. This can be changed by adding the option 'useFormColors = "Y"' to the config.xml file, which will change the forms to use the background colors set by the designer.
The radio buttons to switch between active and inactive menu buttons have been removed and all menu buttons that are assigned to the current screen are shown. Inactive menu buttons are now grayed out and are placed at the end of the screen. The reason why the menu button is inactive is displayed as a tooltip when the mouse pointer is placed over the button for a moment.
Some menu buttons were also being displayed as inactive when they should have been active. This has been fixed.
The setValue() method was not flagging the data as changed, so saving a record was not saving the data properly. This has been fixed.
A new function has been added that will return the next available ID for a given table column at all sites.
See getNextUnusedId function documentation for details.
When the Location Values window is displayed and the underlying control is a combo box, the user could not type to select items in the drop down list. This has been fixed.
Retrieving the key values for the DataSet was erroring with duplicate keys in some cases. This has been fixed.
In order to prevent the user from having to specifically handle negative values when creating a partition expression, the partition function now uses the absolute value of partition ID calculated by partition expression. For example, when partitioning on site ID's, the partition ID for a negative site number will be greater or equal to 0. This prevents unnecessary errors in partitioning caused by negative values returned from partition expressions such as TOLOC % 3 which evaluates to -1 if TOLOC = -1.
Changed the Amazon file transfer process, used to transfer transaction files and to synchronize directories, to transfer each file to a temporary name and not rename it to the real name until the transfer successfully completes. This prevents the file transfer function from leaving a partially transferred file in the directory which the system cannot process.
Fixed error that was generated when the row source property of a combo box contained an SQL statement with an EDM function call in it such as:
select trim(Description) as Name, UpsizeType from tbl_UpsizeType where trim(Description)<>'King'
Fixed the task scheduler so that when it re-schedules a task, the thread for the previous task ends gracefully instead of staying in memory.
Added functions to set control values to null. To set controls that won't have site-specific value, such as controls without sources or controls whose source is a system table, use setValueToNull( 'ctlNames' ) or setFormValueToNull( 'formName', 'ctlNames' ). To set controls whose source is a column in an application table that may have multiple values use setSiteValueToNull( 'ctlNames' ) or setFormSiteValueToNull( 'formName', 'ctlNames' )
See setSiteValueToNull function documentation for details.
Change the processing of scheduled tasks so that if a task gets an error, the next iteration of that task is still scheduled instead of stopping the repeating task.
Third-party classes that implement the PluginFunction interface should be changed to implement the PluginLoader interface and change the name of the interface method to addPluginsToLibrary. The functionality of the interface is the same so the redundant interface was removed.
Change the rename function so that if the user is renaming a table, it checks the server to see if the new table name already exists instead of checking the list of tables in the Setup - Application - Tables menu in the applet client. This eliminates the possibility of inadvertently causing a table to be deleted from the database because the table exists in the schema on the server but is not included in the list of tables on the users menu.
The getCompanyName function will return the name of the company the user is currently logged in to or null if the user is not logged in to a company.
See getCompanyName function documentation for details.
The getSessionPackageName function will return the name of the currently selected session package or null if there is no session package selected.
See getSessionPackageName function documentation for details.
The getSessionPackageVersionName function will return the name of the version in the currently selected session package or null if there is no session package selected or if the session package does not have a version.
See getSessionPackageVersionName function documentation for details.
The welcome bar now displays the name of the user that is currently logged in next to the log out button.
Administrators can now configure the message displayed in the center of the welcome bar when a user logs in by putting an expression in the welcomeMessageExpression attribute in config.xml.
For example, to display the currently selected package and its version in the welcome bar add the following line to config.xml:
welcomeMessageExpression = "iif( getSessionPackageName() = '', 'No Package Selected', ' Package: ' & getSessionPackageName() & iif( getSessionPackageVersionName() = '', '', ', Version: ' & getSessionPackageVersionName() ) )"
If no expression is found in config.xml, the default expression is:
welcomeMessageExpression = "getCompanyName() & iif( getSessionPackageName() = '', '', ' - Package: ' & getSessionPackageName() )"
The unlockAppObjects function displays a list of locked application objects so that they can be manually unlocked if necessary. This enables administrators to unlock a form or query that was locked when it was opened in design view and then never unlocked due to a browser crash or other reason. To use the function, create a new menu item with the action set to unlockAppObjects().
See unlockAppObjects function documentation for details.
Changed the process of opening a form or query in design view so that if an error occurs in opening the object in design view, the object is unlocked instead of being left locked.
Change keyboard processing to eliminate the "Attempt to mutate in notification" error that sometimes occurred when users began typing into a control on a form or table.
The following changes were made in this release.
The audit table can now be partitioned across multiple database servers which process queries in parallel for much faster performance. Transaction records are divided among the partitions based on a partitioning expression. Queries on the audit table are sent to each partition server for parallel processing and the results are merged by EDM so that the partitioning is transparent to EDM users. The primary partition will continue to reside in the EDM central database, additional partitions can be stored on other servers.
See partitionTable function documentation for details.
The new function copyAndRefreshSiteData enables users to tell the system to copy data from a source site to one or more destination sites and send a table refresh to each destination site at a specific date and time. Users select the source site, the destination sites, the effective date, and the tables to copy and refresh. If the effective date is left blank or is the current date and time then the system will perform the copy and refresh immediately. If the effective date is in the future, then the system will schedule the copy and refresh to be performed on the effective date. This function is useful for setting up data for a future rollout and then scheduling when the sites should receive the new data.
See copyAndRefreshSiteData function documentation for details.
Change the SQL Server bulk insert process, used to add large numbers of rows to the audit table during record copying, to send blocks of insert statements instead of using the BULK INSERT command to import the data from a file. This makes it easier and safer for users to use the bulk insert capability without having to concern them with themselves with writing the data file to a shared location and enabling OLE Automation on their SQL Server installation. The new process is also compatible with SQL Server 2005 and 2008.
Added "Edit Scheduled Tasks" menu option to the "Setup" menu to enable users to edit the scheduled server tasks. Scheduled tasks are saved in the config.xml file. Users can choose the frequency of the tasks, the first date and time the task should run, which days of the week the task should run on if it is a recurring task, and an expression to evaluate. The expression may call any server-side function in the system and multiple functions may be called by putting a plus sign (+) between them. For example, users may wish to schedule transaction procesing to occur at 3am every day.
When synchronizing a local directorys with a directory on Amazon S3, the system will now calculate the MD5 hash code for the local file and the Amazon file to determine if they are the same or not instead of using the file timestamp. This is a more accurate means of comparing files and eliminates the challenges of interpreting file time stamps across multiple time zones.
The updateWebDirToMatchLocalDir function can be used to update a directory on the server to match a local directory. This can be used to keep a directory of image or document files at remote sites synchronized with a directory on the server.
See Web Transfer - Transferring Directories for details.
Added log statement for all jobs that run as background jobs on the server to show their start time, end time, and duration to make it easier to see what jobs are running at any moment. The log statements look like the ones below:
2012-08-28 16:45:39 INFO Starting server job 3: Partition Table edmserver.BackgroundJob$1.run:202 ... 2012-08-28 16:45:46 INFO Finished server job 3: Partition Table in 0:00:07 edmserver.BackgroundJob$1.run:210
Form designers can now use the remainder operator (%) in expressions to calculate the remainder of a division operations. For example, 5 % 3 will return the value 2, the remainder when dividing 5 by 3.
Fixed problem closing temp table when using expression in form source query
Corrected the temp table handling so that forms may have expressions in the where clause of their source query such as 'trim( columnname )'.
The button sequencing method was not being called when the menu was saved. It is now, which will fix any problems with buttons being saved out of sequence.
Fixed error that sometimes occurred when typing a value into a combo box to try to find the correct item by typing the first few characters.
Change import transaction function to not log the start and end of the audit table update job for each transaction imported. These log statements were not needed and made the log file too large.
A rare issue was fixed where permissions would be lost when renaming a Role.
The current policy file (which contains Users, Roles, Permission Types and Permissions) will be migrated to the system database and archived. Going forward, the system will use these new database tables when validating access to and usage of EDM. The major benefit is that security related data will be easy to keep in sync in a multi server environment. Another benefit is that the audit table will now contain transactions when changes are made in the EDM security system.
Central User will by default no longer be able to run the editUsers(), editRoles(),
configureApplicationVersions() or runApp() functions.
These security points can be changed by editing the Central User role.
Added client and server function addSystemEventListener that enables callers to add the listener in the given class to the list of system event listeners. This is useful for loading custom event listeners at runtime. For example, a user may write a listener that sends an email every time a refresh transaction is sent to a certain site. The listener can be loaded on system startup by making it a server plugin and adding it to config.xml, or it can be loaded at runtime by calling the addSystemEventListener function.
See addSystemEventListener function documentation for details.
The functionality was potentially confusing to the end users, so it was decided that the buttons should be removed pending further review.
Buttons that overlapped other buttons were painting in the wrong order, placing the lower sequenced buttons over the top of the higher sequenced buttons. This has been fixed.
The following changes were made in this release.
The sendFile and requestFile functions may now be called from remote sites. Users will not be prompted to select a package, sites, or an effective date, just the file information. The system sends or requests the file from the central site.
See sendFile and requestFile function documentation for details.
Added a client function "setSiteValue" so that users can set values for sites while retrieving values from other controls. The function takes 2 parameters, a Control's name, and an expression.
Example: setSiteValue( 'S1','''Hello''' )
This sets the value of the control named 'S1' to be the given expression, which is evaluated by the expression parser to the string "Hello". It required 3 apostrophes on each side so that EDM's expression parser knows that it is a string expression.
Example of getting a value from another control: setSiteValue( 'S1', S2 )
This sets the value of the control named 'S1' to be the value of control named S2. There are no apostrophes because we want the value of the control, not the string constant 'S2'.
Example of getting a value from another control, with concatenation: setSiteValue( 'S1','''A''&S2' )
This sets the value of the control named 'S1' to be the given expression, which is evaluated by the expression parser to the string "A" concatenated (&) with the value of the control named S2.
This function is just like setSiteValue, but you can pass in the name of another form. This is how you can set the value of a control on another form, which must be open.
Example: setFormSiteValue( 'OtherForm', 'S1','''Hello''' )
The setValue(), setSiteValue(), and setFormSiteValue() functions will only update the sites that are being updated in the Location Values popup. If you have a package with sites 1, 2 and 3 in it, but are updating a value in the Location Values popup that is only at sites 2 and 3, only sites 2 and 3 will be updated.
The following changes were made in this release.
Changed the resetSite command to re-commit any committed transactions to the site to ensure the site gets them.
Changed the send table refresh process so that if an error is encountered when sending a refresh to one site in the list, the process logs the error and continues on to the next site. The system will attempt to send the refresh to all the requested sites and log any errors in the log file. The first 10 errors, if any, will be reported to the user if the refresh was started from the menu.
Added a server function "resetSites" so that users can trigger site resets from the web service that evaluates expressions or from a scheduled task. The function takes a single parameter which is a string of comma-delimited site id's.
Example: resetSite( '1001,1002,1003' )
Added function to execute a query on a data source and return the result rows. This server function can be called in the Source property of form controls.
Added server function to execute a command line so that users can schedule commands to be executed.
For example:
<schedule frequency = "TIMED" time = "1/1/2001 12:15 AM" task = "runApp('cmd /c copy c:\edmweb\go.bat c:\edmweb\test.bat', true )" />
Added client functions to enable remote sites to separately send and receive transaction files so that if there is a reset sent from central to a remote site, the reset will be processed and the outgoing directory will be cleared before sending any files back to central.
Added server functions to enable transaction files to be transferred as a scheduled task.
Added logging at remote sites to record received, processed, and sent transaction files to aid in diagnosing transaction processing issues.
Improved commit locking so that when a large multi-site commit process is started, the commit lock is obtained and released for each site instead of obtaining the lock at the beginning and not releasing it until all sites have been committed. This causes the commit lock to only be held for the duration of a commit for a single site so that other commit processes can execute without waiting a long time for the lock. Also, when automatically committing table refreshes, the system can now wait indefinitely for the commit lock instead of timing out after 5 seconds. This prevents the system from generating an unnecessary timeout error when the refresh commit needs to wait more than 5 seconds for the commit lock.
Added a section that describes all the server-side functions to the online help. Server-side functions are available to be called in expressions executed by calling the web service that evaluates expressions and by tasks scheduled in config.xml.
See Server Functions
The following changes were made in this release.
Added an evaluateExpression web service so other processes can ask EDM to evaluate and expression such as processTransactions('*'). This is useful for advanced users that want to develop their own applications that integrate with EDM.
The WSDL for the service can be found at URL http://edmserver/edm/service?wsdl. The XSD for the service can be found at URL: http://edmserver/edm/service?xsd=1.
Change the Copy Location Data and Delete Location Data process to only update the remote table cache version number once instead of once per table so that, for users with multiple servers, one server performing one of these processes does not trigger all the other servers to reload the cache every second.
Change the ping timer that periodically checks for commands from the server to not display the wait cursor while communicating with the server. This resolves the issue of some user keystrokes being lost due to the wait cursor being displayed by the background ping process.
Added function to launch the Micros Menu Button Editor. EDM users can now change how the Menu Buttons will look on the Micros POS Terminal before sending the changes to the store.
The setPropertyFileValue function enables users to update the value of a property in a property file on the server. For example, to set the mail.smtp.host property in the mail.properties file call: setPropertyFileValue( 'mail.smtp.host', 'smtp.gmail.com', 'mail.properties', false, 'EDM E-Mail Settings' )
See setPropertyFileValue function documentation for details.
Changed the remote table cache to only update the remote table records in the cache when the values have actually changed instead of replacing an old value with a new identical value and triggering a cache reload.
Fixed a problem in the form insert process that sometimes generated an error that the INSERT statement was invalid because the same column name was listed multiple times. An example of the error is: Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Column name 'MeasID' appears more than once in the result column list.
Fixed the Edit Shared Table Groups option to properly save new and updated shared table groups.
The following changes were made in this release.
EDM users can now take advantage of the Amazon Simple Storage Service (S3) to leverage the power of cloud computing to transfer files between the central site and remote sites. S3 gives users access to the same highly scalable, reliable, secure, fast, inexpensive infrastructure that Amazon uses to run its own global network of web sites. The system can transfer transaction files via Amazon S3 or synchronize entire directories with directories on Amazon S3.
See Amazon S3 Transfer for details.
Added function to send transaction files to the Amazon Simple Storage Service (S3). Remote sites can send transaction files to the central site by sending them to the incoming directory on S3 where the central site can retrive them. Central sites can send transaction files to remote sites by sending them to the outgoing directory on S3 where the remote sites can retrieve them. Users must have a valid Amazon Web Services account with access to S3 to use the function.
See sendTransactionFilesToAmazon function documentation for details.
Added function to receive transaction files from the Amazon Simple Storage Service (S3). Remote sites can receive transaction files from the central site by receiving them from the outgoing directory on S3 after the central site has sent them to S3. Central sites can receive transaction files from remote sites by receiving them from the incoming directory on S3 after the remote sites have sent them to S3. Users must have a valid Amazon Web Services account with access to S3 to use the function.
See receiveTransactionFilesFromAmazon function documentation for details.
The encryptAmazonCredentials function can be used to encrypt a property file containing the Amazon Web Services (AWS) access key and secret key. The encrypted credentials can then be passed to the functions that send and receive transaction files from Amazon S3 so that they can successfully log into AWS. The encrypted property file can be sent to remote sites so that they can also connect to AWS to send and receive transaction files without making the AWS access key key and secret key visible to personnel at the site.
See encryptAmazonCredentials function documentation for details.
The updateLocalDirToMatchAmazonDir function updates a local directory to match a directory on Amazon S3. This can be used to easily update large numbers of files at remote sites such as image or document files. For example, if remote sites have a directory with all the image files used by the POS system, a directory can be created on S3 that contains the latest image files and the remote site can compare the directories periodically or on demand to download any new or updated files and delete any files that no longer need to be kept.
See Amazon S3 Transfer for details.
The updateAmazonDirToMatchLocalDir function updates an Amazon S3 directory to match a local directory. This can be used to easily update large numbers of files on Amazon S3, such as image or document files, so that remote sites can retrieve them with the updateLocalDirToMatchAmazonDir function. For example, if the central EDM web server has a directory with all the image files used by the POS system at remote sites, a directory on Amazon S3 can updated to match the server directory.
See Amazon S3 Transfer for details.
The getPropertyFileValue function returns the value of a property in a property file. This function can be used to get the encrypted Amazon Web Services credentials from the property file to be passed to the functions that send and receive files from Amazon S3. For example, to receive transaction files at a remote site from S3 and get the AWS credentials property value from a property file called 'aws.properties' call: receiveTransactionFilesFromAmazon( '*', 'mybucket', 'outgoing', getPropertyFileValue( 'awsCredentials', 'aws.properties' ) ).
See getPropertyFileValue function documentation for details.
The updateLocalDirToMatchWebDir function can be used to synchronize a local directory with a directory on the server. This can be used to keep a directory of image or document files at remote sites synchronized with a directory on the server.
See Web Transfer - Transferring Directories for details.
Added a new type of transaction that tells the receiving EDM server to evaluate an expression. The expression can contain any valid EDM server functions but will not be able to call functions that are only available on the client side since the expression is evaluated on the server. An example of how this transaction may be used would be to tell remote sites to update a local directory to match a directory on the server when you have added or changed the contents of the server directory. An example EDM menu item action that sends this transaction after prompting the user to select sites is:
sendEvaluateTransaction( 'updateLocalDirToMatchWebDir( ''files/images'', ''c:\images'', true )', '', '', '0-Default Package', '', true )
The system now supports using Comet (HTTP push) to notify users instantly when notifications are sent out in both Tomcat 6 and Tomcat 7. If Comet notifications are not enabled, then the applet pings the server every 15 seconds checking for notifications. To enable Comet notifications add either the CometServlet6 or CometServlet7 to the webapps/edm/web-inf/web.xml file as follows:
<servlet> <servlet-name>cometservlet</servlet-name> <servlet-class>edmserver.CometServlet6</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>cometservlet</servlet-name> <url-pattern>*.comet</url-pattern> </servlet-mapping>
Added 'Copy screen to sites' button to the Positouch screen editor that enables users to copy the selected screen to other sites that do not already have the screen. If users try to copy a screen to a site that already has it, a duplicate key error will be displayed.
Changed form processing so that if the designer sets the Acting Keys property of the subform to a list of columns that contain columns that are not in the primary key, the subform will group the records by the column values specified in Acting Keys. For example, on the Micros Item form, the price subform has the Acting Keys property set to 'mi_seq;effective_from' so the price records are grouped by the 'Effective From' date instead of by the 'mi_price_seq' column which makes it easier to use.
Added the name of the form to all error messages displayed by a form to help form designers diagnose problems more quickly when a form has multiple sub-forms.
Changed Positouch import process to look up tables in the data map XML file by table name instead of by XML element names so that it will work with either 'UpdateScreens' elements or 'NewScreens' elements in the screens.xml file. Also added log entries for starting and successfully completing the import process.
The getConfigProperty function enables users to get the value of a property in the config.xml file. This can be used to pass values from config.xml to functions. For example, if the encrypted Amazon AWS credentials are in the config.xml in a property called awsCredentials then you can call the Amazon transaction file transfer functions like this:
receiveTransactionFilesFromAmazon( '*', 'mybucket', 'incoming', getConfigProperty( 'awsCredentials' ) )
See getConfigProperty function documentation for details.
The setConfigProperty function enables callers to set the value of a property in the config.xml file. For example, to set the awsCredentials property to the encrypted AWS credentials call:
setConfigProperty( 'awsCredentials', 'myencryptedawscredentials' )
See setConfigProperty function documentation for details.
The generateFunctionHelp function generates an HTML help file for a list of PluginLoader classes. This is useful for users that develop their own plug-in functions and would like to generate help information describing the functions and their parameters in the same format the system uses.
See generateFunctionHelp function documentation for details.
Changed forwarded command processing to immediately remove the session information after processing the command even for GetJobStatus commands which were not having their sessions removed previously. This reduces memory usage on the server and eliminates the need to time out user sessions to avoid filling up memory.
Change the transaction roll back process used when sending table refreshes to also roll back transactions with future effective dates that have the status "Received" in the central database. This resolves the problem of committing a transaction with a future effective date to a site then sending a table refresh after the site has received the transaction but before the future effective date arrives and causing the change to take effect immediately instead of on the future effective date.
Fixed the dialog that prompts users to enter new key values for tables that have multiple key values such as the IRIS Child Item Price table so that the prompt displays correctly for each key value instead of being blank for some of the values.
Changed the commit process so that when it creates a transaction file or temp file, if the file already exists it logs the fact in the system log and then renames the file to have a '.backup' extension. If there is already a file with the same name and a '.backup' extension it is deleted. This solves the problem of failures after a transaction file is created but before it is finished writing from requiring manual intervention to delete the file and synchronize the sent file number between central and the site.
Changed the startup process to display the original error when the server fails to start correctly instead of a "Company already exists" error. In previous versions, if the server failed to start because of a license or database error or some other error, instead of reporting the original error, it was reporting "Company already exists" and users had to check the log to find the original error.
Fixed clipboard options in form designer that appear when the user right-clicks a text field to properly cut, copy, and paste text values.
Changed bulk insert function used when copying records on a form to display an error message when it fails so the users don't have to check the log to find out if there was a failure.
Fixed Elstar screen editor so that users with version 4 or later of the POS don't get an error when they select a screen that has multiple versions and they click the Show Differences button. The differences are now displayed correctly.
Fixed the 'View Transaction Status' window to correctly scroll the transactions in the center window if the user selects a site with many error or delayed transactions.
Fixed form windows to not display the 'View form' or 'View spreadsheet' menu options on the menu bar when the form designer has not set the 'Allowed Views' property to all.
Fixed the 'Limit to List' property of combo box controls on forms to correctly prevent the user from entering a value that is not in the list when it is set to 'Yes'. If the control's 'Required' property is set to 'No' then a null value will be allowed in the control whether or not the user set the 'Null Item' property or not. If the 'Required' property and the 'Limit to List' property are both set to 'Yes' then the user may not enter a null value or a value that does not match one of the values in the list into the combo box text entry field.
Change the form processing so that in both grid view and form view if the CancelEvent() function is called during the Before Update or Before Insert event that is called when the user edits data and then tries to move to a different row, the user will stay on the original row. This resolves the issue of designing forms to validate row data before allowing updates and calling CancelEvent() when the data is not valid but the user was still able to go to a different row and the updates were lost.
The following changes were made in this release.
Changed system to enable request headers to identify users accessing the EDM central server through a portal so that the login information is preserved when running Tomcat 7. To enable single sign-on with either Tomcat 6 or Tomcat 7, edit the Tomcat/webapps/edm/web-inf/web.xml file to contain the lines in bold below:
<servlet-name>mainservlet</servlet-name> <servlet-class>edmserver.MainServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>web-inf/classes/config.xml</param-value> </init-param> <init-param> <param-name>enableHeaderLogin</param-name> <!-- Set to Y to enable single sign-on or N to disable. --> <param-value>Y</param-value> </init-param> <init-param> <param-name>headerLoginPassword</param-name> <!-- Set to the password encoded in the 'authorization' header sent from your reverse-proxy. --> <param-value>dummy</param-value> </init-param> <init-param> <param-name>headerLoginLogoutURL</param-name> <!-- Set to the URL where you would like users to be send when they logout. --> <param-value>http://www.yahoo.com</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
Changed system to check the servlet parameter 'enableUrlLogin' in web.xml to determine if users should be able to pass their user ID and password in on the URL. URL login is enabled if the servlet parameter is missing or set to Y. It can be disabled by setting it to N as follows:
<init-param><param-name>enableUrlLogin</param-name><param-value>N</param-value></init-param>
Changed logout so that when user access the system via browser using single sign-on, such as going through WebSeal which passes an "authorization" header to EDM, when they log out the system will jump to the configured URL, such as the single sign-on URL. To enable this, single sign-on must be enabled and add the following parameter to web.xml and specify the URL to display on logout:
<init-param><param-name>headerLoginLogoutURL</param-name><param-value>http://www.yahoo.com</param-value></init-param>
Added form 'Update Item TaxCatNum' that enables users to select an existing tax category number, preview a list of all the items that currently have that tax category number, then update all the items with the selected tax category number to use a new tax category number. To add the form to the menu, add an option with the action open( 'form', 'Update Item TaxCatNum' ).
Update selected rows for selected sites and generate transactions for the changes.
Create row with column values from the given list of controls on the active form.
Get description of package that contains transaction for the active form.
Get date/time transactions becomes effective for the active form.
Get date/time transactions terminate for the active form.
Get flag for whether transactions for the active form should be processed when only processing forced transactions.
Fixed Positouch screen editor to display an error message to the user when an error occurs on one of the menu options displayed when the user right-clicks on a button.
When user creates a new screen then chooses not to save it, the system goes back to the list of screens without displaying a Null Pointer Exception error message.
Changed command forwarding to immediately remove the session/visit object once the forwarded command has completed its processing which may be in a background job.
Changed policy file loader to lock the file while it is being read to prevent the read from happening while another thread is writing the file causing an error reading the file.
The following changes were made in this release.
Changed user editor to not show users that have permissions to view sites that the current user is not permitted to view.
Fixed role editor to not delete permissions when renaming role.
Fixed policy file loader to correctly assign role when loading the original version of the policy file that only supported one role per user.
Fixed package purge process to not delete packages with no transactions unless they were created at least one day ago. This prevents transactions from getting into the wrong package because the user created the package with id N, then the package was purged before the user could save his transactions, then a different packages was created with id N, and the first users transactions are saved with package id N.
Fixed problem with controls that have the 'Label control' property set so that when the control is made visible or invisible, the label control's visibility is set to match regardless of the order of the controls saved in the form file.
Fixed "Attempt to mutate in notification" error that sometimes occurred when editing a table directly or using a form to edit a system table such as the site table.
Clicking the load button in the Menu Button Editor for IRIS would sometimes cause a NullPointerException. This has been fixed.
The following changes were made in this release.
Fixed single sign on to correctly find the user passed in on the authorization header. This fix was applied as a hot fix with the version number 7.0.4.100.
Forms and queries are now saved as separate XML files in the 'forms' or 'queries' directory in the directory where the schema file is saved. This makes it easier to replace individual forms or queries by simply replacing the file.
EDM Forms now allow for the restriction of which view(s) are available to the user at runtime. You can specify Form, Spreadsheet, or All.
Added a new function reloadCachedData that can be added to the menu or called as a scheduled task. Calling the function causes the server to re-initialize itself and reloading the configuration data, the users, roles, permissions, sites, site groups, remote tables, menus, schema, table conversions, transient fields, snapshots, and the application forms and queries. The eliminates the need to restart the Tomcat server when any of this data is updated manually or by another process. Note that the command will stop users from interacting with the server until all currently running requests and background jobs have been processed at which time the cached data will be reloaded so it is best not to run it while you have a long background job running.
Security settings are now saved in policy.xml with just the passwords encrypted instead of the entire file being encrypted. Encrypted policy files from older versions are automatically converted to the new format and renamed to 'policy_system_generated_backup'.
Changed system to check to see if sites, site groups, remote tables, users, roles, and permissions have been changed while the server is running and, if so, reload the changed data. This enables multiple servers to keep their settings synchronized. If one server updates the settings, the other servers will detect that their data is out of date the next time they try to access the data and reload the latest data.
When using SQL Server for the central database, the system now uses a single call to the database server to allocate a block of transaction id's using SQL Server transactions to prevent other processes from allocating the same ID's instead of multiple calls to lock and unlock the allocation process
Fixed error that sometimes occurred when sorting a column of a form in grid view so that it no longer displays a NullPointerException error.
Form controls that edit underlying numeric data now prevent the entry of data that will cause an exception upon save. Only digits, the minus sign (-), and the decimal point may be entered in numeric fields. The Max Decimals property, when set, is enforced.
There is a new report available that is similar to the existing Price Change by Price report. This new variation simply puts the sites below the price change detail in a collapsible list.
runPriceChangeByPriceGroupReport - Display a Pricing Report with the Site list below the price group detail.
Users can now search for values in forms by typing in some text in a new search box in the toolbar. Find Previous and Find Next toolbar buttons have been added to the toolbar as well.
When a Location Value Popup Panel comes up, it will no longer display off of the right side of the browser window.
If you have scheduled tasks defined in config.xml, they will show up in the Background Job Viewer when they execute.
When a form designer specifies an Acting Key Field, such as "obj_num" for Micros, the user will be prompted to supply that value when copying records.
When a background image was specified in a menu, but the image file did not exist on the server, a "NullPointerException" was generated. This has been fixed.
Added 'Label control' property to form controls so designers can specify which label is associated with a control. For example, when the designer adds a label control named 'idLabel' and a text control named 'id' to a form, she can also set the 'Label control' property of the text control to 'idLabel' so that if the 'id' text control is hidden, the label will be hidden also.
Changed label on selected rows to "Rows included in row set:"
Fixed form so that when you select a different row set, the correct selected rows are shown.
Fixed form so when you create a new row set, you can add rows immediately without leving the row set screen.
Changed editor to display row set ID number in list of row sets so they can be used when adding row set permissions.
Changed editor to not change the row set ID number when the row set is updated so existing row set permissions still work.
Changed editor to enable user to scroll through list of table columns and check viewable and editable columns.
Forms that hide data entry controls due to row set permissions can now also hide the label by setting the 'Label control' property of the control to the name of the label control on the form that is associated with the data entry control.
Changed forms so that when users are editing a numeric field, if they delete all the characters from the field, the saved value is NULL instead of 0.
The following changes were made in this release.
The following enhancements were made in this release
Improved overall performance of system by streamlining memory management routines.
User and role editors have been improved so that users who have permission to use them can edit users and roles but cannot grant permissions that they do not already have. For example, a franchise owner can be granted permission to use the user and role editors so that he can set up users and roles for his employees but he will not be able to give them any permissions that he does not have himself.
Administrators can now control which sets of rows within a table users have permissions to view. For rows that the user can view, administrators can control which column can be viewed and which can be updated.
To create row sets, add a menu option with the name Edit Row Sets and the action openRowSetForm(). Users can create one or more row sets for a given table by giving them different names. Each row set has a set of select columns, a set of columns, and a set of selected rows. Select columns control which columns are displayed when selecting the rows for the row set. For example, to select items you would include the item number column and the item name column so that when selecting the items for the row set you can see both the item number and name. The filter flag on select columns determines whether the column is used to see if a row is in a row set. In our item example above, we would only set the filter flag on the item number column because we want items with specific numbers in the row set and don't care what the name is. The set of columns in a row set determines which columns in the table the user will be able to view and edit. If you want the user to be able to see the column, add it to the column list. If you want the user to be able to edit the column, check the Editable checkbox. To select the rows in the row set, click the Add button beneath the list of selected rows and click one or more rows to add to the row set and click OK.
To restrict a user to only seeing certain rows and columns add a rowset permission to the user's role for each row set you want them to have.
When users open a form, if the user has been given row set permissions for the table being edited, then she will only be able to view the rows defined in the row sets. In form view, if a field is for a column that is not in the list of row set columns then the control will be hidden (or filled with ### in grid view). If the field is visible but not editable then the user will not be allowed to change the value in the field.
For example, to set the value of 3 controls based on the value of another control, use an expression like this:
=iif( tax1, setValue( 'tax3,tax4,tax5', 'T' ), setValue( 'tax3,tax4,tax5', 'F' ) )
For example, to hide 3 controls based on the value of another control, use an expression like this:
=iif( Price > 5, setControlProperty( 'tax3,tax4,tax5', 'visible', 'N' ), setControlProperty( 'tax3,tax4,tax5', 'visible', 'Y' ) )
Disabled columns are skipped when navigating with the TAB or Arrow Keys when a form is in Grid View.
Disabled columns (Text Entry fields, CheckBox fields, and ComboBox fields) are "grayed out" when a form is in Grid View.
There is now an 'update button' in form fields that, when clicked, brings up the Location Values editor. Pressing Ctrl+Enter still works as expected.
There is now a 'Locations' button on the Location Values editor that, when clicked, brings up the Locations window for the selected row. Pressing Ctrl+Enter still works as expected.
Toolbox tools are now "pluggable", meaning that new tools can be created and plugged into EDM via the ServerPlugins and ClientPlugins classes.
Null entries can now be added to ComboBox controls. Set "required" to "no" and then set the "Null Item" property to whatever you want the null entry to say in the drop down at runtime.
Added support for a ColorChooser control. The Color Chooser control, available in the Forms Designer Toolbox, will prompt the user for a color using the standard Color Picker window. When the color is chosen, the underlying field is saved as an integer representation of an RGB color value.
Added support for a Micros specific Icon Chooser control. The Icon Chooser control, available in the Forms Designer Toolbox when designing forms for the Micros POS, will prompt the user for an icon that resides on the server. Once the icon is chosen, the icon ID is written to the underlying field.
The Forms Designer now opens in a Tab, rather than in separate windows.
You can now ctrl+click multiple controls in the designer window.
You can now edit common attributes of multiple selected controls in the attributes panel.
You can now change a control's type (or the type of multiple selected controls of the same type) to a different type. Select a control or controls, click the Edit menu and select the "Change control type" menu item.
Added filter field to help find fields by typing a partial name.
Find control with a certain source column by highlighting the field in the field list and pressing F3.
Refresh transactions are now committed as soon as each FIL is generated so if users send a refresh to 10 sites and get an error on site number 8, they do not need to resend the first 7 sites since they were successfully generated and committed.
System no longer prompts users to commit packages when closing the user or role editor.
IRIS menu editor now shows in a tab and supports a resizable placement grid. You can also set the background image for the menu, and images containing both pressed and unpressed components display as expected in the editor.
The following defects were resolved in this release.
When editing a field that has a validation rule in an EDM Form, the validation rule was not being respected when making changes in the Location Values popup window. This has been fixed.
Changed Edit Sharing window to reload all difference reports from the server every time to avoid the problem of the report being cached and not updating the display when the report changes.
Fixed the requery control function so that if the control being requeried is a list box or combo box with the same query as other list or combo box controls, all the controls have their list of rows updated at the same time and the 'Index out of bounds' error does not occur.
Refresh transactions now rename the .FIL.TMP when the XML is created and only for the transaction being committed. This solves the problem of all the .FIL.TMP files in the outgoing folder being renamed at once even if not all the refreshes are being committed and getting a 'File not found xxx/FIL.TMP' error.
Users can now set the background bitmap on IRIS menus and menu tabs.
Transaction viewer no longer displays transactions from sites the the user does not have permission to see.
The following changes were made in this release.
The following enhancements were made in this release
Changed the Reset Site, Send Table Refresh, Request Table Refresh, and Send Table Refresh to Test Site functions to only commit the requested transactions instead of all the transactions in the system package to prevent system processes from committing transactions concurrently.
Added autoCommitSendRefresh and autoCommitRequestRefresh properties to config.xml enabling users to turn the auto committing for table refreshes on or off. Set the properties to "N" to disable auto committing or "Y" to enable it. If the properties are not found auto committing is enabled.
The following defects were resolved in this release.
Fixed error that occurred when users tried to edit button properties in the IRIS menu editor.
The system updates the policy file on startup if it is from version 7.0.1 or older to remove the permission to Edit Users and Edit Roles from all roles except Administrator. Administrators can give roles permissions to edit users or roles by granting the role view permission on the menu item in the role editor.
The following changes were made in this release.
The following enhancements were made in this release
The system can now be configured to retry communications to the web server if there is a communication error. The number of retries and the number of seconds between retries can be configured for both remote sites communicating to a central server and for users accessing the central server via a browser. The default number of retries is 4 for remote sites connecting to a central server and 3 for users connecting via browser. The first retry occurs immediately after the communication error, the default time between retries after the first one is 5 minutes for remote sites and 1 second for users accessing the central system via a browser.
To change the default the retry count and time between retries, add lines like these to config.xml
maxRequestRetries = "3" secondsBetweenRequestRetries = "60"
To configure the retries at a remote site, add the lines to the config.xml at the remote site. To configure the retries for users accessing the central system via a browser, change config.xml on the central server.
When transferring files between remote and central sites, the temp files are now named with the real file name plus the extension ".EDM_TEMP". This means that if the file transfer does not complete, when it restarts during the next web transfer, the same temp file will be overwritten. This prevents temp files from building up in the incoming folders and makes it easier to know what file failed.
Change the 'Commit Selected Packages' function to use a wizard to select the packages, sites, and effective dates. The wizard is displayed within a tab instead of in popup windows and gives the users the ability to move back and forth between the screens.
Added the function showDocument( URL ) that causes the system to display a document in a separate browser window. This is useful for displaying help or other information when users select a menu option or a button on the form. If the document URL does not contain a complete path it will be relative to the webapps/edm directory on the web server. For example, showDocument( 'help/mydoc.htm' ) will display the webapps/edm/help/mydoc.htm file in a separate browser window.
showDocument - Display a document in a browser window. Applets can only display documents on the same server they were started from.
Added function to directly execute an SQL statement on a data source without any parsing by EDM. The SQL statement can be any SQL statement that is valid on the server and database identified in the data source.
queryValue - Directly execute the given SQL statement on the given data source and return the value of the first column in the first row or a blank string if no rows returned. If the query is not a select statement, execute the SQL statement and return empty String. Use caution to avoid exceeding available memory.
Added function to return the selected sites for the currently active form as a comma-delimited list of site ID numbers.
getSelectedSites - Return selected sites for the active form.
Changed subform controls so that in cases where the data on the parent form is not actually related to the data on the subform, the Master Link Fields and Child Link Fields properties may be left blank. This can be useful for creating a single parent form that has subforms for unrelated tables.
Changed transaction reports so that they use a different file name each time they are run so that browsers won't cache an older version of the report and prevent users from seeing the latest version without refreshing the browser by pressing Ctrl-F5. Previous files used for the same report by the same user are deleted so that the report files do not fill up the hard drive over time.
Administrators can now decide whether or not a user can see the menu options for Users, Change Password, Edit Users, Edit Roles, Application, Tables, Queries, and Forms. For example, to limit the Central user role to only allowing users to change their password but not be able to work with the Application menu or its sub-menus, you would add permissions like this to the Central role:
Object Type | Object Name | View |
---|---|---|
menu | * | Yes |
menu | Users | Yes |
menuitem | Change Password | Yes |
menuitem | Edit Users | No |
menuitem | Edit Roles | No |
menu | Application | No |
menu | Tables | No |
menu | Queries | No |
menu | Forms | No |
Changed "Sites Have Warnings" to "Sites late in responding" on transaction viewer to make it clearer to users why the sites are listed.
The following defects were resolved in this release.
Changed popup windows to appear within the tabs of the main EDM window in the browser to eliminate problems with popups going behind the browser window or not responding to user actions.
Changed system so that you cannot save or rename a query to the same name as a table (with or without the prefix such as 'IRIS_dbo') instead of deleting the table when a query of the same name was saved.
Fixed problem with background jobs that temporarily set the permission level to Administrator, such as running a transaction report or processing incoming transactions, so that the user that started the job does not have admin permissions while the job is running. This prevents them from seeing and committing packages created by other users when they should not be allowed.
Fixed problem with transaction reports that enabled users to report on packages created by other users that don't share a site role by leaving 'All' packages selected. Now, if a user's role only includes certain sites she will only be able to select and report on packages she created or packages created by other users that have the same site role. A site role is any role that defines site permissions.
Added support for databases that contain binary 0 characters in text columns in the database. This eliminates the error when reading transaction XML files that the binary 0 is an invalid character.
Fixed Transaction Status Viewer so that a user that is only allowed to see certain sites will not be able to see transaction statuses from other sites.
Fixed IRIS Menu Editor so that when copying menus to other sites the transactions are placed in the package selected by the user instead of in the default package.
The Item Properties Editor in the Aloha Submenus now fully displays the OK button.
The display of the Cell Panel Buttons would sometimes be cut off. This has been fixed.
The Coupon Categories in the POSitouch menu editor now properly save to the database.
The following changes were made in this release.
The following enhancements were made in this release
Added report for IRIS users to view price transactions grouped by the item number, old value, new value, and effective date to make it easier for users to see what price changes are pending with less duplicate information. Transactions that are the same at multiple sites are only shown once instead of once for each site.
Added report for IRIS users to view tax transactions grouped by the tax id, old value, new value, and effective date to make it easier for users to see what tax changes are pending with less duplicate information. Transactions that are the same at multiple sites are only shown once instead of once for each site.
Form designers can now call functions to show or hide controls on a form at runtime.
For example, to hide a control based on the value of another control use an expression like this:
=iif( Price > 5, setControlProperty( 'tax3', 'visible', 'N' ), setControlProperty( 'tax3', 'visible', 'Y' ) )
Form designers can now call functions to enable or disable controls on a form at runtime.
For example, to hide a control based on the value of another control use an expression like this:
=iif( Price > 5, setControlProperty( 'tax3', 'enabled', 'N' ), setControlProperty( 'tax3', 'enabled', 'Y' ) )
Added the remote host to the error message logged by the server when it cannot process an incoming HTTP request to help the administrator find the cause of the problem.
Changed transaction processing so that it only tries to obtain the transaction processing lock once instead of once for each site. This solves the problem of the transaction processing loop taking a very long time when transaction processing is already locked because it was waiting up to 5 seconds per site for the lock request to time out.
Changed Site Manager so that if it is already displayed on a tab and the user tries to open it again, the existing tab is brought to the front instead of creating a new tab.
Form designers can now use plugin functions to return the row data for list and combo box controls on forms by setting the 'Row source type' property to 'Table/Query' and the 'Row source' property to 'plugin:' followed by the plugin function name. The plugin function must be loaded as a server plugin function in config.xml and must take one parameter which is a comma-delimited list of site id's and must return a MemoryDataSet object. For example, to call the plugin function getColorDataSet to get the rows for a combo box, set the 'Row source' property to 'plugin:getColorDataSet'.
Changed the server-side requestTableRefresh function so that if the site list parameter is blank or '*' then a refresh will be requested from all sites that the user has permission to access.
Changed commit process so that when transactions are committed the status is set to committed and the status date is set to the current date and time.
The following defects were resolved in this release.
Changed logout procedure to not clear the session information about the users visit so that if there are background jobs such as transaction processing using the session information, they will be able to continue.
Fixed label controls on forms to properly display left, center, or right alignment in both design view and form view.
Changed forms so that the popup window that enables users to edit values for multiple sites when they click on a check box, radio button, or toggle button is not displayed twice.
Changed form processing so that if a user opens a form from the menu or by switching to form view or spreadsheet view from the form designer, when the package and site selection screen is visible, the form cannot be opened or designed again. Instead, if the user tries to open or design a form while the package and site selection screen for the form is displayed, the package and site selection screen is brought to the front.
Changed form designer so that if user clicks the 'Form View' or 'Spreadsheet View' button and then cancels out of the package and site selection, the form designer is redisplayed. This fixes the problem of leaving the form design locked when the user cancels the package and site selection.
Changed the location value popup window to be made the front window immediately after being opened to prevent the it from occasionally being displayed behind the browser window.
Fixed Site Manager to correctly calculate the number of successful sites, error sites, and unresponsive sites and to only include the sites the user has permission to view. Also changed the count of sites and transactions with errors to not include failed transactions that have been marked fixed.
Fixed the EOFError that sometimes occurred when deleting a row from a form using a package with a termination date.
Fixed the automatic refresh that occurs when an insert, update, or delete transactions fails at a remote site so that it sends a refresh of the table and only the related tables that are actually maintained for the site in the central database. This eliminates the "Table X not maintained for site" error that occurs in this situation.
Fixed the form designer so that you can drop controls onto sub-tabs and they set the Tab Control and Tab Page properties correctly and so that controls on one subtab don't display on other subtabs.
Fixed form designer so that when controls are dragged above or below the design area, the design are scrolls correctly under the controls and when the user releases the mouse the controls are correctly positioned.
Modified the IRIS menu editor so that button labels will break to the next line if a CR/LF character combination is found in the string and also if a CR character is found by itself. This resolves the issue of IRIS breaking button labels when a CR character is found but EDM ignoring the CR by itself as a line break character.
Changed the Sybase support functions to handle string constants that contain backslashes, such as file paths, by replacing any embedded backslash characters with two backslash characters.
Changed the form designer so that when users select a control then double-click a field in the field list it sets both the control name and source to the selected field unless that control name is already being used by another control.
The following changes were made in this release.
The following enhancements were made in this release
Changed the package/site selection wizard so that if a user clicks on a form and the wizard is displayed and then the user clicks on the form again, the original tab will be brought to the front instead of creating a new package/site selection tab.
Changed startup process so that if an invalid role name is detected while loading users and roles, the system logs the error and continues loading. All users and roles will still be loaded correctly except that users that were assigned the invalid role name will no longer have that role. If the log reports an invalid role name, the administrator can just re-create the role and re-assign it to the appropriate users to resolve the issue.
Removed the drop-down from the site selection screen that enabled users to filter the list to only show share groups or location groups. Since the locations and groups are already in a tree and users can show or hide any branch of the tree, this function was redundant and was removed to simplify the user interface.
The following defects were resolved in this release.
The Transaction report and the IRIS Price Change report were changed so that if the user leaves 'All' sites selected, only the sites they have permission to see are included in the report.
Changed IRIS Price Change report to group the transactions correctly under the section header with the site number and name.
Changed 'Copy Record' function so that if there are child tables, the transactions for the child tables are added to the selected package just like the transactions for the main table.
Fixed the "concurrent modification" error that sometimes occurred when users change the name of a Role and try to save the change. Roles may not be deleted if any users have that role and if a role is updated, all users with that role will immediately have the updated role name and permissions.
Fixed Copy Record function so that if certain sites can't be updated because they are part of a share group that was not completely selected, it simply doesn't copy the data to those sites instead of displaying an error message.
The following changes were made in this release.
The following enhancements were made in this release
The Copy Record function on forms has been made faster by using bulk transaction inserts for central databases running on SQL Server. The bulk inserts are enabled by default but they may be turned off by setting useBulkInserts="N" in config.xml.
Changed site selection screen so that if a site appears multiple times on the tree of available sites, such as in a share group and in the 'Locations' branch, if the user selects the site, all instances of the site will be moved to the selected tree. Moving sites from the selected tree to the available tree works the same way.
Changed the effective and termination date and time fields to different controls to make them more usable and to make them work with any version of Java. The date controls highlight today's date and allow the user to click today's date even if it is already selected and the time field is a simple pick list of times similar to the one used in Microsoft Outlook and the user can type in their own time if desired.
Change the transaction report so that when it is run at a central site, transactions both from and to any remote site will be grouped under a site section heading with the remote site number and name.
The following defects were resolved in this release.
Increased the width of the effective and termination time fields to ensure that the entire time would be visible without scrolling. Also removed the seconds from the time fields so that the times are entered simply as hours and minutes with an AM/PM indicator.
The following changes were made in this release.
The following enhancements were made in this release
Added option to enable users to encrypt the data source connection string and/or the data source password in the config.xml file so that passwords are not in clear text in the file where unauthorized personnel may be able to view them.
To cause the system to encrypt the connection string of a data source add encryptedConnect = "" to the data source in config.xml. To cause the system to encrypt the password of a data source add encryptedPassword = "" to the data source in config.xml.
When the system starts up, if it finds both a connect and an encryptedConnect attribute it will encrypt the value of the connect attribute and resave the config.xml file with the new encrypted value and without the original connection string. If both a password and an encryptedPassword attribute are found, the system will encrypt the value of the password attribute and resave the config.xml file with the new encrypted value and without the original password.
To change either the connection string or the password after it has been encrypted, simply add the connect or the password attribute back into the config.xml with the desired new value and restart the system, the new values will be encrypted and saved in the config.xml file.
Added flags to encrypt the connectsion string and/or the password when adding a new data source to the system configuration using the AddDataSource function.
Improved the performance of the 'Copy Record' function on all forms so that all the rows for the selected sites in each related table are copied with a single SQL statement. This is the default behavior but it can be disabled by setting useInsertSelect = "N" in the config.xml file.
Change the Reset Site function so that in the central database, only the transactions from the remote site are deleted, not the transactions sent to the remote site. This allows the remote site to start over sending transaction id 1 again without causing a duplicate key error at central but preserves the outgoing transactions needed to roll back open and future effective date transactions to the remote site.
Changed system to use a wizard when opening forms or screen editors so that users select the package on one screen, then click 'Next', then select the sites on a separate screen. This makes it easier to users to remember to select the package before selecting the sites and reduces crowding on the site selection screen.
Added an option to the system to set the effective dates when creating and committing packages instead of every time the user selects sites. This makes it possible for the user to update the effective date, termination date, and force flag when committing packages if desired and saves them from having to select effective dates each time they open a form and select an existing package. When selecting packages, if an effective date, termination date, or force flag is set, the dates or flags will be displayed after the package name.
Changed button label on Test LDAP Settings from 'OK' to 'Save Settings' to avoid confusion by users who don't have their LDAP settings working correctly yet. If users click 'Save Settings' the system will be configured to use LDAP for user authentication. The manually change the system back to using the built-in security, set useLDAP = "N" in config.xml and restart Tomcat.
The following defects were resolved in this release.
Fixed login screen so that when user clicks refresh in the browser, she can still enter a user ID and password and log in successfully.
Fixed Execute Command menu option to work correctly without displaying a class not found error.
Fixed the IRIS Menu Editor so that when used at a remote site, adding, updating, or deleting buttons or menus saves the users changes properly and sends the correct transactions to central.
Fixed background process viewer so that tasks are removed from the list 30 seconds after the task is complete even if the user closes the browser before the task completes.
Fixed background process viewer to show the correct month and show the time in the local format and to show the correct elapsed time and show time remaining as 0 for tasks that are complete.
Fixed transaction report selection filters so that only selected packages are included in the report and so that when switching between the list of tables and the list of packages, each list is displayed correctly.
The following changes were made in this release.
The following enhancements were made in this release
Added 'Notify Users' option to the 'Setup' menu that enables users to send a message to all the users that are currently using EDM. For example, the administrator may send a message to all users that the server is going to be restarted. The menu option uses the new 'notifyClients' function.
The following example shows a menu item with a predefined message warning users that the server will be restarted in 10 minutes followed by another warning 5 minutes later:
Name: Send 10 Minute Server Restart Notice Action: notifyClients( "Notice", "Server restart in 10 minutes.", 0 ) + notifyClients("Warning", "Server restart in 5 minutes", 5 )
Changed system to support package-level effective date, termination date, and force flag. When users create a new package they will be prompted for the effective and termination date and force flag for the package. When the user selects an existing package she will not be prompted for effective and termination date or force flag. When the user commits a package, the package effective and termination date and force flag will be displayed and the user can change them before committing if needed. To turn this behavior off and prompt users for effective dates and force flag every time, set the usePackageDates="N" to the config.xml file.
Added 'Run Price Change Report' to the 'Transactions' menu which creates a report of all the changes to the IRIS price table and displays them in a simple format that includes item names. Users can filter the report by transaction dates, packages, sites, transaction types and transaction status.
Modified the location selection screen so that when users create a new package and select their sites and effective/termination dates and force flag, the new package is saved with their selections. When a user selects a package instead of creating a new one, the default sites, dates, and force flag that were saved with the package will be pre-selected. After selecting a package, if the user modifies the sites, dates, or force flag, the new selections may be saved as the defaults for the package by clicking the 'Save as Package Defaults' button.
Changed the transaction report to only group by 'Sites' instead of 'From Sites' and 'To Sites'. The new report enables users to select sites and then creates a report of the transactions that have been sent to or received from those sites. Internal transactions sent from the central site to itself, such as transactions to restore a value in the central database when a termination date arrives, are included in the report only if all sites are selected.
Added support for Sybase 9 at both remote and central sites.
The following defects were resolved in this release.
Fixed automatic recovery of lost SQL Server connections to properly detect new error message formats and recover the connection when it is lost due to a temporary network error or a restart of the SQL Server service.
Changed dialog processing so that when a dialog is opened and the user clicks something on the browser, the dialog remains in front of the browser. This solves the problem of a dialog going behind the browser without the user noticing it making the system appeared to be locked up.
The following changes were made in this release.
The following enhancements were made in this release
Users can now configure the system to use XML or binary messages from the client to the server, the default is binary. Binary messages use less memory and are faster to create and transmit. XML messages make it easier to trace message activity and use load testing tools. To configure the system to use XML messages, copy 'loginPage.jsp' to loginPageXml.jsp' and change the copy, then when you want the client to use XML to communicate with the server, browse to the web page using a URL such as 'http://localhost:8080/edm/loginPageXml.jsp'.
<object classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase = "jre-6u7-windows-i586-p.exe#Version=1,6,0,07" WIDTH = "100%" HEIGHT = "95%" ALT = "This page requires a Java enabled browser!" > <PARAM NAME = NAME value = "EDM" /> <PARAM NAME = CODE VALUE = "edmclient.Client.class" /> <PARAM NAME = ARCHIVE VALUE = "edmclient.jar,imageconversion_Runtime.jar,forms-1.2.1.jar,jcalendar-1.3.2.jar" /> <param name = "type" value = "application/x-java-applet;version=1.6"/> <PARAM NAME = "bgcolor" VALUE="0xE3EFFF" /> <PARAM NAME = "serialize" VALUE="xml" /> <comment> <embed name = "EDM" type = "application/x-java-applet;version=1.6" CODE = "edmclient.Client.class" ARCHIVE = "edmclient.jar,imageconversion_Runtime.jar,forms-1.2.1.jar,jcalendar-1.3.2.jar" ALT = "This page requires a Java enabled browser!" WIDTH = "100%" HEIGHT = "95%" bgcolor ="0xE3EFFF" serialize = "xml" pluginspage = "jre-6u7-windows-i586-p.exe#Version=1,6,0,07"> <noembed> This page requires a Java enabled browser! </noembed> </embed> </comment> </object>
At remote sites where EDM runs as a java application, you can tell it to use XML for the messages it sends to the central server by including '-xml' on the command line when EDM starts as follows:
call "C:\EdmWeb\go" "-xml" "-expr=ShowWarnings(0)+ShowErrors(0)+TransferLocationFilesViaWeb('*')+ProcessTransactions('*')+TransferLocationFilesViaWeb('*')+Exit()" "-nomenu"
Reformatted several of the XML messages between clients and servers to reduce their size and increase the performance when the client requests data from the server.
Added new functions to add and delete data sources from the system configuration. This makes it easier to automate application upgrades that require that the data source version be modified. The functions can be called from the command line as shown in the following example:
@"C:\EdmWeb\jre1.6.0_07\bin\java.exe" "-Duser.dir=C:\EdmWeb" -jar C:\EdmWeb\lib\system.jar "-user=admin" "-pwd=admin" "-expr=deleteDataSource('IRIS') +addDataSource( 'IRIS', '3.9', 'SQLSERVER_JDBC', '', 'IRIS', 'localhost', 'N', 'sa', 'pw', 'y' ) +Exit()" "-nomenu"
The following defects were resolved in this release.
Fixed EOFError that was displayed when adding a new button or attempting to edit the properties of a button that did not have a category assigned to it yet.
The following changes were made in this release.
The following defects were resolved in this release.
Fixed the send table refresh function so that if multiple sites are selected, the refreshes are sent to each site instead of all the refreshes being sent to the first selected site.
The following changes were made in this release.
The following enhancements were made in this release
Updated user interface to work without delays or warning beeps when using the latest version of the Java Runtime Environment which has new security mechanisms for applets. The system was tested successfully with Java version 6.0_24.
Added Close Package option to the Transaction menu that enables users to select a package containing open transactions and select the sites affected by the transactions and then sets the status of the open transactions to "Closed" so the package and sites can no longer be committed. This is useful if users have requested a refresh from a remote site which makes the open transactions irrelevant.
Added Open Package option to the Transaction menu that enables users to select a package containing transactions that were set to "Closed" by the Close Package function and select the sites affected by the transactions and then sets the status of the closed transactions back to "Open" so the package can be committed for the sites. This is useful when a package is closed accidentally and the user wants to reopen it.
Add a new option to send a table refresh from one site to a lab/test site to make it easier to test changes to site data. When users click Transactions - Send Refresh To Test Site they will be prompted to select the site whose data they want to test and then the lab/test site where the table refresh transaction will be sent. The table refresh is committed automatically. After sending the refresh, transfer and process transactions on the lab site to load the data onto the lab system and test the data. If further changes are necessary, change the real site and send another refresh to the lab/test site to test the changes.
Send table refresh transaction from a site to a lab/test site.
Added function that enables users to select a package and one or more sites and change the status of transactions for the sites in the package to a different value. For example, all open transactions in the 'Test' package for site 17 can be set to closed. This function is used in the new Open Package and Close Package menu options.
Change status of the transactions for sites in a package to a new status.
When sending or requesting a table refresh, users are no longer required to select a package or effective/termination dates and the refresh transaction is committed by the system immediately. The 'force' flag is always set on refresh transactions. This avoids problems with generating a table refresh without committing it, then making other changes to the data and committing them then committing the refresh which causes the other changes to be overwritten.
Changed the 'Copy Location Data' function to give the user the option to 'Copy table sharing' when selecting the tables to copy. If the 'Copy table sharing' box is checked then when copying a shared table the table will be shared at the destination site. If the 'Copy table sharing' box is not checked then when copying a shared table, the shared data will be copied to the destination site and the table will be marked unshared for the destination site.
Added Before Delete property to the Site form (CDMLocationsAndGroups) to cause it to delete all the site data from all tables when the site is deleted after prompting the user for confirmation. Existing site forms can be modified to do this by setting the Before Delete property to:
=iif( Msg( "All data for this site will be deleted from all tables in the central database. Do you want to continue?", "Delete Warning", 10 ) = 2, showWarnings( 0 ) + deleteLocationData( SITEID, "*") + showWarnings( 1 ), cancelEvent() )
Added filter to transaction report dialog that enables users to select specific types of transactions to include in the report such as error or refresh transactions.
Changed site selection window so that if users selects an effective or termination date, the time is set to a default value. If the date is today, the time will be set to 10 minutes later than the current time, otherwise the time is set to 12:00AM. This keeps the user from having to enter a time in many cases and avoids an error message about the effective date being earlier than the current time if the user selects today's date and doesn't fill in the time field.
Changed the site selection tree used for copying data so that sites that are share groups are available for selection as the source site or the destination site.
Change reset site transactions to always be sent in the system package and to be committed as soon as they are created. Users no longer have to select a package when resetting sites.
Reformatted several of the XML messages between clients and servers to reduce their size and increase the performance when the client requests data from the server.
Changed system to only use the fast row inserter at central sites to avoid issues with mapped server instances that occur at some remote IRIS sites. The system will use the normal row iserter at remote sites even if the useRowInserter attribute in config.xml is set to "Y".
The following defects were resolved in this release.
Fixed a Null Pointer Exception error that sometimes occurred in Show Recommended Groups when there were 10 sites in a recommended group.
Modified user interface so that when new screens are displayed, the keyboard focus is consistently set to the correct window.
Fixed the transaction report to correctly display both the old and new values for each column in the transaction.
Modified XMl generator to put in the XML string if a binary zero character is encountered. This resolves an XML parser error caused by a binary zero in the XML string.
Changed how remote sites handle errors reading incoming transaction files so that if there is an error during the renaming of the file to a '.err' extension or sending the error transaction back to central, the error is logged and the transaction file number is advanced correctly.
Fixed "Record has been changed by another user." error that occurred when pasting buttons onto the Aloha Submenu, Modifier, and Modifier Exclusions screens when the destination button had more than one value for any of its properties among the selected sites.
The following changes were made in this release.
The following enhancements were made in this release
Added a 'Run Transaction Report' option to the 'Transactions' menu so users can easily get a list of transactions. Users can select which packages, sites, transaction dates, transaction statuses, and tables are included in the report. The sections of the report can be expanded and collapsed by clicking the '+' and '-' icons. The report is displayed in a new browser window so it can be printed or emailed.
Added option for users to enter a list of email addresses to be notified when packages are committed. To edit the list of email addresses, select 'Transactions - Edit Commit Listeners'. For emails to be sent successfully, the email server must be configured in the mail.properties file in the same folder as the schema file. The following sample file is configured to use Google's gmail as the mail server with a phony user id and password:
edm.from = donotreply@edm.com edm.password = setThisToTheRealPassword mail.smtp.user = setThisToTheRealUserID@gmail.com mail.smtp.host = smtp.gmail.com mail.smtp.port = 465 mail.smtp.starttls.enable = true mail.smtp.auth = true mail.smtp.debug = false mail.smtp.socketFactory.port = 465 mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory mail.smtp.socketFactory.fallback = false
To set the mail properties to work with Microsoft Exchange you may need to delete the mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory line.
When users open a table or select query, the system will now prompt them to select the package, effective date, termination date, and force flag for any changes they make.
When the user selects a package on the site selector, the default sites, dates, and force flag for the selected package are automatically selected by default. If the user changes any of those settings, the 'Save As Package Defaults' button is enabled so that the user can save the modified settings as the defaults for the package if desired. This enables users to change the default package settings to not include any sites at all and eliminates the extra prompt window that asks users if they want to save the changed package settings.
Added 'Edit Shared Table Groups' option to the 'Sites' menu that enables users to assign tables to named groups called Shared Table Groups to make it simpler to view sharing information about sites and to set up new sites with the correct shares. Each table may only be assigned to one shared table group. To create a shared table group, select 'Edit Shared Table Groups' on the 'Sites' menu and use the 'New', 'Edit', and 'Delete' buttons to add, change, and delete shared table groups. For example, users could create a shared table group called 'Items' that contains the item, category, and modifier tables. When selecting sites, users can group by the 'Items' shared table group to see which sites get their data for all the tables in the group from the same share group.
When selecting sites, the system adds all the shared tables and shared table groups to the list of site properties which users can use to group sites. For example, when opening the item form, the user can see which sites are in each price share group by selecting the shared price table in 'Group by...' combo box.
When selecting sites, the sites can now be grouped by a site property by simply selecting the property from the 'Group by...' pick list above the site trees. The sites will immediately be organized into groups by the different values for the selected property. To group by additional properties, just select them in the 'Group by..' pick list. To remove the last property grouping, click the 'Remove Group' button. The selected properties are displayed as 'bread crumbs' to the left of the 'Group by...' pick list. If the list of bread crumbs becomes too long to display completely in the window, users can click in the field and press the home and end keys to scroll the beginning and end of the list.
Requests and responses sent between clients and servers are now all XML strings instead of binary serialized Java objects. This makes it simple to test the system with standard web application testing tools such as load testers which can simulate multiple users by recording the requests and responses and playing them back in multiple concurrent sessions.
Added the ability for users to set up a 'transaction server' in addition to the main web server. The transaction server handles inserting rows into the audit table, committing packages, and processing incoming transactions. Using a separate server for transaction processing relieves the main web server of those tasks and improves performance on the main web server. The main web server checks the transaction server's status before forwarding each command to verify that it is available and is running the same version of the software as the main web server. If the transaction server is not available then transaction processing will be performed on the main web server. Since committing and transaction processing may occur on either server, it is important to set the localSendDir and localReceiveDir elements in config.xml to refer to the same server and directory on both the transaction server and the main web server.
To configure the web server to forward transaction processing tasks to a separate transaction server take the following steps:
Set the localSendDir and localReceiveDir elements in config.xml to refer to the same server and directory on both the transaction server and the main web server.
transactionServerURL = "http://transerver:8080/edm"
If command forwarding is working properly, you will see a line in the log.txt file on the main web server similar to the following the first time you commit or process transactions:
INFO Connected to transaction server http://transerver:8080/edm/xmlcommand.do.
If the connection to the transaction server fails, you will see a warning message in the log like this
WARNING Failed to connect to transaction server http://transerver:8080/edm/xmlcommand.do.
and the transaction processing will be performed on the main web server.
If transaction server is running a different software version than the main web server, you will see a warning message in the log like this
WARNING Invalid software version on transaction server: Version 6.2 at http://transerver:8080/edm/xmlcommand.do, must match the software version on this server: Version 6.3.
and the transaction processing will be performed on the main web server.
If main web server is configured to forward messages to itself, you will see a warning message in the log like this
WARNING This server is configured to forward to itself, forwarding is ignored.
and the transaction processing will be performed on the main web server.
Although it is possible to configure the transaction server to forward transaction processing commands to yet another server, this will reduce performance and leads to the possibility of creating an endless circular forwarding loop.
Enhanced the role editor to include an 'Add Sites' button that opens the site selector window so users can select one or more sites to be given 'View' permission in the role. Only sites that the role does not already have permission to view will be displayed. By using the site selector, users have all the grouping and searching capabilities available to select the correct sites.
Changed the commit process so that none of the packages and sites are selected when the window is displayed and users must click the ones they want to commit to prevent acccidental commits.
Changed the way sites are displayed when grouping and ungrouping them by site properties so that only the sites which the user may view are included in the display.
Changed startup so that the Site Manager is only displayed if the user has permission for the showSiteManager function. To keep users in a security role from seeing the Site Manager window on startup and from being able to open it from the menu, add the following objects to the role without View or Execute permissions:
ObjectType: function, ObjectName: showSiteManager ObjectType: menuitem, ObjectName: Site Manager
Added a useRowInserter attribute to config.xml to control whether the fast row inserter is used. If the useRowInserter attribute is missing or set to "Y" then the fast row inserter will be used, otherwise, the normal row inserter that executes a separate insert statement for each row will be used. This can help users whose systems don't support using the new row insertion mechanism.
The following defects were resolved in this release.
Changed system to always use -1 as the package id for SYSTEM_PACKAGE and to change the package id to -1 for any incoming system packages that use a different number to eliminate the duplicate row error that occurred when a remote site sent a system package with a package id that was already being used at central.
Changed site property display to sort text properties ignoring case to "bar" comes after "Ace".
Fixed problem with transaction viewer that caused it to not refresh the transaction list or details when the user clicked on a site where all the transactions have been marked fixed.
Fixed the form display so that if the user sets up a form to be shown in spreadsheet view and sets the 'Show Menu' property to 'No', the menu is not displayed on the form.
Changed the Edit Sharing window so that when users select a share group and select 'Move to another share group', the share groups they have selected do not appear in the list of destination share groups. This change prevents the problem of users moving the sites in a share group to the same share group which deletes the share group data.
Changed the CONFLICT and UNDO columns in the audit table to accept error messages up to 65,000 characters in length instead of the previous limit of 254 characters.
Updated the package and site selection window to properly save the selected sites, and force flag when users are sending a table refresh.
Changed the site selector logic so that if users are required to enter an effective date but the operation they are performing does not prompt for effective dates, such as when sending a table refresh, the system allows them to continue and does not display an error message.
The following changes were made in this release.
The following enhancements were made in this release
Added useDefaultPackage = "Y" option to config.xml to control whether users can use the default package or not. If useDefaultPackage is set to "N" then when the site selection dialog is displayed, no package will be selected and the user must either select a package that they created previously or create a new package. If useDefaultPackage is not in the config.xml then the default value is "Y".
When a package is selected (at the top of the site selector), the system will automatically select the sites and set the effective date, termination date, and force flag to the value that were selected when the package was created. If user changes the selected sites, dates, or force flag after selecting a package, he will be asked if the new settings should be saved as the defaults for the package.
Added effectiveDateRequired = "N" option to config.xml to control whether users must enter an effective date for transactions. If effectiveDateRequired is set to "Y" then users must enter an effective date in the site selection dialog before making any changes. If effectiveDateRequired is not in the config.xml then the default value is "N".
Changed forms so that only the tools that the user has permission to use are displayed. If the user does not have permission to add new records then the "Goto new record" tool and the "Goto new record", "Copy Record", and "Copy Record to Sites" menu options are not displayed. Also, if a user without 'add' permission opens a form that has no records or navigates to the empty row after the last row and tries to start entering new data, a message will be displayed telling them that their login is not set up to add new records. If the user does not have permission to delete records then the delete tool and menu option are not displayed.
Changed how the system inserts transactions into the audit trail to more than double the performance. This will improve the performance of saving form updates, saving updates made with graphical editors, and importing transactions from a file.
Changed the list of packages that users can commit to only include packages containing transactions created by users that share at least one role with the current user that contains site permissions. This enables users to share one role that has menu and form permissions but not site permissions but have separate roles that just contain their site permissions and still not be able to commit packages created by users that don't share the role containing site permission.
This is useful for setting up roles for franchisees. For example, if franchisee A has sites 1-5 and franchisee B has sites 6-10 but both can edit prices then you can set up a 'Pricing' role with the permissions necessary to edit prices but without any site permissions and a 'Franchisee A' role with permission to view sites 1-5 and a 'Franchisee B' role with permissions to view sites 6-10. Then assign users from franchisee A the 'Pricing' and 'Franchisee A' roles and assign users from franchisee B the 'Pricing' and the 'Franchisee B' roles.
Added support in the task scheduler for tasks that repeat after the number of hours, minutes, and seconds specified by the user. To define a timed task, set the schedule frequency to TIMED and set the time part to the number of hours, minues, and seconds after midnight that the system should wait between repeated executions of the task.
If the date part of the time is in the past then the task will be executed on startup and then repeat forever with the number of hours, minutes, and seconds in the time part between executions.
The following example will execute the task on startup and then repeat every 30 seconds.
<schedule frequency = "TIMED" time = "12/31/2000 12:00:30 AM" task = "processTransactions('*')"/>
If the date part of the time is in the future then the task will be executed for the first time after the number of hours, minutes, and seconds in the time part after startup and then repeat forever with the number of hours, minutes, and seconds in the time part between executions.
The following example will execute the task on one hour and 10 minutes after startup and then repeat every hour and ten minutes.
<schedule frequency = "TIMED" time = "12/31/2099 1:10:00 AM" task = "processTransactions('*')"/>
Changed the system to keep a separate list of data sources for each company instead of one list containing all the data sources in the config.xml file. This means that users who set up multiple companies in the central system can use the same data source name for the system data source in each company (database names still must be unique). Also, when the system saves an updated config.xml, the data sources won't be repeated in each company.
The following defects were resolved in this release.
Fixed record locking so that if multiple central users edit the same data for the same sites, the first one to save their changes will be successful and the second one to save will get an error message that the data has been changed by another user and to re-open the form to work with the most current data.
Fixed errors that are displayed when running go.bat at a remote site that has polling enabled. The Site Manager is still displayed but does not report polling status information.
Fixed scheduled tasks so that repeated tasks are re-scheduled even if the task gets an error. For example, if there is an error while processing transactions during a daily scheduled task on the server, the task will still run the next day.
Changed the audit history purge process so that after it purges the audit history and deletes any packages in the package table that no longer have any transactions associated with them, it also clears the list of packages cached in memory. This fixes the "IllegalArgumentException: setSelectedIndex: 0 out of bounds" error that would occur when users open a form when the default package is still in the cache but no longer exists in the package table due to purging the audit history.
Fixed logging so that if there are multiple EDM web applications on the same web server, each web application will log messages to the log.txt file in that web applications folder instead of all the EDM web applications logging to a single file.
The following changes were made in this release.
The following enhancements were made in this release
Changed IRIS menu editor so that when user selected "Open Item Form" the menu editor windows will be hidden until the user closes the item form.
The following defects were resolved in this release.
The following changes were made in this release.
The following enhancements were made in this release
Enhanced the standard installation to install all the files necessary to use the EDM report engine. Pre-defined reports are also installed based on the type of application that EDM is managing.
Added function to directly execute a given SQL statement on a data source without any parsing parsing by EDM. The SQL statement can be any SQL statement that is valid on the server and database identified in the data source. The function can be called from the client or from the server as a scheduled task.
Example of scheduling the execution of an SQL statement in the config.xml on the server:
<schedule frequency = "ONCE" time = "10/13/2010 4:07 PM" task = "executeDirectSQL( 'EdmWebHQ', 'insert into CDMSITE (SITEID, NAME) values (-999, ''New Site'')' )"/>
The new function is defined below:
executeDirectSQL - Directly execute the given SQL statement on the given data source and return the results in a DataSet. If query is not a select statement, execute the SQL statement and return empty DataSet. Use caution to avoid exceeding available memory.
Users can now specify the path and file name of the schema override file for each company in the config.xml file by adding an attribute like this:
schemaOverrideFile = "my_schema_override_file.xml"
If no override file is specified, the system will use any file called 'schema_override.xml' in the same folder as the schema file.
Changed the schema override loader so that all keys and relations loaded at a central location include the CDMLOCID column even if they are not specified in the override file. This enables users to use the same schema override file at the central location that they use at the sites if desired.
Changed Request Table List function to save received schema files into the same directory as the main schema file for the company. This enables users with multiple companies to keep each company's configuration files in separate sub-directories of the webapps\edm\WEB-INF\classes directory.
Changed Copy Location Data function to open the site selection dialog to select the source site. This enables users to easily find the site they want to copy from by using all the search and grouping features of the site selection dialog.
The following defects were resolved in this release.
Fixed report engine to automatically create the work/reports folder before generating a report file so that the system administrator does not have to create the folder manually.
Fixed stack overflow errors that occurred when attempting to open a form or query design.
Fixed Index out of bounds error that occurred when users clicked Show recommended groups in the Edit Sharing window on a table that does not have any unique indexes defined.
Fixed tbl_MenuMaster not found error when opening the IRIS menu editor after opening another form.
Fixed focus problem that caused combo boxes to immediatly close after clicking the open button the first time.
Fixed dialogs so that the keyboard focus is set the the correct field when the dialog is displayed.
Fixed Elstar screen button category pick list to display the category id and name instead of the row number.
Changed system to always use 'dbo' as the schema name when creating tables in a SQL Server database since, as of SQL Server 2005, the user name and the table owner are no longer identical. This resolves the error that occurred when creating tables when logged into SQL Server with Windows authentication and the user name was not a valid schema name such as 'US/EDM_SVC'.
Fixed Out of memory error that sometimes occurred when going to the last row of very large tables.
Fixed spreadsheet view of forms and tables to correctly resize when the browser window is resized.
Fixed the site selection dialog so that the counter that displays the number of currently selected sites only counts each unique site number once even if the same site appears multiple times in the selected tree due to selecting multiple groups and sites.
The following changes were made in this release.
The following enhancements were made in this release
EDM now has a new graphic user interface that enables users to use large icons for the main menus across the top and small icons for the submenus shown in the side bar. The icon images are stores in the image folder in the main edm folder.
Right-click image to view full size
To change the icons on the main menu or submenus, edit the menu_application_version.xml file and edit the icon attribute of the menu or submenu as in the following example:
<menu name = "Menus" icon = "image\icoMenus.png"> <menu name = "Items" icon = "image\icoItems.png"> <item name = "Item Master" action = "Open( 'Form', 'tbl_ItemMaster 38' )"/> ...
To change the company logo displayed on the right side of the top menu bar, edit the menu_application_version.xml file and change the icon attribute of the top-level menu as in the following example:
<menu name = "Enterprise Data Manager" icon = "xpient.gif">
Forms are now shown in tabs within the main window like the tab interface in modern browsers. Multiple forms can be open at once and each one will be in its own tab. To close a form, click the X icon in the tab label.
The EDM window now automatically resizes to fit the browser window to make it easier for users to view the EDM menus and forms in convenient sizes including full-screen.
Added a Site Manager that is automatically displayed when EDM starts (see image above) to enable users to see the transaction processing status of all the sites. When the Sites item at the top of the site tree is selected, the right side of the windows shows a summary of the status of all the sites including how many sites have successfully processed all transactions in the last 7 days, how many sites have transaction errors in the last 7 days, and how many sites have not responded in the last 24 hours.
If an individual site is selected, the screen shows how many transactions for that site have been successful in the last 7 days, how many transactions had errors, and how many transactions have not received a response in the last 24 hours.
The View Transaction Status button enables users to view the details about transaction errors and transactions that have not received a response.
The Setup Site Manager button enables users to change the number of days to show transaction errors and the number of hours before transactions are reported as not having a response.
Added a Data Validation Report to EDM to help users find invalid or missing data.
Right-click image to view full size
The report validates the relations between the selected tables plus all the tables that refer to the selected tables and all the tables to which the selected tables refer. For example, if validating the price table and a price row for item 123 exists but item 123 does not exist, it will generate a warning. Warning reports are displayed in a new browser window so they can be printed or emailed.
The validation process ignores uncommitted transactions and transactions with future effective dates so it is checking the data that the remote sites will actually be using once they process any committed transactions. This means that the validation report should be run after committing transactions and any problems should be fixed immediately to prevent invalid data from going to the remote sites.
The validation report can be run from the EDM menu by selecting Sites - Validate Data. To add the validation report to your EDM menu, add a new menu item and set the Name to Validate Data and set the Action to validateTables( '', '' ).
To automatically run the validation report at a scheduled time, add a schedule element to the config.xml file on the central server that calls either validateTables or validateTableList like one of these examples:
<schedule frequency = "DAILY" time = "1:00 AM" task = "validateTables( '*', '*' )" /> <schedule frequency = "DAILY" time = "1:00 AM" task = "validateTableList( 'Menu Tables', '1' )" /> <schedule frequency = "DAILY" time = "1:00 AM" task = "validateTables( 'IRIS_dbo_tbl_ItemAttachments, IRIS_dbo_tbl_ItemMaster', '1' )" />
The new functions are defined below:
validateTableList - Validate references between tables
validateTables - Validate references between tables
Improved the sharing function so that it will check to see of the data will be valid before allowing it to be shared. For example, when adding a site to a share group of prices that has a price for item 123 but the site does not have item 123, the share will not be allowed. In this case, the user should either add item 123 to the site or get the item data from a shared site that has item 123 before attempting to share the prices. The list of tables to be shared is sorted by the relations among the tables so the parent tables are shared before the child tables.
Users can now open the IRIS item form from the IRIS menu editor by selecting Open Item Form from the popup menu that appears when you click the Commands button or when you right-click on any button on the menu. This enables users to add new items or makes changes to existing items easily from within the menu editor. When the item form is closed, new items and changes will be immediately available for use within the menu editor.
To enable opening the item form from the menu editor, the name of the item form must be added to the config.xml file in the irisItemForm property like this:
irisItemForm = "tbl_ItemMaster 374PR10"
Added getCurrentUserID() function that returns the ID of the user that is currently logged in or "" if no user is logged in. This can be used to display the user ID or to query data from a table based on the user ID.
When requesting a table refresh from a remote location or sending a refresh from a remote location, the refresh will now leave out all transient fields. This allows users to control which columns are included in refreshes from remote to central and from central to remote separately by editing the transient files at the central and remote sites. Transient files do not need to match between central and remote sites.
The following defects were resolved in this release.
Fixed "File Not Found" error caused by running a difference report when the table name in the Remote Tables table was not an exact, case-sensitive match for the table name in the schema file which caused the case-sensitive URL to be invalid. Table names are now all upper case in the report file name and URL.
Changed Ctrl-Enter window so that it calls the expression in the Before Update event any time the user tries to change the value in a field. This can be used to keep the user from updating specific fields on a form when certain conditions are true. For example, the system can keep users from changing the name of an item if the item number is not withing a certain range.
Changed the Copy Record fucntion so that it calls the expression in the Before Insert event of the form before inserting the copied record. This can be used to keep the user from copying records when certain conditions are true. For example, the system can keep users from copying an item to a new item number if the new item number is not withing a certain range.
The following changes were made in this release.
The following enhancements were made in this release
Added a keyboard editor and forms for Panasonic 7500 systems.
Changed the 'Copy Location Data' function so that when selecting the locations to copy to, instead of selecting from a simple list of locations, the user can select locations using the full location selection dialog which enables her to select location groups or group locations by their properties for selection.
Changed the 'Share Location Data' function so that when selecting the locations to share, instead of selecting from a simple list of locations, the user can select locations using the full location selection dialog which enables her to select location groups or group locations by their properties for selection.
Change the table list selection dialog so that there is nothing selected by default when it is first displayed so that users don't accidentally leave the default selection selected when using the Ctrl key with their mouse clicks to select multiple tables or table lists.
Added a new server functions called 'sendExecuteTransaction' so that users can send transactions to remote sites to execute commands on a scheduled basis from headquarters. The function parameters are:
The sample below sends an execute transaction to all sites once per day and then commits the package:
<schedule frequency = "DAILY" time = "3:49:00 PM" task = "sendExecuteTransaction( 'c:\windows\system32\notepad.exe', 'c:\install.ini', true, '*', '', '0-Default Package', '', false ) +commitTransactions( '"0-Default Package"', '*' )" />
Changed stand-alone client that runs at remote sites to log any errors in the startup expression that is passed in on the command line even if the 'ShowErrors(0)' function is called first.
Added permission to execute the 'sendRemoteFiles' function to the 'Remote' role in the default policy file.
Added permission to execute the 'processForcedTransactions' function to the 'Remote' role in the default policy file.
Changed 'sendRemoteFiles' to use Admin permissions so that it can be executed at remote sites without giving the Remote role permission for the RemoteFiles table.
The Administrator role can no longer be accidentally selected when editing roles to keep users from reducing the permissions for the Administrator.
Users can only commit packages created by users with the same security role to prevent users that only have permissions for specific sites from seeing and committing packages for other sites. Administrators can commit packages created by any user.
Enhanced the IRIS menu editor so that users can see the name of the current bitmap filename as well as the actual image when viewing the properties for a button that has an image selected.
The following defects were resolved in this release.
Removed error from Aloha panel editor that occurred when opening a panel that had a button function id that was not in the list of known function ids. Now the user can open the panel and even edit the buttons but any buttons with unknown function id numbers will not show the function name in the button function combo box.
Fixed table refreshes so that they check user permissions instead of trying a select query and assuming that a failure is a permission error. This caused certain errors such as invalid table names to be reported as permission errors.
Updated the following Aloha forms so that when the user inserts new records or copies a record to a new ID the USERNUMBER field is always set to match the ID field which may be needed for the correct operation of the Aloha software. The corrected forms included Category, Clock Message, Exception Modifier, Job Code, Menu, Modifier, Message, Order Mode, Price Change, Petty Cash, Performance Measure, Printer Group, Price Level, Promo, Qty Price, Screen, Tax, and Tender Type.
The app_iris.xml has been upgraded to solve an issue where the child prices were not getting propogated to the remote sites.
Menu buttons for IRIS now show text as well as images when the show text over image bit is set.
The following changes were made in this release.
The following enhancements were made in this release
Added function "sendAlohaCurrentDayPollData( dataFolder )" that users can call after running the grind process in the middle of the day that causes EDM to send the poll data from the Aloha DATA folder to central using the DOB from Aloha.ini as the poll date. This enables users to poll multiple times per day to have near-real-time sales data at central. NOTE: Remote sites must be updated with this version of the software to enable this function.
Improved SQL Server handling to automatically recover a lost JDBC database connection when the connection to the database server was temporarily lost due to a network error or database server restart but a new connection can be established. The connection pool is cleared out to remove any other bad connections.
Changed Submenu and Modifier forms to display the price level price instead of the item price if the button price method is set to item price and the item has a non-zero price level.
The following defects were resolved in this release.
Fixed system so user does not get error when pressing Ctrl-Enter on description field of Price Level form in Aloha. This error was occurring when pressing Ctrl-Enter on any field whose name was an SQL keyword such as the DESC field in the PRL table.
Fixed error on Submenu, Modifier, and Modifier Exclusion forms that caused items names to be displayed incorrectly after opening the button properties dialog and clicking the 'Sort by number' button.
Fixed Site Manager so that when user wants to repoll selected dates for multiple sites, the poll tables are not duplicated for each site selected and, only the transactions for each site are included in the transaction package for each site instead of transactions for all sites being sent to each site.
Removed unnecessary warning that was being logged when dBase tables at remote sites have DATE type columns which get stored in SQL Server at central as TIMESTAMP columns.
Fixed Difference Report so that the path to the report used URL path separator '/' instead of file path separators '\' in URL to report file so that Tomcat 6 could display the report properly. Tomcat 5 worked fine with the file path separators but Tomcat 6 is more strict.
The following changes were made in this release.
The following enhancements were made in this release
The following defects were resolved in this release.
Fixed invalid column "schema." error when requesting a table list from remote site.
Ctrl + Enter popup now displays columns according to the columns and sort order in the value entry form for the MOD, EXC and SUB forms.
Fixed errors in exporting tables via the right-click menu on the Tables menu items.
The following changes were made in this release.
The following enhancements were made in this release
Changed the commit process so that if there is more than 1 choice in a selection box in the commit process, no options will be selected. If only 1 choice is available, then select it. This is prevent users from accidentally committing everything, and force a selection.
The following defects were resolved in this release.
Fixed the synchronize site properties process to look at views as well as tables.
Numbers now sort numerically, and the columns appear to switch to take advantage of the typing functions. This requires a new app_aloha.xml.
Added transients so that the EMP fields could be imported.
The following changes were made in this release.
The following enhancements were made in this release
Added in functionality to allow users to group sites based on properties. Sites may have none, one or many properties defined. The location selection dialog has a new panel which will allow users to select their desired properties and then view those property values in the selected and available tree.
The following defects were resolved in this release.
Fixed SQL Server load schema function so that when a SQL Server column type is DOUBLE, if the number of decimal places is reported as 0, it is changed to 5. This solves a problem that showed up when we began using the SQL Server 2005 JDBC driver where SQL FLOAT columns were being reported as DOUBLE types with 0 decimal places (scale) in the schema file. The IRIS table tblTax.AmtOrPercent column was being incorrectly set to 0 decimal places causing tax percents to be rounded to 0.
The following changes were made in this release.
The following defects were resolved in this release
Improved the response time for the rollbacks to table refreshes.
The following changes were made in this release.
The following enhancements were made in this release
Added a client function that will allow users to export tables to files on the central server.
The following defects were resolved in this release.
Fixed the Aloha performance issues with the consolidation and sort of the buttons on the submenus, exceptions and modification form.
The following changes were made in this release.
The following defects were resolved in this release.
Fixed memory leak from importing a large table from a file.
The following changes were made in this release.
The following enhancements were made in this release
Added a button to allow the dropdown to sort by name or by number on the Exceptions, Modifiers and Submenu forms.
Added the functional to import transactions from a file into the central database. This enables users to insert, update, or delete data for specific sites by processing an import file that may be generated from another system. For more information see Help - Data and Transactions - Central Data Import in the online help system.
Added the functionality to request polling information for specific tables for specific dates from selected sites. This is used through the Site Manager screen.
Added in the ability for the user to sort and consolidate buttons on the Submenu, Modifier, and Modifier Exception forms. This is accessed from the right-click menu. Currently, sorting is enabled to either sort across then down or down then across and is enabled for Item Name and Item Price.
Consolidation compresses all the buttons to as few screens as possible, filling the first column on the first page, then the second column etc. before proceeding to the next page.
The following defects were resolved in this release.
Fixed the remote send file transaction so that the %THISSITEID% variable was properly replaced with the site id when used in the sent file name.
Remote sites can now only send transactions in the default package even if a different package is specified when calling the function.
Resolved Categories subform error that caused system to loop or not display subforms data properly.
Fixed the copy, clear and paste functions on the submenu, Modifier Exception, and Modifier forms.
The following changes were made in this release.
The following enhancements were made in this release
The following defects were resolved in this release.
Fixed the site reset process so that the Aloha polling data in the PollInfo, PollTable, and PollStamp tables is not affected and so that the table structure and indexes in the schema file are correct. This corrects a problem where the indexes were sometimes changed during the reset causing all rows in the PollStamp table to be deleted when any rows was deleted.
The following changes were made in this release.
The following enhancements were made in this release
Improved license processing so all the licenses for multiple companies can be in the same license file instead of creating a separate license file for each company.
Added paramters in the Site Manager so that users can specify the folder where the poll files will be unzipped and separately specify the folder the database server will use when importing the poll files. This allows processing polling files in systems where the web server and the database server are on separate PC's.
The following defects were resolved in this release.
Fixed Aloha polling processor so that the incoming poll files are unzipped into a folder that includes the company name and the site number so that if multiple companies are processing incoming poll files at the same time the files are not overwritten.
Fixed the Site Manager to open the form PollInfo when the user clicks Setup Site Polling. This fixes the error that the system could not find the form POLLINFO__PollInfo.
The following changes were made in this release.
The following enhancements were made in this release
Updated the Measures subforms on the Inventory and Recipe forms to include a 'Prohibit Waste' option in the "Used In" column.
Modified startup procedure to check for new data sources in config.xml and automatically load the new data source into the schema if found.
Added Panasonic connectivity and created a keyboard editor for MWS and PanPoll.
The following defects were resolved in this release.
Fixed null pointer exception that occurred when sending or requesting a table refresh caused by a table in the snapshot file not having an 'name' (case-sensitive) attribute. In the reported case, the attribute was spelled 'Name' so the system didn't accept it. The system now will identify which table list was being read when the table without the 'name' attribute was found so users can more easily correct the snapshot file.
Changed Copy Location Data function to remove the source site from the list of possible destinations to avoid confusion for the user and loss of data caused by copying a site's data to itself which caused it to be deleted.
Fixed list boxes to display scroll bars when the data is larger than the list box window and to automatically highlight the selected item whenever the list box data is changed.
Fixed number conversion problem to correctly convert numbers in scientific
notation such as 1.00110101E8 to 100110101. The syptom of this problem was
and error during transactions like:
f: Row to be updated or deleted was not found. [dbo].[tbl_MenuBtns] where [MenuID]=5 AND [SeqNum]=3 Found record Mismatch on column BtnData1, expected 100110100, found 1.0011
Fixed the reporting of Warning and Error transactions in the Transaction Viewer. When a transaction was marked as "Fixed", it was still showing in the Transaction Viewer Screen.
Fixed 'Copy Site Records' to also copy subform records to all the selected sites. Previously, the main record was copied but related records on the subforms were not copied to the other sites.
Fixed Elstar screen editor to correctly calculate the button sizes based on the number of rows and columns in the system configuration table. Previously, the system was not always getting the number of rows and columns from the correct site resulting in buttons being displayed incorrectly.
The following changes were made in this release.
The following enhancements were made in this release
The system now provides full support for polling data from an Aloha POS system and loading the data into tables in the central database. The remote sites send data from the dated folders containing the files generated by the grind and the central system imports the data into tables in the central database. Polling files from all the sites are imported into the same central tables so the data can be easily queried for multiple sites and consolidated or compared across sites.
When a site that has polling enabled is reset, the polling tables are automatically reloaded into the schema after the reset.
Added server function purgePollData that purges any tables in the POLLTABLE table to the given number of days of history.
Users managing Aloha POS systems can use the new Site Manager to see at a glance all the sites and which ones, if any, have issues with either transactions or polling. The site manager has a summary view that shows how many sites are up-to-date on transactions and polling and how many have transaction errors or late responses or polling errors or missed polling days. Buttons on the screen enable users to manage the polling configuration at each site, drill-down into transaction status information, and manage the setting for the Site Manager itself.
Improved validation on Submenu, Modifier, and Exception Modifier forms so that users can no longer set the item value to NULL by pressing Ctrl-0. Null values in the item field are invalid in the Aloha POS. To delete buttons, right-click them and select Delete.
Improved file transfers to allow the user to specify a complete URL in the 'Transfer Host' field of the location form so that they can specify a URL that uses the secure https protocol like this: https://192.168.0.1:8080
The following defects were resolved in this release.
Changed virtual list page to delete the swap file after swapping in so that if user changes the values in the objects, then swaps out and back in, the changes will still be there. The old way did not delete the swap file unless the user added new rows so if you swapped a page in, then changed one of the object members, then swapped it out, it didn't rewrite the swap file so the change was lost.
This problem showed up when processing a large list of incoming transactions by loading the transactions into memory with their status set to "Received", swapping them out and back in to process them and update their status to "Successful" or "Failed", then swapping them in to send the status updates and all the updates still had status "Received" and the updated status values were lost during swapping.
Fixed problem with transaction ID generator that sometimes caused it to reuse a transaction ID when the user switched between companies. The issue only occurred when there were cached transaction ID's at the time the user switched companies and the cached ID's overlapped with existing transaction id numbers in the audit trail so it did not always occur. The symptom of the problem was a "duplicate transaction id" error.
Changed processing of failed transactions so that when they generate a table refresh back to the site, only the table refresh is committed, instead of all the transactions in the default package. The symptom of this problem was that the default transactions were sometimes unexpectedly committed when processing incoming transactions.
Change the schema reload process that is called when the user changes the version number of a data source in the config.xml file to properly reflect the newly loaded schemas instead of keeping the old schema in memory.
Fixed the Submenu and Modifier forms so that when the user right-clicks a button and selects cut or delete, the button is properly cleared from the display.
The following changes were made in this release.
The following enhancements were made in this release
Added "Upload File" link from main menu when running in a browser to enable users to upload files to the server from the browser without having a login to the server. Files will be saved in the 'Files' subfolder in the web application folder. If the web application application folder is C:\jakarta-tomcat-5.5.7\webapps\edm, then all files will be uploaded to C:\jakarta-tomcat-5.5.7\webapps\edm\Files. Users can select the subfolder into which the files will be saved and enter a filename or click the "Browse" button to open a file dialog that will enable them to select a file from their computer to be sent to the server.
Updated the button property dialog of the IRIS menu editor so that the parameter tab contains a new field that enables users to edit the value in the BtnID column of the button table whenever the selected button type is 'Object'. For most object buttons, the field is a plain text field with the label 'Button ID'. For the 'Embedded Menu' object, the field is a pick list labeled 'Menu Type' that allows the user to select 'Pick One' or 'Pick Many'.
Added a 'Log File' link to the bottom of the main menu so users can easily view and save the log file. Clicking the link will display the log in a new browser window. Right-clicking the link will give the user the option to save the log file on their computer.
Added support for the SQL Server 2005 JDBC driver which can support either SQL Server 2005 or SQL Server 2000. The driver also enables the user to use integrated security so that the userid and password for the database do not have to appear in the config.xml file.
Users who want to use integrated security can add a "connect" attribute to the "systemDataSource" and "dataSource" elements like this:
<systemDataSource name = "EdmWeb" version = "1" type = "SQLSERVER_JDBC" server = "localhost" database = "EdmWeb" connect = "jdbc:sqlserver://localhost;databaseName=EdmWeb;integratedSecurity=true" />
In addition to specifying "integratedSecurity=true" in the connection string, to use Windows security instead of a user name and password from config.xml, the file "sqljdbc_auth.dll" on the system path such as in the Windows/system32 folder. The file is included in the config/common folder of the installation folder.
Enhanced IRIS Menu Editor to add support for entering parameters for command buttons for the following commands: Quantity, Smart Quantity, Upsize Selected, Upsize Base & All, Upsize Next, Set Embedded Menu, Convert Item, Convert Next, Convert base and all, Coupon Type, Kitchen Message, Generic Destination, Generic Destination Tender. Command parameters can be edited on the button property dialog in the IRIS menu editor.
Improved the row version editor, used for graphical editing such as menu editors, so that when updating tables, each table is separately checked to see if any of the selected sites may be updated. This enables users to share the main table and the child tables differently and still be able to update the data in each table.
Improved runJunitTest server function to accept and execute either the name of
a TestSuite class such as edmserver.test.AllTest or the name of a TestCase class
such as rti.test.DbaseTest.class. See the following example menu options:
<item name = "Run JUnit Test Case" action = "runJunitTest( 'rti.test.DbaseTest')"/>
<item name = "Run JUnit Test Suite" action = "runJunitTest( 'rti.test.AllTest')"/>
Changed 'Delete Location Data' function to throw an error if any of the table data that is being deleted is shared by a site that is not being deleted.
Added 'importPanasonicData' and 'exportPanasonicData' functions to move data from all the tables in the 'PanData' data source to tables with the same name in the 'EdmPanData' folder within the installation folder. The 'EdmPanData' version of the tables has one extra column in it called EDMROWNUM that contains the zero-based row number of the row and is used as a unique key on the table. This allows EDM forms to operate on tables that contain a unique key and to keep the rows in the proper order and allows sharing data between sites.
The following defects were resolved in this release.
Fixed error saving a new query by changing AppImpl.getObject to return null if asked to get a table that does not exist instead of throwing an exception.
Fixed "Error initializing server" caused by java.lang.NullPointerException due to improperly initialized ODBC data source list.
Fixed initialization routine to load server plugins for each company, not just the first one.
Fixed Elstar Screen Editor to allow users to edit prices even when they only select the sites whose prices are to be changed and the selected sites do not include all the sites in the share group for menus. For example, if sites 1, 2, and 3 all share the same screens but each have their own prices, users can now select just site 1 when editing screens, ignore the warning that some sites may not be updated, and successfully change prices just for site 1.
Fixed error caused by copying, pasting and then editing menu items. When items were copied and pasted and then edited, the menu item edits would be copied over to the original menu item, causing multiples to appear when the GUI was restarted.
When users made edits and viewed the differences reports, certain changes would fail to appear and the report would appear unchanged. This was due to a caching issue that has been resolved.
The 'About' dialog now displays correctly when a form's Help - About menu option is selected.
Fixed Null Pointer Exception that occurred when attempting to validate a null control object on a form displayed as a spreadsheet. The error message read: Error saving data while closing form. java.lang.NullPointerException at edmclient.GridWin.validateValue(GridWin.java:1240).
Fixed error that occurred when the system attempted to add two separate transactions to the CDMAudit table with the same transaction id. The processing functions was improved to detect the condition and automatically adjust the transaction id's being used to be one greater than the highest transaction id in the CDMAudit table. Users should no longer see the error. When a duplicate id is detected, the system will log the old and new id.
Fixed rti.db.DbaseJdbcHxtt.tableExists() method so that it returned the correct value even if the table has an underscore ('_') in the name such as Raw_ingr.dbf. The HXTT JDBC driver for dBASE treats the underscore character as a wildcard character and does not properly handle the escape character in the DatabaseMetaData.getTables method which causes the method to return false when passing the table name 'Raw_ingr.dbf' or 'Raw\_ingr.dbf' even if the table 'Raw_ingr.dbf exists.
The following changes were made in this release.
The following enhancements were made in this release
Enhanced the table refresh transaction so that users can send a table refresh to a store even if they have made changes to that store that they have not committed yet and the uncommitted changes will not be sent. Users can specify the date and time of the data that should be sent and no uncommitted changes or changes with an effective date after the given date and time will be sent. By default, this is the date and time the refresh is generated.
Added "Force" flag to all transactions and audit trail. Added processForcedTransactions() client function. Added "Force processing" checkbox to site selection dialog (RoutingDialog). These changes enable users to flag certain transactions as "forced" which means that they will be processed by the processForcedTransactions function which ignores transactions that do not have the "forced" flag set. The purpose of the flag is for customers who allow personnel at the site to determine when to process transactions so that when they need to send a transaction that must be processed immediately, they can set the "forced" flag and the transaction will be processed at end of day when the processForcesTransactions function is executed.
Added 'connect' attribute to data sources in the config.xml so user can specify a complete connection string for connecting to the database which allows them to specify special properties such as the type of login. If the user specifies a connection string, it is used to log in to the database instead of a connection string built from the other attributes. It is important that the server name and database name still be correct in the data sources because the system still uses them even if a connection string is specified.
A new database driver is available that will support additional versions of Oracle. This driver has been tested on 10g. More information may be found on the Supported Databases page.
Changed insert transactions and insert queries for tables with unique keys to check to see if the row exists before inserting the row and throw a DuplicateRowError if it does. This enables the system to enforce unique keys even when the database does not as is the case with the Aloha dbase tables.
Added form to edit the Aloha 'Access Levels' table ACC.DBF.
Changed startup code so that if there is an exception when attempting to save the system version or installation path, the error is logged but the system continues to start up normally. This was done so the system can run at sites where the logged-in user does not have permission to update the registry.
Improved IRIS Combo Price Editor so that when users are editing combo prices and modify a drink price, the base price of all combos that use that size drink are updated by the amount of the change in the drink price so that all combo total prices remain unchanged. To improve performance of the editor, make sure the that the central database has a non-unique index on CDMLOCID and BASEITEMNUM in tbl_ItemMaster.
The following defects were resolved in this release.
Fixed SQL nesting error that occurred when processing an updated Aloha 5 PRO record which has over 600 columns. Changed SqlBuilder to only put parenthesis around complex expressions instead of simple column = value expressions.
Fixed type-ahead support for combo boxes on forms, the IRIS menu editor's "Find Item" dialog, and the Elstar Screen editor. This enables users to type into the text field of a combo box and the list selection will continuously select the item that begins with the characters they have typed after each character they type.
Fixed reported error with copying a record in which the USERNUMBER didn't match the record's ID key. This involves--for Aloha users only--putting something like this: = iif( USERNUMBER <> ID, setValue( 'USERNUMBER', ID ) + saveRecord(), 0 ) in the afterInsert event.
Fixed Null Pointer Exception that occurred when converting an insert transaction that needed to remove a column as part of the conversion. The error was reproduceable by adding a record to tblDiscounts in IRIS 3.7.8 and attempting to convert the transaction to apply to IRIS 3.7.4 which caused several columns to be dropped.
Fixed Null Pointer Exception that could occur when converting a central database to a new version when a column in a table had been renamed and that column was part of one of the unique keys. This addresses the issue of renaming the String column to StringID in tblApplicationStrings between IRIS version 3.7.7 and IRIS version 3.7.8.
Fixed the New Menu Wizard in the IRIS Menu Editor so that the new menu has the same type as the copied menu. Now when the user copies a toolbar menu to a new id, the new menu is also a toolbar menu.
Fixed ScheduleTask to correctly write the XML for the schedule element by adding a closing bracket. This was causing an XML error when updating the config.xml file when the user would process an incoming table list.
Fixed problem with Value Popup dialog that occurred when the user pressed Ctrl-Enter to edit a NULL value, entered a one-character value, then clicked the OK button. The system now stores the one-character value correctly instead of ignoring it whether users click OK or press ENTER.
Fixed Aloha Submenu, Modifier, and Modifier Exception forms so that the submenu fields are properly hidden regardless of whether the old-style table names (like "SUB") or the new-style table names (like "ALOHA__SUB") are used.
Fixed IndexOutOfBoundsException that occurred in Elstar Screen Editor when editing a button with multiple prices. The editing works properly now when editing buttons with multiple prices and where prices are different among the selected sites.
Fixed Elstar Screen Editor for both Elstar versions 3 and 4 to correctly delete the related price rows with a button is deleted.
The following changes were made in this release.
The following enhancements were made in this release.
Added a new form called 'tblSurvey 375' which enables users to edit the survey table and all related tables in IRIS 3.7.5 and later.
Changed the Elstar screen group editor to only allow users to add up to 120 buttons. If user attempts to add or paste buttons that would bring the total number of buttons to more than 120, an error is displayed.
Changed Elstar screen editor to support either version 3 or version 4 of the Elstar database.
Changed Elstar screen editor to support either version 3 or version 4 of the Elstar database when editing chain links. In Elstar 4, the user enters integer values into "Min" and "Max" fields instead of checking "Link", "Modifier", and "Forced" checkboxes.
Changed Elstar screen editor to support either version 3 or version 4 of the Elstar database when editing prices. In Elstar 4, prices are linked to the buttons instead of to the merchandise records and prices are edited in the screen editor.
Changed "Menu Position" combo box on Elstar screen editor to allow user to select main menu positions between 0 and 54.
Changed Elstar 4 merchandise id generator to get the next available id within the 120 id's available for each category if editing an Elstar version 3 database. When editing an Elstar version 4 database, get the id that is one higher than the highest one in the table unless a merchandise record with the same AII number already exists, in which case, use the existing merchandise id.
Modified button property dialog to require user to select a category when adding a button.
Show number of sites on all site selection dialogs including commit list to help users be sure they are working with the correct sites when list is long.
Improved paste so that chain links, prices, printer locations, and other related records are copied along with the button itself.
Changed screen editor for Elstar 4 so all merchandise rows will have an AII number so when adding a button, when user selects an item, search all locations (even unselected) for any merchandise id that already refers to the selected item and use it if found. Otherwise, use lowest available new D214merchandise id that is available at all sites (including unselected sites).
Validate that all buttons have a merchandise id number with an AII number > 0.
Warn user when they change a field in a merchandise record that is shared with other buttons by telling them which screens and button positions are affected.
Support different numbers of rows and columns at different sites when using screen editor.
Change button font on screen group editor to small font when more than 24 buttons are displayed on the screen.
Changed label of Grouping Item checkbox on button properties dialog to Print Combo Components.
Add checkbox for new Allow Partial Send field on button properties dialog.
Added a label to display the number of sites on the site selection dialog, the list selection dialog, and the location popup dialog to help users verify that the number of sites shown in the list is the number they expected.
Connect company and login dialog to main menu so that if one of the dialogs is showing and the user brings another window to the front, when they select the browser window on the taskbar, the dialog will be displayed in front of the browser window instead of behind it.
Added a Background Process Viewer dialog that shows what background processes are running on the server to help diagnose slowdowns. Once per second, it queries the application to see the status on all known background jobs. Users can see all background jobs running for all Ids and logins.
In addition, there is the addition of a small area to the main menu. This area shows information on: the most recent job started by the logged in user id, a count of the background processes and a button that takes users directly to the main Background Process Viewer dialog.
Added a Transaction Viewer dialog shows information on transactions that have failed or have not been processed by the remote site before they expire. (The expiration is in the config.xml as "transactionWarningHoursThreshold" and defaults to 48 hours.) Pie charts show the relative amount of problem transactions or sites compared to the total. The Ignored List Maintenance allows the user to maintain which sites have failed or unprocessed transactions. If a site is �Ignored� the transactions will still be maintained in the audit table, but will not be shown or calculated in with the rest of the sites.
Added COMMITID column to the audit table to reflect who committed a transaction.
Added a 254 character NOTES column to the site table for user notes on the site.
Added int flag to the location table, to indicate whether or not the site will report errors and warnings to the transaction viewer.
Added radio buttons to the Copy From Existing Menu forms to indicate what kind of menu is to be created. These buttons also change the default menu ID number to the next available for that category. (These can be seen when creating a new menu by calling Main Menu > POS Data > Menus and Buttons > New button and selecting the Copy from Existing Menu option.)
The following defects were resolved in this release.
Fixed Elstar screen editor button selection so that when users select buttons on one page, the buttons in the same position on other pages are not also selected.
Fixed 'Null Pointer Exception' error that would occur when editing data on a subform that had a CDMRecordSelector field.
Fixed Elstar screen editor button move so that when a button on page 2 or higher is moved, the button in the same spot on page 1 is not marked "Not sold" and the moved button is stored on the correct page.
Fixed Elstar screen editor so that when a new screen is displayed for editing, all the undoable actions from previous screens are removed from the list so that users can not perform invalid undo operations.
Fixed screen editor to allow user to move buttons to the bottom row even when the window was size so that the bottom row is not fully visible.
Fixed NPE that occured when there are no updated remote files to send and the user clicks "Send Updated Remote Files".
Fixed screen editor paste so that when pasting button multiple times, chain links are copied to each pasted button
Fixed undo operation to clear undo list when user saves or switches to another screen.
Fixed "Cannot insert the value NULL into column dtTimeOn, table Elstar.dbo.Price" that occurs after modifying a price row or sending a table refresh on the Price table. Column should not allow NULL's.
Fixed chain link editing so that user must enter a Max value that is greater or equal to the Min value when entering and editing chain links.
Fixed a memory leak that was leaving objects from the background processes running.
The .fil files were accidentally getting erased when a reset site command was processed, causing errors. The files are temporarily created with .fil.tmp and then renamed to .fil when their related transaction(s) are committed.
New Toolbar Menus were being created as Item Menus when using the Copy from Existing Menu functionality. In addition, previously, manually created Item Menus were "disappearing" because they were not being created correctly. These were being held in the database without being displayed. Both of these problems are fixed.
The following changes were made in this release.
The following defects were resolved in this release.
Fixed automatic conversion process to work properly even if the central database was not converted to the latest confirmed application version.
Fixed the central database conversion procedure to work correctly even if the database connection was not made with a system administrator login. For example, in SQL Server, the userid no longer has to be 'sa' for it to work.
Fixed central database conversion to update CDMRemoteSources with the new central database version number on successful completion.
The following changes were made in this release.
The following enhancements were made in this release.
Changed "Menu Position" combo box on Elstar screen editor to allow user to select main menu positions between 0 and 54.
Changed the Elstar screen group editor to only allow users to add up to 120 buttons. If user attempts to add or paste buttons that would bring the total number of buttons to more than 120, an error is displayed.
The following defects were resolved in this release.
Fixed "Not Sold" checkbox on Elstar screen editor so that it is not set incorrectly when the user edits the button properties.
Fixed Elstar screen editor button selection so that when users select buttons on one page, the buttons in the same position on other pages are not also selected.
Fixed Elstar screen editor button move so that when a button on page 2 or higher is moved, the button in the same spot on page 1 is not marked "Not sold" and the moved button is stored on the correct page.
The following changes were made in this release.
The following enhancements were made in this release.
Removed 'All Tables from table list selection tree to avoid problems with users unknowingly requesting or sending table refreshes and selecting "All Tables" without realizing that that would also refresh the transaction tables such as orders and order items which should not normally be refreshed.
The following defects were resolved in this release.
Fixed conversion error that occurred when the version number of the central database is newer than the version number of a site database and the user sends a transaction for a table that does not have a conversion in the convert.xml file. Now the XML file contains the correct site version number instead of the newer central version number.
The following changes were made in this release.
The following enhancements were made in this release.
Improved audit and transaction number locking by ensuring that the lock is attempted at least 3 times before giving up to reduce the number of "already locked" errors experienced by users when the database is busy. Also changed system to delete any existing lock records the first time a lock is used so that restarting the system clears all locks. Also moved all lock records to the CDMValue table to speed up locking and unlocking, eliminate duplicate processing, and make it easier for users to manually delete lock records when necessary. Also added the locking user name and id and the date and time the lock was obtained to the VALUE column of the lock records so that information is available to help decide if the lock should be manually removed.
Added sanity checks to make sure that calls to increment the last used transaction number are passing a value greater than 0 since a negative number would cause the last used value to go down and transaction ids to be issued multiple times causing duplicate key errors in the audit trail.
Changed application menu mouse processing so that when users click on the blank area below the menu items the last menu item is not activated.
Split Elstar merchandise form into 3 separate forms so users can select from the appropriate share groups instead of always selecting the merchandise share groups and to eliminate the warning message for not selecting the right locations for all 3 subform's share groups.
Added "Function Parameters" tab to Aloha panel editor to provide enough room for editing function parameters that require a lot of space such as smart items or scripts.
Added "Copy Panel" button the the panel selection list in the Aloha panel editor which enables users to copy the currently selected panel to one or more destination sites. The panel is only copied to sites where the panel id is not already in use. If the panel id already exists at all selected destination sites then an error is displayed notifying the user.
Created a server function called exportFoodCostFiles that enables users to schedule the export process automatically in config.xml using the schedule element like this: <schedule frequency="DAILY" time="5:13 pm" task="exportFoodCostFiles( '7778', 2007, 8 )" />.
Created a server function called commitTransactions that causes the given list of package names to be committed to the given list of site numbers. Users can now schedule transaction commits to run automatically in config.xml using the schedule element like this: <schedule frequency="DAILY" time="4:11 pm" task="commitTransactions('*', '*')" />.
Created a server function called sendTableRefresh that causes the data in the tables in the given table list to be sent to the given sites as part of the given package. Users can now schedule table refreshes to run automatically in config.xml using the schedule element like this: <schedule frequency="DAILY" time="4:11 pm" task="sendTableRefresh( 'Menu Editor', '7778', 'AUTOREFRESH', '' ) + commitTransactions('"AUTOREFRESH"', '7778')" />.
Created a server function called requestTableRefresh that causes the data in the tables in the given table list to be requested from the given sites as part of the given package. Users can now schedule table refresh requests to run automatically in config.xml using the schedule element like this: <schedule frequency="DAILY" time="4:11 pm" task="requestTableRefresh( 'Menu Editor', '7778', 'AUTOREFRESH', '' ) + commitTransactions('"AUTOREFRESH"', '7778')" />.
The following defects were resolved in this release.
Fixed Elstar screen editor so that when the user adds a chain link, the new chain link record has the correct sequence number.
Fixed Null Pointer Exception that sometimes occurred when adding new rows that hava an auto-increment column.
Fixed insert transactions to not insert in sites that were not selected when inserting on a subform where the parent rows are shared but not all of the sites in the parent share group were selected. The system now correctly inserts to the selected sites that also have the parent row.
Changed "Edit Sharing" dialog so that users are not prompted to commit transactions as each site is shared. Now, users are only prompted to commit when they close the window.
Fixed error that occurred when the user was entering a new row on the main form and clicked one of the column headers on a subform before the new main record was saved. Now, instead of getting a "not found" error, the system simply ignores the click on the subform column header if the parent row is new and has not been saved yet.
Changed Aloha panel editor to set BTN.STYLE field to 0 by default.
Changed Aloha Item form so that "Ask for description" and "Ask for price" checkboxes on the "Miscellaneous" tab set their respective column values to Y or N instead of 1 or 0.
Changed Aloha Category form so that the default values of the DESC and USER colums was null, the default value of the OWNERID, STOREACC, and PARENTACC columns is 0, and the default value of the SUGGESTIVE and TIPSHARE columns is N. Also made the MAXCHKSET column editable as a checkbox with the label "Use max per check:".
Fixed Aloha panel editor so that when the user selects a "Script" button the script is displayed and each function in the script can be edited.
Fixed report of unexpected files after transaction processing that occurred when processing a table refresh transaction even though there were no transaction files left in folder after processing was complete. The system now only checks for .XML files left in the incoming folder after processing and ignores .FIL files that may still exist until the refresh transaction has been processed.
Fixed transaction conversion processing to support three or more versions of the application database. Before, if a table was not converted in the middle conversion of three conversions, no conversions were found for a site with the middle version number.
The following changes were made in this release.
The following enhancements were made in this release.
Added IRIS combo editor that enables users to easily change combo prices. Users can select a base item and then view and edit the base price, drink price, total price, and upcharge amount for all the different sizes of combo items that use the selected base item. The editor can be opened by clicking POS Data - Combo and Shake Price Editor. For more information, see IRIS.html in the help folder.
Added IRIS shake editor that enables users to easily change the price of all flavors of shakes of a given size with a single update. The editor can be opened by clicking POS Data - Combo and Shake Price Editor. For more information, see IRIS.html in the help folder.
Fixed error that occurred when user pressed Ctrl-Enter on the location values window to see which locations have the current value after they had switched from grid view to form view. The list of locations was not being properly transferred from the grid view form to the form view form.
Changed snapshot generator to ignore all transient fields and include all fields when sending a table refresh from a remote site to headquarters. This allows central users to see current values for transient fields even though they are not normally synchronized with the rest of the fields.
Added 'includeInInsert' attribute to transient fields in the transient field file which may be set to "Y" or "N" (default is "Y"). This enables users to specify whether or not the value for a transient field should be set when a new row is inserted in the table. This change allows the "Replicated" and "RepGUID" columns in certain IRIS tables to be set to the default value defined in the database when inserting rows in the table.
Write log entry every time transactions are committed and include the time and user that started the commit process.
The following defects were resolved in this release.
Fixed error that occurred when user pressed Ctrl-Enter on the location values window to see which locations have the current value after they had switched from grid view to form view. The list of locations was not being properly transferred from the grid view form to the form view form.
Fixed button text wrapping in IRIS menu editor to display button text properly and not cut off the first character of the wrapped line when the button text wraps on a space character instead of a newline character.
Fixed merchandise ID calculator to allow up to 120 id numbers for each category instead of only allowing gaps between existing merchandise id numbers to be filled in.
Change Elstar screen editor to cascade merchandise id updates to the Ingredient, Nutrient, Price, PrinterLocation, Recipe, and TaxXRef tables when the user changes a button's category.
Change Elstar screen editor to cascade merchandise record deletes to the Ingredient, Nutrient, Price, PrinterLocation, Recipe, and TaxXRef tables when the user deletes a button.
Changed IRIS menu editor to center button text vertically instead of aligning it to the top of the button.
The following changes were made in this release.
The following enhancements were made in this release.
Added 'Synchronize' flag to send and request file transactions so users can flag files that they want to keep synchronized. When the synchronize flag is set, the file is added to the list of files in the Remote Files table so that the system can resend the file when it is updated by calling the SendRemoteFiles function.
See Help\FileTransfer.htm for details.
Allow replaceable parameters in remote file and folder names so users can send and receive files from multiple stores with one command. Replaceable parameters %THISSITEID%, %THISSITENAME%, %THISCUSTOMID%, %REMOTESITEID%, %REMOTESITENAME%, %REMOTECUSTOMID%, %CENTRALSITEID%, %CENTRALSITENAME%, %CENTRALCUSTOMID% used in the file path or name will be replaced with this site's id, name, or custom id, the remote site's id, name, or custom id, or the central site's id, name, or custom id respectively.
Added 'SendRemoteFiles' function that goes through the list of files in the Remote Files table and sends either all the files or just the updated files to the sites specified by the user. This function replaces the older functionality of moving non-transaction files defined in the Remote Files table whenever one of EDM's transfer mechanisms was used. With SendRemoteFiles, non-transaction files can be sent and received regardless of how the EDM transaction files are transferred.
The parameters of the SendRemoteFiles function are:
To send updated files every day, this function can be run
automatically in the background by specifying it in a 'schedule' element
in the configuration file like this: <schedule frequency="Daily"
time="05:00 AM" task="SendRemoteFiles( true, '*', '',
'-Remote File Package', '', true )/>"
Added 'Schedule' element to configuration to make it easy to users to schedule any type of one-time or repeating task.
The schedule element has the following attributes:
The schedule element replaces the older attributes "TransactionProcessingTime", "AuditPurgeTime", and "AuditHistoryDays" since these can now all be handled with the schedule element as follows:
<schedule frequency = "DAILY" time = "4:00 AM" task = "purgeAuditTrail( 14 )" />
<schedule frequency = "DAILY" time = "5:00 AM" task = "ProcessTransactions('*')" />
See Help\ConfigurationFiles.htm for details.
Added 'ShowAlohaSubmenus' function that is used to show a grid of buttons on the Modifiers, Exception Modifiers, and Submenus forms. The function takes the x and y value of the upper left corner of the button grid as its only parameters. Users can double-click a button to edit its properties or right-click the button to be able to cut, copy, and paste buttons.
On form controls that are edited with text or multi-line entry fields, if the 'Length' property is greater than 0 then the user will not be able to type in more than 'Length' characters into the field.
Users can now change the menus and items on the EDM main menu by simply right-clicking the menu or item and selecting "Edit". Menu editing options available after right-clicking a menu are:
Menu editing options available after right-clicking an item are:
Support multiple roles per user to make it easier to configure security settings. For example, a user could be given the "Send Table Refresh" role and the "Price Editor" role.
Enable users to copy an existing role and assign it a new name when creating a new role in the role editor (Users - Edit Roles).
Added function to menu editor that changes the id of a menu to a user- specified id and changes all references to the old menu id to the new menu id. References include tbl_MenuMaster.MenuID, tbl_MenuBtns.MenuID, tbl_MenuBtns.BtnValue (if type == 2 (MENU) || 22 (PICKONEMENU) || 4 (TAB)), tbl_ItemMaster.SubstitutionMenu, tbl_ItemMaster.InstructionMenu, tbl_ItemMaster.TareMenu, tbl_ItemAttachments.ID (if IsItem=0), tblConcept.MenuID, tbl_ItemMenus.MenuID, tbl_ItemComponents.MenuID
Added "Find Item" button to IRIS menu editor so users can select an item and see a report of all site menus that contain the item. Item selection can be either by number or by name and both combo boxes select items as you type.
Add option to IRIS menu editor selection list to delete an item button from all menus. The user is prompted to select the item to delete, then the user is shown a list of menus that contain buttons with the item to be deleted at each location. Users can then decide to delete the item buttons and the system will confirm with an "Are you sure..." message.
Added options to IRIS menu editor to align all selected buttons to match the button with the highest top, the lowest bottom, the leftmost left, or the rightmost right edge.
Add options to IRIS menu editor to set all selected buttons to the same size as the tallest, shortest, widest, or narrowest selected button.
Added "Copy Menu" function to IRIS menu editor that enables user to copy a menu from one site to one or more destination sites. If the menu already exists at a destination site, that destination site is skipped.
Added 'Begin Update' event to controls so form designers can take action as soon as the user attempts to change the value in a field. This is useful for keeping users from editing fields by setting the 'Begin Update' event to: =Msg('This value may not be edited.', 'Information', 1 ) + CancelEvent()
Added check for VIEW permission on data before allowing request table refresh so users can't request data from sites that they don't have permission to view.
Enable user to select package when sharing data so any transactions generated by the sharing process are put in the desired package. After sharing, user is prompted to commit packages if any uncommitted transactions exist.
Added 'packageName' and 'packageDescription' parameters to 'shareLocationData' function so any transactions generated by the sharing process are put in the desired package.
Added a warning line to the message that is displayed at the end of transaction processing whenever there are transaction files left in the incoming folders after processing. This situation may arise if users have modified the expected transaction file numbers and the files should be deleted once the users know why they got stranded.
Added 'Switch Companies' button if there are multiple companies so that users that have multiple companies set up on the EDM server can switch companies without reentering their user id and password.
Updated the CDMLocationsAndGroups form to show both the number and name when selecting a site to edit or adding site to site group.
Reduced memory requirements and increased speed of searching for values in very large tables.
Certified program to operate correctly with Java 1.5.0.07 and changed the installation program to install that version of Java.
The following defects were resolved in this release.
Fixed the 'Output Table' that occurred when Access was configured as the system database type. Changed the Access driver to use mostly JDBC calls.
Fixed problem that was occurring whenever the schema file got deleted but the EDM database still exists. The error message was EdmError: Error code: 2714: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer] There is already an object named CDMRDSRC in the database. The system now restores the system tables to have both the correct name (such as CDMLocations), and the correct database name (such as CDMSITE).
Fixed the 'Report Measure' list on the IRIS Inventory form to properly refresh when the user moves to a new row.
Fixed conversion error caused by EDM using the destination site's table version number instead of the central site's version number as the "from" version when sending transactions from central to remote.
Fixed system to that when a table list is received from a site, the central data source version numbers are added if they are not already in the CDMRemoteSources table but they are not updated if they already exist.
Fixed Aloha Item form to get list of printer routing options from the PRG (printer groups) table instead of the PRT (printers) table.
Fixed Elstar Item form so that users can enter a new item and tab to the next record then immediately return to the previous record without getting an error because the system was trying to save the empty record.
Fixed "Row to be updated not found" error that occurred on the Elstar Item form when entering a new record and tabbing to the next record then going back to the previous record. The mod_datetime field and item_num fields were marked changed in the new record even though the user had not entered data in them. When the user moved to the previous record, the system would try to save the empty new record and get an error. Changed SqlServerJdbc.getColumn to pad millisecond value at end of date string to 3 zeroes. Changed SqlServerJdbc.getSqlConstant use "yyyy-MM-dd HH:mm:ss.SSS" format. Changed DataDateTime.SYSTEM_FORMAT to "yyyy-MM-dd HH:mm:ss.SSS".
Fixed error that occurred any time the user attempted to open a screen that did not have any buttons on it.
Improved Elstar screen editor so that newly created screens show up in the list of screens available to edit immediately without having to close and reopen the screen editing window.
Remove restriction that was previously implemented to limit the screen group id numbers to 1 through 250 inclusive. Now when a user creates a new screen group if id's 1 through 250 are all in use and active at at least one of the sites, then the next screen group id will be 251. The system starts looking for the next available id by starting at 1 and checking each id until it finds one that is not active at any of the selected sites or until it runs out of id's in the table.
Changed auto-sort process to leave buttons with the "Ignore Item" flag set in their original positions and sort the rest of the buttons around them.
Changed form close process to offer the user the option to continue closing anyway even after getting an error either saving the data, saving the form or query, or processing the form's close events. This will enable users to close a form that in older versions could not be closed because of an error message.
Fixed error that occurred after opening item form and switching to spreadsheet view then trying to modify the item category field.
Fixed errors that occurred when user attempted to change the merchangise id or AII number on the merchandise form. These values should not be updated so the 'Begin Update' event of the controls was set to display an error message to the user and cancel the event to prevent updates.
Added validation so that if the user sets the 'Decimal Places' attribute of a form control to a number greater than 0 then the user will not be allowed to enter a number with more digits than specified. If the form designer does not want to limit the digits after the decimal then leave the 'Decimal Places' attribute set to 0.
Changed screen editor so that whenever a user creates or edits a button, the merchandise department value for the button must contain a number greater than 0. The value is set by selecting a department on the button property dialog.
Added 'Rename' button to screen editor so user can click it when he want to rename the screen. The other way to access the rename function is to right click on the menu and select 'Rename' from the popup menu.
The following changes were made in this release.
The following enhancements were made in this release.
Added form to edit Elstar prices, printers, and taxes for merchandise items. Items may be selected by name or by AII number.
Changed Elstar screen editor items list to sort by AII number when it is first displayed but the user can click the button next to the combo box to sort by name.
Added type-select functionality to item list in Elstar screen editor so user can click in the field and start typing an AII number (or name if list is sorted by name) and the item that matches what they have typed will be selected as they type each character.
Added a price display to the lower right corner of all buttons on the Elstar screen editor. If there is only one price among the sites using the screen, the price is displayed in green. If there are multiple prices among the sites using the screen, the prices is displayed in green with an ellipsis (...) following it. If some sites that use the screen have a price and some do not, the price is displayed in red followed by ",X". If there is no price record at any of the sites, a red X is displayed.
Change title of Elstar Screen Editor to "Screen Group Editor" and changed "Position" label to "Main menu position" to avoid confusion with the button's screen position.
Enabled the Autosort checkbox on the Elstar menu editor so that when the user selects it, all buttons are sorted alphabetically by name. Users cannot move the buttons from their new positions when autosort is selected. The autosort action can be undone.
Changed the Add function of the Elstar screen editor to add a new button to the current page instead of always adding it to the first page.
Enhanced Elstar screen editor to put a yellow shadow on buttons that have another button underneath them so the user knows the other buttons are there.
Added a tool tip to the Elstar screen editor so that when the user hovers over a stack of buttons (denoted by the yellow shadow), a tool tip window will pop up and show the number of buttons in the stack.
Added "Show Main Menus by Location" query to show which screens are on the main menu at each location sorted by location then screen position.
Improved Elstar ITEM form to have pick lists for cost category, sub- category, and KDS Sort Order and to automatically calculate item id and AII numbers for new items.
Determined that the amount of time required to open the IRIS item pricing form can be dramatically reduced by adding a non-unique index on the tbl_ItemMaster on the ItemNum and ItemDesc columns.
Added support for the 'View' form attribute so that uses can check to see if the form is in SINGLE or Form view (1) or GRID view (2). For example, we can check the view before updating extra search combos that can't be seen in grid view like this: =iif( ACTIVEFORM.view = 2, setValue( 'CDMRecordSelector', ItemNum ), setValue( 'CDMRecordSelector', ItemNum ) + setValue( 'FindByName', ItemNum ) ).
Improved IRIS Item Pricing form performance when in grid view by setting the after current property to check the form view and only set the values in the 'FindByName' and 'FindByNumber' fields when not in grid view.
Fixed 'setValue' function to work with record copying so that the 'After Insert' form event is called after the record is copied and the new record is made the current record. This way, form designers can cause a a value to be set after the copy is complete. For example, on Aloha systems where the usernumber and item number should match, set the 'Before Insert' property to:
= iif( USERNUMBER <> ID, setValue( 'USERNUMBER', ID ) )
and set the 'After Insert' property to:
= iif( USERNUMBER <> ID, setValue( 'USERNUMBER', ID ) + saveRecord(), 0 )
Improved performance of setting 'Find by name' and 'Find by number' combos when user moves to a new row as well as the performance of any other expressions that call multiple functions. The actual change was to reduce the time waiting for new server jobs to start from 1 second to 1/20th of a second except during testing when it is still 1 second.
Add 'Include In Copy' attribute to subforms so form designer can specify whether or not subform records should be copied along with the main form records. For example, on the IRIS Item Master form, the SKU subform records are not copied along with the item because the same SKU cannot exist multiple times in the database.
Removed error message that was displayed when user attempted to share table data from site A to site B when the table data was already shared from site A to site B.
Changed web transfer to use XML commands instead of serialized Java command objects so that remote and central systems don't have to be running the same version of EDM so the serialization id's match.
Improved forms so combo boxes with the same source share their list so that less memory is used when many lists with the same source exist. The record selector list is not included in the sharing since its data source is closed each time the user goes to a different row.
Added "Product Name" column to "Product Cost" spreadsheet view to make the spreadsheet view of the form more usable.
Changed menu option and form name of "Recipe Ingredients by Product Number" form to "Recipe Ingredients Where Used"
Improved Server.waitForJobs function by changing it to allocate a request id before the server request is made and then removing it from the pending request list after the responst has been completely received and the modal status dialog (if any) has been closed. This makes it possible to run the production and test environment in exactly the same way.
The following defects were resolved in this release.
Fixed the difference analyzer in the Elstar Screen Editor to correctly determine if there are any differences in the screen group, button, chain link, merchandise, or the config system rows that control the number of rows and columns on the screen. Differences are now detected and reported correctly.
Fixed Elstar button label wrapping to only wrap to the next line if a newline, carriage return, or space character. It no longer wraps if the line is too wide for the button but no break characters are present.
Moved "Not Sold" checkbox on the Elstar screen editor to the property panel so it is more easily accessible to the user and fixed it to properly update the merchandise record. If the bNotSold column is not included in the transient file, the updates will be sent to remote sites.
Changed Link, Modifier, and Forced flags on Chain Link editor to be mutually exclusive so if user turns one on, the others are turned off.
Added limitation when adding chain links to a button so that only five chain links can be added. If the user attempts to add more than 5, an error message is displayed telling them that 5 is the maximum.
Validated that button label changes made with the Elstar screen editor were being written into outgoing transaction files.
Fixed date recognition function to recognize yyyy-MM-dd HH:mm:ss before yy-MM-dd.
Fixed Elstar screen editor so that when the user resizes the screen, the buttons move properly when the user drags them with the mouse.
Fixed Elstar screen editor to change merchandise id number in button record and delete original merchandise record and insert new merchandise record with a new id number that correctly reflects the new category number when the user changes the category of a button.
Fixed error 'Expected value at column 0 of ' '.' that sometimes occurred when editing price descriptions on the Price Description form.
Fixed insert process to work correctly on subforms that have conditions on the query such at the SKU subform on the Item Master form which has the condition "SkuType=1".
Fixed error that occurred when deleting last row on a form that edits a central-only table such as the Elstar ITEM table.
Fixed endless error loop that occured when you open site form, click on first site in group row (even if empty) and click display as spreadsheet.
Fixed string search in form and spreadsheet view so that user can search all columns with the case-sensitive flag turned off and find the values correctly.
Fix spreadsheet scrolling to show last row when thumb dragged to bottom.
Changed cursor handling so that when you select an item from the record selector, then click on another field such as the price, the cursor no longer jumps back to the key field (PMID field on the price form) which can cause users to change the key field value instead of the intended value.
Fixed Price form spreadsheet view so that if the cursor is on a .99 price and you click on a 1.29 price, the .99 price is displayed on the 1.29 row and then the 1.29 price is displayed.
Fixed error that occurred when an item name contains a single quote such as "Don't Make" and the item name is one of the columns in the CDMRecordSelector.
Fixed form focus error that occurred when user opened the IRIS Menu Macro form and then opened the IRIS Item Master form without closing the Menu Macro form.
The following changes were made in this release.
The following enhancements were made in this release.
Added promptForCommitOnClose option to configuration file (config.xml) that can be set to "Y" if user should be prompted to commit transactions when closing forms or "N" if not. Users can always commit transactions by selecting Transactions - Commit Selected Transactions from the main menu.
Changed import and export routines to use the system default code page (or character set) instead of UTF-8 to handle special characters in product names in the PRDNOS.ASC import/export file.
Added Products form so users can edit the CKE Products table.
Added ProductCosts form so users can edit the CKE ProductCosts table.
Added Recipes form so users can edit the CKE Recipes table.
Added Product Ingredients form so users can edit products anywhere they are used in the CKE Recipes table.
Added exportFoodCostFiles which creates ascii export files for the food cost system.
Added copyFoodCostPeriodData function which copies food cost data from one period to another.
Added deleteFoodCostPeriodData function which deletes food cost data for one period in a fiscal year.
Added importFoodCostProducts function which imports an ascii file from a distribution center containing products for the food cost system.
Added FoodCostProductsMissingData query which displays a list of products which are missing data in one or more fields.
The following defects were resolved in this release.
Fixed the import of fixed-length ascii files to interpret the field length list correctly when values are separated by semicolons.
Fixed the export of fixed-length ascii files to pad numbers with spaces instead of zeros.
Fixed tbl_ItemPricing_Child form so that after selecting the item, users can use the next record and previous record tools to move among the prices for that item with different parent items.
Fixed tbl_PayTypeConfig Subform to enable users to select configuration options from the list and add new configuration options and values.
The following changes were made in this release.
The following enhancements were made in this release.
Improved Microsoft Access table loading function so that if a field is part of the primary key, its 'Required' flag was set to make it compatible with other databases in which primary key fields can not be null.
Changed database names of system tables and fields where necessary to fit within the DBase maximum sizes of 11 character table names and 8 character field names so the system data can be stored in dbase files.
Improved transient field handling so that transient fields are completely left out of insert, update, delete, and refresh table transactions. This enables the system to correctly handle the IRIS Replication and RepGUID columns by totally ignoring them.
The following defects were resolved in this release.
Fixed audit purge function to not purge pending transactions (those with a future effective date) even if they are older than the number of days of history being kept.
Fixed Null Pointer Exception that sometimes occurred when using the sharing operations.
The following changes were made in this release.
The following enhancements were made in this release.
Enable users to upgrade the central database easily when they begin using a new version of their application. EDM can support both the old and new versions of the application during the rollout period. See Upgrading Your Application in the Help system for more information.
The following changes were made in this release.
The following enhancements were made in this release.
Enhanced check boxes and radio buttons to support fields that use string values such as Y and N or T and F to represent boolean values true and false. To use another true/false value besides 1/0, set the 'Option Value' property of the checkbox or radio button to the 'true' value such as Y, Yes, T, or True and the system will figure out the false value as the opposite of the true value (N, No, F, False).
The following defects were resolved in this release.
Fixed error that occured when querying tables that use column names that are reserved words in the 'group by' or 'order by' clauses of the query.
Fixed error that caused null image file names in button records to be converted to blanks whenever a menu was edited with the IRIS menu editor.
The following changes were made in this release.
The following enhancements were made in this release.
Changed the reset transaction to process before attempting to lock the audit trail to handle situations where the audit trail lock is the cause of the problem.
The following defects were resolved in this release.
Fixed Request Table Refresh transaction to use selected package instead of always being sent as part of the default package.
Fixed null pointer exception that sometimes occurred when using View Transactions and entering a store number in both id fields.
Fixed SQL Server table creation methods to create TINYINT fields only when numeric digits < 3, SMALLINT fields when numeric digits < 5, and INT fields when numeric digits < 10 to prevent numeric overflow errors.
The following changes were made in this release.
The following enhancements were made in this release.
Added support for dBASE IV databases using the DataDirect ODBC driver such as the one used by the Aloha POS. See SupportedDatabase.html for details.
Added support for FoxPro databases, See SupportedDatabase.html for details.
Added support for the popular, open-source database MySQL. The JDBC driver provides good performance and the database if free. See SupportedDatabase.html for details.
Added getIniValue function to read and return a value from a Windows- style INI file. This is useful in the expression attribute of the valueLookup element in the config.xml file for reading the store number and name from an INI file.
Added getRegistryValue function to read and return a value from a Windows registry. This is useful in the expression attribute of the valueLookup element in the config.xml file for reading the store number and name from the registry.
The system no longer uses positioned updates in queries which makes it compatible with a wider range of JDBC and ODBC drivers such as the MySQL driver.
Since the system cannot tell if a modified row exists if there is no unique key on the table, automatic conflict resolution is disabled when no unique key is available. This prevents the problem of adding an almost identical row when an update transaction can't find an exactly matching row to update.
Enhanced site import function to enable users to specify a share group and table list so that after the site is imported, it automatically shares the data for the tables in the share group. See 'importSitesInFileList' in the Function help for more details. See the function importSitesInFileList for more details.
The following defects were resolved in this release.
Fixed help window to correctly display contents in left frame and detailed help information in right frame.
Fixed null pointer exception that sometimes occurr when an invalid package name was used when requesting a table refresh.
Fixed data type mismatch error when editing the scope radio buttons on the IRIS discounts form. Error could occur on any radio buttons used on a form as part of a group.
Fixed problem that occurred with some FTP servers where the client got an error when trying to return to the home folder by referring to is as "/". The system now records the home folder name on successful login.
Fixed error opening tables with '0' default for date/time types by changing system to interpret an integer default value for a date/time value as the number of days from the "zero" date (1899-12-30).
Fixed error caused by calling commit function with empty list of transaction id's by checking to make sure the list was not empty before executing the SQL statement.
Fixed site cache to update properly in all situations by calling the function to update the cache from all points where a transaction is added or updated in the audit trail. This fixed the problem of occasionally adding a site but not being able to find it in site lists.
Fixed update transaction processing so that if the column is not updated and the old value is null, the new value will be null instead of blank.
The following changes were made in this release.
The following enhancements were made in this release.
Added split window location selection so users can see which locations are selected in the right window and which ones have not been selected in the left window to make it easier to ensure that the selected location list is correct.
Improved site selection dialog by allowing users to just show share groups, location groups, or locations.
Added 'Find by name' and 'Find by number' capability to the dialog with auto-completion. For example, the user can type 'be' in the 'Find by name' field and the first location with a name that starts with 'be' will be selected. As soon as the correct name is selected, pressing enter will move it to the selected location list.
Added importSitesInFileList() function imports sites from another company in the same EDM central system. It can be used when using separate central databases to maintain data for sites with different application versions. When importing sites, any share groups and locations groups that contain the site are also imported. If the share group or location group already exists, the imported site is just added to it. The list of site numbers to import is read from a text file with one or more comma-delimited site numbers per line. Duplicates are ignored. When the site is imported successfully, it is removed from the source company.
Added conversion file generator that compares two schema files and automatically generates a conversion file that will convert data between locations using one schema and locations using the other schema. Put the older and newer schemas in the EDM folder and name them schema_old.xml and schema_new.xml and restart the system and it will create a conversion file named convert_generated.xml. The conversion will not recognize renamed columns but will recognize all added and removed columns and identify tables that have been added or dropped in comments in the conversion file.
The following defects were resolved in this release.
Fixed 'tbl_MenuMacro' not found error that occurred when using the IRIS menu editor with older versions of IRIS that did not support menu macros.
Fixed problem that sometimes occurred when using Ctrl-Enter to update the value in a combo box when the initial value was null. The new value is now properly displayed on the form and updated in the database.
Changed transaction commit process so that if the user specified that the site's custom id should be used as part of the outgoing folder name but the custom id is blank, the site number is used instead. This prevents transaction files from being written in the parent folder.
The following changes were made in this release.
The following enhancements were made in this release.
Improved site selection dialog by sorting share groups and location groups in true alphabetical order regardless of case.
The following defects were resolved in this release.
Fixed problem that could cause tables in a table refresh to be incorrectly converted to an older version before being sent due to the order of the tables in the FIL not matching the order of the tables in the XML after reordering by the snapshot generator.
The following changes were made in this release.
The following enhancements were made in this release.
Added option to configure system to automatically process all pending transactions at one or more times each day. To enable automatic processing set the 'transactionProcessingTimes' attribute in config.xml to a time in the default local format such as "5:00 AM". To process at more than one time each day, enter multiple times separated by a comma such as "6:00 PM, 6:00 AM". If the attribute does not exist in the config.xml file or the value is blank or an invalid time string, not automatic transaction processing will be performed. At remote sites where the system is not running all the time in a web server, transaction processing can still be initiated from the command line or from a batch file.
Added option to configure system to automatically purge the audit trail to the desired number of days of history at a specified time each day. To configure the time to purge the audit trail, set the 'auditPurgeTime' attribute in config.xml to a time in the default local format such as "6:00 AM". If the attribute does not exist in the config.xml file or the value is blank or an invalid time string, the audit trail will be purged immediately when the system is started and then again every 24 hours as long as the system is running.
Added '-nomenu' option to command line so that the system can be started in standalone mode without displaying the main menu window. This is useful at remote sites when processing transactions or transferring files using a command line command and you don't want the users to see the menu. The -nomenu option should not be used unless the startup command has an expression that ends with the Exit() function because you won't be able to use the system without the main menu. To add the -nomenu option to a batch file such as process.bat or transfer_web.bat, add "-nomenu" at the end of the command line and add %2 %3 to the end of the command line in go.bat.
Enhanced combo boxes so users can begin typing the value they want and the list will automatically open and set the selection to the item that starts with the same characters the user has typed so far. The comparison is not case-insensitive. When the user has typed part of the text, the up and down arrow keys may be used to move to the desired item and the enter key will select the currently item.
Improved RunApp function so that batch files that produce output can be executed. The output can be viewed in the log file by setting the log level to FINE.
Made the main menu the owner window of the 'Select Locations' dialog so that if it is open and another application window is brought to the front, the user can click on the browser button on the task bar and bring it back to the front and the dialog will be displayed on top of the main menu instead of behind it.
Set audit trail purge function to run when the server is started and then once every 24 hours and log the purge time.
Add error information to log if file transfer fails to connect or gets other errors during processing.
Changed system to automatically reload the main menu after processing transactions in case the table list was changed by processing a table list. Users no longer have to log out and back in to see the application tables after requesting a new table list from a remote location.
Improved progress bar calculations that determine the percent complete and the estimated time remaining to be more accurate. It is still an estimate since upcoming tasks may take longer than previous tasks but it is much better at estimating now.
Added 'Overwrite existing data?" checkbox to the table selection dialog when copying site data so users have the option to overwrite existing data when copying. If the destination table data is overwritten, the table version number is not changed. If the destination table data has never been loaded or has been deleted, the table version will be copied from the source site table.
Improved the 'Receive Transactions' process to continue on if an error occurs while reading a transaction file. Now, if transactions are being processed at central for multiple sites and the first site has an unreadable transaction file, the bad file will be renamed with a .err extension and the system will continue processing the other files and the other sites instead of stopping and forcing the user to change the file number to skip the bad file. The bad file is still reported in an error message and the log.
Added 'Grid Width' property to controls in form designer so that users can precisely control how wide a control's grid column should be when the form is displayed in spreadsheet view.
The following defects were resolved in this release.
Fixed Null Pointer Exception that could happen occasionally when saving a row on a form. The error occurred when the command to the server returned before the background process completed processing the update.
Fixed error reporting when processing a table refresh so that if the transaction fails and later fails again when retried, the error message from the failure is put in the transaction error field.
Removed error reported from remote sites when failing to add a package to the package table (CDMPackage) when the id already exists. Now, if the id exists, the system does not attempt to add it again.
Fixed error that occurred after adding a new company to the central configuration then trying to request a table list caused by the system not adding the default package row to the package table.
Fixed startup error that occured when you create a role, assign it to a user, then change the role name. The changed name is now cascaded to all users with that role.
Fixed the openForm() function's view parameter to accept the values 'SINGLE' for form view, 'GRID' for spreadsheet view, and '' for default view.
Fixed problem in record copy function that generated an error when copying subform records if the name of the link field in the child table did not match the name of the link field in the parent table.
Fixed the automatic delete of subform records so that if a subform record is in a different share group than the main record, it is properly deleted. For example, when deleting an item from unshared location 1, if the prices for location 1 are in share group -1 they will now be properly deleted when the item is deleted.
Fixed automatic logout when session times out due to inactivity to properly close all open forms and release all database connections. Session time out is controlled by the 'sessionTimeoutMinutes' attribute in config.xml. If the sessionTimeoutMinutes attribute is set to 0 or missing, sessions never time out.
Fixed expression processor so that after it processes a function it also waits for any modal dialog boxes such as message boxes to be closed by the user before continuing. For example, in process.bat, if showWarnings(1) is used, the program will not exit until the user responds to the transaction processing success/fail message box.
Fixed 'Error updating list model' error that sometimes occurred when updating a column in a subform that has a CDMRecordSelector control. The error did not affect the database update or transaction generation but was caused by an improper update to the form's row selection list.
Fixed system so that insert does not get an error when the change selection combo has fields in it that are not in the table being edited like the ItemDesc field on the Item Pricing form.
The following changes were made in this release.
The following enhancements were made in this release.
The following defects were resolved in this release.
Fixed conversion class for the IRIS table tblTax to correctly report the table name as IRIS_dbo_tblTax.
The following changes were made in this release.
The following enhancements were made in this release.
The following defects were resolved in this release.
Fixed 'null data type' error that occurs on the IRIS Item Master form when editing a location that does not have either printer or monitor devices in tblDeviceCategory.
The following changes were made in this release.
The following enhancements were made in this release.
Added a graphical menu builder for SMART POS systems that enables users to quickly create and modify menu screens. The menu builder includes drag-and-drop functionality, moving, sizing, and setting properties on both menus and buttons. System defaults can also be configured. The function that runs the menu builder is "editSmartMenus()". The new menu builder replaces the older system of copying data to a SMART database, running the SMART menu builder, then extracting the changes from the SMART database.
Added "Cascade deletes" property to subforms to tell the system that all the rows on the subform should be deleted when the parent form row is deleted. This works even if the tables do not have unique keys and no relation is defined between the tables. Note that when the form is in grid view, the subforms are not loaded so deletes are not cascaded unless relations are defined between the parent and child tables. Also note that if there are child tables that do not have a relation defined to the parent table and no subform exists on the parent form, the child table rows will not be deleted.
Added 'Acting key fields' property to forms so user can specify fields to use as key fields on forms that edit tables that do not have a unique key specified in the database.
Enhanced record copy function to use key fields specified in the 'Acting key fields' property of forms that edit tables that do not have a unique key specified in the database.
Enhanced record copy function to update all counter fields when copying records instead of copying the counter field values. When copying, all counter fields that had the same original value will have the same new value.
When selecting tables for table refreshes, sharing, unsharing, copying or deleting data, users can now select snapshots and/or individual tables.
Improved speed of table refresh processing when processing a table that does not have a primary key defined.
The audit trail is now locked when receiving and processing transactions in addition to when committing transactions. Only one user at a time may commit or process transactions. If another user tries to commit or process transactions while transactions are being committed or processed, a lock error is displayed. If the process fails while the audit trail is locked, the lock may be released manually by deleting the rows in the audit trail with transaction id's less than zero. The system does allow one user to commit transactions while another user is processing transactions since this does not involve any data conflicts or possibility of duplicate processing.
The following defects were resolved in this release.
Fixed the Options tab of the button properties dialog in the IRIS menu editor so that new values entered in the parameter and prices adjustment fields are saved properly.
Fixed time entry fields on Date/Time tab of discount form to allow user to correctly enter and edit just a time value and set the date part of the time to 1899-12-30 which is the "zero" date for the database.
Fixed problem that caused tabs on forms to sometimes not display properly when a combo box field contains a value that is not in the combo box list.
Fixed transaction package commit function to mark transactions committed in blocks of 300 instead of all at once to avoid causing the SQL statement to be too large or the Oracle limit of 1000 items in an IN() list to be exceeded. This error only occurred when committing more than 1000 transactions to a single location.
The following changes were made in this release.
The following enhancements were made in this release.
Users can now press Ctrl-Z to perform the undo function which is compatible with Windows user interface guidelines. The Ctrl-Z shortcut key is shown on the Edit menu of forms. The Escape key still may also be used to perform the undo function.
Enhanced the undo function to also undo changes made on central forms using the Ctrl-Enter key to edit values from multiple locations. When the user selects Undo, if the current field matches the last field updated then it is undone to its previous value, otherwise all the updates to the record are restored to their previous values. Undo only affects the current form, not its subforms, and the list of undoable changes is cleared when the user moves to a different record.
Improved snapshot processor to check for duplicate table names and only process each unique table name once. This eliminates the possibility of errors in table refresh processing caused by duplicate table names in the snapshot file.
Improved system to allow users to enter values into auto-increment fields if a specific value is desired. If the field is left null, the system will set it to the highest existing value plus one.
Changed tab order and field arrangement on item master form to make the PLU number field the first field in the tab order and place it in the upper left corner of the form.
Set the default value of the 'Active' flag to true on the 'Item Master 373' form and the 'Item Master by SKU 373' form.
Moved 'Standard Cost' field next to 'Report Measure' field in Inventory form to help users understand that the cost field is for the same unit of measure as the selected 'Report Measure'.
Add "Add Multiple Categories" button to 'ItemMaster 373' and 'ItemMaster by SKU 373' forms.
The following defects were resolved in this release.
Fixed the Undo function to properly clear and redisplay the field values that were changed back to their original values.
Fixed Find function on forms so that it works with both numeric and string fields and the find options such as searching forward and backward and searching for partial strings all work correctly.
Fixed the 'Control not found' error that occurred when entering an invalid value into a control with a validation expression. It now displays the correct error message.
Fixed setValue function to properly update fields on central forms. This can be used in the 'After Update' property of form controls and the 'Before Insert' and 'Before Update' properties of forms to set control values. For example, when the user set one checkbox field to true, the setValue function can be used to set other checkbox fields to false.
Only the updated sites will be affected. If the user is using the ValuePopup window, only the sites affected by the specific value change are included, otherwise, only the sites included in the list of all updates to the row are included.
For example, if sites 1 and 2 have the name 'A' and site 3 has the name 'B' and the user updates 'A' to 'A1' and the 'Before Update' property sets the value of 'lastModified' to the current date, then only sites 1 and 2 will have their 'lastModified' set since site 3 was not actually updated.
Fixed problem that caused value popup window to be displayed with no value to edit when one of the fields in the record is a blank string but not a null value.
Fixed queries that were built to query a field that was null or a blank string with "column is null" to use "column is null" for null values and "column = ''" for blank strings.
Fixed 'find' function to correctly perform a binary search on numeric fields such as the site id in the 'Locations and Groups' form.
Fixed Location popup so that it displays share groups for the subform table instead of blanks when subform data is shared in different share groups from main form data.
Fixed Default View form attribute in form designer to properly dieplay 'Form' or 'Spreadsheet' and allow user to update the value.
Fixed error message displayed when some transactions fail when processing refresh to correctly display the transaction and error information
Fixed location selection window to display 'You must select at least one location' instead of a number format exception when the user clicks on 'Share Groups' or 'Location Groups' or 'All Locations and Groups' and there are no groups under 'Share Groups' or 'Location Groups'.
Fixed the 'Change Selection' lists to correctly load the list of rows when some selection column values were null and others were blank strings to eliminate the display of duplicate rows in the list.
Fixed the 'Database not connected error' that sometimes occurred when using the 'Add Locations to Group' button to add locations to a location group.
Fixed toolbar buttons so if a subform control is selected or if the user has selected rows on a subform, the toolbar buttons on the main form affect the subform instead of the main form.
Fixed updated values to show correctly when returning to row after changing the value using Ctrl-Enter. This problem only appeared on forms for tables that do not have a key and the user did not define a selection list for the form (CDMRecordSelector combo box).
Fixed subforms to properly refresh the row data when the user selects 'Save Record' to save a new record instead of tabbing or arrowing to another row.
Fixed error that occurred when a new record is added on the main form and then a new record is immediately added in a subform without saving the main record.
Fixed tab order on 'ItemMaster 373' and 'ItemMaster by SKU 373' forms so that when entering a new item, after entering the receipt description and pressing tab, you don't jump to the 'Current Price' tab.
Fixed 'Refresh Brand and Cetegory Lists' button on 'ItemMaster 373' and 'ItemMaster by SKU 373' forms to correctly refresh the category list on the category subform.
Fixed 'Edit Remote Table List' form to default to 0 in Ignore Insert, Ignore Update, and Ignore Delete fields. Null values cause errors.
The following changes were made in this release.
The following enhancements were made in this release.
Added retail versions of the item and pricing forms that list rows by SKU instead of by item number. The new forms are on the "POS Data for Retail" menu.
Added support for NULL field values on tables, forms, queries, and table refreshes. Added option to form, table, and grid handling so that user can enter Ctrl-0 to set a field value to null. Ctrl-0 can be used directly in a form field when inserting a new record, or in the "Location Values" popup window when editing a record. Fields that have a null value will display <NULL> until the user tabs or clicks in the field at which time it will display a blank. Transaction files have an additional column attribute named "null" which may be bet set to "old", "new", or "both" if one or both of the column values is null. If neither column value is null, the "null" attribute will not be included. A null value is different from an empty string value.
Users can now refer to registry values in the data source elements of config.xml. The referenced registry entry will be used if the string begins with ?REGISTRY_KEY=. If not, the attribute value is used.
For example, the string:
"?Registry_key=software\\PSI\\IRIS;Value=ConnectString;Substring=Data Source"
Would be replaced with the 'Data Source' portion of the 'ConnectString' value of the registry key 'HKEY_LOCAL_MACHINE\software\PSI\IRIS' if found.
The Registry_Key tells the system which registry key to use in the HKEY_LOCAL_MACHINE section of the registry. The Value tells the system which value in the specified key to retrieve. If Substring is found after the value then it will be used to extract a particular portion of the registry key value of the form 'substring1=value1;substring2=value2;...'
Note that no spaces are allowed around the = or ; delimiters and the keywords Registry_Key, Value, and Substring are not case sensitive.
All error message displayed to the user are now written to the log on the system server to aid in diagnosing and resolving problems..
Improved form menu and toolbar handling so that when a menu or toolbar option is selected and the subform is the current form, the action affects the subform instead of the main form.
Added PAR level subform to 'Details' tab of inventory master form (302) so users can add PAR levels to an inventory item. Users can also add inventory items to PAR levels using the 'PAR Levels' form on the 'Inventory' menu.
Added a 'Refresh Report Measure List' button to the inventory master form (302) so that when users add a new measure, they can select it from the 'Report Measure' drop-down list.
Changed all forms that allow user to select inventory items to only show items where the 'Active' flag is not 0. The affected forms are:
The following defects were resolved in this release.
Fixed problem in which certain error messages could be moved behind the main window if the user switched to another application after the error message is displayed. Now when the user switches back to EDM, any error messages will be brought to the front.
Fix subform paint routine so that it does not draw on the parent form if the subform is wider than the window in which it is displayed. See 'tblLinkMeas Recipe Subform' on the 'Costing' tab of the 'Recipe' form for an example.
The following changes were made in this release.
The following enhancements were made in this release.
Improved process whereby unique transaction id's are obtained from the database so that preallocated transaction id's are stored in a thread safe list. This improves performance when there are several processes trying to write transactions into the audit trail at the same time.
Added site number to duplicate transaction file error message to make it faster and easier to resolve the issue of a file already existing in the outgoing folder for a site.
The following defects were resolved in this release.
Changed reset transaction processing to preserver the custom id, host name, user id, password, and company name for the central location site record.
Changed transaction processing to lock the list of transaction managers for sites to eliminate the ConcurrentModificationException that could sometimes occur if more than one thread was writing transactions at the same time.
Changed the createTable method of the Oracle driver to handle null table names instead of throwing a null pointer exception.
Fixed update process in forms so that after changing a row in a form and then using change selection combo to go to another row, the "Update Audit Trail" dialog is updated correctly and closes when complete.
The following changes were made in this release.
The following enhancements were made in this release.
Added support for IRIS 3.7.3 by adding a Retail checkbox to the Item Master form, updating the table conversion XML file, and adding a new batch file to the installation to install with an IRIS 3.7.3 system.
Improved the system to support multiple central users when running in standalone mode where each user has the software installed in his PC and all users share the system database. This makes it possible for users to use the latest version of EDM even if they require the use of other applications to edit the data. For example, SMART users can now use EDM in standalone mode instead of through a browser which enables them to continue using SMART to edit menus.
Multi-user support ensures that cached records such as sites, site groups, and remote tables are kept up to date on each users machine whenever any user makes an update. A cache manager watches the audit trail for updates to tables whose data is cached and updates the cache as necessary.
Added PAR Levels form to Inventory menu so users can edit PAR levels.
Added form to Inventory menu so users can assign SKU number to inventory items with specific measures.
Added form to Inventory menu so users can assign SKU number to recipes with specific measures.
Added subform to vendor form so users can assign multiple items to vendor.
Added subform to Count Frequencies form so users can assign multiple items to a count frequency.
Added subform to Thresholds form so users can assign multiple items to a threshold.
Added subform to Locations form so users can assign multiple items to a location.
Added documentation to Installing EDM to help users configure system security to allow them to use the system clipboard for copying and pasting by giving the system security permissions to access the resources of the users computer.
The following defects were resolved in this release.
Changed menu editor to insert carriage return and newline for line breaks instead of just a newline.
Fixed status dialog processor to eliminate the situation where the 'No transactions are pending' message box would be displayed twice making it difficult for the user to respond to the program.
Removed the error window that was displayed when the user attempted to rename a table, query, or form and then clicked the cancel button instead of the ok button.
Fixed alignment buttons on the tool bar of the form designer to correctly set the alignment to Left, Center, and Right.
Fixed 'Null Pointer Exception' in 'Add Multiple Rows' function when the control name passed to the function did not exsist on the given form.
Renamed the 'Configuration Tables for IRIS 3.5.7' to 'Configuration Tables for IRIS 3.7.2' in the installation for IRIS 3.7.2.
The following changes were made in this release.
The following enhancements were made in this release.
Added option to hide splash screen on startup by adding the parameter "-nosplash" to the command line in go.bat. For example, the following command line in go.bat will start the system without displaying the splash screen: @"C:\Program Files\Java\jre1.5.0_02\bin\java.exe" "-Duser.dir=C:\EdmWeb" -jar C:\EdmWeb\lib\system.jar "-user=remote" "-pwd=remote" "-nosplash" %1
See command line options. for additional information on command line parameters.
The following defects were resolved in this release.
Fixed transient field file reader to load the transient field names correctly. This solves the problem of the updates to the inventory master table overwriting the LastOrdered data and other transient fields at the store.
The following changes were made in this release.
The following enhancements were made in this release.
Changed Copy Records function to send message to server to copy the row from each selected location to the same location so that if locations have different values, the copied rows will have different values. For example, when copying items that have different routings and prices at different sites, copies should have different routings and prices.
Display the company name following the user name on welcome line of the main menu so users know which company they are currently working with.
Increate the timeout to 20 seconds for the procedure that attempts to lock lock the current transaction number in the CDMValue table so that it can increment it to the next transaction number while committing transactions.
The following defects were resolved in this release.
Fixed problem in system that caused the SENTTFN and RCVDTFN fields to be copied from the previous record when entering a new record.
Fixed system so users don't get a ClassCastException error when editing data on the tblStoreInfo form.
Fix system so that it displays the latest value entered in a field after updating the field, leaving the row and coming back to the row. Affected forms were changed to use CDMRecordSelector as the record selector field name instead of RecordSelector. The affected forms were:
Fixed problem with certain queries where the column names were evaluating to null causing syntax errors when passed to the database.
Fixed snapshot processing when a version 3.1 or later system receives a table refresh with a transaction version less than 7. This occurs when a remote system has been upgraded to EDM 3.1 or later but the central system still thinks it is on EDM 3.0 or earlier.
Fixed the NumberFormatException that occured when selecting a share group that had no sites assigned to it.
When running in standalone mode (such as at remote sites), if there is a background process running when the user tries to exit the program, the background process will be allowed to complete before the program exits.
The following changes were made in this release.
The following enhancements were made in this release.
Transaction conversion information, used when sending transactions to sites that have a different version of the database, is now stored in an XML file instead of being hard-coded into an application-specific function. The conversion file is checked each time transactions are generated so that if the conversion file is updated, the updated version will be used immediately without restarting the server. Also, an updated conversion file can be sent to a remote site and will take effect immediately for any transactions sent after the file.
The file containing the IRIS conversions up to IRIS version 3.7.2 is called convert_iris.xml
The XML conversion file requires two changes to config.xml;
1) Add the following line in the company section (usually right after the transientFieldFile line:
transactionConversionFile = "convert_iris.xml"
2) Replace the transactionFilter line (near the end) with the following line:
<transactionFilter class = "edmserver.tran.TransactionConversionFilter"/>
At remote sites, the version number for a data source is now used for all table version numbers instead of tracking each table's version number in the table list. The data source version number is specified in the config.xml file in each application data source like this:
<dataSource name = "IRIS" version = "3.5.7" type = "SQLSERVER_JDBC" database = "IRIS" server = "localhost" trusted = "N" user = "sa" password = ""/>
When a new version of an application is installed at a remote site with modified database structures, update the config.xml and convert.xml to reflect the new database version.
>Changed remote sites to load all tables in all data sources instead of supplying a table list denoting which tables to load. This means that the central site can request and maintain data for any table at the remote site without sending a new table list and the remote site no longer needs to have or maintain a table list file. In order to handle the possibility of duplicate table or key names in different data sources, the table names are stored in the application in the form datasourcename_schema_tablename. For example, if the IRIS data source has a table named dbo.dtproperties and the LaborPro data source has a table named dbo.dtproperties, the application will store the table names as IRIS_dbo_dtproperties and LaborPro_dbo_dtproperties. As a consequence of this naming convention, all remote sites in a company must use the same data source names in order for the central system to recognize them. When adding tables to snapshots, only the original table name needs to be specified as long as it is unique, otherwise, the full name of the table must be specified.
Changed system to not use the table list file. At central sites, the system now adds a record to CDMRemoteTables for each central table to keep track of the central version number and default values for ignoreing inserts, updates, and deletes for each table and the schema file at central contains the original remote data source name instead of the central data source name. At remote sites, the version number and data source are kept in the schema file.
The following defects were resolved in this release.
Fixed IRIS menu editor to properly load images onto buttons and allow user to change or delete the image. Also fixed handling of error situation in which image file is not found.
Changed the menu editor so that is does not remember its item list from the last time the menu editor was used. This solves the problem of using the menu editor, adding and item, opening the menu editor, and not being able to see the new item.
Fixed errors in inventory forms that occurred when adding recipe categories on the recipe form and deleting recipe ingredients or items.
The following changes were made in this release.
The following enhancements were made in this release.
Changed menu editor to contain a drop-down list of menus in the property window instead of just the menu id and name to make it possible to select a different menu for editing without closing the menu editor window first.
Added snap-to-grid option which allows user to display a grid of points and perform move and size operations in 4-pixel increments instead of 1-pixel increments which helps consistently position and size buttons.
Changed menu editor to support undo of all actions. Undo can be accessed by pressing Ctrl-Z or selecting it from the popup menu when you right-click on a menu or button.
Changed menu editor to wrap button text sooner so that text on the menu editor wraps at the same points as text on the POS system.
Changed menu editor to allow user to select any number of buttons and when resizing one button, all selected buttons are resized by the same amount. Resizing is limited so that no selected button can have less than 1 width or height and no button can have a negative x or y coordinate.
Changed menu editor so that when users add a new button, the button is created at the point where they right-clicked on the menu to popup the menu allowing them to add a button. If the 'Commands' button is used to add a new button, the new button will be created at 0,0.
Added Jump to Menu option on popup menu of tabs in the menu editor enabling users to jump to the menu referred to by the tab.
Added option to support macro buttons in the menu editor so that users of older versions of IRIS that did not have macros can disable them and users of newer versions of IRIS can use them.
Menu item actions are now performed with a single mouse click instead of a double-click.
Changed processing of a table list transaction to refresh relations between all tables instead of just any new tables that were added. This makes it easy to get a correct set of table relations when the schema file has been rebuilt from the central system database.
Changed the value popup dialog to return value of combo entry field if it does not match the value of the selected item in the list so that users can enter values that are not in the list in the entry field of the combo box.
The following defects were resolved in this release.
Changed default date from 1/1/1901 to 12/20/1899 to match SQL Server's 'zero date' to resolve problems that arose when editing times on the day part form.
Fixed radio buttons so that they display the correct selection status when part of a group.
Fixed radio button insert and update when in a group to that when adding a new record, the state of the radio button is correctly displayed and saved. This fixes the problem of setting the Scope buttons on the Discount form. Also fixed the update so that when you click a radio button that is in a group, the value popup window is automatically displayed and the transaction includes the correct old and new values.
Fixed site display when user presses Ctrl-Enter to see the site values then presses Ctrl-Enter again to see which sites have the value so that the sites are displayed correctly whether they are shared or unshared.
Fixed system to handle transactions sent from old versions of EDM (2.4 and earlier) that used the Windows code page 1252 as the XML encoding to read the transaction files correctly.
Fixed spreadsheet on central forms to correctly display updated values after using Ctrl-Enter to update a value then clicking on another row. Before this fix, the old value would be displayed after updating a value and then clicking on another row.
Fixed spreadsheets so that when entering a new row, checkboxes that are checked remain checked when you leave the column. This fixes a problem reported on the IsModifier checkbox on the Item Attachments subform.
Changed menu editor so that when new buttons are added, the value in the BtnData0 and BtnData1 columns are 0 by default instead of null.
Fixed menu editor so user can select multiple buttons and move them as a group.
Added timeout to internal FTP client so that when errors occur during FTP processing, the system does not wait forever for a retry.
Changed the processing for copying rows from one site to another so that if any of the data columns has a data type of LONG TEXT or LONG BINARY, the rows are copied one at a time instead of with a single insert...select SQL statement. This solves the problem of the copy process failing because the database does not allow insert...select statements where the selected rows contain LONG data types.
The following changes were made in this release.
The following enhancements were made in this release.
Improved the IRIS Menu Editor to enable users to jump to another menu by double-clicking the button or tab that refers to the menu.
Added option to not generate status transactions back to sender by setting the config.xml property sendStatusTransactions = "true". This is useful for users whose central data always overrides remote data and who do not wish to process status transactions coming from remote sites. Requested transactions such as table refreshes will still be sent from remote sites when requested.
Added package selection drop-down list to the location selection dialog so locations, effective date, termination date, and package are now all selected on the same dialog.
Changed default security policy to only grant users in the remote role permission to the minimum required functions such as processing transactions and viewing the audit trail. Remote users can no longer call functions that would update data or send transactions to central unless the remote role is modified by the system administrator.
To protect the central system when running on a web server, only files in the web application folder and its subfolders (except WEB-INF) may be sent from or received by the server. Only central web server files are protected, standalone central systems and remote systems that don't usually run web servers don't need the same level of security. Remote systems with web servers need to be updatable by transactions so they must allow access to all folders. Inaccessible folders are checked both when writing and applying transactions.
The following defects were resolved in this release.
Changed EDM so that timeout can be specified either in the web.xml of the web server (e.g. <session-timeout>30</session-timeout>) or in config.xml of EDM (e.g. sessionTimeoutMinutes = “1”). Setting the timeout to -1 in either case means no session timeout. When the user session times out, all open forms, queries, and tables are closed and unlocked and the user is forced to login again.
Fixed error "Cannot set current control of form tblRecpNutritionMaster Subform to a control on a different form: tblRecipeMaster.RecpID" which occurred when opening Recipe form then selecting another recipe using the Change Selection dropdown list.
Changed reset transaction to delete all audit trail transactions and incoming transaction files for reset site. This avoids problems with duplicate transaction numbers being used by the reset site.
Fixed problem that caused NumberFormatException when editing shared data on forms.
The following changes were made in this release.
The following defects were resolved in this release.
Fixed web transfer processing to pass session id as request parameter so web server can always find session.
The following changes were made in this release.
The following enhancements were made in this release.
Changed installation to use the standard installer from Sun when installing the Java Runtime Environment. This causes the Java plugin to be registered with the local browsers.
Changed the web page so that when a user connects who does not have the Java Plugin installed in his browser, the plugin is downloaded from the web server which is typically on the intranet, instead of from Sun's site over the internet. The original web page that loads the plugin from Sun's site is renamed loginPageSunPlugin.jsp.
The following defects were resolved in this release.
Changed forms so that when switching to spreadsheet view, or when the default view is spreadsheet view, scroll bars are added to the window even if the form scroll bar properties are turned off.
Improved checkbox interface so the value popup window is automatically displayed when the user clicks on the checkbox when editing a record at central.
Changed form display to correctly show lines, boxes, and group boxes on forms.
Changed menu editor button properties dialog to show parameters on buttons when button is a command or object or when button parameter data is set.
Changed menu editor button text field so that it is always a fixed width and scrollbars appear if the text is too big to fit in the field.
The following changes were made in this release.
The following new features and functions were added in this release.
The system now runs either on a web server with browser access or in standalone mode without a web server. If the web server is visible over the Internet, users can access the system from any PC with an Internet connection.
The system now contains its own editor for IRIS menus and buttons so that IRIS does not have to be installed on the central system and so that users can edit menus from multiple locations without knowing which menus are identical.
Users must now login to the system and the system administrator can limit the ability of users to access any location, table, form, query, function, or menu item. All transactions are now tagged with the userid of the user that generated the transaction.
Users can now transfer transaction files over HTTP directly to the system web server. This eliminates some of the difficulty of working with many different FTP servers.
The new Execute transaction enables users to execute any command line on the remote system.
The new Reset transaction will reset a remote system to the state it was in just after it was installed. This will solve problems of damaged or lost transaction files, errors in transaction processing, and other errors that, in the past, required the users to connect to the site to resolve.
The new Delete File transaction enables users to delete any file on the remote system.
The new Rename File transaction enables users to rename any file on the remote system.
The new Error transaction can report errors to the central system that are not specific to processing a transaction such as an unreadable xml file.
The new Get Schemas transaction lets central site request schemas from a remote site so that it does not need the application or application database to be loaded at the central site.
All forms now support a copy function which enables users to copy a record and all child records to a new key value.
The following enhancements were made in this release.
When processing incoming transactions, all status transactions are now placed in a single xml file for faster transmission.
Contents of .FIL files (table refreshes and files being sent) are now compressed for faster transmission.
The system now uses a more compact transaction XML format for faster transmission.
Many tasks for which users had to wait in previous versions are now performed in background threads on the server, such as committing transactions.
Added progress bars for the processes that take more than one second to help users see that progress is being made and have an idea how long it will take.
Improved startup commands like go.bat so that the user can start the system from any directory. For example, calling C:\EdmWeb\process.bat from C:Iris\bin.
Snapshots are now stored in an xml file that can be easily edited with a text editor so snapshots can be easily copied and modified without renumbering either the snapshots or the tables in the snapshot.
Snapshots tables are now automatically sorted so that tables that refer to other tables in the table list appear earlier in the list. This means users no longer have to be concerned with the sequence of the tables when adding tables to a snapshot.
The following defects were resolved in this release.
Eliminated duplicate key error when adding a remote table record that already exists.