| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod Initialize ( | 
|   MacroPlan owner | 
| ) | 
| { | 
|   Description: '初始化' | 
|   TextBody: | 
|   [* | 
|     // 甄兰鸽 Jul-4-2024 (created) | 
|     owner.FinancialWeeklyReport( relflush ); | 
|     ccunit                    := FinancialWeeklyReport::GetDefaultCCUnit(); | 
|     dlunit                    := FinancialWeeklyReport::GetDefaultDLUnit(); | 
|     allunit                   := FinancialWeeklyReport::GetDefaultAllUnit(); | 
|     defaultname               := FinancialWeeklyReport::GetDefaultName(); | 
|     startofplanning           := owner.StartOfPlanning(); | 
|      | 
|     table                     := owner.FinancialWeeklyReport( relnew, ID := defaultname, Name := defaultname ); | 
|     //产量报表 | 
|     productiontable           := selectobject( owner, FinancialProductionSource.FinancialProductionReport, report, not report.IsImport() and not report.IsShow() ); | 
|     //销量报表 | 
|     salestable                := selectobject( owner, FinancialSalesSource.FinancialSalesReport, report, not report.IsImport() and not report.IsShow() ); | 
|      | 
|     table.GenerateColumn( owner ); | 
|     totalproduction           := table.FinancialWeeklyRow( relnew, Name := '总产量', RowNr := 1 ); | 
|     dlproduction              := table.FinancialWeeklyRow( relnew, Name := 'DL产量', RowNr := 2 ); | 
|     ccproduction              := table.FinancialWeeklyRow( relnew, Name := 'CC产量', RowNr := 3 ); | 
|     totalsales                := table.FinancialWeeklyRow( relnew, Name := '总销量', RowNr := 4 ); | 
|     dlsales                   := table.FinancialWeeklyRow( relnew, Name := 'DL销量', RowNr := 5 ); | 
|     ccsales                   := table.FinancialWeeklyRow( relnew, Name := 'CC销量', RowNr := 6 ); | 
|     //SUM | 
|     totalpvaluesum            := [Real]0; | 
|     dlpvaluesum               := [Real]0; | 
|     ccpvaluesum               := [Real]0; | 
|     totalsvaluesum            := [Real]0; | 
|     dlsvaluesum               := [Real]0; | 
|     ccsvaluesum               := [Real]0; | 
|     //累计量 | 
|     totalpvaluecumulant       := [Real]0; | 
|     dlpvaluecumulant          := [Real]0; | 
|     ccpvaluecumulant          := [Real]0; | 
|     totalsvaluecumulant       := [Real]0; | 
|     dlsvaluecumulant          := [Real]0; | 
|     ccsvaluecumulant          := [Real]0; | 
|      | 
|     traverse( table, FinancialWeeklyColumn, column ){ | 
|       productioncolumn      := selectobject( productiontable, FinancialProductionColumn, pcolumn, pcolumn.Name() = column.Name() and pcolumn.Period() = column.Period() ); | 
|       salescolumn           := selectobject( salestable, FinancialSalesColumn, scolumn, scolumn.Name() = column.Name() and scolumn.Period() = column.Period() ); | 
|        | 
|       //产量汇总 | 
|       totalpvalue           := [Real]0; | 
|       dlpvalue              := [Real]0; | 
|       ccpvalue              := [Real]0; | 
|       traverse( productioncolumn, FinancialProductionCell, cell, [Real]cell.Value() > 0 ){ | 
|         unit                := cell.FinancialProductionRow().Unit(); | 
|          | 
|         if( unit = allunit ){ | 
|           totalpvalue       := totalpvalue + [Real]cell.Value(); | 
|           if( column.Period() = startofplanning.StartOfMonth().Date() ){ | 
|             totalpvaluecumulant := totalpvaluecumulant - cell.PlanValue(); | 
|           } | 
|         }else if( unit = dlunit ){ | 
|           dlpvalue          := dlpvalue + [Real]cell.Value(); | 
|           if( column.Period() = startofplanning.StartOfMonth().Date() ){ | 
|             dlpvaluecumulant := dlpvaluecumulant - cell.PlanValue(); | 
|           } | 
|         }else if( unit = ccunit ){ | 
|           ccpvalue          := ccpvalue + [Real]cell.Value(); | 
|           if( column.Period() = startofplanning.StartOfMonth().Date() ){ | 
|             ccpvaluecumulant := ccpvaluecumulant - cell.PlanValue(); | 
|           } | 
|         } | 
|       } | 
|       totalpcell            := column.FinancialWeeklyCell( relnew, Value := [String]totalpvalue ); | 
|       totalproduction.FinancialWeeklyCell( relinsert, totalpcell ); | 
|       dlpcell               := column.FinancialWeeklyCell( relnew, Value := [String]dlpvalue ); | 
|       dlproduction.FinancialWeeklyCell( relinsert, dlpcell ); | 
|       ccpcell               := column.FinancialWeeklyCell( relnew, Value := [String]ccpvalue ); | 
|       ccproduction.FinancialWeeklyCell( relinsert, ccpcell ); | 
|        | 
|       //销量汇总 | 
|       totalsvalue           := [Real]0; | 
|       dlsvalue              := [Real]0; | 
|       ccsvalue              := [Real]0; | 
|       traverse( salescolumn, FinancialSalesCell, cell, [Real]cell.Value() > 0 ){ | 
|         unit                := cell.FinancialSalesRow().Unit(); | 
|         if( unit = allunit ){ | 
|           totalsvalue       := totalsvalue + [Real]cell.Value(); | 
|         }else if( unit = dlunit ){ | 
|           dlsvalue          := dlsvalue + [Real]cell.Value(); | 
|         }else if( unit = ccunit ){ | 
|           ccsvalue          := ccsvalue + [Real]cell.Value(); | 
|         } | 
|       } | 
|       totalscell            := column.FinancialWeeklyCell( relnew, Value := [String]totalsvalue ); | 
|       totalsales.FinancialWeeklyCell( relinsert, totalscell ); | 
|       dlscell               := column.FinancialWeeklyCell( relnew, Value := [String]dlsvalue ); | 
|       dlsales.FinancialWeeklyCell( relinsert, dlscell ); | 
|       ccscell               := column.FinancialWeeklyCell( relnew, Value := [String]ccsvalue ); | 
|       ccsales.FinancialWeeklyCell( relinsert, ccscell ); | 
|        | 
|       if( column.Period() < startofplanning.StartOfMonth().Date() ){ | 
|         totalpvaluecumulant := totalpvaluecumulant + totalpvalue; | 
|         dlpvaluecumulant    := dlpvaluecumulant + dlpvalue; | 
|         ccpvaluecumulant    := ccpvaluecumulant + ccpvalue; | 
|         totalsvaluecumulant := totalsvaluecumulant + totalsvalue; | 
|         dlsvaluecumulant    := dlsvaluecumulant + dlsvalue; | 
|         ccsvaluecumulant    := ccsvaluecumulant + ccsvalue; | 
|       } | 
|       totalpvaluesum        := totalpvaluesum + totalpvalue; | 
|       dlpvaluesum           := dlpvaluesum + dlpvalue; | 
|       ccpvaluesum           := ccpvaluesum + ccpvalue; | 
|       totalsvaluesum        := totalsvaluesum + totalsvalue; | 
|       dlsvaluesum           := dlsvaluesum + dlsvalue; | 
|       ccsvaluesum           := ccsvaluesum + ccsvalue; | 
|     } | 
|     sumcolumn                 := table.FinancialWeeklyColumn( relnew, Name := 'SUM' ); | 
|     cumulantcolumn            := table.FinancialWeeklyColumn( relnew, Name := '累计量' ); | 
|     proportioncolumn          := table.FinancialWeeklyColumn( relnew, Name := '占比' ); | 
|     //SUM | 
|     totalpcellsum           := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]totalpvaluesum ); | 
|     totalproduction.FinancialWeeklyCell( relinsert, totalpcellsum ); | 
|     dlpcellsum              := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]dlpvaluesum ); | 
|     dlproduction.FinancialWeeklyCell( relinsert, dlpcellsum ); | 
|     ccpcellsum              := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]ccpvaluesum ); | 
|     ccproduction.FinancialWeeklyCell( relinsert, ccpcellsum ); | 
|     totalscellsum           := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]totalsvaluesum ); | 
|     totalsales.FinancialWeeklyCell( relinsert, totalscellsum ); | 
|     dlscellsum              := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]dlsvaluesum ); | 
|     dlsales.FinancialWeeklyCell( relinsert, dlscellsum ); | 
|     ccscellsum              := sumcolumn.FinancialWeeklyCell( relnew, Value := [String]ccsvaluesum ); | 
|     ccsales.FinancialWeeklyCell( relinsert, ccscellsum ); | 
|     //累计量 | 
|     totalpcellcumulant      := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]totalpvaluecumulant ); | 
|     totalproduction.FinancialWeeklyCell( relinsert, totalpcellcumulant ); | 
|     dlpcellcumulant         := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]dlpvaluecumulant ); | 
|     dlproduction.FinancialWeeklyCell( relinsert, dlpcellcumulant ); | 
|     ccpcellcumulant         := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]ccpvaluecumulant ); | 
|     ccproduction.FinancialWeeklyCell( relinsert, ccpcellcumulant ); | 
|     totalscellcumulant      := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]totalsvaluecumulant ); | 
|     totalsales.FinancialWeeklyCell( relinsert, totalscellcumulant ); | 
|     dlscellcumulant         := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]dlsvaluecumulant ); | 
|     dlsales.FinancialWeeklyCell( relinsert, dlscellcumulant ); | 
|     ccscellcumulant         := cumulantcolumn.FinancialWeeklyCell( relnew, Value := [String]ccsvaluecumulant ); | 
|     ccsales.FinancialWeeklyCell( relinsert, ccscellcumulant ); | 
|     //占比 | 
|     totalpvalueproportion   := guard( ( totalpvaluecumulant / totalpvaluesum ).Format( 'N(Dec(2))' ), '0.00' ); | 
|     totalpcellproportion    := proportioncolumn.FinancialWeeklyCell( relnew, Value := totalpvalueproportion ); | 
|     totalproduction.FinancialWeeklyCell( relinsert, totalpcellproportion ); | 
|      | 
|     dlpvalueproportion      := guard( ( dlpvaluecumulant / dlpvaluesum ).Format( 'N(Dec(2))' ), '0.00' ); | 
|     dlpcellproportion       := proportioncolumn.FinancialWeeklyCell( relnew, Value := dlpvalueproportion ); | 
|     dlproduction.FinancialWeeklyCell( relinsert, dlpcellproportion ); | 
|      | 
|     ccpvalueproportion      := guard( ( ccpvaluecumulant / ccpvaluesum ).Format( 'N(Dec(2))' ), '0.00' ); | 
|     ccpcellproportion       := proportioncolumn.FinancialWeeklyCell( relnew, Value := ccpvalueproportion ); | 
|     ccproduction.FinancialWeeklyCell( relinsert, ccpcellproportion ); | 
|      | 
|     totalsvalueproportion   := guard( ( totalsvaluecumulant / totalsvaluesum ).Format( 'N(Dec(2))' ), '0.00' ); | 
|     totalscellproportion    := proportioncolumn.FinancialWeeklyCell( relnew, Value := totalsvalueproportion ); | 
|     totalsales.FinancialWeeklyCell( relinsert, totalscellproportion ); | 
|      | 
|     dlsvalueproportion      := guard( ( dlsvaluecumulant / dlsvaluesum ).Format( 'N(Dec(2))' ), '0.00' ); | 
|     dlscellproportion       := proportioncolumn.FinancialWeeklyCell( relnew, Value := dlsvalueproportion ); | 
|     dlsales.FinancialWeeklyCell( relinsert, dlscellproportion ); | 
|      | 
|     ccsvalueproportion      := guard( ( ccsvaluecumulant / ccsvaluesum ).Format( 'N(Dec(2))' ), '0.00' ); | 
|     ccscellproportion       := proportioncolumn.FinancialWeeklyCell( relnew, Value := ccsvalueproportion ); | 
|     ccsales.FinancialWeeklyCell( relinsert, ccscellproportion ); | 
|      | 
|     info( sumcolumn.FinancialWeeklyCell( relsize ), cumulantcolumn.FinancialWeeklyCell( relsize ), proportioncolumn.FinancialWeeklyCell( relsize ) ); | 
|   *] | 
| } |