Оценка запасов в ERPNext: FIFO или скользящая средняя
АйТи Фреш
IT-аутсорсинг и бизнес

FIFO или скользящая средняя: как метод оценки запасов в ERPNext меняет себестоимость на объекте

Автор: , директор ООО «АйТи-Фреш» · · ~14 мин чтения
Две кучи щебня: разложенная по партиям (FIFO) и смешанная в среднюю цену
Один и тот же щебень получает разную цену в зависимости от метода.

В ERPNext оценка запасов — это FIFO либо скользящая средняя (Moving Average). FIFO списывает по цене старых партий, скользящая средняя — по средней цене остатка. Подрядчику с частыми закупками я чаще ставлю Moving Average. Ниже: пример на цифрах, пересчёт Repost Item Valuation, опасные настройки и разговор с бухгалтером.

Чем FIFO отличается от скользящей средней в ERPNext и где этот выбор делается?

FIFO списывает материал по цене самых ранних партий, а скользящая средняя (Moving Average) списывает по средней цене всего остатка, которая пересчитывается при каждом поступлении. Количество материала в обоих случаях одинаковое, различается стоимость списания и стоимость остатка. Общая сумма «куплено» равна сумме «списано плюс осталось», просто делится она по-разному.

Выбор делается в двух местах. Значение по умолчанию задаётся в Stock Settings (поле Default Valuation Method; доступны FIFO, LIFO и Moving Average, по умолчанию стоит FIFO), а у конкретной номенклатуры метод фиксируется в карточке Item. Документация о смене метода говорит точно: для позиций, по которым уже есть движения, допускается переход с FIFO на Moving Average, а с Moving Average обратно на FIFO нет (это же ограничение зашито в коде карточки Item в v15). Поэтому решение принимают до загрузки остатков, а не после первого месяца работы.

Покажу на цифрах, они условные. Приход 100 единиц по 50 ₽, затем приход 100 единиц по 60 ₽, потом списание на объект 120 единиц. FIFO возьмёт 100 по 50 и 20 по 60: 5 000 + 1 200 = 6 200 ₽, остаток 80 единиц по 60 ₽ стоит 4 800 ₽. Moving Average посчитает среднюю (100 × 50 + 100 × 60) / 200 = 55 ₽: списание 120 × 55 = 6 600 ₽, остаток 80 × 55 = 4 400 ₽. В сумме и там, и там 11 000 ₽. Разный результат, оба метода допустимы. | Показатель | FIFO | Moving Average | |---|---|---| | Цена списания 120 ед. | 6 200 ₽ | 6 600 ₽ | | Стоимость остатка 80 ед. | 4 800 ₽ | 4 400 ₽ | | Всего | 11 000 ₽ | 11 000 ₽ |

Эти числа сверены по логике примера из документации ERPNext: там 10 единиц по 100 и 20 по 120 с продажей 15 единиц дают 1 600 при FIFO и 1 700 при скользящей средней. О LIFO в документации по сравнению методов речи нет, и для российской бухгалтерской оценки он, насколько мне известно, не применяется: уточните у бухгалтера и не выбирайте его «на всякий случай».

Сравнение FIFO и скользящей средней на одной закупке: себестоимость списания 6 200 и 6 600 рублей
Одинаковые закупки дают разную себестоимость списания.

Как цена закупки превращается в себестоимость материала на объекте: путь через Stock Ledger

Цена закупки становится себестоимостью в момент складских проводок: поступление пишет в Stock Ledger Entry количество и стоимость, а списание на объект берёт стоимость по выбранному методу. Stock Ledger Entry это журнал движений по каждой позиции и складу; из него строятся остатки и отчёты Stock Ledger и Stock Balance.

Для подрядчика важная деталь: списание материала на объект (Material Issue) относит стоимость на расходы, а Project служит аналитикой. В карточке Project ERPNext v15 копит два разных показателя: Total Purchase Cost (по закупочным счетам с указанным проектом) и Total Consumed Material Cost (по складским списаниям на проект по оценке склада). Это два разных пути расчёта, поэтому суммы в отчётах по проекту и в остатках на складе могут не совпадать, пока вы не договорились, какой из них главный для руководителя.

