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

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