150 lines
6.2 KiB
SQL
150 lines
6.2 KiB
SQL
CREATE TABLE IF NOT EXISTS `#__mokosuiteresto_menus` (
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`description` TEXT,
|
|
`menu_type` ENUM('breakfast','lunch','dinner','brunch','drinks','dessert','kids','catering','special') NOT NULL DEFAULT 'dinner',
|
|
`available_start` TIME DEFAULT NULL,
|
|
`available_end` TIME DEFAULT NULL,
|
|
`photo` VARCHAR(500) NOT NULL DEFAULT '',
|
|
`published` TINYINT NOT NULL DEFAULT 1,
|
|
`ordering` INT NOT NULL DEFAULT 0,
|
|
`created` DATETIME NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_type` (`menu_type`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `#__mokosuiteresto_menu_items` (
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`menu_id` INT UNSIGNED NOT NULL,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`description` TEXT,
|
|
`category` VARCHAR(100) NOT NULL DEFAULT '',
|
|
`price` DECIMAL(10,2) NOT NULL,
|
|
`calories` SMALLINT UNSIGNED DEFAULT NULL,
|
|
`allergens` JSON DEFAULT NULL,
|
|
`dietary_tags` JSON DEFAULT NULL,
|
|
`available` TINYINT NOT NULL DEFAULT 1,
|
|
`featured` TINYINT NOT NULL DEFAULT 0,
|
|
`photo` VARCHAR(500) NOT NULL DEFAULT '',
|
|
`published` TINYINT NOT NULL DEFAULT 1,
|
|
`ordering` INT NOT NULL DEFAULT 0,
|
|
`created` DATETIME NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_menu` (`menu_id`),
|
|
KEY `idx_category` (`category`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `#__mokosuiteresto_tables` (
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`table_number` VARCHAR(20) NOT NULL,
|
|
`section` VARCHAR(50) NOT NULL DEFAULT '',
|
|
`capacity` TINYINT UNSIGNED NOT NULL DEFAULT 4,
|
|
`table_type` ENUM('indoor','outdoor','patio','bar','private','booth') NOT NULL DEFAULT 'indoor',
|
|
`status` ENUM('available','occupied','reserved','cleaning','closed') NOT NULL DEFAULT 'available',
|
|
`published` TINYINT NOT NULL DEFAULT 1,
|
|
`ordering` INT NOT NULL DEFAULT 0,
|
|
`created` DATETIME NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `idx_number` (`table_number`),
|
|
KEY `idx_status` (`status`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `#__mokosuiteresto_reservations` (
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`reservation_ref` VARCHAR(20) NOT NULL,
|
|
`customer_contact_id` INT DEFAULT NULL,
|
|
`customer_name` VARCHAR(255) NOT NULL,
|
|
`customer_phone` VARCHAR(50) NOT NULL DEFAULT '',
|
|
`customer_email` VARCHAR(255) NOT NULL DEFAULT '',
|
|
`table_id` INT UNSIGNED DEFAULT NULL,
|
|
`party_size` TINYINT UNSIGNED NOT NULL DEFAULT 2,
|
|
`reservation_date` DATE NOT NULL,
|
|
`reservation_time` TIME NOT NULL,
|
|
`duration_minutes` SMALLINT UNSIGNED NOT NULL DEFAULT 90,
|
|
`status` ENUM('pending','confirmed','seated','completed','cancelled','no_show') NOT NULL DEFAULT 'pending',
|
|
`special_requests` TEXT,
|
|
`created` DATETIME NOT NULL,
|
|
`created_by` INT NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `idx_ref` (`reservation_ref`),
|
|
KEY `idx_customer` (`customer_contact_id`),
|
|
KEY `idx_table` (`table_id`),
|
|
KEY `idx_date` (`reservation_date`),
|
|
KEY `idx_status` (`status`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `#__mokosuiteresto_orders` (
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`order_ref` VARCHAR(20) NOT NULL,
|
|
`table_id` INT UNSIGNED DEFAULT NULL,
|
|
`customer_contact_id` INT DEFAULT NULL,
|
|
`customer_name` VARCHAR(255) NOT NULL DEFAULT '',
|
|
`order_type` ENUM('dine_in','takeout','delivery','catering') NOT NULL DEFAULT 'dine_in',
|
|
`status` ENUM('pending','confirmed','preparing','ready','served','completed','cancelled') NOT NULL DEFAULT 'pending',
|
|
`subtotal` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
`tax` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
`tip` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
`discount` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
`total` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
`payment_method` ENUM('cash','card','online','gift_card','split') NOT NULL DEFAULT 'card',
|
|
`payment_status` ENUM('pending','paid','refunded','voided') NOT NULL DEFAULT 'pending',
|
|
`notes` TEXT,
|
|
`ordered_at` DATETIME NOT NULL,
|
|
`completed_at` DATETIME DEFAULT NULL,
|
|
`created` DATETIME NOT NULL,
|
|
`created_by` INT NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `idx_ref` (`order_ref`),
|
|
KEY `idx_table` (`table_id`),
|
|
KEY `idx_status` (`status`),
|
|
KEY `idx_type` (`order_type`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `#__mokosuiteresto_order_items` (
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`order_id` INT UNSIGNED NOT NULL,
|
|
`menu_item_id` INT UNSIGNED NOT NULL,
|
|
`quantity` TINYINT UNSIGNED NOT NULL DEFAULT 1,
|
|
`unit_price` DECIMAL(10,2) NOT NULL,
|
|
`modifiers_json` JSON DEFAULT NULL,
|
|
`modifiers_price` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
`line_total` DECIMAL(10,2) NOT NULL,
|
|
`status` ENUM('pending','preparing','ready','served','cancelled') NOT NULL DEFAULT 'pending',
|
|
`special_instructions` TEXT,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_order` (`order_id`),
|
|
KEY `idx_item` (`menu_item_id`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `#__mokosuiteresto_inventory` (
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(255) NOT NULL,
|
|
`category` VARCHAR(100) NOT NULL DEFAULT '',
|
|
`unit` ENUM('ea','oz','lb','kg','gal','ltr','case','box','bag','other') NOT NULL DEFAULT 'ea',
|
|
`current_stock` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
`minimum_stock` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
|
|
`cost_per_unit` DECIMAL(10,4) NOT NULL DEFAULT 0.0000,
|
|
`supplier` VARCHAR(255) NOT NULL DEFAULT '',
|
|
`expiry_date` DATE DEFAULT NULL,
|
|
`notes` TEXT,
|
|
`published` TINYINT NOT NULL DEFAULT 1,
|
|
`created` DATETIME NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_category` (`category`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS `#__mokosuiteresto_inventory_transactions` (
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`inventory_id` INT UNSIGNED NOT NULL,
|
|
`transaction_type` ENUM('received','used','wasted','adjusted','returned') NOT NULL,
|
|
`quantity` DECIMAL(10,2) NOT NULL,
|
|
`cost` DECIMAL(10,2) DEFAULT NULL,
|
|
`reference` VARCHAR(255) NOT NULL DEFAULT '',
|
|
`notes` TEXT,
|
|
`created` DATETIME NOT NULL,
|
|
`created_by` INT NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_inventory` (`inventory_id`),
|
|
KEY `idx_type` (`transaction_type`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|