管理

分类下相关文章

大结局:修改 PHP 代码解决 SuiteCRM ERR_CACHE_MISS 错误

书接上回,了解了浏览器 ERR_CACHE_MISS 的触发机制之后,对于这种列表页来说,最简单粗暴的做法就是把请求由 POST 改成 GET。 改哪里 SuiteCRM 代码量巨大,茫茫人海,去哪里寻找对应的修改点呢? 首先查看列表页的翻页按钮: <button type="button" id="listViewEndButton_bottom" name="listViewEndButton" title="End" class="list-view-pagination-button&q ...

阅读全文...

开源客户管理系统 SuiteCRM 点击返回按钮报错 ERR_CACHE_MISS

在公司内部署了一套开源的客户管理系统 SuiteCRM, 具体流程参考:Ubuntu Server 22.04 部署安装开源 CRM SuiteCRM 7.14。 但是遇到了一个非常影响体验的问题,经常点击返回按钮报错 ERR_CACHE_MISS。 复现步骤 进入一个超过两页的列表,例如联系人列表 进入列表页第二页,即点击下一页 选择一个联系人,点击,查看详情 点击浏览器的返回按钮 此时浏览器报错:ERR_CACHE_MISS 详细报错信息 中文报错信息: 是否重新提交表单? 要正确显示此网页,请重新提交你之前输入的数据。通过执行此操作,你将重复此页面之前执行的任何操作。 刷新以重新提 ...

阅读全文...

QMS 质量管理系统中的供应商管理

最近一直在开发公司内部使用的 QMS 质量管理系统。 虽然是给质量检测部门使用,但是依然加入了供应商管理功能。 一开始感觉质检部门不应该有权限去查看供应商相关的信息,但是后续在开发的过程中,发现确实还是有一点必要,但是需要区分好侧重点。 数据同步策略 将集采平台的供应商都同步过来?感觉没有意义。 不如直接拉取集采平台中的列表,当有评价、打分时,才去创建评价记录。 采用用户故事的分析方法,即领域模型 打开列表页,从集采平台去拉取供应商列表 添加评价时,新建一条本地的供应商扩展记录,再创建一个供应商评价记录 定时同步来料统计,合格率统计 另一个方案: 将供应商列表直接同步过来。 直接使用集采 ...

阅读全文...

QMS 质量管理系统需求梳理

