diff --git a/product_customer_code/README.rst b/product_customer_code/README.rst new file mode 100644 index 00000000000..d00269ea8e6 --- /dev/null +++ b/product_customer_code/README.rst @@ -0,0 +1,80 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +===================== +Product customer code +===================== + +This module extends of module product and allows to have different codes +for the same product according to the customer. + +Installation +============ + +To install this module, you need: + +- Not special pre-installation is required, just install as a regular Odoo + module: + + - Go to ``Settings > Module list`` search for the current name and click in + ``Install`` button. + +Usage +===== + +To use this module, you need: + +- Go to product and configure code for each selected customer. + +.. figure:: static/description/customer_reference.png + :alt: Configure customer codes + :width: 600 px + +- When add order lines in sale quotation for a customer that has an specific + code in the product, you can search that product with customer code. + +.. figure:: static/description/quotation_customer.png + :alt: Search by exist customer code + :width: 600 px + +- If product does not have a configuration for customer selected, product will + be search by its default code. + +.. figure:: static/description/quotation_not_customer.png + :alt: Search by not exist customer code + :width: 600 px + +You can see the behavior described above in the following video: + +.. figure:: http://img.youtube.com/vi/CkePQmYZMMc/hqdefault.jpg + :target: https://www.youtube.com/embed/CkePQmYZMMc + :figwidth: 60% + :align: center + +Credits +======= + + +Contributors +------------ + +* Julio Serna Hernández +* Yennifer Santiago +* Moisés López + + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/product_customer_code/__init__.py b/product_customer_code/__init__.py index df5910868b4..845729c730e 100644 --- a/product_customer_code/__init__.py +++ b/product_customer_code/__init__.py @@ -1,2 +1,5 @@ -import product_customer_code -import product +# coding: utf-8 +# Copyright 2017 Vauxoo (https://www.vauxoo.com) info@vauxoo.com +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + +from . import models diff --git a/product_customer_code/__openerp__.py b/product_customer_code/__openerp__.py index af8cd13e819..61dfe0530c2 100644 --- a/product_customer_code/__openerp__.py +++ b/product_customer_code/__openerp__.py @@ -1,60 +1,25 @@ -# -*- encoding: utf-8 -*- -########################################################################### -# Module Writen to OpenERP, Open Source Management Solution -# -# Copyright (c) 2012 Vauxoo - http://www.vauxoo.com/ -# All Rights Reserved. -# info Vauxoo (info@vauxoo.com) -############################################################################ -# Coded by: el_rodo_1 (rodo@vauxoo.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 . -# -############################################################################## +# coding: utf-8 +# Copyright 2017 Vauxoo (https://www.vauxoo.com) info@vauxoo.com +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + { "name": "Products Customer Code", - "version": "1.0", - "author": "Vauxoo,Odoo Community Association (OCA)", + "version": "8.0.1.0.0", + "author": "Vauxoo, Odoo Community Association (OCA)", + "category": "Generic Modules/Product", "website": "http://www.vauxoo.com/", "license": "AGPL-3", - "category": "Generic Modules/Product", - "summary": "Add many Customers' Codes in product", "depends": [ - "base", - "product", + "product" ], - "description": """ -Customer' codes in product -========================== - -This module does just like the product.supplierinfo but for customers instead. For instance it -allows to have different references for the same product according to the customer. - -.. image:: product_customer_code/static/src/img/screenshot1.png - -.. tip:: - - You will need install some of the Apps which enable the product menu to see this module in - action, like Sales, Purchase or Warehouse Management - """, + "demo": [], "data": [ "security/product_customer_code_security.xml", "security/ir.model.access.csv", - "product_customer_code_view.xml", - "product_product_view.xml", + "views/product_customer_code_view.xml", + "views/product_product_view.xml" ], - "active": False, - 'installable': False, + "test": [], + "installable": True, + "auto_install": False, } diff --git a/product_customer_code/i18n/es.po b/product_customer_code/i18n/es.po index b9af2a5fef9..e2a598cdf26 100644 --- a/product_customer_code/i18n/es.po +++ b/product_customer_code/i18n/es.po @@ -1,20 +1,22 @@ # Translation of OpenERP Server. # This file contains the translation of the following modules: -# * product_customer_code +# * product_customer_code # msgid "" msgstr "" "Project-Id-Version: OpenERP Server 6.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-11-07 01:08+0000\n" -"PO-Revision-Date: 2014-06-20 09:06+0000\n" -"Last-Translator: Raphaël Valyi - http://www.akretion.com \n" +"PO-Revision-Date: 2015-08-03 16:07+0200\n" +"Last-Translator: hbto [Vauxoo] http://www.vauxoo.com " +"\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: 2014-06-21 06:24+0000\n" -"X-Generator: Launchpad (build 17058)\n" +"X-Launchpad-Export-Date: 2014-11-21 06:46+0000\n" +"X-Generator: Poedit 1.8.2\n" +"Language: es\n" #. module: product_customer_code #: field:product.customer.code,partner_id:0 @@ -47,23 +49,20 @@ msgid "Customer Product Code" msgstr "Código del Producto por Cliente" #. module: product_customer_code -#: view:product.customer.code:0 -#: field:product.customer.code,company_id:0 +#: view:product.customer.code:0 field:product.customer.code,company_id:0 msgid "Company" msgstr "Compañia" #. module: product_customer_code #: model:ir.actions.act_window,name:product_customer_code.action_product_customer_code_tree #: model:ir.ui.menu,name:product_customer_code.menu_product_customer_code -#: view:product.customer.code:0 -#: view:product.product:0 +#: view:product.customer.code:0 view:product.product:0 msgid "Product Customer Code" msgstr "Código del Producto por Cliente" #. module: product_customer_code #: model:ir.model,name:product_customer_code.model_product_product -#: view:product.customer.code:0 -#: field:product.customer.code,product_id:0 +#: view:product.customer.code:0 field:product.customer.code,product_id:0 msgid "Product" msgstr "Producto" @@ -76,7 +75,8 @@ msgid "" " a request for quotation." msgstr "" "El código de Producto del cliente\n" -" se usará cuando se busque en\n" +" se usará cuando se busque " +"en\n" " una solicitud de cotización." #. module: product_customer_code @@ -113,9 +113,11 @@ msgstr "Agregar varios códigos de clientes" #: help:product.customer.code,product_name:0 msgid "" "This customer's product name will\n" -" be used when searching into a\n" +" be used when searching into " +"a\n" " request for quotation." msgstr "" "Este nombre de Producto del cliente\n" -" se usará cuando se busque en\n" +" se usará cuando se busque " +"en\n" " una solicitud de cotización." diff --git a/product_customer_code/i18n/es_MX.po b/product_customer_code/i18n/es_MX.po index aa43b9be4a5..2529770b267 100644 --- a/product_customer_code/i18n/es_MX.po +++ b/product_customer_code/i18n/es_MX.po @@ -1,20 +1,21 @@ # Translation of OpenERP Server. # This file contains the translation of the following modules: -# * product_customer_code +# * product_customer_code # msgid "" msgstr "" "Project-Id-Version: OpenERP Server 6.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-11-07 01:08+0000\n" -"PO-Revision-Date: 2014-06-20 09:02+0000\n" +"PO-Revision-Date: 2015-08-03 16:07+0200\n" "Last-Translator: julio \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: 2014-06-21 06:24+0000\n" -"X-Generator: Launchpad (build 17058)\n" +"X-Launchpad-Export-Date: 2014-11-21 06:46+0000\n" +"X-Generator: Poedit 1.8.2\n" +"Language: es_MX\n" #. module: product_customer_code #: field:product.customer.code,partner_id:0 @@ -47,23 +48,20 @@ msgid "Customer Product Code" msgstr "" #. module: product_customer_code -#: view:product.customer.code:0 -#: field:product.customer.code,company_id:0 +#: view:product.customer.code:0 field:product.customer.code,company_id:0 msgid "Company" msgstr "" #. module: product_customer_code #: model:ir.actions.act_window,name:product_customer_code.action_product_customer_code_tree #: model:ir.ui.menu,name:product_customer_code.menu_product_customer_code -#: view:product.customer.code:0 -#: view:product.product:0 +#: view:product.customer.code:0 view:product.product:0 msgid "Product Customer Code" msgstr "" #. module: product_customer_code #: model:ir.model,name:product_customer_code.model_product_product -#: view:product.customer.code:0 -#: field:product.customer.code,product_id:0 +#: view:product.customer.code:0 field:product.customer.code,product_id:0 msgid "Product" msgstr "" @@ -110,6 +108,7 @@ msgstr "" #: help:product.customer.code,product_name:0 msgid "" "This customer's product name will\n" -" be used when searching into a\n" +" be used when searching into " +"a\n" " request for quotation." msgstr "" diff --git a/product_customer_code/i18n/es_VE.po b/product_customer_code/i18n/es_VE.po index 296c7c8acc4..f818ef020d9 100644 --- a/product_customer_code/i18n/es_VE.po +++ b/product_customer_code/i18n/es_VE.po @@ -1,20 +1,21 @@ # Translation of OpenERP Server. # This file contains the translation of the following modules: -# * product_customer_code +# * product_customer_code # msgid "" msgstr "" "Project-Id-Version: OpenERP Server 6.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-11-07 01:08+0000\n" -"PO-Revision-Date: 2014-06-20 09:03+0000\n" +"PO-Revision-Date: 2015-08-03 16:07+0200\n" "Last-Translator: julio \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: 2014-06-21 06:24+0000\n" -"X-Generator: Launchpad (build 17058)\n" +"X-Launchpad-Export-Date: 2014-11-21 06:46+0000\n" +"X-Generator: Poedit 1.8.2\n" +"Language: es_VE\n" #. module: product_customer_code #: field:product.customer.code,partner_id:0 @@ -47,23 +48,20 @@ msgid "Customer Product Code" msgstr "" #. module: product_customer_code -#: view:product.customer.code:0 -#: field:product.customer.code,company_id:0 +#: view:product.customer.code:0 field:product.customer.code,company_id:0 msgid "Company" msgstr "" #. module: product_customer_code #: model:ir.actions.act_window,name:product_customer_code.action_product_customer_code_tree #: model:ir.ui.menu,name:product_customer_code.menu_product_customer_code -#: view:product.customer.code:0 -#: view:product.product:0 +#: view:product.customer.code:0 view:product.product:0 msgid "Product Customer Code" msgstr "" #. module: product_customer_code #: model:ir.model,name:product_customer_code.model_product_product -#: view:product.customer.code:0 -#: field:product.customer.code,product_id:0 +#: view:product.customer.code:0 field:product.customer.code,product_id:0 msgid "Product" msgstr "" @@ -110,6 +108,7 @@ msgstr "" #: help:product.customer.code,product_name:0 msgid "" "This customer's product name will\n" -" be used when searching into a\n" +" be used when searching into " +"a\n" " request for quotation." msgstr "" diff --git a/product_customer_code/models/__init__.py b/product_customer_code/models/__init__.py new file mode 100644 index 00000000000..e29290f4e23 --- /dev/null +++ b/product_customer_code/models/__init__.py @@ -0,0 +1,6 @@ +# coding: utf-8 +# Copyright 2017 Vauxoo (https://www.vauxoo.com) info@vauxoo.com +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + +from . import product_customer_code +from . import product diff --git a/product_customer_code/models/product.py b/product_customer_code/models/product.py new file mode 100644 index 00000000000..284168cf2d6 --- /dev/null +++ b/product_customer_code/models/product.py @@ -0,0 +1,30 @@ +# coding: utf-8 +# Copyright 2017 Vauxoo (https://www.vauxoo.com) info@vauxoo.com +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + +from openerp import api, fields, models + + +class ProductProduct(models.Model): + + _inherit = "product.product" + + product_customer_code_ids = fields.One2many( + 'product.customer.code', 'product_id', string='Product customer codes', + copy=False, help="Different codes that has the product for each " + "partner.") + + @api.model + def name_search(self, name='', args=None, operator='ilike', limit=80): + res = super(ProductProduct, self).name_search( + name, args=args, operator=operator, limit=limit) + if res or not self._context.get('partner_id'): + return res + partner_id = self._context['partner_id'] + product_customer_code_obj = self.env['product.customer.code'] + prod_code_ids = product_customer_code_obj.search( + [('product_code', '=', name), + ('partner_id', '=', partner_id)], limit=limit) + # TODO: Search for product customer name + res = prod_code_ids.mapped('product_id').name_get() + return res diff --git a/product_customer_code/models/product_customer_code.py b/product_customer_code/models/product_customer_code.py new file mode 100644 index 00000000000..9f333cec747 --- /dev/null +++ b/product_customer_code/models/product_customer_code.py @@ -0,0 +1,46 @@ +# coding: utf-8 +# Copyright 2017 Vauxoo (https://www.vauxoo.com) info@vauxoo.com +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) + +from openerp import fields, models + + +class ProductCustomerCode(models.Model): + + _name = "product.customer.code" + _description = "Add many Customer's Code" + + _rec_name = 'product_code' + + product_code = fields.Char('Customer Product Code', required=True, + help="This customer's product " + "code will be used when searching into a " + "request for quotation.") + product_name = fields.Char('Customer Product Name', help="This customer's " + "product name will be used when searching into " + "a request for quotation.") + product_id = fields.Many2one('product.product', 'Product', required=True, + help='Product Identification') + partner_id = fields.Many2one('res.partner', 'Customer', required=True, + help='Partner Reference') + company_id = fields.Many2one( + 'res.company', 'Company', default=lambda self: + self.env['res.company']._company_default_get('product.customer.code')) + + def _auto_init(self, cr, context=None): + res = super(ProductCustomerCode, self)._auto_init(cr, context=context) + cr.execute( + """SELECT indexname + FROM pg_indexes + WHERE indexname = 'product_customer_code_index' and + tablename = 'product_customer_code'""") + if not cr.fetchone(): + cr.execute( + """CREATE INDEX product_customer_code_index + ON product_customer_code (product_code, partner_id)""") + return res + + _sql_constraints = [ + ('unique_code', 'unique(product_code,company_id,partner_id)', + 'Product Code of customer must be unique'), + ] diff --git a/product_customer_code/product.py b/product_customer_code/product.py deleted file mode 100644 index 350a66f23db..00000000000 --- a/product_customer_code/product.py +++ /dev/null @@ -1,73 +0,0 @@ -# -*- coding: utf-8 -*- -########################################################################### -# Module Writen to OpenERP, Open Source Management Solution -# -# Copyright (c) 2012 Vauxoo - http://www.vauxoo.com -# All Rights Reserved. -# info@vauxoo.com -############################################################################ -# Coded by: Rodo (rodo@vauxoo.com),Moy (moylop260@vauxoo.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 . -# -############################################################################## -from openerp.osv import orm, fields -from openerp.tools.translate import _ - - -class product_product(orm.Model): - _inherit = "product.product" - - _columns = { - 'product_customer_code_ids': fields.one2many('product.customer.code', - 'product_id', - 'Customer Codes'), - } - - def copy(self, cr, uid, id, default=None, context=None): - if not default: - default = {} - default['product_customer_code_ids'] = False - res = super(product_product, self).copy( - cr, uid, id, default=default, context=context) - return res - - def name_search(self, cr, user, name='', args=None, operator='ilike', - context=None, limit=80): - res = super(product_product, self).name_search( - cr, user, name, args, operator, context, limit) - if not context: - context = {} - product_customer_code_obj = self.pool.get('product.customer.code') - if not res: - ids = [] - partner_id = context.get('partner_id', False) - if partner_id: - id_prod_code = \ - product_customer_code_obj.search(cr, user, - [('product_code', - '=', name), - ('partner_id', '=', - partner_id)], - limit=limit, - context=context) - # TODO: Search for product customer name - id_prod = id_prod_code and product_customer_code_obj.browse( - cr, user, id_prod_code, context=context) or [] - for ppu in id_prod: - ids.append(ppu.product_id.id) - if ids: - res = self.name_get(cr, user, ids, context) - return res diff --git a/product_customer_code/product_customer_code.py b/product_customer_code/product_customer_code.py deleted file mode 100644 index d3593891a20..00000000000 --- a/product_customer_code/product_customer_code.py +++ /dev/null @@ -1,67 +0,0 @@ -# -*- coding: utf-8 -*- -########################################################################### -# Module Writen to OpenERP, Open Source Management Solution -# -# Copyright (c) 2012 Vauxoo - http://www.vauxoo.com -# All Rights Reserved. -# info@vauxoo.com -############################################################################ -# Coded by: Rodo (rodo@vauxoo.com),Moy (moylop260@vauxoo.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 . -# -############################################################################## -from openerp.osv import orm, fields -from openerp.tools.translate import _ - - -class product_customer_code(orm.Model): - _name = "product.customer.code" - _description = "Add manies Code of Customer's" - - _rec_name = 'product_code' - - _columns = { - 'product_code': fields.char('Customer Product Code', size=64, - required=True, - help="""This customer's product code - will be used when searching into - a request for quotation."""), - 'product_name': fields.char('Customer Product Name', size=128, - help="""This customer's product name will - be used when searching into a - request for quotation."""), - 'product_id': fields.many2one('product.product', 'Product', - required=True), - 'partner_id': fields.many2one('res.partner', 'Customer', - required=True), - 'company_id': fields.many2one('res.company', 'Company', - required=False), - } - - _defaults = { - 'company_id': lambda s, cr, - uid, c: s.pool.get('res.company'). - _company_default_get(cr, uid, - 'product.customer.code', - context=c), - } - - _sql_constraints = [ - ('unique_code', 'unique(product_code,company_id,partner_id)', - 'Product Code of customer must be unique'), - ] - - # TODO: Add index to product_code, partner_id diff --git a/product_customer_code/security/product_customer_code_security.xml b/product_customer_code/security/product_customer_code_security.xml index ebc3b409efc..d94edd8ff80 100644 --- a/product_customer_code/security/product_customer_code_security.xml +++ b/product_customer_code/security/product_customer_code_security.xml @@ -1,14 +1,14 @@ - - - - Product_Customer / Manager - + + - - Product_Customer / User - + + Product_Customer / Manager + + + Product_Customer / User + diff --git a/product_customer_code/static/description/customer_reference.png b/product_customer_code/static/description/customer_reference.png new file mode 100644 index 00000000000..3d1fbddd0f5 Binary files /dev/null and b/product_customer_code/static/description/customer_reference.png differ diff --git a/product_customer_code/static/description/quotation_customer.png b/product_customer_code/static/description/quotation_customer.png new file mode 100644 index 00000000000..2a77a562119 Binary files /dev/null and b/product_customer_code/static/description/quotation_customer.png differ diff --git a/product_customer_code/static/description/quotation_not_customer.png b/product_customer_code/static/description/quotation_not_customer.png new file mode 100644 index 00000000000..55b26d6e6c6 Binary files /dev/null and b/product_customer_code/static/description/quotation_not_customer.png differ diff --git a/product_customer_code/static/src/img/screenshot1.png b/product_customer_code/static/src/img/screenshot1.png deleted file mode 100644 index 65d680c9126..00000000000 Binary files a/product_customer_code/static/src/img/screenshot1.png and /dev/null differ diff --git a/product_customer_code/tests/__init__.py b/product_customer_code/tests/__init__.py new file mode 100644 index 00000000000..25ef6190866 --- /dev/null +++ b/product_customer_code/tests/__init__.py @@ -0,0 +1,3 @@ +# coding: utf-8 + +from . import test_product_customer_code diff --git a/product_customer_code/tests/test_product_customer_code.py b/product_customer_code/tests/test_product_customer_code.py new file mode 100644 index 00000000000..f8d580d499c --- /dev/null +++ b/product_customer_code/tests/test_product_customer_code.py @@ -0,0 +1,46 @@ +# coding: utf-8 + +from openerp.tests.common import TransactionCase + + +class TestProductCustomerCode(TransactionCase): + """Test for product_customer_code: + - Assign field product_customer_code_ids to product. + - Test product name_search + """ + def setUp(self): + super(TestProductCustomerCode, self).setUp() + self.product = self.env.ref('product.product_product_6') + self.customer = self.env.ref('base.res_partner_9') + + self.product_cust_code_dict = { + 'product_code': 'Test', + 'partner_id': self.customer.id, + } + + def test_10_find_product_customer_code(self): + """Assign a product_customer_code to the product and then search it + using name_search + """ + self.product.write({ + 'product_customer_code_ids': + [(0, 0, self.product_cust_code_dict)]}) + self.assertTrue(self.product.product_customer_code_ids) + + context = {'partner_id': self.customer.id} + product_names = self.product.with_context( + context).name_search(name='Test') + self.assertEquals(len(product_names), 1) + product_id_found = product_names[0][0] + self.assertEquals(self.product.id, product_id_found) + + def test_20_not_find_product_customer_code(self): + """Can not find any product because the code does not exist in the + product + """ + self.assertFalse(self.product.product_customer_code_ids) + + context = {'partner_id': self.customer.id} + product_names = self.product.with_context( + context).name_search(name='Test') + self.assertEquals(len(product_names), 0) diff --git a/product_customer_code/product_customer_code_view.xml b/product_customer_code/views/product_customer_code_view.xml similarity index 89% rename from product_customer_code/product_customer_code_view.xml rename to product_customer_code/views/product_customer_code_view.xml index 0fddfd30f01..7f8ba52a9a2 100644 --- a/product_customer_code/product_customer_code_view.xml +++ b/product_customer_code/views/product_customer_code_view.xml @@ -1,7 +1,7 @@ - + view.product.customer.code.form product.customer.code @@ -9,12 +9,11 @@
- +
- view.product.customer.code.tree product.customer.code @@ -23,18 +22,18 @@ - + - + Product Customer Code product.customer.code form - + view.product.customer.code.certificate.search product.customer.code @@ -54,8 +53,8 @@ - - + +
diff --git a/product_customer_code/product_product_view.xml b/product_customer_code/views/product_product_view.xml similarity index 94% rename from product_customer_code/product_product_view.xml rename to product_customer_code/views/product_product_view.xml index 3aec998b591..a214295f3ad 100644 --- a/product_customer_code/product_product_view.xml +++ b/product_customer_code/views/product_product_view.xml @@ -1,7 +1,7 @@ - + product.normal.form.inh.product.customer.code.01 product.product @@ -13,19 +13,17 @@ -
- + +
- +
-
\ No newline at end of file +