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,
| GlobalOTDTable globalOTDTable,
| 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, globalOTDTable, dd, ns, firstSMP, capacityAllocationResultsRuleConfiguration, fulfillmentQuantity );
| }
| CapacityAllocationResults::IterativeGeneration3( macroPlan, globalOTDTable, 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, globalOTDTable, targetDependentDemand, ns, firstSMP, capacityAllocationResultsRuleConfiguration, f.Quantity() );
| }
| CapacityAllocationResults::IterativeGeneration3( macroPlan, globalOTDTable, 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() );
| }
| }
| *]
| }
|
|