From c3b98b14924f3acea0613a2c1ddf2b5cef8ee683 Mon Sep 17 00:00:00 2001 From: Enric Tobella Date: Fri, 15 Sep 2023 12:28:54 +0200 Subject: [PATCH] [IMP] account_loan: Allow to increase the amount of the loan [UPD] Update account_loan.pot [BOT] post-merge updates --- account_loan/README.rst | 4 +- account_loan/__manifest__.py | 1 + account_loan/i18n/account_loan.pot | 144 ++++++++++----- account_loan/models/account_loan_line.py | 37 ++-- account_loan/security/ir.model.access.csv | 1 + account_loan/static/description/index.html | 50 +++--- account_loan/tests/test_loan.py | 167 ++++++++++++++++-- account_loan/views/account_loan_view.xml | 23 ++- account_loan/wizards/__init__.py | 1 + .../wizards/account_loan_increase_amount.py | 113 ++++++++++++ .../wizards/account_loan_increase_amount.xml | 40 +++++ .../wizards/account_loan_pay_amount.py | 15 +- 12 files changed, 491 insertions(+), 105 deletions(-) create mode 100644 account_loan/wizards/account_loan_increase_amount.py create mode 100644 account_loan/wizards/account_loan_increase_amount.xml diff --git a/account_loan/README.rst b/account_loan/README.rst index 6de2d7649..afd4e5238 100644 --- a/account_loan/README.rst +++ b/account_loan/README.rst @@ -7,7 +7,7 @@ Account Loan management !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:c9f87eb07ebda20ab00e0446ae5e5908b6a64086fd868f2bfc58e4e9f7dc68b0 + !! source digest: sha256:95234840632690af02753b03c14b05c13899c8ee92ebd9e394694d91f0212461 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -51,7 +51,7 @@ Usage To use this module, you need to: -#. Go to `Invoicing / Accounting > Adviser > Loans` +#. Go to `Invoicing / Accounting > Accounting > Loans` #. Configure a loan selecting the company, loan type, amount, rate and accounts #. Post the loan, it will automatically create an account move with the expected amounts diff --git a/account_loan/__manifest__.py b/account_loan/__manifest__.py index 8ad68efe8..b2fa61f0d 100644 --- a/account_loan/__manifest__.py +++ b/account_loan/__manifest__.py @@ -9,6 +9,7 @@ "category": "Accounting", "depends": ["account"], "data": [ + "wizards/account_loan_increase_amount.xml", "data/ir_sequence_data.xml", "security/ir.model.access.csv", "security/account_loan_security.xml", diff --git a/account_loan/i18n/account_loan.pot b/account_loan/i18n/account_loan.pot index 1e3d2d0e8..329da2ebe 100644 --- a/account_loan/i18n/account_loan.pot +++ b/account_loan/i18n/account_loan.pot @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 16.0\n" "Report-Msgid-Bugs-To: \n" "Last-Translator: \n" "Language-Team: \n" @@ -14,6 +14,26 @@ msgstr "" "Plural-Forms: \n" #. module: account_loan +#: model_terms:ir.ui.view,arch_db:account_loan.account_loan_form +msgid "" +"Deduct\n" +" Debt" +msgstr "" + +#. module: account_loan +#: model_terms:ir.ui.view,arch_db:account_loan.account_loan_form +msgid "" +"Increase\n" +" Debt" +msgstr "" + +#. module: account_loan +#: model_terms:ir.ui.view,arch_db:account_loan.res_partner_form_view +msgid "Loans" +msgstr "" + +#. module: account_loan +#: model:ir.model.fields,field_description:account_loan.field_account_loan_increase_amount__account_id #: model:ir.model.fields,field_description:account_loan.field_account_loan_post__account_id msgid "Account" msgstr "" @@ -70,19 +90,23 @@ msgid "Activity Type Icon" msgstr "" #. module: account_loan -#: code:addons/account_loan/wizard/account_loan_pay_amount.py:0 +#. odoo-python +#: code:addons/account_loan/wizards/account_loan_pay_amount.py:0 #, python-format msgid "Amount cannot be bigger than debt" msgstr "" #. module: account_loan -#: code:addons/account_loan/wizard/account_loan_pay_amount.py:0 +#. odoo-python +#: code:addons/account_loan/wizards/account_loan_increase_amount.py:0 +#: code:addons/account_loan/wizards/account_loan_pay_amount.py:0 #, python-format msgid "Amount cannot be less than zero" msgstr "" #. module: account_loan -#: code:addons/account_loan/model/account_loan_line.py:0 +#. odoo-python +#: code:addons/account_loan/models/account_loan_line.py:0 #, python-format msgid "Amount cannot be recomputed if moves or invoices exists already" msgstr "" @@ -103,6 +127,7 @@ msgid "Amount that will reduce the pending loan amount on long term" msgstr "" #. module: account_loan +#: model:ir.model.fields,field_description:account_loan.field_account_loan_increase_amount__amount #: model:ir.model.fields,field_description:account_loan.field_account_loan_pay_amount__amount msgid "Amount to reduce from Principal" msgstr "" @@ -124,6 +149,7 @@ msgstr "" #. module: account_loan #: model_terms:ir.ui.view,arch_db:account_loan.account_loan_generate_wizard_form +#: model_terms:ir.ui.view,arch_db:account_loan.account_loan_increase_amount_form_view #: model_terms:ir.ui.view,arch_db:account_loan.account_loan_pay_amount_form #: model_terms:ir.ui.view,arch_db:account_loan.account_loan_post_form msgid "Cancel" @@ -166,9 +192,15 @@ msgstr "" msgid "Compute items" msgstr "" +#. module: account_loan +#: model:ir.model,name:account_loan.model_res_partner +msgid "Contact" +msgstr "" + #. module: account_loan #: model:ir.model.fields,field_description:account_loan.field_account_loan__create_uid #: model:ir.model.fields,field_description:account_loan.field_account_loan_generate_wizard__create_uid +#: model:ir.model.fields,field_description:account_loan.field_account_loan_increase_amount__create_uid #: model:ir.model.fields,field_description:account_loan.field_account_loan_line__create_uid #: model:ir.model.fields,field_description:account_loan.field_account_loan_pay_amount__create_uid #: model:ir.model.fields,field_description:account_loan.field_account_loan_post__create_uid @@ -178,6 +210,7 @@ msgstr "" #. module: account_loan #: model:ir.model.fields,field_description:account_loan.field_account_loan__create_date #: model:ir.model.fields,field_description:account_loan.field_account_loan_generate_wizard__create_date +#: model:ir.model.fields,field_description:account_loan.field_account_loan_increase_amount__create_date #: model:ir.model.fields,field_description:account_loan.field_account_loan_line__create_date #: model:ir.model.fields,field_description:account_loan.field_account_loan_pay_amount__create_date #: model:ir.model.fields,field_description:account_loan.field_account_loan_post__create_date @@ -186,6 +219,7 @@ msgstr "" #. module: account_loan #: model:ir.model.fields,field_description:account_loan.field_account_loan__currency_id +#: model:ir.model.fields,field_description:account_loan.field_account_loan_increase_amount__currency_id #: model:ir.model.fields,field_description:account_loan.field_account_loan_line__currency_id #: model:ir.model.fields,field_description:account_loan.field_account_loan_pay_amount__currency_id msgid "Currency" @@ -197,6 +231,7 @@ msgid "Currently applied rate" msgstr "" #. module: account_loan +#: model:ir.model.fields,field_description:account_loan.field_account_loan_increase_amount__date #: model:ir.model.fields,field_description:account_loan.field_account_loan_line__date #: model:ir.model.fields,field_description:account_loan.field_account_loan_pay_amount__date msgid "Date" @@ -210,10 +245,10 @@ msgstr "" #. module: account_loan #: model:ir.model.fields,field_description:account_loan.field_account_loan__display_name #: model:ir.model.fields,field_description:account_loan.field_account_loan_generate_wizard__display_name +#: model:ir.model.fields,field_description:account_loan.field_account_loan_increase_amount__display_name #: model:ir.model.fields,field_description:account_loan.field_account_loan_line__display_name #: model:ir.model.fields,field_description:account_loan.field_account_loan_pay_amount__display_name #: model:ir.model.fields,field_description:account_loan.field_account_loan_post__display_name -#: model:ir.model.fields,field_description:account_loan.field_account_move__display_name msgid "Display Name" msgstr "" @@ -267,11 +302,6 @@ msgstr "" msgid "Followers" msgstr "" -#. module: account_loan -#: model:ir.model.fields,field_description:account_loan.field_account_loan__message_channel_ids -msgid "Followers (Channels)" -msgstr "" - #. module: account_loan #: model:ir.model.fields,field_description:account_loan.field_account_loan__message_partner_ids msgid "Followers (Partners)" @@ -298,18 +328,29 @@ msgstr "" msgid "Has Invoices" msgstr "" +#. module: account_loan +#: model:ir.model.fields,field_description:account_loan.field_account_loan__has_message +msgid "Has Message" +msgstr "" + #. module: account_loan #: model:ir.model.fields,field_description:account_loan.field_account_loan_line__has_moves msgid "Has Moves" msgstr "" +#. module: account_loan +#: model:ir.model.fields,help:account_loan.field_res_partner__lended_loan_count +#: model:ir.model.fields,help:account_loan.field_res_users__lended_loan_count +msgid "How many Loans this partner lended to us ?" +msgstr "" + #. module: account_loan #: model:ir.model.fields,field_description:account_loan.field_account_loan__id #: model:ir.model.fields,field_description:account_loan.field_account_loan_generate_wizard__id +#: model:ir.model.fields,field_description:account_loan.field_account_loan_increase_amount__id #: model:ir.model.fields,field_description:account_loan.field_account_loan_line__id #: model:ir.model.fields,field_description:account_loan.field_account_loan_pay_amount__id #: model:ir.model.fields,field_description:account_loan.field_account_loan_post__id -#: model:ir.model.fields,field_description:account_loan.field_account_move__id msgid "ID" msgstr "" @@ -325,7 +366,6 @@ msgstr "" #. module: account_loan #: model:ir.model.fields,help:account_loan.field_account_loan__message_needaction -#: model:ir.model.fields,help:account_loan.field_account_loan__message_unread msgid "If checked, new messages require your attention." msgstr "" @@ -335,6 +375,16 @@ msgstr "" msgid "If checked, some messages have a delivery error." msgstr "" +#. module: account_loan +#: model:ir.actions.act_window,name:account_loan.account_loan_increase_amount_act_window +msgid "Increase Amount" +msgstr "" + +#. module: account_loan +#: model:ir.model,name:account_loan.model_account_loan_increase_amount +msgid "Increase the debt of a loan" +msgstr "" + #. module: account_loan #: model:ir.model.fields,field_description:account_loan.field_account_loan__interests_product_id msgid "Interest product" @@ -378,6 +428,7 @@ msgstr "" #. module: account_loan #: model:ir.model.fields,field_description:account_loan.field_account_loan__journal_id +#: model:ir.model.fields,field_description:account_loan.field_account_loan_increase_amount__journal_id #: model:ir.model.fields,field_description:account_loan.field_account_loan_post__journal_id msgid "Journal" msgstr "" @@ -395,16 +446,17 @@ msgstr "" #. module: account_loan #: model:ir.model.fields,field_description:account_loan.field_account_loan____last_update #: model:ir.model.fields,field_description:account_loan.field_account_loan_generate_wizard____last_update +#: model:ir.model.fields,field_description:account_loan.field_account_loan_increase_amount____last_update #: model:ir.model.fields,field_description:account_loan.field_account_loan_line____last_update #: model:ir.model.fields,field_description:account_loan.field_account_loan_pay_amount____last_update #: model:ir.model.fields,field_description:account_loan.field_account_loan_post____last_update -#: model:ir.model.fields,field_description:account_loan.field_account_move____last_update msgid "Last Modified on" msgstr "" #. module: account_loan #: model:ir.model.fields,field_description:account_loan.field_account_loan__write_uid #: model:ir.model.fields,field_description:account_loan.field_account_loan_generate_wizard__write_uid +#: model:ir.model.fields,field_description:account_loan.field_account_loan_increase_amount__write_uid #: model:ir.model.fields,field_description:account_loan.field_account_loan_line__write_uid #: model:ir.model.fields,field_description:account_loan.field_account_loan_pay_amount__write_uid #: model:ir.model.fields,field_description:account_loan.field_account_loan_post__write_uid @@ -414,6 +466,7 @@ msgstr "" #. module: account_loan #: model:ir.model.fields,field_description:account_loan.field_account_loan__write_date #: model:ir.model.fields,field_description:account_loan.field_account_loan_generate_wizard__write_date +#: model:ir.model.fields,field_description:account_loan.field_account_loan_increase_amount__write_date #: model:ir.model.fields,field_description:account_loan.field_account_loan_line__write_date #: model:ir.model.fields,field_description:account_loan.field_account_loan_pay_amount__write_date #: model:ir.model.fields,field_description:account_loan.field_account_loan_post__write_date @@ -435,6 +488,18 @@ msgstr "" msgid "Leasings" msgstr "" +#. module: account_loan +#: model:ir.model.fields,field_description:account_loan.field_res_partner__lended_loan_ids +#: model:ir.model.fields,field_description:account_loan.field_res_users__lended_loan_ids +msgid "Lended Loan" +msgstr "" + +#. module: account_loan +#: model:ir.model.fields,field_description:account_loan.field_res_partner__lended_loan_count +#: model:ir.model.fields,field_description:account_loan.field_res_users__lended_loan_count +msgid "Lended Loan Count" +msgstr "" + #. module: account_loan #: model:ir.model.fields,field_description:account_loan.field_account_loan__partner_id msgid "Lender" @@ -448,12 +513,12 @@ msgstr "" #. module: account_loan #: model:ir.model,name:account_loan.model_account_loan #: model:ir.model.fields,field_description:account_loan.field_account_bank_statement_line__loan_id +#: model:ir.model.fields,field_description:account_loan.field_account_loan_increase_amount__loan_id #: model:ir.model.fields,field_description:account_loan.field_account_loan_line__loan_id #: model:ir.model.fields,field_description:account_loan.field_account_loan_pay_amount__loan_id #: model:ir.model.fields,field_description:account_loan.field_account_loan_post__loan_id #: model:ir.model.fields,field_description:account_loan.field_account_move__loan_id #: model:ir.model.fields,field_description:account_loan.field_account_payment__loan_id -#: model_terms:ir.ui.view,arch_db:account_loan.account_loan_form msgid "Loan" msgstr "" @@ -481,11 +546,6 @@ msgstr "" msgid "Loan generate wizard" msgstr "" -#. module: account_loan -#: model_terms:ir.ui.view,arch_db:account_loan.account_loan_line_tree -msgid "Loan items" -msgstr "" - #. module: account_loan #: model:ir.model.constraint,message:account_loan.constraint_account_loan_name_uniq msgid "Loan name must be unique" @@ -510,7 +570,6 @@ msgstr "" #: model:ir.actions.act_window,name:account_loan.account_loan_action #: model:ir.model.fields.selection,name:account_loan.selection__account_loan_generate_wizard__loan_type__loan #: model:ir.ui.menu,name:account_loan.account_loan_menu -#: model_terms:ir.ui.view,arch_db:account_loan.account_loan_tree msgid "Loans" msgstr "" @@ -610,7 +669,7 @@ msgstr "" #. module: account_loan #: model:ir.model.fields,help:account_loan.field_account_loan__message_needaction_counter -msgid "Number of messages which requires an action" +msgid "Number of messages requiring action" msgstr "" #. module: account_loan @@ -623,25 +682,20 @@ msgstr "" msgid "Number of periods that the loan will last" msgstr "" -#. module: account_loan -#: model:ir.model.fields,help:account_loan.field_account_loan__message_unread_counter -msgid "Number of unread messages" -msgstr "" - #. module: account_loan #: model:ir.model.fields.selection,name:account_loan.selection__account_loan__loan_type__interest msgid "Only interest" msgstr "" #. module: account_loan -#: code:addons/account_loan/wizard/account_loan_post.py:0 +#. odoo-python +#: code:addons/account_loan/wizards/account_loan_post.py:0 #, python-format msgid "Only loans in draft state can be posted" msgstr "" #. module: account_loan #: model:ir.actions.act_window,name:account_loan.account_loan_pay_amount_action -#: model_terms:ir.ui.view,arch_db:account_loan.account_loan_form #: model_terms:ir.ui.view,arch_db:account_loan.account_loan_pay_amount_form #: model_terms:ir.ui.view,arch_db:account_loan.account_loan_post_form msgid "Pay amount" @@ -784,6 +838,7 @@ msgstr "" #. module: account_loan #: model_terms:ir.ui.view,arch_db:account_loan.account_loan_generate_wizard_form +#: model_terms:ir.ui.view,arch_db:account_loan.account_loan_increase_amount_form_view #: model_terms:ir.ui.view,arch_db:account_loan.account_loan_pay_amount_form #: model_terms:ir.ui.view,arch_db:account_loan.account_loan_post_form msgid "Run" @@ -810,37 +865,47 @@ msgid "Short term account" msgstr "" #. module: account_loan -#: code:addons/account_loan/wizard/account_loan_pay_amount.py:0 +#. odoo-python +#: code:addons/account_loan/wizards/account_loan_increase_amount.py:0 +#: code:addons/account_loan/wizards/account_loan_pay_amount.py:0 #, python-format msgid "Some future invoices already exists" msgstr "" #. module: account_loan -#: code:addons/account_loan/wizard/account_loan_pay_amount.py:0 +#. odoo-python +#: code:addons/account_loan/wizards/account_loan_increase_amount.py:0 +#: code:addons/account_loan/wizards/account_loan_pay_amount.py:0 #, python-format msgid "Some future moves already exists" msgstr "" #. module: account_loan -#: code:addons/account_loan/wizard/account_loan_pay_amount.py:0 +#. odoo-python +#: code:addons/account_loan/wizards/account_loan_increase_amount.py:0 +#: code:addons/account_loan/wizards/account_loan_pay_amount.py:0 #, python-format msgid "Some invoices are not created" msgstr "" #. module: account_loan -#: code:addons/account_loan/model/account_loan_line.py:0 +#. odoo-python +#: code:addons/account_loan/models/account_loan_line.py:0 #, python-format msgid "Some invoices must be created first" msgstr "" #. module: account_loan -#: code:addons/account_loan/wizard/account_loan_pay_amount.py:0 +#. odoo-python +#: code:addons/account_loan/wizards/account_loan_increase_amount.py:0 +#: code:addons/account_loan/wizards/account_loan_pay_amount.py:0 #, python-format msgid "Some moves are not created" msgstr "" #. module: account_loan -#: code:addons/account_loan/model/account_loan_line.py:0 +#. odoo-python +#: code:addons/account_loan/models/account_loan_line.py:0 #, python-format msgid "Some moves must be created first" msgstr "" @@ -905,16 +970,6 @@ msgstr "" msgid "Type of the exception activity on record." msgstr "" -#. module: account_loan -#: model:ir.model.fields,field_description:account_loan.field_account_loan__message_unread -msgid "Unread Messages" -msgstr "" - -#. module: account_loan -#: model:ir.model.fields,field_description:account_loan.field_account_loan__message_unread_counter -msgid "Unread Messages Counter" -msgstr "" - #. module: account_loan #: model_terms:ir.ui.view,arch_db:account_loan.account_loan_line_tree msgid "Values" @@ -944,6 +999,7 @@ msgstr "" #. module: account_loan #: model_terms:ir.ui.view,arch_db:account_loan.account_loan_generate_wizard_form +#: model_terms:ir.ui.view,arch_db:account_loan.account_loan_increase_amount_form_view #: model_terms:ir.ui.view,arch_db:account_loan.account_loan_pay_amount_form #: model_terms:ir.ui.view,arch_db:account_loan.account_loan_post_form msgid "or" diff --git a/account_loan/models/account_loan_line.py b/account_loan/models/account_loan_line.py index 47313f624..f54577143 100644 --- a/account_loan/models/account_loan_line.py +++ b/account_loan/models/account_loan_line.py @@ -238,34 +238,38 @@ class AccountLoanLine(models.Model): + self.interests_amount ) - def _move_vals(self): + def _move_vals(self, journal=False, account=False): return { "loan_line_id": self.id, "loan_id": self.loan_id.id, "date": self.date, "ref": self.name, - "journal_id": self.loan_id.journal_id.id, - "line_ids": [Command.create(vals) for vals in self._move_line_vals()], + "journal_id": (journal and journal.id) or self.loan_id.journal_id.id, + "line_ids": [ + Command.create(vals) for vals in self._move_line_vals(account=account) + ], } - def _move_line_vals(self): + def _move_line_vals(self, account=False): vals = [] partner = self.loan_id.partner_id.with_company(self.loan_id.company_id) vals.append( { - "account_id": partner.property_account_payable_id.id, + "account_id": (account and account.id) + or partner.property_account_payable_id.id, "partner_id": partner.id, "credit": self.payment_amount, "debit": 0, } ) - vals.append( - { - "account_id": self.loan_id.interest_expenses_account_id.id, - "credit": 0, - "debit": self.interests_amount, - } - ) + if self.interests_amount: + vals.append( + { + "account_id": self.loan_id.interest_expenses_account_id.id, + "credit": 0, + "debit": self.interests_amount, + } + ) vals.append( { "account_id": self.loan_id.short_term_loan_account_id.id, @@ -326,7 +330,7 @@ class AccountLoanLine(models.Model): ) return vals - def _generate_move(self): + def _generate_move(self, journal=False, account=False): """ Computes and post the moves of loans :return: list of account.move generated @@ -338,7 +342,9 @@ class AccountLoanLine(models.Model): lambda r: r.date < record.date and not r.move_ids ): raise UserError(_("Some moves must be created first")) - move = self.env["account.move"].create(record._move_vals()) + move = self.env["account.move"].create( + record._move_vals(journal=journal, account=account) + ) move.action_post() res.append(move.id) return res @@ -372,6 +378,9 @@ class AccountLoanLine(models.Model): for line in invoice.invoice_line_ids: line.tax_ids = line._get_computed_taxes() invoice.flush_recordset() + invoice.filtered( + lambda m: m.currency_id.round(m.amount_total) < 0 + ).action_switch_invoice_into_refund_credit_note() if record.loan_id.post_invoice: invoice.action_post() if ( diff --git a/account_loan/security/ir.model.access.csv b/account_loan/security/ir.model.access.csv index 4046d3043..1245d7139 100644 --- a/account_loan/security/ir.model.access.csv +++ b/account_loan/security/ir.model.access.csv @@ -5,4 +5,5 @@ access_account_loan_line,account.loan.line,model_account_loan_line,account.group access_account_loan_line_manager,account.loan.line,model_account_loan_line,account.group_account_manager,1,1,1,1 access_account_loan_generate_wizard,access_account_loan_generate_wizard,model_account_loan_generate_wizard,account.group_account_manager,1,1,1,1 access_account_loan_pay_amount,access_account_loan_pay_amount,model_account_loan_pay_amount,account.group_account_manager,1,1,1,1 +access_account_loan_increase_amount,access_account_loan_increase_amount,model_account_loan_increase_amount,account.group_account_manager,1,1,1,1 access_account_loan_post,access_account_loan_post,model_account_loan_post,account.group_account_manager,1,1,1,1 diff --git a/account_loan/static/description/index.html b/account_loan/static/description/index.html index 8571fd9c3..7247a68ff 100644 --- a/account_loan/static/description/index.html +++ b/account_loan/static/description/index.html @@ -1,20 +1,20 @@ - + - + Account Loan management