Валидаторы транзакций – скрипты, используемые для проверки транзакций на валидность (правильность). Валидаторы тесно связаны с используемыми драйверами итогов. Список всех валидаторов транзакций можно найти в справочнике "Scripts". Кроме того, валидатор конкретного итога можно открыть из его формы редактирования:
Скрипт валидатора выполняется при сохранении документа после транзакционных скриптов и позволяет проверить правильность транзакций до их сохранения, выдавая в случае ошибки исключение. Это, в свою очередь, позволяет сократить количество ошибок при расчете детализированных транзакций драйвером итога.
Например, с помощью валидаторов можно проверить следующие ограничения, накладываемые на транзакции итогов используемыми драйверами:
•нельзя делать полное расходное движение на итог, на котором используется драйвер FifoTotalDriver;
•нельзя делать неполное приходное движение или делать движение в обход итога конвертации на итог, на котором работает драйвер CashlessMoneyTotalDriver.
Скрипты валидаторов транзакций реализуют интерфейс ITransactionValidator (из пространства имен Ultima.Totals), который в свою очередь реализует следующие методы:
•ValidateTransactions(TransactionPairCollection transactionPairs, TransactionCollection transactions) – выполняет проверку транзакций, может быть переопределен прикладным разработчиком:
▪transactionPairs – коллекция пар транзакций для проверки;
▪transactions – коллекция транзакций для проверки.