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
+