lazhen
2025-01-09 8afe90b633046db39042aada36b88193062f8cff
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
Quintiq file version 2.0
#parent: #root
Method CreateUpdateSalesDemand (
  Product_MP owner_i,
  StockingPoint_MP stockingpoint_i,
  const LibDEC_ManufacturingDemand salesDemandExternal_i,
  String id_i,
  Date startdate_i,
  Date enddate_i,
  Real quantity_i,
  Real price_i,
  String priorityName_i,
  Real demanduncertaintypercentage_i,
  Boolean isexcludedfromfulfillmentkpi_i
) as Forecast
{
  TextBody:
  [*
    // Create/Update sales demand
    // Get sales demand instance
    salesDemand := Forecast::FindSalesDemandIndex( id_i );
    
    // Populate variables
    salesSegmentName := salesDemandExternal_i.CommercialSegmentID();
    currencyName := salesDemandExternal_i.CurrencyID();
    unitOfMeasureName := salesDemandExternal_i.UnitOfMeasureID();
    
    // Check if sales demand exists, if it doesn't exist, create a new one
    if( isnull( salesDemand ) )
    {
      salesDemand := Forecast::Create( owner_i,
                                       stockingpoint_i,
                                       id_i,
                                       startdate_i,
                                       enddate_i,
                                       quantity_i,
                                       price_i,
                                       priorityName_i,
                                       salesSegmentName,
                                       currencyName,
                                       unitOfMeasureName,
                                       demanduncertaintypercentage_i,
                                       isexcludedfromfulfillmentkpi_i,
                                       false )
    }
    // Else, simply update the values of the existing sales demand
    else
    {
      salesDemand.Update( owner_i,
                          stockingpoint_i,
                          startdate_i,
                          enddate_i,
                          quantity_i,
                          price_i,
                          priorityName_i,
                          demanduncertaintypercentage_i,
                          salesSegmentName,
                          currencyName,
                          unitOfMeasureName,
                          isexcludedfromfulfillmentkpi_i,
                              false );
    }
    
    // mark NOT soft deleted
    salesDemand.IsSoftDeleted( false );
    
    return salesDemand;
  *]
}