Rucha (Open ERP) has proposed merging
lp:~openerp-dev/openobject-addons/trunk-bug-724131-rpa into
lp:openobject-addons.
Requested reviews:
qdp (OpenERP) (qdp)
Related bugs:
Bug #724131 in OpenERP Addons: "Purchase lines without Invoice Lines
Relationship"
https://bugs.launchpad.net/openobject-addons/+bug/724131
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-724131-rpa/+merge/82138
lp:724131: Fixed missing relation between PO line and Invoice line when
purchase order invoice control is Based on generated invoice,
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-bug-724131-rpa/+merge/82138
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-addons/trunk-bug-724131-rpa.
=== modified file 'purchase/purchase.py'
--- purchase/purchase.py 2011-11-14 11:18:10 +0000
+++ purchase/purchase.py 2011-11-14 13:08:21 +0000
@@ -319,17 +319,20 @@
'ref_partner_id': po.partner_id.id,
'ref_doc1': 'purchase.order,%d' % (po.id,),
})
- def inv_line_create(self, cr, uid, a, ol):
- return (0, False, {
- 'name': ol.name,
- 'account_id': a,
- 'price_unit': ol.price_unit or 0.0,
- 'quantity': ol.product_qty,
- 'product_id': ol.product_id.id or False,
- 'uos_id': ol.product_uom.id or False,
- 'invoice_line_tax_id': [(6, 0, [x.id for x in ol.taxes_id])],
- 'account_analytic_id': ol.account_analytic_id.id or False,
+ def inv_line_create(self, cr, uid, account_id, order_line):
+ inv_obj = self.pool.get('account.invoice.line')
+ inv_id = inv_obj.create(cr, uid, {
+ 'name': order_line.name,
+ 'account_id': account_id,
+ 'price_unit': order_line.price_unit or 0.0,
+ 'quantity': order_line.product_qty,
+ 'product_id': order_line.product_id.id or False,
+ 'uos_id': order_line.product_uom.id or False,
+ 'invoice_line_tax_id': [(6, 0, [x.id for x in order_line.taxes_id])],
+ 'account_analytic_id': order_line.account_analytic_id.id or False,
})
+ order_line.write({'invoiced':True, 'invoice_lines': [(4, inv_id)]})
+ return inv_id
def action_cancel_draft(self, cr, uid, ids, *args):
if not len(ids):
@@ -352,11 +355,12 @@
res = False
journal_obj = self.pool.get('account.journal')
+ inv_obj = self.pool.get('account.invoice')
+ fiscal_obj = self.pool.get('account.fiscal.position')
+ property_obj = self.pool.get('ir.property')
for o in self.browse(cr, uid, ids):
il = []
- todo = []
for ol in o.order_line:
- todo.append(ol.id)
if ol.product_id:
a = ol.product_id.product_tmpl_id.property_account_expense.id
if not a:
@@ -364,9 +368,9 @@
if not a:
raise osv.except_osv(_('Error !'), _('There is no expense account defined for this product: "%s" (id:%d)') % (ol.product_id.name, ol.product_id.id,))
else:
- a = self.pool.get('ir.property').get(cr, uid, 'property_account_expense_categ', 'product.category').id
+ a = property_obj.get(cr, uid, 'property_account_expense_categ', 'product.category').id
fpos = o.fiscal_position or False
- a = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, a)
+ a = fiscal_obj.map_account(cr, uid, fpos, a)
il.append(self.inv_line_create(cr, uid, a, ol))
a = o.partner_id.property_account_payable.id
@@ -385,15 +389,14 @@
'address_contact_id': o.partner_address_id.id,
'journal_id': len(journal_ids) and journal_ids[0] or False,
'origin': o.name,
- 'invoice_line': il,
+ 'invoice_line': [(4, line) for line in il],
'fiscal_position': o.fiscal_position.id or o.partner_id.property_account_position.id,
'payment_term': o.partner_id.property_payment_term and o.partner_id.property_payment_term.id or False,
'company_id': o.company_id.id,
}
- inv_id = self.pool.get('account.invoice').create(cr, uid, inv, {'type':'in_invoice'})
- self.pool.get('account.invoice').button_compute(cr, uid, [inv_id], {'type':'in_invoice'}, set_total=True)
- self.pool.get('purchase.order.line').write(cr, uid, todo, {'invoiced':True})
- self.write(cr, uid, [o.id], {'invoice_ids': [(4, inv_id)]})
+ inv_id = inv_obj.create(cr, uid, inv, {'type':'in_invoice'})
+ inv_obj.button_compute(cr, uid, [inv_id], {'type':'in_invoice'}, set_total=True)
+ o.write({'invoice_ids': [(4, inv_id)]})
res = inv_id
return res
_______________________________________________
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