Author: Exson Qu

销售订单
特性

· 可以输入，维护顾客的订单，并追溯回顾客订单的编码。

· 在库存状况查询时，商品的订单的累加数量会被显示，作为需求之一。

· 在库存状况查询时，显示组合商品的订单的累加数量，作为对它的组成部品的需求之一。

· 订单中还没有开发票的数量被维护并且随着此订单开发票和红字发票的进展情况而更新。

· 输入的订单可以直接开发票，不需要或者仅仅需要少量的额外输入。

· 一个订单多次发货是允许的。订单维护了每次发货的参考编号。

· 当发送的数量与订购的数量不一致时，差异会被记录，以备完成及时足量交货报告。

· 根据顾客的销售类型，分公司和货币，系统自动返回价格。

· 根据折扣矩阵，覆盖产品范围的基于数量的折扣由系统自动计算。

· 可打印包装单，用激光打印或者预先印刷的表格。

· 用户可以选择从哪个仓库发货。

· 发货地址可以自由格式输入--默认的是顾客分公司的实际地址。

· 循环的销售订单会一直以定义的年度频率循环，直到在选择的日期结束。

输入销售订单
从主菜单，订单标签，点击订单输入连接
顾客和分公司的选择
开始， 订单输入页面显示选项以选择顾客和分公司。顾客是实际的付款帐户，分公司包含了所有发货的信息。顾客查询工具与选择顾客脚本相似，但是程序实际在顾客的分 公司代码中查询，结果只是显示分公司，伴随着顾客付款的相关信息。要查询一个顾客，可以输入分公司代码的一个或者多个字母；或者输入顾客名称中的一些关键 字(或者部分）。这种查询方法使返回结果最小化(可能通过拨号连接),以保证对于用户而言的最快反应速度。所有符合输入条件的分公司，只要不被标识为不能交易，都会显示，并且有一个显示顾客代码的按钮。，选择希望的顾客/分公司，点击它前面的按钮，就把此公司作为订单要交付的顾客和分公司。webERP允许在需要时在以后修改交付细节。订单现在显示快速输入界面，首先是顾客和分公司的名字，以及顾客的销售类型。

选订采购订单明细项目
两种方式选择订单明细项目

· 默认情况下，一个”快速输入“屏幕会出现，允许直接输入库存代码和订单需要的数量。这个快速输入表中显示的行数由config.php中的变量$QuickEntryLines定 义，可以由用户更改。当用户输入任何几栏到这个表中时，点击快速输入按钮，就可将其输入订单中。定价由系统根据销售类型，货币，顾客分公司和对此顾客订单 的收费而计算出来。如果没有足够的行数输入订单所有的部品代码，可以重复上述程序，当第一批的快速输入被处理后，会在订单小结下面出现快速输入表。

· 在快速输入屏幕，有一个按钮用来查找部品。这个按钮使用户可以查找部品，查找方式可以是基于库存目录和/或者物品描述的任何部分和/或者物品代码的任何元素。当输入适当内容后，点击查找按钮，在代码或者描述栏位会显示部品代码和描述以及物品的照片--如果所有部品的照片已经被上传到服务器。部品的照片必须是jpg格式，并且其文件名与部品代码相同，但是使用.jpg后缀，并且必须存放在config.php指定的路径part_pics中. 物品代码作为一个按钮显示，并且系统自动把选择的物品放在订单中。其他的部品可以用同样的方法选取。

选完了订单的部品后，可以编辑数量，价格和适用于订单每一行的折扣。要得到订单的价值，或者要重新计算，必须点击“Recalculate"(重新计算)按钮 (这是使用服务器端的脚本-PHP－而排除任何客户端--java--处理的一种妥协）。根据输入的数量，使用折扣矩阵的功能（在订单中在那部分描述的），计算折扣。
如果输入一行后，显示红色的背景，这意味着系统的库存不足以满足订单这行的输入，（此库存指）默认的仓库（来自顾客分公司记录)--对于这个分公司的订单而言，是最合适的仓库。显示的物品代码也是一个指向一个新浏览窗口的链接，显示这种物品的库存状态查询，他显示了所有地点的目前可用库存。
可以在任何时间通过点击行尾的链接删除这一行。
整个订单可以在任何时间通过点击"取消整个订单“按钮取消。

