“收款以后”指的就是预付款订单。上面讲到过,销售订单设计时有两条线,其中一条就是跟客户付款有关。收款以后这个交付规则的含义就是客户要先付完款(可能只是一部分),然后企业才能够发货。此时系统分析师在设计的时候,就需要让系统在发货之前去判断这张订单客户的付款情况。如果客户按规定交付了货款(即在财务模块有这张订单的付款记录),则允许生成发货单。否则的话,系统就不允许发货,并发出相关的警告。“强制”这个交付规则就相对简单了。如果用户选择这个交付规则的话,根据销售订单来生成发货单,在后台就不会做相关的控制。即不会管库存数量、订单的完成情况与客户付款情况。一般强制规则只用在系统测试与实施的初期。由于系统刚上线的时候,基础数据还不怎么准确。所以允许用户进行强制出货。而强制出货带来的一个明显的负面效应,就是在仓库的帐面上会有负数库存。显然这是一种明显的错误。为了系统实施的需要,一般在设计时都需要有这个规则。等到系统完善之后,用户可以根据自己的情况采取其他严格的控制条件。发货控制中的细节在系统设计时,除了要实现如上这些交付规则的后台控制之外,下面这些细节的内容也有助于提高系统的可用性。第一个是客户交付规则与订单交付规则的关系。有时候会根据客户设置不同的交付规则。如某些客户经过企业评估之后,认为其信用不好。此时企业就会要求这个客户必须先付款然后才能够发货。也就是说,这个客户的交付规则是“付款以后交货”。此时为了管理方便,用户会在客户级别上设置交付规则。这个设计跟上面的订单级别设计类似。而笔者这里要强调的是,如何将客户的交付规则与订单的交付规则统一起来。如在销售订单的时候需要输入客户的信息,那么这个订单的交付规则就可以从客户信息那边自动带过来。然后需要考虑的问题是,这个交付规则业务员能否改呢?通常情况下,如果这个交付规则需要专业的人员才能够更改。如企业的信用部门或者销售经理才有权进行更改。此时就涉及到权限的限制。为此如何将客户的交付规则与订单的交付规则统一起来,并在订单级别上做好相关的权限设计,这是系统分析师在设计时要全面考虑的内容。第二个需要注意的内容是,一家企业往往不需要用到所有的交付规则。如像一般超市,采用的就是“收款以后”这种交付规则。而生产企业可能会采用“完成行”或者“收款以后”两种交付规则。在系统设计的时候,为了提高系统的灵活性,需要将各种交付规则都考虑进去。但是同时需要设置一个开关,让企业选择哪些交付规则是可用的。否则的话,一点这个下拉列表,这么多交付规则出来容易搞晕。所以在设计的时候,可以考虑让用户自己去选择可用的交付规则,屏蔽掉不用的交付规则。第三个细节问题是“默认的交付规则”。企业往往会有一种主要的交付规则。为了提高工作的效率,要能够在订单与客户级别上设置默认的交付规则。