3. Техкарты и себестоимость
Что такое техкарта
Техкарта — это рецепт блюда или заготовки. Она отвечает на три вопроса:
- Из чего готовится блюдо (список ингредиентов)
- Сколько нужно каждого ингредиента (масса брутто)
- Сколько стоит приготовить одну порцию (себестоимость)
┌─────────────────────────────────────────────────────┐│ ТЕХКАРТА: Стейк Рибай (версия 3) │├─────────────────────────────────────────────────────┤│ Выход партии: 1 порция (350 г) ││ Время приготовления: 20 минут ││ Технология: обжарка на гриле при 250°C │├─────────────────────────────────────────────────────┤│ Ингредиенты: ││ ┌────────────────┬────────┬──────────┬───────────┐ ││ │ Название │ Брутто │ Потери │ Единица │ ││ ├────────────────┼────────┼──────────┼───────────┤ ││ │ Говядина рибай │ 450 г │ 5% + 15% │ г │ ││ │ Соль морская │ 5 г │ 0% + 0% │ г │ ││ │ Перец чёрный │ 2 г │ 0% + 0% │ г │ ││ │ Масло оливков. │ 20 мл │ 0% + 10% │ мл │ ││ └────────────────┴────────┴──────────┴───────────┘ ││ ││ Себестоимость порции: 420.00 руб │└─────────────────────────────────────────────────────┘Потери при обработке
У каждого ингредиента есть два вида потерь — это процент сырья, который теряется в процессе приготовления.
Холодная обработка (cold loss)
Потери до тепловой обработки: очистка, разделка, обвалка, нарезка.
Примеры:• Картофель: 250 г → очистка → 200 г = 20% потерь• Говядина с костью: 1 кг → обвалка → 850 г = 15% потерь• Лук репчатый: 100 г → очистка → 85 г = 15% потерь• Филе лосося: без потерь = 0%Горячая обработка (hot loss)
Потери при тепловой обработке: варка, жарка, запекание (испарение, усушка, ужарка).
Примеры:• Мясо при жарке: 850 г → 720 г = 15% потерь• Овощи при варке: 200 г → 180 г = 10% потерь• Масло при жарке: 20 мл → 18 мл = 10% потерь• Соль/перец: без потерь = 0%Как потери влияют на расход
БРУТТО ПОСЛЕ ХОЛОДНОЙ ПОСЛЕ ГОРЯЧЕЙ НЕТТО(что купили) ОБРАБОТКИ ОБРАБОТКИ (что в тарелке)
450 г говядины ──► −5% (очистка) ──► −15% (жарка) ──► 363 г готового мяса = 427.5 г = 363.4 гФормула нетто-выхода:
Полезный выход = (1 − холодные%/100) × (1 − горячие%/100) = (1 − 0.05) × (1 − 0.15) = 0.95 × 0.85 = 0.8075 → 80.75% от бруттоЭто означает: из 450 г купленной говядины в тарелку попадёт ~363 г. А чтобы получить 1 кг готового мяса, нужно закупить: 1 / 0.8075 = 1.24 кг.
Расчёт себестоимости
Шаг за шагом
Дано: Техкарта «Стейк Рибай», выход 1 порция.
┌───┬──────────────────┬────────┬────────────┬──────────┬──────────────┐│ # │ Ингредиент │ Брутто │ Цена за кг │ Потери │ Стоимость │├───┼──────────────────┼────────┼────────────┼──────────┼──────────────┤│ 1 │ Говядина рибай │ 450 г │ 800 руб/кг │ 5% + 15%│ ? ││ 2 │ Соль морская │ 5 г │ 60 руб/кг │ 0% + 0% │ ? ││ 3 │ Перец чёрный │ 2 г │ 2000 руб/кг│ 0% + 0% │ ? ││ 4 │ Масло оливковое │ 20 мл │ 900 руб/л │ 0% + 10%│ ? │└───┴──────────────────┴────────┴────────────┴──────────┴──────────────┘Формула для каждого ингредиента:
стоимость = цена_закупки × брутто / полезный_выход / коэф_конвертацииРасчёт по строкам
1. Говядина рибай:
полезный_выход = (1 − 0.05) × (1 − 0.15) = 0.8075стоимость = 800 × 0.450 / 0.8075 = 360 / 0.8075 = 445.82 руб2. Соль морская:
полезный_выход = (1 − 0) × (1 − 0) = 1.0стоимость = 60 × 0.005 / 1.0 = 0.30 руб3. Перец чёрный:
полезный_выход = 1.0стоимость = 2000 × 0.002 / 1.0 = 4.00 руб4. Масло оливковое:
полезный_выход = (1 − 0) × (1 − 0.10) = 0.90коэф_конвертации = 0.001 (мл → л)стоимость = 900 × 0.020 / 0.90 / (1/0.001)
Упрощённо: 20 мл = 0.02 л → 900 × 0.02 / 0.9 = 20.00 рубИтог
┌──────────────────┬──────────────┐│ Ингредиент │ Стоимость │├──────────────────┼──────────────┤│ Говядина рибай │ 445.82 руб ││ Соль морская │ 0.30 руб ││ Перец чёрный │ 4.00 руб ││ Масло оливковое │ 20.00 руб │├──────────────────┼──────────────┤│ ИТОГО партия │ 470.12 руб ││ Выход: 1 порция │ ││ СЕБЕСТОИМОСТЬ │ 470.12 руб │ ← сохраняется в Nomenclature.costPrice└──────────────────┴──────────────┘Если бы выход партии был 2 порции → себестоимость = 470.12 / 2 = 235.06 руб/порция.
Каскадный пересчёт
Полуфабрикат может быть ингредиентом другого блюда. При изменении техкарты полуфабриката — автоматически пересчитываются все блюда, где он используется.
УРОВЕНЬ 1: Заготовки┌───────────────────┐ ┌───────────────────┐│ Томатный соус │ │ Тесто для пиццы ││ costPrice: 80 ₽/кг│ │ costPrice: 45 ₽/кг│└────────┬──────────┘ └────────┬──────────┘ │ │УРОВЕНЬ 2: Блюда (используют заготовки как ингредиенты) │ ┌───────────────┤ ▼ ▼ ▼┌────────────────┐ ┌──────────────┐ ┌──────────────┐│Пицца Маргарита │ │Паста Болоньез│ │ Лазанья ││100г соуса │ │150г соуса │ │200г соуса ││200г теста │ │ │ │300г теста ││costPrice: 180₽ │ │costPrice: 95₽│ │costPrice:240₽│└────────────────┘ └──────────────┘ └──────────────┘Что произойдёт, если подорожали помидоры:
1. Закупочная цена помидоров: 100 → 150 руб/кг
2. Томатный соус (техкарта пересчитана): costPrice: 80 → 110 руб/кг (+30 руб)
3. Автоматический каскадный пересчёт: • Пицца Маргарита: 180 → 183 руб/порция (+3 руб, 100г соуса) • Паста Болоньезе: 95 → 99.50 руб/порция (+4.50 руб, 150г соуса) • Лазанья: 240 → 246 руб/порция (+6 руб, 200г соуса)Защита от циклов
Система не позволит создать циклическую зависимость:
❌ Запрещено:Соус → содержит Пасту → содержит Соус → ...(бесконечный цикл)
✅ Допустимо:Соус → содержит Помидоры, МаслоПаста → содержит Соус, СпагеттиЛазанья → содержит Соус, Паста, Сыр(дерево, а не кольцо)Версионирование техкарт
Техкарта не перезаписывается — сохраняется история всех рецептур.
Время ──────────────────────────────────────────────►
Версия 1 ████████████████─┐ «Старый рецепт» │ шеф-повар создал новую costPrice: 380 руб │ ▼Версия 2 ████████████████─┐ «Добавили соус» │ ещё раз обновили costPrice: 420 руб │ ▼Версия 3 ████████████████ ◄── текущая «Увеличили порцию» costPrice: 470 рубПравила
| Действие | Что происходит |
|---|---|
| Создание новой версии | Старая версия деактивируется, новая становится текущей |
| Редактирование | Меняется текущая версия (новая не создаётся) |
| Удаление текущей | Автоматически восстанавливается предыдущая версия |
| Удаление последней | Себестоимость номенклатуры обнуляется |
Зачем хранить старые версии
- Отчёты: себестоимость в прошлом месяце считалась по версии 2
- Аудит: можно увидеть, кто и когда менял рецептуру
- Откат: если новый рецепт не подошёл — удалил текущую версию, вернулась предыдущая
Настройки по подразделениям
Для каждого подразделения можно настроить, как списывать блюдо:
«Списывать как блюдо» (writeOffAsDish)
ВЫКЛЮЧЕНО (по умолчанию): Продали «Пицца» → списали: 200 г теста, 100 г соуса, 150 г сыра, 50 г ветчины (разворот на ингредиенты по техкарте)
ВКЛЮЧЕНО: Продали «Пицца» → списали: 1 шт «Пицца» (списывается как готовый товар)Когда включать: если блюдо приезжает в точку уже готовым (например, кейтеринг или централизованная кухня). Ингредиенты уже были списаны на производстве.
Полный цикл: от техкарты до списания
ТЕХНОЛОГ СИСТЕМА СКЛАД │ │ │ │ 1. Создаёт техкарту │ │ │─────────────────────────► │ │ │ │ │ 2. Считает │ │ себестоимость │ │ (с потерями) │ │ │ │ │ 3. Сохраняет в │ │ Nomenclature.costPrice │ │ │ │ │ 4. Каскадный │ │ пересчёт (если │ │ заготовка) │ │ │ │ │ 5. Outbox → Kafka │ │ (отправка на кассу) │ │ │ │ │ │ ...время проходит... │ │ │ │ │ 6. Клиент заказал │ │ блюдо на POS │ │ │ │ │ 7. Акт реализации │ │ │─────────────────────────► │ │ 8. Списание со склада │ │ │ (FIFO или средневзвеш.) │ │ │ │ 9. Отчёт: маржа = │ │ цена − себестоимость │