Единицы измерения и возвраты в ERPNext: коробки и штуки
АйТи Фреш
IT-аутсорсинг и бизнес

Купили коробками, списываем штуками: единицы измерения и возвраты в ERPNext без путаницы на складе

Автор: , директор ООО «АйТи-Фреш» · · ~13 мин чтения
Коробка плитки, выложенная отдельными плитками, и бухта кабеля на весах: закупка целым, учёт в долях
Закупка идёт в одних единицах, а учёт и списание — в других.

Закупку в коробках и списание в штуках в ERPNext настраивают в карточке Item: складская единица плюс таблица коэффициентов UOM Conversion Factor. Возврат оформляют отдельными документами: Purchase Return, Credit Note с Update Stock или обратным Stock Entry. Ниже настройки, ловушки и условный пример со склада плитки.

Как закупать в одних единицах, а хранить в других: UOM Conversion Factor

Склад ведут в одной единице, а покупают в другой почти везде: плитку — коробками, а считают метрами, кабель — бухтами, а отпускают метрами, саморезы — упаковками, а выдают штуками. Если система этого не умеет, кладовщик пересчитывает на калькуляторе, и ошибки накапливаются. В решении на ERPNext я решаю это на уровне карточки номенклатуры и не пишу ни строки кода: единицы и коэффициенты настраиваются штатно.

Устройство такое. В карточке Item задаётся складская единица (поле stock_uom), в которой система хранит остатки и ведёт складскую книгу Stock Ledger. Рядом есть закупочная (purchase_uom) и продажная (sales_uom) единицы, а в таблице uoms (дочерний DocType UOM Conversion Detail) для каждой дополнительной единицы указан коэффициент пересчёта. По коду version-15 в этой таблице обязательна сама единица, а для складской единицы коэффициент строго равен 1: при другом значении система выдаст ошибку. Пример: складская единица Nos (штуки), дополнительная Box с коэффициентом 12 — то есть 1 коробка равна 12 штукам.

Что происходит в документах. В заказе поставщику вы выбираете единицу Box и количество 10, система берёт коэффициент из карточки и считает складское количество: 120 штук. В складской книге остаток появляется именно в штуках. Когда прораб получает материал по заявке и списывает его на объект документом Stock Entry с типом Material Issue, он работает уже в штуках: например, списывает на объект 36 штук из 120, то есть три коробки, не думая о коробках. Это и есть то, что нужно: снабженец оперирует тем, что видит в счёте поставщика, а склад и объект — тем, что можно пересчитать руками.

Важное условие порядка. Складскую единицу меняют только до первых движений. Код version-15 прямо запрещает менять stock_uom у номенклатуры, по которой уже есть записи складской книги: сообщение гласит, что для другой единицы придётся создать новую номенклатуру. Поэтому единицу выбирайте до загрузки остатков и подумайте дважды: плитка в квадратных метрах или в штуках? Правильный выбор — та единица, в которой вы будете списывать и считать остаток на объекте, а не та, в которой выставлен счёт.

Где в документах ERPNext видна закупочная единица, а где складская

В строке заказа поставщику есть несколько связанных полей: количество и единица закупки (qty, uom), коэффициент пересчёта (conversion_factor), складская единица (stock_uom) и количество в ней (stock_qty). Складское количество и единица в описании поля помечены как обязательные и вычисляются системой, а коэффициент подтягивается из карточки номенклатуры. Если закупочная единица совпадает со складской, коэффициент равен единице и вы ничего не замечаете.

Таблица показывает, где какую единицу видит каждая роль. Она же — текстовая версия схемы «одна позиция, две единицы» ниже (числа условные). | Документ | В какой единице количество | Кто смотрит | |---|---|---| | Заявка (Material Request) | в единице строки заявки | прораб | | Заказ поставщику (Purchase Order) | закупочная, например Box | снабженец | | Приёмка (Purchase Receipt) | закупочная, плюс складское количество | кладовщик | | Складская книга (Stock Ledger) | только складская, например Nos | кладовщик, бухгалтер | | Списание на объект (Material Issue) | складская | прораб |

Два флага в настройках склада регулируют строгость. Первый — «Allow UOM with Conversion Rate Defined in Item» (по описанию в коде: если включить, система разрешает выбирать в закупках и продажах только те единицы, коэффициент которых задан в карточке номенклатуры). Я включаю его всегда: так сотрудник не выберет случайную единицу и не получит неожиданный пересчёт. Второй флаг мы обсудим в следующем разделе.

Типичная жалоба «в приёмке 8, а на складе 96» — не ошибка системы, а разные единицы в разных строках одной цепочки. Смотрите колонку единицы и коэффициент: если коэффициент 12, а вы ожидали 1, значит, в карточке стоит дополнительная единица, и документ считает по ней. Это самая частая причина вопросов к кладовщику в первую неделю после запуска.

Что делать, если коэффициент неточный: ручная правка количества на складе

Коэффициент хорош, пока он точный. Но в коробке бывает 11 или 13 штук, в мешке затирки — 24,5 килограмма вместо 25, а в бухте кабеля — 303 метра вместо 305. Если жёстко пересчитывать по коэффициенту, складской остаток начнёт расходиться с реальным, и разница вылезет на инвентаризации.

Для этого в Stock Settings есть две опции: «Allow to Edit Stock UOM Qty for Purchase Documents» и такая же для продаж (поля allow_to_edit_stock_uom_qty_for_purchase и allow_to_edit_stock_uom_qty_for_sales; по умолчанию обе выключены). Если включить опцию для закупок, кладовщик при приёмке сможет вручную поправить складское количество в строке и не менять коэффициент для всей номенклатуры. Количество в закупочной единице при этом остаётся прежним, а коэффициент в этой строке система пересчитывает сама как складское количество, делённое на закупочное: пришло 10 коробок, в штуках записано 118, потому что две коробки оказались неполными, и в строке будет коэффициент 11,8, а в карточке номенклатуры останется 12.

Мой подход к опции осторожный. Она размывает контроль: любой, кто видит поле, может «подогнать» остаток. Поэтому я включаю её только для закупок, а не для продаж, ограничиваю правами роли кладовщика и фиксирую в регламенте: правка допустима только с пометкой в комментарии документа. Если расхождения систематические (всегда на две штуки меньше), правильное решение — поменять коэффициент в карточке, а не править каждую приёмку.

Есть и третий путь для россыпных материалов: вообще не использовать коробку как единицу учёта, а закупать в штуках, указывая в описании «упаковка 12 шт». Он проще, но теряет удобство: снабженец не видит, сколько коробок заказал. Выбирайте по тому, что для вашей компании важнее: простота склада или удобство снабжения.

Возврат от покупателя или излишков с объекта: Credit Note и галочка Update Stock

Возвраты — три разных сюжета с тремя разными документами, и их часто путают. Первый: покупатель вернул товар. В ERPNext это документ Sales Invoice с признаком возврата (в описании поля is_return у него значение Is Return (Credit Note)) или возврат по накладной Delivery Note. По документации, из проведённого счёта создаётся «Return / Credit Note», количества вводятся отрицательными, а чекбокс Update Stock включают только тогда, когда товар физически возвращается именно через этот документ. Если вернули по отдельной накладной, Update Stock отключают, иначе остаток увеличится дважды.

Второй сюжет — возврат поставщику. Документация описывает два пути: из проведённой приёмки (Create, Purchase Return) или из счёта поставщика (Return / Debit Note). В первом случае при проведении система уменьшает остаток на складе по цене исходной приёмки, и у приёмки обновляется поле возвращённого количества; при полном возврате статус приёмки становится Return Issued, а если по приёмке уже полностью выставлен счёт поставщика (fully billed), статус остаётся Completed. Во втором случае дебетовая нота меняет склад, только если в ней включён Update Stock. Такое же правило, как у покупателя: товар должен идти через один документ, а не через два.

Третий сюжет — излишки на объекте. Прораб заказал с запасом и хочет вернуть остаток на центральный склад. Деньги тут не движутся, поэтому нужен не возврат, а обратное перемещение: документ Stock Entry с типом Material Transfer со склада объекта на центральный. Остаток объекта уменьшается, центрального растёт, а поставщик и счёт не участвуют. Путаница возникает, когда сотрудники оформляют это как возврат поставщику, и тогда по бухгалтерии получается долг, которого нет.

Схема выбора в виде таблицы: | Кто вернул | Документ | Что меняется | |---|---|---| | Покупатель | Sales Invoice: Return / Credit Note, при необходимости Update Stock | дебиторка уменьшается, склад растёт при включённом Update Stock | | Мы поставщику | Purchase Return по приёмке или Debit Note по счёту | склад уменьшается, кредиторка уменьшается | | Объект на склад | Stock Entry: Material Transfer | склад объекта уменьшается, центральный растёт |

Как «Керамика Север Опт» учла плитку в коробках и квадратных метрах на 24 рабочих места

Условный пример: оптовый поставщик отделочных материалов «Керамика Север Опт», 24 рабочих места. Плитку закупали коробками, продавали квадратными метрами, остатки на складе кладовщики считали штуками, и три сотрудника держали у себя три таблицы пересчёта. Затирку покупали мешками, продавали килограммами; профиль — упаковками, продавали штуками. Числа в примере иллюстративны.

