Skip to content

Commit aa2abcd

Browse files
dhrs-odoovava-odoo
authored andcommitted
[ADD] driving_school: add module for Driving Schools
This industry package includes all you need to run your Driving School business from lesson planning to fleet management. Basics - Sell lessons, exams and packs from the Sales App - Manage waiver with the Sign App - Let your customers book lessons online thanks to the Appointment App - Manage your employees' shifts with the Planning App - Manage your vehicles with the Fleet App - Generate visibility through the Website App Task-4881676 closes #815 Signed-off-by: Vallaeys Valentin (vava) <[email protected]>
1 parent a4bec3a commit aa2abcd

File tree

73 files changed

+5494
-0
lines changed

Some content is hidden

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

73 files changed

+5494
-0
lines changed

.weblate.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,11 @@
116116
"filemask": "custom_furniture/i18n/*.po",
117117
"new_base": "custom_furniture/i18n/custom_furniture.pot"
118118
},
119+
{
120+
"name": "driving_school",
121+
"filemask": "driving_school/i18n/*.po",
122+
"new_base": "driving_school/i18n/driving_school.pot"
123+
},
119124
{
120125
"name": "dropshipping",
121126
"filemask": "dropshipping/i18n/*.po",

driving_school/__manifest__.py

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
{
2+
'name': 'Driving School',
3+
'version': '1.0',
4+
'category': 'Services',
5+
'author': 'Odoo S.A.',
6+
'depends': [
7+
'base_industry_data',
8+
'contacts',
9+
'hr_fleet',
10+
'knowledge',
11+
'sale_management',
12+
'sign',
13+
'website_appointment',
14+
'website_sale_loyalty',
15+
],
16+
'data': [
17+
'data/res_config_settings.xml',
18+
'data/ir_attachment_pre.xml',
19+
'data/knowledge_cover.xml',
20+
'data/knowledge_article.xml',
21+
'data/uom_uom.xml',
22+
'data/product_ribbon.xml',
23+
'data/product_template.xml',
24+
'data/product_attribute.xml',
25+
'data/product_attribute_value.xml',
26+
'data/product_product.xml',
27+
'data/appointment_resource.xml',
28+
'data/appointment_type.xml',
29+
'data/mail_template.xml',
30+
'data/product_template_attribute_line.xml',
31+
'data/product_template_attribute_value.xml',
32+
'data/sale_order_template.xml',
33+
'data/sale_order_template_line.xml',
34+
'data/sign_template.xml',
35+
'data/sign_item_role.xml',
36+
'data/sign_item.xml',
37+
'data/fleet_vehicle_model.xml',
38+
'data/fleet_vehicle.xml',
39+
'data/fleet_vehicle_log_services.xml',
40+
'data/hr_job.xml',
41+
'data/mail_message.xml',
42+
'data/knowledge_article_favorite.xml',
43+
],
44+
'demo': [
45+
'demo/loyalty_program.xml',
46+
'demo/fleet_vehicle_log_services.xml',
47+
'demo/product_template.xml',
48+
'demo/website_view.xml',
49+
'demo/res_users.xml',
50+
'demo/appointment_type.xml',
51+
'demo/res_partner.xml',
52+
'demo/calendar_event.xml',
53+
'demo/appointment_booking_line.xml',
54+
'demo/loyalty_reward.xml',
55+
'demo/loyalty_rule.xml',
56+
'demo/sale_order.xml',
57+
'demo/ir_attachment_post.xml',
58+
'demo/sale_order_line.xml',
59+
'demo/website_page.xml',
60+
'demo/hr_employee.xml',
61+
'demo/website_theme_apply.xml',
62+
'demo/sale_order_confirm.xml',
63+
'demo/payment_provider_demo.xml',
64+
'demo/website.xml',
65+
],
66+
'license': 'OPL-1',
67+
'cloc_exclude': [
68+
'data/knowledge_article.xml',
69+
'demo/website_view.xml',
70+
],
71+
'images': [
72+
'images/main.png',
73+
],
74+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<odoo noupdate="1">
3+
<record id="appointment_resource_1" model="appointment.resource">
4+
<field name="name">Projection Room</field>
5+
<field name="image_1920" type="base64" file="driving_school/static/src/binary/appointment_resource/1-image_1920"/>
6+
<field name="capacity">25</field>
7+
<field name="shareable" eval="True"/>
8+
</record>
9+
</odoo>
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<odoo noupdate="1">
3+
<record id="appointment_type_1" model="appointment.type">
4+
<field name="name">Theory Lesson A</field>
5+
<field name="image_1920" type="base64" file="driving_school/static/src/binary/appointment_type/1-image_1920"/>
6+
<field name="location_id" ref="base.main_partner"/>
7+
<field name="event_videocall_source" eval="False"/>
8+
<field name="assign_method">time_auto_assign</field>
9+
<field name="category">recurring</field>
10+
<field name="avatars_display">show</field>
11+
<field name="min_cancellation_hours">3.0</field>
12+
<field name="min_schedule_hours">3.0</field>
13+
<field name="max_schedule_days">30</field>
14+
<field name="schedule_based_on">resources</field>
15+
<field name="resource_ids" eval="[(6, 0, [ref('appointment_resource_1')])]"/>
16+
<field name="has_payment_step" eval="True"/>
17+
<field name="product_id" ref="product_product_18"/>
18+
<field name="slot_ids" eval="[
19+
(0, 0, {'weekday': '1', 'start_hour': 17.0, 'end_hour': 18.0}),
20+
(0, 0, {'weekday': '4', 'start_hour': 18.0, 'end_hour': 19.0}),
21+
(0, 0, {'weekday': '6', 'start_hour': 10.0, 'end_hour': 11.0}),
22+
]"/>
23+
</record>
24+
<record id="appointment_type_2" model="appointment.type">
25+
<field name="name">Theory Lesson B</field>
26+
<field name="image_1920" type="base64" file="driving_school/static/src/binary/appointment_type/1-image_1920"/>
27+
<field name="location_id" ref="base.main_partner"/>
28+
<field name="event_videocall_source" eval="False"/>
29+
<field name="assign_method">time_auto_assign</field>
30+
<field name="category">recurring</field>
31+
<field name="avatars_display">show</field>
32+
<field name="min_cancellation_hours">3.0</field>
33+
<field name="min_schedule_hours">3.0</field>
34+
<field name="max_schedule_days">30</field>
35+
<field name="schedule_based_on">resources</field>
36+
<field name="resource_ids" eval="[(6, 0, [ref('appointment_resource_1')])]"/>
37+
<field name="has_payment_step" eval="True"/>
38+
<field name="product_id" ref="product_product_8"/>
39+
<field name="slot_ids" eval="[
40+
(0, 0, {'weekday': '1', 'start_hour': 18.0, 'end_hour': 19.0}),
41+
(0, 0, {'weekday': '2', 'start_hour': 18.0, 'end_hour': 19.0}),
42+
(0, 0, {'weekday': '3', 'start_hour': 17.0, 'end_hour': 18.0}),
43+
(0, 0, {'weekday': '4', 'start_hour': 17.0, 'end_hour': 18.0}),
44+
(0, 0, {'weekday': '5', 'start_hour': 18.0, 'end_hour': 19.0}),
45+
(0, 0, {'weekday': '6', 'start_hour': 11.0, 'end_hour': 12.0}),
46+
(0, 0, {'weekday': '6', 'start_hour': 15.0, 'end_hour': 16.0}),
47+
]"/>
48+
</record>
49+
<record id="appointment_type_3" model="appointment.type">
50+
<field name="name">Theory Lesson C+D</field>
51+
<field name="image_1920" type="base64" file="driving_school/static/src/binary/appointment_type/1-image_1920"/>
52+
<field name="location_id" ref="base.main_partner"/>
53+
<field name="event_videocall_source" eval="False"/>
54+
<field name="assign_method">time_auto_assign</field>
55+
<field name="category">recurring</field>
56+
<field name="avatars_display">show</field>
57+
<field name="min_cancellation_hours">3.0</field>
58+
<field name="min_schedule_hours">3.0</field>
59+
<field name="max_schedule_days">30</field>
60+
<field name="schedule_based_on">resources</field>
61+
<field name="resource_ids" eval="[(6, 0, [ref('appointment_resource_1')])]"/>
62+
<field name="has_payment_step" eval="True"/>
63+
<field name="product_id" ref="product_product_13"/>
64+
<field name="slot_ids" eval="[
65+
(0, 0, {'weekday': '2', 'start_hour': 17.0, 'end_hour': 18.0}),
66+
(0, 0, {'weekday': '3', 'start_hour': 18.0, 'end_hour': 19.0}),
67+
(0, 0, {'weekday': '5', 'start_hour': 17.0, 'end_hour': 18.0}),
68+
(0, 0, {'weekday': '6', 'start_hour': 9.0, 'end_hour': 10.0}),
69+
]"/>
70+
</record>
71+
<record id="appointment_type_4" model="appointment.type">
72+
<field name="name">Practical Lesson A</field>
73+
<field name="image_1920" type="base64" file="driving_school/static/src/binary/appointment_type/4-image_1920"/>
74+
<field name="location_id" ref="base.main_partner"/>
75+
<field name="event_videocall_source" eval="False"/>
76+
<field name="category">recurring</field>
77+
<field name="avatars_display">show</field>
78+
<field name="min_cancellation_hours">48.0</field>
79+
<field name="min_schedule_hours">120.0</field>
80+
<field name="max_schedule_days">30</field>
81+
<field name="has_payment_step" eval="True"/>
82+
<field name="product_id" ref="product_product_26"/>
83+
<field name="slot_ids" eval="[
84+
(0, 0, {'weekday': '1', 'start_hour': 9.0, 'end_hour': 12.0}),
85+
(0, 0, {'weekday': '1', 'start_hour': 14.0, 'end_hour': 17.0}),
86+
(0, 0, {'weekday': '2', 'start_hour': 9.0, 'end_hour': 12.0}),
87+
(0, 0, {'weekday': '2', 'start_hour': 14.0, 'end_hour': 17.0}),
88+
(0, 0, {'weekday': '3', 'start_hour': 9.0, 'end_hour': 12.0}),
89+
(0, 0, {'weekday': '3', 'start_hour': 14.0, 'end_hour': 17.0}),
90+
(0, 0, {'weekday': '4', 'start_hour': 9.0, 'end_hour': 12.0}),
91+
(0, 0, {'weekday': '4', 'start_hour': 14.0, 'end_hour': 17.0}),
92+
(0, 0, {'weekday': '5', 'start_hour': 9.0, 'end_hour': 12.0}),
93+
(0, 0, {'weekday': '5', 'start_hour': 14.0, 'end_hour': 17.0}),
94+
(0, 0, {'weekday': '6', 'start_hour': 9.0, 'end_hour': 12.0}),
95+
(0, 0, {'weekday': '6', 'start_hour': 14.0, 'end_hour': 17.0}),
96+
]"/>
97+
</record>
98+
<record id="appointment_type_5" model="appointment.type">
99+
<field name="name">Practical Lesson B</field>
100+
<field name="image_1920" type="base64" file="driving_school/static/src/binary/appointment_type/5-image_1920.jpeg"/>
101+
<field name="location_id" ref="base.main_partner"/>
102+
<field name="event_videocall_source" eval="False"/>
103+
<field name="category">recurring</field>
104+
<field name="avatars_display">show</field>
105+
<field name="min_cancellation_hours">48.0</field>
106+
<field name="min_schedule_hours">120.0</field>
107+
<field name="max_schedule_days">30</field>
108+
<field name="has_payment_step" eval="True"/>
109+
<field name="product_id" ref="product_product_27"/>
110+
<field name="slot_ids" eval="[
111+
(0, 0, {'weekday': '1', 'start_hour': 9.0, 'end_hour': 12.0}),
112+
(0, 0, {'weekday': '1', 'start_hour': 14.0, 'end_hour': 17.0}),
113+
(0, 0, {'weekday': '2', 'start_hour': 9.0, 'end_hour': 12.0}),
114+
(0, 0, {'weekday': '2', 'start_hour': 14.0, 'end_hour': 17.0}),
115+
(0, 0, {'weekday': '3', 'start_hour': 9.0, 'end_hour': 12.0}),
116+
(0, 0, {'weekday': '3', 'start_hour': 14.0, 'end_hour': 17.0}),
117+
(0, 0, {'weekday': '4', 'start_hour': 9.0, 'end_hour': 12.0}),
118+
(0, 0, {'weekday': '4', 'start_hour': 14.0, 'end_hour': 17.0}),
119+
(0, 0, {'weekday': '5', 'start_hour': 9.0, 'end_hour': 12.0}),
120+
(0, 0, {'weekday': '5', 'start_hour': 14.0, 'end_hour': 17.0}),
121+
(0, 0, {'weekday': '6', 'start_hour': 9.0, 'end_hour': 12.0}),
122+
(0, 0, {'weekday': '6', 'start_hour': 14.0, 'end_hour': 17.0}),
123+
]"/>
124+
</record>
125+
<record id="appointment_type_6" model="appointment.type">
126+
<field name="name">Practical Lesson C</field>
127+
<field name="image_1920" type="base64" file="driving_school/static/src/binary/appointment_type/6-image_1920"/>
128+
<field name="location_id" ref="base.main_partner"/>
129+
<field name="event_videocall_source" eval="False"/>
130+
<field name="category">recurring</field>
131+
<field name="avatars_display">show</field>
132+
<field name="min_cancellation_hours">48.0</field>
133+
<field name="min_schedule_hours">120.0</field>
134+
<field name="max_schedule_days">30</field>
135+
<field name="has_payment_step" eval="True"/>
136+
<field name="product_id" ref="product_product_28"/>
137+
<field name="slot_ids" eval="[
138+
(0, 0, {'weekday': '1', 'start_hour': 9.0, 'end_hour': 12.0}),
139+
(0, 0, {'weekday': '1', 'start_hour': 14.0, 'end_hour': 17.0}),
140+
(0, 0, {'weekday': '2', 'start_hour': 9.0, 'end_hour': 12.0}),
141+
(0, 0, {'weekday': '2', 'start_hour': 14.0, 'end_hour': 17.0}),
142+
(0, 0, {'weekday': '3', 'start_hour': 9.0, 'end_hour': 12.0}),
143+
(0, 0, {'weekday': '3', 'start_hour': 14.0, 'end_hour': 17.0}),
144+
(0, 0, {'weekday': '4', 'start_hour': 9.0, 'end_hour': 12.0}),
145+
(0, 0, {'weekday': '4', 'start_hour': 14.0, 'end_hour': 17.0}),
146+
(0, 0, {'weekday': '5', 'start_hour': 9.0, 'end_hour': 12.0}),
147+
(0, 0, {'weekday': '5', 'start_hour': 14.0, 'end_hour': 17.0}),
148+
(0, 0, {'weekday': '6', 'start_hour': 9.0, 'end_hour': 12.0}),
149+
(0, 0, {'weekday': '6', 'start_hour': 14.0, 'end_hour': 17.0}),
150+
]"/>
151+
</record>
152+
</odoo>
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<odoo noupdate="1">
3+
<record id="fleet_vehicle_6" model="fleet.vehicle">
4+
<field name="model_id" ref="fleet_vehicle_model_2"/>
5+
<field name="license_plate">1BIK3</field>
6+
<field name="brand_id" ref="fleet.brand_honda"/>
7+
<field name="acquisition_date" eval="(DateTime.today() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M')" />
8+
<field name="first_contract_date" eval="(DateTime.today() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M')" />
9+
<field name="state_id" ref="fleet.fleet_vehicle_state_registered"/>
10+
<field name="seats">2</field>
11+
<field name="fuel_type">gasoline</field>
12+
<field name="vehicle_range">550</field>
13+
</record>
14+
<record id="fleet_vehicle_2" model="fleet.vehicle">
15+
<field name="model_id" ref="fleet_vehicle_model_1"/>
16+
<field name="license_plate">1CAR</field>
17+
<field name="brand_id" ref="fleet.brand_fiat"/>
18+
<field name="acquisition_date" eval="(DateTime.today() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M')" />
19+
<field name="first_contract_date" eval="(DateTime.today() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M')" />
20+
<field name="color">White</field>
21+
<field name="state_id" ref="fleet.fleet_vehicle_state_registered"/>
22+
<field name="seats">4</field>
23+
<field name="model_year">2023</field>
24+
<field name="doors">3</field>
25+
<field name="transmission">manual</field>
26+
<field name="fuel_type">diesel</field>
27+
<field name="power">87.0</field>
28+
<field name="vehicle_range">800</field>
29+
</record>
30+
<record id="fleet_vehicle_9" model="fleet.vehicle">
31+
<field name="model_id" ref="fleet_vehicle_model_4"/>
32+
<field name="license_plate">1T2UCK</field>
33+
<field name="brand_id" ref="fleet.brand_volvo"/>
34+
<field name="acquisition_date" eval="(DateTime.today() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M')" />
35+
<field name="first_contract_date" eval="(DateTime.today() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M')" />
36+
<field name="state_id" ref="fleet.fleet_vehicle_state_registered"/>
37+
<field name="fuel_type">electric</field>
38+
</record>
39+
<record id="fleet_vehicle_7" model="fleet.vehicle">
40+
<field name="model_id" ref="fleet_vehicle_model_2"/>
41+
<field name="license_plate">2BIK3</field>
42+
<field name="brand_id" ref="fleet.brand_honda"/>
43+
<field name="acquisition_date" eval="(DateTime.today() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M')" />
44+
<field name="first_contract_date" eval="(DateTime.today() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M')" />
45+
<field name="state_id" ref="fleet.fleet_vehicle_state_registered"/>
46+
<field name="seats">2</field>
47+
<field name="fuel_type">gasoline</field>
48+
<field name="vehicle_range">550</field>
49+
</record>
50+
<record id="fleet_vehicle_4" model="fleet.vehicle">
51+
<field name="model_id" ref="fleet_vehicle_model_1"/>
52+
<field name="license_plate">2CAR</field>
53+
<field name="brand_id" ref="fleet.brand_fiat"/>
54+
<field name="acquisition_date" eval="(DateTime.today() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M')" />
55+
<field name="first_contract_date" eval="(DateTime.today() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M')" />
56+
<field name="color">White</field>
57+
<field name="state_id" ref="fleet.fleet_vehicle_state_registered"/>
58+
<field name="seats">4</field>
59+
<field name="model_year">2023</field>
60+
<field name="doors">3</field>
61+
<field name="transmission">manual</field>
62+
<field name="fuel_type">diesel</field>
63+
<field name="power">87.0</field>
64+
<field name="vehicle_range">800</field>
65+
</record>
66+
<record id="fleet_vehicle_5" model="fleet.vehicle">
67+
<field name="model_id" ref="fleet_vehicle_model_1"/>
68+
<field name="license_plate">3CAR</field>
69+
<field name="brand_id" ref="fleet.brand_fiat"/>
70+
<field name="acquisition_date" eval="(DateTime.today() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M')" />
71+
<field name="first_contract_date" eval="(DateTime.today() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M')" />
72+
<field name="color">White</field>
73+
<field name="state_id" ref="fleet.fleet_vehicle_state_registered"/>
74+
<field name="seats">4</field>
75+
<field name="model_year">2023</field>
76+
<field name="doors">3</field>
77+
<field name="transmission">manual</field>
78+
<field name="fuel_type">diesel</field>
79+
<field name="power">87.0</field>
80+
<field name="vehicle_range">800</field>
81+
</record>
82+
</odoo>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<odoo noupdate="1">
3+
<record id="fleet_vehicle_log_services_1" model="fleet.vehicle.log.services">
4+
<field name="vehicle_id" ref="fleet_vehicle_6"/>
5+
<field name="description">Annual maintenance</field>
6+
<field name="date" eval="(DateTime.today() + relativedelta(days=2)).strftime('%Y-%m-%d %H:%M')" />
7+
<field name="service_type_id" ref="account_fleet.data_fleet_service_type_vendor_bill"/>
8+
</record>
9+
<record id="fleet_vehicle_log_services_2" model="fleet.vehicle.log.services">
10+
<field name="vehicle_id" ref="fleet_vehicle_2"/>
11+
<field name="description">Tire replacement</field>
12+
<field name="date" eval="(DateTime.today() + relativedelta(days=1)).strftime('%Y-%m-%d %H:%M')" />
13+
<field name="service_type_id" ref="account_fleet.data_fleet_service_type_vendor_bill"/>
14+
<field name="state">done</field>
15+
</record>
16+
</odoo>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<odoo noupdate="1">
3+
<record id="fleet_vehicle_model_1" model="fleet.vehicle.model">
4+
<field name="name">500</field>
5+
<field name="brand_id" ref="fleet.brand_fiat"/>
6+
<field name="transmission">manual</field>
7+
<field name="model_year">2023</field>
8+
<field name="color">White</field>
9+
<field name="seats">4</field>
10+
<field name="doors">3</field>
11+
<field name="default_fuel_type">diesel</field>
12+
<field name="power">87.0</field>
13+
<field name="vehicle_range">800</field>
14+
<field name="drive_type">fwd</field>
15+
</record>
16+
<record id="fleet_vehicle_model_2" model="fleet.vehicle.model">
17+
<field name="name">CBR 500</field>
18+
<field name="brand_id" ref="fleet.brand_honda"/>
19+
<field name="seats">2</field>
20+
<field name="default_fuel_type">gasoline</field>
21+
<field name="vehicle_range">550</field>
22+
</record>
23+
<record id="fleet_vehicle_model_4" model="fleet.vehicle.model">
24+
<field name="name">FE</field>
25+
<field name="brand_id" ref="fleet.brand_volvo"/>
26+
</record>
27+
</odoo>

driving_school/data/hr_job.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<odoo noupdate="1">
3+
<record id="hr_job_1" model="hr.job">
4+
<field name="name">Instructor</field>
5+
<field name="no_of_recruitment" eval="False"/>
6+
</record>
7+
</odoo>

0 commit comments

Comments
 (0)