2
0
account-financial-tools/account_move_budget/models/account_move_budget.py

83 lines
2.4 KiB
Python

# Copyright 2019 ACSONE SA/NV
# Copyright 2019 ForgeFlow S.L. (http://www.forgeflow.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models
class AccountMoveBudget(models.Model):
_name = "account.move.budget"
_description = "Account Move Budget"
_inherit = ["mail.thread", "mail.activity.mixin"]
name = fields.Char(
required=True,
tracking=True,
)
description = fields.Char(
tracking=True,
)
date_range_id = fields.Many2one(comodel_name="date.range", string="Date range")
date_from = fields.Date(
required=True,
string="From Date",
tracking=True,
)
date_to = fields.Date(
required=True,
string="To Date",
tracking=True,
)
state = fields.Selection(
[("draft", "Draft"), ("confirmed", "Confirmed"), ("cancelled", "Cancelled")],
required=True,
default="draft",
tracking=True,
)
line_ids = fields.One2many(
comodel_name="account.move.budget.line", inverse_name="budget_id", copy=True
)
company_id = fields.Many2one(
comodel_name="res.company",
string="Company",
default=lambda self: self.env.company,
)
@api.returns("self", lambda value: value.id)
def copy(self, default=None):
self.ensure_one()
if default is None:
default = {}
if "name" not in default:
default["name"] = _("%s (copy)") % self.name
return super(AccountMoveBudget, self).copy(default=default)
@api.onchange("date_range_id")
def _onchange_date_range(self):
for rec in self:
if rec.date_range_id:
rec.date_from = rec.date_range_id.date_start
rec.date_to = rec.date_range_id.date_end
@api.onchange("date_from", "date_to")
def _onchange_dates(self):
for rec in self:
if rec.date_range_id:
if (
rec.date_from != rec.date_range_id.date_start
or rec.date_to != rec.date_range_id.date_end
):
rec.date_range_id = False
def action_draft(self):
for rec in self:
rec.state = "draft"
def action_cancel(self):
for rec in self:
rec.state = "cancelled"
def action_confirm(self):
for rec in self:
rec.state = "confirmed"