Мы завели для каждой группы номенклатуры схему единиц. Для плитки складская единица — квадратный метр, закупочная — коробка с коэффициентом 1,44 (в одной коробке 1,44 м²), продажная — квадратный метр. Для затирки складская — килограмм, закупочная — мешок с коэффициентом 25. Для профиля складская — штука, закупочная — упаковка с коэффициентом 10. Флаг «Allow UOM with Conversion Rate Defined in Item» включили, чтобы никто не выбрал единицу вне таблицы.

Ручную правку складского количества включили только для закупок и только роли старшего кладовщика: у затирки реальный вес мешка отличался от паспортного. Возвраты от покупателей пошли через Credit Note с включённым Update Stock, если товар приезжал на склад, а возвраты поставщику — через Purchase Return по приёмке. С излишками из торговых точек работали через Material Transfer.

Что осталось под вопросом, о чём мы предупредили заказчика. Скидки поставщиков считались за коробку, а не за квадратный метр, и для нескольких позиций цену в закупочной и складской единицах пришлось сверять вручную. Кроме того, мы заложили проверку на стенде: закупка в альтернативной единице с коэффициентом не 1:1 может давать расхождение суммы в контроле бюджета, и этот сценарий мы прогнали отдельно на тестовой заявке. Посмотреть настройку на демо-данных можно на демостенде erp-demo.itfresh.ru по запросу.

Где ломается учёт единиц: бухты кабеля, бюджет и альтернативная единица

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

Второе — бюджет. Контроль бюджета сравнивает с лимитом сумму документа, а сумма строится из количества, коэффициента и цены за единицу; если цену ввели за штуку, а количество в коробках, сумма в бюджете может разойтись с суммой заказа. Это не подтверждённый факт, а пункт проверки: если вы используете Budget, прогоните тестовую заявку в коробках и убедитесь, что сумма в бюджете совпадает с суммой заказа.

Третье — единицы после начала работы. Раз складская единица закрыта для изменения после первых проводок, ошибку выбора единицы нельзя исправить обычной правкой карточки: придётся заводить новую номенклатуру и переносить остатки. Дешевле проверить на пилоте, чем исправлять на боевой базе.

Четвёртое — отчёты. В отчётах по складу количество показывается в складской единице, а в закупочных документах — в закупочной, и директор, привыкший к коробкам, будет путаться. Я выношу в сводку обе колонки или добавляю пояснение «в штуках». О ТСД и обмене с 1С, где единицы тоже важны, у нас есть статья ТСД на складе и интеграция с 1С, а о том, как выглядит склад в другой системе, — кейс по Odoo, CRM и складу в оптовой торговле. Когда ERPNext для склада не подходит: если вам нужна сложная работа с адресным хранением и сканерами «из коробки», сравните системы на пилоте, а не по описаниям.

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

Как в ERPNext закупить товар коробками, а списывать штуками?

В карточке Item задайте складскую единицу (stock_uom), например Nos, и в таблице UOM Conversion Detail добавьте Box с коэффициентом 12. В заказе поставщику выберите Box, а Stock Ledger будет вестись в штуках автоматически. Для складской единицы коэффициент всегда равен 1.

Что делать, если коэффициент пересчёта неточный?

В Stock Settings есть опции Allow to Edit Stock UOM Qty для закупок и для продаж, по умолчанию выключенные. Если включить первую, кладовщик при приёмке вручную поправит складское количество. Используйте осторожно: ограничьте права и требуйте комментарий, а при систематических расхождениях лучше изменить коэффициент.

Как вернуть поставщику часть материалов в ERPNext?

Из проведённой приёмки выберите Create, Purchase Return или оформите Return / Debit Note по счёту поставщика. Приёмка уменьшит остаток по цене исходного поступления, а дебетовая нота меняет склад только при включённом Update Stock. Проверьте поведение на тестовых данных своей версии.

Как оформить возврат от покупателя в ERPNext?

Из проведённого Sales Invoice создайте Return / Credit Note, введите отрицательные количества и включите Update Stock, только если товар возвращается физически через этот документ. Если возврат уже оформлен накладной, Update Stock отключают, иначе остаток увеличится дважды, а долг покупателя уменьшится.

Можно ли вернуть излишки с объекта на центральный склад?

Да, обратным перемещением: документ Stock Entry с типом Material Transfer со склада объекта на центральный. Остаток объекта уменьшается, центрального растёт, поставщик и счёт в операции не участвуют. Возвратом поставщику это оформлять не нужно, иначе в учёте появится несуществующий долг.

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

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

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

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

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

Источники

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