| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod CreateOldOfflinePlanData ( | 
|   MacroPlan macroPlan | 
| ) as OfflinePlanTable | 
| { | 
|   TextBody: | 
|   [* | 
|     nopt := maxselect( macroPlan, NewOfflinePlanTable, tempNOPT, true, tempNOPT.SaveDateTime() ); | 
|      | 
|     macroPlan.OfflinePlanTable( relflush ); | 
|      | 
|     opt  := macroPlan.OfflinePlanTable( relnew, SaveDateTime := nopt.SaveDateTime() ); | 
|      | 
|     // 创建列 | 
|     firstColumn  := opt.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 2 ); | 
|     secondColumn := opt.OfflinePlanColumn( relnew, ColumnDate := macroPlan.StartOfPlanning().Date() - 1 ); | 
|     traverse ( nopt, NewOfflinePlanColumn, nopc ) { | 
|       opt.OfflinePlanColumn( relnew, ColumnDate := nopc.StartDate() ); | 
|     } | 
|      | 
|     pls := selectuniquevalues( nopt, NewOfflinePlanRow, tempNOPR, true, tempNOPR.ProductionLine() ); | 
|      | 
|     traverse ( pls, Elements, pl ) { | 
|       // 创建明细行 | 
|       detailNOPRs := selectsortedset( nopt, NewOfflinePlanRow, tempNOPR, tempNOPR.ProductionLine() = pl and tempNOPR.Type() = "1", tempNOPR.ProductionLine(), tempNOPR.ProductID() ); | 
|       traverse ( detailNOPRs, Elements, nopr ) { | 
|         quantityOPR := opt.OfflinePlanRow( relnew, ProductionLine := nopr.ProductionLine(), ProductID := nopr.ProductID(), Type := "1" ); | 
|         orderOPR    := opt.OfflinePlanRow( relnew, ProductionLine := nopr.ProductionLine(), ProductID := nopr.ProductID(), Type := "2" ); | 
|          | 
|         // 第一列 | 
|         quantityOPR.OfflinePlanCell( relnew, OfflinePlanColumn := firstColumn,  Value := nopr.Name() ); | 
|         orderOPR.OfflinePlanCell(    relnew, OfflinePlanColumn := firstColumn,  Value := "" ); | 
|          | 
|         // 第二列 | 
|         quantityOPR.OfflinePlanCell( relnew, OfflinePlanColumn := secondColumn, Value := "Quantity" ); | 
|         orderOPR.OfflinePlanCell(    relnew, OfflinePlanColumn := secondColumn,  Value := "Order" ); | 
|          | 
|         // 时间列 | 
|         traverse ( nopr, NewOfflinePlanCell, nopcell ) { | 
|           opc := select( opt, OfflinePlanColumn, tempOPC, tempOPC.ColumnDate() = nopcell.StartDate() ); | 
|           quantityOPR.OfflinePlanCell( relnew, OfflinePlanColumn := opc, Value := [String]nopcell.Quantity() ); | 
|           orderOPR.OfflinePlanCell(    relnew, OfflinePlanColumn := opc, Value := nopcell.Order() ); | 
|         } | 
|       } | 
|        | 
|       // 创建合计行 | 
|       totalNOPR            := select( nopt, NewOfflinePlanRow, tempNOPR, tempNOPR.ProductionLine() = pl and tempNOPR.Type() = "2" ); | 
|        | 
|       totalOPR             := opt.OfflinePlanRow( relnew, ProductionLine := totalNOPR.ProductionLine(), ProductID := "Z", Type := "3" ); | 
|       shiftPatternNameOPR  := opt.OfflinePlanRow( relnew, ProductionLine := totalNOPR.ProductionLine(), ProductID := "Z", Type := "4" ); | 
|       shiftPatternStartOPR := opt.OfflinePlanRow( relnew, ProductionLine := totalNOPR.ProductionLine(), ProductID := "Z", Type := "5" ); | 
|       shiftPatternEndOPR   := opt.OfflinePlanRow( relnew, ProductionLine := totalNOPR.ProductionLine(), ProductID := "Z", Type := "6" ); | 
|        | 
|       // 第一列 | 
|       totalOPR.OfflinePlanCell( relnew, OfflinePlanColumn := firstColumn, Value := "合计" ); | 
|       shiftPatternNameOPR.OfflinePlanCell( relnew, OfflinePlanColumn := firstColumn, Value := "" ); | 
|       shiftPatternStartOPR.OfflinePlanCell( relnew, OfflinePlanColumn := firstColumn, Value := "" ); | 
|       shiftPatternEndOPR.OfflinePlanCell( relnew, OfflinePlanColumn := firstColumn, Value := "" ); | 
|        | 
|        // 第二列 | 
|       totalOPR.OfflinePlanCell( relnew, OfflinePlanColumn := secondColumn, Value := "总量" ); | 
|       shiftPatternNameOPR.OfflinePlanCell( relnew, OfflinePlanColumn := secondColumn, Value := "班次" ); | 
|       shiftPatternStartOPR.OfflinePlanCell( relnew, OfflinePlanColumn := secondColumn, Value := "班次开始时间" ); | 
|       shiftPatternEndOPR.OfflinePlanCell( relnew, OfflinePlanColumn := secondColumn, Value := "班次结束时间" ); | 
|        | 
|       // 时间列 | 
|       traverse ( totalNOPR, NewOfflinePlanCell, nopcell ) { | 
|         opc := select( opt, OfflinePlanColumn, tempOPC, tempOPC.ColumnDate() = nopcell.StartDate() ); | 
|         totalOPR.OfflinePlanCell(             relnew, OfflinePlanColumn := opc, Value := [String]nopcell.TotalQuantity() ); | 
|         shiftPatternNameOPR.OfflinePlanCell(  relnew, OfflinePlanColumn := opc, Value := nopcell.ShiftPatternName() ); | 
|         shiftPatternStartOPR.OfflinePlanCell( relnew, OfflinePlanColumn := opc, Value := nopcell.ShiftPatternStart() ); | 
|         shiftPatternEndOPR.OfflinePlanCell(   relnew, OfflinePlanColumn := opc, Value := nopcell.ShiftPatternEnd() ); | 
|       } | 
|     } | 
|      | 
|     return opt; | 
|   *] | 
| } |