关于库存物料这一块:
在新建物料的时候会有5个必输字段:物料编号,物料组,物料类型,库存模型组,维度组。
下面研究一下新建物料组时相关问题:必须得创建一个物料组,这就是创建物料的前提条件。
在新建物料组的时候,看上去蛮简单,一般我们需要填写的就两个,物料组和名称字段。
物料组的主表是inventItemGroup但是会发现在窗体上很多字段都没在表字段里面,都是在表edit方法中得到的,在AX系统中会有两个比较特殊的方法,display方法和edit方法,一般是用来得到不能直接从数据源字段中得到的数据。
在一般窗体数据源中都会出现creat,insert这样方法,但奇怪的是这个窗体中没得。更奇怪的是在把断点放在表方法中的setLedgerAccount中,在点击新建按钮时候不会触发,但是在切换tabpage时候就会跳到这里面断点中来。
这里面给各种科目赋值涉及到的表和方法:
在表inventItemGroup中有一个公用的方法setLedgerAccount,给不同的会计科目类型赋值(InventAccountType)
他在这个方法里面直接调用表inventPosting(库存,分类账日记账表)里面的方法item,不知道为什么直接跳到这个表来了。两个表有如下关系:InventPosting.ItemCode == 1 && InventPosting.ItemRelation == InventItemGroup.ItemGroupId .......InventPosting表中的ItemCode扩展子自枚举类型
TableGroupAll,TableGroupAll::GroupId == 1,也就是ItemCode为组!
InventItemGroup.ItemGroupId也就是该表的名称字段。
在item方法中又涉及一个表InventPostingParameters(库存交易记录组合表)!这个表只有一条记录,分别判断里面的“表,组,所有”的物料关系是否启动。再做相应的判断!
在item方法里面三个参数(InventAccountType,ItemId,ItemGroupId)第一个科目类型,第二个物料编号此时调用物料编号都是空的,第三个编号组也就是当前的物料名称)
在setLedgerAccount里面调用也就是把当前科目类型,物料编号为空,当前物料组名称传进去。
在item方法里面,往inventPosting中循环找到相应的科目编号!
一般第一次创建的时候tableGroup为All,然后找到相应的科目编号。
新建物料组后还没有在表inventPosting里面创建记录。待考察。。。。