AX2009 销售订单的不同情况生成不同的订单号
来源:互联网 发布:淘宝企业店铺有什么用 编辑:程序博客网 时间:2024/05/16 19:12
View Code
class FormRun extends ObjectRun{RGD_SalesorderSourse SalesorderSourse ;}
有很多客户习惯了EXCEL,在他们使用AX的时候,习惯的先在EXCEL将销售,采购订单创建好,然后直接导入到AX系统中,客户有时想区分系统中地销售,采购订单是在标准系统创建的还是通过导入生成的,这样也有利于当某些订单发生某些错误的时候,可以区分是否是导入的订单的时候出现问题。
这里我以销售订单为例,记录当时我们处理的方式和逻辑。
1,订单的编码规则是根据根据订单的来源分配,如果是导入生成,则编码规则是“SOR-SH+当前时间的年月+5位流水号,如果是在系统中创建,则编码规则是”STN-SH+当前时间的年月+5位流水号。
2,在创建销售订单时,给一个订单来源让用户选择,根据用户选择的来源生成不同的编码,如图:
3,日期的控制,这里我们采取的是用在NumberSequenceTable窗体中设置一个开关,让用户选择是否在生成的编码当中包含当前时间的年月,如图
4,实现步骤3的逻辑代码
在类NumberSeq的getNumInternal方法中判断步骤3的是否包含日期,
View Code
protected Num getNumInternal(NumberSequenceCode _numberSequenceCode){ Num _num = ''; NumberSequenceTable numberSequenceTable; UserConnection userConnection; boolean ok; ; this.setGlobalTransId(); userConnection = new UserConnection(); userConnection.ttsbegin(); sequenceUpdated = false; numberSequenceTable.setConnection(userConnection); select forupdate firstonly numberSequenceTable index hint SeriesIdx where numberSequenceTable.NumberSequence == _numberSequenceCode; this.setCleanupSequence(numberSequenceTable); ok = this.checkSetUpNum(numberSequenceTable); if (ok) { _num = this.getNumFromList(userConnection,numberSequenceTable); if (_num == '') { if (numberSequenceTable.NextRec == 0 || numberSequenceTable.NextRec > numberSequenceTable.Highest) ok = checkFailed(strfmt("@SYS17478",numberSequenceTable.NumberSequence)); else _num = this.getNumFromTable(userConnection,numberSequenceTable); } } if (!ok) { userConnection.ttsabort(); throw error("@SYS25038"); } userConnection.ttscommit(); if (sequenceUpdated) this.createTTSLink(); //ADD BY Kim if (numberSequenceTable.RGD_IfIncludeDate) { _num = this.RGD_FormatDate(_num); } //END By Kim return _num;}
处理包含日期后的逻辑
View Code
//this method is used add date to numNum RGD_FormatDate(Num _Num){ Num tmpNum = ''; int position; str strDate; str strLongYear; str strShortYear; str strMonth; str strDay; ; tmpNum = _Num; strDate = Date2Str(getServerDate(),321,2,2,2,2,4); strLongYear = subStr(strDate,1,4); strShortYear= subStr(strLongYear,3,2); strMonth = subStr(strDate,6,2); strDay = subStr(strDate,9,2); //Format day position = StrScan(tmpNum,"DD",1,strLen(tmpNum)); tmpNum = strPoke(tmpNum,strDay,position); //Format month position = StrScan(tmpNum,"MM",1,strLen(tmpNum)); tmpNum = strPoke(tmpNum,strMonth,position); //Format year position = StrScan(tmpNum,"YYYY",1,strLen(tmpNum)); if (position) { tmpNum = strPoke(tmpNum,strLongYear,position); } else { position = StrScan(tmpNum,"YY",1,strLen(tmpNum)); tmpNum = strPoke(tmpNum,strShortYear,position); } return tmpNum;}
5,在AX系统销售订单窗体上创建时的逻辑,在SalesCreateOrder窗体中定义一个数组
View Code
class FormRun extends ObjectRun{ .... RGD_SalesorderSourse SalesorderSourse ; Array A ; ....}//init void init(){ .... A = new Array(Types::String); A.value(1,'empty'); A.value(2,'empty'); SalesorderSourse = RGD_SalesorderSourse::Blank ; ....}
note:我只粘贴了针对处理该逻辑的代码,在SalesCreateOrder的数据源的RGD_SalesorderSourse字段的validate方法中获取得到的生成编号
View Code
public boolean validate(){ boolean ret; ; ret = super();// CUS-Modifed by sherr on 2011-08-22 Begin if(ret && #RGD_HDC) { if( SalesTable.RGD_SalesorderSourse != SalesorderSourse ) { if( SalesTable.RGD_SalesorderSourse == RGD_SalesorderSourse::NRR) { if(A.value(1) == 'empty') { SalesTable.SalesId = NumberSeq::newGetNum(SalesParameters::numRefSalesIdNRR(),true).num(); A.value(1,SalesTable.SalesId); } else { SalesTable.SalesId = A.value(1) ; } } else if( SalesTable.RGD_SalesorderSourse == RGD_SalesorderSourse::KRR) { if(A.value(2) == 'empty') { salesTableType.formMethodDataSourceCreate(element, salesTable_ds); A.value(2,SalesTable.SalesId); } else { SalesTable.SalesId = A.value(2) ; } }// CUS-Modifed by sherr on 2011-08-22 End } /* if( SalesTable.orig().RGD_OrderSource != SalesTable.RGD_OrderSource ) { if( SalesTable.RGD_OrderSource == "@RGD149") SalesTable.SalesId = NumberSeq::newGetNum(SalesParameters::numRefSalesIdNRR()).num(); else if( SalesTable.RGD_OrderSource == "@RGD150") salesTableType.formMethodDataSourceCreate(element, salesTable_ds); } */ } SalesorderSourse = SalesTable.RGD_SalesorderSourse ; return ret;}
阅读全文
0 0
- AX2009 销售订单的不同情况生成不同的订单号
- 高并发下的不同订单相同订单号的处理
- 是同一个销售订单类型,根据不同销售组织分配不同的号码段的增强出口
- "/0"不同的情况
- 订单号的生成方法
- PHP订单号的生成
- 生成唯一的订单号
- 订单号的生成
- 生成不同的cursor_child_no
- 使用不同域用户登录AX2009
- CSS居中的不同情况使用不同的方法
- java生成订单号的一种思路(生成友好的订单号)
- php生成订单号的类
- 关于生成订单号的解决方案
- PHP 生成唯一的订单号
- 关于生成订单号的解决方案
- 如何生成唯一的订单号
- php生成订单号的解决方案
- Delphi的URLEncode
- javascript的字符串方法【substring、slice、substr】的区别
- TMS28335学习笔记之ePWM
- 有一本书,只有它能读
- Reponse响应头设置备注
- AX2009 销售订单的不同情况生成不同的订单号
- 30万天价门票的维密秀,要感谢奚梦瑶的 “挽尊”
- 初探Mysql事务与锁
- 数据分析可视化工具面临业务技术双挑战(上)
- [面试]nginx均衡的5种策略
- View事件分发
- Gym 101617H
- maven仓库阿里云镜像配置
- 【CIO 早班车】 区块链技术知识点来袭,速来前排记笔记!