Retail:Store Server BP Segmentation
Depending on the country and law, it is possible that restrictions apply on what data can be present on a store server. Also in the case of external stores (franchising) there can be restrictions.
Therefore the OB Commerce suite provides advanced logic for sharing business partner/customer data with stores in your organization. This concept is called BP Segmentation.
BP synchronization and segmentation plays a role in 2 distinct moments:
- store server creation
- runtime sync
Eventhough for the runtime sync the statement can be made that the business partner is selected in WebPOS and from there creation in the store is triggered. There are however cases when the store server is offline and the BP is created in the central server. In this case the new BP has to be synced from the central to the store server.
How business partner are segmentated
Changes done to a business partner will be synchronized to a store if any of these conditions are met:
- The business partner has been explicitely included in a store. The Business Partner by Server window stores the relation between business partners and stores. When an order is created for a business partner in a store, the business partner will be automatically added to the store if it was not already included.
- The business partner is NOT flagged as Standard Store Customer. The sales representatives and the business partners that are the default business partners of the organizations should not have that flag checked.
Both the table that stores the business partner-store relation and the flag to determine if a business partner is a standard customer are initialized using the following ant task:
ant -f modules/org.openbravo.retail.storeserver.synchronization/build.xml initialize.bp.segmentation.tables
After this initialization there are so-called event handlers which update the 'standard customer' flag based on the usage of the Business Partner.
Synchronizing Related Tables
When a business partner is included in a store by adding a row to the Business Partner by Server window, it is required to synchronize to the store the relevant rows of c_bpartner and other tables related to it. The list of tables related with c_bpartner is defined in this window:
This tables, along with c_bpartner, are synchronized to the server by "touching" (updating the updated column to the current timestamp) the relevant rows, so that the changes are detected by SymmetricDS, whose business partner router will now be able to route these data to the proper store, as the router takes into account the Business Partner by Server window.
When entering a new record it is probably easiest to look at an existing example to find how to set the correct values:
- common case: when directly referencing the C_Bpartner table (the most common case) then you can use the C_Bpartner_Location record as an example. The reference type in this case should be: 'References a table related with business partner'
- special case: there is join table which references c_bpartner (or c_bpartner related table) and another table. This is the case for C_Location, it is referenced from C_Bpartner_Location which references also C_Bpartner. For these tables related to the C_Bpartner using a join table the special reference type: 'Referenced by a table related with business partner'