顾客可以在任何时间变更。
当所有的需要的商品都被选择后，必须点击交付细节按钮。注意这对于数据库没有任何改变。这些输入的数据只是作为一个服务器端的cookie--网页服务器中的一个文件。在可以下单前，必须确认交付细节。

交付细节
默认情形是交付细节来自分公司的实际地址。然而，这个屏幕的任何信息都可以修改。这些信息打印在发货/包装单和发票上。
用来满足订单的仓库通常为顾客分公司记录的默认仓库。然而，可以选择另外的仓库，如果订单可以从其他仓库发货的话。

这里输入顾客的订单编码，并且选择最合适的运输公司。系统保留最近的付运货物到这个分公司的运输公司作为默认公司，如果它被覆写，新的公司将被保存作为此分公司的默认运输公司。
通过点击变更行订单行按钮，可以回到行细节输入屏幕，这时会保留所有在交付细节屏幕中输入的所有数据。如果发货仓库地点被变更，行的背景颜色会更新，以反应新发货地点的库存是否满足订单需要。
如果运用了自动运费计算--参见config.php中的参数，根据整个订单的立方米数和重量，会得出运输费用。并且系统返回最佳的运输公司。用户可以选择支付计算的费用或者用最便宜的运输公司。需要时，计算的运费可以被覆写。
一旦所 有的细节都被正确输入，点击下订单按钮。特别要注意的是：如果在点击这个按钮之前，放弃了这张订单，那么数据库将没有任何的更新，并且没有任何的东西被保 存。点击进入其他的屏幕会丢失输入的订单。同时，完全可以同时打开几个浏览屏幕查看不同的查询结果。不可以同时在两个窗口输入两张不同的销售订单，一个窗 口的输入会覆写另一个窗口的输入。

更改订单
只有未完成的销售订单可以修改。只有有余额待发货和/或者待开发票的订单可以修改。已经完成开发票的订单行不能修改。新的项目不能加到订单中。如果行中的任何的数量已经交付/开发票，价格就无法修改。订单中该行的数量不能被减少到少于已经开发票的数量。
注意：对于一个已经付运了部分数量并开发票的未完成订单而言，变更交付地址影响最初发票的重新打印--它会显示订单已经修改的付运地址。因此要求原始发票书面版。

选择未完成销售订单
有几个途径

· 如果知道订购的商品，可以选择此商品的销售订单。在选择商品（物料）页面，首先选择商品，一旦商品被选择，显示未完成销售订单的连接就会出现。

· 如果知道顾客，先选择顾客，然后用顾客选择菜单的连接，显示已选顾客的未完成订单。

· 所有的未完成订单可以被显示出来，从主菜单，销售模块，进入处理未完成销售订单屏幕，而不输入顾客和商品。在未完成销售订单屏幕，也有工具直接查找部品。

未完成销售订单根据仓库显示，可以在这个屏幕上选择需要的仓库，默认情况下，用户的默认仓库值被显示。只有在用户点击了查询订单按钮时，符合查询条件的订单才会显示。
订单显示了每个显示连接以更改订单行商品，开发票或者打印发货单。如果订单已经被打印，这些连接会显示它已经被打印，从而避免多次打印发货单和重复交付的风险。

报价单
对任何的顾客/分公司，可以如同输入订单一样输入报价。报价可以如同订单一样改变价格和输入折扣。在付运细节界面，（创建的）订单被标记为报价。在报价输入界面，有一个连接可以产生发送给顾客的pdf报价。如果选择了报价选项，在库存状态查询的里，库存就不会保留（以供查询）。报价可以显示在未完成销售订单屏幕上，只要选择显示报价选项。如果选项为仅仅显示报价，有一个连接可以修改报价，如果必要，变更成销售订单，也有一个重新打印pdf报价单的连接。
把报价单改成销售订单后，剩下的程序如同处理任何的销售订单一样，包装单可以被打印，可以给确认的订单开发票。
循环销售订单

可以输入订单，让它以希望的频率重复生成：

· weekly周

· fortnightly - (2 weekly)14天 － （2周)

· monthly月

· bi-monthly双月

· quarterly季度

· six monthly 6个月

· annually每年

如果输入的订单仅仅包含“虚拟"服务项目-例如这些货物并不涉及物理库存，不要求通知仓库的人员确认实际交货－这些订单可以标志为自动开发票。