Что влияет на цену на входе: курс, доставка, скидки поставщика. Доставка, которая оплачена отдельным счётом перевозчика, в стоимость материала попадает не сама по себе, а через механизм Landed Cost: без него щебень на объекте кажется дешевле, чем он есть. Я не буду разбирать его здесь, тема отдельная, а в плане статей по ERPNext для неё есть своя.

Практический вывод: метод оценки влияет на то, сколько «стоит» материал на конкретном объекте. При FIFO объект, который взял материал первым, получает старую цену, а следующий новую. При скользящей средней цена для всех объектов одинакова на данный момент. Для прибыльности по объекту это принципиально, потому что один и тот же щебень даёт разную маржу в зависимости от того, кто его списал первым.

Какой метод выбрать подрядчику: когда цены на металл и сухие смеси прыгают

Для большинства материалов подрядчика я выбираю Moving Average. Закупки частые, цены прыгают, партии смешиваются на складе и физически не различаются: щебень из одной кучи, арматура с разных поставок лежит вместе. Скользящая средняя сглаживает скачки, проще объясняется бухгалтеру и меньше зависит от порядка проводок.

FIFO я оставляю там, где партии физически различимы и цена партии важна: оборудование с серийными номерами, дорогая спецтехника, материалы, закупленные под конкретный договор. Там привязка стоимости к конкретной поставке полезна. Но FIFO болезненнее реагирует на проводки задним числом: порядок прихода и расхода определяет итог, и любая корректировка пересчитывает цепочку.

Если цены на металл и сухие смеси растут быстро, на FIFO вы будете списывать на объект старую дешёвую цену, а на склад покупать по новой. Отчёт по объекту будет выглядеть прибыльнее, чем реально, а денег на закупку следующей партии не хватит. Скользящая средняя ближе к текущему уровню цен. Это не вопрос «правильного» метода, а вопрос того, какую картину вы хотите видеть руководителю.

Одно ограничение: не смешивайте методы внутри одной группы материалов без нужды. Сравнение объектов тогда становится неполным, а объяснять разницу придётся вручную. Договоритесь с бухгалтером о правиле по группам до загрузки остатков.

Что пересчитывает Repost Item Valuation и почему проводка задним числом опасна

Repost Item Valuation это фоновый документ, который пересчитывает записи Stock Ledger с определённой даты: заново считает текущий остаток и стоимость склада и обновляет оценку по методу позиции. ERPNext создаёт такие документы сам, когда сохраняется проводка задним числом, а вручную их создают по компании, номенклатуре, складу и дате начала. Документация предупреждает, что пересчёт затрагивает историю, и советует ограничивать его по позиции, складу и дате и запускать вне рабочих часов.

Проводка задним числом опасна тем, что она меняет всю цепочку последующих движений. Вы провели приход от 15-го числа 3-го числа следующего месяца: система должна пересчитать каждое списание после 15-го, а значит, поменять себестоимость объектов и проводки в главной книге. В Stock Reposting Settings документация прямо рекомендует не проводить задним числом глубже одного месяца: пересчёт ограничен временем (упоминается лимит в 1500 секунд), а окно, в которое разрешён пересчёт, можно сузить настройкой Limit timeslot for Stock Reposting. Сочетание глубоких дат и узкого окна даёт сбои и зависшие пересчёты.

Выход простой, и он организационный. Ввести правило: документы вносятся в день операции, старше трёх-пяти дней согласовывается с ответственным, старше месяца только вместе с бухгалтером. И закрыть старые даты настройкой Stock Frozen Up To в Stock Settings: документация по смене метода прямо называет её способом защитить предыдущие периоды от неожиданного пересчёта. Роль, которой разрешено править замороженное, задаётся там же. Проверяйте результат отчётами: Stock Ledger Variance Report показывает расхождения между текущим остатком в журнале и итоговым балансом склада. Исправления запускают кнопкой Create Reposting Entries. Поведение пересчёта между v15 и v16 может отличаться, поэтому после обновления повторите проверку на своём стенде.

