Skip to content

Commit c9912f8

Browse files
committed
[DEV] rule check management, demo data
1 parent 8dcbafb commit c9912f8

5 files changed

Lines changed: 44 additions & 14 deletions

File tree

hr_duty_planner/data/data_service_rulefield.xml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,23 @@
1010
<field name="field_default">12</field>
1111
<field name="field_mandatory">True</field>
1212
</record>
13-
<!-- rule hour_active_week / id=2 -->
1413
<record model="service.rulefield" id="2">
14+
<field name="rule_id">1</field>
15+
<field name="field_name">h_min</field>
16+
<field name="field_desc">Minimum work hours per day</field>
17+
<field name="field_default">4</field>
18+
<field name="field_mandatory">True</field>
19+
</record>
20+
<!-- rule hour_active_week / id=2 -->
21+
<record model="service.rulefield" id="3">
1522
<field name="rule_id">2</field>
1623
<field name="field_name">h_min</field>
1724
<field name="field_desc">Maximum rest hours per week</field>
1825
<field name="field_default">24</field>
1926
<field name="field_mandatory">True</field>
2027
</record>
2128
<!-- rule end_of_shift_rest / id=7 -->
22-
<record model="service.rulefield" id="3">
29+
<record model="service.rulefield" id="4">
2330
<field name="rule_id">7</field>
2431
<field name="field_name">is_request</field>
2532
<field name="field_desc">Reguire a rest shift after a work shift</field>

hr_duty_planner/data/demo.xml

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@
9494
<field name="rule_field_id">1</field>
9595
<field name="field_value">10</field>
9696
</record>
97+
<record id="service_profileparameter_5" model="service.profileparameter">
98+
<field name="rule_id">1</field>
99+
<field name="rule_field_id">2</field>
100+
<field name="field_value">5</field>
101+
</record>
97102
<record id="service_profileparameter_2" model="service.profileparameter">
98103
<field name="rule_id">1</field>
99104
<field name="rule_field_id">1</field>
@@ -113,19 +118,26 @@
113118
<!-- service profiles -->
114119
<record id="service_profile_1" model="service.profile">
115120
<field name="name">Nurse professional</field>
116-
<field name="parameter_ids" eval="[(6, 0,[ref('service_profileparameter_1'),ref('service_profileparameter_4')])]"/>
121+
<field name="parameter_ids"
122+
eval="[(6, 0,[ref('service_profileparameter_1'),
123+
ref('service_profileparameter_5'),
124+
ref('service_profileparameter_4')])]"/>
117125
</record>
118126
<record id="service_profile_2" model="service.profile">
119127
<field name="name">Nurse trainee</field>
120-
<field name="parameter_ids" eval="[(6, 0,[ref('service_profileparameter_1'),ref('service_profileparameter_3')])]"/>
128+
<field name="parameter_ids"
129+
eval="[(6, 0,[ref('service_profileparameter_1'),
130+
ref('service_profileparameter_3')])]"/>
121131
</record>
122132
<record id="service_profile_3" model="service.profile">
123133
<field name="name">Driver professional</field>
124-
<field name="parameter_ids" eval="[(4, ref('service_profileparameter_2'))]" />
134+
<field name="parameter_ids"
135+
eval="[(4, ref('service_profileparameter_2'))]" />
125136
</record>
126137
<record id="service_profile_4" model="service.profile">
127138
<field name="name">Controller</field>
128-
<field name="parameter_ids" eval="[(4, ref('service_profileparameter_4'))]" />
139+
<field name="parameter_ids"
140+
eval="[(4, ref('service_profileparameter_4'))]" />
129141
</record>
130142

131143
<!-- hr employee -->

hr_duty_planner/models/service_allocate.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from odoo import fields, models, api, _
55
import datetime
66
import json
7+
import logging
78

89

910
class ServiceAllocate(models.Model):
@@ -259,13 +260,23 @@ def check_resource_rule(self, parameters):
259260
@param srv_id int: id of the service
260261
"""
261262

263+
# get employee of the service
262264
for employee in self.env['service.allocate'] \
263265
.search([('id', '=', parameters['srv_id'])]).employee_ids:
266+
# memorixe a dictionary of rules and fields
264267
rule_method = {}
268+
# get rules of the profile associated to the employee
265269
for rule in employee.profile_id.parameter_ids:
266-
rule_method[rule.rule_id.method] = {rule.rule_field_id.field_name:
267-
rule.field_value}
268-
print(employee.name+' '+json.dumps(rule_method))
270+
# create rule element if not exists
271+
try:
272+
rule_method[rule.rule_id.method]
273+
except:
274+
rule_method[rule.rule_id.method] = {}
275+
# save rile/field value
276+
rule_method[rule.rule_id.method][rule.rule_field_id.field_name] = \
277+
rule.field_value
278+
_logger.info(employee.name+' '+json.dumps(rule_method))
279+
# print(employee.name+' '+json.dumps(rule_method))
269280
return
270281

271282
@api.model

hr_duty_planner/models/service_rule.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,9 @@ def double_assign(self, resource_type, obj_id):
109109
vehicle_list = (
110110
service.vehicle_ids
111111
if not service.parent_service_id or not lock
112-
else self.env['service.allocate']
113-
.search([('id', '=', service.parent_service_id.id),
114-
]).vehicle_ids
112+
else self.env['service.allocate'].search(
113+
[('id', '=', service.parent_service_id.id),
114+
]).vehicle_ids
115115
)
116116
for vehicle in vehicle_list:
117117
all_services = self.env['service.allocate'] \
@@ -179,8 +179,8 @@ def hour_active_week(self, obj_id):
179179
# get services where employee is assigned
180180
sql = ('SELECT service_allocate_id '
181181
'FROM hr_employee_service_allocate_rel '
182-
'WHERE hr_employee_id='+str(employee.id))
183-
self.env.cr.execute(sql)
182+
'WHERE hr_employee_id=%s')
183+
self.env.cr.execute(sql, str(employee.id))
184184
# get duration of each service
185185
# _todo_ calculate as end-start
186186
for srv_id in self.env.cr.fetchall():
-356 Bytes
Loading

0 commit comments

Comments
 (0)