Anonymous | Login
Project:
RSS
  
News | My View | View Issues | Roadmap | Summary

View Issue DetailsJump to Notes ] Issue History ] Print ]
ID
0058221
TypeCategorySeverityReproducibilityDate SubmittedLast Update
defect[POS2] POSmajoralways2025-03-12 17:122025-03-25 19:05
ReporterkchoperenaView Statuspublic 
Assigned ToNaroaIriarte 
PriorityhighResolutionfixedFixed in Version25Q2
StatusclosedFix in branchFixed in SCM revision
ProjectionnoneETAnoneTarget Version
OSAnyDatabaseAnyJava version
OS VersionDatabase versionAnt version
Product VersionSCM revision 
Review Assigned Toguilleaer
Regression level
Regression date
Regression introduced in release
Regression introduced by commit
Triggers an Emergency PackNo
Summary

0058221: The alternateInvoiceLocation and alternateShippingLocation are created at the organization level of the store

DescriptionWhen an external CRM is used, the alternate invoice and shipping location are created to be used in the order

These locations are created behind the organization that is using the first time. The main problem is that a store located on another organization tree can use the location for an order and the import process will fail because of a luck of permissions

The impact is huge as any client that already was assigned can't create an order on another store for the same shipping and invoicing location. This scenario is so common in a E-commerce integration context

ERROR STACKTRACE:
org.openbravo.base.exception.OBSecurityException: Entity OR09901/0000023 - 12-03-2025 - 4643.89 (Order) with organization 801-V1-Online references an entity Carrer de Arago 65 - 1 3 - 08010 - LILLE - - Spain through its property Order.alternateLocation but this referenced entity belongs to an organization 802-VG-Girona which is not part of the natural tree of 801-V1-Online
    at org.openbravo.dal.core.OBInterceptor.checkReferencedOrganizations(OBInterceptor.java:316)
    at org.openbravo.dal.core.OBInterceptor.onFlushDirty(OBInterceptor.java:189)
    at org.hibernate.event.internal.DefaultFlushEntityEventListener.invokeInterceptor(DefaultFlushEntityEventListener.java:376)
    at org.hibernate.event.internal.DefaultFlushEntityEventListener.handleInterception(DefaultFlushEntityEventListener.java:353)
    at org.hibernate.event.internal.DefaultFlushEntityEventListener.scheduleUpdate(DefaultFlushEntityEventListener.java:304)
    at org.hibernate.event.internal.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:175)
    at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107)
    at org.hibernate.event.internal.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:229)
    at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:93)
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
    at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:107)
    at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1407)
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1394)
    at org.openbravo.dal.service.OBDal.flush(OBDal.java:266)
    at org.openbravo.retail.posterminal.OrderLoader.handlePayments(OrderLoader.java:1743)
    at org.openbravo.retail.posterminal.OrderLoader.saveRecord(OrderLoader.java:584)
    at org.openbravo.mobile.core.process.DataSynchronizationProcess.saveRecord(DataSynchronizationProcess.java:214)
    at org.openbravo.mobile.core.process.DataSynchronizationProcess.exec(DataSynchronizationProcess.java:165)
    at org.openbravo.retail.posterminal.ExternalOrderLoader.exec(ExternalOrderLoader.java:293)
    at org.openbravo.mobile.core.process.DataSynchronizationProcess.exec(DataSynchronizationProcess.java:97)
    at org.openbravo.retail.posterminal.ExternalOrderLoader.exec(ExternalOrderLoader.java:282)
    at org.openbravo.mobile.core.process.JSONProcessSimple.exec(JSONProcessSimple.java:47)
    at org.openbravo.retail.posterminal.ExternalOrderLoader.executeCreateImportEntry(ExternalOrderLoader.java:249)
    at org.openbravo.mobile.core.process.MobileServiceProcessor.execProcess(MobileServiceProcessor.java:162)
    at org.openbravo.mobile.core.process.MobileServiceProcessor.execServiceName(MobileServiceProcessor.java:139)
    at org.openbravo.mobile.core.process.MobileService.doGetOrPost(MobileService.java:218)
    at org.openbravo.mobile.core.process.MobileService.doPost(MobileService.java:75)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:681)
    at org.openbravo.base.HttpBaseServlet.serviceInitialized(HttpBaseServlet.java:200)
    at org.openbravo.base.secureApp.HttpSecureAppServlet.service(HttpSecureAppServlet.java:236)
    at org.openbravo.client.kernel.BaseKernelServlet.callServiceInSuper(BaseKernelServlet.java:89)
    at org.openbravo.mobile.core.process.WebServiceAuthenticatedServlet.service(WebServiceAuthenticatedServlet.java:67)
    at org.openbravo.mobile.core.process.MobileService.service(MobileService.java:144)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.openbravo.utils.SessionExpirationFilter.doFilter(SessionExpirationFilter.java:66)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.openbravo.utils.CharsetFilter.doFilter(CharsetFilter.java:38)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.openbravo.client.kernel.KernelFilter$1.doAction(KernelFilter.java:65)
    at org.openbravo.dal.core.ThreadHandler.run(ThreadHandler.java:47)
    at org.openbravo.client.kernel.KernelFilter.doFilter(KernelFilter.java:74)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.openbravo.dal.core.DalRequestFilter$1.doAction(DalRequestFilter.java:96)
    at org.openbravo.dal.core.ThreadHandler.run(ThreadHandler.java:47)
    at org.openbravo.dal.core.DalRequestFilter.doFilter(DalRequestFilter.java:118)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
    at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:769)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1735)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:829)
