一、 背景
批发单按单品销售,不会销售小数个商品;销售金额指定了现款多少,赊销多少,但销售商品不区分现款商品与赊销商品;现款金额与赊销金额存在可能,各自无法分摊到单品整数;现款结算金额与赊销结算金额都不能超过销售指定现款金额与赊销金额,结算存在一单多结,多单一结场景;结算数量必须等于销售数量。
二、 问题
现款金额与赊销金额都存在可能,各自无法分摊到单品整数。
例一:单品价格3.0元,销售数量5,销售金额15,用户指定现款10元,赊销5元,按结算类型结算时,无法按单品结算。
事情可能更复杂,销售不同商品,存在不同价格,按商品的某种组合,可以按单品结算,但换一种组合就无法按单品结算。
例二:销售A商品4个,每个价格3元,销售B商品2个,每个价格2元,销售金额为16元,买家指定现款10元,赊销6元。现款结算10元时,当结算2个A,2个B时,可以按单品结算;而换其它组合都没办法按单品结算,这种动态规划算法,计算复杂。
三、 分析
从上面问题可以看出,无论你怎么计算,都会存在可能无法按单品计算。
注:存在另一种尾差,如商品单价3元,销售10个,多次结算。第一次结10元,那么结3个商品不够,结4个商品超出了买家金额。这种尾差可以通过操作设计避免,结算金额不由买家单方决定,而通过界面控制结算数量,计算出与买家金额相近一个结算金额。如买家结10元商品,通过计算可以结3个商品,实收9元。通过数量控制商品结算金额。
既然无法按单品计算,那是否允许按小数个单品结算。简化问题,以例一进行分析,一张单据结算完成存在两个限制条件:
1) 不同结算类型的结算数量之和必须等于销售数量
2) 不同结算类型的结算金额必须等于原销售指定金额,也就是说不同结算类型的结算金额之和等于销售金额
l 允许小数个单品结算
|
结算类型 |
待结算金额 |
结算数量 |
结算价格 |
结算金额 |
实际结算金额 |
|
现款结算 |
10 |
3.3个 |
3 |
9.9 |
10 |
|
赊销结算 |
5 |
1.7 |
3 |
5.1 |
5 |
通过数量控制结算金额,数量*价格永远无法等于待结算金额时,需处理尾差,使得结算金额等于待结算金额,结算数量之和等于销售数量。
谁来处理金额尾差,用户还是程序自动处理?
如果程序处理金额尾差,什么时候处理,现款结算3个时,要不要处理尾差,使实际结算金额等于10元,3.1个,3.2个呢?
谁来处理数量尾差?什么时候处理?
是否允许输入数量超过实际销量,如赊销结算,实际销售数量为1.666个,如果允许,那么是否允许输入1.8,1.9个呢?,如果不允许,1.6+3.3=4.9个,结算数量尾差怎么处理?
另外一个问题,如果允许小数个单品结算,打印增值税发票时,会显得奇怪,如打印销售数量3.3,价格3,结算金额10,或打印销售数量4,价格3,结算金额10
l 按单品结算
既然允许小数个商品结算带来麻烦,那么就应该避免麻烦。
从批发单可以看出,如果销售时,指定哪些商品为赊销,哪些商品为现款,就避免了这个问题。但从体验来说,用户为什么需要知道哪些商品为现款,哪些商品为赊销。用户只知道,买了一批商品,钱不够,现款和赊销各一部分。
既然批发单销售时,不关心哪部分商品是现款,哪部分商品是赊销,结算单为什么要分结算类型结算,为什么一单不能既结现款,又结赊销。
谁关心结算按现款结算还是按赊销结算,解决什么问题?
从批发单流程可以看出,现款结算完成后,才可以交货,赊销可以之后结算。所以需要区分现款结算与赊销结算,以驱动批发流程。所以完全可以现款、赊销一起结算,只要能控制不能结算类型结算顺序就可以。
但如果,现款永远无法按单品结算,按批发单约定,买家只要结清批发单现款就可以交货,系统怎么处理?
四、 方案
以上分析都是从系统角度出发,分析问题。系统为用户服务,所以一切都得回到用例,关注用户目标与观点。
1. 用例
处理结算
范围:MCS
级别:用户目标
主要参与者:出纳
涉众及关注点:
a) 出纳:准确、快速输入,减少人工参与
b) 客户:得到快速服务,按约定金额交款,可以一单多结,多单一结,可以结算超过某种结算类型金额(不超过全部待结算金额),驱动批发单交货。看到结算商品、价格、金额,打印结算凭证。
c) 公司:结算数据正确,正确记录结算内容,快速更新待结算单据结算金额与结算数量,驱动流程。
前置条件:批发单已审批通过,并且结算未完成
后置条件:记录结算信息,如果金额结算完成,保证商品也结算完成;更新批发单结算数量与结算金额,更新待结算单据状态。
主成功条件:
1. 客户携款找出纳结算
2. 客户选择结算方式
3. 客户(或出纳)选择待结算单据
4. 系统自动生成结算商品、结算数量、结算金额
5. 出纳调整结算单据及结算商品,结算数量、结算金额
6. 客户付款
7. 系统记录结算单据及结算商品、结算金额、待结算单据结算金额及结算数量,更新结算状态。
8. 系统打印结算凭证
9. 客户离开
扩展:
1a. 客户恢复一个中断的结算
1. 输入结算单号
2. 出纳继续完成交易
4a. 商品已结算完,但金额未结算完
1. 系统生成结算商品为空,结算金额为零
5a. 客户交款金额大于和小于结算金额
1. 出纳调整待结算单据数量与结算单据商品范围与数量
5b. 客户交款金额无法按单品结算,存在结算小数个商品
1. 出纳调整结算商品的结算金额
7a. 金额结算完成,但商品未结算完成
1. 系统自动添加其它未结算商品,结算金额为零
其它:
1. 退货单不允许调整结算商品、结算数量及结算金额
2. 方案
结算单按单品结算,具有两种结算顺序:现款优先结算、赊销优先结算。结算单不关心哪些商品是现款结算,哪些商品是赊销结算。只刻画,用多少钱,结了多少商品。当结算金额超过批发单某种付款方式金额时,超出部分自动算到另一种方式的结算金额中。当用户交款无法按单品结算时,允许调整商品结算金额。
五、 操作设计
略
小结:系统为用户服务,应该关注用户目标与观点。用什么解决谁的什么问题,这是系统的价值,谁使用这个功能,场景是什么,目的是什么。
本文讨论了批发单结算过程中遇到的现款与赊销金额无法按单品整数分摊的问题,分析了允许小数个单品结算和按单品结算两种方案的优缺点。提出系统应关注用户目标,提供灵活的结算顺序,允许调整商品结算金额,以解决实际操作中的结算难题。
2531

被折叠的 条评论
为什么被折叠?



