diff --git a/account_loan/__manifest__.py b/account_loan/__manifest__.py index 453bfa14..b8929c2c 100644 --- a/account_loan/__manifest__.py +++ b/account_loan/__manifest__.py @@ -2,7 +2,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { "name": "Account Loan management", - "version": "13.0.1.1.0", + "version": "14.0.1.0.0", "author": "Creu Blanca,Odoo Community Association (OCA)", "website": "https://github.com/OCA/account-financial-tools", "license": "AGPL-3", diff --git a/account_loan/migrations/13.0.1.1.0/post-migration.py b/account_loan/migrations/13.0.1.1.0/post-migration.py deleted file mode 100644 index 0854e860..00000000 --- a/account_loan/migrations/13.0.1.1.0/post-migration.py +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2021 Creu Blanca - Alba Riera - -from openupgradelib import openupgrade - - -@openupgrade.migrate() -def migrate(env, version): - openupgrade.logged_query( - env.cr, - """ - UPDATE account_move am - SET loan_line_id = ai.loan_line_id, - loan_id = ai.loan_id - FROM account_invoice ai - WHERE ai.id = am.old_invoice_id and ai.loan_id is not null""", - ) diff --git a/account_loan/model/account_loan.py b/account_loan/model/account_loan.py index 6917549d..fac4002a 100644 --- a/account_loan/model/account_loan.py +++ b/account_loan/model/account_loan.py @@ -22,10 +22,7 @@ class AccountLoan(models.Model): _inherit = ["mail.thread", "mail.activity.mixin"] def _default_company(self): - force_company = self._context.get("force_company") - if not force_company: - return self.env.user.company_id.id - return force_company + return self.env.company name = fields.Char( copy=False, @@ -61,7 +58,10 @@ class AccountLoan(models.Model): default="draft", ) line_ids = fields.One2many( - "account.loan.line", readonly=True, inverse_name="loan_id", copy=False, + "account.loan.line", + readonly=True, + inverse_name="loan_id", + copy=False, ) periods = fields.Integer( required=True, @@ -88,7 +88,7 @@ class AccountLoan(models.Model): default=0.0, digits=(8, 6), help="Currently applied rate", - track_visibility="always", + tracking=True, ) rate_period = fields.Float( compute="_compute_rate_period", @@ -117,12 +117,20 @@ class AccountLoan(models.Model): default="fixed-annuity", ) fixed_amount = fields.Monetary( - currency_field="currency_id", compute="_compute_fixed_amount", + currency_field="currency_id", + compute="_compute_fixed_amount", ) fixed_loan_amount = fields.Monetary( - currency_field="currency_id", readonly=True, copy=False, default=0, + currency_field="currency_id", + readonly=True, + copy=False, + default=0, + ) + fixed_periods = fields.Integer( + readonly=True, + copy=False, + default=0, ) - fixed_periods = fields.Integer(readonly=True, copy=False, default=0,) loan_amount = fields.Monetary( currency_field="currency_id", required=True, @@ -153,7 +161,9 @@ class AccountLoan(models.Model): help="When checked, the first payment will be on start date", ) currency_id = fields.Many2one( - "res.currency", compute="_compute_currency", readonly=True, + "res.currency", + compute="_compute_currency", + readonly=True, ) journal_type = fields.Char(compute="_compute_journal_type") journal_id = fields.Many2one( @@ -190,7 +200,9 @@ class AccountLoan(models.Model): states={"draft": [("readonly", False)]}, ) is_leasing = fields.Boolean( - default=False, readonly=True, states={"draft": [("readonly", False)]}, + default=False, + readonly=True, + states={"draft": [("readonly", False)]}, ) leased_asset_account_id = fields.Many2one( "account.account", @@ -212,7 +224,8 @@ class AccountLoan(models.Model): ) move_ids = fields.One2many("account.move", copy=False, inverse_name="loan_id") pending_principal_amount = fields.Monetary( - currency_field="currency_id", compute="_compute_total_amounts", + currency_field="currency_id", + compute="_compute_total_amounts", ) payment_amount = fields.Monetary( currency_field="currency_id", @@ -438,7 +451,7 @@ class AccountLoan(models.Model): self.ensure_one() action = self.env.ref("account.action_move_out_invoice_type") result = action.read()[0] - result["domain"] = [("loan_id", "=", self.id), ("type", "=", "in_invoice")] + result["domain"] = [("loan_id", "=", self.id), ("move_type", "=", "in_invoice")] return result @api.model diff --git a/account_loan/model/account_loan_line.py b/account_loan/model/account_loan_line.py index 075340a3..9fde711f 100644 --- a/account_loan/model/account_loan_line.py +++ b/account_loan/model/account_loan_line.py @@ -20,38 +20,44 @@ class AccountLoanLine(models.Model): name = fields.Char(compute="_compute_name") loan_id = fields.Many2one( - "account.loan", required=True, readonly=True, ondelete="cascade", + "account.loan", + required=True, + readonly=True, + ondelete="cascade", + ) + is_leasing = fields.Boolean( + related="loan_id.is_leasing", + readonly=True, ) - is_leasing = fields.Boolean(related="loan_id.is_leasing", readonly=True,) loan_type = fields.Selection( - [ - ("fixed-annuity", "Fixed Annuity"), - ("fixed-principal", "Fixed Principal"), - ("interest", "Only interest"), - ], related="loan_id.loan_type", readonly=True, ) loan_state = fields.Selection( - [ - ("draft", "Draft"), - ("posted", "Posted"), - ("cancelled", "Cancelled"), - ("closed", "Closed"), - ], related="loan_id.state", readonly=True, store=True, ) sequence = fields.Integer(required=True, readonly=True) date = fields.Date( - required=True, readonly=True, help="Date when the payment will be accounted", + required=True, + readonly=True, + help="Date when the payment will be accounted", ) long_term_loan_account_id = fields.Many2one( - "account.account", readony=True, related="loan_id.long_term_loan_account_id", + "account.account", + readonly=True, + related="loan_id.long_term_loan_account_id", + ) + currency_id = fields.Many2one( + "res.currency", + related="loan_id.currency_id", + ) + rate = fields.Float( + required=True, + readonly=True, + digits=(8, 6), ) - currency_id = fields.Many2one("res.currency", related="loan_id.currency_id",) - rate = fields.Float(required=True, readonly=True, digits=(8, 6),) pending_principal_amount = fields.Monetary( currency_field="currency_id", readonly=True, @@ -88,7 +94,10 @@ class AccountLoanLine(models.Model): compute="_compute_amounts", help="Pending amount of the loan after the payment", ) - move_ids = fields.One2many("account.move", inverse_name="loan_line_id",) + move_ids = fields.One2many( + "account.move", + inverse_name="loan_line_id", + ) has_moves = fields.Boolean(compute="_compute_has_moves") has_invoices = fields.Boolean(compute="_compute_has_invoices") _sql_constraints = [ @@ -241,9 +250,7 @@ class AccountLoanLine(models.Model): def move_line_vals(self): vals = [] - partner = self.loan_id.partner_id.with_context( - force_company=self.loan_id.company_id.id - ) + partner = self.loan_id.partner_id.with_company(self.loan_id.company_id) vals.append( { "account_id": partner.property_account_payable_id.id, @@ -287,7 +294,7 @@ class AccountLoanLine(models.Model): return { "loan_line_id": self.id, "loan_id": self.loan_id.id, - "type": "in_invoice", + "move_type": "in_invoice", "partner_id": self.loan_id.partner_id.id, "invoice_date": self.date, "journal_id": self.loan_id.journal_id.id, @@ -426,7 +433,10 @@ class AccountLoanLine(models.Model): "default_loan_line_id": self.id, "default_loan_id": self.loan_id.id, } - result["domain"] = [("loan_line_id", "=", self.id), ("type", "=", "in_invoice")] + result["domain"] = [ + ("loan_line_id", "=", self.id), + ("move_type", "=", "in_invoice"), + ] if len(self.move_ids) == 1: res = self.env.ref("account.view_move_form", False) result["views"] = [(res and res.id or False, "form")] diff --git a/account_loan/model/account_move.py b/account_loan/model/account_move.py index 1691397f..ff8825f6 100644 --- a/account_loan/model/account_move.py +++ b/account_loan/model/account_move.py @@ -8,10 +8,15 @@ class AccountMove(models.Model): _inherit = "account.move" loan_line_id = fields.Many2one( - "account.loan.line", readonly=True, ondelete="restrict", + "account.loan.line", + readonly=True, + ondelete="restrict", ) loan_id = fields.Many2one( - "account.loan", readonly=True, store=True, ondelete="restrict", + "account.loan", + readonly=True, + store=True, + ondelete="restrict", ) def post(self): diff --git a/account_loan/security/ir.model.access.csv b/account_loan/security/ir.model.access.csv index 6c36ece8..8d573163 100644 --- a/account_loan/security/ir.model.access.csv +++ b/account_loan/security/ir.model.access.csv @@ -3,3 +3,6 @@ access_account_loan,account.loan,model_account_loan,account.group_account_user,1 access_account_loan_manager,account.loan,model_account_loan,account.group_account_manager,1,1,1,1 access_account_loan_line,account.loan.line,model_account_loan_line,account.group_account_user,1,0,0,0 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_user,1,0,0,0 +access_account_loan_pay_amount,access_account_loan_pay_amount,model_account_loan_pay_amount,account.group_account_user,1,0,0,0 +access_account_loan_post,access_account_loan_post,model_account_loan_post,account.group_account_user,1,0,0,0 diff --git a/account_loan/views/account_loan_view.xml b/account_loan/views/account_loan_view.xml index 8ff0758f..9723798b 100644 --- a/account_loan/views/account_loan_view.xml +++ b/account_loan/views/account_loan_view.xml @@ -215,7 +215,10 @@ - + + Loans + account.loan + account.move - +