| 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
 | | Quintiq file version 2.0 |  | #parent: #root |  | StaticMethod CreateOrUpdate ( |  |   MacroPlan macroPlan, |  |   String currencyId, |  |   String customerName, |  |   String customerId, |  |   String id, |  |   Date orderDate, |  |   String orderId, |  |   String orderLineId, |  |   Real price, |  |   String priorityName, |  |   String productId, |  |   String stockingPointId, |  |   String salesSegmentName, |  |   Real quantity, |  |   String unitOfMeasureName, |  |   String orderType, |  |   Boolean isAvailable |  | ) as CustomerOrder |  | { |  |   TextBody: |  |   [* |  |     // yypsybs Aug-14-2023 (created) |  |     // 查依赖项 |  |     product := Product_MP::FindById( macroPlan, productId ); |  |     salesSegment := SalesSegment_MP::FindByName( macroPlan, salesSegmentName ); |  |     stockingPoint := StockingPoint_MP::FindById(  macroPlan, stockingPointId ); |  |     currency := Currency_MP::FindById( macroPlan, currencyId ); |  |     unitOfMeasure := null( UnitOfMeasure_MP ) |  |     priority := null( Priority ); |  |     if( unitOfMeasureName <> "" ) { |  |         unitOfMeasure := UnitOfMeasure_MP::FindByName( macroPlan, unitOfMeasureName );   |  |     } |  |     if( priorityName <> "" ) { |  |         priority := Priority::FindByName( macroPlan, priorityName ); |  |     } |  |     // 检查依赖项 |  |     if( isnull( product) ) { |  |         error( "product not found" );   |  |     } |  |     if( isnull( salesSegment) ) { |  |         error( "sales segment not found" );   |  |     } |  |     if( isnull( stockingPoint) ) { |  |         error( "stock point not found" );   |  |     } |  |     if( isnull( currency) ) { |  |         error( "currency not found" );   |  |     } |  |     if( unitOfMeasureName <> "" and isnull( unitOfMeasure) ) { |  |         error( "unit of measure not found" );   |  |     } |  |     if( priorityName <> "" and isnull( stockingPoint) ) { |  |         error( "priority not found" );   |  |     } |  |     // 新增/更新 |  |     result := CustomerOrder::FindById( macroPlan, id ); |  |     if( isnull( result ) ) { |  |         CustomerOrder::Create( product, stockingPoint, id, orderDate, quantity, price,  |  |                                priorityName, salesSegmentName, currency.Name(), unitOfMeasureName,  |  |                                false, customerName, customerId, orderId, orderLineId, true, true, true ); |  |     } else { |  |         result.Update( product, stockingPoint, orderDate, quantity, price,  |  |                        priorityName, salesSegmentName, currency.Name(), unitOfMeasureName,  |  |                        false, customerName, customerId, orderId, orderLineId, true, true, true ); |  |     } |  |     return result; |  |   *] |  | } | 
 |