← Back to team overview

openerp-community-reviewer team mailing list archive

[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