diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml
index 02325bada84..e2b06ce9b78 100644
--- a/addons/account/account_invoice_view.xml
+++ b/addons/account/account_invoice_view.xml
@@ -58,6 +58,7 @@
+
diff --git a/addons/account/invoice.py b/addons/account/invoice.py
index d346a5824fe..747b5d4a629 100644
--- a/addons/account/invoice.py
+++ b/addons/account/invoice.py
@@ -861,6 +861,7 @@ class account_invoice_line(osv.osv):
_description = "Invoice line"
_columns = {
'name': fields.char('Description', size=256, required=True),
+ 'origin': fields.char('Origin', size=256, help="Reference of the document that produced this invoice."),
'invoice_id': fields.many2one('account.invoice', 'Invoice Ref', ondelete='cascade', select=True),
'uos_id': fields.many2one('product.uom', 'Unit of Measure', ondelete='set null'),
'product_id': fields.many2one('product.product', 'Product', ondelete='set null'),
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index be573f70422..88e6946ba17 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -735,6 +735,7 @@ class sale_order_line(osv.osv):
a = self.pool.get('account.fiscal.position').map_account(cr, uid, line.order_id.partner_id, a)
inv_id = self.pool.get('account.invoice.line').create(cr, uid, {
'name': line.name,
+ 'origin':line.order_id.name,
'account_id': a,
'price_unit': pu,
'quantity': uosqty,
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index af90192f326..63ecd5a354d 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -625,10 +625,16 @@ class stock_picking(osv.osv):
address_contact_id, address_invoice_id = \
self._get_address_invoice(cursor, user, picking).values()
- comment = self._get_comment_invoice(cursor, user, picking)
-
+ comment = self._get_comment_invoice(cursor, user, picking)
if group and partner.id in invoices_group:
invoice_id = invoices_group[partner.id]
+ invoice=invoice_obj.browse(cursor, user,invoice_id)
+ invoice_vals = {
+ 'name': invoice.name +', '+picking.name,
+ 'origin': invoice.origin+', '+picking.name+(picking.origin and (':' + picking.origin) or ''),
+ 'comment':(comment and (invoice.comment and invoice.comment+"\n"+comment or comment)) or (invoice.comment and invoice.comment or ''),
+ }
+ invoice_obj.write(cursor, user, [invoice_id],invoice_vals,context=context)
else:
invoice_vals = {
'name': picking.name,
@@ -651,6 +657,9 @@ class stock_picking(osv.osv):
invoices_group[partner.id] = invoice_id
res[picking.id] = invoice_id
for move_line in picking.move_lines:
+ origin=move_line.picking_id.name
+ if move_line.picking_id.origin:
+ origin+=':' + move_line.picking_id.origin
if group:
name = picking.name + '-' + move_line.name
else:
@@ -679,6 +688,7 @@ class stock_picking(osv.osv):
account_id = self.pool.get('account.fiscal.position').map_account(cursor, user, partner, account_id)
invoice_line_id = invoice_line_obj.create(cursor, user, {
'name': name,
+ 'origin':origin,
'invoice_id': invoice_id,
'uos_id': move_line.product_uos.id,
'product_id': move_line.product_id.id,