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方法构造查询。
AX2009按照批次生产日期预留的更多相关文章
- debug查找主板生产日期
实验环境:XP(XP以上系统没有自带debug) 查询主板生产日期,发现时间为07/02/15 -e命令进行修改日期,尝试将07年改为08年 在查询一下修改完成后的日期,发现日期不变 原因:这块内存是 ...
- c++ 根据生产日期,保质期求出过期时间
第4关:计算日期 挑战任务 我们吃的食物都有保质期,现在食品监督管理局想要制作一个能准确计算食品过期日期的小程序,需要请你来进行设计. 例如:A食品在2018年1月1日生产,保质期是20天,则它的过期 ...
- log4j 日志大小限制 分成30一个 不按日期分日志 按大小分成 按生产日期
首先说说生成按日期.不解释,大家都懂的,这种方法的缺点是很吃硬盘空间 log4j.rootLogger=INFO,logfile,stdout log4j.logger.java.sql=DEBUG, ...
- SAP MM模块之批次管理
1.Batch的定义:Batch is a quantity any drug produced during a given cycle of manufacture. The essence of ...
- MES系统在小批量电子行业生产管理中的应用
小批量电子产品生产管理的主要问题 电子电器制造类企业,既有单件小批量生产,也有批量生产:有按库存生产,也有按订单生产,属于典型的离散制造行业.因产品的不同其生产工艺流程也不尽相同,生产设备的布置不是按 ...
- SIMATIC IT HISTORIAN在烟用二醋酸纤维素生产中应用
原文转载自:http://www.soft6.com/tech/5/54287.html 本文介绍了西门子MES核心产品SIMATIC IT HISTORIAN实时数据库及客户端工具在流程生产中的具体 ...
- sql:[dbo].[smt_MES_RptProductDaily] 生产日报表
USE [ChangHongMES_904]GO/****** Object: StoredProcedure [dbo].[smt_MES_RptProductDaily] Script Date: ...
- 表likp新增第一次过账输入日期字段,vl02n/vl01n/vl03n/vl06o的增强
在程序:MV50AFZ1的 FORM USEREXIT_SAVE_DOCUMENT_PREPARE. *begin of ADD CRQ000000012135 CAIZJIAN 2014/3/25( ...
- java中的日期处理
学习Java日期处理,看见这一篇比较详细,转载之. 转自:http://www.cnblogs.com/hqr9313/archive/2012/04/19/2458221.html 时间日期1) ...
随机推荐
- C和Objective-C的语法概要
C语言的三个基本要素是数据.语句和函数,支持面向过程编程(POP). C语言有数据,数据分为常量和变量,数据的类型分为字符类型和数字类型,数字类型分为整数类型和浮点数类型,复合数据的类型有数组和结构, ...
- Python Scarpy安装包
由于网络的原因,Scraoy无法安装 Cannot fetch index base URL https://pypi.python.org/simple/ 1. scrapy 安装所需要的包可以从 ...
- JS几种table切换
1.使用className <!doctype html> <html lang="en"> <head> <meta charset=& ...
- 论文笔记之:Large Scale Distributed Semi-Supervised Learning Using Streaming Approximation
Large Scale Distributed Semi-Supervised Learning Using Streaming Approximation Google 2016.10.06 官方 ...
- validate
<?php $rules = [ "ip" => function ($var) {return ip2long($var);}, "email" ...
- JavaScript 字符串转日期
一.将字符串装换为日期 var date= new Date(Date.parse(strTime.replace(/-/g, "/"))); //转换成Data();
- jq+jsonp+ajax解决跨域问题
Jsonp(JSON with Padding)是资料格式 json 的一种“使用模式”,可以让网页从别的网域获取资料. 关于Jsonp更详细的资料请参考http://baike.baidu.com/ ...
- Hadoop学习19--推测式执行
所谓推测式执行,就是计算框架判断,如果有一个task执行的过慢,则会启动备份任务,最终使用原任务+备份任务中执行较快task的结果.产生原因一般是程序bug.负载倾斜. 那么这个较慢,是怎么判断的呢? ...
- Storm Topology及分组原理
Storm的通信机制,需要满足如下一些条件以满足Storm的语义. 1.建立数据传输的缓冲区.在通信连接没有建立之前把发送的数据缓存起来.数据发送方可以在连接建立之前发送消息,而不需要等连接建立起来, ...
- 51nod 1471 小S的兴趣 sqrt
小S喜欢有趣的事.但是,每个人的兴趣都是独特的.小S热衷于自问自答.有一天,小S想出了一个问题. 有一个包含n个正整数的数组a和针对这个数组的几个问题.这些问题有两种类型: 1. 在数组下标 ...