管理

分类下相关文章

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 ...

阅读全文...

企业内部系统的统计报表实现方案选型

今年的工作重点变成了公司内部的企业数字化开发。说得更具体点,就是搞一些: 销售管理 CRM 仓库管理 生产计划任务管理 各种 ERP OA 集采平台数据打通 ... 任务繁杂,需求不明确,没有人手。看起来无比头疼,非常不想介入这些事情。因为最近看的一本书里说的非常有道理,如果一个项目对于最终客户体验没有任何改善,那么就不要去自己实现,例如,内部的这些信息化系统。 牢骚这么多,进入正题。 需求 将 CRM 中的合同等数据做统计报表,分行业,分产品,分销售部门/个人统计,方便老板及管理层查看。 为何要选型 由于是使用了开源的 CRM,所以如果要在上面直接二次开发一些统计功能页面,实际上,梳理代 ...

阅读全文...

SuiteCRM 修改菜单后报 500 错误,管理员无法进入系统

在使用 SuiteCRM 管理员在后台配置菜单,选择将所有菜单隐藏。。。不要问为什么,就是这样配置了。 然后管理员再也无法使用 SuiteCRM 了,登录之后就报 500 错误,无法使用,也无法恢复之前的配置。 其他用户倒是可以正常登录。 报错信息 从日志看起来确实是找不到菜单,导致报错: FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught TypeError: in_array(): Argument #2 ($haystack) must be of type array, null given in ...

阅读全文...

SuiteCRM 中自定义功能的字段,及必填项

在 SuiteCRM 的管理员账号后台,系统设置里的工作室功能,可以自定义字段,也能修改字段是否必填。 不得不感叹 SuiteCRM 的功能还真是强大啊。 ...

阅读全文...

SuiteCRM 如何记录销售人员的外出拜访

可以使用 SuiteCRM 内置的 “任务” 功能,来记录及跟踪销售人员的外出拜访。 虽然任务 (task) 的官方文档描述很模糊,没有说明具体的用途,但是通过日历功能的表述,我得到了答案。 The Calendar module in SuiteCRM allows you to manage your time by scheduling Meetings, Calls and Tasks. Users may share their Calendar so they can allow others to view their upcoming activities. These a ...

阅读全文...

SuiteCRM 基本概念及中英文术语对照表

客户 Account 注意这里的客户是公司名,而不是具体的联系人(Contact)名字。 Accounts in SuiteCRM will typically hold all information specific to a company that your organisation will have a relationship with. 联系人 Contact a Contact is an individual who is typically associated with an Account (organisation) or Opportunity (quali ...

阅读全文...

SuiteCRM 主题界面代码修改

例如,我想修改 SuiteCRM 的一些界面部分的显示: footer 隐藏掉 SuiteCRM 的标志 login 界面隐藏 logo 用户菜单隐藏掉论坛,及关于的介绍链接 实际上,都可以通过修改目录 themes/SuiteP/tpls 下的 tpl 模板文件来实现。 tpl 是 PHP smarty 模板文件。(语法很简单,或者直接 ChatGPT 都能轻松搞定) SuiteP 是 SuiteCRM 自带的默认主题 模板目录的文件列表 ls -lah total 112K drwxrwxr-x 2 www-data www-data 4.0K Jan 10 14:48 . drw ...

阅读全文...

SuiteCRM 中文翻译语言包安装

下载中文语言包 将 SuiteCRM 中文翻译文件下载到电脑本地。 https://crowdin.com/project/suitecrmtranslations/zh-CN 上面链接里是最新版本的翻译。 如果需要历史版本的,可以去这里下载: https://sourceforge.net/projects/suitecrmtranslations/files/ 安装 使用 admin 账号登录 SuiteCRM。 点击右上角的 admin 菜单,打开后,在页面中搜索 Module loader. 将下载的文件,上传并启用即可。 然后,回到 Administration 功能页,搜索 Rep ...

阅读全文...