Материал статьи

В карточке ткани цена указана за метр, поле количества разрешает только целые числа, а склад хранит остаток в рулонах. Покупатель хочет 2,5 метра, менеджер вручную пересчитывает заявку, и в заказе появляется сумма, которой не было на экране. Дробные товары не становятся обычными штучными товарами от добавления запятой в форму. Для них нужно согласовать единицы, точность, способ отгрузки и момент, когда количество становится окончательным.

Иллюстрация: продажа ткани связывает длину отреза с единицей цены

Иллюстрация: продажа ткани связывает длину отреза с единицей цены.

Оглавление

Под одним дробным количеством скрываются разные продажи

Отрез ткани известной длины, овощи с окончательным весом после сборки и плитка, отпускаемая целыми коробками, требуют разных сценариев. В первом случае клиент задаёт измеряемую длину. Во втором — ориентир, который уточнят при комплектации. В третьем — потребность в площади, из которой магазин рассчитывает допустимое число упаковок. Одно поле «Количество» не объясняет эти различия.

Сначала ответьте, что именно выбирает покупатель. Точную величину к отгрузке, желаемый ориентир, число готовых упаковок или задачу, для которой нужен расчёт? Если это не определено, сайт начнёт обещать точность, которую склад физически не обеспечивает. Для товара с переменным весом нельзя показывать предварительную сумму как окончательную без пояснения порядка уточнения.

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

Не объединяйте модели ради одинаковых карточек. Одинаковый визуальный ритм каталога полезен, но подписи и действия должны соответствовать реальной продаже. «Отрезать 2,5 м», «Подобрать около 1 кг» и «Заказать 3 коробки» — разные обещания. Их можно оформить в одной дизайн-системе, не стирая смысловых различий.

Единица цены, продажи и хранения

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

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

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

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

Шаг заказа не равен числу знаков после запятой

Поле может разрешать два десятичных знака, но это не означает, что магазин отгружает любые сотые доли. Если ткань режут с шагом десять сантиметров, количество 2,35 метра недопустимо, хотя формат числа корректный. Точность хранения, точность измерения и допустимый шаг заказа — три разных ограничения.

Определите минимальное количество и ряд разрешённых значений. Для условного отреза от 0,5 метра с шагом 0,1 метра подходят 0,5; 0,6; 0,7 и далее. Если технология требует особого первого значения или допускает остаточные отрезы, оформите это отдельным правилом. Не заставляйте пользователя угадывать допустимое число через последовательность ошибок.

Нормально принимать и запятую, и точку, если после разбора результат однозначен и понятен. Но интерфейс должен показывать выбранный формат последовательно. Строки «1.000» и «1,000» в разных локалях могут означать разные величины. При сомнительном вводе лучше запросить уточнение, чем отрезать человеку в тысячу раз больше материала.

Кнопки увеличения и уменьшения должны использовать реальный шаг, а ручной ввод — проверяться теми же правилами. После ввода недопустимого значения предложите ближайшие варианты с указанием итоговой цены. Не округляйте автоматически вверх только потому, что это удобно продавцу. Для дорогого материала разница в несколько десятых может быть существенной.

Фактический вес нужно отличать от заказанного ориентировочного количества

Фактический вес нужно отличать от заказанного ориентировочного количества.

Деньги считайте по согласованной точности

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

Рассмотрим учебный расчёт без скидок: 2,5 метра по 640 рублей за метр стоят 1 600 рублей. Этот пример прост. Сложности начинаются, когда цена задана с дополнительными знаками, количество имеет тысячные доли, а скидка применяется к строке или ко всему заказу. Здесь нужно заранее решить, округляется ли промежуточная величина или только сумма, подлежащая оплате.

Не объявляйте один алгоритм универсальным для любых учётных и платёжных документов. Правила должны совпадать с вашей кассовой, бухгалтерской и платёжной интеграцией; требования к оформлению проверяет профильный специалист. Задача сайта — не изобретать собственную финансовую арифметику, а воспроизводить согласованный расчёт и объяснять его покупателю.

Проверяйте расхождение между суммой видимых строк и общим итогом. Если покупатель складывает отображённые суммы и получает другое число, интерфейс требует пояснения или изменения алгоритма представления. Особенно заметны такие ошибки в больших B2B-заказах. Не прячьте их за фразой «расчёт выполняется автоматически»: автоматический расчёт тоже должен быть проверяемым.

Заказанный и фактический вес — разные поля

При весовом товаре до сборки может быть известен только ориентир. Сохраните отдельно желаемое количество, допустимые отклонения, фактически собранное количество и статус его подтверждения. Если перезаписывать одно поле, исчезнет понимание, что просил клиент и почему изменилась сумма. Поддержка не сможет восстановить ход заказа без звонка сборщику.

Условный пример: покупатель просит около одного килограмма яблок, а сборка даёт 1,08 килограмма. При цене 200 рублей за килограмм предварительная сумма — 200 рублей, фактическая — 216 рублей. Эти числа иллюстрируют разницу, а не задают допустимое отклонение для любого магазина. Допуск и порядок согласования нужно определить и показать до оформления.

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

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

