From b5893d4a599147e89f49863a5c6b564754222683 Mon Sep 17 00:00:00 2001 From: zhouzhou <123@qq.com> Date: Sat, 21 Dec 2024 21:05:23 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/inherit_hr_employee.py | 10 +- .../models/inherit_planning_role.py | 5 +- .../models/yuthon_duty_plan.py | 11 +- .../models/yuthon_run_planning.py | 35 +- .../views/yuthon_run_planning_views.xml | 8 +- yuthon_property/models/yuthon_property.py | 22 +- .../models/yuthon_resource_mgmt_config.py | 10 +- yuthon_property/security/ir.model.access.csv | 3 +- yuthon_property/views/menuitem.xml | 7 +- .../views/yuthon_property_views.xml | 5 +- .../yuthon_resource_mgmt_config_views.xml | 18 +- .../models/property_evaluate_application.py | 2 +- .../models/property_information.py | 2 +- .../models/property_management.py | 2 +- .../models/property_record.py | 2 +- yuthon_work_brand/views/attendance_menu.xml | 452 +++++++++--------- 16 files changed, 320 insertions(+), 274 deletions(-) diff --git a/yuthon_hr_attendance/models/inherit_hr_employee.py b/yuthon_hr_attendance/models/inherit_hr_employee.py index b826f38f7..23c968e45 100644 --- a/yuthon_hr_attendance/models/inherit_hr_employee.py +++ b/yuthon_hr_attendance/models/inherit_hr_employee.py @@ -11,11 +11,15 @@ class YuthonHrEmployee(models.Model): def _compute_user_roles(self): group_mapping = { '运行班排班计划管理员': 'group_property_run_admin', + '运行班:用户':'group_property_run_user', '高压班排班计划管理员': 'group_property_hv_admin', + '高压班:用户': 'group_property_hv_user', '综合班排班计划管理员': 'group_property_integrated_admin', - '班组A排班计划管理员': 'group_property_class_a_admin', - '班组B排班计划管理员': 'group_property_class_b_admin', - '班组C排班计划管理员': 'group_property_class_c_admin', + '综合班:用户': 'group_property_integrated_user', + '保安部排班计划管理员': 'group_property_class_a_admin', + '保安部:用户': 'group_property_security_user', + '联安粮库排班计划管理员': 'group_property_grain_depot_admin', + '联安粮库:用户':'group_property_grain_depot_user', } old_users_ids = self.user_role_ids for employee in self: diff --git a/yuthon_hr_attendance/models/inherit_planning_role.py b/yuthon_hr_attendance/models/inherit_planning_role.py index 9773d2773..1152bbad4 100644 --- a/yuthon_hr_attendance/models/inherit_planning_role.py +++ b/yuthon_hr_attendance/models/inherit_planning_role.py @@ -36,12 +36,11 @@ class InheritPlanningSlot(models.Model): _inherit = 'planning.slot' department_id = fields.Many2one('hr.department', string="部门") + display_sequence = fields.Integer(string=" ") @api.depends('start_datetime', 'end_datetime', 'template_id') def _compute_display_name(self): for slot in self: - start_str = (slot.start_datetime + timedelta(hours=8)).strftime("%Y/%m/%d %H:%M") if slot.start_datetime else "" - end_str = (slot.end_datetime + timedelta(hours=8)).strftime("%Y/%m/%d %H:%M") if slot.end_datetime else "" planning_name = slot.template_id.planning_name if slot.template_id and slot.template_id.planning_name else "" - slot.display_name = f"{start_str}-{end_str}-{planning_name}" + slot.display_name = f"{planning_name}" diff --git a/yuthon_hr_attendance/models/yuthon_duty_plan.py b/yuthon_hr_attendance/models/yuthon_duty_plan.py index 798d82a0f..c0e97382d 100644 --- a/yuthon_hr_attendance/models/yuthon_duty_plan.py +++ b/yuthon_hr_attendance/models/yuthon_duty_plan.py @@ -19,11 +19,6 @@ class YuthonDutyPlan(models.Model): ('5', '五月'), ('6', '六月'), ('7', '七月'), ('8', '八月'), ('9', '九月'), ('10', '十月'), ('11', '十一月'), ('12', '十二月')], string='选择月份', default=lambda self: self._get_default_month()) - # default = lambda self: self._default_month() - # @api.model - # def _default_month(self): - # current_month = datetime.now().strftime('%B') - # return current_month def auto_duty_plan(self, next_date=False): selected_month = int(self.select_time) @@ -33,14 +28,14 @@ class YuthonDutyPlan(models.Model): # 计算结束日期(下个月的第一天) next_month = (selected_month % 12) + 1 next_year = year + (1 if next_month == 1 else 0) # 如果是12月,年份加1 - last_day_of_month = datetime(next_year, next_month, 1) + last_day_of_month = datetime(next_year, next_month, 1)- timedelta(days=1) else: next_month = (selected_month % 12) + 1 next_year = year + (1 if next_month == 1 else 0) first_day_of_month = datetime(next_year, next_month, 1) next_next_month = (next_month % 12) + 1 next_next_year = next_year + (1 if next_next_month == 1 else 0) - last_day_of_month = datetime(next_next_year, next_next_month, 1) + last_day_of_month = datetime(next_next_year, next_next_month, 1)- timedelta(days=1) role_a = self.env['planning.role'].search([('name', '=', '联安粮库')], limit=1) role_template_a = self.env['planning.slot.template'].search([('planning_name', '=', '白班'), ('role_id', '=', role_a.id)]) @@ -71,7 +66,7 @@ class YuthonDutyPlan(models.Model): if zu == len(self.plan_line_ids): zu = 0 for employee in self.plan_line_ids[zu].employee_ids: - employee_id = self.env['planning.slot'].search([('resource_id', '=', employee.resource_id.id)]).sorted('start_datetime') + employee_id = self.env['planning.slot'].search([('resource_id', '=', employee.resource_id.id),('start_datetime', '>=', first_day_of_month), ('start_datetime', '<=', last_day_of_month)]).sorted('start_datetime') if i < len(employee_id): start_hour2 = int(role_template_b.start_time) end_hour2 = int(role_template_b.end_time) diff --git a/yuthon_hr_attendance/models/yuthon_run_planning.py b/yuthon_hr_attendance/models/yuthon_run_planning.py index d4f3090ab..8d03c9d79 100644 --- a/yuthon_hr_attendance/models/yuthon_run_planning.py +++ b/yuthon_hr_attendance/models/yuthon_run_planning.py @@ -25,17 +25,17 @@ class YuthonRunPlanning(models.Model): year = datetime.now().year if not next_date: first_day_of_month = datetime(year, selected_month, 1) - # 计算结束日期(下个月的第一天) + # 计算结束日期(当月的最后一天) next_month = (selected_month % 12) + 1 - next_year = year + (1 if next_month == 1 else 0) # 如果是12月,年份加1 - last_day_of_month = datetime(next_year, next_month, 1) + next_year = year + (1 if next_month == 1 else 0) + last_day_of_month = datetime(next_year, next_month, 1) - timedelta(days=1) else: next_month = (selected_month % 12) + 1 next_year = year + (1 if next_month == 1 else 0) first_day_of_month = datetime(next_year, next_month, 1) next_next_month = (next_month % 12) + 1 next_next_year = next_year + (1 if next_next_month == 1 else 0) - last_day_of_month = datetime(next_next_year, next_next_month, 1) + last_day_of_month = datetime(next_next_year, next_next_month, 1) - timedelta(days=1) role_a = self.env['planning.role'].search([('name', '=', '工程部')], limit=1) start_time = int(self.env['planning.slot.template'].search([('role_id', '=', role_a.id), ('planning_name', '=', '白班')]).start_time) @@ -57,13 +57,13 @@ class YuthonRunPlanning(models.Model): break start_time2 = int(self.env['planning.slot.template'].search([('planning_name', '=', '中夜'), ('role_id', '=', role_a.id)]).start_time) end_time2 = int(self.env['planning.slot.template'].search([('planning_name', '=', '中夜'), ('role_id', '=', role_a.id)]).end_time) - all_slot = self.env['planning.slot'].search([('department_id.name', '=', '运行班')]) current_date = first_day_of_month + all_slot = self.env['planning.slot'].search([('department_id.name', '=', '运行班'), ('start_datetime', '>=', first_day_of_month), ('start_datetime', '<=', last_day_of_month)]) i = -1 while current_date <= last_day_of_month: for employee in range(0, len(self.engineering_run_ids)): i = i + 1 - slot_id = all_slot.search([('resource_id', '=', self.engineering_run_ids[employee].employee_id.resource_id.id)]).sorted('start_datetime') + slot_id = all_slot.search([('resource_id', '=', self.engineering_run_ids[employee].employee_id.resource_id.id),('start_datetime', '>=', first_day_of_month),('start_datetime', '<=', last_day_of_month)]).sorted('start_datetime') if i < 31: slot_id[i].write({ 'template_id': self.env['planning.slot.template'].search([('role_id', '=', role_a.id), ('planning_name', '=', '中夜')]).id, @@ -104,6 +104,7 @@ class YuthonRunPlanning(models.Model): 'resource_id': resource_id.id, 'start_datetime': datetime(current_date.year, current_date.month, current_date.day,start_time) + timedelta(hours=16)- timedelta(days=1), 'end_datetime': datetime(current_date.year, current_date.month, current_date.day,end_time) + timedelta(hours=16)- timedelta(days=1), + 'display_sequence': employee.sequence, 'role_id': role_a.id, 'allocated_hours': 8, }) @@ -128,14 +129,14 @@ class YuthonRunPlanning(models.Model): # 计算结束日期(下个月的第一天) next_month = (selected_month % 12) + 1 next_year = year + (1 if next_month == 1 else 0) # 如果是12月,年份加1 - last_day_of_month = datetime(next_year, next_month, 1) + last_day_of_month = datetime(next_year, next_month, 1) - timedelta(days=1) else: next_month = (selected_month % 12) + 1 next_year = year + (1 if next_month == 1 else 0) first_day_of_month = datetime(next_year, next_month, 1) next_next_month = (next_month % 12) + 1 next_next_year = next_year + (1 if next_next_month == 1 else 0) - last_day_of_month = datetime(next_next_year, next_next_month, 1) + last_day_of_month = datetime(next_next_year, next_next_month, 1) - timedelta(days=1) role_a = self.env['planning.role'].search([('name', '=', '工程部')], limit=1) start_time = int(self.env['planning.slot.template'].search([('role_id', '=', role_a.id), ('planning_name', '=', '白班')]).start_time) @@ -157,15 +158,13 @@ class YuthonRunPlanning(models.Model): break start_time2 = int(self.env['planning.slot.template'].search( [('planning_name', '=', '中夜'), ('role_id', '=', role_a.id)]).start_time) end_time2 = int(self.env['planning.slot.template'].search([('planning_name', '=', '中夜'), ('role_id', '=', role_a.id)]).end_time) - all_slot = self.env['planning.slot'].search([('department_id.name', '=', '高压班')]) current_date = first_day_of_month + all_slot = self.env['planning.slot'].search([('department_id.name', '=', '高压班'), ('start_datetime', '>=', first_day_of_month),('start_datetime', '<=', last_day_of_month)]) i = -1 while current_date <= last_day_of_month: for employee in range(0, len(self.high_run_ids)): i = i + 1 - slot_id = all_slot.search( - [('resource_id', '=', self.high_run_ids[employee].employee_id.resource_id.id)]).sorted( - 'start_datetime') + slot_id = all_slot.search([('resource_id', '=', self.engineering_run_ids[employee].employee_id.resource_id.id), ('start_datetime', '>=', first_day_of_month), ('start_datetime', '<=', last_day_of_month)]).sorted('start_datetime') if i < 31: slot_id[i].write({ 'template_id': self.env['planning.slot.template'].search( @@ -205,14 +204,14 @@ class YuthonRunPlanning(models.Model): # 计算结束日期(下个月的第一天) next_month = (selected_month % 12) + 1 next_year = year + (1 if next_month == 1 else 0) # 如果是12月,年份加1 - last_day_of_month = datetime(next_year, next_month, 1) + last_day_of_month = datetime(next_year, next_month, 1)- timedelta(days=1) else: next_month = (selected_month % 12) + 1 next_year = year + (1 if next_month == 1 else 0) first_day_of_month = datetime(next_year, next_month, 1) next_next_month = (next_month % 12) + 1 next_next_year = next_year + (1 if next_next_month == 1 else 0) - last_day_of_month = datetime(next_next_year, next_next_month, 1) + last_day_of_month = datetime(next_next_year, next_next_month, 1)- timedelta(days=1) role_a = self.env['planning.role'].search([('name', '=', '工程部')], limit=1) start_time = int(self.env['planning.slot.template'].search( @@ -240,15 +239,15 @@ class YuthonRunPlanning(models.Model): end_time2 = int(self.env['planning.slot.template'].search( [('planning_name', '=', '中夜'), ('role_id', '=', role_a.id)]).end_time) - all_slot = self.env['planning.slot'].search([('department_id.name', '=', '综合班')]) current_date = first_day_of_month + all_slot = self.env['planning.slot'].search( + [('department_id.name', '=', '综合班'), ('start_datetime', '>=', first_day_of_month), + ('start_datetime', '<=', last_day_of_month)]) i = -1 while current_date <= last_day_of_month: for employee in range(0, len(self.all_run_ids)): i = i + 1 - slot_id = all_slot.search( - [('resource_id', '=', self.all_run_ids[employee].employee_id.resource_id.id)]).sorted( - 'start_datetime') + slot_id = all_slot.search([('resource_id', '=', self.engineering_run_ids[employee].employee_id.resource_id.id), ('start_datetime', '>=', first_day_of_month), ('start_datetime', '<=', last_day_of_month)]).sorted('start_datetime') if i < 31: slot_id[i].write({ 'template_id': self.env['planning.slot.template'].search( diff --git a/yuthon_hr_attendance/views/yuthon_run_planning_views.xml b/yuthon_hr_attendance/views/yuthon_run_planning_views.xml index cc6090006..748127b53 100644 --- a/yuthon_hr_attendance/views/yuthon_run_planning_views.xml +++ b/yuthon_hr_attendance/views/yuthon_run_planning_views.xml @@ -31,7 +31,7 @@ - + @@ -40,7 +40,7 @@ - + @@ -81,7 +81,7 @@ - + @@ -121,7 +121,7 @@ - + diff --git a/yuthon_property/models/yuthon_property.py b/yuthon_property/models/yuthon_property.py index 003c13d1f..1877e4680 100644 --- a/yuthon_property/models/yuthon_property.py +++ b/yuthon_property/models/yuthon_property.py @@ -10,7 +10,7 @@ class YuthonProperty(models.Model): name = fields.Char(string="资产名称") referred = fields.Char(string="简称") - premises = fields.Char(string="楼盘") + premises = fields.Char(string="楼盘小区") units = fields.Char(string="单元") house_type_id = fields.Many2one('yuthon.resource.house.type', string="户型") property_room = fields.Text(string="区") @@ -28,7 +28,6 @@ class YuthonProperty(models.Model): is_done_split = fields.Boolean(string="已拆分") is_done_merge = fields.Boolean(string="已合并") - abbreviation = fields.Char(string="简称") property_floor = fields.Integer(string="楼层") property_orientation = fields.Selection([('north', '东'), ('south', '南'), ('east', '西'), ('west', '北')], string="朝向") @@ -39,20 +38,21 @@ class YuthonProperty(models.Model): state = fields.Selection([('to', '待评估'), ('done', '已评估'), ('ing', '评估中'), ('ing_handover', '移交中'), ('done_handover', '已移交'), ('filing', '备案中'), ('net', '挂网'), ('signing', '签约中'), - ('signed', '已备案'), ('leased', '已出租'), ('idle', '闲置')], string='状态', default='to') + ('signed', '已备案'), ('leased', '已租'), ('idle', '空置'), ('no_lease','不可租')], string='资产目前状态', default='to') is_meter = fields.Boolean(string="水表") + live_room = fields.Many2one('yuthon.live.room', string="居住用房") is_electricity_meter = fields.Boolean(string="电表") - yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'), ('thlc', '天河粮储'), ('thtj', '天城投建')], string='所属公司') + yuthon_company = fields.Selection([('thtz', '天河投资'), ('thwg', '天河物管'), ('thlc', '天河粮储'), ('thtj', '天投城建')], string='所属公司') admin_id = fields.Many2one('res.users', string="管理员") - purpose_id = fields.Many2one('yuthon.resource.purpose', string="资产用途") - mgmt_type_id = fields.Many2one('yuthon.resource.management.type', string="管理类型") + purpose_id = fields.Many2one('yuthon.resource.purpose', string="管理类型") + mgmt_type_id = fields.Many2one('yuthon.resource.management.type', string="权属类型") is_confirm_authorization = fields.Boolean(string="确权") owner_id = fields.Many2one('yuthon.owner.message', string="权属人") property_card = fields.Html(string="产权证") life_timer = fields.Datetime(string="使用时间") property_use_time = fields.Selection([('a', '70年'), ('b', '40年')], string="使用年限") - property_precinct = fields.Char(string="片区") - asset_type_id = fields.Many2one('yuthon.resource.type', string="资产类型") + property_precinct = fields.Char(string="所属片区") + asset_type_id = fields.Many2one('yuthon.resource.type', string="出租类型") is_hvac = fields.Boolean(string="使用中央空调") is_handle_land = fields.Boolean(string="办理土地有偿使用手续") property_use_id = fields.Integer(string="物业用途ID") @@ -70,8 +70,8 @@ class YuthonProperty(models.Model): end_date = fields.Date(string="失效日期") lessee_id = fields.Many2one('yuthon.property.lessee', string='承租方') manage_standard = fields.Char(string="物业管理费标准") - title_address = fields.Char(string="产权地址") - rental_address = fields.Char(string="出租地址") + title_address = fields.Text(string="产权地址") + rental_address = fields.Text(string="出租地址") ame = fields.Char(string='标题') decoration_type = fields.Selection([('blank', '毛坯'), ('hardcover', '精装'), ('brands', '简装'), ('rsz', '豪装')], string="装修类型") @@ -303,7 +303,7 @@ class ManageInformationLine(models.Model): _description = '管理信息明细行' yuthon_property_id = fields.Many2one('yuthon.property', string="关联物业信息") - purpose_id = fields.Many2one('yuthon.resource.purpose', string="资产用途") + purpose_id = fields.Many2one('yuthon.resource.purpose', string="管理类型") precinct = fields.Char(string="片区") admin_id = fields.Many2one('res.users', string="管理员") yuthon_company = fields.Selection([('thtz', '天河投资集团'), ('thwg', '天河物管'), ('thlc', '天河粮储'), ('thtj', '天城投建')], string="所属公司") diff --git a/yuthon_property/models/yuthon_resource_mgmt_config.py b/yuthon_property/models/yuthon_resource_mgmt_config.py index 8bc408625..00fe6cf8a 100644 --- a/yuthon_property/models/yuthon_resource_mgmt_config.py +++ b/yuthon_property/models/yuthon_resource_mgmt_config.py @@ -25,9 +25,9 @@ class YuthonResourcePurpose(models.Model): class YuthonResourceManagementType(models.Model): _name = 'yuthon.resource.management.type' - _description = '管理类型' + _description = '权属类型' - name = fields.Char(string="管理类型") + name = fields.Char(string="权属类型") class YuthonResourceBillingType(models.Model): @@ -55,3 +55,9 @@ class YuthonRentalPurposes(models.Model): _description = '出租用途' name = fields.Char(string="出租用途") + +class YuthonLiveRoom(models.Model): + _name = 'yuthon.live.room' + _description = '居住用房' + + name = fields.Char(string="居住用房") diff --git a/yuthon_property/security/ir.model.access.csv b/yuthon_property/security/ir.model.access.csv index 7c00fef8d..29fe8da90 100644 --- a/yuthon_property/security/ir.model.access.csv +++ b/yuthon_property/security/ir.model.access.csv @@ -43,4 +43,5 @@ access_property_check_stairs,property_check_stairs,model_property_check_stairs,b access_property_meter_reading,property_meter_reading,model_property_meter_reading,base.group_user,1,1,1,1 access_property_message_fee,property_message_fee,model_property_message_fee,base.group_user,1,1,1,1 access_yuthon_penalty_setting,yuthon_penalty_setting,model_yuthon_penalty_setting,base.group_user,1,1,1,1 -access_yuthon_tariff_setting,yuthon_tariff_setting,model_yuthon_tariff_setting,base.group_user,1,1,1,1 \ No newline at end of file +access_yuthon_tariff_setting,yuthon_tariff_setting,model_yuthon_tariff_setting,base.group_user,1,1,1,1 +access_yuthon_live_room,yuthon_live_room,model_yuthon_live_room,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/yuthon_property/views/menuitem.xml b/yuthon_property/views/menuitem.xml index 17871af57..1ffda78a9 100644 --- a/yuthon_property/views/menuitem.xml +++ b/yuthon_property/views/menuitem.xml @@ -301,7 +301,7 @@ sequence="50"/> - @@ -309,9 +309,10 @@ action="yuthon_resource_house_type_action" sequence="20"/> + - @@ -323,6 +324,8 @@ action="yuthon_property_tariff_action" sequence="35"/> + diff --git a/yuthon_property/views/yuthon_property_views.xml b/yuthon_property/views/yuthon_property_views.xml index e37cd4311..c825e162d 100644 --- a/yuthon_property/views/yuthon_property_views.xml +++ b/yuthon_property/views/yuthon_property_views.xml @@ -49,8 +49,9 @@ - + + @@ -188,7 +189,7 @@ - + diff --git a/yuthon_property/views/yuthon_resource_mgmt_config_views.xml b/yuthon_property/views/yuthon_resource_mgmt_config_views.xml index 87e0c101c..b9f983569 100644 --- a/yuthon_property/views/yuthon_resource_mgmt_config_views.xml +++ b/yuthon_property/views/yuthon_resource_mgmt_config_views.xml @@ -11,7 +11,7 @@ - 资产类型 + 出租类型 yuthon.resource.type tree @@ -56,7 +56,7 @@ - 管理类型 + 权属类型 yuthon.resource.management.type tree @@ -118,4 +118,18 @@ yuthon.rental.purpose tree + + yuthon.live.room.tree + yuthon.live.room + + + + + + + + 居住用房配置 + yuthon.live.room + tree + diff --git a/yuthon_property_approval/models/property_evaluate_application.py b/yuthon_property_approval/models/property_evaluate_application.py index dea392ccc..b366fee4d 100644 --- a/yuthon_property_approval/models/property_evaluate_application.py +++ b/yuthon_property_approval/models/property_evaluate_application.py @@ -50,7 +50,7 @@ class EvaluateApplicationLine(models.Model): owner_id = fields.Many2one('yuthon.owner.message', string="权属人") assessment_category = fields.Selection([('rent_money', '租金'), ('value', '价值')], string="评估类别") registered_use = fields.Char(string='证载用途') - purpose_id = fields.Many2one('yuthon.resource.purpose', string="资产用途") + purpose_id = fields.Many2one('yuthon.resource.purpose', string="管理类型") rental_conditions = fields.Text(string='出租条件') current_status = fields.Date(string='现状(合同到期日)') evaluation_area = fields.Float(string='评估面积(m²)') diff --git a/yuthon_property_approval/models/property_information.py b/yuthon_property_approval/models/property_information.py index eeb2d1c2f..a2cc0f935 100644 --- a/yuthon_property_approval/models/property_information.py +++ b/yuthon_property_approval/models/property_information.py @@ -22,6 +22,6 @@ class PropertyInformation(models.Model): admin_id = fields.Many2one('res.users', string="管理员") precinct = fields.Char(string="片区") address = fields.Text(string="物业地址") - management_type = fields.Char(string="管理类型") + management_type = fields.Char(string="权属类型") property_id = fields.Char(string="物业ID") diff --git a/yuthon_property_approval/models/property_management.py b/yuthon_property_approval/models/property_management.py index 9727bb29e..5d34f6eae 100644 --- a/yuthon_property_approval/models/property_management.py +++ b/yuthon_property_approval/models/property_management.py @@ -29,7 +29,7 @@ class PropertyInformationDetailLines(models.Model): new_company = fields.Char(string="新公司") new_admin = fields.Char(string="新管理员") new_precincts = fields.Char(string="新片区") - new_management_type = fields.Char(string="新管理类型") + new_management_type = fields.Char(string="新权属类型") diff --git a/yuthon_property_approval/models/property_record.py b/yuthon_property_approval/models/property_record.py index 2ed337688..c0eb2e8a5 100644 --- a/yuthon_property_approval/models/property_record.py +++ b/yuthon_property_approval/models/property_record.py @@ -29,7 +29,7 @@ class EvaluatedApplicationLine(models.Model): owner_id = fields.Many2one('yuthon.owner.message', string="权属人") assessment_category = fields.Selection([('rent_money', '租金'), ('value', '价值')], string="评估类别") registered_use = fields.Char(string='证载用途') - purpose_id = fields.Many2one('yuthon.resource.purpose', string="资产用途") + purpose_id = fields.Many2one('yuthon.resource.purpose', string="管理类型") rental_conditions = fields.Text(string='出租条件') current_status = fields.Date(string='现状(合同到期日)') evaluation_area = fields.Float(string='评估面积(m²)') diff --git a/yuthon_work_brand/views/attendance_menu.xml b/yuthon_work_brand/views/attendance_menu.xml index e47bc0940..bc65d6a0f 100644 --- a/yuthon_work_brand/views/attendance_menu.xml +++ b/yuthon_work_brand/views/attendance_menu.xml @@ -20,126 +20,6 @@ parent="hr_attendance_root_board" action="yuthon_hr_attendance.view_action_card_remind" sequence="3"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 3c9c11d55d72e4804735c016f187293940c7b361 Mon Sep 17 00:00:00 2001 From: zhouzhou <123@qq.com> Date: Sat, 21 Dec 2024 21:07:41 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../static/description/planning.png | Bin 0 -> 3630 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 yuthon_work_brand/static/description/planning.png diff --git a/yuthon_work_brand/static/description/planning.png b/yuthon_work_brand/static/description/planning.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0d47263d9b9720168ac1e4085b4fedc0ca5a24 GIT binary patch literal 3630 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 Date: Sat, 21 Dec 2024 21:11:28 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_hr_attendance/views/go_approval.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yuthon_hr_attendance/views/go_approval.xml b/yuthon_hr_attendance/views/go_approval.xml index c86f27bef..7fed44dc2 100644 --- a/yuthon_hr_attendance/views/go_approval.xml +++ b/yuthon_hr_attendance/views/go_approval.xml @@ -29,10 +29,10 @@ - - + +