New version of booking and reservations component for Joomla - Book it! 2.1.2 has been released today. This release brings new features and fixes some bugs reported by users.
Newsflashes
ARTIO SMS Services Terms of Service
Providence, 31.07.2013
I. Operator
The SMS service is mediated by:
ARTIO International Co.
Global Gateway 2414
Rue De La Perle
Providence, Mahe
Seychelles
IBC No.: 077178
II. Service Description
Service involves providing a SMS gateway to allow sending SMS (short text messages) to mobile phone numbers. The service is offered to customers who have registered an account at artio.net website and enabled the SMS services. With the registered username and API key provided after SMS service activation, users can use the SMS functionality within different ARTIO products and tools or use ARTIO SMS API to send SMS messages from own applications.
III. Delivery
During transmission, electronic communications may flow through the systems of several mobile networks and other aggregators (“the chain”). Your electronic communication is considered to be delivered once it has been transmitted from our system to our next network service provider in the chain. An electronic communication sent by a mobile phone user is considered to be delivered when it is submitted from our system to you. We will try to ensure uninterrupted and continued use of our services; however this is largely dependent on the effective functioning of network service providers’ infrastructure, network coverage and the recipient’s mobile handset. Please read our disclaimers and limitations of liability
IV. Restrictions on Use
In some countries there are legal restrictions that apply to electronic communications. It is your responsibility to ensure that your conduct is legal. By using our services you also agree to be bound by the Rules of Use.
V. Limitation of Liability
Operator does not guarantee full operation of the service and under no circumstances can be hold responsible for a message not being delivered.
No warranties. Our services are not specifically designed to meet your individual requirements. We do not make any warranties or representations, other than those specifically contained in these Terms, regarding our services or the systems and technology we use to provide the services. We do not warrant that the content and technology available from our website are free from errors or omissions or that the services will be uninterrupted and error free.
Data encryption. Data submitted to our systems may be transmitted in an unencrypted format. We do not guarantee that data cannot be intercepted by others.
Network coverage. We regularly update our network coverage tables for our services on our website. These tables specify all the mobile networks to which we can transmit our services. It is your responsibility to use our services only for transmission to mobile numbers connected to mobile networks specified on our coverage tables. If you attempt to send data or communication to mobile networks not covered, we may charge you even if transmission fails. We do not accept any liability resulting from a failed transmission.
Exclusion of all liability. We do not accept liability for any damages or losses arising out of or related to the use, inability to use or unauthorised use of the services. This includes any direct, indirect, special, consequential, punitive or incidental damages, whether such damages or losses arise in contract, delict (tort), under statute, in equity, at law or otherwise.
Compliance with legislation. We do not modify the content of electronic communications sent or received through our systems or the selection of the addresses of the recipients. We do not accept any liability for any content transmitted and full responsibility for content shall rest on you. You must observe all relevant legislation and regulations applicable in your jurisdiction and in the jurisdiction of all persons to whom you direct communications when using our services. By using our services you also agree to be bound by the Rules of Use.
Defending complaints from regulatory authorities. You shall be responsible for answering and defending any complaints that we receive from any relevant regulatory body resulting from your use of any of our services. We will forward any complaints to you as soon as practical. You must follow the applicable complaint procedures and respond to each complaint within the timeframes specified by the relevant regulatory body and must forward a copy of your response us immediately. You will be liable for any fines or penalties imposed by any regulatory body on you or us or any of our associated companies, due to your contravention of these Terms.
VI. Privacy
Privacy Policy. We will process your personal information in accordance with our Privacy Policy.
Interception and disclosure. We may intercept and disclose any data submitted to our systems in order to protect our property rights, the efficient operation of our systems or to comply with requests from competent authorities or court orders, or to compile, analyse and publish statistical data. You agree that subject to applicable laws we may intercept, filter, lock, read, delete, disclose, and use data submitted to our systems or website.
Disclosure to recipients. The recipient of an electronic communication has the right to know the identity of the sender and we will disclose this on the recipient’s request.
No liability for disclosure. Neither we nor our suppliers will be liable to you or anybody else for any damages or losses suffered due to these actions.
Data collection. You explicitly consent that we may collect and disclose data relating to your use of our services and website for the purpose of analysis, reporting, service quality assessment or research.
VII. Notices
Notices to you. Notices under these Terms will be provided to you via a notification message displayed on your account page or via the latest email address provided to us when registering or updating your account. It is your responsibility to keep your email address current.
Notices to Operator. Notices under these Terms must be sent to us via email at legal@artio.net.
VIII. Account Protection
Information. In order to provide our services, we require certain information. You must ensure that the information is complete and accurate. We may suspend or terminate any service if you give information that is not complete and accurate. You warrant that all information you provide to us is complete and accurate and you indemnify Operator against any liability that may arise as a result of your failure to provide complete and accurate information. You must immediately notify us if any of your information changes.
User name and password. We will give you or ask you to choose a user name and password for each account. We may change, cancel or suspend your password and will notify you.
Security. You are required to:
keep your username, customer ID and password confidential;
not circumvent, or attempt to circumvent, our user authentication systems;
tell us immediately if there is any unauthorized use of your account or any other breach of security;
be entirely responsible for all payments and any activities that occur on your account;
be liable for any damage, loss or costs that we or any third party sustain as a result of any of your actions, or any actions of a third party using your password, account name or account information; and
indemnify us against any claim from any use of your password, account name or account information by a third party or as a result of your violation of this section.
IX. Service Suspension
Reasons for suspension. We may suspend all or some of our services or licences to you:
if you fail to pay any fees due to us;
for scheduled downtime to permit us to conduct maintenance or make modifications to any service;
if it is necessary due to emergency system repair or a system security breach; or
if you use the services in contravention of these terms, applicable law, regulation or industry code of conduct;
if we are required to do so by law; or
in the event of it becoming impossible for us to deliver services to you due to circumstances beyond our control.
Reinstatement. We will restore service once we are satisfied that the cause of suspension no longer exists.
User Requested Suspension. Temporary suspension of this service may be requested by you at the SMS Dashboard page at our website. When the service is suspended, no messages are being sent. You can re-active the service at the same place.
X. Service Termination
Notice. You may end this contract by notifying us via email at legal@artio.net or by using a form at the service deactivate page at our website.
Reasons. We may end this contract immediately on notice to you, if:
you fail to pay any amount due to us;
you commit a breach of this contract;
you commit an act of insolvency, are placed in provisional or final liquidation or are placed under judicial management;
you take steps to deregister yourself or are deregistered;
any of our suppliers stop their services to us;
a governmental prohibition or law prevents us from continuing our services to you.
Consequences. When this contract ends:
you must immediately stop accessing our services and systems;
you must immediately pay all amounts due to us;
you will forfeit any unused credit on your account; and
all licences and rights granted under these Terms will terminate immediately.

