Magento Plugin for MIP
Engineering Requirements Documents
I.
Introduction
Purpose
The purpose of this document is to specify the engineering requirements and logical model of the Magento plugin for the Merchant Integration Platform in a clear and consistent manner.
Scope
The Magento Plugin allows any Merchant using Magento to easily and effortlessly expand their products’ market exposure. The introduction of the Magento plugin will require regular testing to ensure compatibility with Magento new releases as well as proper functionality. No customer support will be needed since the client is not expected to directly interact with the plugin.
II.
General Overview
1.
Plugin:
N
Merchant UI Product database Order DatabasePlugin
Order FeedListener Product + Image feed
Order Ack + shipment feed
2.
System:
‘
3.
Magento
Magento is organized into three main directories: Core:
The app/code/core directory contains all of the functionality for products, categories, customers, payments, etc. It is widely advised not to modify any of the files within this directory to ensure the plugin’s compatibility with the future versions of Magento. Magento is structured such that any functionality can be altered without modifying the core files, which ensures that the plugin remains upgrade-proof.
Community:
The directory app/code/community holds modules that have been provided by third parties (i.e. not Magento’s core team). MoneyBookers is one module which is an all in one payments solution that enables a merchant to accept debit and credit card payments,
Magento
MIP
Web App Product info (Name ,
Description, price, inventory, ..)
-Policies -Transformation Scripts
bank transfers and a larges range of local payments directly through the website. These modules are all available through Magento Connect, and installed in the ‘community’ directory through the built-in “Package Manager”.
Local:
Magento ships with an empty app/code/local directory. Originally empty, this is where we will implementing our module(s).
III.
Functional Requirements:
The following table shows the required fields to generate each type of feed as well as the Magento requirements for creating an item.
Product Image Inventory Order Ack Shipment Magento
SKU Y Y Y N N Y Name Y N N N N Y Category Name Y N N N N N Condition Y N N N N N Publisher (attribute) Y N N N N N Developer (attribute) Y N N N N N Description (short) Y N N N N Y Description (long) Y N N N N Y Free shipping Y N N N N N Current Price N N Y N N Y Quantity Available N N Y N N Y Image URL N Y N N N N OrderID N N N Y Y N OrderLineIt emID N N N Y Y N Carrier N N N N Y N Tracking number N N N N Y N
For the first version of the plugin, we will make assumptions on Category Name, Condition, Publisher, Developer and Free shipping, since these fields are not required by Magento.
IV.
System Description
Generating the merchant product and image feeds:
We can use Magento’s event-observer system to register changes with a queue. Anything inserted via save() will trigger the generic model_save_after event, however it will not catch all changes to the product Database, particularly the ones coming from internal processes to magento (ie : a client buying a product from the merchant’s website decreases the product’s inventory without triggering a save() event, so this would not update the corresponding eBay listing)
The best way to account for all changes, including changes arising from Magento’s interior configuration is to listen to any changes in the Magento items Database. Each time a change is detected in the items database, an event is fired to create product feeds XML files as well as image feeds XML files.
N.B: Separate inventory feeds will not be generated. Inventory count will be included in the product feeds.
Handling redundancy in merchant product and image feeds
1st approach: using Update Queue:Each time a change is queued, we will generate a new entry (both product feed and image feed), if the item is not already in the queue, or update the item (both product feed and item feed), if it is already in the queue. By updating the queue, we are reducing the processing time required at MIP.
2nd approach (recommended): scanning the database every 30 min:
Every 30 min , scan the product Db and look for any items updated within the last 30 min and then generate a single XML product feed and a single XML image feed.
Generating the Order Acknowledgement Feed and shipment feed
We will listen to changes in the Magento order database and only generate orderHandling redundancy in eBay’s order feed
We will regularly update the order database every time MIP sends an order acknowledgement feed.
Uploading Policies and Scripts
This will be done through a separate web admin app that will allow the merchant to upload XML files for policies and Scripts.
V.
Appendix :
Appendix 1: Sample feeds XML files: Product Feed :
<Product>
<SKU>AMC59024</SKU>
<Name>BioShock Infinite (Xbox 360)</Name>
<CategoryName>Xbox Games</CategoryName>
<Condition>New</Condition>
-<Attributes>
<Publisher>2K Games</Publisher>
<Developer>Irrational Games</Developer>
</Attributes> -<Description>
-<Short>
- <![CDATA[
Welcome to the city of Columbia. Floating amongst the clouds, cruising far above sea level, this is a place unlike any you've ever seen. Please enjoy your voyage...
]]>
</Short> -<Long>
- <![CDATA[
The third game in the popular Bioshock series, BioShock Infinite breaks away from the underwater setting of the first two games to take players into a floating city held aloft by dirigibles. The game is set in 1912. You play as Booker DeWitt, a disgraced former private detective who's picked up a new case. Your goal is to find Elizabeth, a young woman who's gone missing and return her unharmed. The only problem is that she's being kept on this flying city. Columbia was once a symbol of America's success as a nation, floating around the world as a traveling World's Fair, a marvel of human innovation. But strange things have happened since Columbia's unveiling in 1900, and now the city has disappeared into the clouds. DeWitt knows how to find it, but over the years stories have been told about Columbia having unlawful heavy armament and deranged citizenry. Do not expect this to be a pleasure cruise.
]]>
</Description>
<FreeShipping>true</FreeShipping>
</Product>
Inventory Feed:
<Inventory>
<SKU>AMC59024</SKU>
<CurrentPrice>65.00</CurrentPrice>
<QuantityAvailable>12</QuantityAvailable>
</Inventory>
Image Feed:
<Image>
<SKU>AMC59024</SKU>
<URL>http://i.imgur.com/XjNsTet.jpg</URL> </Image>
Order Ack Feed : Single : <OrderAck> <OrderID>380998942951-361390533029</OrderID> <OrderLineItemID>380998942951-361390533029</OrderLineItemID> </OrderAck> Multiple: <OrderAck> <OrderID>83451330012</OrderID> <OrderLineItemID>370998942151-361390533038</OrderLineItemID> </OrderAck> -<OrderAck> <OrderID>83451330012</OrderID> <OrderLineItemID>350998952456-361390533043</OrderLineItemID> </OrderAck>