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
  | Quintiq file version 2.0 
 |  #parent: #root 
 |  StaticMethod IterativeGeneration3 ( 
 |    MacroPlan macroPlan, 
 |    GlobalOTDSOP globalOTDSOP, 
 |    Supply_MP smp, 
 |    Supply_MP firstSMP, 
 |    Number numberOfPlies, 
 |    Real fulfillmentQuantity, 
 |    CapacityAllocationResultsRuleConfiguration capacityAllocationResultsRuleConfiguration 
 |  ) 
 |  { 
 |    TextBody: 
 |    [* 
 |      info( "层数:", numberOfPlies ); 
 |      ontype ( smp ) { 
 |        NewSupply as ns : { 
 |          info( "供应类型(NewSupply)", "    供应量:", ns.Quantity(), "    实际用量:", fulfillmentQuantity ); 
 |          ontype ( ns.PeriodTask_MP() ) { 
 |            PeriodTaskOperation as pto : { 
 |              info( "操作周期任务    ", "供应时间:", ns.Start().Format( "Y-M2-D2" ), "    周期任务KEY:", pto.Key(), "    ", 
 |                    ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name() ); 
 |              traverse ( pto, DependentDemand, dd, dd.Quantity() > 0 ) { 
 |                traverse ( dd, Fulfillment, f ) { 
 |                  smp1 := f.Supply_MP(); 
 |                  numberOfPlies++; 
 |                  fulfillmentQuantity := ( dd.Quantity() / ns.Quantity() ) * fulfillmentQuantity; 
 |                  info( "--------------------------------------------------------------" ); 
 |                  if ( not isnull( capacityAllocationResultsRuleConfiguration ) ) { 
 |                    CapacityAllocationResults::CreateDate1( macroPlan, globalOTDSOP, dd, ns, firstSMP, capacityAllocationResultsRuleConfiguration, fulfillmentQuantity ); 
 |                  } 
 |                  CapacityAllocationResults::IterativeGeneration3( macroPlan, globalOTDSOP, smp1, firstSMP, numberOfPlies, fulfillmentQuantity, capacityAllocationResultsRuleConfiguration ); 
 |                  numberOfPlies--; 
 |                } 
 |              } 
 |            } 
 |              
 |            PeriodTaskLaneLeg as ptll : { 
 |              targetDependentDemand := select( ptll, DependentDemand, dd, dd.ProcessInput().ProductInStockingPoint_MP().ProductID() = ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().ProductID() and 
 |                                               dd.Quantity() = ns.Quantity() ); 
 |              info( "车道周期任务    ", "供应时间:", ns.Start().Format( "Y-M2-D2" ), "    周期任务KEY:", ptll.Key(), "    ",  
 |                    ns.ProductInStockingPointInPeriodPlanningLeaf().ProductInStockingPoint_MP().Name() ); 
 |              traverse ( targetDependentDemand, Fulfillment, f ) { 
 |                smp1 := f.Supply_MP(); 
 |                numberOfPlies++; 
 |                info( "--------------------------------------------------------------" ); 
 |                if ( not isnull( capacityAllocationResultsRuleConfiguration ) ) { 
 |                  CapacityAllocationResults::CreateDate1( macroPlan, globalOTDSOP, targetDependentDemand, ns, firstSMP, capacityAllocationResultsRuleConfiguration, f.Quantity() ); 
 |                } 
 |                CapacityAllocationResults::IterativeGeneration3( macroPlan, globalOTDSOP, smp1, firstSMP, numberOfPlies, f.Quantity(), capacityAllocationResultsRuleConfiguration ); 
 |                numberOfPlies--; 
 |              } 
 |            } 
 |          } 
 |        } 
 |             
 |        InventorySupply as is : { 
 |          info( "供应类型(InventorySupply)    ", "供应时间:", is.Date().Format( "Y-M2-D2" ), "    供应量:", is.Quantity(),  
 |                "    实际用量:", fulfillmentQuantity, "    ", is.ProductInStockingPoint_MP().Name() ); 
 |        } 
 |      } 
 |    *] 
 |  } 
 |  
  |