Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[18.0][MIG] hr_expense_cancel #281

Open
wants to merge 27 commits into
base: 18.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
81ec805
hr_expense_cancel: lets to cancel and correct expenses
ernestotejeda Feb 11, 2019
2a1ba1e
[MIG] hr_expense_cancel: Migration to 12.0
danhvo-novobi Mar 11, 2019
61ea7fa
[FIX] hr_expense_cancel: Avoid singleton error in post_init_hook
pedrobaeza Oct 21, 2019
0a8b2f7
[FIX] Avoid not intended warnings
MiquelRForgeFlow Nov 14, 2019
ff79041
[IMP] hr_expense_cancel : black, isort
Saran440 Mar 30, 2020
862ba07
[13.0][MIG] hr_expense_cancel
Saran440 Mar 30, 2020
c6796d8
[14.0][MIG] hr_expense_cancel
Saran440 Oct 18, 2020
5f1ffcb
Overwrite core function create payment
Saran440 Oct 22, 2020
31e9f78
[FIX] hr_expense_cancel: Fix tests + Cancel move payments.
victoralmau Jan 17, 2022
ea101f5
[ENH] hr_expense_cancel depend on hr_expense_payment
Saran440 Jul 27, 2021
908b508
[MIG]hr_expense_cancel: Migration to 15.0
manuelregidor Apr 26, 2022
524f9e0
[MIG] hr_expense_cancel: Migration to 16.0
stefan-tecnativa Jun 15, 2023
e261d6e
Added translation using Weblate (Italian)
mymage Jun 28, 2023
501c667
[FIX] hr_expense_cancel: Adjust test to product w/o cost behavior
Saran440 Sep 18, 2023
79af39c
[FIX] no create payments with paid by company
Saran440 May 19, 2022
ee82a6a
[IMP] hr_expense_cancel: pre-commit auto fixes
May 15, 2024
d30a87e
[MIG] hr_expense_cancel: Migration to 17.0
May 15, 2024
e986623
[UPD] Update hr_expense_cancel.pot
Jul 30, 2024
770475d
[BOT] post-merge updates
OCA-git-bot Jul 30, 2024
12de013
Update translation files
weblate Jul 30, 2024
6f1b39a
Translated using Weblate (Italian)
mymage Jul 31, 2024
d906177
[FIX] hr_expense_cancel: Fix + improve tests
victoralmau Nov 27, 2024
211c304
[BOT] post-merge updates
OCA-git-bot Nov 27, 2024
7f238e3
[MIG] hr_expense_cancel: Migration to 18.0
mav-adhoc Dec 6, 2024
38ca85a
[FIX]hr_expense_cancel: submitted sheets in test
mav-adhoc Jan 29, 2025
9e24da0
[FIX]hr_expense_cancel:rename of action_sheet_move_cancel into action…
mav-adhoc Jan 29, 2025
aa5d2fb
[FIX]hr_expense_cancel: payment_ids.state cancel rename
mav-adhoc Jan 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 116 additions & 0 deletions hr_expense_cancel/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
=================
Hr expense cancel
=================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:659127f8c6e5f2db749db28e1d7681511ae898c25356a3293ea5094ba6c89b88
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fhr--expense-lightgray.png?logo=github
:target: https://github.com/OCA/hr-expense/tree/18.0/hr_expense_cancel
:alt: OCA/hr-expense
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/hr-expense-18-0/hr-expense-18-0-hr_expense_cancel
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/hr-expense&target_branch=18.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module allows you to cancel and correct expenses. It adds a cancel
button on the expense sheet that undo reconciliations and delete
payments and journal entries.

**Table of contents**

.. contents::
:local:

Installation
============

It's assumed that for each expense sheet, the *payments* that are
reconciled with their *journal entry* were created and reconciled by the
*Expense Tracker* module automatically. Therefore, when this module is
installed, these payments will automatically be associated with said
expense sheet so that they can be deleted in case the expense sheet is
canceled.

Usage
=====

To use this module, you need to:

1. Go to *Expenses -> My Expenses -> Expenses to Submit* and create a
new *Expense* with *Employee (to reimburse)* checked on the field
*Payment By*
2. Click on *Submit to Manager* button
3. Click on *Approve* button
4. Click on *Post Journal Entries* button
5. Click on *Register Payment* button, fill in the data of the wizard
and click on *Validate* button
6. After that, the *Expense report* will have an associated journal
entry reconciled with a payment
7. Click on *Cancel* button
8. The *Expense report* will be set to *Submitted* state; the journal
entry and the payment will be deleted

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/hr-expense/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/hr-expense/issues/new?body=module:%20hr_expense_cancel%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Tecnativa

