uom.id, product.list_price, context['uom'])
else:
res[product.id] = product.list_price
- res[product.id] = (res[product.id] or 0.0) * (product.price_margin or 1.0) + product.price_extra
+ res[product.id] = (res[product.id] + ((res[product.id] * (product.price_margin)) / 100)) + product.price_extra
return res
+ def _save_product_lst_price(self, cr, uid, product_id, field_name, field_value, arg, context=None):
+ field_value = field_value or 0.0
+ product = self.browse(cr, uid, product_id, context=context)
+ list_price = (field_value - product.price_extra) / (product.price_margin or 1.0)
+ return self.write(cr, uid, [product_id], {'list_price': list_price}, context=context)
+
def _get_partner_code_name(self, cr, uid, ids, product, partner_id, context=None):
for supinfo in product.seller_ids:
if supinfo.name.id == partner_id:
res = {}
product_uom_obj = self.pool.get('product.uom')
- for product in self.browse(cr, uid, ids, context=context):
+ for product in products:
res[product.id] = product[ptype] or 0.0
if ptype == 'list_price':
- res[product.id] = (res[product.id] * (product.price_margin or 1.0)) + \
+ res[product.id] = (res[product.id] + ((res[product.id] * (product.price_margin)) / 100)) + \
product.price_extra
if 'uom' in context:
uom = product.uom_id or product.uos_id
return super(product_product, self).copy(cr, uid, id, default=default,
context=context)
+ def copy_translations(self, cr, uid, old_id, new_id, context=None):
+ """ When we do not copy the template along the variant,
+ copy_translations sometimes receives 2 identical IDs.
+ That's because the ORM follows the o2m to copy the translations,
+ so in that case, it follows 'variant_ids' and for each variant,
+ it copy the translations. One of the variant is the 'new_id'.
+ Just skip the identical IDs.
+ """
+ if old_id == new_id:
+ return super(product_product, self).copy_translations(cr, uid, old_id, new_id, context=context)
+
def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False):
- if context is None:
- context = {}
- if context and context.get('search_default_categ_id', False):
+ if context and context.get('search_default_categ_id'):
args.append((('categ_id', 'child_of', context['search_default_categ_id'])))
return super(product_product, self).search(cr, uid, args, offset=offset, limit=limit, order=order, context=context, count=count)
<field name="min_qty">1</field>
</record>
+
<record id="product_supplierinfo_5" model="product.supplierinfo">
- <field name="product_id" ref="product_template_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>
<field name="min_qty">1</field>
</record>
- <record id="product_supplierinfo_10" model="product.supplierinfo">
- <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_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_template_13"/>
- <field name="product_tmpl_id" ref="product_template_15"/>
++ <field name="product_tmpl_id" ref="product_template_13"/>
<field name="name" ref="base.res_partner_1"/>
<field name="delay">1</field>
<field name="min_qty">1</field>
<field name="min_qty">5</field>
</record>
- <record id="product_supplierinfo_17" model="product.supplierinfo">
- <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_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_template_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>
<field name="min_qty">1</field>
</record>
- <record id="product_supplierinfo_23" model="product.supplierinfo">
- <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_template_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>
<field name="min_qty">12</field>
</record>
- <record id="product_supplierinfo_27" model="product.supplierinfo">
- <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_template_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>
<field name="min_qty">1</field>
</record-->
- <record id="product_supplierinfo_39" model="product.supplierinfo">
- <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_template_17"/>
- <field name="product_tmpl_id" ref="product_template_19"/>
++ <field name="product_tmpl_id" ref="product_template_17"/>
<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_template_17"/>
- <field name="product_tmpl_id" ref="product_template_19"/>
++ <field name="product_tmpl_id" ref="product_template_17"/>
<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_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_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_template_25"/>
- <field name="product_tmpl_id" ref="product_template_27"/>
++ <field name="product_tmpl_id" ref="product_template_25"/>
<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_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_template_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>
<field name="inherit_id" ref="product.product_template_form_view"/>
<field name="arch" type="xml">
<!-- add state field in header -->
- <xpath expr="//sheet" position="before">
- <div class="oe_form_box_info oe_text_center" attrs="{'invisible': [('sale_ok', '=', False)]}">
- <p attrs="{'invisible': [('website_published', '=', True)]}">
- This product is <b>not available</b> for public user in your ecommerce.
- </p>
- <p attrs="{'invisible': [('website_published', '=', False)]}">
- This product is <b>available</b> for public user in your ecommerce.
- </p>
- <p>Website view: <field class="oe_inline" name="website_url" widget="url"/></p>
- </div>
- </xpath>
+
- <xpath expr="//div[@name='options']" position="inside">
- <field name="website_published"/>
- <label for="website_published"/>
+ <xpath expr="//sheet/div" position="before">
+ <field name="website_url" invisible="1"/>
+ <field name="website_published" class="pull-right" widget="website_button"/>
</xpath>
- <xpath expr="//page[@string='Information']" position="inside">
+ <xpath expr="//field[@name='description']" position="before">
<group colspan="4" string="Website Options">
<field name="suggested_product_ids" widget="many2many_tags"/>
<field name="website_style_ids" widget="many2many_tags"/>