OBM Bridge Documentation
Copyright © 2013 ARTIO International Co.
Abstract
The user documentation for OB Bridge - component ensures integration Openbravo ERP and Magento. This document describes the component requirements, installation and usage on both sides of synchronization process, Magento and Openbravo. All main component parts are described in more details, including illustration images and examples. It specifies server and browser requirements and information about environment constraints. The documentation is helpful for both web developers and website administrators / owners.
You can also download OB Bridge documentation as pdf.
Table of Contents
List of Figures
Table of Contents
OB Bridge, online connector, is a specialized set of software components for Openbravo and Magento for online data synchronization between these systems. It becames required part of ERP Openbravo because covers synchronization of all important entities. Important entities are in our case these business objects:customer with contact information, addresses, categories, products, products attributes, prices and of cource orders with payments, shippings and parcel numbers. The whole synchronization is running on the background and can be completely scheduled, so user doesn't have to spent his time by managing processes over and over again. There is no needed to special settings if component is installed correctly. Data synchronization is running automatically in background. Integration covers synchronization data from Magento to Openbravo and vice versa.
There are two server sites to handle: Openbravo server and Magento server.
The component is compatible and has been tested with:
-
Openbravo3 MP22.1
-
Java 1.6.0_45 (x84)
-
PostgreSql 9.2.4
-
Tomcat 6.0
-
Ant 1.7.1
-
-
Magento 1.7.0.2
-
php 5.3.13
-
MySql 5.5.24
-
Apache 2.2.22
-
OB Bridge uses XmlRpc client 3.1.3 Java framework from Apache foundation. When using different versions of this framework, proper functionality may not be guaranteed. OB Bridge contains this library in its installation set.
Please note, that you can not use XmlRpc Client framework at the same time without special adjustment. There may exist a conflict between these frameworks that needs to be resolved. All libraries should run in non-conflict mode.
OB Bridge will do modification in the Openbravo database during installation. Please, ensure that database user has all permissions to execute commands for add new table, column or trigger.
Table of Contents
OB Bridge brings additional features to Openbravo beside full integration with Magento. Below is list of the new features, which are now available.
Default Openbravo does not enable to assign one product to the more categories. OB Bridge brings this well know feature from Magento so one product could be placed into several categories now. Whole structure of categories and sub-categories is synchronized to Magento.
Configurable product is a known term from Magento. OB Bridge brings same functionality into Openbravo. User can make more products with the same attribute set, define for each one an attribute value and create one configurable product based on the same attribute set. As a result you get only one product in your web store that wraps all child-products with unique attribute values.
Related products works the same way as in Magento now. There is one product for example LCD monitor and there are two products DVI and HDMI cable as its related products that can be bought with monitor. The same relations and minimum quantity of related product to main product can be defined in Openbravo.
This functionality allows to add to product additional files like images, pdfs, docs etc. These files are synchronized to Magento as well.
OB Bridge provides API for other modules to be notified about the paid sales orders. Sales orders are checked periodically using background process and for every paid sales order all the registered listeners from other modules are called.
It brings core functionality of Magento into Openbravo as well. User can define speecial product associated to category (probably coupon category), product has its rules (discount amount, counts of usage, etc.). When that product is bougth, the coupon code is generated, sent to the customer via email and sent to Magento as well for synchronization.
Provides API for other modules to be notified about the Recalculate Promotions button in Sales Order window. There's a custom Java process that must be assigned to the Recalculate Promotions button in order to work properly and be notified.
Table of Contents
Before installing ARTIO OB Bridge, you need to have:
-
Openbravo 3 MP22.1 and Magento 1.7.0 correctly installed.
Make sure that all the needed directories (as requested by Openbravo or Magento) are writable. And database users have all granted permissions.
-
into the Magento
-
copy all modules to directory /app/code/local/Artio/...
-
copy all config files to /app/ets/modules/...
-
clean the cache and run
-
-
into the Openbravo
-
copy all modules to directory /modules/...
-
run commands "ant update.database" and "ant smartbuild" in command line
-
Please, watch for any error messages generated during installation. If any error appears, the installation might not have been completed correctly.
Table of Contents
The main point of communication between Openbravo and Magento is calling Magento web services API from Openbravo. All requests are secured on Magento site by username and password, that must be assigned to our connection. To create our XML-RPC User just follow these steps:
In Admin mode go to System -> Web Services -> SOAP-XML-RPC-Roles and create a role with all permisions. Next go to System -> Web Services -> SOAP-XML-RPC-Users and create an user with assignation of registered role.
As a next step, we need to configure a web store in our Openbravo installation. Web store is nothig else, just record contains URL of Magento API and username and password for secured connection.
To set Web store just open window "Web store", create a new record and fill all required fields:
-
Organization: this organization is assigned to all created entities records by default
-
Commercial name: name of your web store - used just as note.
-
URL: direct url address to your magento API, you can create it just by http://<address of the store>/api/xmlrpc
-
Username: name of the user from magento XML-RPC User registration
-
Password: password of the user from magento XML-RPC User registration
Tip
: There can be only one created web store, if you create more than one, it will be used only the first active one.
When Openbravo is able to connect to Magento via API, it is possible to define synchronization rules. It means to set value how often must synchronization for particular object occurs. For instance, lets take a customer entity. It can sychronized quite often, regularely about every ten minutes. Other entity, for example customer categories, can be synchronized just in time of created or updated some. :
Note
: every synchronization process takes system resources for its running, so take it carefully when you are creating them.
To create new synchronization process, is needed to open "Process Request" window and fill these fields:
-
Client: openbravo client, accessible during process from OBContext
-
Organization: openbravo organization, accessible during process from OBContext
-
Process: registered synchronization process
-
Timing: options to run it immediately, scheduled or later in defined time
In case of using some constants with defined values that needs to be the same in both systems, you can set them here. In Openbravo, there is a database table AS_Settings handled from window IS Settings. Synchronization is supported by ISSettingsProcess, that takes needed attributes and their values to save them in magento. Only these two are now important to know:
OB Bridge contains support for related products and this is a place where you can define a special discount for all related producs. This feature supports to set a discount for specific amount of child-products, which are related to the main product, if child-producs are bough at one with main product in one order. If the discount is set to zero, there is no discount applied.
This is very important part of handling shipping price to each order. If you create an order at Magento site, the shipping price is adjustable by settings. Openbravo has an option to define a shipping price as was written in chapter 2. To allow this functionality, is needed to create a simple product, name it as you wish, with no attrbutes and no prices and in the window IS Settings assign it as a shipping product. Thanks to this, it will be assigned to each order as another order line that will define a shipping price.
Customer can buy voucher as virtual product. It means that voucher with uniqe code is generated and could be used as gift. Checkout page of Magneto has a field for enter voucher code. Magento validate if voucher code is corrent and apply discount. Order contains one more line with discount value. Discounted order is synchronized into Openbravo.
Table of Contents
In default, this process handles the synchronization of customer categories from Openbravo to Magento. If category is named "Supplier Services" or "Supplier", could be changed in the configuration, the process will assign no tax to them.
Name:Customer Category Synchronization
Way:One way, from Openbravo to Magento
Tables:
-
Openbravo:
-
C_Bp_Group
-
-
Magento:
-
customer_group
-
This process reflects all updates on customer entity, include its addresses and contact information on both sites of communication.
Name:Customer Synchronisation
Way: Two way, from Openbravo to Magento and vice versa.
Tables:
-
Openbravo:
-
C_Bpartner
-
Ad_User
-
C_BPartner_Location
-
-
Mageno:
-
customer_entity*
-
customer_address*
-
Notice: Two way synchronization can cause conflicts. That means the situatition when on both sites a newly updated record appears and it's ready to synchronize. This case is solved in this way: updated record from Magento will replace the changes in Openbravo. Message about the potential conflict is written into log file.
*includes all derivated tables by attribute types (_int, _date, _text, _varchar)
Product categories, its names, descriptions, places in a category tree are moved from Openbravo to Magento by this process. It can reflect also changes in category tree by moving categories on Magento site.
Name: Product Category Synchronization
Way: One way, from Openbravo to Magento.
Tables:
-
Openbravo:
-
M_Product_Category
-
AD_Tree
-
AD_TreeNode
-
-
Mageno:
-
catalog_category_entity*
-
catalog_category_flat_store
-
*includes all derivated tables by attribute types (_int, _date, _text, _varchar)
Product can be more specificaly defined by its attributes wapped in attribute set. They can be created and managed on Openbravo and Magento. This process allows user to define them only in Openbravo with effects on Magento side.
Name: ARTIO AttributeSet Synchronization
Way: One way, from Openbravo to Magento.
Tables:
-
Openbravo:
-
M_AttributeSet
-
M_Attribute
-
M_AttributeUse
-
-
Mageno:
-
eav_attribute
-
eav_attribute_set
-
Notice: This process creates only attribute sets and attributes. All attributes are created as type "select" and values for them are sending by product process directly to the saved product.
Product itself is moved from Openbravo to Magento by this process. Synchronization includes information about prices, descriptions, meta-information, added attributes by attribute set, tax category and visibility.
Name: Product Synchronization
Way: One way, from Openbravo to Magento.
Tables:
-
Openbravo:
-
M_Product
-
M_AttributeValue
-
M_ProductPrice
-
AEC_Product_Cat_Xref
-
-
Mageno:
-
catalog_product_entity*
-
catalog_product_index_price
-
catalog_product_link
-
catalog_product_link_attribute*
-
*includes all derivated tables by attribute types (_int, _date, _text, _varchar)
Product Relations is a binding between two products that gives one to position of related to second. This relation is moved to Magento by this process on already synchronized products.
Name: Product Relations Synchronization
Way: One way, from Openbravo to Magento.
Tables:
-
Openbravo:
-
ARP_Related_Product
-
M_Product
-
-
Mageno:
-
catalog_product_relation
-
Process ensures synchronization images for products from Openbravo to Magento.
Name: Product Image Synchronization
Way: One way, from Openbravo to Magento.
Tables:
-
Openbravo:
-
M_Product
-
APAF_File
-
-
Mageno:
-
catalog_product_entity_media_gallery
-
catalog_product_entity_media_gallery_value
-
Notice: This process moves only information about picture (name, address, type), not picture itself. This means that user have to physicaly move his images to required directory and information like name, type, address are moved by this process into Magento database. It is possible to use rsync to sychronize product images.
Products stock data, information about avalable counts of each product in warehouse is by this process moved into Magento. It's very simple process that moves just a little data so it doesn't take a lot of system resources. By this way it can be scheduled in shorter iterations.
Name: Stock Data Synchronisation
Way: One way, from Openbravo to Magento.
Tables:
-
Openbravo:
-
M_InventoryLine
-
-
Mageno:
-
cataloginventory_stock_item
-
cataloginventory_stock_status
-
Coupon rule defines conditions for getting discount at the cart/checkout. Scenario how this whole process wiht synchronization works is described in chapter 2.6. This process has as a task to move Openbravo coupon products as coupon rules to Magento.
Name: Coupon Rules Synchronization
Way: One way, from Openbravo to Magento.
Tables:
-
Openbravo:
-
M_Product
-
M_Product_Category
-
-
Mageno:
-
salesrule
-
salesrule_website
-
Notice: This process creates products too. It is purchasable product that generates coupon code to customer.
After coupon product is bought and paid, on Openbravo site is created coupon code that is synchronized to Magento by this process. It allowes customer to use his coupon on eshop.
Name: Coupon Code Synchronization
Way: One way, from Openbravo to Magento.
Tables:
-
Openbravo:
-
ACPN_Coupon_Code
-
-
Mageno:
-
salesrule_coupon
-
salesrule_coupon_usage
-
Notice: After using coupon on order, discount is show and moved back with code to Openbravo, so there is no option to use code more than once.
Ther is this process that handles moving records from Magento eshop to Openbravo ERP and back to synchronize new or updated order. Customer can see on Magento website own orders and made changes. The order entity record in our terminilogy means an order with all order items, customer with his billing and shipping address and shipping price and discounts too.
Name: Order Synchronization
Way: Two way, from Openbravo to Magento and back.
Tables:
-
Openbravo:
-
C_Order
-
C_Orderline
-
C_OrderlineTax
-
C_BPartner
-
C_BPartner_Location
-
-
Mageno:
-
sales_flat_quote*
-
sales_flat_quote_address*
-
sales_flat_quote_item*
-
sales_flat_quote_item_option*
-
sales_flat_quote_payment*
-
sales_flat_quote_shipping_rate*
-
sales_flat_order
-
sales_flat_order_item
-
sales_flat_order_address
-
sales_flat_order_grid
-
Notice 1: Order can not be updated at Magento site, so when update happens on Openbravo site, process will reorder (cancel old and create new) the order on Magento site.
Notice 2: Order has its specific order number, it is created defaultly in Magento and Openbravo too. As option to show to the customer the right order number, there is in Magento created table order_number where are stored all that number during synchronization.
Payment of order is a little more complicated issue, and by this way is handled by two processes. There is to solve creating only one invoice, synchronize payments both ways and booking orders too. So let's split this chapter to make it simple.
There is option when order is payd directly after is was created. It was payd by credit card or paypal... The main point is, that on Magento site was created invoice base on payment. These invoice is better not to show to customer because now it's only record of payment for synchronization process. The process takes all new invoices on Magento site and by them it will book orders assigned to them on Openbravo and by the amount there will be created payment. Now Orders are paid on Openbravo and ready to continue by shipping and invoicing...
Name: Payment Synchronization
Way: One way, from Magento to Openbravo.
Tables:
-
Openbravo:
-
FIN_Payment
-
FIN_Payment_Detail
-
FIN_Payment_Schedule
-
FIN_Payment_ScheduleDetail
-
-
Mageno:
-
sales_flat_invoice
-
sales_flat_invoice_grid
-
sales_flat_invoice_item
-
sales_flat_order_payment
-
In other way, when payment was placed on Openbravo site and there was created invoice of the order, the invoice can be sended to customer by mail and by synchronize process Order in Magento site will be invoiced. That will prevet to show paid order as not paid to customer.
Name: ARTIO Invoice Synchronisation
Way: One way, from Openbravo to Magento.
Tables:
-
Openbravo:
-
C_Invoice
-
C_InvoiceLine
-
FIN_Payment_Schedule
-
FIN_Payment_ScheduleDetail
-
-
Mageno:
-
sales_flat_invoice
-
sales_flat_invoice_grid
-
sales_flat_invoice_item
-
sales_flat_order_payment
-
To synchronize record that point on order what is and what is not shipped, there is this process. A part of that is sending tracking numbers of packages to order on Magento site, to notice his future owner.
Name: ARTIO Shipping Synchronisation
Way: One way, from Openbravo to Magento.
Tables:
-
Openbravo:
-
M_InOut
-
M_InOutLine
-
Aship_Parc_No
-
-
Mageno:
-
sales_flat_shipment
-
sales_flat_shipment_item
-
sales_flat_shipment_track
-
Notice: When order is marked as "can be shipped separately", there is option to send not all order items but just available product. In this case there will be synchronized this partly shipping.
Settings presented in previous chapter (4) can be importnat in Magento too. For example the related product discount is moved as constant into Magento to the tabel core_config_data with record path "sales/related_discount/discount_in_percent".
Name: ARTIO IS Settings Synchronization
Way: One way, from Openbravo to Magento.
Tables:
-
Openbravo:
-
AS_Settings
-
-
Mageno:
-
core_config_data
-
When some entity record is deleted on Openbravo and we need to delete him on the Magento site, we need to use this synchronization process.
Name: ARTIO Delete Process
Way: One way, from Openbravo to Magento.
Notice: This is ready for enetities : customer, product, product category and order (not booked or paid).
Notice about Openbravo Organization settings : Most processes are one way synchronization from Openbravo to Magento. But processes that saves new data from Magento to Openbravo needs to know what is the right Organization for created entity record (if you have them more than one). For example if a newly created order has assigned wrong Organization (different as product in that order or tax category or tax rate,...) there is no option to correctly count taxes on this order. To all new orders is assigned Organization that you have setted in Web Store configuration from chapter 4, section 2. And to all order lines, shipping lines and payments record will be assigned the same one. For new customer in Openbravo site is that the same situation, the organisation assigned to him is taken from web store config too.
Notice about payment methods : In default build of OB Bridge there is support for only one kind of payment method to synchronize for order. It is payment by check. There are two reasons, why only this one. At first is this only one that exists in clean magento and openbravo setup defaultly. And as second reason, that any other company will add on both sides the payment methods that they are using. How to add them programmatically is described in next chapter as tutorial.
Notice about shipping methods : This is the same story as in previous paragraph. The only one shipping method that is availible in this build of OB Bridge to synchronize is FLAT_RATE. The reasons are the same as in previous and tutorial for adding new one is ready too.
In time, when you need to create your own synchronize process, you can just implement the abstract class net.artio.magento.MagentoSyncProcess.java and it will give you a set of method to implement.
-
String getItemPrintName(HashMap<String, Object> itemData) - In case of logging, this method can return user friendly item print name of entity record
-
boolean initialize(AMSPWebStore webStore, XmlRpcClient client, String sessionId) - to init process by saving global values and return true if everything is ok.
-
String getChangedItemsMethod() - Returns name of magento API method that returns a list of newest entity records (identifiers).
-
String getItemListMethod() - Returns name of magento API method that returns an info of newest entity records (detail view).
-
BaseOBObject synchronizeItem(Object itemData) - to provide saving new or updated founded entity.
-
String getName() - This method holds and returns process name
-
Vector<Object> getChangedItemsArguments() - Sets arguments for magento API. Like lastTime of sync (to get an updated records from that time)
-
List<Object> getItemsFromOB() - This is called in iterations so the best way is to returns entity records in bashes.
-
String getSyncMagentoMethod() - returns name of magento API method, that will handle our sended data
-
Object toItemData(Object entity) - Convert Openbravo class model (can be more than one class type) to hashMap where keys are defined in Magento API.
-
void resolveKeys(Object[] keys) - to save magento indentifiers as result of synchronization.
-
void actualizeSyncData() - to store time when process was runned at last.
-
String getId(Object object) - returns openbravo identifier of the entity.
-
Object getItemsToFilter(Object object) - returns ids or conditions to get details of entity record.
-
void refreshMagSyncTime() - Entity can have a record in AMSP_Data table where is stored last time of calling of magento API for that entity.
-
Object[] saveKeys(Object[] items) - Keys that come from magento in MAG -> OB way, can be stored to prevent lost of them during some failure.
-
void handleException(Exception e) - to save exception to other log file we can use this.
Complete documentation describes implemented methods, inputs and outputs is in java doc.
To create process that will synchronize entity records one way, you do not have to implement all of this methods. In every case, the method initialize have to return true, so that's the firts thing you have to check. To implement GetName and getItemPrintName is good for logging.
-
for Openbravo -> Magento way just implement : getItemsFromOB, getSyncMagentoMethod, toItemData, resolveKeys, actualizeSyncData and getId. (for example AttributeSetProcess.java)
-
for Magento -> Openbravo way just implement : getChangedItemsMethod, getItemListMethod, synchronizeItem, getChangedItemsArguments, getId, getItemsToFilter. (for example PaymentProcess.java)
-
for both way synchronization you need to implement all the methods. (for example OrderProcess.java)
After your process is ready, you need to register it into Openbravo. Log in as System Administrator, go to window Report and process and create a new process record.
Triggers are one of the best and maybe the fastest way how to handle changes on entity records. How to create own trigger is described in this tutorial: http://wiki.openbravo.com/wiki/ERP_2.50:Developers_Guide/How_To_Create_a_Trigger
-- Function: amsp_m_product_trg() -- DROP FUNCTION amsp_m_product_trg(); CREATE OR REPLACE FUNCTION amsp_m_product_trg() RETURNS trigger AS $BODY$ DECLARE BEGIN SELECT COUNT(*) INTO v_count FROM AMSP_Process; RAISE NOTICE '%',v_count; IF v_count > 0 THEN RETURN NEW; END IF; IF TG_OP = 'UPDATE' THEN BEGIN IF(NEW.EM_AMSP_MAGENTO_KEY = OLD.EM_AMSP_MAGENTO_KEY AND NEW.EM_AMSP_SYNC_AT = OLD.EM_AMSP_SYNC_AT) THEN NEW.EM_AMSP_SYNC_AT := null; RETURN NEW; END IF; RETURN NEW; END; END IF; IF TG_OP = 'DELETE' THEN BEGIN INSERT INTO AMSP_DELETE VALUES(get_uuid(), '0', '0', 'Y', TO_DATE(NOW()), '0', TO_DATE(NOW()), '0', 'product', OLD.value); RETURN OLD; END; ELSE RETURN NEW; END IF; END ; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION amsp_m_product_trg() OWNER TO tad;
Each entity where we need synchronize updated records too, have to be marked. As a main synchronization mark is used em_amsp_sync_at column in the Openbravo entity table. When it is empty, the entity record have to be synchronized. When the entity record is updated, this is a right event to clear that column. So in each entity there is a trigger ready to handle update event where is only one simple condition. When there is an update event and the new record has the same em_amsp_magento_key and em_amsp_sync_at (so it was not actualized during synchronization) as the old record, the update belongs to another entity columns and em_amsp_sync_at has to be errased (set to null). After that it will be finded by his process to synchronization.
Some triggers handles delete event too. Entities where delete have to be performed on Magento site too like customer or product just run their trigger on delete event and to table amsp_delete type of entity and its magento identifier* (em_amsp_magento_key => if is null, the entity record was not synchronized and there is no need to synchronize its delete) is stored. and of cource the scheduled Delete process will iterate all records and run Magento API methods to delete them.
*in case of product, there is sku used as identifier
Best way how to start extending API is to read some official tutorial, like this http://www.magentocommerce.com/wiki/doc/webservices-api/custom-api. In the next step is very important to know in what shape we are sending data from Openbravo and in what shape we are waiting for an answer. Let's have a look at this:
-
As magento API input all methods used by OB bridge are waiting for an array of objects that consists of two parts. First one is 'ob_id' that is a return mark. The return answer will contains this id and we will know if that object was synchronized correctly. And the second one is 'data' and it's array of data of the sended object. The inner structure of 'data' depends of course on the type of saved entity.
-
As an output we are expecting an array of associated arrays (in java hashmaps) where is ob_id (identifier of sended object) as a key and result of operation (mostly magento identifier of that object). If we have magento identifier sended back to openbravo after correct synchronization, we can store it and use it in time of update. Most of the synchronized entities on Openbravo site has added columns:
-
em_amsp_magento_key - identifier from magento for that entity record
-
em_amsp_sync_at - timestamp of last synchronization
-
With knowledge of input and output you can create your own methods that you will call from Openbravo scheduled process.

OBM Bridge Features
CompleTE solution for Openbravo and Magento
The table below shows what entities get synchronized between Openbravo and Magento. The OBM Bridge connector ensures that Openbravo can act as primary system for managing a Magento-based e-commerce website. No administrative work in Magento is needed.
Magento -> Openbravo | Openbravo -> Magento | |
Product | ![]() |
|
Customer | ![]() |
![]() |
Order | ![]() |
![]() |
Invoice | ![]() |
|
Shipment | ![]() |
|
Payment | ![]() |
|
Product Category | ![]() |
|
Product Pictures | ![]() |
|
Product Discounts | ![]() |
|
Stock Status | ![]() |
![]() |
Related Products | ![]() |
|
Coupon/Voucher | ![]() |
|
Customer Category | ![]() |
|
Product Attribute | ![]() |
|
Product Attribute Set | ![]() |
|
Product Characteristics | ![]() |
|
Generic and Variant Products | ![]() |
|
Shipping | ![]() |
![]() |
Credit memo |
OBM Bridge ensures full integration of Magneto with Openbravo. Its key features include: automatic processing of stock data updates, multi-categories support in Openbravo and add also adds support for concept of the configurable products to Openbravo.
Common scenario of OBM Bridge usage:
- New product category is synchronized from Openbravo to Magento
- New product, including products variants, created in Openbravo is synchronized to Magento
- Prices and stock is updated in Magento
- Registered customer in Magento is sync. to Openbravo
- New order and payment (for exmaple PayPal) is moved from Magento to Openbravo
- When order is processing, order status in Magento is updated
- Stock status of product is updated in Magento
- New shipments are synchronized from Openbravo to Magento
Request a free demo!
It's simple!
Just fill in phone number and email and we will contact you as soon as possible.

