订单单别多达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再也不担心往哪里送单了。

时间: 2024-11-02 09:59:14

订单单别多达13种——通过代码阅读业务逻辑与管理哲学的相关文章

Android基础入门教程——8.1.1 Android中的13种Drawable小结 Part 1

Android基础入门教程--8.1.1 Android中的13种Drawable小结 Part 1 标签(空格分隔): Android基础入门教程 本节引言: 从本节开始我们来学习Android中绘图与动画中的一些基础知识,为我们进阶部分的自定义 打下基础!而第一节我们来扣下Android中的Drawable!Android中给我们提供了多达13种的 Drawable,本节我们就来一个个撸一遍! Drawable资源使用注意事项 Drawable分为两种: 一种是我们普通的图片资源,在Andr

内地客买30万重疾险香港便宜1 3 可保重疾多13种 香港 保险公司 保险_新浪财经_新浪网

买30万重疾险香港便宜1/3可保重疾多出13种 一群群内地客在香港海港城,排起长龙,炎热的夏天,时不时见有人用纸巾擦擦汗--这一幕不只是为了购买Gucci.LV等奢侈品,还有的为了香港保险公司的保单,有人戏谑香港保险代理签内地单签到"手软". 虽然到香港买保险,很多人心存疑虑,不少媒体也大称"地下保单"非法.无效,未来或存在理赔风险的告诫声也不绝于耳,但据香港保险业监理处统计,自2005年起,内地客新增保单保费总额从18.2亿港元上升到去年的149亿港元,增幅逾7倍

单链表反转的2种方法

1 public class ReverseDemo { 2 3 /** 4 * 单链表反转的两种方法 5 */ 6 public static void main(String[] args) { 7 Node head =new Node("a"); 8 Node node2=new Node("b"); 9 Node node3=new Node("c"); 10 head.setNext(node2); 11 node2.setNext(

13 种激励程序员的方法

如今的程序员和开发团队需要的不仅仅是一个良好的薪酬和福利,兄弟连PHP培训毕业学员薪资福利较好,是的,虽然标准的津贴将有助于吸引员工,但正如Daniel Pink在他的书中解释到的,驱动:真正能激励我们并且长期留住员工的,是一个既有内在激励,又有外在激励因素的工作文化.下面是13种激励你的程序员的方法: 1. 倾听 每个个体都是不同的. 激励一个业务分析师的方式与激励一个程序员的方式是完全不同的.甚至激励一个程序员与另一个程序员之间的方式也是有区别的.一个可能会想更深入到具体的技术,而另一个可能

前端开发构建:13 种热门工具的选型参考

前言 在前端项目的规模和复杂性不断提升的情况下,各类构建思想和相应工具层出不穷.本文竭己所能对比了当下13个构建工具,包括 Browserify. Webpack. Rollup. Grunt. Gulp和 Yeoman6个广为流行的工具, FIS. Athena. WeFlow和 Cooking等4个国产工具,以及三大框架: React, Vue和 Angular的官方脚手架.希望能在项目初期的构建工具选型上为大家提供些参考. 全览 构建工具可以分为三类:模块化打包类.任务流构建类和集合型工具

Android基础入门教程——8.1.3 Android中的13种Drawable小结 Part 3

Android基础入门教程--8.1.3 Android中的13种Drawable小结 Part 3 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来把剩下的四种Drawable也学完,他们分别是: LayerDrawable,TransitionDrawable,LevelListDrawable和StateListDrawable, 依旧贴下13种Drawable的导图: 1.LayerDrawable 层图形对象,包含一个Drawable数组,然后按照数组对应的顺序来

Android基础入门教程——8.1.2 Android中的13种Drawable小结 Part 2

Android基础入门教程--8.1.2 Android中的13种Drawable小结 Part 2 标签(空格分隔): Android基础入门教程 本节引言: 本节我们继续来学习Android中的Drawable资源,上一节我们学习了: ColorDrawable:NinePatchDrawable: ShapeDrawable:GradientDrawable!这四个Drawable~ 而本节我们继续来学习接下来的五个Drawable,他们分别是: BitmapDrawable:Insert

iOS:创建单例对象的两种方式

单例模式:创建单例对象的两种方式 方式一:iOS4版本之前 static SingleClassManager *singleManager = nil; +(SingleClassManager*)sharedManager { @synchronized(self)  //同步加锁,在多线程中使用,可以使线程安全 { if(singleManager == nil) { singleManager = [[SingleClassManager alloc]init]; } } return

通俗理解J2EE的13种规范

学习到Java就不得不了解为人熟知的13种规范,小编从网上各种搜集资料,可是都是一些专业性的术语,确实很令人费解,讲解的都很抽象.在小编的不懈努力之下,通过看别人的博客,汇总了以下的内容. 1.JDBC(java Database Connectivity):   官方:JDBC API为访问不同的数据库提供了一种统一的途径,就像ODBC一样,JDBC对开发者屏蔽了一些细节问题,同时,JDBC对数据库的访问也具有平台无关性. 小编:学习过.NET的一定了解ODBC,这是属于同一个性质的,就是为了