Драйвер FifoTotalDriver и его потомки

FifoTotalDriver — это базовый класс драйвера для итога, организованного как FIFO. Хранит состояние, дополнительно к измерениям итога вводит еще номер партии (LotNo). Может рассчитывать себестоимость партий по алгоритму FIFO. При приходовании партии учетных данных драйвер итога фиксирует ее себестоимость и использует ее в момент списания, при этом партии списываются в том же порядке, в каком были оприходованы. При списании количества в минус (расход партии, которая не была ранее оприходована) выдает ошибку списания и нулевую себестоимость.

MoneyTotalDriver — разновидность драйвера FIFO, ориентированная на учет наличных денег. Для учета количества вместо переменной Quantity используется CurrencyAmount, других отличий от базового драйвера нет.

CashlessMoneyTotalDriver — разновидность FIFO-драйвера для учета безналичных денег. Для безналичных денег существует операция овердрафта (уход баланса счета в минус), которую данный драйвер не считает ошибкой списания. Вместо этого операция формирует отрицательную партию со своей себестоимостью. При погашении овердрафта драйвер всегда использует себестоимость этой партии, чтобы нулевой баланс по количеству (сумма в валюте) в точности совпал с нулевым балансом по сумме в валюте учета. Для согласования сумм в проводках при этом всегда используется вспомогательный драйвер Конвертации, основанный на MarginTotalDriver.

DevBookmark_Scripts Следующие методы базового класса FifoTotalDriver можно переопределить:

CalculatePartialAmount — рассчитать сумму для частичного расхода партии (здесь можно, например, задать правила округления).

DevBookmark_Scripts Следующие методы базового класса CashlessMoneyDriver можно переопределить:

CalculateTransactionAmount — рассчитать неизвестную сумму транзакции (например, по текущему курсу ЦБ).