summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Martinelli <nim@odoo.com>2015-09-22 15:51:27 +0200
committerNicolas Martinelli <nim@odoo.com>2015-09-22 16:24:12 +0200
commit3f17f7efb70370d3466066a2f26e357f4e340d8f (patch)
treec0d3e9255cf48ccfccf389be2876f61edc9cc1b9
parent0037547e8a92267f07910b7443f306926c0f097c (diff)
[IMP] sale: add option to set a SO to done automatically
This option will set a SO automatically to Done when it is confirmed. The purpose is to prevent a user to modify a SO after confirmation, as it was the case up to v8.0.
-rw-r--r--addons/sale/i18n/sale.pot14
-rw-r--r--addons/sale/res_config.py9
-rw-r--r--addons/sale/res_config_view.xml1
-rw-r--r--addons/sale/sale.py2
4 files changed, 26 insertions, 0 deletions
diff --git a/addons/sale/i18n/sale.pot b/addons/sale/i18n/sale.pot
index a1f5b1f39b6..d052647b5c1 100644
--- a/addons/sale/i18n/sale.pot
+++ b/addons/sale/i18n/sale.pot
@@ -1794,3 +1794,17 @@ msgstr ""
msgid "unknown"
msgstr ""
+#. module: sale
+#: selection:sale.config.settings,auto_done_setting:0
+msgid "Allow to edit sales order from the 'Sales Order' menu (not from the Quotation menu)"
+msgstr ""
+
+#. module: sale
+#: selection:sale.config.settings,auto_done_setting:0
+msgid "Never allow to modify a confirmed sale order"
+msgstr ""
+
+#. module: sale
+#: model:ir.model.fields,field_description:sale.field_sale_config_settings_auto_done_setting
+msgid "Sale Order Modification"
+msgstr ""
diff --git a/addons/sale/res_config.py b/addons/sale/res_config.py
index 29b4005694d..78da0d750ef 100644
--- a/addons/sale/res_config.py
+++ b/addons/sale/res_config.py
@@ -68,6 +68,10 @@ class sale_configuration(osv.TransientModel):
'deposit_product_id_setting': fields.many2one('product.product', 'Default Advance Product',\
domain="[('type', '=', 'service')]",\
help='Default product used for payment advances'),
+ 'auto_done_setting': fields.selection([
+ (0, "Allow to edit sales order from the 'Sales Order' menu (not from the Quotation menu)"),
+ (1, "Never allow to modify a confirmed sale order")
+ ], "Sale Order Modification"),
}
_defaults = {
@@ -85,6 +89,11 @@ class sale_configuration(osv.TransientModel):
res = self.pool.get('ir.values').set_default(cr, uid, 'sale.config.settings', 'deposit_product_id_setting', deposit_product_id.id)
return res
+ def set_auto_done_defaults(self, cr, uid, ids, context=None):
+ auto_done = self.browse(cr, uid, ids, context=context).auto_done_setting
+ res = self.pool.get('ir.values').set_default(cr, uid, 'sale.config.settings', 'auto_done_setting', auto_done)
+ return res
+
def onchange_sale_price(self, cr, uid, ids, sale_pricelist_setting, context=None):
if sale_pricelist_setting == 'percentage':
return {'value': {'group_product_pricelist': True, 'group_sale_pricelist': True, 'group_pricelist_item': False}}
diff --git a/addons/sale/res_config_view.xml b/addons/sale/res_config_view.xml
index d01c66027a6..811dad1bd96 100644
--- a/addons/sale/res_config_view.xml
+++ b/addons/sale/res_config_view.xml
@@ -20,6 +20,7 @@
<field name="group_discount_per_so_line" widget="radio"/>
<field name="module_website_quote" widget="radio"/>
<field name="module_sale_margin" widget="radio"/>
+ <field name="auto_done_setting" widget="radio"/>
</group>
<group name="manage_price">
<label for="sale_pricelist_setting" string="Sale Price"/>
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 4fbcd558723..19b127e8b7d 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -390,6 +390,8 @@ class SaleOrder(models.Model):
if line.product_id.invoice_policy == 'cost':
order._create_analytic_account()
break
+ if self.env['ir.values'].get_default('sale.config.settings', 'auto_done_setting'):
+ self.action_done()
@api.multi
def _create_analytic_account(self, prefix=None):