多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

用低代码搭建智能报价体系:从Excel报价到规则驱动

用低代码搭建智能报价体系:从Excel报价到规则驱动 做报价这件事看着是张表格背后全是博弈。销售要快客户要准老板要利润三头一挤最苦的就是报价员。我们公司之前完全靠Excel报价一个型号一个价格客户不一样折扣不一样量不一样阶梯价又不一样业务员稍微改一下配置整张报价表就得重算。后来实在扛不住决定用低代码自己搭一套智能报价管理体系。这套体系上线到现在报价响应时间从平均两天压到了半小时以内价格算错的情况基本绝迹。这篇是这个系列的第九篇我不打算讲高大上的概念把构建过程中真正需要想清楚的业务模型、数据建模、规则引擎、审批链路和常见坑位逐个拆开聊。先给结论如果你的企业还停留在“报价Excel微信审批”或者刚买了ERP但报价还是靠人肉算这篇值得认真看。全文不会有太多让你看完就忘的架构图更多是能直接抄的配置思路和模型。1. 先想清楚智能报价管理到底要解决什么问题1.1 报价混乱的典型症状没见过Excel报价地狱的人可能觉得报价很简单。我见过最典型的场景是这样销售A手上有一版价格表销售B自己又存了一版客户打电话来问价格两个人报出来的数能差出8个点。那8个点可能是折扣权限不同也可能是价格表更新之后销售A没同步。业务员自己心里也没底只能找主管问主管在微信里回一句“按上次那个价格就行”这单子就成了一个没有任何记录的临时特批。等到月底财务对账才发现有一堆订单毛利率只有两三个点甚至低于成本价。我相信很多做B2B生意的朋友都经历过这个循环报价慢、报价乱、价格不统一、事后说不清。更麻烦的是报价不是一次性动作。同一个客户3月份询过价6月份又来问型号换了量大了之前谈好的阶梯价还能不能用没有人说得清。业务员可能凭印象给一个“优惠价”但这个价格是不是亏了系统不知道。所以智能报价要解决的第一件事不是“算得快”而是“让价格有据可依”。这也是为什么我不建议一上来就找一堆AI算法做动态定价先把你现有的价格规则结构化、自动化比什么都强。1.2 拆解“智能”二字的业务含义很多人听到“智能报价”第一反应是系统会自动生成一个最合理价格甚至根据市场行情实时调价。这个概念被一些SaaS厂商炒得过热了。对绝大多数制造和贸易企业来说智能报价的“智能”体现在四个字自动、合规。自动是指客户选完型号、填完数量、选好配置系统立刻算出一个价格不用翻价格表合规是指这个价格一定是按照企业既定规则算出来的该走目录价走目录价该走协议价走协议价折扣低于底线时就自动拉起审批。我用一个点外卖的例子来类比你选好菜品、规格、数量之后系统会自动叠加会员折扣、满减优惠、配送费最后告诉你实付多少钱。智能报价就是把这套叠加逻辑搬进B2B销售场景只不过优惠券换成了客户等级折扣、阶梯价、协议价和运费规则。区别在于点外卖算错几块钱问题不大B2B报价单算错一个点可能就是上万元的利润流失。2. 低代码平台选型为什么vue技术栈适合报价场景2.1 低代码搭建报价体系需要哪几项核心能力先别急着打开平台开始拖拽先盘一下你手上这个报价体系到底需要低代码平台提供哪些能力。以我实际经验来看至少需要五类能力可视化的表单设计器用来做报价单和产品配置界面数据模型管理用来建产品表、价格表、客户表并且能建立表与表之间的关系工作流引擎用来做报价审批和状态流转细粒度的权限模型用来控制不同角色能看到的价格字段最后是开放接口报价单审批通过后要能回传ERP或者CRM。这五类能力缺一不可。很多低代码平台表单做得很好看但数据模型是死板的关联字段只能下拉选择一个已有的单行文本这种平台不建议选。报价体系的核心复杂度在价格表的多版本、多条件取值上如果数据模型不灵活后面每加一个价格维度都要改平台底层那就失去低代码的意义了。2.2 为什么优先选vue技术栈的低代码平台低代码平台本身也在技术选型目前市面上主流的前端技术栈无非Vue和React两派。我当时优先考虑vue技术栈的低代码平台原因很实际我们团队前端本身就是Vue背景将来遇到平台满足不了的个性化需求需要写自定义组件或者二次开发时团队成员上手成本低Vue生态里成熟的组件库和周边工具也多像表单校验、表格渲染、弹窗交互这些能力都成熟。而且Vue语法本身对后端转前端的同学也比较友好一个报价体系里最常写的扩展逻辑其实就是价格计算函数和校验函数Vue的响应式数据流让这些逻辑在页面上调试起来很直观。当然技术栈只是选型的一个维度真正要看的还是平台交付能力。我的建议是拿着你的报价单样例去平台里实际搭一个原型让销售报一次价走一遍审批再回传ERP跑通了再买。很多平台宣传得很牛真到配置自定义价格规则时才发现文档缺失社区也没人那时候换平台成本就高了。Vue技术栈不一定是唯一答案但在国内沟通成本、组件生态、招聘人才这些方面确实有优势。3. 核心数据模型价格表、产品档案、客户档案怎么建模3.1 价格体系三张表我搭这套体系时最核心的是三张表产品档案表、价格表、报价单明细表。产品档案表存的是产品主数据包括产品编码、名称、型号、规格参数、默认单位、成本价、基础售价、是否可售、状态。价格表存的是所有价格策略包括价格类型目录价、阶梯价、协议价、促销价、适用客户等级、生效日期、失效日期、最小起订量、单价。报价单明细表是每次报价的实际结果包括关联产品、报价数量、单价、折扣比例、小计金额、运费、交期、备注。实体关键字段说明产品档案产品编码、名称、型号、规格参数、成本价、基础售价主数据一个产品一条价格表产品编码、客户等级、数量区间、价格类型、生效日期、失效日期、单价多版本价格可配置优先级报价明细报价单号、产品编码、数量、单价、折扣、金额、交期说明每次报价的临时结果这三张表分开建是因为价格是经常变的而产品档案相对稳定。如果把价格直接写死在产品档案里每次调价都要批量改产品主数据容易改漏而且同一个产品对A客户和B客户价格不同写在产品表里根本无法表达。分开之后价格表可以多版本并存比如3月生效的目录价和6月生效的目录价可以同时存在系统根据生效日期自动取用。3.2 产品规格与可配置项拆解很多产品不是“一个型号一个价”而是有选配项的。比如客户要一台变频器功率7.5kW还要加装滤波器防护等级要IP54。如果把每一种组合都单独建一个产品编码价格表数量会爆炸。合理的做法是把必选基础型号和可选配置拆开基础型号对应一个基础价格每个配置项对应一个加价规则。报价单上客户选择配置后系统把基础价格加上各配置项价格乘以数量就是单台报价。在低代码里实现可以给产品档案增加一个“规格参数”字段用结构化的JSON或者子表存储每个配置项有选项值、加价金额、是否可选。报价单上放一个配置选择器选择之后通过规则引擎重新计算价格。这里有一个容易踩的坑配置项的加价逻辑不要写死在页面脚本里否则新增一个配置项就得改一次代码。应该把配置项也做成数据加价规则放在价格表里统一管理。3.3 客户分级与协议价模型报价的另一个维度是客户。我们的做法是在客户档案上增加客户等级、默认折扣率、销售负责人等字段。客户等级决定默认走哪套价格A类战略客户走协议价B类重点客户在目录价基础上按设定折扣C类普通客户直接走目录价。协议价不是简单一个折扣而是客户产品级别的专用价格表可能每个客户每条产品线价格都不一样。这里最关键的是价格取数优先级必须定成硬规则。我们实际执行的优先级是协议价高于阶梯价高于客户等级折扣价高于目录价。也就是说只要该客户存在某产品的协议价就优先使用协议价没有协议价就看数量是否满足阶梯价都没有再按客户等级算折扣。这个优先级听起来简单但在低代码平台上实现时很容易因为字段赋值的顺序问题搞乱调试的时候一定要用测试用例逐条验算。4. 报价规则引擎从“人肉报价”到“规则驱动”4.1 规则引擎的分层设计到这一步才是“智能”的核心。我把报价规则分成四层基础数据层、策略层、审批层、展示层。基础数据层就是前面说的产品表、价格表、客户表只负责存数策略层负责算价包括阶梯价格、客户折扣、配置加价、运费规则审批层负责兜底当最终折扣低于最低销售价或者毛利预估低于阈值时自动拉起特批流程展示层负责把计算结果呈现成一份干净的报价单客户关心的型号、数量、单价、总价、有效期一目了然。为什么要分层我见过有人把所有计算逻辑都塞进表单的字段联动里页面加载时先算单价再算折扣再算毛利几十条联动规则缠在一起。早期改起来很爽后期加一个运费维度你会发现找不到在哪改。分层之后每一层只做一件事策略层变了不影响审批层审批层加了新条件也不需要动价格算法。4.2 用低代码实现价格计算逻辑的三种方式低代码平台里实现价格计算一般有三种方式按复杂程度从低到高分别是公式字段、业务规则配置和自定义脚本。公式字段适合做简单算术比如单价 * 数量 * (1 - 折扣比例) 运费平台自带公式编辑器就能搞定业务规则配置适合做条件取值比如“客户等级等于A类时取协议价格”通常可以做成可视化的if-then规则自定义脚本适合做循环、查表、复杂校验比如计算整个报价单的毛利合计、检查多行明细是否超出特批额度。这三种方式不是互斥的建议以业务规则配置为主、公式字段为辅、自定义脚本只做兜底。以计算逻辑为例核心思路大概是function calcQuotePrice(product, qty, customer) { let price getBasePrice(product); if (customer.level A) { price getAgreementPrice(customer.id, product.id) || price; } let ladderPrice getLadderPrice(product.id, qty); if (ladderPrice ladderPrice price) { price ladderPrice; } return price; }这段代码表达的就是取数优先级。实际在低代码平台上可能用业务规则配置就能实现不一定真的写代码。但你要理解背后的逻辑才能判断应该配置在哪一层。4.3 折扣与特批的边界管理报价系统最容易引起销售反感的地方是“卡折扣”。我的经验是不要试图用系统完全禁止销售打折而是把折扣权限结构化。可以设置一档常规折扣范围比如销售经理在目录价基础上最多批5%部门总监最多批10%超过10%或者折扣后价格低于最低销售价系统自动生成特批单需要总经理审批。这样销售有空间公司有底线单子也不会因为流程太死而流失。特批单上至少要记录三件事原价、申请折扣价、折扣理由。原价和折扣价用于事后核算让利空间折扣理由用于判断这个客户值不值得长期维护。很多企业连这个都没有审批就是微信上问一句月底财务根本说不清给了多少特殊折扣。报价系统把这些留痕了毛利分析才有依据。5. 报价单全生命周期提交、审批、变更、归档5.1 报价单状态机一份报价单不是算完价格发出去就结束了。我们的状态机是草稿、待审批、已批准、已发送、已成交、已失效、已变更。业务人员先填草稿提交后进入待审批审批通过后标记为已批准可以生成正式报价单发给客户客户确认订单后转成已成交回传ERP生成销售订单如果客户一直没回应到期后自动变成已失效如果客户要求改价格或配置则从原单复制生成变更单原单保留归档防止追溯问题。这个状态机用低代码平台的流程引擎很容易搭。要注意的是“失效”状态一定要有自动任务不能等业务员手动关闭。报价单有效期一般30天到期了系统自动置为失效下一次报价必须重新生成。这样能避免客户拿着三个月前的报价单来砍价销售还不好意思拒绝。5.2 审批流和价格留痕审批流设计的核心不是流程多复杂而是条件路由清晰。我们实际的节点是提交后系统首先判断报价单里有没有低于成本价或折扣超限的明细有的话直接进入特批流程没有的话按报价金额路由金额小于5万的销售经理批5万到30万需要销售总监批30万以上再加一层总经理审批。这些规则在低代码平台里都是可视化的条件节点不需要写代码。审批通过后报价单上的价格字段要全部锁定任何人不能无痕修改。如果业务需要调整只能走变更流程生成新版本。这在低代码平台上一般通过字段只读规则实现前提是你一开始就设计好权限模型。价格留痕比界面好看重要得多我见过太多系统审批流走完了但改价格只改了一个字段审计时根本不知道谁改的、什么时候改的。5.3 与ERP/CRM的对接报价体系不是孤立存在的大多数企业都有ERP或者至少有一套客户管理工具。我们当时做了两个方向的对接客户档案和产品主数据从CRM/ERP同步到报价系统报价单审批通过后回传给ERP生成销售订单。同步可以用定时任务也可以用接口触发回传建议用API在报价单上放一个“生成销售订单”按钮点击后把报价单数据按ERP要求的结构推送过去。对接最麻烦的是主数据映射。ERP里的客户编码、产品编码和报价系统里的不一定一致回传前必须做好映射表。另外接口要做幂等防止重复点击造成ERP里生成两张销售订单。我们当时的做法是在报价单上记录ERP返回的订单号如果已经存在订单号再次点击按钮就提示“订单已生成”不让重复提交。这个细节很多团队会漏掉。6. 数据看板与分析让报价不再是黑盒6.1 报价转化漏斗怎么搭系统上线之后光有流程还不够还得让管理者能一眼看出问题。我们搭了一个报价转化看板核心指标包括报价单数量、审批通过率、客户回复率、成交转化率、平均响应时长。这个漏斗能很快暴露问题如果审批通过率很低说明销售提交的报价质量不行或者价格底线卡得太严如果客户回复率低可能是报价本身没有竞争力或者响应太慢客户已经找了别家。在低代码平台里看板通常是用报表模块拖出来的把报价单表作为数据源按状态分组统计就行。关键是要给每张报价单打上来源标记比如是展会来的、老客户介绍、主动询盘这样转化分析才有维度不然所有报价单揉在一起只能看到大数看不到问题。6.2 价格执行率与毛利预估怎么算比转化率更值得关注的是价格执行率和毛利预估。价格执行率等于成交价除以目录价如果价格执行率长期偏低说明销售主要靠降价成交这时候要看是产品竞争力问题还是销售习惯问题。毛利预估等于报价金额减去成本金额有成本数据的企业一定要上这个指标报价的时候就显示出来审批人能直观看到这笔单子赚多少。我们的经验是毛利预估不要等报价单提交后才算最好在业务员填明细时就实时显示。比如填了数量、单价、折扣页面上的毛利额和毛利率立刻更新。这样业务员自己先有个数超低价单还没提交他就知道会被打回省得反复走审批。算毛利时注意成本字段的权限控制不是所有销售都能看成本通常是报价页面对销售隐藏成本只显示毛利百分比审批页面才显示具体金额。7. 落地过程中踩过的坑和排查技巧7.1 常见问题速查表这个表是我在实际使用中被坑过很多次后总结出来的建议收藏。症状可能原因排查思路报价金额和手工算对不上价格取数优先级配置错误或折扣字段覆盖顺序不对用同一产品/客户/数量造一条测试数据逐步打印每一步的取价结果审批流卡住不流转流程条件到不了下一步或审批人字段为空检查客户等级、金额字段是否为空路由条件是否覆盖所有分支价格更新后报价单还是旧价价格生效日期判断错误或平台缓存检查当前日期是否在价格生效区间清除页面缓存重新报价回传ERP失败主数据编码映射缺失或接口幂等未处理查看接口日志先解决映射问题再保证重试不重复生成页面加载特别慢报价单明细关联查询过多减少列表联动预加载产品基础信息必要时加索引7.2 几个容易被忽略的细节有几个细节如果一开始没规划后面返工成本很高。第一报价单上一定要有币种和汇率字段外贸业务占比高的企业尤其如此。第二单位要统一管理同一个产品可能是按吨报价也可能按公斤报价报价时选错单位金额能差一千倍。第三报价单编号要全局唯一且连续编号规则要支持按年份/客户前缀生成方便对账。第四价格表的修改要有操作日志谁改的、为什么改、改前改后各是多少都要能查到。第五并发控制别忽略两个管理员同时给同一个产品改价格后保存的会把先保存的覆盖掉轻量做法是加一个“最后更新时间”字段保存前校验一下。这些细节看起来不起眼却是报价体系能不能长期稳定跑下去的关键。低代码平台能做很多事但业务规则和治理机制还得人来定。搭系统最忌“别人有什么功能我就抄什么”先把自家价格规则写成人话再翻译成配置和代码这套体系才真正属于你。
返回列表