diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 4688b752578..5f523c24dec 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -1152,6 +1152,7 @@ class purchase_order_line(osv.osv):
self.write(cr, uid, ids, {'state': 'confirmed'}, context=context)
return True
+
class procurement_rule(osv.osv):
_inherit = 'procurement.rule'
diff --git a/addons/purchase/stock.py b/addons/purchase/stock.py
index 205513c90ac..977326e7511 100644
--- a/addons/purchase/stock.py
+++ b/addons/purchase/stock.py
@@ -139,6 +139,25 @@ class stock_picking(osv.osv):
}),
}
+ def _create_invoice_from_picking(self, cr, uid, picking, vals, context=None):
+ purchase_obj = self.pool.get("purchase.order")
+ purchase_line_obj = self.pool.get('purchase.order.line')
+ invoice_line_obj = self.pool.get('account.invoice.line')
+ invoice_id = super(stock_picking, self)._create_invoice_from_picking(cr, uid, picking, vals, context=context)
+ if picking.move_lines and picking.move_lines[0].purchase_line_id:
+ purchase_id = picking.move_lines[0].purchase_line_id.order_id.id
+ purchase_line_ids = purchase_line_obj.search(cr, uid, [('order_id', '=', purchase_id), ('product_id.type', '=', 'service'), ('invoiced', '=', False)], context=context)
+ if purchase_line_ids:
+ inv_lines = []
+ for po_line in purchase_line_obj.browse(cr, uid, purchase_line_ids, context=context):
+ acc_id = purchase_obj._choose_account_from_po_line(cr, uid, po_line, context=context)
+ inv_line_data = purchase_obj._prepare_inv_line(cr, uid, acc_id, po_line, context=context)
+ inv_line_id = invoice_line_obj.create(cr, uid, inv_line_data, context=context)
+ inv_lines.append(inv_line_id)
+ po_line.write({'invoice_lines': [(4, inv_line_id)]})
+ invoice_line_obj.write(cr, uid, inv_lines, {'invoice_id': invoice_id}, context=context)
+ return invoice_id
+
class stock_warehouse(osv.osv):
_inherit = 'stock.warehouse'
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 6400bf55c56..e50346eda2a 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -243,8 +243,9 @@ class sale_order(osv.osv):
'company_id': fields.many2one('res.company', 'Company'),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'procurement_group_id': fields.many2one('procurement.group', 'Procurement group', copy=False),
-
+ 'product_id': fields.related('order_line', 'product_id', type='many2one', relation='product.product', string='Product'),
}
+
_defaults = {
'date_order': fields.datetime.now,
'order_policy': 'manual',
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index e4993b4cf1c..c4b6af73163 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -250,6 +250,7 @@
+
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index 8b7b8a2ebdd..26038673474 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -938,7 +938,8 @@ class stock_picking(osv.osv):
'pack_operation_ids': [],
'backorder_id': picking.id,
})
- self.message_post(cr, uid, picking.id, body=_("Back order %s created.") % (picking.name), context=context)
+ backorder = self.browse(cr, uid, backorder_id, context=context)
+ self.message_post(cr, uid, picking.id, body=_("Back order %s created.") % (backorder.name), context=context)
move_obj = self.pool.get("stock.move")
move_obj.write(cr, uid, backorder_move_ids, {'picking_id': backorder_id}, context=context)
diff --git a/addons/stock/stock_demo.xml b/addons/stock/stock_demo.xml
index 5bada91afd2..316acce0b7e 100644
--- a/addons/stock/stock_demo.xml
+++ b/addons/stock/stock_demo.xml
@@ -77,7 +77,7 @@
- 10.0
+ 500.0