Files

156 lines
6.6 KiB
SQL
Raw Permalink Normal View History

2026-06-27 15:23:25 -05:00
CREATE TABLE IF NOT EXISTS `#__mokosuitelogistics_orders` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`order_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 '',
`status` ENUM('pending','confirmed','assigned','picked_up','in_transit','delivered','failed','cancelled','returned') NOT NULL DEFAULT 'pending',
`order_type` ENUM('standard','express','same_day','scheduled','bulk') NOT NULL DEFAULT 'standard',
`pickup_address` VARCHAR(500) NOT NULL,
`pickup_lat` DECIMAL(10,7) DEFAULT NULL,
`pickup_lng` DECIMAL(10,7) DEFAULT NULL,
`delivery_address` VARCHAR(500) NOT NULL,
`delivery_lat` DECIMAL(10,7) DEFAULT NULL,
`delivery_lng` DECIMAL(10,7) DEFAULT NULL,
`package_type` ENUM('envelope','small_box','medium_box','large_box','pallet','fragile','perishable','custom') NOT NULL DEFAULT 'small_box',
`weight_kg` DECIMAL(8,2) DEFAULT NULL,
`estimated_distance_km` DECIMAL(10,2) DEFAULT NULL,
`delivery_fee` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`total_charge` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`payment_method` ENUM('cash','card','account','prepaid','cod') NOT NULL DEFAULT 'card',
`payment_status` ENUM('pending','paid','refunded','failed') NOT NULL DEFAULT 'pending',
`notes` TEXT,
`created` DATETIME NOT NULL,
`created_by` INT NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_ref` (`order_ref`),
KEY `idx_customer` (`customer_contact_id`),
KEY `idx_status` (`status`),
KEY `idx_type` (`order_type`),
KEY `idx_created` (`created`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2026-06-27 20:20:33 +00:00
2026-06-27 15:23:25 -05:00
CREATE TABLE IF NOT EXISTS `#__mokosuitelogistics_deliveries` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`order_id` INT UNSIGNED NOT NULL,
`driver_id` INT UNSIGNED DEFAULT NULL,
`route_id` INT UNSIGNED DEFAULT NULL,
`status` ENUM('assigned','en_route_pickup','picked_up','en_route_delivery','delivered','failed','returned') NOT NULL DEFAULT 'assigned',
`assigned_at` DATETIME DEFAULT NULL,
`picked_up_at` DATETIME DEFAULT NULL,
`delivered_at` DATETIME DEFAULT NULL,
`failed_at` DATETIME DEFAULT NULL,
`failure_reason` VARCHAR(500) NOT NULL DEFAULT '',
`attempt_number` TINYINT UNSIGNED NOT NULL DEFAULT 1,
`actual_distance_km` DECIMAL(10,2) DEFAULT NULL,
`driver_notes` TEXT,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_order` (`order_id`),
KEY `idx_driver` (`driver_id`),
KEY `idx_route` (`route_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2026-06-27 20:20:33 +00:00
CREATE TABLE IF NOT EXISTS `#__mokosuitelogistics_routes` (
2026-06-27 15:23:25 -05:00
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`route_ref` VARCHAR(20) NOT NULL,
`driver_id` INT UNSIGNED DEFAULT NULL,
`status` ENUM('planned','active','completed','cancelled') NOT NULL DEFAULT 'planned',
`planned_date` DATE NOT NULL,
`started_at` DATETIME DEFAULT NULL,
`completed_at` DATETIME DEFAULT NULL,
`total_stops` INT UNSIGNED NOT NULL DEFAULT 0,
`total_distance_km` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`notes` TEXT,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_ref` (`route_ref`),
KEY `idx_driver` (`driver_id`),
KEY `idx_status` (`status`),
KEY `idx_date` (`planned_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2026-06-27 20:20:33 +00:00
CREATE TABLE IF NOT EXISTS `#__mokosuitelogistics_route_stops` (
2026-06-27 15:23:25 -05:00
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`route_id` INT UNSIGNED NOT NULL,
`order_id` INT UNSIGNED DEFAULT NULL,
`stop_type` ENUM('pickup','delivery','warehouse','return') NOT NULL DEFAULT 'delivery',
`address` VARCHAR(500) NOT NULL,
`lat` DECIMAL(10,7) DEFAULT NULL,
`lng` DECIMAL(10,7) DEFAULT NULL,
`sequence_order` INT UNSIGNED NOT NULL DEFAULT 0,
`estimated_arrival` DATETIME DEFAULT NULL,
`actual_arrival` DATETIME DEFAULT NULL,
`status` ENUM('pending','arrived','completed','skipped') NOT NULL DEFAULT 'pending',
`notes` TEXT,
PRIMARY KEY (`id`),
KEY `idx_route` (`route_id`),
KEY `idx_order` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2026-06-27 20:20:33 +00:00
2026-06-27 15:23:25 -05:00
CREATE TABLE IF NOT EXISTS `#__mokosuitelogistics_delivery_proofs` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`delivery_id` INT UNSIGNED NOT NULL,
`proof_type` ENUM('signature','photo','both') NOT NULL DEFAULT 'photo',
`recipient_name` VARCHAR(255) NOT NULL DEFAULT '',
`signature_data` TEXT,
`photo_path` VARCHAR(500) NOT NULL DEFAULT '',
`geolocation_lat` DECIMAL(10,7) DEFAULT NULL,
`geolocation_lng` DECIMAL(10,7) DEFAULT NULL,
`notes` TEXT,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_delivery` (`delivery_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
2026-06-27 20:20:33 +00:00
2026-06-27 15:23:25 -05:00
CREATE TABLE IF NOT EXISTS `#__mokosuitelogistics_pricing_rules` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`order_type` ENUM('standard','express','same_day','scheduled','bulk','all') NOT NULL DEFAULT 'all',
`base_fee` DECIMAL(10,2) NOT NULL DEFAULT 5.00,
`per_km` DECIMAL(10,2) NOT NULL DEFAULT 1.00,
`per_kg` DECIMAL(10,2) NOT NULL DEFAULT 0.50,
`minimum_charge` DECIMAL(10,2) NOT NULL DEFAULT 5.00,
`express_multiplier` DECIMAL(4,2) NOT NULL DEFAULT 1.50,
`published` TINYINT NOT NULL DEFAULT 1,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_order_type` (`order_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitelogistics_drivers` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`contact_id` INT DEFAULT NULL,
`name` VARCHAR(255) NOT NULL,
`phone` VARCHAR(50) NOT NULL DEFAULT '',
`email` VARCHAR(255) NOT NULL DEFAULT '',
`license_number` VARCHAR(50) NOT NULL DEFAULT '',
`vehicle_description` VARCHAR(255) NOT NULL DEFAULT '',
`status` ENUM('available','on_delivery','off_duty','inactive') NOT NULL DEFAULT 'available',
`current_lat` DECIMAL(10,7) DEFAULT NULL,
`current_lng` DECIMAL(10,7) DEFAULT NULL,
`rating` DECIMAL(3,2) NOT NULL DEFAULT 5.00,
`total_deliveries` INT UNSIGNED NOT NULL DEFAULT 0,
`published` TINYINT NOT NULL DEFAULT 1,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_contact` (`contact_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitelogistics_warehouses` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`address` VARCHAR(500) NOT NULL,
`lat` DECIMAL(10,7) DEFAULT NULL,
`lng` DECIMAL(10,7) DEFAULT NULL,
`manager_contact_id` INT DEFAULT NULL,
`phone` VARCHAR(50) NOT NULL DEFAULT '',
`published` TINYINT NOT NULL DEFAULT 1,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_manager` (`manager_contact_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;