Ujjvala Collins (OpenERP) has proposed merging
lp:~openerp-dev/openobject-addons/trunk-bug-848867-uco into
lp:openobject-addons.
Requested reviews:
Mustufa Rangwala (Open ERP) (mra-tinyerp)
Related bugs:
Bug #848867 in OpenERP Addons: "sale_margin report takes price from product
cost price"
https://bugs.launchpad.net/openobject-addons/+bug/848867
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-848867-uco/+merge/75516
[FIX] sale_margin:
-------------------------------
* Fixed wrong cost price problem on Invoice analysis report. (lp:848867)
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-848867-uco/+merge/75516
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-addons/trunk-bug-848867-uco.
=== modified file 'sale_margin/sale_margin.py'
--- sale_margin/sale_margin.py 2011-09-17 17:38:27 +0000
+++ sale_margin/sale_margin.py 2011-09-19 12:24:18 +0000
@@ -50,6 +50,23 @@
res[line.id] = round((line.price_unit*line.product_uos_qty*(100.0-line.discount)/100.0) -(line.product_id.standard_price*line.product_uos_qty), 2)
return res
+ def cost_price_change(self, cr, uid, ids, context=None):
+ """ Changes cost price on invoice line if it is changed on sale order line. """
+ inv_line_obj = self.pool.get('account.invoice.line')
+ cr.execute(""" SELECT sol_rel.invoice_id, sol.purchase_price
+ FROM sale_order_line_invoice_rel sol_rel
+ LEFT JOIN sale_order_line sol on (sol.id=sol_rel.order_line_id)
+ LEFT JOIN product_template p on (p.id=sol.product_id)
+ WHERE p.standard_price != sol.purchase_price """, (tuple(ids),))
+ for inv_line in cr.dictfetchall():
+ inv_line_obj.write(cr, uid, [inv_line.get('invoice_id',False)], {'cost_price': inv_line.get('purchase_price',0.0)}, context=context)
+ return True
+
+ def invoice_line_create(self, cr, uid, ids, context=None):
+ inv_line_ids = super(sale_order_line, self).invoice_line_create(cr, uid, ids, context=context)
+ self.cost_price_change(cr, uid, ids, context=context)
+ return inv_line_ids
+
_columns = {
'margin': fields.function(_product_margin, string='Margin',
store = True),
@@ -91,11 +108,14 @@
def action_invoice_create(self, cr, uid, ids, journal_id=False,
group=False, type='out_invoice', context=None):
# need to carify with new requirement
+ sol_obj = self.pool.get('sale.order.line')
invoice_ids = []
- picking_obj = self.pool.get('stock.picking')
res = super(stock_picking, self).action_invoice_create(cr, uid, ids, journal_id=journal_id, group=group, type=type, context=context)
invoice_ids = res.values()
- picking_obj.write(cr, uid, ids, {'invoice_ids': [[6, 0, invoice_ids]]})
+ self.write(cr, uid, ids, {'invoice_ids': [[6, 0, invoice_ids]]})
+ for picking in self.browse(cr, uid, ids, context=context):
+ sol_ids = [sol.id for sol in picking.sale_id.order_line]
+ sol_obj.cost_price_change(cr, uid, sol_ids, context=context)
return res
stock_picking()
@@ -105,17 +125,18 @@
_columns = {
'cost_price': fields.float('Cost Price', digits=(16, 2)),
}
+
def write(self, cr, uid, ids, vals, context=None):
- if vals.get('product_id', False):
+ if not vals.get('cost_price', False) and vals.get('product_id', False):
res = self.pool.get('product.product').read(cr, uid, [vals['product_id']], ['standard_price'])
vals['cost_price'] = res[0]['standard_price']
- return super(account_invoice_line, self).write(cr, uid, ids, vals, context)
+ return super(account_invoice_line, self).write(cr, uid, ids, vals, context=context)
def create(self, cr, uid, vals, context=None):
- if vals.get('product_id',False):
+ if not vals.get('cost_price', False) and vals.get('product_id',False):
res = self.pool.get('product.product').read(cr, uid, [vals['product_id']], ['standard_price'])
vals['cost_price'] = res[0]['standard_price']
- return super(account_invoice_line, self).create(cr, uid, vals, context)
+ return super(account_invoice_line, self).create(cr, uid, vals, context=context)
account_invoice_line()
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp