From eb33c13ac2a8ff3bbec395b9db3305fb7a5a0143 Mon Sep 17 00:00:00 2001 From: "ARA (OpenERP)" Date: Thu, 14 Apr 2011 11:31:39 +0530 Subject: [PATCH 1/2] [FIX] sale: Wrong account for invoice lines created from delivery for service products lp bug: https://launchpad.net/bugs/757687 fixed bzr revid: ara@tinyerp.com-20110414060139-g923buqvjxx1fu3k --- addons/sale/stock.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/addons/sale/stock.py b/addons/sale/stock.py index 04a9b12687e..5763681d608 100644 --- a/addons/sale/stock.py +++ b/addons/sale/stock.py @@ -119,6 +119,8 @@ class stock_picking(osv.osv): invoice_obj = self.pool.get('account.invoice') picking_obj = self.pool.get('stock.picking') invoice_line_obj = self.pool.get('account.invoice.line') + fiscal_position_obj = self.pool.get('account.fiscal.position') + order_line_obj = self.pool.get('sale.order.line') result = super(stock_picking, self).action_invoice_create(cursor, user, ids, journal_id=journal_id, group=group, type=type, @@ -144,6 +146,8 @@ class stock_picking(osv.osv): invoice_obj.write(cursor, user, [invoice_created.id], {'name': inv_name}, context=context) for sale_line in sale_lines: if sale_line.product_id.type == 'service' and sale_line.invoiced == False: + if not type: + type = context.get('inv_type', False) if group: name = picking.name + '-' + sale_line.name else: @@ -168,7 +172,7 @@ class stock_picking(osv.osv): account_analytic_id = self._get_account_analytic_invoice(cursor, user, picking, sale_line) - account_id = self.pool.get('account.fiscal.position').map_account(cursor, user, picking.sale_id.partner_id.property_account_position, account_id) + account_id = fiscal_position_obj.map_account(cursor, user, picking.sale_id.partner_id.property_account_position, account_id) invoice = invoices[result[picking.id]] invoice_line_id = invoice_line_obj.create(cursor, user, { 'name': name, @@ -183,7 +187,7 @@ class stock_picking(osv.osv): 'account_analytic_id': account_analytic_id, 'notes':sale_line.notes }, context=context) - self.pool.get('sale.order.line').write(cursor, user, [sale_line.id], {'invoiced': True, + order_line_obj.write(cursor, user, [sale_line.id], {'invoiced': True, 'invoice_lines': [(6, 0, [invoice_line_id])], }) return result From cb2f7dc5251425d7e51e6777b6b811d44c48ac3a Mon Sep 17 00:00:00 2001 From: "ARA (OpenERP)" Date: Thu, 14 Apr 2011 15:04:53 +0530 Subject: [PATCH 2/2] [FIX] sale: Wrong account for invoice lines created from delivery for service products bzr revid: ara@tinyerp.com-20110414093453-1nbi00dhnxis5omx --- addons/sale/stock.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/sale/stock.py b/addons/sale/stock.py index 5763681d608..eeb37c28d9a 100644 --- a/addons/sale/stock.py +++ b/addons/sale/stock.py @@ -116,6 +116,8 @@ class stock_picking(osv.osv): def action_invoice_create(self, cursor, user, ids, journal_id=False, group=False, type='out_invoice', context=None): + if context is None: + context = {} invoice_obj = self.pool.get('account.invoice') picking_obj = self.pool.get('stock.picking') invoice_line_obj = self.pool.get('account.invoice.line')