Projects:Improve CashUp Robustness
Note: Work in progress
The goal of this project is to improve the cashup process security.
This project will change the paradigm of to the cashups in Web Pos. Currently the cashup was understood just as a process, it wasn't an entity itself like Orders or Products in the backoffice. After this improvement, the idea is to synchronize the cashup information as an entity.
Test Case 1
Pre-condition: No cashups in local db neither bo db
1. Login in WebPOS
Post-condition: Cashup created in local db with payments setted to 0, Non processed cashup created in the server, with no info in payment method table. Cashup non processed in both sides.
Test Case 2
1. Create a new order
Post-Condition: Cashup data has been updated in local and server. In the server records in tax cashup and payment method table has been created/updated. Both databases are synchronized. Cashup non processed in both sides
Test Case 3
Pre-condition: Clear the cache in local
1. Login 2. Create a new order
Post-Condition: cashup info sould be synced. Cashup is not processed in both sides.
Test Case 4
Pre-conditions: Exists cashup non processed in webpos
1. Do the Cashup Process
Post-Conditions: Cashup should be processed in the server. Cashup in local is updated as processed. New Cashup created in local (isprocessed='N'). The starting amount of the payment methods should be the keept amount in the cashup process.
Test Case 4.1
Pre-conditions: The cashup process has just been executed
1. Create new order
Post-conditions: Processed cashup info should be deleted. Non processed cashup info should be updated in both sides.
Test Case 1
Pre-conditions: Exists a cashup non processed in local and in the BO
1. Create 3 orders 2. Check that cashup info in local db changes properly 3. Restore the connection
Post-conditions: Synched. cashup info.
Test Case 2
Pre-Conditions: Exists a non processed cashup in local
1. Do the cashup 2. Restore the connection
Post-conditions: New cashup should be created in local, processed cashup should be sent to the BO.
Test Case 2.1
Pre-Conditions: Exists a non processed cashup in local 1. Do the cashup 2. Create new orders 3. Do the cashup 4. Restore the connection Post-Conditions: 2 processed cashups should be created in the server and new cashup non processed in local
Changes in the Back Office
New entities and windows created
Currently the cashup information is stored only in the client side. This project will create in the back office all the table structure to store the cashup and the information related to taxes and payment methods.
It will be added two child tabs to the "Cashup History" tab in "POS Terminal" window to see the entities mentioned above. On the other hand, some read only numeric fields will be added to the "Cashup History" tab: "Net Sales", "Gross Sales", "Net Returns", "Gross Returns", "Total Retail Transactions" and a boolean "processed" to show if the cashup is closed or not.
In order to track all the cash managements, a new column will be added to the financial transaction entity "Cashup id". This column will link the cashup with the cash management transactions.
Changes in Process Cashup Synchronization process
Currently this process is only executed when the Cashup process is done manually by the user in the Web Pos. This project will change this approach, the cashup close is going to be executed in every synchronization and the process will detect if it is only a Synchronization event or if the user is doing the cashup process. If the user is manually doing the cashup, all the financial transactions in the backoffice will be done, as it is currently doing.
After this improvement, the cash managements will be find using the cashup id instead of using the cash management list coming from the WEBPOS.
Main changes in Web POS
- The cashup model will be added to the Synchronization entities in login-model.js
- Some utilities will be added to the cashupReportUtils.js in order to facilitate the creation and initialization of the information that is going to be sent to the backoffice.
- The updateCashupInfo method has been changed to compose the information that will be sent to the backoffice in every change made to the cashup (i.e when a new order is created)
- The initCashup method will create a cashup in the local database depending on the information in the server. If there is a non-processed cashup in the backoffice and exists connection, the system will download the cashup information into the local database.
- Feature request in mantis: https://issues.openbravo.com/view.php?id=0026974