Two years ago a client came to me and told me about very interesting e-commerce startup. He was a successful American business, the owner of his digital marketing company, who wanted to perfect his internet startup, specialized in selling dogs’ accessories, houses, food, toys and all stuff for dogs. Needless to say that at the moment his web store was probably a sole place, accumulated all dogs stuff vendors in USA.
The task he approached us with was to migrate his old custom CMS site on the latest Magento and create a very sophisticated functional designed to automate payment flows from him to his Vendors, to create reports calculating how many he owes to Vendors and what is profit margin per each, to allow Vendors initiating refunds from their side and track their revenues and orders easily and accurately. Vendors should have got the direct access to their customers so they communicate to each other, have feedbacks and dispute returns or delivery matters.
In addition to that he asked to do a job on improving usability of frontend so that users can easily find what they need, create tickets if they want to dispute their purchase, rearrange the structure of the store for user to get easier access to what they want.
After several talks by the phone and discussions over email we made up a plan of how we will work on this big project together. At our disposal we have got a very sketchy Specification from him, which later on we decided to transfer to the Bug tracking system Redmine, where all features and issues have been structured and elaborated to make sure both sides are on the same page about the plot and design of it.
When we started we have deployed staging server where all works have been conducted before the final site has been pushed to live. In the beginning we migrated: products, images, description, prices, design Theme to Magento and then started on implementing requested functionality.
As for orders and users we have migrated them in the end when we were pushing accomplished code from staging to live.
When we approached the case of automating the routine of how orders from customers will be passed over to Vendors and how site owner will have a control of it and all statistic of how many each vendor sold we came to decision to use Dropshipping plugin, which make this a reality.
The Dropshipping plugin has a specific add-on for Vendors Purchase orders (PO), which we used to send POs to Vendors, each time when new order for this Vendor has been placed and the time for reconciliation and product delivery came.
Unfortunately, for us the Dropshipping module has some differences from the interface our client wanted and subtle particularities of his business scheme made us to customize dropshipping module logic to tune it to client’s business model of dealing with vendors and customers orders. In the end we adjusted it so that automatic invoicing, refunds and partial shipments has been functioning exactly as client wants in line with automatic payment mechanism where only administrator control and pressing approval button release accumulated funds to vendors accounts.
One of the issues with that was that some elements of Dropshipping plugin code have been closed to open source so we contacted plugin producer to settle the matters of opening certain code areas of plugin to finish our job.
In this customization we had a challenge to fuse it with Authorize.net payment gateway how refunds from Vendor to customer will be processed so that delivery fee, Vendor commission is settled properly for all 3 parties: vendor, customer and site owner. It is so called RMA process that we needed to line up.
The quite a big part of custom work we have done was to create in backend reliable and convenient interface of reports, calculating site owner expenses, revenues, commissions, multiple fees in order to calculate profit margin per each vendor and give possibility for site owner to offer competitive price in the market. That was achieved by customizing report tables in Magento backend and integrating formulas in the relationships between various fields and Magento data.
For ticketing system on Frontend we used Helpdesk extension, which collects tickets from customers and distribute it between vendors to initiate correspondence, which site admin can supervise if necessary.
At last we changed the filtering module so that it allows user to filter by multiple products attributes and qualities. We tried many off the shelf extensions like Layered navigation or similar but they slowing down filtering process tremendously and worsened performance very much. After some research we made decision to implement bespoke filtering system based on Magento default filters but with profound refinement of Database queries and refactoring of coding methods to make filtering quick and easy.
Than it was time for importing orders from older system. We did not import them at once because we have been programming new web shop on Magento while the older web store ran and orders placed and accumulated in the older system backend. However, client wanted all orders to be imported from older system to Magento. To fulfill this task our my developer implemented a custom import script, which pulled orders from the older store database and imported them in Magento database connecting with correct users, products and vendors. Needless to say that this script has been dealing with users import as well but it was in the first iteration. When orders import script worked out and we did a thorough test the client’s new Magento site was live!
There were some less catchy but not less interesting nuances and works we have faced on this project but I allowed me to share the most memorizing aspects technically and emotionally.
This client is very good person and а talented businessman and I always wish him a good luck in life and his business.