v2版本的客户报价比v1版本的优势为,在v1版本的基础上采用了右键菜单的形式组织了各种功能,同事把条件的设置应用到了各个节点

报价的基础原理和优势

原理

本报价体系为山顶洞人科技首创,主要优点在于:

  1. 能够实现所有可能的复杂报价
  2. 通过树形展示,把复杂的层级架构体现为一颗树达到以下优点:
    • 直观,易操作(比起复杂的公式计算,太直观了——具体参考Excel的函数)
    • 方便调试,可以调试到任意一个节点

操作步骤

报价看起来比较复杂,其实很简单,主要把握以下三个步骤:

  1. 添加费用
  2. 设置费用的表达式(即收费标准)
  3. 设置表达式的条件(即该收费标准是在什么情况下生效的)
  4. 重复1、2、3即可。

报价基础操作

打开客户报价

条件设置

添加条件

点击“添加条件”菜单按钮,出行条件编辑界面

条件设置有以下几个参数需要注意的:

  • 逻辑符
    • 默认是并且,就是各个条件直接的关联关系。只有并且、或者选择。选择并且,则需要同级别的所有条件都满足,选择或者,则只需要其中一个条件满足即可
    • 注意:同一个级别下的所有条件(同一个父节点)只能有一种逻辑符,否则均以“或者”为标准
  • 属性名
    • 就是要作为动态值的数据,有实际的运单给定的值生成
  • 操作符
    • 就是动态值和期望值之间的关系
  • 属性值
    • 就是期望值,用于与动态值进行匹配
  • 使用公式
    • 有的时候,期望值并不一定是个固定值,有可能是一个动态关联的值,这个时候需要勾选“使用公式”,这样才能设置期望值为一个四则运算的公式

添加条件组

添加“添加条件组”菜单按钮,出行条件组编辑界面。该界面很简单,只需设置条件组的逻辑符即可。

添加费用

点击“添加费用”菜单按钮,出现费用编辑界面

费用编辑界面也很简单,只有三个值需要填写:

  • 取值方式
    • 取值方式,决定了费用下的多个公式如果都满足的时候,怎么取值的问题,因为返回给客户的时候,他只需要一个数值类型。比如是20.1
      • 取最大值:在给定的多个匹配值中取最大的值
      • 取最小值:在给定的多个匹配值中取最小的值
      • 等于:取第一个匹配上的值
  • 费用名称
    • 所以在系统中定义的费用,都可以选出来
    • 支持通过简拼、全拼、中文进行检索
  • 币别
    • 所有在系统中定义的币别都可以使用

表达式设置

添加表达式

点击“添加表达式”菜单按钮,出现表达式编辑界面

表达式是一个计算结果,一个费用下,可以有多个表达式,可以多所有的表达式进行计算,然后要规定的取值方式进行取值

  • 取值方式
    • 取值方式,决定了表达式下的多个公式如果都满足的时候,怎么取值的问题,因为返回给客户的时候,他只需要一个数值类型。比如是20.1
      • 取最大值:在给定的多个匹配值中取最大的值
      • 取最小值:在给定的多个匹配值中取最小的值
      • 等于:取第一个匹配上的值
  • 公式列表
    • 添加的多个公式的列表,支持删除
  • 公式
    • 可以是一个数字,也可以是数字和动态属性值之间的四则运输,支持括弧等
  • 插入属性
    • 因为属性的识别是要以{}包住的,因此提供了一个快速添加属性的按钮

一个表达式的示例如下:

添加表达式组

表达式组的编辑很简单,只需设置组名即可:

表达式组的最大作用,其实是用来做条件分组的,这样通过树形的组织形式,可以方便的对表达式进行简化。一个示例如下:

添加引用

需要版本≥2.0.12093

  1. 把任意的表达式节点或者条件/条件组节点,保存为引用
  2. 设定引用的名称,并且可以修改对应的节点和条件
  3. 保存,这个时候就能在原来的报价的节点上添加刚才保存的引用了

    在弹出框中,选择对应的引用
  4. 引用节点和一般的节点,在显示上,会有颜色的不同。引用的节点显示为橙色

