haorenhui
2023-10-30 6d6cc10d9e8e242661da7fd655dec155a09d676c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
Quintiq file version 2.0
#parent: #root
StaticMethod Create (
  MacroPlan owner,
  String verno,
  Date importdate,
  String orgcode,
  String scheduledateid,
  String productid
) as SRMLine
{
  Description: 'Instantiate product with only primitive-type arguments'
  TextBody:
  [*
    srmline := owner.SRMLine( relnew, Attribute1 := verno );
    srmline.ImportDate( importdate );
    srmline.OrganizationCode( orgcode );
    srmline.ScheduleDateID( scheduledateid );
    srmline.ComponentItem( productid );
    
    timezone := TimeZone::UTCTimeZone();
    
    productinstockingpoint := ProductInStockingPoint_MP::FindProductInStockingPointTypeIndex( productid, orgcode );
    
    // Get the list to deal
    listtodeal := selectset( productinstockingpoint, ProductInStockingPointInPeriod.astype( ProductInStockingPointInPeriodPlanningLeaf ), ppp, true );
    
    // Get the Extend date
    extend1date := importdate.Add( timezone ,Duration::Days( 119 ) ).Date().StartOfNextMonth();
    extend2date := extend1date.StartOfNextMonth();
    extend3date := extend2date.StartOfNextMonth();
    extend4date := extend3date.StartOfNextMonth();
    extend5date := extend4date.StartOfNextMonth();
    extend6date := extend5date.StartOfNextMonth();
    extend7date := extend6date.StartOfNextMonth();
    extend8date := extend7date.StartOfNextMonth();
    extend9date := extend8date.StartOfNextMonth();
    extend10date := extend9date.StartOfNextMonth();
    
    dateqtydict := JSON::Object().Build();
    traverse( listtodeal, Elements, ppp ){
      demanddate := ppp.Start().Date();
      demandqty := ppp.DependentDemandQuantity();
      if( demanddate >= importdate and demanddate <= importdate.Add( timezone ,Duration::Days( 89 ) ).Date() ){
        deltadays := ( demanddate - importdate );
        dateqtydict.Builder().Add( [String]deltadays, [String]demandqty ).Build();
        }
        
      if( demanddate > importdate.Add( timezone ,Duration::Days( 89 ) ).Date() and demanddate <= extend1date ){
        extenddemandqty := demandqty + guard( dateqtydict.Get( "Extend1" ).GetNumber(), 0 );
        dateqtydict.Builder().Add( "Extend1", [String]extenddemandqty ).Build();
        }
      
      if( demanddate > extend1date and demanddate <= extend2date ){
        extenddemandqty := demandqty + guard( dateqtydict.Get( "Extend2" ).GetNumber(), 0 );
        dateqtydict.Builder().Add( "Extend2", [String]extenddemandqty ).Build();
        }
      
      if( demanddate > extend2date and demanddate <= extend3date ){
        extenddemandqty := demandqty + guard( dateqtydict.Get( "Extend3" ).GetNumber(), 0 );
        dateqtydict.Builder().Add( "Extend3", [String]extenddemandqty ).Build();
        }
      
      if( demanddate > extend3date and demanddate <= extend4date ){
        extenddemandqty := demandqty + guard( dateqtydict.Get( "Extend4" ).GetNumber(), 0 );
        dateqtydict.Builder().Add( "Extend4", [String]extenddemandqty ).Build();
        }
      
      if( demanddate > extend4date and demanddate <= extend5date ){
        extenddemandqty := demandqty + guard( dateqtydict.Get( "Extend5" ).GetNumber(), 0 );
        dateqtydict.Builder().Add( "Extend5", [String]extenddemandqty ).Build();
        }
      
      if( demanddate > extend5date and demanddate <= extend6date ){
        extenddemandqty := demandqty + guard( dateqtydict.Get( "Extend6" ).GetNumber(), 0 );
        dateqtydict.Builder().Add( "Extend6", [String]extenddemandqty ).Build();
        }
      
      if( demanddate > extend6date and demanddate <= extend7date ){
        extenddemandqty := demandqty + guard( dateqtydict.Get( "Extend7" ).GetNumber(), 0 );
        dateqtydict.Builder().Add( "Extend7", [String]extenddemandqty ).Build();
        }
      
      if( demanddate > extend7date and demanddate <= extend8date ){
        extenddemandqty := demandqty + guard( dateqtydict.Get( "Extend8" ).GetNumber(), 0 );
        dateqtydict.Builder().Add( "Extend8", [String]extenddemandqty ).Build();
        }
      
      if( demanddate > extend8date and demanddate <= extend9date ){
        extenddemandqty := demandqty + guard( dateqtydict.Get( "Extend9" ).GetNumber(), 0 );
        dateqtydict.Builder().Add( "Extend9", [String]extenddemandqty ).Build();
        }
      
      if( demanddate > extend9date and demanddate <= extend10date ){
        extenddemandqty := demandqty + guard( dateqtydict.Get( "Extend10" ).GetNumber(), 0 );
        dateqtydict.Builder().Add( "Extend10", [String]extenddemandqty ).Build();
        }
      }
    // Set attribute Days value
    srmline.Day1( guard( dateqtydict.Get( "0" ).GetNumber(), 0 ) );
    srmline.Day2( guard( dateqtydict.Get( "1" ).GetNumber(), 0 ) );
    srmline.Day3( guard( dateqtydict.Get( "2" ).GetNumber(), 0 ) );
    srmline.Day4( guard( dateqtydict.Get( "3" ).GetNumber(), 0 ) );
    srmline.Day5( guard( dateqtydict.Get( "4" ).GetNumber(), 0 ) );
    srmline.Day6( guard( dateqtydict.Get( "5" ).GetNumber(), 0 ) );
    srmline.Day7( guard( dateqtydict.Get( "6" ).GetNumber(), 0 ) );
    srmline.Day8( guard( dateqtydict.Get( "7" ).GetNumber(), 0 ) );
    srmline.Day9( guard( dateqtydict.Get( "8" ).GetNumber(), 0 ) );
    srmline.Day10( guard( dateqtydict.Get( "9" ).GetNumber(), 0 ) );
    srmline.Day11( guard( dateqtydict.Get( "10" ).GetNumber(), 0 ) );
    srmline.Day12( guard( dateqtydict.Get( "11" ).GetNumber(), 0 ) );
    srmline.Day13( guard( dateqtydict.Get( "12" ).GetNumber(), 0 ) );
    srmline.Day14( guard( dateqtydict.Get( "13" ).GetNumber(), 0 ) );
    srmline.Day15( guard( dateqtydict.Get( "14" ).GetNumber(), 0 ) );
    srmline.Day16( guard( dateqtydict.Get( "15" ).GetNumber(), 0 ) );
    srmline.Day17( guard( dateqtydict.Get( "16" ).GetNumber(), 0 ) );
    srmline.Day18( guard( dateqtydict.Get( "17" ).GetNumber(), 0 ) );
    srmline.Day19( guard( dateqtydict.Get( "18" ).GetNumber(), 0 ) );
    srmline.Day20( guard( dateqtydict.Get( "19" ).GetNumber(), 0 ) );
    srmline.Day21( guard( dateqtydict.Get( "20" ).GetNumber(), 0 ) );
    srmline.Day22( guard( dateqtydict.Get( "21" ).GetNumber(), 0 ) );
    srmline.Day23( guard( dateqtydict.Get( "22" ).GetNumber(), 0 ) );
    srmline.Day24( guard( dateqtydict.Get( "23" ).GetNumber(), 0 ) );
    srmline.Day25( guard( dateqtydict.Get( "24" ).GetNumber(), 0 ) );
    srmline.Day26( guard( dateqtydict.Get( "25" ).GetNumber(), 0 ) );
    srmline.Day27( guard( dateqtydict.Get( "26" ).GetNumber(), 0 ) );
    srmline.Day28( guard( dateqtydict.Get( "27" ).GetNumber(), 0 ) );
    srmline.Day29( guard( dateqtydict.Get( "28" ).GetNumber(), 0 ) );
    srmline.Day30( guard( dateqtydict.Get( "29" ).GetNumber(), 0 ) );
    srmline.Day31( guard( dateqtydict.Get( "30" ).GetNumber(), 0 ) );
    srmline.Day32( guard( dateqtydict.Get( "31" ).GetNumber(), 0 ) );
    srmline.Day33( guard( dateqtydict.Get( "32" ).GetNumber(), 0 ) );
    srmline.Day34( guard( dateqtydict.Get( "33" ).GetNumber(), 0 ) );
    srmline.Day35( guard( dateqtydict.Get( "34" ).GetNumber(), 0 ) );
    srmline.Day36( guard( dateqtydict.Get( "35" ).GetNumber(), 0 ) );
    srmline.Day37( guard( dateqtydict.Get( "36" ).GetNumber(), 0 ) );
    srmline.Day38( guard( dateqtydict.Get( "37" ).GetNumber(), 0 ) );
    srmline.Day39( guard( dateqtydict.Get( "38" ).GetNumber(), 0 ) );
    srmline.Day40( guard( dateqtydict.Get( "39" ).GetNumber(), 0 ) );
    srmline.Day41( guard( dateqtydict.Get( "40" ).GetNumber(), 0 ) );
    srmline.Day42( guard( dateqtydict.Get( "41" ).GetNumber(), 0 ) );
    srmline.Day43( guard( dateqtydict.Get( "42" ).GetNumber(), 0 ) );
    srmline.Day44( guard( dateqtydict.Get( "43" ).GetNumber(), 0 ) );
    srmline.Day45( guard( dateqtydict.Get( "44" ).GetNumber(), 0 ) );
    srmline.Day46( guard( dateqtydict.Get( "45" ).GetNumber(), 0 ) );
    srmline.Day47( guard( dateqtydict.Get( "46" ).GetNumber(), 0 ) );
    srmline.Day48( guard( dateqtydict.Get( "47" ).GetNumber(), 0 ) );
    srmline.Day49( guard( dateqtydict.Get( "48" ).GetNumber(), 0 ) );
    srmline.Day50( guard( dateqtydict.Get( "49" ).GetNumber(), 0 ) );
    srmline.Day51( guard( dateqtydict.Get( "50" ).GetNumber(), 0 ) );
    srmline.Day52( guard( dateqtydict.Get( "51" ).GetNumber(), 0 ) );
    srmline.Day53( guard( dateqtydict.Get( "52" ).GetNumber(), 0 ) );
    srmline.Day54( guard( dateqtydict.Get( "53" ).GetNumber(), 0 ) );
    srmline.Day55( guard( dateqtydict.Get( "54" ).GetNumber(), 0 ) );
    srmline.Day56( guard( dateqtydict.Get( "55" ).GetNumber(), 0 ) );
    srmline.Day57( guard( dateqtydict.Get( "56" ).GetNumber(), 0 ) );
    srmline.Day58( guard( dateqtydict.Get( "57" ).GetNumber(), 0 ) );
    srmline.Day59( guard( dateqtydict.Get( "58" ).GetNumber(), 0 ) );
    srmline.Day60( guard( dateqtydict.Get( "59" ).GetNumber(), 0 ) );
    srmline.Day61( guard( dateqtydict.Get( "60" ).GetNumber(), 0 ) );
    srmline.Day62( guard( dateqtydict.Get( "61" ).GetNumber(), 0 ) );
    srmline.Day63( guard( dateqtydict.Get( "62" ).GetNumber(), 0 ) );
    srmline.Day64( guard( dateqtydict.Get( "63" ).GetNumber(), 0 ) );
    srmline.Day65( guard( dateqtydict.Get( "64" ).GetNumber(), 0 ) );
    srmline.Day66( guard( dateqtydict.Get( "65" ).GetNumber(), 0 ) );
    srmline.Day67( guard( dateqtydict.Get( "66" ).GetNumber(), 0 ) );
    srmline.Day68( guard( dateqtydict.Get( "67" ).GetNumber(), 0 ) );
    srmline.Day69( guard( dateqtydict.Get( "68" ).GetNumber(), 0 ) );
    srmline.Day70( guard( dateqtydict.Get( "69" ).GetNumber(), 0 ) );
    srmline.Day71( guard( dateqtydict.Get( "70" ).GetNumber(), 0 ) );
    srmline.Day72( guard( dateqtydict.Get( "71" ).GetNumber(), 0 ) );
    srmline.Day73( guard( dateqtydict.Get( "72" ).GetNumber(), 0 ) );
    srmline.Day74( guard( dateqtydict.Get( "73" ).GetNumber(), 0 ) );
    srmline.Day75( guard( dateqtydict.Get( "74" ).GetNumber(), 0 ) );
    srmline.Day76( guard( dateqtydict.Get( "75" ).GetNumber(), 0 ) );
    srmline.Day77( guard( dateqtydict.Get( "76" ).GetNumber(), 0 ) );
    srmline.Day78( guard( dateqtydict.Get( "77" ).GetNumber(), 0 ) );
    srmline.Day79( guard( dateqtydict.Get( "78" ).GetNumber(), 0 ) );
    srmline.Day80( guard( dateqtydict.Get( "79" ).GetNumber(), 0 ) );
    srmline.Day81( guard( dateqtydict.Get( "80" ).GetNumber(), 0 ) );
    srmline.Day82( guard( dateqtydict.Get( "81" ).GetNumber(), 0 ) );
    srmline.Day83( guard( dateqtydict.Get( "82" ).GetNumber(), 0 ) );
    srmline.Day84( guard( dateqtydict.Get( "83" ).GetNumber(), 0 ) );
    srmline.Day85( guard( dateqtydict.Get( "84" ).GetNumber(), 0 ) );
    srmline.Day86( guard( dateqtydict.Get( "85" ).GetNumber(), 0 ) );
    srmline.Day87( guard( dateqtydict.Get( "86" ).GetNumber(), 0 ) );
    srmline.Day88( guard( dateqtydict.Get( "87" ).GetNumber(), 0 ) );
    srmline.Day89( guard( dateqtydict.Get( "88" ).GetNumber(), 0 ) );
    srmline.Day90( guard( dateqtydict.Get( "89" ).GetNumber(), 0 ) );
    
    // Set Extends value
    srmline.Extend1( guard( dateqtydict.Get( "Extend1" ).GetNumber(), 0 ) );
    srmline.Extend2( guard( dateqtydict.Get( "Extend2" ).GetNumber(), 0 ) );
    srmline.Extend3( guard( dateqtydict.Get( "Extend3" ).GetNumber(), 0 ) );
    srmline.Extend4( guard( dateqtydict.Get( "Extend4" ).GetNumber(), 0 ) );
    srmline.Extend5( guard( dateqtydict.Get( "Extend5" ).GetNumber(), 0 ) );
    srmline.Extend6( guard( dateqtydict.Get( "Extend6" ).GetNumber(), 0 ) );
    srmline.Extend7( guard( dateqtydict.Get( "Extend7" ).GetNumber(), 0 ) );
    srmline.Extend8( guard( dateqtydict.Get( "Extend8" ).GetNumber(), 0 ) );
    srmline.Extend9( guard( dateqtydict.Get( "Extend9" ).GetNumber(), 0 ) );
    srmline.Extend10( guard( dateqtydict.Get( "Extend10" ).GetNumber(), 0 ) );
    
    return srmline;
  *]
}