EntwicklerHandbuch
Einleitung
Damit wir, die 3G, uns etwas leichter tun mit dem ALEX schreiben wir uns ein paar Sachen nieder.
Datentypen
( SelectResult ) sortierbarer eindeutiger Vektor
SelectResult< Shift > Shifts;
Legt einen sortierbaren eindeutigen Vector an. Gleichzustellen mit
foreach_auto( s, ( GetAlexRoot()->SelectWith< PlanDetailX, Shift >( PlanDetailXValue = doc->GetPlan() )>>OrderBy( +Order ) ) )
s ist hier ebenfalls vom Typ SelectResult
+Order...Aufsteigend -Order...Absteigend
Funktionen
boost::function
void VisitCostCenterValues( const ReportResultLine& resultLine, const boost::function< void( const std::pair< String, String >& ) >& visitor )
{
foreach_auto( value, resultLine.Values( true, myGrid->GetTimeScaleIntervalCount() ) )
if( value )
foreach_auto( c, Sort( myGrid->GetReport()->ReportAccountView->ViewColumns.Values(), OrderBy( +DisplayRank ) ) )
foreach_auto( costCenterValue, GetCostCenterValues( c, value->ForDate(), value ) )
visitor( costCenterValue );
}
VisitCostCenterValues( *r, [&]( const std::pair< String, String >& costCenterValue )
{
myCostCenters.insert( costCenterValue.first );
});
Beispiel: [ http://coliru.stacked-crooked.com/a/b9f524b54a6f01b8 ]
Testfälle
Kostenstelle auf Plan setzen
PlanCostCenter_::SetIn( plan1, TimeRange::Eternal(), costCenter1 );
PlanCostCenter_::SetIn( plan2, TimeRange::Eternal(), costCenter2 );
Alternativ
employee1 | PlanCostCenter[ TimeRange::Eternal() ] << costCenter1;
employee2 | PlanCostCenter[ TimeRange::Eternal() ] << costCenter2;