You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

51 lines
1.7 KiB

# Copyright 2020 Coop IT Easy SCRL fs
# Houssine BAKKALI <houssine@coopiteasy.be>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
from odoo.exceptions import UserError
class LoanEndOfYearOperation(models.TransientModel):
_name = "loan.end.of.year.operation"
operation_type = fields.Selection(
[("eoy_debt", "End of year debt operation"),
("eoy_interest", "End of year interest operation")],
required=True,
string="Operation type"
)
ongoing_fy_id = fields.Many2one(
comodel_name="account.fiscal.year",
string="Ongoing fiscal year",
required=True
)
@api.multi
def run(self):
afy_obj = self.env["account.fiscal.year"]
interest_line_obj = self.env["loan.interest.line"]
loan_issues = self.env["loan.issue"].browse(
self._context.get("active_ids")
)
last_fy_day = self.ongoing_fy_id.date_to
next_fy = afy_obj.get_next_fiscal_year(last_fy_day)
if self.operation_type == "eoy_debt":
if next_fy:
interest_lines = interest_line_obj.search([
('due_date', '>=', next_fy.date_from),
('due_date', '<=', next_fy.date_to),
('due_loan_amount', '>', 0),
("loan_issue_id", "in", loan_issues.ids)
])
if interest_lines:
interest_lines.generate_loan_due_fy(last_fy_day)
else:
raise UserError("There is no account move lines to"
" generate for the selected loan issue")
elif self.operation_type == "eoy_interest":
print()