Skip to content

Commit 7d43298

Browse files
MatteoLdxremytms
authored andcommitted
[ADD] beesdoo_shift_swap
1 parent 4beac7b commit 7d43298

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+3751
-0
lines changed

beesdoo_shift_swap/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from . import models
2+
from . import wizard

beesdoo_shift_swap/__manifest__.py

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Copyright 2022 Coop IT Easy SCRLfs
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
3+
4+
{
5+
"name": "Beesdoo Shift Swap",
6+
"summary": """
7+
Module to allow cooperator to swap his/her shift
8+
when he/she can't attend it, to do solidarity
9+
shifts, and to request solidarity if needed.""",
10+
"author": "Coop IT Easy SCRLfs",
11+
"website": "https://github.com/beescoop/Obeesdoo",
12+
"category": "Cooperative Management",
13+
"version": "12.0.1.0.2",
14+
"depends": [
15+
"beesdoo_shift",
16+
],
17+
"data": [
18+
"data/system_parameter.xml",
19+
"security/shift_swap_group.xml",
20+
"security/ir.model.access.csv",
21+
"views/shift_swap.xml",
22+
"views/shift_swap_subscribe.xml",
23+
"views/shift_swap_tmpl_dated.xml",
24+
"views/res_config_setting_view.xml",
25+
"views/shift_swap_proposale.xml",
26+
"views/shift_swap_set.xml",
27+
"views/solidarity_shift_offer.xml",
28+
"views/solidarity_shift_request.xml",
29+
"views/task.xml",
30+
"wizard/exchange_wizard.xml",
31+
"wizard/offer_solidarity.xml",
32+
"wizard/request_solidarity.xml",
33+
"wizard/subscribe_shift_as_solidarity.xml",
34+
"wizard/subscribe_shift_swap.xml",
35+
"wizard/validate_exchange.xml",
36+
"data/mail_template.xml",
37+
],
38+
"demo": [
39+
"demo/demo.xml",
40+
],
41+
"license": "AGPL-3",
42+
}
+174
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
<odoo>
2+
<data>
3+
<!-- Summary Exchange -->
4+
<record id="email_template_exchange_validation" model="mail.template">
5+
<field name="name">Exchange validation</field>
6+
<field
7+
name="model_id"
8+
ref="beesdoo_shift_swap.model_beesdoo_shift_exchange_request"
9+
/>
10+
<field name="auto_delete" eval="False" />
11+
<field name="partner_to">${object.worker_id.id}</field>
12+
<field name="email_cc">
13+
${(object.exchanged_tmpl_dated_id.template_id.super_coop_id or '')}
14+
</field>
15+
<field name="subject">Exchange validation</field>
16+
<field name="body_html">
17+
<![CDATA[
18+
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; ">
19+
Hello ${(object.worker_id.name)},
20+
<br/><br/>
21+
<p>
22+
You shift exchange has been confirmed.
23+
</p>
24+
<p>
25+
Here is a summary of the exchange :
26+
<ul>
27+
<li>
28+
Your old Shift : ${(object.exchanged_tmpl_dated_id.template_id.name)},
29+
${(object.exchanged_tmpl_dated_id.date.date())},
30+
${(object.exchanged_tmpl_dated_id.template_id.task_type_id.name)}
31+
</li>
32+
<li>
33+
Your new Shift : ${(object.validate_request_id.exchanged_tmpl_dated_id.template_id.name)},
34+
${(object.validate_request_id.exchanged_tmpl_dated_id.date.date())},
35+
${(object.validate_request_id.exchanged_tmpl_dated_id.template_id.task_type_id.name)}
36+
</li>
37+
</ul>
38+
</p>
39+
<br/><br/>
40+
Regards,
41+
</div>
42+
]]>
43+
</field>
44+
</record>
45+
46+
<!--Send mail to coop same days of the week same hours-->
47+
<record id="email_template_contact_coop" model="mail.template">
48+
<field name="name">Contact Coop Same days of the week same hours</field>
49+
<field name="model_id" ref="beesdoo_shift_swap.model_res_partner" />
50+
<field name="auto_delete" eval="False" />
51+
<field name="subject">Exchange request</field>
52+
<field name="body_html">
53+
<![CDATA[
54+
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; ">
55+
Hello ${ctx.get('worker_id').name},
56+
<br/><br/>
57+
<p>
58+
A cooperator working on the shift : ${ctx.get('my_tmpl_dated').template_id.name}, ${ctx.get('my_tmpl_dated').date.date()}, ${ctx.get('my_tmpl_dated').template_id.task_type_id.name}<br/>
59+
would like to exchange his shift with yours : ${ctx.get('asked_tmpl_dated').template_id.name}, ${ctx.get('asked_tmpl_dated').date.date()}, ${ctx.get('asked_tmpl_dated').template_id.task_type_id.name}.
60+
</p>
61+
<p>
62+
If you are willing to help by accepting this exchange, please
63+
<a href="/my/shift/swaping/${ctx.get('asked_tmpl_dated').template_id.id}/${ctx.get('asked_tmpl_dated').date.strftime('%Y-%m-%d %H:%M:%S')}?from_mail=1">
64+
click here
65+
</a>.
66+
</p>
67+
<br/><br/>
68+
Regards,
69+
</div>
70+
]]>
71+
</field>
72+
</record>
73+
74+
<!-- Send mail when match -->
75+
<record id="email_template_contact_match_coop" model="mail.template">
76+
<field name="name">Contact Coop When Match</field>
77+
<field
78+
name="model_id"
79+
ref="beesdoo_shift_swap.model_beesdoo_shift_exchange_request"
80+
/>
81+
<field name="auto_delete" eval="False" />
82+
<field name="partner_to">${object.worker_id.id}</field>
83+
<field name="subject">Match with your exchange request !</field>
84+
<field name="body_html">
85+
<![CDATA[
86+
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; ">
87+
Hello ${(object.worker_id.name)},
88+
<br/><br/>
89+
<p>
90+
You asked to exchange your following shift :
91+
${(object.exchanged_tmpl_dated_id.template_id.name)},
92+
${(object.exchanged_tmpl_dated_id.date.date())},
93+
${(object.exchanged_tmpl_dated_id.template_id.task_type_id.name)}
94+
</p>
95+
<p>
96+
Another cooperator offered to exchange it with his/her shift :
97+
${ctx.get('matching_request').exchanged_tmpl_dated_id.template_id.name},
98+
${ctx.get('matching_request').exchanged_tmpl_dated_id.date.date()},
99+
${ctx.get('matching_request').exchanged_tmpl_dated_id.template_id.task_type_id.name}
100+
</p>
101+
<p>
102+
To confirm this match, please <a href="/my/request">click here</a> and validate the exchange.
103+
</p>
104+
<br/><br/>
105+
Regards,
106+
</div>
107+
]]>
108+
</field>
109+
</record>
110+
111+
<!-- Contact coop for planned exchange -->
112+
<record id="planned_exchange_contact_coop" model="mail.template">
113+
<field name="name">Contact coop if an exchange is planned</field>
114+
<field name="model_id" ref="beesdoo_shift_swap.model_res_partner" />
115+
<field name="partner_to">${ctx.get('partner_to').id}</field>
116+
<field name="auto_delete" eval="False" />
117+
<field name="subject">Confirm your planned exchange</field>
118+
<field name="body_html">
119+
<![CDATA[
120+
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; ">
121+
Hello ${ctx.get('partner_to').name},
122+
<br/><br/>
123+
<p>
124+
${object.name} has planned to exchange the following shift with you:
125+
${ctx.get('template_id').name},
126+
${ctx.get('exchanged_shift_date').date()},
127+
${ctx.get('template_id').task_type_id.name}
128+
</p>
129+
<p>
130+
To confirm and select the shift you want to exchange, please
131+
<a href="/my/shift/exchange/${object.id}/${ctx.get('template_id').id}/${ctx.get('exchanged_shift_date')}/validate/${ctx.get('asked_shift_date').date()}">
132+
click here
133+
</a>.
134+
</p>
135+
<br/><br/>
136+
Regards,
137+
</div>
138+
]]>
139+
</field>
140+
</record>
141+
142+
<!-- Contact coop if his/her exchange request has been cancelled -->
143+
<record id="email_template_cancel_exchange_request" model="mail.template">
144+
<field
145+
name="name"
146+
>Contact coop if his/her exchange request has been cancelled</field>
147+
<field
148+
name="model_id"
149+
ref="beesdoo_shift_swap.model_beesdoo_shift_exchange_request"
150+
/>
151+
<field name="partner_to">${object.worker_id.id}</field>
152+
<field name="auto_delete" eval="False" />
153+
<field name="subject">You exchange request has been cancelled</field>
154+
<field name="body_html">
155+
<![CDATA[
156+
<div style="font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-serif; font-size: 12px; color: rgb(34, 34, 34); background-color: #FFF; ">
157+
Hello ${object.worker_id.name},
158+
<br/><br/>
159+
<p>
160+
The exchange request that you accepted has been cancelled by the other cooperator before his/her validation.
161+
Consequently, your exchange request has been cancelled. You can consult the details <a href="/my/request">here</a>.
162+
</p>
163+
<p>
164+
Please feel free to create a new request if you still want to exchange your shift.
165+
</p>
166+
<br/><br/>
167+
Regards,
168+
</div>
169+
]]>
170+
</field>
171+
</record>
172+
173+
</data>
174+
</odoo>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<odoo>
2+
<data noupdate="1">
3+
<record id="max_shift_per_day" model="ir.config_parameter" forcecreate="False">
4+
<field name="key">beesdoo_shift.max_shift_per_day</field>
5+
<field name="value">2</field>
6+
</record>
7+
<record
8+
id="max_shift_per_month"
9+
model="ir.config_parameter"
10+
forcecreate="False"
11+
>
12+
<field name="key">beesdoo_shift.max_shift_per_month</field>
13+
<field name="value">5</field>
14+
</record>
15+
<record id="enable_exchanges" model="ir.config_parameter" forcecreate="False">
16+
<field name="key">beesdoo_shift.enable_exchanges</field>
17+
<field name="value">True</field>
18+
</record>
19+
<record id="day_limit_swap" model="ir.config_parameter" forcecreate="False">
20+
<field name="key">beesdoo_shift.day_limit_swap</field>
21+
<field name="value">28</field>
22+
</record>
23+
<record
24+
id="day_limit_request_exchange"
25+
model="ir.config_parameter"
26+
forcecreate="False"
27+
>
28+
<field name="key">beesdoo_shift.day_limit_request_exchange</field>
29+
<field name="value">14</field>
30+
</record>
31+
<record
32+
id="day_limit_ask_for_exchange"
33+
model="ir.config_parameter"
34+
forcecreate="False"
35+
>
36+
<field name="key">beesdoo_shift.day_limit_ask_for_exchange</field>
37+
<field name="value">56</field>
38+
</record>
39+
<record
40+
id="day_limit_exchange_with_same_timeslot"
41+
model="ir.config_parameter"
42+
forcecreate="False"
43+
>
44+
<field
45+
name="key"
46+
>beesdoo_shift.day_limit_exchange_with_same_timeslot</field>
47+
<field name="value">54</field>
48+
</record>
49+
<record id="enable_solidarity" model="ir.config_parameter" forcecreate="False">
50+
<field name="key">beesdoo_shift.enable_solidarity</field>
51+
<field name="value">True</field>
52+
</record>
53+
<record
54+
id="hours_limit_cancel_solidarity_offer"
55+
model="ir.config_parameter"
56+
forcecreate="False"
57+
>
58+
<field name="key">beesdoo_shift.hours_limit_cancel_solidarity_offer</field>
59+
<field name="value">24</field>
60+
</record>
61+
<record
62+
id="solidarity_counter_start_value"
63+
model="ir.config_parameter"
64+
forcecreate="False"
65+
>
66+
<field name="key">beesdoo_shift.solidarity_counter_start_value</field>
67+
<field name="value">0</field>
68+
</record>
69+
<record
70+
id="solidarity_counter_limit"
71+
model="ir.config_parameter"
72+
forcecreate="False"
73+
>
74+
<field name="key">beesdoo_shift.solidarity_counter_limit</field>
75+
<field name="value">0</field>
76+
</record>
77+
<record
78+
id="max_solidarity_requests_number"
79+
model="ir.config_parameter"
80+
forcecreate="False"
81+
>
82+
<field name="key">beesdoo_shift.max_solidarity_requests_number</field>
83+
<field name="value">2</field>
84+
</record>
85+
</data>
86+
</odoo>

