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. Toad快速入门

    Toad快速入门       在实际中,Toad的用户很少用到其强大的新特性,同时新用户的摸索式熟悉Toad往往花费更多的时间.为此,铸锐数码为每个新购买Toad客户,提供两人次的在线培训服务,帮助客 ...

  2. The differences between Java application and Java applet

    在Java语言中,能够独立运行的程序称为Java应用程序(Application).Java语言还有另外一种程序--Applet程序.Applet程序(也称Java小程序)是运行于各种网页文件中,用于 ...

  3. Android Studio 总结

    1:添加插件 File->Setting->plugins->Browse repoistories

  4. UIControlEventTouch

    在控件事件中,简单解释下下面几个事件. 说明:由于是在“iOS 模拟器”中测试的,所以不能用手指,只能用鼠标. 1)UIControlEventTouchDown 指鼠标左键按下(注:只是“按下”)的 ...

  5. hdu4737 A Bit Fun

    link:http://acm.hdu.edu.cn/showproblem.php?pid=4737 暴力可以过啊.O(N^2)的复杂度. #include <cstdio> ]; in ...

  6. LeetCode-Group Anagrams

    Given an array of strings, group anagrams together. For example, given: ["eat", "tea& ...

  7. Qt 手动添加ui文件到工程(转)

    制作ui文件 先应该用Qt Designer绘制一个自己的界面,并存为myform.ui(这里的myform可以用自己喜欢的名字代替).在制作自己的界面文件时要注意以下几个要点: 1.要记住ui文件的 ...

  8. MongoDB学习笔记二:创建、更新及删除文档

    插入并保存文档 对目标集使用insert方法插入一个文档: > db.foo.insert({"bar" : "baz"}) 这个操作会给文档增加一个&q ...

  9. sip_hangup_disposition

    sip_hangup_disposition This variable contains the value of who sent the SIP BYE message. Some exampl ...

  10. VC_MFC水波纹控件,开源

    代码和效果图: https://github.com/wjx0912/MfcWaterEffect 集成以下5个文件即可: watereffect\DIB.hwatereffect\DIB.cppwa ...