中山市东菱照明科技有限公司(http://www.donepower.com.cn)创立于2009年,其前身为中山市古镇菱菱电子厂,一路风雨、一路成长,公司经过七年多的飞跃发展,于2015年喜迁至享有“中国照明灯饰产业基地”之称的中山市横栏镇,并正式更名为中山市东菱照明科技有限公司。
目前公司现拥有现代标准化厂房5万余平方米、员工1000余人,是一家广东高新技术企业,专业出品LED驱动电源、开关电源等产品的大型品牌实业公司,集研发、制造、销售和出口于一体。
近年来,在不断取得傲人的业绩的同时,依然保持谦卑的姿态,不断学习、不断进步、不断成长,不断突破。在疫情期间,再次优化销售管理流程,通过“思泉软件低代码开发平台”进行固化。
一、信息化目标
公司要对现有的销售模式进行统一规范化管理,同时旧OA已不能满足现有的办公要求,于是思泉开发平台成为了首选,需解决以下问题:
CRM客户管理:客户档案管理(客户基础资料、决策链条、主销/在研项目、主材供应等)、项目管理(大客户项目、新产品项目、样品项目)、商机管理、工作任务(销售任务、出差记录、打卡记录)、产品阶梯价格管理、竞争管理(竞争对手、友商大客户、立项分析)等。
协同办公:将旧OA有的流程迁移过来,新增工作计划、会议室管理、文档管理等。
与金蝶ERP K3 WISE打通:基础资料同步(产品、销售订单同步)、客户资料同步推送及变更推送、订单评审、采购单、费用报销单等推送。
二、实施方法
对此,我们针对整个项目进行了深入调研,经过多次沟通,基本梳理了业务逻辑初步框架,确定字段表格设计,同时也明确了开发模块。
下图为整个项目思维导图:
我们对CRM模块表单进行了目录、字段梳理,如下:
与金蝶ERP对接的接口清单如下:
为保证项目如期进行,我们确定好每周实施工作计划,并明确甲乙方负责人,每周能准确跟进到每一项事,每周五对本周进行工作补充及总结,更新每一项事项完成状态,以及计划好下一周的工作任务。
三、应用解读
2.1 CRM客户管理:CRM客户管理是公司的核心业务系统,目的是以项目管理模式推动销售管理升级,以下从业务核心要素、实施要点、销售逻辑、信息化管理流程来介绍CRM客户管理的实施成果。
可以在这一个界面去完成客户所有的业务,可以多维度地展现客户的基本信息及关联信息,让业务员有效的去跟踪客户。
2.1.1 CRM管理的核心要素
CRM的核心包括客户基础信息、决策链条、主材供应、主销灯具、在研产品、竞品,其中客户信息是需要通过新客户报备审批流程来管控并且同步到ERP系统。
新客户报备流程:完成流程审批后,需将改客户信息推送到ERP
平台使用适配器节点,执行sql将数据推送至K3_CRM中间库
决策链条:即联系人信息,记录该联系人相关资历及在项目的决策权力比重。
主材供应:记录客户周边产品的供应链信息。
主销灯具:记录客户在售主销灯具项目,属于支撑DONE当前销量灯具类型。
在研项目:记录客户研发阶段灯具项目,属于解决DONE未来销量灯具类型。
竞品分析:专项收集客户驱动电源竞品信息,DONE对标型号对比分析。
2.1.2 CRM客户管理实施要点
业务重点在主销灯具、在研产品、主材供应,其中主销灯具几乎占50%,在研产品占40%,这些是目前业务的直接商机来源,或者说这本身就是商机,把握住这些项目是业务员工作的重中之重。所谓客户管理,即围绕客户项目所开展的一切商务活动,而非脱离项目建立的无价值人际关系。
2.1.3 围绕客户项目开展的销售逻辑
围绕客户项目,业务员需进行商机阶段过程管理,拜访客户等销售任务管理,日常月度计划管理。
商机管理:对商机进行过程管控,从商机阶段、商机状态、产品多维度进行商机分析。
对每一个销售任务进行签到控制,有达到签到及离开签到,打卡后会自动回写当前任务签到状态为“已签到”,公司可根据此字段把控业务员的跟进情况。
通过表单保存后执行sql用来回写状态:update CRM_SaleAction set wqqd = 2 where CRM_SaleAction.id = ##CRM_OutSign.F1.ID## and ##CRM_OutSign.F1.ID## is not null;
月度计划:管理日常月度工作计划,流程管控整月计划。
2.2 产品管理
2.2.1 产品信息是业务系统的核心基础资料。
产品分类:户外产品、室内产品、防雷器、遥控器等。
产品属性有代码、名称等基础信息,及有无频闪、认证信息等产品特性,输入电压、功率因素等输入特性,额定电流、输出电压等输出特性,输入欠压保护、输出过载保护等保护功能,雷击浪涌、耐压等安全与电磁兼容特性。
产品数据是从ERP同步过来的,方法是利用SqlServer的代理设定定时作业,定时执行同步存储过程程序。
![上传中...]()
2.2.2 价格管理:产品阶梯价、促销价
产品阶梯价:每一种型号都有不同梯度的阶梯价,有市场价、业务价、经理价、副总价,在使用这个价格体系时,都会去判断是属于哪个数量梯度,价格会自动带出来,业务员只会带出业务员对应梯度的价格出来,经理只能看到经理价以下的价格,副总级别才能看到副总价。是有的阶梯价格都是统一在产品阶梯价基础资料里维护。
如果有产品迭代,会出现基础型号相同的产品,产品代码不同、规格型号相同的迭代产品,但是对于阶梯价,新的迭代产品的阶梯价需要维护,维护频率和维护量太大了,于是通过产品同步程序上,加上根据基础型号复制产品阶梯价的处理逻辑。
2.3 OA协同办公
输入完产品后,需通过客户、产品来自动读取价格,读取价格的优先级是客户报价>促销价>产品阶梯价,可以通过表单js事件来处理,处理代码部分如下:
//数量改变后触发获取参考价格事件
function getProdPrice() {
var qty = $(this).val(); //数量
if (qty == null || qty == '') {
qty = 0;
} else {
qty = parseInt(qty.replace(/,/g, ''));
}
var custId = $('#KHMC').attr('idvalue');
if (custId == null || custId == '') {
return;
}
var tr = $(this).closest('tr');
var prodId = $(tr).find('[sname="CPMC"]').attr('idvalue');
if (prodId == null || prodId == '') {
return;
}
var sql = 'EXEC [UP_GET_PROD_PRICE] ' + prodId + ',' + custId + ',' + qty;
var url = '../siquan/Access.ashx';
$.post(url, { action: 'getvalue', sql: sql }, function (data) {
debugger;
$(tr).find('[sname="DBPrice"]').val(data);
$(tr).find('[sname="HSDJ"]').val(data);
$(tr).find('[sname="HJDJ"]').val(data);
calculateMoney(tr);
});
}
//修改含税单价事件
function changeHSDJ() {
var tr = $(this).closest('tr');
calculateMoney(tr);
}
//选择产品之后触发事件
function afterChooseProd(prodId, textValue, ctl) {
debugger;
var tr = $(ctl).closest('tr');
//清空后面的数量价格金额
$(tr).find('[sname="SL"]').val('');
$(tr).find('[sname="DBPrice"]').val('');
$(tr).find('[sname="HSDJ"]').val('');
$(tr).find('[sname="XJ"]').val('');
//经理价
var sql = 'select JG from CRM_JTJ where CPMC=' + prodId + ' and JTJMC=2';
var url = '../siquan/Access.ashx';
$.post(url, { action: 'getvalue', sql: sql }, function (data) {
$(tr).find('[sname="DYJLJ"]').attr('vvv', data);
});
//副总价
sql = 'select JG from CRM_JTJ where CPMC=' + prodId + ' and JTJMC=3';
$.post(url, { action: 'getvalue', sql: sql }, function (data) {
$(tr).find('[sname="DYFZJ"]').attr('vvv', data);
});
}
//重新计算金额,比较价格
function calculateMoney(tr) {
var qty = $(tr).find('[sname="SL"]').val();
if (qty == null || qty == '') {
qty = 0;
} else {
qty = parseInt(qty.replace(/,/g, ''));
}
var dj1 = $(tr).find('[sname="HSDJ"]').val();
if (dj1 == null || dj1 == '') {
dj1 = 0;
} else {
dj1 = parseFloat(dj1.replace(/,/g, ''));
}
var vvv = "2";
//经理价 2
var jlj = $(tr).find('[sname="DYJLJ"]').attr('vvv');
if (dj1 < jlj) { vvv = "1" };
$(tr).find('[sname="DYJLJ"]').val(vvv);
vvv = "2";
//副总价 3
var fzj = $(tr).find('[sname="DYFZJ"]').attr('vvv');
if (dj1 < fzj) { vvv = "1" };
$(tr).find('[sname="DYFZJ"]').val(vvv);
var dj2 = $(tr).find('[sname="XPDJ"]').val();
if (dj2 == null || dj2 == '') {
dj2 = 0;
} else {
dj2 = parseFloat(dj2.replace(/,/g, ''));
}
$(tr).find('[sname="XJ"]').val(qty * (dj1 + dj2));
}
当流程走完后,需将订单数据推送到ERP,则利用平台的流程适配器节点执行存储过程即可。
订单数据推送至中间库数据状态如下:
订单数据最终推送至金蝶ERP,数据状态如下:
客户异动申请流程: