Initial commit: Odoo 18.0-20251222 extra-addons
This commit is contained in:
8
base_time_window/readme/CONTRIBUTORS.md
Executable file
8
base_time_window/readme/CONTRIBUTORS.md
Executable file
@@ -0,0 +1,8 @@
|
||||
- Laurent Mignon \<<laurent.mignon@acsone.eu>\>
|
||||
- Akim Juillerat \<<akim.juillerat@camptocamp.com>\>
|
||||
- SodexisTeam \<<dev@sodexis.com>\>
|
||||
|
||||
Trobz
|
||||
|
||||
- Dung Tran \<<dungtd@trobz.com>\>
|
||||
- Khoi (Kien Kim) \<<khoikk@trobz.com>\>
|
||||
7
base_time_window/readme/CREDITS.md
Executable file
7
base_time_window/readme/CREDITS.md
Executable file
@@ -0,0 +1,7 @@
|
||||
The development of this module has been financially supported by:
|
||||
|
||||
- Camptocamp
|
||||
|
||||
The migration of this module from 17.0 to 18.0 was financially supported by:
|
||||
|
||||
- Camptocamp
|
||||
2
base_time_window/readme/DESCRIPTION.md
Executable file
2
base_time_window/readme/DESCRIPTION.md
Executable file
@@ -0,0 +1,2 @@
|
||||
This module provides base classes and models to manage time windows
|
||||
through time.window.mixin.
|
||||
13
base_time_window/readme/ROADMAP.md
Executable file
13
base_time_window/readme/ROADMAP.md
Executable file
@@ -0,0 +1,13 @@
|
||||
- Storing times using float_time widget requires extra processing to
|
||||
ensure computations are done in the right timezone, because the value
|
||||
is not stored as UTC in the database, and must therefore be related to
|
||||
a tz field.
|
||||
|
||||
float_time in this sense should only be used for durations and not for
|
||||
a "point in time" as this is always needs a Date for a timezone
|
||||
conversion to be done properly. (Because a conversion from UTC to e.g.
|
||||
Europe/Brussels won't give the same result in winter or summer because
|
||||
of Daylight Saving Time).
|
||||
|
||||
Therefore the right move would be to use a resource.calendar to define
|
||||
time windows using Datetime with recurrences.
|
||||
30
base_time_window/readme/USAGE.md
Executable file
30
base_time_window/readme/USAGE.md
Executable file
@@ -0,0 +1,30 @@
|
||||
Example implementation for the mixin can be found in module
|
||||
test_base_time_window.
|
||||
|
||||
As a time window will always be linked to a related model thourgh a M2o
|
||||
relation, when defining the new model inheriting the mixin, one should
|
||||
pay attention to the following points in order to have the overlapping
|
||||
check work properly:
|
||||
|
||||
- Define class property \`\_overlap_check_field\`: This must state the
|
||||
M2o field to use for the to check of overlapping time window records
|
||||
linked to a specific record of the related model.
|
||||
- Add the M2o field to the related model in the \`api.constrains\`:
|
||||
|
||||
For example:
|
||||
|
||||
``` python
|
||||
class PartnerTimeWindow(models.Model):
|
||||
_name = 'partner.time.window'
|
||||
_inherit = 'time.window.mixin'
|
||||
|
||||
partner_id = fields.Many2one(
|
||||
res.partner', required=True, index=True, ondelete='cascade'
|
||||
)
|
||||
|
||||
_overlap_check_field = 'partner_id'
|
||||
|
||||
@api.constrains('partner_id')
|
||||
def check_window_no_overlaps(self):
|
||||
return super().check_window_no_overlaps()
|
||||
```
|
||||
Reference in New Issue
Block a user