04 мая 2025 г.·7 мин

Шаблон приложения для заявок на закупку: согласования и формирование заказов (PO)

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

Шаблон приложения для заявок на закупку: согласования и формирование заказов (PO)

Что должно исправить внутреннее приложение для запросов закупок

Почтовые цепочки и таблицы терпят одни и те же предсказуемые неудачи. Запросы зарываются, файлы расползаются по версиям вроде "final_v7", а согласования происходят в личных чатах без записи. Когда кто-то спрашивает: "Можно ли это покупать?", ответ зависит от того, кто сейчас онлайн и какой таблице доверяют.

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

Минимум, на который каждый запрос должен отвечать без поиска:

  • Кто владеет следующим шагом?
  • Что сейчас в ожидании (согласование, проверка бюджета, коммерческое предложение от поставщика, создание PO)?
  • Что было утверждено (сумма, поставщик, объем) и изменилось ли это?
  • Когда нужно получить и зачем?
  • Какой аудиторский след, чтобы финансы могли доверять данным?

Часто команды перегружают проект лишним функционалом. Решите заранее, охватываете ли вы только путь от запроса до заказа (PO) или также шаги после — сверку счетов и приёмку товаров. Запрос→PO обычно лучший первый ориентир: он заставляет делать чистые согласования и проверки бюджета, но сохраняет проект в пределах.

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

Если нужно быстро собрать это без написания кода, AppMaster — практичный вариант. Вы можете смоделировать данные запроса, настроить шаги согласования и сгенерировать готовое веб- и мобильное приложение из одного шаблона.

Пользователи, роли и правила доступа

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

Начните с чёткого наименования ролей. Названия отличаются по компаниям, но большинству нужны устойчивые обязанности: заявители (создают запросы и отвечают на вопросы), менеджеры (подтверждают необходимость и сроки), procurement/закупки (проверяют поставщиков и создают PO), финансы (подтверждают бюджет и политику) и один или несколько утверждающих (лицо с правом подписи). В некоторых сценариях добавляют ограниченный доступ для контактного лица поставщика для внешних данных.

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

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

Делегирование важно, потому что согласования не могут останавливаться, когда кто-то отсутствует. Поддерживайте плановое делегирование (отпуск) и аварийную замену (болезнь). Делегирование должно передавать права на утверждение, но не право переписывать сам запрос.

Часто встречаются межотделочные запросы (например, IT покупает ПО для маркетинга). Разделяйте «команду-заявителя» и «владельца центра затрат». Направляйте согласования владельцу центра затрат и показывайте оба поля в записи, чтобы было ясно, кто запросил и кто платит.

В AppMaster вы можете смоделировать роли, владение записями и действия по этапам в модели данных и бизнес-процессах, чтобы правила применялись одинаково в веб- и мобильных интерфейсах.

Модель данных: основные сущности и поля

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

Основные сущности, которые стоит включить

Большинство случаев покрывают небольшой набор сущностей:

  • Requests: одна запись на запрос закупки (шапка).
  • RequestItems: позиции, количество и ожидаемая цена за единицу.
  • Vendors: справочник поставщиков, используемый в запросах и PO.
  • Budgets: доступный лимит по центру затрат, проекту, отделу или периоду.
  • PurchaseOrders: формальный заказ, созданный из утверждённого запроса.
  • Approvals: каждый шаг согласования, решение и комментарий.

Поля, которые пригодятся позже

Для Requests включите поля, помогающие маршрутизации и сокращающие переписку: заявитель, отдел, центр затрат, дата необходимости, бизнес-обоснование и вложения (котировки, спецификации, скриншоты). Поле предпочитаемого поставщика помогает, даже если выбор окончательно подтверждается позже.

Статусы работают лучше, когда они явные и подкреплены временными метками. Держите одно поле статуса в Requests (Draft, Submitted, Approved, Rejected, Ordered, Closed) и храните ключевые даты: submitted_at, approved_at, rejected_at, ordered_at и closed_at. Это упрощает отчёты (время цикла, старение, узкие места) без гаданий по логам.

Для PurchaseOrders разделяйте шапку PO (номер, поставщик, ship-to, bill-to, условия оплаты) и позиции PO, и связывайте их с исходным запросом и позициями. Такая прослеживаемость важна, когда цены меняются.

Дизайн аудита

Согласования — ваш аудиторский след, но обычно нужно хранить больше, чем просто «approved/rejected». Фиксируйте, кто действовал, когда, какое было решение и почему.

