├── .travis.yml ├── README.rst ├── __init__.py ├── __openerp__.py ├── account.py ├── account.xml ├── api.py ├── bom.py ├── country.py ├── currency.py ├── doc ├── Makefile └── source │ ├── _images │ ├── Account_data.png │ ├── Cancel.png │ ├── Cancel_order.png │ ├── Cancelled.png │ ├── Continue_import_orders.png │ ├── Export_orders.png │ ├── Import_catalog.png │ ├── Import_orders.png │ ├── Import_website.png │ ├── Imported_products.png │ ├── Install_magento.png │ ├── Login.png │ ├── Products.png │ ├── Sale_order.png │ ├── Sale_order_openerp.png │ ├── Sale_orders.png │ ├── Sales_orders.png │ ├── Sales_orders_order.png │ ├── Store_view.png │ ├── Website.png │ ├── Website_store.png │ ├── confirm-key.png │ ├── extension-key.png │ ├── goto-magento-connect-manager.png │ ├── import website.png │ ├── loading.png │ ├── login-magento-connect-manager.png │ ├── magento-connect-manager.png │ ├── magento_tax.png │ ├── module-installed.png │ ├── openerp-shipping-tax.png │ ├── openerp_tax.png │ ├── save_magento_instance.png │ ├── search_magento.png │ ├── set-to-beta.png │ ├── terminal-refresh.png │ └── test_connection.png │ ├── about_us.rst │ ├── conf.py │ ├── configuration.rst │ ├── index.rst │ ├── introduction.rst │ └── sale.rst ├── fabfile.py ├── install_nightly.sh ├── magento.xml ├── magento_.py ├── partner.py ├── product.py ├── product.xml ├── sale.py ├── sale.xml ├── security └── ir.model.access.csv ├── setup.cfg ├── setup.py ├── static └── src │ └── img │ └── icon.png ├── tests ├── __init__.py ├── json │ ├── addresses │ │ ├── 1.json │ │ ├── 1a.json │ │ ├── 1b.json │ │ ├── 1c.json │ │ ├── 1d.json │ │ └── 1e.json │ ├── carriers │ │ └── shipping_methods.json │ ├── categories │ │ ├── 17.json │ │ ├── 22.json │ │ ├── 27.json │ │ ├── 28.json │ │ ├── 8.json │ │ └── category_tree.json │ ├── customers │ │ ├── 1.json │ │ └── 2.json │ ├── order-states │ │ └── all.json │ ├── orders │ │ ├── 100000001.json │ │ ├── 100000002.json │ │ ├── 100000004.json │ │ ├── 100000005.json │ │ ├── 100000057.json │ │ ├── 300000001-a.json │ │ └── 300000001.json │ └── products │ │ ├── 135.json │ │ ├── 135001.json │ │ ├── 144.json │ │ ├── 158.json │ │ ├── 162.json │ │ ├── 164.json │ │ ├── 166.json │ │ ├── 17-wo-category.json │ │ ├── 17.json │ │ ├── 170.json │ │ ├── 200.json │ │ ├── 201.json │ │ ├── 27.json │ │ └── 54.json ├── settings.py ├── test_base.py ├── test_country.py ├── test_currency.py ├── test_models.py ├── test_partner.py ├── test_product.py └── test_sale.py └── wizard ├── __init__.py ├── export_catalog.py ├── export_catalog.xml ├── export_inventory.py ├── export_inventory.xml ├── export_orders.py ├── export_orders.xml ├── export_shipment_status.py ├── export_shipment_status.xml ├── export_tier_prices.py ├── export_tier_prices.xml ├── import_carriers.py ├── import_carriers.xml ├── import_catalog.py ├── import_catalog.xml ├── import_orders.py ├── import_orders.xml ├── import_websites.py ├── import_websites.xml ├── test_connection.py ├── test_connection.xml ├── update_catalog.py └── update_catalog.xml /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | - "2.7" 4 | virtualenv: 5 | system_site_packages: true 6 | services: 7 | - postgresql 8 | before_script: 9 | - psql -c 'create database myapp_test;' -U postgres 10 | before_install: 11 | - sudo apt-get install python-lxml 12 | install: 13 | # OpenERP does not specify the version of pyparsing and the later 14 | # version only work with py3k 15 | - pip install "pyparsing==1.5.7" 16 | - pip install flake8 17 | - ./install_nightly.sh 18 | - pip install distribute 19 | - python setup.py install 20 | script: 21 | - python setup.py test_on_travis 22 | - flake8 . 23 | notifications: 24 | email: 25 | - ci-notify@openlabs.co.in 26 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | Magento OpenERP Integration 2 | =========================== 3 | 4 | .. image:: https://travis-ci.org/openlabs/magento_integration.png?branch=develop 5 | :target: https://travis-ci.org/openlabs/magento_integration 6 | 7 | This is a stable version of Magento OpenERP connector II, combining 8 | the latest stable versions of the e-commerce platform and ERP software, 9 | Magento 1.7 and OpenERP 7 respectively. This connector eradicates the 10 | earlier problems of the Magento OpenERP connector as the code is written 11 | from scratch. The Magento OpenERP connector is fully tested automatically 12 | for regressions. The developers at Openlabs have followed the policy of 13 | ‘Simple is Beautiful’ for the creation of this connector. 14 | 15 | .. image:: static/src/img/icon.png 16 | 17 | The Magento OpenERP connector was created out of respect for the customers 18 | of Openlabs and the users around the world, who were left stranded after 19 | the release of OpenERP version 7. The primary motive was to create a simpler, 20 | faster and clean connector unlike the previous ones. The connector is available 21 | free of charge. 22 | 23 | 24 | Features of Magento OpenERP connector 25 | -------------------------------------- 26 | 27 | * Multiple Magento instance architecture: The existing structure has been 28 | retained with each instance having multiple websites with each website 29 | comprising of different stores leading to a group of store views. The 30 | users can import these Magento instance parameters to OpenERP with the 31 | assistance of this connector. 32 | * Import and Export: Users can import catalogues, categories and products 33 | along with customers’ information and addresses. The Magento OpenERP 34 | connector imports every order status including the cancelled orders. 35 | The other imported orders are pending, enqueued, started, done or 36 | failed. The connector also creates a contact if it did not exist earlier. 37 | * Synchronization: The Magento OpenERP connector processes the import of 38 | orders on the basis of the order status in OpenERP, thus synchronising 39 | the information across the e-commerce and ERP platforms. 40 | * No Duplication: One individual task is created for each record to import 41 | in OpenERP for sales order, customer, product and other categories thus 42 | reducing data redundancy. 43 | * Fully Tested: The connector and the integration is completely scrutinized 44 | by unit test cases which check the functionality with different order and 45 | product types and other combinations. The testing ensures that the 46 | connector behavior is predictable and active development does not hinder 47 | the working features. You can 48 | `see it `_ for yourself. 49 | 50 | 51 | New features and functionality to be implemented have been added to 52 | our `issues list `_. 53 | 54 | Contributions and suggestions to improve the connector are always welcome, 55 | courtesy to the truly 100% Open Source nature of the software. 56 | 57 | 58 | Website 59 | ------- 60 | 61 | Visit the `Openlabs website `_ for latest news 62 | and downloads. You can also follow us on Twitter 63 | `@openlabsindia `_ to receive updates on 64 | releases. 65 | 66 | Support 67 | ------- 68 | 69 | If you have any questions or problems, please report an 70 | `issue `_. 71 | 72 | You can also reach us at `support@openlabs.co.in `_ 73 | or talk to a human at +1 813 793 6736. Please do not email any of the Openlabs 74 | developers directly with issues or questions as you're more likely to get an 75 | answer if you create a github issue or email us at the above address. 76 | 77 | You can also mail us your ideas and suggestions about any changes. 78 | 79 | Professional Support 80 | -------------------- 81 | 82 | This module is professionally supported by `Openlabs `_. 83 | If you are looking for on-site teaching or consulting support, contact our 84 | `sales `_ team. 85 | 86 | Alternatively, you could purchase a support pack for help in configuring and 87 | setting up the connector. `View details `_ 88 | 89 | About Us 90 | -------- 91 | 92 | Openlabs specialises in building business applications for small and medium 93 | enterprises. Our previous efforts includes nereid, Poweremail, Magento 94 | OpenERP integration & Callisto modules for OpenERP. Openlabs is committed 95 | to creating innovations in the Open Source sphere. 96 | -------------------------------------------------------------------------------- /__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: UTF-8 -*- 2 | ''' 3 | magento-integration 4 | 5 | :copyright: (c) 2013 by Openlabs Technologies & Consulting (P) LTD 6 | :license: AGPLv3, see LICENSE for more details 7 | ''' 8 | # flake8: noqa 9 | import magento_ 10 | import country 11 | import product 12 | import partner 13 | import bom 14 | import account 15 | import sale 16 | import currency 17 | 18 | import wizard 19 | -------------------------------------------------------------------------------- /__openerp__.py: -------------------------------------------------------------------------------- 1 | # -*- encoding: utf-8 -*- 2 | 3 | { 4 | 'name': 'Magento Integration', 5 | 'author': 'Openlabs Technologies & Consulting Pvt Ltd.', 6 | 'version': '2.0dev', 7 | 'depends': [ 8 | 'base', 9 | 'sale', 10 | 'mrp', 11 | 'delivery', 12 | ], 13 | 'category': 'Specific Industry Applications', 14 | 'summary': 'Magento Integration', 15 | 'description': """ 16 | This module integrates OpenERP with magento. 17 | ============================================ 18 | 19 | This will import the following: 20 | 21 | * Product categories 22 | * Products 23 | * Customers 24 | * Addresses 25 | * Orders 26 | """, 27 | 'data': [ 28 | 'wizard/test_connection.xml', 29 | 'wizard/import_websites.xml', 30 | 'wizard/import_catalog.xml', 31 | 'wizard/update_catalog.xml', 32 | 'wizard/import_orders.xml', 33 | 'wizard/export_orders.xml', 34 | 'wizard/import_carriers.xml', 35 | 'wizard/export_inventory.xml', 36 | 'wizard/export_tier_prices.xml', 37 | 'wizard/export_shipment_status.xml', 38 | 'wizard/export_catalog.xml', 39 | 'product.xml', 40 | 'magento.xml', 41 | 'sale.xml', 42 | 'account.xml', 43 | 'security/ir.model.access.csv', 44 | ], 45 | 'css': [], 46 | 'images': [], 47 | 'demo': [], 48 | 'installable': True, 49 | 'application': True, 50 | } 51 | -------------------------------------------------------------------------------- /account.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | account 4 | 5 | Account 6 | 7 | :copyright: (c) 2013 by Openlabs Technologies & Consulting (P) Limited 8 | :license: AGPLv3, see LICENSE for more details. 9 | """ 10 | from openerp.osv import osv, fields 11 | 12 | 13 | class Tax(osv.Model): 14 | "Account Tax" 15 | _inherit = 'account.tax' 16 | 17 | _columns = { 18 | 'used_on_magento': fields.boolean('Is this tax used on magento ?'), 19 | 'apply_on_magento_shipping': fields.boolean( 20 | 'Is this tax applied on magento shipping ?', 21 | help='This tax should have *Tax Included in Price* set as True' 22 | ) 23 | } 24 | 25 | def check_apply_on_magento_shipping(self, cursor, user, ids, context=None): 26 | """ 27 | Checks that only one tax has been chosen to be applied on magento 28 | shipping 29 | 30 | :param cursor: Database cursor 31 | :param user: ID of current user 32 | :param ids: IDs of records 33 | :param context: Application context 34 | :return: True or False 35 | """ 36 | if len(self.search(cursor, user, [ 37 | ('apply_on_magento_shipping', '=', True) 38 | ], context=context)) > 1: 39 | return False 40 | return True 41 | 42 | _constraints = [ 43 | ( 44 | check_apply_on_magento_shipping, 45 | 'Error: Only 1 tax can be chosen to apply on magento shipping', 46 | [] 47 | ) 48 | ] 49 | 50 | def onchange_apply_on_magento_shipping( 51 | self, cursor, user, ids, apply_on_magento_shipping, context=None 52 | ): 53 | """Set *Tax Included in Price* set as True 54 | """ 55 | return {'value': {'price_include': apply_on_magento_shipping}} 56 | 57 | Tax() 58 | -------------------------------------------------------------------------------- /account.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | account.tax.form.inherit 7 | account.tax 8 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | api 4 | 5 | Extends magento python api 6 | 7 | :copyright: (c) 2013 by Openlabs Technologies & Consulting (P) Limited 8 | :license: BSD, see LICENSE for more details. 9 | """ 10 | from magento.api import API 11 | 12 | 13 | class Core(API): 14 | """ 15 | This API extends the API for the custom API implementation 16 | for the magento extension 17 | """ 18 | 19 | __slots__ = () 20 | 21 | def websites(self): 22 | """ 23 | Returns list of all websites 24 | """ 25 | return self.call('ol_websites.list', []) 26 | 27 | def stores(self, filters=None): 28 | """ 29 | Returns list of all group store 30 | 31 | :param filters: Dictionary of filters. 32 | 33 | Format : 34 | {:{:}} 35 | Example : 36 | {'website_id':{'=':'1'}} 37 | :return: List of Dictionaries 38 | """ 39 | return self.call('ol_groups.list', [filters]) 40 | 41 | def store_views(self, filters=None): 42 | """ 43 | Returns list of all store views 44 | 45 | :param filters: Dictionary of filters. 46 | 47 | Format : 48 | {:{:}} 49 | Example : 50 | {'website_id':{'=':'1'}} 51 | :return: List of Dictionaries 52 | """ 53 | return self.call('ol_storeviews.list', [filters]) 54 | 55 | 56 | class OrderConfig(API): 57 | ''' 58 | Getting Order Configuration from magento. 59 | ''' 60 | 61 | def get_states(self): 62 | """ 63 | Get states of orders 64 | 65 | :return: dictionary of all states. 66 | Format : 67 | {: } 68 | Example : 69 | { 'canceled': 'Canceled', 70 | 'closed': 'Closed', 71 | 'holded': 'On Hold', 72 | 'pending_payment': 'Pending Payment' 73 | } 74 | """ 75 | return self.call('sales_order.get_order_states', []) 76 | 77 | def get_shipping_methods(self): 78 | """ 79 | Get available shipping methods. 80 | 81 | :return: List of dictionaries of all available shipping method. 82 | Example : 83 | [ 84 | {'code': 'flatrate', 'label': 'Flat Rate'}, 85 | {'code': 'tablerate', 'label': 'Best Way'}, 86 | ... 87 | ] 88 | """ 89 | return self.call('sales_order.shipping_methods', []) 90 | -------------------------------------------------------------------------------- /bom.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | bom 4 | 5 | BoM 6 | 7 | :copyright: (c) 2013 by Openlabs Technologies & Consulting (P) Limited 8 | :license: AGPLv3, see LICENSE for more details. 9 | """ 10 | from openerp.osv import osv 11 | 12 | 13 | class BoM(osv.Model): 14 | """Bill of material 15 | """ 16 | _inherit = 'mrp.bom' 17 | 18 | def identify_boms(self, order_data): 19 | """Create a dict of bundle product data for use in creation of bom 20 | 21 | :param order_data: Order data sent from magento 22 | :return: Dictionary in format 23 | { 24 | : { 25 | 'bundle': , 26 | 'components': [, ] 27 | } 28 | } 29 | """ 30 | bundles = {} 31 | 32 | # Identify all the bundles in the order 33 | for item in order_data['items']: 34 | # Iterate over each item in order items 35 | if item['product_type'] == 'bundle' and not item['parent_item_id']: 36 | # If product_type is bundle and does not have a parent(obvious) 37 | # then create a new entry in bundle_products 38 | # .. note:: item_id is the unique ID of each order line 39 | bundles[item['item_id']] = {'bundle': item, 'components': []} 40 | 41 | # Identify and add components 42 | for item in order_data['items']: 43 | if item['product_type'] != 'bundle' and \ 44 | 'bundle_option' in item['product_options'] and \ 45 | item['parent_item_id']: 46 | 47 | bundles[item['parent_item_id']]['components'].append(item) 48 | 49 | return bundles 50 | 51 | def find_or_create_bom_for_magento_bundle( 52 | self, cursor, user, order_data, context 53 | ): 54 | """Find or create a BoM for bundle product from the data sent in 55 | magento order 56 | 57 | :param cursor: Database cursor 58 | :param user: ID of current user 59 | :param order_data: Order Data from magento 60 | :param context: Application context 61 | :return: Found or created BoM's browse record 62 | """ 63 | uom_obj = self.pool.get('product.uom') 64 | product_obj = self.pool.get('product.product') 65 | 66 | identified_boms = self.identify_boms(order_data) 67 | 68 | if not identified_boms: 69 | return 70 | 71 | for item_id, data in identified_boms.iteritems(): 72 | bundle_product = product_obj.find_or_create_using_magento_id( 73 | cursor, user, data['bundle']['product_id'], context=context 74 | ) 75 | # It contains a list of tuples, in which the first element is the 76 | # product browse record and second is its quantity in the BoM 77 | child_products = [( 78 | product_obj.find_or_create_using_magento_id( 79 | cursor, user, each['product_id'], context=context 80 | ), ( 81 | float(each['qty_ordered']) / 82 | float(data['bundle']['qty_ordered']) 83 | ) 84 | ) for each in data['components']] 85 | 86 | # Here we match the sets of BoM components for equality 87 | # Each set contains tuples or product id and quantity of that 88 | # product in the BoM 89 | # If everything for a BoM matches, then we dont create a new one 90 | # and use this BoM itself 91 | # XXX This might eventually have issues because of rounding 92 | # in quantity 93 | for bom in bundle_product.bom_ids: 94 | existing_bom_set = set([ 95 | (line.product_id.id, line.product_qty) 96 | for line in bom.bom_lines 97 | ]) 98 | new_bom_set = set([ 99 | (product.id, qty) for product, qty in child_products 100 | ]) 101 | if existing_bom_set == new_bom_set: 102 | break 103 | else: 104 | # No matching BoM found, create a new one 105 | unit, = uom_obj.search( 106 | cursor, user, [('name', '=', 'Unit(s)')], context=context 107 | ) 108 | bom_id = self.create(cursor, user, { 109 | 'name': bundle_product.name, 110 | 'code': bundle_product.default_code, 111 | 'type': 'phantom', 112 | 'product_id': bundle_product.id, 113 | 'product_uom': unit, 114 | 'bom_lines': [(0, 0, { 115 | 'name': product.name, 116 | 'code': product.default_code, 117 | 'product_id': product.id, 118 | 'product_uom': unit, 119 | 'product_qty': quantity, 120 | }) for product, quantity in child_products] 121 | }) 122 | bom = self.browse(cursor, user, bom_id, context=context) 123 | 124 | return bom 125 | -------------------------------------------------------------------------------- /country.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | country 4 | 5 | Country 6 | 7 | :copyright: (c) 2013 by Openlabs Technologies & Consulting (P) Limited 8 | :license: AGPLv3, see LICENSE for more details. 9 | """ 10 | from openerp.osv import osv 11 | from openerp.tools.translate import _ 12 | import pycountry 13 | 14 | 15 | class Country(osv.osv): 16 | "Country" 17 | _inherit = 'res.country' 18 | 19 | def search_using_magento_code(self, cursor, user, code, context): 20 | """ 21 | Searches for country with given magento code. 22 | 23 | :param cursor: Database cursor 24 | :param user: ID of current user 25 | :param code: ISO code of country 26 | :param context: Application context 27 | :return: Browse record of country if found else raises error 28 | """ 29 | country_ids = self.search( 30 | cursor, user, [('code', '=', code)], context=context 31 | ) 32 | 33 | if not country_ids: 34 | raise osv.except_osv( 35 | _('Not Found!'), 36 | _('Country with ISO code %s does not exists.' % code) 37 | ) 38 | 39 | country = self.browse( 40 | cursor, user, country_ids[0], context=context 41 | ) 42 | return country 43 | 44 | 45 | class CountryState(osv.Model): 46 | "Country State" 47 | _inherit = 'res.country.state' 48 | 49 | def find_or_create_using_magento_region( 50 | self, cursor, user, country, region, context 51 | ): 52 | """ 53 | Looks for the state whose `region` is sent by magento in `country` 54 | If state already exists, return that else create a new one and 55 | return 56 | 57 | :param cursor: Database cursor 58 | :param user: ID of current user 59 | :param country: Browse record of country 60 | :param region: Name of state from magento 61 | :param context: Application context 62 | :return: Browse record of record created/found 63 | """ 64 | state = self.find_using_magento_region( 65 | cursor, user, country, region, context 66 | ) 67 | if not state: 68 | state = self.create_using_magento_region( 69 | cursor, user, country, region, context 70 | ) 71 | 72 | return state 73 | 74 | def find_using_magento_region( 75 | self, cursor, user, country, region, context 76 | ): 77 | """ 78 | Looks for the state whose `region` is sent by magento 79 | If state already exists, return that 80 | 81 | :param cursor: Database cursor 82 | :param user: ID of current user 83 | :param country: Browse record of country 84 | :param region: Name of state from magento 85 | :param context: Application context 86 | :return: Browse record of record found 87 | """ 88 | state_ids = self.search( 89 | cursor, user, [ 90 | ('name', 'ilike', region), 91 | ('country_id', '=', country.id), 92 | ], context=context 93 | ) 94 | 95 | return state_ids and self.browse( 96 | cursor, user, state_ids[0], context=context 97 | ) or None 98 | 99 | def create_using_magento_region( 100 | self, cursor, user, country, region, context 101 | ): 102 | """ 103 | Creates state for the region sent by magento 104 | 105 | :param cursor: Database cursor 106 | :param user: ID of current user 107 | :param country: Browse record of country 108 | :param region: Name of state from magento 109 | :param context: Application context 110 | :return: Browse record of record created 111 | """ 112 | code = None 113 | try: 114 | for subdivision in pycountry.subdivisions.get( 115 | country_code=country.code): 116 | if subdivision.name.upper() == region.upper(): 117 | code = ''.join(list(region)[:3]).upper() 118 | break 119 | if not code: 120 | if country.code == 'US': 121 | code = 'APO' 122 | else: 123 | code = ''.join(list(region)[:3]).upper() 124 | except KeyError: 125 | raise osv.except_osv( 126 | _('Country Not Found!'), 127 | _('No country found with code %s' % country.code) 128 | ) 129 | finally: 130 | state_id = self.create( 131 | cursor, user, { 132 | 'name': region, 133 | 'country_id': country.id, 134 | 'code': code, 135 | }, context=context 136 | ) 137 | 138 | return self.browse(cursor, user, state_id, context=context) 139 | -------------------------------------------------------------------------------- /currency.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | currency 4 | 5 | Currency 6 | 7 | :copyright: (c) 2013 by Openlabs Technologies & Consulting (P) Limited 8 | :license: AGPLv3, see LICENSE for more details. 9 | """ 10 | from openerp.osv import osv 11 | from openerp.tools.translate import _ 12 | 13 | 14 | class Currency(osv.osv): 15 | "Currency" 16 | _inherit = 'res.currency' 17 | 18 | def search_using_magento_code(self, cursor, user, code, context): 19 | """ 20 | Searches for currency with given magento code. 21 | 22 | :param cursor: Database cursor 23 | :param user: ID of current user 24 | :param code: Currency code 25 | :param context: Application context 26 | :return: Browse record of currency if found else raises error 27 | """ 28 | currency_ids = self.search( 29 | cursor, user, [ 30 | ('name', '=', code) 31 | ], context=context 32 | ) 33 | 34 | if not currency_ids: 35 | raise osv.except_osv( 36 | _('Not Found!'), 37 | _('Currency with code %s does not exists.' % code) 38 | ) 39 | 40 | currency = self.browse( 41 | cursor, user, currency_ids[0], context=context 42 | ) 43 | return currency 44 | -------------------------------------------------------------------------------- /doc/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | PAPER = 8 | BUILDDIR = build 9 | 10 | # User-friendly check for sphinx-build 11 | ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) 12 | $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) 13 | endif 14 | 15 | # Internal variables. 16 | PAPEROPT_a4 = -D latex_paper_size=a4 17 | PAPEROPT_letter = -D latex_paper_size=letter 18 | ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source 19 | # the i18n builder cannot share the environment and doctrees with the others 20 | I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source 21 | 22 | .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext 23 | 24 | help: 25 | @echo "Please use \`make ' where is one of" 26 | @echo " html to make standalone HTML files" 27 | @echo " dirhtml to make HTML files named index.html in directories" 28 | @echo " singlehtml to make a single large HTML file" 29 | @echo " pickle to make pickle files" 30 | @echo " json to make JSON files" 31 | @echo " htmlhelp to make HTML files and a HTML help project" 32 | @echo " qthelp to make HTML files and a qthelp project" 33 | @echo " devhelp to make HTML files and a Devhelp project" 34 | @echo " epub to make an epub" 35 | @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" 36 | @echo " latexpdf to make LaTeX files and run them through pdflatex" 37 | @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" 38 | @echo " text to make text files" 39 | @echo " man to make manual pages" 40 | @echo " texinfo to make Texinfo files" 41 | @echo " info to make Texinfo files and run them through makeinfo" 42 | @echo " gettext to make PO message catalogs" 43 | @echo " changes to make an overview of all changed/added/deprecated items" 44 | @echo " xml to make Docutils-native XML files" 45 | @echo " pseudoxml to make pseudoxml-XML files for display purposes" 46 | @echo " linkcheck to check all external links for integrity" 47 | @echo " doctest to run all doctests embedded in the documentation (if enabled)" 48 | 49 | clean: 50 | rm -rf $(BUILDDIR)/* 51 | 52 | html: 53 | $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html 54 | @echo 55 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." 56 | 57 | dirhtml: 58 | $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml 59 | @echo 60 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." 61 | 62 | singlehtml: 63 | $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml 64 | @echo 65 | @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." 66 | 67 | pickle: 68 | $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle 69 | @echo 70 | @echo "Build finished; now you can process the pickle files." 71 | 72 | json: 73 | $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json 74 | @echo 75 | @echo "Build finished; now you can process the JSON files." 76 | 77 | htmlhelp: 78 | $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp 79 | @echo 80 | @echo "Build finished; now you can run HTML Help Workshop with the" \ 81 | ".hhp project file in $(BUILDDIR)/htmlhelp." 82 | 83 | qthelp: 84 | $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp 85 | @echo 86 | @echo "Build finished; now you can run "qcollectiongenerator" with the" \ 87 | ".qhcp project file in $(BUILDDIR)/qthelp, like this:" 88 | @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/MagentoOpenERPIntegration.qhcp" 89 | @echo "To view the help file:" 90 | @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/MagentoOpenERPIntegration.qhc" 91 | 92 | devhelp: 93 | $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp 94 | @echo 95 | @echo "Build finished." 96 | @echo "To view the help file:" 97 | @echo "# mkdir -p $$HOME/.local/share/devhelp/MagentoOpenERPIntegration" 98 | @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/MagentoOpenERPIntegration" 99 | @echo "# devhelp" 100 | 101 | epub: 102 | $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub 103 | @echo 104 | @echo "Build finished. The epub file is in $(BUILDDIR)/epub." 105 | 106 | latex: 107 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 108 | @echo 109 | @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." 110 | @echo "Run \`make' in that directory to run these through (pdf)latex" \ 111 | "(use \`make latexpdf' here to do that automatically)." 112 | 113 | latexpdf: 114 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 115 | @echo "Running LaTeX files through pdflatex..." 116 | $(MAKE) -C $(BUILDDIR)/latex all-pdf 117 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." 118 | 119 | latexpdfja: 120 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex 121 | @echo "Running LaTeX files through platex and dvipdfmx..." 122 | $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja 123 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." 124 | 125 | text: 126 | $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text 127 | @echo 128 | @echo "Build finished. The text files are in $(BUILDDIR)/text." 129 | 130 | man: 131 | $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man 132 | @echo 133 | @echo "Build finished. The manual pages are in $(BUILDDIR)/man." 134 | 135 | texinfo: 136 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo 137 | @echo 138 | @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." 139 | @echo "Run \`make' in that directory to run these through makeinfo" \ 140 | "(use \`make info' here to do that automatically)." 141 | 142 | info: 143 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo 144 | @echo "Running Texinfo files through makeinfo..." 145 | make -C $(BUILDDIR)/texinfo info 146 | @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." 147 | 148 | gettext: 149 | $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale 150 | @echo 151 | @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." 152 | 153 | changes: 154 | $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes 155 | @echo 156 | @echo "The overview file is in $(BUILDDIR)/changes." 157 | 158 | linkcheck: 159 | $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck 160 | @echo 161 | @echo "Link check complete; look for any errors in the above output " \ 162 | "or in $(BUILDDIR)/linkcheck/output.txt." 163 | 164 | doctest: 165 | $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest 166 | @echo "Testing of doctests in the sources finished, look at the " \ 167 | "results in $(BUILDDIR)/doctest/output.txt." 168 | 169 | xml: 170 | $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml 171 | @echo 172 | @echo "Build finished. The XML files are in $(BUILDDIR)/xml." 173 | 174 | pseudoxml: 175 | $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml 176 | @echo 177 | @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." 178 | -------------------------------------------------------------------------------- /doc/source/_images/Account_data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Account_data.png -------------------------------------------------------------------------------- /doc/source/_images/Cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Cancel.png -------------------------------------------------------------------------------- /doc/source/_images/Cancel_order.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Cancel_order.png -------------------------------------------------------------------------------- /doc/source/_images/Cancelled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Cancelled.png -------------------------------------------------------------------------------- /doc/source/_images/Continue_import_orders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Continue_import_orders.png -------------------------------------------------------------------------------- /doc/source/_images/Export_orders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Export_orders.png -------------------------------------------------------------------------------- /doc/source/_images/Import_catalog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Import_catalog.png -------------------------------------------------------------------------------- /doc/source/_images/Import_orders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Import_orders.png -------------------------------------------------------------------------------- /doc/source/_images/Import_website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Import_website.png -------------------------------------------------------------------------------- /doc/source/_images/Imported_products.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Imported_products.png -------------------------------------------------------------------------------- /doc/source/_images/Install_magento.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Install_magento.png -------------------------------------------------------------------------------- /doc/source/_images/Login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Login.png -------------------------------------------------------------------------------- /doc/source/_images/Products.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Products.png -------------------------------------------------------------------------------- /doc/source/_images/Sale_order.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Sale_order.png -------------------------------------------------------------------------------- /doc/source/_images/Sale_order_openerp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Sale_order_openerp.png -------------------------------------------------------------------------------- /doc/source/_images/Sale_orders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Sale_orders.png -------------------------------------------------------------------------------- /doc/source/_images/Sales_orders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Sales_orders.png -------------------------------------------------------------------------------- /doc/source/_images/Sales_orders_order.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Sales_orders_order.png -------------------------------------------------------------------------------- /doc/source/_images/Store_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Store_view.png -------------------------------------------------------------------------------- /doc/source/_images/Website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Website.png -------------------------------------------------------------------------------- /doc/source/_images/Website_store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/Website_store.png -------------------------------------------------------------------------------- /doc/source/_images/confirm-key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/confirm-key.png -------------------------------------------------------------------------------- /doc/source/_images/extension-key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/extension-key.png -------------------------------------------------------------------------------- /doc/source/_images/goto-magento-connect-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/goto-magento-connect-manager.png -------------------------------------------------------------------------------- /doc/source/_images/import website.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/import website.png -------------------------------------------------------------------------------- /doc/source/_images/loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/loading.png -------------------------------------------------------------------------------- /doc/source/_images/login-magento-connect-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/login-magento-connect-manager.png -------------------------------------------------------------------------------- /doc/source/_images/magento-connect-manager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/magento-connect-manager.png -------------------------------------------------------------------------------- /doc/source/_images/magento_tax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/magento_tax.png -------------------------------------------------------------------------------- /doc/source/_images/module-installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/module-installed.png -------------------------------------------------------------------------------- /doc/source/_images/openerp-shipping-tax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/openerp-shipping-tax.png -------------------------------------------------------------------------------- /doc/source/_images/openerp_tax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/openerp_tax.png -------------------------------------------------------------------------------- /doc/source/_images/save_magento_instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/save_magento_instance.png -------------------------------------------------------------------------------- /doc/source/_images/search_magento.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/search_magento.png -------------------------------------------------------------------------------- /doc/source/_images/set-to-beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/set-to-beta.png -------------------------------------------------------------------------------- /doc/source/_images/terminal-refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/terminal-refresh.png -------------------------------------------------------------------------------- /doc/source/_images/test_connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openlabs/magento_integration/f661c776973868c0414007791ae6a0b069b1038f/doc/source/_images/test_connection.png -------------------------------------------------------------------------------- /doc/source/about_us.rst: -------------------------------------------------------------------------------- 1 | About Openlabs Technologies and Consulting Private Limited 2 | ========================================================== 3 | 4 | Openlabs Technologies and Consulting Private Limited is a global 5 | Information Technology and Management Consulting Company that helps 6 | small and medium businesses achieve high efficiency with cost effective 7 | business solutions. With customers and partners in four continents, 8 | Openlabs designs and delivers technology enabled innovative business 9 | solutions that addresses the needs of small and medium enterprises. Openlabs 10 | provides end to end solutions to businessess using a range of Free and 11 | Opensource Solutions (FOSS) Implemented by a team of highly skilled workforce 12 | comprising of domain and business experts. 13 | 14 | The software division of Openlabs is a specialised division of Rapid 15 | Application Development of business application with a proven expertise 16 | in OpenERP (and OpenObject). Tryton and Django. 17 | 18 | 19 | Technical Support 20 | """"""""""""""""" 21 | 22 | OPENLABS TECHNOLOGIES & CONSULTING (P) LIMITED 23 | 24 | SDF L-12A, Noida Special Economic Zone (NSEZ), Phase II Noida-201306, U.P, India 25 | 26 | Regd. Office: 2J, Skyline Daffodil, Petta, Thrippunithura, Kochi-682301, Kerala, India 27 | 28 | w: `www.openlabs.co.in `_ | t: +1 813 793 6736 29 | -------------------------------------------------------------------------------- /doc/source/conf.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Flake8: noqa 3 | # 4 | # Magento OpenERP Integration documentation build configuration file, created by 5 | # sphinx-quickstart on Tue Jul 2 18:16:51 2013. 6 | # 7 | # This file is execfile()d with the current directory set to its containing dir. 8 | # 9 | # Note that not all possible configuration values are present in this 10 | # autogenerated file. 11 | # 12 | # All configuration values have a default; values that are commented out 13 | # serve to show the default. 14 | 15 | import sys, os 16 | 17 | # If extensions (or modules to document with autodoc) are in another directory, 18 | # add these directories to sys.path here. If the directory is relative to the 19 | # documentation root, use os.path.abspath to make it absolute, like shown here. 20 | #sys.path.insert(0, os.path.abspath('.')) 21 | 22 | # -- General configuration ----------------------------------------------------- 23 | 24 | # If your documentation needs a minimal Sphinx version, state it here. 25 | #needs_sphinx = '1.0' 26 | 27 | # Add any Sphinx extension module names here, as strings. They can be extensions 28 | # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. 29 | extensions = [ 30 | 'sphinx.ext.autodoc', 31 | 'sphinx.ext.doctest', 32 | 'sphinx.ext.coverage', 33 | 'sphinx.ext.pngmath', 34 | 'sphinx.ext.ifconfig', 35 | ] 36 | 37 | # Add any paths that contain templates here, relative to this directory. 38 | templates_path = ['_templates'] 39 | 40 | # The suffix of source filenames. 41 | source_suffix = '.rst' 42 | 43 | # The encoding of source files. 44 | #source_encoding = 'utf-8-sig' 45 | 46 | # The master toctree document. 47 | master_doc = 'index' 48 | 49 | # General information about the project. 50 | project = u'Magento OpenERP Integration' 51 | copyright = u'2013, Openlabs Technologies & Consulting (P) Limited' 52 | 53 | # The version info for the project you're documenting, acts as replacement for 54 | # |version| and |release|, also used in various other places throughout the 55 | # built documents. 56 | # 57 | # The short X.Y version. 58 | version = release = eval(open('../../__openerp__.py').read())['version'] 59 | 60 | # The language for content autogenerated by Sphinx. Refer to documentation 61 | # for a list of supported languages. 62 | #language = None 63 | 64 | # There are two options for replacing |today|: either, you set today to some 65 | # non-false value, then it is used: 66 | #today = '' 67 | # Else, today_fmt is used as the format for a strftime call. 68 | #today_fmt = '%B %d, %Y' 69 | 70 | # List of patterns, relative to source directory, that match files and 71 | # directories to ignore when looking for source files. 72 | exclude_patterns = [] 73 | 74 | # The reST default role (used for this markup: `text`) to use for all documents. 75 | #default_role = None 76 | 77 | # If true, '()' will be appended to :func: etc. cross-reference text. 78 | #add_function_parentheses = True 79 | 80 | # If true, the current module name will be prepended to all description 81 | # unit titles (such as .. function::). 82 | #add_module_names = True 83 | 84 | # If true, sectionauthor and moduleauthor directives will be shown in the 85 | # output. They are ignored by default. 86 | #show_authors = False 87 | 88 | # The name of the Pygments (syntax highlighting) style to use. 89 | pygments_style = 'sphinx' 90 | 91 | # A list of ignored prefixes for module index sorting. 92 | #modindex_common_prefix = [] 93 | 94 | # If true, keep warnings as "system message" paragraphs in the built documents. 95 | #keep_warnings = False 96 | 97 | 98 | # -- Options for HTML output --------------------------------------------------- 99 | 100 | # The theme to use for HTML and HTML Help pages. 101 | 102 | # on_rtd is whether we are on readthedocs.org, this line of 103 | # code grabbed from docs.readthedocs.org 104 | # otherwise, readthedocs.org uses their theme by default, 105 | # so no need to specify it 106 | on_rtd = os.environ.get('READTHEDOCS', None) == 'True' 107 | 108 | if not on_rtd: # only import and set the theme if we're building docs locally 109 | try: 110 | import sphinx_rtd_theme 111 | except ImportError: 112 | print "Using default theme since sphinx_rtd_theme is not installed." 113 | print "To install use: pip install sphinx_rtd_theme" 114 | html_theme = 'default' 115 | else: 116 | html_theme = 'sphinx_rtd_theme' 117 | html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] 118 | 119 | # Theme options are theme-specific and customize the look and feel of a theme 120 | # further. For a list of options available for each theme, see the 121 | # documentation. 122 | #html_theme_options = {} 123 | 124 | # Add any paths that contain custom themes here, relative to this directory. 125 | #html_theme_path = [] 126 | 127 | # The name for this set of Sphinx documents. If None, it defaults to 128 | # " v documentation". 129 | #html_title = None 130 | 131 | # A shorter title for the navigation bar. Default is the same as html_title. 132 | #html_short_title = None 133 | 134 | # The name of an image file (relative to this directory) to place at the top 135 | # of the sidebar. 136 | #html_logo = None 137 | 138 | # The name of an image file (within the static path) to use as favicon of the 139 | # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 140 | # pixels large. 141 | #html_favicon = None 142 | 143 | # Add any paths that contain custom static files (such as style sheets) here, 144 | # relative to this directory. They are copied after the builtin static files, 145 | # so a file named "default.css" will overwrite the builtin "default.css". 146 | html_static_path = ['_static'] 147 | 148 | # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, 149 | # using the given strftime format. 150 | #html_last_updated_fmt = '%b %d, %Y' 151 | 152 | # If true, SmartyPants will be used to convert quotes and dashes to 153 | # typographically correct entities. 154 | #html_use_smartypants = True 155 | 156 | # Custom sidebar templates, maps document names to template names. 157 | #html_sidebars = {} 158 | 159 | # Additional templates that should be rendered to pages, maps page names to 160 | # template names. 161 | #html_additional_pages = {} 162 | 163 | # If false, no module index is generated. 164 | #html_domain_indices = True 165 | 166 | # If false, no index is generated. 167 | #html_use_index = True 168 | 169 | # If true, the index is split into individual pages for each letter. 170 | #html_split_index = False 171 | 172 | # If true, links to the reST sources are added to the pages. 173 | #html_show_sourcelink = True 174 | 175 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. 176 | #html_show_sphinx = True 177 | 178 | # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. 179 | #html_show_copyright = True 180 | 181 | # If true, an OpenSearch description file will be output, and all pages will 182 | # contain a tag referring to it. The value of this option must be the 183 | # base URL from which the finished HTML is served. 184 | #html_use_opensearch = '' 185 | 186 | # This is the file name suffix for HTML files (e.g. ".xhtml"). 187 | #html_file_suffix = None 188 | 189 | # Output file base name for HTML help builder. 190 | htmlhelp_basename = 'MagentoOpenERPIntegrationdoc' 191 | 192 | 193 | # -- Options for LaTeX output -------------------------------------------------- 194 | 195 | latex_elements = { 196 | # The paper size ('letterpaper' or 'a4paper'). 197 | #'papersize': 'letterpaper', 198 | 199 | # The font size ('10pt', '11pt' or '12pt'). 200 | #'pointsize': '10pt', 201 | 202 | # Additional stuff for the LaTeX preamble. 203 | #'preamble': '', 204 | } 205 | 206 | # Grouping the document tree into LaTeX files. List of tuples 207 | # (source start file, target name, title, author, documentclass [howto/manual]). 208 | latex_documents = [ 209 | ('index', 'MagentoOpenERPIntegration.tex', 210 | u'Magento OpenERP Integration Documentation', 211 | u'Openlabs Technologies \\& Consulting (P) Limited', 'manual'), 212 | ] 213 | 214 | # The name of an image file (relative to this directory) to place at the top of 215 | # the title page. 216 | #latex_logo = None 217 | 218 | # For "manual" documents, if this is true, then toplevel headings are parts, 219 | # not chapters. 220 | #latex_use_parts = False 221 | 222 | # If true, show page references after internal links. 223 | #latex_show_pagerefs = False 224 | 225 | # If true, show URL addresses after external links. 226 | #latex_show_urls = False 227 | 228 | # Documents to append as an appendix to all manuals. 229 | #latex_appendices = [] 230 | 231 | # If false, no module index is generated. 232 | #latex_domain_indices = True 233 | 234 | 235 | # -- Options for manual page output -------------------------------------------- 236 | 237 | # One entry per manual page. List of tuples 238 | # (source start file, name, description, authors, manual section). 239 | man_pages = [ 240 | ('index', 'magentoopenerpintegration', 241 | u'Magento OpenERP Integration Documentation', 242 | [u'Openlabs Technologies & Consulting (P) Limited'], 1) 243 | ] 244 | 245 | # If true, show URL addresses after external links. 246 | #man_show_urls = False 247 | 248 | 249 | # -- Options for Texinfo output ------------------------------------------------ 250 | 251 | # Grouping the document tree into Texinfo files. List of tuples 252 | # (source start file, target name, title, author, 253 | # dir menu entry, description, category) 254 | texinfo_documents = [ 255 | ('index', 'MagentoOpenERPIntegration', u'Magento OpenERP Integration Documentation', 256 | u'Openlabs Technologies & Consulting (P) Limited', 'MagentoOpenERPIntegration', 'One line description of project.', 257 | 'Miscellaneous'), 258 | ] 259 | 260 | # Documents to append as an appendix to all manuals. 261 | #texinfo_appendices = [] 262 | 263 | # If false, no module index is generated. 264 | #texinfo_domain_indices = True 265 | 266 | # How to display URL addresses: 'footnote', 'no', or 'inline'. 267 | #texinfo_show_urls = 'footnote' 268 | 269 | # If true, do not generate a @detailmenu in the "Top" node's menu. 270 | #texinfo_no_detailmenu = False 271 | -------------------------------------------------------------------------------- /doc/source/configuration.rst: -------------------------------------------------------------------------------- 1 | .. _configuration: 2 | 3 | Configuration 4 | ============= 5 | 6 | The module requires certain initial configuration to be done in 7 | `magento instance`_ to set the management tool. 8 | 9 | .. _magento instance: 10 | 11 | **Magento Instance** 12 | --------------------- 13 | 14 | Go to ``Magento >> Configuration`` and open *Magento Instances*. 15 | 16 | It refers to a magento installation identifiable via setting the API for 17 | ``Magento Site URL``, ``API User`` and ``API Password / Key`` 18 | 19 | 1. Create a new ``magento instance`` by clicking create. 20 | 21 | .. image:: _images/save_magento_instance.png 22 | :width: 800 23 | 24 | 2. Save the record with the ``Save`` button. 25 | 26 | 3. The Connection can be tested by clicking on ``Test Connection`` button 27 | shown on the top. 28 | 29 | 4. If the connection with magento is successful, a window will pop-up as 30 | shown below in the screenshot: 31 | 32 | .. image:: _images/test_connection.png 33 | :width: 800 34 | 35 | 5. Now the websites can be imported by clicking ``Import Websites`` button. 36 | This will import all the websites for this magento instance. It will 37 | also import all the stores and store views related to this website. By 38 | clicking this a new window will pop-up as shown below: 39 | 40 | .. image:: _images/Import_website.png 41 | :width: 800 42 | 43 | To know more about *Magento Website*, refer `website`_. 44 | 45 | .. _website: 46 | 47 | **Magento Website** 48 | ------------------- 49 | 50 | Go to ``Magento >> Configuration`` and open *Website*. 51 | 52 | A magento instance can have multiple websites. They act as *parents* of stores. 53 | A website consists of one or more stores. 54 | 55 | After Importing Websites, magento instance will get all the websites, it's 56 | stores and stores view. See below: 57 | 58 | .. image:: _images/Website.png 59 | :width: 800 60 | :align: center 61 | 62 | .. note:: 63 | A website must be unique in an magento instance 64 | 65 | 66 | .. _website store: 67 | 68 | **Website Store** 69 | ----------------- 70 | 71 | ``Magento Website Store or Store view groups`` 72 | 73 | Go to ``Magento >> Configuration`` and open *Website Store*. 74 | 75 | .. image:: _images/Website_store.png 76 | :width: 800 77 | 78 | Stores are ``children`` of websites. The visibility of products and categories 79 | is managed on magento at store level by specifying the root category on a store. 80 | The setup for root catalog on stores does not reflect on OpenERP as there 81 | is no functional benefit of doing so. 82 | 83 | .. note:: 84 | A store must be unique in a website 85 | 86 | Double click on any of of the website to import catalog by clicking on 87 | ``Import Catalog``. This will import all the product categories and 88 | products for this magento instance, see screenshot: 89 | 90 | .. image:: _images/Import_catalog.png 91 | :width: 800 92 | 93 | Press continue to import the catalog, and it will get all the products, see 94 | below screenshot: 95 | 96 | .. image:: _images/Products.png 97 | :width: 800 98 | 99 | .. note:: 100 | Each product in a website must be unique! 101 | 102 | .. _store view: 103 | 104 | **Store View** 105 | -------------- 106 | 107 | ``Magento Website Store View`` 108 | 109 | Go to ``Magento >> Configuration`` and open *Store View*. 110 | 111 | A store needs one or more store views to be browse-able in the front-end. It 112 | allows for multiple presentations of a store. Most implementations use store 113 | views for different languages. 114 | 115 | See screenshot below, it will get all the ``Store View`` with corresponding 116 | ``Store`` 117 | 118 | .. image:: _images/Store_view.png 119 | :width: 800 120 | -------------------------------------------------------------------------------- /doc/source/index.rst: -------------------------------------------------------------------------------- 1 | .. Magento OpenERP Integration documentation master file, created by 2 | sphinx-quickstart on Tue Jul 2 18:16:51 2013. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to Magento OpenERP Integration's documentation! 7 | ======================================================= 8 | 9 | Contents: 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | 14 | introduction.rst 15 | configuration.rst 16 | sale.rst 17 | about_us.rst 18 | 19 | Indices and tables 20 | ================== 21 | 22 | * :ref:`genindex` 23 | * :ref:`modindex` 24 | * :ref:`search` 25 | 26 | -------------------------------------------------------------------------------- /doc/source/introduction.rst: -------------------------------------------------------------------------------- 1 | Introduction 2 | ============ 3 | 4 | Magento is a feature-rich eCommerce platform built on open-source technology 5 | that provides online merchants with unprecedented flexibility and control over 6 | the look, content and functionality of their eCommerce store. 7 | 8 | A new bridge between OpenERP and Magento has been initiated by Openlabs team. 9 | This module allows synchronization of Magento with Open ERP. It 10 | supports Synchronization of Customers, Addresses, Product Categories, Products, 11 | Order Statuses, and Orders. 12 | 13 | See `Installation`_ first, then to login to the ERP, see `Login Instructions`_. 14 | 15 | .. _installation: 16 | 17 | Installation 18 | ------------ 19 | 20 | **Step 1: Installation of Magento core API extension** 21 | 22 | 1. After login to magento Admin Panel, go to 23 | 24 | System >> Magento Connect >> Magento Connect Manager 25 | 26 | .. image:: _images/goto-magento-connect-manager.png 27 | :width: 800 28 | :align: center 29 | 30 | 2. Key in your username and password, the same username and password you entered 31 | while login to magento 32 | 33 | .. image:: _images/login-magento-connect-manager.png 34 | :width: 800 35 | :align: center 36 | 37 | 3. Click on the second tab for settings and change preferred state to 'Beta'. 38 | (As of this date the plug-in is beta). Save your settings 39 | 40 | .. image:: _images/set-to-beta.png 41 | :width: 800 42 | :align: center 43 | 44 | .. note:: 45 | Default state is ``Stable``, change it to ``Beta``. 46 | 47 | 4. Go to first tab i.e., ``Extensions`` to install magento-connector, 48 | 49 | .. image:: _images/magento-connect-manager.png 50 | :width: 800 51 | :align: center 52 | 53 | 5. You need to paste the following extension key in the box to install: 54 | 55 | | **http://connect20.magentocommerce.com/community/Openlabs_OpenERPConnector** 56 | 57 | | 58 | 59 | .. image:: _images/extension-key.png 60 | :width: 800 61 | :align: center 62 | 63 | 6. Click Install, and wait for the module to be shown for installation 64 | 65 | .. image:: _images/loading.png 66 | :width: 800 67 | :align: center 68 | 69 | 7. Install it by clicking ``Proceed``, refer below screenshot: 70 | 71 | .. image:: _images/confirm-key.png 72 | :width: 800 73 | :align: center 74 | 75 | 8. The terminal shows the module installed, like shown below: 76 | 77 | .. image:: _images/terminal-refresh.png 78 | :width: 800 79 | :align: center 80 | 81 | 9. Now go to bottom of the page to check the installed module, where 82 | installed module is shown at the end of the list, see below: 83 | 84 | .. image:: _images/module-installed.png 85 | :width: 800 86 | :align: center 87 | 88 | 89 | **Step 2: Installation of Magento Integration [OpenERP module]** 90 | 91 | **Setup Python environment** 92 | 93 | 1. If not already installed by the default python installation, download the 94 | pycountry module and install it in your python directory 95 | 96 | 2. Download the `magento module `_ and 97 | install it in your python directory (*) 98 | 99 | (*) it seems that in linux installations, Magento Integration takes care of 100 | 'magento module' and installs it when running the Magento Integration setup 101 | (see .5 below). So you have to install it yourself only if you are working 102 | under windows systems because for some reason Magento Integration lacks to 103 | install the 'magento module' (to be confirmed by developers) 104 | 105 | (if your openERP is installed on a Windows systems, copy the above modules from 106 | YourPythonDir\\Lib\\site-packages to YourOpenErpDir\\Server\\server) 107 | 108 | **Downloading the magento_integration module** 109 | 110 | 1. The module source is available online and can be downloaded from 111 | `here `_. 112 | 113 | 2. The module can be downloaded as a `zip` or can be `cloned` by running 114 | 115 | .. code-block:: sh 116 | 117 | git clone https://github.com/openlabs/magento_integration.git 118 | 119 | OR 120 | 121 | .. code-block:: sh 122 | 123 | git clone git@github.com:openlabs/magento_integration.git 124 | 125 | 3. If the module is downloaded as a zip, extract the module which will 126 | give a directory. 127 | 128 | .. warning:: 129 | 130 | The directory name of the extracted contents should be 131 | `magento_integration`. The module will not work otherwise as OpenERP 132 | identifies modules by the folder name. 133 | 134 | If you are downloading the source from github, the folder name 135 | created includes the branch name like `magento_integration-develop`. 136 | 137 | 4. Copy this directory to **addons** folder of openerp. [Advanced 138 | users can update the addons path to add this module's parent folder in their 139 | server config file.] 140 | 141 | 5. From the module directory, use the setup.py script with the command: 142 | 143 | .. code-block:: sh 144 | 145 | python setup.py install 146 | 147 | **Installing the module in OpenERP database** 148 | 149 | .. _Login Instructions: 150 | 151 | Login to OpenERP 152 | ++++++++++++++++ 153 | 154 | To login to ERP using OpenERP client, you need to fill the following 155 | information: 156 | 157 | * Username: Ask your administrator for this information 158 | * Password: Ask your administrator for this information 159 | 160 | .. image:: _images/Login.png 161 | :width: 1000 162 | :align: center 163 | 164 | 1. Go to ``Settings``, click on *Update Modules List* shown under **Modules** 165 | 166 | 2. Search for magento module in the search bar at top-right side of the page. 167 | 168 | 3. Search returns the module named ``Magento Integration``, now click on 169 | the module to install, refer below screenshot: 170 | 171 | .. image:: _images/search_magento.png 172 | :width: 800 173 | :align: center 174 | 175 | 4. A new window is now open to install this, click on ``Install``. 176 | 177 | .. image:: _images/Install_magento.png 178 | :width: 800 179 | 180 | 5. On installing this a new window pop-ups asking ``Configure Accounting 181 | Data`` details for your taxes and chart of accounts. Enter the details 182 | and ``Continue``. 183 | 184 | .. image:: _images/Account_data.png 185 | :width: 800 186 | :align: center 187 | 188 | 6. Now magento is installed. To configure it, refer :ref:`configuration`. 189 | -------------------------------------------------------------------------------- /doc/source/sale.rst: -------------------------------------------------------------------------------- 1 | Create Sale Orders in Magento 2 | ============================= 3 | 4 | Sales orders in Magento can created from Magento Admin Panel with ``Create 5 | New Button`` shown in below `Create New Order`_ screenshot. 6 | 7 | .. _Create New Order: 8 | 9 | **Sale in Magento** 10 | 11 | .. image:: _images/Sales_orders.png 12 | :width: 800 13 | :align: center 14 | 15 | **Orders in Magento** 16 | 17 | .. image:: _images/Sales_orders_order.png 18 | :width: 800 19 | :align: center 20 | 21 | How it Works 22 | ============ 23 | 24 | This section explains how import and export of orders between OpenERP and 25 | Magento works. 26 | 27 | .. note:: 28 | All the data represented below is demo data and is only for demonstration 29 | purposes. 30 | 31 | Orders are imported as Sales 32 | ---------------------------- 33 | 34 | Orders placed in Magento Admin Panel are imported in OpenERP from ``Store 35 | View``. See below: 36 | 37 | .. image:: _images/Import_orders.png 38 | :width: 800 39 | :align: center 40 | 41 | An order in Magento has a number of entities related and they are 42 | imported in OpenERP as described below: 43 | 44 | * The Order is imported as a Sale. The sale in OpenERP can be identified by 45 | the Order Number which will be same as the order reference in Magento. 46 | Internally the matching is done using the ID of the order as returned by 47 | Magento. 48 | 49 | * The date on which it order is generated 50 | 51 | * The Customer who placed the order as a Sale. 52 | 53 | * The products, i.e., the products bought in the order by the customer are 54 | imported as Sale lines. The product in each of these lines is created as 55 | product in OpenERP, if it does not already exist. 56 | 57 | A window pop-ups to import all sale orders placed on this store view. 58 | Enter Continue, refer screenshot shown below: 59 | 60 | .. image:: _images/Continue_import_orders.png 61 | :width: 800 62 | :align: center 63 | 64 | **Order imported as Sales in OpenERP** 65 | 66 | | ``Sales >> Sales Orders`` 67 | 68 | .. image:: _images/Sale_order.png 69 | :width: 800 70 | :align: center 71 | 72 | .. note:: 73 | When the order import happens next time, the status of the orders in 74 | state in OpenERP will be updated if there is a change in state on Magento. 75 | 76 | **Product in OpenERP** 77 | 78 | .. image:: _images/Imported_products.png 79 | :width: 800 80 | :align: center 81 | 82 | The products bought in the order by the customer are imported. The product in 83 | each of the sale lines is created as product in OpenERP, if it does not already 84 | exist. 85 | 86 | Cancellation Of Sale Order 87 | -------------------------- 88 | 89 | Double click on the order from the sale order lines to edit it. To cancel 90 | the order click ``Cancel Order`` button as shown in below screenshot: 91 | 92 | .. image:: _images/Cancel.png 93 | :width: 1000 94 | :align: center 95 | 96 | Now state has been changed to cancelled, see below 97 | 98 | **Cancelled Sale Order** 99 | 100 | .. image:: _images/Cancelled.png 101 | :width: 800 102 | :align: center 103 | 104 | Now to export the changes to Magento, refer `export order`_ 105 | 106 | .. _export order: 107 | 108 | Exporting Order Status from OpenERP to Magento 109 | ---------------------------------------------- 110 | 111 | Once the order is processed in OpenERP, the shipping status of the order 112 | based on delivery is updated on Magento by Export Order. 113 | 114 | .. image:: _images/Export_orders.png 115 | :width: 800 116 | :align: center 117 | 118 | This will export order's status to magento for this store view 119 | 120 | * The status of orders which are imported in OpenERP will be exported to 121 | Magento as `Cancelled` once they are marked `Cancelled` by editing sale order 122 | from OpenERP. 123 | 124 | **Canceled order in Magento** 125 | 126 | .. image:: _images/Cancel_order.png 127 | :width: 800 128 | :align: center 129 | 130 | .. note:: 131 | This feature is currenctly available for Cancelled Orders 132 | 133 | 134 | Handle Taxes When Importing Orders From Magento 135 | ------------------------------------------------ 136 | 137 | Taxes are matched on openerp and magento using their rates. But there can be 138 | multiple taxes with same rates and hence lead to ambiguity. 139 | So a field is added to taxes in openerp which allows the user to tell the system 140 | that a tax can be used for rate matching with a tax on magento. 141 | 142 | See screenshot below: 143 | 144 | .. _openerp-tax: 145 | .. image:: _images/openerp_tax.png 146 | :width: 800 147 | :align: center 148 | 149 | The corresponding tax on magento can be seen in screenshot below: 150 | 151 | .. _magento-tax: 152 | .. image:: _images/magento_tax.png 153 | :width: 800 154 | :align: center 155 | 156 | Now, when an order placed on magento with `Magento Tax`_ is imported to openerp, 157 | the `OpenERP Tax`_ will be applied on the corresponding sale line in openerp. If 158 | no matching tax is found, then no tax is applied and a user can apply taxes if 159 | needed, later. 160 | 161 | .. note:: 162 | This feature works only for simple products as of now. 163 | 164 | 165 | Handle Taxes On Shipping 166 | ------------------------ 167 | 168 | Handling of taxes on shipping need an extra bit of configuration to be done. 169 | Tax on shipping has to be set as tax included in price because magento 170 | does not send the tax on shipping as a rate and calculating the rate from 171 | the amount almost always leads to mismatch of order totals due to rounding 172 | issues. Hence, the tax on shipping is set to be included in price to make 173 | sure order totals match and tax calculation done by openerp is assumed to 174 | be as close as possible to the tax calculation done by magento. 175 | See screenshot below: 176 | 177 | .. image:: _images/openerp-shipping-tax.png 178 | :width: 800 179 | :align: center 180 | 181 | Here details need to be set as highlighted in screenshot. 182 | 183 | .. note:: 184 | Make sure that only one tax has been set to be applied on magento 185 | shipping. 186 | -------------------------------------------------------------------------------- /fabfile.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | fabfile 4 | 5 | Fab file to build and push documentation to github 6 | 7 | :copyright: © 2013 by Openlabs Technologies & Consulting (P) Limited 8 | :license: BSD, see LICENSE for more details. 9 | """ 10 | import time 11 | 12 | from fabric.api import local, lcd 13 | 14 | 15 | def upload_documentation(): 16 | """ 17 | Build and upload the documentation HTML to github 18 | """ 19 | temp_folder = '/tmp/%s' % time.time() 20 | local('mkdir -p %s' % temp_folder) 21 | 22 | # Build the documentation 23 | with lcd('doc'): 24 | local('make html') 25 | local('mv build/html/* %s' % temp_folder) 26 | 27 | # Checkout to gh-pages branch 28 | local('git checkout gh-pages') 29 | 30 | # Copy back the files from temp folder 31 | local('rm -rf *') 32 | local('mv %s/* .' % temp_folder) 33 | 34 | # Add the relevant files 35 | local('git add *.html') 36 | local('git add *.js') 37 | local('git add *.js') 38 | local('git add *.inv') 39 | local('git add _images') 40 | local('git add _sources') 41 | local('git add _static') 42 | local('git commit -m "Build documentation"') 43 | local('git push') 44 | 45 | print "Documentation uploaded to Github." 46 | print "View at: http://openlabs.github.io/magento-integration" 47 | -------------------------------------------------------------------------------- /install_nightly.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Install the nightly version of OpeNERP 3 | sudo apt-get -ym install python-dateutil python-docutils python-feedparser python-gdata python-jinja2 python-ldap python-lxml python-mako python-mock python-openid python-psycopg2 python-psutil python-pybabel python-pychart python-pydot python-pyparsing python-reportlab python-simplejson python-tz python-unittest2 python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt python-yaml python-zsi python-imaging 4 | wget http://nightly.openerp.com/7.0/nightly/src/openerp-7.0-latest.tar.gz 5 | mkdir -p src 6 | tar -xf openerp-7.0-latest.tar.gz -C src 7 | 8 | for f in ./src/* 9 | do 10 | echo "$f" | grep -Eq '^\./abc.[0-9]+$' && continue 11 | echo "Something with $f here" 12 | done 13 | 14 | cd $f && python setup.py --quiet install 15 | rm -rf ./src 16 | -------------------------------------------------------------------------------- /product.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Unclassified Magento Products 7 | 8 | 9 | 10 | product.normal.form.inherit 11 | product.product 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 |
26 |
27 |
30 | 31 | 32 | 35 | 36 | 39 | 40 |
41 | 42 | 43 | 44 |