yanweiyuan3
2023-08-09 588bc7829387dfc761cc25f06f77d4c81818bd10
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
Quintiq file version 2.0
#parent: #root
StaticMethod Update (
  CustomerOrders salesdemands,
  Boolean hasproduct,
  Product_MP owner,
  Boolean hasstockingpoint,
  StockingPoint_MP stockingpoint,
  Boolean hasstart,
  Date start,
  Boolean hasquantity,
  Real quantity,
  Boolean hasprice,
  Real price,
  Boolean haspriority,
  Priority priority,
  Boolean hassalessegment,
  SalesSegment_MP salessegment,
  Boolean hascurrency,
  Currency_MP currency,
  Boolean hasuom,
  UnitOfMeasure_MP unitofmeasure,
  Boolean hasisexcludedfromfulfillmentkpi,
  Boolean isexcludedfromfulfillmentkpi,
  Boolean hascustomername,
  String customername,
  Boolean hascustomerid,
  String customerid,
  Boolean hasorderid,
  String orderid,
  Boolean hasorderlineid,
  String orderlineid,
  Boolean hasisfornetting,
  Boolean isfornetting,
  Boolean hasisfirmed,
  Boolean isfirmed,
  Boolean ismanualupdate
)
{
  Description: 'Batch update of customer orders'
  TextBody:
  [*
    // Traverse the selected set of SalesDemands to batch update them
    traverse( salesdemands, Elements, e )
    {
      quantityadjusted := quantity;
    
      // Check which fields are selected for batch editing
      // If the field is not selected, use the current SalesDemand's value instead of the passed in value
      if( not hasproduct )
      {
        owner := e.Product_MP();
      }
      if( not hasstockingpoint )
      {
        stockingpoint := e.StockingPoint_MP();
      }
      if( not hasstart )
      {
        start := e.StartDate();
      }
      if( not hasquantity )
      {
        quantityadjusted := e.Quantity();
      }
      if( not hasprice )
      {
        price := e.Price();
      }
      if( not haspriority )
      {
        priority := e.Priority();
      }
      if( not hassalessegment )
      {
        salessegment := e.SalesSegment_MP();
      }
      if( not hascurrency )
      {
        currency := e.Currency_MP();
      }
      if( not hasuom )
      {
        unitofmeasure := e.UnitOfMeasure_MP();
      }
      if( not hasisexcludedfromfulfillmentkpi )
      {
        isexcludedfromfulfillmentkpi := e.IsExcludedFromFulfillmentKPI(); 
      }
      if( not hascustomername )
      {
        customername := e.CustomerName();
      }
      if( not hascustomerid )
      {
        customerid := e.CustomerID();
      }
      if( not hasorderid )
      {
        orderid := e.OrderID();
      }
      if( not hasorderlineid )
      {
        orderlineid := e.OrderLineID();
      }
      if( not hasisfirmed )
      {
        isfirmed := e.IsFirmed();
      }
      if ( not hasisfornetting )
      {
        isfornetting := e.IsEligibleForNetting();
      }
      
      //Keep history quantity
      historicalquantity := e.Quantity();
      decimalpoint := e.MacroPlan().GlobalParameters_MP().NumberOfDecimals(); // Get the number of decimal points to round off to
      
      // If the current quantity is not the same as the new quantity,
      // create a log for audit purposes
      if( historicalquantity <> quantityadjusted )
      {
        description := Translations::MP_SalesDemand_Update_Description( e,
                                                                        historicalquantity.Round( decimalpoint ),
                                                                        quantityadjusted.Round( decimalpoint ) );
        e.MacroPlan().CreateDecisionLog( description, ismanualupdate );
      }
    
    
      // Update attributes of Customer order
      e.Update( owner, 
                stockingpoint, 
                start, 
                quantityadjusted, 
                price, 
                ifexpr( isexcludedfromfulfillmentkpi, "", priority.Name() ), 
                salessegment.Name(), 
                currency.ID(), 
                unitofmeasure.Name(), 
                isexcludedfromfulfillmentkpi, 
                customername, 
                customerid, 
                orderid, 
                orderlineid, 
                isfornetting, 
                isfirmed, 
                false );
    }
  *]
}