日期:2014-05-20  浏览次数:20707 次

在线!!!请教大神探讨个问题!!
订单中,对于产品编号中,前面相同,尾号为000或010时,且库存属性为X010,拣货需作如下调整:

前提是产品编号前面部分相同,尾号部分不同 如:000-111-000和000-601-010


1. 单据明细中,产品编号尾号为000时, 库存属性为X010,进行拣货时,拣货顺序如下:

(1) 先出尾号为000,属性为X010的库存

(2) 不足时,再出010,属性为X010的库存

(3) 再不足时,其次出000,属性为X013的库存


2. 单据明细中,产品号前面相同,产品编号尾号为010时, 库存属性为X010,进行拣货时,拣货顺序如下:

(1) 先出尾号为010,属性为X010的库存

(2) 不足时,再出000,属性为x010的库存

(3) 再不足时,其次出010,属性为X013的库存

-----------------------------------
一个订单包含很多个产品编号一对多的关系!
一搬的做法是,直接循环订单详细表,
for(订单详细表产品个数){
 按以上条件判断。if(产品编号尾号为00000时, 库存属性为X010){
  (1) 先出尾号为000,属性为X010的库存

  (2) 不足时,再出010,属性为X010的库存

  (3) 再不足时,其次出000,属性为X013的库存

 
}
问题来了,如果有个订单符合这些条件的数据有1000条呢。。这时性能严重下降。1000*3就是3000次的数据查询。
有大神知道怎么解决吗。也有尝试用存储过程来解决可是依然绕不开性能问题。。。

------解决方案--------------------
探讨
越大优先级越高。这个以什么判断大小呢。
另外兄弟!这个不是优先级的问题。是出库商品数量不够时要用其它的产品来出!

------解决方案--------------------
先将符合拣货条件的货品查出,并按拣货条件进行排序,得到一个游标,再从游标中循环取数量进行累加,直到选够数量,然后对选中的记录进行出货处理。
------解决方案--------------------
探讨
游标中的数量不能累加的因为你这样取出的是不同的产品以及数量。。而且不符合条件的一样是要出货的。符合条件的只是可以在商品不够时换个商品编号及相应属性出!

------解决方案--------------------
我想知道楼主要的结果是什么?

比方订单a
细表:
产品1 100
产品2 40
.
.
.
最后要的是:每个产品的出库明细(以某种格式列出的出库明细)还是直接出库(减库存)就行?