/*M!999999\- enable the sandbox mode */ /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- Auto-generated full schema snapshot for fresh installs. -- Re-run refresh_complete_schema.php after schema changes so new installations stay current. -- -- Table structure for table `acc_accounts` -- CREATE TABLE IF NOT EXISTS `acc_accounts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code` varchar(20) NOT NULL, `name_en` varchar(100) NOT NULL, `name_ar` varchar(100) NOT NULL, `type` enum('asset','liability','equity','revenue','expense') NOT NULL, `parent_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`), KEY `parent_id` (`parent_id`), CONSTRAINT `acc_accounts_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `acc_accounts` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `acc_journal_entries` -- CREATE TABLE IF NOT EXISTS `acc_journal_entries` ( `id` int(11) NOT NULL AUTO_INCREMENT, `entry_date` date NOT NULL, `description` text DEFAULT NULL, `reference` varchar(100) DEFAULT NULL, `source_type` varchar(50) DEFAULT NULL, `source_id` int(11) DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `acc_ledger` -- CREATE TABLE IF NOT EXISTS `acc_ledger` ( `id` int(11) NOT NULL AUTO_INCREMENT, `journal_entry_id` int(11) NOT NULL, `account_id` int(11) NOT NULL, `debit` decimal(15,3) DEFAULT 0.000, `credit` decimal(15,3) DEFAULT 0.000, PRIMARY KEY (`id`), KEY `journal_entry_id` (`journal_entry_id`), KEY `account_id` (`account_id`), CONSTRAINT `acc_ledger_ibfk_1` FOREIGN KEY (`journal_entry_id`) REFERENCES `acc_journal_entries` (`id`) ON DELETE CASCADE, CONSTRAINT `acc_ledger_ibfk_2` FOREIGN KEY (`account_id`) REFERENCES `acc_accounts` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `cash_registers` -- CREATE TABLE IF NOT EXISTS `cash_registers` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `status` enum('active','inactive') DEFAULT 'active', `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `customers` -- CREATE TABLE IF NOT EXISTS `customers` ( `id` int(11) NOT NULL AUTO_INCREMENT, `outlet_id` int(11) DEFAULT NULL, `name` varchar(255) NOT NULL, `email` varchar(255) DEFAULT NULL, `phone` varchar(50) DEFAULT NULL, `tax_id` varchar(50) DEFAULT NULL, `balance` decimal(15,3) DEFAULT 0.000, `credit_limit` decimal(15,3) DEFAULT 0.000, `created_at` timestamp NULL DEFAULT current_timestamp(), `loyalty_points` decimal(15,3) DEFAULT 0.000, `loyalty_tier` enum('bronze','silver','gold') DEFAULT 'bronze', `total_spent` decimal(15,3) DEFAULT 0.000, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- -- Table structure for table `discount_codes` -- CREATE TABLE IF NOT EXISTS `discount_codes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `code` varchar(50) NOT NULL, `type` enum('percentage','fixed') NOT NULL DEFAULT 'percentage', `value` decimal(15,3) NOT NULL, `min_purchase` decimal(15,3) DEFAULT 0.000, `expiry_date` date DEFAULT NULL, `status` enum('active','inactive') DEFAULT 'active', `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `code` (`code`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `expense_categories` -- CREATE TABLE IF NOT EXISTS `expense_categories` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name_en` varchar(255) NOT NULL, `name_ar` varchar(255) NOT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `hr_biometric_devices` -- CREATE TABLE IF NOT EXISTS `hr_biometric_devices` ( `id` int(11) NOT NULL AUTO_INCREMENT, `device_name` varchar(100) NOT NULL, `ip_address` varchar(50) NOT NULL, `port` int(11) DEFAULT 4370, `io_address` varchar(100) DEFAULT NULL, `serial_number` varchar(100) DEFAULT NULL, `status` enum('active','inactive') DEFAULT 'active', `last_sync` timestamp NULL DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `hr_departments` -- CREATE TABLE IF NOT EXISTS `hr_departments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `hr_employees` -- CREATE TABLE IF NOT EXISTS `hr_employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `department_id` int(11) DEFAULT NULL, `biometric_id` varchar(50) DEFAULT NULL, `name` varchar(255) NOT NULL, `email` varchar(255) DEFAULT NULL, `phone` varchar(20) DEFAULT NULL, `position` varchar(100) DEFAULT NULL, `salary` decimal(15,3) DEFAULT 0.000, `joining_date` date DEFAULT NULL, `status` enum('active','inactive') DEFAULT 'active', `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `biometric_id` (`biometric_id`), KEY `department_id` (`department_id`), CONSTRAINT `hr_employees_ibfk_1` FOREIGN KEY (`department_id`) REFERENCES `hr_departments` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `hr_attendance` -- CREATE TABLE IF NOT EXISTS `hr_attendance` ( `id` int(11) NOT NULL AUTO_INCREMENT, `employee_id` int(11) NOT NULL, `attendance_date` date NOT NULL, `clock_in` time DEFAULT NULL, `clock_out` time DEFAULT NULL, `status` enum('present','absent','on_leave') DEFAULT 'present', `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `employee_id` (`employee_id`,`attendance_date`), CONSTRAINT `hr_attendance_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `hr_employees` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `hr_biometric_logs` -- CREATE TABLE IF NOT EXISTS `hr_biometric_logs` ( `id` int(11) NOT NULL AUTO_INCREMENT, `biometric_id` varchar(50) NOT NULL, `device_id` int(11) DEFAULT NULL, `employee_id` int(11) DEFAULT NULL, `timestamp` datetime NOT NULL, `type` enum('check_in','check_out','unknown') DEFAULT 'unknown', `processed` tinyint(1) DEFAULT 0, `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `employee_id` (`employee_id`), KEY `device_id` (`device_id`), CONSTRAINT `hr_biometric_logs_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `hr_employees` (`id`) ON DELETE SET NULL, CONSTRAINT `hr_biometric_logs_ibfk_2` FOREIGN KEY (`device_id`) REFERENCES `hr_biometric_devices` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `hr_payroll` -- CREATE TABLE IF NOT EXISTS `hr_payroll` ( `id` int(11) NOT NULL AUTO_INCREMENT, `employee_id` int(11) NOT NULL, `payroll_month` int(11) NOT NULL, `payroll_year` int(11) NOT NULL, `basic_salary` decimal(15,3) DEFAULT 0.000, `bonus` decimal(15,3) DEFAULT 0.000, `deductions` decimal(15,3) DEFAULT 0.000, `net_salary` decimal(15,3) DEFAULT 0.000, `payment_date` date DEFAULT NULL, `status` enum('pending','paid') DEFAULT 'pending', `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `employee_month_year` (`employee_id`,`payroll_month`,`payroll_year`), CONSTRAINT `hr_payroll_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `hr_employees` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `licenses` -- CREATE TABLE IF NOT EXISTS `licenses` ( `id` int(11) NOT NULL AUTO_INCREMENT, `license_key` varchar(255) NOT NULL, `max_activations` int(11) DEFAULT 1, `max_counters` int(11) DEFAULT 1, `status` enum('active','suspended','expired') DEFAULT 'active', `owner` varchar(255) DEFAULT NULL, `address` text DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `license_key` (`license_key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `activations` -- CREATE TABLE IF NOT EXISTS `activations` ( `id` int(11) NOT NULL AUTO_INCREMENT, `license_id` int(11) NOT NULL, `fingerprint` varchar(255) NOT NULL, `domain` varchar(255) DEFAULT NULL, `product` varchar(255) DEFAULT NULL, `activated_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `license_id` (`license_id`,`fingerprint`), CONSTRAINT `activations_ibfk_1` FOREIGN KEY (`license_id`) REFERENCES `licenses` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `loyalty_transactions` -- CREATE TABLE IF NOT EXISTS `loyalty_transactions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `customer_id` int(11) NOT NULL, `transaction_id` int(11) DEFAULT NULL, `points_change` decimal(15,3) NOT NULL, `transaction_type` enum('earned','redeemed','adjustment') NOT NULL, `description` text DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `customer_id` (`customer_id`), CONSTRAINT `loyalty_transactions_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `migrations` -- CREATE TABLE IF NOT EXISTS `migrations` ( `id` int(11) NOT NULL AUTO_INCREMENT, `migration` varchar(255) NOT NULL, `executed_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `outlets` -- CREATE TABLE IF NOT EXISTS `outlets` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `address` text DEFAULT NULL, `phone` varchar(50) DEFAULT NULL, `status` enum('active','inactive') DEFAULT 'active', `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `expenses` -- CREATE TABLE IF NOT EXISTS `expenses` ( `id` int(11) NOT NULL AUTO_INCREMENT, `category_id` int(11) NOT NULL, `amount` decimal(10,3) NOT NULL, `expense_date` date NOT NULL, `description` text DEFAULT NULL, `reference_no` varchar(50) DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), `outlet_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `category_id` (`category_id`), KEY `fk_expenses_outlet` (`outlet_id`), CONSTRAINT `expenses_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `expense_categories` (`id`) ON DELETE CASCADE, CONSTRAINT `fk_expenses_outlet` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `invoices` -- CREATE TABLE IF NOT EXISTS `invoices` ( `id` int(11) NOT NULL AUTO_INCREMENT, `transaction_no` varchar(50) DEFAULT NULL, `customer_id` int(11) DEFAULT NULL, `invoice_date` date NOT NULL, `type` enum('sale','purchase') NOT NULL, `payment_type` varchar(100) DEFAULT NULL, `total_amount` decimal(15,3) DEFAULT 0.000, `created_at` timestamp NULL DEFAULT current_timestamp(), `vat_amount` decimal(15,3) DEFAULT 0.000, `total_with_vat` decimal(15,3) DEFAULT 0.000, `terms_conditions` text DEFAULT NULL, `paid_amount` decimal(15,3) DEFAULT 0.000, `status` enum('paid','unpaid','partially_paid') DEFAULT 'unpaid', `register_session_id` int(11) DEFAULT NULL, `is_pos` tinyint(1) DEFAULT 0, `discount_amount` decimal(15,3) DEFAULT 0.000, `loyalty_points_earned` decimal(15,3) DEFAULT 0.000, `loyalty_points_redeemed` decimal(15,3) DEFAULT 0.000, `created_by` int(11) DEFAULT NULL, `outlet_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `customer_id` (`customer_id`), KEY `idx_transaction_no` (`transaction_no`), KEY `idx_register_session` (`register_session_id`), KEY `fk_invoices_outlet` (`outlet_id`), CONSTRAINT `fk_invoices_outlet` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`) ON DELETE SET NULL, CONSTRAINT `invoices_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `lpos` -- CREATE TABLE IF NOT EXISTS `lpos` ( `id` int(11) NOT NULL AUTO_INCREMENT, `supplier_id` int(11) NOT NULL, `lpo_date` date NOT NULL, `delivery_date` date DEFAULT NULL, `status` enum('pending','converted','cancelled') DEFAULT 'pending', `total_amount` decimal(15,3) DEFAULT 0.000, `vat_amount` decimal(15,3) DEFAULT 0.000, `total_with_vat` decimal(15,3) DEFAULT 0.000, `terms_conditions` text DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), `outlet_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `supplier_id` (`supplier_id`), KEY `fk_lpos_outlet` (`outlet_id`), CONSTRAINT `fk_lpos_outlet` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`) ON DELETE SET NULL, CONSTRAINT `lpos_ibfk_1` FOREIGN KEY (`supplier_id`) REFERENCES `customers` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `payments` -- CREATE TABLE IF NOT EXISTS `payments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `outlet_id` int(11) DEFAULT NULL, `invoice_id` int(11) NOT NULL, `payment_date` date NOT NULL, `amount` decimal(15,3) DEFAULT 0.000, `payment_method` varchar(50) DEFAULT 'Cash', `notes` text DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `invoice_id` (`invoice_id`), CONSTRAINT `payments_ibfk_1` FOREIGN KEY (`invoice_id`) REFERENCES `invoices` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `payment_methods` -- CREATE TABLE IF NOT EXISTS `payment_methods` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name_en` varchar(255) DEFAULT NULL, `name_ar` varchar(255) DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `pos_devices` -- CREATE TABLE IF NOT EXISTS `pos_devices` ( `id` int(11) NOT NULL AUTO_INCREMENT, `device_name` varchar(100) NOT NULL, `device_type` enum('scale','printer','display') DEFAULT 'scale', `connection_type` enum('usb','network','serial') DEFAULT 'usb', `ip_address` varchar(50) DEFAULT NULL, `port` int(11) DEFAULT NULL, `baud_rate` int(11) DEFAULT NULL, `status` enum('active','inactive') DEFAULT 'active', `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `pos_held_carts` -- CREATE TABLE IF NOT EXISTS `pos_held_carts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `cart_name` varchar(100) NOT NULL, `items_json` text NOT NULL, `customer_id` int(11) DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), `outlet_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `customer_id` (`customer_id`), KEY `fk_pos_carts_outlet` (`outlet_id`), CONSTRAINT `fk_pos_carts_outlet` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`) ON DELETE SET NULL, CONSTRAINT `pos_held_carts_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `pos_transactions` -- CREATE TABLE IF NOT EXISTS `pos_transactions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `transaction_no` varchar(50) NOT NULL, `customer_id` int(11) DEFAULT NULL, `total_amount` decimal(15,3) NOT NULL, `tax_amount` decimal(15,3) DEFAULT 0.000, `discount_code_id` int(11) DEFAULT NULL, `discount_amount` decimal(15,3) DEFAULT 0.000, `loyalty_points_earned` decimal(15,3) DEFAULT 0.000, `loyalty_points_redeemed` decimal(15,3) DEFAULT 0.000, `net_amount` decimal(15,3) NOT NULL DEFAULT 0.000, `payment_method` varchar(100) DEFAULT NULL, `status` enum('completed','refunded','cancelled') DEFAULT 'completed', `created_at` timestamp NULL DEFAULT current_timestamp(), `created_by` int(11) DEFAULT NULL, `outlet_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `transaction_no` (`transaction_no`), KEY `fk_pos_trans_outlet` (`outlet_id`), CONSTRAINT `fk_pos_trans_outlet` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `pos_items` -- CREATE TABLE IF NOT EXISTS `pos_items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `transaction_id` int(11) NOT NULL, `product_id` int(11) NOT NULL, `quantity` decimal(15,3) NOT NULL, `unit_price` decimal(15,3) NOT NULL, `subtotal` decimal(15,3) NOT NULL, PRIMARY KEY (`id`), KEY `transaction_id` (`transaction_id`), CONSTRAINT `pos_items_ibfk_1` FOREIGN KEY (`transaction_id`) REFERENCES `pos_transactions` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `pos_payments` -- CREATE TABLE IF NOT EXISTS `pos_payments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `transaction_id` int(11) NOT NULL, `payment_method` varchar(50) NOT NULL, `amount` decimal(15,3) NOT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `transaction_id` (`transaction_id`), CONSTRAINT `pos_payments_ibfk_1` FOREIGN KEY (`transaction_id`) REFERENCES `pos_transactions` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `purchases` -- CREATE TABLE IF NOT EXISTS `purchases` ( `id` int(11) NOT NULL AUTO_INCREMENT, `supplier_id` int(11) DEFAULT NULL, `invoice_date` date NOT NULL, `payment_type` varchar(100) DEFAULT NULL, `total_amount` decimal(15,3) DEFAULT NULL, `vat_amount` decimal(15,3) DEFAULT NULL, `total_with_vat` decimal(15,3) DEFAULT NULL, `terms_conditions` text DEFAULT NULL, `paid_amount` decimal(15,3) DEFAULT NULL, `status` enum('paid','unpaid','partially_paid') DEFAULT NULL, `register_session_id` int(11) DEFAULT NULL, `due_date` date DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), `outlet_id` int(11) DEFAULT 1, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- -- Table structure for table `purchase_items` -- CREATE TABLE IF NOT EXISTS `purchase_items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `purchase_id` int(11) NOT NULL, `item_id` int(11) NOT NULL, `quantity` decimal(15,2) NOT NULL, `unit_price` decimal(15,3) DEFAULT NULL, `vat_amount` decimal(15,3) DEFAULT NULL, `total_price` decimal(15,3) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- -- Table structure for table `purchase_payments` -- CREATE TABLE IF NOT EXISTS `purchase_payments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `outlet_id` int(11) DEFAULT NULL, `purchase_id` int(11) NOT NULL, `payment_date` date NOT NULL, `amount` decimal(15,3) DEFAULT NULL, `payment_method` varchar(50) DEFAULT NULL, `notes` text DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- -- Table structure for table `quotations` -- CREATE TABLE IF NOT EXISTS `quotations` ( `id` int(11) NOT NULL AUTO_INCREMENT, `customer_id` int(11) DEFAULT NULL, `quotation_date` date NOT NULL, `valid_until` date DEFAULT NULL, `status` enum('pending','converted','expired','cancelled') DEFAULT 'pending', `total_amount` decimal(15,3) DEFAULT 0.000, `vat_amount` decimal(15,3) DEFAULT 0.000, `total_with_vat` decimal(15,3) DEFAULT 0.000, `terms_conditions` text DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), `outlet_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `customer_id` (`customer_id`), KEY `fk_quotations_outlet` (`outlet_id`), CONSTRAINT `fk_quotations_outlet` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`) ON DELETE SET NULL, CONSTRAINT `quotations_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `register_sessions` -- CREATE TABLE IF NOT EXISTS `register_sessions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `register_id` int(11) NOT NULL, `user_id` int(11) NOT NULL, `opening_balance` decimal(15,3) NOT NULL, `closing_balance` decimal(15,3) DEFAULT NULL, `cash_in_hand` decimal(15,3) DEFAULT NULL, `opened_at` timestamp NULL DEFAULT current_timestamp(), `closed_at` timestamp NULL DEFAULT NULL, `status` enum('open','closed') DEFAULT 'open', `notes` text DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `role_groups` -- CREATE TABLE IF NOT EXISTS `role_groups` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `permissions` text DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `role_permissions` -- CREATE TABLE IF NOT EXISTS `role_permissions` ( `id` int(11) NOT NULL AUTO_INCREMENT, `role_id` int(11) NOT NULL, `permission` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `role_id` (`role_id`,`permission`), CONSTRAINT `role_permissions_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `role_groups` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `sales_returns` -- CREATE TABLE IF NOT EXISTS `sales_returns` ( `id` int(11) NOT NULL AUTO_INCREMENT, `invoice_id` int(11) NOT NULL, `customer_id` int(11) DEFAULT NULL, `return_date` date NOT NULL, `total_amount` decimal(15,3) NOT NULL DEFAULT 0.000, `notes` text DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), `outlet_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `invoice_id` (`invoice_id`), KEY `customer_id` (`customer_id`), KEY `fk_sales_returns_outlet` (`outlet_id`), CONSTRAINT `fk_sales_returns_outlet` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`) ON DELETE SET NULL, CONSTRAINT `sales_returns_ibfk_1` FOREIGN KEY (`invoice_id`) REFERENCES `invoices` (`id`) ON DELETE CASCADE, CONSTRAINT `sales_returns_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `settings` -- CREATE TABLE IF NOT EXISTS `settings` ( `key` varchar(50) NOT NULL, `value` text DEFAULT NULL, `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`key`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `stock_categories` -- CREATE TABLE IF NOT EXISTS `stock_categories` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name_en` varchar(255) NOT NULL, `name_ar` varchar(255) NOT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), `outlet_id` int(11) DEFAULT 1, PRIMARY KEY (`id`), KEY `fk_categories_outlet` (`outlet_id`), CONSTRAINT `fk_categories_outlet` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `stock_units` -- CREATE TABLE IF NOT EXISTS `stock_units` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name_en` varchar(255) NOT NULL, `name_ar` varchar(255) NOT NULL, `short_name_en` varchar(50) NOT NULL, `short_name_ar` varchar(50) NOT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), `outlet_id` int(11) DEFAULT 1, PRIMARY KEY (`id`), KEY `fk_units_outlet` (`outlet_id`), CONSTRAINT `fk_units_outlet` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `suppliers` -- CREATE TABLE IF NOT EXISTS `suppliers` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `email` varchar(255) DEFAULT NULL, `phone` varchar(50) DEFAULT NULL, `tax_id` varchar(50) DEFAULT NULL, `balance` decimal(15,3) DEFAULT NULL, `credit_limit` decimal(15,3) DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), `total_spent` decimal(15,3) DEFAULT NULL, `outlet_id` int(11) DEFAULT 1, PRIMARY KEY (`id`), KEY `fk_suppliers_outlet` (`outlet_id`), CONSTRAINT `fk_suppliers_outlet` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- -- Table structure for table `purchase_returns` -- CREATE TABLE IF NOT EXISTS `purchase_returns` ( `id` int(11) NOT NULL AUTO_INCREMENT, `invoice_id` int(11) NOT NULL, `supplier_id` int(11) DEFAULT NULL, `return_date` date NOT NULL, `total_amount` decimal(15,3) NOT NULL DEFAULT 0.000, `notes` text DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), `outlet_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `invoice_id` (`invoice_id`), KEY `supplier_id` (`supplier_id`), KEY `fk_purchase_returns_outlet` (`outlet_id`), CONSTRAINT `fk_purchase_returns_outlet` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`) ON DELETE SET NULL, CONSTRAINT `purchase_returns_ibfk_1` FOREIGN KEY (`invoice_id`) REFERENCES `invoices` (`id`) ON DELETE CASCADE, CONSTRAINT `purchase_returns_ibfk_2` FOREIGN KEY (`supplier_id`) REFERENCES `suppliers` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `stock_items` -- CREATE TABLE IF NOT EXISTS `stock_items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `category_id` int(11) DEFAULT NULL, `unit_id` int(11) DEFAULT NULL, `supplier_id` int(11) DEFAULT NULL, `name_en` varchar(255) NOT NULL, `name_ar` varchar(255) NOT NULL, `sku` varchar(100) DEFAULT NULL, `purchase_price` decimal(15,3) DEFAULT 0.000, `sale_price` decimal(15,3) DEFAULT 0.000, `stock_quantity` decimal(15,2) DEFAULT 0.00, `min_stock_level` decimal(15,2) DEFAULT 0.00, `expiry_date` date DEFAULT NULL, `image_path` varchar(255) DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), `vat_rate` decimal(5,2) DEFAULT 0.00, `is_promotion` tinyint(1) DEFAULT 0, `promotion_start` date DEFAULT NULL, `promotion_end` date DEFAULT NULL, `promotion_percent` decimal(5,2) DEFAULT 0.00, `outlet_id` int(11) DEFAULT 1, PRIMARY KEY (`id`), UNIQUE KEY `unique_sku_outlet` (`sku`,`outlet_id`), KEY `category_id` (`category_id`), KEY `unit_id` (`unit_id`), KEY `fk_stock_items_supplier` (`supplier_id`), KEY `fk_items_outlet` (`outlet_id`), CONSTRAINT `fk_items_outlet` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`) ON DELETE CASCADE, CONSTRAINT `fk_stock_items_supplier` FOREIGN KEY (`supplier_id`) REFERENCES `suppliers` (`id`) ON DELETE SET NULL, CONSTRAINT `stock_items_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `stock_categories` (`id`) ON DELETE SET NULL, CONSTRAINT `stock_items_ibfk_2` FOREIGN KEY (`unit_id`) REFERENCES `stock_units` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `invoice_items` -- CREATE TABLE IF NOT EXISTS `invoice_items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `invoice_id` int(11) NOT NULL, `item_id` int(11) NOT NULL, `quantity` decimal(15,2) NOT NULL, `unit_price` decimal(15,3) DEFAULT 0.000, `vat_amount` decimal(15,3) DEFAULT 0.000, `total_price` decimal(15,3) DEFAULT 0.000, PRIMARY KEY (`id`), KEY `invoice_id` (`invoice_id`), KEY `item_id` (`item_id`), CONSTRAINT `invoice_items_ibfk_1` FOREIGN KEY (`invoice_id`) REFERENCES `invoices` (`id`) ON DELETE CASCADE, CONSTRAINT `invoice_items_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `stock_items` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `lpo_items` -- CREATE TABLE IF NOT EXISTS `lpo_items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `lpo_id` int(11) NOT NULL, `item_id` int(11) NOT NULL, `quantity` decimal(15,3) NOT NULL, `unit_price` decimal(15,3) NOT NULL, `vat_percentage` decimal(5,2) DEFAULT 0.00, `vat_amount` decimal(15,3) DEFAULT 0.000, `total_amount` decimal(15,3) DEFAULT 0.000, PRIMARY KEY (`id`), KEY `lpo_id` (`lpo_id`), KEY `item_id` (`item_id`), CONSTRAINT `lpo_items_ibfk_1` FOREIGN KEY (`lpo_id`) REFERENCES `lpos` (`id`) ON DELETE CASCADE, CONSTRAINT `lpo_items_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `stock_items` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `outlet_stock` -- CREATE TABLE IF NOT EXISTS `outlet_stock` ( `id` int(11) NOT NULL AUTO_INCREMENT, `outlet_id` int(11) NOT NULL, `item_id` int(11) NOT NULL, `quantity` decimal(15,2) DEFAULT 0.00, `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `unique_item_outlet` (`outlet_id`,`item_id`), KEY `fk_outlet_stock_item` (`item_id`), CONSTRAINT `fk_outlet_stock_item` FOREIGN KEY (`item_id`) REFERENCES `stock_items` (`id`) ON DELETE CASCADE, CONSTRAINT `fk_outlet_stock_outlet` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `purchase_return_items` -- CREATE TABLE IF NOT EXISTS `purchase_return_items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `return_id` int(11) NOT NULL, `item_id` int(11) NOT NULL, `quantity` decimal(15,2) NOT NULL, `unit_price` decimal(15,3) NOT NULL, `total_price` decimal(15,3) NOT NULL, PRIMARY KEY (`id`), KEY `return_id` (`return_id`), KEY `item_id` (`item_id`), CONSTRAINT `purchase_return_items_ibfk_1` FOREIGN KEY (`return_id`) REFERENCES `purchase_returns` (`id`) ON DELETE CASCADE, CONSTRAINT `purchase_return_items_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `stock_items` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `quotation_items` -- CREATE TABLE IF NOT EXISTS `quotation_items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `quotation_id` int(11) NOT NULL, `item_id` int(11) NOT NULL, `quantity` decimal(15,2) NOT NULL, `unit_price` decimal(15,3) DEFAULT 0.000, `total_price` decimal(15,3) DEFAULT 0.000, PRIMARY KEY (`id`), KEY `quotation_id` (`quotation_id`), KEY `item_id` (`item_id`), CONSTRAINT `quotation_items_ibfk_1` FOREIGN KEY (`quotation_id`) REFERENCES `quotations` (`id`) ON DELETE CASCADE, CONSTRAINT `quotation_items_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `stock_items` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `sales_return_items` -- CREATE TABLE IF NOT EXISTS `sales_return_items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `return_id` int(11) NOT NULL, `item_id` int(11) NOT NULL, `quantity` decimal(15,2) NOT NULL, `unit_price` decimal(15,3) NOT NULL, `total_price` decimal(15,3) NOT NULL, PRIMARY KEY (`id`), KEY `return_id` (`return_id`), KEY `item_id` (`item_id`), CONSTRAINT `sales_return_items_ibfk_1` FOREIGN KEY (`return_id`) REFERENCES `sales_returns` (`id`) ON DELETE CASCADE, CONSTRAINT `sales_return_items_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `stock_items` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `system_license` -- CREATE TABLE IF NOT EXISTS `system_license` ( `id` int(11) NOT NULL AUTO_INCREMENT, `license_key` varchar(255) NOT NULL, `activation_token` text DEFAULT NULL, `fingerprint` varchar(255) DEFAULT NULL, `status` enum('pending','active','expired','suspended','trial') DEFAULT 'pending', `activated_at` datetime DEFAULT NULL, `last_checked_at` datetime DEFAULT NULL, `created_at` timestamp NULL DEFAULT current_timestamp(), `trial_started_at` datetime DEFAULT NULL, `allowed_activations` int(11) DEFAULT 1, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `users` -- CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `outlet_id` int(11) DEFAULT NULL, `group_id` int(11) DEFAULT NULL, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `email` varchar(255) DEFAULT NULL, `phone` varchar(20) DEFAULT NULL, `profile_pic` varchar(255) DEFAULT NULL, `theme` varchar(20) DEFAULT 'default', `status` enum('active','inactive') DEFAULT 'active', `created_at` timestamp NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`), KEY `group_id` (`group_id`), CONSTRAINT `users_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `role_groups` (`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `user_outlets` -- CREATE TABLE IF NOT EXISTS `user_outlets` ( `user_id` int(11) NOT NULL, `outlet_id` int(11) NOT NULL, PRIMARY KEY (`user_id`,`outlet_id`), KEY `fk_user_outlets_outlet` (`outlet_id`), CONSTRAINT `fk_user_outlets_outlet` FOREIGN KEY (`outlet_id`) REFERENCES `outlets` (`id`) ON DELETE CASCADE, CONSTRAINT `fk_user_outlets_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;