Initial commit: Odoo 18.0-20251222 extra-addons
This commit is contained in:
2
test_base_time_window/models/__init__.py
Executable file
2
test_base_time_window/models/__init__.py
Executable file
@@ -0,0 +1,2 @@
|
||||
from . import partner_time_window
|
||||
from . import res_partner
|
||||
18
test_base_time_window/models/partner_time_window.py
Executable file
18
test_base_time_window/models/partner_time_window.py
Executable file
@@ -0,0 +1,18 @@
|
||||
# Copyright 2020 ACSONE SA/NV
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class TestPartnerTimeWindow(models.Model):
|
||||
_name = "test.partner.time.window"
|
||||
_inherit = "time.window.mixin"
|
||||
_description = "Test partner time Window"
|
||||
_time_window_overlap_check_field = "partner_id"
|
||||
|
||||
partner_id = fields.Many2one(
|
||||
"res.partner", required=True, index=True, ondelete="cascade"
|
||||
)
|
||||
|
||||
@api.constrains("partner_id")
|
||||
def check_window_no_overlaps(self):
|
||||
return super().check_window_no_overlaps()
|
||||
35
test_base_time_window/models/res_partner.py
Executable file
35
test_base_time_window/models/res_partner.py
Executable file
@@ -0,0 +1,35 @@
|
||||
# Copyright 2020 ACSONE SA/NV
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from collections import defaultdict
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class ResPartner(models.Model):
|
||||
_inherit = "res.partner"
|
||||
|
||||
time_window_ids = fields.One2many(
|
||||
comodel_name="test.partner.time.window",
|
||||
inverse_name="partner_id",
|
||||
string="Time windows",
|
||||
)
|
||||
|
||||
def get_delivery_windows(self, day_name):
|
||||
"""
|
||||
Return the list of delivery windows by partner id for the given day
|
||||
|
||||
:param day: The day name (see time.weekday, ex: 0,1,2,...)
|
||||
:return: dict partner_id:[time_window_ids, ]
|
||||
"""
|
||||
weekday_id = self.env["time.weekday"]._get_id_by_name(day_name)
|
||||
res = defaultdict(list)
|
||||
windows = self.env["test.partner.time.window"].search(
|
||||
[
|
||||
("partner_id", "in", self.ids),
|
||||
("time_window_weekday_ids", "in", weekday_id),
|
||||
]
|
||||
)
|
||||
for window in windows:
|
||||
res[window.partner_id.id].append(window)
|
||||
return res
|
||||
Reference in New Issue
Block a user