Contributors
------------

- `Tecnativa <https://www.tecnativa.com>`__:

- Pedro M. Baeza
- Ernesto Tejeda
- Stefan Ungureanu

- Danh Vo <https://github.com/danhvophuong>
- Saran Lim. <[email protected]>
- Manuel Regidor <[email protected]>
- Italo LOPES <[email protected]>

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/hr-expense <https://github.com/OCA/hr-expense/tree/18.0/hr_expense_cancel>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 3 additions & 0 deletions hr_expense_cancel/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).

from . import models
20 changes: 20 additions & 0 deletions hr_expense_cancel/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright 2019 Tecnativa - Ernesto Tejeda
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).

{
"name": "Hr expense cancel",
"version": "18.0.1.0.0",
"author": "Tecnativa, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/hr-expense",
"license": "AGPL-3",
"category": "Human Resources",
# The module hr_expense_payment function is to link the generated payments
# with it's corresponding expense sheet.
# So when you want to cancel payments associated to a expense_sheet,
# you need to know which payments are related with your expense sheet.
# And that information is not available by inheriting hr_expense alone,
# we need the module
"depends": ["hr_expense_payment"],
"data": ["views/hr_expense_views.xml"],
"installable": True,
}
37 changes: 37 additions & 0 deletions hr_expense_cancel/i18n/es.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_expense_cancel
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-06-02 07:12+0000\n"
"PO-Revision-Date: 2023-06-02 07:12+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: hr_expense_cancel
#: model_terms:ir.ui.view,arch_db:hr_expense_cancel.view_hr_expense_sheet_form
msgid "Cancel all related operations"
msgstr "Cancelar todas las operaciones relacionadas"

#. module: hr_expense_cancel
#: model_terms:ir.ui.view,arch_db:hr_expense_cancel.view_hr_expense_sheet_form
msgid "Cancel journal entries, payments and reconciliations"
msgstr "Cancelar asientos, pagos y conciliaciones"

#. module: hr_expense_cancel
#: model:ir.model,name:hr_expense_cancel.model_hr_expense_sheet
msgid "Expense Report"
msgstr "Informe de gastos"

#. module: hr_expense_cancel
#: model:ir.model,name:hr_expense_cancel.model_account_payment
msgid "Payments"
msgstr ""
34 changes: 34 additions & 0 deletions hr_expense_cancel/i18n/hr_expense_cancel.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_expense_cancel
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: hr_expense_cancel
#: model_terms:ir.ui.view,arch_db:hr_expense_cancel.view_hr_expense_sheet_form
msgid "Cancel all related operations"
msgstr ""

#. module: hr_expense_cancel
#: model_terms:ir.ui.view,arch_db:hr_expense_cancel.view_hr_expense_sheet_form
msgid "Cancel journal entries, payments and reconciliations"
msgstr ""

#. module: hr_expense_cancel
#: model:ir.model,name:hr_expense_cancel.model_hr_expense_sheet
msgid "Expense Report"
msgstr ""

#. module: hr_expense_cancel
#: model:ir.model,name:hr_expense_cancel.model_account_payment
msgid "Payments"
msgstr ""
37 changes: 37 additions & 0 deletions hr_expense_cancel/i18n/it.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hr_expense_cancel
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-07-31 08:58+0000\n"
"Last-Translator: mymage <[email protected]>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.2\n"

#. module: hr_expense_cancel
#: model_terms:ir.ui.view,arch_db:hr_expense_cancel.view_hr_expense_sheet_form
msgid "Cancel all related operations"
msgstr "Annulla tutte le operazioni relative"

#. module: hr_expense_cancel
#: model_terms:ir.ui.view,arch_db:hr_expense_cancel.view_hr_expense_sheet_form
msgid "Cancel journal entries, payments and reconciliations"
msgstr "Annulla registrazioni contabili, pagamenti e riconciliazioni"

#. module: hr_expense_cancel
#: model:ir.model,name:hr_expense_cancel.model_hr_expense_sheet
msgid "Expense Report"
msgstr "Nota spese"

#. module: hr_expense_cancel
#: model:ir.model,name:hr_expense_cancel.model_account_payment
msgid "Payments"
msgstr "Pagamenti"
4 changes: 4 additions & 0 deletions hr_expense_cancel/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).

