This commit is contained in:
2026-10-29 16:51:26 +03:00
parent 70a20665ae
commit 4b2f0903b1
51 changed files with 6540 additions and 1212 deletions
+75
View File
@@ -0,0 +1,75 @@
-- ============================================================
-- Модуль питания: категории, блюда, счета, заказы
-- ============================================================
SET NAMES utf8mb4;
-- ---------- Компания-оператор питания ----------
CREATE TABLE IF NOT EXISTS food_companies (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
is_active TINYINT(1) NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ---------- Категории (Горячее, Напитки, Закуски, Суп...) ----------
CREATE TABLE IF NOT EXISTS food_categories (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
emoji VARCHAR(16) DEFAULT NULL,
sort_order INT NOT NULL DEFAULT 0,
is_active TINYINT(1) NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ---------- Блюда ----------
CREATE TABLE IF NOT EXISTS food_items (
id INT AUTO_INCREMENT PRIMARY KEY,
category_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
description VARCHAR(500) DEFAULT NULL,
price DECIMAL(10,2) NOT NULL DEFAULT 0,
image_url VARCHAR(500) DEFAULT NULL,
weight_grams INT DEFAULT NULL,
is_active TINYINT(1) NOT NULL DEFAULT 1,
sort_order INT NOT NULL DEFAULT 0,
KEY idx_food_items_cat (category_id),
CONSTRAINT fk_item_cat FOREIGN KEY (category_id)
REFERENCES food_categories(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ---------- Счета питания сотрудников (по табельному) ----------
CREATE TABLE IF NOT EXISTS food_accounts (
id INT AUTO_INCREMENT PRIMARY KEY,
tnom VARCHAR(20) NOT NULL UNIQUE,
balance DECIMAL(10,2) NOT NULL DEFAULT 0,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ---------- Заказы ----------
CREATE TABLE IF NOT EXISTS food_orders (
id INT AUTO_INCREMENT PRIMARY KEY,
tnom VARCHAR(20) NOT NULL,
total_amount DECIMAL(10,2) NOT NULL,
status ENUM('new','accepted','done','cancelled')
NOT NULL DEFAULT 'new',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
KEY idx_food_orders_status (status),
KEY idx_food_orders_tnom (tnom),
KEY idx_food_orders_date (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ---------- Позиции заказа ----------
CREATE TABLE IF NOT EXISTS food_order_items (
id INT AUTO_INCREMENT PRIMARY KEY,
order_id INT NOT NULL,
item_id INT NOT NULL,
item_name VARCHAR(255) NOT NULL, -- фиксируем имя на момент заказа
unit_price DECIMAL(10,2) NOT NULL, -- и цену
quantity INT NOT NULL,
subtotal DECIMAL(10,2) NOT NULL,
KEY idx_order_items_order (order_id),
KEY idx_order_items_item (item_id),
CONSTRAINT fk_oi_order FOREIGN KEY (order_id)
REFERENCES food_orders(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+27
View File
@@ -0,0 +1,27 @@
SET NAMES utf8mb4;
INSERT IGNORE INTO food_companies (id, name) VALUES (1, 'АзотСервис');
INSERT IGNORE INTO food_categories (id, name, emoji, sort_order) VALUES
(1, 'Горячее', '🍲', 10),
(2, 'Супы', '🥣', 20),
(3, 'Закуски', '🥪', 30),
(4, 'Напитки', '🥤', 40),
(5, 'Десерты', '🍰', 50);
INSERT IGNORE INTO food_items (id, category_id, name, description, price, image_url, weight_grams, sort_order) VALUES
(1, 1, 'Котлета', 'Куриная котлета с маслом', 6.50, '/uploads/food/kiev.jpg', 250, 10),
(2, 1, 'Плов с говядиной', 'Рассольный плов', 7.20, '/uploads/food/plov.jpg', 300, 20),
(3, 2, 'Борщ', 'С говядиной и сметаной', 4.50, '/uploads/food/borsch.jpg', 350, 10),
(4, 2, 'Куриный суп', 'С домашней лапшой', 3.80, '/uploads/food/soup.jpg', 350, 20),
(5, 3, 'Бутерброд с сыром', 'Тост, сыр, ветчина', 2.90, '/uploads/food/sandwich.jpg',150, 10),
(6, 4, 'Чай чёрный', 'С сахаром', 1.20, '/uploads/food/tea.jpg', 250, 10),
(7, 4, 'Кофе американо', 'Эспрессо с водой', 2.00, '/uploads/food/coffee.jpg', 200, 20),
(8, 4, 'Сок апельсиновый', 'Свежевыжатый', 2.50, '/uploads/food/juice.jpg', 250, 30),
(9, 5, 'Пирожок с вишней', 'Выпечка', 1.80, '/uploads/food/pie.jpg', 100, 10);
-- Тестовые счета (можно удалить на проде)
INSERT IGNORE INTO food_accounts (tnom, balance) VALUES
('001', 50.00),
('002', 32.50),
('003', 100.00);