[FIX] website_sale: link; product: clean code and use product.template for supplierinfo

bzr revid: chm@openerp.com-20131209163254-k9dwxw48rcgz1hbs
This commit is contained in:
Christophe Matthieu 2013-12-09 17:32:54 +01:00
parent b894f72fda
commit 6652856445
7 changed files with 52 additions and 64 deletions

View File

@ -34,7 +34,6 @@ class report_custom(report_rml):
registry = openerp.registry(cr.dbname)
product_pool = registry.get('product.product')
product_uom_pool = registry.get('product.uom')
supplier_info_pool = registry.get('product.supplierinfo')
workcenter_pool = registry.get('mrp.workcenter')
user_pool = registry.get('res.users')
bom_pool = registry.get('mrp.bom')

View File

@ -172,9 +172,7 @@ class product_pricelist(osv.osv):
products = map(lambda x: x[0], products_by_qty_by_partner)
currency_obj = self.pool.get('res.currency')
product_obj = self.pool.get('product.product')
product_category_obj = self.pool.get('product.category')
product_uom_obj = self.pool.get('product.uom')
supplierinfo_obj = self.pool.get('product.supplierinfo')
price_type_obj = self.pool.get('product.price.type')
version = False

View File

@ -410,7 +410,7 @@ class product_template(osv.osv):
help='Coefficient to convert default Unit of Measure to Unit of Sale\n'
' uos = uom * coeff'),
'mes_type': fields.selection((('fixed', 'Fixed'), ('variable', 'Variable')), 'Measure Type'),
'seller_ids': fields.one2many('product.supplierinfo', 'product_id', 'Supplier'),
'seller_ids': fields.one2many('product.supplierinfo', 'product_tmpl_id', 'Supplier'),
'company_id': fields.many2one('res.company', 'Company', select=1),
# image: all image fields are base64 encoded and PIL-supported
'image': fields.binary("Image",
@ -928,7 +928,6 @@ class product_supplierinfo(osv.osv):
_description = "Information about a product supplier"
def _calc_qty(self, cr, uid, ids, fields, arg, context=None):
result = {}
product_uom_pool = self.pool.get('product.uom')
for supplier_info in self.browse(cr, uid, ids, context=context):
for field in fields:
result[supplier_info.id] = {field:False}
@ -941,10 +940,10 @@ class product_supplierinfo(osv.osv):
'product_name': fields.char('Supplier Product Name', size=128, help="This supplier's product name will be used when printing a request for quotation. Keep empty to use the internal one."),
'product_code': fields.char('Supplier Product Code', size=64, help="This supplier's product code will be used when printing a request for quotation. Keep empty to use the internal one."),
'sequence' : fields.integer('Sequence', help="Assigns the priority to the list of product supplier."),
'product_uom': fields.related('product_id', 'uom_po_id', type='many2one', relation='product.uom', string="Supplier Unit of Measure", readonly="1", help="This comes from the product form."),
'product_uom': fields.related('product_tmpl_id', 'uom_po_id', type='many2one', relation='product.uom', string="Supplier Unit of Measure", readonly="1", help="This comes from the product form."),
'min_qty': fields.float('Minimal Quantity', required=True, help="The minimal quantity to purchase to this supplier, expressed in the supplier Product Unit of Measure if not empty, in the default unit of measure of the product otherwise."),
'qty': fields.function(_calc_qty, store=True, type='float', string='Quantity', multi="qty", help="This is a quantity which is converted into Default Unit of Measure."),
'product_id' : fields.many2one('product.product', 'Product', required=True, ondelete='cascade', select=True),
'product_tmpl_id' : fields.many2one('product.template', 'Product Template', required=True, ondelete='cascade', select=True),
'delay' : fields.integer('Delivery Lead Time', required=True, help="Lead time in days between the confirmation of the purchase order and the reception of the products in your warehouse. Used by the scheduler for automatic computation of the purchase order planning."),
'pricelist_ids': fields.one2many('pricelist.partnerinfo', 'suppinfo_id', 'Supplier Pricelist'),
'company_id':fields.many2one('res.company','Company',select=1),
@ -972,6 +971,7 @@ class product_supplierinfo(osv.osv):
currency_id = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id
# Compute price from standard price of product
product_price = product_pool.price_get(cr, uid, [product_id], 'standard_price', context=context)[product_id]
product = product_pool.browse(cr, uid, product_id, context=context)
for supplier in partner_pool.browse(cr, uid, supplier_ids, context=context):
price = product_price
# Compute price from Purchase pricelist of supplier
@ -981,7 +981,7 @@ class product_supplierinfo(osv.osv):
price = currency_pool.compute(cr, uid, pricelist_pool.browse(cr, uid, pricelist_id).currency_id.id, currency_id, price)
# Compute price from supplier pricelist which are in Supplier Information
supplier_info_ids = self.search(cr, uid, [('name','=',supplier.id),('product_id','=',product_id)])
supplier_info_ids = self.search(cr, uid, [('name','=',supplier.id),('product_tmpl_id','=',product.product_tmpl_id.id)])
if supplier_info_ids:
cr.execute('SELECT * ' \
'FROM pricelist_partnerinfo ' \

View File

@ -995,322 +995,322 @@ QWERTY keyboard</field>
-->
<record id="product_supplierinfo_1" model="product.supplierinfo">
<field name="product_id" ref="product_product_6"/>
<field name="product_tmpl_id" ref="product_template_6"/>
<field name="name" ref="base.res_partner_1"/>
<field name="delay">3</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_2" model="product.supplierinfo">
<field name="product_id" ref="product_product_6"/>
<field name="product_tmpl_id" ref="product_template_6"/>
<field name="name" ref="base.res_partner_4"/>
<field name="delay">3</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_3" model="product.supplierinfo">
<field name="product_id" ref="product_product_7"/>
<field name="product_tmpl_id" ref="product_template_7"/>
<field name="name" ref="base.res_partner_1"/>
<field name="delay">3</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_4" model="product.supplierinfo">
<field name="product_id" ref="product_product_7"/>
<field name="product_tmpl_id" ref="product_template_7"/>
<field name="name" ref="base.res_partner_4"/>
<field name="delay">3</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_5" model="product.supplierinfo">
<field name="product_id" ref="product_product_8"/>
<field name="product_tmpl_id" ref="product_template_8"/>
<field name="name" ref="base.res_partner_16"/>
<field name="delay">2</field>
<field name="min_qty">5</field>
</record>
<record id="product_supplierinfo_6" model="product.supplierinfo">
<field name="product_id" ref="product_product_8"/>
<field name="product_tmpl_id" ref="product_template_8"/>
<field name="name" ref="base.res_partner_8"/>
<field name="delay">4</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_7" model="product.supplierinfo">
<field name="product_id" ref="product_product_10"/>
<field name="product_tmpl_id" ref="product_template_10"/>
<field name="name" ref="base.res_partner_16"/>
<field name="delay">2</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_8" model="product.supplierinfo">
<field name="product_id" ref="product_product_11"/>
<field name="product_tmpl_id" ref="product_template_11"/>
<field name="name" ref="base.res_partner_16"/>
<field name="delay">2</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_9" model="product.supplierinfo">
<field name="product_id" ref="product_product_13"/>
<field name="product_tmpl_id" ref="product_template_13"/>
<field name="name" ref="base.res_partner_4"/>
<field name="delay">5</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_10" model="product.supplierinfo">
<field name="product_id" ref="product_product_14"/>
<field name="product_tmpl_id" ref="product_template_14"/>
<field name="name" ref="base.res_partner_4"/>
<field name="delay">5</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_11" model="product.supplierinfo">
<field name="product_id" ref="product_product_15"/>
<field name="product_tmpl_id" ref="product_template_15"/>
<field name="name" ref="base.res_partner_4"/>
<field name="delay">5</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_12" model="product.supplierinfo">
<field name="product_id" ref="product_product_15"/>
<field name="product_tmpl_id" ref="product_template_15"/>
<field name="name" ref="base.res_partner_1"/>
<field name="delay">1</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_13" model="product.supplierinfo">
<field name="product_id" ref="product_product_16"/>
<field name="product_tmpl_id" ref="product_template_16"/>
<field name="name" ref="base.res_partner_3"/>
<field name="delay">1</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_14" model="product.supplierinfo">
<field name="product_id" ref="product_product_17"/>
<field name="product_tmpl_id" ref="product_template_17"/>
<field name="name" ref="base.res_partner_19"/>
<field name="delay">3</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_15" model="product.supplierinfo">
<field name="product_id" ref="product_product_20"/>
<field name="product_tmpl_id" ref="product_template_20"/>
<field name="name" ref="base.res_partner_4"/>
<field name="delay">3</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_16" model="product.supplierinfo">
<field name="product_id" ref="product_product_20"/>
<field name="product_tmpl_id" ref="product_template_20"/>
<field name="name" ref="base.res_partner_16"/>
<field name="delay">4</field>
<field name="min_qty">5</field>
</record>
<record id="product_supplierinfo_17" model="product.supplierinfo">
<field name="product_id" ref="product_product_21"/>
<field name="product_tmpl_id" ref="product_template_21"/>
<field name="name" ref="base.res_partner_4"/>
<field name="delay">3</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_18" model="product.supplierinfo">
<field name="product_id" ref="product_product_21"/>
<field name="product_tmpl_id" ref="product_template_21"/>
<field name="name" ref="base.res_partner_16"/>
<field name="delay">2</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_19" model="product.supplierinfo">
<field name="product_id" ref="product_product_22"/>
<field name="product_tmpl_id" ref="product_template_22"/>
<field name="name" ref="base.res_partner_19"/>
<field name="delay">3</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_20" model="product.supplierinfo">
<field name="product_id" ref="product_product_23"/>
<field name="product_tmpl_id" ref="product_template_23"/>
<field name="name" ref="base.res_partner_19"/>
<field name="delay">3</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_21" model="product.supplierinfo">
<field name="product_id" ref="product_product_24"/>
<field name="product_tmpl_id" ref="product_template_24"/>
<field name="name" ref="base.res_partner_19"/>
<field name="delay">3</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_22" model="product.supplierinfo">
<field name="product_id" ref="product_product_25"/>
<field name="product_tmpl_id" ref="product_template_25"/>
<field name="name" ref="base.res_partner_1"/>
<field name="delay">8</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_23" model="product.supplierinfo">
<field name="product_id" ref="product_product_26"/>
<field name="product_tmpl_id" ref="product_template_26"/>
<field name="name" ref="base.res_partner_1"/>
<field name="delay">8</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_24" model="product.supplierinfo">
<field name="product_id" ref="product_product_28"/>
<field name="product_tmpl_id" ref="product_template_28"/>
<field name="name" ref="base.res_partner_19"/>
<field name="delay">4</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_25" model="product.supplierinfo">
<field name="product_id" ref="product_product_28"/>
<field name="product_tmpl_id" ref="product_template_28"/>
<field name="name" ref="base.res_partner_1"/>
<field name="delay">5</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_26" model="product.supplierinfo">
<field name="product_id" ref="product_product_29"/>
<field name="product_tmpl_id" ref="product_template_29"/>
<field name="name" ref="base.res_partner_3"/>
<field name="delay">2</field>
<field name="min_qty">12</field>
</record>
<record id="product_supplierinfo_27" model="product.supplierinfo">
<field name="product_id" ref="product_product_30"/>
<field name="product_tmpl_id" ref="product_template_30"/>
<field name="name" ref="base.res_partner_3"/>
<field name="delay">2</field>
<field name="min_qty">12</field>
</record>
<record id="product_supplierinfo_28" model="product.supplierinfo">
<field name="product_id" ref="product_product_31"/>
<field name="product_tmpl_id" ref="product_template_31"/>
<field name="name" ref="base.res_partner_3"/>
<field name="delay">2</field>
<field name="min_qty">5</field>
</record>
<record id="product_supplierinfo_29" model="product.supplierinfo">
<field name="product_id" ref="product_product_32"/>
<field name="product_tmpl_id" ref="product_template_32"/>
<field name="name" ref="base.res_partner_3"/>
<field name="delay">2</field>
<field name="min_qty">12</field>
</record>
<record id="product_supplierinfo_30" model="product.supplierinfo">
<field name="product_id" ref="product_product_34"/>
<field name="product_tmpl_id" ref="product_template_34"/>
<field name="name" ref="base.res_partner_16"/>
<field name="delay">2</field>
<field name="min_qty">5</field>
</record>
<record id="product_supplierinfo_31" model="product.supplierinfo">
<field name="product_id" ref="product_product_35"/>
<field name="product_tmpl_id" ref="product_template_35"/>
<field name="name" ref="base.res_partner_8"/>
<field name="delay">2</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_32" model="product.supplierinfo">
<field name="product_id" ref="product_product_36"/>
<field name="product_tmpl_id" ref="product_template_36"/>
<field name="name" ref="base.res_partner_8"/>
<field name="delay">2</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_33" model="product.supplierinfo">
<field name="product_id" ref="product_product_38"/>
<field name="product_tmpl_id" ref="product_template_38"/>
<field name="name" ref="base.res_partner_22"/>
<field name="delay">4</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_34" model="product.supplierinfo">
<field name="product_id" ref="product_product_39"/>
<field name="product_tmpl_id" ref="product_template_39"/>
<field name="name" ref="base.res_partner_22"/>
<field name="delay">4</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_35" model="product.supplierinfo">
<field name="product_id" ref="product_product_45"/>
<field name="product_tmpl_id" ref="product_template_45"/>
<field name="name" ref="base.res_partner_22"/>
<field name="delay">5</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_36" model="product.supplierinfo">
<field name="product_id" ref="product_product_46"/>
<field name="product_tmpl_id" ref="product_template_46"/>
<field name="name" ref="base.res_partner_22"/>
<field name="delay">5</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_37" model="product.supplierinfo">
<field name="product_id" ref="product_product_47"/>
<field name="product_tmpl_id" ref="product_template_47"/>
<field name="name" ref="base.res_partner_8"/>
<field name="delay">7</field>
<field name="min_qty">1</field>
</record>
<!--record id="product_supplierinfo_38" model="product.supplierinfo">
<field name="product_id" ref="product_product_48"/>
<field name="product_tmpl_id" ref="product_template_48"/>
<field name="name" ref="base.res_partner_8"/>
<field name="delay">7</field>
<field name="min_qty">1</field>
</record-->
<record id="product_supplierinfo_39" model="product.supplierinfo">
<field name="product_id" ref="product_product_18"/>
<field name="product_tmpl_id" ref="product_template_18"/>
<field name="name" ref="base.res_partner_19"/>
<field name="delay">4</field>
<field name="min_qty">1</field>
</record>
<record id="product_supplierinfo_40" model="product.supplierinfo">
<field name="product_id" ref="product_product_19"/>
<field name="product_tmpl_id" ref="product_template_19"/>
<field name="name" ref="base.res_partner_1"/>
<field name="delay">4</field>
<field name="min_qty">0</field>
</record>
<record id="product_supplierinfo_41" model="product.supplierinfo">
<field name="product_id" ref="product_product_19"/>
<field name="product_tmpl_id" ref="product_template_19"/>
<field name="name" ref="base.res_partner_8"/>
<field name="delay">5</field>
<field name="min_qty">0</field>
</record>
<record id="product_supplierinfo_42" model="product.supplierinfo">
<field name="product_id" ref="product_product_33"/>
<field name="product_tmpl_id" ref="product_template_33"/>
<field name="name" ref="base.res_partner_3"/>
<field name="delay">2</field>
<field name="min_qty">0</field>
</record>
<record id="product_supplierinfo_43" model="product.supplierinfo">
<field name="product_id" ref="product_product_9"/>
<field name="product_tmpl_id" ref="product_template_9"/>
<field name="name" ref="base.res_partner_8"/>
<field name="delay">4</field>
<field name="min_qty">0</field>
</record>
<record id="product_supplierinfo_44" model="product.supplierinfo">
<field name="product_id" ref="product_product_27"/>
<field name="product_tmpl_id" ref="product_template_27"/>
<field name="name" ref="base.res_partner_1"/>
<field name="delay">10</field>
<field name="min_qty">0</field>
</record>
<record id="product_supplierinfo_45" model="product.supplierinfo">
<field name="product_id" ref="product_product_12"/>
<field name="product_tmpl_id" ref="product_template_12"/>
<field name="name" ref="base.res_partner_16"/>
<field name="delay">3</field>
<field name="min_qty">0</field>
</record>
<record id="product_supplierinfo_46" model="product.supplierinfo">
<field name="product_id" ref="product_product_37"/>
<field name="product_tmpl_id" ref="product_template_37"/>
<field name="name" ref="base.res_partner_22"/>
<field name="delay">5</field>
<field name="min_qty">0</field>

View File

@ -958,7 +958,6 @@ class purchase_order_line(osv.osv):
product_product = self.pool.get('product.product')
product_uom = self.pool.get('product.uom')
res_partner = self.pool.get('res.partner')
product_supplierinfo = self.pool.get('product.supplierinfo')
product_pricelist = self.pool.get('product.pricelist')
account_fiscal_position = self.pool.get('account.fiscal.position')
account_tax = self.pool.get('account.tax')

View File

@ -96,7 +96,6 @@ class purchase_requisition(osv.osv):
def _seller_details(self, cr, uid, requisition_line, supplier, context=None):
product_uom = self.pool.get('product.uom')
pricelist = self.pool.get('product.pricelist')
supplier_info = self.pool.get("product.supplierinfo")
product = requisition_line.product_id
default_uom_po_id = product.uom_po_id.id
qty = product_uom._compute_qty(cr, uid, requisition_line.product_uom_id.id, requisition_line.product_qty, default_uom_po_id)

View File

@ -35,17 +35,10 @@ class product_template(osv.Model):
_name = 'product.template'
def _website_url(self, cr, uid, ids, field_name, arg, context=None):
""" TDE-NOTE: as someone wrote this method without any clue on about what it
does, fixing bugs about product_variant_ids not existing will be done
based on the weather, the sun and Lilo's feelings about pigs.
If you see this comment in trunk, this means that the website branch has
been merged without any review, which is quite questionable. """
res = dict.fromkeys(ids, '')
base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
for product in self.browse(cr, uid, ids, context=context):
if product.product_variant_ids:
res[product.id] = "%s/shop/product/%s/" % (base_url, product.product_variant_ids[0].id)
res[product.id] = "%s/shop/product/%s/" % (base_url, product.id)
return res
_columns = {