from . import account_payment
from . import hr_expense
12 changes: 12 additions & 0 deletions hr_expense_cancel/models/account_payment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).

from odoo import models


class AccountPayment(models.Model):
_inherit = "account.payment"

def action_draft_cancel(self):
for payment in self:
payment.action_draft()
payment.action_cancel()
66 changes: 66 additions & 0 deletions hr_expense_cancel/models/hr_expense.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Copyright 2019 Tecnativa - Ernesto Tejeda
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).

from odoo import models


class HrExpenseSheet(models.Model):
_inherit = "hr.expense.sheet"

def action_cancel(self):
for sheet in self:
account_moves = sheet.account_move_ids
sheet.account_move_ids = False
payments = sheet.payment_ids.filtered(lambda line: line.state != "cancel")
# case : cancel invoice from hr_expense
self._remove_reconcile_hr_invoice(account_moves)
# If the sheet is paid then remove payments
if sheet.state in ("done", "approve"):
if sheet.expense_line_ids[:1].payment_mode == "own_account":
self._remove_move_reconcile(payments, account_moves)
payments.action_draft_cancel()
# Deleting the Journal entry if in the previous steps
# (if the expense sheet is paid and payment_mode == 'own_account')
# it has not been deleted
if account_moves.exists():
moves_to_cancel = account_moves.filtered(
lambda move: move.state != "draft"
)
if moves_to_cancel:
moves_to_cancel.button_cancel()
account_moves.with_context(force_delete=True).unlink()
sheet.state = "submit"

def _remove_reconcile_hr_invoice(self, account_moves):
"""Cancel invoice made by hr_expense_invoice module automatically"""
exp_move_lines = self.env["account.move.line"].search(
[
(
"full_reconcile_id",
"in",
account_moves.line_ids.full_reconcile_id.ids,
),
("move_id", "not in", account_moves.ids),
]
)
# set state to cancel
if exp_move_lines:
moves = exp_move_lines.move_id
moves.button_draft()
moves.button_cancel()

def _remove_move_reconcile(self, payments, account_moves):
"""Delete only reconciliations made with the payments generated
by hr_expense module automatically"""
to_unreconcile_move_lines = self.env["account.move.line"].search(
[
(
"full_reconcile_id",
"in",
account_moves.line_ids.full_reconcile_id.ids,
),
("move_id", "in", payments.move_id.ids),
]
)
if to_unreconcile_move_lines:
to_unreconcile_move_lines.remove_move_reconcile()

Check warning on line 66 in hr_expense_cancel/models/hr_expense.py

View check run for this annotation

Codecov / codecov/patch

hr_expense_cancel/models/hr_expense.py#L66

Added line #L66 was not covered by tests
3 changes: 3 additions & 0 deletions hr_expense_cancel/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
8 changes: 8 additions & 0 deletions hr_expense_cancel/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
- [Tecnativa](https://www.tecnativa.com):
- Pedro M. Baeza
- Ernesto Tejeda
- Stefan Ungureanu
- Danh Vo \<<https://github.com/danhvophuong>\>
- Saran Lim. \<<[email protected]>\>
- Manuel Regidor \<<[email protected]>\>
- Italo LOPES \<<[email protected]>\>
3 changes: 3 additions & 0 deletions hr_expense_cancel/readme/DESCRIPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
This module allows you to cancel and correct expenses. It adds a cancel
button on the expense sheet that undo reconciliations and delete
payments and journal entries.
6 changes: 6 additions & 0 deletions hr_expense_cancel/readme/INSTALL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
It's assumed that for each expense sheet, the *payments* that are
reconciled with their *journal entry* were created and reconciled by the
*Expense Tracker* module automatically. Therefore, when this module is
installed, these payments will automatically be associated with said
expense sheet so that they can be deleted in case the expense sheet is
canceled.
15 changes: 15 additions & 0 deletions hr_expense_cancel/readme/USAGE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
To use this module, you need to:

1. Go to *Expenses -\> My Expenses -\> Expenses to Submit* and create a
new *Expense* with *Employee (to reimburse)* checked on the field
*Payment By*
2. Click on *Submit to Manager* button
3. Click on *Approve* button
4. Click on *Post Journal Entries* button
5. Click on *Register Payment* button, fill in the data of the wizard
and click on *Validate* button
6. After that, the *Expense report* will have an associated journal
entry reconciled with a payment
7. Click on *Cancel* button
8. The *Expense report* will be set to *Submitted* state; the journal
entry and the payment will be deleted
Binary file added hr_expense_cancel/static/description/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading