一、需求分析
1.路径
2.界面
3.样张
4.取数逻辑
(1)当前时间前6个月且发货状态为已扣除和已售出的Item。
(2)在6个月内没有出库的Item做“√”。
二、报表开发
1.创建临时表
2.创建Base Enums
3.创建数据合约类
(1)定义变量
(2)创建日期参数
(3)创建排序参数
(4)创建前6个月期间方法
(5)创建获取最后交易日期方法
4.创建获取机种类
(1)检查有效的BOM
public static Boolean chkvalidbom(ItemId _initemid)
{
BOM _bom;
BOM _xbom1;
BOM _xbom2;
BOM _xbom3;
BOM _xbom4;
BOM _xbom5;
BOM _xbom6;
BOM _xbom7;
BOM _xbom8;
BOM _xbom9;
BOM _xbom10;
BOM _xbom11;
BOM _xbom12;
BOM _xbom13;
BOM _xbom14;
BOM _xbom15;
BOM _xbom16;
BOM _xbom17;
BOM _xbom18;
BOM _xbom19;
BOM _xbom20;
BOMVersion _bomversion;
Boolean _flag1;
Boolean _flag2;
Boolean _flag3;
Boolean _flag4;
Boolean _flag5;
Boolean _flag6;
Boolean _flag7;
Boolean _flag8;
Boolean _flag9;
Boolean _flag10;
Boolean _flag11;
Boolean _flag12;
Boolean _flag13;
Boolean _flag14;
Boolean _flag15;
Boolean _flag16;
Boolean _flag17;
Boolean _flag18;
Boolean _flag19;
Boolean _flag20;
Int _ctr2,_ctr3,_ctr4,_ctr5,_ctr6,_ctr7,_ctr8,_ctr9,_ctr10,_ctr11;
Int _ctr12,_ctr13,_ctr14,_ctr15,_ctr16,_ctr17,_ctr18,_ctr19,_ctr20;
//
//Main logic.
_flag1 = false;
_flag2 = false;
_flag3 = false;
_flag4 = false;
_flag5 = false;
_flag6 = false;
_flag7 = false;
_flag8 = false;
_flag9 = false;
_flag10 = false;
_flag11 = false;
_flag12 = false;
_flag13 = false;
_flag14 = false;
_flag15 = false;
_flag16 = false;
_flag17 = false;
_flag18 = false;
_flag19 = false;
_flag20 = false;
//Level 1.
while select _xbom1
where _xbom1.ItemId == _initemid
&& _xbom1.FromDate <= datestartmth(nextmth(today()))
&& (_xbom1.ToDate >= today()
|| _xbom1.ToDate == datenull())
{
//Level 2.
select _bomversion
where _bomversion.BOMId == _xbom1.BOMId
&& _bomversion.Active == noyes::Yes
&& _bomversion.Approved == noyes::Yes;
if (_bomversion)
{
_flag2 = true;
while select _xbom2
where _xbom2.ItemId == _bomversion.ItemId
{
_flag2 = false;
if (_xbom2.FromDate <= datestartmth(nextmth(today()))
&& (_xbom2.ToDate >= today()
|| _xbom2.ToDate == datenull()))
{
//Level 3.
select _bomversion
where _bomversion.BOMId == _xbom2.BOMId
&& _bomversion.Active == noyes::Yes
&& _bomversion.Approved == noyes::Yes;
if (_bomversion)
{
_flag3 = true;
while select _xbom3
where _xbom3.ItemId == _bomversion.ItemId
{
_flag3 = false;
if (_xbom3.FromDate <= datestartmth(nextmth(today()))
&& (_xbom3.ToDate >= today()
|| _xbom3.ToDate == datenull()))
{
//Level 4.
select _bomversion
where _bomversion.BOMId == _xbom3.BOMId
&& _bomversion.Active == noyes::Yes
&& _bomversion.Approved == noyes::Yes;
if (_bomversion)
{
_flag4 = true;
while select _xbom4
where _xbom4.ItemId == _bomversion.ItemId
{
_flag4 = false;
if (_xbom4.FromDate <= datestartmth(nextmth(today()))
&& (_xbom4.ToDate >= today()
|| _xbom4.ToDate == datenull()))
{
//Level 5.
select _bomversion
where _bomversion.BOMId == _xbom4.BOMId
&& _bomversion.Active == noyes::Yes
&& _bomversion.Approved == noyes::Yes;
if (_bomversion)
{
_flag5 = true;
while select _xbom5
where _xbom5.ItemId == _bomversion.ItemId
{
_flag5 = false;
if (_xbom5.FromDate <= datestartmth(nextmth(today()))
&& (_xbom5.ToDate >= today()
|| _xbom5.ToDate == datenull()))
{
//Level 6.
select _bomversion
where _bomversion.BOMId == _xbom5.BOMId
&& _bomversion.Active == noyes::Yes
&& _bomversion.Approved == noyes::Yes;
if (_bomversion)
{
_flag6 = true;
while select _xbom6
where _xbom6.ItemId == _bomversion.ItemId
{
_flag6 = false;
if (_xbom6.FromDate <= datestartmth(nextmth(today()))
&& (_xbom6.ToDate >= today()
|| _xbom6.ToDate == datenull()))
{
//Level 7.
select _bomversion
where _bomversion.BOMId == _xbom6.BOMId
&& _bomversion.Active == noyes::Yes
&& _bomversion.Approved == noyes::Yes;
if (_bomversion)
{
_flag7 = true;
while select _xbom7
where _xbom7.ItemId == _bomversion.ItemId
{
_flag7 = false;
if (_xbom7.FromDate <= datestartmth(nextmth(today()))
&& (_xbom7.ToDate >= today()
|| _xbom7.ToDate == datenull()))
{
//Level 8.
select _bomversion
where _bomversion.BOMId == _xbom7.BOMId
&& _bomversion.Active == noyes::Yes
&& _bomversion.Approved == noyes::Yes;
if (_bomversion)
{
_flag8 = true;
while select _xbom8
where _xbom8.ItemId == _bomversion.ItemId
{
_flag8 = false;
if (_xbom8.FromDate <= datestartmth(nextmth(today()))
&& (_xbom8.ToDate >= today()
|| _xbom8.ToDate == datenull()))
{
//Level 9.
select _bomversion
where _bomversion.BOMId == _xbom8.BOMId
&& _bomversion.Active == noyes::Yes
&& _bomversion.Approved == noyes::Yes;
if (_bomversion)
{
_flag9 = true;
while select _xbom9
where _xbom9.ItemId == _bomversion.ItemId
{
_flag9 = false;
if (_xbom9.FromDate <= datestartmth(nextmth(today()))
&& (_xbom9.ToDate >= today()
|| _xbom9.ToDate == datenull()))
{
//Level 10.
select _bomversion
where _bomversion.BOMId == _xbom9.BOMId
&& _bomversion.Active == noyes::Yes
&& _bomversion.Approved == noyes::Yes;
if (_bomversion)
{
_flag10 = true;
while select _xbom10
where _xbom10.ItemId == _bomversion.ItemId
{
_flag10 = false;
if (_xbom10.FromDate <= datestartmth(nextmth(today()))
&& (_xbom10.ToDate >= today()
|| _xbom10.ToDate == datenull()))
{
//Level 11.
select _bomversion
where _bomversion.BOMId == _xbom10.BOMId
&& _bomversion.Active == noyes::Yes
&& _bomversion.Approved == noyes::Yes;
if (_bomversion)
{
_flag11 = true;
while select _xbom11
where _xbom11.ItemId == _bomversion.ItemId
{
_flag11 = false;
if (_xbom11.FromDate <= datestartmth(nextmth(today()))
&& (_xbom11.ToDate >= today()
|| _xbom11.ToDate == datenull()))
{
//Level 12.
select _bomversion
where _bomversion.BOMId == _xbom11.BOMId
&& _bomversion.Active == noyes::Yes
&& _bomversion.Approved == noyes::Yes;
if (_bomversion)
{
_flag12 = true;
while select _xbom12
where _xbom12.ItemId == _bomversion.ItemId
{
_flag12 = false;
if (_xbom12.FromDate <= datestartmth(nextmth(today()))
&& (_xbom12.ToDate >= today()
|| _xbom12.ToDate == datenull()))
{
//Level 13.
select _bomversion
where _bomversion.BOMId == _xbom12.BOMId
&& _bomversion.Active == noyes::Yes
&& _bomversion.Approved == noyes::Yes;
if (_bomversion)
{
_flag13 = true;
while select _xbom13
where _xbom13.ItemId == _bomversion.ItemId
{
_flag13 = false;
if (_xbom13.FromDate <= datestartmth(nextmth(today()))
&& (_xbom13.ToDate >= today()
|| _xbom13.ToDate == datenull()))
{
//Level 14.
select _bomversion
where _bomversion.BOMId == _xbom13.BOMId
&& _bomversion.Active == noyes::Yes
&& _bomversion.Approved == noyes::Yes;
if (_bomversion)
{
_flag14 = true;
while select _xbom14
where _xbom14.ItemId == _bomversion.ItemId
{
_flag14 = false;
if (_xbom14.FromDate <= datestartmth(nextmth(today()))
&& (_xbom14.ToDate >= today()
|| _xbom14.ToDate == datenull()))
{
//Level 15.
select _bomversion
where _bomversion.BOMId == _xbom14.BOMId
&& _bomversion.Active == noyes::Yes
&& _bomversion.Approved == noyes::Yes;
if (_bomversion)
{
return true;
}
}
}
if (_flag14 == true)
return true;
}
}
}
if (_flag13 == true)
return true;
}
}
}
if (_flag12 == true)
return true;
}
}
}
if (_flag11 == true)
return true;
}
}
}
if (_flag10 == true)
return true;
}
}
}
if (_flag9 == true)
return true;
}
}
}
if (_flag8 == true)
return true;
}
}
}
if (_flag7 == true)
return true;
}
}
}
if (_flag6 == true)
return true;
}
}
}
if (_flag5 == true)
return true;
}
}
}
if (_flag4 == true)
return true;
}
}
}
if (_flag3 == true)
return true;
}
}
}
if (_flag2 == true)
return true;
}
}
return false;
}
(2)获取最新的三个编号
public static container search3topitems(ItemId _initemid)
{
BOM _bom;
BOM _xbom1;
BOM _xbom2;
BOM _xbom3;
BOM _xbom4;
BOM _xbom5;
BOM _xbom6;
BOM _xbom7;
BOM _xbom8;
BOM _xbom9;
BOM _xbom10;
BOM _xbom11;
BOM _xbom12;
BOM _xbom13;
BOM _xbom14;
BOM _xbom15;
BOM _xbom16;
BOM _xbom17;
BOM _xbom18;
BOM _xbom19;
BOM _xbom20;
BOMVersion _bomversion;
InventTable _inventtable;
ItemId _itemid1;
ItemId _itemid2;
ItemId _itemid3;
ItemId _itemid4;
ItemId _itemid5;
ItemId _itemid6;
ItemId _itemid7;
ItemId _itemid8;
ItemId _itemid9;
ItemId _itemid10;
ItemId _itemid11;
ItemId _itemid12;
ItemId _itemid13;
ItemId _itemid14;
ItemId _itemid15;
ItemId _itemid16;
ItemId _itemid17;
ItemId _itemid18;
ItemId _itemid19;
ItemId _itemid20;
ItemId _tempitemid;
ItemId _returnitemid1;
ItemId _returnitemid2;
ItemId _returnitemid3;
Boolean _flag2;
Boolean _flag3;
Boolean _flag4;
Boolean _flag5;
Boolean _flag6;
Boolean _flag7;
Boolean _flag8;
Boolean _flag9;
Boolean _flag10;
Boolean _flag11;
Boolean _flag12;
Boolean _flag13;
Boolean _flag14;
Boolean _flag15;
Boolean _flag16;
Boolean _flag17;
Boolean _flag18;
Boolean _flag19;
Boolean _flag20;
Int _counter;
Container _con;
Container _con1;
Container _con2;
Container _con3;
//Skip duplicate record.
void sub2()
{
_counter += 1;
switch (_counter)
{
case 1 : _returnitemid1 = _tempitemid;
break;
case 2 : _returnitemid2 = _tempitemid;
break;
case 3 : _returnitemid3 = _tempitemid;
break;
}
}
//Find all BOM level.
void sub1()
{
_itemid1 = _inventtable.ItemId;
while select _xbom1 where _xbom1.ItemId == _itemid1
&& _xbom1.FromDate <= today()
&& (_xbom1.ToDate >= today()
|| _xbom1.ToDate == datenull())
{
select _bomversion where _bomversion.BOMId == _xbom1.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid2 = _bomversion.ItemId;
while select _xbom2 where _xbom2.ItemId == _itemid2
&& _xbom2.FromDate <= today()
&& (_xbom2.ToDate >= today()
|| _xbom2.ToDate == datenull())
{
_flag2 = True;
select _bomversion where _bomversion.BOMId == _xbom2.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid3 = _bomversion.ItemId;
while select _xbom3 where _xbom3.ItemId == _itemid3
&& _xbom3.FromDate <= today()
&& (_xbom3.ToDate >= today()
|| _xbom3.ToDate == datenull())
{
_flag3 = True;
select _bomversion where _bomversion.BOMId == _xbom3.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid4 = _bomversion.ItemId;
while select _xbom4 where _xbom4.ItemId == _itemid4
&& _xbom4.FromDate <= today()
&& (_xbom4.ToDate >= today()
|| _xbom4.ToDate == datenull())
{
_flag4 = True;
select _bomversion where _bomversion.BOMId == _xbom4.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid5 = _bomversion.ItemId;
while select _xbom5 where _xbom5.ItemId == _itemid5
&& _xbom5.FromDate <= today()
&& (_xbom5.ToDate >= today()
|| _xbom5.ToDate == datenull())
{
_flag5 = True;
select _bomversion where _bomversion.BOMId == _xbom5.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid6 = _bomversion.ItemId;
while select _xbom6 where _xbom6.ItemId == _itemid6
&& _xbom6.FromDate <= today()
&& (_xbom6.ToDate >= today()
|| _xbom6.ToDate == datenull())
{
_flag6 = True;
select _bomversion where _bomversion.BOMId == _xbom6.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid7 = _bomversion.ItemId;
while select _xbom7 where _xbom7.ItemId == _itemid7
&& _xbom7.FromDate <= today()
&& (_xbom7.ToDate >= today()
|| _xbom7.ToDate == datenull())
{
_flag7 = True;
select _bomversion where _bomversion.BOMId == _xbom7.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid8 = _bomversion.ItemId;
while select _xbom8 where _xbom8.ItemId == _itemid8
&& _xbom8.FromDate <= today()
&& (_xbom8.ToDate >= today()
|| _xbom8.ToDate == datenull())
{
_flag8 = True;
select _bomversion where _bomversion.BOMId == _xbom8.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid9 = _bomversion.ItemId;
while select _xbom9 where _xbom9.ItemId == _itemid9
&& _xbom9.FromDate <= today()
&& (_xbom9.ToDate >= today()
|| _xbom9.ToDate == datenull())
{
_flag9 = True;
select _bomversion where _bomversion.BOMId == _xbom9.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid10 = _bomversion.ItemId;
while select _xbom10 where _xbom10.ItemId == _itemid10
&& _xbom10.FromDate <= today()
&& (_xbom10.ToDate >= today()
|| _xbom10.ToDate == datenull())
{
_flag10 = True;
select _bomversion where _bomversion.BOMId == _xbom10.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid11 = _bomversion.ItemId;
while select _xbom11 where _xbom11.ItemId == _itemid11
&& _xbom11.FromDate <= today()
&& (_xbom11.ToDate >= today()
|| _xbom11.ToDate == datenull())
{
_flag11 = True;
select _bomversion where _bomversion.BOMId == _xbom11.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid12 = _bomversion.ItemId;
while select _xbom12 where _xbom12.ItemId == _itemid12
&& _xbom12.FromDate <= today()
&& (_xbom12.ToDate >= today()
|| _xbom12.ToDate == datenull())
{
_flag12 = True;
select _bomversion where _bomversion.BOMId == _xbom12.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid13 = _bomversion.ItemId;
while select _xbom13 where _xbom13.ItemId == _itemid13
&& _xbom13.FromDate <= today()
&& (_xbom13.ToDate >= today()
|| _xbom13.ToDate == datenull())
{
_flag13 = True;
select _bomversion where _bomversion.BOMId == _xbom13.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid14 = _bomversion.ItemId;
while select _xbom14 where _xbom14.ItemId == _itemid14
&& _xbom14.FromDate <= today()
&& (_xbom14.ToDate >= today()
|| _xbom14.ToDate == datenull())
{
_flag14 = True;
select _bomversion where _bomversion.BOMId == _xbom14.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid15 = _bomversion.ItemId;
while select _xbom15 where _xbom15.ItemId == _itemid15
&& _xbom15.FromDate <= today()
&& (_xbom15.ToDate >= today()
|| _xbom15.ToDate == datenull())
{
_flag15 = True;
select _bomversion where _bomversion.BOMId == _xbom15.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid16 = _bomversion.ItemId;
while select _xbom16 where _xbom16.ItemId == _itemid16
&& _xbom16.FromDate <= today()
&& (_xbom16.ToDate >= today()
|| _xbom16.ToDate == datenull())
{
_flag16 = True;
select _bomversion where _bomversion.BOMId == _xbom16.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid17 = _bomversion.ItemId;
while select _xbom17 where _xbom17.ItemId == _itemid17
&& _xbom17.FromDate <= today()
&& (_xbom17.ToDate >= today()
|| _xbom17.ToDate == datenull())
{
_flag17 = True;
select _bomversion where _bomversion.BOMId == _xbom17.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid18 = _bomversion.ItemId;
while select _xbom18 where _xbom18.ItemId == _itemid18
&& _xbom18.FromDate <= today()
&& (_xbom18.ToDate >= today()
|| _xbom18.ToDate == datenull())
{
_flag18 = True;
select _bomversion where _bomversion.BOMId == _xbom18.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid19 = _bomversion.ItemId;
while select _xbom19 where _xbom19.ItemId == _itemid19
&& _xbom19.FromDate <= today()
&& (_xbom19.ToDate >= today()
|| _xbom19.ToDate == datenull())
{
_flag19 = True;
select _bomversion where _bomversion.BOMId == _xbom19.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
_itemid20 = _bomversion.ItemId;
while select _xbom20 where _xbom20.ItemId == _itemid20
&& _xbom20.FromDate <= today()
&& (_xbom20.ToDate >= today()
|| _xbom20.ToDate == datenull())
{
_flag20 = True;
select _bomversion where _bomversion.BOMId == _xbom20.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
{
_tempitemid = _bomversion.ItemId;
sub2();
}
}
if (_flag20 == False)
sub2();
else
_flag20 = False;
}
}
if (_flag19 == False)
sub2();
else
_flag19 = False;
}
}
if (_flag18 == False)
sub2();
else
_flag18 = False;
}
}
if (_flag17 == False)
sub2();
else
_flag17 = False;
}
}
if (_flag16 == False)
sub2();
else
_flag16 = False;
}
}
if (_flag15 == False)
sub2();
else
_flag15 = False;
}
}
if (_flag14 == False)
sub2();
else
_flag14 = False;
}
}
if (_flag13 == False)
sub2();
else
_flag13 = False;
}
}
if (_flag12 == False)
sub2();
else
_flag12 = False;
}
}
if (_flag11 == False)
sub2();
else
_flag11 = False;
}
}
if (_flag10 == False)
sub2();
else
_flag10 = False;
}
}
if (_flag9 == False)
sub2();
else
_flag9 = False;
}
}
if (_flag8 == False)
sub2();
else
_flag8 = False;
}
}
if (_flag7 == False)
sub2();
else
_flag7 = False;
}
}
if (_flag6 == False)
sub2();
else
_flag6 = False;
}
}
if (_flag5 == False)
sub2();
else
_flag5 = False;
}
}
if (_flag4 == False)
sub2();
else
_flag4 = False;
}
}
if (_flag3 == False)
sub2();
else
_flag3 = False;
}
}
if (_flag2 == False)
sub2();
else
_flag2 = False;
}
}
}
//
void sub3()
{
//Reset data.
_flag2 = False;
_flag3 = False;
_flag4 = False;
_flag5 = False;
_flag6 = False;
_flag7 = False;
_flag8 = False;
_flag9 = False;
_flag10 = False;
_flag11 = False;
_flag12 = False;
_flag13 = False;
_flag14 = False;
_flag15 = False;
_flag16 = False;
_flag17 = False;
_flag18 = False;
_flag19 = False;
_flag20 = False;
//Select only when it is an active BOM.
while select _bom where _bom.ItemId == _inventtable.ItemId
&& _bom.FromDate <= today()
&& (_bom.ToDate >= today()
|| _bom.ToDate == datenull())
{
select _bomversion where _bomversion.BOMId == _bom.BOMId
&& _bomversion.Active == noyes::Yes;
if (_bomversion.RecId)
break;
}
if (_bomversion.RecId)
sub1();
}
//Main logic.
_counter = 0;
_con = conNull();
_returnitemid1 = "";
_returnitemid2 = "";
_returnitemid3 = "";
select _inventtable where _inventtable.ItemId == _initemid;
sub3();
//_con = conins([_returnitemid1,_returnitemid2,_returnitemid3],1);
_con = conins(_con,1,[_returnitemid1,_returnitemid2,_returnitemid3]);
return _con;
}
5.创建DP类
(1)定义变量
(2)获取临时表
(3)数据处理
[
SysEntryPointAttribute(false)
]
public void processReport()
{
//super();
//定义变量
ItemId _itemId;
ItemId _aireraftone;
ItemId _aireraftTwo;
ItemId _aireraftTree;
DatePhysical _datePhysical;
Description _description;
ItemGroupId _itemGroupId;
TransDate _transDate;
Price _avgPrice;
Qty _qty;
Amount _amount;
TransDate _asOfDate;
NoYes _status;
HCN_Sort sort;
Query query;
QueryRun queryRun;
QueryBuildRange DateRange,ItemRange;
QueryBuildDataSource qbds;
InventTrans inventTrans,inventTransPrice;
InventTrans inventTrans1;
InventTrans inventTrans2;
InventTable inventTable;
InventTransOrigin inventTransOrigin;
InventJournalTrans inventJournalTrans;
InventItemGroupItem inventModelGroupItem;
InventDim inventDim;
InventDimParm inventDimParm;
InventSum inventSum;
contract = this.parmDataContract() as HCN_SlowMovingStockReportContract;
asOfDate = contract.parmPastMonths();
sort = contract.parmSortType();
sixMthBack = contract.getDateOfPastMonths(asOfDate,6);
while select inventTable
{
_itemid = inventTable.itemid;
_description = inventTable.NameAlias;
_itemGroupId = inventTable.itemGroupId();
select sum(Qty) from inventTrans group by ItemId
where inventTrans.ItemId == inventTable.ItemId &&
inventTrans.DatePhysical != dateNull() &&
inventTrans.DatePhysical >= sixMthBack &&
inventTrans.DatePhysical <= asOfDate &&
(inventTrans.StatusIssue == StatusIssue::Deducted ||
inventTrans.StatusIssue == StatusIssue::Sold );
if (inventTrans.Qty !=0 || !inventTrans)
{
_qty = InventSumDatePhysicalDim::onHandQty(asOfDate, inventTable.ItemId,InventDim,InventDimParm);
if(_qty==0 || inventTrans)
{
continue;
}
select inventTrans1
where inventTrans1.ItemId == inventTable.ItemId
&& inventTrans1.Qty < 0;
select inventTrans2
where inventTrans2.ItemId == inventTable.ItemId
&& inventTrans2.Qty > 0;
if (inventTrans2 && !inventTrans1)
{
_status = NoYes::Yes;
}
else
{
_status = NoYes::No;
}
select firstonly inventSum
where inventSum.ItemId == inventTable.ItemId &&
inventSum.PhysicalInvent > 0 ;
_avgPrice = decRound(inventSum.averageCostPrice(),4);
_amount = decRound((_avgPrice * _qty),4);
_transDate = contract.getmaxtransdate(inventTable.ItemId);
_asOfDate = asOfDate;
_con = HCN_ZM_SearchTopItem::search3topitems(inventTable.ItemId);
[_aireraftOne,_aireraftTwo,_aireraftTree] = conPeek(_con,1);
}
this.insertTempTable(_itemId,_description,_itemGroupId,
_transDate,_avgPrice,_qty,_amount,_aireraftone,_aireraftTwo,_aireraftTree,_asOfDate,_status);
}
}
(4)插入临时表
6.编写Job测试数据
(略)
7.在VS中创建项目,数据源选择RDP,用Precision Design (精确设计)。
8.关于排序的问题,在详细信息组里添加排序方法即可,如下图所示:
评论区