上一页

本文以销售订单实现阶梯价为例,用作学习引导
(完整文档可以下载http://www.nxcells.com:8092/attach_files/nxcells/3542
(示例库:http://www.nxcells.com:8092/attach_files/nxcells/3541

1销售模块

1.1阶梯价

业务场景:某家公司为了吸引用户购买产品,刺激消费,制定某些规则,当购买的数量或者金额大于特定值的时候,会给单价一个折扣,买的越多,折扣越大,形成阶梯形式的报价。
目标:实现销售报价单上按数量和按金额两种形式的阶梯报价,并且审核通过后生效,老单自动失效,在销售订单上计算阶梯单价。

流程:现有一个产品表,然后再销售报价中选择产品对其进行报价,双击报价明细表中的ID号,跳转至阶梯价单,在阶梯价单中填写产品的阶梯价,报价模式有按金额和按数量两种,销售报价单经过审核后生效,并且老单自动失效,最后销售订单根据阶梯价获取单价信息。

1.1.1客户表

客户表的表样如下所示,有4个字段。

接下来要定义字段,都是主表内容,所以要【定义单一数据项】,选中字段区域,点击工具栏中的定义单一数据项

【字段标题位置】用于指定标题的位置,我们上图标题在左侧,所以选择左侧;【数据类型】用于指定字段存到数据库的类型,包含字符、整数、小数、附件等多种数据类型;【复制字段名称到后台字段】用于将【字段名称】和【后台字段】保持一致,即数据库中的字段名称。

点击保存之后,点击进入【管理数据表】,【管理数据表】用于管理已建立的表和字段


客户编号是一个自动生成的号,不需要我们去手工填写,由系统自动产生,所以我们要将客户编号字段绑定一个【数据规范】—【自动编号】,点击管理数据规范

选择新建,弹出新建自动编号的框,填写编号名称(起个名字)、选择编号前缀、系统变量、日期部分,这些是可选项,也可以不选。指定流水号位数,起始编号为几,指定生成时机,点击保存。


选择客户编号,点击确认

我们可以发现【管理数据表】中,客户编号绑定了这个自动编号规范

点击【测试填报】可以查看一下我们的报表;【保存窗口大小】可以通过拖拽这个窗口得到我们需要的窗口大小,以后每次新增、修改、查看都是这个窗口大小。

当我们想在客户端上查看时,我们需要给【模板权限】,给了模板权限之后,用户方可在客户端上进行操作。
点击【模板权限】—【填报权限】,选择一个角色,给定该角色的新建、修改、删除、导出、打印、审核、反审、作废等权限。

点击【查阅权限】,选定角色给查阅权限,包括查阅时候的导出、打印、审核、反审、作废、归档、评论、锁定等权限。

这样我们就可以在客户端进行增删改查的操作了

这样我们的客户表就建立好了,以后的定义字段和模板权限将不再进行详解。

1.1.2成品表

成品表用于记录销售的成品信息
成品表的表样如下:

类似于客户表,成品表的品号是自动编号,绑定的是产品ID

给定模板权限,到客户端中去填写一些成品信息数据

1.1.3销售报价单

销售报价单用于对产品进行报价
基本表样如下所示:
主表中,【报价单号】用于记录报价单号,【是否拼单】字段用于是否可以参与拼单。
明细表中,【品名】可以双击列表选择成品信息,【基价】是用于填写产品的基础价格,
【报价模式】用于该产品是按什么参与阶梯价。

主表定义单一数据项之后,打开【管理数据表】、【报价单号】字段绑定了一个自动编号、【是否拼单】字段绑定了数据规范单选框

绑定方式如下所示

上文讲述了主表字段的定义,对于明细表字段要定义重复数据项,选中要定义的明细表字段,点击【定义重复数据项】,其他的和【定义单一数据项】一致,选定数据类型,绑定数据规范;需要注意的是,定义重复数据项至少要两行、明细字段必须是连续的区域、调整位置时要整块的挪动。

打开【管理数据表】,我们可以看到【品名】和【报价模式】字段绑定了数据规范,其中【品名】字段绑定的是列表数据规范,【报价模式】绑定的是一个下拉数据规范

我们来看一下列表规范的建立

点击新建,弹出新建列表方式的框,填入列表名称(取个名字),数据源用于选定列表方式的来源,可以选择多表进行表间关联,筛选条件用于筛选需要的数据,可以不填,列表字段用于选择需要的字段

成品列表的数据来源为成品表

筛选条件无,列表字段如下

点击保存后,选择新建的列表,后面可以选择是否单选,默认可以多选;这里筛选条件可以和本报表进行比较,只展示和本报表数据相关的列表;填充方式是用于将列表字段填入到对应的字段位置;点击确认后我们就可以完成列表规范的绑定了。

效果就是双击品号,可以弹出列表供选择填充

接下来我们看下拉的建立

点击新建,同上数据规范的建立,给下拉取个名字,选择数据源,数据源有两种方式,一种是固定值(如性别),还有一种是来源于其他的表;下面可以新建节点,上下移动节点位置。


明细表的序号是一个自增的序号,记录明细的行号,使用excel公式的行号函数,当本行有产品信息时,我们用当前行减去标题的行数,就可以得到明细每行的行号。

明细行的ID使用报价单号和序号的拼接,给每行一个唯一的ID号,这个ID号用于后面的阶梯价单号,这个拼接只是展示使用,因为拼接过后的ID号长度可能不一样,这样显得不专业;我们可以用ID号和品号拼接,也可以重新给个自动编号,生成时机是保存报表时;

1.1.4阶梯价单

阶梯价单是用于对销售产品的阶梯价记录
其表样如下所示
主表中,【ID】是销售报价单中的ID传过来,用于记录报价的单号,【报价模式】和【基价】字段和销售报价单中的意思一样,当报价单和阶梯价单发生不一致时,以阶梯价单的数据为准。
明细表中,【起订量】是阶梯报价的一个阶段起始,【上限】是阶梯报价的一个阶段结束,
【单价】指产品在这个区间的价格。

点击【管理数据表】,我们可以发现日期绑定的当前日期

我们点击选择

接下来看明细表,这里也有一个ID,是和主表ID一样的,也称为数据下沉,当我们要使用阶梯价的时候,不用再关联主表数据,可以直接使用明细表进行和其他表关联

因为当报价单和阶梯价单发生基价不一致时,以阶梯价单为主,我们需要的通过明细表中数据得到阶梯价,总所周知,买的越多,享受的优惠越大,单价就会越低,所以基价为明细表中价格最大的,此基价用于后续的提取。

为了方便用户,我们应当在输入下限的时候,自动出现上限,这里需要使用excel偏移函数offset,当下一明细行没有起订量时,默认上限为99999,否则为下一明细行的起订量减去0.1得到上限。

1.1.5销售订单

销售订单用于填写销售情况
基本样式如下
主表中,选择客户,自动产生编号,选择订单日期
明细表中,选择商品,填写订单数量和金额,当有的字段是辅助字段或者数据下沉字段
我们可以用excel隐藏起来,不展示出来,本文为了展示所以没有隐藏。

点击【管理数据表】,查看主表,客户绑定客户列表,订单号为自动编号,日期选择当前日期

查看明细表,商品编码绑定成品列表,数据下沉可以使用excel公式,也可以使用管理数据表中的【为空取值】,保存时会将订单号下沉到【单号】字段

【金额】字段是单价乘以数量

至此,我们的基础样式已经搭建好了

1.1.6逻辑搭建

Step 1: 通过双击报价单明细中的ID,跳转到阶梯价单,对该产品进行阶梯报价。
模板:销售报价单
点击工具栏的【表间关联】,填写表间关联名称,选择关联的模板,【绑定字段】是生成超链接的形式,本次我们不需要;【关联操作】选择修改和匹配不上则新建填入,即如果已有该产品的阶梯价单,我们是修改操作,如果没有,则新建一张阶梯价单。用报价单中的ID去匹配阶梯价单中的ID。

Step 2: 销售报价单和阶梯价单中的基价和报价模式不一致时,我们需要以阶梯价单
的为准。
模板:销售报价单
建立表间公式:提取公式用于提取数据的作用,这些数据可能来源于其他表单、外部数据等,详细解释可以参考帮助文档。

【公式名称】记录公式的名字,【应用方式】选择公式执行的时机,【选项】中勾选排除重读、自动分组、执行后清空空行

数据来源为阶梯价单

筛选条件使用销售报价单中的ID去匹配阶梯价单中的ID

填充方式使用阶梯价单中的ID来按行列匹配,如果不按行列匹配的话,会自动向下增加,数据会错乱。将阶梯价中基价和报价模式填入,上文中求的报价单中的基价就是在这时提取过来。

Step 3: 通过报表命令完善业务逻辑
模板:销售报价单
我们前两步一个是表间关联,一个是表间公式,我们需要使用双击ID来进行触发,所以需要报表命令。该报表命令为双击单元格事件,触发字段为报价单明细表中的ID,执行的命令为表间关联等待第一步的表间关联,执行表间公式第二步的表间公式

Step 4: 销售报价单审核通过后生效,老单自动失效,我们需要给销售报价单审核权限,同时,查找最新的报价单。
将销售报价单的模板权限中的审核和反审两个勾选上,查阅权限中的也需要勾选。

老单自动失效,首先需要知道的是系统保留字段ReportStatus(表单状态),当表单保存未审核是ReportStatus=1,审核过后ReportStatus =2,反审核之后,表单为保存状态ReportStatus =1;
建立一个视图查询出已经审核的销售报价单,给视图一个名称,选择数据来源(销售报价单的主表和明细表,还有阶梯价的明细表),建立表间关系,销售报价单主表和明细表内连接,关联条件为([销售报价单主表].[RecordID] = [销售报价单明细表].[RecordID]),
销售报价单明细表和阶梯价单明细表的使用左连接,关联条件为([销售报价单明细表].[ID] = [阶梯价单明细表].[ID])

筛选审核过后的报价单

需要的视图字段如下

上面视图查找审核后销售报价单和阶梯价单的关联,要寻找最新的销售报价单,还需要建立一个视图。我们需要使用sql关键字 not exists ,查询上述视图中ID号最大的,因为越新的报价单,其ID号是越来越大的,所以从已经审核的报价单找出最大的ID,即最新的报价单。

预览一下视图,我们可以得到以下的数据

Step 5: 在销售订单中计算出单价
第一个提取公式,提取视图中的基本信息,选完产品之后,跳出与该产品有关的报价模式等基本信息

第二个提取公式,从最新阶梯价中提取单价信息,筛选条件中的意思是当报价模式是按数量的时候,起订量和上限与销售订单中的数量比较,否则是与总基价比较,将最新的单价通过商品编码按行列匹配到销售订单明细表中的单价字段。

下一页

作者:严双圆  创建时间:2022-12-27 15:28
最后编辑:harry  更新时间:2023-10-31 17:19