新增根据工作日历设置的工作日字段创建工作日历的记录
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
from odoo import models, fields, api
|
from odoo import models, fields, api
|
||||||
import re
|
import re
|
||||||
|
|
||||||
@@ -88,16 +90,49 @@ class WorkLogSetting(models.Model):
|
|||||||
else:
|
else:
|
||||||
record.duration = str(round(end_h - st_h + (end_m - st_m) / 60 + 24, 2))
|
record.duration = str(round(end_h - st_h + (end_m - st_m) / 60 + 24, 2))
|
||||||
|
|
||||||
# @api.model
|
@api.onchange('day_off_id')
|
||||||
# def create(self, vals_list):
|
def _onchange_day_off_id(self):
|
||||||
# """
|
# 先删除之前创建的工作日历事件记录
|
||||||
# 创建新工作日历设置记录时,同时根据所选的休息日新建工作日历的休息日记录
|
self.env['sf.work.schedule.calendar'].search([
|
||||||
# :param vals_list:
|
('calendar_code', '=', self.code), ('name_id', '=', self.name)]).unlink()
|
||||||
# :return:
|
|
||||||
# """
|
# 获取当年的一月一号的日期
|
||||||
#
|
year = fields.Datetime.now().year # 2023
|
||||||
#
|
first_day = datetime(year, 1, 1).date() # 2023-01-01
|
||||||
# return super(WorkLogSetting, self).create(vals_list)
|
day_of_week = first_day.strftime("%A") # 星期日
|
||||||
|
|
||||||
|
# 根据day_of_week,将其设置为起始0,循环周一到周日,按循环顺序设置为0-6
|
||||||
|
# 列:{'星期日': 0, '星期一': 1, '星期二': 2, '星期三': 3, '星期四': 4, '星期五': 5, '星期六': 6}
|
||||||
|
desc = {}
|
||||||
|
desc_weekdays = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
|
||||||
|
status = False
|
||||||
|
ints = 0
|
||||||
|
while len(desc) < 7:
|
||||||
|
if len(desc) != 0:
|
||||||
|
for week in desc_weekdays:
|
||||||
|
if len(desc) < 7:
|
||||||
|
desc.update({week: ints})
|
||||||
|
ints += 1
|
||||||
|
else:
|
||||||
|
for week in desc_weekdays:
|
||||||
|
if status:
|
||||||
|
desc.update({week: ints})
|
||||||
|
ints += 1
|
||||||
|
if day_of_week == week:
|
||||||
|
desc.update({week: ints})
|
||||||
|
status = True
|
||||||
|
ints += 1
|
||||||
|
|
||||||
|
# 创建工作日历的休息日事件
|
||||||
|
# day_off_ids = self.day_off_id.mapped('name')
|
||||||
|
# for week in day_off_ids:
|
||||||
|
# num = desc[week]
|
||||||
|
# while num <= 30:
|
||||||
|
# target_date = first_day + timedelta(days=num)
|
||||||
|
# self.env['sf.work.schedule.calendar'].create({'name': '休息日',
|
||||||
|
# 'name_id': self.name.id,
|
||||||
|
# 'date_time': target_date})
|
||||||
|
# num += 7
|
||||||
|
|
||||||
|
|
||||||
class WorkingShift(models.Model):
|
class WorkingShift(models.Model):
|
||||||
@@ -132,20 +167,24 @@ class DayOff(models.Model):
|
|||||||
_description = '休息日'
|
_description = '休息日'
|
||||||
|
|
||||||
name = fields.Selection([
|
name = fields.Selection([
|
||||||
('周一', '周一'),
|
('星期一', '星期一'),
|
||||||
('周二', '周二'),
|
('星期二', '星期二'),
|
||||||
('周三', '周三'),
|
('星期三', '星期三'),
|
||||||
('周四', '周四'),
|
('星期四', '星期四'),
|
||||||
('周五', '周五'),
|
('星期五', '星期五'),
|
||||||
('周六', '周六'),
|
('星期六', '星期六'),
|
||||||
('周日', '周日')], '休息日名称')
|
('星期日', '星期日')], '休息日名称')
|
||||||
|
|
||||||
|
|
||||||
class WorkScheduleCalendar(models.Model):
|
class WorkScheduleCalendar(models.Model):
|
||||||
_name = 'sf.work.schedule.calendar'
|
_name = 'sf.work.schedule.calendar'
|
||||||
_description = '工作安排日历'
|
_description = '工作日历'
|
||||||
|
|
||||||
|
name = fields.Selection([('休息日', '休息日'), ('计划停机', '计划停机')], '日历事件名称')
|
||||||
|
date_time = fields.Date('休息时间')
|
||||||
|
|
||||||
name_id = fields.Many2one('sf.work.log.setting', '工作日历名称')
|
name_id = fields.Many2one('sf.work.log.setting', '工作日历名称')
|
||||||
|
calendar_code = fields.Char('工作日历编码')
|
||||||
day_off_id = fields.Many2many('sf.day.off', string='休息日')
|
day_off_id = fields.Many2many('sf.day.off', string='休息日')
|
||||||
scheduled_outage = fields.Char('计划停机')
|
scheduled_outage = fields.Char('计划停机')
|
||||||
monthly_rest_days = fields.Char('月休息天数', readonly=True)
|
monthly_rest_days = fields.Char('月休息天数', readonly=True)
|
||||||
@@ -153,6 +192,10 @@ class WorkScheduleCalendar(models.Model):
|
|||||||
monthly_planned_downtime = fields.Char('月计划停机时长', readonly=True)
|
monthly_planned_downtime = fields.Char('月计划停机时长', readonly=True)
|
||||||
annual_planned_downtime = fields.Char('年计划停机时长', readonly=True)
|
annual_planned_downtime = fields.Char('年计划停机时长', readonly=True)
|
||||||
|
|
||||||
name = fields.Selection([('休息日', '休息日'),('计划停机', '计划停机')], '名称')
|
@api.onchange('name_id')
|
||||||
date_time = fields.Datetime('休息时间')
|
def _onchange_name_id(self):
|
||||||
|
for record in self:
|
||||||
|
record.calendar_code = record.name_id.code
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
<field name="status"/>
|
<field name="status"/>
|
||||||
<field name="update_person"/>
|
<field name="update_person"/>
|
||||||
<field name="update_time"/>
|
<field name="update_time"/>
|
||||||
|
<!-- <button string="查看日历" type="object" name="sf_work_schedule_calendar_act"/>-->
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
@@ -140,9 +141,9 @@
|
|||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
||||||
<!--================================================工作安排日历================================================-->
|
<!--================================================工作日历================================================-->
|
||||||
<record id="sf_work_schedule_calendar_tree" model="ir.ui.view">
|
<record id="sf_work_schedule_calendar_tree" model="ir.ui.view">
|
||||||
<field name="name">工作安排日历</field>
|
<field name="name">工作日历</field>
|
||||||
<field name="model">sf.work.schedule.calendar</field>
|
<field name="model">sf.work.schedule.calendar</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree>
|
<tree>
|
||||||
@@ -154,7 +155,7 @@
|
|||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="sf_work_schedule_calendar_form" model="ir.ui.view">
|
<record id="sf_work_schedule_calendar_form" model="ir.ui.view">
|
||||||
<field name="name">工作安排日历</field>
|
<field name="name">工作日历</field>
|
||||||
<field name="model">sf.work.schedule.calendar</field>
|
<field name="model">sf.work.schedule.calendar</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form>
|
<form>
|
||||||
@@ -166,6 +167,7 @@
|
|||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<field name="name_id"/>
|
<field name="name_id"/>
|
||||||
|
<field name="calendar_code"/>
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
<group string="其他">
|
<group string="其他">
|
||||||
|
|||||||
Reference in New Issue
Block a user