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.
137 lines
4.0 KiB
137 lines
4.0 KiB
import logging
|
|
from datetime import datetime, timedelta
|
|
|
|
from odoo import _, api, fields, models
|
|
from odoo.exceptions import UserError, ValidationError
|
|
|
|
|
|
class ResPartner(models.Model):
|
|
"""
|
|
One2many relationship with CooperativeStatus should
|
|
be replaced by inheritance.
|
|
"""
|
|
|
|
_inherit = "res.partner"
|
|
|
|
worker_store = fields.Boolean(default=False)
|
|
is_worker = fields.Boolean(
|
|
related="worker_store", string="Worker", readonly=False
|
|
)
|
|
can_shop = fields.Boolean(
|
|
string="Is worker allowed to shop?",
|
|
compute="_compute_can_shop",
|
|
store=True,
|
|
)
|
|
cooperative_status_ids = fields.One2many(
|
|
"cooperative.status", "cooperator_id", readonly=True
|
|
)
|
|
super = fields.Boolean(
|
|
related="cooperative_status_ids.super",
|
|
string="Super Cooperative",
|
|
readonly=True,
|
|
store=True,
|
|
)
|
|
info_session = fields.Boolean(
|
|
related="cooperative_status_ids.info_session",
|
|
string="Information Session ?",
|
|
readonly=True,
|
|
store=True,
|
|
)
|
|
info_session_date = fields.Date(
|
|
related="cooperative_status_ids.info_session_date",
|
|
string="Information Session Date",
|
|
readonly=True,
|
|
store=True,
|
|
)
|
|
working_mode = fields.Selection(
|
|
related="cooperative_status_ids.working_mode",
|
|
readonly=True,
|
|
store=True,
|
|
)
|
|
exempt_reason_id = fields.Many2one(
|
|
related="cooperative_status_ids.exempt_reason_id",
|
|
readonly=True,
|
|
store=True,
|
|
)
|
|
state = fields.Selection(
|
|
related="cooperative_status_ids.status", readonly=True, store=True
|
|
)
|
|
extension_start_time = fields.Date(
|
|
related="cooperative_status_ids.extension_start_time",
|
|
string="Extension Start Day",
|
|
readonly=True,
|
|
store=True,
|
|
)
|
|
subscribed_shift_ids = fields.Many2many("beesdoo.shift.template")
|
|
|
|
@api.depends("cooperative_status_ids")
|
|
def _compute_can_shop(self):
|
|
"""
|
|
Shopping authorisation may vary on the can_shop status of the
|
|
cooperative.status but also other parameters.
|
|
Overwrite this function to change the default behavior.
|
|
"""
|
|
for rec in self:
|
|
if rec.cooperative_status_ids:
|
|
rec.can_shop = rec.cooperative_status_ids.can_shop
|
|
else:
|
|
rec.can_shop = True
|
|
|
|
@api.multi
|
|
def coop_subscribe(self):
|
|
return {
|
|
"name": _("Subscribe Cooperator"),
|
|
"type": "ir.actions.act_window",
|
|
"view_type": "form",
|
|
"view_mode": "form",
|
|
"res_model": "beesdoo.shift.subscribe",
|
|
"target": "new",
|
|
}
|
|
|
|
@api.multi
|
|
def coop_unsubscribe(self):
|
|
res = self.coop_subscribe()
|
|
res["context"] = {"default_unsubscribed": True}
|
|
return res
|
|
|
|
@api.multi
|
|
def manual_extension(self):
|
|
return {
|
|
"name": _("Manual Extension"),
|
|
"type": "ir.actions.act_window",
|
|
"view_type": "form",
|
|
"view_mode": "form",
|
|
"res_model": "beesdoo.shift.extension",
|
|
"target": "new",
|
|
}
|
|
|
|
@api.multi
|
|
def auto_extension(self):
|
|
res = self.manual_extension()
|
|
res["context"] = {"default_auto": True}
|
|
res["name"] = _("Trigger Grace Delay")
|
|
return res
|
|
|
|
@api.multi
|
|
def register_holiday(self):
|
|
return {
|
|
"name": _("Register Holiday"),
|
|
"type": "ir.actions.act_window",
|
|
"view_type": "form",
|
|
"view_mode": "form",
|
|
"res_model": "beesdoo.shift.holiday",
|
|
"target": "new",
|
|
}
|
|
|
|
@api.multi
|
|
def temporary_exempt(self):
|
|
return {
|
|
"name": _("Temporary Exemption"),
|
|
"type": "ir.actions.act_window",
|
|
"view_type": "form",
|
|
"view_mode": "form",
|
|
"res_model": "beesdoo.shift.temporary_exemption",
|
|
"target": "new",
|
|
}
|
|
|
|
# TODO access right + vue on res.partner
|