В результате был вынужден признать поражение — я НЕ смог разобраться как оно работает.
Невероятное количество специальных случаев, настроек, десятки страниц описания обработки особенностей работы с каждым счетом, процедуры переноса себестоимости, миграции партий.
Потратив два дня на попытки разобраться в этом тексте, я так и не получил ясного понимания, что же мне надо сделать, если я хочу учитывать товар не только на складе, а и, например, на водителе. Или же хочу считать себестоимость не только для товара (это могут быть рекламации в гарантии, объекты основных средств или еще что угодно — да те же деньги).
Кроме того, некоторое удивление вызвало наличие специальных разделов с описанием закрытия склада по услугам и описанием ошибок списания на округлении. Зачем вообще списывать услуги со склада?
Двух-этапная система для борьбы с остатками округления тоже не уложилась в голове.
Пассажи типа
Правильнее было бы накапливать сумму ошибок на каком-то выделенном счете, а потом, при трансформации баланса, закрывать этот счет в ручную. Для того чтобы добиться такого эффекта — необходимо подправить метод inventAdj::errorAccountOperation(), таким образом чтобы он возвращал нужный вам счет ошибок округления. Я бы, наверное, использовал для этого счета отклонений от стандартной себестоимости. Если standard costing используется — то на эти счета как раз и нужно отклонения списывать, а если не используется — то эти счета в настройке складских разносок не заняты и их можно приспособить под списание ошибок и округлений. Если эта схема вам подходит — достаточно поменять в методе InventAdj::errorAccountOperation() значения InventAccountType::InventProfit и InventAccountType::InventLoss на InventAccountType::InventStdProfit и InventAccountType::InventStdLoss соответственно.
с одной стороны — внушают уважение, с другой — вселяют ужас.