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; 
 |    *] 
 |  } 
 |  
  |