Класс движения итога

При создании каждого итога генерируется три класса движения итога. Их исходным описанием служит название итога (Name) +"Transaction" для класса транзакции итога, +"Balance" для класса баланса итога и +"DetailedTransaction" для класса детализированной транзакции итога. А исходным описанием списка их свойств служат соответствующие измерения и переменные итога.

Например, рассмотрим создание простого итога TotalName с измерением DimensionID и переменной Variable.

Класс модели предметной области, сгенерированный по этому описанию, выглядит следующим образом:

// Класс транзакции итога.

public partial class TotalNameTransaction : TransactionValue

{

 public long DimensionID { get; set; }

 public decimal Variable { get; set; }

}

 

// Класс баланса итога.

public partial class TotalNameBalance : BalanceValue

{

 public long DimensionID { get; set; }

 public decimal Variable { get; set; }

}

 

// Класс детализированной транзакции итога.

public partial class TotalNameDetailedTransaction : DetailedTransactionValue

{

 public long DimensionID { get; set; }

 public decimal Variable { get; set; }

}

Классы движений итогов наследуются от следующих базовых классов:

классы транзакций итогов наследуются от класса TransactionValue, который в свою очередь наследуется от базового класса TransactionBase:

public abstract class TransactionValue : TransactionBase,

 IEquatable<TransactionValue>, IComparable<TransactionValue>

{

 public long DocumentID { get; set; }

 public DateTime TransactionDate { get; set; }

 public long DeltaNo { get; set; }

 public long ScriptID { get; set; }

 public long PairTotalID { get; set; }

 public Document Document { get; set; }

 public Total Script { get; set; }

 public Total PairTotal { get; set; }

}

классы балансов итогов наследуются от класса TransactionValue, который в свою очередь наследуется от базового класса TransactionBase:

public abstract class BalanceValue : TransactionBase, IEquatable<BalanceValue>

классы детализированных транзакций итогов наследуются от класса DetailedTransactionValue, который в свою очередь наследуется от базового класса TransactionBase:

public abstract class DetailedTransactionValue : TransactionValue,

 IEquatable<DetailedTransactionValue>, IComparable<DetailedTransactionValue>

{

 public long DeltaSubNo { get; set; }

 public decimal LotNo { get; set; }

}

Каждому свойству движения итога соответствует поле типа EditableValue<T>, где Т – один из указанных в метаданных типов.

Пример использования:

[Import]

private ITableSourse DataContext { get; set; }

 

var documentId = 100500;

 

var query =

 from total in DataContext.GetTable<TotalNameTransaction>()

 where total.DocumentID == documentId

 select total;

 

return query.ToDictionary(

 total => total.DimensionID, total => total.Variable);