Лёгкий подход — таблица Activity/Audit, записывающая actor_user_id, entity_type, entity_id, action, old_value, new_value и created_at. В AppMaster это удобно моделируется в Data Designer и может заполняться автоматически из бизнес-процессов, чтобы каждое изменение было отслежено.

Записи поставщиков и отслеживание коммуникаций

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

Начните с карточки поставщика, где хранятся повторно используемые данные: юридическое наименование, отображаемое имя, налоговый ID (если используется), валюты по умолчанию, адрес выставления счета и условия оплаты. Храните основной email для Accounts Payable и позволяйте добавлять несколько контактов, чтобы использовать нужного человека для котировок и отдельно — для счетов.

Добавьте статус поставщика, чтобы приложение могло последовательно блокировать рискованные покупки: Active (можно выбирать), Pending review (разрешено, но маршрутизируется на дополнительную проверку), Blocked (нельзя использовать без разбора).

Отслеживание коммуникаций решает проблему «кто последний писал поставщику?». Создайте сущность Communication (или VendorInteraction), связанную с Vendor и, по возможности, с конкретным Request, Quote или PurchaseOrder. Каждая запись должна фиксировать канал (email, звонок, встреча), направление (outbound/inbound), временную метку, владельца и краткое резюме. Если собираете котировки, храните их как структурированные записи (сумма, валюта, срок действия) и прикрепляйте файлы при необходимости.

Несколько правил, которые обычно сохраняют карточки поставщиков чистыми без замедления работы:

  • Выбирайте поставщика из списка, а не вводите свободным текстом.
  • Блокируйте условия оплаты после создания PO, если не требуется отдельное согласование.
  • Авто-маршрут Pending review поставщиков в procurement.
  • Для крупных покупок требуйте как минимум одной зафиксированной коммуникации и видимой истории котировок.

В AppMaster вы можете смоделировать Vendor, VendorContact и VendorCommunication в Data Designer и показать таймлайн на экране запроса и PO, чтобы вся история была доступна в один клик.

Проверки бюджета: как валидировать расходы до согласования

От запроса к заказу
Генерируйте заказы на покупку из утверждённых запросов и храните версии при изменениях.
Построить PO-процесс

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

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

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

Простейший чек-лист расчёта, который используют многие команды: сумма по позициям (qty x unit price), скидки, налоги, доставка и обработка, и конвертация валют (храните курс и дату курса). Затем сравните ожидаемую сумму с доступным бюджетом (budget минус уже зарезервированные суммы). Если вы учитываете обязательства, включайте в расчёт ожидаемые запросы и открытые PO, а не только оплаченные счета.

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

Пример: команда просит комплект ноутбука. Приложение считает стоимость с налогом и доставкой, конвертирует в валюту департамента и помечает, что доступно $900 при запросе $1,150. Если это предупреждение, запрос может пойти дальше к менеджеру, но тогда требуется одобрение финанса.

В AppMaster вы можете смоделировать источники бюджета в Data Designer и запускать проверку как шаг Business Process перед первым решением об утверждении.

Рабочие процессы согласований и правила маршрутизации

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

Начните с определения, что защищает каждое согласование. Часто это: одобрение менеджера (необходимость и приоритет), одобрение финансов (бюджет и учёт), и одобрение procurement (поставщик и метод покупки). Добавляйте безопасность и юридический контроль только для определённых категорий или поставщиков.

Правила маршрутизации должны быть предсказуемыми. Люди должны догадываться, что будет дальше, прежде чем нажать Submit. Типичные факторы маршрутизации: пороги по сумме, маршрутизация по категории (ПО к security, контракты к legal), уровень риска поставщика, правила отдела или центра затрат, и тип покупки (CapEx vs OpEx, подписка vs разовая).

Используйте последовательные согласования, когда важен порядок. Например, финансы могут заблокировать запрос при отсутствии центра затрат — лучше поймать это раньше, чем тратить время procurement. Используйте параллельные согласования, когда команды могут проверять независимо: security и legal одновременно для стандартной SaaS-покупки, пока финансы проверяют бюджет.

Спланируйте чистый цикл доработки. Когда согласующий возвращает запрос, заявитель должен добавить недостающие данные и повторно отправить, не теряя истории. Храните лог согласований с временными метками, комментариями и версией ключевых полей (сумма, поставщик, категория).

Пример: SaaS-инструмент за $12,000 идёт сначала к менеджеру и финансам. После их обеих согласований запуск в security и procurement идёт параллельно. Если security требует дополнительные данные по обработке данных, запрос возвращается заявителю, затем снова проходит тот же шаг с сохранённым аудиторским следом.

