求算法

SAPBO 2008-08-08 11:14:33
有这样一个情况:
假设:
1、所有物料均有批次。
2、物料收发货均要求带有批次。
3、销售数据包内批次不一定准确,正确的优先发出(最好)。
4、业务流程:销售(带有批次)->仓库发货(基于销售数据包,包内包含超过500条销售数据).
5、仓库发货只能按仓库的批次发货。
6、销售数据包内的批次如果在仓库中不存在,即,批次不正确,仓库可以按先进先出或其他逻辑从仓库内选一个有库存的批次发货。
7、500条销售数据要求在同一个发货单上,即,数据同时提交,在一个事务内。
8、如,批次出现负数,500条数据均提交失败。
9、假设一条销售数据格式: 物料 A0001,价格:10.00,数量:10,批次:20080808
关键点:
在为500条销售数据赋批次的时候,如何保证某个批次已经被占用完。

求一个获取批次的最优算法。


...全文
136 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
SAPBO 2008-08-19
  • 打赏
  • 举报
回复
顶,已经解决
yagebu1983 2008-08-09
  • 打赏
  • 举报
回复
关注!!
cychris 2008-08-09
  • 打赏
  • 举报
回复
up
SAPBO 2008-08-09
  • 打赏
  • 举报
回复
哈哈,碰到还真不容易。
仓库怎么处理批次给销售数据。
SAPBO 2008-08-08
  • 打赏
  • 举报
回复
如果能细分出来的话,就不用这么麻烦了。

[Quote=引用 1 楼 whChina 的回复:]
不是算法,是业务.

这玩意应该你们的系分来做的,让他抽象出详细设计方案.
[/Quote]
SAPBO 2008-08-08
  • 打赏
  • 举报
回复
哈哈。
已经分析过了,实际业务就是这样,条件和需求也就是上面说的。

就是需要一个函数,来得到一个批次。
数据包
<?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>
上面的批次,可能会因为销售员录入错误,所以不能保证正确。

这个数据包导入到后台,关键是批次。
所以在生成交货单的时候,需要判断此批次的物料是否仓库中存在,存在的话,是否已经被此销售订单其他物料占用完毕,是否需要占用一个其他批次,最终如果找不到任何批次,从此交货单中踢出。
那么怎么得到这样的一个批次?

HW_zxc_0081 2008-08-08
  • 打赏
  • 举报
回复
up
zlkingdom 2008-08-08
  • 打赏
  • 举报
回复
好像你需要的不是纯算法啊
你还是画个UML的图进行分析下吧
格拉 2008-08-08
  • 打赏
  • 举报
回复
江城老温 2008-08-08
  • 打赏
  • 举报
回复
不是算法,是业务.

这玩意应该你们的系分来做的,让他抽象出详细设计方案.
shrinerain 2008-08-08
  • 打赏
  • 举报
回复
呵呵...

我也是做B1的...

你的问题是: 怎么为销售数据赋批次号值使之最优?

还是说, 仓库这边怎么处理批次号?
LQknife 2008-08-08
  • 打赏
  • 举报
回复
算法,只有帮顶晓习
优途科技 2008-08-08
  • 打赏
  • 举报
回复
不会..路过帮顶..
SAPBO 2008-08-08
  • 打赏
  • 举报
回复
partner
估计SAP不会招我这样水平的人吧。呵呵
shrinerain 2008-08-08
  • 打赏
  • 举报
回复

----------------------

你是SAP的员工还是partner的员工?



shrinerain 2008-08-08
  • 打赏
  • 举报
回复

----------------------

你是SAP的员工还是partner的员工?



liuyun1987 2008-08-08
  • 打赏
  • 举报
回复
不会..路过帮顶..
SAPBO 2008-08-08
  • 打赏
  • 举报
回复
已经有一个思路,还没有来的及写,也不知道对不对,顺便想找一个更优的。

Dictionary ItemDictionary=new Dictionary();

//把物料编码 做Key,Value=BatchDictionary(Key=Batch+"仓库",Value=Quantity同时Key=Batch+"占用",Value=Quantity)

for each ()
{
IF 判断物料是否存在与ItemDictionary里面
{
IF 判断此批次是否存在BatchDictionary里面
{
如存在:判断仓库数量》占用数量+销售数量 是:BatchDictionary(Batch+"占用")的数量+销售数量; 否:差值记入占用,剩余的看其他批次是否有空余,如果没有,查询数据库(拼Sql把现有Batch排除),得到一个批次,同时维护ItemDictionary 及BatchDictionary
}
else
{
判断仓库是否有此批次数量。。。。。。。。。。。
}

}
Else
{
数据库查找此批次的物料及数量
维护ItemDictionary 及BatchDictionary
。。。。。。。。。。
}
}
sxmonsy 2008-08-08
  • 打赏
  • 举报
回复
帮你UP
SAPBO 2008-08-08
  • 打赏
  • 举报
回复
加载更多回复(1)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