Git Product home page Git Product logo

odoodingtalk's Introduction

Odoo16系统集成钉钉

项目介绍

本项目是一套基于Odoo平台开发的一个集成阿里钉钉应用。

安装运行

在安装模块前,务必先安装额外的三方库(requirements.txt)文件中,安装方式示例:

pip3 install -r $PATH/requirements.txt 注意$PATH为你的实际路径!

特别强调要在运行odoo的python3中安装依赖项

先在测试环境中测试无误后再到生产环境中安装!!!

说明文档

如何创建钉钉应用以及配置免密登录

交流

钉钉 开发/需求/交流群:42198722

模块列表

├─dingtalk2_approval    # 工作流模块
├─dingtalk2_attendance  # 考勤模块
├─dingtalk2_base        # 基础模块
├─dingtalk2_contacts    # 联系人模块
├─dingtalk2_login       # 钉钉登录模块

odoodingtalk's People

Contributors

banqu avatar cd-feng avatar ferren avatar leangjia avatar lonelyleaves avatar luochao-aleo avatar ongood avatar sasakuma avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

odoodingtalk's Issues

拉取考勤组报错

Odoo Server Error
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/http.py", line 658, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 312, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/usr/lib/python3/dist-packages/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/usr/lib/python3/dist-packages/odoo/http.py", line 700, in dispatch
result = self._call_function(**self.params)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 344, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 337, in checked_call
result = self.endpoint(*a, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 943, in call
return self.method(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 517, in response_wrap
response = f(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 962, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 954, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 745, in call_kw
return _call_kw_model(method, model, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 718, in _call_kw_model
result = method(recs, *args, **kwargs)
File "/home/lxd/odoo/odoodingding/dindin_attendance/models/simplegroups.py", line 63, in get_simple_groups
for emp in group.get('manager_list'):
TypeError: 'NoneType' object is not iterable

保存钉钉参数报错:psycopg2.ProgrammingError: syntax error at or near ")"

报错:
File "/usr/lib/python3/dist-packages/odoo/sql_db.py", line 245, in execute
res = self._obj.execute(query, params)
psycopg2.ProgrammingError: syntax error at or near ")"
LINE 1: SELECT id FROM "ir_cron" WHERE id IN () FOR UPDATE NOWAIT
截图如下:
20200706001
补充:
安装base完成后马上填写钉钉参数,保存成功,不报错。
报错原因是:安装完成base模块后,不填写参数,继续安装odooDingTalk其他的模块(如日志和人事和回调等模块)此时填写参数会报上述错误。

odoo 13社区、企业版无法钉钉扫描成功登陆

我们检查发现,是在员工模块中调用“创建系统用户”功能时,虽然成功建立了系统用户,但是 ding_user_id 和 ding_user_phone没用正确写入res_users数据表(这两个字段都是空)导致的问题,但是,看了你写的代码下来,感觉都是正确的,麻烦你可以帮忙查一下是什么原因吗?谢谢

@suxuefeng20

安装报错

odoo.tools.convert.ParseError: "External ID not found in the system: ali_dindin.dd_setting_group" while parsing file:/e:/odoo/source/suxuefeng/odoodingding/dindin_callback/views/call_back_list.xml:43, near

获取钉钉日志报错: Invalid field None on model 'dingtalk.report.report'

环境:docker+odoo13.0+odooDingTalk 13.0
已安装成功钉钉-日志模块:dingtalk_report

获取钉钉日志报错:
File "/usr/lib/python3/dist-packages/odoo/models.py", line 3699, in create
raise ValueError("Invalid field %r on model %r" % (key, self._name))
ValueError: Invalid field None on model 'dingtalk.report.report'
截图如下 :

20200706002

[13.0] 创建审批模型后,原模型就不能新建记录了

13版
在 审批-->审批模型 中,建立一条记录,与某个模型关联后,被关联的模型就无法建立新记录了。前端页面出错提示:

psycopg2.errors.UndefinedColumn: column "dd_approval_result" of relation "hr_employee" does not exist
LINE 1: ..., "company_id", "country_id", "country_of_birth", "dd_approv...
^

原因是 setup_dingtalk_approval_state_fields 函数中添加的dd_开头的字段,也出现在SQL中了,后台显示如下:

odoo.sql_db: bad query: INSERT INTO "hr_leave" ("id", "create_uid", "create_date", "write_uid", "write_date", "date_from", "date_to", "dd_approval_result", "dd_approval_state", "department_id", "employee_id", "holiday_status_id", "holiday_type", "name", "number_of_days", "report_note", "request_date_from", "request_date_from_period", "request_date_to", "request_hour_from", "request_hour_to", "request_unit_custom", "request_unit_half", "request_unit_hours", "state", "user_id") VALUES (nextval('hr_leave_id_seq'), 2, (now() at time zone 'UTC'), 2, (now() at time zone 'UTC'), '2020-09-08 08:00:00', '2020-09-08 17:00:00', 'load', 'draft', NULL, 1, 1, 'employee', 'ec.zhflash.com', 1.0, NULL, '2020-09-08', 'am', '2020-09-08', NULL, NULL, false, false, false, 'confirm', 2) RETURNING id
ERROR: column "dd_approval_result" of relation "hr_leave" does not exist
LINE 1: ...write_uid", "write_date", "date_from", "date_to", "dd_approv...
^

作废的回调行无法删除问题

有关回调管理的若干问题
1.如果我更改了钉钉配置环境(企业CorpId等),想本地数据库删除旧的回调列表(已注册),会提示回调地址已不存在,无法删除。
2.如果已经存在一条回调行,我再新建一条回调事件并注册,会提示注册失败!
原因:返回文本非success

安装钉钉集成之后,批量删除部门会报错

在部门列表中,勾选2个或2个以上部门进行删除,会报错。
注意:删除部门同步到钉钉未勾选。
Odoo Server Error
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/models.py", line 4689, in ensure_one
_id, = self._ids
ValueError: too many values to unpack (expected 1)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/http.py", line 658, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 312, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/usr/lib/python3/dist-packages/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/usr/lib/python3/dist-packages/odoo/http.py", line 700, in dispatch
result = self._call_function(**self.params)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 344, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 337, in checked_call
result = self.endpoint(*a, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 943, in call
return self.method(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 517, in response_wrap
response = f(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 962, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 954, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 749, in call_kw
return _call_kw_multi(method, model, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 736, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/home/lxd/odoo/odoo-dingtalk/ali_dingtalk/models/department.py", line 77, in unlink
din_id = self.din_id
File "/usr/lib/python3/dist-packages/odoo/fields.py", line 978, in get
record.ensure_one()
File "/usr/lib/python3/dist-packages/odoo/models.py", line 4692, in ensure_one
raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: hr.department(33, 29)

odoo 13 企业版 2019 安装报错

File "D:\Bitnami\odoo13\apps\odoo\Lib\site-packages\odoo-13.0.post20200515-py3.7.egg\odoo\modules\loading.py", line 420, in load_modules
loaded_modules, update_module, models_to_check)
File "D:\Bitnami\odoo13\apps\odoo\Lib\site-packages\odoo-13.0.post20200515-py3.7.egg\odoo\modules\loading.py", line 312, in load_marked_modules
perform_checks=perform_checks, models_to_check=models_to_check
File "D:\Bitnami\odoo13\apps\odoo\Lib\site-packages\odoo-13.0.post20200515-py3.7.egg\odoo\modules\loading.py", line 179, in load_module_graph
load_openerp_module(package.name)
File "D:\Bitnami\odoo13\apps\odoo\Lib\site-packages\odoo-13.0.post20200515-py3.7.egg\odoo\modules\module.py", line 365, in load_openerp_module
import('odoo.addons.' + module_name)
File "D:\Bitnami\odoo13\apps\odoo\Lib\site-packages\odoo-13.0.post20200515-py3.7.egg\odoo\addons\dingtalk_base_init_.py", line 7, in
from . import tools
File "D:\Bitnami\odoo13\apps\odoo\Lib\site-packages\odoo-13.0.post20200515-py3.7.egg\odoo\addons\dingtalk_base\tools_init_.py", line 6, in
from . import dingtalk_api
File "D:\Bitnami\odoo13\apps\odoo\Lib\site-packages\odoo-13.0.post20200515-py3.7.egg\odoo\addons\dingtalk_base\tools\dingtalk_api.py", line 27, in
mem_storage = MemoryStorage()
NameError: name 'MemoryStorage' is not defined

进入考勤的koisk 模式,选择员工报错。

建议钉钉消息

1.钉钉个人消息与odoo消息互通。
2.钉钉群与odoo渠道互通。
3.odoo全局事件消息可同过钉钉工作通知发送。

安装钉钉集成之后,在odoo里批量删除员工会报错。

勾选2个或2个以上员工进行同时删除,会报错。
注意:删除员工时自动同步至钉钉未勾选。

Odoo Server Error
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/models.py", line 4689, in ensure_one
_id, = self._ids
ValueError: too many values to unpack (expected 1)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/http.py", line 658, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 312, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/usr/lib/python3/dist-packages/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/usr/lib/python3/dist-packages/odoo/http.py", line 700, in dispatch
result = self._call_function(**self.params)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 344, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 337, in checked_call
result = self.endpoint(*a, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 943, in call
return self.method(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 517, in response_wrap
response = f(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 962, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 954, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 749, in call_kw
return _call_kw_multi(method, model, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 736, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/home/lxd/odoo/odoo-dingtalk/ali_dingtalk/models/employee.py", line 101, in unlink
userid = self.din_id
File "/usr/lib/python3/dist-packages/odoo/fields.py", line 978, in get
record.ensure_one()
File "/usr/lib/python3/dist-packages/odoo/models.py", line 4692, in ensure_one
raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: hr.employee(36, 34)

odoo13.0 202004

13.020200417 正常, 报错是自己安装成了12的分支,问题较多。改为13分支就好了

如果当前的odoo用户关联2个员工,打开钉钉模块会报错。

复现步骤
当前的user已经同步到钉钉,再建立一个普通员工(未绑定钉钉),也关联到这个user,这个时候打开钉钉模块,会出现下面错误:

Odoo Server Error
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/models.py", line 4689, in ensure_one
_id, = self._ids
ValueError: too many values to unpack (expected 1)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/http.py", line 658, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 312, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/usr/lib/python3/dist-packages/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/usr/lib/python3/dist-packages/odoo/http.py", line 700, in dispatch
result = self._call_function(**self.params)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 344, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 337, in checked_call
result = self.endpoint(*a, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 943, in call
return self.method(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 517, in response_wrap
response = f(*args, **kw)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 962, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 954, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 745, in call_kw
return _call_kw_model(method, model, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 718, in _call_kw_model
result = method(recs, *args, **kwargs)
File "/home/lxd/odoo/odoo-dingtalk/dingtalk_approval/models/approval_template.py", line 68, in get_get_template_number_by_user
if emp and emp.din_id:
File "/usr/lib/python3/dist-packages/odoo/fields.py", line 978, in get
record.ensure_one()
File "/usr/lib/python3/dist-packages/odoo/models.py", line 4692, in ensure_one
raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: hr.employee(1, 38)

請問怎安裝 15

pip3 install -r $PATH/requirements.txt 注意$PATH為你的實際路徑!
特別強調要在運行odoo的python3中安裝相關項重要事項說三遍

這個怎麼安裝,odoo都沒有辦法安裝成功

员工性别未同步

钉钉同步后在odoo里所有员工都是男性未婚,女同胞有意见的。

odoo 14的回调不能注册

decodeRes = aesDecode.decrypt(content)[20:].decode().replace(self.key, '')
打断点跟了一下,发现 aesDecode.decrypt(content)[20:].decode() 转字符是提示 {UnicodeDecodeError}'utf-8' codec can't decode bytes in position 0-1: invalid continuation byte,

将钉钉考勤直接整合到odoo考勤中的副作用

目前将钉钉考勤的打卡结果记录直接存储到odoo的check_in字段中,导致odoo原生的check_in 与out无法使用,因为odoo的考勤记录是每个checkin必须对应一个checkout,每个班次有了签到,必须匹配一个签出。也就是说,odoo考勤还没有缺卡(漏打卡)的概念。

提个小建议

为了规范命名,同时接轨国际化,建议将dindin 或dingding 统一改成dingtalk

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.