首页 > 代码库 > 订单单别多达13种——通过代码阅读业务逻辑与管理哲学
订单单别多达13种——通过代码阅读业务逻辑与管理哲学
业务员下订单,要思考 如下情况:
if ( 单价 >0 ){ if ( 部门 == 内贸 ) { if (产品状态 == 返修) { 下国内返修订单.work(); } else if (产品状态 == 试产) { 下试产订单.work(); } else if (产品状态 == 经济型) { 下经济型订单.work(); } else if (产品状态 == 呆滞品) { 下呆滞品订单.work(); } else if (产品状态 == 代工型) { 下代工型订单.work(); } else if (产品状态 == 有库存) { 下出库存订单.work(); } else if (产品状态 == 备料) { 下备料订单.work(); } } else //外贸 { if (产品状态 == 返修) { 下国外返修订单.work(); } else if (产品状态 == 试产) { 下试产订单.work(); } else if (产品状态 == 经济型) { 下经济型订单.work(); } else if (产品状态 == 代工型) { 下代工型订单.work(); } else if (产品状态 == 呆滞品) { 下呆滞品订单.work(); } else if (产品状态 == 有库存) { 下出库存订单.work(); } else if (产品状态 == 备料) { 下备料订单.work(); } }} else //赠品 或 换货 或 免费返修{ if (赠) { 下 赠品订单.work(); } else if (换) { 下 换货订单.work(); } else if (免费返修) { if ( 部门 == 内贸 ) { 下国内返修订单.work(); } else // 部门 == 外贸 { 下国外返修订单.work(); } }}}
ERP 单别说明 | |||
订单 单别 | 单别名称 | 单别意义 | 特殊说明 |
2201 | 国外订单 | 国外客户、正常单价、量产的订单 | 仓库别必须是纳入LRP计算的,比如成品2仓 |
2202 | 国内订单 | 国内客户、正常单价、量产的订单 | |
2203 | 备库存订单 | 用于备货、需要生产的订单,后续可以借用、出库存、赠送 | |
2204 | 备料单 | 每月定期用于备料的订单 | 仓库别必须是纳入LRP计算的,比如成品2仓 |
2205 | 库存出货单 | 无需生产,有库存可以直接出货的订单,包括试产产品库存 | 仓库别无限制 |
2206 | 换货订单 | 单价为0、免费更换的特殊订单,有库存则备注直接出货,否则默认需要生产 | 仓库别必须是纳入LRP计算的,比如成品2仓 |
2207 | 国外返修单 | 国外客户、特殊单价的订单 | |
2208 | 国内返修单 | 国内客户、特殊单价、0单价需要返修的产品的订单,比如40块返修费、或免费返修 | |
2209 | 滞品订单 (总监审核) | 呆滞品、库存出货的订单,不分国内和国外 | 仓库别无限制 |
2210 | 试产订单 | 尚在试产状态的产品、需要生产的订单,不分国内和国外 | 仓库别必须是纳入LRP计算的,比如成品2仓 |
2212 | 经济线订单 | 经济型产品的订单,不分国内和国外 | |
2211 | 代工订单 | 给客户代工生产的订单,不分国内和国外 | |
2213 | 赠品订单 (总监审核) | 单价为0、免费更换的特殊订单,有库存则备注直接出货,否则默认需要生产 |
ERP运行4年来,我们陆续增加到13种订单单别。业务员下单的工作已经成为一种程序员才能干的活——吐槽。
每一种单别的背后,都有特殊的管理意义。当然现在来看很多考虑不周,属于没必要新增的单别。如果公司高层管理人员学过面向对象,或许可以避免——马后炮。
管理哲学(单据审核、统计分析、质量管理、流程管控):
2201 国外订单 和 2202 国内订单 是按照 地域划分的,目的是为了审核方便和便于后续统计销售数据。那时候营销部没有划分内贸课和外贸课,笼统的是一个大部门。
2203 用于备库存,需要生产出成品入库,由于无单价,在当时属于公司行为,因此没有区分国内和国外。但是现在来看,成品库存呆滞和物料呆滞多半跟责任不清有很大关系,所以后续应该按业务员下单,取消计划经济,走市场经济。
2204 备料单 仅仅用于购买物料,并不生产,因此和2203有明显的区别。但是按业务员备料是去年年中才开始的。警惕呆滞料。
2205 库存出货单,是在2203备库存的基础上,直接出货的。纠纷在于热销产品的资源如何分配。
2206 换货订单和2213赠品订单 原本是1个单别,但是公司一统计发现好多出货其实不是免费赠送给客户的,是产品质量问题导致的免费更换\生产,所以应该计提售后服务费,不应该和赠品合在一起。
2207 国外返修单和2208 国内返修单,客户退货回来,只需要返修,不需要生产,价格也许象征性收点,所以单别要单独。
2209 呆滞品销售,因为价格和正常品有很大差异,所以为了避免影响正常品的利润,使销售报表的利润率更加动人,因此独立出来是必须滴。
2210 试产订单,生产流程和质量管控流程都不一样,因此也必须独立出来。
2212 经济线订单,价格和正常品有差异。
2211 代工订单,苍蝇也是肉,价格。
2213 赠品订单,免费赠送,总监审批,要按年、月 XX 统计。
分析了管理目的和意义之后,我们再从面向对象的思想去思考,如果换做是我们自己,既要满足管理哲学,还要低耦合高内聚,那么这些单别应该如何建立呢。
第一步,建类和属性
人员:张三、李四
客户:A 、B、\ C
部门:内贸、外贸
单价:正常、赠品、呆滞品、经济型、代工型
币种:RMB、USD
出货种类:正常生产、退回返修、备料、备货
第二步:
上述对象已经不可再分割,怎么能做到既满足管理要求,业务员又可以以最少的单别完成下单工作呢。
业务员如何才可以做到不动脑子就可以完成下单工作。
第三步:
我的思考是1个单别+2个字段对象组合。
在订单单身加1个“销售种类”的字段,属性有{正常、赠品、呆滞品、经济型、代工}。
在订单单身加1个“出货种类”的字段,属性有{正常生产、退回返修、备料、备货}。“试产”放在产品名称。
所有销售报表的维度都加入“销售种类”和“质量状态”,销货时根据维度选择对应的销货单别(注:目前使用的ERP是用销货单别进行数据筛选,进行销售利润、净量、净额金酸)。
业务员下单通过以下步骤完成:
打开程序
1、只有1个单别,故自动带入
2、录入客户 自动带入业务员、币种
3、根据业务员 自动带入部门
4、录入品号,带出品名和规格,如果品名有试产2次,则表示是试产产品
5、选择销售种类{正常、赠品、呆滞品、经济型、代工}。
6、选择出货种类{正常生产、退回返修、备料、备货}
7、录入单价
8、保存
退出
面向对象真是太伟大了,业务员终于不用加班下单了。
业务员现在是拯救出来了,那流程管控其实还是失效的。
此时该ERP和OA集成出马了,利用OA进行电子签核,通过属性字段去判断流程走向,文员MM再也不担心往哪里送单了。
订单单别多达13种——通过代码阅读业务逻辑与管理哲学