Когда система «тормозит» после большого пересчёта, это тоже обычно reposting: он занимает очередь фоновых задач. Тормоза из-за такой очереди я разбираю отдельно в материале про диагностику производительности, а здесь важен принцип: старые даты не трогаем без нужды.

Не проводите документы глубже месяца без согласования: пересчёт тянет за собой всю цепочку движений и может не уложиться в лимит времени.
Схема пересчёта стоимости склада в ERPNext после проводки задним числом
Одна старая дата тянет за собой все последующие движения.

Отрицательные остатки и заморозка периода: две настройки, которые портят оценку

Две настройки в Stock Settings влияют на оценку сильнее всего: Allow Negative Stock и Stock Frozen Up To. Первая разрешает списывать больше, чем есть на складе. Вторая блокирует проводки на старые даты. Сочетание «минус разрешён, период не заморожен» — самый частый источник странной себестоимости.

Отрицательные остатки удобны, когда кладовщик не успевает оформить приход до выдачи со склада, особенно в конце месяца. Но они ломают расчёт: пока остатка нет, системе неоткуда взять цену для списания, и она берёт оценочную. Когда приход потом оформляют, система вынуждена пересчитать все списания в минус. Для партий в v15 есть отдельный флажок Allow Negative Stock for Batch, и в его описании прямо сказано, что он может давать неверные ставки оценки. Я рекомендую не включать эту настройку и приучить склад оформлять приход вовремя.

Заморозка периода работает как замок на дверях закрытого месяца. Дата в Stock Frozen Up To не даёт провести движение раньше неё, а роль из Role Allowed to Edit Frozen Stock может это обойти. Назначьте эту роль одному человеку, а не всему складу, и после каждого закрытого периода двигайте дату вперёд. | Настройка | Что делает | Риск при неверном значении | |---|---|---| | Allow Negative Stock | разрешает минус на складе | себестоимость списаний пересчитывается позже | | Stock Frozen Up To | запрещает проводки на старые даты | без неё задним числом правят закрытые периоды | | Роль для правки замороженного | разрешает исключения | при широком круге владельцев роли замок бесполезен |

Если после включения минуса или проводок задним числом вы увидели расхождения между отчётами по объекту и по складу, начинайте с Stock Ledger Variance Report и только потом правьте руками. Ручные правки журнала я не рекомендую никогда: поправленный вручную остаток хорошо выглядит неделю, а потом ломает очередной пересчёт.

Как «Асфальт-Регион Центр» выбирал метод оценки на 21 рабочее место

Условный пример, цифры вымышленные. Подрядчик по дорожным работам «Асфальт-Регион Центр» имеет 21 рабочее место: пять производителей работ, снабжение, два склада (базовый и объектный), ПТО, бухгалтерия. Основные материалы: щебень и песок, битумная эмульсия, арматура и сетка, расходники. До ERPNext себестоимость материала на объекте считали «по последней накладной», и объекты, стартовавшие в разное время, были несопоставимы.

Мы разбили номенклатуру на четыре группы и по каждой выбрали метод. Щебень и песок покупаются часто, цены прыгают, материал смешивается, значит, Moving Average. Битумная эмульсия закупается партиями под контракт, и цена партии важна для расчёта конкретного объекта: FIFO. Арматура и сетка: цены меняются быстро, партии неразличимы, Moving Average. Расходники: мелкие суммы, Moving Average без обсуждения. | Группа | Закупки | Разброс цен | Метод | Кто проверяет | |---|---|---|---|---| | Щебень, песок | частые | средний | Moving Average | снабженец | | Битумная эмульсия | под контракт | большой | FIFO | ПТО | | Арматура, сетка | частые | большой | Moving Average | снабженец | | Расходники | мелкие | малый | Moving Average | кладовщик |

Договорённости, которые помогли. Вернуться с Moving Average на FIFO после первых движений нельзя, поэтому группы утвердили до загрузки остатков. Документы вносят в день операции, а задним числом глубже трёх дней согласует главный инженер. Stock Frozen Up To сдвигают на последний день каждого закрытого месяца. Allow Negative Stock остаётся выключенным, а кладовщик отвечает за приход в день поставки.