Если вы реализуете это в AppMaster, моделируйте состояния workflow и переходы в Business Process, чтобы маршрутизация оставалась видимой и легко настраиваемой по мере смены политики.

Шаг за шагом: от запроса до заказа

Постройте поток закупок
Постройте процесс от запроса до заказа с понятными статусами, владельцами и аудиторией.
Попробовать AppMaster

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

Практическая последовательность для большинства команд выглядит так:

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

Пример: команда поддержки запрашивает 10 новых гарнитур. Они прикрепляют котировку, выбирают категорию IT Supplies и отправляют. Приложение проверяет IT-бюджет, направляет менеджеру (так как менее $1,000), а затем финансам (порог $500). После согласований PO формируется и отправляется, а ответ и дата доставки записываются в системе.

В no-code инструменте типа AppMaster это обычно превращается в несколько экранов (Draft, Review, PO) и Business Process, который блокирует поля, запускает логику бюджета и автоматически создаёт запись PO.

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

Запустите пилот за несколько дней
Прототипируйте простой путь согласования для одной команды перед масштабированием по компании.
Создать прототип

PO полезен только если он последовательный, прослеживаемый и надёжен. В рабочем процессе PO должен стать стабильной записью, которой доверяют поставщики и финансы.

Нумерация PO: когда её генерировать

Генерируйте номер PO при официальной отправке поставщику, а не при создании черновика. Черновики удаляются, перезапускаются и объединяются — так появляются разрывы и дубликаты.

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

Структура PO: шапка, позиции и итоги

Разделяйте PO на шапку и позиции. Шапка содержит контекст; позиции — то, что покупается.

Держите шапку фокусированной: поставщик и контакт, ship-to и bill-to, валюта, условия оплаты, ожидаемая дата доставки, статус (Draft, Issued, Acknowledged, Closed) и ссылка на котировку.

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

Контроль изменений: ревизия vs отмена и переиздание

Решите заранее, какие изменения допустимы как ревизия. Небольшие правки вроде даты доставки или заметок можно сделать как новую версию (например, PO-1042 v2) с явной ссылкой «заменяет v1». Серьёзные изменения — смена поставщика, валюты или существенное изменение суммы — обычно требуют отмены и переиздания, чтобы никто не отправлял товар по неверному документу.

Пример: запрос утверждён на 10 ноутбуков, но поставщик изменил срок доставки с 2 недель на 8 недель. Создайте ревизию с обновлённой датой поставки и сохраните оригинальную котировку, чтобы PO всегда соответствовал договорённостям.

В AppMaster моделируйте шапку PO, позиции и версии PO как отдельные сущности, чтобы ревизии оставались чистыми и аудируемыми.

Уведомления и коммуникация с поставщиками

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

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

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

Коммуникация с поставщиками тоже должна быть структурирована. Поставщикам обычно нужны: отправленный PO, изменение PO, отмена и вопросы по доставке. Сохраняйте каждое исходящее и входящее сообщение в треде поставщика для данного PO или запроса. Отслеживайте результат простыми полями: status (draft, sent, delivered, failed), vendor_response (none, replied, bounced), follow_up_needed (yes/no) и follow_up_date.

Пример: запрос ноутбука утверждён, PO отправлен, и поставщик отвечает, что модель задерживается. Приложение фиксирует ответ, ставит follow_up_needed = yes и уведомляет заявителя выбрать альтернативу. В AppMaster вы можете связать изменения статуса с шагами отправки email/SMS/Telegram и сохранить результат сообщения рядом с PO.

Типичные ошибки и ловушки, которых стоит избегать

Поддержка веба и мобильных
Создавайте веб- и нативные мобильные интерфейсы из одной модели для заявителей и согласующих.
Создать интерфейсы

Главный риск — не в недостающих функциях, а в создании неправильных правил и выработке обходных путей. Люди начнут работать в обход системы, если правила непонятны.

Одна частая ошибка — превращение запроса в лабиринт статусов. Если никому не ясно, что значит «Pending validation» или «Under review», статус перестаёт обновляться и данные превращаются в шум. Держите статусы привязанными к явным действиям и владельцам. Каждый статус должен отвечать на вопрос: «Что произойдёт дальше и кто за это отвечает?»

Другой подводный камень — согласования без явного владельца или срока. Запросы застревают, когда утверждающий в отпуске или роль не персонифицирована («Finance» — это не человек). Добавьте резервного одобрителя и простое ожидаемое время обработки, даже если оно неформально.

