有这样一个情况:
假设:
1、所有物料均有批次。
2、物料收发货均要求带有批次。
3、销售数据包内批次不一定准确,正确的优先发出(最好)。
4、业务流程:销售(带有批次)->仓库发货(基于销售数据包,包内包含超过500条销售数据).
5、仓库发货只能按仓库的批次发货。
6、销售数据包内的批次如果在仓库中不存在,即,批次不正确,仓库可以按先进先出或其他逻辑从仓库内选一个有库存的批次发货。
7、500条销售数据要求在同一个发货单上,即,数据同时提交,在一个事务内。
8、如,批次出现负数,500条数据均提交失败。
9、假设一条销售数据格式: 物料 A0001,价格:10.00,数量:10,批次:20080808
关键点:
在为500条销售数据赋批次的时候,如何保证某个批次已经被占用完。求一个获取批次的最优算法。
假设:
1、所有物料均有批次。
2、物料收发货均要求带有批次。
3、销售数据包内批次不一定准确,正确的优先发出(最好)。
4、业务流程:销售(带有批次)->仓库发货(基于销售数据包,包内包含超过500条销售数据).
5、仓库发货只能按仓库的批次发货。
6、销售数据包内的批次如果在仓库中不存在,即,批次不正确,仓库可以按先进先出或其他逻辑从仓库内选一个有库存的批次发货。
7、500条销售数据要求在同一个发货单上,即,数据同时提交,在一个事务内。
8、如,批次出现负数,500条数据均提交失败。
9、假设一条销售数据格式: 物料 A0001,价格:10.00,数量:10,批次:20080808
关键点:
在为500条销售数据赋批次的时候,如何保证某个批次已经被占用完。求一个获取批次的最优算法。
你还是画个UML的图进行分析下吧
已经分析过了,实际业务就是这样,条件和需求也就是上面说的。就是需要一个函数,来得到一个批次。
数据包
<?xml version="1.0" encoding="utf-8" ?>
<SalesData TotalSale="2000" POS="2" SaleDate="2008-07-26" >
<Order VIPID="3" OrderID="2005" Saler="100" Casher="100" Item="A00001" Quantity="1" Batch="200806" Total="19.8" Price="19.8" Class="" Point="20" POS="2" OrderTime="2008-07-26" ></Order>
<Order VIPID="3" OrderID="2005" Saler="100" Casher="100" Item="A00001" Quantity="1" Batch="200806" Total="19.8" Price="19.8" Class="" Point="20" POS="2" OrderTime="2008-07-26" ></Order>
<Order VIPID="3" OrderID="2005" Saler="100" Casher="100" Item="A00001" Quantity="1" Batch="200806" Total="19.8" Price="19.8" Class="" Point="20" POS="2" OrderTime="2008-07-26" ></Order>
</SalesData>
上面的批次,可能会因为销售员录入错误,所以不能保证正确。这个数据包导入到后台,关键是批次。
所以在生成交货单的时候,需要判断此批次的物料是否仓库中存在,存在的话,是否已经被此销售订单其他物料占用完毕,是否需要占用一个其他批次,最终如果找不到任何批次,从此交货单中踢出。
那么怎么得到这样的一个批次?
{
IF 判断物料是否存在与ItemDictionary里面
{
IF 判断此批次是否存在BatchDictionary里面
{
如存在:判断仓库数量》占用数量+销售数量 是:BatchDictionary(Batch+"占用")的数量+销售数量; 否:差值记入占用,剩余的看其他批次是否有空余,如果没有,查询数据库(拼Sql把现有Batch排除),得到一个批次,同时维护ItemDictionary 及BatchDictionary
}
else
{
判断仓库是否有此批次数量。。
}
}
Else
{
数据库查找此批次的物料及数量
维护ItemDictionary 及BatchDictionary
。
}
}
----------------------你是SAP的员工还是partner的员工?
----------------------你是SAP的员工还是partner的员工?
估计SAP不会招我这样水平的人吧。呵呵