From 80e142cca326dc54c0d9c0a3f5e196d6f9e02dd6 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Wed, 23 Oct 2013 13:42:33 +0200 Subject: [PATCH] [FIX] product_visible_discount: don't change the behaviour of account.invoice to be consistent with the normal behaviour (don't use pricelists) bzr revid: mat@openerp.com-20131023114233-74rtyy5vdsdcy4cl --- .../product_visible_discount.py | 72 ------------------- 1 file changed, 72 deletions(-) diff --git a/addons/product_visible_discount/product_visible_discount.py b/addons/product_visible_discount/product_visible_discount.py index 563027b52be..ff481377955 100644 --- a/addons/product_visible_discount/product_visible_discount.py +++ b/addons/product_visible_discount/product_visible_discount.py @@ -96,75 +96,3 @@ class sale_order_line(osv.osv): result['price_unit'] = new_list_price result['discount'] = discount return res - -sale_order_line() - -class account_invoice_line(osv.osv): - _inherit = "account.invoice.line" - - def product_id_change(self, cr, uid, ids, product, uom_id, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, currency_id=False, context=None, company_id=None): - res = super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom_id, qty, name, type, partner_id, fposition_id, price_unit,currency_id, context=context, company_id=company_id) - - def get_real_price(res_dict, product_id, qty, uom_id, pricelist): - item_obj = self.pool.get('product.pricelist.item') - price_type_obj = self.pool.get('product.price.type') - product_obj = self.pool.get('product.product') - field_name = 'list_price' - - if res_dict.get('item_id',False) and res_dict['item_id'].get(pricelist,False): - item = res_dict['item_id'].get(pricelist,False) - item_read = item_obj.read(cr, uid, [item], ['base']) - if item_read: - item_base = item_read[0]['base'] - if item_base > 0: - field_name = price_type_obj.browse(cr, uid, item_base).field - - product = product_obj.browse(cr, uid, product_id, context) - product_read = product_obj.read(cr, uid, product_id, [field_name], context=context) - - factor = 1.0 - if uom_id and uom_id != product.uom_id.id: - product_uom_obj = self.pool.get('product.uom') - uom_data = product_uom_obj.browse(cr, uid, product.uom_id.id) - factor = uom_data.factor - return product_read[field_name] * factor - - if product: - pricelist_obj = self.pool.get('product.pricelist') - partner_obj = self.pool.get('res.partner') - product = self.pool.get('product.product').browse(cr, uid, product, context=context) - result = res['value'] - pricelist = False - real_price = 0.00 - if type in ('in_invoice', 'in_refund'): - if not price_unit and partner_id: - pricelist =partner_obj.browse(cr, uid, partner_id).property_product_pricelist_purchase.id - if not pricelist: - raise osv.except_osv(_('No Purchase Pricelist Found!'),_("You must first define a pricelist on the supplier form!")) - price_unit_res = pricelist_obj.price_get(cr, uid, [pricelist], product.id, qty or 1.0, partner_id, {'uom': uom_id}) - price_unit = price_unit_res[pricelist] - real_price = get_real_price(price_unit_res, product.id, qty, uom_id, pricelist) - else: - if partner_id: - pricelist = partner_obj.browse(cr, uid, partner_id).property_product_pricelist.id - if not pricelist: - raise osv.except_osv(_('No Sale Pricelist Found!'),_("You must first define a pricelist on the customer form!")) - price_unit_res = pricelist_obj.price_get(cr, uid, [pricelist], product.id, qty or 1.0, partner_id, {'uom': uom_id}) - price_unit = price_unit_res[pricelist] - - real_price = get_real_price(price_unit_res, product.id, qty, uom_id, pricelist) - if pricelist: - pricelists=pricelist_obj.read(cr,uid,[pricelist],['visible_discount']) - if (price_unit/real_price > 0): - result['discount'] = 0.0 - result['price_unit'] = price_unit - else: - if(len(pricelists)>0 and pricelists[0]['visible_discount'] and real_price != 0): - discount= (price_unit/real_price) - result['price_unit'] = real_price - result['discount'] = discount - return res - -account_invoice_line() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: