openerp-community team mailing list archive
-
openerp-community team
-
Mailing list archive
-
Message #02042
[Merge] lp:~product-core-editors/openerp-product-attributes/new6.1 into lp:openerp-product-attributes/6.1
Guewen Baconnier @ Camptocamp has proposed merging lp:~product-core-editors/openerp-product-attributes/new6.1 into lp:openerp-product-attributes/6.1.
Requested reviews:
Product Core Editors (product-core-editors)
For more details, see:
https://code.launchpad.net/~product-core-editors/openerp-product-attributes/new6.1/+merge/143657
This merge proposal is going to conflict. That's normal.
The current lp:openerp-product-attributes/6.1 has some problems:
The bazaar history is missing for all the modules (lp:bazaar-extractor was not used).
It has no common ancestor with extra-addons so we have problems for merging.
A dozen of addons in this branch are duplicate with: lp:product-extra-addons/oerp6.1-stable
But the addons located in latter branch have more recent modifications.
I can't merge lp:product-extra-addons/oerp6.1-stable in lp:openerp-product-attributes/6.1
So I ended up by taking product-extra-addons as a base, and running bazaar-extractor on this branch, on the exact same modules which were present in lp:openerp-product-attributes/6.1 (except the duplicates).
So, now, the branch has got the history and the more recent version of the addons. They must be removed from lp:product-extra-addons/oerp6.1-stable once 'merged'.
This branch has to overwrite the target instead of merging. This is dreadful, but the only way I think to recover the situation (and the sooner the better).
By the way, I wonder if we should not remove some addons...
--
The attached diff has been truncated due to its size.
https://code.launchpad.net/~product-core-editors/openerp-product-attributes/new6.1/+merge/143657
Your team OpenERP Community is subscribed to branch lp:openerp-product-attributes/6.1.
=== added directory 'product_brand'
=== added file 'product_brand/__init__.py'
--- product_brand/__init__.py 1970-01-01 00:00:00 +0000
+++ product_brand/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,27 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+# #
+# product_brand for OpenERP #
+# Copyright (C) 2009 NetAndCo (<http://www.netandco.net>). #
+# Authors, Mathieu Lemercier, mathieu@xxxxxxxxxxxx, #
+# Franck Bret, franck@xxxxxxxxxxxx #
+# Copyright (C) 2011 Akretion Benoît Guillot <benoit.guillot@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+#################################################################################
+###################################################################################
+# Product Brand is an Openobject module wich enable Brand management for products #
+###################################################################################
+import product_brand
=== added file 'product_brand/__openerp__.py'
--- product_brand/__openerp__.py 1970-01-01 00:00:00 +0000
+++ product_brand/__openerp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,49 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+# #
+# product_brand for OpenERP #
+# Copyright (C) 2009 NetAndCo (<http://www.netandco.net>). #
+# Authors, Mathieu Lemercier, mathieu@xxxxxxxxxxxx, #
+# Franck Bret, franck@xxxxxxxxxxxx #
+# Copyright (C) 2011 Akretion Benoît Guillot <benoit.guillot@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+#################################################################################
+###################################################################################
+# Product Brand is an Openobject module wich enable Brand management for products #
+###################################################################################
+{
+ 'name': 'Product Brand Manager',
+ 'version': '6.1.0',
+ 'category': 'Product',
+ 'description': """This module allows your user to easily manage product brand. You can define brand, attach it a logo and a description.
+ It also allows to attach a partner to a brand.
+ One installed check the menu Product/configuration/brand
+ To do / To come :
+ - A view to seeing products by brand.
+ """,
+ 'author': 'NetAndCo',
+ 'website': 'http://ww.netandco.net',
+ 'depends': ['product'],
+ 'init_xml': [],
+ 'update_xml': [
+ 'product_brand_view.xml',
+ 'security/ir.model.access.csv'
+ ],
+ 'demo_xml': [],
+ 'installable': True,
+ 'certificate': '',
+}
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== added directory 'product_brand/i18n'
=== added file 'product_brand/i18n/fr.po'
--- product_brand/i18n/fr.po 1970-01-01 00:00:00 +0000
+++ product_brand/i18n/fr.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,105 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_brand
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.7\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2010-01-25 17:15:23+0000\n"
+"PO-Revision-Date: 2010-01-25 17:15:23+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_brand
+#: model:ir.model,name:product_brand.model_product_brand
+#: view:product.brand:0
+msgid "product.brand"
+msgstr ""
+
+#. module: product_brand
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_brand
+#: help:product.product,product_brand_id:0
+#: help:product.template,product_brand_id:0
+msgid "Select a brand for this product"
+msgstr "Sélectionnez une marque pour ce produit"
+
+#. module: product_brand
+#: model:ir.ui.menu,name:product_brand.menu_product_brand
+msgid "Brand management"
+msgstr "Gestion des marques"
+
+#. module: product_brand
+#: view:product.brand:0
+#: field:product.brand,description:0
+msgid "Description"
+msgstr "Description"
+
+#. module: product_brand
+#: field:product.brand,name:0
+msgid "Brand Name"
+msgstr "Marque"
+
+#. module: product_brand
+#: model:ir.actions.act_window,name:product_brand.action_product_brand
+#: field:product.product,product_brand_id:0
+#: field:product.template,product_brand_id:0
+msgid "Brand"
+msgstr "Marque"
+
+#. module: product_brand
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr "Le nom de l'objet doit commencer par x_ et ne pas contenir de caractères spéciaux !"
+
+#. module: product_brand
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr "Nom de modèle invalide dans la définition de l'action"
+
+#. module: product_brand
+#: field:product.brand,partner_id:0
+msgid "partner"
+msgstr "Partenaire"
+
+#. module: product_brand
+#: model:ir.module.module,description:product_brand.module_meta_information
+msgid "This module allows your user to easily manage product brand. You can define brand, attach it a logo and a description.\n"
+" It also allows to attach a partner to a brand.\n"
+" One installed check the menu Product/configuration/brand\n"
+" To do / To come :\n"
+" - A view to seeing products by brand.\n"
+" "
+msgstr "Ce module permet à vos utilisateurs de gérer des marques pour leurs produits. Vous pouvez définir une marque, lui attacher un logo et une description. \n"
+" Vous pouvez également attacher un partenaire à une marque.\n"
+" Une fois installé allez dans le menu Produit/configuration/Marques\n"
+" A faire / a venir :\n"
+" - Une vue pour voir tous les produits par marque.\n"
+#. module: product_brand
+#: field:product.brand,logo_id:0
+msgid "Logo"
+msgstr "Logo"
+
+#. module: product_brand
+#: help:product.brand,logo_id:0
+msgid "Select picture file"
+msgstr "Sélectionnez une image"
+
+#. module: product_brand
+#: model:ir.module.module,shortdesc:product_brand.module_meta_information
+msgid "Product Brand Manager"
+msgstr "Gestionnaire de marques"
+
+#. module: product_brand
+#: help:product.brand,partner_id:0
+msgid "Select a partner for this brand if it exist"
+msgstr "Sélectionnez un partenaire pour cette marque"
+
=== added file 'product_brand/i18n/fr_FR.po'
--- product_brand/i18n/fr_FR.po 1970-01-01 00:00:00 +0000
+++ product_brand/i18n/fr_FR.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,105 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_brand
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.7\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2010-01-25 17:15:23+0000\n"
+"PO-Revision-Date: 2010-01-25 17:15:23+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_brand
+#: model:ir.model,name:product_brand.model_product_brand
+#: view:product.brand:0
+msgid "product.brand"
+msgstr ""
+
+#. module: product_brand
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_brand
+#: help:product.product,product_brand_id:0
+#: help:product.template,product_brand_id:0
+msgid "Select a brand for this product"
+msgstr "Sélectionnez une marque pour ce produit"
+
+#. module: product_brand
+#: model:ir.ui.menu,name:product_brand.menu_product_brand
+msgid "Brand management"
+msgstr "Gestion des marques"
+
+#. module: product_brand
+#: view:product.brand:0
+#: field:product.brand,description:0
+msgid "Description"
+msgstr "Description"
+
+#. module: product_brand
+#: field:product.brand,name:0
+msgid "Brand Name"
+msgstr "Marque"
+
+#. module: product_brand
+#: model:ir.actions.act_window,name:product_brand.action_product_brand
+#: field:product.product,product_brand_id:0
+#: field:product.template,product_brand_id:0
+msgid "Brand"
+msgstr "Marque"
+
+#. module: product_brand
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr "Le nom de l'objet doit commencer par x_ et ne pas contenir de caractères spéciaux !"
+
+#. module: product_brand
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr "Nom de modèle invalide dans la définition de l'action"
+
+#. module: product_brand
+#: field:product.brand,partner_id:0
+msgid "partner"
+msgstr "Partenaire"
+
+#. module: product_brand
+#: model:ir.module.module,description:product_brand.module_meta_information
+msgid "This module allows your user to easily manage product brand. You can define brand, attach it a logo and a description.\n"
+" It also allows to attach a partner to a brand.\n"
+" One installed check the menu Product/configuration/brand\n"
+" To do / To come :\n"
+" - A view to seeing products by brand.\n"
+" "
+msgstr "Ce module permet à vos utilisateurs de gérer des marques pour leurs produits. Vous pouvez définir une marque, lui attacher un logo et une description. \n"
+" Vous pouvez également attacher un partenaire à une marque.\n"
+" Une fois installé allez dans le menu Produit/configuration/Marques\n"
+" A faire / a venir :\n"
+" - Une vue pour voir tous les produits par marque.\n"
+#. module: product_brand
+#: field:product.brand,logo_id:0
+msgid "Logo"
+msgstr "Logo"
+
+#. module: product_brand
+#: help:product.brand,logo_id:0
+msgid "Select picture file"
+msgstr "Sélectionnez une image"
+
+#. module: product_brand
+#: model:ir.module.module,shortdesc:product_brand.module_meta_information
+msgid "Product Brand Manager"
+msgstr "Gestionnaire de marques"
+
+#. module: product_brand
+#: help:product.brand,partner_id:0
+msgid "Select a partner for this brand if it exist"
+msgstr "Sélectionnez un partenaire pour cette marque"
+
=== added file 'product_brand/i18n/product_brand.pot'
--- product_brand/i18n/product_brand.pot 1970-01-01 00:00:00 +0000
+++ product_brand/i18n/product_brand.pot 2013-01-17 10:06:27 +0000
@@ -0,0 +1,102 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_brand
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.7\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2010-01-25 17:15:23+0000\n"
+"PO-Revision-Date: 2010-01-25 17:15:23+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_brand
+#: model:ir.model,name:product_brand.model_product_brand
+#: view:product.brand:0
+msgid "product.brand"
+msgstr ""
+
+#. module: product_brand
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_brand
+#: help:product.product,product_brand_id:0
+#: help:product.template,product_brand_id:0
+msgid "Select a brand for this product"
+msgstr ""
+
+#. module: product_brand
+#: model:ir.ui.menu,name:product_brand.menu_product_brand
+msgid "Brand management"
+msgstr ""
+
+#. module: product_brand
+#: view:product.brand:0
+#: field:product.brand,description:0
+msgid "Description"
+msgstr ""
+
+#. module: product_brand
+#: field:product.brand,name:0
+msgid "Brand Name"
+msgstr ""
+
+#. module: product_brand
+#: model:ir.actions.act_window,name:product_brand.action_product_brand
+#: field:product.product,product_brand_id:0
+#: field:product.template,product_brand_id:0
+msgid "Brand"
+msgstr ""
+
+#. module: product_brand
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: product_brand
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: product_brand
+#: field:product.brand,partner_id:0
+msgid "partner"
+msgstr ""
+
+#. module: product_brand
+#: model:ir.module.module,description:product_brand.module_meta_information
+msgid "This module allows your user to easily manage product brand. You can define brand, attach it a logo and a description.\n"
+" It also allows to attach a partner to a brand.\n"
+" One installed check the menu Product/configuration/brand\n"
+" To do / To come :\n"
+" - A view to seeing products by brand.\n"
+" "
+msgstr ""
+
+#. module: product_brand
+#: field:product.brand,logo_id:0
+msgid "Logo"
+msgstr ""
+
+#. module: product_brand
+#: help:product.brand,logo_id:0
+msgid "Select picture file"
+msgstr ""
+
+#. module: product_brand
+#: model:ir.module.module,shortdesc:product_brand.module_meta_information
+msgid "Product Brand Manager"
+msgstr ""
+
+#. module: product_brand
+#: help:product.brand,partner_id:0
+msgid "Select a partner for this brand if it exist"
+msgstr ""
+
=== added file 'product_brand/product_brand.py'
--- product_brand/product_brand.py 1970-01-01 00:00:00 +0000
+++ product_brand/product_brand.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,43 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+# #
+# product_brand for OpenERP #
+# Copyright (C) 2009 NetAndCo (<http://www.netandco.net>). #
+# Authors, Mathieu Lemercier, mathieu@xxxxxxxxxxxx, #
+# Franck Bret, franck@xxxxxxxxxxxx #
+# Copyright (C) 2011 Akretion Benoît Guillot <benoit.guillot@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+#################################################################################
+from openerp.osv.orm import Model
+from openerp.osv import fields
+
+class product_brand(Model):
+ _name = 'product.brand'
+ _columns = {
+ 'name': fields.char('Brand Name',size=32),
+ 'description': fields.text('Description',translate=True),
+ 'partner_id' : fields.many2one('res.partner','partner', help='Select a partner for this brand if it exist'),
+ 'logo': fields.binary('Logo File')
+ }
+
+
+class product_template(Model):
+ _name = 'product.template'
+ _inherit = 'product.template'
+ _columns = {
+ 'product_brand_id' : fields.many2one('product.brand','Brand', help='Select a brand for this product'),
+ }
+
=== added file 'product_brand/product_brand_view.xml'
--- product_brand/product_brand_view.xml 1970-01-01 00:00:00 +0000
+++ product_brand/product_brand_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ product_brand for OpenERP
+ Copyright (C) 2009 NetAndCo (<http://www.netandco.net>).
+ Authors, Mathieu Lemercier, mathieu@xxxxxxxxxxxx, Franck Bret, franck@xxxxxxxxxxxx
+ Copyright (C) 2011 Akretion Benoît Guillot <benoit.guillot@xxxxxxxxxxxx>
+ The licence is in the file __openerp__.py
+-->
+<openerp>
+ <data>
+ <record model="ir.ui.view" id="view_product_brand_form">
+ <field name="name">product.brand.form</field>
+ <field name="model">product.brand</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="product.brand">
+ <field name="name" select="1"/>
+ <field name="logo" widget='image' />
+ <field name="partner_id" select="1"/>
+ <separator colspan="4" string="Description"/>
+ <field colspan="4" name="description" nolabel="1"/>
+ </form>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="view_product_brand_tree">
+ <field name="name">product.brand.tree</field>
+ <field name="model">product.brand</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="product.brand">
+ <field name="name"/>
+ <field name="description"/>
+ <field name="partner_id"/>
+ </tree>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="normal_form_product_brand">
+ <field name="name">product.normal.form</field>
+ <field name="model">product.product</field>
+ <field name="type">form</field>
+ <field name="inherit_id" ref="product.product_normal_form_view" />
+ <field name="arch" type="xml">
+ <field name="categ_id" position="after" >
+ <field name="product_brand_id" select="1" />
+ </field>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="product_template_form_brand_add">
+ <field name="name">product.template.product.form</field>
+ <field name="model">product.template</field>
+ <field name="type">form</field>
+ <field name="inherit_id" ref="product.product_template_form_view" />
+ <field name="arch" type="xml">
+ <field name="categ_id" position="after" >
+ <field name="product_brand_id" select="1" />
+ </field>
+ </field>
+ </record>
+
+ <record model="ir.actions.act_window" id="action_product_brand">
+ <field name="name">Brand</field>
+ <field name="res_model">product.brand</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form</field>
+ </record>
+
+ <menuitem name="Brand management" id="menu_product_brand" action="action_product_brand" parent="product.prod_config_main"/>
+ </data>
+</openerp>
=== added directory 'product_brand/security'
=== added file 'product_brand/security/ir.model.access.csv'
--- product_brand/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
+++ product_brand/security/ir.model.access.csv 2013-01-17 10:06:27 +0000
@@ -0,0 +1,2 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_product_brand_product_manager","product.brand","model_product_brand","base.group_partner_manager",1,1,1,1
=== added directory 'product_catalog_report'
=== renamed directory 'product_catalog_report' => 'product_catalog_report.moved'
=== added file 'product_catalog_report/__init__.py'
--- product_catalog_report/__init__.py 1970-01-01 00:00:00 +0000
+++ product_catalog_report/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,23 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+import report
+import wizard
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_catalog_report/__terp__.py'
--- product_catalog_report/__terp__.py 1970-01-01 00:00:00 +0000
+++ product_catalog_report/__terp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,35 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+{
+ "name":"Product Catalog - Print Report of product catalog with product image",
+ "version":"1.0",
+ "author":"Tiny",
+ "category":"Generic Modules/Inventory Control",
+ "description": """
+ This module use to print report of product catalog with product image, list price
+ """,
+ "depends":["base","product"],
+ "demo_xml":[],
+ "update_xml":['product_report.xml','product_wizard.xml'],
+ "active":False,
+ "installable":True,
+}
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added directory 'product_catalog_report/i18n'
=== added file 'product_catalog_report/i18n/es.po'
--- product_catalog_report/i18n/es.po 1970-01-01 00:00:00 +0000
+++ product_catalog_report/i18n/es.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,68 @@
+# Spanish translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2009-11-25 13:27+0000\n"
+"PO-Revision-Date: 2011-08-26 23:17+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Spanish <es@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_catalog_report
+#: wizard_view:res.partner.product_catalog,init:0
+msgid "Select a Product Categories "
+msgstr ""
+
+#. module: product_catalog_report
+#: model:ir.module.module,description:product_catalog_report.module_meta_information
+msgid ""
+"\n"
+" This module use to print report of product catalog with product image, "
+"list price\n"
+" "
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_field:res.partner.product_catalog,init,report_lang:0
+msgid "Language"
+msgstr "Idioma"
+
+#. module: product_catalog_report
+#: model:ir.actions.wizard,name:product_catalog_report.wizard_print_catalog_report
+#: wizard_button:res.partner.product_catalog,init,print:0
+msgid "Print Product Catalog"
+msgstr ""
+
+#. module: product_catalog_report
+#: model:ir.module.module,shortdesc:product_catalog_report.module_meta_information
+msgid "Product Catalog"
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_view:res.partner.product_catalog,init:0
+msgid "Select a printing language "
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_button:res.partner.product_catalog,init,end:0
+msgid "Cancel"
+msgstr "Cancelar"
+
+#. module: product_catalog_report
+#: wizard_view:res.partner.product_catalog,init:0
+msgid "Choose catalog preferencies"
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_field:res.partner.product_catalog,init,categories:0
+msgid "Select Category"
+msgstr "Seleccionar categoría"
=== added file 'product_catalog_report/i18n/fr_BE.po'
--- product_catalog_report/i18n/fr_BE.po 1970-01-01 00:00:00 +0000
+++ product_catalog_report/i18n/fr_BE.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,65 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_catalog_report
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:27:14+0000\n"
+"PO-Revision-Date: 2009-11-25 13:27:14+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_catalog_report
+#: wizard_view:res.partner.product_catalog,init:0
+msgid "Select a Product Categories "
+msgstr ""
+
+#. module: product_catalog_report
+#: model:ir.module.module,description:product_catalog_report.module_meta_information
+msgid "\n"
+" This module use to print report of product catalog with product image, list price\n"
+" "
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_field:res.partner.product_catalog,init,report_lang:0
+msgid "Language"
+msgstr ""
+
+#. module: product_catalog_report
+#: model:ir.actions.wizard,name:product_catalog_report.wizard_print_catalog_report
+#: wizard_button:res.partner.product_catalog,init,print:0
+msgid "Print Product Catalog"
+msgstr ""
+
+#. module: product_catalog_report
+#: model:ir.module.module,shortdesc:product_catalog_report.module_meta_information
+msgid "Product Catalog"
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_view:res.partner.product_catalog,init:0
+msgid "Select a printing language "
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_button:res.partner.product_catalog,init,end:0
+msgid "Cancel"
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_view:res.partner.product_catalog,init:0
+msgid "Choose catalog preferencies"
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_field:res.partner.product_catalog,init,categories:0
+msgid "Select Category"
+msgstr ""
+
=== added file 'product_catalog_report/i18n/product_catalog_report.pot'
--- product_catalog_report/i18n/product_catalog_report.pot 1970-01-01 00:00:00 +0000
+++ product_catalog_report/i18n/product_catalog_report.pot 2013-01-17 10:06:27 +0000
@@ -0,0 +1,65 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_catalog_report
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:27:14+0000\n"
+"PO-Revision-Date: 2009-11-25 13:27:14+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_catalog_report
+#: wizard_view:res.partner.product_catalog,init:0
+msgid "Select a Product Categories "
+msgstr ""
+
+#. module: product_catalog_report
+#: model:ir.module.module,description:product_catalog_report.module_meta_information
+msgid "\n"
+" This module use to print report of product catalog with product image, list price\n"
+" "
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_field:res.partner.product_catalog,init,report_lang:0
+msgid "Language"
+msgstr ""
+
+#. module: product_catalog_report
+#: model:ir.actions.wizard,name:product_catalog_report.wizard_print_catalog_report
+#: wizard_button:res.partner.product_catalog,init,print:0
+msgid "Print Product Catalog"
+msgstr ""
+
+#. module: product_catalog_report
+#: model:ir.module.module,shortdesc:product_catalog_report.module_meta_information
+msgid "Product Catalog"
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_view:res.partner.product_catalog,init:0
+msgid "Select a printing language "
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_button:res.partner.product_catalog,init,end:0
+msgid "Cancel"
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_view:res.partner.product_catalog,init:0
+msgid "Choose catalog preferencies"
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_field:res.partner.product_catalog,init,categories:0
+msgid "Select Category"
+msgstr ""
+
=== added file 'product_catalog_report/i18n/sv.po'
--- product_catalog_report/i18n/sv.po 1970-01-01 00:00:00 +0000
+++ product_catalog_report/i18n/sv.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,67 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_catalog_report
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.14\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:27+0000\n"
+"PO-Revision-Date: 2010-11-23 02:27+0000\n"
+"Last-Translator: Olivier Dony (OpenERP) <Unknown>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_catalog_report
+#: wizard_view:res.partner.product_catalog,init:0
+msgid "Select a Product Categories "
+msgstr ""
+
+#. module: product_catalog_report
+#: model:ir.module.module,description:product_catalog_report.module_meta_information
+msgid ""
+"\n"
+" This module use to print report of product catalog with product image, "
+"list price\n"
+" "
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_field:res.partner.product_catalog,init,report_lang:0
+msgid "Language"
+msgstr ""
+
+#. module: product_catalog_report
+#: model:ir.actions.wizard,name:product_catalog_report.wizard_print_catalog_report
+#: wizard_button:res.partner.product_catalog,init,print:0
+msgid "Print Product Catalog"
+msgstr ""
+
+#. module: product_catalog_report
+#: model:ir.module.module,shortdesc:product_catalog_report.module_meta_information
+msgid "Product Catalog"
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_view:res.partner.product_catalog,init:0
+msgid "Select a printing language "
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_button:res.partner.product_catalog,init,end:0
+msgid "Cancel"
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_view:res.partner.product_catalog,init:0
+msgid "Choose catalog preferencies"
+msgstr ""
+
+#. module: product_catalog_report
+#: wizard_field:res.partner.product_catalog,init,categories:0
+msgid "Select Category"
+msgstr ""
=== added file 'product_catalog_report/product_report.xml'
--- product_catalog_report/product_report.xml 1970-01-01 00:00:00 +0000
+++ product_catalog_report/product_report.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+ <report id="base.report_product_catalog"
+ string="Product Catalog"
+ model="res.partner"
+ name="product_catalog"
+ rml="product_catalog_report/report/product_catalog.rml"
+ auto="False"
+ menu="False"/>
+
+ </data>
+</openerp>
=== added file 'product_catalog_report/product_wizard.xml'
--- product_catalog_report/product_wizard.xml 1970-01-01 00:00:00 +0000
+++ product_catalog_report/product_wizard.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+ <wizard string="Print Product Catalog"
+ model="res.partner"
+ name="res.partner.product_catalog"
+ keyword="client_print_multi"
+ id="wizard_print_catalog_report"/>
+ </data>
+</openerp>
=== added directory 'product_catalog_report/report'
=== added file 'product_catalog_report/report/__init__.py'
--- product_catalog_report/report/__init__.py 1970-01-01 00:00:00 +0000
+++ product_catalog_report/report/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,22 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+import product_catalog
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_catalog_report/report/product_catalog.py'
--- product_catalog_report/report/product_catalog.py 1970-01-01 00:00:00 +0000
+++ product_catalog_report/report/product_catalog.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,137 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import time
+import reportlab
+import reportlab.lib.units
+import urllib
+import base64
+from report import report_sxw
+
+class product_catalog(report_sxw.rml_parse):
+ def __init__(self, cr, uid, name, context):
+ super(product_catalog, self).__init__(cr, uid, name, context)
+
+ self.localcontext.update({
+ 'time': time,
+ 'image_url' : self._get_imagepath,
+ 'currency_code': self._get_currency,
+# 'Carton': self._get_carton,
+# 'SCondt': self._get_SCondt,
+# 'UV': self._get_UV,
+ 'categories':self._getCategories,
+ 'products':self._getProducts,
+ 'description':self._get_desc,
+ 'packaging_title':self._get_packaging_title,
+ 'packaging_value':self._get_packaging_value,
+ 'Price':self._get_price,
+
+ })
+ def _get_imagepath(self,product):
+ attach_ids = self.pool.get('ir.attachment').search(self.cr, self.uid, [('res_model','=','product.product'), ('res_id', '=',product)])
+ datas = self.pool.get('ir.attachment').read(self.cr, self.uid, attach_ids)
+ if len(datas):
+ # if there are several, pick first
+ try:
+ if datas[0]['link']:
+ try:
+ img_data = base64.encodestring(urllib.urlopen(datas[0]['link']).read())
+ return img_data
+ except Exception,innerEx:
+ print innerEx
+ elif datas[0]['datas']:
+ return datas[0]['datas']
+ except Exception,e:
+ print e
+ return None
+
+ def setCat(self,cats):
+ lst = []
+ for cat in cats:
+ if cat not in lst:
+ lst.append(cat)
+ category = self.pool.get('product.category').read(self.cr,self.uid,[cat])
+ if category[0]['child_id']:
+ lst.extend(self.setCat(category[0]['child_id']))
+ return lst
+
+
+ def _getCategories(self,cat):
+ lst = self.setCat(cat[0][2])
+ cat_ids = self.pool.get('product.category').search(self.cr,self.uid,[('id','in',lst)])
+ tmpCat_ids = []
+ for cat in cat_ids:
+ prod_ids = self.pool.get('product.template').search(self.cr,self.uid,[('categ_id','=',cat)])
+ if len(prod_ids):
+ tmpCat_ids.append(cat)
+ cats = self.pool.get('product.category').read(self.cr,self.uid,tmpCat_ids)
+ return cats
+ def _getProducts(self,category,lang):
+ prod_tmpIDs = self.pool.get('product.template').search(self.cr,self.uid,[('categ_id','=',category)])
+ prod_ids = self.pool.get('product.product').search(self.cr,self.uid,[('product_tmpl_id','in',prod_tmpIDs)])
+ prods = self.pool.get('product.product').read(self.cr,self.uid,prod_ids,context={'lang':lang})
+ return prods
+
+ def _get_currency(self):
+ return self.pool.get('res.users').browse(self.cr, self.uid, [self.uid])[0].company_id.currency_id.name
+
+
+ def _get_packaging_title(self,product,index):
+ packaging_ids = self.pool.get('product.packaging').search(self.cr,self.uid,[('product_id','=',product)],limit=4)
+ packs = self.pool.get('product.packaging').read(self.cr,self.uid,packaging_ids,['name'])
+ if len(packs) > index:
+ s = str(packs[index]['name'])
+ if len(s)>9:
+ p = str(s[0:9]) + "..."
+ return p
+ elif not s == "False":
+ return s
+ return " "
+
+ def _get_packaging_value(self,product,index):
+ packaging_ids = self.pool.get('product.packaging').search(self.cr,self.uid,[('product_id','=',product)],limit=4)
+ packs = self.pool.get('product.packaging').read(self.cr,self.uid,packaging_ids,['qty'])
+ if len(packs) > index:
+ return str(packs[index]['qty'])
+ return False
+
+ def _get_price(self,product,pricelist):
+ price = self.pool.get('product.pricelist').price_get(self.cr,self.uid,[pricelist], product, 1.0, None,{'uom': False})[pricelist]
+ if not price:
+ price = 0.0
+ return price
+
+ def _get_desc(self,tempate_id):
+ if tempate_id:
+ prodtmpl = self.pool.get('product.template').read(self.cr,self.uid,[tempate_id])[0]
+
+ if prodtmpl['description_sale']:
+ return prodtmpl['description_sale']
+ else:
+ return "no Description Specified"
+ else:
+ return "This is Test Description"
+
+
+report_sxw.report_sxw('report.product_catalog', 'res.partner', 'addons/product_catalog_report/report/product_catalog.rml', parser=product_catalog,header=False)
+
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_catalog_report/report/product_catalog.rml'
--- product_catalog_report/report/product_catalog.rml 1970-01-01 00:00:00 +0000
+++ product_catalog_report/report/product_catalog.rml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,287 @@
+<?xml version="1.0"?>
+<document filename="test.pdf">
+ <template pageSize="(595.0,842.0)" title="Test" author="Martin Simon" allowSplitting="20">
+ <pageTemplate id="first">
+ <frame id="first" x1="57.0" y1="57.0" width="481" height="728"/>
+ </pageTemplate>
+ </template>
+ <stylesheet>
+ <blockTableStyle id="Standard_Outline">
+ <blockAlignment value="LEFT"/>
+ <blockValign value="TOP"/>
+ </blockTableStyle>
+ <blockTableStyle id="Table1">
+ <blockAlignment value="LEFT"/>
+ <blockValign value="TOP"/>
+ </blockTableStyle>
+ <blockTableStyle id="Table2">
+ <blockAlignment value="LEFT"/>
+ <blockValign value="TOP"/>
+ <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="0,0" stop="0,-1"/>
+ <lineStyle kind="LINEABOVE" colorName="#cccccc" start="0,0" stop="0,0"/>
+ <lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,-1" stop="0,-1"/>
+ <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="1,0" stop="1,-1"/>
+ <lineStyle kind="LINEAFTER" colorName="#cccccc" start="1,0" stop="1,-1"/>
+ <lineStyle kind="LINEABOVE" colorName="#cccccc" start="1,0" stop="1,0"/>
+ <lineStyle kind="LINEBELOW" colorName="#cccccc" start="1,-1" stop="1,-1"/>
+ </blockTableStyle>
+ <blockTableStyle id="Table3">
+ <blockAlignment value="LEFT"/>
+ <blockValign value="TOP"/>
+ <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="0,0" stop="0,-1"/>
+ <lineStyle kind="LINEABOVE" colorName="#cccccc" start="0,0" stop="0,0"/>
+ <lineStyle kind="LINEBELOW" colorName="#cccccc" start="0,-1" stop="0,-1"/>
+ <lineStyle kind="LINEBEFORE" colorName="#cccccc" start="1,0" stop="1,-1"/>
+ <lineStyle kind="LINEAFTER" colorName="#cccccc" start="1,0" stop="1,-1"/>
+ <lineStyle kind="LINEABOVE" colorName="#cccccc" start="1,0" stop="1,0"/>
+ <lineStyle kind="LINEBELOW" colorName="#cccccc" start="1,-1" stop="1,-1"/>
+ </blockTableStyle>
+ <blockTableStyle id="Table4">
+ <blockAlignment value="LEFT"/>
+ <blockValign value="TOP"/>
+ <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
+ <lineStyle kind="LINEBELOW" colorName="#000000" start="1,-1" stop="1,-1"/>
+ </blockTableStyle>
+ <blockTableStyle id="Table5">
+ <blockAlignment value="LEFT"/>
+ <blockValign value="TOP"/>
+ </blockTableStyle>
+ <blockTableStyle id="Table6">
+ <blockAlignment value="LEFT"/>
+ <blockValign value="TOP"/>
+ <lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="0,-1"/>
+ </blockTableStyle>
+ <blockTableStyle id="Table7">
+ <blockAlignment value="LEFT"/>
+ <blockValign value="TOP"/>
+ </blockTableStyle>
+ <blockTableStyle id="Table8">
+ <blockAlignment value="LEFT"/>
+ <blockValign value="TOP"/>
+ </blockTableStyle>
+ <blockTableStyle id="Table9">
+ <blockAlignment value="LEFT"/>
+ <blockValign value="TOP"/>
+ </blockTableStyle>
+ <blockTableStyle id="Table10">
+ <blockAlignment value="LEFT"/>
+ <blockValign value="TOP"/>
+ </blockTableStyle>
+ <initialize>
+ <paraStyle name="all" alignment="justify"/>
+ </initialize>
+ <paraStyle name="P1" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT"/>
+ <paraStyle name="P2" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="P3" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="P4" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="Standard" fontName="Times-Roman"/>
+ <paraStyle name="Heading" fontName="Helvetica" fontSize="12.0" leading="15" spaceBefore="12.0" spaceAfter="6.0"/>
+ <paraStyle name="Text body" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
+ <paraStyle name="List" fontName="Helvetica" spaceBefore="0.0" spaceAfter="6.0"/>
+ <paraStyle name="Caption" fontName="Helvetica-Oblique" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/>
+ <paraStyle name="Index" fontName="Helvetica"/>
+ <paraStyle name="Table Contents" fontName="Times-Roman"/>
+ <paraStyle name="Table Heading" fontName="Times-Roman" alignment="CENTER"/>
+ <paraStyle name="terp_header" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_default_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_default_Bold_8" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_default_Bold_9" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_default_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_tblheader_General" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="Footer" fontName="Times-Roman"/>
+ <paraStyle name="Horizontal Line" fontName="Times-Roman" fontSize="6.0" leading="8" spaceBefore="0.0" spaceAfter="14.0"/>
+ <paraStyle name="Heading 9" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
+ <paraStyle name="terp_tblheader_General_Right" fontName="Helvetica-Bold" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_tblheader_Details_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_tblheader_Details_Right" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_default_Right_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_header_Right" fontName="Helvetica-Bold" fontSize="15.0" leading="19" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_header_Centre" fontName="Helvetica-Bold" fontSize="12.0" leading="15" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_default_address" fontName="Helvetica" fontSize="10.0" leading="13" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_default_Centre_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_default_Right_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_default_1" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_default_Right_9_Bold" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="terp_default_8_Italic" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+ <paraStyle name="Drawing" fontName="Helvetica-Oblique" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/>
+ <paraStyle name="Header" fontName="Times-Roman"/>
+ <paraStyle name="Endnote" rightIndent="0.0" leftIndent="14.0" fontName="Times-Roman" fontSize="10.0" leading="13"/>
+ <paraStyle name="Addressee" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="3.0"/>
+ <paraStyle name="Signature" fontName="Times-Roman"/>
+ <paraStyle name="Heading 8" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
+ <paraStyle name="Heading 7" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
+ <paraStyle name="Heading 6" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
+ <paraStyle name="Heading 5" fontName="Helvetica-Bold" fontSize="85%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
+ <paraStyle name="Heading 4" fontName="Helvetica-BoldOblique" fontSize="85%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
+ <paraStyle name="Heading 1" fontName="Helvetica-Bold" fontSize="115%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
+ <paraStyle name="Heading 10" fontName="Helvetica-Bold" fontSize="75%" leading="NaN" spaceBefore="12.0" spaceAfter="6.0"/>
+ <paraStyle name="Heading 2" fontName="Helvetica-BoldOblique" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/>
+ <paraStyle name="First line indent" rightIndent="0.0" leftIndent="0.0" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
+ <paraStyle name="Hanging indent" rightIndent="0.0" leftIndent="28.0" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
+ <paraStyle name="Salutation" fontName="Times-Roman"/>
+ <paraStyle name="Text body indent" rightIndent="0.0" leftIndent="0.0" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
+ <paraStyle name="Heading 3" fontName="Helvetica-Bold" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/>
+ <paraStyle name="List Indent" rightIndent="0.0" leftIndent="142.0" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
+ <paraStyle name="Marginalia" rightIndent="0.0" leftIndent="113.0" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
+ <paraStyle name="terp_default_space" fontName="Helvetica" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="0.0"/>
+ </stylesheet>
+ <images/>
+ <story>
+ <para style="terp_default_8">[[ setLang(data['form']['report_lang']) ]]</para>
+ <blockTable colWidths="482.0" style="Table1">
+ <tr>
+ <td>
+ <para style="terp_header_Centre">Product Catelog</para>
+ </td>
+ </tr>
+ </blockTable>
+ <para style="terp_default_space">
+ <font color="white"> </font>
+ </para>
+ <blockTable colWidths="241.0,241.0" style="Table2">
+ <tr>
+ <td>
+ <para style="terp_tblheader_General_Centre">Printing Date</para>
+ </td>
+ <td>
+ <para style="terp_tblheader_General_Centre">Pricelist</para>
+ </td>
+ </tr>
+ </blockTable>
+ <blockTable colWidths="241.0,241.0" style="Table3">
+ <tr>
+ <td>
+ <para style="terp_default_Centre_8">[[ formatLang(time.strftime('%d-%m-%y'),date=True) ]]</para>
+ </td>
+ <td>
+ <para style="terp_default_Centre_8">[[ objects.property_product_pricelist[0].name ]]</para>
+ </td>
+ </tr>
+ </blockTable>
+ <para style="terp_default_space">
+ <font color="white"> </font>
+ </para>
+ <section>
+ <para style="terp_default_8">[[ repeatIn(categories(data['form']['categories']),'c') ]]</para>
+ <blockTable colWidths="73.0,409.0" style="Table4">
+ <tr>
+ <td>
+ <para style="terp_default_Bold_9">Code Family : </para>
+ </td>
+ <td>
+ <para style="terp_default_9">[[ c['id'] ]] [[ c['complete_name'] ]]</para>
+ </td>
+ </tr>
+ </blockTable>
+ <para style="terp_default_1">
+ <font color="white"> </font>
+ </para>
+ <section>
+ <para style="terp_default_8">[[ repeatIn(products(c['id'],data['form']['report_lang']),'p') ]]</para>
+ <blockTable colWidths="241.0,241.0" style="Table5">
+ <tr>
+ <td>
+ <para style="P2">[[ image_url(p['id']) and setTag('para','image',{'width':'78.0','height':'78.0'}) or removeParentNode('blockTable') ]][[ image_url(p['id']) ]]</para>
+ </td>
+ <td>
+ <para style="P1">
+ <font color="white"> </font>
+ </para>
+ </td>
+ </tr>
+ </blockTable>
+ <para style="terp_default_1">
+ <font color="white"> </font>
+ </para>
+ <blockTable colWidths="241.0,241.0" style="Table6">
+ <tr>
+ <td>
+ <para style="terp_default_9">[[ p['code'] ]] - [[ p['name'] ]]</para>
+ </td>
+ <td>
+ <para style="terp_default_9">
+ <font color="white"> </font>
+ </para>
+ </td>
+ </tr>
+ </blockTable>
+ <para style="terp_default_1">
+ <font color="white"> </font>
+ </para>
+ <blockTable colWidths="120.0,120.0,120.0,121.0" style="Table7">
+ <tr>
+ <td>
+ <para style="P3">[[ packaging_title(p['id'],0) or removeParentNode('para') ]]</para>
+ </td>
+ <td>
+ <para style="terp_default_9">[[ packaging_title(p['id'],1) or removeParentNode('para') ]]</para>
+ </td>
+ <td>
+ <para style="terp_default_9">[[ packaging_title(p['id'],2) or removeParentNode('para') ]]</para>
+ </td>
+ <td>
+ <para style="terp_default_9">[[ packaging_title(p['id'],3) or removeParentNode('para') ]]</para>
+ </td>
+ </tr>
+ </blockTable>
+ <para style="terp_default_1">
+ <font color="white"> </font>
+ </para>
+ <blockTable colWidths="120.0,120.0,120.0,121.0" style="Table8">
+ <tr>
+ <td>
+ <para style="terp_default_9">[[ packaging_value(p['id'],0) or removeParentNode('para') ]]</para>
+ </td>
+ <td>
+ <para style="terp_default_9">[[ packaging_value(p['id'],1) or removeParentNode('para') ]]</para>
+ </td>
+ <td>
+ <para style="terp_default_9">[[ packaging_value(p['id'],2) or removeParentNode('para') ]]</para>
+ </td>
+ <td>
+ <para style="terp_default_9">[[ packaging_value(p['id'],3) or removeParentNode('para') ]]</para>
+ </td>
+ </tr>
+ </blockTable>
+ <para style="terp_default_1">
+ <font color="white"> </font>
+ </para>
+ <blockTable colWidths="54.0,428.0" style="Table9">
+ <tr>
+ <td>
+ <para style="P4">Price</para>
+ </td>
+ <td>
+ <para style="P4">[[ '%.4f' % Price(p['id'],objects.property_product_pricelist[0].id) ]] [[ currency_code() ]] h.t./pc</para>
+ </td>
+ </tr>
+ </blockTable>
+ <para style="terp_default_1">
+ <font color="white"> </font>
+ </para>
+ <blockTable colWidths="54.0,428.0" style="Table10">
+ <tr>
+ <td>
+ <para style="terp_default_Bold_9">Description</para>
+ </td>
+ <td>
+ <para style="terp_default_9">[[ p['description_sale'] or removeParentNode('para') ]]</para>
+ </td>
+ </tr>
+ </blockTable>
+ <para style="terp_default_1">
+ <font color="white"> </font>
+ </para>
+ </section>
+ <para style="terp_default_1">
+ <font color="white"> </font>
+ </para>
+ </section>
+ <para style="terp_default_8">
+ <font color="white"> </font>
+ </para>
+ </story>
+</document>
=== added file 'product_catalog_report/report/product_catalog.sxw'
Binary files product_catalog_report/report/product_catalog.sxw 1970-01-01 00:00:00 +0000 and product_catalog_report/report/product_catalog.sxw 2013-01-17 10:06:27 +0000 differ
=== added directory 'product_catalog_report/wizard'
=== added file 'product_catalog_report/wizard/__init__.py'
--- product_catalog_report/wizard/__init__.py 1970-01-01 00:00:00 +0000
+++ product_catalog_report/wizard/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,22 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+import wizard_product_catalog
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_catalog_report/wizard/wizard_product_catalog.py'
--- product_catalog_report/wizard/wizard_product_catalog.py 1970-01-01 00:00:00 +0000
+++ product_catalog_report/wizard/wizard_product_catalog.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,66 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import wizard
+import time
+import pooler
+
+_lang_form = '''<?xml version="1.0"?>
+<form string="Choose catalog preferencies">
+ <separator string="Select a printing language " colspan="4"/>
+ <field name="report_lang"/>
+ <separator string="Select a Product Categories " colspan="4"/>
+ <field name="categories" colspan="4" nolabel="1" />
+
+</form>'''
+
+
+
+class wiz_productCatalog(wizard.interface):
+ def _get_language(self, cr, uid, context):
+ lang_obj=pooler.get_pool(cr.dbname).get('res.lang')
+ ids=lang_obj.search(cr, uid, [('active', '=', True),])
+ langs=lang_obj.browse(cr, uid, ids)
+ return [(lang.code, lang.name ) for lang in langs]
+
+ _lang_fields = {
+ 'report_lang': {'string':'Language', 'type':'selection', 'selection':_get_language,},
+ 'categories': {'string':'Select Category', 'type':'many2many', 'relation':'product.category', 'required':True},
+ }
+
+ def _load(self,cr,uid,data,context):
+ partner_obj=pooler.get_pool(cr.dbname).get('res.partner')
+ partners=partner_obj.browse(cr, uid, [data['id']])
+ if len(partners)>0:
+ data['form']['report_lang']=partners[0].lang
+ return data['form']
+ states = {
+ 'init': {
+ 'actions': [_load],
+ 'result': {'type': 'form', 'arch':_lang_form, 'fields':_lang_fields, 'state':[('end','Cancel'),('print','Print Product Catalog') ]}
+ },
+ 'print': {
+ 'actions': [],
+ 'result': {'type': 'print', 'report': 'product_catalog', 'state':'end'}
+ }
+ }
+wiz_productCatalog('res.partner.product_catalog')
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added directory 'product_custom_attributes'
=== added file 'product_custom_attributes/__init__.py'
--- product_custom_attributes/__init__.py 1970-01-01 00:00:00 +0000
+++ product_custom_attributes/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,31 @@
+# -*- encoding: utf-8 -*-
+###############################################################################
+# #
+# product_custom_attributes for OpenERP #
+# Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+
+
+import ir_model
+import product_attribute
+import product
+import wizard
+
+
+
+
=== added file 'product_custom_attributes/__openerp__.py'
--- product_custom_attributes/__openerp__.py 1970-01-01 00:00:00 +0000
+++ product_custom_attributes/__openerp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,50 @@
+# -*- encoding: utf-8 -*-
+###############################################################################
+# #
+# product_custom_attributes for OpenERP #
+# Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+
+
+{
+ 'name': 'product_custom_attributes',
+ 'version': '6.1.0',
+ 'category': 'Generic Modules/Others',
+ 'license': 'AGPL-3',
+ 'description': """
+ This module adds the posibility to easily create custom fields on products.
+ Each product can be linked to an attribute set (such as camera, fridge...)
+ and each attribute set has custom fields (for example you don't need the same field for a frigde and a camera)
+
+ Need to install the lib unicode2ascii, http://github.com/akretion/unicode2ascii.git
+ """,
+ 'author': 'Akretion',
+ 'website': 'http://www.akretion.com/',
+ 'depends': ['product','stock'],
+ 'init_xml': [],
+ 'update_xml': [
+ 'ir_model_view.xml',
+ 'product_attribute_view.xml',
+ 'product_view.xml',
+ 'wizard/open_product_by_attribute_set.xml',
+ ],
+ 'demo_xml': [],
+ 'installable': True,
+ 'active': False,
+}
+
=== added file 'product_custom_attributes/ir_model.py'
--- product_custom_attributes/ir_model.py 1970-01-01 00:00:00 +0000
+++ product_custom_attributes/ir_model.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,34 @@
+# -*- encoding: utf-8 -*-
+###############################################################################
+# #
+# product_custom_attributes for OpenERP #
+# Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+from openerp.osv.orm import Model
+from openerp.osv import fields
+
+
+class ir_model_fields(Model):
+
+ _inherit = "ir.model.fields"
+ _columns = {
+ 'field_description': fields.char('Field Label', required=True, size=256, translate=True),
+ }
+ _sql_constraints = [
+ ('name_model_uniq', 'unique (name, model_id)', 'The name of the field has to be uniq for a given model !'),
+ ]
=== added file 'product_custom_attributes/ir_model_view.xml'
--- product_custom_attributes/ir_model_view.xml 1970-01-01 00:00:00 +0000
+++ product_custom_attributes/ir_model_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ product_custom_attributs for OpenERP
+ Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@xxxxxxxxxxxx>
+ The licence is in the file __openerp__.py
+-->
+
+<openerp>
+ <data>
+
+ <!-- INHERITED VIEW FOR THE OBJECT : ir_model_fields -->
+
+<!-- <record id="ir_model_fields_view_form" model="ir.ui.view">-->
+<!-- <field name="name">product_custom_attributs.ir_model_fields.view_form</field>-->
+<!-- <field name="model">ir.model.fields</field>-->
+<!-- <field name="inherit_id" ref="module_name_to_inherit.view_id" />-->
+<!-- <field eval="16" name="priority"/>-->
+<!-- <field name="type">form</field>-->
+<!-- <field name="arch" type="xml">-->
+<!-- <data>-->
+<!-- <field name="field_reference" position="after">-->
+<!-- </field>-->
+<!-- </data>-->
+<!-- </field>-->
+<!-- </record>-->
+
+<!-- <record id="ir_model_fields_view_tree" model="ir.ui.view">-->
+<!-- <field name="name">product_custom_attributs.ir_model_fields.view_tree</field>-->
+<!-- <field name="model">ir.model.fields</field>-->
+<!-- <field name="inherit_id" ref="module_name_to_inherit.view_id" />-->
+<!-- <field eval="16" name="priority"/>-->
+<!-- <field name="type">tree</field>-->
+<!-- <field name="arch" type="xml">-->
+<!-- <data>-->
+<!-- <field name="field_reference" position="after">-->
+<!-- </field>-->
+<!-- </data>-->
+<!-- </field>-->
+<!-- </record>-->
+<!-- -->
+
+
+
+
+ </data>
+</openerp>
=== added file 'product_custom_attributes/product.py'
--- product_custom_attributes/product.py 1970-01-01 00:00:00 +0000
+++ product_custom_attributes/product.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,128 @@
+# -*- encoding: utf-8 -*-
+###############################################################################
+# #
+# product_custom_attributes for OpenERP #
+# Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+from openerp.osv.orm import Model
+from openerp.osv import fields
+from openerp.osv.osv import except_osv
+from lxml import etree
+from tools.translate import _
+
+class product_template(Model):
+
+ _inherit = "product.template"
+
+ _columns = {
+ 'attribute_custom_tmpl': fields.serialized('Custom Template Attributes'),
+ }
+
+class product_product(Model):
+
+ _inherit = "product.product"
+
+ _columns = {
+ 'attribute_set_id': fields.many2one('attribute.set', 'Attribute Set'),
+ 'attribute_custom_variant': fields.serialized('Custom Variant Attributes'),
+ }
+
+ def _fix_size_bug(self, cr, uid, result, context=None):
+ #When created a field text dynamicaly, its size is limited to 64 in the view.
+ #The bug is fixed but not merged
+ #https://code.launchpad.net/~openerp-dev/openerp-web/6.1-opw-579462-cpa/+merge/128003
+ #TO remove when the fix will be merged
+ for field in result['fields']:
+ if result['fields'][field]['type'] == 'text':
+ if 'size' in result['fields'][field]: del result['fields'][field]['size']
+ return result
+
+ def open_attributes(self, cr, uid, ids, context=None):
+ ir_model_data_obj = self.pool.get('ir.model.data')
+ ir_model_data_id = ir_model_data_obj.search(cr, uid, [['model', '=', 'ir.ui.view'], ['name', '=', 'product_attributes_form_view']], context=context)
+ if ir_model_data_id:
+ res_id = ir_model_data_obj.read(cr, uid, ir_model_data_id, fields=['res_id'])[0]['res_id']
+ set_id = self.read(cr, uid, ids, fields=['attribute_set_id'], context=context)[0]['attribute_set_id']
+
+ if not set_id:
+ raise except_osv(_('User Error'), _('Please choose an attribute set before opening the product attributes'))
+
+ return {
+ 'name': 'Product Attributes',
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'view_id': [res_id],
+ 'res_model': self._name,
+ 'context': "{'set_id': %s, 'open_attributes': %s}"%(set_id[0], True),
+ 'type': 'ir.actions.act_window',
+ 'nodestroy': True,
+ 'target': 'new',
+ 'res_id': ids and ids[0] or False,
+ }
+
+ def save_and_close_product_attributes(self, cr, uid, ids, context=None):
+ return {'type': 'ir.actions.act_window_close'}
+
+ def _build_attribute_field(self, cr, uid, page, attribute, context=None):
+ parent = page
+ kwargs = {'name': "%s" % attribute.name}
+ if attribute.ttype == 'many2many':
+ parent = etree.SubElement(page, 'group', colspan="2", col="4")
+ sep = etree.SubElement(parent, 'separator',
+ string="%s" % attribute.field_description, colspan="4")
+ kwargs['nolabel'] = "1"
+ if attribute.ttype in ['many2one', 'many2many']:
+ kwargs['domain'] = "[('attribute_id', '=', %s)]" % attribute.attribute_id.id
+ field = etree.SubElement(parent, 'field', **kwargs)
+ return parent
+
+ def _build_attributes_notebook(self, cr, uid, set_id, context=None):
+ attribute_set = self.pool.get('attribute.set').browse(cr, uid, set_id, context=context)
+ notebook = etree.Element('notebook', name="attributes_notebook", colspan="4")
+ toupdate_fields = []
+ for group in attribute_set.attribute_group_ids:
+ page = etree.SubElement(notebook, 'page', string=group.name.capitalize())
+ for attribute in group.attribute_ids:
+ toupdate_fields.append(attribute.name)
+ self._build_attribute_field(cr, uid, page, attribute, context=context)
+ return notebook, toupdate_fields
+
+ def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
+ if context==None:
+ context={}
+ result = super(product_product, self).fields_view_get(cr, uid, view_id,view_type,context,toolbar=toolbar, submenu=submenu)
+ if view_type == 'form' and context.get('set_id'):
+ eview = etree.fromstring(result['arch'])
+ #hide button under the name
+ button = eview.xpath("//button[@name='open_attributes']")
+ if button:
+ button = button[0]
+ button.getparent().remove(button)
+ attributes_notebook, toupdate_fields = self._build_attributes_notebook(cr, uid, context['set_id'], context=context)
+ result['fields'].update(self.fields_get(cr, uid, toupdate_fields, context))
+ if context.get('open_attributes'):
+ placeholder = eview.xpath("//separator[@string='attributes_placeholder']")[0]
+ placeholder.getparent().replace(placeholder, attributes_notebook)
+ elif context.get('open_product_by_attribute_set'):
+ main_page = etree.Element('page', string=_('Custom Attributes'))
+ main_page.append(attributes_notebook)
+ info_page = eview.xpath("//page[@string='Information']")[0]
+ info_page.addnext(main_page)
+ result['arch'] = etree.tostring(eview, pretty_print=True)
+ result = self._fix_size_bug(cr, uid, result, context=context)
+ return result
=== added file 'product_custom_attributes/product_attribute.py'
--- product_custom_attributes/product_attribute.py 1970-01-01 00:00:00 +0000
+++ product_custom_attributes/product_attribute.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,138 @@
+# -*- encoding: utf-8 -*-
+###############################################################################
+# #
+# product_custom_attributes for OpenERP #
+# Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+from openerp.osv.orm import Model
+from openerp.osv import fields
+from openerp.osv.osv import except_osv
+from openerp.tools.translate import _
+from unidecode import unidecode # Debian package python-unidecode
+
+class attribute_option(Model):
+ _name = "attribute.option"
+ _description = "Attribute Option"
+ _order="sequence"
+
+ _columns = {
+ 'name': fields.char('Name', size=128, translate=True, required=True),
+ 'attribute_id': fields.many2one('product.attribute', 'Product Attribute', required=True),
+ 'sequence': fields.integer('Sequence'),
+ }
+
+
+class product_attribute(Model):
+ _name = "product.attribute"
+ _description = "Product Attribute"
+ _inherits = {'ir.model.fields': 'field_id'}
+ _columns = {
+ 'field_id': fields.many2one('ir.model.fields', 'Ir Model Fields', required=True, ondelete="cascade"),
+ 'attribute_type': fields.selection([('char','Char'),
+ ('text','Text'),
+ ('select','Select'),
+ ('multiselect','Multiselect'),
+ ('boolean','Boolean'),
+ ('integer','Integer'),
+ ('date','Date'),
+ ('datetime','Datetime'),
+ ('binary','Binary'),
+ ('float','Float')],
+ 'Type', required=True),
+ 'serialized': fields.boolean('Field serialized',
+ help="If serialized, the field will be stocked in the serialized field: "
+ "attribute_custom_tmpl or attribute_custom_variant depending on the field based_on"),
+ 'based_on': fields.selection([('product_template','Product Template'),
+ ('product_product','Product Variant')],
+ 'Based on', required=True),
+ 'option_ids': fields.one2many('attribute.option', 'attribute_id', 'Attribute Option'),
+ 'create_date': fields.datetime('Created date', readonly=True),
+ }
+
+ def create(self, cr, uid, vals, context=None):
+ if vals.get('based_on') == 'product_template':
+ vals['model_id'] = self.pool.get('ir.model').search(cr, uid, [('model', '=', 'product.template')], context=context)[0]
+ serial_name = 'attribute_custom_tmpl'
+ else:
+ vals['model_id'] = self.pool.get('ir.model').search(cr, uid, [('model', '=', 'product.product')], context=context)[0]
+ serial_name = 'attribute_custom_variant'
+ if vals.get('serialized'):
+ vals['serialization_field_id'] = self.pool.get('ir.model.fields').search(cr, uid, [('name', '=', serial_name)], context=context)[0]
+ if vals['attribute_type'] == 'select':
+ vals['ttype'] = 'many2one'
+ vals['relation'] = 'attribute.option'
+ elif vals['attribute_type'] == 'multiselect':
+ vals['ttype'] = 'many2many'
+ vals['relation'] = 'attribute.option'
+ if not vals.get('serialized'):
+ raise except_osv(_('Create Error'), _("The field serialized should be ticked for a multiselect field !"))
+ else:
+ vals['ttype'] = vals['attribute_type']
+ vals['state'] = 'manual'
+ return super(product_attribute, self).create(cr, uid, vals, context)
+
+ def onchange_field_description(self, cr, uid, ids, field_description, context=None):
+ name = 'x_'
+ if field_description:
+ name = unidecode('x_%s' % field_description.replace(' ', '_').lower())
+ return {'value' : {'name' : name}}
+
+ def onchange_name(self, cr, uid, ids, name, context=None):
+ if not name.startswith('x_'):
+ name = 'x_%s' % name
+ return {'value' : {'name' : unidecode(name)}}
+
+class attribute_location(Model):
+ _name = "attribute.location"
+ _description = "Attribute Location"
+ _order="sequence"
+ _inherits = {'product.attribute': 'attribute_id'}
+ _columns = {
+ 'attribute_id': fields.many2one('product.attribute', 'Product Attribute', required=True, ondelete="cascade"),
+ 'attribute_set_id': fields.related('attribute_group_id', 'attribute_set_id', type='many2one', relation='attribute.set', string='Attribute Set', store=True, readonly=True),
+ 'attribute_group_id': fields.many2one('attribute.group', 'Attribute Group', required=True),
+ 'sequence': fields.integer('Sequence'),
+ }
+
+
+class attribute_group(Model):
+ _name= "attribute.group"
+ _description = "Attribute Group"
+ _order="sequence"
+
+ _columns = {
+ 'name': fields.char('Name', size=128, required=True),
+ 'attribute_set_id': fields.many2one('attribute.set', 'Attribute Set', required=True),
+ 'attribute_ids': fields.one2many('attribute.location', 'attribute_group_id', 'Attributes'),
+ 'sequence': fields.integer('Sequence'),
+ }
+
+ def create(self, cr, uid, vals, context=None):
+ for attribute in vals['attribute_ids']:
+ if attribute[2] and not attribute[2].get('attribute_set_id'):
+ attribute[2]['attribute_set_id'] = vals['attribute_set_id']
+ return super(attribute_group, self).create(cr, uid, vals, context)
+
+class attribute_set(Model):
+ _name = "attribute.set"
+ _description = "Attribute Set"
+ _columns = {
+ 'name': fields.char('Name', size=128, required=True),
+ 'attribute_group_ids': fields.one2many('attribute.group', 'attribute_set_id', 'Attribute Groups'),
+ }
+
=== added file 'product_custom_attributes/product_attribute_view.xml'
--- product_custom_attributes/product_attribute_view.xml 1970-01-01 00:00:00 +0000
+++ product_custom_attributes/product_attribute_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ product_custom_attributes for OpenERP
+ Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@xxxxxxxxxxxx>
+ The licence is in the file __openerp__.py
+-->
+
+<openerp>
+ <data>
+
+ <!-- CREATED VIEW FOR THE OBJECT : product_attribute -->
+
+ <menuitem
+ id="menu_attribute_in_config_stock_product" name="Attributes"
+ parent="stock.menu_product_in_config_stock" sequence="20"/>
+
+ <record id="attribute_set_form_view" model="ir.ui.view">
+ <field name="name">attribute.set.form</field>
+ <field name="model">attribute.set</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Attribute Set" col="4">
+ <field name="name" colspan="1"/>
+ <field name="attribute_group_ids" colspan="4" nolabel="1" >
+ <form string="Attribute Groups">
+ <field name="name" colspan="1"/>
+ <field name="sequence" colspan="1"/>
+ <field name="attribute_ids" colspan="6" nolabel="1">
+ <form string="Attribute Location">
+ <field name="attribute_id" />
+ <field name="sequence" />
+ </form>
+ <tree string="Attribute Location">
+ <field name="attribute_id" />
+ </tree>
+ </field>
+ </form>
+ <tree string="Attribute Groups">
+ <field name="name" colspan="1"/>
+ </tree>
+ </field>
+ </form>
+ </field>
+ </record>
+
+ <record id="attribute_group_form_view" model="ir.ui.view">
+ <field name="name">attribute.group.form</field>
+ <field name="model">attribute.group</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Attribute Group" col="6">
+ <field name="name" colspan="1"/>
+ <field name="sequence" colspan="1"/>
+ <field name="attribute_set_id" colspan="1"/>
+ <field name="attribute_ids" colspan="6" nolabel="1">
+ <form string="Attribute Location">
+ <field name="attribute_id" />
+ <field name="sequence" />
+ </form>
+ <tree string="Attribute Location">
+ <field name="attribute_id" />
+ </tree>
+ </field>
+ </form>
+ </field>
+ </record>
+
+ <record id="attribute_location_form_view" model="ir.ui.view">
+ <field name="name">attribute.location.form</field>
+ <field name="model">attribute.location</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Attribute Location">
+ <field name="attribute_id" />
+ <field name="sequence" />
+ <field name="attribute_group_id" />
+ <field name="attribute_set_id" />
+ </form>
+ </field>
+ </record>
+
+ <record id="product_attribute_form_view" model="ir.ui.view">
+ <field name="name">product.attribute.form</field>
+ <field name="model">product.attribute</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Product Attribute" col="8">
+ <field name="field_description" colspan="1" on_change="onchange_field_description(field_description, context)"/>
+ <field name="name" colspan="1" attrs="{'readonly':[('create_date', '!=', False)]}" on_change="onchange_name(name, context)"/>
+ <field name="attribute_type" colspan="1"/>
+ <field name="based_on" colspan="1"/>
+ <field name="serialized" colspan="1"/>
+ <field name="size" colspan="1" attrs="{'invisible':[('attribute_type', '!=', 'char')]}"/>
+ <field name="translate" colspan="1" attrs="{'invisible':[('attribute_type', 'not in', ('char', 'text'))]}"/>
+ <field name="option_ids" colspan="8" attrs="{'invisible':[('attribute_type', 'not in', ['select', 'multiselect'])]}" widget="one2many_list" nolabel="1">
+ <tree string="Attribute Options" editable="top" >
+ <field name="sequence" colspan="1"/>
+ <field name="name" colspan="7"/>
+ </tree>
+ </field>
+ <field name="create_date" invisible="1"/>
+ </form>
+ </field>
+ </record>
+
+ <record id="attribute_option_form_view" model="ir.ui.view">
+ <field name="name">attribute.option.form</field>
+ <field name="model">attribute.option</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Attribute Option" col="6">
+ <field name="name" colspan="1"/>
+ <field name="sequence" colspan="1"/>
+ <field name="attribute_id" colspan="1"/>
+ </form>
+ </field>
+ </record>
+
+ <record id="attribute_set_tree_view" model="ir.ui.view">
+ <field name="name">attribute.set.tree</field>
+ <field name="model">attribute.set</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Attribute Set" >
+ <field name="name" />
+ </tree>
+ </field>
+ </record>
+
+ <record id="attribute_group_tree_view" model="ir.ui.view">
+ <field name="name">attribute.group.tree</field>
+ <field name="model">attribute.group</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Attribute Group">
+ <field name="name" />
+ <field name="sequence" />
+ <field name="attribute_set_id" />
+ </tree>
+ </field>
+ </record>
+
+ <record id="attribute_location_tree_view" model="ir.ui.view">
+ <field name="name">attribute.location.tree</field>
+ <field name="model">attribute.location</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Attribute Location">
+ <field name="attribute_id" />
+ <field name="sequence" />
+ <field name="attribute_set_id" />
+ <field name="attribute_group_id" />
+ </tree>
+ </field>
+ </record>
+
+ <record id="product_attribute_tree_view" model="ir.ui.view">
+ <field name="name">product.attribute.tree</field>
+ <field name="model">product.attribute</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Product Attribute">
+ <field name="name" />
+ <field name="attribute_type" />
+ </tree>
+ </field>
+ </record>
+
+ <record id="prio_attribute_option_tree_view" model="ir.ui.view">
+ <field name="name">attribute.option.tree.prio</field>
+ <field name="model">attribute.option</field>
+ <field name="type">tree</field>
+ <field eval="1" name="priority"/>
+ <field name="arch" type="xml">
+ <tree string="Attribute Option">
+ <field name="name" />
+ </tree>
+ </field>
+ </record>
+
+ <record id="attribute_option_tree_view" model="ir.ui.view">
+ <field name="name">attribute.option.tree</field>
+ <field name="model">attribute.option</field>
+ <field name="type">tree</field>
+ <field eval="20" name="priority"/>
+ <field name="arch" type="xml">
+ <tree string="Attribute Option">
+ <field name="sequence" />
+ <field name="name" />
+ <field name="attribute_id" />
+ </tree>
+ </field>
+ </record>
+
+ <record id="view_attribute_set_search" model="ir.ui.view">
+ <field name="name">attribute.set.list</field>
+ <field name="model">attribute.set</field>
+ <field name="type">search</field>
+ <field name="arch" type="xml">
+ <search string="Search Attribute Sets">
+ <field name="name" select="1"/>
+ </search>
+ </field>
+ </record>
+
+ <record id="view_attribute_group_search" model="ir.ui.view">
+ <field name="name">attribute.group.list</field>
+ <field name="model">attribute.group</field>
+ <field name="type">search</field>
+ <field name="arch" type="xml">
+ <search string="Search Attribute Groups">
+ <field name="name" select="1"/>
+ <field name="attribute_set_id"/>
+ </search>
+ </field>
+ </record>
+
+ <record id="view_attribute_location_search" model="ir.ui.view">
+ <field name="name">attribute.location.list</field>
+ <field name="model">attribute.location</field>
+ <field name="type">search</field>
+ <field name="arch" type="xml">
+ <search string="Search Attribute Locations">
+ <field name="name" select="1"/>
+ <field name="attribute_set_id"/>
+ <field name="attribute_group_id"/>
+ </search>
+ </field>
+ </record>
+
+ <record id="view_product_attribute_search" model="ir.ui.view">
+ <field name="name">product.attribute.list</field>
+ <field name="model">product.attribute</field>
+ <field name="type">search</field>
+ <field name="arch" type="xml">
+ <search string="Search Product Attributes">
+ <field name="name" select="1"/>
+ </search>
+ </field>
+ </record>
+
+ <record id="view_attribute_option_search" model="ir.ui.view">
+ <field name="name">attribute.option.list</field>
+ <field name="model">attribute.option</field>
+ <field name="type">search</field>
+ <field name="arch" type="xml">
+ <search string="Search Attribute Options">
+ <field name="name" />
+ <field name="attribute_id"/>
+ </search>
+ </field>
+ </record>
+
+ <record id="attribute_set_form_action" model="ir.actions.act_window">
+ <field name="name">Attribute Sets</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">attribute.set</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form,calendar,graph</field>
+ <field name="search_view_id" ref="view_attribute_set_search"/>
+ <field name="context">{"search_default_user_id":uid}</field>
+ <field name="help"></field>
+ </record>
+
+ <record id="attribute_group_form_action" model="ir.actions.act_window">
+ <field name="name">Attribute Groups</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">attribute.group</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form,calendar,graph</field>
+ <field name="search_view_id" ref="view_attribute_group_search"/>
+ <field name="context">{"search_default_user_id":uid}</field>
+ <field name="help"></field>
+ </record>
+
+ <record id="attribute_location_form_action" model="ir.actions.act_window">
+ <field name="name">Attribute Locations</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">attribute.location</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form,calendar,graph</field>
+ <field name="search_view_id" ref="view_attribute_location_search"/>
+ <field name="context">{"search_default_user_id":uid}</field>
+ <field name="help"></field>
+ </record>
+
+ <record id="product_attribute_form_action" model="ir.actions.act_window">
+ <field name="name">Product Attributes</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">product.attribute</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form,calendar,graph</field>
+ <field name="search_view_id" ref="view_product_attribute_search"/>
+ <field name="context">{"search_default_user_id":uid}</field>
+ <field name="help"></field>
+ </record>
+
+ <record id="attribute_option_form_action" model="ir.actions.act_window">
+ <field name="name">Attribute Options</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">attribute.option</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form,calendar,graph</field>
+ <field name="view_id" ref="attribute_option_tree_view"/>
+ <field name="search_view_id" ref="view_attribute_option_search"/>
+ <field name="context">{"search_default_user_id":uid}</field>
+ <field name="help"></field>
+ </record>
+
+ <menuitem
+ action="attribute_set_form_action" id="menu_attribute_set_action"
+ parent="product_custom_attributes.menu_attribute_in_config_stock_product" sequence="1"/>
+ <menuitem
+ action="attribute_group_form_action" id="menu_attribute_group_action"
+ parent="product_custom_attributes.menu_attribute_in_config_stock_product" sequence="2"/>
+ <menuitem
+ action="attribute_location_form_action" id="menu_attribute_location_action"
+ parent="product_custom_attributes.menu_attribute_in_config_stock_product" sequence="3"/>
+ <menuitem
+ action="product_attribute_form_action" id="menu_product_attribute_action"
+ parent="product_custom_attributes.menu_attribute_in_config_stock_product" sequence="4"/>
+ <menuitem
+ action="attribute_option_form_action" id="menu_attribute_option_action"
+ parent="product_custom_attributes.menu_attribute_in_config_stock_product" sequence="5"/>
+
+ </data>
+</openerp>
=== added file 'product_custom_attributes/product_view.xml'
--- product_custom_attributes/product_view.xml 1970-01-01 00:00:00 +0000
+++ product_custom_attributes/product_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ product_custom_attributes for OpenERP
+ Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@xxxxxxxxxxxx>
+ The licence is in the file __openerp__.py
+-->
+
+<openerp>
+ <data>
+
+ <!-- CREATED VIEW FOR THE OBJECT : product_product -->
+
+ <record model="ir.ui.view" id="product_product_form_view_set_button">
+ <field name="name">attributes.product.normal.form</field>
+ <field name="model">product.product</field>
+ <field name="inherit_id" ref="product.product_normal_form_view" />
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <data>
+ <xpath expr="/form/group/group/field[@name='name']" position="after">
+ <group name="attribute_fields" colspan="2" col="4" >
+ <field name="attribute_set_id" colspan="3"/>
+ <button name="open_attributes" string="Open Attributes" type="object" icon="gtk-ok" colspan="1" attrs="{'invisible':[('attribute_set_id', '=', False)]}"/>
+ </group>
+ </xpath>
+ </data>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="product_attributes_form_view">
+ <field name="name">product.attributes.normal.wizard</field>
+ <field name="model">product.product</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Product">
+ <group name="name_set" colspan='4' col='8'>
+ <field name="name"/>
+ <field name="attribute_set_id" />
+ </group>
+ <separator string="attributes_placeholder" colspan="4"/>
+ <group colspan='4' col='4'>
+ <button icon="gtk-cancel" special="cancel" string="Cancel"/>
+ <button icon="gtk-ok" name="save_and_close_product_attributes" string="Save and Close" type="object"/>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ </data>
+</openerp>
=== added directory 'product_custom_attributes/wizard'
=== added file 'product_custom_attributes/wizard/__init__.py'
--- product_custom_attributes/wizard/__init__.py 1970-01-01 00:00:00 +0000
+++ product_custom_attributes/wizard/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,29 @@
+# -*- encoding: utf-8 -*-
+###############################################################################
+# #
+# product_custom_attributes for OpenERP #
+# Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+
+
+import open_product_by_attribute_set
+
+
+
+
+
=== added file 'product_custom_attributes/wizard/open_product_by_attribute_set.py'
--- product_custom_attributes/wizard/open_product_by_attribute_set.py 1970-01-01 00:00:00 +0000
+++ product_custom_attributes/wizard/open_product_by_attribute_set.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,56 @@
+# -*- encoding: utf-8 -*-
+###############################################################################
+# #
+# product_custom_attributes for OpenERP #
+# Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+from openerp.osv.orm import TransientModel
+from osv import fields
+
+
+class open_product_by_attribute_set(TransientModel):
+ _name = 'open.product.by.attribute.set'
+ _description = 'Wizard to open product by attributes set'
+
+ _columns = {
+ 'attribute_set_id':fields.many2one('attribute.set', 'Attribute Set'),
+ }
+
+ def open_product_by_attribute(self, cr, uid, ids, context=None):
+ """
+ Opens Product by attributes
+ @param cr: the current row, from the database cursor,
+ @param uid: the current user’s ID for security checks,
+ @param ids: List of account chart’s IDs
+ @return: dictionary of Product list window for a given attributes set
+ """
+ mod_obj = self.pool.get('ir.model.data')
+ act_obj = self.pool.get('ir.actions.act_window')
+ if context is None:
+ context = {}
+ attribute_set = self.browse(cr, uid, ids[0], context=context).attribute_set_id
+ data = self.read(cr, uid, ids, [], context=context)[0] # XXX used?
+ result = mod_obj.get_object_reference(cr, uid, 'product', 'product_normal_action')
+ id = result[1] if result else False
+ result = act_obj.read(cr, uid, [id], context=context)[0]
+ result['context'] = "{'set_id': %s, 'open_product_by_attribute_set': %s}"%(attribute_set.id, True)
+ result['domain'] = "[('attribute_set_id', '=', %s)]" % attribute_set.id
+ result['name'] = attribute_set.name
+ return result
+
+
=== added file 'product_custom_attributes/wizard/open_product_by_attribute_set.xml'
--- product_custom_attributes/wizard/open_product_by_attribute_set.xml 1970-01-01 00:00:00 +0000
+++ product_custom_attributes/wizard/open_product_by_attribute_set.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ product_custom_attributes for OpenERP
+ Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@xxxxxxxxxxxx>
+ The licence is in the file __openerp__.py
+-->
+
+<openerp>
+ <data>
+
+ <record model="ir.ui.view" id="open_product_by_attribute_set_view">
+ <field name="name">open.product.by.attribute.set.view</field>
+ <field name="model">open.product.by.attribute.set</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Open product by attributes set">
+ <field name="attribute_set_id" colspan="4"/>
+ <button icon="gtk-cancel" special="cancel" string="Cancel"/>
+ <button icon="gtk-ok" name="open_product_by_attribute" string="Open Product By attribute" type="object"/>
+ </form>
+ </field>
+ </record>
+
+ <record id="open_product_by_attribute_set" model="ir.actions.act_window">
+ <field name="name">Open Product By Attribute Set</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">open.product.by.attribute.set</field>
+ <field name="view_type">form</field>
+ <field name="target">new</field>
+ <field name="view_id" ref="open_product_by_attribute_set_view"/>
+ <field name="help"></field>
+ </record>
+
+ <menuitem action="open_product_by_attribute_set" id="open_product_wizard" parent="stock.menu_stock_product" sequence="20"/>
+
+
+ </data>
+</openerp>
=== added directory 'product_electronic'
=== renamed directory 'product_electronic' => 'product_electronic.moved'
=== added file 'product_electronic/__init__.py'
--- product_electronic/__init__.py 1970-01-01 00:00:00 +0000
+++ product_electronic/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,23 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import product_electronic
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_electronic/__terp__.py'
--- product_electronic/__terp__.py 1970-01-01 00:00:00 +0000
+++ product_electronic/__terp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,34 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+{
+ "name" : "Products Attributes & Manufacturers",
+ "version" : "1.0",
+ "author" : "Tiny",
+ "category" : "Enterprise Specific Modules/Electronic Industries",
+ "depends" : ["base", "account", "product", "stock"],
+ "init_xml" : [],
+ "demo_xml" : [],
+ "description": "A module that add manufacturers and attributes on the product form",
+ "update_xml" : ["security/ir.model.access.csv","product_electronic_view.xml"],
+ "active": False,
+ "installable": True
+}
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added directory 'product_electronic/i18n'
=== added file 'product_electronic/i18n/es.po'
--- product_electronic/i18n/es.po 1970-01-01 00:00:00 +0000
+++ product_electronic/i18n/es.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,108 @@
+# Spanish translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2009-11-25 13:27+0000\n"
+"PO-Revision-Date: 2011-08-27 13:45+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Spanish <es@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_electronic
+#: model:ir.module.module,description:product_electronic.module_meta_information
+msgid "A module that add manufacturers and attributes on the product form"
+msgstr ""
+"Un módulo que añade fabricantes y atributos en el formulario de producto"
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pref:0
+msgid "Manufacturer product code"
+msgstr ""
+
+#. module: product_electronic
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "¡XML inválido para la definición de la vista!"
+
+#. module: product_electronic
+#: view:product.electronic.attribute:0
+msgid "Product Template Name"
+msgstr "Nombre de plantilla de producto"
+
+#. module: product_electronic
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+"¡El nombre del objeto debe empezar con x_ y no contener ningún carácter "
+"especial!"
+
+#. module: product_electronic
+#: model:ir.model,name:product_electronic.model_product_electronic_attribute
+msgid "Product attributes"
+msgstr "Atributos de producto"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing data"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product reference"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,name:0
+msgid "Attribute"
+msgstr "Atributo"
+
+#. module: product_electronic
+#: field:product.electronic.attribute,product_id:0
+msgid "Product"
+msgstr "Producto"
+
+#. module: product_electronic
+#: field:product.electronic.attribute,value:0
+msgid "Value"
+msgstr "Valor"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing Data"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product name"
+msgstr "Nombre del producto"
+
+#. module: product_electronic
+#: view:product.product:0
+#: field:product.product,attribute_ids:0
+msgid "Attributes"
+msgstr "Atributos"
+
+#. module: product_electronic
+#: model:ir.module.module,shortdesc:product_electronic.module_meta_information
+msgid "Products Attributes & Manufacturers"
+msgstr "Fabricantes y atributos de los productos"
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pname:0
+msgid "Manufacturer product name"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer:0
+msgid "Manufacturer"
+msgstr "Fabricante"
=== added file 'product_electronic/i18n/et.po'
--- product_electronic/i18n/et.po 1970-01-01 00:00:00 +0000
+++ product_electronic/i18n/et.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,106 @@
+# Estonian translation for openobject-addons
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2009-11-25 13:27+0000\n"
+"PO-Revision-Date: 2010-10-27 08:12+0000\n"
+"Last-Translator: OpenERP Administrators <Unknown>\n"
+"Language-Team: Estonian <et@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_electronic
+#: model:ir.module.module,description:product_electronic.module_meta_information
+msgid "A module that add manufacturers and attributes on the product form"
+msgstr "Moodul, mis lisab tootjad ja atribuudid toote vormi"
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pref:0
+msgid "Manufacturer product code"
+msgstr "Tootja tootekood"
+
+#. module: product_electronic
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "Vigane XML vaate arhitektuurile!"
+
+#. module: product_electronic
+#: view:product.electronic.attribute:0
+msgid "Product Template Name"
+msgstr "Toote Malli nimi"
+
+#. module: product_electronic
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+"Objekti nimi peab algama x_'ga ja ei tohi sisaldada ühtegi erisümbolit !"
+
+#. module: product_electronic
+#: model:ir.model,name:product_electronic.model_product_electronic_attribute
+msgid "Product attributes"
+msgstr "Toote omadused"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing data"
+msgstr "Tootmise andmed"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product reference"
+msgstr "Toote viide"
+
+#. module: product_electronic
+#: field:product.electronic.attribute,name:0
+msgid "Attribute"
+msgstr "Atribuut"
+
+#. module: product_electronic
+#: field:product.electronic.attribute,product_id:0
+msgid "Product"
+msgstr "Toode"
+
+#. module: product_electronic
+#: field:product.electronic.attribute,value:0
+msgid "Value"
+msgstr "Väärtus"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing Data"
+msgstr "Valmistusandmeid"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product name"
+msgstr "Toote nimi"
+
+#. module: product_electronic
+#: view:product.product:0
+#: field:product.product,attribute_ids:0
+msgid "Attributes"
+msgstr "Omadused"
+
+#. module: product_electronic
+#: model:ir.module.module,shortdesc:product_electronic.module_meta_information
+msgid "Products Attributes & Manufacturers"
+msgstr "Toodete Atribuudid & Tootjad"
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pname:0
+msgid "Manufacturer product name"
+msgstr "Toote nimetus"
+
+#. module: product_electronic
+#: field:product.product,manufacturer:0
+msgid "Manufacturer"
+msgstr "Valmistaja"
=== added file 'product_electronic/i18n/fr_BE.po'
--- product_electronic/i18n/fr_BE.po 1970-01-01 00:00:00 +0000
+++ product_electronic/i18n/fr_BE.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,103 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_electronic
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:27:55+0000\n"
+"PO-Revision-Date: 2009-11-25 13:27:55+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_electronic
+#: model:ir.module.module,description:product_electronic.module_meta_information
+msgid "A module that add manufacturers and attributes on the product form"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pref:0
+msgid "Manufacturer product code"
+msgstr ""
+
+#. module: product_electronic
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.electronic.attribute:0
+msgid "Product Template Name"
+msgstr ""
+
+#. module: product_electronic
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: product_electronic
+#: model:ir.model,name:product_electronic.model_product_electronic_attribute
+msgid "Product attributes"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing data"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product reference"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,name:0
+msgid "Attribute"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,value:0
+msgid "Value"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing Data"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product name"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+#: field:product.product,attribute_ids:0
+msgid "Attributes"
+msgstr ""
+
+#. module: product_electronic
+#: model:ir.module.module,shortdesc:product_electronic.module_meta_information
+msgid "Products Attributes & Manufacturers"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pname:0
+msgid "Manufacturer product name"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer:0
+msgid "Manufacturer"
+msgstr ""
+
=== added file 'product_electronic/i18n/it.po'
--- product_electronic/i18n/it.po 1970-01-01 00:00:00 +0000
+++ product_electronic/i18n/it.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,107 @@
+# Italian translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2009-11-25 13:27+0000\n"
+"PO-Revision-Date: 2011-07-22 08:17+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Italian <it@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_electronic
+#: model:ir.module.module,description:product_electronic.module_meta_information
+msgid "A module that add manufacturers and attributes on the product form"
+msgstr "Un modulo che aggiunge produttori e attributi al form del prodotto"
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pref:0
+msgid "Manufacturer product code"
+msgstr ""
+
+#. module: product_electronic
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.electronic.attribute:0
+msgid "Product Template Name"
+msgstr "Nome modello prodotto"
+
+#. module: product_electronic
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+"Il nome dell'oggetto deve iniziare con x_ e non deve contenere alcun "
+"carattere speciale !"
+
+#. module: product_electronic
+#: model:ir.model,name:product_electronic.model_product_electronic_attribute
+msgid "Product attributes"
+msgstr "Attributi prodotto"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing data"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product reference"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,name:0
+msgid "Attribute"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,product_id:0
+msgid "Product"
+msgstr "Prodotto"
+
+#. module: product_electronic
+#: field:product.electronic.attribute,value:0
+msgid "Value"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing Data"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product name"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+#: field:product.product,attribute_ids:0
+msgid "Attributes"
+msgstr ""
+
+#. module: product_electronic
+#: model:ir.module.module,shortdesc:product_electronic.module_meta_information
+msgid "Products Attributes & Manufacturers"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pname:0
+msgid "Manufacturer product name"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer:0
+msgid "Manufacturer"
+msgstr "Produttore"
=== added file 'product_electronic/i18n/mn.po'
--- product_electronic/i18n/mn.po 1970-01-01 00:00:00 +0000
+++ product_electronic/i18n/mn.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,109 @@
+# Mongolian translation for openobject-addons
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2009-11-25 13:27+0000\n"
+"PO-Revision-Date: 2010-08-14 09:14+0000\n"
+"Last-Translator: OpenERP Administrators <Unknown>\n"
+"Language-Team: Mongolian <mn@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_electronic
+#: model:ir.module.module,description:product_electronic.module_meta_information
+msgid "A module that add manufacturers and attributes on the product form"
+msgstr ""
+"Бүтээгдэхүүний дэлгэц дээр үйлдвэрлэгчийн мэдээлэл болон бусад атрибутуу "
+"нэмэх модуль"
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pref:0
+msgid "Manufacturer product code"
+msgstr "Үйлдвэрлэгчийн барааны код"
+
+#. module: product_electronic
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "Дэлгэцийн XML алдаатай!"
+
+#. module: product_electronic
+#: view:product.electronic.attribute:0
+msgid "Product Template Name"
+msgstr "Бүтээгдэхүүний загварын нэр"
+
+#. module: product_electronic
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+"Объектын нэрний эхлэл x_ байх ёстой бөгөөд бусад тусгай тэмдэгтийг агуулж "
+"болохгүй!"
+
+#. module: product_electronic
+#: model:ir.model,name:product_electronic.model_product_electronic_attribute
+msgid "Product attributes"
+msgstr "Барааны атрибутууд"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing data"
+msgstr "Үйлдвэрлэлийн өгөгдөл"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product reference"
+msgstr "Бүтээгдэхүүний ишлэл"
+
+#. module: product_electronic
+#: field:product.electronic.attribute,name:0
+msgid "Attribute"
+msgstr "Аттрибут"
+
+#. module: product_electronic
+#: field:product.electronic.attribute,product_id:0
+msgid "Product"
+msgstr "Бүтээгдэхүүн"
+
+#. module: product_electronic
+#: field:product.electronic.attribute,value:0
+msgid "Value"
+msgstr "Утга"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing Data"
+msgstr "Үйлдвэрлэлийн өгөгдөл"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product name"
+msgstr "Бүтээгдэхүүний нэр"
+
+#. module: product_electronic
+#: view:product.product:0
+#: field:product.product,attribute_ids:0
+msgid "Attributes"
+msgstr "Аттрибутууд"
+
+#. module: product_electronic
+#: model:ir.module.module,shortdesc:product_electronic.module_meta_information
+msgid "Products Attributes & Manufacturers"
+msgstr "Бүтээгдэхүүний Атрибут & Үйлдвэрлэгч"
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pname:0
+msgid "Manufacturer product name"
+msgstr "Үйлдвэрлэгчийн бүтээгдэхүүний нэр"
+
+#. module: product_electronic
+#: field:product.product,manufacturer:0
+msgid "Manufacturer"
+msgstr "Үйлдвэрлэгч"
=== added file 'product_electronic/i18n/nl.po'
--- product_electronic/i18n/nl.po 1970-01-01 00:00:00 +0000
+++ product_electronic/i18n/nl.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,105 @@
+# Dutch translation for openobject-addons
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2009-11-25 13:27+0000\n"
+"PO-Revision-Date: 2010-08-02 11:29+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Dutch <nl@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_electronic
+#: model:ir.module.module,description:product_electronic.module_meta_information
+msgid "A module that add manufacturers and attributes on the product form"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pref:0
+msgid "Manufacturer product code"
+msgstr ""
+
+#. module: product_electronic
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.electronic.attribute:0
+msgid "Product Template Name"
+msgstr ""
+
+#. module: product_electronic
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: product_electronic
+#: model:ir.model,name:product_electronic.model_product_electronic_attribute
+msgid "Product attributes"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing data"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product reference"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,name:0
+msgid "Attribute"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,value:0
+msgid "Value"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing Data"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product name"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+#: field:product.product,attribute_ids:0
+msgid "Attributes"
+msgstr ""
+
+#. module: product_electronic
+#: model:ir.module.module,shortdesc:product_electronic.module_meta_information
+msgid "Products Attributes & Manufacturers"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pname:0
+msgid "Manufacturer product name"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer:0
+msgid "Manufacturer"
+msgstr ""
=== added file 'product_electronic/i18n/product_electronic.pot'
--- product_electronic/i18n/product_electronic.pot 1970-01-01 00:00:00 +0000
+++ product_electronic/i18n/product_electronic.pot 2013-01-17 10:06:27 +0000
@@ -0,0 +1,103 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_electronic
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:27:55+0000\n"
+"PO-Revision-Date: 2009-11-25 13:27:55+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_electronic
+#: model:ir.module.module,description:product_electronic.module_meta_information
+msgid "A module that add manufacturers and attributes on the product form"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pref:0
+msgid "Manufacturer product code"
+msgstr ""
+
+#. module: product_electronic
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.electronic.attribute:0
+msgid "Product Template Name"
+msgstr ""
+
+#. module: product_electronic
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: product_electronic
+#: model:ir.model,name:product_electronic.model_product_electronic_attribute
+msgid "Product attributes"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing data"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product reference"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,name:0
+msgid "Attribute"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,value:0
+msgid "Value"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing Data"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product name"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+#: field:product.product,attribute_ids:0
+msgid "Attributes"
+msgstr ""
+
+#. module: product_electronic
+#: model:ir.module.module,shortdesc:product_electronic.module_meta_information
+msgid "Products Attributes & Manufacturers"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pname:0
+msgid "Manufacturer product name"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer:0
+msgid "Manufacturer"
+msgstr ""
+
=== added file 'product_electronic/i18n/sl.po'
--- product_electronic/i18n/sl.po 1970-01-01 00:00:00 +0000
+++ product_electronic/i18n/sl.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,106 @@
+# Slovenian translation for openobject-addons
+# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2009-11-25 13:27+0000\n"
+"PO-Revision-Date: 2010-08-31 08:24+0000\n"
+"Last-Translator: OpenERP Administrators <Unknown>\n"
+"Language-Team: Slovenian <sl@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_electronic
+#: model:ir.module.module,description:product_electronic.module_meta_information
+msgid "A module that add manufacturers and attributes on the product form"
+msgstr "Modul, ki doda proizvajalce in atribute v obrazec produkta"
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pref:0
+msgid "Manufacturer product code"
+msgstr "Koda produkta proizvajalca"
+
+#. module: product_electronic
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "Neveljaven XML za arhitekturo pogleda!"
+
+#. module: product_electronic
+#: view:product.electronic.attribute:0
+msgid "Product Template Name"
+msgstr "Ime predloge produkta"
+
+#. module: product_electronic
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+"Naziv objekta se mora začeti z 'x_' in ne sme vsebovati posebnih znakov!"
+
+#. module: product_electronic
+#: model:ir.model,name:product_electronic.model_product_electronic_attribute
+msgid "Product attributes"
+msgstr "Atributi produkta"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing data"
+msgstr "Podatki proizvodnje"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product reference"
+msgstr "Referenca produkta"
+
+#. module: product_electronic
+#: field:product.electronic.attribute,name:0
+msgid "Attribute"
+msgstr "Lastnost"
+
+#. module: product_electronic
+#: field:product.electronic.attribute,product_id:0
+msgid "Product"
+msgstr "Proizvod"
+
+#. module: product_electronic
+#: field:product.electronic.attribute,value:0
+msgid "Value"
+msgstr "Vrednost"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing Data"
+msgstr "Podatki proizvodnje"
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product name"
+msgstr "Ime proizvoda"
+
+#. module: product_electronic
+#: view:product.product:0
+#: field:product.product,attribute_ids:0
+msgid "Attributes"
+msgstr "Lastnosti"
+
+#. module: product_electronic
+#: model:ir.module.module,shortdesc:product_electronic.module_meta_information
+msgid "Products Attributes & Manufacturers"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pname:0
+msgid "Manufacturer product name"
+msgstr "Proizvajalčevo ime produkta"
+
+#. module: product_electronic
+#: field:product.product,manufacturer:0
+msgid "Manufacturer"
+msgstr "Proizvajalec"
=== added file 'product_electronic/i18n/sv.po'
--- product_electronic/i18n/sv.po 1970-01-01 00:00:00 +0000
+++ product_electronic/i18n/sv.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,104 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_electronic
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.14\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:27+0000\n"
+"PO-Revision-Date: 2010-11-23 01:06+0000\n"
+"Last-Translator: Olivier Dony (OpenERP) <Unknown>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_electronic
+#: model:ir.module.module,description:product_electronic.module_meta_information
+msgid "A module that add manufacturers and attributes on the product form"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pref:0
+msgid "Manufacturer product code"
+msgstr ""
+
+#. module: product_electronic
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.electronic.attribute:0
+msgid "Product Template Name"
+msgstr ""
+
+#. module: product_electronic
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: product_electronic
+#: model:ir.model,name:product_electronic.model_product_electronic_attribute
+msgid "Product attributes"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing data"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product reference"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,name:0
+msgid "Attribute"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.electronic.attribute,value:0
+msgid "Value"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Manufacturing Data"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+msgid "Product name"
+msgstr ""
+
+#. module: product_electronic
+#: view:product.product:0
+#: field:product.product,attribute_ids:0
+msgid "Attributes"
+msgstr ""
+
+#. module: product_electronic
+#: model:ir.module.module,shortdesc:product_electronic.module_meta_information
+msgid "Products Attributes & Manufacturers"
+msgstr "Products Attributes & Manufacturers"
+
+#. module: product_electronic
+#: field:product.product,manufacturer_pname:0
+msgid "Manufacturer product name"
+msgstr ""
+
+#. module: product_electronic
+#: field:product.product,manufacturer:0
+msgid "Manufacturer"
+msgstr ""
=== added file 'product_electronic/product_electronic.py'
--- product_electronic/product_electronic.py 1970-01-01 00:00:00 +0000
+++ product_electronic/product_electronic.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,59 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from osv import fields,osv
+
+class product_product(osv.osv):
+ _inherit = 'product.product'
+ _name = 'product.product'
+ _columns = {
+ 'attribute_ids': fields.one2many('product.electronic.attribute', 'product_id', 'Attributes'),
+ 'manufacturer_ids': fields.one2many('res.partner.manufacturer', 'product_id', 'Manufacturers'),
+ }
+product_product()
+
+class res_partner_manufacturer(osv.osv):
+ _name = 'res.partner.manufacturer'
+ _rec_name = 'manufacturer_id'
+ _columns = {
+ 'manufacturer_id' : fields.many2one('res.partner', 'Manufacturer'),
+ 'country_id' : fields.many2one('res.country', 'Country'),
+ 'authorized' : fields.boolean('Authorized'),
+ 'product_id': fields.many2one('product.product', 'Product', ondelete='cascade'),
+ }
+ _defaults = {
+ 'authorized': lambda *a: True,
+ }
+
+res_partner_manufacturer()
+
+class product_attribute(osv.osv):
+ _name = "product.electronic.attribute"
+ _description = "Product attributes"
+ _columns = {
+ 'name' : fields.char('Attribute', size=64, required=True),
+ 'value' : fields.char('Value', size=64),
+ 'product_id': fields.many2one('product.product', 'Product', ondelete='cascade'),
+ }
+product_attribute()
+
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_electronic/product_electronic_view.xml'
--- product_electronic/product_electronic_view.xml 1970-01-01 00:00:00 +0000
+++ product_electronic/product_electronic_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,72 @@
+<?xml version="1.0" ?>
+<openerp>
+ <data>
+
+ <record model="ir.ui.view" id="view_product_form_expiry">
+ <field name="name">product.normal.form</field>
+ <field name="model">product.product</field>
+ <field name="inherit_id" ref="product.product_normal_form_view" />
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <notebook position="inside">
+ <page string="Manufacturing Data">
+ <separator string="Manufacturing data" colspan="4" />
+ <field name="manufacturer_ids" colspan="4" nolabel="1" widget="one2many_list"/>
+
+ <separator string="Attributes" colspan="4"/>
+ <field name="attribute_ids" colspan="4" nolabel="1" widget="one2many_list" />
+ </page>
+ </notebook>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="product_electronic_attribute_tree_view">
+ <field name="name">product.electronic.attribute.tree</field>
+ <field name="model">product.electronic.attribute</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Product Template Name">
+ <field name="name"/>
+ <field name="value"/>
+ </tree>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="product_electronic_attribute_form_view">
+ <field name="name">product.electronic.attribute.form</field>
+ <field name="model">product.electronic.attribute</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Product Template Name">
+ <field name="name" select="1"/>
+ <field name="value" select="1"/>
+ </form>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="product_electronic_manufact_tree_view">
+ <field name="name">res.partner.manufacturer.tree</field>
+ <field name="model">res.partner.manufacturer</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Manufacturers" editable="top">
+ <field name="manufacturer_id"/>
+ <field name="country_id"/>
+ <field name="authorized"/>
+ </tree>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="product_electronic_manufa_form_view">
+ <field name="name">res.partner.manufacturer.form</field>
+ <field name="model">res.partner.manufacturer</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Manufacturers">
+ <field name="manufacturer_id" colspan="4"/>
+ <field name="country_id"/>
+ <field name="authorized"/>
+ </form>
+ </field>
+ </record>
+ </data>
+</openerp>
+
=== added directory 'product_electronic/security'
=== added file 'product_electronic/security/ir.model.access.csv'
--- product_electronic/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
+++ product_electronic/security/ir.model.access.csv 2013-01-17 10:06:27 +0000
@@ -0,0 +1,3 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_product_electronic_attribute","product.electronic.attribute","model_product_electronic_attribute","product.group_uos",1,0,0,0
+"access_product_electronic_attribute_manager","product.electronic.attribute","model_product_electronic_attribute","product.group_product_manager",1,1,1,1
=== added directory 'product_extended'
=== renamed directory 'product_extended' => 'product_extended.moved'
=== added file 'product_extended/__init__.py'
--- product_extended/__init__.py 1970-01-01 00:00:00 +0000
+++ product_extended/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,23 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+import product_extended
+import mrp_bom
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added directory 'product_extended/i18n'
=== added file 'product_extended/i18n/ca.po'
--- product_extended/i18n/ca.po 1970-01-01 00:00:00 +0000
+++ product_extended/i18n/ca.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,62 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_extended
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.1\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-07-08 18:00+0000\n"
+"PO-Revision-Date: 2011-02-15 15:23+0000\n"
+"Last-Translator: Benjamí Borràs Delgado <Unknown>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-09-25 05:02+0000\n"
+"X-Generator: Launchpad (build 16019)\n"
+
+#. module: product_extended
+#: model:ir.module.module,shortdesc:product_extended.module_name_translation
+msgid "Product extension to track sales and purchases"
+msgstr "Extensió de producte pel seguiment de compres i vendes"
+
+#. module: product_extended
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "XML invàlid per a la definició de la vista!"
+
+#. module: product_extended
+#: field:mrp.bom,standard_price:0
+msgid "Standard Price"
+msgstr "Preu cost"
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order_date:0
+msgid "Last Order date"
+msgstr "Data de l'última comanda"
+
+#. module: product_extended
+#: field:product.product,qty_dispo:0
+msgid "Stock available"
+msgstr "Estoc disponible"
+
+#. module: product_extended
+#: field:product.product,calculate_price:0
+msgid "Compute price"
+msgstr "Calcula preu"
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order:0
+msgid "Last Order"
+msgstr "Última comanda"
+
+#. module: product_extended
+#: view:product.product:0
+msgid "Compute standard price"
+msgstr "Calcular preu cost"
+
+#. module: product_extended
+#: field:product.product,orderpoint_ids:0
+msgid "Orderpoints"
+msgstr "Punts de comandes"
=== added file 'product_extended/i18n/ca_ES.po'
--- product_extended/i18n/ca_ES.po 1970-01-01 00:00:00 +0000
+++ product_extended/i18n/ca_ES.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,81 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_extended
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.1\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-07-16 19:42:46+0000\n"
+"PO-Revision-Date: 2009-07-16 22:03+0100\n"
+"Last-Translator: Benjamí Borràs Delgado <benjami@xxxxxxxxxxxxxxx>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: \n"
+
+#. module: product_extended
+#: model:ir.module.module,description:product_extended.module_meta_information
+msgid ""
+"\n"
+"Product extension. This module adds:\n"
+" * Last purchase order for each product supplier \n"
+" * New functional field: Available stock (real+outgoing stock)\n"
+" * Computes standard price from the BoM of the product (optional for each product)\n"
+" * Standard price is shown in the BoM and it can be computed with a wizard \n"
+msgstr ""
+"\n"
+"Extensió de producte. Aquest mòdul afegeix:\n"
+" * Última comanda de compra per cada proveïdor del producte\n"
+" * Nou camp funcional: Estoc disponible (estoc real+sortint)\n"
+" * Calcula preu de cost a partir de la LdM del producte (opcional per cada producte)\n"
+" * Preu de cost es mostra en la LdM i pot ser calculat amb un assistent\n"
+
+#. module: product_extended
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "XML invàlid per a la definició de la vista!"
+
+#. module: product_extended
+#: field:mrp.bom,standard_price:0
+msgid "Standard Price"
+msgstr "Preu cost"
+
+#. module: product_extended
+#: model:ir.module.module,shortdesc:product_extended.module_meta_information
+msgid "Product extension to track sales and purchases"
+msgstr "Extensió de producte pel seguiment de compres i vendes"
+
+#. module: product_extended
+#: help:product.product,calculate_price:0
+msgid "Check this box if the standard price must be computed from the BoM."
+msgstr "Marqueu aquesta opció si el preu de cost s'ha de calcular a partir de la Llista de Materials."
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order_date:0
+msgid "Last Order date"
+msgstr "Data de l'última comanda"
+
+#. module: product_extended
+#: field:product.product,qty_dispo:0
+msgid "Stock available"
+msgstr "Estoc disponible"
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order:0
+msgid "Last Order"
+msgstr "Última comanda"
+
+#. module: product_extended
+#: model:ir.actions.wizard,name:product_extended.id_compute_price
+#: view:product.product:0
+#: field:product.product,calculate_price:0
+msgid "Compute standard price"
+msgstr "Calcular preu cost"
+
+#. module: product_extended
+#: field:product.product,orderpoint_ids:0
+msgid "Orderpoints"
+msgstr "Punts de comandes"
+
=== added file 'product_extended/i18n/de.po'
--- product_extended/i18n/de.po 1970-01-01 00:00:00 +0000
+++ product_extended/i18n/de.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,63 @@
+# German translation for openobject-addons
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2009-07-08 18:00+0000\n"
+"PO-Revision-Date: 2012-09-11 11:15+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: German <de@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-09-25 05:02+0000\n"
+"X-Generator: Launchpad (build 16019)\n"
+
+#. module: product_extended
+#: model:ir.module.module,shortdesc:product_extended.module_name_translation
+msgid "Product extension to track sales and purchases"
+msgstr ""
+
+#. module: product_extended
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_extended
+#: field:mrp.bom,standard_price:0
+msgid "Standard Price"
+msgstr ""
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order_date:0
+msgid "Last Order date"
+msgstr ""
+
+#. module: product_extended
+#: field:product.product,qty_dispo:0
+msgid "Stock available"
+msgstr ""
+
+#. module: product_extended
+#: field:product.product,calculate_price:0
+msgid "Compute price"
+msgstr ""
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order:0
+msgid "Last Order"
+msgstr ""
+
+#. module: product_extended
+#: view:product.product:0
+msgid "Compute standard price"
+msgstr ""
+
+#. module: product_extended
+#: field:product.product,orderpoint_ids:0
+msgid "Orderpoints"
+msgstr ""
=== added file 'product_extended/i18n/es.po'
--- product_extended/i18n/es.po 1970-01-01 00:00:00 +0000
+++ product_extended/i18n/es.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,62 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_extended
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.1\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-07-08 18:00+0000\n"
+"PO-Revision-Date: 2011-02-15 15:23+0000\n"
+"Last-Translator: Benjamí Borràs Delgado <Unknown>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-09-25 05:02+0000\n"
+"X-Generator: Launchpad (build 16019)\n"
+
+#. module: product_extended
+#: model:ir.module.module,shortdesc:product_extended.module_name_translation
+msgid "Product extension to track sales and purchases"
+msgstr "Extensión de producto para el seguimiento de compras y ventas"
+
+#. module: product_extended
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "¡XML inválido para la definición de la vista!"
+
+#. module: product_extended
+#: field:mrp.bom,standard_price:0
+msgid "Standard Price"
+msgstr "Precio de coste"
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order_date:0
+msgid "Last Order date"
+msgstr "Fecha del último pedido"
+
+#. module: product_extended
+#: field:product.product,qty_dispo:0
+msgid "Stock available"
+msgstr "Stock disponible"
+
+#. module: product_extended
+#: field:product.product,calculate_price:0
+msgid "Compute price"
+msgstr "Calcular precio"
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order:0
+msgid "Last Order"
+msgstr "Último pedido"
+
+#. module: product_extended
+#: view:product.product:0
+msgid "Compute standard price"
+msgstr "Calcular precio de coste"
+
+#. module: product_extended
+#: field:product.product,orderpoint_ids:0
+msgid "Orderpoints"
+msgstr "Puntos de pedidos"
=== added file 'product_extended/i18n/es_ES.po'
--- product_extended/i18n/es_ES.po 1970-01-01 00:00:00 +0000
+++ product_extended/i18n/es_ES.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,84 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_extended
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.1\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-07-16 19:42:46+0000\n"
+"PO-Revision-Date: 2009-07-16 21:58+0100\n"
+"Last-Translator: Benjamí Borràs Delgado <benjami@xxxxxxxxxxxxxxx>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: \n"
+
+#. module: product_extended
+#: model:ir.module.module,description:product_extended.module_meta_information
+msgid ""
+"\n"
+"Product extension. This module adds:\n"
+" * Last purchase order for each product supplier \n"
+" * New functional field: Available stock (real+outgoing stock)\n"
+" * Computes standard price from the BoM of the product (optional for each product)\n"
+" * Standard price is shown in the BoM and it can be computed with a wizard \n"
+msgstr ""
+"\n"
+"Extensión de producto. Este módulo añade:\n"
+" * Último pedido de compra por cada proveedor del producto\n"
+" * Nuevo campo funcional: Stock disponible (stock real + saliente)\n"
+" * Calcula precio de coste a partir de la LdM del producto (opcional para cada producto)\n"
+" * Precio de coste se muestra en la LdM y puede ser calculado con un asistente\n"
+
+#. module: product_extended
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "¡XML inválido para la definición de la vista!"
+
+#. module: product_extended
+#: field:mrp.bom,standard_price:0
+msgid "Standard Price"
+msgstr "Precio de coste"
+
+#. module: product_extended
+#: model:ir.module.module,shortdesc:product_extended.module_meta_information
+msgid "Product extension to track sales and purchases"
+msgstr "Extensión de producto para el seguimiento de compras y ventas"
+
+#. module: product_extended
+#: help:product.product,calculate_price:0
+msgid "Check this box if the standard price must be computed from the BoM."
+msgstr "Marque esta opción si el precio de coste se calculará a partir de la Lista de Materiales."
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order_date:0
+msgid "Last Order date"
+msgstr "Fecha del último pedido"
+
+#. module: product_extended
+#: field:product.product,qty_dispo:0
+msgid "Stock available"
+msgstr "Stock disponible"
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order:0
+msgid "Last Order"
+msgstr "Último pedido"
+
+#. module: product_extended
+#: model:ir.actions.wizard,name:product_extended.id_compute_price
+#: view:product.product:0
+#: field:product.product,calculate_price:0
+msgid "Compute standard price"
+msgstr "Calcular precio de coste"
+
+#. module: product_extended
+#: field:product.product,orderpoint_ids:0
+msgid "Orderpoints"
+msgstr "Puntos de pedidos"
+
+#~ msgid "Compute price"
+#~ msgstr "Calcular precio"
+
=== added file 'product_extended/i18n/fr_BE.po'
--- product_extended/i18n/fr_BE.po 1970-01-01 00:00:00 +0000
+++ product_extended/i18n/fr_BE.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,75 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_extended
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-26 08:13:54+0000\n"
+"PO-Revision-Date: 2009-11-26 08:13:54+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_extended
+#: model:ir.module.module,description:product_extended.module_meta_information
+msgid "\n"
+"Product extension. This module adds:\n"
+" * Last purchase order for each product supplier \n"
+" * New functional field: Available stock (real+outgoing stock)\n"
+" * Computes standard price from the BoM of the product (optional for each product)\n"
+" * Standard price is shown in the BoM and it can be computed with a wizard \n"
+""
+msgstr ""
+
+#. module: product_extended
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_extended
+#: field:mrp.bom,standard_price:0
+msgid "Standard Price"
+msgstr ""
+
+#. module: product_extended
+#: model:ir.module.module,shortdesc:product_extended.module_meta_information
+msgid "Product extension to track sales and purchases"
+msgstr ""
+
+#. module: product_extended
+#: help:product.product,calculate_price:0
+msgid "Check this box if the standard price must be computed from the BoM."
+msgstr ""
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order_date:0
+msgid "Last Order date"
+msgstr ""
+
+#. module: product_extended
+#: field:product.product,qty_dispo:0
+msgid "Stock available"
+msgstr ""
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order:0
+msgid "Last Order"
+msgstr ""
+
+#. module: product_extended
+#: model:ir.actions.wizard,name:product_extended.id_compute_price
+#: view:product.product:0
+#: field:product.product,calculate_price:0
+msgid "Compute standard price"
+msgstr ""
+
+#. module: product_extended
+#: field:product.product,orderpoint_ids:0
+msgid "Orderpoints"
+msgstr ""
+
=== added file 'product_extended/i18n/nl.po'
--- product_extended/i18n/nl.po 1970-01-01 00:00:00 +0000
+++ product_extended/i18n/nl.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,63 @@
+# Dutch translation for openobject-addons
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2009-07-08 18:00+0000\n"
+"PO-Revision-Date: 2012-04-05 10:22+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Dutch <nl@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-09-25 05:02+0000\n"
+"X-Generator: Launchpad (build 16019)\n"
+
+#. module: product_extended
+#: model:ir.module.module,shortdesc:product_extended.module_name_translation
+msgid "Product extension to track sales and purchases"
+msgstr "Productgegevens uitbreiding"
+
+#. module: product_extended
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "Ongeldige XML voor weergave opbouw!"
+
+#. module: product_extended
+#: field:mrp.bom,standard_price:0
+msgid "Standard Price"
+msgstr "Standaardprijs"
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order_date:0
+msgid "Last Order date"
+msgstr "Laatste orderdatum"
+
+#. module: product_extended
+#: field:product.product,qty_dispo:0
+msgid "Stock available"
+msgstr "Voorraad beschikbaar"
+
+#. module: product_extended
+#: field:product.product,calculate_price:0
+msgid "Compute price"
+msgstr "Bereken kostprijs"
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order:0
+msgid "Last Order"
+msgstr "Laatste order"
+
+#. module: product_extended
+#: view:product.product:0
+msgid "Compute standard price"
+msgstr "Bereken standaard prijs"
+
+#. module: product_extended
+#: field:product.product,orderpoint_ids:0
+msgid "Orderpoints"
+msgstr "Orderpunten"
=== added file 'product_extended/i18n/product_extended.pot'
--- product_extended/i18n/product_extended.pot 1970-01-01 00:00:00 +0000
+++ product_extended/i18n/product_extended.pot 2013-01-17 10:06:27 +0000
@@ -0,0 +1,62 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_extended
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.1\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-07-08 18:00:36+0000\n"
+"PO-Revision-Date: 2009-07-08 18:00:36+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_extended
+#: model:ir.module.module,shortdesc:product_extended.module_name_translation
+msgid "Product extension to track sales and purchases"
+msgstr ""
+
+#. module: product_extended
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_extended
+#: field:mrp.bom,standard_price:0
+msgid "Standard Price"
+msgstr ""
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order_date:0
+msgid "Last Order date"
+msgstr ""
+
+#. module: product_extended
+#: field:product.product,qty_dispo:0
+msgid "Stock available"
+msgstr ""
+
+#. module: product_extended
+#: field:product.product,calculate_price:0
+msgid "Compute price"
+msgstr ""
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order:0
+msgid "Last Order"
+msgstr ""
+
+#. module: product_extended
+#: view:product.product:0
+msgid "Compute standard price"
+msgstr ""
+
+#. module: product_extended
+#: field:product.product,orderpoint_ids:0
+msgid "Orderpoints"
+msgstr ""
+
=== added file 'product_extended/i18n/sv.po'
--- product_extended/i18n/sv.po 1970-01-01 00:00:00 +0000
+++ product_extended/i18n/sv.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,62 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_extended
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.14\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-07-08 18:00+0000\n"
+"PO-Revision-Date: 2011-02-15 15:23+0000\n"
+"Last-Translator: Olivier Dony (OpenERP) <Unknown>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-09-25 05:02+0000\n"
+"X-Generator: Launchpad (build 16019)\n"
+
+#. module: product_extended
+#: model:ir.module.module,shortdesc:product_extended.module_name_translation
+msgid "Product extension to track sales and purchases"
+msgstr "Product extension to track sales and purchases"
+
+#. module: product_extended
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_extended
+#: field:mrp.bom,standard_price:0
+msgid "Standard Price"
+msgstr ""
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order_date:0
+msgid "Last Order date"
+msgstr ""
+
+#. module: product_extended
+#: field:product.product,qty_dispo:0
+msgid "Stock available"
+msgstr ""
+
+#. module: product_extended
+#: field:product.product,calculate_price:0
+msgid "Compute price"
+msgstr ""
+
+#. module: product_extended
+#: field:product.supplierinfo,last_order:0
+msgid "Last Order"
+msgstr ""
+
+#. module: product_extended
+#: view:product.product:0
+msgid "Compute standard price"
+msgstr ""
+
+#. module: product_extended
+#: field:product.product,orderpoint_ids:0
+msgid "Orderpoints"
+msgstr ""
=== added file 'product_extended/mrp_view.xml'
--- product_extended/mrp_view.xml 1970-01-01 00:00:00 +0000
+++ product_extended/mrp_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+ <record id="mrp_bom_form_view_product_extended" model="ir.ui.view">
+ <field name="name">mrp.bom.form.product_extended</field>
+ <field name="model">mrp.bom</field>
+ <field name="type">form</field>
+ <field name="inherit_id" ref="mrp.mrp_bom_form_view"/>
+ <field name="arch" type="xml">
+ <field name="product_id" position="after">
+ <field name="standard_price"/>
+ <button name="compute_cost_price" type="object" string="Compute price" icon="gtk-execute"/>
+ <newline/>
+ </field>
+ </field>
+ </record>
+
+ <record id="mrp_bom_tree_view_product_extended" model="ir.ui.view">
+ <field name="name">mrp.bom.tree.product_extended</field>
+ <field name="model">mrp.bom</field>
+ <field name="type">tree</field>
+ <field name="inherit_id" ref="mrp.mrp_bom_tree_view"/>
+ <field name="arch" type="xml">
+ <field name="product_uom" position="after">
+ <field name="standard_price"/>
+ </field>
+ </field>
+ </record>
+ </data>
+</openerp>
=== added file 'product_extended/product_extended.py'
--- product_extended/product_extended.py 1970-01-01 00:00:00 +0000
+++ product_extended/product_extended.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,148 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+# Copyright (C) 2010-2011 OpenERP S.A. (<http://www.openerp.com>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from osv import fields
+from osv import osv
+
+class product_supplierinfo(osv.osv):
+ _inherit = 'product.supplierinfo'
+ _name = "product.supplierinfo"
+
+ def _last_order(self, cr, uid, ids, name, arg, context=None):
+ res = dict.fromkeys(ids, False)
+ for supinfo in self.browse(cr, uid, ids, context=context):
+ cr.execute("select po.id, max(po.date_approve) from purchase_order as po, purchase_order_line as line where po.id=line.order_id and line.product_id=%s and po.partner_id=%s and po.state='approved' group by po.id", (supinfo.product_id.id, supinfo.name.id,))
+ record = cr.fetchone()
+ if record:
+ res[supinfo.id] = record[0]
+ return res
+
+ def _last_order_date(self, cr, uid, ids, name, arg, context):
+ res = dict.fromkeys(ids, False)
+ po = self.pool.get('purchase.order')
+ last_orders = self._last_order(cr, uid, ids, name, arg, context)
+ dates = po.read(cr, uid, filter(None, last_orders.values()), ['date_approve'])
+ for suppinfo in ids:
+ date_approve = [x['date_approve'] for x in dates if x['id']==last_orders[suppinfo]]
+ if date_approve:
+ res[suppinfo] = date_approve[0]
+ return res
+
+ _columns = {
+ 'last_order' : fields.function(_last_order, type='many2one', obj='purchase.order', method=True, string='Last Order'),
+ 'last_order_date' : fields.function(_last_order_date, type='date', method=True, string='Last Order date'),
+ }
+product_supplierinfo()
+
+
+class product_product(osv.osv):
+ _name = 'product.product'
+ _inherit = 'product.product'
+
+ def _find_op(self, cr, uid, ids, name, arg, context):
+ res = dict.fromkeys(ids, False)
+ for product_id in ids:
+ cr.execute('SELECT swo.id from stock_warehouse_orderpoint AS swo WHERE product_id=%s', (product_id,))
+ op_id = cr.fetchone()
+ if op_id:
+ res[product_id] = op_id[0]
+ return res
+
+ def _product_dispo(self, cr, uid, ids, name, arg, context={}):
+ res = {}
+ out = self._product_outgoing_qty(cr, uid, ids, name, arg, context)
+ now = self._product_qty_available(cr, uid, ids, name, arg, context)
+ for p_id in ids:
+ res[p_id] = now[p_id] + out[p_id]
+ return res
+
+
+ _columns = {
+ 'calculate_price': fields.boolean('Compute standard price', help="Check this box if the standard price must be computed from the BoM."),
+ 'orderpoint_ids': fields.one2many('stock.warehouse.orderpoint', 'product_id', 'Orderpoints'),
+ 'qty_dispo': fields.function(_product_dispo, method=True, type='float', string='Stock available'),
+ }
+
+ _defaults = {
+ 'calculate_price': lambda w,x,y,z: False,
+ }
+
+ def compute_price(self, cr, uid, ids, context=None):
+ if context is None: context = {}
+ proxy = self.pool.get('mrp.bom')
+ for prod_id in ids:
+ bom_ids = proxy.search(cr, uid, [('product_id', '=', prod_id)])
+ if bom_ids:
+ for bom in proxy.browse(cr, uid, bom_ids):
+ self._calc_price(cr, uid, bom)
+ return True
+
+ def _calc_price(self, cr, uid, bom):
+ if not bom.product_id.calculate_price:
+ return bom.product_id.standard_price
+ else:
+ price = 0
+ if bom.bom_lines:
+ for sbom in bom.bom_lines:
+ my_qty = sbom.bom_lines and 1.0 or sbom.product_qty
+ price += self._calc_price(cr, uid, sbom) * my_qty
+ else:
+ bom_obj = self.pool.get('mrp.bom')
+ no_child_bom = bom_obj.search(cr, uid, [('product_id', '=', bom.product_id.id), ('bom_id', '=', False)])
+ if no_child_bom and bom.id not in no_child_bom:
+ other_bom = bom_obj.browse(cr, uid, no_child_bom)[0]
+ if not other_bom.product_id.calculate_price:
+ price += self._calc_price(cr, uid, other_bom) * other_bom.product_qty
+ else:
+# price += other_bom.product_qty * other_bom.product_id.standard_price
+ price += other_bom.product_id.standard_price
+ else:
+# price += bom.product_qty * bom.product_id.standard_price
+ price += bom.product_id.standard_price
+# if no_child_bom:
+# other_bom = bom_obj.browse(cr, uid, no_child_bom)[0]
+# price += bom.product_qty * self._calc_price(cr, uid, other_bom)
+# else:
+# price += bom.product_qty * bom.product_id.standard_price
+ if bom.routing_id:
+ for wline in bom.routing_id.workcenter_lines:
+ wc = wline.workcenter_id
+ cycle = wline.cycle_nbr
+ hour = (wc.time_start + wc.time_stop + cycle * wc.time_cycle) * (wc.time_efficiency or 1.0)
+ price += wc.costs_cycle * cycle + wc.costs_hour * hour
+ price = self.pool.get('product.uom')._compute_price(cr,uid,bom.product_uom.id,price,bom.product_id.uom_id.id)
+ if bom.bom_lines:
+ self.write(cr, uid, [bom.product_id.id], {'standard_price' : price/bom.product_qty})
+ if bom.product_uom.id != bom.product_id.uom_id.id:
+ price = self.pool.get('product.uom')._compute_price(cr,uid,bom.product_uom.id,price,bom.product_id.uom_id.id)
+ return price
+product_product()
+
+class product_bom(osv.osv):
+ _inherit = 'mrp.bom'
+
+ _columns = {
+ 'standard_price': fields.related('product_id','standard_price',type="float",relation="product.product",string="Standard Price",store=False)
+ }
+
+product_bom()
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_extended/product_extended_view.xml'
--- product_extended/product_extended_view.xml 1970-01-01 00:00:00 +0000
+++ product_extended/product_extended_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<openerp>
+ <data>
+ <record model="ir.ui.view" id="product_supplierinfo_ext_form_view">
+ <field name="name">product_extended.supplierinfo.form.view</field>
+ <field name="type">form</field>
+ <field name="model">product.supplierinfo</field>
+ <field name="inherit_id" ref="product.product_supplierinfo_form_view" />
+ <field name="arch" type="xml">
+ <field name="sequence" position="after">
+ <field name="last_order" colspan="4"/>
+ </field>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="product_supplierinfo_ext_tree_view">
+ <field name="name">product_extended.supplierinfo.tree.view</field>
+ <field name="type">tree</field>
+ <field name="model">product.supplierinfo</field>
+ <field name="inherit_id" ref="product.product_supplierinfo_tree_view" />
+ <field name="arch" type="xml">
+ <field name="name" position="after">
+ <field name="last_order_date" />
+ </field>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="product_product_ext_form_view">
+ <field name="name">product_extended.product.form.view</field>
+ <field name="type">form</field>
+ <field name="model">product.product</field>
+ <field name="priority">2</field>
+ <field name="inherit_id" ref="stock.view_normal_stock_property_form" />
+ <field name="arch" type="xml">
+ <field name="virtual_available" position="after">
+ <field name="qty_dispo" />
+ </field>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="product_product_ext_form_view2">
+ <field name="name">product_extended.product.form.view</field>
+ <field name="model">product.product</field>
+ <field name="type">form</field>
+ <field name="priority">3</field>
+ <field name="inherit_id" ref="product.product_normal_form_view" />
+ <field name="arch" type="xml">
+ <field name="seller_ids" position="before">
+ <field name="calculate_price" />
+ <button name="compute_price" type="object" string="Compute standard price"/>
+ </field>
+ </field>
+ </record>
+ </data>
+</openerp>
+
=== added directory 'product_gift'
=== renamed directory 'product_gift' => 'product_gift.moved'
=== added file 'product_gift/__init__.py'
--- product_gift/__init__.py 1970-01-01 00:00:00 +0000
+++ product_gift/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,26 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+# #
+# product_is_a_gift for OpenERP #
+# Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+#################################################################################
+
+
+
+import stock
+import product
+import sale
=== added file 'product_gift/__openerp__.py'
--- product_gift/__openerp__.py 1970-01-01 00:00:00 +0000
+++ product_gift/__openerp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,42 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+# #
+# product_is_a_gift for OpenERP #
+# Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+#################################################################################
+
+
+{
+ 'name': 'product_gift',
+ 'version': '6.1.0',
+ 'category': 'Generic Modules',
+ 'license': 'AGPL-3',
+ 'description': """This module adds the gift_wrap feature and gives the possibility to add a gift message on the order or the order line.""",
+ 'author': 'Akretion',
+ 'website': 'http://www.akretion.com/',
+ 'depends': ['sale','product', 'stock'],
+ 'init_xml': [],
+ 'update_xml': [
+ 'stock_view.xml',
+ 'product_view.xml',
+ 'sale_view.xml',
+ ],
+ 'demo_xml': [],
+ 'installable': True,
+ 'active': False,
+}
+
=== added directory 'product_gift/autoload'
=== added directory 'product_gift/autoload/magentoerpconnect'
=== added directory 'product_gift/autoload/magentoerpconnect/1.3.2.4'
=== added file 'product_gift/autoload/magentoerpconnect/1.3.2.4/external.mappinglines.template.csv'
--- product_gift/autoload/magentoerpconnect/1.3.2.4/external.mappinglines.template.csv 1970-01-01 00:00:00 +0000
+++ product_gift/autoload/magentoerpconnect/1.3.2.4/external.mappinglines.template.csv 2013-01-17 10:06:27 +0000
@@ -0,0 +1,3 @@
+id,type_id:id,model_id:id,external_field,type,external_type,in_function,out_function
+mag_1324_erp_product_is_gift_1,magentoerpconnect.magento1324,sale.model_sale_order,gift_message,in,unicode,"result=[('gift_message',ifield)]",
+mag_1324_erp_product_is_gift_2,magentoerpconnect.magento1324,sale.model_sale_order_line,product_options,in,unicode,"result=[('need_gift_wrap', 'Option Cadeau' in ifield)]",
=== added directory 'product_gift/autoload/magentoerpconnect/1.5.0.0'
=== added file 'product_gift/autoload/magentoerpconnect/1.5.0.0/external.mappinglines.template.csv'
--- product_gift/autoload/magentoerpconnect/1.5.0.0/external.mappinglines.template.csv 1970-01-01 00:00:00 +0000
+++ product_gift/autoload/magentoerpconnect/1.5.0.0/external.mappinglines.template.csv 2013-01-17 10:06:27 +0000
@@ -0,0 +1,3 @@
+id,type_id:id,model_id:id,external_field,type,external_type,in_function,out_function
+mag_1500_erp_product_is_gift_1,magentoerpconnect.magento1500,sale.model_sale_order,gift_message,in,unicode,"result=[('gift_message',ifield)]",
+mag_1500_erp_product_is_gift_2,magentoerpconnect.magento1500,sale.model_sale_order_line,product_options,in,unicode,"result=[('need_gift_wrap', 'Option Cadeau' in ifield)]",
=== added file 'product_gift/product.py'
--- product_gift/product.py 1970-01-01 00:00:00 +0000
+++ product_gift/product.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,33 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+# #
+# product_is_a_gift for OpenERP #
+# Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+#################################################################################
+
+from openerp.osv.orm import Model
+from openerp.osv import fields
+
+
+class product_product(Model):
+ _inherit = "product.product"
+ _columns = {
+ 'allow_gift_wrap': fields.boolean('Allow Gift Wrap', help="Determine if the product can have the option gift wrap on the sale order line"),
+ }
+ _defaults = {
+ 'allow_gift_wrap': True,
+ }
=== added file 'product_gift/product_view.xml'
--- product_gift/product_view.xml 1970-01-01 00:00:00 +0000
+++ product_gift/product_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ product_is_a_gift for OpenERP
+ Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx>
+ The licence is in the file __openerp__.py
+-->
+
+<openerp>
+ <data>
+
+ <!-- INHERITED VIEW FOR THE OBJECT : product_product -->
+
+ <record id="product_normal_form_view" model="ir.ui.view">
+ <field name="name">product_is_a_gift.product_normal_form_view</field>
+ <field name="model">product.product</field>
+ <field name="inherit_id" ref="product.product_normal_form_view" />
+ <field name="type">form</field>
+ <field eval="15" name="priority"/>
+ <field name="arch" type="xml">
+ <data>
+ <field name="purchase_ok" position="after">
+ <field name="allow_gift_wrap" />
+ </field>
+ </data>
+ </field>
+ </record>
+
+ </data>
+</openerp>
=== added file 'product_gift/sale.py'
--- product_gift/sale.py 1970-01-01 00:00:00 +0000
+++ product_gift/sale.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,50 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+# #
+# product_is_a_gift for OpenERP #
+# Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx> #
+# Copyright (C) 2011 Camptocamp SA. (author Guewen Baconnier)
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+#################################################################################
+
+from openerp.osv.orm import Model
+from openerp.osv import fields
+
+
+class sale_order(Model):
+ _inherit = "sale.order"
+ _columns = {
+ 'gift_message': fields.text('Gift Message'),
+ }
+
+ def _prepare_order_picking(self, cr, uid, order, *args, **kwargs):
+ values = super(sale_order, self)._prepare_order_picking(cr, uid, order, *args, **kwargs)
+ values.update({'gift_message' : order.gift_message})
+ return values
+
+
+class sale_order_line(Model):
+ _inherit = "sale.order.line"
+ _columns = {
+ 'gift_message': fields.text('Gift Message'),
+ 'need_gift_wrap': fields.boolean('Add Gift Wrap'),
+ }
+
+ def _prepare_order_line_move(self, cr, uid, order, line, picking_id, date_planned, *args, **kwargs):
+ values = super(sale_order_line, self)._prepare_order_line_move(cr, uid, order, line, picking_id, date_planned, *args, **kwargs)
+ values.update({'gift_message': line.gift_message,
+ 'need_gift_wrap': line.need_gift_wrap})
+ return values
=== added file 'product_gift/sale_view.xml'
--- product_gift/sale_view.xml 1970-01-01 00:00:00 +0000
+++ product_gift/sale_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ product_is_a_gift for OpenERP
+ Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx>
+ The licence is in the file __openerp__.py
+-->
+
+<openerp>
+ <data>
+
+ <!-- INHERITED VIEW FOR THE OBJECT : sale_order -->
+
+ <record id="view_order_form" model="ir.ui.view">
+ <field name="name">product_is_a_gift.view_order_form</field>
+ <field name="model">sale.order</field>
+ <field name="inherit_id" ref="sale.view_order_form" />
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <data>
+ <xpath expr="/form/notebook/page[@string='Other Information']/separator[@string='Notes']" position="before">
+ <separator string="Gift Message" colspan="4"/>
+ <field name="gift_message" colspan="4" nolabel="1"/>
+ </xpath>
+
+ <xpath expr="/form/notebook/page/field[@name='order_line']/form/notebook/page[@string='Order Line']/group/field[@name='product_packaging']" position="after">
+ <field name="need_gift_wrap" />
+ </xpath>
+
+ <xpath expr="/form/notebook/page/field[@name='order_line']/form/notebook/page[@string='Extra Info']" position="after">
+ <page string="Gift Message">
+ <field name="gift_message" colspan="4" nolabel="1"/>
+ </page>
+ </xpath>
+
+ <xpath expr="/form/notebook/page/field/tree/field[@name='name']" position="after">
+ <field name="need_gift_wrap" />
+ </xpath>
+ </data>
+ </field>
+ </record>
+
+ </data>
+</openerp>
=== added file 'product_gift/stock.py'
--- product_gift/stock.py 1970-01-01 00:00:00 +0000
+++ product_gift/stock.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,43 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+# #
+# product_is_a_gift for OpenERP #
+# Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+#################################################################################
+
+from openerp.osv.orm import Model
+from openerp.osv import fields
+
+
+class stock_picking(Model):
+ _inherit = "stock.picking"
+ _columns = {
+ 'gift_message': fields.text('Gift Message'),
+ }
+
+
+class stock_move(Model):
+ _inherit = "stock.move"
+ _columns = {
+ 'gift_message': fields.text('Gift Message'),
+ 'need_gift_wrap': fields.boolean('Need Gift Wrap'),
+ }
+
+ def _prepare_chained_picking(self, cr, uid, pick_name, picking, ptype, move, context=None):
+ res = super(stock_move, self)._prepare_chained_picking(cr, uid, pick_name, picking, ptype, move, context=context)
+ res['gift_message'] = picking.gift_message
+ return res
=== added file 'product_gift/stock_view.xml'
--- product_gift/stock_view.xml 1970-01-01 00:00:00 +0000
+++ product_gift/stock_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ product_is_a_gift for OpenERP
+ Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx>
+ The licence is in the file __openerp__.py
+-->
+
+<openerp>
+ <data>
+
+ <!-- INHERITED VIEW FOR THE OBJECT : stock_picking -->
+
+ <record id="view_picking_form" model="ir.ui.view">
+ <field name="name">product_is_a_gift.view_picking_form</field>
+ <field name="model">stock.picking</field>
+ <field name="inherit_id" ref="stock.view_picking_form" />
+ <field eval="16" name="priority"/>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <data>
+
+ <xpath expr="/form/notebook" position="inside">
+ <page string="Gift Message">
+ <field name="gift_message" colspan="4" nolabel="1"/>
+ </page>
+ </xpath>
+
+ <xpath expr="/form/notebook/page/field/form/label[@string='']" position="before">
+ <group colspan="4">
+ <separator string="Gift Option" colspan="4"/>
+ <field name="need_gift_wrap" />
+ <field name="gift_message" colspan="4"/>
+ </group>
+ </xpath>
+
+ </data>
+
+ </field>
+ </record>
+
+
+ <record id="view_picking_out_form" model="ir.ui.view">
+ <field name="name">product_is_a_gift.view_picking_out_form</field>
+ <field name="model">stock.picking</field>
+ <field name="inherit_id" ref="stock.view_picking_out_form" />
+ <field eval="16" name="priority"/>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <data>
+
+ <xpath expr="/form/notebook" position="inside">
+ <page string="Gift Message">
+ <field name="gift_message" colspan="4" nolabel="1"/>
+ </page>
+ </xpath>
+
+ <xpath expr="/form/notebook/page/field/form/label[@string='']" position="before">
+ <group colspan="4">
+ <separator string="Gift Option" colspan="4"/>
+ <field name="need_gift_wrap" />
+ <field name="gift_message" colspan="4"/>
+ </group>
+ </xpath>
+
+ </data>
+
+ </field>
+ </record>
+
+
+ <!-- INHERITED VIEW FOR THE OBJECT : stock_move -->
+
+ <record id="view_move_tree" model="ir.ui.view">
+ <field name="name">product_is_a_gift.view_move_tree</field>
+ <field name="model">stock.move</field>
+ <field name="inherit_id" ref="stock.view_move_tree" />
+ <field eval="16" name="priority"/>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <data>
+ <field name="name" position="after">
+ <field name="need_gift_wrap" />
+ </field>
+ </data>
+ </field>
+ </record>
+
+
+ </data>
+</openerp>
=== added directory 'product_gtin'
=== renamed directory 'product_gtin' => 'product_gtin.moved'
=== added file 'product_gtin/__init__.py'
--- product_gtin/__init__.py 1970-01-01 00:00:00 +0000
+++ product_gtin/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,31 @@
+##############################################################################
+#
+# Copyright (c) 2004 TINY SPRL. (http://tiny.be) All Rights Reserved.
+# Fabien Pinckaers <fp@xxxxxxx>
+# Copyright (c) 2008 ChriCar Beteilugungs- und Beratungs- GmbH All Rights Reserved.
+# Ferdinand Gassauer <tiny@xxxxxxxxxx>
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsability of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+##############################################################################
+
+import product_gtin
\ No newline at end of file
=== added file 'product_gtin/__terp__.py'
--- product_gtin/__terp__.py 1970-01-01 00:00:00 +0000
+++ product_gtin/__terp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,17 @@
+{
+ "name" : "Invalid - Please use chricar_product_gtin instead Product GTIN EAN UPC JPC Support",
+ "version" : "1.0",
+ "author" : "ChriCar Beteiligungs- und Beratungs- GmbH",
+ "website" : "http://www.chricar.at/ChriCar",
+ "category" : "Generic Modules/Others",
+ "depends" : ["product"],
+ "description" : """
+Replaces the EAN13 code completion with a checkroutine for EAN13, EAN8, UPC and GTIN.
+It allows to support different types of barcodes systems.
+ """,
+ "init_xml" : [],
+ "demo_xml" : [],
+ "update_xml" : [],
+ "active": False,
+ "installable": True
+}
=== added directory 'product_gtin/i18n'
=== added file 'product_gtin/i18n/fr_BE.po'
--- product_gtin/i18n/fr_BE.po 1970-01-01 00:00:00 +0000
+++ product_gtin/i18n/fr_BE.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,30 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_gtin
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:29:40+0000\n"
+"PO-Revision-Date: 2009-11-25 13:29:40+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_gtin
+#: model:ir.module.module,description:product_gtin.module_meta_information
+msgid "\n"
+"Replaces the EAN13 code completion with a checkroutine for EAN13, EAN8, UPC and GTIN.\n"
+"It allows to support different types of barcodes systems.\n"
+" "
+msgstr ""
+
+#. module: product_gtin
+#: model:ir.module.module,shortdesc:product_gtin.module_meta_information
+msgid "Product GTIN EAN UPC JPC Support"
+msgstr ""
+
=== added file 'product_gtin/i18n/product_gtin.pot'
--- product_gtin/i18n/product_gtin.pot 1970-01-01 00:00:00 +0000
+++ product_gtin/i18n/product_gtin.pot 2013-01-17 10:06:27 +0000
@@ -0,0 +1,30 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_gtin
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:29:40+0000\n"
+"PO-Revision-Date: 2009-11-25 13:29:40+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_gtin
+#: model:ir.module.module,description:product_gtin.module_meta_information
+msgid "\n"
+"Replaces the EAN13 code completion with a checkroutine for EAN13, EAN8, UPC and GTIN.\n"
+"It allows to support different types of barcodes systems.\n"
+" "
+msgstr ""
+
+#. module: product_gtin
+#: model:ir.module.module,shortdesc:product_gtin.module_meta_information
+msgid "Product GTIN EAN UPC JPC Support"
+msgstr ""
+
=== added file 'product_gtin/i18n/sv.po'
--- product_gtin/i18n/sv.po 1970-01-01 00:00:00 +0000
+++ product_gtin/i18n/sv.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,36 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_gtin
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.14\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:29+0000\n"
+"PO-Revision-Date: 2010-11-23 01:37+0000\n"
+"Last-Translator: Olivier Dony (OpenERP) <Unknown>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_gtin
+#: model:ir.module.module,description:product_gtin.module_meta_information
+msgid ""
+"\n"
+"Replaces the EAN13 code completion with a checkroutine for EAN13, EAN8, UPC "
+"and GTIN.\n"
+"It allows to support different types of barcodes systems.\n"
+" "
+msgstr ""
+"\n"
+"Ersätter EAN13-koden med en kontrollrutin för EAN13, EAN8, UPC och GTIN.\n"
+"den tillåter användning av flera typer av streckkodsystem.\n"
+" "
+
+#. module: product_gtin
+#: model:ir.module.module,shortdesc:product_gtin.module_meta_information
+msgid "Product GTIN EAN UPC JPC Support"
+msgstr "Product GTIN EAN UPC JPC Support"
=== added file 'product_gtin/product_gtin.py'
--- product_gtin/product_gtin.py 1970-01-01 00:00:00 +0000
+++ product_gtin/product_gtin.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,105 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# Copyright (c) 2004-2006 TINY SPRL. (http://tiny.be) All Rights Reserved.
+#
+# $Id: account.py 1005 2005-07-25 08:41:42Z nicoe $
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsability of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+##############################################################################
+
+
+import netsvc
+from osv import fields, osv
+#import pooler
+#import wizard
+import math
+#from _common import rounding
+
+#import product
+
+# need to replace the check_ean_key function
+class product_product(osv.osv):
+ _inherit = "product.product"
+ _name = "product.product"
+ _columns = {
+ 'ean13': fields.char('EAN UPC JPC GTIN', size=14),
+ }
+ def _check_ean_key(self, cr, uid, ids):
+ def is_pair(x):
+ return not x%2
+ for product in self.browse(cr, uid, ids):
+ if not product.ean13:
+ continue
+ if not len(product.ean13) in [8,12,13,14]:
+ return False
+ try:
+ int(product.ean13)
+ except:
+ return False
+ sum=0
+ ean_len=len(product.ean13)
+ for i in range(ean_len-1):
+ pos=int(ean_len-2-i)
+ if is_pair(i):
+ sum += 3 * int(product.ean13[pos])
+ else:
+ sum += int(product.ean13[pos])
+ check = int(math.ceil(sum / 10.0) * 10 - sum)
+ if check != int(product.ean13[ean_len-1]): # last digit
+ return False
+ return True
+ _constraints = [(_check_ean_key, 'Error: Invalid EAN,UPC,JPC,GTIN code', ['ean13'])]
+product_product()
+
+class res_partner(osv.osv):
+ _inherit = "res.partner"
+ def _check_ean_key(self, cr, uid, ids):
+ def is_pair(x):
+ return not x%2
+ for partner in self.browse(cr, uid, ids):
+ if not partner.ean13:
+ continue
+ if not len(partner.ean13) in [8,12,13,14]:
+ return False
+ try:
+ int(partner.ean13)
+ except:
+ return False
+ sum=0
+ ean_len=len(partner.ean13)
+ for i in range(ean_len-1):
+ pos=int(ean_len-2-i)
+ if is_pair(i):
+ sum += 3 * int(partner.ean13[pos])
+ else:
+ sum += int(partner.ean13[pos])
+ check = int(math.ceil(sum / 10.0) * 10 - sum)
+ if check != int(partner.ean13[ean_len-1]): # last digit
+ return False
+ return True
+
+ _constraints = [(_check_ean_key, 'Error: Invalid EAN,UPC,JPC,GTIN code', ['ean13'])]
+
+res_partner()
+
=== added directory 'product_icecat'
=== renamed directory 'product_icecat' => 'product_icecat.moved'
=== added file 'product_icecat/__init__.py'
--- product_icecat/__init__.py 1970-01-01 00:00:00 +0000
+++ product_icecat/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,23 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2008 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+# $Id$
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+import product_icecat
+import wizard
=== added file 'product_icecat/__openerp__.py'
--- product_icecat/__openerp__.py 1970-01-01 00:00:00 +0000
+++ product_icecat/__openerp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+{
+ "name" : "Product Information Import from icecat",
+ "version" : "1.0",
+ "author" : "Zikzakmedia",
+ "website" : "http://www.zikzakmedia.com",
+ "category" : "Added functionality",
+ "depends" : ["base","product","product_images_olbs"],
+ "init_xml" : [],
+ "demo_xml" : [],
+ "description": """
+ Import information XML from icecat to OpenERP products.
+ This wizard download XML in openerp-server (addons/product_icecat/xml) and after process data mapping line to product import.
+ - Language import: User preference or force into wizard (option)
+ - HTML Category option: create list details
+ - FTP image
+ http://www.icecat.biz/
+ """,
+ 'update_xml': [
+ 'security/ir.model.access.csv',
+ 'product_icecat.xml',
+ 'wizard/wizard_product_icecat.xml',
+ ],
+ 'test':[''],
+ 'installable': True,
+ 'active': False,
+}
=== added directory 'product_icecat/i18n'
=== added file 'product_icecat/i18n/ca.po'
--- product_icecat/i18n/ca.po 1970-01-01 00:00:00 +0000
+++ product_icecat/i18n/ca.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,333 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_icecat
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.0.0-rc1\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2010-12-20 08:03+0000\n"
+"PO-Revision-Date: 2011-02-15 18:37+0000\n"
+"Last-Translator: Raimon Esteve (www.zikzakmedia.com) "
+"<resteve@xxxxxxxxxxxxxxx>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:41+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_icecat
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+"El nom de l'objecte ha de començar amb x_ i no ha de contenir cap caràcter "
+"especial!"
+
+#. module: product_icecat
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr "Nom de model no correcte en la definició de l'acció"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:159
+#, python-format
+msgid "No"
+msgstr "No"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:72
+#, python-format
+msgid "Ok !"
+msgstr "Ok !"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,description_sale:0
+msgid "Description Śale"
+msgstr "Descripció de venta"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,state:0
+msgid "State"
+msgstr "Estat"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:96
+#, python-format
+msgid ""
+"They are other icecat configuration with \"Active\" field checked. Only one "
+"configuration is avaible for active field."
+msgstr ""
+"Hi ha una altra configuració amb l'estat \"Actiu\" activat. Només una "
+"configuració pot tenir aquest estat activat."
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "icecat"
+msgstr "icecat"
+
+#. module: product_icecat
+#: constraint:ir.ui.menu:0
+msgid "Error ! You can not create recursive Menu."
+msgstr "Error ! No pot crear un menú recursiu."
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "Are you sure to import from icecat values to product?"
+msgstr "Esteu segurs de importar la informació de icecat al producte?"
+
+#. module: product_icecat
+#: model:ir.model,name:product_icecat.model_product_icecat_wizard
+msgid "product.icecat.wizard"
+msgstr "product.icecat.wizard"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:378
+#, python-format
+msgid "EAN not avaible"
+msgstr "EAN no disponible"
+
+#. module: product_icecat
+#: field:product.icecat,name:0
+#: field:product.icecat.wizard,name:0
+msgid "Name"
+msgstr "Nom"
+
+#. module: product_icecat
+#: field:product.icecat,ftpusername:0
+msgid "Username"
+msgstr "Usuari"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,html:0
+msgid "HTML Code"
+msgstr "Codi HTML"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:65
+#: code:addons/product_icecat/product_icecat.py:69
+#, python-format
+msgid "Error !"
+msgstr "Error !"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,description:0
+msgid "Description"
+msgstr "Descripció"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:69
+#, python-format
+msgid "Username/password FTP connection was not successfully!"
+msgstr "Usuari/password de FTP no son vàlids!"
+
+#. module: product_icecat
+#: field:product.icecat,username:0
+msgid "User Name"
+msgstr "Usuari"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:72
+#, python-format
+msgid "FTP connection was successfully!"
+msgstr "Connexió FTP s'ha realitzat correctament!"
+
+#. module: product_icecat
+#: help:product.icecat,ftpdirectory:0
+msgid ""
+"If not use directory, insert . (point). If use directory, path FTP dir"
+msgstr ""
+"Si no utilitza cap directori, insereix . (punt). Si utilitza un directori, "
+"introdueix la ruta dels directori de les imatges"
+
+#. module: product_icecat
+#: field:product.icecat.mapline,field_id:0
+msgid "OpenERP Field"
+msgstr "Camp d'OpenERP"
+
+#. module: product_icecat
+#: model:ir.actions.act_window,name:product_icecat.act_product_icecat
+msgid "Import Icecat"
+msgstr "Importar Icecat"
+
+#. module: product_icecat
+#: field:product.icecat,active:0
+#: field:product.icecat,ftp:0
+msgid "Active"
+msgstr "Actiu"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:267
+#, python-format
+msgid "Product %s XML Import successfully"
+msgstr "La importació del XML del producte %s s'ha realitzat correctament"
+
+#. module: product_icecat
+#: selection:product.icecat.wizard,state:0
+msgid "First"
+msgstr "Primer"
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "Icecat to OpenERP fields"
+msgstr "Camps de Icecat a OpenERP"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,result:0
+msgid "Result"
+msgstr "Resultat"
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "FTP"
+msgstr "FTP"
+
+#. module: product_icecat
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "Invàlid XML per la vista de l'arquitectura!"
+
+#. module: product_icecat
+#: field:product.icecat,mapline_ids:0
+msgid "Mapline"
+msgstr "Mapeig"
+
+#. module: product_icecat
+#: model:ir.model,name:product_icecat.model_product_icecat_mapline
+msgid "Icecat Mapline Configuration"
+msgstr "Configuració mapeig Icecat"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,language_id:0
+msgid "Language"
+msgstr "Llengua"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:316
+#, python-format
+msgid "Not exist %s image"
+msgstr "Not exist %s image"
+
+#. module: product_icecat
+#: field:product.icecat,ftpurl:0
+msgid "URL"
+msgstr "URL"
+
+#. module: product_icecat
+#: field:product.icecat,ftpip:0
+msgid "IP"
+msgstr "IP"
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "update"
+msgstr "actualitzar"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:96
+#, python-format
+msgid "Error!"
+msgstr "Error!"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:65
+#, python-format
+msgid "IP FTP connection was not successfully!"
+msgstr "La connexió FTP per la IP no s'ha pogut realitzar!"
+
+#. module: product_icecat
+#: field:product.icecat,ftpdirectory:0
+msgid "Directory"
+msgstr "Directori"
+
+#. module: product_icecat
+#: field:product.icecat.mapline,name:0
+msgid "XML Field"
+msgstr "Camp XML"
+
+#. module: product_icecat
+#: model:ir.actions.act_window,name:product_icecat.action_product_icecat
+#: model:ir.ui.menu,name:product_icecat.product_icecat
+msgid "Icecat Configuration"
+msgstr "Configuració Icecat"
+
+#. module: product_icecat
+#: field:product.icecat.mapline,model_id:0
+msgid "OpenERP Model"
+msgstr "Model OpenERP"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:373
+#, python-format
+msgid "Import image not avaible"
+msgstr "La importació de les imatges no es troba disponible"
+
+#. module: product_icecat
+#: field:product.icecat,ftppassword:0
+#: field:product.icecat,password:0
+msgid "Password"
+msgstr "Password"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,image:0
+#: field:product.icecat.wizard,resimg:0
+msgid "Image"
+msgstr "Imatge"
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "Maping Lines"
+msgstr "Línies de mapeig"
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "Import icecat XML"
+msgstr "Importar icecat XML"
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "Check FTP"
+msgstr "Comprova FTP"
+
+#. module: product_icecat
+#: selection:product.icecat.wizard,state:0
+msgid "Done"
+msgstr "Realitzat"
+
+#. module: product_icecat
+#: view:product.icecat:0
+#: field:product.icecat.mapline,icecat_id:0
+msgid "Icecat"
+msgstr "Icecat"
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "Cancel"
+msgstr "Cancel·lar"
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "Close"
+msgstr "Tancar"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:157
+#, python-format
+msgid "Yes"
+msgstr "Si"
+
+#. module: product_icecat
+#: help:product.icecat,ftpurl:0
+msgid "URL FTP Dir: http://domain/directory/"
+msgstr "URL FTP Dir: http://domain/directory/"
+
+#. module: product_icecat
+#: sql_constraint:ir.model.fields:0
+msgid "Size of the field can never be less than 1 !"
+msgstr "La grandaria del camp no pot ser menys petit de 1!"
+
+#. module: product_icecat
+#: help:product.icecat.mapline,name:0
+msgid "Insert ID Category from Icecat"
+msgstr "Insereix ID de la categoria de icecat"
=== added file 'product_icecat/i18n/es.po'
--- product_icecat/i18n/es.po 1970-01-01 00:00:00 +0000
+++ product_icecat/i18n/es.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,333 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_icecat
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.0.0-rc1\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2010-12-20 08:03+0000\n"
+"PO-Revision-Date: 2011-02-15 18:38+0000\n"
+"Last-Translator: Raimon Esteve (www.zikzakmedia.com) "
+"<resteve@xxxxxxxxxxxxxxx>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:41+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_icecat
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+"El nombre del objecto debe empezar con x_ y no contener ningún carácter "
+"especial!"
+
+#. module: product_icecat
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr "Nombre del modelo inválido en la definición de la acción."
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:159
+#, python-format
+msgid "No"
+msgstr "No"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:72
+#, python-format
+msgid "Ok !"
+msgstr "Ok !"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,description_sale:0
+msgid "Description Śale"
+msgstr "Descripción de venta"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,state:0
+msgid "State"
+msgstr "Estado"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:96
+#, python-format
+msgid ""
+"They are other icecat configuration with \"Active\" field checked. Only one "
+"configuration is avaible for active field."
+msgstr ""
+"Hay otra configuración de icecat como \"Activo\". Sólo una configuración "
+"puede contener este campo activo."
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "icecat"
+msgstr "icecat"
+
+#. module: product_icecat
+#: constraint:ir.ui.menu:0
+msgid "Error ! You can not create recursive Menu."
+msgstr "Error ! No puede crear un menú recursivo."
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "Are you sure to import from icecat values to product?"
+msgstr "Está seguro de importar el catálogo de icecat a los productos?"
+
+#. module: product_icecat
+#: model:ir.model,name:product_icecat.model_product_icecat_wizard
+msgid "product.icecat.wizard"
+msgstr "product.icecat.wizard"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:378
+#, python-format
+msgid "EAN not avaible"
+msgstr "EAN no disponible"
+
+#. module: product_icecat
+#: field:product.icecat,name:0
+#: field:product.icecat.wizard,name:0
+msgid "Name"
+msgstr "Nombre"
+
+#. module: product_icecat
+#: field:product.icecat,ftpusername:0
+msgid "Username"
+msgstr "Usuario"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,html:0
+msgid "HTML Code"
+msgstr "Código HTML"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:65
+#: code:addons/product_icecat/product_icecat.py:69
+#, python-format
+msgid "Error !"
+msgstr "Error !"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,description:0
+msgid "Description"
+msgstr "Descripción"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:69
+#, python-format
+msgid "Username/password FTP connection was not successfully!"
+msgstr "El usuario/password de la conexión FTP no se ha podido realizar!"
+
+#. module: product_icecat
+#: field:product.icecat,username:0
+msgid "User Name"
+msgstr "Usuario"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:72
+#, python-format
+msgid "FTP connection was successfully!"
+msgstr "La conexión FTP se ha realizado correctamente!"
+
+#. module: product_icecat
+#: help:product.icecat,ftpdirectory:0
+msgid ""
+"If not use directory, insert . (point). If use directory, path FTP dir"
+msgstr ""
+"Si no utiliza ningún directorio, inserte un . (punto). Si utiliza un "
+"directorio, la ruta del directorio"
+
+#. module: product_icecat
+#: field:product.icecat.mapline,field_id:0
+msgid "OpenERP Field"
+msgstr "Campo OpenERP"
+
+#. module: product_icecat
+#: model:ir.actions.act_window,name:product_icecat.act_product_icecat
+msgid "Import Icecat"
+msgstr "Importar Icecat"
+
+#. module: product_icecat
+#: field:product.icecat,active:0
+#: field:product.icecat,ftp:0
+msgid "Active"
+msgstr "Activo"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:267
+#, python-format
+msgid "Product %s XML Import successfully"
+msgstr "La importación del XML del producto %s se ha realizado correctamente"
+
+#. module: product_icecat
+#: selection:product.icecat.wizard,state:0
+msgid "First"
+msgstr "Primero"
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "Icecat to OpenERP fields"
+msgstr "Campos de Icecat a OpenERP"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,result:0
+msgid "Result"
+msgstr "Resultado"
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "FTP"
+msgstr "FTP"
+
+#. module: product_icecat
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "XML inválido para la vista de arquitectura!"
+
+#. module: product_icecat
+#: field:product.icecat,mapline_ids:0
+msgid "Mapline"
+msgstr "Líneas de mapeo"
+
+#. module: product_icecat
+#: model:ir.model,name:product_icecat.model_product_icecat_mapline
+msgid "Icecat Mapline Configuration"
+msgstr "Configuración líneas de mapeo Icecat"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,language_id:0
+msgid "Language"
+msgstr "Lengua"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:316
+#, python-format
+msgid "Not exist %s image"
+msgstr "Not exist %s image"
+
+#. module: product_icecat
+#: field:product.icecat,ftpurl:0
+msgid "URL"
+msgstr "URL"
+
+#. module: product_icecat
+#: field:product.icecat,ftpip:0
+msgid "IP"
+msgstr "IP"
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "update"
+msgstr "actualizar"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:96
+#, python-format
+msgid "Error!"
+msgstr "Error!"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:65
+#, python-format
+msgid "IP FTP connection was not successfully!"
+msgstr "No se ha podido conectar con FTP con la IP especificada!"
+
+#. module: product_icecat
+#: field:product.icecat,ftpdirectory:0
+msgid "Directory"
+msgstr "Directorio"
+
+#. module: product_icecat
+#: field:product.icecat.mapline,name:0
+msgid "XML Field"
+msgstr "Campo XML"
+
+#. module: product_icecat
+#: model:ir.actions.act_window,name:product_icecat.action_product_icecat
+#: model:ir.ui.menu,name:product_icecat.product_icecat
+msgid "Icecat Configuration"
+msgstr "Configuración Icecat"
+
+#. module: product_icecat
+#: field:product.icecat.mapline,model_id:0
+msgid "OpenERP Model"
+msgstr "Modelo OpenERP"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:373
+#, python-format
+msgid "Import image not avaible"
+msgstr "La importación de la imagen no está disponible"
+
+#. module: product_icecat
+#: field:product.icecat,ftppassword:0
+#: field:product.icecat,password:0
+msgid "Password"
+msgstr "Password"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,image:0
+#: field:product.icecat.wizard,resimg:0
+msgid "Image"
+msgstr "Imagen"
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "Maping Lines"
+msgstr "Líneas de mapeo"
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "Import icecat XML"
+msgstr "Importación XML icecat"
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "Check FTP"
+msgstr "Comprobar FTP"
+
+#. module: product_icecat
+#: selection:product.icecat.wizard,state:0
+msgid "Done"
+msgstr "Realizado"
+
+#. module: product_icecat
+#: view:product.icecat:0
+#: field:product.icecat.mapline,icecat_id:0
+msgid "Icecat"
+msgstr "Icecat"
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "Cancel"
+msgstr "Cancelar"
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "Close"
+msgstr "Cerrar"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:157
+#, python-format
+msgid "Yes"
+msgstr "Si"
+
+#. module: product_icecat
+#: help:product.icecat,ftpurl:0
+msgid "URL FTP Dir: http://domain/directory/"
+msgstr "URL FTP Dir: http://domain/directory/"
+
+#. module: product_icecat
+#: sql_constraint:ir.model.fields:0
+msgid "Size of the field can never be less than 1 !"
+msgstr "El tamaño del campo no puede ser inferior a 1!"
+
+#. module: product_icecat
+#: help:product.icecat.mapline,name:0
+msgid "Insert ID Category from Icecat"
+msgstr "Inserte el ID de la categoría de Icecat"
=== added file 'product_icecat/i18n/product_icecat.pot'
--- product_icecat/i18n/product_icecat.pot 1970-01-01 00:00:00 +0000
+++ product_icecat/i18n/product_icecat.pot 2013-01-17 10:06:27 +0000
@@ -0,0 +1,322 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_icecat
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.0.0-rc1\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2010-12-20 08:03:10+0000\n"
+"PO-Revision-Date: 2010-12-20 08:03:10+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_icecat
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr "The Object name must start with x_ and not contain any special character !"
+
+#. module: product_icecat
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr "Invalid model name in the action definition."
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:0
+#, python-format
+msgid "No"
+msgstr "No"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:0
+#, python-format
+msgid "Ok !"
+msgstr "Ok !"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,description_sale:0
+msgid "Description Śale"
+msgstr "Description Śale"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,state:0
+msgid "State"
+msgstr "State"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:0
+#, python-format
+msgid "They are other icecat configuration with \"Active\" field checked. Only one configuration is avaible for active field."
+msgstr "They are other icecat configuration with \"Active\" field checked. Only one configuration is avaible for active field."
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "icecat"
+msgstr "icecat"
+
+#. module: product_icecat
+#: constraint:ir.ui.menu:0
+msgid "Error ! You can not create recursive Menu."
+msgstr "Error ! You can not create recursive Menu."
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "Are you sure to import from icecat values to product?"
+msgstr "Are you sure to import from icecat values to product?"
+
+#. module: product_icecat
+#: model:ir.model,name:product_icecat.model_product_icecat_wizard
+msgid "product.icecat.wizard"
+msgstr "product.icecat.wizard"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:0
+#, python-format
+msgid "EAN not avaible"
+msgstr "EAN not avaible"
+
+#. module: product_icecat
+#: field:product.icecat,name:0
+#: field:product.icecat.wizard,name:0
+msgid "Name"
+msgstr "Name"
+
+#. module: product_icecat
+#: field:product.icecat,ftpusername:0
+msgid "Username"
+msgstr "Username"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,html:0
+msgid "HTML Code"
+msgstr "HTML Code"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:0
+#, python-format
+msgid "Error !"
+msgstr "Error !"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,description:0
+msgid "Description"
+msgstr "Description"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:0
+#, python-format
+msgid "Username/password FTP connection was not successfully!"
+msgstr "Username/password FTP connection was not successfully!"
+
+#. module: product_icecat
+#: field:product.icecat,username:0
+msgid "User Name"
+msgstr "User Name"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:0
+#, python-format
+msgid "FTP connection was successfully!"
+msgstr "FTP connection was successfully!"
+
+#. module: product_icecat
+#: help:product.icecat,ftpdirectory:0
+msgid "If not use directory, insert . (point). If use directory, path FTP dir"
+msgstr "If not use directory, insert . (point). If use directory, path FTP dir"
+
+#. module: product_icecat
+#: field:product.icecat.mapline,field_id:0
+msgid "OpenERP Field"
+msgstr "OpenERP Field"
+
+#. module: product_icecat
+#: model:ir.actions.act_window,name:product_icecat.act_product_icecat
+msgid "Import Icecat"
+msgstr "Import Icecat"
+
+#. module: product_icecat
+#: field:product.icecat,active:0
+#: field:product.icecat,ftp:0
+msgid "Active"
+msgstr "Active"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:0
+#, python-format
+msgid "Product %s XML Import successfully"
+msgstr "Product %s XML Import successfully"
+
+#. module: product_icecat
+#: selection:product.icecat.wizard,state:0
+msgid "First"
+msgstr "First"
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "Icecat to OpenERP fields"
+msgstr "Icecat to OpenERP fields"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,result:0
+msgid "Result"
+msgstr "Result"
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "FTP"
+msgstr "FTP"
+
+#. module: product_icecat
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "Invalid XML for View Architecture!"
+
+#. module: product_icecat
+#: field:product.icecat,mapline_ids:0
+msgid "Mapline"
+msgstr "Mapline"
+
+#. module: product_icecat
+#: model:ir.model,name:product_icecat.model_product_icecat_mapline
+msgid "Icecat Mapline Configuration"
+msgstr "Icecat Mapline Configuration"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,language_id:0
+msgid "Language"
+msgstr "Language"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:0
+#, python-format
+msgid "Not exist %s image"
+msgstr "Not exist %s image"
+
+#. module: product_icecat
+#: field:product.icecat,ftpurl:0
+msgid "URL"
+msgstr "URL"
+
+#. module: product_icecat
+#: field:product.icecat,ftpip:0
+msgid "IP"
+msgstr "IP"
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "update"
+msgstr "update"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:0
+#, python-format
+msgid "Error!"
+msgstr "Error!"
+
+#. module: product_icecat
+#: code:addons/product_icecat/product_icecat.py:0
+#, python-format
+msgid "IP FTP connection was not successfully!"
+msgstr "IP FTP connection was not successfully!"
+
+#. module: product_icecat
+#: field:product.icecat,ftpdirectory:0
+msgid "Directory"
+msgstr "Directory"
+
+#. module: product_icecat
+#: field:product.icecat.mapline,name:0
+msgid "XML Field"
+msgstr "XML Field"
+
+#. module: product_icecat
+#: model:ir.actions.act_window,name:product_icecat.action_product_icecat
+#: model:ir.model,name:product_icecat.model_product_icecat
+#: model:ir.ui.menu,name:product_icecat.product_icecat
+msgid "Icecat Configuration"
+msgstr "Icecat Configuration"
+
+#. module: product_icecat
+#: field:product.icecat.mapline,model_id:0
+msgid "OpenERP Model"
+msgstr "OpenERP Model"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:0
+#, python-format
+msgid "Import image not avaible"
+msgstr "Import image not avaible"
+
+#. module: product_icecat
+#: field:product.icecat,ftppassword:0
+#: field:product.icecat,password:0
+msgid "Password"
+msgstr "Password"
+
+#. module: product_icecat
+#: field:product.icecat.wizard,image:0
+#: field:product.icecat.wizard,resimg:0
+msgid "Image"
+msgstr "Image"
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "Maping Lines"
+msgstr "Maping Lines"
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "Import icecat XML"
+msgstr "Import icecat XML"
+
+#. module: product_icecat
+#: view:product.icecat:0
+msgid "Check FTP"
+msgstr "Check FTP"
+
+#. module: product_icecat
+#: selection:product.icecat.wizard,state:0
+msgid "Done"
+msgstr "Done"
+
+#. module: product_icecat
+#: view:product.icecat:0
+#: field:product.icecat.mapline,icecat_id:0
+msgid "Icecat"
+msgstr "Icecat"
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "Cancel"
+msgstr "Cancel"
+
+#. module: product_icecat
+#: view:product.icecat.wizard:0
+msgid "Close"
+msgstr "Close"
+
+#. module: product_icecat
+#: code:addons/product_icecat/wizard/wizard_product_icecat.py:0
+#, python-format
+msgid "Yes"
+msgstr "Yes"
+
+#. module: product_icecat
+#: help:product.icecat,ftpurl:0
+msgid "URL FTP Dir: http://domain/directory/"
+msgstr "URL FTP Dir: http://domain/directory/"
+
+#. module: product_icecat
+#: sql_constraint:ir.model.fields:0
+msgid "Size of the field can never be less than 1 !"
+msgstr "Size of the field can never be less than 1 !"
+
+#. module: product_icecat
+#: help:product.icecat.mapline,name:0
+msgid "Insert ID Category from Icecat"
+msgstr "Insert ID Category from Icecat"
+
=== added directory 'product_icecat/icecat'
=== added file 'product_icecat/product_icecat.py'
--- product_icecat/product_icecat.py 1970-01-01 00:00:00 +0000
+++ product_icecat/product_icecat.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,100 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from osv import osv, fields
+from tools.translate import _
+import netsvc
+
+from ftplib import FTP
+import os
+
+class product_icecat(osv.osv):
+ _name = "product.icecat"
+
+product_icecat()
+
+class product_icecat_mapline(osv.osv):
+ _name = "product.icecat.mapline"
+ _description = "Icecat Mapline Configuration"
+
+ _columns = {
+ 'name': fields.char('XML Field', size=32, required=True, help='Insert ID Category from Icecat'),
+ 'model_id': fields.many2one('ir.model','OpenERP Model'),
+ 'field_id': fields.many2one('ir.model.fields','OpenERP Field', required=True),
+ 'icecat_id': fields.many2one('product.icecat','Icecat'),
+ }
+
+ _defaults = {
+ 'model_id': lambda self, cr, uid, c: self.pool.get('ir.model').search(cr, uid, [('model', '=', 'product.product')])[0],
+ }
+
+product_icecat_mapline()
+
+class product_icecat(osv.osv):
+ _name = "product.icecat"
+ _description = "Icecat Configuration"
+
+ def check_ftp(self, cr, uid, ids, context):
+ if context is None:
+ context = {}
+
+ for id in ids:
+ icecat = self.browse(cr, uid, id)
+
+ try: ftp = FTP(icecat.ftpip)
+ except:
+ raise osv.except_osv(_('Error !'), _("IP FTP connection was not successfully!"))
+
+ try: ftp.login(icecat.ftpusername, icecat.ftppassword)
+ except:
+ raise osv.except_osv(_('Error !'), _("Username/password FTP connection was not successfully!"))
+
+ ftp.quit()
+ raise osv.except_osv(_('Ok !'), _("FTP connection was successfully!"))
+
+ _columns = {
+ 'name': fields.char('Name', size=32, required=True),
+ 'username': fields.char('User Name', size=32, required=True),
+ 'password': fields.char('Password', size=32, required=True),
+ 'active': fields.boolean('Active'),
+ 'mapline_ids': fields.one2many('product.icecat.mapline','icecat_id','Mapline'),
+ 'ftp': fields.boolean('Active'),
+ 'ftpip': fields.char('IP', size=256),
+ 'ftpdirectory': fields.char('Directory', size=256, help='If not use directory, insert . (point). If use directory, path FTP dir'),
+ 'ftpusername': fields.char('Username', size=32),
+ 'ftppassword': fields.char('Password', size=32),
+ 'ftpurl': fields.char('URL', size=256, help='URL FTP Dir: http://domain/directory/'),
+ }
+
+ _defaults = {
+ 'active': lambda *a: 1,
+ }
+
+ def create(self, cr, uid, vals, context={}):
+ if vals.get('active',False):
+ actv_ids = self.search(cr, uid, [('active','=',True)])
+ if len(actv_ids):
+ raise osv.except_osv(_('Error!'), _('They are other icecat configuration with "Active" field checked. Only one configuration is avaible for active field.'))
+ return super(product_icecat, self).create(cr, uid, vals, context)
+
+product_icecat()
+
+
=== added file 'product_icecat/product_icecat.xml'
--- product_icecat/product_icecat.xml 1970-01-01 00:00:00 +0000
+++ product_icecat/product_icecat.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+<data>
+ <!-- Configuration -->
+ <record model="ir.ui.view" id="product_icecat_tree">
+ <field name="name">product.icecat.tree</field>
+ <field name="model">product.icecat</field>
+ <field name="type">tree</field>
+ <field name="priority" eval="8"/>
+ <field name="arch" type="xml">
+ <tree string="icecat">
+ <field name="name"/>
+ <field name="username"/>
+ <field name="active"/>
+ </tree>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="product_icecat_form">
+ <field name="name">product.icecat.form</field>
+ <field name="model">product.icecat</field>
+ <field name="type">form</field>
+ <field name="priority" eval="8"/>
+ <field name="arch" type="xml">
+ <form string="icecat">
+ <field name="name" />
+ <field name="active" />
+ <notebook colspan="4">
+ <page string="Icecat">
+ <field name="username" />
+ <field name="password" />
+ </page>
+ <page string="FTP">
+ <field name="ftp" /><newline />
+ <field name="ftpip" attrs="{'required':[('ftp','=',True)]}" />
+ <field name="ftpdirectory" attrs="{'required':[('ftp','=',True)]}" />
+ <field name="ftpusername" attrs="{'required':[('ftp','=',True)]}" />
+ <field name="ftppassword" attrs="{'required':[('ftp','=',True)]}" />
+ <field name="ftpurl" attrs="{'required':[('ftp','=',True)]}" />
+ <button name="check_ftp" string="Check FTP" colspan="4" type="object" />
+ </page>
+ </notebook>
+ <separator string="Icecat to OpenERP fields" colspan="4" />
+<!-- <label string="Configure your mapping values from icecat to OpenERP (only category icecat)" colspan="4"/>-->
+ <field name="mapline_ids" nolabel="1" colspan="4" mode="tree,form" height="260">
+ <tree string="Maping Lines">
+ <field name="name"/>
+ <field name="field_id"/>
+ </tree>
+ <form string="Maping Lines">
+ <field name="name"/>
+ <field name="model_id" invisible="1"/>
+ <field name="field_id" domain="[('model_id', '=', model_id)]"/>
+ </form>
+ </field>
+ </form>
+ </field>
+ </record>
+
+ <record model="ir.actions.act_window" id="action_product_icecat">
+ <field name="name">Icecat Configuration</field>
+ <field name="res_model">product.icecat</field>
+ <field name="view_mode">tree,form</field>
+ </record>
+
+ <menuitem id="product_icecat" name="Icecat Configuration" parent="product.prod_config_main" action="action_product_icecat"/>
+</data>
+</openerp>
=== added directory 'product_icecat/security'
=== added file 'product_icecat/security/ir.model.access.csv'
--- product_icecat/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
+++ product_icecat/security/ir.model.access.csv 2013-01-17 10:06:27 +0000
@@ -0,0 +1,3 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_product_icecat","product_icecat","model_product_icecat","base.group_sale_manager",1,1,1,1
+"access_product_icecat_mapline","product_icecat_mapline","model_product_icecat_mapline","base.group_sale_manager",1,1,1,1
=== added directory 'product_icecat/wizard'
=== added file 'product_icecat/wizard/__init__.py'
--- product_icecat/wizard/__init__.py 1970-01-01 00:00:00 +0000
+++ product_icecat/wizard/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,23 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2010 Zikzakmedia S.L. (<http://www.zikzakmedia.com>). All Rights Reserved
+# $Id$
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+
+import wizard_product_icecat
=== added file 'product_icecat/wizard/wizard_product_icecat.py'
--- product_icecat/wizard/wizard_product_icecat.py 1970-01-01 00:00:00 +0000
+++ product_icecat/wizard/wizard_product_icecat.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,342 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2010 Zikzakmedia S.L. (<http://www.zikzakmedia.com>). All Rights Reserved
+# $Id$
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+
+from osv import fields,osv
+from tools.translate import _
+
+import os
+import re
+import cgi
+import libxml2
+import urllib
+import urllib2
+from urllib2 import Request, urlopen, URLError, HTTPError
+from ftplib import FTP
+
+class product_icecat_wizard(osv.osv_memory):
+ _name = 'product.icecat.wizard'
+
+ _columns = {
+ 'name':fields.boolean('Name'),
+ 'description':fields.boolean('Description'),
+ 'description_sale':fields.boolean('Description Śale'),
+ 'language_id': fields.many2one('res.lang','Language'),
+ 'image':fields.boolean('Image'),
+ 'html':fields.boolean('HTML Code'),
+ 'result': fields.text('Result', readonly=True),
+ 'resimg': fields.text('Image', readonly=True),
+ 'state':fields.selection([
+ ('first','First'),
+ ('done','Done'),
+ ],'State'),
+ }
+
+ _defaults = {
+ 'state': lambda *a: 'first',
+ 'name': lambda *a: 1,
+ 'description': lambda *a: 1,
+ 'description_sale': lambda *a: 1,
+ 'html': lambda *a: 1,
+ }
+
+ # ==========================================
+ # save XML file into product_icecat/xml dir
+ # ==========================================
+ def save_file(self, name, value):
+ path = os.path.abspath( os.path.dirname(__file__) )
+ path += '/icecat/%s' % name
+ path = re.sub('wizard/', '', path)
+ f = open( path, 'w' )
+ try:
+ f.write(value)
+ finally:
+ f.close()
+ return path
+
+ # ==========================================
+ # Convert HTML to text
+ # ==========================================
+ def StripTags(self, text):
+ finished = 0
+ while not finished:
+ finished = 1
+ start = text.find("<")
+ if start >= 0:
+ stop = text[start:].find(">")
+ if stop >= 0:
+ text = text[:start] + text[start+stop+1:]
+ finished = 0
+ return text
+
+ # ==========================================
+ # Convert icecat values to OpenERP mapline
+ # ==========================================
+ def icecat2oerp(self, cr, uid, form, product, icecat, pathxml, language, data, context):
+
+ if form.language_id.code:
+ language = form.language_id.code
+
+ doc = libxml2.parseFile(pathxml)
+
+ for prod in doc.xpathEval('//Product'):
+ if prod.xpathEval('@ErrorMessage'):
+ if prod.xpathEval('@ErrorMessage')[0].content:
+ return prod.xpathEval('@ErrorMessage')[0].content
+ exit
+
+ # product info
+ short_summary = doc.xpathEval('//SummaryDescription//ShortSummaryDescription')
+ long_summary = doc.xpathEval('//SummaryDescription//LongSummaryDescription')
+
+ short_description = short_summary[0].content
+ description = long_summary[0].content
+ name = description.split('.')[0]
+
+ for prod in doc.xpathEval('//ProductDescription'):
+ if prod.xpathEval('@ShortDesc'):
+ short_description = prod.xpathEval('@ShortDesc')[0].content
+ if prod.xpathEval('@LongDesc'):
+ description = prod.xpathEval('@LongDesc')[0].content
+
+ # product details category
+ categoryId = []
+ categoryName = []
+ for cat in doc.xpathEval('//CategoryFeatureGroup'):
+ categoryId.append(cat.xpathEval('@ID')[0].content)
+
+ for cat in doc.xpathEval('//CategoryFeatureGroup//FeatureGroup//Name'):
+ categoryName.append(cat.xpathEval('@Value')[0].content)
+
+ # join categorys lists
+ category = zip(categoryId,categoryName)
+
+ # product details feature
+ prodFeatureId = []
+ prodFeatureName = []
+ values = {}
+ for prod in doc.xpathEval('//ProductFeature'):
+ prodFeatureId.append(prod.xpathEval('@CategoryFeatureGroup_ID')[0].content+"#"+prod.xpathEval('@Presentation_Value')[0].content)
+
+ for prod in doc.xpathEval('//ProductFeature//Feature//Name'):
+ prodFeatureName.append(prod.xpathEval('@Value')[0].content)
+
+ # ordered id, name & description Product Feature
+ prodFeature = {}
+ i = 0
+ for feature in prodFeatureId:
+ if not prodFeatureName[i] == 'Source data-sheet':
+ values = feature.split('#')
+ if values[1] == "Y":
+ value = _("Yes")
+ elif values[1] == "N":
+ value = _("No")
+ else:
+ value = values[1]
+ if values[0] not in prodFeature:
+ prodFeature[values[0]] = []
+ prodFeature[values[0]].append('<strong>'+prodFeatureName[i]+':</strong>'+' '+value)
+ i += 1
+
+ mapline_ids = self.pool.get('product.icecat.mapline').search(cr, uid, [('icecat_id', '=', icecat.id)])
+ mapline_fields = []
+ for mapline_id in mapline_ids:
+ mapline = self.pool.get('product.icecat.mapline').browse(cr, uid, mapline_id)
+ mapline_fields.append({'icecat':mapline.name,'oerp':mapline.field_id.name})
+
+ #show details product
+ #TODO: HTML template use Mako template for not hardcode HTML tags
+ mapline_values = []
+ for cat in category:
+ catID = cat[0]
+ catName = cat[1]
+ if catID in prodFeature and len(prodFeature[catID]):
+ for mapline_field in mapline_fields:
+ if mapline_field['icecat'] == catID:
+ source = '<h3>%s</h3>' % catName
+ i = True
+ for feature in prodFeature[catID]:
+ if i == True:
+ source += '<ul>'
+ source += '<li>%s</li>' % feature
+ i = False
+ source += '</ul>'
+ if not form.html:
+ source = self.StripTags(source)
+ mapline_values.append({'field':mapline_field['oerp'],'source':source})
+ # This is not hardcode. Short description is avaible in antother fields, for example meta_description website fields (magento, djnago,...)
+ if mapline_field['icecat'] == 'ShortSummaryDescription':
+ mapline_values.append({'field':mapline_field['oerp'],'source':short_description})
+
+ # update icecat values at product
+ # default values. It is not hardcode ;)
+ values = {}
+
+ if form.name:
+ trans_name_id = self.pool.get('ir.translation').search(cr, uid, [('lang', '=', language),('name','=','product.template,name'),('res_id','=',product.id)])
+ if trans_name_id:
+ self.pool.get('ir.translation').write(cr, uid, trans_name_id, {'value': name}, context)
+ else:
+ values['name'] = name
+
+ if form.description_sale:
+ trans_descsale_id = self.pool.get('ir.translation').search(cr, uid, [('lang', '=', language),('name','=','product.template,description_sale'),('res_id','=',product.id)])
+ if trans_descsale_id:
+ self.pool.get('ir.translation').write(cr, uid, trans_descsale_id, {'value': short_description}, context)
+ else:
+ values['description_sale'] = short_description
+
+ if form.description:
+ if not form.html:
+ description = self.StripTags(description)
+ trans_description_id = self.pool.get('ir.translation').search(cr, uid, [('lang', '=', language),('name','=','product.template,description'),('res_id','=',product.id)])
+ if trans_description_id:
+ self.pool.get('ir.translation').write(cr, uid, trans_description_id, {'value': description}, context)
+ else:
+ values['description'] = description
+
+ # add mapline values calculated
+ for mapline_value in mapline_values:
+ values[mapline_value['field']] = mapline_value['source']
+
+ self.pool.get('product.product').write(cr, uid, [product.id], values, context)
+
+ result = _("Product %s XML Import successfully") % name
+
+ return result
+
+ # ==========================================
+ # Convert icecat values to OpenERP mapline
+ # ==========================================
+ def iceimg2oerpimg(self, cr, uid, form, product, icecat, pathxml, data, context):
+ doc = libxml2.parseFile(pathxml)
+
+ #product image
+ for prod in doc.xpathEval('//Product'):
+ if prod.xpathEval('@HighPic'):
+ image = prod.xpathEval('@HighPic')[0].content
+
+ if image:
+ fname = image.split('/')
+ fname = fname[len(fname)-1]
+
+ path = os.path.abspath( os.path.dirname(__file__) )
+ path += '/icecat/%s' % fname
+ path = re.sub('wizard/', '', path)
+
+ #download image
+ urllib.urlretrieve(image, path)
+
+ #send ftp server
+ ftp = FTP(icecat.ftpip)
+ ftp.login(icecat.ftpusername, icecat.ftppassword)
+ ftp.cwd(icecat.ftpdirectory)
+ f=file(path,'rb')
+ ftp.storbinary('STOR '+os.path.basename(path),f)
+ ftp.quit()
+
+ # add values into product_image
+ # product info
+ long_summary = doc.xpathEval('//SummaryDescription//LongSummaryDescription')
+ description = long_summary[0].content
+ name = description.split('.')[0]
+
+ values = {
+ 'name': name,
+ 'link': 1,
+ 'filename': icecat.ftpurl+fname,
+ 'product_id': product.id,
+ }
+ self.pool.get('product.images').create(cr, uid, values, context)
+ return icecat.ftpurl+fname
+ else:
+ return _("Not exist %s image") % fname
+
+ # ==========================================
+ # wizard
+ # =========================================
+ def import_xml(self, cr, uid, ids, data, context={}):
+ icecat_id = self.pool.get('product.icecat').search(cr, uid, [('active', '=', 1)])[0]
+ icecat = self.pool.get('product.icecat').browse(cr, uid, icecat_id)
+
+ form = self.browse(cr, uid, ids[0])
+
+ if not form.language_id:
+ language = self.pool.get('res.users').browse(cr, uid, uid).context_lang
+ lang = language.split('_')[0]
+ else:
+ language = form.language_id.code
+ lang = language.split('_')[0]
+
+ resimg = ''
+
+ for prod in data['active_ids']:
+ product = self.pool.get('product.product').browse(cr, uid, prod)
+ ean = product.ean13
+
+ if ean:
+ url = 'http://data.icecat.biz/xml_s3/xml_server3.cgi?ean_upc=%s;lang=%s;output=productxml' % (ean, lang)
+ fileName = '%s.xml' % ean
+
+ passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
+ # this creates a password manager
+ passman.add_password(None, url, icecat.username, icecat.password)
+
+ authhandler = urllib2.HTTPBasicAuthHandler(passman)
+ # create the AuthHandler
+
+ openerp = urllib2.build_opener(authhandler)
+
+ urllib2.install_opener(openerp)
+ # All calls to urllib2.urlopen will now use our handler
+
+ try:
+ pagehandle = urllib2.urlopen(url)
+ req = urllib2.Request(url)
+ handle = urllib2.urlopen(req)
+ content = handle.read()
+ #save file
+ pathxml = self.save_file( fileName, content )
+ #import values icecat2oerp
+ result = self.icecat2oerp(cr, uid, form, product, icecat, pathxml, language, data, context)
+ #import image icecat2oerp
+ if icecat.ftp and form.image:
+ resimg += self.iceimg2oerpimg(cr, uid, form, product, icecat, pathxml, data, context)
+ resimg += "\n"
+ else:
+ resimg += _("Import image not avaible")
+ resimg += "\n"
+ except URLError, e:
+ result = e.code
+ else:
+ result = _("EAN not avaible")
+ resimg = False
+
+ values = {
+ 'state':'done',
+ 'result':result,
+ 'resimg':resimg,
+ }
+ self.write(cr, uid, ids, values)
+
+ return True
+
+product_icecat_wizard()
=== added file 'product_icecat/wizard/wizard_product_icecat.xml'
--- product_icecat/wizard/wizard_product_icecat.xml 1970-01-01 00:00:00 +0000
+++ product_icecat/wizard/wizard_product_icecat.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+ <data>
+ <record id="wizard_product_icecat" model="ir.ui.view">
+ <field name="name">product.icecat.wizard.form</field>
+ <field name="model">product.icecat.wizard</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Import icecat XML">
+ <group col="4" colspan="4" attrs="{'invisible':[('state','=','done')]}">
+ <label string="Are you sure to import from icecat values to product?" colspan="4"/>
+ <field name="name"/><newline/>
+ <field name="description"/><newline/>
+ <field name="description_sale"/><newline/>
+ <field name="language_id"/><newline/>
+ <field name="image"/><newline/>
+ <field name="html"/>
+ </group>
+ <group col="4" colspan="4" attrs="{'invisible':[('state','=','first')]}">
+ <field name="result"/><newline/>
+ <field name="resimg"/>
+ </group>
+ <group col="2" colspan="4">
+ <field name="state" invisible="1" />
+ <button string="Cancel" special="cancel" icon="gtk-cancel" states="first" />
+ <button string="update" name="import_xml" type="object" icon="gtk-ok" states="first" />
+ <button string="Close" special="cancel" icon="gtk-ok" states="done" />
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <act_window name="Import Icecat"
+ res_model="product.icecat.wizard"
+ src_model="product.product"
+ view_mode="form"
+ target="new"
+ key2="client_action_multi"
+ id="act_product_icecat"
+ groups="base.group_extended"/>
+ </data>
+</openerp>
=== added directory 'product_images_olbs'
=== renamed directory 'product_images_olbs' => 'product_images_olbs.moved'
=== added file 'product_images_olbs/__init__.py'
--- product_images_olbs/__init__.py 1970-01-01 00:00:00 +0000
+++ product_images_olbs/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,20 @@
+#########################################################################
+# Copyright (C) 2009 Sharoon Thomas Open Labs Business Solutions #
+# #
+#This program is free software: you can redistribute it and/or modify #
+#it under the terms of the GNU General Public License as published by #
+#the Free Software Foundation, either version 3 of the License, or #
+#(at your option) any later version. #
+# #
+#This program is distributed in the hope that it will be useful, #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+#GNU General Public License for more details. #
+# #
+#You should have received a copy of the GNU General Public License #
+#along with this program. If not, see <http://www.gnu.org/licenses/>. #
+#########################################################################
+
+import product_images
+import product
+import company
=== added file 'product_images_olbs/__openerp__.py'
--- product_images_olbs/__openerp__.py 1970-01-01 00:00:00 +0000
+++ product_images_olbs/__openerp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,42 @@
+#########################################################################
+# Copyright (C) 2009 Sharoon Thomas, Open Labs Business solutions #
+# #
+#This program is free software: you can redistribute it and/or modify #
+#it under the terms of the GNU General Public License as published by #
+#the Free Software Foundation, either version 3 of the License, or #
+#(at your option) any later version. #
+# #
+#This program is distributed in the hope that it will be useful, #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+#GNU General Public License for more details. #
+# #
+#You should have received a copy of the GNU General Public License #
+#along with this program. If not, see <http://www.gnu.org/licenses/>. #
+#########################################################################
+
+{
+ "name" : "Product Image Gallery",
+ "version" : "6.1.1",
+ "author" : "Sharoon Thomas, Open Labs Business Solutions",
+ "website" : "http://openlabs.co.in/",
+ "category" : "Added functionality - Product Extension",
+ "depends" : ['product_sequence'],
+ "description": """
+ This Module implements an Image Gallery for products.
+ You can add images against every product.
+
+ This module is generic but built for Magento ERP connector and
+ the upcoming e-commerce system for Open ERP by Open Labs
+ """,
+ "init_xml": [],
+ "update_xml": [
+ 'security/ir.model.access.csv',
+ 'views/product_images_view.xml',
+ 'views/company_view.xml'
+ ],
+ "installable": True,
+ "active": False,
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== added file 'product_images_olbs/company.py'
--- product_images_olbs/company.py 1970-01-01 00:00:00 +0000
+++ product_images_olbs/company.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,39 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# Author Nicolas Bessi & Guewen Baconnier. Copyright Camptocamp SA
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from openerp.osv.orm import Model
+from openerp.osv import fields
+
+class ResCompany(Model):
+ """Override company to add images configuration"""
+ _inherit = "res.company"
+ _columns = {
+ 'local_media_repository':fields.char(
+ 'Images Repository Path',
+ size=256,
+ help='Local mounted path on OpenERP server where all your images are stored.'
+ ),
+ }
+
+ def get_local_media_repository(self, cr, uid, id=None, context=None):
+ if id:
+ return self.browse(cr, uid, id, context=context).local_media_repository
+ user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
+ return user.company_id.local_media_repository
=== added directory 'product_images_olbs/i18n'
=== added file 'product_images_olbs/i18n/sv.po'
--- product_images_olbs/i18n/sv.po 1970-01-01 00:00:00 +0000
+++ product_images_olbs/i18n/sv.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,22 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_images_olbs
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.14\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2010-11-22 10:19:32+0000\n"
+"PO-Revision-Date: 2010-11-22 10:19:32+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_images_olbs
+#: model:ir.module.module,shortdesc:product_images_olbs.module_meta_information
+msgid "Product Image Gallery"
+msgstr "Product Image Gallery"
+
=== added file 'product_images_olbs/product.py'
--- product_images_olbs/product.py 1970-01-01 00:00:00 +0000
+++ product_images_olbs/product.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,109 @@
+# -*- encoding: utf-8 -*-
+#########################################################################
+# Copyright (C) 2009 Sharoon Thomas, Open Labs Business solutions #
+# Copyright (C) 2011 Akretion Sébastien BEAU sebastien.beau@xxxxxxxxxxxx#
+# #
+#This program is free software: you can redistribute it and/or modify #
+#it under the terms of the GNU General Public License as published by #
+#the Free Software Foundation, either version 3 of the License, or #
+#(at your option) any later version. #
+# #
+#This program is distributed in the hope that it will be useful, #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+#GNU General Public License for more details. #
+# #
+#You should have received a copy of the GNU General Public License #
+#along with this program. If not, see <http://www.gnu.org/licenses/>. #
+#########################################################################
+import os
+import shutil
+import logging
+import base64, urllib
+
+from openerp.osv.orm import Model
+from openerp.osv import fields
+
+class product_product(Model):
+ _inherit = "product.product"
+
+ def copy(self, cr, uid, id, default=None, context=None):
+ if not default:
+ default = {}
+ original = self.read(cr, uid, id, fields=['default_code', 'image_ids'], context=context)
+ default.update({
+ 'images_ids': False,
+ })
+ local_media_repository = self.pool.get('res.company').get_local_media_repository(cr, uid, context=context)
+ if local_media_repository:
+ if original['image_ids']:
+ old_path = os.path.join(local_media_repository, original['default_code'])
+ if os.path.isdir(old_path):
+ try:
+ shutil.copytree(old_path, old_path + '-copy')
+ except:
+ logger = logging.getLogger('product_images_olbs')
+ logger.exception('error while trying to copy images from %s to %s', old_path, old_path+'.copy')
+
+ return super(product_product, self).copy(cr, uid, id, default, context=context)
+
+ def get_main_image(self, cr, uid, id, context=None):
+ if isinstance(id, list):
+ id = id[0]
+ images_ids = self.read(cr, uid, id, ['image_ids'], context=context)['image_ids']
+ if images_ids:
+ return images_ids[0]
+ return False
+
+ def _get_main_image(self, cr, uid, ids, field_name, arg, context=None):
+ res = {}
+ img_obj = self.pool.get('product.images')
+ for id in ids:
+ image_id = self.get_main_image(cr, uid, id, context=context)
+ if image_id:
+ image = img_obj.browse(cr, uid, image_id, context=context)
+ res[id] = image.file
+ else:
+ res[id] = False
+ return res
+
+ _columns = {
+ 'image_ids':fields.one2many(
+ 'product.images',
+ 'product_id',
+ 'Product Images'
+ ),
+ 'product_image': fields.function(_get_main_image, type="binary", method=True),
+ }
+
+ def write(self, cr, uid, ids, vals, context=None):
+ if isinstance(ids, (int, long)):
+ ids = [ids]
+ # here we expect that the write on default_code is always on 1 product because there is an unique constraint on the default code
+ if vals.get('default_code', False) and ids:
+ local_media_repository = self.pool.get('res.company').get_local_media_repository(cr, uid, context=context)
+ if local_media_repository:
+ old_product = self.read(cr, uid, ids[0], ['default_code', 'image_ids'], context=context)
+ res = super(product_product, self).write(cr, uid, ids, vals, context=context)
+ if old_product['image_ids']:
+ if old_product['default_code'] != vals['default_code']:
+ old_path = os.path.join(local_media_repository, old_product['default_code'])
+ if os.path.isdir(old_path):
+ os.rename(old_path, os.path.join(local_media_repository, vals['default_code']))
+ return res
+ return super(product_product, self).write(cr, uid, ids, vals, context=context)
+
+ def create_image_from_url(self, cr, uid, id, url, image_name=None, context=None):
+ (filename, header) = urllib.urlretrieve(url)
+ f = open(filename , 'rb')
+ data = f.read()
+ f.close()
+ img = base64.encodestring(data)
+ filename, extention = os.path.splitext(os.path.basename(url))
+ data = {'name': image_name or filename,
+ 'extention': extention,
+ 'file': img,
+ 'product_id': id,
+ }
+ new_image_id = self.pool.get('product.images').create(cr, uid, data, context=context)
+ return True
=== added file 'product_images_olbs/product_images.py'
--- product_images_olbs/product_images.py 1970-01-01 00:00:00 +0000
+++ product_images_olbs/product_images.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,174 @@
+# -*- encoding: utf-8 -*-
+#########################################################################
+# Copyright (C) 2009 Sharoon Thomas, Open Labs Business solutions #
+# Copyright (C) 2011 Akretion Sébastien BEAU sebastien.beau@xxxxxxxxxxxx#
+# #
+#This program is free software: you can redistribute it and/or modify #
+#it under the terms of the GNU General Public License as published by #
+#the Free Software Foundation, either version 3 of the License, or #
+#(at your option) any later version. #
+# #
+#This program is distributed in the hope that it will be useful, #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+#GNU General Public License for more details. #
+# #
+#You should have received a copy of the GNU General Public License #
+#along with this program. If not, see <http://www.gnu.org/licenses/>. #
+#########################################################################
+from openerp.osv.orm import Model
+from openerp.osv import fields
+from openerp.osv.osv import except_osv
+import base64, urllib
+from tools.translate import _
+import os
+
+import logging
+_logger = logging.getLogger(__name__)
+
+#TODO find a good solution in order to roll back changed done on file system
+#TODO add the posibility to move from a store system to an other (example : moving existing image on database to file system)
+
+class product_images(Model):
+ "Products Image gallery"
+ _name = "product.images"
+ _description = __doc__
+ _table = "product_images"
+
+ def unlink(self, cr, uid, ids, context=None):
+ if isinstance(ids, (int, long)):
+ ids = [ids]
+ for image in self.browse(cr, uid, ids, context=context):
+ full_path = self._image_path(cr, uid, image, context=context)
+ if full_path:
+ os.path.isfile(full_path) and os.remove(full_path)
+ return super(product_images, self).unlink(cr, uid, ids, context=context)
+
+ def create(self, cr, uid, vals, context=None):
+ if vals.get('name', False) and not vals.get('extention', False):
+ vals['name'], vals['extention'] = os.path.splitext(vals['name'])
+ return super(product_images, self).create(cr, uid, vals, context=context)
+
+ def write(self, cr, uid, ids, vals, context=None):
+ if not isinstance(ids, list):
+ ids = [ids]
+ if vals.get('name', False) and not vals.get('extention', False):
+ vals['name'], vals['extention'] = os.path.splitext(vals['name'])
+ upd_ids = ids[:]
+ if vals.get('name', False) or vals.get('extention', False):
+ images = self.browse(cr, uid, upd_ids, context=context)
+ for image in images:
+ old_full_path = self._image_path(cr, uid, image, context=context)
+ if not old_full_path:
+ continue
+ # all the stuff below is there to manage the files on the filesystem
+ if vals.get('name', False) and (image.name != vals['name']) \
+ or vals.get('extention', False) and (image.extention != vals['extention']):
+ super(product_images, self).write(
+ cr, uid, image.id, vals, context=context)
+ upd_ids.remove(image.id)
+ if 'file' in vals:
+ # a new image have been loaded we should remove the old image
+ # TODO it's look like there is something wrong with function
+ # field in openerp indeed the preview is always added in the write :(
+ if os.path.isfile(old_full_path):
+ os.remove(old_full_path)
+ else:
+ new_image = self.browse(cr, uid, image.id, context=context)
+ new_full_path = self._image_path(cr, uid, new_image, context=context)
+ #we have to rename the image on the file system
+ if os.path.isfile(old_full_path):
+ os.rename(old_full_path, new_full_path)
+ return super(product_images, self).write(cr, uid, upd_ids, vals, context=context)
+
+ def _image_path(self, cr, uid, image, context=None):
+ full_path = False
+ local_media_repository = self.pool.get('res.company').\
+ get_local_media_repository(cr, uid, context=context)
+ if local_media_repository:
+ full_path = os.path.join(
+ local_media_repository,
+ image.product_id.default_code,
+ '%s%s' % (image.name or '', image.extention or ''))
+ return full_path
+
+ def get_image(self, cr, uid, id, context=None):
+ image = self.browse(cr, uid, id, context=context)
+ if image.link:
+ if image.url:
+ (filename, header) = urllib.urlretrieve(image.url)
+ with open(filename , 'rb') as f:
+ img = base64.b64encode(f.read())
+ else:
+ return False
+ else:
+ try:
+ if isinstance(image.product_id.default_code, bool):
+ _logger.debug('product not completely setup, no image available')
+ full_path = False
+ else:
+ full_path = self._image_path(cr, uid, image, context=context)
+ except Exception, e:
+ _logger.error("Can not find the path for image %s: %s", id, e, exc_info=True)
+ return False
+ if full_path:
+ if os.path.exists(full_path):
+ try:
+ with open(full_path, 'rb') as f:
+ img = base64.b64encode(f.read())
+ except Exception, e:
+ _logger.error("Can not open the image %s, error : %s", full_path, e, exc_info=True)
+ return False
+ else:
+ _logger.error("The image %s doesn't exist ", full_path)
+ return False
+ else:
+ img = image.file_db_store
+ return img
+
+ def _get_image(self, cr, uid, ids, field_name, arg, context=None):
+ res = {}
+ for each in ids:
+ res[each] = self.get_image(cr, uid, each, context=context)
+ return res
+
+ def _check_filestore(self, image_filestore):
+ """check if the filestore is created, if not it create it automatically"""
+ try:
+ dir_path = os.path.dirname(image_filestore)
+ if not os.path.exists(dir_path):
+ os.makedirs(dir_path)
+ except OSError, e:
+ raise except_osv(_('Error'), _('The image filestore can not be created, %s')%e)
+ return True
+
+ def _save_file(self, path, b64_file):
+ """Save a file encoded in base 64"""
+ self._check_filestore(path)
+ with open(path, 'w') as ofile:
+ ofile.write(base64.b64decode(b64_file))
+ return True
+
+ def _set_image(self, cr, uid, id, name, value, arg, context=None):
+ image = self.browse(cr, uid, id, context=context)
+ full_path = self._image_path(cr, uid, image, context=context)
+ if full_path:
+ return self._save_file(full_path, value)
+ return self.write(cr, uid, id, {'file_db_store' : value}, context=context)
+
+ _columns = {
+ 'name':fields.char('Image Title', size=100, required=True),
+ 'extention': fields.char('file extention', size=6),
+ 'link':fields.boolean('Link?', help="Images can be linked from files on your file system or remote (Preferred)"),
+ 'file_db_store':fields.binary('Image stored in database'),
+ 'file':fields.function(_get_image, fnct_inv=_set_image, type="binary", filters='*.png,*.jpg,*.gif'),
+ 'url':fields.char('File Location', size=250),
+ 'comments':fields.text('Comments'),
+ 'product_id':fields.many2one('product.product', 'Product')
+ }
+ _defaults = {
+ 'link': lambda *a: False,
+ }
+ _sql_constraints = [('uniq_name_product_id', 'UNIQUE(product_id, name)',
+ _('A product can have only one image with the same name'))]
+
=== added directory 'product_images_olbs/security'
=== added file 'product_images_olbs/security/ir.model.access.csv'
--- product_images_olbs/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
+++ product_images_olbs/security/ir.model.access.csv 2013-01-17 10:06:27 +0000
@@ -0,0 +1,3 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_product_images_olbs_product_images","product_images_olbs_product_images","model_product_images","base.group_user",1,0,0,0
+"access_product_images_olbs_product_images_manager","product_images_olbs_product_images","model_product_images","base.group_sale_manager",1,1,1,1
=== added directory 'product_images_olbs/views'
=== added file 'product_images_olbs/views/company_view.xml'
--- product_images_olbs/views/company_view.xml 1970-01-01 00:00:00 +0000
+++ product_images_olbs/views/company_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,18 @@
+<openerp>
+ <data>
+ <record model="ir.ui.view" id="view_company_form_product_images">
+ <field name="name">res.company.form.inherit</field>
+ <field name="model">res.company</field>
+ <field name="inherit_id" ref="base.view_company_form"/>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <notebook position="inside">
+ <page string="Product images">
+ <field name="local_media_repository"/>
+ </page>
+ </notebook>
+ </field>
+ </record>
+ </data>
+</openerp>
+
=== added file 'product_images_olbs/views/product_images_view.xml'
--- product_images_olbs/views/product_images_view.xml 1970-01-01 00:00:00 +0000
+++ product_images_olbs/views/product_images_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+ <data>
+ <record id="view_product_image_form" model="ir.ui.view">
+ <field name="name">product.images.form</field>
+ <field name="model">product.images</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Product Images">
+ <notebook colspan="4">
+ <page string="Image">
+ <group col="6" colspan="4">
+ <field name="name" colspan="2" />
+ <field name="extention" colspan="2" />
+ <field name="link" colspan="2" />
+ </group>
+ <group attrs="{'invisible':[('link','=',0)]}" colspan="4">
+ <separator string="File Location and Preview (Only when saved)" colspan="4"/>
+ <field name="url" colspan="4" widget="url" nolabel="1"/>
+ </group>
+ <field name="file" widget="image" nolabel="1" filename="name" colspan="4" attrs="{'readonly':[('link','!=',0)]}"/>
+ </page>
+ <page string="Comments">
+ <field name="comments" nolabel="1" colspan="4" />
+ </page>
+ </notebook>
+ </form>
+ </field>
+ </record>
+ <record id="view_product_image_tree" model="ir.ui.view">
+ <field name="name">product.images.tree</field>
+ <field name="model">product.images</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Product Images">
+ <field name="name" select="1" />
+ <field name="comments" select="2" />
+ </tree>
+ </field>
+ </record>
+ <record id="view_product_form_img_inh" model="ir.ui.view">
+ <field name="name">product.product.images</field>
+ <field name="model">product.product</field>
+ <field name="inherit_id" ref="product.product_normal_form_view" />
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <xpath expr="/form/notebook" position="inside">
+ <page string="Images">
+ <field name="image_ids" nolabel="1" />
+ </page>
+ </xpath>
+ </field>
+ </record>
+ </data>
+</openerp>
=== added directory 'product_index'
=== renamed directory 'product_index' => 'product_index.moved'
=== added file 'product_index/__init__.py'
--- product_index/__init__.py 1970-01-01 00:00:00 +0000
+++ product_index/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,23 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import product_index
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_index/__terp__.py'
--- product_index/__terp__.py 1970-01-01 00:00:00 +0000
+++ product_index/__terp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,34 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+{
+ "name" : "Manage indexes on products prices",
+ "version" : "1.0",
+ "author" : "Tiny",
+ "category" : "Generic Modules/Sales & Purchases",
+ "website": "http://www.openerp.com",
+ "depends" : ["product"],
+ "demo_xml" : ['product.index.csv'],
+ "init_xml" : [],
+ "update_xml" : ['security/ir.model.access.csv','product_data.xml', "product_index_view.xml", "product_view.xml"],
+ "active": False,
+ "installable": True
+}
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added directory 'product_index/i18n'
=== added file 'product_index/i18n/es.po'
--- product_index/i18n/es.po 1970-01-01 00:00:00 +0000
+++ product_index/i18n/es.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,166 @@
+# Spanish translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2009-11-25 13:30+0000\n"
+"PO-Revision-Date: 2011-08-27 13:47+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Spanish <es@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_index
+#: model:ir.model,name:product_index.model_product_index
+msgid "Index"
+msgstr "Índice"
+
+#. module: product_index
+#: model:product.price.type,name:product_index.buyer_price_index
+#: field:product.product,buyer_price_index:0
+msgid "Indexed buyer price"
+msgstr ""
+
+#. module: product_index
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+"¡El nombre del objeto debe empezar con x_ y no contener ningún carácter "
+"especial!"
+
+#. module: product_index
+#: model:ir.ui.menu,name:product_index.menu_product_config_index
+#: view:product.index:0
+#: view:product.product:0
+msgid "Indexes"
+msgstr "Índices"
+
+#. module: product_index
+#: field:product.index,code:0
+msgid "Index code"
+msgstr "Código del índice"
+
+#. module: product_index
+#: model:ir.ui.menu,name:product_index.menu_product_config_new_index
+msgid "New index"
+msgstr "Nuevo índice"
+
+#. module: product_index
+#: view:product.index:0
+#: field:product.index,rate_ids:0
+msgid "Rates"
+msgstr "Tasas"
+
+#. module: product_index
+#: model:product.price.type,name:product_index.buyer_price
+#: field:product.product,buyer_price:0
+msgid "Buyer price"
+msgstr "Precio comprador"
+
+#. module: product_index
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr "Nombre del modelo inválido en la definición de acción."
+
+#. module: product_index
+#: model:ir.actions.act_window,name:product_index.action_index_form
+#: model:ir.actions.act_window,name:product_index.action_index_tree
+msgid "product.index"
+msgstr "índice.producto"
+
+#. module: product_index
+#: view:product.index:0
+#: field:product.index.rate,index_id:0
+msgid "index"
+msgstr "índice"
+
+#. module: product_index
+#: model:product.price.type,name:product_index.list_price_index
+#: field:product.product,list_price_index:0
+msgid "Indexed list price"
+msgstr ""
+
+#. module: product_index
+#: view:product.product:0
+#: field:product.product,index_purchase:0
+msgid "Purchase indexes"
+msgstr ""
+
+#. module: product_index
+#: field:product.index.rate,name:0
+msgid "Date"
+msgstr "Fecha"
+
+#. module: product_index
+#: view:product.product:0
+msgid "Sale indexes"
+msgstr ""
+
+#. module: product_index
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "¡XML inválido para la definición de la vista!"
+
+#. module: product_index
+#: field:product.product,index_sale:0
+msgid "Sales indexes"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,active:0
+msgid "Active"
+msgstr "Activo"
+
+#. module: product_index
+#: field:product.index,rounding:0
+msgid "Rounding factor"
+msgstr "Factor de redondeo"
+
+#. module: product_index
+#: model:product.price.type,name:product_index.standard_price_index
+#: field:product.product,standard_price_index:0
+msgid "Indexed standard price"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,rate:0
+msgid "Current rate"
+msgstr ""
+
+#. module: product_index
+#: field:product.index.rate,rate:0
+msgid "Rate"
+msgstr "Tasa"
+
+#. module: product_index
+#: view:product.product:0
+msgid "Descriptions"
+msgstr "Descripciones"
+
+#. module: product_index
+#: model:ir.module.module,shortdesc:product_index.module_meta_information
+msgid "Manage indexes on products prices"
+msgstr ""
+
+#. module: product_index
+#: model:ir.model,name:product_index.model_product_index_rate
+msgid "Index Rate"
+msgstr ""
+
+#. module: product_index
+#: field:product.product,index_date:0
+msgid "Index price date"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,name:0
+msgid "Index name"
+msgstr "Nombre del índice"
=== added file 'product_index/i18n/fr_BE.po'
--- product_index/i18n/fr_BE.po 1970-01-01 00:00:00 +0000
+++ product_index/i18n/fr_BE.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,162 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_index
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:30:08+0000\n"
+"PO-Revision-Date: 2009-11-25 13:30:08+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_index
+#: model:ir.model,name:product_index.model_product_index
+msgid "Index"
+msgstr ""
+
+#. module: product_index
+#: model:product.price.type,name:product_index.buyer_price_index
+#: field:product.product,buyer_price_index:0
+msgid "Indexed buyer price"
+msgstr ""
+
+#. module: product_index
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: product_index
+#: model:ir.ui.menu,name:product_index.menu_product_config_index
+#: view:product.index:0
+#: view:product.product:0
+msgid "Indexes"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,code:0
+msgid "Index code"
+msgstr ""
+
+#. module: product_index
+#: model:ir.ui.menu,name:product_index.menu_product_config_new_index
+msgid "New index"
+msgstr ""
+
+#. module: product_index
+#: view:product.index:0
+#: field:product.index,rate_ids:0
+msgid "Rates"
+msgstr ""
+
+#. module: product_index
+#: model:product.price.type,name:product_index.buyer_price
+#: field:product.product,buyer_price:0
+msgid "Buyer price"
+msgstr ""
+
+#. module: product_index
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: product_index
+#: model:ir.actions.act_window,name:product_index.action_index_form
+#: model:ir.actions.act_window,name:product_index.action_index_tree
+msgid "product.index"
+msgstr ""
+
+#. module: product_index
+#: view:product.index:0
+#: field:product.index.rate,index_id:0
+msgid "index"
+msgstr ""
+
+#. module: product_index
+#: model:product.price.type,name:product_index.list_price_index
+#: field:product.product,list_price_index:0
+msgid "Indexed list price"
+msgstr ""
+
+#. module: product_index
+#: view:product.product:0
+#: field:product.product,index_purchase:0
+msgid "Purchase indexes"
+msgstr ""
+
+#. module: product_index
+#: field:product.index.rate,name:0
+msgid "Date"
+msgstr ""
+
+#. module: product_index
+#: view:product.product:0
+msgid "Sale indexes"
+msgstr ""
+
+#. module: product_index
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_index
+#: field:product.product,index_sale:0
+msgid "Sales indexes"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,active:0
+msgid "Active"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,rounding:0
+msgid "Rounding factor"
+msgstr ""
+
+#. module: product_index
+#: model:product.price.type,name:product_index.standard_price_index
+#: field:product.product,standard_price_index:0
+msgid "Indexed standard price"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,rate:0
+msgid "Current rate"
+msgstr ""
+
+#. module: product_index
+#: field:product.index.rate,rate:0
+msgid "Rate"
+msgstr ""
+
+#. module: product_index
+#: view:product.product:0
+msgid "Descriptions"
+msgstr ""
+
+#. module: product_index
+#: model:ir.module.module,shortdesc:product_index.module_meta_information
+msgid "Manage indexes on products prices"
+msgstr ""
+
+#. module: product_index
+#: model:ir.model,name:product_index.model_product_index_rate
+msgid "Index Rate"
+msgstr ""
+
+#. module: product_index
+#: field:product.product,index_date:0
+msgid "Index price date"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,name:0
+msgid "Index name"
+msgstr ""
+
=== added file 'product_index/i18n/product_index.pot'
--- product_index/i18n/product_index.pot 1970-01-01 00:00:00 +0000
+++ product_index/i18n/product_index.pot 2013-01-17 10:06:27 +0000
@@ -0,0 +1,162 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_index
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:30:08+0000\n"
+"PO-Revision-Date: 2009-11-25 13:30:08+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_index
+#: model:ir.model,name:product_index.model_product_index
+msgid "Index"
+msgstr ""
+
+#. module: product_index
+#: model:product.price.type,name:product_index.buyer_price_index
+#: field:product.product,buyer_price_index:0
+msgid "Indexed buyer price"
+msgstr ""
+
+#. module: product_index
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: product_index
+#: model:ir.ui.menu,name:product_index.menu_product_config_index
+#: view:product.index:0
+#: view:product.product:0
+msgid "Indexes"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,code:0
+msgid "Index code"
+msgstr ""
+
+#. module: product_index
+#: model:ir.ui.menu,name:product_index.menu_product_config_new_index
+msgid "New index"
+msgstr ""
+
+#. module: product_index
+#: view:product.index:0
+#: field:product.index,rate_ids:0
+msgid "Rates"
+msgstr ""
+
+#. module: product_index
+#: model:product.price.type,name:product_index.buyer_price
+#: field:product.product,buyer_price:0
+msgid "Buyer price"
+msgstr ""
+
+#. module: product_index
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: product_index
+#: model:ir.actions.act_window,name:product_index.action_index_form
+#: model:ir.actions.act_window,name:product_index.action_index_tree
+msgid "product.index"
+msgstr ""
+
+#. module: product_index
+#: view:product.index:0
+#: field:product.index.rate,index_id:0
+msgid "index"
+msgstr ""
+
+#. module: product_index
+#: model:product.price.type,name:product_index.list_price_index
+#: field:product.product,list_price_index:0
+msgid "Indexed list price"
+msgstr ""
+
+#. module: product_index
+#: view:product.product:0
+#: field:product.product,index_purchase:0
+msgid "Purchase indexes"
+msgstr ""
+
+#. module: product_index
+#: field:product.index.rate,name:0
+msgid "Date"
+msgstr ""
+
+#. module: product_index
+#: view:product.product:0
+msgid "Sale indexes"
+msgstr ""
+
+#. module: product_index
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_index
+#: field:product.product,index_sale:0
+msgid "Sales indexes"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,active:0
+msgid "Active"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,rounding:0
+msgid "Rounding factor"
+msgstr ""
+
+#. module: product_index
+#: model:product.price.type,name:product_index.standard_price_index
+#: field:product.product,standard_price_index:0
+msgid "Indexed standard price"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,rate:0
+msgid "Current rate"
+msgstr ""
+
+#. module: product_index
+#: field:product.index.rate,rate:0
+msgid "Rate"
+msgstr ""
+
+#. module: product_index
+#: view:product.product:0
+msgid "Descriptions"
+msgstr ""
+
+#. module: product_index
+#: model:ir.module.module,shortdesc:product_index.module_meta_information
+msgid "Manage indexes on products prices"
+msgstr ""
+
+#. module: product_index
+#: model:ir.model,name:product_index.model_product_index_rate
+msgid "Index Rate"
+msgstr ""
+
+#. module: product_index
+#: field:product.product,index_date:0
+msgid "Index price date"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,name:0
+msgid "Index name"
+msgstr ""
+
=== added file 'product_index/i18n/sv.po'
--- product_index/i18n/sv.po 1970-01-01 00:00:00 +0000
+++ product_index/i18n/sv.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,163 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_index
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.14\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:30+0000\n"
+"PO-Revision-Date: 2010-11-22 19:38+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_index
+#: model:ir.model,name:product_index.model_product_index
+msgid "Index"
+msgstr ""
+
+#. module: product_index
+#: model:product.price.type,name:product_index.buyer_price_index
+#: field:product.product,buyer_price_index:0
+msgid "Indexed buyer price"
+msgstr ""
+
+#. module: product_index
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: product_index
+#: model:ir.ui.menu,name:product_index.menu_product_config_index
+#: view:product.index:0
+#: view:product.product:0
+msgid "Indexes"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,code:0
+msgid "Index code"
+msgstr ""
+
+#. module: product_index
+#: model:ir.ui.menu,name:product_index.menu_product_config_new_index
+msgid "New index"
+msgstr ""
+
+#. module: product_index
+#: view:product.index:0
+#: field:product.index,rate_ids:0
+msgid "Rates"
+msgstr ""
+
+#. module: product_index
+#: model:product.price.type,name:product_index.buyer_price
+#: field:product.product,buyer_price:0
+msgid "Buyer price"
+msgstr ""
+
+#. module: product_index
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: product_index
+#: model:ir.actions.act_window,name:product_index.action_index_form
+#: model:ir.actions.act_window,name:product_index.action_index_tree
+msgid "product.index"
+msgstr ""
+
+#. module: product_index
+#: view:product.index:0
+#: field:product.index.rate,index_id:0
+msgid "index"
+msgstr ""
+
+#. module: product_index
+#: model:product.price.type,name:product_index.list_price_index
+#: field:product.product,list_price_index:0
+msgid "Indexed list price"
+msgstr ""
+
+#. module: product_index
+#: view:product.product:0
+#: field:product.product,index_purchase:0
+msgid "Purchase indexes"
+msgstr ""
+
+#. module: product_index
+#: field:product.index.rate,name:0
+msgid "Date"
+msgstr ""
+
+#. module: product_index
+#: view:product.product:0
+msgid "Sale indexes"
+msgstr ""
+
+#. module: product_index
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_index
+#: field:product.product,index_sale:0
+msgid "Sales indexes"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,active:0
+msgid "Active"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,rounding:0
+msgid "Rounding factor"
+msgstr ""
+
+#. module: product_index
+#: model:product.price.type,name:product_index.standard_price_index
+#: field:product.product,standard_price_index:0
+msgid "Indexed standard price"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,rate:0
+msgid "Current rate"
+msgstr ""
+
+#. module: product_index
+#: field:product.index.rate,rate:0
+msgid "Rate"
+msgstr ""
+
+#. module: product_index
+#: view:product.product:0
+msgid "Descriptions"
+msgstr ""
+
+#. module: product_index
+#: model:ir.module.module,shortdesc:product_index.module_meta_information
+msgid "Manage indexes on products prices"
+msgstr ""
+
+#. module: product_index
+#: model:ir.model,name:product_index.model_product_index_rate
+msgid "Index Rate"
+msgstr ""
+
+#. module: product_index
+#: field:product.product,index_date:0
+msgid "Index price date"
+msgstr ""
+
+#. module: product_index
+#: field:product.index,name:0
+msgid "Index name"
+msgstr ""
=== added file 'product_index/product.index.csv'
--- product_index/product.index.csv 1970-01-01 00:00:00 +0000
+++ product_index/product.index.csv 2013-01-17 10:06:27 +0000
@@ -0,0 +1,5 @@
+code,name,rounding,rate_ids/name,rate_ids/rate
+EMP,Employé,1.0,2007-02-18,1.5
+,,,2006-02-18,1.3
+,,,2005-02-18,1.1
+,,,2004-02-18,1.0
=== added file 'product_index/product_data.xml'
--- product_index/product_data.xml 1970-01-01 00:00:00 +0000
+++ product_index/product_data.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+<data>
+
+ <record model="product.price.type" id="buyer_price">
+ <field name="name">Buyer price</field>
+ <field name="field">buyer_price</field>
+ <field name="currency_id" ref="base.EUR"/>
+ </record>
+
+ <record model="product.price.type" id="buyer_price_index">
+ <field name="name">Indexed buyer price</field>
+ <field name="field">buyer_price_index</field>
+ <field name="currency_id" ref="base.EUR"/>
+ </record>
+
+ <record model="product.price.type" id="list_price_index">
+ <field name="name">Indexed list price</field>
+ <field name="field">list_price_index</field>
+ <field name="currency_id" ref="base.EUR"/>
+ </record>
+
+ <record model="product.price.type" id="standard_price_index">
+ <field name="name">Indexed standard price</field>
+ <field name="field">standard_price_index</field>
+ <field name="currency_id" ref="base.EUR"/>
+ </record>
+
+</data>
+</openerp>
=== added file 'product_index/product_index.py'
--- product_index/product_index.py 1970-01-01 00:00:00 +0000
+++ product_index/product_index.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,121 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import time
+import netsvc
+from osv import fields, osv
+
+class product_index(osv.osv):
+ def _current_rate(self, cr, uid, ids, name, arg, context={}):
+ res={}
+ date = context.get('date', time.strftime('%Y-%m-%d'))
+ for id in ids:
+ cr.execute("SELECT index_id, rate FROM product_index_rate WHERE index_id = %s AND name <= '%s' ORDER BY name desc LIMIT 1" % (id, date))
+ if cr.rowcount:
+ id, rate=cr.fetchall()[0]
+ res[id]=rate
+ else:
+ res[id]=0
+ return res
+ _name = "product.index"
+ _description = "Index"
+ _columns = {
+ 'name': fields.char('Index name', size=32, required=True),
+ 'code': fields.char('Index code', size=3),
+ 'rate': fields.function(_current_rate, method=True, string='Current rate',digits=(12,6)),
+ 'rate_ids': fields.one2many('product.index.rate', 'index_id', 'Rates'),
+ 'rounding': fields.float('Rounding factor', digits=(12,6)),
+ 'active': fields.boolean('Active'),
+ }
+ _sql_constraints = [
+ ('rounding_zero', 'CHECK (rounding>0)', 'The rounding must be > 0 !')
+ ]
+ _order = 'name'
+ _defaults = {
+ 'active': lambda *a: 1,
+ }
+ _order = "code"
+
+ def round(self, cr, uid, index, amount, context={}):
+ return round(amount / index.rounding) * index.rounding
+
+ def compute(self, cr, uid, index, amount, date_from, date_to=None, round=True, context={}):
+ if not date_to:
+ date_to = time.strftime('%Y-%m-%d')
+ cr.execute('select rate from product_index_rate where name<=%s and index_id=%s order by name desc limit 1', (date_from, index.id))
+ ifrom = cr.rowcount and cr.fetchone()[0] or 1.0
+ cr.execute('select rate from product_index_rate where name<=%s and index_id=%s order by name desc limit 1', (date_to, index.id))
+ ito = cr.rowcount and cr.fetchone()[0] or 1.0
+ val = amount * ito / ifrom
+ if round:
+ val = self.round(cr, uid, index, val)
+ return val
+product_index()
+
+class product_index_rate(osv.osv):
+ _name = "product.index.rate"
+ _description = "Index Rate"
+ _columns = {
+ 'name': fields.date('Date', required=True, select=True),
+ 'rate': fields.float('Rate', digits=(12,6), required=True),
+ 'index_id': fields.many2one('product.index', 'index', readonly=True),
+ }
+ _defaults = {
+ 'name': lambda *a: time.strftime('%Y-%m-%d'),
+ }
+ _order = "name desc"
+product_index_rate()
+
+
+class product_index(osv.osv):
+ _inherit = 'product.product'
+ def _current_rate(self, cr, uid, ids, name, arg, context={}):
+ res=dict(map(lambda x: (x,0.0), ids))
+ if not name [-6:]=='_index':
+ raise 'The field name should end by _index !'
+ fname = name[:-6]
+ for product in self.browse(cr, uid, ids, context):
+ val = getattr(product, fname)
+ if fname in ('list_price',):
+ ifields = product.index_sale
+ else:
+ ifields = product.index_purchase
+ for i in ifields:
+ val = self.pool.get('product.index').compute(cr, uid, i, val, product.index_date)
+ res[product.id] = val
+ return res
+ _columns = {
+ 'buyer_price':fields.float('Buyer price'),
+ 'index_sale': fields.many2many('product.index', 'product_index_sale_rel', 'product_id', 'index_id', 'Sales indexes'),
+ 'index_purchase': fields.many2many('product.index', 'product_index_purchase_rel', 'product_id', 'index_id', 'Purchase indexes'),
+
+ 'index_date': fields.date('Index price date', required=True),
+
+ 'list_price_index': fields.function(_current_rate, method=True, string='Indexed list price',digits=(12,6)),
+ 'standard_price_index': fields.function(_current_rate, method=True, string='Indexed standard price',digits=(12,6)),
+ 'buyer_price_index': fields.function(_current_rate, method=True, string='Indexed buyer price',digits=(12,6)),
+ }
+ _defaults = {
+ 'buyer_price': lambda *args: 0.0,
+ 'index_date': lambda *args: time.strftime('%Y-%m-%d')
+ }
+product_index()
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_index/product_index_view.xml'
--- product_index/product_index_view.xml 1970-01-01 00:00:00 +0000
+++ product_index/product_index_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+<data>
+
+ #---------------------------------------------------------
+ # Indexes
+ #---------------------------------------------------------
+ <record model="ir.ui.view" id="view_index_tree">
+ <field name="name">product.index.tree</field>
+ <field name="model">product.index</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Indexes">
+ <field name="name"/>
+ <field name="code"/>
+ <field name="rate"/>
+ <field name="rounding"/>
+ <field name="active" />
+ </tree>
+ </field>
+ </record>
+ <record model="ir.ui.view" id="view_index_form">
+ <field name="name">product.index.form</field>
+ <field name="model">product.index</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="index">
+ <field name="name" select="1" colspan="3"/>
+ <field name="code" select="1"/>
+ <field name="rate"/>
+ <field name="rounding"/>
+ <field name="active" select="1"/>
+ <field name="rate_ids" colspan="4" nolabel="1" mode="tree,form">
+ <form string="Rates">
+ <field name="name"/>
+ <field name="rate"/>
+ </form>
+ <tree string="Rates">
+ <field name="name"/>
+ <field name="rate"/>
+ </tree>
+ </field>
+ </form>
+ </field>
+ </record>
+ <record model="ir.actions.act_window" id="action_index_form">
+ <field name="name">product.index</field>
+ <field name="res_model">product.index</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">form,tree</field>
+ </record>
+ <record model="ir.actions.act_window" id="action_index_tree">
+ <field name="name">product.index</field>
+ <field name="res_model">product.index</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form</field>
+ </record>
+
+ <menuitem name="Indexes" id="menu_product_config_index" parent="base.menu_product" action="action_index_tree"/>
+
+ <menuitem name="New index" id="menu_product_config_new_index" parent="menu_product_config_index" action="action_index_form"/>
+
+</data>
+</openerp>
=== added file 'product_index/product_view.xml'
--- product_index/product_view.xml 1970-01-01 00:00:00 +0000
+++ product_index/product_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+
+ <record model="ir.ui.view" id="view_product_form_expiry">
+ <field name="name">product.normal.form</field>
+ <field name="model">product.product</field>
+ <field name="inherit_id" ref="product.product_normal_form_view" />
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <page string="Descriptions" position="before">
+ <page string="Indexes">
+ <field name="buyer_price"/>
+ <field name="index_date" required="1"/>
+ <field name="list_price_index"/>
+ <field name="standard_price_index"/>
+ <field name="buyer_price_index"/>
+ <newline/>
+ <separator string="Sale indexes" colspan="2"/>
+ <separator string="Purchase indexes" colspan="2"/>
+ <field name="index_sale" colspan="2" nolabel="1"/>
+ <field name="index_purchase" colspan="2" nolabel="1"/>
+ </page>
+ </page>
+ </field>
+ </record>
+
+</data>
+</openerp>
=== added directory 'product_index/security'
=== added file 'product_index/security/ir.model.access.csv'
--- product_index/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
+++ product_index/security/ir.model.access.csv 2013-01-17 10:06:27 +0000
@@ -0,0 +1,3 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_product_index","product.index","model_product_index","product.group_uos",1,1,1,1
+"access_product_index_rate","product.index.rate","model_product_index_rate","product.group_uos",1,1,1,1
=== added directory 'product_listprice_upgrade'
=== renamed directory 'product_listprice_upgrade' => 'product_listprice_upgrade.moved'
=== added file 'product_listprice_upgrade/__init__.py'
--- product_listprice_upgrade/__init__.py 1970-01-01 00:00:00 +0000
+++ product_listprice_upgrade/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,22 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+import wizard
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_listprice_upgrade/__terp__.py'
--- product_listprice_upgrade/__terp__.py 1970-01-01 00:00:00 +0000
+++ product_listprice_upgrade/__terp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,38 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+{
+ "name":"Product listprice upgrade",
+ "version":"1.0",
+ "author":"Tiny",
+ "category":"Generic Modules/Inventory Control",
+ "description": """
+ The aim of this module is to allow the automatic upgrade of the field 'List Price' on each product.
+ * added a new price type called 'Internal Pricelist' (currently, we have only 2 price types: Sale and Purchase Pricelist)
+ * Created a wizard button in the menu Products>Pricelist called 'Upgrade Product List Price'
+ * When we have completed the wizard and click on 'Upgrade', it will change the field 'List Price' for all products contained in the categories that we have selected in the wizard
+ """,
+ "depends":["base","product"],
+ "demo_xml":[],
+ "update_xml":['product_wizard.xml','product_data.xml'],
+ "active":False,
+ "installable":True,
+}
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added directory 'product_listprice_upgrade/i18n'
=== added file 'product_listprice_upgrade/i18n/es.po'
--- product_listprice_upgrade/i18n/es.po 1970-01-01 00:00:00 +0000
+++ product_listprice_upgrade/i18n/es.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,114 @@
+# Spanish translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2009-11-25 13:31+0000\n"
+"PO-Revision-Date: 2011-08-27 13:50+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Spanish <es@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_listprice_upgrade
+#: model:ir.ui.menu,name:product_listprice_upgrade.menu_wizard_pricelist
+msgid "Pricelists"
+msgstr "Lista de precios"
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,init:0
+msgid "Select a pricelist "
+msgstr "Seleccione una lista de precios "
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,init,product_category:0
+msgid "Product Category"
+msgstr "Categoría del Producto"
+
+#. module: product_listprice_upgrade
+#: wizard_button:product.listprice,upgrade,end:0
+msgid "End"
+msgstr "Finalizar"
+
+#. module: product_listprice_upgrade
+#: model:ir.actions.wizard,name:product_listprice_upgrade.wizard_product_listprice
+msgid "Upgrade Product list price"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,upgrade,update_products:0
+msgid "Upgraded list price of Products"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:ir.ui.menu,name:product_listprice_upgrade.menu_wizard_pricelist_upgrade
+msgid "Upgrade Product List price"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,upgrade:0
+msgid "Upgraded list price of prodcuts"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_button:product.listprice,init,upgrade:0
+msgid "Upgrade"
+msgstr "Actualizar"
+
+#. module: product_listprice_upgrade
+#: model:ir.module.module,description:product_listprice_upgrade.module_meta_information
+msgid ""
+"\n"
+" The aim of this module is to allow the automatic upgrade of the field "
+"'List Price' on each product.\n"
+" * added a new price type called 'Internal Pricelist' (currently, we have "
+"only 2 price types: Sale and Purchase Pricelist)\n"
+" * Created a wizard button in the menu Products>Pricelist called 'Upgrade "
+"Product List Price'\n"
+" * When we have completed the wizard and click on 'Upgrade', it will "
+"change the field 'List Price' for all products contained in the categories "
+"that we have selected in the wizard\n"
+" "
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,init:0
+msgid "Select Product Categories "
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_button:product.listprice,init,end:0
+msgid "Cancel"
+msgstr "Cancelar"
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,init:0
+msgid "Upgrade list price"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,init,pricelist:0
+msgid "Pricelist"
+msgstr "Lista de precios"
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,init,upgrade:0
+msgid "Upgrade Child categories"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:product.pricelist.type,name:product_listprice_upgrade.pricelist_type_internal
+msgid "Internal Pricelist"
+msgstr "Lista de precios interna"
+
+#. module: product_listprice_upgrade
+#: model:ir.module.module,shortdesc:product_listprice_upgrade.module_meta_information
+msgid "Product listprice upgrade"
+msgstr ""
=== added file 'product_listprice_upgrade/i18n/fr_BE.po'
--- product_listprice_upgrade/i18n/fr_BE.po 1970-01-01 00:00:00 +0000
+++ product_listprice_upgrade/i18n/fr_BE.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,107 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_listprice_upgrade
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:31:04+0000\n"
+"PO-Revision-Date: 2009-11-25 13:31:04+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_listprice_upgrade
+#: model:ir.ui.menu,name:product_listprice_upgrade.menu_wizard_pricelist
+msgid "Pricelists"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,init:0
+msgid "Select a pricelist "
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,init,product_category:0
+msgid "Product Category"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_button:product.listprice,upgrade,end:0
+msgid "End"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:ir.actions.wizard,name:product_listprice_upgrade.wizard_product_listprice
+msgid "Upgrade Product list price"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,upgrade,update_products:0
+msgid "Upgraded list price of Products"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:ir.ui.menu,name:product_listprice_upgrade.menu_wizard_pricelist_upgrade
+msgid "Upgrade Product List price"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,upgrade:0
+msgid "Upgraded list price of prodcuts"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_button:product.listprice,init,upgrade:0
+msgid "Upgrade"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:ir.module.module,description:product_listprice_upgrade.module_meta_information
+msgid "\n"
+" The aim of this module is to allow the automatic upgrade of the field 'List Price' on each product.\n"
+" * added a new price type called 'Internal Pricelist' (currently, we have only 2 price types: Sale and Purchase Pricelist)\n"
+" * Created a wizard button in the menu Products>Pricelist called 'Upgrade Product List Price'\n"
+" * When we have completed the wizard and click on 'Upgrade', it will change the field 'List Price' for all products contained in the categories that we have selected in the wizard\n"
+" "
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,init:0
+msgid "Select Product Categories "
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_button:product.listprice,init,end:0
+msgid "Cancel"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,init:0
+msgid "Upgrade list price"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,init,pricelist:0
+msgid "Pricelist"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,init,upgrade:0
+msgid "Upgrade Child categories"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:product.pricelist.type,name:product_listprice_upgrade.pricelist_type_internal
+msgid "Internal Pricelist"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:ir.module.module,shortdesc:product_listprice_upgrade.module_meta_information
+msgid "Product listprice upgrade"
+msgstr ""
+
=== added file 'product_listprice_upgrade/i18n/product_listprice_upgrade.pot'
--- product_listprice_upgrade/i18n/product_listprice_upgrade.pot 1970-01-01 00:00:00 +0000
+++ product_listprice_upgrade/i18n/product_listprice_upgrade.pot 2013-01-17 10:06:27 +0000
@@ -0,0 +1,107 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_listprice_upgrade
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:31:04+0000\n"
+"PO-Revision-Date: 2009-11-25 13:31:04+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_listprice_upgrade
+#: model:ir.ui.menu,name:product_listprice_upgrade.menu_wizard_pricelist
+msgid "Pricelists"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,init:0
+msgid "Select a pricelist "
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,init,product_category:0
+msgid "Product Category"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_button:product.listprice,upgrade,end:0
+msgid "End"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:ir.actions.wizard,name:product_listprice_upgrade.wizard_product_listprice
+msgid "Upgrade Product list price"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,upgrade,update_products:0
+msgid "Upgraded list price of Products"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:ir.ui.menu,name:product_listprice_upgrade.menu_wizard_pricelist_upgrade
+msgid "Upgrade Product List price"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,upgrade:0
+msgid "Upgraded list price of prodcuts"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_button:product.listprice,init,upgrade:0
+msgid "Upgrade"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:ir.module.module,description:product_listprice_upgrade.module_meta_information
+msgid "\n"
+" The aim of this module is to allow the automatic upgrade of the field 'List Price' on each product.\n"
+" * added a new price type called 'Internal Pricelist' (currently, we have only 2 price types: Sale and Purchase Pricelist)\n"
+" * Created a wizard button in the menu Products>Pricelist called 'Upgrade Product List Price'\n"
+" * When we have completed the wizard and click on 'Upgrade', it will change the field 'List Price' for all products contained in the categories that we have selected in the wizard\n"
+" "
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,init:0
+msgid "Select Product Categories "
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_button:product.listprice,init,end:0
+msgid "Cancel"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,init:0
+msgid "Upgrade list price"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,init,pricelist:0
+msgid "Pricelist"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,init,upgrade:0
+msgid "Upgrade Child categories"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:product.pricelist.type,name:product_listprice_upgrade.pricelist_type_internal
+msgid "Internal Pricelist"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:ir.module.module,shortdesc:product_listprice_upgrade.module_meta_information
+msgid "Product listprice upgrade"
+msgstr ""
+
=== added file 'product_listprice_upgrade/i18n/sv.po'
--- product_listprice_upgrade/i18n/sv.po 1970-01-01 00:00:00 +0000
+++ product_listprice_upgrade/i18n/sv.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,113 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_listprice_upgrade
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.14\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:31+0000\n"
+"PO-Revision-Date: 2010-11-22 22:25+0000\n"
+"Last-Translator: Olivier Dony (OpenERP) <Unknown>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_listprice_upgrade
+#: model:ir.ui.menu,name:product_listprice_upgrade.menu_wizard_pricelist
+msgid "Pricelists"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,init:0
+msgid "Select a pricelist "
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,init,product_category:0
+msgid "Product Category"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_button:product.listprice,upgrade,end:0
+msgid "End"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:ir.actions.wizard,name:product_listprice_upgrade.wizard_product_listprice
+msgid "Upgrade Product list price"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,upgrade,update_products:0
+msgid "Upgraded list price of Products"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:ir.ui.menu,name:product_listprice_upgrade.menu_wizard_pricelist_upgrade
+msgid "Upgrade Product List price"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,upgrade:0
+msgid "Upgraded list price of prodcuts"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_button:product.listprice,init,upgrade:0
+msgid "Upgrade"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:ir.module.module,description:product_listprice_upgrade.module_meta_information
+msgid ""
+"\n"
+" The aim of this module is to allow the automatic upgrade of the field "
+"'List Price' on each product.\n"
+" * added a new price type called 'Internal Pricelist' (currently, we have "
+"only 2 price types: Sale and Purchase Pricelist)\n"
+" * Created a wizard button in the menu Products>Pricelist called 'Upgrade "
+"Product List Price'\n"
+" * When we have completed the wizard and click on 'Upgrade', it will "
+"change the field 'List Price' for all products contained in the categories "
+"that we have selected in the wizard\n"
+" "
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,init:0
+msgid "Select Product Categories "
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_button:product.listprice,init,end:0
+msgid "Cancel"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_view:product.listprice,init:0
+msgid "Upgrade list price"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,init,pricelist:0
+msgid "Pricelist"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: wizard_field:product.listprice,init,upgrade:0
+msgid "Upgrade Child categories"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:product.pricelist.type,name:product_listprice_upgrade.pricelist_type_internal
+msgid "Internal Pricelist"
+msgstr ""
+
+#. module: product_listprice_upgrade
+#: model:ir.module.module,shortdesc:product_listprice_upgrade.module_meta_information
+msgid "Product listprice upgrade"
+msgstr "Product listprice upgrade"
=== added file 'product_listprice_upgrade/product_data.xml'
--- product_listprice_upgrade/product_data.xml 1970-01-01 00:00:00 +0000
+++ product_listprice_upgrade/product_data.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<openerp>
+ <data noupdate="1">
+
+ <record model="product.pricelist.type" id="pricelist_type_internal">
+ <field name="name">Internal Pricelist</field>
+ <field name="key">internal</field>
+ </record>
+ </data>
+</openerp>
=== added file 'product_listprice_upgrade/product_wizard.xml'
--- product_listprice_upgrade/product_wizard.xml 1970-01-01 00:00:00 +0000
+++ product_listprice_upgrade/product_wizard.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" ?>
+<openerp>
+ <data>
+
+ <wizard
+ string="Upgrade Product list price"
+ model="product.pricelist"
+ name="product.listprice"
+ menu="False"
+ id="wizard_product_listprice"/>
+
+ <menuitem name="Pricelists" id="menu_wizard_pricelist" parent="product.menu_main_product"/>
+ <menuitem name="Upgrade Product List price" id="menu_wizard_pricelist_upgrade" parent="menu_wizard_pricelist" action="wizard_product_listprice" type="wizard"/>
+
+ </data>
+</openerp>
=== added directory 'product_listprice_upgrade/wizard'
=== added file 'product_listprice_upgrade/wizard/__init__.py'
--- product_listprice_upgrade/wizard/__init__.py 1970-01-01 00:00:00 +0000
+++ product_listprice_upgrade/wizard/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,22 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+import wizard_product_listprice
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_listprice_upgrade/wizard/wizard_product_listprice.py'
--- product_listprice_upgrade/wizard/wizard_product_listprice.py 1970-01-01 00:00:00 +0000
+++ product_listprice_upgrade/wizard/wizard_product_listprice.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,101 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+
+
+import pooler
+import time
+import wizard
+
+_pricelist_form = '''<?xml version="1.0"?>
+<form string="Upgrade list price">
+ <separator string="Select a pricelist " colspan="4"/>
+ <field name="pricelist" colspan="4" nolabel="1"/>
+ <separator string="Select Product Categories " colspan="4"/>
+ <field name="product_category" colspan="4" nolabel="1"/>
+ <newline/>
+ <field name="upgrade" />
+</form>'''
+
+_done_form = '''<?xml version="1.0"?>
+<form string="Upgraded list price of prodcuts">
+ <field name="update_products"/>
+
+</form>'''
+
+_done_fields = {
+ 'update_products': {'string':'Upgraded list price of Products', 'type':'float', 'readonly': True},
+
+
+}
+
+class wizard_product_pricelist(wizard.interface):
+
+
+ def _get_pricelist(self, cr, uid, context):
+ pricelist_obj=pooler.get_pool(cr.dbname).get('product.pricelist')
+ ids=pricelist_obj.search(cr, uid, [('type', '=', 'internal'),])
+ pricelists=pricelist_obj.browse(cr, uid, ids)
+ return [(pricelist.id, pricelist.name ) for pricelist in pricelists]
+
+ def _upgrade_listprice(self, cr, uid, data, context):
+ self.update_products=0
+ categories_ids=data['form']['product_category']
+ pricelist_obj=pooler.get_pool(cr.dbname).get('product.pricelist')
+ cat_obj = pooler.get_pool(cr.dbname).get('product.category')
+ product_obj = pooler.get_pool(cr.dbname).get('product.product')
+ pricelist_id=data['form']['pricelist']
+
+ def _upgrade(category_id):
+ if data['form']['upgrade']==True:
+ child_ids=cat_obj.search(cr, uid, [('parent_id', '=', category_id),])
+ for child_id in child_ids:
+ _upgrade(child_id)
+ product_ids=product_obj.search(cr, uid, [('categ_id', '=', category_id),])
+ for product_id in product_ids:
+ list_price=pricelist_obj.price_get(cr, uid, [pricelist_id], product_id, 1)
+ product_obj.write(cr, uid, [product_id], {
+ 'list_price': list_price[pricelist_id]})
+ self.update_products += 1
+
+ for category_id in categories_ids[0][2]:
+ _upgrade(category_id)
+
+ return {'update_products':self.update_products}
+
+ _pricelist_fields = {
+ 'pricelist': {'string':'Pricelist', 'type':'many2one', 'relation': 'product.pricelist','domain':[('type','=','internal')], 'required':True},
+ 'product_category': {'string':'Product Category', 'type':'many2many', 'relation': 'product.category', 'required':True},
+ 'upgrade' : {'string':'Upgrade Child categories', 'type':'boolean', 'default': lambda x,y,z: True}
+ }
+
+ states = {
+ 'init': {
+ 'actions': [],
+ 'result': {'type':'form', 'arch':_pricelist_form, 'fields':_pricelist_fields, 'state':[('end','Cancel'),('upgrade','Upgrade')]}
+ },
+ 'upgrade':{
+ 'actions':[_upgrade_listprice],
+ 'result':{'type': 'form', 'arch': _done_form, 'fields': _done_fields,'state':[('end', 'End')]}
+ }
+ }
+wizard_product_pricelist('product.listprice')
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added directory 'product_lot_foundry'
=== renamed directory 'product_lot_foundry' => 'product_lot_foundry.moved'
=== added file 'product_lot_foundry/__init__.py'
--- product_lot_foundry/__init__.py 1970-01-01 00:00:00 +0000
+++ product_lot_foundry/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,25 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import product_lot_foundry
+import sale_order
+import purchase_auto
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_lot_foundry/__terp__.py'
--- product_lot_foundry/__terp__.py 1970-01-01 00:00:00 +0000
+++ product_lot_foundry/__terp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,34 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+{
+ "name" : "Products Lot Foundry",
+ "version" : "1.0",
+ "author" : "Tiny",
+ "category" : "Enterprise Specific Modules/Metal Industries",
+ "depends" : ["base", "account", "product", "stock", "sale"],
+ "init_xml" : [],
+ "demo_xml" : ["product_lot_foundry_demo.xml"],
+ "description": "Lots management for a metal company: cutting, heatcode, sizes",
+ "update_xml" : ["security/ir.model.access.csv","product_lot_foundry_view.xml","sale_order_view.xml"],
+ "active": False,
+ "installable": True
+}
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added directory 'product_lot_foundry/i18n'
=== added file 'product_lot_foundry/i18n/es.po'
--- product_lot_foundry/i18n/es.po 1970-01-01 00:00:00 +0000
+++ product_lot_foundry/i18n/es.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,482 @@
+# Spanish translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2009-11-25 13:31+0000\n"
+"PO-Revision-Date: 2011-08-27 13:53+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Spanish <es@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_lot_foundry
+#: field:stock.production.lot.all,lot_id:0
+#: field:stock.production.lot.reservation,lot_id:0
+msgid "Lot"
+msgstr "Lote"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Lots Assignations"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:product.product:0
+msgid "Dimensions"
+msgstr "Dimensiones"
+
+#. module: product_lot_foundry
+#: model:product.template,name:product_lot_foundry.product_product_ampco21_product_template
+msgid "AMPCO21 plate"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.actions.act_window,name:product_lot_foundry.act_production_product
+#: view:product.lot.foundry.heatcode:0
+#: field:product.lot.foundry.heatcode,lot_ids:0
+#: field:product.product,lot_ids:0
+msgid "Lots"
+msgstr "Muchos"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Automatic Declaration"
+msgstr "Declaración automática"
+
+#. module: product_lot_foundry
+#: constraint:res.company:0
+msgid "Error! You can not create recursive companies."
+msgstr "Error! No puede crear compañias recursivas."
+
+#. module: product_lot_foundry
+#: model:ir.actions.act_window,name:product_lot_foundry.action_heatcode_all
+#: model:ir.ui.menu,name:product_lot_foundry.menu_action_inventory_heat
+msgid "Heat Codes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,quality_info:0
+msgid "Quality Information"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,status:0
+msgid "Status"
+msgstr "Estado"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sale Order Lines"
+msgstr "Líneas del pedido de venta"
+
+#. module: product_lot_foundry
+#: field:product.product,size_x:0
+#: field:sale.order.line,size_x:0
+#: field:stock.production.lot,size_x:0
+#: field:stock.production.lot.reservation,size_x:0
+msgid "Width"
+msgstr "Ancho"
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode,state:0
+msgid "State"
+msgstr "Estado"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Create Invoice"
+msgstr "Crear factura"
+
+#. module: product_lot_foundry
+#: selection:product.lot.foundry.heatcode,state:0
+#: selection:stock.production.lot,status:0
+msgid "Draft"
+msgstr "Borrador"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Set to Draft"
+msgstr "Cambiar a borrador"
+
+#. module: product_lot_foundry
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr "Nombre del modelo inválido en la definición de acción."
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Untaxed amount"
+msgstr "Base imponible"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Compute"
+msgstr "Calcular"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Qty"
+msgstr "Ctdad"
+
+#. module: product_lot_foundry
+#: model:ir.module.module,description:product_lot_foundry.module_meta_information
+msgid "Lots management for a metal company: cutting, heatcode, sizes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,type:0
+msgid "Type"
+msgstr "Tipo"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Invoice Lines"
+msgstr "Líneas de factura"
+
+#. module: product_lot_foundry
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+"¡El nombre del objeto debe empezar con x_ y no contener ningún carácter "
+"especial!"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Recreate Procurement"
+msgstr "Recrear abastecimiento"
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_product_lot_foundry_heatcode
+#: view:product.lot.foundry.heatcode:0
+#: field:product.lot.foundry.heatcode,name:0
+msgid "Heat Code"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:product.lot.foundry.heatcode:0
+msgid "Mechanical Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Procurement Corrected"
+msgstr "Abastecimiento corregido"
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode.chemical,name:0
+#: field:product.lot.foundry.heatcode.mecanical,name:0
+msgid "Property"
+msgstr "Propiedad"
+
+#. module: product_lot_foundry
+#: model:res.company,overdue_msg:product_lot_foundry.main_company_sa
+msgid ""
+"Would your payment have been carried out after this mail was sent, please "
+"consider the present one as void. Do not hesitate to contact our accounting "
+"department"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Invoice Corrected"
+msgstr "Factura corregida"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Manual Description"
+msgstr "Descripción manual"
+
+#. module: product_lot_foundry
+#: field:product.product,size_z:0
+#: field:sale.order.line,size_z:0
+#: field:stock.production.lot,size_z:0
+#: field:stock.production.lot.reservation,size_z:0
+msgid "Thickness"
+msgstr "Grosor"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Total amount"
+msgstr "Cantidad total"
+
+#. module: product_lot_foundry
+#: model:ir.ui.menu,name:product_lot_foundry.menu_action_inventory
+msgid "Inventory Control"
+msgstr "Control inventario"
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_product_lot_foundry_heatcode_chemical
+#: view:product.lot.foundry.heatcode:0
+#: field:product.lot.foundry.heatcode,chemical_ids:0
+msgid "Chemical Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,cutting:0
+msgid "Can be Cutted"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Automatic Reservation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:sale.order.line,prodlot_ids:0
+msgid "Lots Assignation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Confirm Order"
+msgstr "Confirmar pedido"
+
+#. module: product_lot_foundry
+#: selection:product.lot.foundry.heatcode,state:0
+#: selection:stock.production.lot,status:0
+msgid "Valid"
+msgstr "Válido"
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode,date:0
+#: field:stock.production.lot.reservation,date:0
+msgid "Date"
+msgstr "Fecha"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Extra Info"
+msgstr "Información extra"
+
+#. module: product_lot_foundry
+#: field:stock.production.lot.all,name:0
+msgid "Quantity"
+msgstr "Cantidad"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Properties"
+msgstr "Propiedades"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Cancel Order"
+msgstr "Cancelar pedido"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Inventory Moves"
+msgstr "Movimientos de inventario"
+
+#. module: product_lot_foundry
+#: view:product.lot.foundry.heatcode:0
+msgid "Heat code"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:product.product:0
+#: constraint:res.partner:0
+msgid "Error: Invalid EAN,UPC,JPC,GTIN code"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,available:0
+msgid "Availables"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,type:0
+msgid "Bar"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:product.template:0
+msgid "Error: UOS must be in a different category than the UOM"
+msgstr "Error: La UdV debe estar en una categoría diferente que la UdM"
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,type:0
+msgid "Plate"
+msgstr "Matrícula"
+
+#. module: product_lot_foundry
+#: constraint:product.template:0
+msgid ""
+"Error: The default UOM and the purchase UOM must be in the same category."
+msgstr ""
+"Error: La UdM por defecto y la UdM de compra deben estar en la misma "
+"categoría."
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Notes"
+msgstr "Notas"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sale Order"
+msgstr "Pedido de venta"
+
+#. module: product_lot_foundry
+#: field:product.product,auto_picking:0
+msgid "Auto Picking for Production"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode.chemical,value:0
+#: field:product.lot.foundry.heatcode.mecanical,value:0
+msgid "Value"
+msgstr "Valor"
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode.chemical,heatcode_id:0
+#: field:product.lot.foundry.heatcode.mecanical,heatcode_id:0
+#: field:stock.production.lot,heatcode_id:0
+msgid "Heatcode"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,size_y:0
+#: field:stock.production.lot,size_y:0
+#: field:stock.production.lot.reservation,size_y:0
+msgid "Length"
+msgstr "Longitud"
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_stock_production_lot_reservation
+msgid "stock.production.lot.reservation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot.reservation,name:0
+msgid "Reservation"
+msgstr "Reserva"
+
+#. module: product_lot_foundry
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "¡XML inválido para la definición de la vista!"
+
+#. module: product_lot_foundry
+#: model:ir.module.module,shortdesc:product_lot_foundry.module_meta_information
+msgid "Products Lot Foundry"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,status:0
+msgid "Non Conformity"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:stock.production.lot:0
+msgid "Dimension"
+msgstr "Dimensión"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "History"
+msgstr "Histórico"
+
+#. module: product_lot_foundry
+#: help:sale.order.line,prodlot_id:0
+#: help:sale.order.line,prodlot_ids:0
+msgid "Production lot is used to put a serial number on the production"
+msgstr ""
+"Lote de producción se utiliza para poner un número de serie a la producción."
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_stock_production_lot_all
+msgid "stock.production.lot.all"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Recreate Invoice"
+msgstr "Recrear factura"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Related invoices"
+msgstr "Facturas relacionadas"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Other data"
+msgstr "Otros datos"
+
+#. module: product_lot_foundry
+#: view:stock.production.lot:0
+#: field:stock.production.lot,reservation_ids:0
+msgid "Reservations"
+msgstr "Reservas"
+
+#. module: product_lot_foundry
+#: field:sale.order.line,size_y:0
+msgid "Height"
+msgstr "Alto"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "States"
+msgstr "Estados"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sales order lines"
+msgstr "Líneas del pedido de ventas"
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_product_lot_foundry_heatcode_mecanical
+#: field:product.lot.foundry.heatcode,mecanical_ids:0
+msgid "Mecanical Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:sale.order.line,prodlot_id:0
+msgid "Production lot"
+msgstr "Lote producción"
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,status:0
+msgid "Done"
+msgstr "Hecho"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "UoM"
+msgstr "UdM"
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Related packings"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.actions.act_window,name:product_lot_foundry.action_heatcode_draft
+#: model:ir.ui.menu,name:product_lot_foundry.menu_action_inventory_draft_heat
+msgid "Draft Heat Codes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sales order"
+msgstr "Pedido de ventas"
+
+#. module: product_lot_foundry
+#: model:product.template,name:product_lot_foundry.product_product_ampco25_product_template
+msgid "Ampco25 Rectangle Bar"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Order Line"
+msgstr "Línea de pedido"
=== added file 'product_lot_foundry/i18n/fr_BE.po'
--- product_lot_foundry/i18n/fr_BE.po 1970-01-01 00:00:00 +0000
+++ product_lot_foundry/i18n/fr_BE.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,471 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_lot_foundry
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:31:27+0000\n"
+"PO-Revision-Date: 2009-11-25 13:31:27+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_lot_foundry
+#: field:stock.production.lot.all,lot_id:0
+#: field:stock.production.lot.reservation,lot_id:0
+msgid "Lot"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Lots Assignations"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:product.product:0
+msgid "Dimensions"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:product.template,name:product_lot_foundry.product_product_ampco21_product_template
+msgid "AMPCO21 plate"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.actions.act_window,name:product_lot_foundry.act_production_product
+#: view:product.lot.foundry.heatcode:0
+#: field:product.lot.foundry.heatcode,lot_ids:0
+#: field:product.product,lot_ids:0
+msgid "Lots"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Automatic Declaration"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:res.company:0
+msgid "Error! You can not create recursive companies."
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.actions.act_window,name:product_lot_foundry.action_heatcode_all
+#: model:ir.ui.menu,name:product_lot_foundry.menu_action_inventory_heat
+msgid "Heat Codes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,quality_info:0
+msgid "Quality Information"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,status:0
+msgid "Status"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sale Order Lines"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,size_x:0
+#: field:sale.order.line,size_x:0
+#: field:stock.production.lot,size_x:0
+#: field:stock.production.lot.reservation,size_x:0
+msgid "Width"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode,state:0
+msgid "State"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Create Invoice"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:product.lot.foundry.heatcode,state:0
+#: selection:stock.production.lot,status:0
+msgid "Draft"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Set to Draft"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Untaxed amount"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Compute"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Qty"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.module.module,description:product_lot_foundry.module_meta_information
+msgid "Lots management for a metal company: cutting, heatcode, sizes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,type:0
+msgid "Type"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Invoice Lines"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Recreate Procurement"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_product_lot_foundry_heatcode
+#: view:product.lot.foundry.heatcode:0
+#: field:product.lot.foundry.heatcode,name:0
+msgid "Heat Code"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:product.lot.foundry.heatcode:0
+msgid "Mechanical Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Procurement Corrected"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode.chemical,name:0
+#: field:product.lot.foundry.heatcode.mecanical,name:0
+msgid "Property"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:res.company,overdue_msg:product_lot_foundry.main_company_sa
+msgid "Would your payment have been carried out after this mail was sent, please consider the present one as void. Do not hesitate to contact our accounting department"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Invoice Corrected"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Manual Description"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,size_z:0
+#: field:sale.order.line,size_z:0
+#: field:stock.production.lot,size_z:0
+#: field:stock.production.lot.reservation,size_z:0
+msgid "Thickness"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Total amount"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.ui.menu,name:product_lot_foundry.menu_action_inventory
+msgid "Inventory Control"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_product_lot_foundry_heatcode_chemical
+#: view:product.lot.foundry.heatcode:0
+#: field:product.lot.foundry.heatcode,chemical_ids:0
+msgid "Chemical Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,cutting:0
+msgid "Can be Cutted"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Automatic Reservation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:sale.order.line,prodlot_ids:0
+msgid "Lots Assignation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Confirm Order"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:product.lot.foundry.heatcode,state:0
+#: selection:stock.production.lot,status:0
+msgid "Valid"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode,date:0
+#: field:stock.production.lot.reservation,date:0
+msgid "Date"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Extra Info"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot.all,name:0
+msgid "Quantity"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Cancel Order"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Inventory Moves"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:product.lot.foundry.heatcode:0
+msgid "Heat code"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:product.product:0
+#: constraint:res.partner:0
+msgid "Error: Invalid EAN,UPC,JPC,GTIN code"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,available:0
+msgid "Availables"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,type:0
+msgid "Bar"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:product.template:0
+msgid "Error: UOS must be in a different category than the UOM"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,type:0
+msgid "Plate"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:product.template:0
+msgid "Error: The default UOM and the purchase UOM must be in the same category."
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Notes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sale Order"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,auto_picking:0
+msgid "Auto Picking for Production"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode.chemical,value:0
+#: field:product.lot.foundry.heatcode.mecanical,value:0
+msgid "Value"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode.chemical,heatcode_id:0
+#: field:product.lot.foundry.heatcode.mecanical,heatcode_id:0
+#: field:stock.production.lot,heatcode_id:0
+msgid "Heatcode"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,size_y:0
+#: field:stock.production.lot,size_y:0
+#: field:stock.production.lot.reservation,size_y:0
+msgid "Length"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_stock_production_lot_reservation
+msgid "stock.production.lot.reservation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot.reservation,name:0
+msgid "Reservation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.module.module,shortdesc:product_lot_foundry.module_meta_information
+msgid "Products Lot Foundry"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,status:0
+msgid "Non Conformity"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:stock.production.lot:0
+msgid "Dimension"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "History"
+msgstr ""
+
+#. module: product_lot_foundry
+#: help:sale.order.line,prodlot_id:0
+#: help:sale.order.line,prodlot_ids:0
+msgid "Production lot is used to put a serial number on the production"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_stock_production_lot_all
+msgid "stock.production.lot.all"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Recreate Invoice"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Related invoices"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Other data"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:stock.production.lot:0
+#: field:stock.production.lot,reservation_ids:0
+msgid "Reservations"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:sale.order.line,size_y:0
+msgid "Height"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "States"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sales order lines"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_product_lot_foundry_heatcode_mecanical
+#: field:product.lot.foundry.heatcode,mecanical_ids:0
+msgid "Mecanical Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:sale.order.line,prodlot_id:0
+msgid "Production lot"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,status:0
+msgid "Done"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "UoM"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Related packings"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.actions.act_window,name:product_lot_foundry.action_heatcode_draft
+#: model:ir.ui.menu,name:product_lot_foundry.menu_action_inventory_draft_heat
+msgid "Draft Heat Codes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sales order"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:product.template,name:product_lot_foundry.product_product_ampco25_product_template
+msgid "Ampco25 Rectangle Bar"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Order Line"
+msgstr ""
+
=== added file 'product_lot_foundry/i18n/product_lot_foundry.pot'
--- product_lot_foundry/i18n/product_lot_foundry.pot 1970-01-01 00:00:00 +0000
+++ product_lot_foundry/i18n/product_lot_foundry.pot 2013-01-17 10:06:27 +0000
@@ -0,0 +1,471 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_lot_foundry
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:31:27+0000\n"
+"PO-Revision-Date: 2009-11-25 13:31:27+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_lot_foundry
+#: field:stock.production.lot.all,lot_id:0
+#: field:stock.production.lot.reservation,lot_id:0
+msgid "Lot"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Lots Assignations"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:product.product:0
+msgid "Dimensions"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:product.template,name:product_lot_foundry.product_product_ampco21_product_template
+msgid "AMPCO21 plate"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.actions.act_window,name:product_lot_foundry.act_production_product
+#: view:product.lot.foundry.heatcode:0
+#: field:product.lot.foundry.heatcode,lot_ids:0
+#: field:product.product,lot_ids:0
+msgid "Lots"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Automatic Declaration"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:res.company:0
+msgid "Error! You can not create recursive companies."
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.actions.act_window,name:product_lot_foundry.action_heatcode_all
+#: model:ir.ui.menu,name:product_lot_foundry.menu_action_inventory_heat
+msgid "Heat Codes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,quality_info:0
+msgid "Quality Information"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,status:0
+msgid "Status"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sale Order Lines"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,size_x:0
+#: field:sale.order.line,size_x:0
+#: field:stock.production.lot,size_x:0
+#: field:stock.production.lot.reservation,size_x:0
+msgid "Width"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode,state:0
+msgid "State"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Create Invoice"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:product.lot.foundry.heatcode,state:0
+#: selection:stock.production.lot,status:0
+msgid "Draft"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Set to Draft"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Untaxed amount"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Compute"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Qty"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.module.module,description:product_lot_foundry.module_meta_information
+msgid "Lots management for a metal company: cutting, heatcode, sizes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,type:0
+msgid "Type"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Invoice Lines"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Recreate Procurement"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_product_lot_foundry_heatcode
+#: view:product.lot.foundry.heatcode:0
+#: field:product.lot.foundry.heatcode,name:0
+msgid "Heat Code"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:product.lot.foundry.heatcode:0
+msgid "Mechanical Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Procurement Corrected"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode.chemical,name:0
+#: field:product.lot.foundry.heatcode.mecanical,name:0
+msgid "Property"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:res.company,overdue_msg:product_lot_foundry.main_company_sa
+msgid "Would your payment have been carried out after this mail was sent, please consider the present one as void. Do not hesitate to contact our accounting department"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Invoice Corrected"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Manual Description"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,size_z:0
+#: field:sale.order.line,size_z:0
+#: field:stock.production.lot,size_z:0
+#: field:stock.production.lot.reservation,size_z:0
+msgid "Thickness"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Total amount"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.ui.menu,name:product_lot_foundry.menu_action_inventory
+msgid "Inventory Control"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_product_lot_foundry_heatcode_chemical
+#: view:product.lot.foundry.heatcode:0
+#: field:product.lot.foundry.heatcode,chemical_ids:0
+msgid "Chemical Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,cutting:0
+msgid "Can be Cutted"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Automatic Reservation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:sale.order.line,prodlot_ids:0
+msgid "Lots Assignation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Confirm Order"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:product.lot.foundry.heatcode,state:0
+#: selection:stock.production.lot,status:0
+msgid "Valid"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode,date:0
+#: field:stock.production.lot.reservation,date:0
+msgid "Date"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Extra Info"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot.all,name:0
+msgid "Quantity"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Cancel Order"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Inventory Moves"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:product.lot.foundry.heatcode:0
+msgid "Heat code"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:product.product:0
+#: constraint:res.partner:0
+msgid "Error: Invalid EAN,UPC,JPC,GTIN code"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,available:0
+msgid "Availables"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,type:0
+msgid "Bar"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:product.template:0
+msgid "Error: UOS must be in a different category than the UOM"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,type:0
+msgid "Plate"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:product.template:0
+msgid "Error: The default UOM and the purchase UOM must be in the same category."
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Notes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sale Order"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,auto_picking:0
+msgid "Auto Picking for Production"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode.chemical,value:0
+#: field:product.lot.foundry.heatcode.mecanical,value:0
+msgid "Value"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode.chemical,heatcode_id:0
+#: field:product.lot.foundry.heatcode.mecanical,heatcode_id:0
+#: field:stock.production.lot,heatcode_id:0
+msgid "Heatcode"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,size_y:0
+#: field:stock.production.lot,size_y:0
+#: field:stock.production.lot.reservation,size_y:0
+msgid "Length"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_stock_production_lot_reservation
+msgid "stock.production.lot.reservation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot.reservation,name:0
+msgid "Reservation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.module.module,shortdesc:product_lot_foundry.module_meta_information
+msgid "Products Lot Foundry"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,status:0
+msgid "Non Conformity"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:stock.production.lot:0
+msgid "Dimension"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "History"
+msgstr ""
+
+#. module: product_lot_foundry
+#: help:sale.order.line,prodlot_id:0
+#: help:sale.order.line,prodlot_ids:0
+msgid "Production lot is used to put a serial number on the production"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_stock_production_lot_all
+msgid "stock.production.lot.all"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Recreate Invoice"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Related invoices"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Other data"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:stock.production.lot:0
+#: field:stock.production.lot,reservation_ids:0
+msgid "Reservations"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:sale.order.line,size_y:0
+msgid "Height"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "States"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sales order lines"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_product_lot_foundry_heatcode_mecanical
+#: field:product.lot.foundry.heatcode,mecanical_ids:0
+msgid "Mecanical Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:sale.order.line,prodlot_id:0
+msgid "Production lot"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,status:0
+msgid "Done"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "UoM"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Related packings"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.actions.act_window,name:product_lot_foundry.action_heatcode_draft
+#: model:ir.ui.menu,name:product_lot_foundry.menu_action_inventory_draft_heat
+msgid "Draft Heat Codes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sales order"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:product.template,name:product_lot_foundry.product_product_ampco25_product_template
+msgid "Ampco25 Rectangle Bar"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Order Line"
+msgstr ""
+
=== added file 'product_lot_foundry/i18n/sv.po'
--- product_lot_foundry/i18n/sv.po 1970-01-01 00:00:00 +0000
+++ product_lot_foundry/i18n/sv.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,476 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_lot_foundry
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.14\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:31+0000\n"
+"PO-Revision-Date: 2010-11-23 01:33+0000\n"
+"Last-Translator: Olivier Dony (OpenERP) <Unknown>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:38+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_lot_foundry
+#: field:stock.production.lot.all,lot_id:0
+#: field:stock.production.lot.reservation,lot_id:0
+msgid "Lot"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Lots Assignations"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:product.product:0
+msgid "Dimensions"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:product.template,name:product_lot_foundry.product_product_ampco21_product_template
+msgid "AMPCO21 plate"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.actions.act_window,name:product_lot_foundry.act_production_product
+#: view:product.lot.foundry.heatcode:0
+#: field:product.lot.foundry.heatcode,lot_ids:0
+#: field:product.product,lot_ids:0
+msgid "Lots"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Automatic Declaration"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:res.company:0
+msgid "Error! You can not create recursive companies."
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.actions.act_window,name:product_lot_foundry.action_heatcode_all
+#: model:ir.ui.menu,name:product_lot_foundry.menu_action_inventory_heat
+msgid "Heat Codes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,quality_info:0
+msgid "Quality Information"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,status:0
+msgid "Status"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sale Order Lines"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,size_x:0
+#: field:sale.order.line,size_x:0
+#: field:stock.production.lot,size_x:0
+#: field:stock.production.lot.reservation,size_x:0
+msgid "Width"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode,state:0
+msgid "State"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Create Invoice"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:product.lot.foundry.heatcode,state:0
+#: selection:stock.production.lot,status:0
+msgid "Draft"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Set to Draft"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Untaxed amount"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Compute"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Qty"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.module.module,description:product_lot_foundry.module_meta_information
+msgid "Lots management for a metal company: cutting, heatcode, sizes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,type:0
+msgid "Type"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Invoice Lines"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:ir.model:0
+msgid ""
+"The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Recreate Procurement"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_product_lot_foundry_heatcode
+#: view:product.lot.foundry.heatcode:0
+#: field:product.lot.foundry.heatcode,name:0
+msgid "Heat Code"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:product.lot.foundry.heatcode:0
+msgid "Mechanical Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Procurement Corrected"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode.chemical,name:0
+#: field:product.lot.foundry.heatcode.mecanical,name:0
+msgid "Property"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:res.company,overdue_msg:product_lot_foundry.main_company_sa
+msgid ""
+"Would your payment have been carried out after this mail was sent, please "
+"consider the present one as void. Do not hesitate to contact our accounting "
+"department"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Invoice Corrected"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Manual Description"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,size_z:0
+#: field:sale.order.line,size_z:0
+#: field:stock.production.lot,size_z:0
+#: field:stock.production.lot.reservation,size_z:0
+msgid "Thickness"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Total amount"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.ui.menu,name:product_lot_foundry.menu_action_inventory
+msgid "Inventory Control"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_product_lot_foundry_heatcode_chemical
+#: view:product.lot.foundry.heatcode:0
+#: field:product.lot.foundry.heatcode,chemical_ids:0
+msgid "Chemical Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,cutting:0
+msgid "Can be Cutted"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Automatic Reservation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:sale.order.line,prodlot_ids:0
+msgid "Lots Assignation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Confirm Order"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:product.lot.foundry.heatcode,state:0
+#: selection:stock.production.lot,status:0
+msgid "Valid"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode,date:0
+#: field:stock.production.lot.reservation,date:0
+msgid "Date"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Extra Info"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot.all,name:0
+msgid "Quantity"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Cancel Order"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Inventory Moves"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:product.lot.foundry.heatcode:0
+msgid "Heat code"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:product.product:0
+#: constraint:res.partner:0
+msgid "Error: Invalid EAN,UPC,JPC,GTIN code"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot,available:0
+msgid "Availables"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,type:0
+msgid "Bar"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:product.template:0
+msgid "Error: UOS must be in a different category than the UOM"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,type:0
+msgid "Plate"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:product.template:0
+msgid ""
+"Error: The default UOM and the purchase UOM must be in the same category."
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Notes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sale Order"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,auto_picking:0
+msgid "Auto Picking for Production"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode.chemical,value:0
+#: field:product.lot.foundry.heatcode.mecanical,value:0
+msgid "Value"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.lot.foundry.heatcode.chemical,heatcode_id:0
+#: field:product.lot.foundry.heatcode.mecanical,heatcode_id:0
+#: field:stock.production.lot,heatcode_id:0
+msgid "Heatcode"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:product.product,size_y:0
+#: field:stock.production.lot,size_y:0
+#: field:stock.production.lot.reservation,size_y:0
+msgid "Length"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_stock_production_lot_reservation
+msgid "stock.production.lot.reservation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:stock.production.lot.reservation,name:0
+msgid "Reservation"
+msgstr ""
+
+#. module: product_lot_foundry
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.module.module,shortdesc:product_lot_foundry.module_meta_information
+msgid "Products Lot Foundry"
+msgstr "Products Lot Foundry"
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,status:0
+msgid "Non Conformity"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:stock.production.lot:0
+msgid "Dimension"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "History"
+msgstr ""
+
+#. module: product_lot_foundry
+#: help:sale.order.line,prodlot_id:0
+#: help:sale.order.line,prodlot_ids:0
+msgid "Production lot is used to put a serial number on the production"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_stock_production_lot_all
+msgid "stock.production.lot.all"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Recreate Invoice"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Related invoices"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Other data"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:stock.production.lot:0
+#: field:stock.production.lot,reservation_ids:0
+msgid "Reservations"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:sale.order.line,size_y:0
+msgid "Height"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "States"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sales order lines"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.model,name:product_lot_foundry.model_product_lot_foundry_heatcode_mecanical
+#: field:product.lot.foundry.heatcode,mecanical_ids:0
+msgid "Mecanical Properties"
+msgstr ""
+
+#. module: product_lot_foundry
+#: field:sale.order.line,prodlot_id:0
+msgid "Production lot"
+msgstr ""
+
+#. module: product_lot_foundry
+#: selection:stock.production.lot,status:0
+msgid "Done"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "UoM"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Related packings"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:ir.actions.act_window,name:product_lot_foundry.action_heatcode_draft
+#: model:ir.ui.menu,name:product_lot_foundry.menu_action_inventory_draft_heat
+msgid "Draft Heat Codes"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Sales order"
+msgstr ""
+
+#. module: product_lot_foundry
+#: model:product.template,name:product_lot_foundry.product_product_ampco25_product_template
+msgid "Ampco25 Rectangle Bar"
+msgstr ""
+
+#. module: product_lot_foundry
+#: view:sale.order:0
+msgid "Order Line"
+msgstr ""
=== added file 'product_lot_foundry/product_lot_foundry.py'
--- product_lot_foundry/product_lot_foundry.py 1970-01-01 00:00:00 +0000
+++ product_lot_foundry/product_lot_foundry.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,216 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import time
+from osv import fields,osv
+import pooler
+import netsvc
+
+class stock_heatcode(osv.osv):
+ _name = 'product.lot.foundry.heatcode'
+ _description = "Heat Code"
+ _columns = {
+ 'name': fields.char('Heat Code', size=64, required=True),
+ 'date': fields.date('Date', required=True),
+ 'chemical_ids': fields.one2many('product.lot.foundry.heatcode.chemical', 'heatcode_id', 'Chemical Properties'),
+ 'mecanical_ids': fields.one2many('product.lot.foundry.heatcode.mecanical', 'heatcode_id','Mecanical Properties'),
+ 'lot_ids': fields.one2many('stock.production.lot', 'heatcode_id','Lots'),
+ 'state': fields.selection([
+ ('draft','Draft'),
+ ('valid','Valid')
+ ], 'State', required=True)
+ }
+ _defaults = {
+ 'date': lambda *args: time.strftime('%Y-%m-%d'),
+ 'state': lambda *args: 'draft'
+ }
+ def name_get(self, cr, uid, ids, context={}):
+ res = {}
+ for lot in self.browse(cr, uid, ids, context):
+ res[lot.id] = lot.name+' '
+ for prop in lot.chemical_ids:
+ res[lot.id]+= (' %s=<%s>' % (prop.name,prop.value))
+ return res.items()
+stock_heatcode()
+
+
+class stock_heatcode_mecanical(osv.osv):
+ _name = 'product.lot.foundry.heatcode.mecanical'
+ _description = "Mecanical Properties"
+ _columns = {
+ 'name': fields.char('Property', size=64, required=True),
+ 'value': fields.char('Value', size=64, required=True),
+ 'heatcode_id': fields.many2one('product.lot.foundry.heatcode', 'Heatcode'),
+ }
+stock_heatcode_mecanical()
+
+
+class stock_heatcode_chemical(osv.osv):
+ _name = 'product.lot.foundry.heatcode.chemical'
+ _description = "Chemical Properties"
+ _columns = {
+ 'name': fields.char('Property', size=64, required=True),
+ 'value': fields.char('Value', size=64, required=True),
+ 'heatcode_id': fields.many2one('product.lot.foundry.heatcode', 'Heatcode'),
+ }
+stock_heatcode_chemical()
+
+
+
+class stock_production_lot(osv.osv):
+ _name = 'stock.production.lot'
+ _inherit = 'stock.production.lot'
+ def _available_get(self, cr, uid, ids, name, args, context={}):
+ res = {}
+ for lot in self.browse(cr, uid, ids, context):
+ if lot.type=='bar':
+ x = lot.size_x
+ for res2 in lot.reservation_ids:
+ x -= res2.size_x
+ print ('%.2f mm'% (x,)), res
+
+ res[lot.id] = ('%.2f mm'% (x,))
+ else:
+ res[lot.id] = '%d mm x 122mm x 12mm\n%d mm x 22mm x 12mm' % (lot.size_x or 0.0,lot.size_x or 0.0)
+ return res
+ def _get_size(dtype):
+ def calc_date(self, cr, uid, context={}):
+ if context.get('product_id', False):
+ product = pooler.get_pool(cr.dbname).get('product.product').browse(cr, uid, [context['product_id']])[0]
+ duree = getattr(product, dtype) or 0
+ return duree
+ else:
+ return False
+ return calc_date
+
+ _columns = {
+ 'size_x': fields.float('Width'),
+ 'size_y': fields.float('Length'),
+ 'size_z': fields.float('Thickness'),
+ 'product_id': fields.many2one('product.product', 'Product'),
+ 'heatcode_id': fields.many2one('product.lot.foundry.heatcode', 'Heatcode'),
+ 'type': fields.selection([
+ ('bar','Bar'),
+ ('plate','Plate')
+ ], 'Type', required=True),
+ 'status': fields.selection([
+ ('draft', 'Draft'),
+ ('valid', 'Valid'),
+ ('non conformity', 'Non Conformity'),
+ ('done', 'Done')
+ ], 'Status', required=True),
+ 'quality_info': fields.text('Quality Information'),
+ 'reservation_ids': fields.one2many('stock.production.lot.reservation', 'lot_id', 'Reservations'),
+ 'available': fields.function(_available_get, type="text", method=True, string='Availables'),
+ }
+ _defaults = {
+ 'status': lambda *args: 'draft',
+ 'product_id': lambda self,cr, uid, ctx: ctx.get('product_id', False),
+ 'name': lambda *args: time.strftime('%Y-%m-%d'),
+ 'type': lambda *args: 'bar',
+ 'size_x': _get_size('Width'),
+ 'size_y': _get_size('Length'),
+ 'size_z': _get_size('Thickness'),
+ }
+stock_production_lot()
+
+class stock_production_lot_reservation(osv.osv):
+ _name = 'stock.production.lot.reservation'
+ _columns = {
+ 'name': fields.char('Reservation', size=64),
+ 'date': fields.date('Date'),
+ 'size_x': fields.float('Width'),
+ 'size_y': fields.float('Length'),
+ 'size_z': fields.float('Thickness'),
+ 'lot_id': fields.many2one('stock.production.lot', 'Lot', required=True, ondelete="cascade")
+ }
+ _defaults = {
+ 'date': lambda *args: time.strftime('%Y-%m-%d'),
+ }
+stock_production_lot_reservation()
+
+class product_product(osv.osv):
+ _inherit = 'product.product'
+ _columns = {
+ 'size_x': fields.float('Width'),
+ 'size_y': fields.float('Length'),
+ 'size_z': fields.float('Thickness'),
+ 'lot_ids': fields.one2many('stock.production.lot', 'product_id', 'Lots'),
+ 'cutting': fields.boolean('Can be Cutted'),
+ 'auto_picking': fields.boolean('Auto Picking for Production')
+ }
+product_product()
+
+
+class stock_move(osv.osv):
+ _inherit = "stock.move"
+ def check_assign(self, cr, uid, ids, context={}):
+ done = []
+ count=0
+ pickings = {}
+ for move in self.browse(cr, uid, ids):
+ if move.product_id.type == 'consu':
+ if mode.state in ('confirmed', 'waiting'):
+ done.append(move.id)
+ pickings[move.picking_id.id] = 1
+ continue
+ if move.state in ('confirmed','waiting'):
+ if move.product_id.cutting:
+ # TODO Check for reservation
+ done.append(move.id)
+ pickings[move.picking_id.id] = 1
+ cr.execute('update stock_move set location_id=%s where id=%s', (move.product_id.property_stock_production.id, move.id))
+
+ move_id = self.copy(cr, uid, move.id, {
+ 'product_uos_qty': move.product_uos_qty,
+ 'product_qty': 0,
+ 'location_id': move.location_id.id,
+ 'location_dest_id': move.product_id.property_stock_production.id
+ })
+ done.append(move_id)
+
+ else:
+ res = self.pool.get('stock.location')._product_reserve(cr, uid, [move.location_id.id], move.product_id.id, move.product_qty, {'uom': move.product_uom.id})
+ if res:
+ done.append(move.id)
+ pickings[move.picking_id.id] = 1
+ r = res.pop(0)
+ cr.execute('update stock_move set location_id=%s, product_qty=%s where id=%s', (r[1],r[0], move.id))
+
+ while res:
+ r = res.pop(0)
+ move_id = self.copy(cr, uid, move.id, {'product_qty':r[0], 'location_id':r[1]})
+ done.append(move_id)
+ #cr.execute('insert into stock_move_history_ids values (%s,%s)', (move.id,move_id))
+ if done:
+ count += len(done)
+ self.write(cr, uid, done, {'state':'assigned'})
+
+ if count:
+ for pick_id in pickings:
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_write(uid, 'stock.picking', pick_id, cr)
+ return count
+
+stock_move()
+
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_lot_foundry/product_lot_foundry_demo.xml'
--- product_lot_foundry/product_lot_foundry_demo.xml 1970-01-01 00:00:00 +0000
+++ product_lot_foundry/product_lot_foundry_demo.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,168 @@
+<openerp>
+ <data noupdate="1">
+ # --------------------------------------------------------------------
+ # Heat Codes
+ # --------------------------------------------------------------------
+
+ <record model="product.lot.foundry.heatcode" id="mwk31879">
+ <field name="name">MWK 31879</field>
+ <field name="state">valid</field>
+ </record>
+ <record model="product.lot.foundry.heatcode.chemical">
+ <field name="name">Zn</field>
+ <field name="value">80%</field>
+ <field name="heatcode_id" ref="mwk31879"/>
+ </record>
+ <record model="product.lot.foundry.heatcode.chemical">
+ <field name="name">Cu</field>
+ <field name="value">90%</field>
+ <field name="heatcode_id" ref="mwk31879"/>
+ </record>
+ <record model="product.lot.foundry.heatcode.chemical">
+ <field name="name">Mg</field>
+ <field name="value">15%</field>
+ <field name="heatcode_id" ref="mwk31879"/>
+ </record>
+
+ <record model="product.lot.foundry.heatcode.mecanical">
+ <field name="name">Poids</field>
+ <field name="value">1.234 Kg/Sm</field>
+ <field name="heatcode_id" ref="mwk31879"/>
+ </record>
+
+ <record model="product.lot.foundry.heatcode" id="mwk32345">
+ <field name="name">MWK 32345</field>
+ <field name="state">valid</field>
+ </record>
+ <record model="product.lot.foundry.heatcode.chemical">
+ <field name="name">Zn</field>
+ <field name="value">80%</field>
+ <field name="heatcode_id" ref="mwk32345"/>
+ </record>
+ <record model="product.lot.foundry.heatcode.chemical">
+ <field name="name">Cu</field>
+ <field name="value">50%</field>
+ <field name="heatcode_id" ref="mwk32345"/>
+ </record>
+ <record model="product.lot.foundry.heatcode.chemical">
+ <field name="name">Mg</field>
+ <field name="value">18%</field>
+ <field name="heatcode_id" ref="mwk32345"/>
+ </record>
+
+ <record model="product.lot.foundry.heatcode.mecanical">
+ <field name="name">Poids</field>
+ <field name="value">4.23 Kg/Sm</field>
+ <field name="heatcode_id" ref="mwk32345"/>
+ </record>
+
+
+ <record id="res_partner_amcofr" model="res.partner">
+ <field name="name">Ampco France</field>
+ <field name="user_id" ref="base.user_demo"/>
+ </record>
+ <record id="res_partner_amcofoundry" model="res.partner">
+ <field name="name">Ampco Foundry</field>
+ </record>
+ <record id="res_partner_amcosa" model="res.partner">
+ <field name="name">Ampco SA</field>
+ <field name="user_id" ref="base.user_demo"/>
+ </record>
+ <record id="res_partner_address_1" model="res.partner.address">
+ <field name="city">Bruxelles</field>
+ <field name="name">Benoit Mortier</field>
+ <field name="zip">75000</field>
+ <field name="country_id" model="res.country" search="[('name','=','France')]"/>
+ <field name="email">info@xxxxxxxxxxxx</field>
+ <field name="phone">(+33)2 211 34 83</field>
+ <field name="street">Rue des Palais 44, bte 33</field>
+ <field name="type">default</field>
+ <field name="partner_id" ref="res_partner_amcofr"/>
+ </record>
+ <record id="res_partner_address_2" model="res.partner.address">
+ <field name="city">Marly</field>
+ <field name="name">Benoit Mortier</field>
+ <field name="zip">1723</field>
+ <field name="country_id" model="res.country" search="[('code','=','CH')]"/>
+ <field name="email">info@xxxxxxxx</field>
+ <field name="phone">(+41)2 211 34 83</field>
+ <field name="street">Rte de chesalles 48</field>
+ <field name="type">default</field>
+ <field name="partner_id" ref="res_partner_amcosa"/>
+ </record>
+ <record id="res_partner_address_3" model="res.partner.address">
+ <field name="city">Marly</field>
+ <field name="name">Benoit Mortier</field>
+ <field name="zip">1723</field>
+ <field name="country_id" model="res.country" search="[('code','=','CH')]"/>
+ <field name="email">info@xxxxxxxx</field>
+ <field name="phone">(+41)2 211 34 83</field>
+ <field name="street">Rte de chesalles 48</field>
+ <field name="type">default</field>
+ <field name="partner_id" ref="res_partner_amcofoundry"/>
+ </record>
+
+
+ <record model="res.company" id="base.main_company">
+ <field name="name">Amco France</field>
+ <field name="partner_id" ref="res_partner_amcofr"/>
+ <field name="rml_header1">Your Solution Provider</field>
+ </record>
+
+ <record model="res.company" id="main_company_sa">
+ <field name="name">Ampco SA</field>
+ <field name="partner_id" ref="res_partner_amcosa"/>
+ <field name="rml_header1">Your Solution Provider</field>
+ <field name="rml_footer1">Web: http://tiny.be - Tel: (+32).81.81.37.00 - Bank: CPH 126-2013269-07</field>
+ <field name="rml_footer2">IBAN: BE74 1262 0132 6907 - SWIFT: GKCCBEBB - VAT: BE0477.472.701</field>
+ <field name="currency_id" ref="base.EUR"/>
+ </record>
+ <record model="res.users" id="base.user_demo">
+ <field name="address_id" ref="main_company_sa"/>
+ </record>
+
+
+
+ <record id="product_product_ampco25" model="product.product">
+ <field name="supply_method">buy</field>
+ <field name="list_price">7.0</field>
+ <field name="standard_price">5.0</field>
+ <field name="uom_id" ref="product.product_uom_unit"/>
+ <field name="uom_po_id" ref="product.product_uom_unit"/>
+ <field name="uos_id" ref="product.product_uom_kgm" />
+ <field name="uos_coeff">20</field>
+ <field name="name">Ampco25 Rectangle Bar</field>
+ <field name="procure_method">make_to_order</field>
+ <field name="size_x">101.6</field>
+ <field name="size_y">254.0</field>
+ <field name="size_z">1</field>
+ <field name="default_code">AMPCO25</field>
+ <field name="ean13">3307630302014</field>
+ <field name="categ_id" search="[]" model="product.category"/>
+ </record>
+ <record model="product.supplierinfo" id="supplier_ampco25">
+ <field name="name" ref="res_partner_amcosa"/>
+ <field name="product_id" ref="product_product_ampco25"/>
+ <field name="delay" eval="15"/>
+ </record>
+
+ <record id="product_product_ampco21" model="product.product">
+ <field name="supply_method">buy</field>
+ <field name="list_price">8.0</field>
+ <field name="standard_price">6.0</field>
+ <field name="uom_id" ref="product.product_uom_unit"/>
+ <field name="uom_po_id" ref="product.product_uom_unit"/>
+ <field name="uos_id" ref="product.product_uom_kgm" />
+ <field name="uos_coeff">1045.45</field>
+ <field name="name">AMPCO21 plate</field>
+ <field name="procure_method">make_to_order</field>
+ <field name="size_x">450</field>
+ <field name="size_y">1500</field>
+ <field name="size_z">145.0</field>
+ <field name="default_code">AMPCO21</field>
+ <field name="ean13">3307631101876</field>
+ <field name="categ_id" search="[]" model="product.category"/>
+ </record>
+
+ </data>
+</openerp>
=== added file 'product_lot_foundry/product_lot_foundry_view.xml'
--- product_lot_foundry/product_lot_foundry_view.xml 1970-01-01 00:00:00 +0000
+++ product_lot_foundry/product_lot_foundry_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,146 @@
+<?xml version="1.0" ?>
+<openerp>
+ <data>
+ <record model="ir.ui.view" id="view_production_lot_tree">
+ <field name="name">stock.production.lot.foundry.tree</field>
+ <field name="model">stock.production.lot</field>
+ <field name="inherit_id" ref="stock.view_production_lot_tree" />
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <field name="revisions" position="replace">
+ <field name="size_x"/>
+ <field name="size_y"/>
+ <field name="size_z"/>
+ <field name="available"/>
+ <field name="status"/>
+ </field>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="view_move_form_expiry">
+ <field name="name">stock.production.lot.form</field>
+ <field name="model">stock.production.lot</field>
+ <field name="inherit_id" ref="stock.view_production_lot_form" />
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <separator position="before">
+ <field name="status" select="2"/>
+ <field name="product_id" colspan="4"/>
+ <field name="size_x" string="Dimension" select="1"/>
+ <field name="type" select="2"/>
+ <field name="size_y" select="1"/>
+ <field name="size_z" select="1"/>
+ <field name="heatcode_id" colspan="4" select="2"/>
+ <field name="quality_info" colspan="4"/>
+ <field name="available" colspan="4"/>
+ <field name="reservation_ids" colspan="4">
+ <tree string="Reservations">
+ <field name="name"/>
+ <field name="date"/>
+ <field name="size_x"/>
+ <field name="size_y"/>
+ <field name="size_z"/>
+ </tree>
+ </field>
+ </separator>
+ </field>
+ </record>
+
+ # --------------------------------------------------------------------
+ # Heat Code
+ # --------------------------------------------------------------------
+
+ <record model="ir.ui.view" id="view_product_lot_foundry_heatcode_tree">
+ <field name="name">product.lot.foundry.heatcode.tree</field>
+ <field name="model">product.lot.foundry.heatcode</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Heat code">
+ <field name="name"/>
+ <field name="date"/>
+ <field name="state"/>
+ </tree>
+ </field>
+ </record>
+
+
+ <record model="ir.ui.view" id="view_product_lot_foundry_heatcode_form">
+ <field name="name">product.lot.foundry.heatcode.form</field>
+ <field name="model">product.lot.foundry.heatcode</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Heat code">
+ <notebook colspan="4">
+ <page string="Heat Code">
+ <field name="name" select="1"/>
+ <field name="date" select="1"/>
+ <separator string="Chemical Properties" colspan="4"/>
+ <field name="chemical_ids" colspan="4" nolabel="1">
+ <tree string="Chemical Properties" editable="bottom">
+ <field name="name"/>
+ <field name="value"/>
+ </tree>
+ </field>
+ <separator string="Mechanical Properties" colspan="4"/>
+ <field name="mecanical_ids" colspan="4" nolabel="1">
+ <tree string="Mechanical Properties" editable="bottom">
+ <field name="name"/>
+ <field name="value"/>
+ </tree>
+ </field>
+ <field name="state"/>
+ </page><page string="Lots">
+ <field name="lot_ids" nolabel="1" colspan="4"/>
+ </page>
+ </notebook>
+ </form>
+ </field>
+ </record>
+
+
+ <record model="ir.actions.act_window" id="action_heatcode_all">
+ <field name="name">Heat Codes</field>
+ <field name="res_model">product.lot.foundry.heatcode</field>
+ <field name="view_type">form</field>
+ </record>
+
+ <menuitem name="Inventory Control" id="menu_action_inventory"/>
+ <menuitem name="Heat Codes" id="menu_action_inventory_heat" parent="menu_action_inventory" action="action_heatcode_all"/>
+
+ <record model="ir.actions.act_window" id="action_heatcode_draft">
+ <field name="name">Draft Heat Codes</field>
+ <field name="res_model">product.lot.foundry.heatcode</field>
+ <field name="view_type">form</field>
+ <field name="domain">[('state','=','draft')]</field>
+ </record>
+ <menuitem name="Draft Heat Codes" id="menu_action_inventory_draft_heat" parent="menu_action_inventory_heat" action="action_heatcode_draft"/>
+
+ <record model="ir.ui.view" id="view_product_form_expiry">
+ <field name="name">product.normal.form</field>
+ <field name="model">product.product</field>
+ <field name="inherit_id" ref="product.product_normal_form_view" />
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <notebook position="inside">
+ <page string="Dimensions">
+ <field name="size_x" />
+ <field name="size_y" />
+ <field name="size_z" />
+ <newline/>
+ <field name="cutting" />
+ <field name="auto_picking" />
+ </page>
+ </notebook>
+ </field>
+ </record>
+
+ <act_window name="Lots"
+ domain="[('product_id', '=', active_id)]"
+ res_model="stock.production.lot"
+ src_model="product.product"
+ id="act_production_product"/>
+
+
+ </data>
+</openerp>
+
=== added file 'product_lot_foundry/purchase_auto.py'
--- product_lot_foundry/purchase_auto.py 1970-01-01 00:00:00 +0000
+++ product_lot_foundry/purchase_auto.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,37 @@
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import time
+import netsvc
+from osv import fields, osv
+
+class mrp_procurement(osv.osv):
+ _inherit = "mrp.procurement"
+ def action_po_assign(self,cr, uid, ids):
+ res = super(mrp_procurement,self).action_po_assign(cr, uid, ids)
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'purchase.order', res, 'purchase_confirm', cr)
+ wf_service.trg_validate(uid, 'purchase.order', res, 'purchase_approve', cr)
+ return res
+
+mrp_procurement()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_lot_foundry/sale_order.py'
--- product_lot_foundry/sale_order.py 1970-01-01 00:00:00 +0000
+++ product_lot_foundry/sale_order.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,91 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2008 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+# $Id$
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import time
+from osv import fields, osv
+
+class sale_order_line(osv.osv):
+ _inherit = "sale.order.line"
+ def product_id_change(self, cr, uid, ids, pricelist, product, qty=0,
+ uom=False, qty_uos=0, uos=False, name='', partner_id=False, fiscal_position=False,
+ lang=False, update_tax=True):
+ res = super(sale_order_line,self).product_id_change(cr, uid, ids, pricelist, product,
+ qty=qty, uom=uom, qty_uos=qty_uos, uos=uos, name=name, partner_id=partner_id, fiscal_position=fiscal_position, lang=lang, update_tax=update_tax)
+ if product:
+ p = self.pool.get('product.product').browse(cr, uid, product)
+ res['value']['size_x'] = p.size_x
+ res['value']['size_y'] = p.size_y
+ res['value']['size_z'] = p.size_z
+ return res
+ def size_change(self, cr, uid, ids, size_x, size_y, size_z, product_id, qty, context={}):
+ if (not product_id) or not (size_x and size_y and size_z):
+ return {}
+ res= {}
+ p = self.pool.get('product.product').browse(cr, uid, product_id)
+ if size_y and size_z:
+ res['product_uos_qty'] = size_x*size_y*size_z*p.weight*qty / 1000000
+ else:
+ res['product_uos_qty'] = size_x*p.weight*qty / 1000
+ return {'value': res}
+
+
+ _columns = {
+ 'prodlot_id' : fields.many2one('stock.production.lot', 'Production lot', help="Production lot is used to put a serial number on the production"),
+ 'prodlot_ids' : fields.one2many('stock.production.lot.all', 'line_id', 'Lots Assignation', help="Production lot is used to put a serial number on the production"),
+ 'size_x' : fields.float(digits=(16,2), string='Width'),
+ 'size_y' : fields.float(digits=(16,2), string='Height'),
+ 'size_z' : fields.float(digits=(16,2), string='Thickness'),
+ }
+sale_order_line()
+
+class prod_lot_lines(osv.osv):
+ _name='stock.production.lot.all'
+ _columns = {
+ 'name': fields.float('Quantity'),
+ 'lot_id': fields.many2one('stock.production.lot', 'Lot'),
+ }
+prod_lot_lines()
+
+class sale_order(osv.osv):
+ _inherit = "sale.order"
+ def action_wait(self, cr, uid, ids, *args):
+ print 'Confirm'
+ res = super(sale_order,self).action_wait(cr, uid, ids, *args)
+ for sale in self.browse(cr, uid, ids):
+ for line in sale.order_line:
+ if line.prodlot_id.id:
+ self.pool.get('stock.production.lot.reservation').create(cr, uid, {
+ 'name': sale.name,
+ 'size_x': line.size_x,
+ 'size_y': line.size_y,
+ 'size_z': line.size_z,
+ 'lot_id': line.prodlot_id.id
+ })
+ for move in line.move_ids:
+ self.pool.get('stock.move').write(cr, uid, {
+ 'prodlot_id': line.prodlot_id.id or False,
+ 'name': '%.2f x %.2f x %.2f' % (line.size_x or 1.0, line.size_y or 1.0, line.size_z or 1.0)
+ })
+ return res
+sale_order()
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
=== added file 'product_lot_foundry/sale_order_view.xml'
--- product_lot_foundry/sale_order_view.xml 1970-01-01 00:00:00 +0000
+++ product_lot_foundry/sale_order_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,140 @@
+<?xml version="1.0"?>
+<openerp>
+<data>
+ <record model="ir.ui.view" id="view_order_form">
+ <field name="name">sale.order.form</field>
+ <field name="model">sale.order</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Sales order">
+ <notebook>
+ <page string="Sale Order">
+ <field name="name" select="1"/>
+ <group colspan="2" col="4">
+ <field name="shipped" select="2"/>
+ <field name="invoiced" select="2"/>
+ </group>
+ <newline/>
+ <field name="date_order" select="1"/>
+ <field name="shop_id" select="2" on_change="onchange_shop_id(shop_id)"/>
+ <field name="partner_id" select="1" on_change="onchange_partner_id(partner_id)" required="1"/>
+ <field name="partner_order_id" domain="[('partner_id','=',partner_id)]"/>
+ <field name="partner_invoice_id" domain="[('partner_id','=',partner_id)]"/>
+ <field name="partner_shipping_id" domain="[('partner_id','=',partner_id)]"/>
+ <field name="pricelist_id" domain="[('type','=','sale')]"/>
+ <field name="project_id" select="2"/>
+ <newline/>
+ <field name="order_line" widget="one2many_list" colspan="4" nolabel="1" mode="tree,graph">
+ <form string="Sale Order Lines">
+ <notebook>
+ <page string="Order Line">
+ <separator string="Automatic Declaration" colspan="4"/>
+ <field name="product_id" on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, parent.fiscal_position, 'lang' in context and context['lang'], True)" context="partner_id=parent.partner_id,quantity=product_uom_qty,pricelist=parent.pricelist_id,shop=parent.shop_id,uom=product_uom" colspan="4" select="1"/>
+ <field name="product_uom_qty" on_change="product_id_change(parent.pricelist_id,product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, parent.fiscal_position, 'lang' in context and context['lang'], False)" context="partner_id=parent.partner_id,quantity=product_uom_qty,pricelist=parent.pricelist_id,shop=parent.shop_id,uom=product_uom" select="1"/>
+ <field name="product_uom" required="1"/>
+ <field name="product_uos_qty" required="1"/>
+ <field name="product_uos" required="1" />
+ <field name="prodlot_id" context="product=product_id" domain="[('product_id','=',product_id)]" required="1"/>
+ <field name="size_x" on_change="size_change(size_x,size_y,size_z,product_id,product_uom_qty)"/>
+ <field name="size_y" on_change="size_change(size_x,size_y,size_z,product_id,product_uom_qty)"/>
+ <field name="size_z" on_change="size_change(size_x,size_y,size_z,product_id,product_uom_qty)"/>
+ <field name="prodlot_ids" colspan="4">
+ <tree string="Lots Assignations" editable="bottom">
+ <field name="name"/>
+ <field name="lot_id" context="product=parent.product_id" domain="[('product_id','=',parent.product_id)]" required="1"/>
+
+ </tree>
+ </field>
+ <button string="Automatic Reservation" colspan="4" name="assign" type="workflow"/>
+ <separator string="Manual Description" colspan="4"/>
+ <field name="name" colspan="4" select="2"/>
+ <field name="price_unit" select="2"/>
+ <field name="discount"/>
+ <field name="type"/>
+ <field name="delay" select="2"/>
+ <newline/>
+ <field name="tax_id" colspan="4"/>
+ <separator string="States" colspan="4"/>
+ <field name="state" select="2"/>
+ <field name="invoiced" select="2"/>
+ </page>
+ <page string="Extra Info">
+ <field name="product_packaging" />
+ <field name="address_allotment_id" select="2"/>
+ <separator string="Properties" colspan="4"/>
+ <field name="property_ids" colspan="4" nolabel="1"/>
+ </page>
+ <page string="Notes">
+ <field name="notes" colspan="4" nolabel="1"/>
+ </page>
+ <page string="History">
+ <separator string="Invoice Lines" colspan="4"/>
+ <field name="invoice_lines" colspan="4" nolabel="1"/>
+ <separator string="Inventory Moves" colspan="4"/>
+ <field name="move_ids" colspan="4" nolabel="1"/>
+ </page>
+ </notebook>
+ </form>
+ <tree string="Sales order lines">
+ <field name="name" colspan="4"/>
+ <field name="product_id"/>
+ <field name="product_uom_qty" string="Qty"/>
+ <field name="product_uom" string="UoM"/>
+ <field name="discount"/>
+ <field name="price_unit"/>
+ <field name="price_net"/>
+ <field name="price_subtotal"/>
+ </tree>
+ </field>
+ <newline/>
+ <group colspan="4" col="7">
+ <field name="amount_untaxed" sum="Untaxed amount"/>
+ <field name="amount_tax"/>
+ <field name="amount_total" sum="Total amount"/>
+ <button name="button_dummy" string="Compute" states="draft" type="object"/>
+ </group>
+ <group colspan="4" col="13">
+ <field name="state" select="2"/>
+ <button name="order_confirm" string="Confirm Order" states="draft"/>
+ <button name="invoice_recreate" string="Recreate Invoice" states="invoice_except"/>
+ <button name="invoice_corrected" string="Invoice Corrected" states="invoice_except"/>
+ <button name="ship_recreate" string="Recreate Procurement" states="shipping_except"/>
+ <button name="ship_corrected" string="Procurement Corrected" states="shipping_except"/>
+ <button name="manual_invoice" states="manual" string="Create Invoice"/>
+ <button name="ship_cancel" string="Cancel Order" states="shipping_except"/>
+ <button name="action_cancel_draft" states="cancel" string="Set to Draft" type="object"/>
+ <button name="action_cancel" string="Cancel Order" states="manual,progress" type="object"/>
+ <button name="cancel" string="Cancel Order" states="draft"/>
+ <button name="invoice_cancel" string="Cancel Order" states="invoice_except"/>
+ </group>
+ </page>
+ <page string="Other data">
+ <field name="incoterm"/>
+ <field name="picking_policy" required="True"/>
+ <field name="user_id"/>
+ <field name="order_policy" />
+ <field name="origin"/>
+ <field name="invoice_quantity"/>
+ <field name="client_order_ref" />
+ <field name="fiscal_position" />
+ <separator string="Notes" colspan="4"/>
+ <field name="note" colspan="4" nolabel="1"/>
+ </page>
+ <page string="History">
+ <separator string="Related invoices" colspan="4"/>
+ <field name="invoice_ids" colspan="4" nolabel="1"/>
+ <separator string="Related packings" colspan="4"/>
+ <field name="picking_ids" colspan="4" nolabel="1"/>
+ </page>
+ </notebook>
+ </form>
+ </field>
+ </record>
+ <record model="ir.actions.act_window" id="sale.action_order_form">
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">sale.order</field>
+ <field name="view_type">form</field>
+ <field name="view_id" ref="view_order_form"/>
+ </record>
+</data>
+</openerp>
=== added directory 'product_lot_foundry/security'
=== added file 'product_lot_foundry/security/ir.model.access.csv'
--- product_lot_foundry/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
+++ product_lot_foundry/security/ir.model.access.csv 2013-01-17 10:06:27 +0000
@@ -0,0 +1,6 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_product_lot_foundry_heatcode","product.lot.foundry.heatcode","model_product_lot_foundry_heatcode","product.group_uos",1,1,1,1
+"access_product_lot_foundry_heatcode_mecanical","product.lot.foundry.heatcode.mecanical","model_product_lot_foundry_heatcode_mecanical","product.group_uos",1,1,1,1
+"access_product_lot_foundry_heatcode_chemical","product.lot.foundry.heatcode.chemical","model_product_lot_foundry_heatcode_chemical","product.group_uos",1,1,1,1
+"access_stock_production_lot_reservation","stock.production.lot.reservation","model_stock_production_lot_reservation","stock.group_stock_user",1,1,1,1
+"access_stock_production_lot_all","stock.production.lot.all","model_stock_production_lot_all","stock.group_stock_user",1,1,1,1
\ No newline at end of file
=== added directory 'product_m2mcategories'
=== renamed directory 'product_m2mcategories' => 'product_m2mcategories.moved'
=== added file 'product_m2mcategories/__init__.py'
--- product_m2mcategories/__init__.py 1970-01-01 00:00:00 +0000
+++ product_m2mcategories/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,18 @@
+#########################################################################
+# Copyright (C) 2009 Sharoon Thomas & Open ERP Community #
+# #
+#This program is free software: you can redistribute it and/or modify #
+#it under the terms of the GNU General Public License as published by #
+#the Free Software Foundation, either version 3 of the License, or #
+#(at your option) any later version. #
+# #
+#This program is distributed in the hope that it will be useful, #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+#GNU General Public License for more details. #
+# #
+#You should have received a copy of the GNU General Public License #
+#along with this program. If not, see <http://www.gnu.org/licenses/>. #
+#########################################################################
+
+import product
\ No newline at end of file
=== added file 'product_m2mcategories/__openerp__.py'
--- product_m2mcategories/__openerp__.py 1970-01-01 00:00:00 +0000
+++ product_m2mcategories/__openerp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,39 @@
+#########################################################################
+# Copyright (C) 2009 Sharoon Thomas & Open ERP Community #
+# #
+#This program is free software: you can redistribute it and/or modify #
+#it under the terms of the GNU General Public License as published by #
+#the Free Software Foundation, either version 3 of the License, or #
+#(at your option) any later version. #
+# #
+#This program is distributed in the hope that it will be useful, #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+#GNU General Public License for more details. #
+# #
+#You should have received a copy of the GNU General Public License #
+#along with this program. If not, see <http://www.gnu.org/licenses/>. #
+#########################################################################
+
+{
+ "name" : "Product - Many Categories",
+ "version" : "6.1.0",
+ "author" : "Sharoon Thomas",
+ "website" : "",
+ "category" : "Added functionality",
+ "depends" : ['base','product'],
+ "description": """
+ This module extends the existing functionality of OpenERP Products (One product -> One Category)
+ to One product -> Many Categories
+
+ *Note: This module was built generically but in focus of the Magento OpenERP connector
+ """,
+ "init_xml": [],
+ "update_xml": [
+ 'product_view.xml'
+ ],
+ "installable": True,
+ "active": False,
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== added directory 'product_m2mcategories/i18n'
=== added file 'product_m2mcategories/i18n/ca.po'
--- product_m2mcategories/i18n/ca.po 1970-01-01 00:00:00 +0000
+++ product_m2mcategories/i18n/ca.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,65 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_m2mcategories
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-12-20 17:16+0000\n"
+"PO-Revision-Date: 2010-11-17 03:56+0000\n"
+"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
+"<jesteve@xxxxxxxxxxxxxxx>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-04-17 05:19+0000\n"
+"X-Generator: Launchpad (build 15099)\n"
+"X-Poedit-Language: Catalan\n"
+
+#. module: product_m2mcategories
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "XML invàlid per a la definició de la vista!"
+
+#. module: product_m2mcategories
+#: field:product.template,categ_ids:0
+msgid "Product Categories"
+msgstr "Categories de producte"
+
+#. module: product_m2mcategories
+#: view:product.product:0
+msgid "Classification Categories"
+msgstr "Classificació en categories"
+
+#. module: product_m2mcategories
+#: model:ir.module.module,shortdesc:product_m2mcategories.module_meta_information
+msgid "Product - Many Categories"
+msgstr "Producte - Moltes categories"
+
+#. module: product_m2mcategories
+#: model:ir.module.module,description:product_m2mcategories.module_meta_information
+msgid ""
+"\n"
+" This module Extends the existing functionality of Open ERP Products (One "
+"product - One Catgory)\n"
+" to One product -> Many Categories\n"
+"\n"
+" *Note: This module was built generically but in focus of the Magento "
+"Open ERP connector\n"
+" "
+msgstr ""
+"\n"
+" Aquest mòdul estén la funcionalitat existent dels productes a OpenERP "
+"(Un producte -> Una categoria)\n"
+" a Un producte -> Moltes categories\n"
+"\n"
+" * Nota: Aquest mòdul ha estat construït de forma genèrica, i s'utilitza "
+"al connector OpenERP Magento\n"
+" "
+
+#. module: product_m2mcategories
+#: view:product.product:0
+msgid "Extra Categories"
+msgstr "Categories extra"
=== added file 'product_m2mcategories/i18n/es.po'
--- product_m2mcategories/i18n/es.po 1970-01-01 00:00:00 +0000
+++ product_m2mcategories/i18n/es.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,64 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_m2mcategories
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-12-20 17:16+0000\n"
+"PO-Revision-Date: 2010-11-17 03:56+0000\n"
+"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
+"<jesteve@xxxxxxxxxxxxxxx>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-04-17 05:19+0000\n"
+"X-Generator: Launchpad (build 15099)\n"
+
+#. module: product_m2mcategories
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "¡XML inválido para la definición de la vista!"
+
+#. module: product_m2mcategories
+#: field:product.template,categ_ids:0
+msgid "Product Categories"
+msgstr "Categorías de producto"
+
+#. module: product_m2mcategories
+#: view:product.product:0
+msgid "Classification Categories"
+msgstr "Clasificación en categorías"
+
+#. module: product_m2mcategories
+#: model:ir.module.module,shortdesc:product_m2mcategories.module_meta_information
+msgid "Product - Many Categories"
+msgstr "Producto - Muchas categorías"
+
+#. module: product_m2mcategories
+#: model:ir.module.module,description:product_m2mcategories.module_meta_information
+msgid ""
+"\n"
+" This module Extends the existing functionality of Open ERP Products (One "
+"product - One Catgory)\n"
+" to One product -> Many Categories\n"
+"\n"
+" *Note: This module was built generically but in focus of the Magento "
+"Open ERP connector\n"
+" "
+msgstr ""
+"\n"
+" Este módulo extiende la funcionalidad existente de los productos en "
+"OpenERP (Un producto -> Una categoría)\n"
+" a Un producto -> Muchas categorías\n"
+"\n"
+" * Nota: Este módulo ha sido construido de forma genérica, y se utiliza "
+"en el conector OpenERP Magento\n"
+" "
+
+#. module: product_m2mcategories
+#: view:product.product:0
+msgid "Extra Categories"
+msgstr "Categorías extra"
=== added file 'product_m2mcategories/i18n/fr.po'
--- product_m2mcategories/i18n/fr.po 1970-01-01 00:00:00 +0000
+++ product_m2mcategories/i18n/fr.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,56 @@
+# French translation for openobject-addons
+# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2009-12-20 17:16+0000\n"
+"PO-Revision-Date: 2012-01-31 13:13+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: French <fr@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-04-17 05:19+0000\n"
+"X-Generator: Launchpad (build 15099)\n"
+
+#. module: product_m2mcategories
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_m2mcategories
+#: field:product.template,categ_ids:0
+msgid "Product Categories"
+msgstr ""
+
+#. module: product_m2mcategories
+#: view:product.product:0
+msgid "Classification Categories"
+msgstr ""
+
+#. module: product_m2mcategories
+#: model:ir.module.module,shortdesc:product_m2mcategories.module_meta_information
+msgid "Product - Many Categories"
+msgstr ""
+
+#. module: product_m2mcategories
+#: model:ir.module.module,description:product_m2mcategories.module_meta_information
+msgid ""
+"\n"
+" This module Extends the existing functionality of Open ERP Products (One "
+"product - One Catgory)\n"
+" to One product -> Many Categories\n"
+"\n"
+" *Note: This module was built generically but in focus of the Magento "
+"Open ERP connector\n"
+" "
+msgstr ""
+
+#. module: product_m2mcategories
+#: view:product.product:0
+msgid "Extra Categories"
+msgstr ""
=== added file 'product_m2mcategories/i18n/fr_BE.po'
--- product_m2mcategories/i18n/fr_BE.po 1970-01-01 00:00:00 +0000
+++ product_m2mcategories/i18n/fr_BE.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,52 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_m2mcategories
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-11-25 13:31:57+0000\n"
+"PO-Revision-Date: 2009-11-25 13:31:57+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_m2mcategories
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_m2mcategories
+#: field:product.template,categ_ids:0
+msgid "Product Categories"
+msgstr ""
+
+#. module: product_m2mcategories
+#: view:product.product:0
+msgid "Classification Categories"
+msgstr ""
+
+#. module: product_m2mcategories
+#: model:ir.module.module,shortdesc:product_m2mcategories.module_meta_information
+msgid "Product - Many Categories"
+msgstr ""
+
+#. module: product_m2mcategories
+#: model:ir.module.module,description:product_m2mcategories.module_meta_information
+msgid "\n"
+" This module Extends the existing functionality of Open ERP Products (One product - One Catgory)\n"
+" to One product -> Many Categories\n"
+"\n"
+" *Note: This module was built generically but in focus of the Magento Open ERP connector\n"
+" "
+msgstr ""
+
+#. module: product_m2mcategories
+#: view:product.product:0
+msgid "Extra Categories"
+msgstr ""
+
=== added file 'product_m2mcategories/i18n/product_m2mcategories.pot'
--- product_m2mcategories/i18n/product_m2mcategories.pot 1970-01-01 00:00:00 +0000
+++ product_m2mcategories/i18n/product_m2mcategories.pot 2013-01-17 10:06:27 +0000
@@ -0,0 +1,52 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_m2mcategories
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-12-20 17:16:57+0000\n"
+"PO-Revision-Date: 2009-12-20 17:16:57+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_m2mcategories
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_m2mcategories
+#: field:product.template,categ_ids:0
+msgid "Product Categories"
+msgstr ""
+
+#. module: product_m2mcategories
+#: view:product.product:0
+msgid "Classification Categories"
+msgstr ""
+
+#. module: product_m2mcategories
+#: model:ir.module.module,shortdesc:product_m2mcategories.module_meta_information
+msgid "Product - Many Categories"
+msgstr ""
+
+#. module: product_m2mcategories
+#: model:ir.module.module,description:product_m2mcategories.module_meta_information
+msgid "\n"
+" This module Extends the existing functionality of Open ERP Products (One product - One Catgory)\n"
+" to One product -> Many Categories\n"
+"\n"
+" *Note: This module was built generically but in focus of the Magento Open ERP connector\n"
+" "
+msgstr ""
+
+#. module: product_m2mcategories
+#: view:product.product:0
+msgid "Extra Categories"
+msgstr ""
+
=== added file 'product_m2mcategories/i18n/sv.po'
--- product_m2mcategories/i18n/sv.po 1970-01-01 00:00:00 +0000
+++ product_m2mcategories/i18n/sv.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,55 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_m2mcategories
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.14\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-12-20 17:16+0000\n"
+"PO-Revision-Date: 2010-11-23 02:21+0000\n"
+"Last-Translator: Olivier Dony (OpenERP) <Unknown>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-04-17 05:19+0000\n"
+"X-Generator: Launchpad (build 15099)\n"
+
+#. module: product_m2mcategories
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_m2mcategories
+#: field:product.template,categ_ids:0
+msgid "Product Categories"
+msgstr ""
+
+#. module: product_m2mcategories
+#: view:product.product:0
+msgid "Classification Categories"
+msgstr ""
+
+#. module: product_m2mcategories
+#: model:ir.module.module,shortdesc:product_m2mcategories.module_meta_information
+msgid "Product - Many Categories"
+msgstr "Product - Many Categories"
+
+#. module: product_m2mcategories
+#: model:ir.module.module,description:product_m2mcategories.module_meta_information
+msgid ""
+"\n"
+" This module Extends the existing functionality of Open ERP Products (One "
+"product - One Catgory)\n"
+" to One product -> Many Categories\n"
+"\n"
+" *Note: This module was built generically but in focus of the Magento "
+"Open ERP connector\n"
+" "
+msgstr ""
+
+#. module: product_m2mcategories
+#: view:product.product:0
+msgid "Extra Categories"
+msgstr ""
=== added file 'product_m2mcategories/i18n/tr.po'
--- product_m2mcategories/i18n/tr.po 1970-01-01 00:00:00 +0000
+++ product_m2mcategories/i18n/tr.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,56 @@
+# Turkish translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2009-12-20 17:16+0000\n"
+"PO-Revision-Date: 2011-02-21 08:51+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Turkish <tr@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-04-17 05:19+0000\n"
+"X-Generator: Launchpad (build 15099)\n"
+
+#. module: product_m2mcategories
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: product_m2mcategories
+#: field:product.template,categ_ids:0
+msgid "Product Categories"
+msgstr "Ürün Kategorileri"
+
+#. module: product_m2mcategories
+#: view:product.product:0
+msgid "Classification Categories"
+msgstr ""
+
+#. module: product_m2mcategories
+#: model:ir.module.module,shortdesc:product_m2mcategories.module_meta_information
+msgid "Product - Many Categories"
+msgstr ""
+
+#. module: product_m2mcategories
+#: model:ir.module.module,description:product_m2mcategories.module_meta_information
+msgid ""
+"\n"
+" This module Extends the existing functionality of Open ERP Products (One "
+"product - One Catgory)\n"
+" to One product -> Many Categories\n"
+"\n"
+" *Note: This module was built generically but in focus of the Magento "
+"Open ERP connector\n"
+" "
+msgstr ""
+
+#. module: product_m2mcategories
+#: view:product.product:0
+msgid "Extra Categories"
+msgstr ""
=== added file 'product_m2mcategories/product.py'
--- product_m2mcategories/product.py 1970-01-01 00:00:00 +0000
+++ product_m2mcategories/product.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,25 @@
+#########################################################################
+# Copyright (C) 2009 Sharoon Thomas & Open ERP Community #
+# #
+#This program is free software: you can redistribute it and/or modify #
+#it under the terms of the GNU General Public License as published by #
+#the Free Software Foundation, either version 3 of the License, or #
+#(at your option) any later version. #
+# #
+#This program is distributed in the hope that it will be useful, #
+#but WITHOUT ANY WARRANTY; without even the implied warranty of #
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+#GNU General Public License for more details. #
+# #
+#You should have received a copy of the GNU General Public License #
+#along with this program. If not, see <http://www.gnu.org/licenses/>. #
+#########################################################################
+from openerp.osv.orm import Model
+from openerp.osv import fields
+
+class product_product(Model):
+ _inherit = "product.template"
+ _columns = {
+ 'categ_id': fields.many2one('product.category','Pricing/Primary Category', required=True, change_default=True),
+ 'categ_ids': fields.many2many('product.category','product_categ_rel','product_id','categ_id','Product Categories')
+ }
=== added file 'product_m2mcategories/product_view.xml'
--- product_m2mcategories/product_view.xml 1970-01-01 00:00:00 +0000
+++ product_m2mcategories/product_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+ <data>
+ <record id="product_normal_form_view_add_categids" model="ir.ui.view">
+ <field name="name">product.normal.form</field>
+ <field name="model">product.product</field>
+ <field name="inherit_id" ref="product.product_normal_form_view" />
+ <field name="type">form</field>
+ <field eval="7" name="priority"/>
+ <field name="arch" type="xml">
+ <xpath expr="/form/notebook/page[@string='Information']" position="after">
+ <page string="Extra Categories">
+ <separator string="Classification Categories" colspan="2"/>
+ <newline/>
+ <field name="categ_ids" nolabel="1" colspan="2"/>
+ </page>
+ </xpath>
+ </field>
+ </record>
+ </data>
+</openerp>
\ No newline at end of file
=== added directory 'product_multi_company'
=== renamed directory 'product_multi_company' => 'product_multi_company.moved'
=== added file 'product_multi_company/__init__.py'
--- product_multi_company/__init__.py 1970-01-01 00:00:00 +0000
+++ product_multi_company/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import product_multi_company
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
=== added file 'product_multi_company/__openerp__.py'
--- product_multi_company/__openerp__.py 1970-01-01 00:00:00 +0000
+++ product_multi_company/__openerp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+{
+ "name" : "Product multi company ",
+ "version" : "1.1",
+ "author" : "OpenERP SA",
+ "category" : "Generic Modules/Inventory Control",
+ "depends" : [ "product"],
+ "init_xml" : [],
+ "demo_xml" : [],
+ "description": """
+ This module updates the definitions of standard price, public price and seller price with property fields.
+ """,
+ 'update_xml': [],
+ 'test':[],
+ 'installable': True,
+ 'active': False,
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
=== added directory 'product_multi_company/i18n'
=== added file 'product_multi_company/i18n/en_US.po'
--- product_multi_company/i18n/en_US.po 1970-01-01 00:00:00 +0000
+++ product_multi_company/i18n/en_US.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,32 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_multi_company
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.0.0-rc1\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2010-12-28 12:10:13+0000\n"
+"PO-Revision-Date: 2010-12-28 12:10:13+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_multi_company
+#: model:ir.model,name:product_multi_company.model_product_template
+msgid "Product Template"
+msgstr ""
+
+#. module: product_multi_company
+#: constraint:product.template:0
+msgid "Error: The default UOM and the purchase UOM must be in the same category."
+msgstr ""
+
+#. module: product_multi_company
+#: model:ir.model,name:product_multi_company.model_pricelist_partnerinfo
+msgid "pricelist.partnerinfo"
+msgstr ""
+
=== added file 'product_multi_company/i18n/es.po'
--- product_multi_company/i18n/es.po 1970-01-01 00:00:00 +0000
+++ product_multi_company/i18n/es.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,36 @@
+# Spanish translation for openobject-addons
+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2010-12-28 12:10+0000\n"
+"PO-Revision-Date: 2011-08-27 14:01+0000\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Spanish <es@xxxxxx>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:41+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_multi_company
+#: model:ir.model,name:product_multi_company.model_product_template
+msgid "Product Template"
+msgstr "Plantilla de producto"
+
+#. module: product_multi_company
+#: constraint:product.template:0
+msgid ""
+"Error: The default UOM and the purchase UOM must be in the same category."
+msgstr ""
+"Error: La UdM por defecto y la UdM de compra deben estar en la misma "
+"categoría."
+
+#. module: product_multi_company
+#: model:ir.model,name:product_multi_company.model_pricelist_partnerinfo
+msgid "pricelist.partnerinfo"
+msgstr "listaprecios.infoempresa"
=== added file 'product_multi_company/i18n/fr.po'
--- product_multi_company/i18n/fr.po 1970-01-01 00:00:00 +0000
+++ product_multi_company/i18n/fr.po 2013-01-17 10:06:27 +0000
@@ -0,0 +1,33 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_multi_company
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.0.0-rc1\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2010-12-28 12:10+0000\n"
+"PO-Revision-Date: 2011-02-15 17:25+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2012-12-05 05:41+0000\n"
+"X-Generator: Launchpad (build 16335)\n"
+
+#. module: product_multi_company
+#: model:ir.model,name:product_multi_company.model_product_template
+msgid "Product Template"
+msgstr ""
+
+#. module: product_multi_company
+#: constraint:product.template:0
+msgid ""
+"Error: The default UOM and the purchase UOM must be in the same category."
+msgstr ""
+
+#. module: product_multi_company
+#: model:ir.model,name:product_multi_company.model_pricelist_partnerinfo
+msgid "pricelist.partnerinfo"
+msgstr ""
=== added file 'product_multi_company/i18n/product_multi_company.pot'
--- product_multi_company/i18n/product_multi_company.pot 1970-01-01 00:00:00 +0000
+++ product_multi_company/i18n/product_multi_company.pot 2013-01-17 10:06:27 +0000
@@ -0,0 +1,32 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * product_multi_company
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 6.0.0-rc1\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2010-12-28 12:10:13+0000\n"
+"PO-Revision-Date: 2010-12-28 12:10:13+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: product_multi_company
+#: model:ir.model,name:product_multi_company.model_product_template
+msgid "Product Template"
+msgstr ""
+
+#. module: product_multi_company
+#: constraint:product.template:0
+msgid "Error: The default UOM and the purchase UOM must be in the same category."
+msgstr ""
+
+#. module: product_multi_company
+#: model:ir.model,name:product_multi_company.model_pricelist_partnerinfo
+msgid "pricelist.partnerinfo"
+msgstr ""
+
=== added file 'product_multi_company/product_multi_company.py'
--- product_multi_company/product_multi_company.py 1970-01-01 00:00:00 +0000
+++ product_multi_company/product_multi_company.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,59 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from osv import osv, fields
+
+class product_template(osv.osv):
+ _inherit = "product.template"
+ _description = "Product Template"
+ _columns={
+ 'list_price': fields.property('product.template',
+ type='float',
+ string='Public Price',
+ method=True,
+ view_load=True,
+ required=True,
+ help="Base price for computing the customer price. Sometimes called the catalog price."),
+ 'standard_price': fields.property('product.template',
+ type='float',
+ string='Standard Price',
+ method=True,
+ view_load=True,
+ required=True,
+ help="Product's cost for accounting stock valuation. It is the base price for the supplier price."),
+ }
+product_template()
+
+class pricelist_partnerinfo(osv.osv):
+ _inherit = 'pricelist.partnerinfo'
+ _description = "Pricelist Partner"
+ _columns = {
+ 'price': fields.property('pricelist.partnerinfo',
+ type='float',
+ string='Seller Price',
+ method=True,
+ view_load=True,
+ required=True,
+ help="This price will be considered as a price for the supplier UoM if any or the default Unit of Measure of the product otherwise"),
+ }
+pricelist_partnerinfo()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
=== added directory 'product_multi_price'
=== added file 'product_multi_price/__init__.py'
--- product_multi_price/__init__.py 1970-01-01 00:00:00 +0000
+++ product_multi_price/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,29 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+# #
+# product_multi_price for OpenERP #
+# Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+#################################################################################
+
+
+import product_price_fields
+import product
+import account
+
+
+
+
=== added file 'product_multi_price/__openerp__.py'
--- product_multi_price/__openerp__.py 1970-01-01 00:00:00 +0000
+++ product_multi_price/__openerp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,44 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+# #
+# product_multi_price for OpenERP #
+# Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+#################################################################################
+
+
+{
+ 'name': 'product_multi_price',
+ 'version': '6.1.0',
+ 'category': 'Generic Modules/Others',
+ 'license': 'AGPL-3',
+ 'description': """empty""",
+ 'author': 'Akretion',
+ 'website': 'http://www.akretion.com/',
+ 'depends': ['product','account', 'sale','product_prices_on_variant'],
+ 'init_xml': [],
+ 'update_xml': [
+ 'product_price_fields_view.xml',
+ 'product_view.xml',
+ 'product_price_field_config.xml',
+ 'account_view.xml',
+ 'security/ir.model.access.csv',
+ ],
+ 'demo_xml': [],
+ 'installable': True,
+ 'active': False,
+}
+
=== added file 'product_multi_price/account.py'
--- product_multi_price/account.py 1970-01-01 00:00:00 +0000
+++ product_multi_price/account.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,68 @@
+# -*- encoding: utf-8 -*-
+###############################################################################
+# #
+# product_multi_price for OpenERP #
+# Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
+
+from openerp.osv.orm import Model
+from openerp.osv import fields
+
+class account_tax(Model):
+ _inherit = 'account.tax'
+ _columns = {
+ 'related_inc_tax_id': fields.many2one('account.tax', 'Related Included Tax', domain=[('price_include','=', True)]),
+ }
+
+ # overload def compute all but add a choice for the decimal precision
+ def compute_all_with_precision(self, cr, uid, taxes, price_unit, quantity, address_id=None, product=None, partner=None, force_excluded=False, precision=None):
+ """
+ :param force_excluded: boolean used to say that we don't want to consider the value of field price_include of
+ tax. It's used in encoding by line where you don't matter if you encoded a tax with that boolean to True or
+ False
+ RETURN: {
+ 'total': 0.0, # Total without taxes
+ 'total_included: 0.0, # Total with taxes
+ 'taxes': [] # List of taxes, see compute for the format
+ }
+ """
+ if not precision:
+ precision = self.pool.get('decimal.precision').precision_get(cr, uid, 'Account')
+ totalin = totalex = round(price_unit * quantity, precision)
+ tin = []
+ tex = []
+ for tax in taxes:
+ if not tax.price_include or force_excluded:
+ tex.append(tax)
+ else:
+ tin.append(tax)
+ tin = self.compute_inv(cr, uid, tin, price_unit, quantity, address_id=address_id, product=product, partner=partner)
+ for r in tin:
+ totalex -= r.get('amount', 0.0)
+ totlex_qty = 0.0
+ try:
+ totlex_qty = totalex/quantity
+ except:
+ pass
+ tex = self._compute(cr, uid, tex, totlex_qty, quantity, address_id=address_id, product=product, partner=partner)
+ for r in tex:
+ totalin += r.get('amount', 0.0)
+ return {
+ 'total': totalex,
+ 'total_included': totalin,
+ 'taxes': tin + tex
+ }
=== added file 'product_multi_price/account_view.xml'
--- product_multi_price/account_view.xml 1970-01-01 00:00:00 +0000
+++ product_multi_price/account_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ product_multi_price for OpenERP
+ Copyright (C) 2011 Akretion Benoît GUILLOT <benoit.guillot@xxxxxxxxxxxx>
+ The licence is in the file __openerp__.py
+-->
+<openerp>
+ <data>
+
+ <!-- INHERITED VIEW FOR THE OBJECT : account_tax -->
+
+ <record id="product_multi_price_account_tax_view_form" model="ir.ui.view">
+ <field name="name">product_multi_price.account_tax.view_tax_form</field>
+ <field name="model">account.tax</field>
+ <field name="inherit_id" ref="account.view_tax_form" />
+ <field eval="16" name="priority"/>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <data>
+ <field name="price_include" position="after">
+ <field name="related_inc_tax_id" attrs="{'invisible':[('price_include', '=', True)]}" />
+ </field>
+ </data>
+ </field>
+ </record>
+
+ </data>
+</openerp>
=== added file 'product_multi_price/product.py'
--- product_multi_price/product.py 1970-01-01 00:00:00 +0000
+++ product_multi_price/product.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,365 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+# #
+# product_multi_price for OpenERP #
+# Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+#################################################################################
+
+from openerp.osv.orm import Model, setup_modifiers
+from openerp.osv.osv import except_osv
+from lxml import etree
+from tools.translate import _
+
+
+
+class product_product(Model):
+ _inherit = "product.product"
+
+ def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
+ result = super(product_product, self).fields_view_get(cr, uid, view_id,view_type,context,toolbar=toolbar, submenu=submenu)
+ if view_type=='form' and result.get('model') == 'product.product' and '<field name="list_price" modifiers="{}"/>' in result['arch']:
+ product_price_fields_obj = self.pool.get('product.price.fields')
+ product_price_fields_ids = product_price_fields_obj.search(cr, uid, [], context=context)
+ price_fields = []
+ tax_inc = False
+ tax_ex = False
+# arch_1 = u"""<group colspan="2" col="10">\n<separator string="Tax exclude prices" colspan="10"/>\n"""
+# arch_2 = u"""</group>\n"""
+# arch_3 = u"""<group colspan="2" col="10">\n<separator string="Tax include prices" colspan="10"/>\n"""
+# arch_4 = u"""<separator colspan="10"/>\n</group>"""
+# for field in product_price_fields_obj.browse(cr, uid, product_price_fields_ids, context=context):
+# price_fields += [field.field_name, field.basedon_field_id.name, field.product_coef_field_id.name]
+# fields_arch = u"""<label string="%s :" colspan="3"/>\n<field name="%s" colspan="4" nolabel="1"/>\n<field name="%s" string="Coef" colspan="1" attrs="{'readonly':[('%s','!=','product_coef')]}" modifiers="{"readonly":[["%s","!=","product_coef"]]}"/>\n<field name="%s" colspan="1" nolabel="1" attrs="{'readonly':[('%s','!=','manual')]}" modifiers="{"readonly":[["%s","!=","manual"]]}"/>\n""" % (field.name, field.basedon_field_id.name, field.product_coef_field_id.name, field.basedon_field_id.name, field.basedon_field_id.name, field.field_name, field.basedon_field_id.name, field.basedon_field_id.name)
+# if field.tax_included:
+# arch_3 += fields_arch
+# tax_inc = True
+# else:
+# arch_1 += fields_arch
+# tax_ex = True
+# print price_fields
+# #remove group tax include or tax exclude if no price in it
+# if not tax_inc:
+# arch = arch_1 + arch_4
+# elif not tax_ex:
+# arch = arch_3 + arch_4
+# else:
+# arch = arch_1 + arch_2 + arch_3 + arch_4
+# import pdb;pdb.set_trace()
+# result['fields'].update(self.fields_get(cr, uid, price_fields, context))
+# result['arch'] = result['arch'].decode('utf8').replace('<field name="list_price" modifiers="{}"/>', arch)
+## print result
+ eview = etree.fromstring(result['arch'])
+ #select separator just before field : list_price in order to remove it
+ main_sep = eview.xpath("//field[@name='list_price']/preceding-sibling::*[1]")
+ main_sep = main_sep[0]
+ main_sep.getparent().remove(main_sep)
+ btn = eview.xpath("//field[@name='list_price']")
+ if btn:
+ btn = btn[0]
+ group_ex = etree.Element('group', colspan="2", col="11")
+ _separator_ex = etree.SubElement(
+ group_ex,
+ 'separator',
+ colspan="10",
+ string="Tax exclude prices")
+ group_inc = etree.Element('group', colspan="2", col="11")
+ _separator_inc = etree.SubElement(
+ group_inc,
+ 'separator',
+ colspan="10",
+ string="Tax include prices")
+ group_sep = etree.Element('group', colspan="2", col="11")
+ _separator_end = etree.SubElement(
+ group_sep,
+ 'separator',
+ colspan="11")
+ inc_price = self.pool.get('product.price.fields').search(cr, uid, [
+ ('tax_included', '=', True)
+ ], context=context)
+ if inc_price:
+ button_parent = group_inc
+ else:
+ button_parent = group_ex
+ _button = etree.SubElement(
+ button_parent,
+ 'button',
+ colspan="1",
+ name="refresh_prices",
+ string="Refresh Prices",
+ type="object")
+ for field in product_price_fields_obj.browse(cr, uid, product_price_fields_ids, context=context):
+ price_fields = [field.field_name, field.basedon_field_id.name, field.product_coef_field_id.name, field.inc_price_field_id.name]
+ result['fields'].update(self.fields_get(cr, uid, price_fields, context))
+ if field.tax_included:
+ parent = group_inc
+ tax_inc = True
+ inc_readonly = "0"
+ ex_readonly = "1"
+ else:
+ parent = group_ex
+ tax_ex = True
+ inc_readonly = "1"
+ ex_readonly = "0"
+ _label = etree.SubElement(
+ parent,
+ 'label',
+ colspan="3",
+ string="%s" % field.name)
+ _basedon = etree.SubElement(
+ parent,
+ 'field',
+ name="%s" % field.basedon_field_id.name,
+ colspan="4",
+ nolabel="1")
+ setup_modifiers(
+ _basedon, field=result['fields'][field.basedon_field_id.name], context=context)
+ coef = etree.SubElement(
+ parent,
+ 'field',
+ digits="(18, 6)",
+ name="%s" % field.product_coef_field_id.name,
+ string="Coef",
+ colspan="1",
+ attrs="{'readonly':[('%s','!=','product_coef')]}" % field.basedon_field_id.name)
+ setup_modifiers(coef,
+ field=result['fields'][field.product_coef_field_id.name],
+ context=context)
+ price = etree.SubElement(
+ parent,
+ 'field',
+ digits ="(12, %s)" % (self.pool.get('decimal.precision').precision_get(cr, uid, 'Sale Price')),
+ name="%s" % field.field_name,
+ colspan="1",
+ nolabel="1",
+ readonly = ex_readonly,
+ attrs="{'readonly':[('%s','!=','manual')]}" % field.basedon_field_id.name)
+ setup_modifiers(price,
+ field=result['fields'][field.field_name],
+ context=context)
+ inc_price = etree.SubElement(
+ parent,
+ 'field',
+ digits ="(12, %s)" % (self.pool.get('decimal.precision').precision_get(cr, uid, 'Sale Price')),
+ name="%s" % field.inc_price_field_id.name,
+ colspan="1",
+ nolabel="1",
+ readonly = inc_readonly,
+ attrs="{'readonly':[('%s','!=','manual')]}" % field.basedon_field_id.name)
+ setup_modifiers(inc_price,
+ field=result['fields'][field.inc_price_field_id.name],
+ context=context)
+ arch = etree.Element('group', colspan="2", col="11")
+ if tax_inc:
+ arch.extend(group_inc)
+ if tax_ex:
+ arch.extend(group_ex)
+ arch.extend(group_sep)
+ btn.getparent().replace(btn, arch)
+ result['arch'] = etree.tostring(eview, pretty_print=True)
+ return result
+
+ def default_get(self, cr, uid, fields_list, context=None):
+ defaults = super(product_product, self).default_get(cr, uid, fields_list, context=context)
+ product_price_fields_obj = self.pool.get('product.price.fields')
+ product_price_fields_ids = product_price_fields_obj.search(cr, uid, [], context=context)
+ for field in product_price_fields_obj.browse(cr, uid, product_price_fields_ids, context=context):
+ if not defaults.get(field.basedon_field_id.name):
+ if field.default_basedon:
+ defaults[field.basedon_field_id.name] = field.default_basedon
+ return defaults
+
+ def refresh_prices(self, cr, uid, ids, context=None):
+ return True
+
+ def write(self, cr, uid, ids, vals, context=None):
+ if context is None: context={}
+ context['simple_read'] = True
+ return super(product_product, self).write(cr, uid, ids, vals, context=context)
+
+ def read(self, cr, uid, ids, fields=None, context=None, load='_classic_read'):
+ if context is None:
+ context={}
+ read = False
+ if not fields:
+ fields = []
+ for field in fields:
+ if field[0:5] == 'x_pm_':
+ read = True
+ break
+ if read and not context.get('simple_read'):
+ tax_obj = self.pool.get('account.tax')
+ prod_price_fields_obj = self.pool.get('product.price.fields')
+ add_fields = []
+ if not 'categ_id' in fields:
+ fields.append('categ_id')
+ add_fields.append('categ_id')
+ if not 'standard_price' in fields:
+ fields.append('standard_price')
+ add_fields.append('standard_price')
+ if not 'taxes_id' in fields:
+ fields.append('taxes_id')
+ add_fields.append('taxes_id')
+ for field in fields:
+ name = False
+ if field[0:11] == 'x_pm_price_':
+ name = field[11:]
+ if not 'x_pm_product_coef_' + name in fields:
+ fields.append('x_pm_product_coef_' + name)
+ add_fields.append('x_pm_product_coef_' + name)
+ if not 'x_pm_inc_price_' + name in fields:
+ fields.append('x_pm_inc_price_' + name)
+ add_fields.append('x_pm_inc_price_' + name)
+ elif field[0:18] == 'x_pm_product_coef_':
+ name = field[18:]
+ if name == 'list_price':
+ if not name in fields:
+ fields.append(name)
+ add_fields.append(name)
+ elif not 'x_pm_price_' + name in fields:
+ fields.append('x_pm_price_' + name)
+ add_fields.append('x_pm_price_' + name)
+ if not 'x_pm_inc_price_' + name in fields:
+ fields.append('x_pm_inc_price_' + name)
+ add_fields.append('x_pm_inc_price_' + name)
+ elif field[0:15] == 'x_pm_inc_price_':
+ name = field[15:]
+ if name == 'list_price':
+ if not name in fields:
+ fields.append(name)
+ add_fields.append(name)
+ elif not 'x_pm_price_' + name in fields:
+ fields.append('x_pm_price_' + name)
+ add_fields.append('x_pm_price_' + name)
+ if not 'x_pm_product_coef_' + name in fields:
+ fields.append('x_pm_product_coef_' + name)
+ add_fields.append('x_pm_product_coef_' + name)
+ if name:
+ if not 'x_pm_basedon_' + name in fields:
+ fields.append('x_pm_basedon_' + name)
+ add_fields.append('x_pm_basedon_' + name)
+ results = super(product_product, self).read(cr, uid, ids, fields=fields, context=context, load=load)
+ to_unlist = False
+ if not hasattr(results, "__iter__"):
+ results = results
+ to_unlist = True
+ for result in results:
+ fields = list(set(fields)-set(add_fields))
+ for field in fields:
+ name = False
+ if field[0:11] == 'x_pm_price_':
+ name = field[11:]
+ elif field[0:18] == 'x_pm_product_coef_':
+ name = field[18:]
+ elif field[0:15] == 'x_pm_inc_price_':
+ name = field[15:]
+ if name:
+ if name == 'list_price':
+ price_name = 'list_price'
+ else:
+ price_name = 'x_pm_price_' + name
+ tax_inc = False
+ price_field_ids = prod_price_fields_obj.search(cr, uid, [
+ ('field_name', '=', price_name)
+ ], context=context)
+ if price_field_ids:
+ price_field = prod_price_fields_obj.read(cr, uid, price_field_ids[0], ['tax_included'], context=context)
+ if price_field.get('tax_included'):
+ tax_inc = True
+ if result.get('taxes_id'):
+ #TODO support several taxes ?
+ tax = tax_obj.browse(cr, uid, result['taxes_id'][0], context=context)
+ if result['x_pm_basedon_' + name] == 'manual':
+ if result['standard_price']:
+ if tax_inc and result.get('taxes_id'):
+ if not tax.related_inc_tax_id:
+ raise except_osv(_("No related tax"), _("You need to define a related included tax for the sale tax!"))
+ taxes = tax_obj.compute_all_with_precision(cr, uid, [tax.related_inc_tax_id], result['x_pm_inc_price_' + name], 1, precision=6)
+ result[price_name] = taxes['total']
+ elif result.get('taxes_id'):
+ taxes = tax_obj.compute_all_with_precision(cr, uid, [tax], result[price_name], 1, precision=6)
+ result['x_pm_inc_price_' + name] = taxes['total_included']
+ else:
+ result['x_pm_inc_price_' + name] = result[price_name]
+ result['x_pm_product_coef_' + name] = result[price_name]/result['standard_price']
+ else:
+ result['x_pm_product_coef_' + name] = 0
+ elif result['x_pm_basedon_' + name] == 'product_coef':
+ if result.get('x_pm_product_coef_' + name):
+ price_ex = result['standard_price']*result['x_pm_product_coef_' + name]
+ else:
+ price_ex = result['standard_price']
+ elif result['x_pm_basedon_' + name] == 'categ_coef':
+ if isinstance(result['categ_id'], (int, long)):
+ categ_id = result['categ_id']
+ else:
+ categ_id = result['categ_id'][0]
+ categ = self.pool.get('product.category').read(cr, uid, [categ_id], ['x_pm_categ_coef_' + name], context=context)
+ if categ[0].get('x_pm_categ_coef_' + name):
+ result['x_pm_product_coef_' + name] = categ[0]['x_pm_categ_coef_' + name]
+ else:
+ result['x_pm_product_coef_' + name] = 1
+ price_ex = result['standard_price']*result['x_pm_product_coef_' + name]
+ if result['x_pm_basedon_' + name] in ['categ_coef', 'product_coef']:
+ if result.get('taxes_id'):
+ taxes = tax_obj.compute_all_with_precision(cr, uid, [tax], price_ex, 1, precision=6)
+ result['x_pm_inc_price_' + name] = taxes['total_included']
+ else:
+ result['x_pm_inc_price_' + name] = price_ex
+ result[price_name] = price_ex
+ for field in add_fields:
+ if result.get(field):
+ del result[field]
+ if to_unlist:
+ results = results[0]
+ else:
+ results = super(product_product, self).read(cr, uid, ids, fields=fields, context=context, load=load)
+ return results
+
+
+
+class product_category(Model):
+ _inherit = 'product.category'
+
+ def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
+ result = super(product_category, self).fields_view_get(cr, uid, view_id,view_type,context,toolbar=toolbar, submenu=submenu)
+ if view_type=='form':
+ product_price_fields_obj = self.pool.get('product.price.fields')
+ product_price_fields_ids = product_price_fields_obj.search(cr, uid, [], context=context)
+ price_fields = []
+ eview = etree.fromstring(result['arch'])
+ btn = eview.xpath("//field[@name='type']")
+ if btn:
+ btn = btn[0]
+ arch = etree.Element('group', colspan="2", col="2")
+ _separator = etree.SubElement(
+ arch,
+ 'separator',
+ colspan="2",
+ string="Product price coefficients")
+ for field in product_price_fields_obj.browse(cr, uid, product_price_fields_ids, context=context):
+ price_fields.append(field.categ_coef_field_id.name)
+ _coef = etree.SubElement(
+ arch,
+ 'field',
+ digits="(18, 6)",
+ name="%s" % field.categ_coef_field_id.name,
+ string="%s" % field.name,
+ colspan="2")
+ btn.getparent().append(arch)
+ result['fields'].update(self.fields_get(cr, uid, price_fields, context))
+ result['arch'] = etree.tostring(eview, pretty_print=True)
+ return result
=== added file 'product_multi_price/product_price_field_config.xml'
--- product_multi_price/product_price_field_config.xml 1970-01-01 00:00:00 +0000
+++ product_multi_price/product_price_field_config.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ product_multi_price for OpenERP
+ Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx>
+ The licence is in the file __openerp__.py
+-->
+
+<openerp>
+ <data noupdate="1">
+
+ <!-- Add the initial price list_price in the list of fields -->
+
+ <record id="product_multi_price_original_sale_price" model="product.price.fields">
+ <field name="field_name">list_price</field>
+ <field name="sequence">0</field>
+ <field name="default_basedon">manual</field>
+ </record>
+
+ </data>
+</openerp>
=== added file 'product_multi_price/product_price_fields.py'
--- product_multi_price/product_price_fields.py 1970-01-01 00:00:00 +0000
+++ product_multi_price/product_price_fields.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,170 @@
+# -*- encoding: utf-8 -*-
+#################################################################################
+# #
+# product_multi_price for OpenERP #
+# Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU Affero General Public License as #
+# published by the Free Software Foundation, either version 3 of the #
+# License, or (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU Affero General Public License for more details. #
+# #
+# You should have received a copy of the GNU Affero General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+#################################################################################
+
+from openerp.osv.orm import Model
+from openerp.osv import fields
+from openerp.osv.osv import except_osv
+from tools.translate import _
+
+#TODO
+
+
+class product_price_fields(Model):
+ _name = "product.price.fields"
+ _description = "product price fields"
+ _columns = {
+ 'name': fields.related('price_field_id', 'field_description', type='char', size=64, string='Field Label', store=True),
+ 'field_name': fields.related('price_field_id', 'name', type='char', size=64, string='Field Name', store=True, help ="you can chose the field name by default it will be build with the name of the field replacing the space by '_' and adding x_pm_ add the start"),
+ 'price_field_id' : fields.many2one('ir.model.fields', 'Field ID', domain = [('model', '=', 'product.product'), ('ttype', '=', 'float')]),
+ 'sequence' : fields.integer('Sequence', help="The product 'variants' code will use order the field on the product view"),
+ 'tax_included': fields.boolean('Tax included'),
+ 'basedon_field_id' : fields.many2one('ir.model.fields', 'Based on Field ID', domain = [('model', '=', 'product.product'), ('ttype', '=', 'selection')]),
+ 'product_coef_field_id' : fields.many2one('ir.model.fields', 'Product Coef Field ID', domain = [('model', '=', 'product.product'), ('ttype', '=', 'float')]),
+ 'categ_coef_field_id' : fields.many2one('ir.model.fields', 'Category Coef Field ID', domain = [('model', '=', 'product.category'), ('ttype', '=', 'float')]),
+ 'default_basedon':fields.selection([('categ_coef','Price on category coefficient'),('product_coef','Price on product coefficient'),('manual','Manual price')], 'Based on by default', required=True),
+ 'currency_id': fields.many2one('res.currency', "Currency", required=True, help="The currency the field is expressed in."),
+ 'inc_price_field_id' : fields.many2one('ir.model.fields', 'Price Included Field ID', domain = [('model', '=', 'product.product'), ('ttype', '=', 'float')]),
+ }
+
+ def _get_currency(self, cr, uid, ctx):
+ comp = self.pool.get('res.users').browse(cr, uid, uid).company_id
+ if not comp:
+ comp_id = self.pool.get('res.company').search(cr, uid, [])[0]
+ comp = self.pool.get('res.company').browse(cr, uid, comp_id)
+ return comp.currency_id.id
+
+ _defaults = {
+ "currency_id": _get_currency
+ }
+
+ _order = "sequence, name"
+
+ def _create_price_type(self, cr, uid, vals, context=None):
+ field = (vals.get('field_name', False) or 'x_pm_price_' + vals['name'].replace(' ', '_').replace('-', '_')).lower()
+ name = (_('Price')) + ' ' + (vals.get('field_name', False) or vals['name']).capitalize()
+ type_obj = self.pool.get('product.price.type')
+ price_type_ids = type_obj.search(cr, uid, [
+ ('name', '=', name),
+ ('field', '=', field)], context=context)
+ if not price_type_ids:
+ type_vals = {
+ 'name': name,
+ 'active': True,
+ 'field': field,
+ 'currency_id': vals['currency_id']
+ }
+ price_type_id = type_obj.create(cr, uid, type_vals, context=context)
+ else:
+ price_type_id = price_type_ids[0]
+ return price_type_id
+
+ def _create_price_list(self, cr, uid, vals, price_type_id, context=None):
+ pricelist_obj = self.pool.get('product.pricelist')
+ name = (vals.get('field_name', False) or vals['name']).capitalize()
+ pricelist_ids = pricelist_obj.search(cr, uid, [
+ ('name', '=', ((_('Price list')) + ' ' + name)),
+ ('type', '=', 'sale')], context=context)
+ if not pricelist_ids:
+ items = [(0,0,{
+ 'name' : (_('Default')) + ' '+ name,
+ 'sequence': 5,
+ 'base':price_type_id,
+ 'min_quantity':0,
+ })]
+ pricelist_version = [(0,0,{
+ 'name': (_('Version')) + ' ' + name,
+ 'active': True,
+ 'items_id': items,
+ })]
+ list_vals = {
+ 'name': (_('Price list')) + ' ' + name,
+ 'active': True,
+ 'type': 'sale',
+ 'version_id': pricelist_version,
+ 'currency_id': vals['currency_id'],
+ #TODO support multi_company pricelists
+ }
+ pricelist_id = pricelist_obj.create(cr, uid, list_vals, context=context)
+ else:
+ pricelist_id = pricelist_ids[0]
+ return pricelist_id
+
+ def create(self, cr, uid, vals, context=None):
+ product_model_id = self.pool.get('ir.model').search(cr, uid, [('model', '=', 'product.product')])[0]
+ categ_model_id = self.pool.get('ir.model').search(cr, uid, [('model', '=', 'product.category')])[0]
+ if vals.get('price_field_id', False):
+ return super(product_price_fields, self).create(cr, uid, vals, context)
+ exist_id = False
+ if vals.get('field_name', False):
+ print 'field name'
+ exist_id = self.pool.get('ir.model.fields').search(cr, uid, [('name', '=', vals['field_name'])])
+ if not exist_id and vals['field_name'][0:2] != 'x_':
+ raise except_osv(_('User Error'), _("Please prefix the field name by x_ as it is a custom field"))
+ field_list = ['price', 'inc_price', 'basedon','product_coef','categ_coef']
+ product_ids = self.pool.get('product.product').search(cr, uid, [], context=context)
+ for field in field_list:
+ if exist_id and field == 'price':
+ vals[field +'_field_id'] = exist_id[0]
+ if not vals.get('name', False):
+ vals['name'] = vals['field_name']
+ del vals['field_name']
+ else:
+ if field == 'categ_coef':
+ model_id = categ_model_id
+ model = 'product.category'
+ else:
+ model_id = product_model_id
+ model = 'product.product'
+ field_vals = {
+ 'name': (vals.get('field_name', False) or 'x_pm_' + field + '_' + vals['name'].replace(' ', '_').replace('-', '_')).lower() ,
+ 'model_id':model_id,
+ 'model':model,
+ 'field_description': (vals.get('field_name', False) or vals['name']).capitalize() + ' ' + field,
+ 'state': 'manual'
+ }
+ if field in ['price', 'inc_price', 'product_coef','categ_coef']:
+ field_vals['ttype'] = 'float'
+ if field == 'basedon':
+ field_vals['ttype'] = 'selection'
+ field_vals['selection'] = "[('categ_coef','Price on category coefficient'),('product_coef','Price on product coefficient'),('manual','Manual price')]"
+ field_vals['required'] = True
+ vals[field + '_field_id'] = self.pool.get('ir.model.fields').create(cr, uid, field_vals)
+ default_vals={}
+ if field == 'basedon' and vals.get('default_basedon', False):
+ default_vals[field_vals['name']] = vals['default_basedon']
+ self.pool.get('product.product').write(cr, uid, product_ids, default_vals, context=context)
+ if not exist_id:
+ if not vals.get('currency_id'):
+ vals['currency_id'] = self._get_currency(cr, uid, context)
+ price_type_id = self._create_price_type(cr, uid, vals, context=context)
+ price_list = self._create_price_list(cr, uid, vals, price_type_id, context=context)
+ if vals.get('field_name', False):
+ del vals['field_name']
+ del vals['name']
+ return super(product_price_fields, self).create(cr, uid, vals, context)
+
+ def unlink(self, cr, uid, ids, context=None):
+ for price_field in self.browse(cr, uid, ids, context=context):
+ price_field.price_field_id.unlink()
+ price_field.basedon_field_id.unlink()
+ price_field.product_coef_field_id.unlink()
+ price_field.categ_coef_field_id.unlink()
+ return super(product_price_fields, self).unlink(cr, uid, ids, context=context)
=== added file 'product_multi_price/product_price_fields_view.xml'
--- product_multi_price/product_price_fields_view.xml 1970-01-01 00:00:00 +0000
+++ product_multi_price/product_price_fields_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ product_multi_price for OpenERP
+ Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx>
+ The licence is in the file __openerp__.py
+-->
+
+<openerp>
+ <data>
+
+
+ <!-- VIEW FOR THE OBJECT : product_price_fields -->
+ <record id="product_multi_price_product_price_fields_view_form" model="ir.ui.view">
+ <field name="name">product_multi_price.product_price_fields.view_form</field>
+ <field name="model">product.price.fields</field>
+ <field eval="16" name="priority"/>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Price Fields">
+ <field name="name" />
+ <field name="field_name" />
+ <field name="sequence" />
+ <field name="price_field_id" />
+ <field name="inc_price_field_id" />
+ <field name="basedon_field_id" />
+ <field name="product_coef_field_id" />
+ <field name="categ_coef_field_id" />
+ <field name="tax_included" />
+ <field name="currency_id" />
+ <group colspan="2" col="2">
+ <separator string="Default settings" colspan="2"/>
+ <field name="default_basedon" colspan="2"/>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <record id="product_multi_price_product_price_fields_view_tree" model="ir.ui.view">
+ <field name="name">product_multi_price.product_price_fields.view_tree</field>
+ <field name="model">product.price.fields</field>
+ <field eval="16" name="priority"/>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Price Fields">
+ <field name="name" />
+ <field name="field_name" />
+ <field name="sequence" />
+ </tree>
+ </field>
+ </record>
+
+ <record id="product_multi_price_product_price_fields_action" model="ir.actions.act_window">
+ <field name="name">Add Price</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">product.price.fields</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form</field>
+ </record>
+
+ <menuitem
+ action="product_multi_price_product_price_fields_action" id="menu_product_price_fields"
+ parent="product.menu_product_pricelist_main" sequence="7"/>
+
+
+ </data>
+</openerp>
=== added file 'product_multi_price/product_view.xml'
--- product_multi_price/product_view.xml 1970-01-01 00:00:00 +0000
+++ product_multi_price/product_view.xml 2013-01-17 10:06:27 +0000
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ product_multi_price for OpenERP
+ Copyright (C) 2011 Akretion Sébastien BEAU <sebastien.beau@xxxxxxxxxxxx>
+ The licence is in the file __openerp__.py
+-->
+
+<openerp>
+ <data>
+
+ <!-- INHERITED VIEW FOR THE OBJECT : product_product -->
+
+<!-- <record id="product_multi_price_product_product_view_form" model="ir.ui.view">-->
+<!-- <field name="name">product_multi_price.product_product.view_form</field>-->
+<!-- <field name="model">product.product</field>-->
+<!-- <field name="inherit_id" ref="product.product_normal_form_view" />-->
+<!-- <field eval="16" name="priority"/>-->
+<!-- <field name="type">form</field>-->
+<!-- <field name="arch" type="xml">-->
+<!-- <data>-->
+<!-- <field name="list_price" position="replace">-->
+<!-- <group colspan="2" col="7">-->
+<!-- <separator string="Tax exclude prices" colspan="7"/>-->
+<!-- <label string="essaie_price" colspan="1"/>-->
+<!-- <field name="essaie_basedon" colspan="3" nolabel="1"/>-->
+<!-- <field string="Coef" name="essaie_coef" colspan="1"/>-->
+<!-- <field name="essaie_price" colspan="1" nolabel="1"/>-->
+<!-- </group>-->
+<!-- <group colspan="2" col="3">-->
+<!-- <separator string="Tax include prices" colspan="2"/>-->
+<!-- </group>-->
+<!-- </field>-->
+<!-- </data>-->
+<!-- </field>-->
+<!-- </record>-->
+ </data>
+</openerp>
=== added directory 'product_multi_price/security'
=== added file 'product_multi_price/security/ir.model.access.csv'
--- product_multi_price/security/ir.model.access.csv 1970-01-01 00:00:00 +0000
+++ product_multi_price/security/ir.model.access.csv 2013-01-17 10:06:27 +0000
@@ -0,0 +1,3 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_product_price_fields_manager","product_multi_price_product_price_fields","product_multi_price.model_product_price_fields","base.group_sale_salesman",1,1,1,1
+"access_product_price_fields_user","product_multi_price_product_price_fields","product_multi_price.model_product_price_fields","base.group_user",1,0,0,0
=== added directory 'product_pricelist_fixed_price'
=== renamed directory 'product_pricelist_fixed_price' => 'product_pricelist_fixed_price.moved'
=== added file 'product_pricelist_fixed_price/AUTHORS.txt'
--- product_pricelist_fixed_price/AUTHORS.txt 1970-01-01 00:00:00 +0000
+++ product_pricelist_fixed_price/AUTHORS.txt 2013-01-17 10:06:27 +0000
@@ -0,0 +1,1 @@
+Lorenzo Battistini <lorenzo.battistini@xxxxxxxxxxxx>
=== added file 'product_pricelist_fixed_price/__init__.py'
--- product_pricelist_fixed_price/__init__.py 1970-01-01 00:00:00 +0000
+++ product_pricelist_fixed_price/__init__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,22 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2011 Domsense s.r.l. (<http://www.domsense.com>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import pricelist
=== added file 'product_pricelist_fixed_price/__openerp__.py'
--- product_pricelist_fixed_price/__openerp__.py 1970-01-01 00:00:00 +0000
+++ product_pricelist_fixed_price/__openerp__.py 2013-01-17 10:06:27 +0000
@@ -0,0 +1,38 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2011 Domsense s.r.l. (<http://www.domsense.com>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If
Follow ups