food
This commit is contained in:
@@ -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;
|
||||
@@ -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);
|
||||
Reference in New Issue
Block a user