Ujjvala Collins (OpenERP) has proposed merging
lp:~openerp-dev/openobject-addons/trunk-bug-848867-uco into
lp:openobject-addons.
Requested reviews:
OpenERP Core Team (openerp)
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-07-01 23:41:24 +0000
+++ sale_margin/sale_margin.py 2011-09-15 10:05:36 +0000
@@ -48,6 +48,21 @@
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, sol_ids, inv_line_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')
+ for sol in self.browse(cr, uid, sol_ids, context=context):
+ if sol.product_id.standard_price != sol.purchase_price:
+ for inv_line in inv_line_obj.browse(cr, uid, inv_line_ids, context=context):
+ if inv_line.product_id.id == sol.product_id.id:
+ inv_line_obj.write(cr, uid, [inv_line.id], {'cost_price': sol.purchase_price})
+ 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, inv_line_ids, context=context)
+ return inv_line_ids
+
_columns = {
'margin': fields.function(_product_margin, string='Margin', store=True),
'purchase_price': fields.float('Cost Price', digits=(16,2))
@@ -82,11 +97,17 @@
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')
+ picking_obj = self.pool.get('stock.picking')
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]]})
+ for picking in self.browse(cr, uid, ids, context=context):
+ sol_ids = [sol.id for sol in picking.sale_id.order_line]
+ for inv in picking.invoice_ids:
+ inv_line_ids = [inv_line.id for inv_line in inv.invoice_line]
+ sol_obj.cost_price_change(cr, uid, sol_ids, inv_line_ids, context=context)
return res
stock_picking()
@@ -97,15 +118,17 @@
'cost_price': fields.float('Cost Price', digits=(16, 2)),
}
def write(self, cr, uid, ids, vals, context=None):
- if 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']
+ if not vals.get('cost_price', False):
+ if 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)
def create(self, cr, uid, vals, context=None):
- if 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']
+ if not vals.get('cost_price', False):
+ if 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)
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