Openbravo-Magento Connector: OBM Bridge
Set of tools integrating Openbravo ERP and Magento E-commerce system. Real-time online synchronization of products, categories, price levels, customers, orders & invoices, and many more.
New release Book it! 2.1.1
We have just released Book-it! 2.1.1. A booking and reservations component for Joomla. This version fixes a few bugs, adds new features and improvements. Read more about the changes...
New JoomSEF 4.4.3 and 3.10.2!
JoomSEF 4.4.3 and JoomSEF 3.10.2 are now available for download or upgrade. This release include some new features, improvement and also the known bug fixes. Read more about the new features...
GoPay for Magento just released
We have just released the new module GoPay for Magento. This release enables to use popular payment gateway GoPay in Magento.

B2Sync for Virtuemart 3 Documentation
Copyright © 2015 ARTIO International Co.
Abstract
ARTIO B2Sync is a Joomla! tool that enables bridging VirtueMart e-store component with popular accounting systems Pohoda and Money S3. The integration can be automated or manual. The automated integration is described in a special documents for each accounting system. This document describes only manual synchronization. The documentation is helpful for Joomla!CMS version 2.5.0 or newer.
You can also download B2Sync for VirtueMart Documentation as pdf.
Table of Contents
Table of Contents
ARTIO B2Sync is a Joomla! tool that enables bridging VirtueMart e-store component with popular accounting systems Pohoda and Money S3 . The integration can be automated or manual. The automated integration is described in a special documents for each accounting system. This document describes only manual synchronization. The documentation is helpful for Joomla!CMS version 2.2.0 or newer.
B2Sync 3 is compatible with:
- VirtueMart 2.0.x on Joomla 2.5.x
- VirtueMart 3.0.x on Joomla 3.4.x
Other combinations are not possible. Functionality is not guaranteed for not mentioned versions.
-
go to the administration B2Sync on the tab Export dat .
-
select Výstupní systém according to your accounting system in the section Mezi systémy .
-
go to the Časový interval and select from-to. Will be exported only orders created in this time period.
-
You can also enter ID specific orders . In this case time period does not take in account.
-
In section Exportovat select order status to export (usually Pending). List of status is loaded dynamically from VM settings.
-
In the last section Exportovat jako is necessary to select on what kind of billing will be order transffered in the accounting.
-
Export complete by clicking on the Export button on the main control panel
-
If there are found any orders for certain criteria, component will offer XML file to download, which you have to save on your disk and then manually import it.
-
Open Soubor – Datová komunikace – XML import/ export
-
Select XML type to processing: select file
-
Vstupní složka or Soubor : Enter the path to the file from B2Sync
-
Click Další and Dokončit .
(for manual and automated synchronization)
go to the Hlavní nastavení in administration B2Sync
Set License number as Download ID that you received with your order when you bought B2Sync. License number is required for launching automatic updates.
-
COM_B2SYNC_MANUAL_STOCK_IMPORT
-
Tax number
-
VAT ID is not used
-
nationality - when you are trading in more countries enter nationality your trade in order to recognize addresses by domestic and foreign order. Code of nationality should be in the format that is used in VM
-
-
Payment
-
Constant symbol - enter constant symbol that B2Sync inserts into invoices
-
Type Currency – select if you are trading in domestic or foreign currency
-
-
VAT
-
The standard rate, reduced rate, 3rd rate - setting is used to identify what VAT rate has order, because VM does not save this information. Insert only numeric value without%.
-
Fixed VAT if the VM does not work with VAT, B2Sync may insert information about the VAT in to the exported invoices. It is necessary to select which rate do you want to insert.
-
VAT ID, Tax number - select the columns in the database where may be shown VAT ID and Tax number. This may vary depending on the VM settings.
-
-
Accounting
-
Account assignment - code that B2Sync inserts into invoices
-
Numerical series (ID) must be set in Pohoda. Determining value can be problematic because it is an internal value that Pohoda never display. The simplest solution is to create an invoice with numbering and then make an export in XML. The XML ID value is in the brand <typ:id>.
-
Number series (prefix) prefix value, which B2Sync inserts into the invoices
-
Code for home buyers, code for customers in the EU, code for customers outside the EU - VAT structure, which B2Sync inserts into the invoices, B2Sync selects the one from structure address in the order. Only for Pohoda.
-
Bank code (only Money S3) uniform structure of VAT for Money S3.
-
-
Texts
-
Order properties are transferred to the invoice items. Names settings:
-
Text items for payment - the item name for payment fee
-
Text items shipping - the item name for the shipping fee
-
Text items discount – the item name for discount
-
-
The main note is added at the end of the note to each item of all invoices
-
Note to entrepreneurs outside the EU, Note for non-business outside EU, Note for private individuals, Note for domestic entrepreneurs - B2Sync automatically detects accordting address the type of customer and select one of notes. It is added at the beginning of the note invoice items.
-
Default note text invoice (global note) used in export, invoice is received / issued.
-
Default note text order (global note) used in export, Order received / issued
-
-
Output format
-
Format name of the customer - to select from two formats that suits you best
-
Customer name as the name of the company - is required to check in Money S3, we also recommend it for Pohoda.
-
Use order number as a variable symbol - turning automatic generationg off variable symbol
-
Payment methods - convert the code saved in the order in VM to format suitable for accounting. Format: code | Name | Account. The code is used in VM. Name and Account will be transferred to the accounting.
-
Table of Contents
-
přenos zásob S3 –> VM
-
přenos objednávek VM –> S3 (pokud byly zásoby ve Virtuemartu vytvořeny přenosem z S3, tak se automaticky snižuje stav zásob v S3)
-
přenos stavu objednávky S3 –> VM (objednávky vyřízené v S3 se ve VM nastaví jako confirmed)
-
je nutno nastavit adresáře, do kterých S3 přes FTP kopíruje XML soubory a obrázky. Do těchto adresářů rovněž B2Sync ukládá XML soubory při přenosu objednávek do S3.
-
dále nastavte měnu a jazyk pro produkty a jejich ceny přenášené do VM.
-
můžete nastavit také obrázky, které se použijí pro produkty, které jsou/nejsou na skladě.
-
pro export objednávek z VM do S3 nastavte typ přenosu (nejčastěji objednávka přijatá) a stav objednávek pro export (nejčastěji pending).
![]() |
-
musí být nainstalován e-shop konektor
-
nastavte obchodování na internetu
-
aktivujte e-shop konektor
-
nastavte vzdálenou aplikaci, což je Joomla s nainstalovanými Virtuemart a B2Sync
-
nastavte také FTP připojení na server, na kterém je nainstalována Joomla. Stejné adresáře, do kterých zapisuje Money S3 XML a obrázky jste nastavili v B2Sync v předchozím kroku.
-
Ve Virtuemartu musejí být předpřipraveny sazby DPH a slevy, které se přenášejí spolu s produkty.
Table of Contents
-
Stromware Pohoda 2013
-
Joomla 2.5.11 nebo Joomla 1.5.26
-
ARTIO B2Sync 2.2.0
-
Virtuemart 2.0.20 nebo 1.1.9
Aby byly zásoby v Pohodě a Virtuemartu dokonale spárovány je nutno je vytvořit v Pohodě a poté importovat do Virtuemartu. Při importu objednávek z Virtuemartu do Pohody pak v Pohodě dochází ke změně počtu zásob na skladě. Import z Pohody do Virtuemartu je možné libovolně opakovat a aktualizovat tak informace o zásobě jako je počet kusů na skladě apod.
Zásoba v Pohodě musí být označena příznakem internet.
![]() |
Na záložce Internet pak vyplňujete informace použité ve Virtuemart jako jsou popisy, související zboží a kategorie.
![]() |
Kategorie internetových zásob se vytváří v Nastavení/Internetové Obchody/Kategorie internetových obchodů.
![]() |
Dále je nutno vytvořit internetový obchod v Nastavení/Internetové Obchody/Nastavení internetových obchodů. Vyberte typ Obecný internetový obchod. Na záložce Obecné libovolně pojmenujte obchod. Na záložce Export nastavte URL pro Zásoby, Objednávky a Kategorie ve formátu:
http://www.vase-domena.cz/index.php?option=com_b2sync&task=import&interPlugin=virtuemart&outerPlugin=pohoda
Na http://www.vase-domena.cz běží Joomla s nainstalovaným Virtuemart a B2Sync.
![]() |
Otevřete Komponenty/ARTIO B2Sync/Nastavení. Zde otevřete sekci Stromware Pohoda a nastavte jednotlivé položky.
-
Obrázek není na skladě: zásoba, která není skladem bude mít automaticky přidělen tento obrázek
-
Obrázek je na skladě: zásoba, která je skladem bude mít automaticky přidělen tento obrázek
-
Měna: měna použitá pro import cen zásob
-
Jazyk importu: jazyk použitý pro importované zásoby
-
Importovat (stručný) popis produktu: touto volbou je možno vypnout import popisů produktu pokud jsou ve Virtuemartu spravovány nezávisle na Pohodě
![]() |
V Pohodě otevřete Soubor/Datová komunikace/Internetové obchodování. Vyberte Váš internetový obchod a volbu Odeslat na internet/Data XML.
![]() |
Vyberte položky exportu a pokračujte tlačítkem další a dokončit. Zbytek probíhá automatizovaně.
![]() |
Otevřete Komponenty/ARTIO B2Sync/Export. Vyberte termín od-do, status objednávky Pending a typ exportu Přijaté objednávky. Výstupní systém nastavte jako Stromware Pohoda. Po kliknutí na tlačítko Export v ovládacím panelu nabídne prohlížeč ke stažení XML soubor, který uložte na disk počítače. Pokud nebudou nalezeny žádné objednávky nahlásí B2Sync chybu.
![]() |
V Pohodě otevřete Soubor/Datová komunikace/XML import a export. Zde navolte XML pro zpracování jako soubor a nastavte cestu k souboru, který vygeneroval B2Sync. Po kliknutí na tlačítko další dojde k automatizovanému přenosu. Přenesou se pouze objednávky, které ještě v Pohodě nejsou. U ostatních je nahlášena chyba.
![]() |