xiaoding721
2024-10-21 e838620cad384a27f8639797858a8b2c4313b6c7
_Main/BL/Type_NewOfflinePlanTable/Method_Comparison.qbl
@@ -23,7 +23,7 @@
    localColumns := construct( LocalColumns );
    localColumnIndexTree := NamedValueTree::Create();
    traverse( this,NewOfflinePlanColumn,column,column.StartDate() >=  macroPlan.StartOfPlanning().Date()){
      localColumn := table.LocalColumn( relnew,CustomDate := column.StartDate());
      localColumn := table.LocalColumn( relnew,CustomDate := column.StartDate(),TimeUnit := "Day");
      localColumnHandle := localColumnIndexTree.GetHandle( column.StartDate().AsQUILL() );
      localColumns.Add( localColumn );
      localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 );
@@ -95,6 +95,51 @@
      } 
    }
    
    startDate := minselect( table,LocalColumn,localColumn,localColumn.CustomDate() ).CustomDate();
    endDate := maxselect( table,LocalColumn,localColumn,localColumn.CustomDate() ).CustomDate();
    for( i := startDate.StartOfWeek(); i <= endDate.StartOfNextWeek(); i := i.StartOfNextWeek() ){
      timeUnit := "Week";
      localColumnHandle := localColumnIndexTree.GetHandle( i.AsQUILL() + timeUnit);
      localColumn := table.LocalColumn( relnew,CustomDate := i,TimeUnit := timeUnit );
      localColumns.Add( localColumn );
      localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 );
    }
    for( i := startDate.StartOfMonth(); i <= endDate.StartOfNextMonth(); i := i.StartOfNextMonth() ){
      timeUnit := "Month";
      localColumnHandle := localColumnIndexTree.GetHandle( i.AsQUILL() + timeUnit);
      localColumn := table.LocalColumn( relnew,CustomDate := i,TimeUnit := timeUnit );
      localColumns.Add( localColumn );
      localColumnIndexTree.Root().AddChild( localColumnHandle,localColumns.Size() - 1 );
    }
    traverse( table,LocalRow,row ){
      traverse( table,LocalColumn,column,column.TimeUnit() = "Week"){
        actual := sum( row,LocalCell.astype( LocalCell_ProductionComparison ),cell,
                                 cell.LocalColumn().TimeUnit() = "Day" and
                                 cell.LocalColumn().CustomDate() >= column.CustomDate() and
                                 cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextWeek(), cell.Actual());
        plan := sum( row,LocalCell.astype( LocalCell_ProductionComparison ),cell,
                                 cell.LocalColumn().TimeUnit() = "Day" and
                                 cell.LocalColumn().CustomDate() >= column.CustomDate() and
                                 cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextWeek(), cell.Plan());
        row.LocalCell( relnew,LocalCell_ProductionComparison,LocalColumn := column,Actual := actual,Plan := plan );
      }
    }
    traverse( table,LocalRow,row ){
      traverse( table,LocalColumn,column,column.TimeUnit() = "Month"){
        actual := sum( row,LocalCell.astype( LocalCell_ProductionComparison ),cell,
                                 cell.LocalColumn().TimeUnit() = "Day" and
                                 cell.LocalColumn().CustomDate() >= column.CustomDate() and
                                 cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextMonth(), cell.Actual());
        plan := sum( row,LocalCell.astype( LocalCell_ProductionComparison ),cell,
                                 cell.LocalColumn().TimeUnit() = "Day" and
                                 cell.LocalColumn().CustomDate() >= column.CustomDate() and
                                 cell.LocalColumn().CustomDate() < column.CustomDate().StartOfNextMonth(), cell.Plan());
        row.LocalCell( relnew,LocalCell_ProductionComparison,LocalColumn := column,Actual := actual,Plan := plan );
      }
    }
    return table;
  *]
}