报价设置技巧

  1. 表达式(组)节点和条件(组)节点,是可以拖动的,如果按住ctrl键,则为复制
  2. 表达式(组)节点和条件(组)节点也可以通过右键点击复制和粘贴,跟拖动类似
    • 如果是在一个解决方案中,建议用拖动
    • 如果是在不同的解决方案中,建议用右键的形式复制和粘贴
  3. 每个节点都能够增加条件,报价引擎在工作时,优先执行当前节点下的条件,如果条件都满足,则继续执行接下来的工作
  4. 字符串的计算中的包含不包含,如果是多个字符,可以用英文字符的;(中文也是支持的)
    • 比如判断地址“深圳市山顶洞人科技有限公司”是否包含有“公司”或者“山顶洞人”,则可以这么写:包含“公司;山顶洞人”
  5. 字符串操作包含不包含等于不等于,都是不区分大小写和繁简体的
    • 比如a cat一只猫在使用软体A CAT一只猫在使用软体A CAT一隻貓在使用軟體都是一样的
  6. 表达式和条件都是可以分组的,可以层层嵌套
  7. 表达式组和费用都是可以设置取值函数的:取最大值、取最小值、等于
    • 如果设置为等于,则多个表达式生效时,只取第一个生效的表达式
    • 如果设置为取最大值或者取最小值,则按取值函数取值。
  8. 每个唛头(品名)也是可以产生费用的,产生的费用最终可以合计到总费用中
  9. 每个表达式都可以设置把计算公司添加到费用备注中,这样可以查看费用的计算结果

自动填写备注

设置填写备注

勾选“填写备注”复选框,即可在应用公式的同时,把备注内容填写上去

如果没有设置公式的备注的情况下,默认采用“备注格式化”中填写的内容,其中该备注支持占位符{0},格式化的时候,会把实际计算的值替换到占位符中。

实际运行结果如下:

实际公式的备注的填写

在表达式后面增加@字符,表示@后面的全部是备注的内容。支持两个占位符

  • {0},表示解析过后的表达式,比如@{发货单.重量}*1.5,如果发货单的重量为750KG,那么{0}表示750*1.5
  • {1},表示表达式计算后的结果,如上述示例,{1}则为1125

比如80@最低消费。则80表示表达式,最低消费是备注信息

获取获取分类别的重量、件数、体积

  1. 首先确保你的报表有以下几个属性
  2. 如果获取具有A类别的订单的体积
    • 首先查看系统中的货物类别定义,其中的关键是“货品类别”的这个数据字典下的键值,记住该键值
    • 注意查看运单中,是否选择了对应的货品类别
    • 在表达式中,引用了的发货单.分类体积之后,注意设置该属性的分类标签,设置规则如下“[属性]:[物品类别键值]”,示例如下:50*{发货单.分类体积:A}表示,50乘A类物品的总体积
    • 计算结果如下:
      • 表达式
      • 计算结果

报价的调试

结果也是显示树形结构:

常用客户报价

运费按半泡计算

  • 分析:泡货和重货的计算方式
    • 什么是泡货?
      • 在物流运输中,因为运输都是按车辆进行的,因此一辆车可以装货的体积和重量是有限制的。有些货物很轻,如果这个时候按重量算,那么企业是亏本的
      • 比如运输泡沫,可能100KG的货物,就装满了一车,如果按0.5/KG计算运费,那发一车的货物,才50元,企业不得破产?
    • 什么是泡重比?
      • 有时很难界定什么是泡货,什么是重货,因此行业一般有如下规定
      • 汽运:体积*167作为体积重量,空运:体积*500作为体积重量,这个167或者500的数值,就是泡重比
      • 泡货就是体积重量大于实际重量的,重货就是体积重量小于实际重量的
    • 计算半泡,应该遵循以下公式:【重量单价】*(体积重量+实际重量)*0.5
  • 示例:

泡货按体积计算,重货按公斤计算

  • 分析:此处的难点在于条件的判断,如何判断是泡货,如何判断是重货,参考上面的泡重比概念的介绍,我们可以把泡重比的条件判断应用到条件中,可以达到我们的目的
  • 示例:

运费设置最低消费50

  • 分析:此报价包含一个最低消费的设置,可以认为是如果计算出来的运费大于50,则取计算的运费,如果小于等于50,则取50.因此有一个在计算的运费和50之间取最大值的机房公式
  • 示例:

偏远地区包含偏远的派送费

  • 分析:此报价包含两个条件:
    • 派送:需要设置派送条件,一般派送都是对应多个费用的
    • 偏远地区:识别偏远地区,一般可以通过派送地址进行识别,如果派送地址包含某些字眼,则判断为偏远地区
  • 示例:
  • 注意:在字符串的判断“包含”中,如果有多个条件需要匹配,需要中英文的;对多个字符进行区分
文档更新时间: 2019-11-04 19:01   作者:马非码