Эта инструкция пригодится руководителю или менеджеру, который заказывает автоматизацию расчёта стоимости и коммерческого предложения. На показе удобно проверить, как заполняются поля и выглядит документ. Для приёмки дополнительно нужны заранее известные ответы: какую сумму должна выдать программа, какие правила применить и что передать в КП.
Ниже — полностью учебный пример. Компания, заказ, цены и правила придуманы для разбора. Это не клиентский кейс, не условия продажи и не измеренная экономия. По примеру можно составить собственную таблицу проверок и обсудить её с разработчиком до сдачи работы.
Условная компания считает стоимость модульных стоек. В одном заказе — одинаковые изделия. Для упражнения договоримся о следующих правилах:
Параметр: Цена изделия; Учебное правило: 10 000 ₽
Параметр: Количество; Учебное правило: Целое число от 1
Параметр: Подготовка заказа; Учебное правило: 5 000 ₽ один раз на заказ
Параметр: Доставка; Учебное правило: 2 000 ₽ один раз на заказ
Параметр: Скидка; Учебное правило: До 6 изделий — 0%; от 6 до 9 — 3%; от 10 — 5%
Параметр: База скидки; Учебное правило: Только стоимость изделий; подготовка и доставка в неё не входят
Параметр: Округление; Учебное правило: Сумму скидки округляем до копеек; половину копейки — вверх
Итог равен стоимости изделий за вычетом скидки плюс подготовка и доставка. Здесь нет других начислений. В реальной задаче отдельно перечислите все составляющие, которые входят в сумму, и условия их применения.
Особенно полезно записывать слова «один раз», «начиная с» и «только». Они определяют поведение расчёта. Фраза «скидка при большом заказе» не задаёт ни порог, ни базу. Формулировка «при количестве от 6 до 9 включительно скидка составляет 3% от стоимости изделий» задаёт проверяемый ответ.
У правил должен быть ответственный со стороны заказчика. Разработчик может обнаружить противоречие, но выбор между двумя коммерческими правилами остаётся за человеком, который отвечает за расчёт.
Возьмём шесть изделий. Ожидаемый результат вычисляем до проверки программы:
Изделия: 6 × 10 000 = 60 000 ₽.
Скидка: 60 000 × 3% = 1 800 ₽.
После скидки: 60 000 − 1 800 = 58 200 ₽.
Подготовка и доставка: 5 000 + 2 000 = 7 000 ₽.
Итог: 58 200 + 7 000 = 65 200 ₽.
Теперь рассмотрим конкретную ошибку: скидку применили ко всему заказу, включая подготовку и доставку. Получится 67 000 × 0,97 = 64 990 ₽. Разница с согласованным ответом — 210 ₽.
Оба результата могут выглядеть убедительно в аккуратном документе. Проверка по заранее записанной базе скидки позволяет определить, какой из них соответствует заданию. Поэтому в таблице приёмки стоит хранить состав суммы вместе с итогом: стоимость изделий, процент и сумму скидки, отдельные начисления.
Ожидаемый ответ нельзя получать из той же проверяемой программы. Для этого упражнения достаточно ручной арифметики. В рабочей задаче источник может быть другим, но он должен иметь понятные правила и быть согласован ответственным за расчёт. Старый файл, в котором правила никто не проверил, сам по себе не становится эталоном.
Один удачный заказ ещё не проверяет переход между правилами. Для учебной формулы составим короткую матрицу. Цена, подготовка и доставка во всех строках одинаковые.
Количество: 5; Стоимость изделий: 50 000 ₽; Скидка: 0 ₽; Подготовка и доставка: 7 000 ₽; Ожидаемый итог: 57 000 ₽
Количество: 6; Стоимость изделий: 60 000 ₽; Скидка: 1 800 ₽; Подготовка и доставка: 7 000 ₽; Ожидаемый итог: 65 200 ₽
Количество: 9; Стоимость изделий: 90 000 ₽; Скидка: 2 700 ₽; Подготовка и доставка: 7 000 ₽; Ожидаемый итог: 94 300 ₽
Количество: 10; Стоимость изделий: 100 000 ₽; Скидка: 5 000 ₽; Подготовка и доставка: 7 000 ₽; Ожидаемый итог: 102 000 ₽
Количество: 11; Стоимость изделий: 110 000 ₽; Скидка: 5 500 ₽; Подготовка и доставка: 7 000 ₽; Ожидаемый итог: 111 500 ₽
Пары 5/6 и 9/10 проверяют пороги, а строка с 11 изделиями — продолжение последнего диапазона. Если в проекте есть минимальная сумма, упаковки или отдельные условия доставки, для каждого такого правила добавьте проверку непосредственно до границы, на ней и после неё.
Отдельный пример нужен для округления. Специально заменим учебную цену изделия на 1 000,01 ₽ и возьмём десять штук. Изделия стоят 10 000,10 ₽. Скидка 5% равна 500,005 ₽; по выбранному правилу она округляется до 500,01 ₽. Итог с подготовкой и доставкой — 16 500,09 ₽.
Этот ответ относится к заданному порядку действий. Если стороны решили округлять иначе, сначала измените письменное правило и ожидаемые значения, затем проверяйте реализацию. Разные способы округления нельзя оставлять на усмотрение отдельных экранов и документов.
Наша система сама подберет вам исполнителей на услуги, связанные с разработкой сайта или приложения, поисковой оптимизацией, контекстной рекламой, маркетингом, SMM и PR.
Заполнить заявку
13818 тендеров
проведено за восемь лет работы нашего сайта.
Следующая проверка соединяет расчёт и документ. Для учебного заказа сохраним версию А: шесть изделий, итог 65 200 ₽. Затем создадим версию Б с десятью изделиями и итогом 102 000 ₽.
При выгрузке версии Б в КП должны попасть десять изделий, скидка 5% и сумма 102 000 ₽. Если на экране уже новая сумма, а в документе осталось 65 200 ₽, связь между версиями нарушена. Намеренная выгрузка старой версии А при этом должна давать её собственные данные — шесть изделий и 65 200 ₽.
Для сравнения достаточно открыть рядом расчёт и итоговый документ и сверить:
номер заказа и обозначение версии;
количество, единицы измерения и цену;
основание скидки, её процент и сумму;
отдельные начисления и итог;
применённый прайс и существенные условия расчёта.
Проверяйте именно полученный файл. В предпросмотре могут помещаться длинные названия и примечания, а в выгрузке — обрезаться. Для этого добавьте в учебный документ длинное название позиции и несколько строк условий. Убедитесь, что текст читается, строки не пропали, а сумма сохранилась.
В нашем упражнении согласуем сохранение старых расчётов с их исходными ценами. Если цена изделия выросла до 10 500 ₽, прежняя версия А остаётся на 65 200 ₽. Новый расчёт на шесть изделий составит: 63 000 − 1 890 + 7 000 = 68 110 ₽. Пересчёт оформляется новой версией, которую можно отличить от прежней.
Это выбранный режим учебного задания. Для своей системы заранее решите, сохраняется ли снимок прайса, когда разрешён пересчёт и как пользователь видит замену цены. Самовольное обновление уже подготовленного предложения и незаметное сохранение устаревших цен — разные проблемы; ожидаемое поведение нужно описать для обеих ситуаций.
Такая проверка полезна и при изменении формул. Запишите, какие новые расчёты используют обновлённое правило и что происходит с ранее сохранёнными. Обозначение версии помогает понять, с каким набором правил сравнивать результат.
В учебном расчёте количество обязано быть положительным целым числом. Для нуля, отрицательного значения, пустого поля и числа 1,5 ожидаем понятное сообщение и запрет создания нового КП. Поле с ошибкой нельзя молча превращать в ноль или подменять прошлым значением.
Заранее определите, что пользователь увидит при ошибке после удачного расчёта. Например, старый результат может оставаться как сохранённая версия, но должен быть явно отделён от текущих некорректных данных. Иначе менеджер рискует выгрузить прежнюю сумму, считая её результатом нового ввода.
Если в объём входит создание записи или отправка уведомления, добавьте повторное нажатие и повтор запроса после обрыва связи. Для одного действия, которое по заданию должно создать одну запись, ожидается один результат. Намеренное создание новой версии нужно отличать от случайного дубля. В проверке уведомлений используйте учебный адрес или отдельный тестовый канал, без реальных клиентских контактов.
Если сохранение и уведомления не входят в заказанный этап, не изображайте их проверенными. Отметьте границу работы и проверяйте только согласованные функции.
Проводите приёмку в той роли, в которой программой будут пользоваться. Пусть менеджер сам введёт параметры и получит документ. Если каждый обычный заказ требует исправления формулы разработчиком, это отдельное замечание к согласованному пользовательскому пути.
Для каждой проверки сохраните четыре вещи: входные данные, ожидаемый ответ, фактический ответ и версию программы. При расхождении добавьте короткое воспроизведение. Например: «Версия Б, 10 изделий; на экране 102 000 ₽, в выгруженном КП 65 200 ₽». По такой записи понятно, что исправлять и как проверить исправление.
Спор о самом правиле отделяйте от ошибки реализации. Если после просмотра стороны решили предоставлять скидку ещё и на подготовку, это меняет согласованную формулу и контрольные ответы. Если формула осталась прежней, а программа считает иначе, исправляется реализация. Решение фиксируется до повторной проверки.
После правки повторите проблемный пример и связанные с ним случаи. Исправление скидки на десяти изделиях стоит проверить также на девяти и одиннадцати; изменение выгрузки — на старой и новой версиях документа. Исправленная строка сама по себе не подтверждает работу соседних правил.
☐ Описан один согласованный вид расчёта, его входы и результат.
☐ Указаны единицы, допустимые значения и обязательные поля.
☐ Определены база скидки, пороги, начисления и порядок округления.
☐ Есть заранее согласованные контрольные ответы, полученные отдельно от проверяемой программы.
☐ Пройдены обычный заказ, границы диапазонов и пример с дробными суммами.
☐ Ошибочный ввод не создаёт новое КП с незаметно устаревшим итогом.
☐ В полученном документе совпадают версия, параметры, состав суммы и итог; текст не обрезан.
☐ Проверены согласованные режимы смены прайса и формул.
☐ Для включённых в объём сохранения и уведомлений проверены повторные действия без случайных дублей.
☐ Обычный пользователь проходит путь самостоятельно, без изменения кода.
☐ Замечания исправлены или явно оставлены открытыми; повторная проверка имеет результат.
☐ Определено, кто меняет цены, кто согласует правила и какие изменения требуют отдельной проверки.
Начать можно с одного типового заказа: запишите его правила, вручную получите итог и выберите ближайшую границу, на которой правило меняется. Это даст конкретный материал для обсуждения с разработчиком. Затем расширьте проверки до всех согласованных условий и сверьте полученное КП с той версией расчёта, для которой оно создано.