zoukankan      html  css  js  c++  java
  • 简单的库存模型组

    库存模型组:在AX中库存模型组是非常重要的,是计算库存成本的重要组成部分,决定了将物料过账到总帐的方式。

    库存模型组包含确定如何控制和处理物料收货和发货的设置。
    在新建物料的时候,库存模型组也是一个必填字段。下面来看看代码是怎么创建库存模型组的。
    系统库存模型组关联的表:inventModelGroup
    一般表都会有一个find方法,用来查找主键对应的记录,找到则返回行记录,update参数则表示返回的记录是否可以修改,返回false的话就表示是自读的。和find方法相类似的有一个exist方法,它的功能就是查找主键是否存在,存在则返回true。这两个方法属于典型的静态方法,不属于表和行记录,属于整个表的方法。
    在新建记录时候,系统最先调用的是initValue方法,新建库存模型组记录的时候会有几个默认值。允许财务负库存,

    过账实际库存和过账财务库存是默认勾选的,还有库存模型类型是先进先出(FIFO)。都是写在initValue方法里面。
    validateField方法,这个方法在字段的值改变,且字段失去焦点的时候触发,主要用于字段的值是否符合规范,此表的validateField方法:
    public boolean validateField(fieldId _fieldIdToCheck)
    {
        boolean     ret;
        InventTable inventTable;
        ret = super(_fieldIdToCheck);
        switch(_fieldIdToCheck)
        {
            case fieldnum(InventModelGroup, NegativePhysical):
                if (this.RecId && !this.NegativePhysical && this.NegativePhysical != this.orig

    ().NegativePhysical)
                {
                    startLengthyOperation();
                    while select inventTable
                        where inventTable.ModelGroupId == this.ModelGroupId
                    {
                        ret = this.inventModelType().checkNotNegativeOnHand(inventTable, true);
                        if (!ret)
                            return ret;
                    }
                }
                break;
            case fieldnum(InventModelGroup, InventModel):
                if (InventModelType::newInventModel(this.InventModel).stdCostBased() && !

    InventParameters::find().MultiSiteActivated)
                {
                    ret = checkFailed("@SYP1642");
                }
                if (InventModelGroup::isModelGroupUsedInStdCostConv(this.ModelGroupId))
                {
                    ret = checkFailed(strfmt("@SYS126546", this.ModelGroupId));
                }
                break;
        }
        return ret;
    }
    它检查了传进来的字段是否是(允许财务负库存字段)如果是修改了这个字段的话。就执行里面方法,值得一提的是,this.orig这个方法返回的是最后一次提交到数据库的记录。startLengthyOperation()这个方法是系统了global的方法,就是一般复杂操作的代码会把鼠标编程不可操作的,现在还不知道是神马意思。这里面还涉及到跟这表相关的类

    inventModelType类,表方法inventModelType就是返回这个类,并且把当前的库存模型类型传进去实例化,它每一种库存模型类型都对应了一个类,一般实例化的就是类InventModelType_FIFO,一般修改库存模型组改为标准成本会进入方法。

    validateWrite方法,在保存数据时,触发此方法判断是否满足保存的条件,此方法的父类方法主要检查必填字段的合法性,弱此字段返回false,则保存将被阻止,返回true,则触发Insert或者Update方法。而此表的validateWrite方法直接调用类inventModelType的方法validateWriteInventModelGroup

    如果修改的是库存模型类型,checkFailed返回一个假值,然后info一些信息给用户。

  • 相关阅读:
    winform控件库二次开发yy
    Oracle数据库表死锁和解锁
    集合去重筛选
    linux手动生成core dump
    HandlerSocket简介以及php使用handlersocket
    使用truss、strace或ltrace诊断软件的“疑难杂症”
    Sqlserver 2012 导出表数据为SQL脚本
    MySQL的索引为什么使用B+Tree
    计算机体系
    docker使用
  • 原文地址:https://www.cnblogs.com/boydg123/p/2136272.html
Copyright © 2011-2022 走看看