Steps To ReproducePRE-REQUIREMENTS:
1.- Use an external CRM connector. Maybe with the internal version is also failing but the issue was reproduced using an external one
2.- Have configured two organizations that are not part of the same org tree

STEPS:
1.- On the store A, log into the Web POS
2.- Create an order with a client assigned and a Home Delivery line that needs a shipping address and also select the Issue Invoice option from the ticket menu
3.- Complete the order and go to the back-end
4.- Check in the back-end that the order you have been created has filled the alternate shipping and invoicing locations
5.- Connect to another POS that belongs to the store B
6.- Create another ticket using exactly the same data
7.- Complete the ticket

RESULT:
The order import will fail in the data import entry queue with the error mentioned above
Proposed Solutiona mechanism exists to detect same address and not create new locations for the same data.
When location is found and it is assigned to an order form other organization it fails.

alternate locations should be created at * level
TagsNo tags attached.
Attached Filespng file icon Screenshot from 2025-03-12 17-12-02.png [^] (257,278 bytes) 2025-03-12 17:12

- Relationships Relation Graph ] Dependency Graph ]
depends on backport 005834425Q1.1 scheduledNaroaIriarte The alternateInvoiceLocation and alternateShippingLocation are created at the organization level of the store 
depends on backport 005834524Q4.2 scheduledNaroaIriarte The alternateInvoiceLocation and alternateShippingLocation are created at the organization level of the store 
Not all the children of this issue are yet resolved or closed.

-  Notes
(0177247)
guilleaer (manager)
2025-03-25 19:05

https://gitlab.com/orisha-group/bu-commerce/openbravo/product/pmods/org.openbravo.retail.posterminal/-/commit/5928bf42163d978f89d930fbe439f84db5afe33e [^]

- Issue History
Date Modified Username Field Change
2025-03-12 17:12 kchoperena New Issue
2025-03-12 17:12 kchoperena Assigned To => Retail
2025-03-12 17:12 kchoperena File Added: Screenshot from 2025-03-12 17-12-02.png
2025-03-12 17:12 kchoperena Triggers an Emergency Pack => No
2025-03-12 17:13 kchoperena Description Updated View Revisions
2025-03-12 17:32 guilleaer Assigned To Retail => guilleaer
2025-03-12 17:32 guilleaer Status new => acknowledged
2025-03-12 17:38 guilleaer Proposed Solution updated
2025-03-24 10:53 NaroaIriarte Assigned To guilleaer => NaroaIriarte
2025-03-24 10:53 NaroaIriarte Status acknowledged => scheduled
2025-03-25 19:04 guilleaer Status scheduled => acknowledged
2025-03-25 19:04 guilleaer Status acknowledged => scheduled
2025-03-25 19:04 guilleaer Status scheduled => resolved
2025-03-25 19:04 guilleaer Fixed in Version => 25Q2
2025-03-25 19:04 guilleaer Resolution open => fixed
2025-03-25 19:05 guilleaer Review Assigned To => guilleaer
2025-03-25 19:05 guilleaer Note Added: 0177247
2025-03-25 19:05 guilleaer Status resolved => closed


Copyright © 2000 - 2009 MantisBT Group
Powered by Mantis Bugtracker