侧边栏壁纸
  • 累计撰写 48 篇文章
  • 累计创建 19 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

AX2012报表开发-呆料表

轨迹
2023-03-22 / 0 评论 / 0 点赞 / 96 阅读 / 2,821 字 / 正在检测是否收录...

一、需求分析

1.路径

image-1679471879156

2.界面

image-1679472010335

3.样张

image-1679472107508

4.取数逻辑

(1)当前时间前6个月且发货状态为已扣除和已售出的Item。
(2)在6个月内没有出库的Item做“√”。

二、报表开发

1.创建临时表

image-1679472277252
image-1679472296662

2.创建Base Enums

image-1679472332218

3.创建数据合约类

(1)定义变量

image-1679472362803

(2)创建日期参数

image-1679472422884

(3)创建排序参数

image-1679472474118

(4)创建前6个月期间方法

image-1679472519981

(5)创建获取最后交易日期方法

image-1679472548364

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)定义变量

image-1679473243089

(2)获取临时表

image-1679473276167

(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)插入临时表

image-1679473377018

6.编写Job测试数据

(略)

7.在VS中创建项目,数据源选择RDP,用Precision Design (精确设计)。

8.关于排序的问题,在详细信息组里添加排序方法即可,如下图所示:

image-1679473439084
image-1679473449648
image-1679473459442

0

评论区