openerp-community-reviewer team mailing list archive
-
openerp-community-reviewer team
-
Mailing list archive
-
Message #07546
[Merge] lp:~agilebg/purchase-wkfl/imp_product_by_supplier into lp:purchase-wkfl
Alex Comba - Agile BG has proposed merging lp:~agilebg/purchase-wkfl/imp_product_by_supplier into lp:purchase-wkfl.
Requested reviews:
Pedro Manuel Baeza (pedro.baeza): code review
For more details, see:
https://code.launchpad.net/~agilebg/purchase-wkfl/imp_product_by_supplier/+merge/225197
adding funciotnalities from product_search_reference.
Now it's possible to search products everywhere by supplier code
In the rev. 34 I merged https://code.launchpad.net/~agilebg/purchase-wkfl/fix_1335153 useful to fix the following bug: https://bugs.launchpad.net/purchase-wkfl/+bug/1335153
--
https://code.launchpad.net/~agilebg/purchase-wkfl/imp_product_by_supplier/+merge/225197
Your team Purchase Core Editors is subscribed to branch lp:purchase-wkfl.
=== modified file 'product_by_supplier/product.py'
--- product_by_supplier/product.py 2014-04-24 14:26:27 +0000
+++ product_by_supplier/product.py 2014-07-01 16:39:36 +0000
@@ -2,6 +2,7 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright (c) 2010-2013 Elico Corp. All Rights Reserved.
# Author: Yannick Gouin <yannick.gouin@xxxxxxxxxxxxxx>
#
@@ -56,4 +57,50 @@
),
}
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
+class product_product(orm.Model):
+ _inherit = 'product.product'
+
+ def _partner_ref2(self, cr, user, ids, name, arg, context=None):
+ res = {}
+ for product in self.browse(cr, user, ids, context=context):
+ res[product.id] = '\n'.join(
+ [x.product_code for x in product.seller_ids if x.product_code]
+ ) or ''
+ return res
+
+ def _partner_ref2_search(self, cr, user, obj, name, args, context={}):
+ supplierinfo_obj = self.pool.get('product.supplierinfo')
+ args = args[:]
+ i = 0
+ while i < len(args):
+ args[i] = ('product_code', args[i][1], args[i][2])
+ i += 1
+ supplierinfo_ids = supplierinfo_obj.search(cr, user, args)
+ product_ids = [x.product_id.id for x in supplierinfo_obj.browse(
+ cr, user,
+ supplierinfo_ids) if x.product_id]
+ return [('id', 'in', product_ids)]
+
+ _columns = {
+ 'partner_ref2': fields.function(
+ _partner_ref2, method=True,
+ type='char', string='Supplier codes',
+ fnct_search=_partner_ref2_search),
+ }
+
+ def name_search(
+ self, cr, user, name='', args=None, operator='ilike',
+ context=None, limit=80):
+ main_results = super(product_product, self).name_search(
+ cr, user, name=name, args=args,
+ operator=operator, context=context, limit=limit)
+ ids = self.search(
+ cr, user, [('partner_ref2', '=', name)] + args,
+ limit=limit, context=context)
+ if ids:
+ supplier_results = self.name_get(cr, user, ids, context=context)
+ for supplier_result in supplier_results:
+ if supplier_result not in main_results:
+ main_results.append(supplier_result)
+ return main_results
=== modified file 'product_by_supplier/product_view.xml'
--- product_by_supplier/product_view.xml 2014-04-28 09:22:50 +0000
+++ product_by_supplier/product_view.xml 2014-07-01 16:39:36 +0000
@@ -1,6 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
+
+ <!-- Supplier info -->
+
<record id="view_product_supplierinfo_search" model="ir.ui.view">
<field name="name">product.supplierinfo.search</field>
<field name="model">product.supplierinfo</field>
@@ -22,8 +25,42 @@
</field>
</record>
- <record id="view_product_supplierinfo_tree1" model="ir.ui.view">
- <field name="name">product.supplierinfo.tree1</field>
+ <record id="view_product_supplierinfo_form" model="ir.ui.view">
+ <field name="name">product.supplierinfo.form</field>
+ <field name="model">product.supplierinfo</field>
+ <field name="priority">99</field>
+ <field name="arch" type="xml">
+ <form string="Supplier Information" version="7.0">
+ <group col="4">
+ <field name="name" context="{'default_customer': 0, 'search_default_supplier': 1, 'default_supplier': 1}"/>
+ <field name="product_id"/>
+ <field name="sequence"/>
+ <field name="product_name"/>
+ <field name="product_code"/>
+ <field name="min_qty"/>
+ <field name="product_uom" groups="product.group_uom"/>
+ <field name="delay"/>
+ <field name="company_id" groups="base.group_multi_company" widget="selection"/>
+ </group>
+ <p groups="product.group_purchase_pricelist" class="oe_grey">The prices below will only be taken into account when your pricelist is set as based on supplier prices.</p>
+ <field groups="product.group_purchase_pricelist" name="pricelist_ids">
+ <tree editable="bottom" string="Pricelist">
+ <field name="min_quantity"/>
+ <field name="price"/>
+ </tree>
+ <form version="7.0">
+ <group>
+ <field name="min_quantity"/>
+ <field name="price"/>
+ </group>
+ </form>
+ </field>
+ </form>
+ </field>
+ </record>
+
+ <record id="view_product_supplierinfo_tree" model="ir.ui.view">
+ <field name="name">product.supplierinfo.tree</field>
<field name="model">product.supplierinfo</field>
<field name="priority">90</field>
<field name="arch" type="xml">
@@ -42,34 +79,59 @@
</field>
</record>
- <record id="view_product_supplierinfo_form1" model="ir.ui.view">
- <field name="name">product.supplierinfo.form1</field>
- <field name="model">product.supplierinfo</field>
- <field name="inherit_id" ref="product.product_supplierinfo_form_view"/>
- <field name="priority">99</field>
- <field name="arch" type="xml">
- <xpath expr="//field[@name='sequence']" position="before">
- <field name="product_id"/>
- </xpath>
- </field>
- </record>
-
<record id="action_product_supplier_info" model="ir.actions.act_window">
<field name="name">Product by Suppliers</field>
<field name="res_model">product.supplierinfo</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
- <field name="view_id" ref="view_product_supplierinfo_tree1"/>
<field name="search_view_id" ref="view_product_supplierinfo_search"/>
<field name="context">{'search_default_supplier':1,'group_by':[]}</field>
</record>
+ <record id="action_product_supplierinfo_form" model="ir.actions.act_window.view">
+ <field eval="2" name="sequence"/>
+ <field name="view_mode">form</field>
+ <field name="view_id" ref="view_product_supplierinfo_form" />
+ <field name="act_window_id" ref="action_product_supplier_info" />
+ </record>
+
+ <record id="action_product_supplierinfo_tree" model="ir.actions.act_window.view">
+ <field eval="1" name="sequence"/>
+ <field name="view_mode">tree</field>
+ <field name="view_id" ref="view_product_supplierinfo_tree" />
+ <field name="act_window_id" ref="action_product_supplier_info" />
+ </record>
<menuitem
id="menu_product_supplier_info"
name="Product by Suppliers"
sequence="15"
action="action_product_supplier_info"
parent="purchase.menu_procurement_management_product"/>
+
+ <!-- Product -->
+
+ <record model="ir.ui.view" id="product_product_tree_view_inherit">
+ <field name="name">product.product.tree.inherit</field>
+ <field name="model">product.product</field>
+ <field name="inherit_id" ref="product.product_product_tree_view"/>
+ <field name="arch" type="xml">
+ <field name="state" position="before">
+ <field name="partner_ref2"/>
+ </field>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="product_search_form_view">
+ <field name="name">product_search_form_view</field>
+ <field name="model">product.product</field>
+ <field name="inherit_id" ref="product.product_search_form_view"/>
+ <field name="arch" type="xml">
+ <field name="name" position="after">
+ <field name="partner_ref2"/>
+ </field>
+ </field>
+ </record>
+
</data>
</openerp>
Follow ups