The company "RACER WORLDWIDE
" is an international online store selling clothes, shoes, jewelry, bags and accessories .
Location: Tallinn, Estonia.
The work of the company is based on the use of 3 systems:
- Shopify - fulfilling orders and selling goods;
- Erply - organizing work at points of sale and managing stocks of goods;
- Erplybooks - accounting and reporting, banking operations.
Expected results of the "Shopify - Erply" integration
- Implementation of Shopify – Erply integration, providing automated transferring data between relevant systems, streamlining and harmonizing their functioning.
- Achieving collaborative work processes to avoid double data entry, ensuring automatic updates when new products are introduced, clear order processing and payment, including full and partial returns (order cancellations).
- Shopify should be the main system for entering data, and Erply should confirm order data, ensure payment processes and deliver it to the client. Payment and delivery processes are provided by Shopify and the service integrated with it https://outvio.com Erpley is responsible for the warehouse and keeps records of costs, purchases, balances, etc.
- Based on the data from Shopify, primary sales and payment documents, for subsequent transfer to Erplybooks
The prerequisite for the work was the terms of reference, which included the following:
1. Organization of automated loading of orders in Erply.
Regardless of the payment status, the order must be registered with Erply and the item in stock is reserved. An order must change two order statuses in Erply - payment status and fulfillment status. Accordingly, the statuses must be correctly updated and function with the changes made.
Optimization of the process for refunding payments for an order in case of its full or partial return.
The basic functionality of Credit Invoice in Erply did not suit the company. The product is returned to the warehouse on a credit note that the company does not need. The credit invoice is a financial document and does not have to return the product to the warehouse. Goods must be returned to the warehouse with the creation of a separate document (waybill). The task is to regulate the processes of integration of Shopify with Erply in cases of return of goods or partial return and refund of full or partial payment for the order.
Get a consultation
3. Initially, the process of transferring new products meant transferring the product to Shopify from Erply.
During the implementation of the first stages of work, it was decided to replace the direction of synchronization with the reverse one (during the discussion, it was possible to replace this process with the reverse one without changing the total cost of integration). The task was to update and create new products in Shopify and automatically transfer them to Erply according to clearly defined data: photos, product description, product category, product type, size variations, product/variation barcodes (EAN), product/variation SKU, retail price (including VAT), product price/variation price, supplier (brand), country of origin, product weight/variation, HS Code.
Risks of Shopify-Erply integration
When performing this technical task, the risks were that at the time of implementation of the integration in Erply no changes were made to existing products, until the product database was completely transferred from Shopify. After changing the direction of synchronization of goods, this risk became irrelevant.
Stages of work done
Transfer of product data.
The most important and cumbersome step in solving the set technical tasks for setting up integration is the mandatory transfer of all products from Shopify to Erply. To start loading orders, you need to unload goods, or match by SKU (SS22-SW-ICE-HOODIE-XL). Since the main source of data according to the technical tasks should be Shopify, where products will be created and automatically transferred according to the same principle to Erply, except for the cost per item indicator - the value of the cost per unit of goods, which is planned to be changed by the company in the future on its own. If a product's status changes in Shopify, it should also change in Erply. In the production version of the integration, the status of the products must be updated. Product updates should apply to all items of information about products and their variations. In order to avoid conflicts in the original work, previous products created earlier were deleted. The expectation was that all products would have variations, so the unpredictable arose - products that did not have variations (single) in Shopify were transferred to Erply, as a matrix product (having variations), with an extra variant of which was added "Default Title" in the parameters. Erply has a division into "matrix products" and "regular products".
The only way to fix this situation is to download the products again. When starting a workload, products with variations began to be transferred as matrix ones, and products without variations - as single ones.
Ask a question about integration
The next step is the process of uploading and updating orders from Shopify. An important question that arose during the data transfer - what is the difference between "EU" and "EU with VAT"? This issue was not discussed in the integration assessment. In the case of orders from EU countries, only the “with VAT” option should be used, since they do not sell goods without tax. Information about the tax is displayed in each order by the name of the tax itself ["title"]=>string(6) "AT VAT" and its rate (for example ["rate"]=> float(0.2)), that is, it was enough just to correctly transfer to orders in Erply ["title"] and ["rate"] from orders in Shopify. At the same time, this moment influenced the total cost of the integration being implemented. It was possible to compensate for it by reorganization and simplification of the business process associated with returns.
Order confirmation problem
In a more detailed study of the work of Erply, it became necessary to make changes to the "Shopify - Erply" integration. The key point of which was the confirmation of orders from Shopify before the data was transferred to Erply. Delayed submission of an order from Shopify to Erply was the addition of a special tag to the order. Also at this stage, the update of the order data and the products in it was implemented, depending on the changes on the Shopify side.
In the course of the work, it became necessary to implement an additional technical task, namely, to change the order of creating documents in Erply:
1. The order is uploaded to Erply after confirmation of the creation of a special tag.
2. "invoice-waybill" system - currently "invoice" and separate "waybill" are created in Erply when order status on Shopify changes to "Completed".
3. Payment is released to Erply only for confirmed (tagged) orders and may be released immediately with the order or later after it has been shipped.
After adding a special tag, we implemented the creation of an invoice-waybill, but the orders and the invoices associated with them remained unpaid. All orders that were synchronized according to the new scenario were paid for by Shopify, but not by Erply. In the order "paid", and in the invoice - "not paid". The logic of the Erply API requests implies the automatic creation of a Payment document, when passing the parameter that the order was paid. But if the order was paid later, the existing API functionality did not allow identifying such a Payment document, and it became necessary to redo a number of requests and regulate the creation and modification of the Payment document by separate requests.
The following testing showed that the settlement payment was created with an error. This was explained by the fact that initially the payment was linked to the order document, so the binding of payments to invoice documents was changed. In cases where an invoice was not generated, an invoice for payment for the goods was not created. The changes made were as follows: the presence of an invoice - payment for the goods was attached to it, and in the absence - to the order itself. However, a payment can be created without an invoice since an invoice is created when fullfilmment status=fulfilled, partial. Therefore, payment for an order can be made at any stage after the creation of the order, or simultaneously with the order, that is, before the invoice is created, or after.
Link to the pickup location
While working on the Shopify and Erply integration solution, there was a need to implement one more additional task. The main condition was not to break the already configured processes in the existing system. In Shopify, it is possible to issue goods from different warehouses or stores https://help.shopify.com/en/manual/locations the goods were also written off from the Paljasaare Warehouse. The task was successfully solved - locations automatically identify each other by name, this allows the client to work with new locations without involving developers. Testing of this setting indicates that the system has worked correctly.
Solving other "anomalies" of "Shopify – Erply" integration
The order and invoice for the order were created without delivery.
A mechanism has been implemented for automatically matching the type of delivery with the goods listed in Erply as corresponding deliveries. The automatic matching mechanism is implemented on the same principle as locations - by name.
Product variations were not removed from the invoice when they were removed from the order on the Shopify side
The mechanism for storing previously unloaded goods has been optimized. For this, the database table structure was redesigned, which is a combination of Shopify and Erply. These tables store information about ongoing changes in the implemented integration
In the course of work, not all order changes were made on the Shopify side
An explanation was given to the customer about the need for any changes in the order, so that the time of the order change changes, and the order is re-selected to check for changes.
Incorrect order tax definition
Actually, country check is pre-done by "shipping_address". To solve the anomaly, an additional check was added for "billing_address", in the place of its absence - for "shipping_address".
All the work carried out to solve the problem of integrating "Shopify - Erply" in the company of the international online store "RACER WORLDWIDE" is considered successful, as evidenced by a number of tests and observations. The technical tasks that were set to set up the expected functioning of the systems, as well as additional technical tasks that arise in the process of setting up the entire software synchronization, were successfully solved. Successful implementation of the project is a satisfied customer, because the work of his company is clear, well-coordinated and automated!