beesdoo_shift_swap/demo/demo.xml

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<odoo>
3+
4+
<!-- Worker -->
5+
<record id="beesdoo_shift.res_partner_worker_1_demo" model="res.partner">
6+
<field
7+
name="cooperative_status_ids"
8+
eval="[(6, 0, [ref('beesdoo_shift.cooperative_status_1_demo')])]"
9+
/>
10+
</record>
11+
12+
<record id="beesdoo_shift.res_partner_worker_2_demo" model="res.partner">
13+
<field
14+
name="cooperative_status_ids"
15+
eval="[(6, 0, [ref('beesdoo_shift.cooperative_status_2_demo')])]"
16+
/>
17+
</record>
18+
19+
<record id="beesdoo_shift.res_partner_worker_3_demo" model="res.partner">
20+
<field
21+
name="cooperative_status_ids"
22+
eval="[(6, 0, [ref('beesdoo_shift.cooperative_status_3_demo')])]"
23+
/>
24+
</record>
25+
26+
<!-- Task Template -->
27+
<record id="task_template_1_demo" model="beesdoo.shift.template">
28+
<field name="name">A_TUE-10:00-12:00</field>
29+
<field name="planning_id" ref="beesdoo_shift.beesdoo_shift_planning_1_demo" />
30+
<field name="day_nb_id" ref="beesdoo_shift.beesdoo_shift_daynumber_2_demo" />
31+
<field name="task_type_id" ref="beesdoo_shift.beesdoo_shift_task_type_3_demo" />
32+
<field name="start_time">10.0</field>
33+
<field name="end_time">12.0</field>
34+
<field name="duration">2</field>
35+
<field name="worker_nb">5</field>
36+
<field name="worker_ids" eval="[(6, 0, [])]" />
37+
<field name="remaining_worker">5</field>
38+
</record>
39+
40+
<record id="task_template_2_demo" model="beesdoo.shift.template">
41+
<field name="name">A_WED-10:00-12:00</field>
42+
<field name="planning_id" ref="beesdoo_shift.beesdoo_shift_planning_1_demo" />
43+
<field name="day_nb_id" ref="beesdoo_shift.beesdoo_shift_daynumber_3_demo" />
44+
<field name="task_type_id" ref="beesdoo_shift.beesdoo_shift_task_type_3_demo" />
45+
<field name="start_time">10.0</field>
46+
<field name="end_time">12.0</field>
47+
<field name="duration">2</field>
48+
<field name="worker_nb">5</field>
49+
<field
50+
name="worker_ids"
51+
eval="[(6, 0, [ref('beesdoo_shift.res_partner_worker_1_demo'), ref('beesdoo_shift.res_partner_worker_2_demo')])]"
52+
/>
53+
<field name="remaining_worker">4</field>
54+
</record>
55+
56+
<record id="task_template_3_demo" model="beesdoo.shift.template">
57+
<field name="name">A_THU-10:00-12:00</field>
58+
<field name="planning_id" ref="beesdoo_shift.beesdoo_shift_planning_1_demo" />
59+
<field name="day_nb_id" ref="beesdoo_shift.beesdoo_shift_daynumber_4_demo" />
60+
<field name="task_type_id" ref="beesdoo_shift.beesdoo_shift_task_type_3_demo" />
61+
<field name="start_time">10.0</field>
62+
<field name="end_time">12.0</field>
63+
<field name="duration">2</field>
64+
<field name="worker_nb">1</field>
65+
<field
66+
name="worker_ids"
67+
eval="[(6, 0, [ref('beesdoo_shift.res_partner_worker_1_demo')])]"
68+
/>
69+
<field name="remaining_worker">0</field>
70+
</record>
71+
72+
</odoo>

beesdoo_shift_swap/models/__init__.py

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from . import res_partner
2+
from . import shift_swap
3+
from . import exchange_request
4+
from . import exchange
5+
from . import planning
6+
from . import dated_template
7+
from . import res_company
8+
from . import res_config_settings
9+
from . import solidarity_shift_offer
10+
from . import solidarity_shift_request
11+
from . import task

0 commit comments

Comments
 (0)