Предварительная сумма и оплата

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

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

В интерфейсе полезно разделить состояния: заказ принят, количество уточняется, итог согласован, платёж подтверждён, заказ передан в доставку. Не все магазины нуждаются в одинаковом числе статусов, но эти события нельзя бездумно объединять. Сообщение «успешно оплачено» не должно появляться только потому, что покупатель отправил форму с ориентировочным весом.

Письмо, кабинет и экран оформления должны использовать одинаковые названия сумм. Если на сайте написано «предварительно», а в письме — «итого к оплате» без оговорки, клиент получает противоречие. Согласуйте этот путь с остальным оформлением заказа, включая отмену, недоступность товара и повторный вход в кабинет.

Почему общий метраж не гарантирует нужный отрез

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

Сначала выясните, можно ли объединять куски для задачи покупателя. Кабель, плинтус, ткань и упаковочный материал имеют разные требования. Если клиенту нужен непрерывный отрез, это должно быть частью заказа. Если допустимы несколько частей, укажите их количество и длины до подтверждения. Не подменяйте один длинный кусок несколькими короткими под общей строкой.

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

Малые остатки можно продавать отдельными позициями, если это соответствует модели бизнеса. Тогда у покупателя появляется конкретный отрез с известной длиной, а не загадочная скидка на общий товар. Важно не смешивать такие позиции с обычным заказом на произвольный метраж: размер остатка фиксирован, и выбор количества может быть лишним.

Два коротких остатка не заменяют один непрерывный отрез

Два коротких остатка не заменяют один непрерывный отрез.

Как выглядит понятная карточка дробного товара

Рядом с ценой покажите единицу, рядом с вводом — допустимый шаг и минимум, рядом с итогом — фактический объём покупки. Если есть упаковка, сообщите её состав. Если количество предварительное, обозначьте это обычным заметным текстом. Не складывайте все условия в длинный абзац под характеристиками, до которого большинство покупателей не дойдёт.

Для материала полезен небольшой расчёт непосредственно после ввода. Например: «2,5 м × 640 ₽/м = 1 600 ₽». Для коробок: «3 коробки, всего 6 м²». Это разные представления одной задачи — связать введённое желание с тем, что будет отгружено. Такой расчёт не должен включать непроверенные рекомендации по монтажу или запасу материала.

В описании товара объясните физические ограничения: ширину рулона, способ измерения, комплектность и особенности варианта. Не рассчитывайте, что единица «метр» сама подскажет площадь или ширину. Погонный метр материала фиксированной ширины и квадратный метр — не взаимозаменяемые названия.

Фотография помогает представить товар, но не определяет количество. Если показан большой рулон, подпись должна исключать впечатление, что указанная цена относится ко всему рулону. Декоративная упаковка в кадре тоже не должна создавать обещание комплекта. Проверяйте карточку глазами человека, который не знает внутренней системы единиц магазина.

Склад, сайт и CRM должны видеть один смысл

Передавайте в заказ не только число, но и единицу, выбранный вариант, коэффициент преобразования и необходимые ограничения. Если CRM получает «2,5» без пояснения, менеджер вынужден угадывать: это метры, килограммы или упаковки. Число само по себе не является полноценной позицией заказа.

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

Если сборщик меняет фактический вес, зафиксируйте событие и его основание. Кто измерил, когда, какую величину заменил и прошла ли проверка допуска? Эти сведения не обязательно показывать целиком покупателю, но они нужны операционной команде. Изменение должно обновлять связанные суммы согласованно, а не ждать ручной правки в трёх системах.

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

Тесты, которые ловят дорогие мелочи

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

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

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

Не забудьте старую корзину после изменения упаковки и повторный заказ после изменения единицы продажи. Проверьте мобильную клавиатуру и чтение подписей вспомогательными технологиями. Если пользователь слышит только «поле количества», но не единицу и шаг, интерфейс теряет ключевую информацию, даже когда все вычисления верны.

С чего начать, если сейчас всё пересчитывает менеджер

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

Первый этап может ограничиться точным количеством и фиксированной единицей, если именно это решает основную проблему. Переменный вес, раскрой по нескольким рулонам и сложные упаковочные коэффициенты добавляют отдельными согласованными сценариями. Временное ограничение функции лучше, чем интерфейс, который принимает любое число, а затем перекладывает все решения на сотрудника.

После запуска смотрите на долю ручных пересчётов, расхождения сумм, отказы из-за неподходящего отреза и обращения о единицах. Уменьшение числа вопросов полезно, но не должно достигаться скрытием деталей. Проверяйте, что клиент получает именно тот объём и формат товара, который видел при подтверждении.

В разработке интернет-магазина продажа на вес и метраж начинается не с десятичной клавиатуры. Сначала определяют физический товар и правила измерения, затем расчёт и обмен, и только после этого — форму выбора. Когда эти части согласованы, запятая в количестве перестаёт быть исключением, требующим звонка менеджеру.