Files

159 lines
6.7 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','desserts','specials','kids') NOT NULL DEFAULT 'dinner',
`available_from` TIME DEFAULT NULL,
`available_to` TIME DEFAULT NULL,
`published` TINYINT NOT NULL DEFAULT 1,
`ordering` INT NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`)
) 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` VARCHAR(500) NOT NULL DEFAULT '',
`dietary_tags` VARCHAR(255) NOT NULL DEFAULT '',
`prep_time_minutes` SMALLINT UNSIGNED NOT NULL DEFAULT 15,
`photo` VARCHAR(500) NOT NULL DEFAULT '',
`available` TINYINT NOT NULL DEFAULT 1,
`published` TINYINT NOT NULL DEFAULT 1,
`ordering` INT NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_menu` (`menu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuiteresto_modifiers` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`menu_item_id` INT UNSIGNED NOT NULL,
`name` VARCHAR(255) NOT NULL,
`modifier_type` ENUM('add_on','size','preparation','sauce','side','substitution') NOT NULL DEFAULT 'add_on',
`price_adjustment` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`ordering` INT NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_item` (`menu_item_id`)
) 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(100) 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,
PRIMARY KEY (`id`),
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 '',
`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,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_ref` (`reservation_ref`),
KEY `idx_customer` (`customer_contact_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,
`order_type` ENUM('dine_in','takeout','delivery','catering') NOT NULL DEFAULT 'dine_in',
`table_id` INT UNSIGNED DEFAULT NULL,
`customer_name` VARCHAR(255) NOT NULL DEFAULT '',
`status` ENUM('pending','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,
`total` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`payment_method` ENUM('cash','card','tab','comp') NOT NULL DEFAULT 'card',
`payment_status` ENUM('pending','paid','refunded') NOT NULL DEFAULT 'pending',
`server_name` VARCHAR(255) NOT NULL DEFAULT '',
`notes` TEXT,
`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_created` (`created`)
) 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` SMALLINT UNSIGNED NOT NULL DEFAULT 1,
`unit_price` DECIMAL(10,2) NOT NULL,
`modifiers` JSON DEFAULT NULL,
`modifiers_price` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`special_instructions` VARCHAR(500) NOT NULL DEFAULT '',
`status` ENUM('pending','preparing','ready','served','cancelled') NOT NULL DEFAULT 'pending',
PRIMARY KEY (`id`),
KEY `idx_order` (`order_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` ENUM('produce','meat','seafood','dairy','dry_goods','beverages','supplies','other') NOT NULL DEFAULT 'other',
`unit` VARCHAR(50) NOT NULL DEFAULT 'each',
`current_qty` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`reorder_level` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`unit_cost` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`supplier` VARCHAR(255) NOT NULL DEFAULT '',
`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','waste','adjustment','transfer') NOT NULL DEFAULT 'received',
`quantity` DECIMAL(10,2) NOT NULL,
`unit_cost` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`reference` VARCHAR(255) NOT NULL DEFAULT '',
`created` DATETIME NOT NULL,
`created_by` INT NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `idx_inventory` (`inventory_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuiteresto_staff_shifts` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`staff_name` VARCHAR(255) NOT NULL,
`contact_id` INT DEFAULT NULL,
`role` ENUM('server','bartender','host','cook','chef','dishwasher','manager','busser') NOT NULL DEFAULT 'server',
`shift_date` DATE NOT NULL,
`start_time` TIME NOT NULL,
`end_time` TIME NOT NULL,
`status` ENUM('scheduled','active','completed','no_show','cancelled') NOT NULL DEFAULT 'scheduled',
`tips_earned` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_date` (`shift_date`),
KEY `idx_role` (`role`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;