Скрипты драйверов итога наследуются от базового класса, указанного в свойстве Base class. Все базовые классы драйверов итоговреализуют интерфейс ITotalDriver (из пространства имен Ultima.Totals.Calculation).
Интерфейс ITotalDriver содержит следующие методы и свойства:
•TotalID типа long — возвращает идентификатор итога;
•LimitDateTime типа DateTime — возвращает дату, по которую рассчитан текущий итог;
•LimitDocumentID типа long — возвращает идентификатор документа, по который рассчитан текущий итог;
•DocumentBalance типа decimal — возвращает значение баланса текущего документа (сумму всех значений переменной Сумма его транзакций);
•BeginCalculation(ITotalCalculator transactionProcessor) — вызывается в начале процесса расчета транзакций;
▪transactionProcessor — экземпляр обработчика транзакций, используемый для сообщения об ошибках вычисления и т.п.;
•EndCalculation() — вызывается в конце процесса расчета транзакций;
•BeginDocument(DateTime transactionDate, long docId) — вызывается в начале расчета каждого документа;
▪transactionDate — дата транзакции;
▪docId — идентификатор документа;
•EndDocument(DateTime transactionDate, long docId) — вызывается в конце расчета каждого документа;
▪transactionDate — дата транзакции;
▪docId — идентификатор документа;
•BeginTransaction() — вызывается в начале расчета каждой транзакции;
•EndTransaction() — вызывается в конце расчета каждой транзакции;
•LoadTotalState(ITransactionLoader loader, DateTime limitDate, long limitDocId) — загружает статус итога на указанную дату (или дату транзакции указанного документа:
▪loader — загрузчик транзакций;
▪limitDate — дата транзакции, на которую будет загружен статус итога;
▪limitDocId — идентификатор документа, на дату транзакции которого будет загружен статус итога;
•AddCompleteTransaction(DetailedTransactionValue transaction) — добавляет транзакцию в список полных транзакций итога:
▪transaction — транзакция для добавления;
•CanCalculateOutcome(TransactionValue outcome) — сообщает, может ли текущий драйвер самостоятельно рассчитать указанную расходную транзакцию до полной:
▪outcome — расходная транзакция;
•CalculateOutcomes(TransactionValue outcome, IEnumerable<TransactionValue> incomes) — рассчитывает расходные транзакции до полных:
▪outcome — расходная транзакция для расчета;
▪incomes — рассчитываемая приходная транзакция;
•CalculateIncomes(TransactionValue income, IEnumerable<TransactionValue> outcomes) — рассчитывает приходные транзакции до полных:
▪income — приходная транзакция для расчета;
▪outcomes — рассчитываемая расходная транзакция;
•DetailedTransactions типа ICollection<DetailedTransactionValue> — возвращает рассчитанную детализированную транзакцию готовую для записи в базу данных.