mirror of
https://gitlab.com/flectra-community/mis-builder.git
synced 2024-11-16 19:22:04 +00:00
65 lines
2.2 KiB
Python
65 lines
2.2 KiB
Python
# Copyright 2017-2020 ACSONE SA/NV
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
from flectra import _, api, fields, models
|
|
|
|
|
|
class MisBudgetAbstract(models.AbstractModel):
|
|
|
|
_name = "mis.budget.abstract"
|
|
_description = "MIS Budget (Abstract Base Class)"
|
|
_inherit = ["mail.thread"]
|
|
|
|
@api.model
|
|
def _default_company(self):
|
|
return self.env["res.company"]._company_default_get("mis.budget")
|
|
|
|
name = fields.Char(required=True, track_visibility="onchange")
|
|
description = fields.Char(track_visibility="onchange")
|
|
date_range_id = fields.Many2one(comodel_name="date.range", string="Date range")
|
|
date_from = fields.Date(required=True, string="From", track_visibility="onchange")
|
|
date_to = fields.Date(required=True, string="To", track_visibility="onchange")
|
|
state = fields.Selection(
|
|
[("draft", "Draft"), ("confirmed", "Confirmed"), ("cancelled", "Cancelled")],
|
|
required=True,
|
|
default="draft",
|
|
track_visibility="onchange",
|
|
)
|
|
company_id = fields.Many2one(
|
|
comodel_name="res.company", string="Company", default=_default_company
|
|
)
|
|
|
|
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(MisBudgetAbstract, 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):
|
|
self.write({"state": "draft"})
|
|
|
|
def action_cancel(self):
|
|
self.write({"state": "cancelled"})
|
|
|
|
def action_confirm(self):
|
|
self.write({"state": "confirmed"})
|