Openbravo Issue Tracking System - Retail Modules
View Issue Details
0035521Retail ModulesSessionspublic2017-03-15 10:282017-05-09 10:56
jorge-garcia 
jorge-garcia 
highmajorsometimes
closedfixed 
5
 
RR17Q3 
marvintm
No
0035521: It's possible to execute in parallel the creation of two cashup objects in database
In sessions module, it's possible to execute in parallel the creation of two cashups with the same id in database.

This two cashups are created one from the openTill object (not a synchronization model) and other from the difference transaction when the store is open (cashmgmt is a synchronization model).
The issue is reproducible in the integration:

Errors in the OBPOS_Errors table while importing POS data: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
TYPE --> FIN_Finacc_Transaction
ERROR -->
java.sql.SQLIntegrityConstraintViolationException: ORA-00001: unique constraint (TRY_RET_MODULES_ORACLE_SUITE2.OBPOS_APPCASH_PK) violated
Patch attached
No tags attached.
depends on backport 0035889RR17Q2.1 closed jorge-garcia It's possible to execute in parallel the creation of two cashup objects in database 
depends on backport 0035890RR17Q1.2 closed jorge-garcia It's possible to execute in parallel the creation of two cashup objects in database 
diff avoidErrorInCaseOfParallelCashupUpdates.diff (1,309) 2017-03-15 10:29
https://issues.openbravo.com/file_download.php?file_id=10569&type=bug
Issue History
2017-03-15 10:28jorge-garciaNew Issue
2017-03-15 10:28jorge-garciaAssigned To => jorge-garcia
2017-03-15 10:28jorge-garciaTriggers an Emergency Pack => No
2017-03-15 10:29jorge-garciaFile Added: avoidErrorInCaseOfParallelCashupUpdates.diff
2017-03-15 10:41jorge-garciaStatusnew => scheduled
2017-04-20 11:48jorge-garciaAssigned Tojorge-garcia => marvintm
2017-04-26 10:37jorge-garciaAssigned Tomarvintm => jorge-garcia
2017-05-02 11:22hgbotCheckin
2017-05-02 11:22hgbotNote Added: 0096300
2017-05-02 11:22hgbotStatusscheduled => resolved
2017-05-02 11:22hgbotResolutionopen => fixed
2017-05-02 11:22hgbotFixed in SCM revision => http://code.openbravo.com/erp/pmods/org.openbravo.retail.posterminal/rev/163813a4c948a28853553968f005e087bc37afb8 [^]
2017-05-02 11:45jorge-garciaNote Added: 0096302
2017-05-02 11:45jorge-garciaStatusresolved => new
2017-05-02 11:45jorge-garciaResolutionfixed => open
2017-05-02 11:45jorge-garciaStatusnew => scheduled
2017-05-02 11:45jorge-garciaStatusscheduled => resolved
2017-05-02 11:45jorge-garciaFixed in Version => RR17Q3
2017-05-02 11:45jorge-garciaResolutionopen => fixed
2017-05-09 10:56marvintmReview Assigned To => marvintm
2017-05-09 10:56marvintmStatusresolved => closed

Notes
(0096300)
hgbot   
2017-05-02 11:22   
Repository: erp/pmods/org.openbravo.retail.posterminal
Changeset: 163813a4c948a28853553968f005e087bc37afb8
Author: Jorge Garcia <jorge.garcia <at> openbravo.com>
Date: Tue May 02 08:58:57 2017 +0200
URL: http://code.openbravo.com/erp/pmods/org.openbravo.retail.posterminal/rev/163813a4c948a28853553968f005e087bc37afb8 [^]

Fixed issue 35521: It's possible to execute in parallel the creation of two
cashup objects in database

The user case here is to do an open till and create a transaction with
differences in the count cash tab.

Both messages send information regarding the status of the cashup, the
cashup report.

If the cashup sent doesn’t exists in the database, the cashup is
created in order to save it.

At this point, we have implement a solution for two cases:

If synchronize mode is NOT active:

* Those two messages could be executed in parallel because open till message
is not a synchronize model and it’s executed immediately the server gets the
message. In this case, to avoid error in the cashup primary key trying to create
two cashups with the same id, we persist in database the header of the cashup,
and, in case there is a second message with the same cashup id, it will detect
the cashup and won’t try to create it again.

If synchronize mode is active:

* Those messages will not be executed at the same time. Until the open till
response is coming back from the server, the execution in WebPOS is stopped.
Then the transaction of differences in the count cash will be sent to the server,
and the cashup will exists.

---
M src/org/openbravo/retail/posterminal/UpdateCashup.java
---
(0096302)
jorge-garcia   
2017-05-02 11:45   
Reopened to create backports