定义一个循环订单的程序也从正常的订单输入屏幕完成－－输入订单行，然后输入付运细节。然而，不同于点击“下订单”按钮，用户需要点击"创立循环订单“按钮。这样允许输入：

- 订单需要重复的频率

- 起始日期—从什么时候开始订单开始循环

- 截止日期—从什么时候止，订单不再循环

- 如果订单行中的所有项目都是虚拟项目，也有选项可以选择以便自动开发票。

  可以审视目前使用的循环订单模板，它在SelectRecurringSalesOrder.php脚本中定义，脚本允许输入发货地点，然后列出所有定义为从该地点发货的循环订单模板。
  从这个选择屏幕上，也可以选择模板进行修改。订单行的商品不能在这里修改，只有频率，起止日期可以修改。如果订单行要更改，需要删除这个模板，创立一个新模板。
  销售订单从循环销售订单模板中创建，使用脚本RecurringSalesOrderProcess.php. 脚本会循环计算所有的循环订单模板，并且按需创建订单，根据当前日期和最近一次为这个模板创建的订单和订单重复发生的周期。通过计算最近重复的日期+重复发生的日期间隔数量更新最近的重复日期。系统会发出一封邮件，根据存放在仓库记录中的电子邮件联络方式，向货物发出地点发出邮件。邮件会通知订单已经被创建，订单号码，以及是否是自动开发票。理想情况下，这个脚本应该从一个计划/cron程序中每天运行一次。可以让它运行你喜欢的次数，并且只创建需要的订单--不会错误地重复创建。

直接输入现金销售--柜台销售
webERP从3.12版起，引入了一个新的特性，它允许直接输入现金销售而不需要首先输入订单，然后确认交付和开发票。这个特性被称作"柜台销售".从主菜单-->销售选择输入柜台销售。此输入与输入订单相似，默认情况下，快速输入屏幕允许输入商品代码和数量，但是也可以通过搜索功能选择商品，这几乎与订单同样。应缴的税此时被计算，且显示了总的付款金额。此页面需要执行付款并且输入。输入的付款自动地分配给了销售。
在此屏幕后面，脚本创建了所有的数据库的输入和附有销售分析的发票，库存变化等等。用于输入的顾客（和顾客的分公司）来自用户的默认库存仓库。
设置柜台销售

webERP查找用户默认的仓库，然后查找仓库的记录寻找现金销售顾客账户（及分公司），以作为柜台销售的输入。需要柜台销售的仓库必须首先设置，连同柜台销售的顾客和分公司，作为柜台销售的输入。注意，顾客分公司的默认仓库被忽略—用户的默认仓库（参考设置-->基础设置-->用户维护--脚本webERP/WWW_Users.php)被用作仓库，并且对应于仓库记录中的指定顾客的仓库的库存变化记录（设置-->库存设置--->仓库维护--脚本webERP/Locations.php)也被创建。对于一个库存仓库而言，要指定使用柜台销售的顾客和分公司，顾客代码和分公司代码必须以顾客代码--分公司代码的格式输入系统提供的输入框中，例如顾客代码--分公司代码。

折扣矩阵
webERP有一个系统称为折扣矩阵，它允许定义任何组的产品和设置适用于此组所有商品的折扣，一次定义适用于全组。

对于每种销售类型（价格表而言），不同的折扣可以应用于“折扣组”。当商品被输入销售订单时，系统查找基于顾客销售类型（价格表）的正确价格，然后根据商品数量和其他已经输入订单的项目找出合适的折扣。系统查找的折扣可以覆盖(也就是说可以手工填写折扣，而不必理会系统自动给出的结果）。

定义产品组

选择一个您想予以折扣计划的商品—使用“商品（物料）”链接。在商品维护部分，点击 “维护折扣种类”.

如果当前没有折扣种类，那么输入一个折扣种类代码--否则的话，选择您想要安排此商品的折扣种类。

现在您可以查找其他的商品，并且从此界面将您想要增加的任何商品增加到此折扣组。
创建此折扣组之后，您现在可以管理适用于此折扣组的折扣率了。
从主菜单->设置->应收/应付部分-->折扣矩阵

此表允许您选择任何上面定义的折扣组，及任何销售类型（价格表），然后输入任意数量平衡点，以及适用于此数量平衡点的折扣—如果此折扣适用于所有销售，那么数量平衡点设置为1.