38471-vm/complete_schema.sql
2026-02-21 08:32:30 +00:00

1425 lines
53 KiB
SQL

/*M!999999\- enable the sandbox mode */
-- MariaDB dump 10.19 Distrib 10.11.14-MariaDB, for debian-linux-gnu (x86_64)
--
-- Host: 127.0.0.1 Database: app_38471
-- ------------------------------------------------------
-- Server version 10.11.14-MariaDB-0+deb12u2
/*!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 */;
--
-- Table structure for table `acc_accounts`
--
DROP TABLE IF EXISTS `acc_accounts`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=46 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `acc_journal_entries`
--
DROP TABLE IF EXISTS `acc_journal_entries`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=102 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `acc_ledger`
--
DROP TABLE IF EXISTS `acc_ledger`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=309 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `activations`
--
DROP TABLE IF EXISTS `activations`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `cash_registers`
--
DROP TABLE IF EXISTS `cash_registers`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `customers`
--
DROP TABLE IF EXISTS `customers`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `customers` (
`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 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 AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `discount_codes`
--
DROP TABLE IF EXISTS `discount_codes`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `expense_categories`
--
DROP TABLE IF EXISTS `expense_categories`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `expenses`
--
DROP TABLE IF EXISTS `expenses`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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(),
PRIMARY KEY (`id`),
KEY `category_id` (`category_id`),
CONSTRAINT `expenses_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `expense_categories` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `hr_attendance`
--
DROP TABLE IF EXISTS `hr_attendance`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `hr_biometric_devices`
--
DROP TABLE IF EXISTS `hr_biometric_devices`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `hr_biometric_logs`
--
DROP TABLE IF EXISTS `hr_biometric_logs`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `hr_departments`
--
DROP TABLE IF EXISTS `hr_departments`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `hr_employees`
--
DROP TABLE IF EXISTS `hr_employees`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `hr_payroll`
--
DROP TABLE IF EXISTS `hr_payroll`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `invoice_items`
--
DROP TABLE IF EXISTS `invoice_items`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=39 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `invoices`
--
DROP TABLE IF EXISTS `invoices`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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,
`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','refunded','cancelled') DEFAULT 'unpaid',
`register_session_id` int(11) DEFAULT NULL,
`due_date` date 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,
PRIMARY KEY (`id`),
KEY `customer_id` (`customer_id`),
CONSTRAINT `invoices_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `licenses`
--
DROP TABLE IF EXISTS `licenses`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `loyalty_transactions`
--
DROP TABLE IF EXISTS `loyalty_transactions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `lpo_items`
--
DROP TABLE IF EXISTS `lpo_items`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `lpos`
--
DROP TABLE IF EXISTS `lpos`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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(),
PRIMARY KEY (`id`),
KEY `lpos_ibfk_1` (`supplier_id`),
CONSTRAINT `lpos_ibfk_1` FOREIGN KEY (`supplier_id`) REFERENCES `suppliers` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `migrations`
--
DROP TABLE IF EXISTS `migrations`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=35 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `payment_methods`
--
DROP TABLE IF EXISTS `payment_methods`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `payments`
--
DROP TABLE IF EXISTS `payments`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `payments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`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(),
`transaction_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `invoice_id` (`invoice_id`),
CONSTRAINT `payments_ibfk_1` FOREIGN KEY (`invoice_id`) REFERENCES `invoices` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `pos_devices`
--
DROP TABLE IF EXISTS `pos_devices`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `pos_held_carts`
--
DROP TABLE IF EXISTS `pos_held_carts`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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(),
PRIMARY KEY (`id`),
KEY `customer_id` (`customer_id`),
CONSTRAINT `pos_held_carts_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `pos_items`
--
DROP TABLE IF EXISTS `pos_items`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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,
`vat_rate` decimal(5,2) DEFAULT 0.00,
`vat_amount` decimal(15,3) DEFAULT 0.000,
`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 AUTO_INCREMENT=73 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `pos_payments`
--
DROP TABLE IF EXISTS `pos_payments`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=43 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `pos_transactions`
--
DROP TABLE IF EXISTS `pos_transactions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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,
`register_session_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `transaction_no` (`transaction_no`)
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `purchase_items`
--
DROP TABLE IF EXISTS `purchase_items`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `purchase_payments`
--
DROP TABLE IF EXISTS `purchase_payments`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `purchase_payments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`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 AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `purchase_return_items`
--
DROP TABLE IF EXISTS `purchase_return_items`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `purchase_returns`
--
DROP TABLE IF EXISTS `purchase_returns`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `purchase_returns` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`purchase_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(),
PRIMARY KEY (`id`),
KEY `purchase_returns_ibfk_1` (`purchase_id`),
KEY `purchase_returns_ibfk_2` (`supplier_id`),
CONSTRAINT `purchase_returns_ibfk_1` FOREIGN KEY (`purchase_id`) REFERENCES `purchases` (`id`) ON DELETE CASCADE,
CONSTRAINT `purchase_returns_ibfk_2` FOREIGN KEY (`supplier_id`) REFERENCES `suppliers` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `purchases`
--
DROP TABLE IF EXISTS `purchases`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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(),
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `quotation_items`
--
DROP TABLE IF EXISTS `quotation_items`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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,
`vat_amount` 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 AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `quotations`
--
DROP TABLE IF EXISTS `quotations`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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(),
PRIMARY KEY (`id`),
KEY `customer_id` (`customer_id`),
CONSTRAINT `quotations_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `register_sessions`
--
DROP TABLE IF EXISTS `register_sessions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `role_groups`
--
DROP TABLE IF EXISTS `role_groups`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `role_groups` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`created_at` timestamp NULL DEFAULT current_timestamp(),
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `role_permissions`
--
DROP TABLE IF EXISTS `role_permissions`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=218 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `sales_return_items`
--
DROP TABLE IF EXISTS `sales_return_items`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `sales_returns`
--
DROP TABLE IF EXISTS `sales_returns`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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(),
PRIMARY KEY (`id`),
KEY `invoice_id` (`invoice_id`),
KEY `customer_id` (`customer_id`),
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 AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `settings`
--
DROP TABLE IF EXISTS `settings`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `stock_categories`
--
DROP TABLE IF EXISTS `stock_categories`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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(),
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `stock_items`
--
DROP TABLE IF EXISTS `stock_items`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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,
PRIMARY KEY (`id`),
UNIQUE KEY `sku` (`sku`),
KEY `category_id` (`category_id`),
KEY `unit_id` (`unit_id`),
KEY `fk_stock_items_supplier` (`supplier_id`),
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 AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `stock_units`
--
DROP TABLE IF EXISTS `stock_units`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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(),
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `suppliers`
--
DROP TABLE IF EXISTS `suppliers`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `system_license`
--
DROP TABLE IF EXISTS `system_license`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `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 AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `users`
--
DROP TABLE IF EXISTS `users`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8mb4 */;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`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,
`status` enum('active','inactive') DEFAULT 'active',
`created_at` timestamp NULL DEFAULT current_timestamp(),
`theme` varchar(50) DEFAULT 'default',
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 AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!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 */;
-- Dump completed on 2026-02-21 7:13:34
/*M!999999\- enable the sandbox mode */
-- MariaDB dump 10.19 Distrib 10.11.14-MariaDB, for debian-linux-gnu (x86_64)
--
-- Host: 127.0.0.1 Database: app_38471
-- ------------------------------------------------------
-- Server version 10.11.14-MariaDB-0+deb12u2
/*!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_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 */;
--
-- Dumping data for table `migrations`
--
LOCK TABLES `migrations` WRITE;
/*!40000 ALTER TABLE `migrations` DISABLE KEYS */;
INSERT INTO `migrations` VALUES
(1,'20260216_add_invoices.sql','2026-02-21 06:58:26'),
(2,'20260216_add_quotations.sql','2026-02-21 06:58:26'),
(3,'20260216_add_stock_tables.sql','2026-02-21 06:58:26'),
(4,'20260216_pos_advanced_features.sql','2026-02-21 06:58:26'),
(5,'20260216_setup_pos_full.sql','2026-02-21 06:58:27'),
(6,'20260216_update_precision_3_decimal.sql','2026-02-21 06:58:28'),
(7,'20260217_accounting_module.sql','2026-02-21 06:58:28'),
(8,'20260217_biometric_devices.sql','2026-02-21 06:58:28'),
(9,'20260217_hr_module.sql','2026-02-21 06:58:28'),
(10,'20260217_purchase_returns.sql','2026-02-21 06:58:28'),
(11,'20260217_sales_returns.sql','2026-02-21 06:58:28'),
(12,'20260217_vat_accounts.sql','2026-02-21 06:58:28'),
(13,'20260218_create_license_table.sql','2026-02-21 06:58:28'),
(14,'20260218_pos_payments.sql','2026-02-21 06:58:28'),
(15,'20260220_license_server_schema.sql','2026-02-21 06:58:28'),
(16,'20260220_unify_pos_sales.sql','2026-02-21 06:58:29'),
(17,'fix_lpo_foreign_key.sql','2026-02-21 06:58:29'),
(18,'20260216_add_credit_limit.sql','2026-02-21 07:12:15'),
(19,'20260216_add_invoice_status.sql','2026-02-21 07:12:15'),
(20,'20260216_add_payments_table.sql','2026-02-21 07:12:15'),
(21,'20260216_update_invoices_payment.sql','2026-02-21 07:12:15'),
(22,'20260216_vat_and_profile.sql','2026-02-21 07:12:15'),
(23,'20260217_biometric_attendance.sql','2026-02-21 07:12:15'),
(24,'20260217_biometric_logs_update.sql','2026-02-21 07:12:15'),
(25,'20260217_hr_payroll_unique.sql','2026-02-21 07:12:15'),
(26,'20260218_modern_loyalty_system.sql','2026-02-21 07:12:15'),
(27,'20260219_add_license_fields.sql','2026-02-21 07:12:15'),
(28,'20260219_add_trial_logic.sql','2026-02-21 07:12:15'),
(29,'20260219_add_vat_to_pos_items.sql','2026-02-21 07:12:15'),
(30,'20260219_fix_vat_columns.sql','2026-02-21 07:12:15'),
(31,'20260220_add_due_date_to_invoices.sql','2026-02-21 07:12:15'),
(32,'20260220_split_customers_suppliers.sql','2026-02-21 07:12:15'),
(33,'20260220_split_invoices_purchases.sql','2026-02-21 07:12:15'),
(34,'20260220_unify_pos_sales.php','2026-02-21 07:13:28');
/*!40000 ALTER TABLE `migrations` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping data for table `payment_methods`
--
LOCK TABLES `payment_methods` WRITE;
/*!40000 ALTER TABLE `payment_methods` DISABLE KEYS */;
INSERT INTO `payment_methods` VALUES
(1,'Cash','كاش','2026-02-16 08:33:31'),
(2,'Credit Card','بطاقة ائتمان','2026-02-16 08:33:53'),
(3,'Bank Transfer','تحويل بنكي','2026-02-16 08:34:17');
/*!40000 ALTER TABLE `payment_methods` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping data for table `role_groups`
--
LOCK TABLES `role_groups` WRITE;
/*!40000 ALTER TABLE `role_groups` DISABLE KEYS */;
INSERT INTO `role_groups` VALUES
(1,'Administrator','2026-02-18 05:30:12'),
(4,'Cashier','2026-02-18 09:32:14'),
(5,'Admin','2026-02-18 09:33:29'),
(6,'Accountant','2026-02-18 09:34:03');
/*!40000 ALTER TABLE `role_groups` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping data for table `role_permissions`
--
LOCK TABLES `role_permissions` WRITE;
/*!40000 ALTER TABLE `role_permissions` DISABLE KEYS */;
INSERT INTO `role_permissions` VALUES
(58,1,'accounting_add'),
(60,1,'accounting_delete'),
(59,1,'accounting_edit'),
(57,1,'accounting_view'),
(154,1,'backups_add'),
(156,1,'backups_delete'),
(155,1,'backups_edit'),
(153,1,'backups_view'),
(70,1,'balance_sheet_add'),
(72,1,'balance_sheet_delete'),
(71,1,'balance_sheet_edit'),
(69,1,'balance_sheet_view'),
(138,1,'cash_registers_add'),
(140,1,'cash_registers_delete'),
(139,1,'cash_registers_edit'),
(137,1,'cash_registers_view'),
(102,1,'cashflow_report_add'),
(104,1,'cashflow_report_delete'),
(103,1,'cashflow_report_edit'),
(101,1,'cashflow_report_view'),
(10,1,'categories_add'),
(12,1,'categories_delete'),
(11,1,'categories_edit'),
(9,1,'categories_view'),
(150,1,'customer_display_settings_add'),
(152,1,'customer_display_settings_delete'),
(151,1,'customer_display_settings_edit'),
(149,1,'customer_display_settings_view'),
(94,1,'customer_statement_add'),
(96,1,'customer_statement_delete'),
(95,1,'customer_statement_edit'),
(93,1,'customer_statement_view'),
(18,1,'customers_add'),
(20,1,'customers_delete'),
(19,1,'customers_edit'),
(17,1,'customers_view'),
(2,1,'dashboard_add'),
(4,1,'dashboard_delete'),
(3,1,'dashboard_edit'),
(1,1,'dashboard_view'),
(122,1,'devices_add'),
(124,1,'devices_delete'),
(123,1,'devices_edit'),
(121,1,'devices_view'),
(50,1,'expense_categories_add'),
(52,1,'expense_categories_delete'),
(51,1,'expense_categories_edit'),
(49,1,'expense_categories_view'),
(54,1,'expenses_add'),
(56,1,'expenses_delete'),
(55,1,'expenses_edit'),
(53,1,'expenses_view'),
(106,1,'expiry_report_add'),
(108,1,'expiry_report_delete'),
(107,1,'expiry_report_edit'),
(105,1,'expiry_report_view'),
(86,1,'hr_attendance_add'),
(88,1,'hr_attendance_delete'),
(87,1,'hr_attendance_edit'),
(85,1,'hr_attendance_view'),
(78,1,'hr_departments_add'),
(80,1,'hr_departments_delete'),
(79,1,'hr_departments_edit'),
(77,1,'hr_departments_view'),
(82,1,'hr_employees_add'),
(84,1,'hr_employees_delete'),
(83,1,'hr_employees_edit'),
(81,1,'hr_employees_view'),
(90,1,'hr_payroll_add'),
(92,1,'hr_payroll_delete'),
(91,1,'hr_payroll_edit'),
(89,1,'hr_payroll_view'),
(6,1,'items_add'),
(8,1,'items_delete'),
(7,1,'items_edit'),
(5,1,'items_view'),
(158,1,'logs_add'),
(160,1,'logs_delete'),
(159,1,'logs_edit'),
(157,1,'logs_view'),
(110,1,'low_stock_report_add'),
(112,1,'low_stock_report_delete'),
(111,1,'low_stock_report_edit'),
(109,1,'low_stock_report_view'),
(114,1,'loyalty_history_add'),
(116,1,'loyalty_history_delete'),
(115,1,'loyalty_history_edit'),
(113,1,'loyalty_history_view'),
(211,1,'lpos_add'),
(213,1,'lpos_delete'),
(212,1,'lpos_edit'),
(210,1,'lpos_view'),
(118,1,'payment_methods_add'),
(120,1,'payment_methods_delete'),
(119,1,'payment_methods_edit'),
(117,1,'payment_methods_view'),
(26,1,'pos_add'),
(28,1,'pos_delete'),
(27,1,'pos_edit'),
(25,1,'pos_view'),
(66,1,'profit_loss_add'),
(68,1,'profit_loss_delete'),
(67,1,'profit_loss_edit'),
(65,1,'profit_loss_view'),
(46,1,'purchase_returns_add'),
(48,1,'purchase_returns_delete'),
(47,1,'purchase_returns_edit'),
(45,1,'purchase_returns_view'),
(42,1,'purchases_add'),
(44,1,'purchases_delete'),
(43,1,'purchases_edit'),
(41,1,'purchases_view'),
(38,1,'quotations_add'),
(40,1,'quotations_delete'),
(39,1,'quotations_edit'),
(37,1,'quotations_view'),
(142,1,'register_sessions_add'),
(144,1,'register_sessions_delete'),
(143,1,'register_sessions_edit'),
(141,1,'register_sessions_view'),
(130,1,'role_groups_add'),
(132,1,'role_groups_delete'),
(131,1,'role_groups_edit'),
(129,1,'role_groups_view'),
(30,1,'sales_add'),
(32,1,'sales_delete'),
(31,1,'sales_edit'),
(34,1,'sales_returns_add'),
(36,1,'sales_returns_delete'),
(35,1,'sales_returns_edit'),
(33,1,'sales_returns_view'),
(29,1,'sales_view'),
(146,1,'scale_devices_add'),
(148,1,'scale_devices_delete'),
(147,1,'scale_devices_edit'),
(145,1,'scale_devices_view'),
(126,1,'settings_add'),
(128,1,'settings_delete'),
(127,1,'settings_edit'),
(125,1,'settings_view'),
(98,1,'supplier_statement_add'),
(100,1,'supplier_statement_delete'),
(99,1,'supplier_statement_edit'),
(97,1,'supplier_statement_view'),
(22,1,'suppliers_add'),
(24,1,'suppliers_delete'),
(23,1,'suppliers_edit'),
(21,1,'suppliers_view'),
(62,1,'trial_balance_add'),
(64,1,'trial_balance_delete'),
(63,1,'trial_balance_edit'),
(61,1,'trial_balance_view'),
(14,1,'units_add'),
(16,1,'units_delete'),
(15,1,'units_edit'),
(13,1,'units_view'),
(134,1,'users_add'),
(136,1,'users_delete'),
(135,1,'users_edit'),
(133,1,'users_view'),
(74,1,'vat_report_add'),
(76,1,'vat_report_delete'),
(75,1,'vat_report_edit'),
(73,1,'vat_report_view'),
(162,4,'items_add'),
(161,4,'items_view'),
(164,4,'pos_add'),
(163,4,'pos_view'),
(166,4,'sales_add'),
(165,4,'sales_view'),
(174,5,'customers_add'),
(175,5,'customers_edit'),
(173,5,'customers_view'),
(186,5,'hr_add'),
(188,5,'hr_delete'),
(187,5,'hr_edit'),
(185,5,'hr_view'),
(215,5,'lpos_add'),
(217,5,'lpos_delete'),
(216,5,'lpos_edit'),
(214,5,'lpos_view'),
(168,5,'pos_add'),
(169,5,'pos_edit'),
(167,5,'pos_view'),
(183,5,'purchases_add'),
(184,5,'purchases_edit'),
(182,5,'purchases_view'),
(171,5,'quotations_add'),
(172,5,'quotations_edit'),
(170,5,'quotations_view'),
(180,5,'sales_add'),
(181,5,'sales_edit'),
(179,5,'sales_view'),
(177,5,'suppliers_add'),
(178,5,'suppliers_edit'),
(176,5,'suppliers_view'),
(189,5,'users_view'),
(191,6,'accounting_add'),
(193,6,'accounting_delete'),
(192,6,'accounting_edit'),
(190,6,'accounting_view'),
(203,6,'balance_sheet_add'),
(205,6,'balance_sheet_delete'),
(204,6,'balance_sheet_edit'),
(202,6,'balance_sheet_view'),
(199,6,'profit_loss_add'),
(201,6,'profit_loss_delete'),
(200,6,'profit_loss_edit'),
(198,6,'profit_loss_view'),
(195,6,'trial_balance_add'),
(197,6,'trial_balance_delete'),
(196,6,'trial_balance_edit'),
(194,6,'trial_balance_view'),
(207,6,'vat_report_add'),
(209,6,'vat_report_delete'),
(208,6,'vat_report_edit'),
(206,6,'vat_report_view');
/*!40000 ALTER TABLE `role_permissions` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping data for table `settings`
--
LOCK TABLES `settings` WRITE;
/*!40000 ALTER TABLE `settings` DISABLE KEYS */;
INSERT INTO `settings` VALUES
('allow_zero_stock_sell','1','2026-02-18 05:23:57'),
('bank_name','','2026-02-16 09:49:27'),
('company_address','AL Hamra\r\nOman','2026-02-16 10:05:55'),
('company_email','aalabry@gmail.com','2026-02-16 09:49:27'),
('company_iban','','2026-02-16 09:49:27'),
('company_logo','uploads/logo.png','2026-02-16 09:49:48'),
('company_name','Bahjet Al-Safa Trading','2026-02-16 09:49:26'),
('company_phone','99359472','2026-02-16 09:49:26'),
('company_website','','2026-02-16 09:49:27'),
('cr_number','','2026-02-16 09:18:20'),
('customer_display_greeting_text','أهلا وسهلاً بكــم','2026-02-18 17:02:02'),
('customer_display_greeting_title','Welcome','2026-02-18 17:02:02'),
('default_vat_rate','5','2026-02-16 09:49:27'),
('favicon','uploads/favicon.png','2026-02-16 10:09:59'),
('invoice_footer','','2026-02-16 09:49:27'),
('loyalty_enabled','0','2026-02-18 05:06:52'),
('loyalty_points_per_unit','1','2026-02-18 05:06:52'),
('loyalty_redeem_points_per_unit','100','2026-02-18 05:06:52'),
('manager_name','','2026-02-16 09:49:27'),
('registration_no','','2026-02-16 10:05:55'),
('vat_enabled','1','2026-02-16 09:18:20'),
('vat_number','OM25418','2026-02-16 09:49:27');
/*!40000 ALTER TABLE `settings` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping data for table `stock_units`
--
LOCK TABLES `stock_units` WRITE;
/*!40000 ALTER TABLE `stock_units` DISABLE KEYS */;
INSERT INTO `stock_units` VALUES
(1,'piece','حبة','pcs','حبة','2026-02-16 08:01:29'),
(2,'Box','صندوق','Box','صندوق','2026-02-16 08:01:55'),
(3,'Kilogram','كيلوجرام','Kg','ك.ج','2026-02-16 08:02:53');
/*!40000 ALTER TABLE `stock_units` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_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 */;
-- Dump completed on 2026-02-21 7:13:34