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方法构造查询。

AX2009按照批次生产日期预留的更多相关文章

  1. debug查找主板生产日期

    实验环境:XP(XP以上系统没有自带debug) 查询主板生产日期,发现时间为07/02/15 -e命令进行修改日期,尝试将07年改为08年 在查询一下修改完成后的日期,发现日期不变 原因:这块内存是 ...

  2. c++ 根据生产日期,保质期求出过期时间

    第4关:计算日期 挑战任务 我们吃的食物都有保质期,现在食品监督管理局想要制作一个能准确计算食品过期日期的小程序,需要请你来进行设计. 例如:A食品在2018年1月1日生产,保质期是20天,则它的过期 ...

  3. log4j 日志大小限制 分成30一个 不按日期分日志 按大小分成 按生产日期

    首先说说生成按日期.不解释,大家都懂的,这种方法的缺点是很吃硬盘空间 log4j.rootLogger=INFO,logfile,stdout log4j.logger.java.sql=DEBUG, ...

  4. SAP MM模块之批次管理

    1.Batch的定义:Batch is a quantity any drug produced during a given cycle of manufacture. The essence of ...

  5. MES系统在小批量电子行业生产管理中的应用

    小批量电子产品生产管理的主要问题 电子电器制造类企业,既有单件小批量生产,也有批量生产:有按库存生产,也有按订单生产,属于典型的离散制造行业.因产品的不同其生产工艺流程也不尽相同,生产设备的布置不是按 ...

  6. SIMATIC IT HISTORIAN在烟用二醋酸纤维素生产中应用

    原文转载自:http://www.soft6.com/tech/5/54287.html 本文介绍了西门子MES核心产品SIMATIC IT HISTORIAN实时数据库及客户端工具在流程生产中的具体 ...

  7. sql:[dbo].[smt_MES_RptProductDaily] 生产日报表

    USE [ChangHongMES_904]GO/****** Object: StoredProcedure [dbo].[smt_MES_RptProductDaily] Script Date: ...

  8. 表likp新增第一次过账输入日期字段,vl02n/vl01n/vl03n/vl06o的增强

    在程序:MV50AFZ1的 FORM USEREXIT_SAVE_DOCUMENT_PREPARE. *begin of ADD CRQ000000012135 CAIZJIAN 2014/3/25( ...

  9. java中的日期处理

    学习Java日期处理,看见这一篇比较详细,转载之. 转自:http://www.cnblogs.com/hqr9313/archive/2012/04/19/2458221.html   时间日期1) ...

随机推荐

  1. POJ 1990 MooFest(树状数组)

                                                                        MooFest Time Limit: 1000MS   Mem ...

  2. uva 10375

    /* 选择与除法_________________________________________________________________________________ #include & ...

  3. 《Visual C++并行编程实战》译者序

    说来凑巧,当开始着手这本书的翻译时,我刚刚入手了自己第一台四核计算机,而翻译工作临近完成之时,我又为自己添置了一台iPad 2(这是一台双核计算机).由此可见,多核计算机已经完全进入了我的日常生活.鉴 ...

  4. 关于 MAXScript 拷贝文件夹及内容到其他位置

    之前用 hiddenDOSCommand 本机测试通过,但是换其他电脑有时会不能用... fn xcopy oldfile newfile = ( newfilepath = newfile + &q ...

  5. 合并excel-MergeExcel

    MergeExcel 将需要合并的excel放入该目录下,包含xls和xlsx 点击运行按钮: 输入包含多少列: 等待运行,完毕! 基于python编写,源码和exe于 TTyb

  6. Android服务之Service(其一)

    android中服务是运行在后台的东西,级别与activity差不多.既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西.你可以启动一个服务Service来播放音乐,或者记录你 ...

  7. Intellij IDEA连接Git@OSC

    错误提示:fatal: remote origin already exists. 解决办法:$ git remote rm origin http://my.oschina.net/lujianin ...

  8. .net中常用的几种页面间传递参数的方法

    转自:http://www.cnblogs.com/lxshanye/archive/2013/04/11/3014207.html 参考:http://www.cnblogs.com/zhangka ...

  9. [MySql] - 开启外部访问

    打开 mysql 的查询窗口(使用root),使用SQL: -- 使用mysql库 use mysql; -- 更新密码 update user set password=PASSWORD('xxxx ...

  10. 【转】css学习专题-BFC

    css学习专题-BFC 转自:原文链接:css学习专题-BFC文章目录 BFC:Block Formatting Context. BFC就是一种布局方式,在这种布局方式下,盒子们自所在的 conta ...