Skip to content

Commit 80f4834

Browse files
committed
Merge PR #1378 into 16.0
Signed-off-by simahawk
2 parents fd0fd84 + 18daa31 commit 80f4834

21 files changed

+1273
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../../stock_partner_delivery_window
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import setuptools
2+
3+
setuptools.setup(
4+
setup_requires=['setuptools-odoo'],
5+
odoo_addon=True,
6+
)
+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
=============================
2+
Stock Partner Delivery Window
3+
=============================
4+
5+
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
6+
!! This file is generated by oca-gen-addon-readme !!
7+
!! changes will be overwritten. !!
8+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
9+
10+
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
11+
:target: https://odoo-community.org/page/development-status
12+
:alt: Beta
13+
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
14+
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
15+
:alt: License: AGPL-3
16+
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstock--logistics--workflow-lightgray.png?logo=github
17+
:target: https://github.com/OCA/stock-logistics-workflow/tree/14.0/stock_partner_delivery_window
18+
:alt: OCA/stock-logistics-workflow
19+
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
20+
:target: https://translation.odoo-community.org/projects/stock-logistics-workflow-14-0/stock-logistics-workflow-14-0-stock_partner_delivery_window
21+
:alt: Translate me on Weblate
22+
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
23+
:target: https://runbot.odoo-community.org/runbot/154/14.0
24+
:alt: Try me on Runbot
25+
26+
|badge1| |badge2| |badge3| |badge4| |badge5|
27+
28+
This module allows to define time scheduling preference for delivery orders on
29+
partners, in order to raise a warning when changing a scheduled date to a time
30+
window that is not preferred by this customer.
31+
32+
**Table of contents**
33+
34+
.. contents::
35+
:local:
36+
37+
Configuration
38+
=============
39+
40+
On partners form view, under the "Sales & Purchases" tab, one can define a
41+
"Delivery schedule preference" for each partner.
42+
43+
Possible configurations are:
44+
45+
* Any time: Do not postpone deliveries
46+
* Fixed time windows: Postpone deliveries to the next preferred time window
47+
* Weekdays: Postpone deliveries to the next weekday
48+
49+
After selecting "Fixed time windows", one can define the preferred delivery
50+
windows in the embedded tree view below.
51+
52+
Bug Tracker
53+
===========
54+
55+
Bugs are tracked on `GitHub Issues <https://github.com/OCA/stock-logistics-workflow/issues>`_.
56+
In case of trouble, please check there if your issue has already been reported.
57+
If you spotted it first, help us smashing it by providing a detailed and welcomed
58+
`feedback <https://github.com/OCA/stock-logistics-workflow/issues/new?body=module:%20stock_partner_delivery_window%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
59+
60+
Do not contact contributors directly about support or help with technical issues.
61+
62+
Credits
63+
=======
64+
65+
Authors
66+
~~~~~~~
67+
68+
* Camptocamp
69+
* ACSONE SA/NV
70+
71+
Contributors
72+
~~~~~~~~~~~~
73+
74+
* Akim Juillerat <[email protected]>
75+
* Matthieu Méquignon <[email protected]>
76+
77+
Trobz
78+
79+
* Dung Tran <[email protected]>
80+
81+
Other credits
82+
~~~~~~~~~~~~~
83+
84+
The development of this module has been financially supported by:
85+
86+
* Camptocamp
87+
88+
Maintainers
89+
~~~~~~~~~~~
90+
91+
This module is maintained by the OCA.
92+
93+
.. image:: https://odoo-community.org/logo.png
94+
:alt: Odoo Community Association
95+
:target: https://odoo-community.org
96+
97+
OCA, or the Odoo Community Association, is a nonprofit organization whose
98+
mission is to support the collaborative development of Odoo features and
99+
promote its widespread use.
100+
101+
This module is part of the `OCA/stock-logistics-workflow <https://github.com/OCA/stock-logistics-workflow/tree/14.0/stock_partner_delivery_window>`_ project on GitHub.
102+
103+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import models
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Copyright 2020 Camptocamp SA
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
3+
{
4+
"name": "Stock Partner Delivery Window",
5+
"summary": "Define preferred delivery time windows for partners",
6+
"version": "16.0.1.0.0",
7+
"category": "Inventory",
8+
"author": "Camptocamp, ACSONE SA/NV, Odoo Community Association (OCA)",
9+
"license": "AGPL-3",
10+
"website": "https://github.com/OCA/stock-logistics-workflow",
11+
"depends": ["base_time_window", "partner_tz", "stock"],
12+
"data": ["security/ir.model.access.csv", "views/res_partner.xml"],
13+
"demo": ["demo/delivery_time_window.xml"],
14+
"installable": True,
15+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<odoo>
3+
<record id="demo_partner_delivery_window_1" model="partner.delivery.time.window">
4+
<field name="partner_id" ref="base.res_partner_1" />
5+
<field name="time_window_start">10.0</field>
6+
<field name="time_window_end">18.0</field>
7+
<field
8+
name="time_window_weekday_ids"
9+
eval="[(4, ref('base_time_window.time_weekday_monday'))]"
10+
/>
11+
</record>
12+
<record id="base.res_partner_1" model="res.partner">
13+
<field name="delivery_time_preference">time_windows</field>
14+
</record>
15+
</odoo>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
# Translation of Odoo Server.
2+
# This file contains the translation of the following modules:
3+
# * stock_partner_delivery_window
4+
#
5+
msgid ""
6+
msgstr ""
7+
"Project-Id-Version: Odoo Server 16.0\n"
8+
"Report-Msgid-Bugs-To: \n"
9+
"POT-Creation-Date: 2023-09-14 09:01+0000\n"
10+
"PO-Revision-Date: 2023-09-14 09:01+0000\n"
11+
"Last-Translator: \n"
12+
"Language-Team: \n"
13+
"MIME-Version: 1.0\n"
14+
"Content-Type: text/plain; charset=UTF-8\n"
15+
"Content-Transfer-Encoding: \n"
16+
"Plural-Forms: \n"
17+
18+
#. module: stock_partner_delivery_window
19+
#: code:addons/stock_partner_delivery_window/models/res_partner.py:0
20+
#, python-format
21+
msgid "{}: {}"
22+
msgstr ""
23+
24+
#. module: stock_partner_delivery_window
25+
#: model:ir.model.fields.selection,name:stock_partner_delivery_window.selection__res_partner__delivery_time_preference__anytime
26+
msgid "Any time"
27+
msgstr ""
28+
29+
#. module: stock_partner_delivery_window
30+
#: model:ir.model,name:stock_partner_delivery_window.model_res_partner
31+
msgid "Contact"
32+
msgstr ""
33+
34+
#. module: stock_partner_delivery_window
35+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_partner_delivery_time_window__create_uid
36+
msgid "Created by"
37+
msgstr ""
38+
39+
#. module: stock_partner_delivery_window
40+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_partner_delivery_time_window__create_date
41+
msgid "Created on"
42+
msgstr ""
43+
44+
#. module: stock_partner_delivery_window
45+
#: model:ir.model.fields,help:stock_partner_delivery_window.field_res_partner__delivery_time_preference
46+
#: model:ir.model.fields,help:stock_partner_delivery_window.field_res_users__delivery_time_preference
47+
msgid ""
48+
"Define the scheduling preference for delivery orders:\n"
49+
"\n"
50+
"* Any time: Do not postpone deliveries\n"
51+
"* Fixed time windows: Postpone deliveries to the next preferred time window\n"
52+
"* Weekdays: Postpone deliveries to the next weekday"
53+
msgstr ""
54+
55+
#. module: stock_partner_delivery_window
56+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_res_partner__delivery_time_preference
57+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_res_users__delivery_time_preference
58+
msgid "Delivery time schedule preference"
59+
msgstr ""
60+
61+
#. module: stock_partner_delivery_window
62+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_res_partner__delivery_time_window_ids
63+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_res_users__delivery_time_window_ids
64+
msgid "Delivery time windows"
65+
msgstr ""
66+
67+
#. module: stock_partner_delivery_window
68+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_partner_delivery_time_window__display_name
69+
msgid "Display Name"
70+
msgstr ""
71+
72+
#. module: stock_partner_delivery_window
73+
#: model:ir.model.fields.selection,name:stock_partner_delivery_window.selection__res_partner__delivery_time_preference__time_windows
74+
msgid "Fixed time windows"
75+
msgstr ""
76+
77+
#. module: stock_partner_delivery_window
78+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_partner_delivery_time_window__time_window_start
79+
msgid "From"
80+
msgstr ""
81+
82+
#. module: stock_partner_delivery_window
83+
#: code:addons/stock_partner_delivery_window/models/res_partner.py:0
84+
#, python-format
85+
msgid "From {} to {}"
86+
msgstr ""
87+
88+
#. module: stock_partner_delivery_window
89+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_partner_delivery_time_window__id
90+
msgid "ID"
91+
msgstr ""
92+
93+
#. module: stock_partner_delivery_window
94+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_partner_delivery_time_window____last_update
95+
msgid "Last Modified on"
96+
msgstr ""
97+
98+
#. module: stock_partner_delivery_window
99+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_partner_delivery_time_window__write_uid
100+
msgid "Last Updated by"
101+
msgstr ""
102+
103+
#. module: stock_partner_delivery_window
104+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_partner_delivery_time_window__write_date
105+
msgid "Last Updated on"
106+
msgstr ""
107+
108+
#. module: stock_partner_delivery_window
109+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_partner_delivery_time_window__partner_id
110+
msgid "Partner"
111+
msgstr ""
112+
113+
#. module: stock_partner_delivery_window
114+
#. odoo-python
115+
#: code:addons/stock_partner_delivery_window/models/res_partner.py:0
116+
#, python-format
117+
msgid ""
118+
"Please define at least one delivery time window or change preference to Any "
119+
"time"
120+
msgstr ""
121+
122+
#. module: stock_partner_delivery_window
123+
#: model:ir.model,name:stock_partner_delivery_window.model_partner_delivery_time_window
124+
msgid "Preferred delivery time windows"
125+
msgstr ""
126+
127+
#. module: stock_partner_delivery_window
128+
#. odoo-python
129+
#: code:addons/stock_partner_delivery_window/models/stock_picking.py:0
130+
#, python-format
131+
msgid "Scheduled date does not match partner's Delivery window preference."
132+
msgstr ""
133+
134+
#. module: stock_partner_delivery_window
135+
#. odoo-python
136+
#: code:addons/stock_partner_delivery_window/models/stock_picking.py:0
137+
#, python-format
138+
msgid ""
139+
"The scheduled date is {date} ({tz}), but the partner is set to prefer deliveries on following time windows:\n"
140+
"{window}"
141+
msgstr ""
142+
143+
#. module: stock_partner_delivery_window
144+
#. odoo-python
145+
#: code:addons/stock_partner_delivery_window/models/stock_picking.py:0
146+
#, python-format
147+
msgid ""
148+
"The scheduled date is {} ({}), but the partner is set to prefer deliveries "
149+
"on working days."
150+
msgstr ""
151+
152+
#. module: stock_partner_delivery_window
153+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_partner_delivery_time_window__time_window_weekday_ids
154+
msgid "Time Window Weekday"
155+
msgstr ""
156+
157+
#. module: stock_partner_delivery_window
158+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_partner_delivery_time_window__tz
159+
msgid "Timezone"
160+
msgstr ""
161+
162+
#. module: stock_partner_delivery_window
163+
#: model:ir.model.fields,field_description:stock_partner_delivery_window.field_partner_delivery_time_window__time_window_end
164+
msgid "To"
165+
msgstr ""
166+
167+
#. module: stock_partner_delivery_window
168+
#: model:ir.model,name:stock_partner_delivery_window.model_stock_picking
169+
msgid "Transfer"
170+
msgstr ""
171+
172+
#. module: stock_partner_delivery_window
173+
#: model:ir.model.fields.selection,name:stock_partner_delivery_window.selection__res_partner__delivery_time_preference__workdays
174+
msgid "Weekdays (Monday to Friday)"
175+
msgstr ""
176+
177+
#. module: stock_partner_delivery_window
178+
#: model:ir.model.fields,help:stock_partner_delivery_window.field_partner_delivery_time_window__tz
179+
msgid ""
180+
"When printing documents and exporting/importing data, time values are computed according to this timezone.\n"
181+
"If the timezone is not set, UTC (Coordinated Universal Time) is used.\n"
182+
"Anywhere else, time values are computed according to the time offset of your web client."
183+
msgstr ""
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from . import delivery_time_window
2+
from . import res_partner
3+
from . import stock_picking
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Copyright 2020 Camptocamp SA
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
3+
4+
from odoo import api, fields, models
5+
6+
7+
class DeliveryTimeWindow(models.Model):
8+
_name = "partner.delivery.time.window"
9+
_inherit = "time.window.mixin"
10+
_description = "Preferred delivery time windows"
11+
_time_window_overlap_check_field = "partner_id"
12+
13+
partner_id = fields.Many2one(
14+
"res.partner", required=True, index=True, ondelete="cascade"
15+
)
16+
tz = fields.Selection(related="partner_id.tz", readonly=True)
17+
18+
@api.constrains("partner_id")
19+
def check_window_no_overlaps(self):
20+
return super().check_window_no_overlaps()

0 commit comments

Comments
 (0)