添加功能

This commit is contained in:
zhou
2025-05-30 20:55:53 +08:00
parent fa7fa02aa0
commit f9bc26d7e8
50 changed files with 241 additions and 77 deletions
@@ -34,7 +34,7 @@
<field name="inspector_state"/>
</group>
<group>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="end_data"/>
</group>
</group>
@@ -37,7 +37,7 @@
<field name="flow_end" invisible="1"/>
<field name="is_carbon_copy"/>
<field name="is_apostille"/>
<field name="employee_ids" widget="many2many_tags" invisible="not is_carbon_copy"/>
<field name="employee_ids" widget="many2many_tags" invisible="not is_carbon_copy" options="{'no_create': True}"/>
<field name="is_end"/>
</group>
</group>
@@ -11,7 +11,7 @@
<field name="node_btn_name" invisible="1"/>
<field name="res_id" invisible="1"/>
<field name="res_model" invisible="1"/>
<field name="employee_ids" widget="many2many_tags" string="人员范围"/>
<field name="employee_ids" widget="many2many_tags" string="人员范围" options="{'no_create': True}"/>
</group>
<footer>
<button name="add_comment" string="确认" type="object" class="oe_highlight"/>
@@ -49,7 +49,7 @@
<field name="trans_link_id" string="转交节点" invisible="node_btn_name == '退回'"/>
<field name="employee_trans_domain_ids" invisible="1"/>
<field name="employee_ids1" widget="many2many_tags" string="人员范围" invisible="1"/>
<field name="employee_ids" widget="many2many_tags" string="人员范围" domain="[('id', 'in', employee_ids1)]"/>
<field name="employee_ids" widget="many2many_tags" string="人员范围" domain="[('id', 'in', employee_ids1)]" options="{'no_create': True}"/>
</group>
<div invisible="node_btn_name != '结束'">
<h2>当前流程是否结束,请确认</h2>
@@ -58,9 +58,9 @@
<h2>当前流程是否收回,请确认</h2>
</div>
<group invisible="node_btn_name != '分发'">
<field name="employee_ids" widget="many2many_tags" string="董事长" domain="[('user_role_id.name', '=', '董事长')]"/>
<field name="circulated_employee_ids" widget="many2many_tags"/>
<field name="supervising_employee_ids" widget="many2many_tags" invisible="not is_supervising"/>
<field name="employee_ids" widget="many2many_tags" string="董事长" domain="[('user_role_id.name', '=', '董事长')]" options="{'no_create': True}"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="supervising_employee_ids" widget="many2many_tags" invisible="not is_supervising" options="{'no_create': True}"/>
</group>
<footer>
<button name="add_comment" string="确认" type="object" class="oe_highlight"/>
@@ -35,7 +35,7 @@
<field name="type_of_work"/>
</xpath>
<xpath expr="//field[@name='requires_allocation']" position="before">
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
</xpath>
<xpath expr="//field[@name='leave_documents_id']" position="after">
<field name="duration_calculation"/>
+1 -1
View File
@@ -72,7 +72,7 @@
<field name="date_end" invisible="not is_hour"/>
<field name="reason_application"/>
<field name="documents_ids" widget="preview_many2many"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="is_issues" invisible="is_issues == False"/>
<field name="meal"/>
<field name="details"/>
@@ -51,7 +51,7 @@
<form string="hr attendance detail">
<sheet>
<group>
<field name="employee_id" widget="ztree_select"/>
<field name="employee_id" widget="ztree_select" options="{'no_create': True}"/>
<field name="company_id" invisible="1"/>
<field name="department_id" widget="ztree_select"/>
<field name="groupname"/>
@@ -12,7 +12,7 @@
<!-- <button name="button_all" string="班次更新" type="object" class="btn btn-primary"/>-->
<!-- <button name="labor_update" string="考勤更新" type="object" class="btn btn-primary"/>-->
</header>
<field name="employee_id" class="list_current_data"/>
<field name="employee_id" class="list_current_data" options="{'no_create': True}"/>
<field name="current_data" optional="show" class="list_current_data"/>
<field name="check_in" optional="show" widget="time"/>
<field name="check_out" optional="show" widget="time" class="list_current_data"/>
@@ -73,7 +73,7 @@
</group>
<group>
<field name="duration"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="department_id" invisible="1"/>
<field name="overtime_hours" readonly="1"/>
<field name="type_overtime"/>
@@ -46,7 +46,7 @@
<tree editable="bottom">
<field name="duty_plan_id" column_invisible="1"/>
<field name="sequence" widget="handle"/>
<field name="employee_ids" required="1"
<field name="employee_ids" required="1" options="{'no_create': True}"
domain="[('department_id.name', 'in', ['仓储组', '综合组','保管组',
'机安组','1库', '2库', '3库','联安粮库'])]"
widget="many2many_tags"/>
@@ -35,7 +35,7 @@
<tree editable="bottom">
<field name="engineering_planning_id" column_invisible="1"/>
<field name="sequence" />
<field name="employee_id" widget="ztree_select"/>
<field name="employee_id" widget="ztree_select" options="{'no_create': True}"/>
</tree>
</field>
</group>
@@ -31,7 +31,7 @@
<field name="planning_a_ids" string=" ">
<tree editable="bottom">
<field name="sequence" widget="handle" />
<field name="employee_id" widget="ztree_select"/>
<field name="employee_id" widget="ztree_select" options="{'no_create': True}"/>
<field name="regular_holidays"/>
</tree>
</field>
@@ -40,7 +40,7 @@
<field name="planning_b_ids" string=" ">
<tree editable="bottom">
<field name="sequence" widget="handle" />
<field name="employee_id" widget="ztree_select"/>
<field name="employee_id" widget="ztree_select" options="{'no_create': True}"/>
<field name="regular_holidays"/>
</tree>
</field>
@@ -49,7 +49,7 @@
<field name="planning_c_ids" string=" ">
<tree editable="bottom">
<field name="sequence" widget="handle" />
<field name="employee_id" widget="ztree_select"/>
<field name="employee_id" widget="ztree_select" options="{'no_create': True}"/>
<field name="regular_holidays"/>
</tree>
</field>
@@ -56,7 +56,7 @@
<field name="resource_id" domain="[('company_id', '=', company_id)]"/>
<field name="department_id" invisible="1"/>
<field name="slot_id"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="start_list_ids" widget="many2many_tags" invisible="1"/>
<field name="users_id" invisible="1"/>
</group>
@@ -16,7 +16,7 @@
</xpath>
<xpath expr="//field[@name='share']" position="after">
<field name="users_ids" widget="many2many_tags" invisible="1"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="department_ids" widget="many2many_tags"/>
<field name="user_role_ids" widget="many2many_tags"/>
<field name="users_role_group_ids" widget="many2many_tags"/>
@@ -8,7 +8,7 @@
<header>
<button name="property_reimbursement_form" string="提交体检费报销审批" type="object" class="oe_highlight"/>
</header>
<field name="employee_id" widget="ztree_select"/>
<field name="employee_id" widget="ztree_select" options="{'no_create': True}"/>
<field name="company_id" required="1" optional="show"/>
<field name="this_year_usage"/>
<field name="this_year_quota"/>
@@ -32,9 +32,9 @@
<form string="体检费管理" create="0">
<sheet>
<div class="oe_title">
<label for="employee_id" widget="ztree_select"/>
<label for="employee_id" widget="ztree_select" options="{'no_create': True}"/>
<h1>
<field name="employee_id" widget="ztree_select"/>
<field name="employee_id" widget="ztree_select" options="{'no_create': True}"/>
</h1>
</div>
<group>
@@ -8,7 +8,7 @@
<sheet>
<group>
<field name="department_id" widget="ztree_select"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="attendance_id"/>
</group>
</sheet>
@@ -9,7 +9,7 @@
<group>
<group>
<field name="job_id" invisible="1"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
</group>
<group>
</group>
@@ -26,7 +26,7 @@
<tree editable="bottom">
<field name="applicant_id" column_invisible="1"/>
<field name="applicant_time"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="appraise"/>
<field name="interview_stage_id"/>
</tree>
@@ -64,7 +64,7 @@
<field name="stage_id"/>
<field name="interview_time" required="1"/>
<field name="tage_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<button name="button_applicant_ids" type="object" string="详细信息" class="btn-primary"/>
</tree>
</field>
@@ -10,7 +10,7 @@
<field name="interview_approval_wizard_id" column_invisible="1"/>
<field name="name"/>
<field name="applicant_time"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="stage_id" string="当前阶段"/>
<field name="interview_stage_id"/>
<field name="evaluation"/>
+9 -5
View File
@@ -9,16 +9,20 @@ class IssueLibrary(models.Model):
_inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
_rec_name = 'name'
name = fields.Char(string='议题事项')
name_text = fields.Text(string='议题事项', compute='_compute_name', readonly=False)
name = fields.Char(string='议题名称')
name_text = fields.Text(string='议题名称', compute='_compute_name', readonly=False)
depart_opinions = fields.Text(string='部门意见')
topic_content = fields.Text(string='议题内容')
will_based = fields.Text(string='上会依据')
code = fields.Char(string='编号', required=True, copy=False,
default=lambda self: self.env['ir.sequence'].next_by_code('issue_library_code'))
issue_state = fields.Selection([('draft', '待提交'), ('approval', '审批中'), ('on_approval', '已审批'),
('will', '待上会'), ('on_meet', '已上会'), ('cancel', '已取消')],
default='draft', string="议题状态")
is_party = fields.Boolean(string="党支委会", compute='_compute_issue_library_line_ids', store=True)
is_class = fields.Boolean(string="班子会", compute='_compute_issue_library_line_ids', store=True)
is_boss = fields.Boolean(string="董事会", compute='_compute_issue_library_line_ids', store=True)
is_party = fields.Boolean(string="党支委会", store=True)
is_general_branch = fields.Boolean(string="党总支", store=True)
is_class = fields.Boolean(string="班子会", store=True)
is_boss = fields.Boolean(string="董事会", store=True)
is_note = fields.Boolean(string="上级单位", compute='_compute_issue_library_line_ids', store=True)
is_district_state = fields.Boolean(string="区国资局", compute='_compute_issue_library_line_ids', store=True)
is_district_government = fields.Boolean(string="区政府", compute='_compute_issue_library_line_ids', store=True)
+1 -1
View File
@@ -17,7 +17,7 @@
<tree editable="bottom">
<field name="meeting_booking_id" column_invisible="1"/>
<field name="issue_library_id"/>
<field name="employee_id"/>
<field name="employee_id" options="{'no_create': True}"/>
<field name="attendees"/>
<field name="is_sanda"/>
<field name="decision_results"/>
+2 -2
View File
@@ -6,7 +6,7 @@
<field name="arch" type="xml">
<tree string="议题审批">
<field name="name"/>
<field name="department_id" widget="ztree_select"/>
<field name="department_id"/>
<field name="issue_display" widget="json_template"/>
<field name="decision_display" widget="json_template"/>
</tree>
@@ -62,7 +62,7 @@
<tree editable="bottom">
<field name="issue_approval_id" column_invisible="1"/>
<field name="issue_library_id"/>
<field name="employee_id" widget="ztree_select"/>
<field name="employee_id" widget="ztree_select" options="{'no_create': True}"/>
<field name="approval_decision_sequence"/>
<field name="is_party"/>
<field name="is_class"/>
+13 -8
View File
@@ -13,9 +13,10 @@
</header>
<field name="name" column_invisible="1"/>
<field name="name_text" class="list_width"/>
<field name="is_party"/>
<field name="is_general_branch" groups="yuthon_salary.group_jtbb_user"/>
<field name="is_party" groups="yuthon_salary.group_lc_user,yuthon_salary.group_wg_user"/>
<field name="is_class"/>
<field name="is_boss"/>
<field name="is_boss" groups="yuthon_salary.group_jtbb_user"/>
<field name="is_district_state"/>
<field name="is_district_government"/>
<field name="is_district_party"/>
@@ -77,18 +78,21 @@
<field name="users_role_ids" invisible="1" widget="many2many_tags"/>
</group>
</group>
<group col="4">
<group col="5" string="决策程序">
<group>
<field name="is_party"/>
<field name="is_general_branch" groups="yuthon_salary.group_jtbb_user"/>
</group>
<group>
<field name="is_party" groups="yuthon_salary.group_lc_user,yuthon_salary.group_wg_user"/>
</group>
<group>
<field name="is_class"/>
</group>
<group>
<field name="is_boss"/>
<field name="is_boss" groups="yuthon_salary.group_jtbb_user"/>
</group>
<group>
<field name="is_note"/>
<field name="is_note" invisible="1"/>
</group>
</group>
<notebook>
@@ -192,7 +196,8 @@
<field name="name"/>
<field name="code"/>
<field name="creart_datetime"/>
<field name="is_party"/>
<field name="is_general_branch" groups="yuthon_salary.group_jtbb_user"/>
<field name="is_party" groups="yuthon_salary.group_lc_user,yuthon_salary.group_wg_user"/>
<field name="is_district_state"/>
<field name="is_district_government"/>
<field name="is_district_party"/>
@@ -476,7 +481,7 @@
<field name="name"/>
<field name="code"/>
<field name="creart_datetime"/>
<field name="is_boss"/>
<field name="is_boss" groups="yuthon_salary.group_jtbb_user"/>
<field name="is_district_state"/>
<field name="is_district_government"/>
<field name="is_district_party"/>
@@ -58,7 +58,7 @@
<field name="is_change_notice"/>
</group>
<group>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="is_sticky"/>
</group>
<group>
@@ -128,8 +128,8 @@
<field name="user_id" required="1"/>
</group>
<group>
<field name="department_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="department_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
</group>
<group>
<field name="read_number"/>
+1 -1
View File
@@ -80,7 +80,7 @@
<field name="users_role_ids" widget="many2many_tags"/>
</group>
<group>
<field name="employee_ids" widget="many2many_tags" context="{'tree_view_ref':'yuthon_notice.view_yuthon_cs_tree'}"/>
<field name="employee_ids" widget="many2many_tags" context="{'tree_view_ref':'yuthon_notice.view_yuthon_cs_tree'}" options="{'no_create': True}"/>
<field name="users_ids" invisible="1" widget="many2many_tags"/>
</group>
</group>
@@ -19,7 +19,6 @@ class YuthonOfficialIncomingNormal(models.Model):
main_text = fields.Text(string='正文')
come_file_id = fields.Char(string="来文编号")
incoming_file_id = fields.Char(string="收文编号")
company_id = fields.Many2one('res.company', string="单位") # 数据错误数据
urgency_level = fields.Selection([('normal', '一般'), ('urgent', '紧急'), ('extra_urgent', '特急')], string="紧急程度", default='normal')
secret_level = fields.Selection([('normal', '一般'), ('urgent', '秘密'), ('secret', '机密'), ('so_secret', '绝密')], string="密级")
time_date = fields.Datetime(string="日期", default=fields.Datetime.now)
@@ -6,7 +6,7 @@
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="department_id" widget="ztree_select"/>
<field name="department_id"/>
<field name="time_date"/>
</tree>
</field>
@@ -58,7 +58,7 @@
</group>
<group>
<field name="users_id"/>
<field name="department_id" widget="ztree_select"/>>
<field name="department_id" widget="ztree_select"/>
<field name="is_supervising"/>
<field name="deadline" invisible="not is_supervising"/>
<field name="done_date" invisible="not is_supervising"/>
@@ -73,7 +73,7 @@
<field name="copy_flats"/>
<field name="servings_number"/>
<field name="department_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="users_role_ids" widget="many2many_tags"/>
</group>
</group>
@@ -73,7 +73,7 @@
<tree editable="bottom">
<field name="organization_id" column_invisible="1"/>
<field name="in_charge_role_id"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="weight"/>
</tree>
</field>
@@ -50,7 +50,7 @@
<!-- <field name="dimension"/>-->
<field name="change_employee_library_id" column_invisible="1"/>
<field name="department_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="start_index_time"/>
<field name="end_index_time"/>
<button name="open_record" type="object" string="详情信息" class="btn btn-primary"/>
@@ -62,9 +62,9 @@
<tree editable="bottom" delete="false">
<field name="new_change_employee_library_id" column_invisible="1"/>
<field name="new_dimension"/>
<field name="new_department_ids" widget="many2many_tags"/>
<field name="new_users_role_ids" widget="many2many_tags"/>
<field name="new_employee_ids" widget="many2many_tags"/>
<field name="new_department_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="new_users_role_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="new_employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="new_start_index_time"/>
<field name="new_end_index_time"/>
</tree>
@@ -52,7 +52,7 @@
<tree editable="bottom">
<field name="role_id" column_invisible="1"/>
<field name="in_charge_role_id"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="weight" sum="Total"/>
</tree>
</field>
@@ -54,7 +54,7 @@
<field name="check_norm"/>
<field name="department_ids" widget="many2many_tags"/>
<field name="in_charge_role_id"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
</tree>
</field>
</group>
@@ -72,7 +72,7 @@
<field name="new_check_norm"/>
<field name="new_department_ids" widget="many2many_tags"/>
<field name="new_in_charge_role_id"/>
<field name="new_employee_ids" widget="many2many_tags"/>
<field name="new_employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
</tree>
</field>
</group>
@@ -37,7 +37,7 @@
</group>
<group>
<field name="department_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
</group>
</group>
<group>
@@ -42,7 +42,7 @@
<group col="4">
<group>
<field name="sequence"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="dimension"/>
</group>
<group>
@@ -22,7 +22,7 @@
<field name="ratio" optional="hide"/>
<field name="amount_wastage" optional="hide"/>
<field name="dosage"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="reading_type" optional="hide"/>
<field name="generate_charges" optional="hide"/>
<field name="other" optional="hide"/>
@@ -40,7 +40,7 @@
<group col="2">
<group>
<field name="code"/>
<field name="employee_ids" widget="many2many_tags" readonly="1"/>
<field name="employee_ids" widget="many2many_tags" readonly="1" options="{'no_create': True}"/>
<field name="position"/>
<field name="property_id"/>
<field name="lessee_id"/>
@@ -22,7 +22,7 @@
<field name="ratio" optional="hide"/>
<field name="amount_wastage" optional="hide"/>
<field name="dosage"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="reading_type" optional="hide"/>
<field name="generate_charges" optional="hide"/>
<field name="other" optional="hide"/>
@@ -40,7 +40,7 @@
<group col="2">
<group>
<field name="code"/>
<field name="employee_ids" widget="many2many_tags" readonly="1"/>
<field name="employee_ids" widget="many2many_tags" readonly="1" options="{'no_create': True}"/>
<field name="position"/>
<field name="property_id"/>
<field name="lessee_id"/>
@@ -7,7 +7,7 @@
<tree string="片区管理" editable="bottom" limit="20">
<field name="sequence" widget="handle"/>
<field name="name"/>
<field name="employee_id"/>
<field name="employee_id" options="{'no_create': True}"/>
</tree>
</field>
</record>
+1
View File
@@ -73,6 +73,7 @@
'wizard/property_physical_wizard_views.xml',
'wizard/choose_contract_wizard_views.xml',
'wizard/property_reconciliation_wizard_views.xml',
'wizard/property_management_wizard.xml',
'wizard/property_rental_wizard_views.xml',
'wizard/property_meeting_wizard_views.xml',
'views/property_menu_all.xml',
@@ -92,6 +92,16 @@ class PropertyManagement(models.Model):
})
record.write({'is_line': True})
def put_property_management(self):
return {
'name': '物业信息',
'type': 'ir.actions.act_window',
'res_model': 'property.management.wizard',
'view_mode': 'form',
'target': 'new',
'context': {'default_property_management_id': self.id}
}
# 结果保留明细行
class PropertyManagementLine(models.Model):
_name = 'property.management.line'
@@ -106,6 +116,7 @@ class PropertyManagementLine(models.Model):
precinct_id = fields.Many2one('yuthon.precinct.message', string="所属片区")
tenure_type = fields.Selection([('self', '自有'), ('agency', '代管')], string='权属类型')
# 初始明细行
class PropertyManagementLine2(models.Model):
_name = 'property.management.line2'
@@ -96,5 +96,5 @@ access_property_meeting_wizard,property_meeting_wizard,model_property_meeting_wi
access_property_meeting_line,property_meeting_line,model_property_meeting_line,base.group_user,1,1,1,1
access_property_management_line, property_management_line,model_property_management_line,base.group_user,1,1,1,1
access_property_management_line2, property_management_line2,model_property_management_line2,base.group_user,1,1,1,1
access_property_management_wizard, property_management_wizard,model_property_management_wizard,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
96 access_property_management_line property_management_line model_property_management_line base.group_user 1 1 1 1
97 access_property_management_line2 property_management_line2 model_property_management_line2 base.group_user 1 1 1 1
98 access_property_management_wizard property_management_wizard model_property_management_wizard base.group_user 1 1 1 1
99
100
@@ -61,7 +61,9 @@
<field name="handling_opinions"/>
<field name="document_ids" widget="preview_many2many"/>
</group>
<group string="原管理信息" invisible="is_line">
<group string="原管理信息"/>
<button type="object" class="btn btn-primary" name="put_property_management" string="批量导入物业信息"/>
<group string=" " invisible="is_line">
<field name="management_line2_ids" string=" ">
<tree editable="bottom">
<field name="property_management_id" column_invisible="1"/>
@@ -75,7 +77,7 @@
</tree>
</field>
</group>
<group string="原管理信息" invisible="not is_line">
<group string=" " invisible="not is_line">
<field name="management_line_ids" string=" ">
<tree editable="bottom">
<field name="property_management_id" column_invisible="1"/>
@@ -5,3 +5,4 @@ from . import property_add_wizard
from . import property_physical_wizard
from . import property_reconciliation_wizard
from . import property_meeting_wizard
from . import property_management_wizard
@@ -0,0 +1,89 @@
from odoo import models, fields, api, _, SUPERUSER_ID
from odoo.exceptions import ValidationError, UserError
import xlrd
import base64
import datetime
from datetime import datetime
import pandas as pd
class PropertyContractWizard(models.Model):
_name = 'property.management.wizard'
_description = '批量导入物业'
property_ids = fields.Many2many('yuthon.property', string='物业')
property_management_id = fields.Many2one('property.management', string='关联物业变更')
def confirm(self):
if not self.property_ids:
raise UserError("请选择物业!")
today = fields.Date.today()
first_record = self.property_ids[0]
# 获取第一条记录的有效管理信息
valid_manage = first_record.manage_information_ids.filtered(
lambda m: m.start_time and m.start_time <= today and
(not m.end_date or m.end_date >= today)
)
if not valid_manage:
raise UserError(f"{first_record.name} 该物业没有找到有效的管理信息!")
# 参考值集合(tenure_type, company_id, admin_id, precinct_id, purpose_id)
reference_purpose_id = valid_manage[0].purpose_id.id
reference_values = (
first_record.tenure_type,
first_record.company_id.id,
first_record.admin_id.id,
first_record.precinct_id.id,
reference_purpose_id
)
# 检查所有记录的属性是否与第一条记录一致
for record in self.property_ids[1:]:
# 获取当前记录的有效管理信息
current_valid_manage = record.manage_information_ids.filtered(
lambda m: m.start_time and m.start_time <= today and
(not m.end_date or m.end_date >= today)
)
if not current_valid_manage:
raise UserError(f"{record.name} 该物业没有找到有效的管理信息!")
current_purpose_id = current_valid_manage[0].purpose_id.id
# 当前记录的值集合
current_values = (
record.tenure_type,
record.company_id.id,
record.admin_id.id,
record.precinct_id.id,
current_purpose_id
)
# 如果有任何属性不一致,抛出统一错误
if current_values != reference_values:
raise UserError("所选记录的公司、管理类型、权属类型、管理员和所属片区必须完全一样!")
# 准备批量创建的数据
property_list = []
for record in self.property_ids:
# 查找当前物业的有效管理信息
valid_manage = record.manage_information_ids.filtered(
lambda m: m.start_time and m.start_time <= today and
(not m.end_date or m.end_date >= today)
)
manage_id = valid_manage[0].id if valid_manage else False
property_list.append((0, 0, {
'property_id': record.id,
'purpose_id': record.purpose_id.id,
'property_management_id': self.property_management_id.id,
'information_line_id': manage_id,
}))
# 一次性更新主记录
self.property_management_id.write({
'company_id': first_record.company_id.id,
'purpose_id': reference_purpose_id,
'admin_id_all': first_record.admin_id.id,
'precinct_id': first_record.precinct_id.id,
'tenure_type': first_record.tenure_type,
'management_line2_ids': property_list,
})
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="property_management_wizard_form" model="ir.ui.view">
<field name="name">property.management.wizard.form</field>
<field name="model">property.management.wizard</field>
<field name="arch" type="xml">
<form string="批量导入物业">
<sheet>
<group>
<field name="property_ids" widget="many2many_tags"/>
<field name="property_management_id"/>
</group>
<footer>
<button name="confirm" string="确认" type="object" class="oe_highlight"/>
<button string="取消" class="oe_link" special="cancel"/>
</footer>
</sheet>
</form>
</field>
</record>
<record id="action_property_management_wizard" model="ir.actions.act_window">
<field name="name">批量导入物业</field>
<field name="res_model">property.management.wizard</field>
<field name="view_mode">form</field>
</record>
</odoo>
@@ -175,3 +175,17 @@ class HrPayrollStructure(models.Model):
for payroll in payroll_ids:
for rule in payroll.rule_ids:
rule.sudo().unlink()
def update_payroll_items(self):
payroll_ids = self.env["hr.payroll.structure"].browse(
self._context.get('active_ids', self._context.get('active_id')))
category_id = self.env['hr.salary.rule.category'].search([('name', '=', '常用项')], limit=1)
for payroll in payroll_ids:
self.env['hr.salary.rule'].create({
'name': '质检员津贴',
'code': 'ZJYJT',
'category_id': category_id.id,
'struct_id': payroll.id,
'sequence': 1,
'amount_select': 'fix',
})
@@ -133,4 +133,11 @@
<field name="state">code</field>
<field name="code">action = model.delete_structure()</field>
</record>
<record id="select_update_lc" model="ir.actions.server">
<field name="name">一次性</field>
<field name="model_id" ref="hr_payroll.model_hr_payroll_structure"/>
<field name="binding_model_id" ref="hr_payroll.model_hr_payroll_structure"/>
<field name="state">code</field>
<field name="code">action = model.update_payroll_items()</field>
</record>
</odoo>
@@ -35,8 +35,13 @@
<field name="name"/>
<field name="theme"/>
<field name="background_event"/>
<field name="activity_start_time"/>
<field name="activity_end_time"/>
<label for="activity_start_time"/>
<div class="d-inline-flex w-100">
<field name="activity_start_time" string="活动开始时间:" class="me-2"
style="max-width: 10rem !important;"/>至
<field name="activity_end_time" string=" " class="ms-2"
style="max-width: 10rem !important;"/>
</div>
<field name="activity_address"/>
<field name="activity_object"/>
<field name="activity_content"/>
+1 -1
View File
@@ -45,7 +45,7 @@
</group>
<group>
<field name="insurance_id"/>
<field name="employee_ids" widget="many2many_tags"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="number"/>
<field name="fee"/>
<field name="total"/>
@@ -13,7 +13,7 @@
<field name='start_time' required="1" class="button_width"/>
<field name='task_content' required="1"/>
<field name="user_id" optional="hide"/>
<field name='employee_ids' widget="many2many_tags" required="1"/>
<field name='employee_ids' widget="many2many_tags" required="1" options="{'no_create': True}"/>
<field name="address"/>
<field name='priority'/>
<field name='end_time' optional="hide" />
@@ -22,7 +22,7 @@
<field name='remarks'/>
<field name='users_ids' widget="many2many_tags" column_invisible="1"/>
<field name='user_role_ids' widget="many2many_tags" column_invisible="1"/>
<field name='employee_ids2' widget="many2many_tags" domain="[('user_role_ids.name', 'in', ['司机'])]" class="button_width"/>
<field name='employee_ids2' widget="many2many_tags" domain="[('user_role_ids.name', 'in', ['司机'])]" class="button_width" options="{'no_create': True}"/>
<field name='task_state' readonly="1"/>
<button name="button_add_comment" string="提醒" type="object" class="oe_highlight" invisible="task_state == 'cancel'"/>
<button name="button_add_comment_cancel" string="取消" type="object" class="oe_highlight" invisible="task_state == 'cancel'"/>
@@ -143,7 +143,7 @@
<field name="user_id" domain="[('company_id', '=', company_id)]"/>
<field name="company_id" invisible="1"/>
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name='employee_ids2' widget="many2many_tags" domain="[('user_role_ids.name', 'in', ['司机'])]"/>
<field name='employee_ids2' widget="many2many_tags" domain="[('user_role_ids.name', 'in', ['司机'])]" options="{'no_create': True}"/>
<field name='users_ids' widget="many2many_tags" invisible="1"/>
<field name="user_role_ids" widget="many2many_tags" invisible="1"/>
<field name="address"/>