@@ -14,36 +14,6 @@
|
||||
<field name="node_btn_name" string="" groups="soong_workflow.group_soong_workflow_manager"/>
|
||||
<field name="document_ids" string="" widget="preview_many2many"/>
|
||||
</tree>
|
||||
<kanban class="o_kanban_mobile">
|
||||
<field name="name"/>
|
||||
<field name="comment" />
|
||||
<field name="done_by" />
|
||||
<field name="lase_click_date" />
|
||||
<field name="approval_state"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="o_kanban_record d-md-none card h-100">
|
||||
<div class="card-header"
|
||||
t-att-class="{'bg-success': approval_state == '2', 'bg-danger': approval_state == '3', 'bg-warning': approval_state == '1', 'bg-secondary': approval_state == '0'}">
|
||||
<strong>
|
||||
<field name="node" />
|
||||
</strong>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="mb-2">
|
||||
<small>经办人: [<field name="done_by" />] </small>
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<small>
|
||||
<field name="lase_click_date"
|
||||
widget="datetime" format="short" />
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</page>
|
||||
<page string="审批详情" invisible="not work_end">
|
||||
|
||||
@@ -25,6 +25,7 @@ class YuthonHrEmployee(models.Model):
|
||||
'default_onboarding_date': employee.entry_date,
|
||||
'default_end_of_contract': employee.entry_date,
|
||||
'default_parent_id': employee.parent_id.id,
|
||||
'default_version': employee.contract_id.version if employee.contract_id else False,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from odoo import models, fields, api
|
||||
from odoo.exceptions import UserError
|
||||
from datetime import datetime, time, timedelta, date
|
||||
|
||||
|
||||
class YuthonReassignmentApproval(models.Model):
|
||||
@@ -23,6 +24,7 @@ class YuthonReassignmentApproval(models.Model):
|
||||
is_issues = fields.Boolean(string='是否上会')
|
||||
issues_result = fields.Html(string="会议结果")
|
||||
related_issues_id = fields.Many2one('issue.library', string="关联议题")
|
||||
version = fields.Char(string="版本")
|
||||
urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度',
|
||||
default='normal')
|
||||
active = fields.Boolean('Active', default=True, tracking=True)
|
||||
@@ -73,6 +75,7 @@ class YuthonReassignmentApproval(models.Model):
|
||||
for record in reassignment_approval_ids:
|
||||
if record.change_date <= current_date:
|
||||
employee = record.employee_id
|
||||
old_contract = employee.contract_id
|
||||
update_vals = {}
|
||||
if record.change_department_id:
|
||||
update_vals['department_id'] = record.change_department_id.id
|
||||
@@ -83,16 +86,42 @@ class YuthonReassignmentApproval(models.Model):
|
||||
if update_vals:
|
||||
employee.write(update_vals)
|
||||
|
||||
if employee.contract_id:
|
||||
contract_vals = {}
|
||||
if old_contract:
|
||||
version_str = self.version.lstrip('V')
|
||||
main_version = version_str.split('.')[0]
|
||||
new_main_version = int(main_version) + 1
|
||||
new_version = f"V{new_main_version}.0"
|
||||
new_contract_vals = {
|
||||
'employee_id': old_contract.employee_id.id,
|
||||
'name': old_contract.name,
|
||||
'state': 'open',
|
||||
'party_id': old_contract.party_id.id,
|
||||
'is_annual_salary': old_contract.is_annual_salary,
|
||||
'date_start': record.change_date,
|
||||
'date_end': False,
|
||||
'resource_calendar_id': old_contract.resource_calendar_id.id,
|
||||
'structure_type_id': old_contract.structure_type_id.id,
|
||||
'department_id': old_contract.department_id.id,
|
||||
'job_id': old_contract.job_id.id,
|
||||
'termination_date': old_contract.termination_date,
|
||||
'salary_group_id': old_contract.salary_group_id.id,
|
||||
'contract_type_id': old_contract.contract_type_id.id,
|
||||
'version': new_version,
|
||||
'wage': old_contract.wage,
|
||||
}
|
||||
|
||||
if record.change_job_id:
|
||||
contract_vals['job_id'] = record.change_job_id.id
|
||||
new_contract_vals['job_id'] = record.change_job_id.id
|
||||
if record.change_structure_id:
|
||||
contract_vals['struct_id'] = record.change_structure_id.id
|
||||
new_contract_vals[ 'structure_type_id'] = record.change_structure_id.id
|
||||
if record.change_department_id:
|
||||
contract_vals['department_id'] = record.change_department_id.id
|
||||
if contract_vals:
|
||||
employee.contract_id.write(contract_vals)
|
||||
new_contract_vals['department_id'] = record.change_department_id.id
|
||||
new_contract = self.env['hr.contract'].create(new_contract_vals)
|
||||
old_contract.write({
|
||||
'state': 'cancel',
|
||||
'date_end': record.change_date - timedelta(days=1),
|
||||
})
|
||||
employee.contract_id = new_contract.id
|
||||
record.is_execution = True
|
||||
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="work_end" invisible="1"/>
|
||||
<field name="version" invisible="1"/>
|
||||
<field name="users_id"/>
|
||||
<field name="department_id" options="{'no_create': True}"/>
|
||||
</group>
|
||||
|
||||
@@ -997,27 +997,8 @@ class PropertyRentList(models.Model):
|
||||
tenure_type = fields.Selection(related='contract_id.tenure_type', string="权属类型", store=True)
|
||||
property_address = fields.Text(string="物业信息", compute='get_property_address')
|
||||
contract_sort = fields.Selection(related='contract_id.contract_sort', string="资产类型", store=True) # 数据库存储问题,无意义
|
||||
contract_sort1 = fields.Selection([('property', '物业'), ('guanggao', '广告位'),('parking', '停车场'), ('guanzi', '管子间'), ('room', '机房'), ('base_station','基站'), ('other', '其他')], string="资产类型", default='property')
|
||||
contract_sort1 = fields.Selection([('property', '物业'), ('guanggao', '广告位'), ('parking', '停车场'), ('guanzi', '管子间'), ('room', '机房'), ('base_station','基站'), ('other', '其他')], string="资产类型", default='property')
|
||||
company_id = fields.Many2one(related='contract_id.lessor_id', string="出租方公司", store=True)
|
||||
is_company = fields.Boolean(string='是否是本公司', compute='_compute_is_company', store=False)
|
||||
|
||||
@api.depends('company_id')
|
||||
@api.depends_context('uid', 'company')
|
||||
def _compute_is_company(self):
|
||||
user_companies = self.env['res.company'].browse(self.env.companies.ids)
|
||||
user_company_names = set(user_companies.mapped('name'))
|
||||
account_mapping = {
|
||||
'集团本部': ['天河投资', '天投城建'],
|
||||
'天河物管': ['天河物管'],
|
||||
'天河粮储': ['天河粮储']
|
||||
}
|
||||
for record in self:
|
||||
record.is_company = False
|
||||
for company_name, allowed_accounts in account_mapping.items():
|
||||
if company_name in user_company_names:
|
||||
if record.company_id.referred in allowed_accounts:
|
||||
record.is_company = True
|
||||
break
|
||||
|
||||
@api.depends('contract_id')
|
||||
def get_property_address(self):
|
||||
|
||||
@@ -128,7 +128,7 @@
|
||||
<filter name="group_tenure_type" string="权属类型" context="{'group_by':'tenure_type'}"/>
|
||||
<filter name="group_admin_id" string="管理员" context="{'group_by':'admin_id'}"/>
|
||||
<filter name="group_due_date" string="应收日期" context="{'group_by':'due_date:month'}"/>
|
||||
<filter name="contract_id" string="合同" context="{'group_by':'contract_id'}"/>
|
||||
<filter name="contract_id" string="合同" context="{'group_by':'contract_id'}"/>
|
||||
<filter name="group_property_id" string="物业" context="{'group_by':'property_id'}"/>
|
||||
<filter name="group_lessee_id" string="承租方" context="{'group_by':'lessee_id'}"/>
|
||||
</group>
|
||||
@@ -159,7 +159,7 @@
|
||||
<field name="name">租金列表</field>
|
||||
<field name="res_model">property.rent.list</field>
|
||||
<field name="view_mode">tree,search</field>
|
||||
<field name="domain">[('is_push', '=', False), ('is_company', '=', True)]</field>
|
||||
<field name="domain">[('is_push', '=', False)]</field>
|
||||
<field name="context">{'search_default_group_admin_id': True, 'search_default_group_due_date': True}</field>
|
||||
<field name="search_view_id" ref="yuthon_property_approval.view_property_rent_list_search"/>
|
||||
</record>
|
||||
|
||||
Reference in New Issue
Block a user