Axapta3.0库存盘点的问题

Axapta3.0中的库存盘点存在如下三个问题,按严重性从重到轻依次如下:
1.在同一个Counting Journal中如果对同一个料品的不同Location或pallet或配置(总之让一个料品在一个Journal中出现两次或两次以上就好了),进行盘点,过账后该料品的盘点状态始终为started(过账后应该不是Started状态了.可以通过Inventory Management->item->setup->Warehouse Items->Journal->Counting Started查看).
2.在通过On-hand创建盘点行时,当前库存维组中库存量为零的行也会添加到盘点行中,很不方便.
3.在大多数情形下,盘点后的数量跟当前的库存量应该是一致的,如果盘点行过多,用户可能不愿意每行都输入,而是希望把盘点后的数量默认为当前的库存量.
上述三个问题中的1,2已经在4.0中修复了,真搞不清楚第一个问题为什么要等到4.0才修复,以前的axapta用户是怎么用盘点功能的?
Couting Started对应于物理表InventItemLocation的CountingStarted字段,修改其状态的方法为表InventItemLocation的updateStopCountingJournal方法,Axapta3.0的代码如下:
None.gif   if  (inventItemLocation  &&  inventItemLocation.countingStarted  &&  inventItemLocation.countingJournalId  ==  inventJournalTrans.journalId)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
while select otherTrans
InBlock.gif            where otherTrans.journalId      
== inventJournalTrans.journalId     &&
InBlock.gif                  otherTrans.itemId         
== inventJournalTrans.itemId        &&
InBlock.gif                  otherTrans.recId          
!= inventJournalTrans.recId
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            otherInventItemLocation  
= InventItemLocation::find(inventJournalTrans.itemId, otherTrans.inventDimId);
InBlock.gif            
if (otherInventItemLocation.recId == inventItemLocation.recId)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                doStop 
= false;
InBlock.gif                
break;
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
if (doStop)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            inventItemLocation.countingStarted      
= NoYes::No;
InBlock.gif            inventItemLocation.countingJournalId    
= '';
InBlock.gif            inventItemLocation.update();
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

其中while的一段代码,原来coder的意思,可能是想实现这样的功能:当前Journal中如果有对同一料品进行多次盘点,在更新前面的inventJournalTrans记录的时候不更新InventItemLocation的CountingStarted,而实际上也是不应该更新的,因为后面还有待更新的盘点记录,直到该料品最后一条盘点记录更新时再更新CountingStarted字段.但是这段代码造成了永远都不会更新CoutingStarted字段的值了,无从得知哪条记录是最后一条,传说中的bug......
我想到的解决办法就是把这段代码注释掉,眼不见心不烦,倒是work得挺不错的,后来查看4.0 的代码,用了类似的方法,只不过增加了一个boolean类型的参数,然后将这段代码屏蔽掉,倒是以后还可以复用这段代码,不过想不到还有哪里会用到这个代码......

第二个问题,在创建的时候是零行就不插入到InventJournalTrans表中,我原来是直接在InventCountCreate_Base的createInventJournalTrans方法中判断,如果当前的库存为零就直接return.Axapta4.0增加了一个参数控制,供用户选择是否包含零行,这个比俺的那个修改严谨和方便些.
第三个问题,见仁见智,可能有人觉得既然是盘点就应该一行行输入盘点值,可有的客户不想输入那么多的数据,只想输入盘点数跟当前的库存量不同的数量.这个修改倒也简单,也是修改问题二同样的方法,把当前库存量赋值给盘点后的数量就可以了.

转载于:https://www.cnblogs.com/Farseer1215/archive/2006/09/11/500939.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值