83 lines
2.4 KiB
Python
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"
|