Самые частые причины доработок:

  • Слишком много статусов и исключений, понятных только разработчику.
  • Согласования, назначенные группе без запасного варианта на случай отсутствия.
  • Редактирование цены, количества или поставщика после утверждения без принуждения к повторному согласованию.
  • Проверки бюджета, которые не соответствуют учетной логике финансов (период, центр затрат, обязательства vs фактические расходы).
  • Ручные обходы без фиксирования причины и без аудита.

Особое внимание — правкам после утверждения: «безобидные» правки часто меняют уровень риска. Если запрос был утверждён на 10 ноутбуков по $900, а потом кто-то меняет модель на дороже или увеличивает количество, утверждение уже не соответствует покупке.

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

Если вы строите это в AppMaster, блокируйте ключевые поля после утверждения и фиксируйте каждое исключение как событие (кто, когда, что изменил и почему). Такой аудит спасает в спорах и во время проверок.

Краткий чек-лист, пример сценария и следующие шаги

Перед запуском пропишите базовые правила. Большая часть «хаоса с согласованиями» возникает из-за одной пропущенной обязательной опции или поля.

Простой чек-лист перед запуском:

  • Роли и права (заявитель, утверждающий, финансы, закупки, админ)
  • Правила согласования (сумма, отдел, категория, локация)
  • Статусы и владельцы (Draft, Submitted, Needs info, Approved, PO created, Closed)
  • Обязательные поля (поставщик, центр затрат, дата поставки, бизнес-обоснование)
  • Обязательные вложения (котировка, контракт, security review, спецификация)

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

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

Дальше: прототипируйте модель данных и правила маршрутизации, затем протестируйте с небольшой пилотной командой и одной–двумя категориями покупок. В AppMaster вы можете создать таблицы в Data Designer и связать правила маршрутизации в Business Process Editor. Проведите короткий пилот, посмотрите, где запросы застревают, ужесточите обязательные поля и затем масштабируйте. Если хотите увидеть, как этот подход превращается в реальное приложение, AppMaster (appmaster.io) предназначен для создания внутренних инструментов с логикой утверждений, API и веб- и нативными мобильными интерфейсами из одной модели.

Вопросы и ответы

What should be the first milestone for a procurement request app?

Start with request to PO. It forces clear approvals, budget checks, and traceability without dragging you into invoice matching and receiving right away. You can add downstream steps after the team trusts the first milestone.

Which request statuses should we use so people don’t get confused?

Use a small, explicit set like Draft, Submitted, Approved, Rejected, Ordered, and Closed. Each status should clearly indicate who owns the next step and what action is expected, so nobody has to interpret vague labels.

How do we stop people from changing price or vendor after approval?

Lock key fields at submission and require a formal change that triggers re-approval for anything that affects risk or spend, such as vendor, currency, quantity, unit price, cost center, or total. Allow only clarifications like notes, attachments, or delivery details without restarting the whole process.

What roles and permissions are essential in a procurement request workflow?

Define roles first, then define what each role can do at each stage. A simple default is: requesters see and edit their own drafts, managers see direct reports, and finance/procurement have cross-department visibility, while vendor contacts never see internal notes or budget data.

How should approval delegation work when someone is on vacation?

Make delegation a built-in feature, not an exception. Delegation should transfer approval rights for a time window, but it should not allow the delegate to rewrite the request content, so accountability stays intact.

How do we handle cross-department requests like IT buying for Marketing?

Separate who requested the purchase from who pays for it. Route approvals to the cost center owner even if the requester is from another team, and store both parties on the record so it’s always clear who initiated and who is accountable for budget.

What’s the simplest way to implement budget checks that finance will trust?

Calculate expected spend the same way finance will later, including tax, shipping, discounts, and currency conversion with a stored rate and date. Decide upfront whether insufficient budget blocks the workflow or allows escalation with an extra approval step.

How do we keep vendor data clean and prevent risky purchases?

Keep a vendor master table as the single source of truth, and select vendors from a list rather than free text. Add a vendor status like Active, Pending review, and Blocked so risky vendors are consistently routed or prevented without relying on memory.

When should we generate a PO number, and how do we avoid duplicates?

Generate the PO number only when the PO is officially issued, not when someone starts drafting. Assign it in a single controlled step to avoid duplicates, and keep the PO header and line items structured so totals are calculated rather than manually typed.

Can we build this without coding, and what does AppMaster help with?

Yes, if you need a fast build without writing code. With AppMaster, you can model the data, define stage-based permissions and approval routing, and generate production-ready web and native mobile apps from the same model, which helps keep the workflow consistent across devices.

Легко начать
Создай что-то невероятное

Экспериментируйте с AppMaster с бесплатной подпиской.
Как только вы будете готовы, вы сможете выбрать подходящий платный план.

Попробовать AppMaster