员工信息企微id同步

This commit is contained in:
guanhuan
2024-09-14 17:45:00 +08:00
parent 946abc5cf7
commit 98e13cba99
7 changed files with 113 additions and 1 deletions

View File

@@ -10,6 +10,8 @@
'depends': ['hr'],
'data': [
'views/hr_employee.xml',
'views/res_config_settings_views.xml',
'data/cron_data.xml',
],
'demo': [
],

15
sf_hr/data/cron_data.xml Normal file
View File

@@ -0,0 +1,15 @@
<odoo>
<data noupdate="1">
<record model="ir.cron" id="ir_cron_employee_info_sync">
<field name="name">员工企微id同步</field>
<field name="model_id" ref="hr.model_hr_employee"/>
<field name="state">code</field>
<field name="code">model._employee_info_sync()</field>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field name="doall" eval="False"/>
</record>
</data>
</odoo>

View File

@@ -1,2 +1,4 @@
# -*- coding: utf-8 -*-
from . import hr_employee
from . import res_config_setting

View File

@@ -0,0 +1,26 @@
import logging
import requests
from odoo import models, fields, api, _
_logger = logging.getLogger(__name__)
class JkmPracticeEmployee(models.Model):
_inherit = 'hr.employee'
_description = '员工信息'
we_id = fields.Char(string='企微ID', index=True)
def _employee_info_sync(self):
url = '/api/get/organization'
config = self.env['res.config.settings'].get_values()
ret = requests.post((config['ims_url'] + url), json={}, data={})
result = ret.json()['result']
if result['code'] == 200:
if result['employee_list']:
for employee_info in result['employee_list']:
if employee_info['work_email']:
self.sudo().search([('work_email', '=', employee_info['work_email'])]).write(
{'we_id': employee_info['we_id']})
else:
logging.info('_employee_info_sync error:%s' % result['message'])

View File

@@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
import logging
from odoo import api, fields, models
_logger = logging.getLogger(__name__)
class ResIMSConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'
ims_url = fields.Char('财务平台接口路径')
@api.model
def get_values(self):
"""
重载获取参数的方法,参数都存在系统参数中
:return:
"""
values = super(ResIMSConfigSettings, self).get_values()
config = self.env['ir.config_parameter'].sudo()
ims_url = config.get_param('ims_url', default='')
values.update(
ims_url=ims_url,
)
return values
def set_values(self):
super(ResIMSConfigSettings, self).set_values()
ir_config = self.env['ir.config_parameter'].sudo()
ir_config.set_param("ims_url", self.ims_url or "")

View File

@@ -7,7 +7,16 @@
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<xpath expr="//group//field[@name='work_email']" position="attributes">
<attribute name="required">1</attribute>
<attribute name="required">1</attribute>
</xpath>
<xpath expr="//page[@name='public']" position='after'>
<page string="企业微信">
<group col="2">
<group>
<field name="we_id"/>
</group>
</group>
</page>
</xpath>
</field>
</record>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="res_config_settings_finance_view_form_extend" model="ir.ui.view">
<field name="name">res.config.settings.finance.view.form.extend</field>
<field name="model">res.config.settings</field>
<field name="inherit_id" ref="base.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[hasclass('app_settings_block')]/div" position="before">
<div>
<h2>财务平台接口配置</h2>
<div class="row mt16 o_settings_container" id="jd_api">
<div class="col-12 col-lg-6 o_setting_box">
<div class="o_setting_left_pane"/>
<div class="o_setting_right_pane">
<div class="text-muted">
<label for="ims_url"/>
<field name="ims_url"/>
</div>
</div>
</div>
</div>
</div>
</xpath>
</field>
</record>
</data>
</odoo>