| 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
 | | Quintiq file version 2.0 |  | #parent: #root |  | StaticMethod ValidateInput ( |  |   output String feedback_o, |  |   ProductInStockingPoint_MPs owners, |  |   Account_MP account, |  |   String costDriver, |  |   Date start, |  |   String timeUnit, |  |   Number lengthOfTime, |  |   Real cost, |  |   InventoryValueAndCosts inventoryCosts |  | ) declarative remote as Boolean |  | { |  |   Description: '(Web) Validate one or more inventory cost' |  |   TextBody: |  |   [* |  |     // Traverse to check batch/single create/edit input |  |     hasPISP := InventoryValueAndCost::HasPISP( feedback_o, owners ); |  |     isCreate := inventoryCosts.Size() = 0; |  |     isSingleEdit := inventoryCosts.Size() = 1; |  |     isWeb := true; // True to indicate specific to WC |  |     sanityfb := ''; |  |      |  |     if( hasPISP ) |  |     { |  |       if( isCreate ) |  |       { |  |         traverse( owners, Elements, owner ) |  |         { |  |           // Temporary local variable in order to not overwrite feedback_o |  |           fb := ''; |  |           isValid := InventoryValueAndCost::ValidateInput( fb,  |  |                                                            sanityfb, |  |                                                            owner.Product_MP(), |  |                                                            owner.StockingPoint_MP(), |  |                                                            account, |  |                                                            costDriver, |  |                                                            start, |  |                                                            timeUnit, |  |                                                            lengthOfTime, |  |                                                            cost, |  |                                                            null( AccountCost ), // Create mode thus neglect account cost argument |  |                                                            isWeb ); |  |                                                                                                            |  |           if( not isValid ) |  |           { |  |             if( feedback_o <> '' ) |  |             { |  |               feedback_o := feedback_o + String::NewLine(); // New line |  |             } |  |             feedback_o := feedback_o + fb; |  |           }                                                                  |  |         } |  |       } |  |       else // Validate single & batch edit |  |       { |  |          |  |         // 1. traverse into cost, validate all owners |  |         traverse( inventoryCosts, Elements, invCost ) |  |         { |  |           invCostOwner := ifexpr( isSingleEdit, owners.First(), invCost.ProductInStockingPoint_MP() ); |  |           InventoryValueAndCost::ValidateInput( feedback_o, |  |                                                 sanityfb, |  |                                                 invCostOwner.Product_MP(), |  |                                                 invCostOwner.StockingPoint_MP(), |  |                                                 ifexpr( isSingleEdit, account, invCost.Account_MP() ), |  |                                                 ifexpr( isSingleEdit, costDriver, invCost.CostDriver() ), |  |                                                 ifexpr( isSingleEdit, start, invCost.Start() ), |  |                                                 invCost.TimeUnit(), |  |                                                 invCost.LengthOfTime(), |  |                                                 cost, // Regardless of batch, always check cost |  |                                                 invCost, |  |                                                 isWeb );  |  |         } |  |       } |  |          |  |     } |  |     return feedback_o = ''; |  |   *] |  | } | 
 |