diff --git a/search_panel_extension/__manifest__.py b/search_panel_extension/__manifest__.py index 144f1649e..4f7553f81 100644 --- a/search_panel_extension/__manifest__.py +++ b/search_panel_extension/__manifest__.py @@ -7,10 +7,10 @@ 'category': 'public_dev', 'author': 'HHY', 'license': 'LGPL-3', - 'depends': ['base'], - # 'data': [ - # 'views/product_views.xml', - # ], + 'depends': ['base', 'sale_management'], + 'data': [ + 'views/product_views.xml', + ], 'assets': { 'web.assets_backend': [ 'search_panel_extension/static/src/xml/search_panel.xml', diff --git a/search_panel_extension/static/src/js/search_model.js b/search_panel_extension/static/src/js/search_model.js index d19b4c0a7..334fc9004 100644 --- a/search_panel_extension/static/src/js/search_model.js +++ b/search_panel_extension/static/src/js/search_model.js @@ -121,6 +121,56 @@ patch(SearchModel.prototype, { } return sections.sort((s1, s2) => s1.index - s2.index); + }, + + _getFilterDomain(excludedFilterId) { + // debugger; + const domain = []; + const domainList = []; + function addCondition(fieldName, valueMap) { + const ids = []; + for (const [valueId, value] of valueMap) { + if (value.checked) { + ids.push(valueId); + } + } + if (ids.length) { + const it = [[fieldName, "in", ids]] + domainList.push(it); + } + } + for (const filter of this.filters) { + if (filter.id === excludedFilterId) { + continue; + } + const { fieldName, groups, values } = filter; + if (groups) { + for (const group of groups.values()) { + addCondition(fieldName, group.values); + } + Array.from(Domain.or(domainList).toList({}), (it) => domain.push(it)) + } else { + addCondition(fieldName, values); + } + } + return domain; + }, + + _getGroupDomain(filter) { + // debugger; + const { fieldName, groups, enableCounters } = filter; + const { type: fieldType } = this.searchViewFields[fieldName]; + + const groupDomain = super._getGroupDomain(filter); + + if (fieldType === "many2one") { + if (groupDomain && groupDomain.length === 1 && groupDomain[0][0] === 0) { + return null; + } + } + + return groupDomain; } + }) diff --git a/search_panel_extension/static/src/js/search_panel.js b/search_panel_extension/static/src/js/search_panel.js index 737d84907..9159899ea 100644 --- a/search_panel_extension/static/src/js/search_panel.js +++ b/search_panel_extension/static/src/js/search_panel.js @@ -1,6 +1,7 @@ /** @odoo-module **/ import {SearchPanel} from "@web/search/search_panel/search_panel"; import {patch} from "@web/core/utils/patch"; +import { Domain } from "@web/core/domain"; import { onPatched, onMounted } from "@odoo/owl"; import {childrenSize} from "./search_model"; @@ -73,6 +74,7 @@ patch(SearchPanel.prototype, { } }); this.state.active[filterId][id] = !checked; + if (id) valueIds.push(id) }; recurve_group(group, checked); diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 9d3d62eca..bc5160ae5 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -243,38 +243,6 @@ class SoongWorkflowMixin(models.AbstractModel): return self.with_context(cx)._add_comment(log_obj, btn_rec) else: return btn_rec.with_context(cx).run() - # if btn_rec.name == '转交': - # # 如果有下一个节点,发消息通知。 - # state_list = ['拟办' if i.node_name == 'start' else i.node_name for i in - # btn_rec.workflow_id.node_ids] - # # 当前节点状态 - # self_state = state_list.index('拟办' if self.state == 'start' else self.state) - # # 下一个节点 - # next_state = btn_rec.workflow_id.node_ids[self_state + 1].button_ids[0] - # # 不自动匹配 - # employee_user_role_ids = self.env['hr.employee'].search( - # ['|', ('user_role_id', '=', next_state.users_role_id.id), - # ('user_role_ids', 'in', next_state.users_role_id.id)]) - # # 自动匹配 - # employee_user_role_id = self.env['hr.employee'].search( - # ['|', ('user_role_id', '=', next_state.users_role_id.id), ('user_role_ids', 'in', next_state.users_role_id.id), - # '|', ('department_id', '=', self.department_id.id),('department_ids', 'in', self.department_id.id), - # ('yuthon_company', '=', self.create_uid.employee_id.yuthon_company)]) - # employee_ids = employee_user_role_ids if not next_state.is_automatic else employee_user_role_id - # url = 'https://oa.thtzjt.com/mail/view?model={}&res_id={}'.format(self._name, self.id) - # for employee in employee_ids: - # self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa', - # user_id=employee.wecom_userid, - # title=self._description, - # description="标题: {}\n".format( - # self.name) + self.env.user.name + ' ' + str( - # fields.Datetime.now() + timedelta( - # hours=8)), - # url=url, btntxt="查看详情") - # partner_ids = employee_ids.user_id.partner_id.ids - # self.with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids, - # 'soong_workflow.message_soong_workflow_users_data') - # return btn_rec.with_context(cx).run() def _add_comment(self, logs, btn_rec): wizard = self.env.ref("soong_workflow.view_soong_workflow_comment_wizard") diff --git a/soong_workflow/views/soong_hr_employee_views.xml b/soong_workflow/views/soong_hr_employee_views.xml index 98b8b87fd..51b00a0d6 100644 --- a/soong_workflow/views/soong_hr_employee_views.xml +++ b/soong_workflow/views/soong_hr_employee_views.xml @@ -33,6 +33,7 @@ parent_id + diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py index 4412ac1dc..13ed5588e 100644 --- a/soong_workflow/wizard/soong_workflow_comment_wizard.py +++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py @@ -241,4 +241,14 @@ class SoongWorkflowCommentWizard(models.TransientModel): description=description, url=url, btntxt="查看详情") + url = 'https://oa.thtzjt.com/mail/view?model={}&res_id={}'.format(self._name, record_id.id) + for employee in self.employee_ids: + self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa', + user_id=employee.wecom_userid, + title=self._description, + description="标题: {}\n".format( + self.name) + self.env.user.name + ' ' + str( + fields.Datetime.now() + timedelta( + hours=8)), + url=url, btntxt="查看详情") return self.node_btn_id.with_context(cx).run() diff --git a/yuthon_wechat/models/wecom_apps_config.py b/yuthon_wechat/models/wecom_apps_config.py index 533d8e7ef..2ff899c10 100644 --- a/yuthon_wechat/models/wecom_apps_config.py +++ b/yuthon_wechat/models/wecom_apps_config.py @@ -27,6 +27,7 @@ class WecomAppsConfig(models.Model): ('oa', '审批类型'), ('att', '出勤类型'), ('task', '日程类型'), + ('att_ok', '考勤确认类型'), ], default="default") wecom_apps_id = fields.Many2one("wecom.apps", string="企业微信的应用")