MES 还没分析明白,又被叫去对接内部的 QMS 质量管理系统需求。这企业数字化的工作,堪比工地小工,哪里需要哪里搬砖。毫无成就感可言。 一上午奔波大半个烟台,中午还错过了午饭,在富士康门口的路边啃了一份炒饼,今天刮大风,还啃了一嘴沙,补钙!真开心 :( QMS QMS 是质量管理系统(Quality Management System)的缩写。 目标 在出货之后,客户能够拿到产品相关的出厂报告。(没有中英文要求,即便是外国客户也依然使用中文报告。。。) 其中包括: 各个零部件的检测报告,合格证照片。 成品的检测报告,及实物照片。 这个出厂报告,由程序根据 word 或者 pdf 模板自动 ...

阅读全文...

研发人员写周报,本质上还是项目计划管理缺失

部门调整,今年主业变成了公司的数字化建设相关的内部开发。 但是,目前还在数字化的初期,具体做什么,从哪部分切入,都是一个未知数。 这周最大的变化是,恢复了之前的周报制度。(曾经用了一段时间的 redmine 项目管理软件,后来停用了) 我最难以接受的是,作为一个公司的数字化部门,周报要每个人提交一个 PPT。。。 这种管理方式怎么好意思去给其他部门推广数字化管理。。。 我看了一下企业微信上有个周报功能,所以推荐了一下是否可以使用这个。 但是我依然觉得周报不是一个好的管理手段。 周报不适合研发人员 纯粹是一种观点吧,如果是 redmine 这类项目管理软件能利用起来,实际是不需要周报这种形式 ...

阅读全文...

天下没有免费的 MES 系统

集团今年在推进各个子公司的数字化建设,在搞定一个 CRM 系统之后,下周又要迎来 MES 系统的调研开发。 我原本想借鉴 CRM 的实施方案,即,找一个成熟的开源系统,然后根据部门实际需求,在上面做二次开发即可。但是找了一下午,都没有找到一个真实的开源 MES。全都是知乎上的软文,以及 gitee 和 github 上的吸引流量的零代码 txt 项目。 不得已,记录一下这个无比痛苦的调研过程。否则这堆垃圾信息塞进脑子里,极度影响心情。 什么是 MES MES 即,Manufacturing Execution System 的缩写,中文翻译为制造执行系统。 其是一种用于管理制造过程的信息系统。 ...

阅读全文...

企业数字化平台预算清单

目标 把公司数字化平台未来 3 年的设备及软件采购清单列出来。 包含自研的软件系统部分。 看起来是个费时费力的活,绝非一两个小时就能糊弄过去的小 case。 今天的计划又被打乱了。Android 工控屏的设备控制项目又得搁置一下。 计划即瞎猜 这种做未来几年计划的工作在我看来纯属浪费时间,但是没有办法,领导安排的任务只能出卖自己的时间。 《重来》那本书中“计划即瞎猜”一节里有句话: 放下你的臆测吧,现在就决定你这周要做什么,不必去管全年的计划。 待采购设备的厂家及型号 这个非常纠结的一个地方,因为是给未来的采购列计划,那么怎么保证 1 年过去了, 待采购的设备的型号还存在?价格能保持不变呢 ...

阅读全文...

SuiteCRM 二次开发:合同金额与默认货币合同金额的区别

在通过 logic hook 开发 SuiteCRM 合同回款率计算功能时,遇到一个疑问: 为何合同模块有两个合同金额字段?在计算回款率时,我应该使用哪个作为合同金额计算的参考呢? total_contract_value:合同金额 total_contract_value_usdollar:合同金额(默认货币) 这两个字段在数据库的 aos_contracts 表中就能看到,在 admin 的工作室功能中也能看到。 同时,可以看到所有钱相关的字段,都是用了两个字段表示。即便加上了更多的币种,比如人民币,美元,欧元等,也是这两个字段。有 usdollar 后缀的字段,就是默认货币。 实测 ...

阅读全文...

SuiteCRM 二次开发:基于 logic hook 实现合同回款率的计算

SuiteCRM 的这套 hook 机制还是挺灵活的。就是文档有的少,大部分靠摸索。 部署时,只能在工作日晚上,或者周末没人使用时才能部署。异常痛苦。 关联记录存储时相关的 hook 这个属于 Module Hooks,即模块级的 Hook。 after_relationship_add after_relationship_delete 除了关系的添加和删除,实际上应该还有收款记录的值修改需要监听。 after_save 看起来,在合同模块添加 Hook,不如在收款记录模块添加 Hook 更方便管理。因为统计函数能够复用。 后续补充: 这里还是想简单了。关系的添加和收款金额变更这两种 ...

阅读全文...

SuiteCRM 二次开发:logic hook php 代码中使用 raw sql,及打印日志等

有时候不想了解具体的 SuiteCRM 框架代码,想直接在 PHP 中使用 raw sql。 示例代码 global $db; $updateProductsExpiry = "UPDATE aos_products_cstm SET trade_license_expiry_date_c = '".$bean->trade_lic_exp_c."' WHERE id_c IN (".$productIds.") "; $db->query($updateProductsExpiry); 参考: https://git ...

阅读全文...

SuiteCRM 二次开发:关于 bean 的数据操作,及关联关系数据读取

bean 是什么 想起了 java bean。。。SuiteCRM 中 bean 的含义: Beans are the Model in SuiteCRM’s MVC (Model View Controller) architecture. 实际上理解为 Model 即可。类似 PHP Laravel MVC 框架中的 Model,数据模型。 基础操作 if (empty($bean->first_name)) { $bean->first_name = "bot"; // $bean->save(); // 注意这里不需要主动调用 ...

阅读全文...

SuiteCRM 二次开发:创建 logic hook 实现自定义逻辑

昨天看了一天 SuiteCRM logic hook 的资料,并搜索了 github 上能搜到的所有代码。 但是,感觉效果并不好,公开出来的代码太少,只能零散的学到一些小技巧。 于是,我决定直接在测试环境中通过调试来摸索一番。 修改 logic_hooks.php 例如,我想在客户新关联一个联系人时,自动触发一段 logic hook 逻辑代码。 那么,我需要进入到目录 custom/modules/Contacts 打开 logic_hooks.php, 在最后添加上自己定义的逻辑,修改完后,如下: <?php // Do not store anything in this fil ...

阅读全文...

SuiteCRM 线上代码用 git 管理

先吐个槽,我发现让销售用上 CRM 真是一件难事。昨天忍不住爆了粗口,感觉没必要。 大家都在装糊涂,或者为自己那点利益使唤别人,就由着他们吧。少说话,多干活。经验是自己的。 言归正传,我发现 SuiteCRM 中新建了模块,或者修改了内置模块之后。SuiteCRM 的代码也会随之更改,即生成了新的 model 类型。(不得不说,PHP 确实是世界上最好的语言) 所以,除了对线上数据库做好备份之外,还需要对线上的代码做个备份。 git 代码管理的必要性 我发现在变更了大量默认配置之后,线上日志中,出现了大量的报错日志。基本都是跟新增的模块对应的 SQL 查询相关。我非常害怕哪天这个系统崩溃了, ...

阅读全文...

SuiteCRM 设置负责人时显示全名,而不是 user_name

在使用中文 SuiteCRM 时,有个不友好的地方,例如, 新建客户资料时,在选择要分配的负责人后,字段里会显示负责人的 user_name, 而不是中文名字。 这对用户来说,体验非常不好。 本以为需要修改 PHP 代码,实际上不需要,修改一下配置即可。 解决方法 这里涉及到两个地方的设置: 管理员的全局设置:系统设置,勾选“负责人字段显示全名” 每个人的个人设置:在高级选项卡中,勾选“负责人字段显示全名” 参考 详细的解释参考这里: https://community.suitecrm.com/t/i-want-to-show-the-first-name-and-last-name-i ...

阅读全文...

基于用友 U8 API 实现手持 Android 设备上的库存管理

需求背景 公司内部有一套用友 U8 的 ERP 系统,里面有仓库库存管理的功能。 库管人员希望能够加上手持 PDA (比如这个商米的设备:https://www.sunmi.com/zh-CN/v2s/),或者手机 App 扫码入库/打印标签的功能。 但是本地代理公司的开发费用非常离谱,所以公司考虑内部实现这个功能。于是查了一下 U8 相关的接口方案。 网上搜索了一下,资料真是少,而且这个行业非常 low,大部分能看到文档都是软文,和误导,让你去加他们联系方式,获取一个他们封装好的接口。问题是这么敏感的内部数据,怎么敢使用这类小作坊的接口层(涉及到账号密码的提交)。 API 接入方式 1: O ...

阅读全文...