Условный итог: расхождения между отчётом по объекту и остатком на складе в первый месяц были, но их искали по Stock Ledger Variance Report, а не руками. Что осталось нерешённым: доставка перевозчиком пока не попадает в стоимость материала, это отдельный этап проекта, и в расчёт прибыльности по объектам закладывается поправка вручную. Такие вещи нужно показывать заказчику сразу, а не после запуска.

Выбор метода оценки запасов по группам материалов дорожного подрядчика
Метод выбирают по группам до загрузки остатков.

Что сказать бухгалтеру: операционная оценка в ERPNext и регламентированный учёт в 1С

Бухгалтеру нужно сказать прямо: оценка запасов в ERPNext операционная, для управления объектами и закупками, а регламентированная остаётся в 1С. Метод, выбранный в ERPNext, не обязан совпадать с учётной политикой в 1С, но расхождение надо знать и объяснять, иначе в конце квартала управленческая и бухгалтерская себестоимости разойдутся без видимой причины.

Что я предлагаю согласовать письменно. Во-первых, какой метод у каких групп в ERPNext и почему. Во-вторых, какой метод закреплён в учётной политике в 1С и как он отличается. В-третьих, как часто сверяются остатки в количестве и в сумме и кто отвечает за расхождения. В-четвёртых, что считается закрытым периодом и кто имеет право его открыть.

Обмен между системами при этом идёт по документам: приходы и реализации передаются из ERPNext в 1С после согласования, а данные о себестоимости остаются в системе, где они считаются. Прямая запись в базу 1С запрещена, обмен ведётся через HTTP-сервисы или REST/OData. О выборе системы учёта и о том, как делить зоны, я писал в материале про выбор системы учёта на Linux.

Для подрядчиков, которые хотят посмотреть склад и закупки в работе, мы показываем ERPNext под ключ на демостенде по запросу, и пример с FIFO и скользящей средней можно воспроизвести за десять минут. Общий разбор возможностей системы для производственных задач есть в обзоре ERPNext для производства, а про учёт на складе с терминалом сбора данных пригодится материал про ТСД на складе и интеграцию с 1С.

Частые вопросы

Какой метод оценки запасов лучше выбрать в ERPNext для стройки?

Для материалов с частыми закупками по разным ценам, которые смешиваются на складе, я обычно беру Moving Average: себестоимость пересчитывается при каждом поступлении, учёт проще. FIFO оставляю для партий, где цена конкретной поставки важна. Метод решают до загрузки остатков, а не после первых движений.

Можно ли поменять метод оценки после того, как появились проводки?

По документации ERPNext, для позиций с движениями можно перейти с FIFO на Moving Average, а обратно нельзя. Смена применяется к последующим списаниям, а проводка задним числом пересчитает всё, что идёт после неё. Менять метод стоит на копии базы и вместе с бухгалтером.

Что такое Repost Item Valuation в ERPNext?

Фоновый документ, который пересчитывает записи журнала склада с определённой даты и обновляет оценку по методу позиции. Создаётся автоматически при проводке задним числом, вручную задаётся по компании, позиции, складу и дате начала. Тяжёлые пересчёты лучше запускать вне рабочих часов и ограничивать по складу.

Почему в ERPNext не рекомендуют проводить документы задним числом больше чем на месяц?

Документация Stock Reposting Settings советует ограничивать проводки задним числом одним месяцем: пересчёт идёт по всей цепочке последующих движений и может упереться в лимит времени (1500 секунд) или узкое окно пересчёта. Для запрета старых дат используют Stock Frozen Up To в Stock Settings.

Что делать, если остаток ушёл в минус?

Allow Negative Stock ломает корректную оценку: списание идёт по оценочной цене, а потом пересчитывается. Для партий в v15 есть отдельный флажок Allow Negative Stock for Batch, его тоже лучше держать выключенным. Лучше не включать настройку, вовремя оформлять приход, а расхождения искать отчётом Stock Ledger Variance Report.

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

Источники

© ООО «АйТи-Фреш» · Москва · Все статьи