summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Martinelli <nim@odoo.com>2017-09-01 14:31:54 +0200
committerNicolas Martinelli <nim@odoo.com>2017-09-04 08:22:40 +0200
commit5d1dafbf9b05c690288083a85bf0a67561bd5949 (patch)
tree7edbfc22bf89bbd6f62d063f0daac5224d80276d
parent0e0771e319f9f9843fb9c84d247e2f13ff9f3437 (diff)
[FIX] hr_expense: prevent deletion of posted expense
Prevent the deletion of expense or expense sheet if they are linked to a journal entry. Closes #19128 Closes #19044 opw-767549
-rw-r--r--addons/hr_expense/i18n/hr_expense.pot8
-rw-r--r--addons/hr_expense/models/hr_expense.py11
-rw-r--r--addons/hr_expense/security/ir_rule.xml20
3 files changed, 16 insertions, 23 deletions
diff --git a/addons/hr_expense/i18n/hr_expense.pot b/addons/hr_expense/i18n/hr_expense.pot
index db423e344e7..b26c16e88da 100644
--- a/addons/hr_expense/i18n/hr_expense.pot
+++ b/addons/hr_expense/i18n/hr_expense.pot
@@ -1290,7 +1290,13 @@ msgid "You cannot delete a posted expense."
msgstr ""
#. module: hr_expense
-#: code:addons/hr_expense/models/hr_expense.py:559
+#: code:addons/hr_expense/models/hr_expense.py:446
+#, python-format
+msgid "You cannot delete a posted or paid expense."
+msgstr ""
+
+#. module: hr_expense
+#: code:addons/hr_expense/models/hr_expense.py:576
#, python-format
msgid "You cannot have a positive and negative amounts on the same expense report."
msgstr ""
diff --git a/addons/hr_expense/models/hr_expense.py b/addons/hr_expense/models/hr_expense.py
index 3a5b0eab4db..12a6eabf0cb 100644
--- a/addons/hr_expense/models/hr_expense.py
+++ b/addons/hr_expense/models/hr_expense.py
@@ -294,6 +294,13 @@ class HrExpense(models.Model):
return account_move
@api.multi
+ def unlink(self):
+ for expense in self:
+ if expense.state in ['done']:
+ raise UserError(_('You cannot delete a posted expense.'))
+ super(HrExpense, self).unlink()
+
+ @api.multi
def action_get_attachment_view(self):
self.ensure_one()
res = self.env['ir.actions.act_window'].for_xml_id('base', 'action_attachment')
@@ -435,8 +442,8 @@ class HrExpenseSheet(models.Model):
@api.multi
def unlink(self):
for expense in self:
- if expense.state == "post":
- raise UserError(_("You cannot delete a posted expense."))
+ if expense.state in ['post', 'done']:
+ raise UserError(_('You cannot delete a posted or paid expense.'))
super(HrExpenseSheet, self).unlink()
@api.multi
diff --git a/addons/hr_expense/security/ir_rule.xml b/addons/hr_expense/security/ir_rule.xml
index e86d91211d8..61aba78d7ed 100644
--- a/addons/hr_expense/security/ir_rule.xml
+++ b/addons/hr_expense/security/ir_rule.xml
@@ -26,26 +26,6 @@
<field eval="True" name="global"/>
<field name="domain_force">['|',('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])]</field>
</record>
- <record id="hr_expense_report_prevent_unlink" model="ir.rule">
- <field name="name">Expense Report Prevent Delete Employee</field>
- <field name="model_id" ref="model_hr_expense_sheet"/>
- <field name="domain_force">[('state', '=', 'submit')]</field>
- <field name="groups" eval="[(4, ref('base.group_user'))]"/>
- <field name="perm_read" eval="False"/>
- <field name="perm_write" eval="False"/>
- <field name="perm_create" eval="False"/>
- <field name="perm_unlink" eval="True"/>
- </record>
- <record id="hr_expense_report_auth_unlink" model="ir.rule">
- <field name="name">Expense Report Authorize Delete Officer</field>
- <field name="model_id" ref="model_hr_expense_sheet"/>
- <field name="domain_force">[(1, '=', 1)]</field>
- <field name="groups" eval="[(4, ref('hr_expense.group_hr_expense_user'))]"/>
- <field name="perm_read" eval="False"/>
- <field name="perm_write" eval="False"/>
- <field name="perm_create" eval="False"/>
- <field name="perm_unlink" eval="True"/>
- </record>
</data>
</odoo>