diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml
index d1b6e21d61a..92a563a96db 100644
--- a/addons/account/account_invoice_view.xml
+++ b/addons/account/account_invoice_view.xml
@@ -37,7 +37,7 @@
-
+
@@ -56,10 +56,10 @@
-
+
-
+
@@ -270,10 +270,10 @@
-
+
-
+
@@ -311,9 +311,9 @@
-
+
-
+
diff --git a/addons/account_voucher/voucher_payment_receipt_view.xml b/addons/account_voucher/voucher_payment_receipt_view.xml
index 6b2af93bc62..214424bb161 100644
--- a/addons/account_voucher/voucher_payment_receipt_view.xml
+++ b/addons/account_voucher/voucher_payment_receipt_view.xml
@@ -334,13 +334,13 @@
on_change="onchange_move_line_id(move_line_id)"
domain="[('account_id.type','in',('receivable','payable')), ('reconcile_id','=', False), ('partner_id','=',parent.partner_id)]"
required="1"
- />
+ groups="account.group_account_user"/>
-
-
+
+
diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml
index 6072aac86e6..98ae3671eb2 100644
--- a/addons/product/product_view.xml
+++ b/addons/product/product_view.xml
@@ -360,7 +360,7 @@
action="product_category_action"
id="product.menu_products_category"
parent="base.menu_product"
- sequence="0"/>
+ sequence="0" groups="base.group_no_one"/>
Product Categoriesir.actions.act_window
@@ -416,7 +416,7 @@
-
+
@@ -469,7 +469,7 @@
tree,formCreate and manage the units of measure categories you want to be used in your system. If several units of measure are in the same category, they can be converted to each other. For example, in the unit of measure category "Time", you will have the following UoM: Hours, Days.
-
+
product.ul.form.view
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 2432e6ee580..b63dfa6dff0 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -726,6 +726,26 @@ class sale_order(osv.osv):
self.cancel_send_note(cr, uid, [sale.id], context=None)
self.write(cr, uid, ids, {'state': 'cancel'})
return True
+
+ def action_button_confirm(self, cr, uid, ids, context=None):
+ assert len(ids) == 1, 'This option should only be used for a single id at a time'
+ wf_service = netsvc.LocalService('workflow')
+ wf_service.trg_validate(uid, 'sale.order', ids[0], 'order_confirm', cr)
+
+ # redisplay the record as a sale order
+ view_ref = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'sale', 'view_order_form')
+ view_id = view_ref and view_ref[1] or False,
+ return {
+ 'type': 'ir.actions.act_window',
+ 'name': _('Sales Order'),
+ 'res_model': 'sale.order',
+ 'res_id': ids[0],
+ 'view_type': 'form',
+ 'view_mode': 'form',
+ 'view_id': view_id,
+ 'target': 'current',
+ 'nodestroy': True,
+ }
def action_wait(self, cr, uid, ids, context=None):
for o in self.browse(cr, uid, ids):
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index c1f81cf521d..777acd649a6 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -107,8 +107,8 @@
-
-
+
+
-
-
-
+
+
@@ -155,7 +154,7 @@
+
@@ -346,6 +346,13 @@
tree,form,calendar,graph{"search_default_draft":1}
+
+ Click here to create a new quotation.
+ <p>
+ The "Quotation" is the first step of the Sales flow. Manage your sales from quotation to invoice.
+ <p>
+ You will be able to sell products (manage deliveries) as well as services (create projects).
+