Merge lp:~chafique-delli/openerp-connector/7.0-magentoerpconnect-map-product into lp:~openerp-connector-core-editors/openerp-connector/7.0
- 7.0-magentoerpconnect-map-product
- Merge into 7.0
| Status: | Rejected |
|---|---|
| Rejected by: | Nicolas Bessi - Camptocamp |
| Proposed branch: | lp:~chafique-delli/openerp-connector/7.0-magentoerpconnect-map-product |
| Merge into: | lp:~openerp-connector-core-editors/openerp-connector/7.0 |
| Diff against target: |
40949 lines (+40198/-0) (has conflicts) 138 files modified
.bzrignore (+3/-0) customize_example/__init__.py (+6/-0) customize_example/__openerp__.py (+42/-0) customize_example/backend.py (+6/-0) customize_example/connector.py (+31/-0) customize_example/magento_model.py (+22/-0) customize_example/partner.py (+40/-0) magentoerpconnect/CHANGES.rst (+16/-0) magentoerpconnect/__init__.py (+17/-0) magentoerpconnect/__openerp__.py (+138/-0) magentoerpconnect/backend.py (+29/-0) magentoerpconnect/connector.py (+85/-0) magentoerpconnect/consumer.py (+80/-0) magentoerpconnect/delivery.py (+83/-0) magentoerpconnect/delivery_view.xml (+21/-0) magentoerpconnect/doc/Makefile (+153/-0) magentoerpconnect/doc/_themes/.gitignore (+3/-0) magentoerpconnect/doc/_themes/LICENSE (+37/-0) magentoerpconnect/doc/_themes/README (+31/-0) magentoerpconnect/doc/_themes/flask/layout.html (+25/-0) magentoerpconnect/doc/_themes/flask/relations.html (+19/-0) magentoerpconnect/doc/_themes/flask/static/flasky.css_t (+395/-0) magentoerpconnect/doc/_themes/flask/static/small_flask.css (+70/-0) magentoerpconnect/doc/_themes/flask/theme.conf (+9/-0) magentoerpconnect/doc/_themes/flask_small/layout.html (+22/-0) magentoerpconnect/doc/_themes/flask_small/static/flasky.css_t (+287/-0) magentoerpconnect/doc/_themes/flask_small/theme.conf (+10/-0) magentoerpconnect/doc/_themes/flask_theme_support.py (+86/-0) magentoerpconnect/doc/api/api_backend.rst (+7/-0) magentoerpconnect/doc/api/api_backend_adapter.rst (+7/-0) magentoerpconnect/doc/api/api_binder.rst (+7/-0) magentoerpconnect/doc/api/api_connector.rst (+7/-0) magentoerpconnect/doc/api/api_consumer.rst (+7/-0) magentoerpconnect/doc/api/api_delivery.rst (+7/-0) magentoerpconnect/doc/api/api_exception.rst (+9/-0) magentoerpconnect/doc/api/api_invoice.rst (+7/-0) magentoerpconnect/doc/api/api_magento_model.rst (+7/-0) magentoerpconnect/doc/api/api_partner.rst (+7/-0) magentoerpconnect/doc/api/api_partner_category.rst (+7/-0) magentoerpconnect/doc/api/api_product.rst (+7/-0) magentoerpconnect/doc/api/api_product_category.rst (+7/-0) magentoerpconnect/doc/api/api_sale.rst (+7/-0) magentoerpconnect/doc/api/api_stock_picking.rst (+7/-0) magentoerpconnect/doc/api/api_stock_tracking.rst (+7/-0) magentoerpconnect/doc/api/api_synchronizer.rst (+26/-0) magentoerpconnect/doc/conf.py (+275/-0) magentoerpconnect/doc/guides/connector_checkpoint.rst (+20/-0) magentoerpconnect/doc/guides/installation_guide.rst (+143/-0) magentoerpconnect/doc/guides/key_questions.rst (+281/-0) magentoerpconnect/doc/guides/monitor_resolve_jobs.rst (+83/-0) magentoerpconnect/doc/guides/tutorial_customize.rst (+407/-0) magentoerpconnect/doc/guides/tutorial_development.rst (+398/-0) magentoerpconnect/doc/howto/configure_automatic_workflows.rst (+12/-0) magentoerpconnect/doc/howto/configure_emails.rst (+14/-0) magentoerpconnect/doc/howto/configure_exception_rules.rst (+12/-0) magentoerpconnect/doc/howto/configure_payment_methods.rst (+14/-0) magentoerpconnect/doc/howto/configure_pricing.rst (+41/-0) magentoerpconnect/doc/howto/configure_schedulers.rst (+25/-0) magentoerpconnect/doc/howto/configure_shipping_methods.rst (+36/-0) magentoerpconnect/doc/howto/configure_translations.rst (+15/-0) magentoerpconnect/doc/howto/configure_warehouse.rst (+19/-0) magentoerpconnect/doc/howto/modify_an_order.rst (+45/-0) magentoerpconnect/doc/index.rst (+154/-0) magentoerpconnect/doc/make.bat (+190/-0) magentoerpconnect/doc/project/changes.rst (+8/-0) magentoerpconnect/doc/project/contribute.rst (+19/-0) magentoerpconnect/doc/project/contributors.rst (+10/-0) magentoerpconnect/doc/project/roadmap.rst (+61/-0) magentoerpconnect/exception.py (+26/-0) magentoerpconnect/i18n/fr_FR.po (+1007/-0) magentoerpconnect/i18n/magentoerpconnect.pot (+977/-0) magentoerpconnect/invoice.py (+229/-0) magentoerpconnect/invoice_view.xml (+48/-0) magentoerpconnect/magento_model.py (+570/-0) magentoerpconnect/magento_model_view.xml (+338/-0) magentoerpconnect/magentoerpconnect_data.xml (+107/-0) magentoerpconnect/magentoerpconnect_menu.xml (+35/-0) magentoerpconnect/old_stuff.py (+2594/-0) magentoerpconnect/old_xml_stuff.xml (+110/-0) magentoerpconnect/partner.py (+527/-0) magentoerpconnect/partner_category.py (+111/-0) magentoerpconnect/partner_view.xml (+115/-0) magentoerpconnect/product.py (+492/-0) magentoerpconnect/product_category.py (+240/-0) magentoerpconnect/product_view.xml (+100/-0) magentoerpconnect/sale.py (+782/-0) magentoerpconnect/sale_view.xml (+7/-0) magentoerpconnect/security/ir.model.access.csv (+39/-0) magentoerpconnect/setting.py (+39/-0) magentoerpconnect/setting_view.xml (+42/-0) magentoerpconnect/settings/1.3.2.4/external.mapping.template.csv (+13/-0) magentoerpconnect/settings/1.3.2.4/external.mappinglines.template.csv (+251/-0) magentoerpconnect/settings/1.3.2.4/external.referential.version.csv (+2/-0) magentoerpconnect/settings/1.5.0.0/account.invoice/external.mappinglines.template.csv (+10/-0) magentoerpconnect/settings/1.5.0.0/attribut.group/external.mappinglines.template.csv (+5/-0) magentoerpconnect/settings/1.5.0.0/attribut.set/external.mappinglines.template.csv (+5/-0) magentoerpconnect/settings/1.5.0.0/attribut/external.mappinglines.template.csv (+26/-0) magentoerpconnect/settings/1.5.0.0/external.mapping.template.csv (+15/-0) magentoerpconnect/settings/1.5.0.0/external.referential.version.csv (+2/-0) magentoerpconnect/settings/1.5.0.0/external.shop.group/external.mappinglines.template.csv (+6/-0) magentoerpconnect/settings/1.5.0.0/magerp.storeviews/external.mappinglines.template.csv (+6/-0) magentoerpconnect/settings/1.5.0.0/product.category/external.mappinglines.template.csv (+60/-0) magentoerpconnect/settings/1.5.0.0/product.link/external.mappinglines.template.csv (+5/-0) magentoerpconnect/settings/1.5.0.0/product/external.mappinglines.template.csv (+67/-0) magentoerpconnect/settings/1.5.0.0/res.partner.address/external.mappinglines.template.csv (+59/-0) magentoerpconnect/settings/1.5.0.0/res.partner.category/external.mappinglines.template.csv (+3/-0) magentoerpconnect/settings/1.5.0.0/res.partner/external.mappinglines.template.csv (+21/-0) magentoerpconnect/settings/1.5.0.0/sale.order.line/external.mappinglines.template.csv (+24/-0) magentoerpconnect/settings/1.5.0.0/sale.order/external.mappinglines.template.csv (+44/-0) magentoerpconnect/settings/1.5.0.0/sale.shop/external.mappinglines.template.csv (+5/-0) magentoerpconnect/stock_picking.py (+253/-0) magentoerpconnect/stock_tracking.py (+120/-0) magentoerpconnect/stock_view.xml (+50/-0) magentoerpconnect/tests/__init__.py (+29/-0) magentoerpconnect/tests/common.py (+70/-0) magentoerpconnect/tests/test_data.py (+24507/-0) magentoerpconnect/tests/test_synchronization.py (+214/-0) magentoerpconnect/unit/__init__.py (+8/-0) magentoerpconnect/unit/backend_adapter.py (+177/-0) magentoerpconnect/unit/binder.py (+113/-0) magentoerpconnect/unit/delete_synchronizer.py (+45/-0) magentoerpconnect/unit/export_synchronizer.py (+204/-0) magentoerpconnect/unit/import_synchronizer.py (+309/-0) magentoerpconnect_catalog/__init__.py (+1/-0) magentoerpconnect_catalog/__openerp__.py (+51/-0) magentoerpconnect_export_partner/__init__.py (+4/-0) magentoerpconnect_export_partner/__openerp__.py (+46/-0) magentoerpconnect_export_partner/connector.py (+32/-0) magentoerpconnect_export_partner/consumer.py (+46/-0) magentoerpconnect_export_partner/partner.py (+70/-0) magentoerpconnect_export_partner/partner_view.xml (+53/-0) magentoerpconnect_pricing/__init__.py (+6/-0) magentoerpconnect_pricing/__openerp__.py (+45/-0) magentoerpconnect_pricing/connector.py (+31/-0) magentoerpconnect_pricing/magento_model.py (+133/-0) magentoerpconnect_pricing/magento_model_view.xml (+30/-0) magentoerpconnect_pricing/product.py (+154/-0) magentoerpconnect_pricing/sale.py (+45/-0) Conflict adding file .bzrignore. Moved existing file to .bzrignore.moved. |
| To merge this branch: | bzr merge lp:~chafique-delli/openerp-connector/7.0-magentoerpconnect-map-product |
| Related bugs: |
| Reviewer | Review Type | Date Requested | Status |
|---|---|---|---|
| Guewen Baconnier @ Camptocamp | Needs Resubmitting | ||
|
Review via email:
|
|||
Commit message
Description of the change
When we import the product from Magento and this product already exist in OpenERP (same code/sku) we should link the existing product instead of creating a new one
| Guewen Baconnier @ Camptocamp (gbaconnier-c2c) wrote : | # |
| Chafique DELLI (chafique-delli) wrote : | # |
Le 15/08/2013 09:47, Guewen Baconnier @ Camptocamp a écrit :
> Review: Resubmit
>
> Hi Chafique, you have targeted the wrong branch, can you merge into lp:openerp-connector/7.0-magentoerpconnect instead of lp:openerp-connector please?
Hi Guewen, it's done.
--
Chafique DELLI
www.akretion.com/fr
intégration OpenERP
35B rue Montgolfier
69100 Villeurbanne
Email: <email address hidden>
| Nicolas Bessi - Camptocamp (nbessi-c2c-deactivatedaccount) wrote : | # |
Wrong target branch, MP rejected
Regards
Nicolas
Unmerged revisions
- 884. By Chafique DELLI
-
[IMP]:add mapping on openerp_id for an existing product with the same code
- 883. By Brendan Clune (Logic Supply)
-
[FIX] Define the partners relationships only on the creation of new records, allowing manual specification of company / contact relationships within OpenERP
- 882. By Brendan Clune (Logic Supply)
-
[FIX] State information for partners not mapped correctly
- 881. By Guewen Baconnier @ Camptocamp
-
[ADD] note in installation guide to install ntp
- 880. By Guewen Baconnier @ Camptocamp
-
[IMP] import batch of sales orders is now delayed in a job and not executed directly, should avoid TransactionRoll
backError which seems to happen occasionally on this method (maybe due to the duration of the transaction?) - 879. By Guewen Baconnier @ Camptocamp
-
[FIX] remove the transient fields from the result of the sales order mapper, they are used to create extra sales order lines but if they are still there when we create the SO, OpenERP will raise warnings (fields do not exist in magento.sale.order) or even fail to create the SO
- 878. By Guewen Baconnier @ Camptocamp
-
[FIX] removed unused code
- 877. By Guewen Baconnier @ Camptocamp
-
[IMP] a round of documentation improvement, see nested history for details
- 876. By Guewen Baconnier @ Camptocamp
-
[ADD] add the external dependency on the magento package in the manifest
- 875. By Guewen Baconnier @ Camptocamp
-
[ADD] french translation and empty .pot
Preview Diff
| 1 | === added file '.bzrignore' |
| 2 | --- .bzrignore 1970-01-01 00:00:00 +0000 |
| 3 | +++ .bzrignore 2013-08-13 17:30:12 +0000 |
| 4 | @@ -0,0 +1,3 @@ |
| 5 | +.project |
| 6 | +.pydevproject |
| 7 | +*/doc/_build/* |
| 8 | |
| 9 | === renamed file '.bzrignore' => '.bzrignore.moved' |
| 10 | === added directory 'customize_example' |
| 11 | === added file 'customize_example/__init__.py' |
| 12 | --- customize_example/__init__.py 1970-01-01 00:00:00 +0000 |
| 13 | +++ customize_example/__init__.py 2013-08-13 17:30:12 +0000 |
| 14 | @@ -0,0 +1,6 @@ |
| 15 | +# -*- coding: utf-8 -*- |
| 16 | + |
| 17 | +import connector |
| 18 | +import backend |
| 19 | +import magento_model |
| 20 | +import partner |
| 21 | |
| 22 | === added file 'customize_example/__openerp__.py' |
| 23 | --- customize_example/__openerp__.py 1970-01-01 00:00:00 +0000 |
| 24 | +++ customize_example/__openerp__.py 2013-08-13 17:30:12 +0000 |
| 25 | @@ -0,0 +1,42 @@ |
| 26 | +# -*- coding: utf-8 -*- |
| 27 | +############################################################################## |
| 28 | +# |
| 29 | +# Author: Guewen Baconnier |
| 30 | +# Copyright 2013 Camptocamp SA |
| 31 | +# |
| 32 | +# This program is free software: you can redistribute it and/or modify |
| 33 | +# it under the terms of the GNU Affero General Public License as |
| 34 | +# published by the Free Software Foundation, either version 3 of the |
| 35 | +# License, or (at your option) any later version. |
| 36 | +# |
| 37 | +# This program is distributed in the hope that it will be useful, |
| 38 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 39 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 40 | +# GNU Affero General Public License for more details. |
| 41 | +# |
| 42 | +# You should have received a copy of the GNU Affero General Public License |
| 43 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 44 | +# |
| 45 | +############################################################################## |
| 46 | + |
| 47 | +{'name': 'Magento Connector Customization Example', |
| 48 | + 'version': '1.0.0', |
| 49 | + 'category': 'Connector', |
| 50 | + 'depends': ['magentoerpconnect', |
| 51 | + ], |
| 52 | + 'author': 'Camptocamp', |
| 53 | + 'license': 'AGPL-3', |
| 54 | + 'description': """ |
| 55 | +Magento Connector Customization Example |
| 56 | +======================================= |
| 57 | + |
| 58 | +Example of customizations: |
| 59 | + |
| 60 | +* mappings |
| 61 | + |
| 62 | +""", |
| 63 | + 'data': [], |
| 64 | + 'installable': True, |
| 65 | + 'application': False, |
| 66 | +} |
| 67 | + |
| 68 | |
| 69 | === added file 'customize_example/backend.py' |
| 70 | --- customize_example/backend.py 1970-01-01 00:00:00 +0000 |
| 71 | +++ customize_example/backend.py 2013-08-13 17:30:12 +0000 |
| 72 | @@ -0,0 +1,6 @@ |
| 73 | +# -*- coding: utf-8 -*- |
| 74 | +import openerp.addons.connector.backend as backend |
| 75 | +import openerp.addons.magentoerpconnect.backend as magento_backend |
| 76 | + |
| 77 | +magento_myversion = backend.Backend(parent=magento_backend.magento1700, |
| 78 | + version='1.7-myversion') |
| 79 | |
| 80 | === added file 'customize_example/connector.py' |
| 81 | --- customize_example/connector.py 1970-01-01 00:00:00 +0000 |
| 82 | +++ customize_example/connector.py 2013-08-13 17:30:12 +0000 |
| 83 | @@ -0,0 +1,31 @@ |
| 84 | +# -*- coding: utf-8 -*- |
| 85 | +############################################################################## |
| 86 | +# |
| 87 | +# Author: Guewen Baconnier |
| 88 | +# Copyright 2013 Camptocamp SA |
| 89 | +# |
| 90 | +# This program is free software: you can redistribute it and/or modify |
| 91 | +# it under the terms of the GNU Affero General Public License as |
| 92 | +# published by the Free Software Foundation, either version 3 of the |
| 93 | +# License, or (at your option) any later version. |
| 94 | +# |
| 95 | +# This program is distributed in the hope that it will be useful, |
| 96 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 97 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 98 | +# GNU Affero General Public License for more details. |
| 99 | +# |
| 100 | +# You should have received a copy of the GNU Affero General Public License |
| 101 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 102 | +# |
| 103 | +############################################################################## |
| 104 | + |
| 105 | +from openerp.osv import orm |
| 106 | + |
| 107 | + |
| 108 | +class customize_example_installed(orm.AbstractModel): |
| 109 | + """Empty model used to know if the module is installed on the |
| 110 | + database. |
| 111 | + |
| 112 | + If the model is in the registry, the module is installed. |
| 113 | + """ |
| 114 | + _name = 'customize_example.installed' |
| 115 | |
| 116 | === added file 'customize_example/magento_model.py' |
| 117 | --- customize_example/magento_model.py 1970-01-01 00:00:00 +0000 |
| 118 | +++ customize_example/magento_model.py 2013-08-13 17:30:12 +0000 |
| 119 | @@ -0,0 +1,22 @@ |
| 120 | +# -*- coding: utf-8 -*- |
| 121 | +from openerp.osv import orm, fields |
| 122 | + |
| 123 | + |
| 124 | +class magento_backend(orm.Model): |
| 125 | + _inherit = 'magento.backend' |
| 126 | + |
| 127 | + def _select_versions(self, cr, uid, context=None): |
| 128 | + """ Available versions |
| 129 | + |
| 130 | + Can be inherited to add custom versions. |
| 131 | + """ |
| 132 | + versions = super(magento_backend, self)._select_versions(cr, uid, context=context) |
| 133 | + versions.append(('1.7-myversion', '1.7 My Version')) |
| 134 | + return versions |
| 135 | + |
| 136 | + _columns = { |
| 137 | + 'version': fields.selection( |
| 138 | + _select_versions, |
| 139 | + string='Version', |
| 140 | + required=True), |
| 141 | + } |
| 142 | |
| 143 | === added file 'customize_example/partner.py' |
| 144 | --- customize_example/partner.py 1970-01-01 00:00:00 +0000 |
| 145 | +++ customize_example/partner.py 2013-08-13 17:30:12 +0000 |
| 146 | @@ -0,0 +1,40 @@ |
| 147 | +# -*- coding: utf-8 -*- |
| 148 | + |
| 149 | +from openerp.osv import orm, fields |
| 150 | +from openerp.addons.connector.unit.mapper import mapping |
| 151 | +from openerp.addons.magentoerpconnect.partner import PartnerImportMapper |
| 152 | +from .backend import magento_myversion |
| 153 | + |
| 154 | + |
| 155 | +class magento_res_partner(orm.Model): |
| 156 | + _inherit = 'magento.res.partner' |
| 157 | + |
| 158 | + _columns = { |
| 159 | + 'created_in': fields.char('Created In', readonly=True), |
| 160 | + } |
| 161 | + |
| 162 | + |
| 163 | +class res_partner(orm.Model): |
| 164 | + _inherit = 'res.partner' |
| 165 | + |
| 166 | + _columns = { |
| 167 | + 'gender': fields.selection([('male', 'Male'), |
| 168 | + ('female', 'Female')], |
| 169 | + string='Gender'), |
| 170 | + } |
| 171 | + |
| 172 | + |
| 173 | +MAGENTO_GENDER = {'123': 'male', |
| 174 | + '124': 'female'} |
| 175 | + |
| 176 | + |
| 177 | +@magento_myversion |
| 178 | +class MyPartnerImportMapper(PartnerImportMapper): |
| 179 | + _model_name = 'magento.res.partner' |
| 180 | + |
| 181 | + direct = PartnerImportMapper.direct + [('created_in', 'created_in')] |
| 182 | + |
| 183 | + @mapping |
| 184 | + def gender(self, record): |
| 185 | + gender = MAGENTO_GENDER.get(record.get('gender')) |
| 186 | + return {'gender': gender} |
| 187 | |
| 188 | === added directory 'magentoerpconnect' |
| 189 | === added file 'magentoerpconnect/CHANGES.rst' |
| 190 | --- magentoerpconnect/CHANGES.rst 1970-01-01 00:00:00 +0000 |
| 191 | +++ magentoerpconnect/CHANGES.rst 2013-08-13 17:30:12 +0000 |
| 192 | @@ -0,0 +1,16 @@ |
| 193 | +Changelog |
| 194 | +--------- |
| 195 | + |
| 196 | +2.0.0 |
| 197 | +~~~~~ |
| 198 | + |
| 199 | +* First release |
| 200 | + |
| 201 | + |
| 202 | +.. |
| 203 | + Model: |
| 204 | + 2.0.1 (date of release) |
| 205 | + ~~~~~~~~~~~~~~~~~~~~~~~ |
| 206 | + |
| 207 | + * change 1 |
| 208 | + * change 2 |
| 209 | |
| 210 | === added file 'magentoerpconnect/__init__.py' |
| 211 | --- magentoerpconnect/__init__.py 1970-01-01 00:00:00 +0000 |
| 212 | +++ magentoerpconnect/__init__.py 2013-08-13 17:30:12 +0000 |
| 213 | @@ -0,0 +1,17 @@ |
| 214 | +# -*- coding: utf-8 -*- |
| 215 | +import setting |
| 216 | +import connector |
| 217 | +import backend |
| 218 | + |
| 219 | +import magento_model |
| 220 | +import product |
| 221 | +import product_category |
| 222 | +import partner |
| 223 | +import partner_category |
| 224 | +import invoice |
| 225 | +import sale |
| 226 | +import delivery |
| 227 | +import stock_picking |
| 228 | +import stock_tracking |
| 229 | + |
| 230 | +import consumer |
| 231 | |
| 232 | === added file 'magentoerpconnect/__openerp__.py' |
| 233 | --- magentoerpconnect/__openerp__.py 1970-01-01 00:00:00 +0000 |
| 234 | +++ magentoerpconnect/__openerp__.py 2013-08-13 17:30:12 +0000 |
| 235 | @@ -0,0 +1,138 @@ |
| 236 | +# -*- coding: utf-8 -*- |
| 237 | +############################################################################## |
| 238 | +# |
| 239 | +# Author: Guewen Baconnier |
| 240 | +# Copyright 2013 Camptocamp SA |
| 241 | +# Copyright 2013 Akretion |
| 242 | +# |
| 243 | +# This program is free software: you can redistribute it and/or modify |
| 244 | +# it under the terms of the GNU Affero General Public License as |
| 245 | +# published by the Free Software Foundation, either version 3 of the |
| 246 | +# License, or (at your option) any later version. |
| 247 | +# |
| 248 | +# This program is distributed in the hope that it will be useful, |
| 249 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 250 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 251 | +# GNU Affero General Public License for more details. |
| 252 | +# |
| 253 | +# You should have received a copy of the GNU Affero General Public License |
| 254 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 255 | +# |
| 256 | +############################################################################## |
| 257 | + |
| 258 | +{'name': 'Magento Connector', |
| 259 | + 'version': '2.0.0', |
| 260 | + 'category': 'Connector', |
| 261 | + 'depends': ['account', |
| 262 | + 'product', |
| 263 | + 'delivery', |
| 264 | + 'sale_stock', |
| 265 | + 'connector_ecommerce', |
| 266 | + 'product_m2mcategories', |
| 267 | + ], |
| 268 | + 'external_dependencies': { |
| 269 | + 'python': ['magento'], |
| 270 | + }, |
| 271 | + 'author': 'MagentoERPconnect Core Editors', |
| 272 | + 'license': 'AGPL-3', |
| 273 | + 'website': 'https://launchpad.net/magentoerpconnect', |
| 274 | + 'description': """ |
| 275 | +Magento Connector |
| 276 | +================= |
| 277 | + |
| 278 | +This is the new release of the Open-Source connector linking OpenERP and |
| 279 | +Magento also known under the name of **Magentoerpconnect**. It is |
| 280 | +build on top of the `connector`_ framework. It is is structured so that |
| 281 | +it can be extended or modified easily from separate addons, a factor of |
| 282 | +success when the implementations of Magento vary a lot. |
| 283 | + |
| 284 | +Magento OpenERP Connector is mainly developed by the Magentoerpconnect Core |
| 285 | +Editors, these being Camptocamp_ and Akretion_. The `source is on |
| 286 | +launchpad`_. |
| 287 | + |
| 288 | +This connector is designed to have a strong and efficient core, with the |
| 289 | +ability to extend it with extension modules or local customizations. |
| 290 | + |
| 291 | +In other words, the core module contains the minimal scope to run your |
| 292 | +e-commerce with OpenERP and Magento. More advanced features are |
| 293 | +installable using extensions. |
| 294 | + |
| 295 | +It features: |
| 296 | + |
| 297 | +Synchronizations: |
| 298 | + |
| 299 | +* Import the partners and addresses book |
| 300 | +* Import the customer groups (becomes partner tags) |
| 301 | +* Import the categories of products, with translations |
| 302 | +* Import the products, with translations and main image |
| 303 | +* Import the sales orders |
| 304 | +* Update the the stock quantities, |
| 305 | + with configuration of the warehouse and stock field to use |
| 306 | +* Export the delivery orders |
| 307 | +* Export the tracking numbers |
| 308 | +* Create the invoices on Magento and get their number back |
| 309 | +* Import the dependencies when they are not yet imported |
| 310 | + (ie. customer, products for sale order) |
| 311 | + |
| 312 | +Automatizations: |
| 313 | + |
| 314 | +* Use the `Automatic workflows` to automatize the workflow of the sales |
| 315 | + according to the payment method (confirm orders, create and reconcile |
| 316 | + payments, ...) |
| 317 | +* Per payment method, choose when the orders are imported |
| 318 | + (only when a payment is received, always, never) |
| 319 | +* Use the `Sales Exceptions` to prevents the processing of sales orders |
| 320 | + with issues |
| 321 | + |
| 322 | +Technical points: |
| 323 | + |
| 324 | +* Built on top of the `connector`_ framework |
| 325 | +* Use the `connector_ecommerce`_ addon to share the e-commerce capabilities |
| 326 | + with other e-commerce addons |
| 327 | +* Use the jobs system of the `connector`_ framework |
| 328 | +* Create `connector`_ checkpoints when new records to verify are imported |
| 329 | +* Support Magento 1.7, the support of earlier versions should be easy to |
| 330 | + add, the `connector`_ framework being designed to handle multiple |
| 331 | + versions with ease. |
| 332 | +* Licensed under AGPL version 3 |
| 333 | +* Designed to be usable with multiple Magento or any other e-commerce backends |
| 334 | + in the same time. |
| 335 | + |
| 336 | +Available extensions: |
| 337 | + |
| 338 | +* Pricing |
| 339 | + allows to manage the prices in OpenERP using pricelists, |
| 340 | + prices are update to Magento when changed |
| 341 | +* Export of partners (Experimental) |
| 342 | + Export new partners on Magento, not complete. |
| 343 | + |
| 344 | + |
| 345 | +.. _connector: https://code.launchpad.net/openerp-connector |
| 346 | +.. _connector_ecommerce: https://code.launchpad.net/openerp-connector |
| 347 | +.. _Camptocamp: http://www.camptocamp.com |
| 348 | +.. _Akretion: http://www.akretion.com |
| 349 | +.. _`source is on launchpad`: https://launchpad.net/magentoerpconnect |
| 350 | + |
| 351 | +""", |
| 352 | + 'images': ['images/magento_backend.png', |
| 353 | + 'images/jobs.png', |
| 354 | + 'images/product_binding.png', |
| 355 | + 'images/invoice_binding.png', |
| 356 | + 'images/magentoerpconnect.png', |
| 357 | + ], |
| 358 | + 'demo': [], |
| 359 | + 'data': ['setting_view.xml', |
| 360 | + 'magentoerpconnect_data.xml', |
| 361 | + 'magento_model_view.xml', |
| 362 | + 'product_view.xml', |
| 363 | + 'partner_view.xml', |
| 364 | + 'sale_view.xml', |
| 365 | + 'invoice_view.xml', |
| 366 | + 'magentoerpconnect_menu.xml', |
| 367 | + 'delivery_view.xml', |
| 368 | + 'stock_view.xml', |
| 369 | + 'security/ir.model.access.csv', |
| 370 | + ], |
| 371 | + 'installable': True, |
| 372 | + 'application': True, |
| 373 | +} |
| 374 | |
| 375 | === added file 'magentoerpconnect/backend.py' |
| 376 | --- magentoerpconnect/backend.py 1970-01-01 00:00:00 +0000 |
| 377 | +++ magentoerpconnect/backend.py 2013-08-13 17:30:12 +0000 |
| 378 | @@ -0,0 +1,29 @@ |
| 379 | +# -*- coding: utf-8 -*- |
| 380 | +############################################################################## |
| 381 | +# |
| 382 | +# Author: Guewen Baconnier |
| 383 | +# Copyright 2013 Camptocamp SA |
| 384 | +# |
| 385 | +# This program is free software: you can redistribute it and/or modify |
| 386 | +# it under the terms of the GNU Affero General Public License as |
| 387 | +# published by the Free Software Foundation, either version 3 of the |
| 388 | +# License, or (at your option) any later version. |
| 389 | +# |
| 390 | +# This program is distributed in the hope that it will be useful, |
| 391 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 392 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 393 | +# GNU Affero General Public License for more details. |
| 394 | +# |
| 395 | +# You should have received a copy of the GNU Affero General Public License |
| 396 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 397 | +# |
| 398 | +############################################################################## |
| 399 | + |
| 400 | +import openerp.addons.connector.backend as backend |
| 401 | + |
| 402 | + |
| 403 | +magento = backend.Backend('magento') |
| 404 | +""" Generic Magento Backend """ |
| 405 | + |
| 406 | +magento1700 = backend.Backend(parent=magento, version='1.7') |
| 407 | +""" Magento Backend for version 1.7 """ |
| 408 | |
| 409 | === added file 'magentoerpconnect/connector.py' |
| 410 | --- magentoerpconnect/connector.py 1970-01-01 00:00:00 +0000 |
| 411 | +++ magentoerpconnect/connector.py 2013-08-13 17:30:12 +0000 |
| 412 | @@ -0,0 +1,85 @@ |
| 413 | +# -*- coding: utf-8 -*- |
| 414 | +############################################################################## |
| 415 | +# |
| 416 | +# Author: Guewen Baconnier |
| 417 | +# Copyright 2013 Camptocamp SA |
| 418 | +# |
| 419 | +# This program is free software: you can redistribute it and/or modify |
| 420 | +# it under the terms of the GNU Affero General Public License as |
| 421 | +# published by the Free Software Foundation, either version 3 of the |
| 422 | +# License, or (at your option) any later version. |
| 423 | +# |
| 424 | +# This program is distributed in the hope that it will be useful, |
| 425 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 426 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 427 | +# GNU Affero General Public License for more details. |
| 428 | +# |
| 429 | +# You should have received a copy of the GNU Affero General Public License |
| 430 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 431 | +# |
| 432 | +############################################################################## |
| 433 | + |
| 434 | +from openerp.osv import orm, fields |
| 435 | +from openerp.addons.connector.connector import Environment |
| 436 | +from openerp.addons.connector.checkpoint import checkpoint |
| 437 | + |
| 438 | + |
| 439 | +class magentoerpconnect_installed(orm.AbstractModel): |
| 440 | + """Empty model used to know if the module is installed on the |
| 441 | + database. |
| 442 | + |
| 443 | + If the model is in the registry, the module is installed. |
| 444 | + """ |
| 445 | + _name = 'magentoerpconnect.installed' |
| 446 | + |
| 447 | + |
| 448 | +def get_environment(session, model_name, backend_id): |
| 449 | + """ Create an environment to work with. """ |
| 450 | + backend_record = session.browse('magento.backend', backend_id) |
| 451 | + env = Environment(backend_record, session, model_name) |
| 452 | + lang = backend_record.default_lang_id |
| 453 | + lang_code = lang.code if lang else 'en_US' |
| 454 | + env.set_lang(code=lang_code) |
| 455 | + return env |
| 456 | + |
| 457 | +class magento_binding(orm.AbstractModel): |
| 458 | + """ Abstract Model for the Bindigs. |
| 459 | + |
| 460 | + All the models used as bindings between Magento and OpenERP |
| 461 | + (``magento.res.partner``, ``magento.product.product``, ...) should |
| 462 | + ``_inherit`` it. |
| 463 | + """ |
| 464 | + _name = 'magento.binding' |
| 465 | + _inherit = 'external.binding' |
| 466 | + _description = 'Magento Binding (abstract)' |
| 467 | + |
| 468 | + _columns = { |
| 469 | + # 'openerp_id': openerp-side id must be declared in concrete model |
| 470 | + 'backend_id': fields.many2one( |
| 471 | + 'magento.backend', |
| 472 | + 'Magento Backend', |
| 473 | + required=True, |
| 474 | + ondelete='restrict'), |
| 475 | + # fields.char because 0 is a valid Magento ID |
| 476 | + 'magento_id': fields.char('ID on Magento'), |
| 477 | + } |
| 478 | + |
| 479 | + # the _sql_contraints cannot be there due to this bug: |
| 480 | + # https://bugs.launchpad.net/openobject-server/+bug/1151703 |
| 481 | + |
| 482 | + |
| 483 | +def add_checkpoint(session, model_name, record_id, backend_id): |
| 484 | + """ Add a row in the model ``connector.checkpoint`` for a record, |
| 485 | + meaning it has to be reviewed by a user. |
| 486 | + |
| 487 | + :param session: current session |
| 488 | + :type session: :py:class:`openerp.addons.connector.session.ConnectorSession` |
| 489 | + :param model_name: name of the model of the record to be reviewed |
| 490 | + :type model_name: str |
| 491 | + :param record_id: ID of the record to be reviewed |
| 492 | + :type record_id: int |
| 493 | + :param backend_id: ID of the Magento Backend |
| 494 | + :type backend_id: int |
| 495 | + """ |
| 496 | + return checkpoint.add_checkpoint(session, model_name, record_id, |
| 497 | + 'magento.backend', backend_id) |
| 498 | |
| 499 | === added file 'magentoerpconnect/consumer.py' |
| 500 | --- magentoerpconnect/consumer.py 1970-01-01 00:00:00 +0000 |
| 501 | +++ magentoerpconnect/consumer.py 2013-08-13 17:30:12 +0000 |
| 502 | @@ -0,0 +1,80 @@ |
| 503 | +# -*- coding: utf-8 -*- |
| 504 | +############################################################################## |
| 505 | +# |
| 506 | +# Author: Guewen Baconnier |
| 507 | +# Copyright 2013 Camptocamp SA |
| 508 | +# |
| 509 | +# This program is free software: you can redistribute it and/or modify |
| 510 | +# it under the terms of the GNU Affero General Public License as |
| 511 | +# published by the Free Software Foundation, either version 3 of the |
| 512 | +# License, or (at your option) any later version. |
| 513 | +# |
| 514 | +# This program is distributed in the hope that it will be useful, |
| 515 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 516 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 517 | +# GNU Affero General Public License for more details. |
| 518 | +# |
| 519 | +# You should have received a copy of the GNU Affero General Public License |
| 520 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 521 | +# |
| 522 | +############################################################################## |
| 523 | + |
| 524 | +from functools import wraps |
| 525 | + |
| 526 | +from openerp.addons.connector.event import (on_record_write, |
| 527 | + on_record_create, |
| 528 | + on_record_unlink |
| 529 | + ) |
| 530 | +from openerp.addons.connector.connector import Binder |
| 531 | +from .unit.export_synchronizer import export_record |
| 532 | +from .unit.delete_synchronizer import export_delete_record |
| 533 | +from .connector import get_environment |
| 534 | + |
| 535 | +_MODEL_NAMES = () |
| 536 | +_BIND_MODEL_NAMES = () |
| 537 | + |
| 538 | + |
| 539 | +@on_record_create(model_names=_BIND_MODEL_NAMES) |
| 540 | +@on_record_write(model_names=_BIND_MODEL_NAMES) |
| 541 | +def delay_export(session, model_name, record_id, fields=None): |
| 542 | + """ Delay a job which export a binding record. |
| 543 | + |
| 544 | + (A binding record being a ``magento.res.partner``, |
| 545 | + ``magento.product.product``, ...) |
| 546 | + """ |
| 547 | + if session.context.get('connector_no_export'): |
| 548 | + return |
| 549 | + export_record.delay(session, model_name, record_id, fields=fields) |
| 550 | + |
| 551 | + |
| 552 | +@on_record_write(model_names=_MODEL_NAMES) |
| 553 | +def delay_export_all_bindings(session, model_name, record_id, fields=None): |
| 554 | + """ Delay a job which export all the bindings of a record. |
| 555 | + |
| 556 | + In this case, it is called on records of normal models and will delay |
| 557 | + the export for all the bindings. |
| 558 | + """ |
| 559 | + if session.context.get('connector_no_export'): |
| 560 | + return |
| 561 | + model = session.pool.get(model_name) |
| 562 | + record = model.browse(session.cr, session.uid, |
| 563 | + record_id, context=session.context) |
| 564 | + for binding in record.magento_bind_ids: |
| 565 | + export_record.delay(session, binding._model._name, binding.id, |
| 566 | + fields=fields) |
| 567 | + |
| 568 | + |
| 569 | +@on_record_unlink(model_names=_BIND_MODEL_NAMES) |
| 570 | +def delay_unlink(session, model_name, record_id): |
| 571 | + """ Delay a job which delete a record on Magento. |
| 572 | + |
| 573 | + Called on binding records.""" |
| 574 | + model = session.pool.get(model_name) |
| 575 | + record = model.browse(session.cr, session.uid, |
| 576 | + record_id, context=session.context) |
| 577 | + env = get_environment(session, model_name, record.backend_id.id) |
| 578 | + binder = env.get_connector_unit(Binder) |
| 579 | + magento_id = binder.to_backend(record_id) |
| 580 | + if magento_id: |
| 581 | + export_delete_record.delay(session, model_name, |
| 582 | + record.backend_id.id, magento_id) |
| 583 | |
| 584 | === added file 'magentoerpconnect/delivery.py' |
| 585 | --- magentoerpconnect/delivery.py 1970-01-01 00:00:00 +0000 |
| 586 | +++ magentoerpconnect/delivery.py 2013-08-13 17:30:12 +0000 |
| 587 | @@ -0,0 +1,83 @@ |
| 588 | +# -*- coding: utf-8 -*- |
| 589 | +############################################################################## |
| 590 | +# |
| 591 | +# Authors: Guewen Baconnier, Sébastien Beau |
| 592 | +# Copyright (C) 2010 BEAU Sébastien |
| 593 | +# Copyright 2011-2013 Camptocamp SA |
| 594 | +# |
| 595 | +# This program is free software: you can redistribute it and/or modify |
| 596 | +# it under the terms of the GNU Affero General Public License as |
| 597 | +# published by the Free Software Foundation, either version 3 of the |
| 598 | +# License, or (at your option) any later version. |
| 599 | +# |
| 600 | +# This program is distributed in the hope that it will be useful, |
| 601 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 602 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 603 | +# GNU Affero General Public License for more details. |
| 604 | +# |
| 605 | +# You should have received a copy of the GNU Affero General Public License |
| 606 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 607 | +# |
| 608 | +############################################################################## |
| 609 | + |
| 610 | +from openerp.osv import fields, orm |
| 611 | + |
| 612 | + |
| 613 | +# TODO magento.delivery.carrier & move specific stuff |
| 614 | +class delivery_carrier(orm.Model): |
| 615 | + """ Adds Magento specific fields to ``delivery.carrier`` |
| 616 | + |
| 617 | + ``magento_code`` |
| 618 | + |
| 619 | + Code of the carrier delivery method in Magento. |
| 620 | + Example: ``colissimo_express`` |
| 621 | + |
| 622 | + ``magento_tracking_title`` |
| 623 | + |
| 624 | + Display name of the carrier for the tracking in Magento. |
| 625 | + Example: Colissimo Express |
| 626 | + |
| 627 | + ``magento_carrier_code`` |
| 628 | + |
| 629 | + General code of the carrier, the first part of the ``magento_code``. |
| 630 | + Example: ``colissimo`` for the method ``colissimo_express``. |
| 631 | + |
| 632 | + ``magento_export_tracking`` |
| 633 | + |
| 634 | + Defines if the tracking numbers should be exported to Magento. |
| 635 | + """ |
| 636 | + _inherit = "delivery.carrier" |
| 637 | + |
| 638 | + def _carrier_code(self, cr, uid, ids, name, args, context=None): |
| 639 | + res = {} |
| 640 | + for carrier in self.browse(cr, uid, ids, context=context): |
| 641 | + if not carrier.magento_code: |
| 642 | + res[carrier.id] = False |
| 643 | + continue |
| 644 | + res[carrier.id] = carrier.magento_code.split('_')[0] |
| 645 | + return res |
| 646 | + |
| 647 | + _columns = { |
| 648 | + 'magento_code': fields.char( |
| 649 | + 'Magento Carrier Code', |
| 650 | + size=64, |
| 651 | + required=False), |
| 652 | + 'magento_tracking_title': fields.char( |
| 653 | + 'Magento Tracking Title', |
| 654 | + size=64, |
| 655 | + required=False), |
| 656 | + # in Magento, the delivery method is something like that: |
| 657 | + # tntmodule2_tnt_basic |
| 658 | + # where the first part before the _ is always the carrier code |
| 659 | + # in this example, the carrier code is tntmodule2 |
| 660 | + 'magento_carrier_code': |
| 661 | + fields.function(_carrier_code, |
| 662 | + string='Magento Base Carrier Code', |
| 663 | + size=32, |
| 664 | + type='char'), |
| 665 | + 'magento_export_tracking': fields.boolean('Export tracking numbers') |
| 666 | + } |
| 667 | + |
| 668 | + _defaults = { |
| 669 | + 'magento_export_tracking': True, |
| 670 | + } |
| 671 | |
| 672 | === added file 'magentoerpconnect/delivery_view.xml' |
| 673 | --- magentoerpconnect/delivery_view.xml 1970-01-01 00:00:00 +0000 |
| 674 | +++ magentoerpconnect/delivery_view.xml 2013-08-13 17:30:12 +0000 |
| 675 | @@ -0,0 +1,21 @@ |
| 676 | +<?xml version="1.0" encoding="utf-8"?> |
| 677 | +<openerp> |
| 678 | + <data> |
| 679 | + |
| 680 | + <record id="view_magento_delivery_carrier_form" model="ir.ui.view"> |
| 681 | + <field name="name">magento.delivery.carrier.form</field> |
| 682 | + <field name="model">delivery.carrier</field> |
| 683 | + <field name="inherit_id" ref="delivery.view_delivery_carrier_form" /> |
| 684 | + <field name="arch" type="xml"> |
| 685 | + <data> |
| 686 | + <field name="product_id" select="1" position="after"> |
| 687 | + <field name="magento_code"/> |
| 688 | + <field name="magento_tracking_title"/> |
| 689 | + <field name="magento_export_tracking"/> |
| 690 | + </field> |
| 691 | + </data> |
| 692 | + </field> |
| 693 | + </record> |
| 694 | + |
| 695 | + </data> |
| 696 | +</openerp> |
| 697 | |
| 698 | === added directory 'magentoerpconnect/doc' |
| 699 | === added file 'magentoerpconnect/doc/Makefile' |
| 700 | --- magentoerpconnect/doc/Makefile 1970-01-01 00:00:00 +0000 |
| 701 | +++ magentoerpconnect/doc/Makefile 2013-08-13 17:30:12 +0000 |
| 702 | @@ -0,0 +1,153 @@ |
| 703 | +# Makefile for Sphinx documentation |
| 704 | +# |
| 705 | + |
| 706 | +# You can set these variables from the command line. |
| 707 | +SPHINXOPTS = |
| 708 | +SPHINXBUILD = sphinx-build |
| 709 | +PAPER = |
| 710 | +BUILDDIR = _build |
| 711 | + |
| 712 | +# Internal variables. |
| 713 | +PAPEROPT_a4 = -D latex_paper_size=a4 |
| 714 | +PAPEROPT_letter = -D latex_paper_size=letter |
| 715 | +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . |
| 716 | +# the i18n builder cannot share the environment and doctrees with the others |
| 717 | +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . |
| 718 | + |
| 719 | +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext |
| 720 | + |
| 721 | +help: |
| 722 | + @echo "Please use \`make <target>' where <target> is one of" |
| 723 | + @echo " html to make standalone HTML files" |
| 724 | + @echo " dirhtml to make HTML files named index.html in directories" |
| 725 | + @echo " singlehtml to make a single large HTML file" |
| 726 | + @echo " pickle to make pickle files" |
| 727 | + @echo " json to make JSON files" |
| 728 | + @echo " htmlhelp to make HTML files and a HTML help project" |
| 729 | + @echo " qthelp to make HTML files and a qthelp project" |
| 730 | + @echo " devhelp to make HTML files and a Devhelp project" |
| 731 | + @echo " epub to make an epub" |
| 732 | + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" |
| 733 | + @echo " latexpdf to make LaTeX files and run them through pdflatex" |
| 734 | + @echo " text to make text files" |
| 735 | + @echo " man to make manual pages" |
| 736 | + @echo " texinfo to make Texinfo files" |
| 737 | + @echo " info to make Texinfo files and run them through makeinfo" |
| 738 | + @echo " gettext to make PO message catalogs" |
| 739 | + @echo " changes to make an overview of all changed/added/deprecated items" |
| 740 | + @echo " linkcheck to check all external links for integrity" |
| 741 | + @echo " doctest to run all doctests embedded in the documentation (if enabled)" |
| 742 | + |
| 743 | +clean: |
| 744 | + -rm -rf $(BUILDDIR)/* |
| 745 | + |
| 746 | +html: |
| 747 | + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html |
| 748 | + @echo |
| 749 | + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." |
| 750 | + |
| 751 | +dirhtml: |
| 752 | + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml |
| 753 | + @echo |
| 754 | + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." |
| 755 | + |
| 756 | +singlehtml: |
| 757 | + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml |
| 758 | + @echo |
| 759 | + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." |
| 760 | + |
| 761 | +pickle: |
| 762 | + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle |
| 763 | + @echo |
| 764 | + @echo "Build finished; now you can process the pickle files." |
| 765 | + |
| 766 | +json: |
| 767 | + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json |
| 768 | + @echo |
| 769 | + @echo "Build finished; now you can process the JSON files." |
| 770 | + |
| 771 | +htmlhelp: |
| 772 | + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp |
| 773 | + @echo |
| 774 | + @echo "Build finished; now you can run HTML Help Workshop with the" \ |
| 775 | + ".hhp project file in $(BUILDDIR)/htmlhelp." |
| 776 | + |
| 777 | +qthelp: |
| 778 | + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp |
| 779 | + @echo |
| 780 | + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ |
| 781 | + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" |
| 782 | + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Connectors.qhcp" |
| 783 | + @echo "To view the help file:" |
| 784 | + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Connectors.qhc" |
| 785 | + |
| 786 | +devhelp: |
| 787 | + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp |
| 788 | + @echo |
| 789 | + @echo "Build finished." |
| 790 | + @echo "To view the help file:" |
| 791 | + @echo "# mkdir -p $$HOME/.local/share/devhelp/Connectors" |
| 792 | + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Connectors" |
| 793 | + @echo "# devhelp" |
| 794 | + |
| 795 | +epub: |
| 796 | + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub |
| 797 | + @echo |
| 798 | + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." |
| 799 | + |
| 800 | +latex: |
| 801 | + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex |
| 802 | + @echo |
| 803 | + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." |
| 804 | + @echo "Run \`make' in that directory to run these through (pdf)latex" \ |
| 805 | + "(use \`make latexpdf' here to do that automatically)." |
| 806 | + |
| 807 | +latexpdf: |
| 808 | + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex |
| 809 | + @echo "Running LaTeX files through pdflatex..." |
| 810 | + $(MAKE) -C $(BUILDDIR)/latex all-pdf |
| 811 | + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." |
| 812 | + |
| 813 | +text: |
| 814 | + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text |
| 815 | + @echo |
| 816 | + @echo "Build finished. The text files are in $(BUILDDIR)/text." |
| 817 | + |
| 818 | +man: |
| 819 | + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man |
| 820 | + @echo |
| 821 | + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." |
| 822 | + |
| 823 | +texinfo: |
| 824 | + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo |
| 825 | + @echo |
| 826 | + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." |
| 827 | + @echo "Run \`make' in that directory to run these through makeinfo" \ |
| 828 | + "(use \`make info' here to do that automatically)." |
| 829 | + |
| 830 | +info: |
| 831 | + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo |
| 832 | + @echo "Running Texinfo files through makeinfo..." |
| 833 | + make -C $(BUILDDIR)/texinfo info |
| 834 | + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." |
| 835 | + |
| 836 | +gettext: |
| 837 | + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale |
| 838 | + @echo |
| 839 | + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." |
| 840 | + |
| 841 | +changes: |
| 842 | + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes |
| 843 | + @echo |
| 844 | + @echo "The overview file is in $(BUILDDIR)/changes." |
| 845 | + |
| 846 | +linkcheck: |
| 847 | + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck |
| 848 | + @echo |
| 849 | + @echo "Link check complete; look for any errors in the above output " \ |
| 850 | + "or in $(BUILDDIR)/linkcheck/output.txt." |
| 851 | + |
| 852 | +doctest: |
| 853 | + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest |
| 854 | + @echo "Testing of doctests in the sources finished, look at the " \ |
| 855 | + "results in $(BUILDDIR)/doctest/output.txt." |
| 856 | |
| 857 | === added directory 'magentoerpconnect/doc/_build' |
| 858 | === added directory 'magentoerpconnect/doc/_static' |
| 859 | === added directory 'magentoerpconnect/doc/_templates' |
| 860 | === added directory 'magentoerpconnect/doc/_themes' |
| 861 | === added file 'magentoerpconnect/doc/_themes/.gitignore' |
| 862 | --- magentoerpconnect/doc/_themes/.gitignore 1970-01-01 00:00:00 +0000 |
| 863 | +++ magentoerpconnect/doc/_themes/.gitignore 2013-08-13 17:30:12 +0000 |
| 864 | @@ -0,0 +1,3 @@ |
| 865 | +*.pyc |
| 866 | +*.pyo |
| 867 | +.DS_Store |
| 868 | |
| 869 | === added file 'magentoerpconnect/doc/_themes/LICENSE' |
| 870 | --- magentoerpconnect/doc/_themes/LICENSE 1970-01-01 00:00:00 +0000 |
| 871 | +++ magentoerpconnect/doc/_themes/LICENSE 2013-08-13 17:30:12 +0000 |
| 872 | @@ -0,0 +1,37 @@ |
| 873 | +Copyright (c) 2010 by Armin Ronacher. |
| 874 | + |
| 875 | +Some rights reserved. |
| 876 | + |
| 877 | +Redistribution and use in source and binary forms of the theme, with or |
| 878 | +without modification, are permitted provided that the following conditions |
| 879 | +are met: |
| 880 | + |
| 881 | +* Redistributions of source code must retain the above copyright |
| 882 | + notice, this list of conditions and the following disclaimer. |
| 883 | + |
| 884 | +* Redistributions in binary form must reproduce the above |
| 885 | + copyright notice, this list of conditions and the following |
| 886 | + disclaimer in the documentation and/or other materials provided |
| 887 | + with the distribution. |
| 888 | + |
| 889 | +* The names of the contributors may not be used to endorse or |
| 890 | + promote products derived from this software without specific |
| 891 | + prior written permission. |
| 892 | + |
| 893 | +We kindly ask you to only use these themes in an unmodified manner just |
| 894 | +for Flask and Flask-related products, not for unrelated projects. If you |
| 895 | +like the visual style and want to use it for your own projects, please |
| 896 | +consider making some larger changes to the themes (such as changing |
| 897 | +font faces, sizes, colors or margins). |
| 898 | + |
| 899 | +THIS THEME IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| 900 | +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| 901 | +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| 902 | +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
| 903 | +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| 904 | +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| 905 | +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| 906 | +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| 907 | +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| 908 | +ARISING IN ANY WAY OUT OF THE USE OF THIS THEME, EVEN IF ADVISED OF THE |
| 909 | +POSSIBILITY OF SUCH DAMAGE. |
| 910 | |
| 911 | === added file 'magentoerpconnect/doc/_themes/README' |
| 912 | --- magentoerpconnect/doc/_themes/README 1970-01-01 00:00:00 +0000 |
| 913 | +++ magentoerpconnect/doc/_themes/README 2013-08-13 17:30:12 +0000 |
| 914 | @@ -0,0 +1,31 @@ |
| 915 | +Flask Sphinx Styles |
| 916 | +=================== |
| 917 | + |
| 918 | +This repository contains sphinx styles for Flask and Flask related |
| 919 | +projects. To use this style in your Sphinx documentation, follow |
| 920 | +this guide: |
| 921 | + |
| 922 | +1. put this folder as _themes into your docs folder. Alternatively |
| 923 | + you can also use git submodules to check out the contents there. |
| 924 | +2. add this to your conf.py: |
| 925 | + |
| 926 | + sys.path.append(os.path.abspath('_themes')) |
| 927 | + html_theme_path = ['_themes'] |
| 928 | + html_theme = 'flask' |
| 929 | + |
| 930 | +The following themes exist: |
| 931 | + |
| 932 | +- 'flask' - the standard flask documentation theme for large |
| 933 | + projects |
| 934 | +- 'flask_small' - small one-page theme. Intended to be used by |
| 935 | + very small addon libraries for flask. |
| 936 | + |
| 937 | +The following options exist for the flask_small theme: |
| 938 | + |
| 939 | + [options] |
| 940 | + index_logo = '' filename of a picture in _static |
| 941 | + to be used as replacement for the |
| 942 | + h1 in the index.rst file. |
| 943 | + index_logo_height = 120px height of the index logo |
| 944 | + github_fork = '' repository name on github for the |
| 945 | + "fork me" badge |
| 946 | |
| 947 | === added directory 'magentoerpconnect/doc/_themes/flask' |
| 948 | === added file 'magentoerpconnect/doc/_themes/flask/layout.html' |
| 949 | --- magentoerpconnect/doc/_themes/flask/layout.html 1970-01-01 00:00:00 +0000 |
| 950 | +++ magentoerpconnect/doc/_themes/flask/layout.html 2013-08-13 17:30:12 +0000 |
| 951 | @@ -0,0 +1,25 @@ |
| 952 | +{%- extends "basic/layout.html" %} |
| 953 | +{%- block extrahead %} |
| 954 | + {{ super() }} |
| 955 | + {% if theme_touch_icon %} |
| 956 | + <link rel="apple-touch-icon" href="{{ pathto('_static/' ~ theme_touch_icon, 1) }}" /> |
| 957 | + {% endif %} |
| 958 | + <link media="only screen and (max-device-width: 480px)" href="{{ |
| 959 | + pathto('_static/small_flask.css', 1) }}" type= "text/css" rel="stylesheet" /> |
| 960 | +{% endblock %} |
| 961 | +{%- block relbar2 %}{% endblock %} |
| 962 | +{% block header %} |
| 963 | + {{ super() }} |
| 964 | + {% if pagename == 'index' %} |
| 965 | + <div class=indexwrapper> |
| 966 | + {% endif %} |
| 967 | +{% endblock %} |
| 968 | +{%- block footer %} |
| 969 | + <div class="footer"> |
| 970 | + © Copyright {{ copyright }} |
| 971 | + Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> and a modified <a href="https://github.com/mitsuhiko/flask-sphinx-themes">Flask theme</a>. |
| 972 | + </div> |
| 973 | + {% if pagename == 'index' %} |
| 974 | + </div> |
| 975 | + {% endif %} |
| 976 | +{%- endblock %} |
| 977 | |
| 978 | === added file 'magentoerpconnect/doc/_themes/flask/relations.html' |
| 979 | --- magentoerpconnect/doc/_themes/flask/relations.html 1970-01-01 00:00:00 +0000 |
| 980 | +++ magentoerpconnect/doc/_themes/flask/relations.html 2013-08-13 17:30:12 +0000 |
| 981 | @@ -0,0 +1,19 @@ |
| 982 | +<h3>Related Topics</h3> |
| 983 | +<ul> |
| 984 | + <li><a href="{{ pathto(master_doc) }}">Documentation overview</a><ul> |
| 985 | + {%- for parent in parents %} |
| 986 | + <li><a href="{{ parent.link|e }}">{{ parent.title }}</a><ul> |
| 987 | + {%- endfor %} |
| 988 | + {%- if prev %} |
| 989 | + <li>Previous: <a href="{{ prev.link|e }}" title="{{ _('previous chapter') |
| 990 | + }}">{{ prev.title }}</a></li> |
| 991 | + {%- endif %} |
| 992 | + {%- if next %} |
| 993 | + <li>Next: <a href="{{ next.link|e }}" title="{{ _('next chapter') |
| 994 | + }}">{{ next.title }}</a></li> |
| 995 | + {%- endif %} |
| 996 | + {%- for parent in parents %} |
| 997 | + </ul></li> |
| 998 | + {%- endfor %} |
| 999 | + </ul></li> |
| 1000 | +</ul> |
| 1001 | |
| 1002 | === added directory 'magentoerpconnect/doc/_themes/flask/static' |
| 1003 | === added file 'magentoerpconnect/doc/_themes/flask/static/flasky.css_t' |
| 1004 | --- magentoerpconnect/doc/_themes/flask/static/flasky.css_t 1970-01-01 00:00:00 +0000 |
| 1005 | +++ magentoerpconnect/doc/_themes/flask/static/flasky.css_t 2013-08-13 17:30:12 +0000 |
| 1006 | @@ -0,0 +1,395 @@ |
| 1007 | +/* |
| 1008 | + * flasky.css_t |
| 1009 | + * ~~~~~~~~~~~~ |
| 1010 | + * |
| 1011 | + * :copyright: Copyright 2010 by Armin Ronacher. |
| 1012 | + * :license: Flask Design License, see LICENSE for details. |
| 1013 | + */ |
| 1014 | + |
| 1015 | +{% set page_width = '80em' %} |
| 1016 | +{% set sidebar_width = '16em' %} |
| 1017 | + |
| 1018 | +@import url("basic.css"); |
| 1019 | + |
| 1020 | +/* -- page layout ----------------------------------------------------------- */ |
| 1021 | + |
| 1022 | +body { |
| 1023 | + font-family: 'Georgia', serif; |
| 1024 | + font-size: 15px; |
| 1025 | + background-color: white; |
| 1026 | + color: #000; |
| 1027 | + margin: 0; |
| 1028 | + padding: 0; |
| 1029 | +} |
| 1030 | + |
| 1031 | +div.document { |
| 1032 | + width: {{ page_width }}; |
| 1033 | + margin: 30px auto 0 auto; |
| 1034 | +} |
| 1035 | + |
| 1036 | +div.documentwrapper { |
| 1037 | + float: left; |
| 1038 | + width: 100%; |
| 1039 | +} |
| 1040 | + |
| 1041 | +div.bodywrapper { |
| 1042 | + margin: 0 0 0 {{ sidebar_width }}; |
| 1043 | +} |
| 1044 | + |
| 1045 | +div.sphinxsidebar { |
| 1046 | + width: {{ sidebar_width }}; |
| 1047 | +} |
| 1048 | + |
| 1049 | +hr { |
| 1050 | + border: 1px solid #B1B4B6; |
| 1051 | +} |
| 1052 | + |
| 1053 | +div.body { |
| 1054 | + background-color: #ffffff; |
| 1055 | + color: #3E4349; |
| 1056 | + padding: 0 0px 0 0px; |
| 1057 | +} |
| 1058 | + |
| 1059 | +img.floatingflask { |
| 1060 | + padding: 0 0 10px 10px; |
| 1061 | + float: right; |
| 1062 | +} |
| 1063 | + |
| 1064 | +div.footer { |
| 1065 | + width: {{ page_width }}; |
| 1066 | + margin: 20px auto 30px auto; |
| 1067 | + font-size: 12px; |
| 1068 | + color: #888; |
| 1069 | + text-align: right; |
| 1070 | +} |
| 1071 | + |
| 1072 | +div.footer a { |
| 1073 | + color: #888; |
| 1074 | +} |
| 1075 | + |
| 1076 | +div.related { |
| 1077 | + display: none; |
| 1078 | +} |
| 1079 | + |
| 1080 | +div.sphinxsidebar a { |
| 1081 | + color: #444; |
| 1082 | + text-decoration: none; |
| 1083 | + border-bottom: 1px dotted #999; |
| 1084 | +} |
| 1085 | + |
| 1086 | +div.sphinxsidebar a:hover { |
| 1087 | + border-bottom: 1px solid #999; |
| 1088 | +} |
| 1089 | + |
| 1090 | +div.sphinxsidebar { |
| 1091 | + font-size: 12px; |
| 1092 | + line-height: 1.5; |
| 1093 | +} |
| 1094 | + |
| 1095 | +div.sphinxsidebarwrapper { |
| 1096 | + padding: 0px 10px; |
| 1097 | +} |
| 1098 | + |
| 1099 | +div.sphinxsidebarwrapper p.logo { |
| 1100 | + padding: 0 0 20px 0; |
| 1101 | + margin: 0; |
| 1102 | + text-align: center; |
| 1103 | +} |
| 1104 | + |
| 1105 | +div.sphinxsidebar h3, |
| 1106 | +div.sphinxsidebar h4 { |
| 1107 | + font-family: 'Garamond', 'Georgia', serif; |
| 1108 | + color: #444; |
| 1109 | + font-size: 22px; |
| 1110 | + font-weight: normal; |
| 1111 | + margin: 0 0 5px 0; |
| 1112 | + padding: 0; |
| 1113 | +} |
| 1114 | + |
| 1115 | +div.sphinxsidebar h4 { |
| 1116 | + font-size: 18px; |
| 1117 | +} |
| 1118 | + |
| 1119 | +div.sphinxsidebar h3 a { |
| 1120 | + color: #444; |
| 1121 | +} |
| 1122 | + |
| 1123 | +div.sphinxsidebar p.logo a, |
| 1124 | +div.sphinxsidebar h3 a, |
| 1125 | +div.sphinxsidebar p.logo a:hover, |
| 1126 | +div.sphinxsidebar h3 a:hover { |
| 1127 | + border: none; |
| 1128 | +} |
| 1129 | + |
| 1130 | +div.sphinxsidebar p { |
| 1131 | + color: #555; |
| 1132 | + margin: 10px 0; |
| 1133 | +} |
| 1134 | + |
| 1135 | +div.sphinxsidebar ul { |
| 1136 | + margin: 10px 0; |
| 1137 | + padding: 0; |
| 1138 | + color: #000; |
| 1139 | +} |
| 1140 | + |
| 1141 | +div.sphinxsidebar input { |
| 1142 | + border: 1px solid #ccc; |
| 1143 | + font-family: 'Georgia', serif; |
| 1144 | + font-size: 1em; |
| 1145 | +} |
| 1146 | + |
| 1147 | +/* -- body styles ----------------------------------------------------------- */ |
| 1148 | + |
| 1149 | +a { |
| 1150 | + color: #004B6B; |
| 1151 | + text-decoration: underline; |
| 1152 | +} |
| 1153 | + |
| 1154 | +a:hover { |
| 1155 | + color: #6D4100; |
| 1156 | + text-decoration: underline; |
| 1157 | +} |
| 1158 | + |
| 1159 | +div.body h1, |
| 1160 | +div.body h2, |
| 1161 | +div.body h3, |
| 1162 | +div.body h4, |
| 1163 | +div.body h5, |
| 1164 | +div.body h6 { |
| 1165 | + font-family: 'Garamond', 'Georgia', serif; |
| 1166 | + font-weight: normal; |
| 1167 | + margin: 30px 0px 10px 0px; |
| 1168 | + padding: 0; |
| 1169 | +} |
| 1170 | + |
| 1171 | +{% if theme_index_logo %} |
| 1172 | +div.indexwrapper h1 { |
| 1173 | + text-indent: -999999px; |
| 1174 | + background: url({{ theme_index_logo }}) no-repeat center center; |
| 1175 | + height: {{ theme_index_logo_height }}; |
| 1176 | +} |
| 1177 | +{% endif %} |
| 1178 | + |
| 1179 | +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } |
| 1180 | +div.body h2 { font-size: 180%; } |
| 1181 | +div.body h3 { font-size: 150%; } |
| 1182 | +div.body h4 { font-size: 130%; } |
| 1183 | +div.body h5 { font-size: 100%; } |
| 1184 | +div.body h6 { font-size: 100%; } |
| 1185 | + |
| 1186 | +a.headerlink { |
| 1187 | + color: #ddd; |
| 1188 | + padding: 0 4px; |
| 1189 | + text-decoration: none; |
| 1190 | +} |
| 1191 | + |
| 1192 | +a.headerlink:hover { |
| 1193 | + color: #444; |
| 1194 | + background: #eaeaea; |
| 1195 | +} |
| 1196 | + |
| 1197 | +div.body p, div.body dd, div.body li { |
| 1198 | + line-height: 1.4em; |
| 1199 | +} |
| 1200 | + |
| 1201 | +div.admonition { |
| 1202 | + background: #fafafa; |
| 1203 | + margin: 20px -30px; |
| 1204 | + padding: 10px 30px; |
| 1205 | + border-top: 1px solid #ccc; |
| 1206 | + border-bottom: 1px solid #ccc; |
| 1207 | +} |
| 1208 | + |
| 1209 | +div.admonition tt.xref, div.admonition a tt { |
| 1210 | + border-bottom: 1px solid #fafafa; |
| 1211 | +} |
| 1212 | + |
| 1213 | +dd div.admonition { |
| 1214 | + margin-left: -60px; |
| 1215 | + padding-left: 60px; |
| 1216 | +} |
| 1217 | + |
| 1218 | +div.admonition p.admonition-title { |
| 1219 | + font-family: 'Garamond', 'Georgia', serif; |
| 1220 | + font-weight: normal; |
| 1221 | + font-size: 22px; |
| 1222 | + margin: 0 0 10px 0; |
| 1223 | + padding: 0; |
| 1224 | + line-height: 1; |
| 1225 | +} |
| 1226 | + |
| 1227 | +div.admonition p.last { |
| 1228 | + margin-bottom: 0; |
| 1229 | +} |
| 1230 | + |
| 1231 | +div.highlight { |
| 1232 | + background-color: white; |
| 1233 | +} |
| 1234 | + |
| 1235 | +dt:target, .highlight { |
| 1236 | + background: #FAF3E8; |
| 1237 | +} |
| 1238 | + |
| 1239 | +div.note { |
| 1240 | + background-color: #eee; |
| 1241 | + border: 1px solid #ccc; |
| 1242 | +} |
| 1243 | + |
| 1244 | +div.seealso { |
| 1245 | + background-color: #ffc; |
| 1246 | + border: 1px solid #ff6; |
| 1247 | +} |
| 1248 | + |
| 1249 | +div.topic { |
| 1250 | + background-color: #eee; |
| 1251 | +} |
| 1252 | + |
| 1253 | +p.admonition-title { |
| 1254 | + display: inline; |
| 1255 | +} |
| 1256 | + |
| 1257 | +p.admonition-title:after { |
| 1258 | + content: ":"; |
| 1259 | +} |
| 1260 | + |
| 1261 | +pre, tt { |
| 1262 | + font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; |
| 1263 | + font-size: 0.9em; |
| 1264 | +} |
| 1265 | + |
| 1266 | +img.screenshot { |
| 1267 | +} |
| 1268 | + |
| 1269 | +tt.descname, tt.descclassname { |
| 1270 | + font-size: 0.95em; |
| 1271 | +} |
| 1272 | + |
| 1273 | +tt.descname { |
| 1274 | + padding-right: 0.08em; |
| 1275 | +} |
| 1276 | + |
| 1277 | +img.screenshot { |
| 1278 | + -moz-box-shadow: 2px 2px 4px #eee; |
| 1279 | + -webkit-box-shadow: 2px 2px 4px #eee; |
| 1280 | + box-shadow: 2px 2px 4px #eee; |
| 1281 | +} |
| 1282 | + |
| 1283 | +table.docutils { |
| 1284 | + border: 1px solid #888; |
| 1285 | + -moz-box-shadow: 2px 2px 4px #eee; |
| 1286 | + -webkit-box-shadow: 2px 2px 4px #eee; |
| 1287 | + box-shadow: 2px 2px 4px #eee; |
| 1288 | +} |
| 1289 | + |
| 1290 | +table.docutils td, table.docutils th { |
| 1291 | + border: 1px solid #888; |
| 1292 | + padding: 0.25em 0.7em; |
| 1293 | +} |
| 1294 | + |
| 1295 | +table.field-list, table.footnote { |
| 1296 | + border: none; |
| 1297 | + -moz-box-shadow: none; |
| 1298 | + -webkit-box-shadow: none; |
| 1299 | + box-shadow: none; |
| 1300 | +} |
| 1301 | + |
| 1302 | +table.footnote { |
| 1303 | + margin: 15px 0; |
| 1304 | + width: 100%; |
| 1305 | + border: 1px solid #eee; |
| 1306 | + background: #fdfdfd; |
| 1307 | + font-size: 0.9em; |
| 1308 | +} |
| 1309 | + |
| 1310 | +table.footnote + table.footnote { |
| 1311 | + margin-top: -15px; |
| 1312 | + border-top: none; |
| 1313 | +} |
| 1314 | + |
| 1315 | +table.field-list th { |
| 1316 | + padding: 0 0.8em 0 0; |
| 1317 | +} |
| 1318 | + |
| 1319 | +table.field-list td { |
| 1320 | + padding: 0; |
| 1321 | +} |
| 1322 | + |
| 1323 | +table.footnote td.label { |
| 1324 | + width: 0px; |
| 1325 | + padding: 0.3em 0 0.3em 0.5em; |
| 1326 | +} |
| 1327 | + |
| 1328 | +table.footnote td { |
| 1329 | + padding: 0.3em 0.5em; |
| 1330 | +} |
| 1331 | + |
| 1332 | +dl { |
| 1333 | + margin: 0; |
| 1334 | + padding: 0; |
| 1335 | +} |
| 1336 | + |
| 1337 | +dl dd { |
| 1338 | + margin-left: 30px; |
| 1339 | +} |
| 1340 | + |
| 1341 | +blockquote { |
| 1342 | + margin: 0 0 0 30px; |
| 1343 | + padding: 0; |
| 1344 | +} |
| 1345 | + |
| 1346 | +ul, ol { |
| 1347 | + margin: 10px 0 10px 30px; |
| 1348 | + padding: 0; |
| 1349 | +} |
| 1350 | + |
| 1351 | +pre { |
| 1352 | + background: #eee; |
| 1353 | + padding: 7px 30px; |
| 1354 | + margin: 15px -30px; |
| 1355 | + line-height: 1.3em; |
| 1356 | +} |
| 1357 | + |
| 1358 | +dl pre, blockquote pre, li pre { |
| 1359 | + margin-left: -60px; |
| 1360 | + padding-left: 60px; |
| 1361 | +} |
| 1362 | + |
| 1363 | +dl dl pre { |
| 1364 | + margin-left: -90px; |
| 1365 | + padding-left: 90px; |
| 1366 | +} |
| 1367 | + |
| 1368 | +tt { |
| 1369 | + background-color: #ecf0f3; |
| 1370 | + color: #222; |
| 1371 | + /* padding: 1px 2px; */ |
| 1372 | +} |
| 1373 | + |
| 1374 | +tt.xref, a tt { |
| 1375 | + background-color: #FBFBFB; |
| 1376 | + border-bottom: 1px solid white; |
| 1377 | +} |
| 1378 | + |
| 1379 | +a.reference { |
| 1380 | + text-decoration: none; |
| 1381 | + border-bottom: 1px dotted #004B6B; |
| 1382 | +} |
| 1383 | + |
| 1384 | +a.reference:hover { |
| 1385 | + border-bottom: 1px solid #6D4100; |
| 1386 | +} |
| 1387 | + |
| 1388 | +a.footnote-reference { |
| 1389 | + text-decoration: none; |
| 1390 | + font-size: 0.7em; |
| 1391 | + vertical-align: top; |
| 1392 | + border-bottom: 1px dotted #004B6B; |
| 1393 | +} |
| 1394 | + |
| 1395 | +a.footnote-reference:hover { |
| 1396 | + border-bottom: 1px solid #6D4100; |
| 1397 | +} |
| 1398 | + |
| 1399 | +a:hover tt { |
| 1400 | + background: #EEE; |
| 1401 | +} |
| 1402 | |
| 1403 | === added file 'magentoerpconnect/doc/_themes/flask/static/small_flask.css' |
| 1404 | --- magentoerpconnect/doc/_themes/flask/static/small_flask.css 1970-01-01 00:00:00 +0000 |
| 1405 | +++ magentoerpconnect/doc/_themes/flask/static/small_flask.css 2013-08-13 17:30:12 +0000 |
| 1406 | @@ -0,0 +1,70 @@ |
| 1407 | +/* |
| 1408 | + * small_flask.css_t |
| 1409 | + * ~~~~~~~~~~~~~~~~~ |
| 1410 | + * |
| 1411 | + * :copyright: Copyright 2010 by Armin Ronacher. |
| 1412 | + * :license: Flask Design License, see LICENSE for details. |
| 1413 | + */ |
| 1414 | + |
| 1415 | +body { |
| 1416 | + margin: 0; |
| 1417 | + padding: 20px 30px; |
| 1418 | +} |
| 1419 | + |
| 1420 | +div.documentwrapper { |
| 1421 | + float: none; |
| 1422 | + background: white; |
| 1423 | +} |
| 1424 | + |
| 1425 | +div.sphinxsidebar { |
| 1426 | + display: block; |
| 1427 | + float: none; |
| 1428 | + width: 102.5%; |
| 1429 | + margin: 50px -30px -20px -30px; |
| 1430 | + padding: 10px 20px; |
| 1431 | + background: #333; |
| 1432 | + color: white; |
| 1433 | +} |
| 1434 | + |
| 1435 | +div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, |
| 1436 | +div.sphinxsidebar h3 a { |
| 1437 | + color: white; |
| 1438 | +} |
| 1439 | + |
| 1440 | +div.sphinxsidebar a { |
| 1441 | + color: #aaa; |
| 1442 | +} |
| 1443 | + |
| 1444 | +div.sphinxsidebar p.logo { |
| 1445 | + display: none; |
| 1446 | +} |
| 1447 | + |
| 1448 | +div.document { |
| 1449 | + width: 100%; |
| 1450 | + margin: 0; |
| 1451 | +} |
| 1452 | + |
| 1453 | +div.related { |
| 1454 | + display: block; |
| 1455 | + margin: 0; |
| 1456 | + padding: 10px 0 20px 0; |
| 1457 | +} |
| 1458 | + |
| 1459 | +div.related ul, |
| 1460 | +div.related ul li { |
| 1461 | + margin: 0; |
| 1462 | + padding: 0; |
| 1463 | +} |
| 1464 | + |
| 1465 | +div.footer { |
| 1466 | + display: none; |
| 1467 | +} |
| 1468 | + |
| 1469 | +div.bodywrapper { |
| 1470 | + margin: 0; |
| 1471 | +} |
| 1472 | + |
| 1473 | +div.body { |
| 1474 | + min-height: 0; |
| 1475 | + padding: 0; |
| 1476 | +} |
| 1477 | |
| 1478 | === added file 'magentoerpconnect/doc/_themes/flask/theme.conf' |
| 1479 | --- magentoerpconnect/doc/_themes/flask/theme.conf 1970-01-01 00:00:00 +0000 |
| 1480 | +++ magentoerpconnect/doc/_themes/flask/theme.conf 2013-08-13 17:30:12 +0000 |
| 1481 | @@ -0,0 +1,9 @@ |
| 1482 | +[theme] |
| 1483 | +inherit = basic |
| 1484 | +stylesheet = flasky.css |
| 1485 | +pygments_style = flask_theme_support.FlaskyStyle |
| 1486 | + |
| 1487 | +[options] |
| 1488 | +index_logo = |
| 1489 | +index_logo_height = 120px |
| 1490 | +touch_icon = |
| 1491 | |
| 1492 | === added directory 'magentoerpconnect/doc/_themes/flask_small' |
| 1493 | === added file 'magentoerpconnect/doc/_themes/flask_small/layout.html' |
| 1494 | --- magentoerpconnect/doc/_themes/flask_small/layout.html 1970-01-01 00:00:00 +0000 |
| 1495 | +++ magentoerpconnect/doc/_themes/flask_small/layout.html 2013-08-13 17:30:12 +0000 |
| 1496 | @@ -0,0 +1,22 @@ |
| 1497 | +{% extends "basic/layout.html" %} |
| 1498 | +{% block header %} |
| 1499 | + {{ super() }} |
| 1500 | + {% if pagename == 'index' %} |
| 1501 | + <div class=indexwrapper> |
| 1502 | + {% endif %} |
| 1503 | +{% endblock %} |
| 1504 | +{% block footer %} |
| 1505 | + {% if pagename == 'index' %} |
| 1506 | + </div> |
| 1507 | + {% endif %} |
| 1508 | +{% endblock %} |
| 1509 | +{# do not display relbars #} |
| 1510 | +{% block relbar1 %}{% endblock %} |
| 1511 | +{% block relbar2 %} |
| 1512 | + {% if theme_github_fork %} |
| 1513 | + <a href="http://github.com/{{ theme_github_fork }}"><img style="position: fixed; top: 0; right: 0; border: 0;" |
| 1514 | + src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a> |
| 1515 | + {% endif %} |
| 1516 | +{% endblock %} |
| 1517 | +{% block sidebar1 %}{% endblock %} |
| 1518 | +{% block sidebar2 %}{% endblock %} |
| 1519 | |
| 1520 | === added directory 'magentoerpconnect/doc/_themes/flask_small/static' |
| 1521 | === added file 'magentoerpconnect/doc/_themes/flask_small/static/flasky.css_t' |
| 1522 | --- magentoerpconnect/doc/_themes/flask_small/static/flasky.css_t 1970-01-01 00:00:00 +0000 |
| 1523 | +++ magentoerpconnect/doc/_themes/flask_small/static/flasky.css_t 2013-08-13 17:30:12 +0000 |
| 1524 | @@ -0,0 +1,287 @@ |
| 1525 | +/* |
| 1526 | + * flasky.css_t |
| 1527 | + * ~~~~~~~~~~~~ |
| 1528 | + * |
| 1529 | + * Sphinx stylesheet -- flasky theme based on nature theme. |
| 1530 | + * |
| 1531 | + * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. |
| 1532 | + * :license: BSD, see LICENSE for details. |
| 1533 | + * |
| 1534 | + */ |
| 1535 | + |
| 1536 | +@import url("basic.css"); |
| 1537 | + |
| 1538 | +/* -- page layout ----------------------------------------------------------- */ |
| 1539 | + |
| 1540 | +body { |
| 1541 | + font-family: 'Georgia', serif; |
| 1542 | + font-size: 17px; |
| 1543 | + color: #000; |
| 1544 | + background: white; |
| 1545 | + margin: 0; |
| 1546 | + padding: 0; |
| 1547 | +} |
| 1548 | + |
| 1549 | +div.documentwrapper { |
| 1550 | + float: left; |
| 1551 | + width: 100%; |
| 1552 | +} |
| 1553 | + |
| 1554 | +div.bodywrapper { |
| 1555 | + margin: 40px auto 0 auto; |
| 1556 | + width: 700px; |
| 1557 | +} |
| 1558 | + |
| 1559 | +hr { |
| 1560 | + border: 1px solid #B1B4B6; |
| 1561 | +} |
| 1562 | + |
| 1563 | +div.body { |
| 1564 | + background-color: #ffffff; |
| 1565 | + color: #3E4349; |
| 1566 | + padding: 0 30px 30px 30px; |
| 1567 | +} |
| 1568 | + |
| 1569 | +img.floatingflask { |
| 1570 | + padding: 0 0 10px 10px; |
| 1571 | + float: right; |
| 1572 | +} |
| 1573 | + |
| 1574 | +div.footer { |
| 1575 | + text-align: right; |
| 1576 | + color: #888; |
| 1577 | + padding: 10px; |
| 1578 | + font-size: 14px; |
| 1579 | + width: 650px; |
| 1580 | + margin: 0 auto 40px auto; |
| 1581 | +} |
| 1582 | + |
| 1583 | +div.footer a { |
| 1584 | + color: #888; |
| 1585 | + text-decoration: underline; |
| 1586 | +} |
| 1587 | + |
| 1588 | +div.related { |
| 1589 | + line-height: 32px; |
| 1590 | + color: #888; |
| 1591 | +} |
| 1592 | + |
| 1593 | +div.related ul { |
| 1594 | + padding: 0 0 0 10px; |
| 1595 | +} |
| 1596 | + |
| 1597 | +div.related a { |
| 1598 | + color: #444; |
| 1599 | +} |
| 1600 | + |
| 1601 | +/* -- body styles ----------------------------------------------------------- */ |
| 1602 | + |
| 1603 | +a { |
| 1604 | + color: #004B6B; |
| 1605 | + text-decoration: underline; |
| 1606 | +} |
| 1607 | + |
| 1608 | +a:hover { |
| 1609 | + color: #6D4100; |
| 1610 | + text-decoration: underline; |
| 1611 | +} |
| 1612 | + |
| 1613 | +div.body { |
| 1614 | + padding-bottom: 40px; /* saved for footer */ |
| 1615 | +} |
| 1616 | + |
| 1617 | +div.body h1, |
| 1618 | +div.body h2, |
| 1619 | +div.body h3, |
| 1620 | +div.body h4, |
| 1621 | +div.body h5, |
| 1622 | +div.body h6 { |
| 1623 | + font-family: 'Garamond', 'Georgia', serif; |
| 1624 | + font-weight: normal; |
| 1625 | + margin: 30px 0px 10px 0px; |
| 1626 | + padding: 0; |
| 1627 | +} |
| 1628 | + |
| 1629 | +{% if theme_index_logo %} |
| 1630 | +div.indexwrapper h1 { |
| 1631 | + text-indent: -999999px; |
| 1632 | + background: url({{ theme_index_logo }}) no-repeat center center; |
| 1633 | + height: {{ theme_index_logo_height }}; |
| 1634 | +} |
| 1635 | +{% endif %} |
| 1636 | + |
| 1637 | +div.body h2 { font-size: 180%; } |
| 1638 | +div.body h3 { font-size: 150%; } |
| 1639 | +div.body h4 { font-size: 130%; } |
| 1640 | +div.body h5 { font-size: 100%; } |
| 1641 | +div.body h6 { font-size: 100%; } |
| 1642 | + |
| 1643 | +a.headerlink { |
| 1644 | + color: white; |
| 1645 | + padding: 0 4px; |
| 1646 | + text-decoration: none; |
| 1647 | +} |
| 1648 | + |
| 1649 | +a.headerlink:hover { |
| 1650 | + color: #444; |
| 1651 | + background: #eaeaea; |
| 1652 | +} |
| 1653 | + |
| 1654 | +div.body p, div.body dd, div.body li { |
| 1655 | + line-height: 1.4em; |
| 1656 | +} |
| 1657 | + |
| 1658 | +div.admonition { |
| 1659 | + background: #fafafa; |
| 1660 | + margin: 20px -30px; |
| 1661 | + padding: 10px 30px; |
| 1662 | + border-top: 1px solid #ccc; |
| 1663 | + border-bottom: 1px solid #ccc; |
| 1664 | +} |
| 1665 | + |
| 1666 | +div.admonition p.admonition-title { |
| 1667 | + font-family: 'Garamond', 'Georgia', serif; |
| 1668 | + font-weight: normal; |
| 1669 | + font-size: 24px; |
| 1670 | + margin: 0 0 10px 0; |
| 1671 | + padding: 0; |
| 1672 | + line-height: 1; |
| 1673 | +} |
| 1674 | + |
| 1675 | +div.admonition p.last { |
| 1676 | + margin-bottom: 0; |
| 1677 | +} |
| 1678 | + |
| 1679 | +div.highlight{ |
| 1680 | + background-color: white; |
| 1681 | +} |
| 1682 | + |
| 1683 | +dt:target, .highlight { |
| 1684 | + background: #FAF3E8; |
| 1685 | +} |
| 1686 | + |
| 1687 | +div.note { |
| 1688 | + background-color: #eee; |
| 1689 | + border: 1px solid #ccc; |
| 1690 | +} |
| 1691 | + |
| 1692 | +div.seealso { |
| 1693 | + background-color: #ffc; |
| 1694 | + border: 1px solid #ff6; |
| 1695 | +} |
| 1696 | + |
| 1697 | +div.topic { |
| 1698 | + background-color: #eee; |
| 1699 | +} |
| 1700 | + |
| 1701 | +div.warning { |
| 1702 | + background-color: #ffe4e4; |
| 1703 | + border: 1px solid #f66; |
| 1704 | +} |
| 1705 | + |
| 1706 | +p.admonition-title { |
| 1707 | + display: inline; |
| 1708 | +} |
| 1709 | + |
| 1710 | +p.admonition-title:after { |
| 1711 | + content: ":"; |
| 1712 | +} |
| 1713 | + |
| 1714 | +pre, tt { |
| 1715 | + font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; |
| 1716 | + font-size: 0.85em; |
| 1717 | +} |
| 1718 | + |
| 1719 | +img.screenshot { |
| 1720 | +} |
| 1721 | + |
| 1722 | +tt.descname, tt.descclassname { |
| 1723 | + font-size: 0.95em; |
| 1724 | +} |
| 1725 | + |
| 1726 | +tt.descname { |
| 1727 | + padding-right: 0.08em; |
| 1728 | +} |
| 1729 | + |
| 1730 | +img.screenshot { |
| 1731 | + -moz-box-shadow: 2px 2px 4px #eee; |
| 1732 | + -webkit-box-shadow: 2px 2px 4px #eee; |
| 1733 | + box-shadow: 2px 2px 4px #eee; |
| 1734 | +} |
| 1735 | + |
| 1736 | +table.docutils { |
| 1737 | + border: 1px solid #888; |
| 1738 | + -moz-box-shadow: 2px 2px 4px #eee; |
| 1739 | + -webkit-box-shadow: 2px 2px 4px #eee; |
| 1740 | + box-shadow: 2px 2px 4px #eee; |
| 1741 | +} |
| 1742 | + |
| 1743 | +table.docutils td, table.docutils th { |
| 1744 | + border: 1px solid #888; |
| 1745 | + padding: 0.25em 0.7em; |
| 1746 | +} |
| 1747 | + |
| 1748 | +table.field-list, table.footnote { |
| 1749 | + border: none; |
| 1750 | + -moz-box-shadow: none; |
| 1751 | + -webkit-box-shadow: none; |
| 1752 | + box-shadow: none; |
| 1753 | +} |
| 1754 | + |
| 1755 | +table.footnote { |
| 1756 | + margin: 15px 0; |
| 1757 | + width: 100%; |
| 1758 | + border: 1px solid #eee; |
| 1759 | +} |
| 1760 | + |
| 1761 | +table.field-list th { |
| 1762 | + padding: 0 0.8em 0 0; |
| 1763 | +} |
| 1764 | + |
| 1765 | +table.field-list td { |
| 1766 | + padding: 0; |
| 1767 | +} |
| 1768 | + |
| 1769 | +table.footnote td { |
| 1770 | + padding: 0.5em; |
| 1771 | +} |
| 1772 | + |
| 1773 | +dl { |
| 1774 | + margin: 0; |
| 1775 | + padding: 0; |
| 1776 | +} |
| 1777 | + |
| 1778 | +dl dd { |
| 1779 | + margin-left: 30px; |
| 1780 | +} |
| 1781 | + |
| 1782 | +pre { |
| 1783 | + padding: 0; |
| 1784 | + margin: 15px -30px; |
| 1785 | + padding: 8px; |
| 1786 | + line-height: 1.3em; |
| 1787 | + padding: 7px 30px; |
| 1788 | + background: #eee; |
| 1789 | + border-radius: 2px; |
| 1790 | + -moz-border-radius: 2px; |
| 1791 | + -webkit-border-radius: 2px; |
| 1792 | +} |
| 1793 | + |
| 1794 | +dl pre { |
| 1795 | + margin-left: -60px; |
| 1796 | + padding-left: 60px; |
| 1797 | +} |
| 1798 | + |
| 1799 | +tt { |
| 1800 | + background-color: #ecf0f3; |
| 1801 | + color: #222; |
| 1802 | + /* padding: 1px 2px; */ |
| 1803 | +} |
| 1804 | + |
| 1805 | +tt.xref, a tt { |
| 1806 | + background-color: #FBFBFB; |
| 1807 | +} |
| 1808 | + |
| 1809 | +a:hover tt { |
| 1810 | + background: #EEE; |
| 1811 | +} |
| 1812 | |
| 1813 | === added file 'magentoerpconnect/doc/_themes/flask_small/theme.conf' |
| 1814 | --- magentoerpconnect/doc/_themes/flask_small/theme.conf 1970-01-01 00:00:00 +0000 |
| 1815 | +++ magentoerpconnect/doc/_themes/flask_small/theme.conf 2013-08-13 17:30:12 +0000 |
| 1816 | @@ -0,0 +1,10 @@ |
| 1817 | +[theme] |
| 1818 | +inherit = basic |
| 1819 | +stylesheet = flasky.css |
| 1820 | +nosidebar = true |
| 1821 | +pygments_style = flask_theme_support.FlaskyStyle |
| 1822 | + |
| 1823 | +[options] |
| 1824 | +index_logo = '' |
| 1825 | +index_logo_height = 120px |
| 1826 | +github_fork = '' |
| 1827 | |
| 1828 | === added file 'magentoerpconnect/doc/_themes/flask_theme_support.py' |
| 1829 | --- magentoerpconnect/doc/_themes/flask_theme_support.py 1970-01-01 00:00:00 +0000 |
| 1830 | +++ magentoerpconnect/doc/_themes/flask_theme_support.py 2013-08-13 17:30:12 +0000 |
| 1831 | @@ -0,0 +1,86 @@ |
| 1832 | +# flasky extensions. flasky pygments style based on tango style |
| 1833 | +from pygments.style import Style |
| 1834 | +from pygments.token import Keyword, Name, Comment, String, Error, \ |
| 1835 | + Number, Operator, Generic, Whitespace, Punctuation, Other, Literal |
| 1836 | + |
| 1837 | + |
| 1838 | +class FlaskyStyle(Style): |
| 1839 | + background_color = "#f8f8f8" |
| 1840 | + default_style = "" |
| 1841 | + |
| 1842 | + styles = { |
| 1843 | + # No corresponding class for the following: |
| 1844 | + #Text: "", # class: '' |
| 1845 | + Whitespace: "underline #f8f8f8", # class: 'w' |
| 1846 | + Error: "#a40000 border:#ef2929", # class: 'err' |
| 1847 | + Other: "#000000", # class 'x' |
| 1848 | + |
| 1849 | + Comment: "italic #8f5902", # class: 'c' |
| 1850 | + Comment.Preproc: "noitalic", # class: 'cp' |
| 1851 | + |
| 1852 | + Keyword: "bold #004461", # class: 'k' |
| 1853 | + Keyword.Constant: "bold #004461", # class: 'kc' |
| 1854 | + Keyword.Declaration: "bold #004461", # class: 'kd' |
| 1855 | + Keyword.Namespace: "bold #004461", # class: 'kn' |
| 1856 | + Keyword.Pseudo: "bold #004461", # class: 'kp' |
| 1857 | + Keyword.Reserved: "bold #004461", # class: 'kr' |
| 1858 | + Keyword.Type: "bold #004461", # class: 'kt' |
| 1859 | + |
| 1860 | + Operator: "#582800", # class: 'o' |
| 1861 | + Operator.Word: "bold #004461", # class: 'ow' - like keywords |
| 1862 | + |
| 1863 | + Punctuation: "bold #000000", # class: 'p' |
| 1864 | + |
| 1865 | + # because special names such as Name.Class, Name.Function, etc. |
| 1866 | + # are not recognized as such later in the parsing, we choose them |
| 1867 | + # to look the same as ordinary variables. |
| 1868 | + Name: "#000000", # class: 'n' |
| 1869 | + Name.Attribute: "#c4a000", # class: 'na' - to be revised |
| 1870 | + Name.Builtin: "#004461", # class: 'nb' |
| 1871 | + Name.Builtin.Pseudo: "#3465a4", # class: 'bp' |
| 1872 | + Name.Class: "#000000", # class: 'nc' - to be revised |
| 1873 | + Name.Constant: "#000000", # class: 'no' - to be revised |
| 1874 | + Name.Decorator: "#888", # class: 'nd' - to be revised |
| 1875 | + Name.Entity: "#ce5c00", # class: 'ni' |
| 1876 | + Name.Exception: "bold #cc0000", # class: 'ne' |
| 1877 | + Name.Function: "#000000", # class: 'nf' |
| 1878 | + Name.Property: "#000000", # class: 'py' |
| 1879 | + Name.Label: "#f57900", # class: 'nl' |
| 1880 | + Name.Namespace: "#000000", # class: 'nn' - to be revised |
| 1881 | + Name.Other: "#000000", # class: 'nx' |
| 1882 | + Name.Tag: "bold #004461", # class: 'nt' - like a keyword |
| 1883 | + Name.Variable: "#000000", # class: 'nv' - to be revised |
| 1884 | + Name.Variable.Class: "#000000", # class: 'vc' - to be revised |
| 1885 | + Name.Variable.Global: "#000000", # class: 'vg' - to be revised |
| 1886 | + Name.Variable.Instance: "#000000", # class: 'vi' - to be revised |
| 1887 | + |
| 1888 | + Number: "#990000", # class: 'm' |
| 1889 | + |
| 1890 | + Literal: "#000000", # class: 'l' |
| 1891 | + Literal.Date: "#000000", # class: 'ld' |
| 1892 | + |
| 1893 | + String: "#4e9a06", # class: 's' |
| 1894 | + String.Backtick: "#4e9a06", # class: 'sb' |
| 1895 | + String.Char: "#4e9a06", # class: 'sc' |
| 1896 | + String.Doc: "italic #8f5902", # class: 'sd' - like a comment |
| 1897 | + String.Double: "#4e9a06", # class: 's2' |
| 1898 | + String.Escape: "#4e9a06", # class: 'se' |
| 1899 | + String.Heredoc: "#4e9a06", # class: 'sh' |
| 1900 | + String.Interpol: "#4e9a06", # class: 'si' |
| 1901 | + String.Other: "#4e9a06", # class: 'sx' |
| 1902 | + String.Regex: "#4e9a06", # class: 'sr' |
| 1903 | + String.Single: "#4e9a06", # class: 's1' |
| 1904 | + String.Symbol: "#4e9a06", # class: 'ss' |
| 1905 | + |
| 1906 | + Generic: "#000000", # class: 'g' |
| 1907 | + Generic.Deleted: "#a40000", # class: 'gd' |
| 1908 | + Generic.Emph: "italic #000000", # class: 'ge' |
| 1909 | + Generic.Error: "#ef2929", # class: 'gr' |
| 1910 | + Generic.Heading: "bold #000080", # class: 'gh' |
| 1911 | + Generic.Inserted: "#00A000", # class: 'gi' |
| 1912 | + Generic.Output: "#888", # class: 'go' |
| 1913 | + Generic.Prompt: "#745334", # class: 'gp' |
| 1914 | + Generic.Strong: "bold #000000", # class: 'gs' |
| 1915 | + Generic.Subheading: "bold #800080", # class: 'gu' |
| 1916 | + Generic.Traceback: "bold #a40000", # class: 'gt' |
| 1917 | + } |
| 1918 | |
| 1919 | === added directory 'magentoerpconnect/doc/api' |
| 1920 | === added file 'magentoerpconnect/doc/api/api_backend.rst' |
| 1921 | --- magentoerpconnect/doc/api/api_backend.rst 1970-01-01 00:00:00 +0000 |
| 1922 | +++ magentoerpconnect/doc/api/api_backend.rst 2013-08-13 17:30:12 +0000 |
| 1923 | @@ -0,0 +1,7 @@ |
| 1924 | +Backend |
| 1925 | +======= |
| 1926 | + |
| 1927 | +.. automodule:: openerp.addons.magentoerpconnect.backend |
| 1928 | + :members: |
| 1929 | + :undoc-members: |
| 1930 | + :show-inheritance: |
| 1931 | |
| 1932 | === added file 'magentoerpconnect/doc/api/api_backend_adapter.rst' |
| 1933 | --- magentoerpconnect/doc/api/api_backend_adapter.rst 1970-01-01 00:00:00 +0000 |
| 1934 | +++ magentoerpconnect/doc/api/api_backend_adapter.rst 2013-08-13 17:30:12 +0000 |
| 1935 | @@ -0,0 +1,7 @@ |
| 1936 | +Backend Adapters |
| 1937 | +================ |
| 1938 | + |
| 1939 | +.. automodule:: openerp.addons.magentoerpconnect.unit.backend_adapter |
| 1940 | + :members: |
| 1941 | + :undoc-members: |
| 1942 | + :show-inheritance: |
| 1943 | |
| 1944 | === added file 'magentoerpconnect/doc/api/api_binder.rst' |
| 1945 | --- magentoerpconnect/doc/api/api_binder.rst 1970-01-01 00:00:00 +0000 |
| 1946 | +++ magentoerpconnect/doc/api/api_binder.rst 2013-08-13 17:30:12 +0000 |
| 1947 | @@ -0,0 +1,7 @@ |
| 1948 | +Binders |
| 1949 | +======= |
| 1950 | + |
| 1951 | +.. automodule:: openerp.addons.magentoerpconnect.unit.binder |
| 1952 | + :members: |
| 1953 | + :undoc-members: |
| 1954 | + :show-inheritance: |
| 1955 | |
| 1956 | === added file 'magentoerpconnect/doc/api/api_connector.rst' |
| 1957 | --- magentoerpconnect/doc/api/api_connector.rst 1970-01-01 00:00:00 +0000 |
| 1958 | +++ magentoerpconnect/doc/api/api_connector.rst 2013-08-13 17:30:12 +0000 |
| 1959 | @@ -0,0 +1,7 @@ |
| 1960 | +Connector |
| 1961 | +========= |
| 1962 | + |
| 1963 | +.. automodule:: openerp.addons.magentoerpconnect.connector |
| 1964 | + :members: |
| 1965 | + :undoc-members: |
| 1966 | + :show-inheritance: |
| 1967 | |
| 1968 | === added file 'magentoerpconnect/doc/api/api_consumer.rst' |
| 1969 | --- magentoerpconnect/doc/api/api_consumer.rst 1970-01-01 00:00:00 +0000 |
| 1970 | +++ magentoerpconnect/doc/api/api_consumer.rst 2013-08-13 17:30:12 +0000 |
| 1971 | @@ -0,0 +1,7 @@ |
| 1972 | +Consumers |
| 1973 | +========= |
| 1974 | + |
| 1975 | +.. automodule:: openerp.addons.magentoerpconnect.consumer |
| 1976 | + :members: |
| 1977 | + :undoc-members: |
| 1978 | + :show-inheritance: |
| 1979 | |
| 1980 | === added file 'magentoerpconnect/doc/api/api_delivery.rst' |
| 1981 | --- magentoerpconnect/doc/api/api_delivery.rst 1970-01-01 00:00:00 +0000 |
| 1982 | +++ magentoerpconnect/doc/api/api_delivery.rst 2013-08-13 17:30:12 +0000 |
| 1983 | @@ -0,0 +1,7 @@ |
| 1984 | +Delivery |
| 1985 | +======== |
| 1986 | + |
| 1987 | +.. automodule:: openerp.addons.magentoerpconnect.delivery |
| 1988 | + :members: |
| 1989 | + :undoc-members: |
| 1990 | + :show-inheritance: |
| 1991 | |
| 1992 | === added file 'magentoerpconnect/doc/api/api_exception.rst' |
| 1993 | --- magentoerpconnect/doc/api/api_exception.rst 1970-01-01 00:00:00 +0000 |
| 1994 | +++ magentoerpconnect/doc/api/api_exception.rst 2013-08-13 17:30:12 +0000 |
| 1995 | @@ -0,0 +1,9 @@ |
| 1996 | +Exceptions |
| 1997 | +========== |
| 1998 | + |
| 1999 | +.. automodule:: openerp.addons.magentoerpconnect.exception |
| 2000 | + :members: |
| 2001 | + :undoc-members: |
| 2002 | + :show-inheritance: |
| 2003 | + |
| 2004 | + |
| 2005 | |
| 2006 | === added file 'magentoerpconnect/doc/api/api_invoice.rst' |
| 2007 | --- magentoerpconnect/doc/api/api_invoice.rst 1970-01-01 00:00:00 +0000 |
| 2008 | +++ magentoerpconnect/doc/api/api_invoice.rst 2013-08-13 17:30:12 +0000 |
| 2009 | @@ -0,0 +1,7 @@ |
| 2010 | +Invoice |
| 2011 | +======= |
| 2012 | + |
| 2013 | +.. automodule:: openerp.addons.magentoerpconnect.invoice |
| 2014 | + :members: |
| 2015 | + :undoc-members: |
| 2016 | + :show-inheritance: |
| 2017 | |
| 2018 | === added file 'magentoerpconnect/doc/api/api_magento_model.rst' |
| 2019 | --- magentoerpconnect/doc/api/api_magento_model.rst 1970-01-01 00:00:00 +0000 |
| 2020 | +++ magentoerpconnect/doc/api/api_magento_model.rst 2013-08-13 17:30:12 +0000 |
| 2021 | @@ -0,0 +1,7 @@ |
| 2022 | +Magento Models |
| 2023 | +============== |
| 2024 | + |
| 2025 | +.. automodule:: openerp.addons.magentoerpconnect.magento_model |
| 2026 | + :members: |
| 2027 | + :undoc-members: |
| 2028 | + :show-inheritance: |
| 2029 | |
| 2030 | === added file 'magentoerpconnect/doc/api/api_partner.rst' |
| 2031 | --- magentoerpconnect/doc/api/api_partner.rst 1970-01-01 00:00:00 +0000 |
| 2032 | +++ magentoerpconnect/doc/api/api_partner.rst 2013-08-13 17:30:12 +0000 |
| 2033 | @@ -0,0 +1,7 @@ |
| 2034 | +Partner |
| 2035 | +======= |
| 2036 | + |
| 2037 | +.. automodule:: openerp.addons.magentoerpconnect.partner |
| 2038 | + :members: |
| 2039 | + :undoc-members: |
| 2040 | + :show-inheritance: |
| 2041 | |
| 2042 | === added file 'magentoerpconnect/doc/api/api_partner_category.rst' |
| 2043 | --- magentoerpconnect/doc/api/api_partner_category.rst 1970-01-01 00:00:00 +0000 |
| 2044 | +++ magentoerpconnect/doc/api/api_partner_category.rst 2013-08-13 17:30:12 +0000 |
| 2045 | @@ -0,0 +1,7 @@ |
| 2046 | +Partner Category |
| 2047 | +================ |
| 2048 | + |
| 2049 | +.. automodule:: openerp.addons.magentoerpconnect.partner_category |
| 2050 | + :members: |
| 2051 | + :undoc-members: |
| 2052 | + :show-inheritance: |
| 2053 | |
| 2054 | === added file 'magentoerpconnect/doc/api/api_product.rst' |
| 2055 | --- magentoerpconnect/doc/api/api_product.rst 1970-01-01 00:00:00 +0000 |
| 2056 | +++ magentoerpconnect/doc/api/api_product.rst 2013-08-13 17:30:12 +0000 |
| 2057 | @@ -0,0 +1,7 @@ |
| 2058 | +Product |
| 2059 | +======= |
| 2060 | + |
| 2061 | +.. automodule:: openerp.addons.magentoerpconnect.product |
| 2062 | + :members: |
| 2063 | + :undoc-members: |
| 2064 | + :show-inheritance: |
| 2065 | |
| 2066 | === added file 'magentoerpconnect/doc/api/api_product_category.rst' |
| 2067 | --- magentoerpconnect/doc/api/api_product_category.rst 1970-01-01 00:00:00 +0000 |
| 2068 | +++ magentoerpconnect/doc/api/api_product_category.rst 2013-08-13 17:30:12 +0000 |
| 2069 | @@ -0,0 +1,7 @@ |
| 2070 | +Product Category |
| 2071 | +================ |
| 2072 | + |
| 2073 | +.. automodule:: openerp.addons.magentoerpconnect.product_category |
| 2074 | + :members: |
| 2075 | + :undoc-members: |
| 2076 | + :show-inheritance: |
| 2077 | |
| 2078 | === added file 'magentoerpconnect/doc/api/api_sale.rst' |
| 2079 | --- magentoerpconnect/doc/api/api_sale.rst 1970-01-01 00:00:00 +0000 |
| 2080 | +++ magentoerpconnect/doc/api/api_sale.rst 2013-08-13 17:30:12 +0000 |
| 2081 | @@ -0,0 +1,7 @@ |
| 2082 | +Sale |
| 2083 | +==== |
| 2084 | + |
| 2085 | +.. automodule:: openerp.addons.magentoerpconnect.sale |
| 2086 | + :members: |
| 2087 | + :undoc-members: |
| 2088 | + :show-inheritance: |
| 2089 | |
| 2090 | === added file 'magentoerpconnect/doc/api/api_stock_picking.rst' |
| 2091 | --- magentoerpconnect/doc/api/api_stock_picking.rst 1970-01-01 00:00:00 +0000 |
| 2092 | +++ magentoerpconnect/doc/api/api_stock_picking.rst 2013-08-13 17:30:12 +0000 |
| 2093 | @@ -0,0 +1,7 @@ |
| 2094 | +Stock Picking |
| 2095 | +============= |
| 2096 | + |
| 2097 | +.. automodule:: openerp.addons.magentoerpconnect.stock_picking |
| 2098 | + :members: |
| 2099 | + :undoc-members: |
| 2100 | + :show-inheritance: |
| 2101 | |
| 2102 | === added file 'magentoerpconnect/doc/api/api_stock_tracking.rst' |
| 2103 | --- magentoerpconnect/doc/api/api_stock_tracking.rst 1970-01-01 00:00:00 +0000 |
| 2104 | +++ magentoerpconnect/doc/api/api_stock_tracking.rst 2013-08-13 17:30:12 +0000 |
| 2105 | @@ -0,0 +1,7 @@ |
| 2106 | +Stock Tracking |
| 2107 | +============== |
| 2108 | + |
| 2109 | +.. automodule:: openerp.addons.magentoerpconnect.stock_tracking |
| 2110 | + :members: |
| 2111 | + :undoc-members: |
| 2112 | + :show-inheritance: |
| 2113 | |
| 2114 | === added file 'magentoerpconnect/doc/api/api_synchronizer.rst' |
| 2115 | --- magentoerpconnect/doc/api/api_synchronizer.rst 1970-01-01 00:00:00 +0000 |
| 2116 | +++ magentoerpconnect/doc/api/api_synchronizer.rst 2013-08-13 17:30:12 +0000 |
| 2117 | @@ -0,0 +1,26 @@ |
| 2118 | +Synchronizers |
| 2119 | +============= |
| 2120 | + |
| 2121 | +Import |
| 2122 | +------ |
| 2123 | + |
| 2124 | +.. automodule:: openerp.addons.magentoerpconnect.unit.import_synchronizer |
| 2125 | + :members: |
| 2126 | + :undoc-members: |
| 2127 | + :show-inheritance: |
| 2128 | + |
| 2129 | +Export |
| 2130 | +------ |
| 2131 | + |
| 2132 | +.. automodule:: openerp.addons.magentoerpconnect.unit.export_synchronizer |
| 2133 | + :members: |
| 2134 | + :undoc-members: |
| 2135 | + :show-inheritance: |
| 2136 | + |
| 2137 | +Delete |
| 2138 | +------ |
| 2139 | + |
| 2140 | +.. automodule:: openerp.addons.magentoerpconnect.unit.delete_synchronizer |
| 2141 | + :members: |
| 2142 | + :undoc-members: |
| 2143 | + :show-inheritance: |
| 2144 | |
| 2145 | === added file 'magentoerpconnect/doc/conf.py' |
| 2146 | --- magentoerpconnect/doc/conf.py 1970-01-01 00:00:00 +0000 |
| 2147 | +++ magentoerpconnect/doc/conf.py 2013-08-13 17:30:12 +0000 |
| 2148 | @@ -0,0 +1,275 @@ |
| 2149 | +# -*- coding: utf-8 -*- |
| 2150 | +# |
| 2151 | +# Connectors documentation build configuration file, created by |
| 2152 | +# sphinx-quickstart on Mon Feb 4 11:35:44 2013. |
| 2153 | +# |
| 2154 | +# This file is execfile()d with the current directory set to its containing dir. |
| 2155 | +# |
| 2156 | +# Note that not all possible configuration values are present in this |
| 2157 | +# autogenerated file. |
| 2158 | +# |
| 2159 | +# All configuration values have a default; values that are commented out |
| 2160 | +# serve to show the default. |
| 2161 | + |
| 2162 | +import sys, os |
| 2163 | + |
| 2164 | +# If extensions (or modules to document with autodoc) are in another directory, |
| 2165 | +# add these directories to sys.path here. If the directory is relative to the |
| 2166 | +# documentation root, use os.path.abspath to make it absolute, like shown here. |
| 2167 | +#sys.path.insert(0, os.path.abspath('.')) |
| 2168 | +sys.path.append(os.path.abspath('_themes')) |
| 2169 | +sys.path.append(os.path.abspath('../../../server')) |
| 2170 | + |
| 2171 | +# Load OpenERP with correct addons-path so the doc can be built even if |
| 2172 | +# the addon import modules from other branches |
| 2173 | +import openerp |
| 2174 | +BASE_PATH = os.path.abspath(os.path.join(os.getcwd(), '../../..')) |
| 2175 | +# You may need to change with your own paths |
| 2176 | +ADDONS_PATHS = ('server/openerp/addons', |
| 2177 | + 'webclient/addons', |
| 2178 | + 'addons', |
| 2179 | + 'connector', |
| 2180 | + 'e-commerce-addons', |
| 2181 | + 'magentoerpconnect') |
| 2182 | +pathes = [os.path.join(BASE_PATH, path) for path in ADDONS_PATHS] |
| 2183 | +options = ['--addons-path', ','.join(pathes)] |
| 2184 | +openerp.tools.config.parse_config(options) |
| 2185 | +os.environ['TZ'] = 'UTC' |
| 2186 | +openerp.service.start_internal() |
| 2187 | + |
| 2188 | +# -- General configuration ----------------------------------------------------- |
| 2189 | + |
| 2190 | +# If your documentation needs a minimal Sphinx version, state it here. |
| 2191 | +#needs_sphinx = '1.0' |
| 2192 | + |
| 2193 | +# Add any Sphinx extension module names here, as strings. They can be extensions |
| 2194 | +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. |
| 2195 | +extensions = ['sphinx.ext.autodoc', |
| 2196 | + 'sphinx.ext.intersphinx', |
| 2197 | + 'sphinx.ext.todo', |
| 2198 | + 'sphinx.ext.viewcode'] |
| 2199 | + |
| 2200 | +todo_include_todos = True |
| 2201 | + |
| 2202 | +# Add any paths that contain templates here, relative to this directory. |
| 2203 | +templates_path = ['_templates'] |
| 2204 | + |
| 2205 | +# The suffix of source filenames. |
| 2206 | +source_suffix = '.rst' |
| 2207 | + |
| 2208 | +# The encoding of source files. |
| 2209 | +#source_encoding = 'utf-8-sig' |
| 2210 | + |
| 2211 | +# The master toctree document. |
| 2212 | +master_doc = 'index' |
| 2213 | + |
| 2214 | +# General information about the project. |
| 2215 | +project = u'Magentoerpconnect' |
| 2216 | +copyright = u'2013, Camptocamp SA' |
| 2217 | + |
| 2218 | +# The version info for the project you're documenting, acts as replacement for |
| 2219 | +# |version| and |release|, also used in various other places throughout the |
| 2220 | +# built documents. |
| 2221 | +# |
| 2222 | +# The short X.Y version. |
| 2223 | +version = '0.1' |
| 2224 | +# The full version, including alpha/beta/rc tags. |
| 2225 | +release = '0.1' |
| 2226 | + |
| 2227 | +# The language for content autogenerated by Sphinx. Refer to documentation |
| 2228 | +# for a list of supported languages. |
| 2229 | +#language = None |
| 2230 | + |
| 2231 | +# There are two options for replacing |today|: either, you set today to some |
| 2232 | +# non-false value, then it is used: |
| 2233 | +#today = '' |
| 2234 | +# Else, today_fmt is used as the format for a strftime call. |
| 2235 | +#today_fmt = '%B %d, %Y' |
| 2236 | + |
| 2237 | +# List of patterns, relative to source directory, that match files and |
| 2238 | +# directories to ignore when looking for source files. |
| 2239 | +exclude_patterns = ['_build'] |
| 2240 | + |
| 2241 | +# The reST default role (used for this markup: `text`) to use for all documents. |
| 2242 | +#default_role = None |
| 2243 | + |
| 2244 | +# If true, '()' will be appended to :func: etc. cross-reference text. |
| 2245 | +#add_function_parentheses = True |
| 2246 | + |
| 2247 | +# If true, the current module name will be prepended to all description |
| 2248 | +# unit titles (such as .. function::). |
| 2249 | +#add_module_names = True |
| 2250 | + |
| 2251 | +# If true, sectionauthor and moduleauthor directives will be shown in the |
| 2252 | +# output. They are ignored by default. |
| 2253 | +#show_authors = False |
| 2254 | + |
| 2255 | +# The name of the Pygments (syntax highlighting) style to use. |
| 2256 | +pygments_style = 'sphinx' |
| 2257 | + |
| 2258 | +# A list of ignored prefixes for module index sorting. |
| 2259 | +#modindex_common_prefix = [] |
| 2260 | + |
| 2261 | + |
| 2262 | +# -- Options for HTML output --------------------------------------------------- |
| 2263 | + |
| 2264 | +# The theme to use for HTML and HTML Help pages. See the documentation for |
| 2265 | +# a list of builtin themes. |
| 2266 | +html_theme = 'flask' |
| 2267 | + |
| 2268 | +# Theme options are theme-specific and customize the look and feel of a theme |
| 2269 | +# further. For a list of options available for each theme, see the |
| 2270 | +# documentation. |
| 2271 | +#html_theme_options = {} |
| 2272 | + |
| 2273 | +# Add any paths that contain custom themes here, relative to this directory. |
| 2274 | +html_theme_path = ['_themes'] |
| 2275 | + |
| 2276 | +# The name for this set of Sphinx documents. If None, it defaults to |
| 2277 | +# "<project> v<release> documentation". |
| 2278 | +#html_title = None |
| 2279 | + |
| 2280 | +# A shorter title for the navigation bar. Default is the same as html_title. |
| 2281 | +#html_short_title = None |
| 2282 | + |
| 2283 | +# The name of an image file (relative to this directory) to place at the top |
| 2284 | +# of the sidebar. |
| 2285 | +#html_logo = None |
| 2286 | + |
| 2287 | +# The name of an image file (within the static path) to use as favicon of the |
| 2288 | +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 |
| 2289 | +# pixels large. |
| 2290 | +#html_favicon = None |
| 2291 | + |
| 2292 | +# Add any paths that contain custom static files (such as style sheets) here, |
| 2293 | +# relative to this directory. They are copied after the builtin static files, |
| 2294 | +# so a file named "default.css" will overwrite the builtin "default.css". |
| 2295 | +html_static_path = ['_static'] |
| 2296 | + |
| 2297 | +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, |
| 2298 | +# using the given strftime format. |
| 2299 | +#html_last_updated_fmt = '%b %d, %Y' |
| 2300 | + |
| 2301 | +# If true, SmartyPants will be used to convert quotes and dashes to |
| 2302 | +# typographically correct entities. |
| 2303 | +#html_use_smartypants = True |
| 2304 | + |
| 2305 | +# Custom sidebar templates, maps document names to template names. |
| 2306 | +#html_sidebars = {} |
| 2307 | + |
| 2308 | +# Additional templates that should be rendered to pages, maps page names to |
| 2309 | +# template names. |
| 2310 | +#html_additional_pages = {} |
| 2311 | + |
| 2312 | +# If false, no module index is generated. |
| 2313 | +#html_domain_indices = True |
| 2314 | + |
| 2315 | +# If false, no index is generated. |
| 2316 | +#html_use_index = True |
| 2317 | + |
| 2318 | +# If true, the index is split into individual pages for each letter. |
| 2319 | +#html_split_index = False |
| 2320 | + |
| 2321 | +# If true, links to the reST sources are added to the pages. |
| 2322 | +#html_show_sourcelink = True |
| 2323 | + |
| 2324 | +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. |
| 2325 | +#html_show_sphinx = True |
| 2326 | + |
| 2327 | +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. |
| 2328 | +#html_show_copyright = True |
| 2329 | + |
| 2330 | +# If true, an OpenSearch description file will be output, and all pages will |
| 2331 | +# contain a <link> tag referring to it. The value of this option must be the |
| 2332 | +# base URL from which the finished HTML is served. |
| 2333 | +#html_use_opensearch = '' |
| 2334 | + |
| 2335 | +# This is the file name suffix for HTML files (e.g. ".xhtml"). |
| 2336 | +#html_file_suffix = None |
| 2337 | + |
| 2338 | +# Output file base name for HTML help builder. |
| 2339 | +htmlhelp_basename = 'magentoerpconnect-doc' |
| 2340 | + |
| 2341 | + |
| 2342 | +# -- Options for LaTeX output -------------------------------------------------- |
| 2343 | + |
| 2344 | +latex_elements = { |
| 2345 | +# The paper size ('letterpaper' or 'a4paper'). |
| 2346 | +#'papersize': 'letterpaper', |
| 2347 | + |
| 2348 | +# The font size ('10pt', '11pt' or '12pt'). |
| 2349 | +#'pointsize': '10pt', |
| 2350 | + |
| 2351 | +# Additional stuff for the LaTeX preamble. |
| 2352 | +#'preamble': '', |
| 2353 | +} |
| 2354 | + |
| 2355 | +# Grouping the document tree into LaTeX files. List of tuples |
| 2356 | +# (source start file, target name, title, author, documentclass [howto/manual]). |
| 2357 | +latex_documents = [ |
| 2358 | + ('index', 'Magentoerpconnect.tex', u'Magentoerpconnect Documentation', |
| 2359 | + u'Camptocamp SA', 'manual'), |
| 2360 | +] |
| 2361 | + |
| 2362 | +# The name of an image file (relative to this directory) to place at the top of |
| 2363 | +# the title page. |
| 2364 | +#latex_logo = None |
| 2365 | + |
| 2366 | +# For "manual" documents, if this is true, then toplevel headings are parts, |
| 2367 | +# not chapters. |
| 2368 | +#latex_use_parts = False |
| 2369 | + |
| 2370 | +# If true, show page references after internal links. |
| 2371 | +#latex_show_pagerefs = False |
| 2372 | + |
| 2373 | +# If true, show URL addresses after external links. |
| 2374 | +#latex_show_urls = False |
| 2375 | + |
| 2376 | +# Documents to append as an appendix to all manuals. |
| 2377 | +#latex_appendices = [] |
| 2378 | + |
| 2379 | +# If false, no module index is generated. |
| 2380 | +#latex_domain_indices = True |
| 2381 | + |
| 2382 | + |
| 2383 | +# -- Options for manual page output -------------------------------------------- |
| 2384 | + |
| 2385 | +# One entry per manual page. List of tuples |
| 2386 | +# (source start file, name, description, authors, manual section). |
| 2387 | +man_pages = [ |
| 2388 | + ('index', 'magentoerpconnect', u'Magentoerpconnect Documentation', |
| 2389 | + [u'Camptocamp SA'], 1) |
| 2390 | +] |
| 2391 | + |
| 2392 | +# If true, show URL addresses after external links. |
| 2393 | +#man_show_urls = False |
| 2394 | + |
| 2395 | + |
| 2396 | +# -- Options for Texinfo output ------------------------------------------------ |
| 2397 | + |
| 2398 | +# Grouping the document tree into Texinfo files. List of tuples |
| 2399 | +# (source start file, target name, title, author, |
| 2400 | +# dir menu entry, description, category) |
| 2401 | +texinfo_documents = [ |
| 2402 | + ('index', 'Magentoerpconnect', u'Magentoerpconnect Documentation', |
| 2403 | + u'Camptocamp SA', 'Magentoerpconnect', 'Connector between OpenERP and Magento', |
| 2404 | + 'Miscellaneous'), |
| 2405 | +] |
| 2406 | + |
| 2407 | +# Documents to append as an appendix to all manuals. |
| 2408 | +#texinfo_appendices = [] |
| 2409 | + |
| 2410 | +# If false, no module index is generated. |
| 2411 | +#texinfo_domain_indices = True |
| 2412 | + |
| 2413 | +# How to display URL addresses: 'footnote', 'no', or 'inline'. |
| 2414 | +#texinfo_show_urls = 'footnote' |
| 2415 | + |
| 2416 | + |
| 2417 | +# Example configuration for intersphinx: refer to the Python standard library. |
| 2418 | +intersphinx_mapping = { |
| 2419 | + 'python': ('http://docs.python.org/2.6', None), |
| 2420 | + 'openerpweb': ('http://doc.openerp.com/trunk/developers/web', None), |
| 2421 | + 'openerpdev': ('http://doc.openerp.com/trunk/developers', None), |
| 2422 | +# 'openerpconnector': ('', None), |
| 2423 | +} |
| 2424 | |
| 2425 | === added directory 'magentoerpconnect/doc/develop' |
| 2426 | === added directory 'magentoerpconnect/doc/guides' |
| 2427 | === added file 'magentoerpconnect/doc/guides/connector_checkpoint.rst' |
| 2428 | --- magentoerpconnect/doc/guides/connector_checkpoint.rst 1970-01-01 00:00:00 +0000 |
| 2429 | +++ magentoerpconnect/doc/guides/connector_checkpoint.rst 2013-08-13 17:30:12 +0000 |
| 2430 | @@ -0,0 +1,20 @@ |
| 2431 | +.. _connector-checkpoint: |
| 2432 | + |
| 2433 | + |
| 2434 | +############################## |
| 2435 | +Check the connector checkpoint |
| 2436 | +############################## |
| 2437 | + |
| 2438 | +Located at `Connectors > Connectors > Checkpoint`, |
| 2439 | +this is a list of records which have been imported |
| 2440 | +from Magento and have to be verified. |
| 2441 | + |
| 2442 | +Records such as products or product categories could |
| 2443 | +have some configuration to do once they are imported, |
| 2444 | +so they appear in that list. |
| 2445 | + |
| 2446 | +For each item in that list, |
| 2447 | +you can open the related record, |
| 2448 | +proceed with your configuration or verification, |
| 2449 | +and when you are done, |
| 2450 | +click on the `Reviewed` button. |
| 2451 | |
| 2452 | === added file 'magentoerpconnect/doc/guides/installation_guide.rst' |
| 2453 | --- magentoerpconnect/doc/guides/installation_guide.rst 1970-01-01 00:00:00 +0000 |
| 2454 | +++ magentoerpconnect/doc/guides/installation_guide.rst 2013-08-13 17:30:12 +0000 |
| 2455 | @@ -0,0 +1,143 @@ |
| 2456 | +.. _installation-guide: |
| 2457 | + |
| 2458 | + |
| 2459 | +################## |
| 2460 | +Installation Guide |
| 2461 | +################## |
| 2462 | + |
| 2463 | + |
| 2464 | +************ |
| 2465 | +Installation |
| 2466 | +************ |
| 2467 | + |
| 2468 | +The installation steps assume that you already have a working OpenERP |
| 2469 | +setup with all the OpenERP pre-requisites. |
| 2470 | + |
| 2471 | +Requirements on both servers |
| 2472 | +============================ |
| 2473 | + |
| 2474 | +The ``ntp`` package should be install on the servers hosting Magento and |
| 2475 | +OpenERP to ensure a correct synchronization between them |
| 2476 | + |
| 2477 | +OpenERP |
| 2478 | +======= |
| 2479 | + |
| 2480 | +Download the branches where you installed OpenERP:: |
| 2481 | + |
| 2482 | + $ bzr branch lp:openerp-connector/7.0 connector |
| 2483 | + $ bzr branch lp:openerp-connector/7.0-e-commerce-addons e-commerce-addons |
| 2484 | + $ bzr branch lp:openerp-connector/7.0-magentoerpconnect magentoerpconnect |
| 2485 | + $ bzr branch lp:openerp-product-attributes/7.0 openerp-product-attributes |
| 2486 | + |
| 2487 | +Add the branches in the addons path, either using the server command |
| 2488 | +line or adding them in the OpenERP server configuration file. |
| 2489 | + |
| 2490 | +You also need to install the ``magento`` Python package. |
| 2491 | +So install it with either pip or either easy_install:: |
| 2492 | + |
| 2493 | + $ pip install magento |
| 2494 | + |
| 2495 | + $ easy_install magento |
| 2496 | + |
| 2497 | +Note that you may need to use the root rights on your system. |
| 2498 | + |
| 2499 | +In OpenERP, update the modules list using `Settings > Modules > Update |
| 2500 | +Modules List`. |
| 2501 | + |
| 2502 | +Go to the menu `Settings > Modules > Installed Modules`, remove the |
| 2503 | +`Installed` filter and search for `Magento Connector`, then click on |
| 2504 | +`Install`. |
| 2505 | + |
| 2506 | + |
| 2507 | +Magento |
| 2508 | +======= |
| 2509 | + |
| 2510 | +For the time being, the Magento extension originally built by OpenLabs |
| 2511 | +is still used by the connector. But the version published on `Magento |
| 2512 | +Connect` is outdated. |
| 2513 | + |
| 2514 | +Download the following branch and install it in Magento:: |
| 2515 | + |
| 2516 | + $ bzr branch lp:magentoerpconnect/magento-module-oerp6.x-stable magento-module |
| 2517 | + |
| 2518 | +In order to install it: |
| 2519 | + |
| 2520 | +1. Move the `Openlabs` folder in the |
| 2521 | + `magento_root/app/code/community`. |
| 2522 | +#. Move the file `app/etc/modules/Openlabs_OpenERPConnector.xml` in |
| 2523 | + `magento_root/app/etc/modules`. |
| 2524 | +#. Flush the Magento cache from the admin panel or by removing everything in |
| 2525 | + `magento_root/var/cache` |
| 2526 | + |
| 2527 | +Configuring the Magento web-services |
| 2528 | +==================================== |
| 2529 | + |
| 2530 | +1. In the Magento admin panel, go to `System > Web-Services > |
| 2531 | + SOAP/XML-RPC - Roles`. |
| 2532 | +#. Create a new role named `openerp` with access to `All` resources. |
| 2533 | +#. In `System > Web-Services > SOAP/XML-RPC - Users`, create a new user |
| 2534 | + named as you want, for instance `openerp_connect`, and an API key. |
| 2535 | + In `User Role`, choose the `openerp` role. |
| 2536 | + |
| 2537 | + |
| 2538 | +********************** |
| 2539 | +After the installation |
| 2540 | +********************** |
| 2541 | + |
| 2542 | +Once the addon is installed, you may want to: |
| 2543 | + |
| 2544 | +1. Read or read again :ref:`key-questions` |
| 2545 | + |
| 2546 | +#. Assign the `Connector Manager` group on your user. |
| 2547 | + |
| 2548 | +#. Create the Backend in `Connectors > Magento > Backend`, |
| 2549 | + use the role created in `Configuring the Magento web-services`_. |
| 2550 | + |
| 2551 | +#. Synchronize the initial metadata using the button `Synchronize Metadata` on the backend. |
| 2552 | + |
| 2553 | +#. Configure the translations if you use them: :ref:`configure-translations` |
| 2554 | + |
| 2555 | +#. Configure: :ref:`configure-emails` |
| 2556 | + |
| 2557 | +#. Configure: :ref:`configure-payment-methods` |
| 2558 | + |
| 2559 | +#. Configure: :ref:`configure-automatic-workflows` |
| 2560 | + |
| 2561 | +#. Configure: :ref:`configure-shipping-methods` |
| 2562 | + |
| 2563 | +#. Configure: :ref:`configure-warehouses` |
| 2564 | + |
| 2565 | +#. Configure: :ref:`configure-pricing` |
| 2566 | + |
| 2567 | +On the backend, |
| 2568 | + |
| 2569 | +#. Import the customer groups |
| 2570 | + |
| 2571 | +#. Optionally, import the partners, otherwise they |
| 2572 | + will be imported on the fly with the sales orders |
| 2573 | + |
| 2574 | +#. Import the product categories |
| 2575 | + |
| 2576 | +#. Configure the default values (accounting, ...) |
| 2577 | + of the new categories, using the :ref:`connector-checkpoint` |
| 2578 | + |
| 2579 | +#. Import the products |
| 2580 | + |
| 2581 | +#. Configure the new products (accounting, suppliers, stock rules, ...) |
| 2582 | + of the new products, using the :ref:`connector-checkpoint` |
| 2583 | + |
| 2584 | +#. Create an inventory for your products |
| 2585 | + |
| 2586 | +#. Update the stock quantities on Magento |
| 2587 | + |
| 2588 | +#. Import the sales orders |
| 2589 | + |
| 2590 | +#. Once you are all done and happy, configure the schedulers: :ref:`configure-schedulers` |
| 2591 | + |
| 2592 | + |
| 2593 | +**************** |
| 2594 | +On a daily basis |
| 2595 | +**************** |
| 2596 | + |
| 2597 | +* :ref:`connector-checkpoint` |
| 2598 | +* :ref:`monitor-resolve-jobs` |
| 2599 | |
| 2600 | === added file 'magentoerpconnect/doc/guides/key_questions.rst' |
| 2601 | --- magentoerpconnect/doc/guides/key_questions.rst 1970-01-01 00:00:00 +0000 |
| 2602 | +++ magentoerpconnect/doc/guides/key_questions.rst 2013-08-13 17:30:12 +0000 |
| 2603 | @@ -0,0 +1,281 @@ |
| 2604 | +.. _key-questions: |
| 2605 | + |
| 2606 | + |
| 2607 | +################################################## |
| 2608 | +Key questions when connecting OpenERP with Magento |
| 2609 | +################################################## |
| 2610 | + |
| 2611 | +Installing a connector between OpenERP and Magento |
| 2612 | +is not as simple as clicking on the 'Install' button |
| 2613 | +in the OpenERP Apps. |
| 2614 | + |
| 2615 | +In the e-commerce domain, |
| 2616 | +there are many use cases |
| 2617 | +which are strongly domain-specific. |
| 2618 | +Every website has its own set of specific requirements. |
| 2619 | +As such, the connector cannot include all the |
| 2620 | +domain-specific requirements in a generic manner. |
| 2621 | + |
| 2622 | +This document lists the key questions |
| 2623 | +you have to answer when connecting your applications. |
| 2624 | +The questions link to the relevant part in the |
| 2625 | +documentation when it currently exists. |
| 2626 | +Some points have no response, |
| 2627 | +but are things you have to consider and think |
| 2628 | +before and meanwhile your setup. |
| 2629 | +You can also consider it as |
| 2630 | +a checklist for your implementation. |
| 2631 | + |
| 2632 | +************** |
| 2633 | +Sale workflows |
| 2634 | +************** |
| 2635 | + |
| 2636 | +Payment methods |
| 2637 | +=============== |
| 2638 | + |
| 2639 | +Are you going to use 'manual' payment types like check or invoices? |
| 2640 | + |
| 2641 | +Are you going to use 'automatic' payment types like bankcard, paypal, |
| 2642 | +...? |
| 2643 | + |
| 2644 | +Each method needs to be configured, follows: |
| 2645 | +:ref:`configure-payment-methods`. |
| 2646 | + |
| 2647 | +Automatic workflows |
| 2648 | +=================== |
| 2649 | + |
| 2650 | +For each `Payment methods`_, |
| 2651 | +you will want to configure a different workflow, |
| 2652 | +for instance, |
| 2653 | +the sales orders of an automatic payment is automatically confirmed. |
| 2654 | + |
| 2655 | +More details on this configuration in |
| 2656 | +:ref:`configure-automatic-workflows`. |
| 2657 | + |
| 2658 | + |
| 2659 | +Exception rules |
| 2660 | +=============== |
| 2661 | + |
| 2662 | +Do you need to block a sale order according to some conditions? |
| 2663 | + |
| 2664 | +The connector adds this possibility, |
| 2665 | +it applies some rules, |
| 2666 | +for example, it blocks the sale order |
| 2667 | +if the total amount is different in OpenERP and in Magento, |
| 2668 | +so that is a safe-guard against errors. |
| 2669 | + |
| 2670 | +You can add your own rules, see :ref:`configure-exception-rules`. |
| 2671 | + |
| 2672 | + |
| 2673 | +Support and Claims |
| 2674 | +================== |
| 2675 | + |
| 2676 | +How will you handle them? |
| 2677 | + |
| 2678 | +******* |
| 2679 | +Catalog |
| 2680 | +******* |
| 2681 | + |
| 2682 | +Master of data |
| 2683 | +============== |
| 2684 | + |
| 2685 | +Where should the data of the products be maintained and edited? |
| 2686 | + |
| 2687 | +Magento is the master of data: |
| 2688 | + |
| 2689 | + Managing the catalog in Magento has the lowest impact on OpenERP. |
| 2690 | + Much information stay only on Magento |
| 2691 | + (product attributes, images, links). |
| 2692 | + The categories of products are still imported in OpenERP for |
| 2693 | + classification. |
| 2694 | + However 2 related informations will be updated in OpenERP and |
| 2695 | + exported to Magento: |
| 2696 | + |
| 2697 | + * Price of the products, based on the OpenERP pricelists |
| 2698 | + * Available quantity in the stock |
| 2699 | + |
| 2700 | +OpenERP is the master of data: |
| 2701 | + |
| 2702 | + As of today, the handling of the catalog |
| 2703 | + in the connector has not been implemented |
| 2704 | + (it was in the version for OpenERP 6.1). |
| 2705 | + It is in the :doc:`/project/roadmap` though. |
| 2706 | + |
| 2707 | +Types of products |
| 2708 | +================= |
| 2709 | + |
| 2710 | +Magento is able to handle many types of products: |
| 2711 | +simple, configurable, bundle, grouped, virtual, downloadable |
| 2712 | + |
| 2713 | +Special options can also be added on the products. |
| 2714 | + |
| 2715 | +None all of theses types are supported by the connector. |
| 2716 | +All the product types are planned to be supported |
| 2717 | +(:doc:`/project/roadmap`). |
| 2718 | +But, as of today, only simple products are supported. |
| 2719 | +Using advanced types of products like bundle or configurable, |
| 2720 | +will need development, |
| 2721 | +wether it is generic or specific to your implementation |
| 2722 | + |
| 2723 | +However, the fact is using a bundle or configurable products |
| 2724 | +complexifies a lot the synchronizations of the products. |
| 2725 | +If you need them, try to use only bundle, or only configurable. |
| 2726 | + |
| 2727 | +The special options would probably be part of a specific development. |
| 2728 | + |
| 2729 | + |
| 2730 | +******* |
| 2731 | +Pricing |
| 2732 | +******* |
| 2733 | + |
| 2734 | +Taxes included |
| 2735 | +============== |
| 2736 | + |
| 2737 | +When you input the prices of your products, |
| 2738 | +are the taxes included? |
| 2739 | + |
| 2740 | +Note that, although it is possible to work with taxes included, |
| 2741 | +that's never recommended because you will lose a lot in OpenERP, |
| 2742 | +mainly in analysis. |
| 2743 | + |
| 2744 | +Only the base price is relevant, |
| 2745 | +Magento itself can display tax included or tax excluded |
| 2746 | +without issues. |
| 2747 | + |
| 2748 | +Discounts |
| 2749 | +========= |
| 2750 | + |
| 2751 | +What kind of discount do you plan do use? |
| 2752 | +OpenERP can't have such advanced discounts as Magento, |
| 2753 | +so try to keep the things simple here |
| 2754 | +if you do not want too much specific developments |
| 2755 | +in your implementation. |
| 2756 | + |
| 2757 | +Pricing |
| 2758 | +======= |
| 2759 | + |
| 2760 | +Do you plan to use multi-currency? |
| 2761 | + |
| 2762 | +Do you plan to have different prices per websites? |
| 2763 | +You will need to create different price lists in OpenERP. |
| 2764 | + |
| 2765 | +********** |
| 2766 | +Accounting |
| 2767 | +********** |
| 2768 | + |
| 2769 | +Reconciliations |
| 2770 | +=============== |
| 2771 | + |
| 2772 | +The connector automatically reconcile the payments |
| 2773 | +and the invoices entries for the 'automatic' workflows. |
| 2774 | + |
| 2775 | +However, you will still need to reconcile the bank entries. |
| 2776 | + |
| 2777 | +You may want to use the reconciliation modules of the |
| 2778 | +branch `lp:banking-addons/bank-statement-reconcile/7.0`_. |
| 2779 | +They are widely used in production and |
| 2780 | +are specifically designed for the e-commerce. |
| 2781 | + |
| 2782 | +.. _`lp:banking-addons/bank-statement-reconcile/7.0`: https://code.launchpad.net/~banking-addons-team/banking-addons/bank-statement-reconcile-70 |
| 2783 | + |
| 2784 | + |
| 2785 | +Fiscal Positions |
| 2786 | +================ |
| 2787 | + |
| 2788 | +Due to the limitations of the Magento API and the intrinsic difference |
| 2789 | +between OpenERP and Magento, |
| 2790 | +the fiscal positions are not synchronized. |
| 2791 | +If you need to use fiscal positions, |
| 2792 | +you may want to use the module |
| 2793 | +`account_fiscal_position_rules` in the project |
| 2794 | +`lp:openerp-fiscal-rules`_. |
| 2795 | + |
| 2796 | +Note that this configuration will be done |
| 2797 | +1 time in Magento and 1 time in OpenERP. |
| 2798 | +But once the configuration is done, that works fine. |
| 2799 | + |
| 2800 | +.. _`lp:openerp-fiscal-rules`: https://code.launchpad.net/openerp-fiscal-rules |
| 2801 | + |
| 2802 | + |
| 2803 | +******************************* |
| 2804 | +Stock, availability, deliveries |
| 2805 | +******************************* |
| 2806 | + |
| 2807 | +Shipping methods |
| 2808 | +================ |
| 2809 | + |
| 2810 | +Which shipping methods will be available? |
| 2811 | + |
| 2812 | +Configure them using the :ref:`configure-shipping-methods`. |
| 2813 | + |
| 2814 | +Warehouses |
| 2815 | +========== |
| 2816 | + |
| 2817 | +How are you going to organize your warehouses, |
| 2818 | +do you have several of them? |
| 2819 | +If you have several Magento Stores, |
| 2820 | +do you have a warehouse per store |
| 2821 | +or do they share the same one? |
| 2822 | + |
| 2823 | +Keep in mind that Magento, |
| 2824 | +in a standard installation, |
| 2825 | +does not allow to have different stock quantities |
| 2826 | +on each store. |
| 2827 | + |
| 2828 | +Shipping |
| 2829 | +======== |
| 2830 | + |
| 2831 | +Do you send partial deliveries, or only complete ones? |
| 2832 | + |
| 2833 | +Replacement of products |
| 2834 | +======================= |
| 2835 | + |
| 2836 | +Do you sometimes replace products in the sales orders? |
| 2837 | +Are you going to modify the sale order on Magento, |
| 2838 | +or do you want to modify the delivery orders in OpenERP? |
| 2839 | + |
| 2840 | +The latter choice could be complicated because Magento |
| 2841 | +does not allow to change products in delivery orders. |
| 2842 | + |
| 2843 | +Tracking and delivery labels |
| 2844 | +============================ |
| 2845 | + |
| 2846 | +Do you want tracking numbers on your deliveries? |
| 2847 | + |
| 2848 | +For the printing of your packets' labels, |
| 2849 | +are you going to use external software |
| 2850 | +or do you want to print them directly from OpenERP? |
| 2851 | + |
| 2852 | +.. todo:: add a pointer to the modules, I don't have the url actually. |
| 2853 | + |
| 2854 | +Management of returned goods |
| 2855 | +============================ |
| 2856 | + |
| 2857 | +How will you manage the returned goods (RMA)? |
| 2858 | + |
| 2859 | + |
| 2860 | +********* |
| 2861 | +Technical |
| 2862 | +********* |
| 2863 | + |
| 2864 | +E-mails |
| 2865 | +======= |
| 2866 | + |
| 2867 | +Would you want to send e-mails from Magento or from OpenERP? |
| 2868 | +Which transactional e-mails do you plan to send? |
| 2869 | + |
| 2870 | +Translations |
| 2871 | +============ |
| 2872 | + |
| 2873 | +Do you need translations for the descriptions of your products? |
| 2874 | + |
| 2875 | +The language must be configured on the Magento Storeviews in OpenERP, |
| 2876 | +think about it before importing your whole catalog. |
| 2877 | + |
| 2878 | +Which fields to synchronize |
| 2879 | +=========================== |
| 2880 | + |
| 2881 | +Think about which fields you have in Magento and you need in OpenERP. |
| 2882 | +You will maybe need to create a customization module |
| 2883 | +and add the mapping for the new fields, |
| 2884 | +see :ref:`add-custom-mappings` |
| 2885 | |
| 2886 | === added file 'magentoerpconnect/doc/guides/monitor_resolve_jobs.rst' |
| 2887 | --- magentoerpconnect/doc/guides/monitor_resolve_jobs.rst 1970-01-01 00:00:00 +0000 |
| 2888 | +++ magentoerpconnect/doc/guides/monitor_resolve_jobs.rst 2013-08-13 17:30:12 +0000 |
| 2889 | @@ -0,0 +1,83 @@ |
| 2890 | +.. _monitor-resolve-jobs: |
| 2891 | + |
| 2892 | + |
| 2893 | +######################## |
| 2894 | +Monitor and resolve jobs |
| 2895 | +######################## |
| 2896 | + |
| 2897 | +Jobs are located in ``Connector > Queue > Jobs``. |
| 2898 | + |
| 2899 | +A job is a unit of work for a single synchronization action. |
| 2900 | +Jobs are executed by the 'Workers'. |
| 2901 | + |
| 2902 | +*** |
| 2903 | +Q&A |
| 2904 | +*** |
| 2905 | + |
| 2906 | +My jobs are not executed, why? |
| 2907 | +============================== |
| 2908 | + |
| 2909 | +The first thing to note is that the jobs are enqueued all the minutes. |
| 2910 | +Their execution is not immediate. |
| 2911 | + |
| 2912 | +If you see no jobs executed in more than 1 minute, possibilities are: |
| 2913 | + |
| 2914 | +1. Jobs are assigned to a worker which died. A worker |
| 2915 | + can die when OpenERP reloads his modules registry (after a module |
| 2916 | + upgrade for instance). The dead workers are cleaned after 5 minutes, |
| 2917 | + then the jobs are enqueued in a new one. |
| 2918 | + |
| 2919 | +#. The jobs all have an ``eta`` (estimated time of arrival), so they |
| 2920 | + will be executed later. |
| 2921 | + |
| 2922 | +#. The scheduler action is not running, check in ``Settings > Scheduler |
| 2923 | + > Scheduled Actions`` if the action ``Enqueue Jobs`` is active. |
| 2924 | + |
| 2925 | +#. OpenERP is running in multiprocess and it doesn't have a Cron Worker |
| 2926 | + process running (when using Gunicorn). |
| 2927 | + |
| 2928 | + |
| 2929 | +A job is in state 'Failed', what should I do? |
| 2930 | +============================================= |
| 2931 | + |
| 2932 | +The job encountered a problem. |
| 2933 | +Display the details of the job, |
| 2934 | +a section displays information about the exception. |
| 2935 | + |
| 2936 | +The most comprehensible part of the error |
| 2937 | +is at the bottom of the error trace. |
| 2938 | +Sometimes, it proposes a resolution action. |
| 2939 | +Other times, you'll have to dive deeper to find the cause of the issue. |
| 2940 | +Anyway, once you think the issue should not happen anymore, |
| 2941 | +you can retry the job by clicking on ``Requeue``. |
| 2942 | + |
| 2943 | +.. danger:: At any time, you can use the button ``Set to 'Done'``. This |
| 2944 | + button will cancel the job. It should be used only if you |
| 2945 | + really, really know what you are doing, because you may miss |
| 2946 | + important synchronizations actions. |
| 2947 | + |
| 2948 | + |
| 2949 | +What happens if I shutdown the server when jobs are processing? |
| 2950 | +=============================================================== |
| 2951 | + |
| 2952 | +When jobs are interrupted, they won't commit any changes to the database |
| 2953 | +and will be restarted on the start of the OpenERP server. |
| 2954 | + |
| 2955 | +Note that the actions performed on Magento by a job could of course not |
| 2956 | +be reverted, so they will be done 2 times. |
| 2957 | + |
| 2958 | + |
| 2959 | +Why do I have a couple of Workers? |
| 2960 | +================================== |
| 2961 | + |
| 2962 | +When OpenERP is running in standalone (one process), |
| 2963 | +you'll always have 1 Jobs Worker. |
| 2964 | +When OpenERP is running in multiprocess, |
| 2965 | +you'll have 1 Jobs Worker for each OpenERP worker. |
| 2966 | + |
| 2967 | +.. note:: To benefits of multiple workers, you need to: |
| 2968 | + |
| 2969 | + * have multiple Cron Workers (using the ``--max-cron-threads`` |
| 2970 | + option). |
| 2971 | + * Copy the Scheduled Actions ``Enqueue Jobs`` as many times as |
| 2972 | + you have Cron Workers. |
| 2973 | |
| 2974 | === added file 'magentoerpconnect/doc/guides/tutorial_customize.rst' |
| 2975 | --- magentoerpconnect/doc/guides/tutorial_customize.rst 1970-01-01 00:00:00 +0000 |
| 2976 | +++ magentoerpconnect/doc/guides/tutorial_customize.rst 2013-08-13 17:30:12 +0000 |
| 2977 | @@ -0,0 +1,407 @@ |
| 2978 | +.. _tutorial-customize: |
| 2979 | + |
| 2980 | + |
| 2981 | +################################# |
| 2982 | +Tutorial: customize the connector |
| 2983 | +################################# |
| 2984 | + |
| 2985 | +This tutorial will explain how you can customize several parts of the |
| 2986 | +connector in your own OpenERP module. It assumes that you already have |
| 2987 | +some knowledge in the OpenERP development. You can still refer to the |
| 2988 | +`official OpenERP documentation`_. |
| 2989 | + |
| 2990 | + |
| 2991 | +.. contents:: Sections: |
| 2992 | + :local: |
| 2993 | + :backlinks: top |
| 2994 | + |
| 2995 | + |
| 2996 | +.. _official OpenERP documentation: http://doc.openerp.com/trunk/developers/server/ |
| 2997 | + |
| 2998 | +*************************************** |
| 2999 | +Bootstrap your own customization module |
| 3000 | +*************************************** |
| 3001 | + |
| 3002 | +You should never make changes in the official modules, instead, you need |
| 3003 | +to create your own module and apply your personalizations from there. |
| 3004 | + |
| 3005 | +As an example, throughout this tutorial, we'll create our own |
| 3006 | +customization module, we'll name it, in a very original manner, |
| 3007 | +``customize_example``. The final example module can be found in the root |
| 3008 | +of the ``magentoerpconnect`` bazaar branch. |
| 3009 | + |
| 3010 | +Common OpenERP files |
| 3011 | +==================== |
| 3012 | + |
| 3013 | +A ``magentoerpconnect`` customization module is like any OpenERP module, |
| 3014 | +so you will first need to create the **manifest** |
| 3015 | +``customize_example/__openerp__.py``: |
| 3016 | + |
| 3017 | +.. code-block:: python |
| 3018 | + :emphasize-lines: 4,5 |
| 3019 | + |
| 3020 | + # -*- coding: utf-8 -*- |
| 3021 | + {'name': 'Magento Connector Customization', |
| 3022 | + 'version': '1.0.0', |
| 3023 | + 'category': 'Connector', |
| 3024 | + 'depends': ['magentoerpconnect', |
| 3025 | + ], |
| 3026 | + 'author': 'Myself', |
| 3027 | + 'license': 'AGPL-3', |
| 3028 | + 'description': """ |
| 3029 | + Magento Connector Customization |
| 3030 | + =============================== |
| 3031 | + |
| 3032 | + Explain what this module changes. |
| 3033 | + """, |
| 3034 | + 'data': [], |
| 3035 | + 'installable': True, |
| 3036 | + 'application': False, |
| 3037 | + } |
| 3038 | + |
| 3039 | +Nothing special but 2 things to note: |
| 3040 | + |
| 3041 | +* It depends from ``magentoerpconnect``. |
| 3042 | +* The module category should preferably be ``Connector``. |
| 3043 | + |
| 3044 | +Of course, you also need to create the ``__init__.py`` file where you will |
| 3045 | +put the imports of your python modules. |
| 3046 | + |
| 3047 | +Declare the module to the connector |
| 3048 | +=================================== |
| 3049 | + |
| 3050 | +Each module using the ``connector`` needs to create a special empty |
| 3051 | +model, which will be used by the framework to know if the module is |
| 3052 | +installed or not on each database. |
| 3053 | + |
| 3054 | +That's just a matter of following a convention and creating in ``customize_example/connector.py``:: |
| 3055 | + |
| 3056 | + from openerp.osv import orm |
| 3057 | + |
| 3058 | + |
| 3059 | + class customize_example_installed(orm.AbstractModel): |
| 3060 | + """Empty model used to know if the module is installed on the |
| 3061 | + database. |
| 3062 | + |
| 3063 | + If the model is in the registry, the module is installed. |
| 3064 | + """ |
| 3065 | + _name = 'customize_example.installed' |
| 3066 | + |
| 3067 | +Note: |
| 3068 | + |
| 3069 | +* the ``_name`` is in the form: ``module_name.installed``, where |
| 3070 | + ``.installed`` is the part which does never change. |
| 3071 | + |
| 3072 | + |
| 3073 | +Create your custom Backend |
| 3074 | +========================== |
| 3075 | + |
| 3076 | +The connector can support the synchronization with various Magento |
| 3077 | +versions. |
| 3078 | + |
| 3079 | +Actually the supported versions are referenced in |
| 3080 | +``magentoerpconnect/backend.py``:: |
| 3081 | + |
| 3082 | + import openerp.addons.connector.backend as backend |
| 3083 | + |
| 3084 | + magento = backend.Backend('magento') |
| 3085 | + magento1700 = backend.Backend(parent=magento, version='1.7') |
| 3086 | + |
| 3087 | +In the connector, we are able to link pieces of code to a specific |
| 3088 | +version of Magento. If I link a piece of code to ``magento1700``, it |
| 3089 | +will be executed only if my Magento's version is actually Magento 1.7. |
| 3090 | + |
| 3091 | +``magento`` is the parent of ``magento1700``. When the latter has no |
| 3092 | +specific piece of code, it will execute the former's one. |
| 3093 | + |
| 3094 | +As you want to change parts of code specifically to **your version** of |
| 3095 | +Magento, you need to: |
| 3096 | + |
| 3097 | +* create your own backend version |
| 3098 | +* link your custom parts of code with your own backend version (we'll |
| 3099 | + cover this later) |
| 3100 | + |
| 3101 | +Let's create our own backend, in ``customize_example/backend.py``:: |
| 3102 | + |
| 3103 | + # -*- coding: utf-8 -*- |
| 3104 | + import openerp.addons.connector.backend as backend |
| 3105 | + import openerp.addons.magentoerpconnect.backend as magento_backend |
| 3106 | + |
| 3107 | + magento_myversion = backend.Backend(parent=magento_backend.magento1700, |
| 3108 | + version='1.7-myversion') |
| 3109 | + |
| 3110 | +And in ``customize_example/magento_model.py``:: |
| 3111 | + |
| 3112 | + # -*- coding: utf-8 -*- |
| 3113 | + from openerp.osv import orm |
| 3114 | + |
| 3115 | + |
| 3116 | + class magento_backend(orm.Model): |
| 3117 | + _inherit = 'magento.backend' |
| 3118 | + |
| 3119 | + def _select_versions(self, cr, uid, context=None): |
| 3120 | + """ Available versions |
| 3121 | + |
| 3122 | + Can be inherited to add custom versions. |
| 3123 | + """ |
| 3124 | + versions = super(magento_backend, self)._select_versions(cr, uid, context=context) |
| 3125 | + versions.append(('1.7-myversion', '1.7 - My Version')) |
| 3126 | + return versions |
| 3127 | + |
| 3128 | + _columns = { |
| 3129 | + 'version': fields.selection(_select_versions, string='Version', required=True), |
| 3130 | + } |
| 3131 | + |
| 3132 | +Things to note: |
| 3133 | + |
| 3134 | +* The ``parent`` argument of my version is the 1.7 version. You have to |
| 3135 | + set the correct parent according to your Magento version. If your |
| 3136 | + Magento version does not exist, take the nearest version. |
| 3137 | +* the version should be the same in the ``backend.Backend`` and the |
| 3138 | + model. |
| 3139 | +* We add the version in the model ``magento.backend`` so we'll be able to |
| 3140 | + select it from the OpenERP front-end. |
| 3141 | +* Do not forget to add the new python modules in ``__init__.py``. |
| 3142 | + |
| 3143 | +Use it in OpenERP |
| 3144 | +================= |
| 3145 | + |
| 3146 | +Great, you now have the minimal stuff required to customize your |
| 3147 | +connector. When you create your backend in OpenERP (menu ``Connectors > |
| 3148 | +Magento > Backends``), you have now to select **1.7 - My Version**. |
| 3149 | + |
| 3150 | +In the next chapter, we'll cover the most common personalization: |
| 3151 | +`Add mappings of fields`_. |
| 3152 | + |
| 3153 | + |
| 3154 | +.. _add-custom-mappings: |
| 3155 | + |
| 3156 | +********************** |
| 3157 | +Add mappings of fields |
| 3158 | +********************** |
| 3159 | + |
| 3160 | +The mappings of the fields define how the fields are related between OpenERP and Magento. |
| 3161 | + |
| 3162 | +They defines whether field `A` should be written in field `B`, whether |
| 3163 | +it should be converted then written to `C` and `D`, etc. |
| 3164 | + |
| 3165 | +To be able to customize the mappings, you need to already have a |
| 3166 | +customization module. If that's not already done, you can go through the |
| 3167 | +previous chapter: `Bootstrap your own customization module`_. |
| 3168 | + |
| 3169 | +We'll see how to map new fields on the imports. |
| 3170 | + |
| 3171 | +A bit of theory |
| 3172 | +=============== |
| 3173 | + |
| 3174 | +The mappings of the fields are defined in subclasses of |
| 3175 | +:py:class:`connector.connector.unit.mapper.ImportMapper` or |
| 3176 | +:py:class:`connector.connector.unit.mapper.ExportMapper`, respectively |
| 3177 | +for the imports and the exports. |
| 3178 | + |
| 3179 | +.. note:: The connector almost never works with the OpenERP Models |
| 3180 | + directly. Instead, it works with its own models, which |
| 3181 | + ``_inherits`` (note the final ``s``) the base models. For |
| 3182 | + instance, the Magento model for ``res.partner`` is |
| 3183 | + ``magento.res.partner``. That's why you'll see |
| 3184 | + ``magento.res.partner`` below. |
| 3185 | + |
| 3186 | + More details in `Magento Models`_. |
| 3187 | + |
| 3188 | +When you need to change the mappings, you'll need to dive in the |
| 3189 | +``magentoerpconnect``'s code and locate the class which does this job for |
| 3190 | +your model. You won't change anything on this class, but you'll extend |
| 3191 | +it so you need to have a look on it. For example, the mapping for |
| 3192 | +``magento.res.partner`` in ``magentoerpconnect`` is the following |
| 3193 | +(excerpt):: |
| 3194 | + |
| 3195 | + @magento |
| 3196 | + class PartnerImportMapper(ImportMapper): |
| 3197 | + _model_name = 'magento.res.partner' |
| 3198 | + |
| 3199 | + direct = [('email', 'email'), |
| 3200 | + ('dob', 'birthday'), |
| 3201 | + ('created_at', 'created_at'), |
| 3202 | + ('updated_at', 'updated_at'), |
| 3203 | + ('email', 'emailid'), |
| 3204 | + ('taxvat', 'taxvat'), |
| 3205 | + ('group_id', 'group_id'), |
| 3206 | + ] |
| 3207 | + |
| 3208 | + @mapping |
| 3209 | + def is_company(self, record): |
| 3210 | + # partners are companies so we can bind |
| 3211 | + # addresses on them |
| 3212 | + return {'is_company': True} |
| 3213 | + |
| 3214 | + @mapping |
| 3215 | + def names(self, record): |
| 3216 | + parts = [part for part in (record['firstname'], |
| 3217 | + record['middlename'], |
| 3218 | + record['lastname']) if part] |
| 3219 | + return {'name': ' '.join(parts)} |
| 3220 | + |
| 3221 | + [...snip...] |
| 3222 | + |
| 3223 | +Here we can see 2 types of mappings: |
| 3224 | + |
| 3225 | +* ``direct`` mappings, a field in Magento is directly written in the |
| 3226 | + OpenERP field. The Magento field is on the left, the OpenERP one is on |
| 3227 | + the right. |
| 3228 | +* methods decorated with ``@mapping``, when the mapping is more complex |
| 3229 | + and need to apply some logic. The name of the methods is meaningless. |
| 3230 | + They should return a ``dict`` with the field(s) to update and their |
| 3231 | + values. A ``None`` return value will be ignored. |
| 3232 | +* the ``record`` argument receives the Magento record. |
| 3233 | + |
| 3234 | +.. note:: This is not covered here, but for the ``ExportMapper``, an |
| 3235 | + additional decorator ``@changed_by()`` is used to filter the |
| 3236 | + mappings to apply according to the fields modified in OpenERP. |
| 3237 | + |
| 3238 | + |
| 3239 | +Magento Models |
| 3240 | +============== |
| 3241 | + |
| 3242 | +As said in the previous section, the connector uses its own models |
| 3243 | +on top of the base ones. The connector's models are usually in the form |
| 3244 | +``magento.{model_name}``. |
| 3245 | + |
| 3246 | +Basically, a Magento Model is an ``_inherits`` from the base model, so |
| 3247 | +it knows all the original fields along with its own. Its own fields are |
| 3248 | +the ID of the record on Magento, the ``many2one`` relations to the |
| 3249 | +``magento.backend`` or to the ``magento.website`` and the attributes |
| 3250 | +which are peculiar to Magento. |
| 3251 | + |
| 3252 | +Example with an excerpt of the fields for ``magento.res.partner``: |
| 3253 | + |
| 3254 | +* ``openerp_id``: ``many2one`` to the ``res.partner`` (``_inherits``) |
| 3255 | +* ``backend_id``: ``many2one`` to the ``magento.backend`` model (Magento |
| 3256 | + Instance), for the partner this is a ``related`` because we already |
| 3257 | + have a link to the website, itself associated to a ``magento.backend``. |
| 3258 | +* ``website_id``: ``many2one`` to the ``magento.website`` model |
| 3259 | +* ``magento_id``: the ID of the customer on Magento |
| 3260 | +* ``group_id``: ``many2one`` to the ``magento.res.partner.category``, |
| 3261 | + itself a Magento model for ``res.partner.category`` (Customer Groups) |
| 3262 | +* ``created_at``: created_at field from Magento |
| 3263 | +* ``taxvat``: taxvat field from Magento |
| 3264 | +* and all the fields from ``res.partner`` |
| 3265 | + |
| 3266 | +This datamodel allows to: |
| 3267 | + |
| 3268 | +* Share the same ``res.partner`` with several ``magento.website`` (or |
| 3269 | + even several ``magento.backend``) as we can have as many |
| 3270 | + ``magento.res.partner`` as we want on top of a ``res.partner``. |
| 3271 | +* The values can be different for each website or backend |
| 3272 | + |
| 3273 | + |
| 3274 | +.. note:: In the mappings, we'll write some fields on ``res.partner`` |
| 3275 | + (via ``_inherits``) and some on ``magento.res.partner``. When |
| 3276 | + we want to add a new field, we have to decide where to add it. |
| 3277 | + That's a matter of: does it make more sense do have this data |
| 3278 | + on the base model rather than on the Magento's one and should |
| 3279 | + this data be shared between all websites / backends? |
| 3280 | + |
| 3281 | +Examples |
| 3282 | +======== |
| 3283 | + |
| 3284 | +Example 1. |
| 3285 | +---------- |
| 3286 | + |
| 3287 | +I want to import the field ``created_in`` from customers. |
| 3288 | + |
| 3289 | +I add it on ``magento.res.partner`` because it doesn't make sense on |
| 3290 | +``res.partner``. |
| 3291 | + |
| 3292 | +For this field, the Magento API returns a string. I add it in |
| 3293 | +``customize_example/partner.py`` (I willingly skip the part 'add them in |
| 3294 | +the views'):: |
| 3295 | + |
| 3296 | + # -*- coding: utf-8 -*- |
| 3297 | + from openerp.osv import orm, fields |
| 3298 | + |
| 3299 | + class magento_res_partner(orm.Model): |
| 3300 | + _inherit = 'magento.res.partner' |
| 3301 | + |
| 3302 | + _columns = { |
| 3303 | + 'created_in': fields.char('Created In', readonly=True), |
| 3304 | + } |
| 3305 | + |
| 3306 | + |
| 3307 | +In the same file, I add the import of the Magento Backend to use and the |
| 3308 | +current mapper:: |
| 3309 | + |
| 3310 | + from openerp.addons.magentoerpconnect.partner import PartnerImportMapper |
| 3311 | + from .backend import magento_myversion |
| 3312 | + |
| 3313 | +And I extend the partner's mapper, decorated with |
| 3314 | +``@magento_myversion``:: |
| 3315 | + |
| 3316 | + @magento_myversion |
| 3317 | + class MyPartnerImportMapper(PartnerImportMapper): |
| 3318 | + _model_name = 'magento.res.partner' |
| 3319 | + |
| 3320 | + direct = PartnerImportMapper.direct + [('created_in', 'created_in')] |
| 3321 | + |
| 3322 | +And that's it! The field will be imported along with the other fields. |
| 3323 | + |
| 3324 | +.. attention:: Verify that you have selected the right version when you |
| 3325 | + have created your backend in ``Connectors > Magento > Backends`` |
| 3326 | + otherwise your code will not be used. |
| 3327 | + |
| 3328 | +Example 2. |
| 3329 | +---------- |
| 3330 | + |
| 3331 | +I want to import the ``gender`` field. This one is a bit special because |
| 3332 | +Magento maps 'Male' to ``123`` and 'Female' to ``124``. They are surely |
| 3333 | +the identifiers of the attributes in Magento, and there's maybe an entry |
| 3334 | +point in the API to get the proper values, but for the sake of the |
| 3335 | +example, we'll assume we can hard-code theses values in the mappings. |
| 3336 | + |
| 3337 | +This time, I will create the field in ``res.partner``, because the value |
| 3338 | +will likely be the same even if we have many ``magento.res.partner`` and |
| 3339 | +this information can be useful at this level. |
| 3340 | + |
| 3341 | +In ``customize_example/partner.py``, I write:: |
| 3342 | + |
| 3343 | + # -*- coding: utf-8 -*- |
| 3344 | + from openerp.osv import orm, fields |
| 3345 | + |
| 3346 | + class res_partner(orm.Model): |
| 3347 | + _inherit = 'res.partner' |
| 3348 | + |
| 3349 | + _columns = { |
| 3350 | + 'gender': fields.selection([('male', 'Male'), |
| 3351 | + ('female', 'Female')], |
| 3352 | + string='Gender'), |
| 3353 | + } |
| 3354 | + |
| 3355 | +The same imports than in the `Example 1.`_ are needed, but we need to |
| 3356 | +import ``mapping`` too:: |
| 3357 | + |
| 3358 | + from openerp.addons.connector.unit.mapper import mapping |
| 3359 | + from openerp.addons.magentoerpconnect.partner import PartnerImportMapper |
| 3360 | + from .backend import magento_myversion |
| 3361 | + |
| 3362 | +This is not a `direct` mapping, I will use a method to define the |
| 3363 | +``gender`` value:: |
| 3364 | + |
| 3365 | + MAGENTO_GENDER = {'123': 'male', |
| 3366 | + '124': 'female'} |
| 3367 | + |
| 3368 | + @magento_myversion |
| 3369 | + class MyPartnerImportMapper(PartnerImportMapper): |
| 3370 | + _model_name = 'magento.res.partner' |
| 3371 | + |
| 3372 | + @mapping |
| 3373 | + def gender(self, record): |
| 3374 | + gender = MAGENTO_GENDER.get(record.get('gender')) |
| 3375 | + return {'gender': gender} |
| 3376 | + |
| 3377 | +The ``gender`` field will now be imported. |
| 3378 | + |
| 3379 | +And now? |
| 3380 | +======== |
| 3381 | + |
| 3382 | +With theses principles, you should now be able to extend the original |
| 3383 | +mappings and add your own ones. This is applicable for the customers but |
| 3384 | +for any other model actually imported as well. |
| 3385 | |
| 3386 | === added file 'magentoerpconnect/doc/guides/tutorial_development.rst' |
| 3387 | --- magentoerpconnect/doc/guides/tutorial_development.rst 1970-01-01 00:00:00 +0000 |
| 3388 | +++ magentoerpconnect/doc/guides/tutorial_development.rst 2013-08-13 17:30:12 +0000 |
| 3389 | @@ -0,0 +1,398 @@ |
| 3390 | +.. _tutorial-development: |
| 3391 | + |
| 3392 | + |
| 3393 | +Tutorial: development |
| 3394 | +===================== |
| 3395 | + |
| 3396 | +This tutorial explains how to take part in the development of |
| 3397 | +Magentoerpconnect. It will explain how to use the different pieces of |
| 3398 | +the ``Connector`` addon to synchronize records with Magento. |
| 3399 | + |
| 3400 | +.. contents:: Sections: |
| 3401 | + :local: |
| 3402 | + :backlinks: top |
| 3403 | + |
| 3404 | + |
| 3405 | +Run a function on an Event |
| 3406 | +-------------------------- |
| 3407 | + |
| 3408 | +3 events are registered in the ``Connector`` addon: |
| 3409 | + |
| 3410 | +* ``on_record_create`` |
| 3411 | +* ``on_record_write`` |
| 3412 | +* ``on_record_unlink`` |
| 3413 | + |
| 3414 | +If you need to create a new :py:class:`connector.event.Event`, please |
| 3415 | +refer to the ``Connector`` documentation. |
| 3416 | + |
| 3417 | +When a function has to be run when an event is fired, it must be |
| 3418 | +registered on this event. Those functions are called ``Consumers``. |
| 3419 | + |
| 3420 | +In ``magentoerpconnect/consumer.py``, some consumers are already |
| 3421 | +defined. You can add your one, it should be decorated by |
| 3422 | +:py:func:`magentoerpconnect.consumer.magento_consumer` and by the event |
| 3423 | +which has to fire it:: |
| 3424 | + |
| 3425 | + @on_record_write(model_names=['my.model']) |
| 3426 | + @magento_consumer |
| 3427 | + def my_consumer(session, model_name, record_id, fields=None): |
| 3428 | + print 'Yeah' |
| 3429 | + |
| 3430 | +.. note:: The consumers always start with the arguments ``session`` and |
| 3431 | + ``model_name``. The next arguments vary, but they are defined |
| 3432 | + by the :py:class:`connector.event.Event` |
| 3433 | + |
| 3434 | + |
| 3435 | +Find the 'connector unit' for a model |
| 3436 | +------------------------------------- |
| 3437 | + |
| 3438 | +Assume that you already have an ``Environment``. |
| 3439 | + |
| 3440 | +.. note:: An ``Environment`` is the scope where the synchronizations are |
| 3441 | + done. It contains the browse record of the backend |
| 3442 | + (``magento.backend``), a ``ConnectorSession`` (container for |
| 3443 | + ``cr``, ``uid``, ``context``) and the name of the model we are |
| 3444 | + working with). |
| 3445 | + |
| 3446 | +You can get an instance of the ``ConnectorUnit`` to use from the |
| 3447 | +environment. You'll need to ask a connector unit with the base class |
| 3448 | +which interests you. Say you want a Synchronizer which import records |
| 3449 | +from Magento:: |
| 3450 | + |
| 3451 | + importer = environment.get_connector_unit(MagentoImportSynchronizer) |
| 3452 | + |
| 3453 | +``importer`` is an instance of the importer to use for the model of the |
| 3454 | +environment. |
| 3455 | + |
| 3456 | +Say you want a binder for your model:: |
| 3457 | + |
| 3458 | + binder = environment.get_connector_unit(connector.Binder) |
| 3459 | + |
| 3460 | +``binder`` is an instance of the binder for your model. |
| 3461 | + |
| 3462 | +And so on... |
| 3463 | + |
| 3464 | +.. note:: Every ``ConnectorUnit`` instance keeps the environment as |
| 3465 | + attribute. It means that you can access to the environment |
| 3466 | + from a synchronizer with ``self.environment``. |
| 3467 | + |
| 3468 | + |
| 3469 | +Create an import |
| 3470 | +---------------- |
| 3471 | + |
| 3472 | +You'll need to work on at least 4 connector units: |
| 3473 | + |
| 3474 | +* a Synchronizer (presumably 2, we'll see why soon) |
| 3475 | +* a Mapper |
| 3476 | +* a Backend Adapter |
| 3477 | +* a Binder |
| 3478 | + |
| 3479 | +You will also need to create / change the OpenERP models. |
| 3480 | + |
| 3481 | +.. note:: Keep in mind: try to modify at least as possible the OpenERP |
| 3482 | + models and classes. |
| 3483 | + |
| 3484 | +The synchronizer will handle the flow of the synchronization. It will |
| 3485 | +get the data from Magento using the Backend Adapter, transform it using |
| 3486 | +the Mapper, and use the Binder(s) to search the relation(s) with other |
| 3487 | +imported records. |
| 3488 | + |
| 3489 | +Why do we need 2 synchronizers? Because an import is generally done in 2 |
| 3490 | +phases: |
| 3491 | + |
| 3492 | +1. The first synchronizer searches the list of all the ids to import. |
| 3493 | +2. The second synchronizer imports all the ids atomically. |
| 3494 | + |
| 3495 | +We'll see in details a simple import: customer groups. |
| 3496 | +Customer groups are importer as categories of partners |
| 3497 | +(``res.partner.category``). |
| 3498 | + |
| 3499 | +Models |
| 3500 | +'''''' |
| 3501 | + |
| 3502 | +First, we create the model:: |
| 3503 | + |
| 3504 | + class magento_res_partner_category(orm.Model): |
| 3505 | + _name = 'magento.res.partner.category' |
| 3506 | + _inherit = 'magento.binding' |
| 3507 | + _inherits = {'res.partner.category': 'openerp_id'} |
| 3508 | + |
| 3509 | + _columns = { |
| 3510 | + 'openerp_id': fields.many2one('res.partner.category', |
| 3511 | + string='Partner Category', |
| 3512 | + required=True, |
| 3513 | + ondelete='cascade'), |
| 3514 | + 'tax_class_id': fields.integer('Tax Class ID'), |
| 3515 | + } |
| 3516 | + |
| 3517 | + _sql_constraints = [ |
| 3518 | + ('magento_uniq', 'unique(backend_id, magento_id)', |
| 3519 | + 'A partner tag with same ID on Magento already exists.'), |
| 3520 | + ] |
| 3521 | + |
| 3522 | +Observations: |
| 3523 | + |
| 3524 | +* We do not change ``res.partner.category`` but create a |
| 3525 | + ``magento.res.partner.category`` model instead. |
| 3526 | +* It `_inherit` from `magento.binding` |
| 3527 | +* It contains the links to the Magento backend, the category and the |
| 3528 | + ID on Magento. |
| 3529 | +* This model stores the data related to one category and one Magento |
| 3530 | + backend as well, so this data does not pollute the category and does |
| 3531 | + not criss-cross when several backends are connected. |
| 3532 | +* It ``_inherits`` the ``res.partner.category`` so we can directly use |
| 3533 | + this model for the imports and the exports without complications. |
| 3534 | + |
| 3535 | +We need to add the field ``magento_bind_ids`` in |
| 3536 | +``res.partner.category`` to relate to the Magento Bindings:: |
| 3537 | + |
| 3538 | + class res_partner_category(orm.Model): |
| 3539 | + _inherit = 'res.partner.category' |
| 3540 | + |
| 3541 | + _columns = { |
| 3542 | + 'magento_bind_ids': fields.one2many( |
| 3543 | + 'magento.res.partner.category', |
| 3544 | + 'openerp_id', |
| 3545 | + string='Magento Bindings', |
| 3546 | + readonly=True), |
| 3547 | + } |
| 3548 | + |
| 3549 | +That's the only thing we need to change (besides the view) on the |
| 3550 | +OpenERP category! |
| 3551 | + |
| 3552 | +.. note:: The name of the field ``magento_bind_ids`` is a convention. |
| 3553 | + |
| 3554 | +Ok, we're done with the models. Now the **synchronizations**! |
| 3555 | + |
| 3556 | +Batch Importer |
| 3557 | +'''''''''''''' |
| 3558 | + |
| 3559 | +The first Synchronizer, which get the full list of ids to import is |
| 3560 | +usually a subclass of |
| 3561 | +:py:class:`magentoerpconnect.unit.import_synchronizer.BatchImportSynchronizer`. |
| 3562 | + |
| 3563 | +The customer groups are simple enough to use a generic class:: |
| 3564 | + |
| 3565 | + @magento |
| 3566 | + class DelayedBatchImport(BatchImportSynchronizer): |
| 3567 | + """ Delay import of the records """ |
| 3568 | + _model_name = [ |
| 3569 | + 'magento.res.partner.category', |
| 3570 | + ] |
| 3571 | + |
| 3572 | + def _import_record(self, record): |
| 3573 | + """ Delay the import of the records""" |
| 3574 | + job.import_record.delay(self.session, |
| 3575 | + self.model._name, |
| 3576 | + self.backend_record.id, |
| 3577 | + record) |
| 3578 | + |
| 3579 | +Observations: |
| 3580 | + |
| 3581 | +* Decorated by ``@magento``: this synchronizer will be available for all |
| 3582 | + versions of Magento. Decorated with ``@magento1700`` it would be only |
| 3583 | + available for Magento 1.7. |
| 3584 | +* ``_model_name``: the list of models allowed to use this synchronizer |
| 3585 | +* We just override the ``_import_record`` hook, the search has already |
| 3586 | + be done in |
| 3587 | + :py:class:`magentoerpconnect.unit.import_synchronizer.BatchImportSynchronizer`. |
| 3588 | +* ``import_record`` is a job to import a record from its ID. |
| 3589 | +* Delay the import of each record, a job will be created for each record id. |
| 3590 | +* This synchronization does not need any Binder nor Mapper, but does |
| 3591 | + need a Backend Adapter to be able to speak with Magento. |
| 3592 | + |
| 3593 | +So, let's implement the **Backend Adapter**. |
| 3594 | + |
| 3595 | +Backend Adapter |
| 3596 | +''''''''''''''' |
| 3597 | + |
| 3598 | +Most of the Magento objects can use the generic class |
| 3599 | +:py:class`magentoerpconnect.unit.backend_adapter.GenericAdapter`. |
| 3600 | +However, the ``search`` entry point is not implemented in the API for |
| 3601 | +customer groups. |
| 3602 | + |
| 3603 | +We'll replace it using ``list`` and select only the ids:: |
| 3604 | + |
| 3605 | + @magento |
| 3606 | + class PartnerCategoryAdapter(GenericAdapter): |
| 3607 | + _model_name = 'magento.res.partner.category' |
| 3608 | + _magento_model = 'ol_customer_groups' |
| 3609 | + |
| 3610 | + def search(self, filters=None): |
| 3611 | + """ Search records according to some criterias |
| 3612 | + and returns a list of ids |
| 3613 | + |
| 3614 | + :rtype: list |
| 3615 | + """ |
| 3616 | + with magentolib.API(self.magento.location, |
| 3617 | + self.magento.username, |
| 3618 | + self.magento.password) as api: |
| 3619 | + return [int(row['customer_group_id']) for row |
| 3620 | + in api.call('%s.list' % self._magento_model, |
| 3621 | + [filters] if filters else [{}])] |
| 3622 | + return [] |
| 3623 | + |
| 3624 | +Observations: |
| 3625 | + |
| 3626 | +* ``_model_name`` is just ``magento.res.partner.category``, this adapter |
| 3627 | + is available only for this model. |
| 3628 | +* ``_magento_model`` is the first part of the entry points in the API |
| 3629 | + (ie. ``ol_customer_groups.list``) |
| 3630 | +* Only the ``search`` method is overriden. |
| 3631 | + |
| 3632 | +We have all the pieces for the first part of the synchronization, just |
| 3633 | +need to... |
| 3634 | + |
| 3635 | +Delay execution of our Batch Import |
| 3636 | +''''''''''''''''''''''''''''''''''' |
| 3637 | + |
| 3638 | +This import will be called from the **Magento Backend**, we modify it in |
| 3639 | +``magentoerpconnect/magento_model.py`` and add a method (to add in the |
| 3640 | +view as well, I won't write the view code here):: |
| 3641 | + |
| 3642 | + def import_customer_groups(self, cr, uid, ids, context=None): |
| 3643 | + if not hasattr(ids, '__iter__'): |
| 3644 | + ids = [ids] |
| 3645 | + session = connector.ConnectorSession(cr, uid, context=context) |
| 3646 | + for backend_id in ids: |
| 3647 | + job.import_batch.delay(session, 'magento.res.partner.category', |
| 3648 | + backend_id) |
| 3649 | + |
| 3650 | + return True |
| 3651 | + |
| 3652 | +Observations: |
| 3653 | + |
| 3654 | +* Declare a :py:class:`connector.connector.ConnectorSession`. |
| 3655 | +* Delay the job ``import_batch`` when we click on the button. |
| 3656 | +* if the arguments were given to ``import_batch`` directly, the import |
| 3657 | + would be done synchronously. |
| 3658 | + |
| 3659 | +Overview on the jobs |
| 3660 | +'''''''''''''''''''' |
| 3661 | + |
| 3662 | +We use 2 jobs: ``import_record`` and ``import_batch``. These jobs are |
| 3663 | +already there so you don't need to write them, but we can have a look |
| 3664 | +on them to understand what they do:: |
| 3665 | + |
| 3666 | + def _get_environment(session, model_name, backend_id): |
| 3667 | + model = session.pool.get('magento.backend') |
| 3668 | + backend_record = model.browse(session.cr, |
| 3669 | + session.uid, |
| 3670 | + backend_id, |
| 3671 | + session.context) |
| 3672 | + return connector.Environment(backend_record, session, model_name) |
| 3673 | + |
| 3674 | + |
| 3675 | + @connector.job |
| 3676 | + def import_batch(session, model_name, backend_id, filters=None): |
| 3677 | + """ Prepare a batch import of records from Magento """ |
| 3678 | + env = _get_environment(session, model_name, backend_id) |
| 3679 | + importer = env.get_connector_unit(BatchImportSynchronizer) |
| 3680 | + importer.run(filters) |
| 3681 | + |
| 3682 | + |
| 3683 | + @connector.job |
| 3684 | + def import_record(session, model_name, backend_id, magento_id): |
| 3685 | + """ Import a record from Magento """ |
| 3686 | + env = _get_environment(session, model_name, backend_id) |
| 3687 | + importer = env.get_connector_unit(MagentoImportSynchronizer) |
| 3688 | + importer.run(magento_id) |
| 3689 | + |
| 3690 | +Observations: |
| 3691 | + |
| 3692 | +* Decorated by :py:class:`connector.connector.queue.job.job`, allow to |
| 3693 | + ``delay`` the function. |
| 3694 | +* We create a new environment and ask for the good importer, respectively |
| 3695 | + for batch imports and record imports. The environment returns an |
| 3696 | + instance of the importer to use. |
| 3697 | +* The docstring of the job is its description for the user. |
| 3698 | + |
| 3699 | +At this point, if one click on the button to import the categories, the |
| 3700 | +batch import would run, generate one job for each category to import, |
| 3701 | +and then all these jobs would fail. We need to create the second |
| 3702 | +synchronizer, the mapper and the binder. |
| 3703 | + |
| 3704 | +Record Importer |
| 3705 | +''''''''''''''' |
| 3706 | + |
| 3707 | +The import of customer groups is so simple that it can use a generic |
| 3708 | +class |
| 3709 | +:py:class:`magentoerpconnect.unit.import_synchronizer.SimpleRecordImport`. |
| 3710 | +We just need to add the model in the ``_model_name`` attribute:: |
| 3711 | + |
| 3712 | + @magento |
| 3713 | + class SimpleRecordImport(MagentoImportSynchronizer): |
| 3714 | + """ Import one Magento Website """ |
| 3715 | + _model_name = [ |
| 3716 | + 'magento.website', |
| 3717 | + 'magento.store', |
| 3718 | + 'magento.storeview', |
| 3719 | + 'magento.res.partner.category', |
| 3720 | + ] |
| 3721 | + |
| 3722 | +However, most of the imports will be more complicated than that. You |
| 3723 | +will often need to create a new class for a model, where you will need |
| 3724 | +to use some of the hooks to change the behavior |
| 3725 | +(``_import_dependencies``, ``_after_import`` for example). |
| 3726 | +Refers to the importers already created in the module and to the base |
| 3727 | +class |
| 3728 | +:py:class:`magentoerpconnect.unit.import_synchronizer.MagentoImportSynchronizer`. |
| 3729 | + |
| 3730 | +The synchronizer asks to the appropriate **Mapper** to transform the data |
| 3731 | +(in ``_map_data``). Here is how we'll create the **Mapper**. |
| 3732 | + |
| 3733 | +Mapper |
| 3734 | +'''''' |
| 3735 | + |
| 3736 | +The mapper takes the record from Magento, and generates the OpenERP |
| 3737 | +record. (or the reverse for the export Mappers) |
| 3738 | + |
| 3739 | +The mapper for the customer groups is as follows:: |
| 3740 | + |
| 3741 | + @magento |
| 3742 | + class PartnerCategoryImportMapper(connector.ImportMapper): |
| 3743 | + _model_name = 'magento.res.partner.category' |
| 3744 | + |
| 3745 | + direct = [ |
| 3746 | + ('customer_group_code', 'name'), |
| 3747 | + ('tax_class_id', 'tax_class_id'), |
| 3748 | + ] |
| 3749 | + |
| 3750 | + @mapping |
| 3751 | + def magento_id(self, record): |
| 3752 | + return {'magento_id': record['customer_group_id']} |
| 3753 | + |
| 3754 | + @mapping |
| 3755 | + def backend_id(self, record): |
| 3756 | + return {'backend_id': self.backend_record.id} |
| 3757 | + |
| 3758 | + |
| 3759 | +Observations: |
| 3760 | + |
| 3761 | +* Some mappings are in ``direct`` and some use a method with a |
| 3762 | + ``@mapping`` decorator. |
| 3763 | +* Methods allow to have more complex mappings. |
| 3764 | + |
| 3765 | +Binder |
| 3766 | +'''''' |
| 3767 | + |
| 3768 | +For the last piece of the construct, it will be an easy one, because |
| 3769 | +normally all the Magento Models will use the same Binder, the so called |
| 3770 | +:py:class:`magentoerpconnect.unit.binder.MagentoModelBinder`. |
| 3771 | + |
| 3772 | +We just need to add our model in the ``_model_name`` attribute:: |
| 3773 | + |
| 3774 | + @magento |
| 3775 | + class MagentoModelBinder(MagentoBinder): |
| 3776 | + """ |
| 3777 | + Bindings are done directly on the model |
| 3778 | + """ |
| 3779 | + _model_name = [ |
| 3780 | + 'magento.website', |
| 3781 | + 'magento.store', |
| 3782 | + 'magento.storeview', |
| 3783 | + 'magento.res.partner.category', |
| 3784 | + ] |
| 3785 | + |
| 3786 | + [...] |
| 3787 | + |
| 3788 | |
| 3789 | === added directory 'magentoerpconnect/doc/howto' |
| 3790 | === added file 'magentoerpconnect/doc/howto/configure_automatic_workflows.rst' |
| 3791 | --- magentoerpconnect/doc/howto/configure_automatic_workflows.rst 1970-01-01 00:00:00 +0000 |
| 3792 | +++ magentoerpconnect/doc/howto/configure_automatic_workflows.rst 2013-08-13 17:30:12 +0000 |
| 3793 | @@ -0,0 +1,12 @@ |
| 3794 | +.. _configure-automatic-workflows: |
| 3795 | + |
| 3796 | + |
| 3797 | +#################################### |
| 3798 | +Howto: configure automatic workflows |
| 3799 | +#################################### |
| 3800 | + |
| 3801 | +Find the configuration in the menu |
| 3802 | +`Sales > Configuration > Sales > Automatic Workflow`. |
| 3803 | + |
| 3804 | + |
| 3805 | +.. todo:: document the configuration |
| 3806 | |
| 3807 | === added file 'magentoerpconnect/doc/howto/configure_emails.rst' |
| 3808 | --- magentoerpconnect/doc/howto/configure_emails.rst 1970-01-01 00:00:00 +0000 |
| 3809 | +++ magentoerpconnect/doc/howto/configure_emails.rst 2013-08-13 17:30:12 +0000 |
| 3810 | @@ -0,0 +1,14 @@ |
| 3811 | +.. _configure-emails: |
| 3812 | + |
| 3813 | +####################### |
| 3814 | +How to configure emails |
| 3815 | +####################### |
| 3816 | + |
| 3817 | +On the Magento Stores, activate the options: |
| 3818 | + |
| 3819 | +* Send email notification on picking done |
| 3820 | +* Send email notification on invoice paid |
| 3821 | + |
| 3822 | +If you want Magento to send email on thoses events. |
| 3823 | + |
| 3824 | +You can otherwise configure OpenERP to send e-mails. |
| 3825 | |
| 3826 | === added file 'magentoerpconnect/doc/howto/configure_exception_rules.rst' |
| 3827 | --- magentoerpconnect/doc/howto/configure_exception_rules.rst 1970-01-01 00:00:00 +0000 |
| 3828 | +++ magentoerpconnect/doc/howto/configure_exception_rules.rst 2013-08-13 17:30:12 +0000 |
| 3829 | @@ -0,0 +1,12 @@ |
| 3830 | +.. _configure-exception-rules: |
| 3831 | + |
| 3832 | + |
| 3833 | +################################ |
| 3834 | +Howto: configure exception rules |
| 3835 | +################################ |
| 3836 | + |
| 3837 | +Find the configuration in the menu |
| 3838 | +`Sales > Configuration > Sales > Exception Rules`. |
| 3839 | + |
| 3840 | + |
| 3841 | +.. todo:: document the configuration |
| 3842 | |
| 3843 | === added file 'magentoerpconnect/doc/howto/configure_payment_methods.rst' |
| 3844 | --- magentoerpconnect/doc/howto/configure_payment_methods.rst 1970-01-01 00:00:00 +0000 |
| 3845 | +++ magentoerpconnect/doc/howto/configure_payment_methods.rst 2013-08-13 17:30:12 +0000 |
| 3846 | @@ -0,0 +1,14 @@ |
| 3847 | +.. _configure-payment-methods: |
| 3848 | + |
| 3849 | + |
| 3850 | +################################ |
| 3851 | +Howto: configure payment methods |
| 3852 | +################################ |
| 3853 | + |
| 3854 | +Find the configuration in the menu |
| 3855 | +`Sales > Configuration > Sales > E-Commerce Payment Methods`. |
| 3856 | + |
| 3857 | +The name of the payment method is the code of the payment in Magento, |
| 3858 | +for instance: `checkmo`. |
| 3859 | + |
| 3860 | +.. todo:: document the configuration |
| 3861 | |
| 3862 | === added file 'magentoerpconnect/doc/howto/configure_pricing.rst' |
| 3863 | --- magentoerpconnect/doc/howto/configure_pricing.rst 1970-01-01 00:00:00 +0000 |
| 3864 | +++ magentoerpconnect/doc/howto/configure_pricing.rst 2013-08-13 17:30:12 +0000 |
| 3865 | @@ -0,0 +1,41 @@ |
| 3866 | +.. _configure-pricing: |
| 3867 | + |
| 3868 | + |
| 3869 | +######################## |
| 3870 | +How to configure pricing |
| 3871 | +######################## |
| 3872 | + |
| 3873 | +Install the pricing extensions by going in: `Settings > Configuration > |
| 3874 | +Connector` and by checking the `Price are managed in OpenERP with |
| 3875 | +pricelists` option. |
| 3876 | + |
| 3877 | +********************************** |
| 3878 | +Prices are shared accross websites |
| 3879 | +********************************** |
| 3880 | + |
| 3881 | +The pricelist used for the prices sent to Magento is configured on the |
| 3882 | +Magento Backend (`Connectors > Magento > Backends`). |
| 3883 | + |
| 3884 | +************************************* |
| 3885 | +Prices are different accross websites |
| 3886 | +************************************* |
| 3887 | + |
| 3888 | +.. note:: Verify that the option `Use pricelists to adapt your price per |
| 3889 | + customers` is active in the OpenERP `Settings > Configuration |
| 3890 | + > Sales`. |
| 3891 | + |
| 3892 | +The pricelist used for the prices sent to Magento is configured on the |
| 3893 | +Magento Backend (`Connectors > Magento > Backends`). Magento will use |
| 3894 | +theses prices as default prices. |
| 3895 | + |
| 3896 | +.. note:: In Magento, the default is to share the prices between websites. |
| 3897 | + If you want to have different prices per websites, go to |
| 3898 | + `System > Catalog > Catalog > Price` and set the `Catalog |
| 3899 | + Price Scope` to `Website` instead of `Global`. |
| 3900 | + |
| 3901 | +When you need different prices for a website, set the pricelist for this |
| 3902 | +website in `Connectors > Magento > Websites`. |
| 3903 | + |
| 3904 | +.. warning:: The prices are actually updated on Magento when the price |
| 3905 | + is changed on the products, not when a pricelist is |
| 3906 | + modified. |
| 3907 | |
| 3908 | === added file 'magentoerpconnect/doc/howto/configure_schedulers.rst' |
| 3909 | --- magentoerpconnect/doc/howto/configure_schedulers.rst 1970-01-01 00:00:00 +0000 |
| 3910 | +++ magentoerpconnect/doc/howto/configure_schedulers.rst 2013-08-13 17:30:12 +0000 |
| 3911 | @@ -0,0 +1,25 @@ |
| 3912 | +.. _configure-schedulers: |
| 3913 | + |
| 3914 | +########################### |
| 3915 | +How to configure schedulers |
| 3916 | +########################### |
| 3917 | + |
| 3918 | +Once your configuration is fine, |
| 3919 | +you will want to automate the import |
| 3920 | +of the products, sales orders, ... |
| 3921 | + |
| 3922 | +Go to `Settings > Technical > Scheduler > Scheduled Actions`. |
| 3923 | + |
| 3924 | +Activate the wanted schedulers: |
| 3925 | + |
| 3926 | +* Magento - Import Customer Groups |
| 3927 | + |
| 3928 | +* Magento - Import Partners |
| 3929 | + |
| 3930 | +* Magento - Import Product Categories |
| 3931 | + |
| 3932 | +* Magento - Import Sales Orders |
| 3933 | + |
| 3934 | +* Magento - Update Stock Quantities |
| 3935 | + |
| 3936 | +You can change the `Interval Number` and `Interval Unit` as well. |
| 3937 | |
| 3938 | === added file 'magentoerpconnect/doc/howto/configure_shipping_methods.rst' |
| 3939 | --- magentoerpconnect/doc/howto/configure_shipping_methods.rst 1970-01-01 00:00:00 +0000 |
| 3940 | +++ magentoerpconnect/doc/howto/configure_shipping_methods.rst 2013-08-13 17:30:12 +0000 |
| 3941 | @@ -0,0 +1,36 @@ |
| 3942 | +.. _configure-shipping-methods: |
| 3943 | + |
| 3944 | + |
| 3945 | +################################# |
| 3946 | +How to configure shipping methods |
| 3947 | +################################# |
| 3948 | + |
| 3949 | +Find the configuration in the menu |
| 3950 | +`Warehouse > Configuration > Delivery Methods`. |
| 3951 | + |
| 3952 | +For each shipping method in Magento, |
| 3953 | +you need to create a delivery method in OpenERP. |
| 3954 | + |
| 3955 | +The connector creates a product `[SHIP] Shipping costs`, |
| 3956 | +you can use it for the Delivery Product. |
| 3957 | + |
| 3958 | +.. note:: If you import a sale order but the shipping method does not |
| 3959 | + exist, it will create it for you. But the configuration will |
| 3960 | + not be correct, so you better have to create them before |
| 3961 | + any import. |
| 3962 | + |
| 3963 | +The 'Magento Carrier Code' is the code of the shipping method in Magento, |
| 3964 | +for instance: `flatrate_flatrate`. |
| 3965 | + |
| 3966 | +The 'Magento Tracking Title' is the text which will be displayed on |
| 3967 | +Magento next to the tracking number. |
| 3968 | + |
| 3969 | +'Export tracking numbers' defines wether the tracking numbers should be |
| 3970 | +sent to Magento. |
| 3971 | + |
| 3972 | + |
| 3973 | + |
| 3974 | +.. warning:: If you use the `flatrate` shipping method, you need to |
| 3975 | + deactivate the option `Export tracking numbers` because |
| 3976 | + this shipping method does not support to send tracking |
| 3977 | + numbers. |
| 3978 | |
| 3979 | === added file 'magentoerpconnect/doc/howto/configure_translations.rst' |
| 3980 | --- magentoerpconnect/doc/howto/configure_translations.rst 1970-01-01 00:00:00 +0000 |
| 3981 | +++ magentoerpconnect/doc/howto/configure_translations.rst 2013-08-13 17:30:12 +0000 |
| 3982 | @@ -0,0 +1,15 @@ |
| 3983 | +.. _configure-translations: |
| 3984 | + |
| 3985 | + |
| 3986 | +############################# |
| 3987 | +How to configure translations |
| 3988 | +############################# |
| 3989 | + |
| 3990 | +If you have different translations on Magento, |
| 3991 | +say one store view displayed in english and a second in french, |
| 3992 | +you have to configure the languages to use in OpenERP. |
| 3993 | + |
| 3994 | +1. Set the default language in the Magento Backend (`Connectors > Magento > Backend`) |
| 3995 | + in the field `Default Language`. |
| 3996 | +2. Then, for each storeview (`Connectors > Magento > Storeviews`), |
| 3997 | + change the language of the storeview. |
| 3998 | |
| 3999 | === added file 'magentoerpconnect/doc/howto/configure_warehouse.rst' |
| 4000 | --- magentoerpconnect/doc/howto/configure_warehouse.rst 1970-01-01 00:00:00 +0000 |
| 4001 | +++ magentoerpconnect/doc/howto/configure_warehouse.rst 2013-08-13 17:30:12 +0000 |
| 4002 | @@ -0,0 +1,19 @@ |
| 4003 | +.. _configure-warehouses: |
| 4004 | + |
| 4005 | +########################### |
| 4006 | +How to configure warehouses |
| 4007 | +########################### |
| 4008 | + |
| 4009 | +The warehouse defined on the Magento Backend |
| 4010 | +(`Connectors > Magento > Backend`) is the |
| 4011 | +warehouse used to update the stock quantities on Magento. |
| 4012 | + |
| 4013 | +On the backend, you can also change the field from which the |
| 4014 | +stock quantity is read in the product. |
| 4015 | +By default, the quantity send to Magento is the forecasted quantity, |
| 4016 | +but you can use another standard or custom field by changing the field |
| 4017 | +`Stock Field`. |
| 4018 | + |
| 4019 | +For each Magento Store, the connector has created an OpenERP Sale Shop. |
| 4020 | +So you may want to check the Sales Shops to ensure they have the correct |
| 4021 | +warehouses. |
| 4022 | |
| 4023 | === added file 'magentoerpconnect/doc/howto/modify_an_order.rst' |
| 4024 | --- magentoerpconnect/doc/howto/modify_an_order.rst 1970-01-01 00:00:00 +0000 |
| 4025 | +++ magentoerpconnect/doc/howto/modify_an_order.rst 2013-08-13 17:30:12 +0000 |
| 4026 | @@ -0,0 +1,45 @@ |
| 4027 | +.. _modify-an-order: |
| 4028 | + |
| 4029 | + |
| 4030 | +################################### |
| 4031 | +How to cancel / modify a sale order |
| 4032 | +################################### |
| 4033 | + |
| 4034 | +**************************************** |
| 4035 | +Handle a sale order cancelled on Magento |
| 4036 | +**************************************** |
| 4037 | + |
| 4038 | +If a sales order has already been imported in OpenERP and is cancelled |
| 4039 | +in Magento, the change won't be reflected in OpenERP. If a sales order |
| 4040 | +is still waiting for a payment and is canceled, it won't be imported in |
| 4041 | +OpenERP. |
| 4042 | + |
| 4043 | +******************* |
| 4044 | +Modify a sale order |
| 4045 | +******************* |
| 4046 | + |
| 4047 | +When you need to modify a product in a sale order, |
| 4048 | +you should not modify it in the sale order directly. |
| 4049 | +The sale order represents what the customer really ordered. |
| 4050 | + |
| 4051 | +You would be able to change the product in the delivery order. |
| 4052 | +But Magento does not accept any change in the shipments, |
| 4053 | +so it won't be modified on the Magento side |
| 4054 | +(and you will have issues with partial deliveries). |
| 4055 | +The changes would not be repercuted on the invoices neither. |
| 4056 | + |
| 4057 | +Instead, you can modify the sale order on the Magento backend. |
| 4058 | +When Magento modifies a sale order, |
| 4059 | +it cancels it and creates a new one. |
| 4060 | +When the new order is imported in OpenERP, |
| 4061 | +it flags the old one as 'Cancelled on Backend', |
| 4062 | +then link the new order with the old one as a 'parent' order. |
| 4063 | + |
| 4064 | +If it can automatically cancel the parent order, |
| 4065 | +it will do it. |
| 4066 | +Otherwise, you'll have to handle it manually. |
| 4067 | +You can search for them using the search filters. |
| 4068 | + |
| 4069 | +Until the old sale order is not cancelled or done, |
| 4070 | +a rule prevents the new and the parent sales orders |
| 4071 | +to be confirmed. |
| 4072 | |
| 4073 | === added file 'magentoerpconnect/doc/index.rst' |
| 4074 | --- magentoerpconnect/doc/index.rst 1970-01-01 00:00:00 +0000 |
| 4075 | +++ magentoerpconnect/doc/index.rst 2013-08-13 17:30:12 +0000 |
| 4076 | @@ -0,0 +1,154 @@ |
| 4077 | +.. Connectors documentation master file, created by |
| 4078 | + sphinx-quickstart on Mon Feb 4 11:35:44 2013. |
| 4079 | + You can adapt this file completely to your liking, but it should at least |
| 4080 | + contain the root `toctree` directive. |
| 4081 | + |
| 4082 | +######################### |
| 4083 | +Magento OpenERP Connector |
| 4084 | +######################### |
| 4085 | + |
| 4086 | +This is the new release of the Open-Source connector linking OpenERP and |
| 4087 | +Magento also known under the name of **Magentoerpconnect**. It is |
| 4088 | +build on top of the `connector`_ framework. It is is structured so that |
| 4089 | +it can be extended or modified easily from separate addons, a factor of |
| 4090 | +success when the implementations of Magento vary a lot. |
| 4091 | + |
| 4092 | +Magento OpenERP Connector is mainly developed by the Magentoerpconnect Core |
| 4093 | +Editors, these being Camptocamp_ and Akretion_. The `source is on |
| 4094 | +launchpad`_. |
| 4095 | + |
| 4096 | +This connector is designed to have a strong and efficient core, with the |
| 4097 | +ability to extend it with extension modules or local customizations. |
| 4098 | + |
| 4099 | +.. _connector: https://code.launchpad.net/openerp-connector |
| 4100 | +.. _Camptocamp: http://www.camptocamp.com |
| 4101 | +.. _Akretion: http://www.akretion.com |
| 4102 | +.. _`source is on launchpad`: https://launchpad.net/magentoerpconnect |
| 4103 | + |
| 4104 | + |
| 4105 | +*********** |
| 4106 | +First steps |
| 4107 | +*********** |
| 4108 | + |
| 4109 | +.. toctree:: |
| 4110 | + :maxdepth: 2 |
| 4111 | + |
| 4112 | + guides/installation_guide |
| 4113 | + guides/key_questions |
| 4114 | + |
| 4115 | + |
| 4116 | +*********************************** |
| 4117 | +Using and configuring the connector |
| 4118 | +*********************************** |
| 4119 | + |
| 4120 | +Be efficient using and configuring the connector. |
| 4121 | + |
| 4122 | +.. toctree:: |
| 4123 | + :maxdepth: 1 |
| 4124 | + |
| 4125 | + howto/configure_translations |
| 4126 | + howto/configure_warehouse |
| 4127 | + howto/configure_pricing |
| 4128 | + howto/configure_payment_methods |
| 4129 | + howto/configure_automatic_workflows |
| 4130 | + howto/configure_exception_rules |
| 4131 | + howto/configure_shipping_methods |
| 4132 | + howto/configure_emails |
| 4133 | + howto/configure_schedulers |
| 4134 | + guides/connector_checkpoint |
| 4135 | + guides/monitor_resolve_jobs |
| 4136 | + howto/modify_an_order |
| 4137 | + |
| 4138 | + |
| 4139 | +*************************** |
| 4140 | +Developing on the connector |
| 4141 | +*************************** |
| 4142 | + |
| 4143 | +Learn about how you can contribute or use the connector as a developer. |
| 4144 | + |
| 4145 | +Develop |
| 4146 | +======= |
| 4147 | + |
| 4148 | +.. toctree:: |
| 4149 | + :maxdepth: 2 |
| 4150 | + |
| 4151 | + guides/tutorial_development |
| 4152 | + guides/tutorial_customize |
| 4153 | + |
| 4154 | + |
| 4155 | +API |
| 4156 | +=== |
| 4157 | + |
| 4158 | +General API |
| 4159 | +----------- |
| 4160 | + |
| 4161 | +.. toctree:: |
| 4162 | + :maxdepth: 2 |
| 4163 | + |
| 4164 | + api/api_connector.rst |
| 4165 | + api/api_consumer.rst |
| 4166 | + api/api_backend.rst |
| 4167 | + api/api_binder.rst |
| 4168 | + api/api_synchronizer.rst |
| 4169 | + api/api_backend_adapter.rst |
| 4170 | + api/api_exception.rst |
| 4171 | + |
| 4172 | +Models API |
| 4173 | +---------- |
| 4174 | + |
| 4175 | +.. toctree:: |
| 4176 | + :maxdepth: 2 |
| 4177 | + |
| 4178 | + api/api_delivery.rst |
| 4179 | + api/api_invoice.rst |
| 4180 | + api/api_magento_model.rst |
| 4181 | + api/api_partner.rst |
| 4182 | + api/api_partner_category.rst |
| 4183 | + api/api_product.rst |
| 4184 | + api/api_product_category.rst |
| 4185 | + api/api_sale.rst |
| 4186 | + api/api_stock_picking.rst |
| 4187 | + api/api_stock_tracking.rst |
| 4188 | + |
| 4189 | + |
| 4190 | +Project |
| 4191 | +======= |
| 4192 | + |
| 4193 | +.. toctree:: |
| 4194 | + :maxdepth: 1 |
| 4195 | + |
| 4196 | + project/roadmap |
| 4197 | + project/contributors |
| 4198 | + project/contribute |
| 4199 | + project/changes |
| 4200 | + |
| 4201 | + |
| 4202 | +Concepts |
| 4203 | +======== |
| 4204 | + |
| 4205 | +Glossary: |
| 4206 | + |
| 4207 | +.. glossary:: |
| 4208 | + |
| 4209 | + Job |
| 4210 | + |
| 4211 | + A unit of work consisting of a single complete and atomic task. |
| 4212 | + Example: import of a product. |
| 4213 | + |
| 4214 | + Backend |
| 4215 | + |
| 4216 | + An external service on which we connect OpenERP. In the context |
| 4217 | + of the Magento connector, Magento is a backend. |
| 4218 | + |
| 4219 | + Mapping |
| 4220 | + |
| 4221 | + A mapping defines how the data is converted from Magento to |
| 4222 | + OpenERP and reversely. |
| 4223 | + |
| 4224 | +Indices and tables |
| 4225 | +================== |
| 4226 | + |
| 4227 | +* :ref:`genindex` |
| 4228 | +* :ref:`modindex` |
| 4229 | +* :ref:`search` |
| 4230 | + |
| 4231 | |
| 4232 | === added file 'magentoerpconnect/doc/make.bat' |
| 4233 | --- magentoerpconnect/doc/make.bat 1970-01-01 00:00:00 +0000 |
| 4234 | +++ magentoerpconnect/doc/make.bat 2013-08-13 17:30:12 +0000 |
| 4235 | @@ -0,0 +1,190 @@ |
| 4236 | +@ECHO OFF |
| 4237 | + |
| 4238 | +REM Command file for Sphinx documentation |
| 4239 | + |
| 4240 | +if "%SPHINXBUILD%" == "" ( |
| 4241 | + set SPHINXBUILD=sphinx-build |
| 4242 | +) |
| 4243 | +set BUILDDIR=_build |
| 4244 | +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . |
| 4245 | +set I18NSPHINXOPTS=%SPHINXOPTS% . |
| 4246 | +if NOT "%PAPER%" == "" ( |
| 4247 | + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% |
| 4248 | + set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% |
| 4249 | +) |
| 4250 | + |
| 4251 | +if "%1" == "" goto help |
| 4252 | + |
| 4253 | +if "%1" == "help" ( |
| 4254 | + :help |
| 4255 | + echo.Please use `make ^<target^>` where ^<target^> is one of |
| 4256 | + echo. html to make standalone HTML files |
| 4257 | + echo. dirhtml to make HTML files named index.html in directories |
| 4258 | + echo. singlehtml to make a single large HTML file |
| 4259 | + echo. pickle to make pickle files |
| 4260 | + echo. json to make JSON files |
| 4261 | + echo. htmlhelp to make HTML files and a HTML help project |
| 4262 | + echo. qthelp to make HTML files and a qthelp project |
| 4263 | + echo. devhelp to make HTML files and a Devhelp project |
| 4264 | + echo. epub to make an epub |
| 4265 | + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter |
| 4266 | + echo. text to make text files |
| 4267 | + echo. man to make manual pages |
| 4268 | + echo. texinfo to make Texinfo files |
| 4269 | + echo. gettext to make PO message catalogs |
| 4270 | + echo. changes to make an overview over all changed/added/deprecated items |
| 4271 | + echo. linkcheck to check all external links for integrity |
| 4272 | + echo. doctest to run all doctests embedded in the documentation if enabled |
| 4273 | + goto end |
| 4274 | +) |
| 4275 | + |
| 4276 | +if "%1" == "clean" ( |
| 4277 | + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i |
| 4278 | + del /q /s %BUILDDIR%\* |
| 4279 | + goto end |
| 4280 | +) |
| 4281 | + |
| 4282 | +if "%1" == "html" ( |
| 4283 | + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html |
| 4284 | + if errorlevel 1 exit /b 1 |
| 4285 | + echo. |
| 4286 | + echo.Build finished. The HTML pages are in %BUILDDIR%/html. |
| 4287 | + goto end |
| 4288 | +) |
| 4289 | + |
| 4290 | +if "%1" == "dirhtml" ( |
| 4291 | + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml |
| 4292 | + if errorlevel 1 exit /b 1 |
| 4293 | + echo. |
| 4294 | + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. |
| 4295 | + goto end |
| 4296 | +) |
| 4297 | + |
| 4298 | +if "%1" == "singlehtml" ( |
| 4299 | + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml |
| 4300 | + if errorlevel 1 exit /b 1 |
| 4301 | + echo. |
| 4302 | + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. |
| 4303 | + goto end |
| 4304 | +) |
| 4305 | + |
| 4306 | +if "%1" == "pickle" ( |
| 4307 | + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle |
| 4308 | + if errorlevel 1 exit /b 1 |
| 4309 | + echo. |
| 4310 | + echo.Build finished; now you can process the pickle files. |
| 4311 | + goto end |
| 4312 | +) |
| 4313 | + |
| 4314 | +if "%1" == "json" ( |
| 4315 | + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json |
| 4316 | + if errorlevel 1 exit /b 1 |
| 4317 | + echo. |
| 4318 | + echo.Build finished; now you can process the JSON files. |
| 4319 | + goto end |
| 4320 | +) |
| 4321 | + |
| 4322 | +if "%1" == "htmlhelp" ( |
| 4323 | + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp |
| 4324 | + if errorlevel 1 exit /b 1 |
| 4325 | + echo. |
| 4326 | + echo.Build finished; now you can run HTML Help Workshop with the ^ |
| 4327 | +.hhp project file in %BUILDDIR%/htmlhelp. |
| 4328 | + goto end |
| 4329 | +) |
| 4330 | + |
| 4331 | +if "%1" == "qthelp" ( |
| 4332 | + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp |
| 4333 | + if errorlevel 1 exit /b 1 |
| 4334 | + echo. |
| 4335 | + echo.Build finished; now you can run "qcollectiongenerator" with the ^ |
| 4336 | +.qhcp project file in %BUILDDIR%/qthelp, like this: |
| 4337 | + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Connectors.qhcp |
| 4338 | + echo.To view the help file: |
| 4339 | + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Connectors.ghc |
| 4340 | + goto end |
| 4341 | +) |
| 4342 | + |
| 4343 | +if "%1" == "devhelp" ( |
| 4344 | + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp |
| 4345 | + if errorlevel 1 exit /b 1 |
| 4346 | + echo. |
| 4347 | + echo.Build finished. |
| 4348 | + goto end |
| 4349 | +) |
| 4350 | + |
| 4351 | +if "%1" == "epub" ( |
| 4352 | + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub |
| 4353 | + if errorlevel 1 exit /b 1 |
| 4354 | + echo. |
| 4355 | + echo.Build finished. The epub file is in %BUILDDIR%/epub. |
| 4356 | + goto end |
| 4357 | +) |
| 4358 | + |
| 4359 | +if "%1" == "latex" ( |
| 4360 | + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex |
| 4361 | + if errorlevel 1 exit /b 1 |
| 4362 | + echo. |
| 4363 | + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. |
| 4364 | + goto end |
| 4365 | +) |
| 4366 | + |
| 4367 | +if "%1" == "text" ( |
| 4368 | + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text |
| 4369 | + if errorlevel 1 exit /b 1 |
| 4370 | + echo. |
| 4371 | + echo.Build finished. The text files are in %BUILDDIR%/text. |
| 4372 | + goto end |
| 4373 | +) |
| 4374 | + |
| 4375 | +if "%1" == "man" ( |
| 4376 | + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man |
| 4377 | + if errorlevel 1 exit /b 1 |
| 4378 | + echo. |
| 4379 | + echo.Build finished. The manual pages are in %BUILDDIR%/man. |
| 4380 | + goto end |
| 4381 | +) |
| 4382 | + |
| 4383 | +if "%1" == "texinfo" ( |
| 4384 | + %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo |
| 4385 | + if errorlevel 1 exit /b 1 |
| 4386 | + echo. |
| 4387 | + echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. |
| 4388 | + goto end |
| 4389 | +) |
| 4390 | + |
| 4391 | +if "%1" == "gettext" ( |
| 4392 | + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale |
| 4393 | + if errorlevel 1 exit /b 1 |
| 4394 | + echo. |
| 4395 | + echo.Build finished. The message catalogs are in %BUILDDIR%/locale. |
| 4396 | + goto end |
| 4397 | +) |
| 4398 | + |
| 4399 | +if "%1" == "changes" ( |
| 4400 | + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes |
| 4401 | + if errorlevel 1 exit /b 1 |
| 4402 | + echo. |
| 4403 | + echo.The overview file is in %BUILDDIR%/changes. |
| 4404 | + goto end |
| 4405 | +) |
| 4406 | + |
| 4407 | +if "%1" == "linkcheck" ( |
| 4408 | + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck |
| 4409 | + if errorlevel 1 exit /b 1 |
| 4410 | + echo. |
| 4411 | + echo.Link check complete; look for any errors in the above output ^ |
| 4412 | +or in %BUILDDIR%/linkcheck/output.txt. |
| 4413 | + goto end |
| 4414 | +) |
| 4415 | + |
| 4416 | +if "%1" == "doctest" ( |
| 4417 | + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest |
| 4418 | + if errorlevel 1 exit /b 1 |
| 4419 | + echo. |
| 4420 | + echo.Testing of doctests in the sources finished, look at the ^ |
| 4421 | +results in %BUILDDIR%/doctest/output.txt. |
| 4422 | + goto end |
| 4423 | +) |
| 4424 | + |
| 4425 | +:end |
| 4426 | |
| 4427 | === added directory 'magentoerpconnect/doc/project' |
| 4428 | === added file 'magentoerpconnect/doc/project/changes.rst' |
| 4429 | --- magentoerpconnect/doc/project/changes.rst 1970-01-01 00:00:00 +0000 |
| 4430 | +++ magentoerpconnect/doc/project/changes.rst 2013-08-13 17:30:12 +0000 |
| 4431 | @@ -0,0 +1,8 @@ |
| 4432 | +.. _changes: |
| 4433 | + |
| 4434 | +####### |
| 4435 | +Changes |
| 4436 | +####### |
| 4437 | + |
| 4438 | +.. include:: ../../CHANGES.rst |
| 4439 | + :start-line: 3 |
| 4440 | |
| 4441 | === added file 'magentoerpconnect/doc/project/contribute.rst' |
| 4442 | --- magentoerpconnect/doc/project/contribute.rst 1970-01-01 00:00:00 +0000 |
| 4443 | +++ magentoerpconnect/doc/project/contribute.rst 2013-08-13 17:30:12 +0000 |
| 4444 | @@ -0,0 +1,19 @@ |
| 4445 | +.. _contribute: |
| 4446 | + |
| 4447 | +########## |
| 4448 | +Contribute |
| 4449 | +########## |
| 4450 | + |
| 4451 | +We do accept merge proposals! |
| 4452 | + |
| 4453 | + |
| 4454 | +.. todo:: Complete this page. |
| 4455 | + |
| 4456 | + Some topics to cover: |
| 4457 | + |
| 4458 | + * mailing list (irc?) |
| 4459 | + * bug reports |
| 4460 | + * submit merge proposals for features or fixes |
| 4461 | + * use and write tests |
| 4462 | + * improve documentation |
| 4463 | + * translations |
| 4464 | |
| 4465 | === added file 'magentoerpconnect/doc/project/contributors.rst' |
| 4466 | --- magentoerpconnect/doc/project/contributors.rst 1970-01-01 00:00:00 +0000 |
| 4467 | +++ magentoerpconnect/doc/project/contributors.rst 2013-08-13 17:30:12 +0000 |
| 4468 | @@ -0,0 +1,10 @@ |
| 4469 | +############ |
| 4470 | +Contributors |
| 4471 | +############ |
| 4472 | + |
| 4473 | +Special thanks to: |
| 4474 | + |
| 4475 | +* Mohammed Nahhas for creating Maverick-Entity-Generator_ to help us in |
| 4476 | + our tests. |
| 4477 | + |
| 4478 | +.. _Maverick-Entity-Generator: https://github.com/maverick193/entity-generator |
| 4479 | |
| 4480 | === added file 'magentoerpconnect/doc/project/roadmap.rst' |
| 4481 | --- magentoerpconnect/doc/project/roadmap.rst 1970-01-01 00:00:00 +0000 |
| 4482 | +++ magentoerpconnect/doc/project/roadmap.rst 2013-08-13 17:30:12 +0000 |
| 4483 | @@ -0,0 +1,61 @@ |
| 4484 | +.. _roadmap: |
| 4485 | + |
| 4486 | + |
| 4487 | +####### |
| 4488 | +Roadmap |
| 4489 | +####### |
| 4490 | + |
| 4491 | +This document lists the feature that we want to develop for the |
| 4492 | +connector. They are not sorted by priority. Any contribution on theses |
| 4493 | +points will be welcome. |
| 4494 | + |
| 4495 | +******* |
| 4496 | +Catalog |
| 4497 | +******* |
| 4498 | + |
| 4499 | +Types of products |
| 4500 | +================= |
| 4501 | + |
| 4502 | +* Support of Bundles with a split in the sale order |
| 4503 | + |
| 4504 | +* Support of Bundles with a manufacturing order |
| 4505 | + |
| 4506 | +* Support of Configurables |
| 4507 | + |
| 4508 | +* Support of Grouped products |
| 4509 | + |
| 4510 | +* Support of Virtual products |
| 4511 | + |
| 4512 | +* Support of Downloadable products |
| 4513 | + |
| 4514 | +Product links |
| 4515 | +============= |
| 4516 | + |
| 4517 | +* Import of links |
| 4518 | + |
| 4519 | +* Related, Upsell, Cross-sell, ... |
| 4520 | + |
| 4521 | +* Gifts |
| 4522 | + |
| 4523 | +Product images |
| 4524 | +============== |
| 4525 | + |
| 4526 | +* Import product images |
| 4527 | + |
| 4528 | +* Management of several images on a product |
| 4529 | + |
| 4530 | +Export of the catalog |
| 4531 | +===================== |
| 4532 | + |
| 4533 | +* Export products |
| 4534 | + |
| 4535 | +* Export product categories |
| 4536 | + |
| 4537 | +* Export product links |
| 4538 | + |
| 4539 | +* Export product images |
| 4540 | + |
| 4541 | +Pricing |
| 4542 | +======= |
| 4543 | + |
| 4544 | +* Push the new prices to Magento when a pricelist is modified |
| 4545 | |
| 4546 | === added file 'magentoerpconnect/exception.py' |
| 4547 | --- magentoerpconnect/exception.py 1970-01-01 00:00:00 +0000 |
| 4548 | +++ magentoerpconnect/exception.py 2013-08-13 17:30:12 +0000 |
| 4549 | @@ -0,0 +1,26 @@ |
| 4550 | +# -*- coding: utf-8 -*- |
| 4551 | +############################################################################## |
| 4552 | +# |
| 4553 | +# Author: Guewen Baconnier |
| 4554 | +# Copyright 2013 Camptocamp SA |
| 4555 | +# |
| 4556 | +# This program is free software: you can redistribute it and/or modify |
| 4557 | +# it under the terms of the GNU Affero General Public License as |
| 4558 | +# published by the Free Software Foundation, either version 3 of the |
| 4559 | +# License, or (at your option) any later version. |
| 4560 | +# |
| 4561 | +# This program is distributed in the hope that it will be useful, |
| 4562 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 4563 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 4564 | +# GNU Affero General Public License for more details. |
| 4565 | +# |
| 4566 | +# You should have received a copy of the GNU Affero General Public License |
| 4567 | +# along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 4568 | +# |
| 4569 | +############################################################################## |
| 4570 | + |
| 4571 | +from openerp.addons.connector.exception import RetryableJobError |
| 4572 | + |
| 4573 | + |
| 4574 | +class OrderImportRuleRetry(RetryableJobError): |
| 4575 | + """ The sale order import will be retried later. """ |
| 4576 | |
| 4577 | === added directory 'magentoerpconnect/i18n' |
| 4578 | === added file 'magentoerpconnect/i18n/fr_FR.po' |
| 4579 | --- magentoerpconnect/i18n/fr_FR.po 1970-01-01 00:00:00 +0000 |
| 4580 | +++ magentoerpconnect/i18n/fr_FR.po 2013-08-13 17:30:12 +0000 |
| 4581 | @@ -0,0 +1,1007 @@ |
| 4582 | +# Translation of OpenERP Server. |
| 4583 | +# This file contains the translation of the following modules: |
| 4584 | +# * magentoerpconnect |
| 4585 | +# |
| 4586 | +msgid "" |
| 4587 | +msgstr "" |
| 4588 | +"Project-Id-Version: OpenERP Server 7.0\n" |
| 4589 | +"Report-Msgid-Bugs-To: \n" |
| 4590 | +"POT-Creation-Date: 2013-05-01 12:45+0000\n" |
| 4591 | +"PO-Revision-Date: 2013-05-01 12:45+0000\n" |
| 4592 | +"Last-Translator: <>\n" |
| 4593 | +"Language-Team: \n" |
| 4594 | +"MIME-Version: 1.0\n" |
| 4595 | +"Content-Type: text/plain; charset=UTF-8\n" |
| 4596 | +"Content-Transfer-Encoding: \n" |
| 4597 | +"Plural-Forms: \n" |
| 4598 | + |
| 4599 | +#. module: magentoerpconnect |
| 4600 | +#: help:magento.backend,pricelist_id:0 |
| 4601 | +msgid "The price list used to define the prices of the products in Magento." |
| 4602 | +msgstr "La liste de prix utilisée pour définir les prix des articles sur Magento." |
| 4603 | + |
| 4604 | +#. module: magentoerpconnect |
| 4605 | +#: help:magento.store,send_invoice_paid_mail:0 |
| 4606 | +msgid "Does the invoice export/creation should send an email notification on Magento side?" |
| 4607 | +msgstr "Définit si Magento doit envoyer un e-mail lors de l'export des factures." |
| 4608 | + |
| 4609 | +#. module: magentoerpconnect |
| 4610 | +#: view:magento.backend:0 |
| 4611 | +msgid "Import sales orders from all store views" |
| 4612 | +msgstr "Importer les commandes depuis toutes les vues magasin" |
| 4613 | + |
| 4614 | +#. module: magentoerpconnect |
| 4615 | +#: model:sale.exception,description:magentoerpconnect.excep_wrong_total_amount_tax |
| 4616 | +msgid "The tax amount computed in OpenERP doesn't match with the tax amount in Magento.\n" |
| 4617 | +"\n" |
| 4618 | +"Cause:\n" |
| 4619 | +"The taxes are probably different between OpenERP and Magento. A fiscal position could have changed the final price.\n" |
| 4620 | +"\n" |
| 4621 | +"Resolution:\n" |
| 4622 | +"Check your taxes and fiscal positions configuration and correct them if necessary." |
| 4623 | +msgstr "Les taxes calculées par OpenERP ne correspondent pas aux tax calculées par Magento.\n" |
| 4624 | +"\n" |
| 4625 | +"Cause:\n" |
| 4626 | +"La configuration des taxes est probablement différente entre OpenERP et Magento. Une position fiscale peut avoir modifié le prix final.\n" |
| 4627 | +"\n" |
| 4628 | +"Résolution:\n" |
| 4629 | +"Contrôler la configuration des taxes et positions fiscales et les corriger si nécessaire." |
| 4630 | + |
| 4631 | +#. module: magentoerpconnect |
| 4632 | +#: help:magento.backend,warehouse_id:0 |
| 4633 | +msgid "Warehouse used to compute the stock quantities." |
| 4634 | +msgstr "Entrepôt utilisé pour calculer les quantités en stock." |
| 4635 | + |
| 4636 | +#. module: magentoerpconnect |
| 4637 | +#: field:magento.account.invoice,sync_date:0 |
| 4638 | +#: field:magento.address,sync_date:0 |
| 4639 | +#: field:magento.binding,sync_date:0 |
| 4640 | +#: field:magento.product.category,sync_date:0 |
| 4641 | +#: field:magento.product.product,sync_date:0 |
| 4642 | +#: field:magento.res.partner,sync_date:0 |
| 4643 | +#: field:magento.res.partner.category,sync_date:0 |
| 4644 | +#: field:magento.sale.order,sync_date:0 |
| 4645 | +#: field:magento.sale.order.line,sync_date:0 |
| 4646 | +#: field:magento.stock.picking.out,sync_date:0 |
| 4647 | +#: field:magento.store,sync_date:0 |
| 4648 | +#: field:magento.storeview,sync_date:0 |
| 4649 | +#: field:magento.website,sync_date:0 |
| 4650 | +msgid "Last synchronization date" |
| 4651 | +msgstr "Dernière date de synchronisation" |
| 4652 | + |
| 4653 | +#. module: magentoerpconnect |
| 4654 | +#: help:magento.backend,default_category_id:0 |
| 4655 | +msgid "If a default category is selected, products imported without a category will be linked to it." |
| 4656 | +msgstr "Si une catégorie par défaut est sélectionnée, les articles importés sans catégorie y seront liés." |
| 4657 | + |
| 4658 | +#. module: magentoerpconnect |
| 4659 | +#: help:magento.storeview,import_orders_from_date:0 |
| 4660 | +msgid "do not consider non-imported sale orders before this date. Leave empty to import all sale orders" |
| 4661 | +msgstr "Ignore les commandes non importées avant cette date. Laisser vide pour importer toutes les commandes." |
| 4662 | + |
| 4663 | +#. module: magentoerpconnect |
| 4664 | +#: help:magento.store,send_picking_done_mail:0 |
| 4665 | +msgid "Does the picking export/creation should send an email notification on Magento side?" |
| 4666 | +msgstr "Définit si Magento doit envoyer un e-mail lors de l'export des bons de livraisons." |
| 4667 | + |
| 4668 | +#. module: magentoerpconnect |
| 4669 | +#: selection:magento.product.product,manage_stock:0 |
| 4670 | +msgid "Do Not Manage Stock" |
| 4671 | +msgstr "Ne pas gérer les stock" |
| 4672 | + |
| 4673 | +#. module: magentoerpconnect |
| 4674 | +#: field:connector.config.settings,module_magentoerpconnect_catalog:0 |
| 4675 | +msgid "Handle the product's catalog (not implemented)" |
| 4676 | +msgstr "Gérer le catalogue d'articles depuis OpenERP (non supporté)" |
| 4677 | + |
| 4678 | +#. module: magentoerpconnect |
| 4679 | +#: field:res.partner,company:0 |
| 4680 | +msgid "Company" |
| 4681 | +msgstr "Société" |
| 4682 | + |
| 4683 | +#. module: magentoerpconnect |
| 4684 | +#: sql_constraint:magento.website:0 |
| 4685 | +msgid "A website with the same ID on Magento already exists." |
| 4686 | +msgstr "Un site web avec le même ID sur Magento existe déjà." |
| 4687 | + |
| 4688 | +#. module: magentoerpconnect |
| 4689 | +#: field:magento.backend,import_categories_from_date:0 |
| 4690 | +msgid "Import categories from date" |
| 4691 | +msgstr "Importer les catégories depuis la date" |
| 4692 | + |
| 4693 | +#. module: magentoerpconnect |
| 4694 | +#: view:account.invoice:0 |
| 4695 | +#: field:account.invoice,magento_bind_ids:0 |
| 4696 | +#: view:product.category:0 |
| 4697 | +#: field:product.category,magento_bind_ids:0 |
| 4698 | +#: view:product.product:0 |
| 4699 | +#: field:product.product,magento_bind_ids:0 |
| 4700 | +#: view:res.partner:0 |
| 4701 | +#: field:res.partner,magento_bind_ids:0 |
| 4702 | +#: field:res.partner.category,magento_bind_ids:0 |
| 4703 | +#: field:sale.order,magento_bind_ids:0 |
| 4704 | +#: field:sale.order.line,magento_bind_ids:0 |
| 4705 | +#: field:sale.shop,magento_bind_ids:0 |
| 4706 | +#: field:stock.picking,magento_bind_ids:0 |
| 4707 | +#: view:stock.picking.out:0 |
| 4708 | +#: field:stock.picking.out,magento_bind_ids:0 |
| 4709 | +msgid "Magento Bindings" |
| 4710 | +msgstr "Liens Magento" |
| 4711 | + |
| 4712 | +#. module: magentoerpconnect |
| 4713 | +#: help:connector.config.settings,module_magentoerpconnect_catalog:0 |
| 4714 | +msgid "This installs the module magentoerpconnect_catalog." |
| 4715 | +msgstr "Installe le module magentoerpconnect_catalog" |
| 4716 | + |
| 4717 | +#. module: magentoerpconnect |
| 4718 | +#: field:magento.address,is_magento_order_address:0 |
| 4719 | +msgid "Address from a Magento Order" |
| 4720 | +msgstr "Adresse d'une commande Magento" |
| 4721 | + |
| 4722 | +#. module: magentoerpconnect |
| 4723 | +#: field:magento.sale.order,magento_order_id:0 |
| 4724 | +msgid "Magento Order ID" |
| 4725 | +msgstr "ID de commande Magento" |
| 4726 | + |
| 4727 | +#. module: magentoerpconnect |
| 4728 | +#: model:ir.model,name:magentoerpconnect.model_magentoerpconnect_installed |
| 4729 | +msgid "magentoerpconnect.installed" |
| 4730 | +msgstr "magentoerpconnect.installed" |
| 4731 | + |
| 4732 | +#. module: magentoerpconnect |
| 4733 | +#: help:connector.config.settings,module_magentoerpconnect_export_partner:0 |
| 4734 | +msgid "This installs the module magentoerpconnect_export_partner." |
| 4735 | +msgstr "Installe le module magentoerpconnect_export_partner." |
| 4736 | + |
| 4737 | +#. module: magentoerpconnect |
| 4738 | +#: field:magento.sale.order.line,notes:0 |
| 4739 | +msgid "Notes" |
| 4740 | +msgstr "Notes" |
| 4741 | + |
| 4742 | +#. module: magentoerpconnect |
| 4743 | +#: field:magento.sale.order,openerp_id:0 |
| 4744 | +msgid "Sale Order" |
| 4745 | +msgstr "Bons de Commande" |
| 4746 | + |
| 4747 | +#. module: magentoerpconnect |
| 4748 | +#: field:magento.stock.picking.out,openerp_id:0 |
| 4749 | +msgid "Stock Picking" |
| 4750 | +msgstr "Bon de livraison" |
| 4751 | + |
| 4752 | +#. module: magentoerpconnect |
| 4753 | +#: view:connector.config.settings:0 |
| 4754 | +msgid "Extensions" |
| 4755 | +msgstr "Extensions" |
| 4756 | + |
| 4757 | +#. module: magentoerpconnect |
| 4758 | +#: view:magento.backend:0 |
| 4759 | +msgid "Advanced Configuration" |
| 4760 | +msgstr "Configuration avancée" |
| 4761 | + |
| 4762 | +#. module: magentoerpconnect |
| 4763 | +#: field:magento.res.partner,group_id:0 |
| 4764 | +msgid "Magento Group (Category)" |
| 4765 | +msgstr "Groupe de client Magento (Catégorie)" |
| 4766 | + |
| 4767 | +#. module: magentoerpconnect |
| 4768 | +#: model:ir.ui.menu,name:magentoerpconnect.menu_magento_store |
| 4769 | +#: view:magento.website:0 |
| 4770 | +#: field:magento.website,store_ids:0 |
| 4771 | +msgid "Stores" |
| 4772 | +msgstr "Magasins" |
| 4773 | + |
| 4774 | +#. module: magentoerpconnect |
| 4775 | +#: field:magento.backend,product_stock_field_id:0 |
| 4776 | +msgid "Stock Field" |
| 4777 | +msgstr "Champ de stock" |
| 4778 | + |
| 4779 | +#. module: magentoerpconnect |
| 4780 | +#: field:magento.res.partner.category,openerp_id:0 |
| 4781 | +msgid "Partner Category" |
| 4782 | +msgstr "Catégorie de partenaire" |
| 4783 | + |
| 4784 | +#. module: magentoerpconnect |
| 4785 | +#: help:magento.product.product,magento_qty:0 |
| 4786 | +msgid "Last computed quantity to send on Magento." |
| 4787 | +msgstr "Dernière quantité calculée à envoyer à Magento" |
| 4788 | + |
| 4789 | +#. module: magentoerpconnect |
| 4790 | +#: model:ir.ui.menu,name:magentoerpconnect.menu_magento_root |
| 4791 | +#: view:res.partner.category:0 |
| 4792 | +msgid "Magento" |
| 4793 | +msgstr "Magento" |
| 4794 | + |
| 4795 | +#. module: magentoerpconnect |
| 4796 | +#: model:ir.model,name:magentoerpconnect.model_connector_config_settings |
| 4797 | +msgid "connector.config.settings" |
| 4798 | +msgstr "connector.config.settings" |
| 4799 | + |
| 4800 | +#. module: magentoerpconnect |
| 4801 | +#: field:magento.backend,import_products_from_date:0 |
| 4802 | +msgid "Import products from date" |
| 4803 | +msgstr "Importer les articles depuis la date" |
| 4804 | + |
| 4805 | +#. module: magentoerpconnect |
| 4806 | +#: model:ir.model,name:magentoerpconnect.model_res_partner |
| 4807 | +#: field:magento.address,openerp_id:0 |
| 4808 | +#: field:magento.res.partner,openerp_id:0 |
| 4809 | +msgid "Partner" |
| 4810 | +msgstr "Partenaire" |
| 4811 | + |
| 4812 | +#. module: magentoerpconnect |
| 4813 | +#: model:ir.model,name:magentoerpconnect.model_sale_order |
| 4814 | +msgid "Sales Order" |
| 4815 | +msgstr "Bon de commande" |
| 4816 | + |
| 4817 | +#. module: magentoerpconnect |
| 4818 | +#: model:ir.model,name:magentoerpconnect.model_stock_picking_out |
| 4819 | +msgid "Delivery Orders" |
| 4820 | +msgstr "Bons de livraisons" |
| 4821 | + |
| 4822 | +#. module: magentoerpconnect |
| 4823 | +#: model:ir.model,name:magentoerpconnect.model_sale_order_line |
| 4824 | +msgid "Sales Order Line" |
| 4825 | +msgstr "Ligne de commande" |
| 4826 | + |
| 4827 | +#. module: magentoerpconnect |
| 4828 | +#: field:connector.config.settings,module_magentoerpconnect_pricing:0 |
| 4829 | +msgid "Prices are managed in OpenERP with pricelists" |
| 4830 | +msgstr "Les prix de vente sont gérés dans OpenERP avec des listes de prix" |
| 4831 | + |
| 4832 | +#. module: magentoerpconnect |
| 4833 | +#: field:magento.address,is_default_shipping:0 |
| 4834 | +msgid "Default Shipping" |
| 4835 | +msgstr "Adresse de livraison par défaut" |
| 4836 | + |
| 4837 | +#. module: magentoerpconnect |
| 4838 | +#: sql_constraint:magento.stock.picking.out:0 |
| 4839 | +msgid "A stock picking with same ID on Magento already exists." |
| 4840 | +msgstr "Un bon de livraison avec le même ID Magento existe déjà." |
| 4841 | + |
| 4842 | +#. module: magentoerpconnect |
| 4843 | +#: view:magento.backend:0 |
| 4844 | +msgid "By clicking on the buttons,\n" |
| 4845 | +" you will initiate the synchronizations\n" |
| 4846 | +" with Magento.\n" |
| 4847 | +" Note that the import or exports\n" |
| 4848 | +" won't be done directly,\n" |
| 4849 | +" they will create 'Jobs'\n" |
| 4850 | +" executed as soon as possible." |
| 4851 | +msgstr "En cliquant sur les boutons,\n" |
| 4852 | +" Vous allez initier les synchronisations\n" |
| 4853 | +" avec Magento.\n" |
| 4854 | +" Important: les imports et exports\n" |
| 4855 | +" ne sont pas exécutés immédiatement,\n" |
| 4856 | +" ils vont créer des 'jobs',\n" |
| 4857 | +" exécutés aussitôt que possible." |
| 4858 | + |
| 4859 | +#. module: magentoerpconnect |
| 4860 | +#: help:magento.backend,product_stock_field_id:0 |
| 4861 | +msgid "Choose the field of the product which will be used for stock inventory updates.\n" |
| 4862 | +"If empty, Quantity Available is used." |
| 4863 | +msgstr "Choisir le champ de l'article qui doit être utilisé pour mettre à jour la quantité en stock." |
| 4864 | +"Quand le champ est vide, la quantité en stock est utilisée." |
| 4865 | + |
| 4866 | +#. module: magentoerpconnect |
| 4867 | +#: sql_constraint:magento.product.product:0 |
| 4868 | +msgid "A product with the same ID on Magento already exists" |
| 4869 | +msgstr "Un article avec le même ID Magento existe déjà." |
| 4870 | + |
| 4871 | +#. module: magentoerpconnect |
| 4872 | +#: model:ir.ui.menu,name:magentoerpconnect.menu_magento_backend |
| 4873 | +msgid "Backends" |
| 4874 | +msgstr "Backends" |
| 4875 | + |
| 4876 | +#. module: magentoerpconnect |
| 4877 | +#: field:magento.backend,location:0 |
| 4878 | +msgid "Location" |
| 4879 | +msgstr "Emplacement" |
| 4880 | + |
| 4881 | +#. module: magentoerpconnect |
| 4882 | +#: model:ir.model,name:magentoerpconnect.model_stock_picking |
| 4883 | +msgid "Picking List" |
| 4884 | +msgstr "Liste de colisage" |
| 4885 | + |
| 4886 | +#. module: magentoerpconnect |
| 4887 | +#: field:magento.backend,warehouse_id:0 |
| 4888 | +msgid "Warehouse" |
| 4889 | +msgstr "Entrepôt" |
| 4890 | + |
| 4891 | +#. module: magentoerpconnect |
| 4892 | +#: field:magento.backend,catalog_price_tax_included:0 |
| 4893 | +msgid "Prices include tax" |
| 4894 | +msgstr "Prix taxes-incluses" |
| 4895 | + |
| 4896 | +#. module: magentoerpconnect |
| 4897 | +#: view:magento.backend:0 |
| 4898 | +msgid "Import products categories since" |
| 4899 | +msgstr "Importer les catégories d'articles depuis" |
| 4900 | + |
| 4901 | +#. module: magentoerpconnect |
| 4902 | +#: field:magento.sale.order.line,openerp_id:0 |
| 4903 | +msgid "Sale Order Line" |
| 4904 | +msgstr "Ligne de commande" |
| 4905 | + |
| 4906 | +#. module: magentoerpconnect |
| 4907 | +#: field:magento.backend,username:0 |
| 4908 | +msgid "Username" |
| 4909 | +msgstr "Utilisateur" |
| 4910 | + |
| 4911 | +#. module: magentoerpconnect |
| 4912 | +#: model:ir.model,name:magentoerpconnect.model_product_category |
| 4913 | +#: field:magento.product.category,openerp_id:0 |
| 4914 | +msgid "Product Category" |
| 4915 | +msgstr "Catégorie d'articles" |
| 4916 | + |
| 4917 | +#. module: magentoerpconnect |
| 4918 | +#: field:magento.res.partner,guest_customer:0 |
| 4919 | +msgid "Guest Customer" |
| 4920 | +msgstr "Client invité" |
| 4921 | + |
| 4922 | +#. module: magentoerpconnect |
| 4923 | +#: help:connector.config.settings,module_magentoerpconnect_pricing:0 |
| 4924 | +msgid "Prices are set in OpenERP and exported to Magento.\n" |
| 4925 | +"\n" |
| 4926 | +"This installs the module magentoerpconnect_pricing." |
| 4927 | +msgstr "Les prix sont définis dans OpenERP et exportés vers Magento.\n" |
| 4928 | +"\n" |
| 4929 | +"Installe le module magentoerpconnect_pricing." |
| 4930 | + |
| 4931 | +#. module: magentoerpconnect |
| 4932 | +#: field:delivery.carrier,magento_carrier_code:0 |
| 4933 | +msgid "Magento Base Carrier Code" |
| 4934 | +msgstr "Code de base de transporteur sur Magento" |
| 4935 | + |
| 4936 | +#. module: magentoerpconnect |
| 4937 | +#: view:magento.website:0 |
| 4938 | +msgid "Import partners since" |
| 4939 | +msgstr "Importer les partenaires depuis" |
| 4940 | + |
| 4941 | +#. module: magentoerpconnect |
| 4942 | +#: view:magento.backend:0 |
| 4943 | +#: view:magento.website:0 |
| 4944 | +msgid "Import in background" |
| 4945 | +msgstr "Importer en arrière-plan" |
| 4946 | + |
| 4947 | +#. module: magentoerpconnect |
| 4948 | +#: field:magento.account.invoice,magento_id:0 |
| 4949 | +#: field:magento.address,magento_id:0 |
| 4950 | +#: field:magento.binding,magento_id:0 |
| 4951 | +#: field:magento.product.category,magento_id:0 |
| 4952 | +#: field:magento.product.product,magento_id:0 |
| 4953 | +#: field:magento.res.partner,magento_id:0 |
| 4954 | +#: field:magento.res.partner.category,magento_id:0 |
| 4955 | +#: field:magento.sale.order,magento_id:0 |
| 4956 | +#: field:magento.sale.order.line,magento_id:0 |
| 4957 | +#: field:magento.stock.picking.out,magento_id:0 |
| 4958 | +#: field:magento.store,magento_id:0 |
| 4959 | +#: field:magento.storeview,magento_id:0 |
| 4960 | +#: field:magento.website,magento_id:0 |
| 4961 | +msgid "ID on Magento" |
| 4962 | +msgstr "ID sur Magento" |
| 4963 | + |
| 4964 | +#. module: magentoerpconnect |
| 4965 | +#: model:ir.actions.act_window,name:magentoerpconnect.action_magento_store |
| 4966 | +msgid "Magento Stores" |
| 4967 | +msgstr "Magasins Magento" |
| 4968 | + |
| 4969 | +#. module: magentoerpconnect |
| 4970 | +#: field:magento.backend,pricelist_id:0 |
| 4971 | +#: field:magento.website,pricelist_id:0 |
| 4972 | +msgid "Pricelist" |
| 4973 | +msgstr "Liste de prix" |
| 4974 | + |
| 4975 | +#. module: magentoerpconnect |
| 4976 | +#: field:magento.sale.order,total_amount:0 |
| 4977 | +msgid "Total amount" |
| 4978 | +msgstr "Montant total" |
| 4979 | + |
| 4980 | +#. module: magentoerpconnect |
| 4981 | +#: model:ir.model,name:magentoerpconnect.model_magento_product_category |
| 4982 | +#: view:magento.product.category:0 |
| 4983 | +msgid "Magento Product Category" |
| 4984 | +msgstr "Catégorie d'articles Magento" |
| 4985 | + |
| 4986 | +#. module: magentoerpconnect |
| 4987 | +#: view:magento.product.product:0 |
| 4988 | +msgid "(recompute)" |
| 4989 | +msgstr "(recalculer)" |
| 4990 | + |
| 4991 | +#. module: magentoerpconnect |
| 4992 | +#: field:magento.store,openerp_id:0 |
| 4993 | +msgid "Sale Shop" |
| 4994 | +msgstr "Magasin" |
| 4995 | + |
| 4996 | +#. module: magentoerpconnect |
| 4997 | +#: field:magento.product.product,manage_stock:0 |
| 4998 | +msgid "Manage Stock Level" |
| 4999 | +msgstr "Gérer les stocks" |
| 5000 | + |
Hi Chafique, you have targeted the wrong branch, can you merge into lp:openerp-connector/7.0-magentoerpconnect instead of lp:openerp-connector please?