zoukankan      html  css  js  c++  java
  • AX2009按照批次生产日期预留

    AX2009如果想按照批处理号预留,它默认是按照InventBatchId排序的,但并不是InventBatchd小的批次的生产日期就早,所以这个逻辑得改一下,让它按照InventBatch的ProdDate排序。
    需要修改几个方法
    1.修改InventSum的newQuery
    最好创建一个新的方法

    client server static Query ERM_NewQuery(
        Query           query,
        ItemId          itemId,
        InventDim       inventDimCriteria,
        InventDimParm   inventDimParmCriteria,
        InventDimParm   inventDimParmGroupBy,
        container       dimFields = InventDim::dimFieldList()
        )
    {
        QueryBuildDataSource    qbsSum;
        QueryBuildDataSource    qbsDim;
        //<ERM>
        QueryBuildDataSource    qbsBatch;
        //</ERM>
        QueryBuildRange         queryRange;
    
        boolean                 doFindRange;
        ;
    
        if (!query)
            query = new Query();
    
        if (query.dataSourceTable(tablenum(InventSum)))
        {
            qbsSum = query.dataSourceTable(tablenum(InventSum));
            qbsSum.sortClear();
    
            doFindRange = true;
        }
        else
            qbsSum = query.addDataSource(tablenum(InventSum));
    
        if (query.dataSourceTable(tablenum(InventDim)))
        {
            qbsDim = query.dataSourceTable(tablenum(InventDim));
            qbsDim.sortClear();
    
            doFindRange = true;
        }
        else
            qbsDim = qbsSum.addDataSource(tablenum(InventDim));
    
        qbsDim.joinMode(JoinMode::InnerJoin);
        qbsDim.relations(true);
    
    
        //<ERM>
    
        if(query.dataSourceTable(tableNum(InventBatch)))
        {
            qbsBatch = query.dataSourceTable(tablenum(InventBatch));
            qbsBatch.sortClear();
        }
        else
            qbsBatch = qbsDim.addDataSource(tableNum(InventBatch));
    
        qbsBatch.joinMode(JoinMode::InnerJoin);
        qbsBatch.relations(true);
    
        //</ERM>
        if (!inventDimParmCriteria.ClosedFlag)
        {
            queryRange = SysQuery::findOrCreateRange(qbsSum, fieldnum(InventSum,Closed));
            queryRange.value(queryValue(NoYes::No));
        }
    
        if (inventDimParmCriteria.ItemIdFlag)
        {
            queryRange = doFindRange ? qbsSum.findRange(fieldnum(InventSum,ItemId)) : null;
            if (! queryRange)
                queryRange = qbsSum.addRange(fieldnum(InventSum,ItemId));
    
            if (itemId)
                queryRange.value(queryValue(itemId));
            else
                queryRange.value(SysQuery::valueEmptyString());
        }
    
        if (inventDimParmGroupBy.ItemIdFlag)
        {
            qbsSum.addSortField(fieldnum(InventSum,ItemId));
            qbsSum.orderMode(OrderMode::GroupBy);
        }
    
        InventSum::queryAddSumFields(qbsSum);
        InventDim::ERM_queryDatasourceAddRangeSortFromParms(qbsDim,qbsBatch,doFindRange,inventDimCriteria,inventDimParmCriteria,inventDimParmGroupBy,dimFields);
        InventSum::queryAddHint(query,inventDimCriteria,inventDimParmCriteria,qbsSum,qbsDim);
    
        //info(qbsSum.toString());
        return query;
    }
    

     主要是增加InventBatch的关联。
    2.修改queryDatasourceAddRangeSortFromParms方法,增加ProdDate排序字段

    static public void ERM_queryDatasourceAddRangeSortFromParms(
        QueryBuildDataSource    qbsDim,
        QUeryBuildDataSource    qbsBatch,
        boolean                 doFindRange,
        InventDim               inventDimCriteria,
        InventDimParm           inventDimParmCriteria,
        InventDimParm           inventDimParmGroupBy,
        container               dimFields = InventDim::dimFieldList()
        )
    {
        Counter             h;
        fieldId             x,y;
        QueryBuildRange     queryRange;
        boolean             doGroupByDim;
    
        for (h=1;h<=conlen(dimFields);h++)
        {
            y = conpeek(dimFields, h);
            x = InventDim::dim2dimParm(conpeek(dimFields, h));
    
            if (inventDimParmCriteria.(x))
            {
                queryRange = doFindRange ? qbsDim.findRange(y) : null;
                if (! queryRange)
                    queryRange = qbsDim.addRange(y);
    
                if (inventDimCriteria.(y))
                    queryRange.value(queryValue(inventDimCriteria.(y)));
                else
                    queryRange.value(SysQuery::valueEmptyString());
            }
    
            if (inventDimParmGroupBy.(x))
            {
                qbsDim.addSortField(y);
                doGroupByDim = true;
            }
        }
    
        qbsBatch.addGroupByField(fieldNum(InventBatch,ProdDate));
        qbsBatch.addOrderByField(fieldNum(InventBatch,ProdDate),SortOrder::Ascending);
    
        if (doGroupByDim)
            qbsDim.orderMode(OrderMode::GroupBy);
        else
            qbsDim.orderMode(OrderMode::OrderBy);
    }
    

     3.修改InventUpd_Reservation的updateMore方法,调用InventSum刚刚创建的newQuery方法构造查询。

  • 相关阅读:
    前端
    【转帖】今天看到一篇有意思的文章:程序员的十楼层。看看自己在第几层
    jquery 验证表单
    JavaWeb--Servlet
    JDBC——数据库连接池(connection pool) DBCP&&C3P0
    JDBC——批量处理JDBC语句提高处理速度
    JDBC——数据库的隔离级别
    JDBC——数据库事务
    JDBC——取得数据库自动生成的主键
    JDBC——建立数据库连接
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/4357631.html
Copyright © 2011-2022 走看看