Day-End Closing - STANDARD
Generic Day-End Closing Steps
The standard day-end closing process consists of a number of generic steps. Most of these steps are configurable.
Configuration file accounting-functions.properties :
#Day End
gkr.accounting.day-end.dayEndClosing.safeLoginLevel=2
gkr.accounting.day-end.resetUsedOnlyFlag=true
gkr.accounting.day-end.automaticSafeAccounting.enabled=false
gkr.accounting.day-end.automaticSafeAccounting.reportID=safe-accounts
gkr.accounting.day-end.automaticDrawerAccounting.enabled=true
gkr.accounting.day-end.automaticDrawerAccounting.reportID=drawer-accounts
gkr.accounting.day-end.automaticDrawerAccounting.tillLoginLevel=2
gkr.accounting.day-end.tillStatusCheck.enabled=true
gkr.accounting.day-end.safeStatusCheck.enabled=true
gkr.accounting.day-end.processEodProcedurePos.enabled=true
gkr.accounting.day-end.processEodProcedurePos.omitWorkstationTypecodeList=0010,MOB
gkr.accounting.day-end.workstationOnlineStatusCheck.enabled=false
gkr.accounting.day-end.workstationOnlineStatusCheck.omitWorkstationTypecodeList=0010,MOB
gkr.accounting.day-end.preReportTypes=merchandise-category-sales-accounting,item-sales-accounting,target-store
gkr.accounting.day-end.postReportTypes=safe-log
gkr.accounting.day-end.postReportTypes.safeLogReportID=safe-log
...
The following steps are possible:
Generic Check Steps
At the beginning of the day-end closing process, the following check steps are performed:
- LoginManagerCheck
- PoolStateLoadingAndLock
- WorkstationOnlineStatusCheck
The step 'LoginManagerCheck' ensures that all safes cannot be logged in to another system during the day-end closing process. To use 24/7 mode, the Login Manager should be disabled by configuration.
The step 'PoolStateLoadingAndLock' ensures:
- PoolStateLoadingAndLock should be activated: All transactions without EOD transactions and safe account transactions are locked and saved. This process will wait for the lock to be activated. The waiting period is limited by the properties gkr.accounting.retryCount=30, and gkr.accounting.retryPeriod=1s. It is checked that there are no unprocessed priority transactions in the pool while the lock is activated, so that priority transactions stored by the EOD process will prevail in the event of collisions. The pool state is loaded as well so it can be used while saving the transaction and to produce priority transactions. In other words, after this step is finished, the pool is locked (so no priority transactions can be stored exclusively by the EOD process) and the EOD process knows that there are no unprocessed priority transactions in the pool.
- Ordinary transactions are saved to the transaction pool while EOD is in progress but do
not get processed by calculations; transactions produced by the EOD process are saved.
- EOD transactions (controlTransactions) should be booked and processed; all other transactions will only be saved to the pool (no booking to period, no influence on reports, no data source)
- POS Server transactions, such as safe account transactions, should also be processed if produced by the EOD process
- After the EOD is finished (successful or failed), the transaction pool lock is
deactivated and saved transactions are processed to the next accounting period.
- Successful EOD: The collected transactions are booked to the next accounting/store/report period.
- Failed EOD: The collected transactions have to be booked to the current accounting/store/report period.
- All EOD transactions have to be booked first, followed by the others
- This implies that accounting functions will collide with EOD but it is guaranteed that EOD "wins".
The step 'WorkstationOnlineStatusCheck' depends on the configuration. A check is made to verify if all used cash registers are online.
If one of these steps fails, an error message is shown and the day-end closing process will be aborted.
Automatic Till Accounting
This step checks the conditions for automatic drawer accounting and performs accounting of all eligible drawers.
This check will be performed depending on the parameter gkr.accounting.day-end.automaticDrawerAccounting.enabled. But if gkr.accounting.day-end.automaticSafeAccounting.enabled = false and gkr.accounting.closeSafeAccountingPeriodDuringEOD = true, this step is not performed even if gkr.accounting.day-end.automaticDrawerAccounting.enabled = true.
Configuration file accounting-functions.properties :
gkr.accounting.day-end.automaticDrawerAccounting.enabled=true
The creation of the 'Drawer Accounts' report differs from the creation of other reports in the day-end closing. Instead of using the parameter gkr.accounting.day-end.preReportTypes, the following parameter is filled with the report ID of the drawer accounts report (e.g. drawer-accounts):
Configuration file accounting-functions.properties :
gkr.accounting.day-end.automaticDrawerAccounting.reportID={report id of drawer accounts report}
If these reports should also be displayed in the report preview after a successful day-end closing, then it is necessary to add the report ID to the parameter DISPLAY_REPORT_TYPES ( functions.properties ).
Till Status Check
The step 'TillStatusCheck' depends on the configuration. A check is made to verify if all the drawers (except training drawers) with daily drawer accounts (Till.SettlementTypeCode = '02') have the status Accounted for or Not used.
If this step fails, an error message is shown and the day-end closing process will be aborted.
Safe Status Check
The step 'SafeStatusCheck' depends on the configuration. Only when the parameters (gkr.accounting.day-end.safeStatusCheck.enabled, gkr.accounting.closeSafeAccountingPeriodDuringEOD) are set to true will this check be performed. A check is made to verify if safe accounts were already performed manually for each to be counted safe. If it should be assumed that manual safe accounts will be made before day-end closing, automatic safe accounts should be disabled.
If this step fails, an error message is shown and the day-end closing process will be aborted.
Automatic Safe Accounting
The step 'AutomaticSafeAccounting' depends on the configuration. Only when the parameters (gkr.accounting.day-end.automaticSafeAccounting.enabled, gkr.accounting.closeSafeAccountingPeriodDuringEOD) are set to true will this step be performed for each to be counted safe. In addition, automatic safe accounts will only take place if manual safe accounts are not previously performed. If it should be assumed that automatic safe accounts will be made during day-end closing, the step 'SafeStatusCheck' has to be disabled.
Configuration file accounting-functions.properties :
gkr.accounting.day-end.safeStatusCheck.enabled=false
gkr.accounting.day-end.automaticSafeAccounting.enabled=true
The creation of the 'Safe Accounts' report differs from the creation of other reports in the day-end closing. Instead of using the parameter gkr.accounting.day-end.preReportTypes, the following parameter is filled with the report ID of the safe accounts report (e.g. safe-accounts):
Configuration file accounting-functions.properties :
gkr.accounting.day-end.automaticSafeAccounting.reportID={report id of safe accounts report}
If this report should also be displayed in the report preview after a successful day-end closing, then it is necessary to add the report ID to the parameter DISPLAY_REPORT_TYPES ( functions.properties ).
Generic Steps for Closing and Opening Periods
Depending on a number of criteria, the following accounting periods are closed and new periods of the same type are opened:
- Safe period
- Store period
- Drawer period
Depending on the configuration, the safe accounting periods are closed during day-end closing and new periods are opened.
Configuration file accounting-functions.properties :
gkr.accounting.closeSafeAccountingPeriodDuringEOD=true
Prerequisites for closing the drawer period during day-end closing:
- Drawer accounts are completed
- Drawer is not for training purposes
- Drawer is set to daily drawer accounts (Till.SettlementTypeCode = '02')
Depending on the configuration ( gkr.accounting.tillSummaryCalculation.enabled or gkr.accounting.tillStatisticsCalculation.enabled ), info documents will be created when the drawer period is closed. These documents trigger the export with sum values or further statistical values of the drawer.
Generic Report Step
Two configuration options are distinguished for the report step: report generation before saving the transactions and report generation after saving the transactions (parameters gkr.accounting.day-end.preReportTypes and gkr.accounting.day-end.postReportTypes). Note that report values may change when a transaction is saved. The generated reports can be saved to the archive and, in addition, displayed in the report preview after successful completion of the day-end closing. Displaying a report in the report preview requires that the report was previously saved to the archive (configuration file report-descriptor.xml ).
Example for saving a report in the archive:
Configuration file report-descriptor.xml :
<report id="merchandise-category-sales-accounting" type="merchandise-category-sales">
<archive type="PDF"/>
</report>
Example of a list of report IDs with report generation before saving the transactions:
Configuration file accounting-functions.properties :
gkr.accounting.day-end.preReportTypes=merchandise-category-sales-accounting,item-sales-accounting,target-store,gift-certificate,price-override,returns
The values of the gift certificate report, price override report and return report are calculated based on the current open store period.
Example of a list of report IDs loaded from the report archive and shown in the preview after successful completion of the day-end-process:
Configuration file functions.properties :
# S.01230202404.00 - day-end-closing-type
...
# a subset of reports from property 'gkr.accounting.day-end.preReportTypes' or 'gkr.accounting.day-end.postReportTypes'
gkr.function.S.01230202404.00.DISPLAY_REPORT_TYPES=merchandise-category-sales-accounting,item-sales-accounting,target-store,store-accounts,safe-log
...
Report ID
The report ID corresponds to 'report id' in the file report-descriptor.xml .
Day-End Closing Steps of the POS Clients
Depending on the configuration, the 'PROCESS_EOD' command is sent to the POS Clients for notification on day-end closing being executed, in order to force them to perform certain process steps (e.g. terminal end-of-day or restart). If you want to restart used POS Clients only, set the configuration as follows:
Configuration file accounting-functions.properties :
gkr.accounting.day-end.processEodProcedurePos.enabled=true
gkr.accounting.day-end.resetUsedOnlyFlag=true