commit;
set autocommit=0;
commit;

--
-- Table structure for table `bank_categorization_rules`
--

CREATE TABLE `bank_categorization_rules` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `rule_name` varchar(200) NOT NULL,
  `match_type` enum('contains','equals','starts_with','ends_with','regex') DEFAULT 'contains',
  `match_field` enum('description','reference','check_number','amount') DEFAULT 'description',
  `match_value` varchar(500) NOT NULL,
  `min_amount` decimal(15,2) DEFAULT NULL,
  `max_amount` decimal(15,2) DEFAULT NULL,
  `transaction_type` enum('debit','credit','both') DEFAULT 'both',
  `account_id` int(10) unsigned NOT NULL COMMENT 'Assign to this GL account',
  `description_template` varchar(500) DEFAULT NULL COMMENT 'Optional description override',
  `priority` int(11) DEFAULT 100 COMMENT 'Lower number = higher priority',
  `is_active` tinyint(1) DEFAULT 1,
  `match_count` int(11) DEFAULT 0 COMMENT 'How many times this rule has matched',
  `last_matched_at` timestamp NULL DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `created_by` int(10) unsigned DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_active` (`is_active`),
  KEY `idx_priority` (`priority`),
  KEY `idx_match_field` (`match_field`),
  KEY `account_id` (`account_id`),
  KEY `created_by` (`created_by`),
  CONSTRAINT `bank_categorization_rules_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `chart_of_accounts` (`id`) ON DELETE CASCADE,
  CONSTRAINT `bank_categorization_rules_ibfk_2` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `bank_categorization_rules`
--

set autocommit=0;
commit;

--
-- Table structure for table `bank_import_batches`
--

CREATE TABLE `bank_import_batches` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `bank_account_id` int(10) unsigned NOT NULL,
  `file_name` varchar(500) NOT NULL,
  `file_type` enum('csv','ofx','qfx','qbo') NOT NULL,
  `file_path` varchar(500) DEFAULT NULL,
  `total_transactions` int(11) DEFAULT 0,
  `imported_count` int(11) DEFAULT 0,
  `duplicate_count` int(11) DEFAULT 0,
  `error_count` int(11) DEFAULT 0,
  `status` enum('pending','processing','completed','failed') DEFAULT 'pending',
  `error_message` text DEFAULT NULL,
  `transaction_date_start` date DEFAULT NULL,
  `transaction_date_end` date DEFAULT NULL,
  `imported_at` timestamp NULL DEFAULT current_timestamp(),
  `imported_by` int(10) unsigned DEFAULT NULL,
  `processed_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_bank_account` (`bank_account_id`),
  KEY `idx_status` (`status`),
  KEY `idx_imported_at` (`imported_at`),
  KEY `imported_by` (`imported_by`),
  CONSTRAINT `bank_import_batches_ibfk_1` FOREIGN KEY (`bank_account_id`) REFERENCES `bank_accounts` (`id`) ON DELETE CASCADE,
  CONSTRAINT `bank_import_batches_ibfk_2` FOREIGN KEY (`imported_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `bank_import_batches`
--

set autocommit=0;
commit;

--
-- Table structure for table `bank_import_transactions`
--

CREATE TABLE `bank_import_transactions` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `batch_id` int(10) unsigned NOT NULL,
  `bank_account_id` int(10) unsigned NOT NULL,
  `transaction_date` date NOT NULL,
  `post_date` date DEFAULT NULL,
  `description` varchar(500) NOT NULL,
  `reference_number` varchar(100) DEFAULT NULL,
  `check_number` varchar(50) DEFAULT NULL,
  `amount` decimal(15,2) NOT NULL,
  `transaction_type` enum('debit','credit') NOT NULL,
  `running_balance` decimal(15,2) DEFAULT NULL,
  `is_categorized` tinyint(1) DEFAULT 0,
  `account_id` int(10) unsigned DEFAULT NULL COMMENT 'Assigned chart of accounts',
  `category_rule_id` int(10) unsigned DEFAULT NULL COMMENT 'Rule that categorized this',
  `status` enum('pending','categorized','matched','imported','ignored') DEFAULT 'pending',
  `is_duplicate` tinyint(1) DEFAULT 0,
  `duplicate_of_id` int(10) unsigned DEFAULT NULL COMMENT 'Link to existing journal entry',
  `journal_entry_id` int(11) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_batch` (`batch_id`),
  KEY `idx_bank_account` (`bank_account_id`),
  KEY `idx_transaction_date` (`transaction_date`),
  KEY `idx_status` (`status`),
  KEY `idx_is_duplicate` (`is_duplicate`),
  KEY `idx_description` (`description`(255)),
  KEY `account_id` (`account_id`),
  KEY `category_rule_id` (`category_rule_id`),
  CONSTRAINT `bank_import_transactions_ibfk_1` FOREIGN KEY (`batch_id`) REFERENCES `bank_import_batches` (`id`) ON DELETE CASCADE,
  CONSTRAINT `bank_import_transactions_ibfk_2` FOREIGN KEY (`bank_account_id`) REFERENCES `bank_accounts` (`id`) ON DELETE CASCADE,
  CONSTRAINT `bank_import_transactions_ibfk_3` FOREIGN KEY (`account_id`) REFERENCES `chart_of_accounts` (`id`) ON DELETE SET NULL,
  CONSTRAINT `bank_import_transactions_ibfk_4` FOREIGN KEY (`category_rule_id`) REFERENCES `bank_categorization_rules` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `bank_import_transactions`
--

set autocommit=0;
commit;

--
-- Table structure for table `bank_reconciliations`
--

CREATE TABLE `bank_reconciliations` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `bank_account_id` int(10) unsigned NOT NULL,
  `reconciliation_date` date NOT NULL,
  `statement_date` date NOT NULL,
  `statement_balance` decimal(15,2) NOT NULL,
  `book_balance` decimal(15,2) NOT NULL,
  `difference` decimal(15,2) DEFAULT 0.00,
  `status` enum('in_progress','completed','cancelled') DEFAULT 'in_progress',
  `notes` text DEFAULT NULL,
  `completed_by` int(10) unsigned DEFAULT NULL,
  `completed_at` timestamp NULL DEFAULT NULL,
  `created_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `bank_account_id` (`bank_account_id`),
  KEY `reconciliation_date` (`reconciliation_date`),
  KEY `status` (`status`),
  KEY `completed_by` (`completed_by`),
  KEY `created_by` (`created_by`),
  CONSTRAINT `bank_reconciliations_ibfk_1` FOREIGN KEY (`bank_account_id`) REFERENCES `bank_accounts` (`id`) ON DELETE CASCADE,
  CONSTRAINT `bank_reconciliations_ibfk_2` FOREIGN KEY (`completed_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  CONSTRAINT `bank_reconciliations_ibfk_3` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `bank_reconciliations`
--

set autocommit=0;
commit;

--
-- Table structure for table `bank_transactions`
--

CREATE TABLE `bank_transactions` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `bank_account_id` int(10) unsigned NOT NULL,
  `transaction_date` date NOT NULL,
  `transaction_type` enum('deposit','withdrawal','transfer','fee','interest','adjustment') NOT NULL,
  `amount` decimal(15,2) NOT NULL,
  `reference_number` varchar(100) DEFAULT NULL,
  `payee_payer` varchar(255) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `category` varchar(100) DEFAULT NULL,
  `journal_entry_id` int(10) unsigned DEFAULT NULL COMMENT 'Link to journal entry',
  `transfer_to_account_id` int(10) unsigned DEFAULT NULL COMMENT 'For transfers between bank accounts',
  `is_reconciled` tinyint(1) DEFAULT 0,
  `reconciliation_id` int(10) unsigned DEFAULT NULL,
  `created_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `bank_account_id` (`bank_account_id`),
  KEY `transaction_date` (`transaction_date`),
  KEY `is_reconciled` (`is_reconciled`),
  KEY `journal_entry_id` (`journal_entry_id`),
  KEY `transfer_to_account_id` (`transfer_to_account_id`),
  KEY `reconciliation_id` (`reconciliation_id`),
  KEY `created_by` (`created_by`),
  CONSTRAINT `bank_transactions_ibfk_1` FOREIGN KEY (`bank_account_id`) REFERENCES `bank_accounts` (`id`) ON DELETE CASCADE,
  CONSTRAINT `bank_transactions_ibfk_2` FOREIGN KEY (`journal_entry_id`) REFERENCES `journal_entries` (`id`) ON DELETE SET NULL,
  CONSTRAINT `bank_transactions_ibfk_3` FOREIGN KEY (`transfer_to_account_id`) REFERENCES `bank_accounts` (`id`) ON DELETE SET NULL,
  CONSTRAINT `bank_transactions_ibfk_4` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  CONSTRAINT `fk_bank_transactions_reconciliation` FOREIGN KEY (`reconciliation_id`) REFERENCES `bank_reconciliations` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `bank_transactions`
--

set autocommit=0;
commit;

--
-- Table structure for table `battery_quote_documents`
--

CREATE TABLE `battery_quote_documents` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `battery_quote_id` int(11) NOT NULL,
  `file_name` varchar(255) NOT NULL,
  `original_name` varchar(255) NOT NULL,
  `file_path` varchar(500) NOT NULL,
  `file_type` varchar(100) DEFAULT NULL,
  `file_size` int(11) DEFAULT NULL COMMENT 'Size in bytes',
  `document_type` varchar(50) DEFAULT NULL COMMENT 'bom, sketch, specification, other',
  `description` text DEFAULT NULL,
  `uploaded_by` int(11) NOT NULL,
  `uploaded_at` datetime DEFAULT current_timestamp(),
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_battery_quote` (`battery_quote_id`),
  KEY `idx_uploaded_by` (`uploaded_by`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `battery_quote_documents`
--

set autocommit=0;
commit;

--
-- Table structure for table `battery_quotes`
--

CREATE TABLE `battery_quotes` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `quote_number` varchar(20) DEFAULT NULL,
  `customer_id` int(10) unsigned DEFAULT NULL,
  `location_id` int(10) unsigned NOT NULL,
  `quote_id` int(10) unsigned DEFAULT NULL,
  `customer_name` varchar(255) NOT NULL,
  `customer_type` enum('Government & Defense','OEM & Strategic Partners','Commercial & Industrial','Utilities & Grid-Energy Infrastructure','Consumer, Residential & Mobility') NOT NULL,
  `order_date` date NOT NULL,
  `start_month` int(11) DEFAULT NULL,
  `start_date` date DEFAULT NULL,
  `nominal_pack_voltage` decimal(10,2) NOT NULL COMMENT 'Voltage in V',
  `nominal_pack_capacity` decimal(10,2) NOT NULL COMMENT 'Capacity in Ah',
  `cell_type` varchar(100) NOT NULL COMMENT 'e.g., LFP 280Ah Prismatic',
  `requires_container_integration` enum('Yes','No') DEFAULT 'No',
  `cell_voltage` decimal(10,2) NOT NULL COMMENT 'V',
  `cell_capacity` decimal(10,2) NOT NULL COMMENT 'Ah',
  `cells_in_series` int(11) NOT NULL,
  `cells_in_parallel` int(11) NOT NULL,
  `battery_configuration` varchar(50) DEFAULT NULL COMMENT 'e.g., 8 S 1 P',
  `cells_per_pack` int(11) NOT NULL,
  `assembly_line` varchar(100) DEFAULT NULL COMMENT 'e.g., L. Prismatic, Small Cylindrical',
  `kwh_per_pack` decimal(15,6) DEFAULT NULL COMMENT 'Calculated kWh per pack',
  `packs_per_container` int(11) DEFAULT 0,
  `cells_container` int(11) DEFAULT 0,
  `kwh_per_container` decimal(15,6) DEFAULT 0.000000,
  `total_packs_beginning` int(11) NOT NULL COMMENT 'Initial pack quantity',
  `packs_per_hour` decimal(10,2) DEFAULT NULL COMMENT 'Production rate',
  `beginning_volume_kwh` decimal(15,2) DEFAULT NULL COMMENT 'kWh per year',
  `integration_hrs_per_container` decimal(10,2) DEFAULT NULL,
  `ta_cycle_per_pack` decimal(10,4) DEFAULT NULL COMMENT 'Test & Aging hours',
  `packs_tested_percent` decimal(5,4) DEFAULT NULL COMMENT 'Percentage as decimal',
  `modules_per_test` int(11) DEFAULT NULL,
  `test_equipment` varchar(100) DEFAULT NULL COMMENT 'e.g., 60V200A',
  `contract_duration` decimal(4,2) NOT NULL COMMENT 'Years',
  `yoy_growth_rate` decimal(5,4) DEFAULT NULL COMMENT 'Year over year growth as decimal',
  `renewal_probability` decimal(5,4) DEFAULT NULL COMMENT 'Probability as decimal (0.85 = 85%)',
  `renewal_volume_kwh` decimal(15,2) DEFAULT NULL,
  `post_renewal_growth` decimal(5,4) DEFAULT NULL,
  `extended_contract_duration` decimal(4,2) DEFAULT NULL,
  `total_contract_kwh` decimal(18,2) DEFAULT NULL,
  `total_contract_tested_packs` int(11) DEFAULT NULL,
  `total_contract_modules` decimal(15,2) DEFAULT NULL,
  `total_contract_containers` int(11) DEFAULT NULL,
  `peak_year` int(11) DEFAULT NULL,
  `contract_peak_kwh` decimal(15,2) DEFAULT NULL,
  `contract_peak_tested_packs` int(11) DEFAULT NULL,
  `test_cycles_needed` int(11) DEFAULT NULL,
  `total_ta_hours` int(11) DEFAULT NULL,
  `testing_channels_required` int(11) DEFAULT NULL,
  `contract_peak_modules` decimal(15,2) DEFAULT NULL,
  `contract_peak_containers` int(11) DEFAULT NULL,
  `contract_end_date` date DEFAULT NULL,
  `status` enum('draft','sent','approved','rejected','expired','converted') DEFAULT 'draft',
  `notes` text DEFAULT NULL,
  `created_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `quote_number` (`quote_number`),
  KEY `created_by` (`created_by`),
  KEY `idx_customer_name` (`customer_name`),
  KEY `idx_order_date` (`order_date`),
  KEY `idx_status` (`status`),
  KEY `idx_customer_type` (`customer_type`),
  KEY `idx_quote_id` (`quote_id`),
  KEY `idx_location` (`location_id`),
  KEY `idx_customer` (`customer_id`),
  CONSTRAINT `battery_quotes_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  CONSTRAINT `battery_quotes_ibfk_2` FOREIGN KEY (`quote_id`) REFERENCES `quotes` (`id`) ON DELETE CASCADE,
  CONSTRAINT `fk_battery_quotes_customer` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `battery_quotes`
--

set autocommit=0;
INSERT INTO `battery_quotes` VALUES
(1,'Q-001-111325',68,1,NULL,'Lockheed Martin','Government & Defense','2025-11-13',NULL,NULL,25.90,280.00,'NMC 280Ah Prismatic','No',3.70,280.00,7,1,'7 S 1 P ',7,'L. Prismatic',7.252000,NULL,NULL,NULL,1000,171.43,NULL,NULL,5.0000,0.0050,NULL,'60V200A',7.00,0.1500,0.8500,NULL,0.1000,6.16,139854.82,100,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(2,'Q-002-111325',69,1,NULL,'Lockheed Martin 2','Government & Defense','2025-11-13',NULL,NULL,48.10,280.00,'NMC 280Ah Prismatic','No',3.70,280.00,13,1,'13 S 1 P ',13,'L. Prismatic',13.468000,NULL,NULL,NULL,1500,92.31,NULL,NULL,5.0000,0.0050,NULL,'400V400A',6.00,0.1000,0.7500,NULL,0.0700,4.50,231784.28,91,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(3,'Q-003-111325',74,1,NULL,'Northrop Grumman','Government & Defense','2025-11-13',NULL,NULL,473.60,1680.00,'LFP 280Ah Prismatic','Yes',3.20,280.00,148,6,'148 S 6 P ',888,'L. Prismatic',795.648000,NULL,NULL,NULL,2000,1.35,NULL,NULL,1.0000,0.0000,NULL,'1500V600A',1.00,0.0100,0.7500,NULL,0.0900,0.80,1591296.00,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(4,'Q-004-111325',51,1,NULL,'Boeing','Government & Defense','2025-11-13',NULL,NULL,48.00,12.00,'LFP 26650 (6Ah)','No',3.20,6.00,15,2,'15 S 2 P ',30,'Small Cylindrical',0.576000,NULL,NULL,NULL,599,200.00,NULL,NULL,3.0000,0.0050,NULL,'60V200A',7.00,0.1000,0.8500,NULL,0.0800,5.95,5031.94,48,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(5,'Q-005-111325',52,1,NULL,'Boeing 2','Government & Defense','2025-11-13',NULL,NULL,440.30,840.00,'NMC 280Ah Prismatic','No',3.70,280.00,119,3,'119 S 3 P ',357,'L. Prismatic',369.852000,NULL,NULL,NULL,200,3.36,NULL,NULL,5.0000,0.0050,NULL,'1500V400A',7.00,0.0800,0.8500,NULL,0.0800,5.95,1000079.81,21,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(6,'Q-006-111325',49,1,NULL,'BAE Systems','Government & Defense','2025-11-13',NULL,NULL,48.10,560.00,'NMC 280Ah Prismatic','No',3.70,280.00,13,2,'13 S 2 P ',26,'L. Prismatic',26.936000,NULL,NULL,NULL,3000,46.15,NULL,NULL,2.0000,0.0050,NULL,'400V400A',5.00,0.1500,0.7500,NULL,0.0700,3.75,783460.50,148,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(7,'Q-007-111325',64,1,NULL,'L3 Harris','Government & Defense','2025-11-13',NULL,NULL,12.80,12.00,'LFP 26650 (6Ah)','No',3.20,6.00,4,2,'4 S 2 P ',8,'Small Cylindrical',0.153600,NULL,NULL,NULL,20053,750.00,NULL,NULL,1.0000,0.0050,NULL,'60V200A',6.00,0.1400,0.8500,NULL,0.1000,5.28,53989.94,1764,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(8,'Q-008-111325',47,1,NULL,'AeroVironment','Government & Defense','2025-11-13',NULL,NULL,14.80,25.00,'NMC 21700 (5Ah)','No',3.70,5.00,4,5,'4 S 5 P ',20,'Small Cylindrical',0.370000,NULL,NULL,NULL,6000,300.00,NULL,NULL,1.0000,0.0050,NULL,'60V200A',7.00,0.1300,0.7500,NULL,0.0900,5.60,33404.34,457,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(9,'Q-009-111325',63,1,NULL,'General Dynamics','Government & Defense','2025-11-13',NULL,NULL,48.00,280.00,'LFP 280Ah Prismatic','No',3.20,280.00,15,1,'15 S 1 P ',15,'L. Prismatic',13.440000,NULL,NULL,NULL,300,80.00,NULL,NULL,5.0000,0.0050,NULL,'400V400A',6.00,0.1000,0.7500,NULL,0.0700,4.50,46354.56,22,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(10,'Q-010-111325',60,1,NULL,'Federal Bureau of Investigation','Government & Defense','2025-11-13',NULL,NULL,12.80,204.00,'LFP 26650 (6Ah)','No',3.20,6.00,4,34,'4 S 34 P ',136,'Small Cylindrical',2.611200,NULL,NULL,NULL,1000,44.12,NULL,NULL,4.0000,0.0050,NULL,'60V200A',5.00,0.2000,0.7500,NULL,0.0900,4.00,31509.35,65,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(11,'Q-011-111325',57,1,NULL,'Curtiss-Wright','Government & Defense','2025-11-13',NULL,NULL,751.10,280.00,'NMC 280Ah Prismatic','No',3.70,280.00,203,1,'203 S 1 P ',203,'L. Prismatic',210.308000,NULL,NULL,NULL,500,5.91,NULL,NULL,4.0000,0.0050,NULL,'400V600A',5.00,0.0800,0.8500,NULL,0.0800,4.25,1029457.66,29,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(12,'Q-012-111325',75,1,NULL,'Northrop Grumman 2','Government & Defense','2025-11-13',NULL,NULL,1500.80,5040.00,'LFP 280Ah Prismatic','Yes',3.20,280.00,469,18,'469 S 18 P ',8442,'L. Prismatic',7564.032000,NULL,NULL,NULL,2000,0.14,NULL,NULL,1.0000,0.0000,NULL,'1500V600A',1.00,0.0100,0.8500,NULL,0.1000,0.88,15128064.00,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(13,'Q-013-111325',48,1,NULL,'AirBus x AATLO','Government & Defense','2025-11-13',NULL,NULL,25.60,100.00,'LFP 50Ah Pouch','No',3.20,50.00,8,2,'8 S 2 P ',16,'Soft Pack / Pouch',2.560000,NULL,NULL,NULL,250,28.13,NULL,NULL,5.0000,0.0050,NULL,'60V200A',7.00,0.2100,0.7500,NULL,0.0900,5.60,13015.04,31,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(14,'Q-014-111325',53,1,NULL,'Boeing 3','Government & Defense','2025-11-13',NULL,NULL,25.60,12.00,'LFP 26650 (6Ah)','No',3.20,6.00,8,2,'8 S 2 P ',16,'Small Cylindrical',0.307200,NULL,NULL,NULL,89942,375.00,NULL,NULL,5.0000,0.0050,NULL,'60V200A',5.00,0.1300,0.8500,NULL,0.1000,4.40,338998.58,5522,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(15,'Q-015-111325',55,1,NULL,'Collins Aerospace','Government & Defense','2025-11-13',NULL,NULL,29.60,50.00,'NMC 21700 (5Ah)','No',3.70,5.00,8,10,'8 S 10 P ',80,'Small Cylindrical',1.480000,NULL,NULL,NULL,3000,75.00,NULL,NULL,3.0000,0.0050,NULL,'60V200A',5.00,0.2200,0.8500,NULL,0.0800,4.25,62629.16,216,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(16,'Q-016-111325',89,1,NULL,'Tenacious International','Government & Defense','2025-11-13',NULL,NULL,12.80,6.00,'LFP 26650 (6Ah)','No',3.20,6.00,4,1,'4 S 1 P ',4,'Small Cylindrical',0.076800,NULL,NULL,NULL,300,1500.00,NULL,NULL,4.0000,0.0050,NULL,'60V200A',6.00,0.1900,0.5500,NULL,0.0800,4.20,291.46,25,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(17,'Q-017-111325',82,1,NULL,'Roush','Government & Defense','2025-11-13',NULL,NULL,48.00,280.00,'LFP 280Ah Prismatic','No',3.20,280.00,15,1,'15 S 1 P ',15,'L. Prismatic',13.440000,NULL,NULL,NULL,150,80.00,NULL,NULL,2.0000,0.0050,NULL,'400V400A',7.00,0.2100,0.7500,NULL,0.0700,5.25,41690.88,21,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(18,'Q-018-111325',80,1,NULL,'Pratt / Miller','Government & Defense','2025-11-13',NULL,NULL,48.00,280.00,'LFP 280Ah Prismatic','No',3.20,280.00,15,1,'15 S 1 P ',15,'L. Prismatic',13.440000,NULL,NULL,NULL,300,80.00,NULL,NULL,1.0000,0.0050,NULL,'400V400A',7.00,0.1800,0.7500,NULL,0.0700,5.25,74376.96,34,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(19,'Q-019-111325',58,1,NULL,'Eagle Picher Technologies','Government & Defense','2025-11-13',NULL,NULL,25.60,72.00,'LFP 26650 (6Ah)','No',3.20,6.00,8,12,'8 S 12 P ',96,'Small Cylindrical',1.843200,NULL,NULL,NULL,2000,62.50,NULL,NULL,5.0000,0.0050,NULL,'60V200A',7.00,0.2300,0.7500,NULL,0.0900,5.60,80706.36,224,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(20,'Q-020-111325',78,1,NULL,'Power Sonic','Government & Defense','2025-11-13',NULL,NULL,12.80,18.00,'LFP 26650 (6Ah)','No',3.20,6.00,4,3,'4 S 3 P ',12,'Small Cylindrical',0.230400,NULL,NULL,NULL,29948,500.00,NULL,NULL,4.0000,0.0050,NULL,'60V200A',6.00,0.2300,0.7500,NULL,0.0700,4.50,119166.80,2591,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(21,'Q-021-111325',66,1,NULL,'LiiON Inc','Government & Defense','2025-11-13',NULL,NULL,1.00,1.00,'LFP 280Ah Prismatic','Yes',3.20,280.00,1,0,'1 S 0.00357142857142857 P ',0,'L. Prismatic',0.003200,NULL,NULL,NULL,1,336000.00,NULL,NULL,1.0000,0.0000,NULL,'60V200A',1.00,0.0100,0.7500,NULL,0.0700,0.75,0.00,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(22,'Q-022-111325',67,1,NULL,'Lithionics Battery','Government & Defense','2025-11-13',NULL,NULL,12.80,840.00,'LFP 280Ah Prismatic','No',3.20,280.00,4,3,'4 S 3 P ',12,'L. Prismatic',10.752000,NULL,NULL,NULL,2000,100.00,NULL,NULL,4.0000,0.0050,NULL,'60V200A',6.00,0.1700,0.7500,NULL,0.0900,4.80,303163.39,144,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(23,'Q-023-111325',54,1,NULL,'Booz Allen Hamilton Inc','Government & Defense','2025-11-13',NULL,NULL,12.80,30.00,'LFP 26650 (6Ah)','No',3.20,6.00,4,5,'4 S 5 P ',20,'Small Cylindrical',0.384000,NULL,NULL,NULL,803,300.00,NULL,NULL,5.0000,0.0050,NULL,'60V200A',7.00,0.2300,0.5500,NULL,0.0800,4.90,5695.10,80,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(24,'Q-024-111325',90,1,NULL,'Universal Solutions International','Government & Defense','2025-11-13',NULL,NULL,38.40,100.00,'LFP 32650 (50Ah)','No',3.20,50.00,12,2,'12 S 2 P ',24,'L. Cylindrical',3.840000,NULL,NULL,NULL,2000,31.25,NULL,NULL,3.0000,0.0050,NULL,'60V200A',7.00,0.0900,0.8500,NULL,0.0800,5.95,107688.96,144,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(25,'Q-025-111325',79,1,NULL,'PowerPole','Government & Defense','2025-11-13',NULL,NULL,38.40,100.00,'LFP 32650 (50Ah)','No',3.20,50.00,12,2,'12 S 2 P ',24,'L. Cylindrical',3.840000,NULL,NULL,NULL,3000,31.25,NULL,NULL,1.0000,0.0050,NULL,'60V200A',5.00,0.1100,0.8500,NULL,0.0800,4.25,121996.80,162,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(26,'Q-026-111325',65,1,NULL,'LG Electronics','Government & Defense','2025-11-13',NULL,NULL,48.00,30.00,'LFP 26650 (6Ah)','No',3.20,6.00,15,5,'15 S 5 P ',75,'Small Cylindrical',1.440000,NULL,NULL,NULL,500,80.00,NULL,NULL,4.0000,0.0050,NULL,'60V200A',5.00,0.1800,0.8500,NULL,0.0800,4.25,9171.36,36,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(27,'Q-027-111325',46,1,NULL,'4 Patriots','Government & Defense','2025-11-13',NULL,NULL,48.00,54.00,'LFP 26650 (6Ah)','No',3.20,6.00,15,9,'15 S 9 P ',135,'Small Cylindrical',2.592000,NULL,NULL,NULL,6000,44.44,NULL,NULL,4.0000,0.0050,NULL,'60V200A',7.00,0.2300,0.7500,NULL,0.0900,5.60,340464.38,661,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(28,'Q-028-111325',73,1,NULL,'Nevados','Government & Defense','2025-11-13',NULL,NULL,16.00,9.60,'LFP 26650 (6Ah)','No',3.20,6.00,5,1,'5 S 1.6 P ',8,'Small Cylindrical',0.153600,NULL,NULL,NULL,40000,750.00,NULL,NULL,5.0000,0.0050,NULL,'60V200A',6.00,0.1700,0.7500,NULL,0.0900,4.80,86598.30,2822,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(29,'Q-029-111325',71,1,NULL,'MPINarada','Government & Defense','2025-11-13',NULL,NULL,48.00,560.00,'LFP 280Ah Prismatic','No',3.20,280.00,15,2,'15 S 2 P ',30,'L. Prismatic',26.880000,NULL,NULL,NULL,300,40.00,NULL,NULL,4.0000,0.0050,NULL,'400V400A',7.00,0.1500,0.8500,NULL,0.0800,5.95,142974.72,32,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(30,'Q-030-111325',86,1,NULL,'Solara Power','Government & Defense','2025-11-13',NULL,NULL,25.90,400.00,'NMC 21700 (50Ah)','No',3.70,50.00,7,8,'7 S 8 P ',56,'L. Cylindrical',10.360000,NULL,NULL,NULL,3000,13.39,NULL,NULL,5.0000,0.0050,NULL,'60V200A',6.00,0.0800,0.8500,NULL,0.1000,5.28,441387.80,218,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(31,'Q-031-111325',83,1,NULL,'Siemens Energy','Government & Defense','2025-11-13',NULL,NULL,1502.20,6160.00,'NMC 280Ah Prismatic','Yes',3.70,280.00,406,22,'406 S 22 P ',8932,'L. Prismatic',9253.552000,NULL,NULL,NULL,500,0.13,NULL,NULL,1.0000,0.0000,NULL,'1500V600A',1.00,0.0100,0.7500,NULL,0.0900,0.80,4626776.00,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(32,'Q-032-111325',85,1,NULL,'Sol-Ark','Government & Defense','2025-11-13',NULL,NULL,51.80,314.00,'LFP 314Ah Prismatic','No',3.20,314.00,17,1,'17 S 1 P ',17,'L. Prismatic',17.081600,NULL,NULL,NULL,223,70.59,NULL,NULL,5.0000,0.0050,NULL,'400V400A',9.00,0.1900,0.8500,NULL,0.0800,7.65,96306.06,34,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(33,'Q-033-111325',62,1,NULL,'Fortress Power','Government & Defense','2025-11-13',NULL,NULL,48.10,280.00,'NMC 280Ah Prismatic','No',3.70,280.00,13,1,'13 S 1 P ',13,'L. Prismatic',13.468000,NULL,NULL,NULL,25000,92.31,NULL,NULL,5.0000,0.0050,NULL,'400V400A',5.00,0.1200,0.8500,NULL,0.0800,4.25,3661006.44,1362,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(34,'Q-034-111325',76,1,NULL,'Our Next Energy (ONE)','Government & Defense','2025-11-13',NULL,NULL,48.00,560.00,'LFP 280Ah Prismatic','No',3.20,280.00,15,2,'15 S 2 P ',30,'L. Prismatic',26.880000,NULL,NULL,NULL,10000,40.00,NULL,NULL,5.0000,0.0050,NULL,'400V400A',5.00,0.1600,0.7500,NULL,0.0700,3.75,2670124.80,500,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(35,'Q-035-111325',91,1,NULL,'Vector Climate','Government & Defense','2025-11-13',NULL,NULL,14.80,20.00,'NMC 21700 (5Ah)','No',3.70,5.00,4,4,'4 S 4 P ',16,'Small Cylindrical',0.296000,NULL,NULL,NULL,1000,375.00,NULL,NULL,1.0000,0.0050,NULL,'60V200A',8.00,0.1800,0.8500,NULL,0.1000,7.04,6925.51,121,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(36,'Q-036-111325',59,1,NULL,'Enphase Energy','Government & Defense','2025-11-13',NULL,NULL,240.00,280.00,'LFP 280Ah Prismatic','No',3.20,280.00,75,1,'75 S 1 P ',75,'L. Prismatic',67.200000,NULL,NULL,NULL,10000,16.00,NULL,NULL,1.0000,0.0050,NULL,'400V400A',8.00,0.1200,0.7500,NULL,0.0900,6.40,10639843.20,796,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(37,'Q-037-111325',84,1,NULL,'Siemens Energy 2','Government & Defense','2025-11-13',NULL,NULL,400.00,560.00,'LFP 280Ah Prismatic','No',3.20,280.00,125,2,'125 S 2 P ',250,'L. Prismatic',224.000000,NULL,NULL,NULL,10000,4.80,NULL,NULL,1.0000,0.0000,NULL,'400V600A',1.00,0.0100,0.8500,NULL,0.0800,0.85,2240000.00,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(38,'Q-038-111325',81,1,NULL,'Prevalon Energy','Government & Defense','2025-11-13',NULL,NULL,800.00,3360.00,'LFP 280Ah Prismatic','Yes',3.20,280.00,250,12,'250 S 12 P ',3000,'L. Prismatic',2688.000000,NULL,NULL,NULL,13500,0.40,NULL,NULL,1.0000,0.0000,NULL,'1500V600A',1.00,0.0100,0.8500,NULL,0.1000,0.88,36288000.00,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(39,'Q-039-111325',72,1,NULL,'NeoVolta','Government & Defense','2025-11-13',NULL,NULL,48.00,560.00,'LFP 280Ah Prismatic','No',3.20,280.00,15,2,'15 S 2 P ',30,'L. Prismatic',26.880000,NULL,NULL,NULL,10000,40.00,NULL,NULL,3.0000,0.0050,NULL,'400V400A',10.00,0.1900,0.8500,NULL,0.1000,8.80,7625909.76,1424,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(40,'Q-040-111325',87,1,NULL,'Sonnen Inc','Government & Defense','2025-11-13',NULL,NULL,102.40,280.00,'LFP 280Ah Prismatic','No',3.20,280.00,32,1,'32 S 1 P ',32,'L. Prismatic',28.672000,NULL,NULL,NULL,12000,37.50,NULL,NULL,3.0000,0.0050,NULL,'400V400A',10.00,0.1100,0.8500,NULL,0.1000,8.80,6426828.80,1127,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(41,'Q-041-111325',50,1,NULL,'Bluetti','Government & Defense','2025-11-13',NULL,NULL,48.00,60.00,'LFP 26650 (6Ah)','No',3.20,6.00,15,10,'15 S 10 P ',150,'Small Cylindrical',2.880000,NULL,NULL,NULL,10000,40.00,NULL,NULL,3.0000,0.0050,NULL,'60V200A',8.00,0.1300,0.7500,NULL,0.0900,6.40,475698.24,832,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(42,'Q-042-111325',93,1,NULL,'Yotta Energy ','Government & Defense','2025-11-13',NULL,NULL,38.40,500.00,'LFP 32650 (50Ah)','No',3.20,50.00,12,10,'12 S 10 P ',120,'L. Cylindrical',19.200000,NULL,NULL,NULL,10000,6.25,NULL,NULL,5.0000,0.0050,NULL,'400V400A',8.00,0.1900,0.8500,NULL,0.1000,7.04,4696204.80,1228,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(43,'Q-043-111325',77,1,NULL,'Peppermint Robotics ','Government & Defense','2025-11-13',NULL,NULL,48.00,50.00,'LFP 32650 (50Ah)','No',3.20,50.00,15,1,'15 S 1 P ',15,'L. Cylindrical',2.400000,NULL,NULL,NULL,1000,50.00,NULL,NULL,4.0000,0.0050,NULL,'60V200A',10.00,0.2000,0.7500,NULL,0.0900,8.00,68344.80,146,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(44,'Q-044-111325',61,1,NULL,'Figure AI','Government & Defense','2025-11-13',NULL,NULL,25.90,30.00,'NMC 21700 (5Ah)','No',3.70,5.00,7,6,'7 S 6 P ',42,'Small Cylindrical',0.777000,NULL,NULL,NULL,501,142.86,NULL,NULL,4.0000,0.0050,NULL,'60V200A',10.00,0.1500,0.8500,NULL,0.1000,8.80,8954.93,62,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(45,'Q-045-111325',88,1,NULL,'Swarmbotics','Government & Defense','2025-11-13',NULL,NULL,25.90,25.00,'NMC 21700 (5Ah)','No',3.70,5.00,7,5,'7 S 5 P ',35,'Small Cylindrical',0.647500,NULL,NULL,NULL,501,171.43,NULL,NULL,4.0000,0.0050,NULL,'60V200A',9.00,0.1500,0.7500,NULL,0.0900,7.20,6460.11,55,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(46,'Q-046-111325',92,1,NULL,'Velocity Technology Solutions','Government & Defense','2025-11-13',NULL,NULL,37.00,100.00,'NMC 21700 (50Ah)','No',3.70,50.00,10,2,'10 S 2 P ',20,'L. Cylindrical',3.700000,NULL,NULL,NULL,300,37.50,NULL,NULL,5.0000,0.0050,NULL,'60V200A',8.00,0.1700,0.5500,NULL,0.0800,5.60,19395.40,32,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(47,'Q-047-111325',70,1,NULL,'Mistral Inc','Government & Defense','2025-11-13',NULL,NULL,48.00,280.00,'LFP 280Ah Prismatic','No',3.20,280.00,15,1,'15 S 1 P ',15,'L. Prismatic',13.440000,NULL,NULL,NULL,250,80.00,NULL,NULL,4.0000,0.0050,NULL,'400V400A',8.00,0.1600,0.8500,NULL,0.1000,7.04,71971.20,32,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22'),
(48,'Q-048-111325',56,1,NULL,'Cubic Corporation','Government & Defense','2025-11-13',NULL,NULL,25.60,60.00,'LFP 26650 (6Ah)','No',3.20,6.00,8,10,'8 S 10 P ',80,'Small Cylindrical',1.536000,NULL,NULL,NULL,500,75.00,NULL,NULL,3.0000,0.0050,NULL,'60V200A',9.00,0.2300,0.5500,NULL,0.0800,6.30,20487.17,72,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'draft',NULL,1,'2025-11-13 11:47:26','2025-11-13 15:30:22');
commit;

--
-- Table structure for table `bill_of_materials`
--

CREATE TABLE `bill_of_materials` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `product_id` int(10) unsigned NOT NULL,
  `name` varchar(255) NOT NULL,
  `version` varchar(50) DEFAULT NULL,
  `quantity_to_produce` int(11) DEFAULT 1,
  `status` enum('draft','active','inactive') DEFAULT 'draft',
  `notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `deleted_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `product_id` (`product_id`),
  CONSTRAINT `bill_of_materials_ibfk_1` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `bill_of_materials`
--

set autocommit=0;
INSERT INTO `bill_of_materials` VALUES
(2,70,'16KwH Battery Assembly','1.0',1,'draft','','2025-12-04 22:06:18','2025-12-04 22:14:20','2025-12-04 22:14:20'),
(3,70,'16 KwH Battery Pack','1.0',1,'draft','','2025-12-04 22:19:21','2025-12-04 22:42:12',NULL);
commit;

--
-- Table structure for table `bom_items`
--

CREATE TABLE `bom_items` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `bom_id` int(10) unsigned NOT NULL,
  `component_id` int(10) unsigned NOT NULL,
  `quantity` decimal(10,4) NOT NULL,
  `unit_cost` decimal(15,2) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `bom_id` (`bom_id`),
  KEY `component_id` (`component_id`),
  CONSTRAINT `bom_items_ibfk_1` FOREIGN KEY (`bom_id`) REFERENCES `bill_of_materials` (`id`) ON DELETE CASCADE,
  CONSTRAINT `bom_items_ibfk_2` FOREIGN KEY (`component_id`) REFERENCES `products` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `bom_items`
--

set autocommit=0;
INSERT INTO `bom_items` VALUES
(1,3,71,16.0000,0.00,'2025-12-04 22:47:24','2025-12-04 22:47:24'),
(2,3,72,1.0000,0.00,'2025-12-04 22:49:36','2025-12-04 22:49:36'),
(3,3,73,1.0000,0.00,'2025-12-04 22:49:44','2025-12-04 22:49:44'),
(5,3,75,1.0000,0.00,'2025-12-04 22:49:59','2025-12-04 22:49:59'),
(6,3,74,15.0000,0.00,'2025-12-04 22:50:41','2025-12-04 22:50:41'),
(7,3,76,17.0000,0.00,'2025-12-04 22:50:52','2025-12-04 22:50:52'),
(8,3,77,1.0000,0.00,'2025-12-04 22:51:00','2025-12-04 22:51:00'),
(9,3,78,1.0000,0.00,'2025-12-04 22:51:07','2025-12-04 22:51:07'),
(10,3,79,1.0000,0.00,'2025-12-04 22:51:13','2025-12-04 22:51:13'),
(11,3,80,1.0000,0.00,'2025-12-04 22:51:19','2025-12-04 22:51:19'),
(12,3,81,1.0000,0.00,'2025-12-04 22:51:25','2025-12-04 22:51:25'),
(13,3,82,1.0000,0.00,'2025-12-04 22:51:28','2025-12-04 22:51:28'),
(14,3,83,1.0000,0.00,'2025-12-04 22:51:33','2025-12-04 22:51:33'),
(15,3,84,128.0000,0.00,'2025-12-04 22:51:46','2025-12-04 22:51:46'),
(16,3,85,1.0000,0.00,'2025-12-04 22:51:51','2025-12-04 22:51:51');
commit;

--
-- Table structure for table `budget_lines`
--

CREATE TABLE `budget_lines` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `budget_id` int(10) unsigned NOT NULL,
  `line_type` enum('category','account','department','project') DEFAULT 'category',
  `category` varchar(100) DEFAULT NULL COMMENT 'Expense category',
  `gl_account_id` int(10) unsigned DEFAULT NULL COMMENT 'Link to chart of accounts',
  `department` varchar(100) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `budgeted_amount` decimal(15,2) NOT NULL,
  `period_type` enum('total','monthly','quarterly') DEFAULT 'total',
  `notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `budget_id` (`budget_id`),
  KEY `gl_account_id` (`gl_account_id`),
  CONSTRAINT `budget_lines_ibfk_1` FOREIGN KEY (`budget_id`) REFERENCES `budgets` (`id`) ON DELETE CASCADE,
  CONSTRAINT `budget_lines_ibfk_2` FOREIGN KEY (`gl_account_id`) REFERENCES `chart_of_accounts` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `budget_lines`
--

set autocommit=0;
commit;

--
-- Table structure for table `budget_periods`
--

CREATE TABLE `budget_periods` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `budget_line_id` int(10) unsigned NOT NULL,
  `period_start` date NOT NULL,
  `period_end` date NOT NULL,
  `period_name` varchar(50) DEFAULT NULL COMMENT 'e.g., Q1 2024, January 2024',
  `budgeted_amount` decimal(15,2) NOT NULL,
  `actual_amount` decimal(15,2) DEFAULT 0.00,
  `variance` decimal(15,2) DEFAULT 0.00,
  `variance_percent` decimal(5,2) DEFAULT 0.00,
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `budget_line_id` (`budget_line_id`),
  KEY `period_start` (`period_start`),
  CONSTRAINT `budget_periods_ibfk_1` FOREIGN KEY (`budget_line_id`) REFERENCES `budget_lines` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `budget_periods`
--

set autocommit=0;
commit;

--
-- Table structure for table `budgets`
--

CREATE TABLE `budgets` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `budget_name` varchar(255) NOT NULL,
  `budget_type` enum('annual','quarterly','monthly','project') DEFAULT 'annual',
  `fiscal_year` int(11) NOT NULL,
  `start_date` date NOT NULL,
  `end_date` date NOT NULL,
  `total_amount` decimal(15,2) NOT NULL,
  `currency` varchar(3) DEFAULT 'USD',
  `department` varchar(100) DEFAULT NULL,
  `project_id` int(10) unsigned DEFAULT NULL,
  `description` text DEFAULT NULL,
  `status` enum('draft','active','closed','archived') DEFAULT 'draft',
  `created_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `fiscal_year` (`fiscal_year`),
  KEY `budget_type` (`budget_type`),
  KEY `status` (`status`),
  KEY `start_date` (`start_date`),
  KEY `end_date` (`end_date`),
  KEY `created_by` (`created_by`),
  CONSTRAINT `budgets_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `budgets`
--

set autocommit=0;
commit;

--
-- Temporary table structure for view `business_line_capacity_summary`
--

/*!50001 DROP VIEW IF EXISTS `business_line_capacity_summary`*/;
/*!50001 CREATE VIEW `business_line_capacity_summary` AS SELECT
 1 AS `business_line_id`,
  1 AS `business_line_name`,
  1 AS `business_line_code`,
  1 AS `total_equipment_lines`,
  1 AS `total_equipment`,
  1 AS `operational_equipment`,
  1 AS `avg_utilization_rate`,
  1 AS `total_daily_capacity`,
  1 AS `available_daily_capacity` */;

--
-- Table structure for table `business_lines`
--

CREATE TABLE `business_lines` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `location_id` int(10) unsigned NOT NULL,
  `name` varchar(100) NOT NULL,
  `code` varchar(50) NOT NULL,
  `description` text DEFAULT NULL,
  `square_footage` decimal(10,2) DEFAULT NULL,
  `status` enum('active','inactive') DEFAULT 'active',
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `code` (`code`),
  KEY `location_id` (`location_id`),
  KEY `status` (`status`),
  CONSTRAINT `business_lines_ibfk_1` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Business lines or production lines within a location';

--
-- Dumping data for table `business_lines`
--

set autocommit=0;
INSERT INTO `business_lines` VALUES
(1,2,'Battery Pack Assembly','BPA','',NULL,'active','2025-10-27 18:25:30','2025-10-27 18:25:30'),
(2,2,'Motors and Actuators','MA','',NULL,'active','2025-10-27 19:16:04','2025-10-27 19:16:19'),
(3,2,'Fabrication and Assembly','FA','',NULL,'active','2025-10-27 19:16:37','2025-10-27 19:16:37'),
(4,2,'Mold and Injection Molding','MIM','',NULL,'active','2025-10-27 19:16:53','2025-10-27 19:16:53'),
(5,3,'Electronics and SMT','ESMT','',NULL,'active','2025-10-27 19:17:16','2025-12-05 10:53:46'),
(6,2,'Research and Desgin','RND','',NULL,'active','2025-12-05 10:54:35','2025-12-05 10:54:44');
commit;

--
-- Table structure for table `calendar_events`
--

CREATE TABLE `calendar_events` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `event_type` enum('custom','quote','invoice','sales_order','work_order','project','hr_event','meeting','deadline','other') NOT NULL DEFAULT 'custom',
  `start_date` datetime NOT NULL,
  `end_date` datetime DEFAULT NULL,
  `all_day` tinyint(1) DEFAULT 0,
  `color` varchar(20) DEFAULT '#0cd096',
  `location` varchar(255) DEFAULT NULL,
  `event_url` varchar(500) DEFAULT NULL COMMENT 'Optional URL link for event (Zoom, docs, etc.)',
  `entity_type` varchar(50) DEFAULT NULL,
  `entity_id` int(11) DEFAULT NULL,
  `is_public` tinyint(1) DEFAULT 1 COMMENT '1 = visible to all users, 0 = private',
  `created_by` int(11) NOT NULL,
  `assigned_to` int(11) DEFAULT NULL COMMENT 'If event is assigned to specific user',
  `attendees` text DEFAULT NULL COMMENT 'JSON array of user IDs',
  `is_recurring` tinyint(1) DEFAULT 0,
  `recurrence_rule` varchar(255) DEFAULT NULL COMMENT 'RRULE format for recurring events',
  `status` enum('scheduled','completed','cancelled') DEFAULT 'scheduled',
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `notified_at` datetime DEFAULT NULL COMMENT 'When notification was sent',
  `send_reminder` tinyint(1) DEFAULT 0 COMMENT 'Whether to send email reminders',
  `reminder_minutes` int(11) DEFAULT 15 COMMENT 'Minutes before event to send reminder',
  PRIMARY KEY (`id`),
  KEY `idx_start_date` (`start_date`),
  KEY `idx_end_date` (`end_date`),
  KEY `idx_created_by` (`created_by`),
  KEY `idx_assigned_to` (`assigned_to`),
  KEY `idx_entity` (`entity_type`,`entity_id`),
  KEY `idx_event_type` (`event_type`),
  KEY `idx_status` (`status`),
  KEY `idx_calendar_events_notification` (`start_date`,`status`,`all_day`,`notified_at`)
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `calendar_events`
--

set autocommit=0;
INSERT INTO `calendar_events` VALUES
(3,'Holiday - Company Closed','Office closed','other','2025-11-27 00:00:00','2025-11-27 00:00:00',1,'#1ABD36',NULL,NULL,NULL,NULL,1,1,NULL,NULL,0,NULL,'scheduled','2025-11-13 23:20:04','2025-11-13 23:20:04',NULL,0,15),
(4,'Test5','','custom','2025-11-27 16:00:00','2025-11-27 16:30:00',0,'#0cd096','','',NULL,NULL,1,1,NULL,'@Rick M ',0,NULL,'scheduled','2025-11-14 00:30:27','2025-11-27 20:53:26','2025-11-27 15:50:00',1,15),
(14,'Test',NULL,'custom','2025-11-27 16:00:00','2025-11-27 16:30:00',0,'#0cd096',NULL,NULL,NULL,NULL,1,1,NULL,'@Rick M',0,NULL,'scheduled','2025-11-27 20:45:43','2025-11-27 20:50:02','2025-11-27 15:50:00',1,15),
(15,'Test6',NULL,'custom','2025-11-27 16:00:00','2025-11-27 16:30:00',0,'#0cd096',NULL,NULL,NULL,NULL,1,1,NULL,'@Rick M ',0,NULL,'scheduled','2025-11-27 20:53:37','2025-11-27 20:53:37',NULL,1,15),
(16,'Test6',NULL,'custom','2025-11-27 16:00:00','2025-11-27 16:30:00',0,'#0cd096',NULL,NULL,NULL,NULL,1,1,NULL,'@Rick M ',0,NULL,'scheduled','2025-11-27 20:53:40','2025-11-27 20:53:40',NULL,1,15),
(17,'Test6',NULL,'custom','2025-11-27 16:00:00','2025-11-27 16:30:00',0,'#0cd096',NULL,NULL,NULL,NULL,1,1,NULL,'@Rick M ',0,NULL,'scheduled','2025-11-27 20:53:46','2025-11-27 20:53:46',NULL,1,15),
(18,'Test6',NULL,'custom','2025-11-27 16:00:00','2025-11-27 16:30:00',0,'#0cd096',NULL,NULL,NULL,NULL,0,1,NULL,'@Rick M ',0,NULL,'scheduled','2025-11-27 20:53:49','2025-11-27 20:53:49',NULL,1,15),
(21,'ricks mtg','test','custom','2025-11-27 16:00:00','2025-11-27 16:30:00',0,'#0cd096',NULL,NULL,NULL,NULL,1,1,NULL,'@Rick M ',0,NULL,'scheduled','2025-11-27 20:57:42','2025-11-27 20:57:42',NULL,1,15),
(22,'test7',NULL,'custom','2025-11-27 16:00:00','2025-11-27 16:30:00',0,'#0cd096',NULL,NULL,NULL,NULL,1,1,NULL,'@Rick M ',0,NULL,'scheduled','2025-11-27 20:58:28','2025-11-27 20:58:28',NULL,1,15),
(23,'test7',NULL,'custom','2025-11-27 16:00:00','2025-11-27 16:30:00',0,'#0cd096',NULL,NULL,NULL,NULL,1,1,NULL,'@Rick M ',0,NULL,'scheduled','2025-11-27 20:59:40','2025-11-27 20:59:40',NULL,1,15),
(24,'test',NULL,'custom','2025-11-27 17:00:00','2025-11-27 17:30:00',0,'#0cd096',NULL,NULL,NULL,NULL,1,1,NULL,'@Rick M ',0,NULL,'scheduled','2025-11-27 21:00:33','2025-11-27 21:10:00','2025-11-27 16:10:00',0,15),
(26,'test',NULL,'custom','2025-11-27 17:00:00','2025-11-27 17:30:00',0,'#0cd096',NULL,NULL,NULL,NULL,1,1,NULL,'@Rick M ',0,NULL,'scheduled','2025-11-27 21:02:07','2025-11-27 21:10:00','2025-11-27 16:10:00',1,15),
(27,'tester',NULL,'custom','2025-11-27 17:00:00','2025-11-27 17:30:00',0,'#0cd096',NULL,NULL,NULL,NULL,1,1,NULL,'@Rick M ',0,NULL,'scheduled','2025-11-27 21:03:26','2025-11-27 21:10:02','2025-11-27 16:10:00',1,15),
(28,'tester',NULL,'custom','2025-11-27 17:00:00','2025-11-27 17:30:00',0,'#0cd096',NULL,NULL,NULL,NULL,1,1,NULL,'@Rick M ',0,NULL,'scheduled','2025-11-27 21:04:36','2025-11-27 21:10:03','2025-11-27 16:10:00',1,15),
(31,'Demo','','custom','2025-12-04 19:00:00','2025-12-04 19:30:00',0,'#0cd096','','',NULL,NULL,1,1,NULL,'@Rick M @Admin User ',0,NULL,'scheduled','2025-12-04 18:07:27','2025-12-04 23:00:01','2025-12-04 18:00:01',1,15),
(32,'Rick Mtg',NULL,'meeting','2025-12-10 17:00:00','2025-12-10 17:30:00',0,'#FF9500',NULL,NULL,NULL,NULL,1,1,NULL,'@Rick M @all-staff @Admin User ',0,NULL,'scheduled','2025-12-04 23:15:38','2025-12-04 23:15:38',NULL,1,15);
commit;

--
-- Table structure for table `camera_audit_annotations`
--

CREATE TABLE `camera_audit_annotations` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `camera_audit_log_id` bigint(20) unsigned NOT NULL,
  `annotation_type` enum('note','issue','highlight','measurement','count') NOT NULL,
  `annotation_data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT 'Coordinates, text, measurements, etc.' CHECK (json_valid(`annotation_data`)),
  `description` text DEFAULT NULL,
  `created_by` int(10) unsigned NOT NULL,
  `created_at` datetime NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_audit_log` (`camera_audit_log_id`),
  KEY `idx_type` (`annotation_type`),
  KEY `created_by` (`created_by`),
  CONSTRAINT `camera_audit_annotations_ibfk_1` FOREIGN KEY (`camera_audit_log_id`) REFERENCES `camera_audit_logs` (`id`) ON DELETE CASCADE,
  CONSTRAINT `camera_audit_annotations_ibfk_2` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `camera_audit_annotations`
--

set autocommit=0;
commit;

--
-- Table structure for table `camera_audit_events`
--

CREATE TABLE `camera_audit_events` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `camera_audit_log_id` bigint(20) unsigned NOT NULL,
  `event_type` varchar(100) NOT NULL COMMENT 'anomaly_detected, quality_issue, unauthorized_access, damage_found, etc.',
  `severity` enum('info','warning','critical') NOT NULL DEFAULT 'info',
  `event_data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'Detailed event information' CHECK (json_valid(`event_data`)),
  `is_resolved` tinyint(1) NOT NULL DEFAULT 0,
  `resolved_by` int(10) unsigned DEFAULT NULL,
  `resolved_at` datetime DEFAULT NULL,
  `resolution_notes` text DEFAULT NULL,
  `created_at` datetime NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_audit_log` (`camera_audit_log_id`),
  KEY `idx_event_type` (`event_type`),
  KEY `idx_severity` (`severity`),
  KEY `idx_resolved` (`is_resolved`),
  KEY `resolved_by` (`resolved_by`),
  CONSTRAINT `camera_audit_events_ibfk_1` FOREIGN KEY (`camera_audit_log_id`) REFERENCES `camera_audit_logs` (`id`) ON DELETE CASCADE,
  CONSTRAINT `camera_audit_events_ibfk_2` FOREIGN KEY (`resolved_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `camera_audit_events`
--

set autocommit=0;
commit;

--
-- Table structure for table `camera_audit_logs`
--

CREATE TABLE `camera_audit_logs` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `camera_station_id` int(10) unsigned NOT NULL,
  `activity_type` varchar(100) NOT NULL COMMENT 'stock_movement, receiving, picking, cycle_count, inspection, loading, unloading, etc.',
  `activity_subtype` varchar(100) DEFAULT NULL COMMENT 'Additional classification',
  `reference_type` varchar(100) DEFAULT NULL COMMENT 'Entity type: stock_movement, work_order, purchase_order, sales_order, etc.',
  `reference_id` int(10) unsigned DEFAULT NULL COMMENT 'ID of related entity',
  `location_id` int(10) unsigned DEFAULT NULL COMMENT 'Location where activity occurred',
  `machine_id` int(10) unsigned DEFAULT NULL COMMENT 'Machine/equipment involved',
  `zone` varchar(100) DEFAULT NULL COMMENT 'Specific zone/area within location',
  `product_id` int(10) unsigned DEFAULT NULL COMMENT 'Product being handled',
  `lot_number` varchar(100) DEFAULT NULL COMMENT 'Lot/batch number if applicable',
  `serial_number` varchar(100) DEFAULT NULL COMMENT 'Serial number if applicable',
  `quantity` decimal(15,3) DEFAULT NULL COMMENT 'Quantity involved in activity',
  `user_id` int(10) unsigned DEFAULT NULL COMMENT 'User performing the activity',
  `operator_badge` varchar(50) DEFAULT NULL COMMENT 'Operator badge/ID if different from user',
  `image_path` varchar(500) NOT NULL COMMENT 'Relative path to stored image',
  `image_filename` varchar(255) NOT NULL,
  `image_size_bytes` int(10) unsigned DEFAULT NULL COMMENT 'File size in bytes',
  `image_format` varchar(20) DEFAULT NULL COMMENT 'jpg, png, etc.',
  `thumbnail_path` varchar(500) DEFAULT NULL COMMENT 'Path to thumbnail if generated',
  `captured_at` datetime NOT NULL COMMENT 'Actual timestamp when image was captured',
  `capture_mode` enum('manual','automatic','triggered','scheduled') NOT NULL DEFAULT 'manual',
  `trigger_event` varchar(100) DEFAULT NULL COMMENT 'What triggered the capture (barcode_scan, button_press, motion, timer, etc.)',
  `has_analysis` tinyint(1) NOT NULL DEFAULT 0,
  `analysis_data` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'Object detection, OCR results, anomalies detected, etc.' CHECK (json_valid(`analysis_data`)),
  `confidence_score` decimal(5,4) DEFAULT NULL COMMENT 'AI confidence score if analyzed',
  `image_quality` enum('excellent','good','acceptable','poor') DEFAULT NULL,
  `is_verified` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'Has been reviewed/verified by user',
  `verified_by` int(10) unsigned DEFAULT NULL,
  `verified_at` datetime DEFAULT NULL,
  `notes` text DEFAULT NULL COMMENT 'User notes or additional context',
  `metadata` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'Additional flexible metadata' CHECK (json_valid(`metadata`)),
  `tags` varchar(500) DEFAULT NULL COMMENT 'Comma-separated searchable tags',
  `ip_address` varchar(45) DEFAULT NULL COMMENT 'IP of device that initiated capture',
  `device_info` varchar(255) DEFAULT NULL COMMENT 'Device/browser info',
  `created_at` datetime NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_camera_station` (`camera_station_id`),
  KEY `idx_activity_type` (`activity_type`),
  KEY `idx_reference` (`reference_type`,`reference_id`),
  KEY `idx_location` (`location_id`),
  KEY `idx_machine` (`machine_id`),
  KEY `idx_product` (`product_id`),
  KEY `idx_user` (`user_id`),
  KEY `idx_captured_at` (`captured_at`),
  KEY `idx_capture_mode` (`capture_mode`),
  KEY `idx_lot_number` (`lot_number`),
  KEY `idx_serial_number` (`serial_number`),
  KEY `idx_verified` (`is_verified`),
  KEY `idx_has_analysis` (`has_analysis`),
  KEY `verified_by` (`verified_by`),
  CONSTRAINT `camera_audit_logs_ibfk_1` FOREIGN KEY (`camera_station_id`) REFERENCES `camera_stations` (`id`) ON DELETE CASCADE,
  CONSTRAINT `camera_audit_logs_ibfk_2` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE SET NULL,
  CONSTRAINT `camera_audit_logs_ibfk_3` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE SET NULL,
  CONSTRAINT `camera_audit_logs_ibfk_4` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  CONSTRAINT `camera_audit_logs_ibfk_5` FOREIGN KEY (`verified_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `camera_audit_logs`
--

set autocommit=0;
commit;

--
-- Table structure for table `camera_stations`
--

CREATE TABLE `camera_stations` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `station_code` varchar(50) NOT NULL COMMENT 'Unique identifier for camera station',
  `name` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `location_id` int(10) unsigned DEFAULT NULL COMMENT 'Physical location where camera is installed',
  `machine_id` int(10) unsigned DEFAULT NULL COMMENT 'Equipment/machine this camera monitors',
  `camera_type` enum('fixed','mobile','handheld','drone','automated') NOT NULL DEFAULT 'fixed',
  `resolution` varchar(20) DEFAULT NULL COMMENT 'e.g. 1920x1080, 4K',
  `field_of_view` varchar(100) DEFAULT NULL COMMENT 'Description of what camera captures',
  `ip_address` varchar(45) DEFAULT NULL COMMENT 'Camera IP for network cameras',
  `api_endpoint` varchar(255) DEFAULT NULL COMMENT 'API endpoint for automated capture',
  `is_active` tinyint(1) NOT NULL DEFAULT 1,
  `last_capture_at` datetime DEFAULT NULL COMMENT 'Timestamp of last image capture',
  `capture_count` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 'Total images captured',
  `created_by` int(10) unsigned DEFAULT NULL,
  `created_at` datetime NOT NULL DEFAULT current_timestamp(),
  `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `auto_capture_enabled` tinyint(1) DEFAULT 0 COMMENT 'Enable automatic captures',
  `capture_interval_minutes` int(11) DEFAULT 15 COMMENT 'Capture interval in minutes',
  `capture_start_time` time DEFAULT '00:00:00' COMMENT 'Start capturing at this time',
  `capture_end_time` time DEFAULT '23:59:59' COMMENT 'Stop capturing at this time',
  `auto_activity_type` varchar(100) DEFAULT 'automated_surveillance' COMMENT 'Activity type for auto captures',
  PRIMARY KEY (`id`),
  UNIQUE KEY `station_code` (`station_code`),
  KEY `idx_location` (`location_id`),
  KEY `idx_machine` (`machine_id`),
  KEY `idx_active` (`is_active`),
  KEY `idx_station_code` (`station_code`),
  KEY `created_by` (`created_by`),
  CONSTRAINT `camera_stations_ibfk_1` FOREIGN KEY (`location_id`) REFERENCES `locations` (`id`) ON DELETE SET NULL,
  CONSTRAINT `camera_stations_ibfk_2` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `camera_stations`
--

set autocommit=0;
INSERT INTO `camera_stations` VALUES
(1,'Dock-Cam-001','Loading Dock A ','Loading Dock cam ',2,NULL,'fixed','1920x1080','full view','192.168.1.100',NULL,1,NULL,0,1,'2025-11-13 16:29:17','2025-11-13 16:36:05',0,15,'00:00:00','23:59:59','automated_surveillance');
commit;

--
-- Table structure for table `category_forecast_summary`
--

CREATE TABLE `category_forecast_summary` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `assumption_set_id` int(11) NOT NULL,
  `category_id` int(10) unsigned NOT NULL,
  `projection_date` date NOT NULL,
  `period_type` enum('monthly','quarterly','annual') DEFAULT 'monthly',
  `total_units` decimal(15,2) NOT NULL DEFAULT 0.00,
  `total_revenue` decimal(15,2) NOT NULL DEFAULT 0.00,
  `total_cogs` decimal(15,2) NOT NULL DEFAULT 0.00,
  `gross_profit` decimal(15,2) NOT NULL DEFAULT 0.00,
  `gross_margin_pct` decimal(5,2) NOT NULL DEFAULT 0.00,
  `product_count` int(11) NOT NULL DEFAULT 0 COMMENT 'Number of products in this category',
  `generated_at` timestamp NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_set_cat_date` (`assumption_set_id`,`category_id`,`projection_date`,`period_type`),
  KEY `idx_set` (`assumption_set_id`),
  KEY `idx_category` (`category_id`),
  KEY `idx_date` (`projection_date`),
  CONSTRAINT `category_forecast_summary_ibfk_1` FOREIGN KEY (`assumption_set_id`) REFERENCES `forecast_assumption_sets` (`id`) ON DELETE CASCADE,
  CONSTRAINT `category_forecast_summary_ibfk_2` FOREIGN KEY (`category_id`) REFERENCES `product_categories` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `category_forecast_summary`
--

set autocommit=0;
commit;

--
-- Table structure for table `certificates_of_analysis`
--

CREATE TABLE `certificates_of_analysis` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `certificate_number` varchar(50) NOT NULL,
  `product_id` int(10) unsigned NOT NULL,
  `batch_number` varchar(100) DEFAULT NULL,
  `inspection_id` int(10) unsigned DEFAULT NULL,
  `manufacturing_date` date DEFAULT NULL,
  `expiry_date` date DEFAULT NULL,
  `test_results` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`test_results`)),
  `specifications_met` tinyint(1) DEFAULT 1,
  `issued_by` int(10) unsigned NOT NULL,
  `issued_at` datetime DEFAULT current_timestamp(),
  `pdf_path` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `certificate_number` (`certificate_number`),
  KEY `idx_product` (`product_id`),
  KEY `idx_batch` (`batch_number`),
  KEY `inspection_id` (`inspection_id`),
  KEY `issued_by` (`issued_by`),
  CONSTRAINT `certificates_of_analysis_ibfk_1` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE,
  CONSTRAINT `certificates_of_analysis_ibfk_2` FOREIGN KEY (`inspection_id`) REFERENCES `quality_inspections` (`id`) ON DELETE SET NULL,
  CONSTRAINT `certificates_of_analysis_ibfk_3` FOREIGN KEY (`issued_by`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `certificates_of_analysis`
--

set autocommit=0;
commit;

--
-- Table structure for table `channel_members`
--

CREATE TABLE `channel_members` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `channel_id` int(10) unsigned NOT NULL,
  `user_id` int(10) unsigned NOT NULL,
  `role` enum('member','admin') DEFAULT 'member',
  `last_read_at` timestamp NULL DEFAULT NULL,
  `joined_at` timestamp NULL DEFAULT current_timestamp(),
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `channel_user` (`channel_id`,`user_id`),
  KEY `idx_user_id` (`user_id`),
  CONSTRAINT `channel_members_ibfk_1` FOREIGN KEY (`channel_id`) REFERENCES `channels` (`id`) ON DELETE CASCADE,
  CONSTRAINT `channel_members_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `channel_members`
--

set autocommit=0;
INSERT INTO `channel_members` VALUES
(1,1,1,'member','2025-12-05 17:45:05','2025-10-26 20:16:06','2025-11-11 00:36:43','2025-12-05 17:45:05'),
(2,1,2,'member',NULL,'2025-10-26 20:16:06','2025-11-11 00:36:43','2025-11-11 00:36:43'),
(14,1,13,'member',NULL,'2025-10-27 15:26:38','2025-11-11 00:36:43','2025-11-11 00:36:43'),
(15,1,14,'member',NULL,'2025-10-27 21:16:37','2025-11-11 00:36:43','2025-11-11 00:36:43'),
(16,1,15,'member','2025-10-28 16:28:49','2025-10-27 22:51:32','2025-11-11 00:36:43','2025-11-11 00:36:43'),
(17,1,16,'member','2025-10-29 01:55:16','2025-10-29 01:35:17','2025-11-11 00:36:43','2025-11-11 00:36:43'),
(18,1,17,'member','2025-10-30 19:31:21','2025-10-30 00:21:16','2025-11-11 00:36:43','2025-11-11 00:36:43'),
(19,1,18,'member','2025-11-11 11:57:19','2025-10-30 00:21:59','2025-11-11 00:36:43','2025-11-11 11:57:19'),
(20,1,19,'member',NULL,'2025-10-30 00:23:05','2025-11-11 00:36:43','2025-11-11 00:36:43'),
(24,7,1,'admin','2025-12-04 23:22:54','2025-10-31 17:27:40','2025-11-11 00:36:43','2025-12-04 23:22:54'),
(26,1,7,'member','2025-11-24 18:21:48','2025-11-14 21:00:43','2025-11-14 21:00:43','2025-11-24 18:21:49'),
(27,1,8,'member','2025-11-14 22:16:08','2025-11-14 21:01:16','2025-11-14 21:01:16','2025-11-14 22:16:08'),
(28,1,21,'member','2025-11-29 14:08:22','2025-11-15 23:53:17','2025-11-15 23:53:17','2025-11-29 14:08:22'),
(29,7,3,'member',NULL,'2025-11-19 18:24:46','2025-11-19 18:24:46','2025-11-19 18:24:46'),
(30,7,5,'member',NULL,'2025-12-04 13:34:44','2025-12-04 13:34:44','2025-12-04 13:34:44');
commit;

--
-- Table structure for table `channels`
--

CREATE TABLE `channels` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `type` enum('channel','direct') DEFAULT 'channel',
  `is_private` tinyint(4) DEFAULT 0,
  `created_by` int(10) unsigned NOT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_type` (`type`),
  KEY `idx_created_by` (`created_by`),
  CONSTRAINT `channels_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `channels`
--

set autocommit=0;
INSERT INTO `channels` VALUES
(1,'general','General discussion for everyone','channel',0,1,'2025-10-26 20:13:47','2025-10-26 20:13:47'),
(7,'test','','channel',0,1,'2025-10-31 17:27:40','2025-10-31 17:27:40');
commit;

--
-- Table structure for table `chart_of_accounts`
--

CREATE TABLE `chart_of_accounts` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `account_code` varchar(50) NOT NULL,
  `account_name` varchar(200) NOT NULL,
  `account_type` enum('asset','liability','equity','revenue','expense') NOT NULL,
  `parent_id` int(10) unsigned DEFAULT NULL,
  `description` text DEFAULT NULL,
  `status` enum('active','inactive') DEFAULT 'active',
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `account_code` (`account_code`),
  KEY `parent_id` (`parent_id`),
  CONSTRAINT `chart_of_accounts_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `chart_of_accounts` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=69 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `chart_of_accounts`
--

set autocommit=0;
INSERT INTO `chart_of_accounts` VALUES
(1,'1000','Assets','asset',NULL,'Main asset account','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(2,'1010','Business Checking Preferred #3083','asset',NULL,'Deleted prior checking account.','inactive','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(3,'1011','PNC Checking #8804','asset',NULL,'Old PNC checking account, now inactive.','inactive','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(4,'1012','PNC Checking #8812','asset',NULL,'Old PNC checking account, now inactive.','inactive','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(5,'1020','Business Checking Preferred #3091','asset',NULL,'Deleted prior checking account.','inactive','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(6,'1030','Chase Bank #2560','asset',NULL,'Active Chase Bank account for operations.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(7,'1040','Chase Wire #7932','asset',NULL,'Chase account used for wire transfers.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(8,'1200','Accounts Receivable','asset',NULL,'Outstanding invoices owed to the company.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(9,'1350','Inventory','asset',NULL,'Value of goods held for sale.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(10,'1360','Inventory Asset','asset',NULL,'Capitalized inventory value as an asset.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(11,'1370','Loan to Shareholder','asset',NULL,'Loan previously issued to shareholder (inactive).','inactive','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(12,'1390','Security Deposit','asset',NULL,'Deposits held with landlords or vendors.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(13,'1400','Uncategorized Asset','asset',NULL,'Assets not yet categorized properly.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(14,'1410','Undeposited Funds','asset',NULL,'Checks or payments received but not yet deposited.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(15,'1500','Furniture and Equipment','asset',NULL,'Office furniture and equipment assets.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(16,'1580','Accumulated Depreciation','asset',NULL,'Total depreciation on fixed assets.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(17,'1640','Vehicles','asset',NULL,'Company-owned vehicles.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(18,'1641','Escalade 2023','asset',NULL,'Vehicle asset—Cadillac Escalade (2023).','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(19,'1642','Escalade 2025','asset',NULL,'Vehicle asset—Cadillac Escalade (2025).','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(20,'1643','Golf Cart','asset',NULL,'Company-owned golf cart asset.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(21,'1700','Fixed Asset Computers','asset',NULL,'Company-owned computer equipment.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(22,'1800','LBC Boats','asset',NULL,'Company boats or marine assets.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(23,'1900','Leashold Improvements','asset',NULL,'Improvements to leased property.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(24,'1950','Projector','asset',NULL,'Audio/visual equipment asset.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(25,'1970','Plant Machinery & Equipment','asset',NULL,'Manufacturing machinery and tools.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(26,'2000','Accounts Payable (A/P)','liability',NULL,'Outstanding bills owed to vendors.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(27,'2010','American Express #4007','liability',NULL,'Active American Express business card.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(28,'2020','American Express #2005','liability',NULL,'Alternate American Express business card.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(29,'2030','American Express #2008/#3006/#4004 Nathan Staron','liability',NULL,'Deleted AMEX card accounts.','inactive','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(30,'2040','American Express #1018 Ronald Staron','liability',NULL,'Deleted AMEX card account.','inactive','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(31,'2100','Payroll Liabilities with sub-accounts','liability',NULL,'Group account for payroll-related liabilities.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(32,'2110','Federal Taxes #941/#944','liability',NULL,'Employer federal payroll taxes payable.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(33,'2120','Federal Unemployment #940','liability',NULL,'Federal unemployment tax payable.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(34,'2130','Florida Unemployment Tax','liability',NULL,'Florida unemployment tax payable.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(35,'2140','Pennsylvania Income Tax','liability',NULL,'Pennsylvania state withholding payable.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(36,'2170','Quickbooks Tax Holding Account','liability',NULL,'Holding account for payroll or sales tax before remittance.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(37,'2210','Direct Deposit Payable ','liability',NULL,'Funds pending direct deposit for payroll.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(38,'2220','FBI Loan','liability',NULL,'Deleted loan record.','inactive','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(39,'2230','General Dynamics Loan','liability',NULL,'Deleted loan record.','inactive','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(40,'2240','Loan from Father','liability',NULL,'Deleted personal loan record.','inactive','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(41,'2250','Loan Payable','liability',NULL,'Deleted general loan payable.','inactive','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(42,'2260','Out of Scope Agency Payable','liability',NULL,'Payable account for external agency obligations.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(43,'2270','Sales Tax Payable','liability',NULL,'Sales tax collected but not yet remitted.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(44,'2280','EIDL Loan','liability',NULL,'SBA Economic Injury Disaster Loan.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(45,'2290','Staron Inventory Loan','liability',NULL,'Inventory financing loan.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(46,'2310','Shareholder Loan','liability',NULL,'Funds borrowed from a shareholder.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(47,'2320','N/P Jeep Cherokee 2023','liability',NULL,'Note payable on Jeep Cherokee 2023.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(48,'2321','Escalade 2023','liability',NULL,'Note payable on Escalade 2023.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(49,'2322','Escalade 2025','liability',NULL,'Note payable on Escalade 2025.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(50,'2323','Golf Cart','liability',NULL,'Note payable on company golf cart.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(51,'2330','Note Payable - 2023 Cadillac','liability',NULL,'Note payable on Cadillac 2023.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(52,'2340','Note Payable - Shopify Capital','liability',NULL,'Deleted Shopify financing note.','inactive','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(53,'2350','Notes Payable - Cadillac ','liability',NULL,'Deleted vehicle loan.','inactive','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(54,'2360','Loan','liability',NULL,'Generic loan payable.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(55,'2365','Climate First Bank - SBA Loan','liability',NULL,'SBA-backed loan through Climate First Bank.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(56,'2470','Customer Deposits','liability',NULL,'Advance payments from customers.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(57,'2500','Capital Stock','liability',NULL,'Issued shares of company stock.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(58,'2510','Shareholder Distributions','liability',NULL,'Payments made to shareholders.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(59,'2520','Opening Balance Equity','liability',NULL,'Balancing account used when setting up books.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(60,'2530','Owner\'s Drawing','liability',NULL,'Withdrawals by the owner.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(61,'2540','Owner\'s Investment','liability',NULL,'Capital contributions by the owner.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(62,'2550','Retained Earnings','liability',NULL,'Cumulative retained profits.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(63,'2560','Shareholder - Nathan Staron','liability',NULL,'Shareholder equity—Nathon Staron.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(64,'2570','Shareholder - Jarrett Brownfield','liability',NULL,'Shareholder equity—JB.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(65,'3000','Equity','equity',NULL,'Owner’s equity representing ownership in the company.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(66,'3500','Retained Earnings','equity',NULL,'Cumulative profits retained in the business.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(67,'3900','Net Income','equity',NULL,'Profit or loss for the accounting period.','active','2025-11-11 23:27:26','2025-11-11 23:27:26'),
(68,'4440','Climate First Bank - Business Checking','equity',NULL,'Primary business checking account used for company transactions.','active','2025-11-11 23:27:26','2025-11-11 23:27:26');
commit;

--
-- Table structure for table `chart_of_accounts_backup_20250111`
--

CREATE TABLE `chart_of_accounts_backup_20250111` (
  `id` int(10) unsigned NOT NULL DEFAULT 0,
  `account_code` varchar(50) NOT NULL,
  `account_name` varchar(200) NOT NULL,
  `account_type` enum('asset','liability','equity','revenue','expense') NOT NULL,
  `parent_id` int(10) unsigned DEFAULT NULL,
  `description` text DEFAULT NULL,
  `status` enum('active','inactive') DEFAULT 'active',
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `chart_of_accounts_backup_20250111`
--

set autocommit=0;
INSERT INTO `chart_of_accounts_backup_20250111` VALUES
(2,'1100','Cash & Bank','asset',NULL,'Main cash and bank account','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(3,'1110','Cash','asset',NULL,'Cash on hand and in bank','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(4,'1120','Accounts Receivable','asset',NULL,'Money owed by customers','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(5,'1130','Inventory','asset',NULL,'Products in stock','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(6,'2000','Accounts Payable','liability',NULL,'Supplier bills outstanding - amounts we owe','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(7,'2100','Sales Tax Payable','liability',NULL,'Taxes collected from customers to be remitted','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(8,'2110','Accounts Payable','liability',NULL,'Money owed to suppliers','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(9,'2120','Salaries Payable','liability',NULL,'Unpaid employee salaries','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(10,'3000','Owner\'s Equity','equity',NULL,'Owner\'s capital investment','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(11,'3100','Retained Earnings','equity',NULL,'Accumulated profits retained in business','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(12,'4000','Sales Revenue','revenue',NULL,'Product and service sales income','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(13,'4100','Service Revenue','revenue',NULL,'Income from services provided','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(14,'4200','Other Income','revenue',NULL,'Miscellaneous income','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(15,'5000','Cost of Goods Sold','expense',NULL,'Direct costs of products sold','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(16,'5100','Purchase Discounts','expense',NULL,'Discounts received on purchases (contra-expense)','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(17,'5200','Freight & Shipping In','expense',NULL,'Shipping costs for inventory purchases','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(18,'5210','Salaries Expense','expense',NULL,'Employee compensation','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(19,'5220','Rent Expense','expense',NULL,'Facility rental costs','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(20,'5230','Utilities Expense','expense',NULL,'Utility bills','active','2025-10-26 14:24:24','2025-11-11 00:36:44'),
(21,'1200','Accounts Receivable','asset',NULL,'Customer invoices outstanding - amounts owed to us','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(22,'1300','Inventory','asset',NULL,'Product inventory on hand','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(23,'1400','Prepaid Expenses','asset',NULL,'Expenses paid in advance','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(24,'1500','Fixed Assets','asset',NULL,'Property, plant, and equipment','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(25,'1600','Accumulated Depreciation','asset',NULL,'Contra-asset: Accumulated depreciation on fixed assets','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(26,'2200','Payroll Liabilities','liability',NULL,'Employee wages and payroll taxes payable','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(27,'2300','Loans Payable','liability',NULL,'Business loans and notes payable','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(28,'2400','Accrued Expenses','liability',NULL,'Expenses incurred but not yet paid','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(29,'3200','Dividends','equity',NULL,'Distributions to owners/shareholders','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(30,'4300','Interest Income','revenue',NULL,'Interest earned on investments','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(31,'5500','Salaries & Wages','expense',NULL,'Employee compensation','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(32,'5600','Rent Expense','expense',NULL,'Facility rental costs','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(33,'5700','Utilities','expense',NULL,'Electricity, water, gas, internet','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(34,'5800','Insurance Expense','expense',NULL,'Business insurance premiums','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(35,'5900','Office Supplies','expense',NULL,'General office supplies and materials','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(36,'6000','Marketing & Advertising','expense',NULL,'Marketing and advertising costs','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(37,'6100','Professional Fees','expense',NULL,'Legal, accounting, consulting fees','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(38,'6200','Depreciation Expense','expense',NULL,'Depreciation of fixed assets','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(39,'6300','Interest Expense','expense',NULL,'Interest paid on loans and debt','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(40,'6400','Bad Debt Expense','expense',NULL,'Uncollectible customer receivables','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(41,'6500','Repairs & Maintenance','expense',NULL,'Equipment and facility maintenance','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(42,'6600','Travel & Entertainment','expense',NULL,'Business travel and client entertainment','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(43,'6700','Miscellaneous Expense','expense',NULL,'Other operating expenses','active','2025-10-31 23:27:12','2025-11-11 00:36:44'),
(92,'1111','Cash - Operating Account','asset',3,'Main checking account','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(93,'1112','Cash - Payroll Account','asset',3,'Payroll checking','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(94,'1113','Cash - Savings Account','asset',3,'Business savings','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(95,'1114','Petty Cash','asset',3,'Cash on hand','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(96,'1140','Prepaid Expenses','asset',2,'Expenses paid in advance','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(97,'1141','Prepaid Insurance','asset',10,'Insurance paid in advance','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(98,'1142','Prepaid Rent','asset',10,'Rent paid in advance','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(99,'1210','Property','asset',13,'Real estate','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(100,'1211','Land','asset',14,'Property land','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(101,'1212','Buildings','asset',14,'Building structures','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(102,'1220','Equipment','asset',13,'Machinery and equipment','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(103,'1221','Manufacturing Equipment','asset',17,'Production machinery','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(104,'1222','Office Equipment','asset',17,'Computers, printers, etc','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(105,'1223','Vehicles','asset',17,'Company vehicles','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(106,'1230','Accumulated Depreciation','asset',13,'Cumulative depreciation (contra)','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(107,'1231','Accum Depr - Buildings','asset',21,'Building depreciation','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(108,'1232','Accum Depr - Equipment','asset',21,'Equipment depreciation','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(109,'1233','Accum Depr - Vehicles','asset',21,'Vehicle depreciation','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(110,'2130','Payroll Liabilities','liability',26,'Employee payables','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(111,'2131','Wages Payable','liability',29,'Unpaid wages','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(112,'2132','Payroll Tax Payable','liability',29,'Employer taxes','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(113,'2140','Current Portion - LT Debt','liability',26,'Debt due within 1 year','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(114,'2150','Unearned Revenue','liability',26,'Payments received in advance','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(115,'2210','Notes Payable - Long Term','liability',34,'Long-term notes','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(116,'2220','Mortgage Payable','liability',34,'Real estate mortgage','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(117,'3300','Current Year Earnings','equity',37,'Year-to-date profit/loss','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(118,'3400','Dividends','equity',37,'Owner distributions','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(119,'4110','Product Sales','revenue',43,'Physical product sales','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(120,'4120','Service Revenue','revenue',43,'Service income','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(121,'4130','Installation Revenue','revenue',43,'Installation services','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(122,'4140','Maintenance Contracts','revenue',43,'Recurring maintenance','active','2025-11-04 20:16:40','2025-11-11 00:36:44'),
(123,'4900','Sales Returns & Allowances','revenue',42,'Refunds and discounts (contra)','active','2025-11-04 20:16:40','2025-11-11 00:36:44');
commit;
set autocommit=0;
commit;
set autocommit=0;
commit;

--
-- Table structure for table `check_templates`
--

CREATE TABLE `check_templates` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `template_name` varchar(100) NOT NULL,
  `template_type` enum('standard','voucher','stub_top','stub_bottom') DEFAULT 'standard',
  `is_default` tinyint(1) DEFAULT 0,
  `company_name` varchar(200) DEFAULT NULL,
  `company_address` text DEFAULT NULL,
  `bank_name` varchar(200) DEFAULT NULL,
  `routing_number` varchar(50) DEFAULT NULL,
  `account_number` varchar(50) DEFAULT NULL,
  `check_start_y` int(11) DEFAULT 100 COMMENT 'Y position in pixels',
  `check_start_x` int(11) DEFAULT 50 COMMENT 'X position in pixels',
  `amount_x` int(11) DEFAULT 500,
  `amount_y` int(11) DEFAULT 120,
  `date_x` int(11) DEFAULT 500,
  `date_y` int(11) DEFAULT 80,
  `payee_x` int(11) DEFAULT 100,
  `payee_y` int(11) DEFAULT 140,
  `memo_x` int(11) DEFAULT 100,
  `memo_y` int(11) DEFAULT 180,
  `signature_line_y` int(11) DEFAULT 220,
  `template_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'Full template configuration' CHECK (json_valid(`template_json`)),
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `created_by` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `created_by` (`created_by`),
  CONSTRAINT `check_templates_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `check_templates`
--

set autocommit=0;
INSERT INTO `check_templates` VALUES
(1,'Standard Check','standard',1,'Your Company Name','123 Business Street\nCity, State 12345',NULL,NULL,NULL,100,50,500,120,500,80,100,140,100,180,220,NULL,'2025-11-15 16:20:07','2025-11-15 16:20:07',NULL);
commit;

--
-- Table structure for table `closing_periods`
--

CREATE TABLE `closing_periods` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `period_type` enum('month','quarter','year') NOT NULL,
  `period_start` date NOT NULL,
  `period_end` date NOT NULL,
  `fiscal_year` int(11) NOT NULL,
  `status` enum('open','closing','closed','reopened') DEFAULT 'open',
  `closed_by` int(10) unsigned DEFAULT NULL,
  `closed_at` datetime DEFAULT NULL,
  `reopened_by` int(10) unsigned DEFAULT NULL,
  `reopened_at` datetime DEFAULT NULL,
  `reopen_reason` text DEFAULT NULL,
  `total_revenue` decimal(15,2) DEFAULT NULL,
  `total_expenses` decimal(15,2) DEFAULT NULL,
  `net_income` decimal(15,2) DEFAULT NULL,
  `closing_journal_entry_id` int(10) unsigned DEFAULT NULL COMMENT 'Link to closing journal entry',
  `notes` text DEFAULT NULL,
  `checklist` text DEFAULT NULL COMMENT 'JSON array of closing checklist items',
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_period` (`period_type`,`period_start`,`period_end`),
  KEY `idx_period` (`period_start`,`period_end`),
  KEY `idx_fiscal_year` (`fiscal_year`),
  KEY `idx_status` (`status`),
  KEY `closed_by` (`closed_by`),
  KEY `reopened_by` (`reopened_by`),
  CONSTRAINT `closing_periods_ibfk_1` FOREIGN KEY (`closed_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  CONSTRAINT `closing_periods_ibfk_2` FOREIGN KEY (`reopened_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `closing_periods`
--

set autocommit=0;
commit;

--
-- Table structure for table `competitive_equipment_snapshots`
--

CREATE TABLE `competitive_equipment_snapshots` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `competitor_name` varchar(255) NOT NULL,
  `equipment_observed` text DEFAULT NULL COMMENT 'What equipment they have',
  `capacity_estimate` decimal(12,2) DEFAULT NULL,
  `technology_level` enum('cutting_edge','modern','standard','outdated') DEFAULT 'standard',
  `observation_date` date DEFAULT NULL,
  `observation_method` varchar(100) DEFAULT NULL COMMENT 'Site visit, trade show, public filing, etc',
  `observed_by` int(10) unsigned DEFAULT NULL,
  `competitive_advantages` text DEFAULT NULL,
  `competitive_disadvantages` text DEFAULT NULL,
  `strategic_implications` text DEFAULT NULL,
  `notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `observed_by` (`observed_by`),
  KEY `idx_competitor` (`competitor_name`),
  KEY `idx_observation_date` (`observation_date`),
  CONSTRAINT `competitive_equipment_snapshots_ibfk_1` FOREIGN KEY (`observed_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `competitive_equipment_snapshots`
--

set autocommit=0;
commit;

--
-- Table structure for table `consolidated_proforma`
--

CREATE TABLE `consolidated_proforma` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `assumption_set_id` int(11) NOT NULL,
  `projection_date` date NOT NULL,
  `period_type` enum('monthly','quarterly','annual') DEFAULT 'monthly',
  `total_revenue` decimal(15,2) NOT NULL DEFAULT 0.00,
  `total_cogs` decimal(15,2) NOT NULL DEFAULT 0.00,
  `labor_costs` decimal(15,2) DEFAULT 0.00 COMMENT 'Total labor costs from equipment',
  `energy_costs` decimal(15,2) DEFAULT 0.00 COMMENT 'Total energy costs',
  `equipment_operating_costs` decimal(15,2) DEFAULT 0.00 COMMENT 'Total equipment operating costs',
  `gross_profit` decimal(15,2) NOT NULL DEFAULT 0.00,
  `gross_margin_pct` decimal(5,2) NOT NULL DEFAULT 0.00,
  `total_opex` decimal(15,2) NOT NULL DEFAULT 0.00,
  `ebitda` decimal(15,2) NOT NULL DEFAULT 0.00,
  `depreciation` decimal(15,2) NOT NULL DEFAULT 0.00,
  `equipment_depreciation` decimal(15,2) DEFAULT 0.00 COMMENT 'Equipment depreciation',
  `ebit` decimal(15,2) NOT NULL DEFAULT 0.00,
  `interest_expense` decimal(15,2) NOT NULL DEFAULT 0.00,
  `tax_expense` decimal(15,2) NOT NULL DEFAULT 0.00,
  `net_income` decimal(15,2) NOT NULL DEFAULT 0.00,
  `operating_cash_flow` decimal(15,2) NOT NULL DEFAULT 0.00,
  `capex` decimal(15,2) NOT NULL DEFAULT 0.00,
  `free_cash_flow` decimal(15,2) NOT NULL DEFAULT 0.00,
  `cash` decimal(15,2) NOT NULL DEFAULT 0.00,
  `accounts_receivable` decimal(15,2) NOT NULL DEFAULT 0.00,
  `inventory` decimal(15,2) NOT NULL DEFAULT 0.00,
  `total_current_assets` decimal(15,2) NOT NULL DEFAULT 0.00,
  `net_ppe` decimal(15,2) NOT NULL DEFAULT 0.00,
  `total_assets` decimal(15,2) NOT NULL DEFAULT 0.00,
  `accounts_payable` decimal(15,2) NOT NULL DEFAULT 0.00,
  `debt_balance` decimal(15,2) NOT NULL DEFAULT 0.00,
  `total_liabilities` decimal(15,2) NOT NULL DEFAULT 0.00,
  `equity` decimal(15,2) NOT NULL DEFAULT 0.00,
  `total_capacity_hours` decimal(12,2) NOT NULL DEFAULT 0.00,
  `utilized_capacity_hours` decimal(12,2) NOT NULL DEFAULT 0.00,
  `available_capacity_hours` decimal(12,2) DEFAULT 0.00 COMMENT 'Available capacity hours',
  `capacity_gap_hours` decimal(12,2) DEFAULT 0.00 COMMENT 'Capacity shortfall hours',
  `recommended_machines` decimal(6,2) DEFAULT 0.00 COMMENT 'Additional machines recommended',
  `lost_revenue_from_capacity` decimal(15,2) DEFAULT 0.00 COMMENT 'Revenue lost due to capacity constraints',
  `capacity_utilization_pct` decimal(5,2) NOT NULL DEFAULT 0.00,
  `capacity_constrained` tinyint(1) DEFAULT 0 COMMENT 'Is this period capacity constrained',
  `generated_at` timestamp NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_set_date_period` (`assumption_set_id`,`projection_date`,`period_type`),
  KEY `idx_set` (`assumption_set_id`),
  KEY `idx_date` (`projection_date`),
  KEY `idx_period` (`period_type`),
  KEY `idx_proforma_capacity` (`assumption_set_id`,`capacity_constrained`),
  KEY `idx_proforma_date` (`projection_date`,`period_type`),
  CONSTRAINT `consolidated_proforma_ibfk_1` FOREIGN KEY (`assumption_set_id`) REFERENCES `forecast_assumption_sets` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `consolidated_proforma`
--

set autocommit=0;
commit;

--
-- Table structure for table `contract_items`
--

CREATE TABLE `contract_items` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `contract_id` int(10) unsigned NOT NULL,
  `product_id` int(10) unsigned DEFAULT NULL,
  `description` text NOT NULL,
  `agreed_price` decimal(15,2) DEFAULT NULL,
  `minimum_quantity` int(11) DEFAULT NULL,
  `maximum_quantity` int(11) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `contract_id` (`contract_id`),
  KEY `product_id` (`product_id`),
  CONSTRAINT `contract_items_ibfk_1` FOREIGN KEY (`contract_id`) REFERENCES `supplier_contracts` (`id`) ON DELETE CASCADE,
  CONSTRAINT `contract_items_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `contract_items`
--

set autocommit=0;
commit;

--
-- Table structure for table `cost_allocation_rules`
--

CREATE TABLE `cost_allocation_rules` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `rule_name` varchar(100) NOT NULL COMMENT 'Name of allocation rule',
  `rule_type` enum('overhead','indirect_labor','utilities','rent','other') DEFAULT 'overhead',
  `allocation_method` enum('square_footage','labor_hours','machine_hours','revenue','units_produced','equal','manual') NOT NULL,
  `cost_pool_account_id` int(11) DEFAULT NULL COMMENT 'GL account for cost pool',
  `apply_to_products` tinyint(1) DEFAULT 1 COMMENT 'Apply to product costs',
  `apply_to_work_orders` tinyint(1) DEFAULT 1 COMMENT 'Apply to work orders',
  `is_active` tinyint(1) DEFAULT 1,
  `notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_rule_type` (`rule_type`),
  KEY `idx_active` (`is_active`),
  KEY `idx_allocation_method` (`allocation_method`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Rules for allocating overhead and indirect costs';

--
-- Dumping data for table `cost_allocation_rules`
--

set autocommit=0;
commit;

--
-- Table structure for table `credit_note_applications`
--

CREATE TABLE `credit_note_applications` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `credit_note_id` int(10) unsigned NOT NULL,
  `invoice_id` int(10) unsigned NOT NULL,
  `amount_applied` decimal(15,2) NOT NULL,
  `application_date` date NOT NULL,
  `journal_entry_id` int(10) unsigned DEFAULT NULL COMMENT 'GL entry for this application',
  `is_reversed` tinyint(1) DEFAULT 0,
  `reversed_date` date DEFAULT NULL,
  `reversal_reason` text DEFAULT NULL,
  `reversed_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `created_by` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_credit_note` (`credit_note_id`),
  KEY `idx_invoice` (`invoice_id`),
  KEY `idx_application_date` (`application_date`),
  KEY `idx_reversed` (`is_reversed`),
  KEY `journal_entry_id` (`journal_entry_id`),
  KEY `created_by` (`created_by`),
  KEY `reversed_by` (`reversed_by`),
  CONSTRAINT `credit_note_applications_ibfk_1` FOREIGN KEY (`credit_note_id`) REFERENCES `credit_notes` (`id`) ON DELETE CASCADE,
  CONSTRAINT `credit_note_applications_ibfk_2` FOREIGN KEY (`invoice_id`) REFERENCES `invoices` (`id`) ON DELETE CASCADE,
  CONSTRAINT `credit_note_applications_ibfk_3` FOREIGN KEY (`journal_entry_id`) REFERENCES `journal_entries` (`id`) ON DELETE SET NULL,
  CONSTRAINT `credit_note_applications_ibfk_4` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  CONSTRAINT `credit_note_applications_ibfk_5` FOREIGN KEY (`reversed_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `credit_note_applications`
--

set autocommit=0;
commit;

--
-- Table structure for table `credit_note_items`
--

CREATE TABLE `credit_note_items` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `credit_note_id` int(10) unsigned NOT NULL,
  `product_id` int(10) unsigned DEFAULT NULL,
  `description` text NOT NULL,
  `quantity` decimal(10,2) NOT NULL,
  `unit_price` decimal(15,2) NOT NULL,
  `tax_rate` decimal(5,2) DEFAULT 0.00,
  `line_total` decimal(15,2) NOT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `credit_note_id` (`credit_note_id`),
  KEY `product_id` (`product_id`),
  CONSTRAINT `credit_note_items_ibfk_1` FOREIGN KEY (`credit_note_id`) REFERENCES `credit_notes` (`id`) ON DELETE CASCADE,
  CONSTRAINT `credit_note_items_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `credit_note_items`
--

set autocommit=0;
commit;

--
-- Table structure for table `credit_notes`
--

CREATE TABLE `credit_notes` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `credit_note_number` varchar(50) NOT NULL,
  `invoice_id` int(10) unsigned NOT NULL,
  `customer_id` int(10) unsigned NOT NULL,
  `issue_date` date NOT NULL,
  `reason` varchar(255) DEFAULT NULL,
  `subtotal` decimal(15,2) DEFAULT 0.00,
  `tax_amount` decimal(15,2) DEFAULT 0.00,
  `total_amount` decimal(15,2) DEFAULT 0.00,
  `applied_amount` decimal(15,2) DEFAULT 0.00,
  `status` enum('draft','issued','applied','void') DEFAULT 'draft',
  `notes` text DEFAULT NULL,
  `created_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `deleted_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `credit_note_number` (`credit_note_number`),
  KEY `invoice_id` (`invoice_id`),
  KEY `customer_id` (`customer_id`),
  KEY `created_by` (`created_by`),
  KEY `idx_credit_notes_deleted_at` (`deleted_at`),
  CONSTRAINT `credit_notes_ibfk_1` FOREIGN KEY (`invoice_id`) REFERENCES `invoices` (`id`),
  CONSTRAINT `credit_notes_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`),
  CONSTRAINT `credit_notes_ibfk_3` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `credit_notes`
--

set autocommit=0;
commit;

--
-- Table structure for table `crm_customer_notes`
--

CREATE TABLE `crm_customer_notes` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `customer_id` int(10) unsigned NOT NULL,
  `note_text` text NOT NULL,
  `is_important` tinyint(1) DEFAULT 0,
  `user_id` int(10) unsigned NOT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `customer_id` (`customer_id`),
  KEY `user_id` (`user_id`),
  CONSTRAINT `crm_customer_notes_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE,
  CONSTRAINT `crm_customer_notes_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `crm_customer_notes`
--

set autocommit=0;
commit;

--
-- Table structure for table `crm_customer_tags`
--

CREATE TABLE `crm_customer_tags` (
  `customer_id` int(10) unsigned NOT NULL,
  `tag_id` int(10) unsigned NOT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`customer_id`,`tag_id`),
  KEY `tag_id` (`tag_id`),
  CONSTRAINT `crm_customer_tags_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE,
  CONSTRAINT `crm_customer_tags_ibfk_2` FOREIGN KEY (`tag_id`) REFERENCES `crm_tags` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `crm_customer_tags`
--

set autocommit=0;
commit;

--
-- Table structure for table `crm_documents`
--

CREATE TABLE `crm_documents` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `customer_id` int(10) unsigned NOT NULL,
  `document_name` varchar(255) NOT NULL,
  `document_type` enum('contract','proposal','invoice','agreement','nda','other') DEFAULT 'other',
  `file_path` varchar(500) NOT NULL,
  `file_size` int(10) unsigned DEFAULT NULL COMMENT 'Size in bytes',
  `mime_type` varchar(100) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `version` varchar(20) DEFAULT '1.0',
  `is_signed` tinyint(1) DEFAULT 0,
  `signed_date` date DEFAULT NULL,
  `expiry_date` date DEFAULT NULL,
  `is_confidential` tinyint(1) DEFAULT 0,
  `uploaded_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `customer_id` (`customer_id`),
  KEY `uploaded_by` (`uploaded_by`),
  KEY `document_type` (`document_type`),
  CONSTRAINT `crm_documents_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE,
  CONSTRAINT `crm_documents_ibfk_2` FOREIGN KEY (`uploaded_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `crm_documents`
--

set autocommit=0;
INSERT INTO `crm_documents` VALUES
(3,46,'test','proposal','uploads/crm/documents/1763696109_NDA2025.pdf',187512,'application/pdf','','1.0',0,NULL,NULL,0,1,'2025-11-21 03:35:09','2025-11-21 03:35:09');
commit;

--
-- Table structure for table `crm_opportunities`
--

CREATE TABLE `crm_opportunities` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `customer_id` int(10) unsigned NOT NULL,
  `primary_contact_id` int(10) unsigned DEFAULT NULL COMMENT 'Primary contact person for this opportunity',
  `related_to` int(10) unsigned DEFAULT NULL COMMENT 'Link to parent opportunity for cross-sell/upsell',
  `opportunity_name` varchar(255) NOT NULL,
  `opportunity_value` decimal(15,2) DEFAULT 0.00,
  `stage` enum('lead','qualified','proposal','negotiation','closed_won','closed_lost') DEFAULT 'lead',
  `requires_nda` tinyint(1) DEFAULT 0,
  `nda_status` enum('not_required','pending','sent','signed','declined','expired') DEFAULT 'not_required',
  `block_quote_without_nda` tinyint(1) DEFAULT 1,
  `last_stage_change_at` timestamp NULL DEFAULT NULL COMMENT 'When the stage was last changed',
  `probability` int(11) DEFAULT 0 COMMENT 'Percentage 0-100',
  `expected_close_date` date DEFAULT NULL,
  `next_activity_date` date DEFAULT NULL COMMENT 'Date of next scheduled activity',
  `last_activity_date` datetime DEFAULT NULL COMMENT 'When the last activity occurred',
  `actual_close_date` date DEFAULT NULL,
  `won_time` timestamp NULL DEFAULT NULL COMMENT 'When the deal was won',
  `lost_time` timestamp NULL DEFAULT NULL COMMENT 'When the deal was lost',
  `closed_at` timestamp NULL DEFAULT NULL COMMENT 'When the deal was closed (won or lost)',
  `last_email_sent_at` timestamp NULL DEFAULT NULL COMMENT 'Last outgoing email timestamp',
  `last_email_received_at` timestamp NULL DEFAULT NULL COMMENT 'Last incoming email timestamp',
  `win_reason` text DEFAULT NULL COMMENT 'Why the deal was won',
  `loss_reason` text DEFAULT NULL COMMENT 'Why the deal was lost',
  `source` varchar(100) DEFAULT NULL COMMENT 'Lead source: Website, Referral, Cold Call, etc.',
  `assigned_to` int(10) unsigned DEFAULT NULL COMMENT 'Primary owner (for backward compatibility, use opportunity_assignments for full list)',
  `description` text DEFAULT NULL,
  `notes` text DEFAULT NULL,
  `status` enum('active','won','lost','cancelled') DEFAULT 'active',
  `created_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `battery_application` varchar(255) DEFAULT NULL COMMENT 'Battery use case/application',
  `voltage` varchar(50) DEFAULT NULL COMMENT 'Voltage requirement (e.g., 14.8V)',
  `desired_capacity` varchar(50) DEFAULT NULL COMMENT 'Capacity requirement (e.g., 20AH)',
  `chemistry` varchar(100) DEFAULT NULL COMMENT 'Battery chemistry type (e.g., LiFePO4, NCM)',
  `battery_length` decimal(10,2) DEFAULT NULL COMMENT 'Length in inches',
  `battery_width` decimal(10,2) DEFAULT NULL COMMENT 'Width in inches',
  `battery_height` decimal(10,2) DEFAULT NULL COMMENT 'Height in inches',
  `continuous_discharge` varchar(50) DEFAULT NULL COMMENT 'Continuous discharge in amps',
  `peak_discharge` varchar(50) DEFAULT NULL COMMENT 'Peak discharge in amps',
  `battery_case_type` varchar(100) DEFAULT NULL COMMENT 'Case/enclosure type',
  `communication_bms` varchar(255) DEFAULT NULL COMMENT 'Communication protocol/BMS type',
  `additional_details` text DEFAULT NULL COMMENT 'Additional project details',
  `annual_quantity` varchar(50) DEFAULT NULL COMMENT 'Expected annual order quantity',
  PRIMARY KEY (`id`),
  KEY `customer_id` (`customer_id`),
  KEY `assigned_to` (`assigned_to`),
  KEY `created_by` (`created_by`),
  KEY `stage` (`stage`),
  KEY `status` (`status`),
  KEY `idx_primary_contact` (`primary_contact_id`),
  KEY `idx_related_to` (`related_to`),
  KEY `idx_last_stage_change` (`last_stage_change_at`),
  KEY `idx_next_activity` (`next_activity_date`),
  KEY `idx_last_activity` (`last_activity_date`),
  KEY `idx_won_time` (`won_time`),
  KEY `idx_lost_time` (`lost_time`),
  KEY `idx_closed_at` (`closed_at`),
  KEY `idx_requires_nda` (`requires_nda`),
  KEY `idx_nda_status` (`nda_status`),
  CONSTRAINT `crm_opportunities_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE,
  CONSTRAINT `crm_opportunities_ibfk_2` FOREIGN KEY (`assigned_to`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  CONSTRAINT `crm_opportunities_ibfk_3` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=86 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `crm_opportunities`
--

set autocommit=0;
INSERT INTO `crm_opportunities` VALUES
(23,46,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-09-19 19:32:00',85,NULL,'2025-10-29','2025-11-01 12:30:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-027-111325',NULL,'active',1,'2025-09-19 19:32:00','2025-11-14 23:57:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(24,47,NULL,NULL,'Battery Pack',0.00,'negotiation',0,'signed',1,'2025-11-13 15:33:28',85,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',5,'Opportunity based on battery quote(s). Quote numbers: Q-008-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-12-03 19:41:58',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(25,48,NULL,NULL,'Battery Pack',0.00,'lead',0,'not_required',1,'2025-11-24 13:25:26',50,NULL,NULL,'2025-11-24 08:25:26',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-013-111325 - convo was good!',NULL,'active',1,'2025-11-13 15:33:28','2025-11-24 13:51:11',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(26,49,NULL,NULL,'Battery Pack',0.00,'qualified',0,'not_required',1,'2025-11-25 23:09:08',25,NULL,NULL,'2025-11-25 18:09:08',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-006-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-25 23:09:08',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(27,50,NULL,NULL,'Battery Pack',0.00,'qualified',0,'not_required',1,'2025-11-26 00:15:41',25,NULL,NULL,'2025-11-25 19:15:41',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-041-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-26 00:15:41',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(28,51,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-004-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(29,52,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-005-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(30,53,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-014-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(31,54,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-023-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(32,55,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-015-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(33,56,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-048-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(34,57,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-011-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(35,58,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-019-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(36,59,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-036-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(37,60,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-010-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(38,61,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-044-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(39,62,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-033-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(40,63,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-009-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(41,64,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-007-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(42,65,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-026-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(43,66,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-021-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(44,67,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-022-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(45,68,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-001-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(46,69,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-002-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(47,70,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-047-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(48,71,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-029-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(49,72,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-039-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(50,73,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-028-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(51,74,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-003-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(52,75,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-012-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(53,76,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-034-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(54,77,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-043-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(55,78,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-020-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(56,79,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-025-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(57,80,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-018-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(58,81,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-038-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(59,82,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-017-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(60,83,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-031-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(61,84,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-037-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(62,85,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-032-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(63,86,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-030-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(64,87,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-040-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(65,88,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-045-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(66,89,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-016-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(67,90,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-024-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(68,91,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-035-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(69,92,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-046-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),
(70,93,NULL,NULL,'Battery Pack',0.00,'proposal',0,'not_required',1,'2025-11-13 15:33:28',50,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Quote',NULL,'Opportunity based on battery quote(s). Quote numbers: Q-042-111325',NULL,'active',1,'2025-11-13 15:33:28','2025-11-14 23:38:55',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
commit;

--
-- Table structure for table `crm_opportunity_activities`
--

CREATE TABLE `crm_opportunity_activities` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `opportunity_id` int(10) unsigned NOT NULL,
  `activity_type` enum('note','call','meeting','email','status_change') NOT NULL,
  `subject` varchar(255) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `activity_date` datetime DEFAULT NULL,
  `user_id` int(10) unsigned NOT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `opportunity_id` (`opportunity_id`),
  KEY `user_id` (`user_id`),
  CONSTRAINT `crm_opportunity_activities_ibfk_1` FOREIGN KEY (`opportunity_id`) REFERENCES `crm_opportunities` (`id`) ON DELETE CASCADE,
  CONSTRAINT `crm_opportunity_activities_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `crm_opportunity_activities`
--

set autocommit=0;
INSERT INTO `crm_opportunity_activities` VALUES
(3,35,'status_change','Stage Changed','Moved from Proposal to Negotiation','2025-11-14 14:42:53',1,'2025-11-14 19:42:53','2025-11-14 19:42:53'),
(4,35,'status_change','Stage Changed','Moved from Negotiation to Proposal','2025-11-14 14:42:59',1,'2025-11-14 19:42:59','2025-11-14 19:42:59'),
(5,25,'status_change','Stage Changed','Moved from Proposal to Qualified','2025-11-24 08:25:17',1,'2025-11-24 13:25:17','2025-11-24 13:25:17'),
(6,25,'status_change','Stage Changed','Moved from Qualified to Lead','2025-11-24 08:25:26',1,'2025-11-24 13:25:26','2025-11-24 13:25:26'),
(7,26,'status_change','Stage Changed','Moved from Proposal to Qualified','2025-11-24 08:25:28',1,'2025-11-24 13:25:28','2025-11-24 13:25:28'),
(8,26,'status_change','Stage Changed','Moved from Qualified to Lead','2025-11-25 18:09:03',1,'2025-11-25 23:09:03','2025-11-25 23:09:03'),
(9,26,'status_change','Stage Changed','Moved from Lead to Qualified','2025-11-25 18:09:08',1,'2025-11-25 23:09:08','2025-11-25 23:09:08'),
(10,27,'status_change','Stage Changed','Moved from Proposal to Qualified','2025-11-25 19:15:41',1,'2025-11-26 00:15:41','2025-11-26 00:15:41');
commit;

--
-- Table structure for table `crm_support_ticket_attachments`
--

CREATE TABLE `crm_support_ticket_attachments` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `ticket_id` int(10) unsigned NOT NULL,
  `file_name` varchar(255) NOT NULL,
  `file_path` varchar(500) NOT NULL,
  `file_size` int(10) unsigned NOT NULL COMMENT 'Size in bytes',
  `mime_type` varchar(100) DEFAULT NULL,
  `uploaded_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `ticket_id` (`ticket_id`),
  KEY `uploaded_by` (`uploaded_by`),
  CONSTRAINT `crm_support_ticket_attachments_ibfk_1` FOREIGN KEY (`ticket_id`) REFERENCES `crm_support_tickets` (`id`) ON DELETE CASCADE,
  CONSTRAINT `crm_support_ticket_attachments_ibfk_2` FOREIGN KEY (`uploaded_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `crm_support_ticket_attachments`
--

set autocommit=0;
commit;

--
-- Table structure for table `crm_support_ticket_responses`
--

CREATE TABLE `crm_support_ticket_responses` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `ticket_id` int(10) unsigned NOT NULL,
  `user_id` int(10) unsigned NOT NULL,
  `response_text` text NOT NULL,
  `is_internal` tinyint(1) DEFAULT 0 COMMENT 'Internal notes not visible to customer',
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `ticket_id` (`ticket_id`),
  KEY `user_id` (`user_id`),
  CONSTRAINT `crm_support_ticket_responses_ibfk_1` FOREIGN KEY (`ticket_id`) REFERENCES `crm_support_tickets` (`id`) ON DELETE CASCADE,
  CONSTRAINT `crm_support_ticket_responses_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `crm_support_ticket_responses`
--

set autocommit=0;
INSERT INTO `crm_support_ticket_responses` VALUES
(1,1,1,'test',0,'2025-10-30 00:45:45','2025-11-11 00:36:44');
commit;

--
-- Table structure for table `crm_support_tickets`
--

CREATE TABLE `crm_support_tickets` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `ticket_number` varchar(50) NOT NULL,
  `customer_id` int(10) unsigned NOT NULL,
  `contact_id` int(10) unsigned DEFAULT NULL COMMENT 'Reference to customer_contacts',
  `subject` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `priority` enum('low','medium','high','urgent') DEFAULT 'medium',
  `status` enum('open','in_progress','pending','resolved','closed','cancelled') DEFAULT 'open',
  `category` varchar(100) DEFAULT NULL COMMENT 'Technical, Billing, General, etc.',
  `assigned_to` int(10) unsigned DEFAULT NULL,
  `resolution_notes` text DEFAULT NULL,
  `opened_at` datetime DEFAULT current_timestamp(),
  `closed_at` datetime DEFAULT NULL,
  `created_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `ticket_number` (`ticket_number`),
  KEY `customer_id` (`customer_id`),
  KEY `contact_id` (`contact_id`),
  KEY `assigned_to` (`assigned_to`),
  KEY `status` (`status`),
  KEY `priority` (`priority`),
  KEY `created_by` (`created_by`),
  CONSTRAINT `crm_support_tickets_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE,
  CONSTRAINT `crm_support_tickets_ibfk_2` FOREIGN KEY (`contact_id`) REFERENCES `customer_contacts` (`id`) ON DELETE SET NULL,
  CONSTRAINT `crm_support_tickets_ibfk_3` FOREIGN KEY (`assigned_to`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  CONSTRAINT `crm_support_tickets_ibfk_4` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `crm_support_tickets`
--

set autocommit=0;
commit;

--
-- Table structure for table `crm_tags`
--

CREATE TABLE `crm_tags` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `color` varchar(7) DEFAULT '#3498db' COMMENT 'Hex color code',
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `crm_tags`
--

set autocommit=0;
INSERT INTO `crm_tags` VALUES
(1,'VIP','#e74c3c','2025-10-29 23:45:39','2025-11-11 00:36:44'),
(2,'Partner','#9b59b6','2025-10-29 23:45:39','2025-11-11 00:36:44'),
(3,'Prospect','#3498db','2025-10-29 23:45:39','2025-11-11 00:36:44'),
(4,'Active','#2ecc71','2025-10-29 23:45:39','2025-11-11 00:36:44'),
(5,'Inactive','#95a5a6','2025-10-29 23:45:39','2025-11-11 00:36:44'),
(6,'High Value','#f39c12','2025-10-29 23:45:39','2025-11-11 00:36:44'),
(7,'Enterprise','#1abc9c','2025-10-29 23:45:39','2025-11-11 00:36:44'),
(8,'SMB','#34495e','2025-10-29 23:45:39','2025-11-11 00:36:44');
commit;

--
-- Table structure for table `currencies`
--

CREATE TABLE `currencies` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `code` varchar(3) NOT NULL COMMENT 'ISO 4217 currency code',
  `name` varchar(100) NOT NULL,
  `symbol` varchar(10) NOT NULL,
  `decimal_places` int(11) DEFAULT 2,
  `is_base_currency` tinyint(1) DEFAULT 0,
  `is_active` tinyint(1) DEFAULT 1,
  `display_order` int(11) DEFAULT 0,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `code` (`code`),
  KEY `idx_is_active` (`is_active`),
  KEY `idx_is_base` (`is_base_currency`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `currencies`
--

set autocommit=0;
INSERT INTO `currencies` VALUES
(1,'USD','US Dollar','$',2,1,1,1,'2025-11-12 17:29:39','2025-11-12 17:29:39'),
(2,'EUR','Euro','€',2,0,1,2,'2025-11-12 17:29:39','2025-11-12 17:29:39'),
(3,'GBP','British Pound','£',2,0,1,3,'2025-11-12 17:29:39','2025-11-12 17:29:39'),
(4,'JPY','Japanese Yen','¥',0,0,1,4,'2025-11-12 17:29:39','2025-11-12 17:29:39'),
(5,'CAD','Canadian Dollar','C$',2,0,1,5,'2025-11-12 17:29:39','2025-11-12 17:29:39'),
(6,'AUD','Australian Dollar','A$',2,0,1,6,'2025-11-12 17:29:39','2025-11-12 17:29:39'),
(7,'CHF','Swiss Franc','CHF',2,0,1,7,'2025-11-12 17:29:39','2025-11-12 17:29:39'),
(8,'CNY','Chinese Yuan','¥',2,0,1,8,'2025-11-12 17:29:39','2025-11-12 17:29:39'),
(9,'INR','Indian Rupee','₹',2,0,1,9,'2025-11-12 17:29:39','2025-11-12 17:29:39'),
(10,'MXN','Mexican Peso','MX$',2,0,1,10,'2025-11-12 17:29:39','2025-11-12 17:29:39');
commit;

--
-- Table structure for table `currency_revaluations`
--

CREATE TABLE `currency_revaluations` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `revaluation_date` date NOT NULL,
  `currency_id` int(10) unsigned NOT NULL,
  `exchange_rate_id` int(10) unsigned DEFAULT NULL,
  `account_id` int(10) unsigned DEFAULT NULL COMMENT 'Chart of accounts ID',
  `original_amount` decimal(15,2) NOT NULL,
  `original_currency_id` int(10) unsigned NOT NULL,
  `revalued_amount` decimal(15,2) NOT NULL,
  `gain_loss_amount` decimal(15,2) NOT NULL,
  `gain_loss_type` enum('realized','unrealized') DEFAULT 'unrealized',
  `journal_entry_id` int(10) unsigned DEFAULT NULL COMMENT 'Link to journal entry',
  `status` enum('draft','posted','reversed') DEFAULT 'draft',
  `notes` text DEFAULT NULL,
  `created_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `original_currency_id` (`original_currency_id`),
  KEY `exchange_rate_id` (`exchange_rate_id`),
  KEY `account_id` (`account_id`),
  KEY `journal_entry_id` (`journal_entry_id`),
  KEY `created_by` (`created_by`),
  KEY `idx_revaluation_date` (`revaluation_date`),
  KEY `idx_currency` (`currency_id`),
  KEY `idx_status` (`status`),
  CONSTRAINT `currency_revaluations_ibfk_1` FOREIGN KEY (`currency_id`) REFERENCES `currencies` (`id`) ON DELETE CASCADE,
  CONSTRAINT `currency_revaluations_ibfk_2` FOREIGN KEY (`original_currency_id`) REFERENCES `currencies` (`id`) ON DELETE CASCADE,
  CONSTRAINT `currency_revaluations_ibfk_3` FOREIGN KEY (`exchange_rate_id`) REFERENCES `exchange_rates` (`id`) ON DELETE SET NULL,
  CONSTRAINT `currency_revaluations_ibfk_4` FOREIGN KEY (`account_id`) REFERENCES `chart_of_accounts` (`id`) ON DELETE CASCADE,
  CONSTRAINT `currency_revaluations_ibfk_5` FOREIGN KEY (`journal_entry_id`) REFERENCES `journal_entries` (`id`) ON DELETE SET NULL,
  CONSTRAINT `currency_revaluations_ibfk_6` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `currency_revaluations`
--

set autocommit=0;
commit;

--
-- Table structure for table `custom_reports`
--

CREATE TABLE `custom_reports` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `category` varchar(100) DEFAULT NULL,
  `query_sql` text NOT NULL,
  `parameters` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'Query parameters with default values' CHECK (json_valid(`parameters`)),
  `columns` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'Column definitions for display' CHECK (json_valid(`columns`)),
  `is_public` tinyint(1) DEFAULT 0,
  `created_by` int(10) unsigned NOT NULL,
  `last_run_at` timestamp NULL DEFAULT NULL,
  `run_count` int(11) DEFAULT 0,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_created_by` (`created_by`),
  KEY `idx_category` (`category`),
  CONSTRAINT `custom_reports_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `custom_reports`
--

set autocommit=0;
commit;

--
-- Table structure for table `customer_activities`
--

CREATE TABLE `customer_activities` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `customer_id` int(10) unsigned NOT NULL,
  `user_id` int(10) unsigned NOT NULL,
  `activity_type` enum('note','call','meeting','email','task') NOT NULL,
  `subject` varchar(255) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `activity_date` datetime DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `customer_id` (`customer_id`),
  KEY `user_id` (`user_id`),
  CONSTRAINT `customer_activities_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE,
  CONSTRAINT `customer_activities_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `customer_activities`
--

set autocommit=0;
INSERT INTO `customer_activities` VALUES
(1,2,1,'email','Test','','2025-10-30 20:57:00','2025-10-30 00:58:01','2025-11-11 00:36:44'),
(2,16,1,'call','Discuss purchase','','2025-11-05 11:49:00','2025-11-05 16:49:18','2025-11-11 00:36:44'),
(3,46,1,'note','test','test','2025-12-01 22:02:00','2025-12-02 03:02:36','2025-12-02 03:02:36');
commit;

--
-- Table structure for table `customer_contacts`
--

CREATE TABLE `customer_contacts` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `contact_type` enum('customer','client') DEFAULT 'customer',
  `customer_id` int(10) unsigned NOT NULL,
  `first_name` varchar(100) NOT NULL,
  `last_name` varchar(100) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `secondary_email` varchar(255) DEFAULT NULL,
  `tertiary_email` varchar(255) DEFAULT NULL,
  `phone` varchar(20) DEFAULT NULL,
  `position` varchar(100) DEFAULT NULL,
  `is_primary` tinyint(1) DEFAULT 0,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `deleted_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `customer_id` (`customer_id`),
  KEY `idx_secondary_email` (`secondary_email`),
  KEY `idx_tertiary_email` (`tertiary_email`),
  KEY `idx_deleted_at` (`deleted_at`),
  CONSTRAINT `customer_contacts_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=70 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `customer_contacts`
--

set autocommit=0;
commit;

--
-- Table structure for table `customer_credit_balances`
--

CREATE TABLE `customer_credit_balances` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `customer_id` int(10) unsigned NOT NULL,
  `total_credit_issued` decimal(15,2) DEFAULT 0.00,
  `total_credit_applied` decimal(15,2) DEFAULT 0.00,
  `available_credit` decimal(15,2) DEFAULT 0.00,
  `credit_note_count` int(11) DEFAULT 0,
  `last_credit_date` date DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `customer_id` (`customer_id`),
  KEY `idx_customer` (`customer_id`),
  KEY `idx_available` (`available_credit`),
  CONSTRAINT `customer_credit_balances_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `customer_credit_balances`
--

set autocommit=0;
commit;

--
-- Table structure for table `customer_documents`
--

CREATE TABLE `customer_documents` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `customer_id` int(10) unsigned NOT NULL,
  `file_name` varchar(255) NOT NULL,
  `file_path` varchar(500) NOT NULL,
  `file_size` int(10) unsigned NOT NULL,
  `mime_type` varchar(100) DEFAULT NULL,
  `description` text DEFAULT NULL,
  `uploaded_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `customer_id` (`customer_id`),
  KEY `uploaded_by` (`uploaded_by`),
  CONSTRAINT `customer_documents_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE,
  CONSTRAINT `customer_documents_ibfk_2` FOREIGN KEY (`uploaded_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `customer_documents`
--

set autocommit=0;
commit;

--
-- Table structure for table `customers`
--

CREATE TABLE `customers` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `customer_type` enum('individual','company') DEFAULT 'individual',
  `company_type` enum('client','customer') DEFAULT 'customer',
  `company_name` varchar(255) DEFAULT NULL,
  `first_name` varchar(100) DEFAULT NULL,
  `last_name` varchar(100) DEFAULT NULL,
  `email` varchar(255) NOT NULL,
  `secondary_email` varchar(255) DEFAULT NULL,
  `tertiary_email` varchar(255) DEFAULT NULL,
  `phone` varchar(20) DEFAULT NULL,
  `mobile` varchar(20) DEFAULT NULL,
  `website` varchar(255) DEFAULT NULL,
  `tax_id` varchar(50) DEFAULT NULL,
  `billing_address` text DEFAULT NULL,
  `billing_city` varchar(100) DEFAULT NULL,
  `billing_state` varchar(100) DEFAULT NULL,
  `billing_zip` varchar(20) DEFAULT NULL,
  `billing_country` varchar(100) DEFAULT NULL,
  `shipping_address` text DEFAULT NULL,
  `shipping_city` varchar(100) DEFAULT NULL,
  `shipping_state` varchar(100) DEFAULT NULL,
  `shipping_zip` varchar(20) DEFAULT NULL,
  `shipping_country` varchar(100) DEFAULT NULL,
  `notes` text DEFAULT NULL,
  `status` enum('active','inactive') DEFAULT 'active',
  `created_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `deleted_at` timestamp NULL DEFAULT NULL,
  `tax_exempt` tinyint(1) DEFAULT 0 COMMENT 'Quick flag for tax exempt status',
  `tax_jurisdiction_id` int(10) unsigned DEFAULT NULL COMMENT 'Primary tax jurisdiction',
  PRIMARY KEY (`id`),
  KEY `email` (`email`),
  KEY `created_by` (`created_by`),
  KEY `idx_secondary_email` (`secondary_email`),
  KEY `idx_tertiary_email` (`tertiary_email`),
  KEY `idx_tax_exempt` (`tax_exempt`),
  KEY `idx_company_type` (`company_type`),
  KEY `idx_deleted_at` (`deleted_at`),
  KEY `idx_search_active` (`status`,`company_name`),
  FULLTEXT KEY `ft_customer_search` (`company_name`,`first_name`,`last_name`,`email`),
  CONSTRAINT `customers_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=133 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `customers`
--

set autocommit=0;
INSERT INTO `customers` VALUES
(46,'company','customer','4 Patriots','Contact','Person','4patriots@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(47,'company','customer','AeroVironment','Contact','Person','aerovironment@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(48,'company','customer','AirBus x AATLO','Contact','Person','airbusxaatlo@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(49,'company','customer','BAE Systems','Contact','Person','baesystems@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(50,'company','customer','Bluetti','Contact','Person','bluetti@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(51,'company','customer','Boeing','Contact','Person','boeing@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(52,'company','customer','Boeing 2','Contact','Person','boeing2@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(53,'company','customer','Boeing 3','Contact','Person','boeing3@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(54,'company','customer','Booz Allen Hamilton Inc','Contact','Person','boozallenhamiltoninc@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(55,'company','customer','Collins Aerospace','Contact','Person','collinsaerospace@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(56,'company','customer','Cubic Corporation','Contact','Person','cubiccorporation@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(57,'company','customer','Curtiss-Wright','Contact','Person','curtiss-wright@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(58,'company','customer','Eagle Picher Technologies','Contact','Person','eaglepichertechnologies@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(59,'company','customer','Enphase Energy','Contact','Person','enphaseenergy@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(60,'company','customer','Federal Bureau of Investigation','Contact','Person','federalbureauofinvestigation@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(61,'company','customer','Figure AI','Contact','Person','figureai@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(62,'company','customer','Fortress Power','Contact','Person','fortresspower@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(63,'company','customer','General Dynamics','Contact','Person','generaldynamics@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(64,'company','customer','L3 Harris','Contact','Person','l3harris@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(65,'company','customer','LG Electronics','Contact','Person','lgelectronics@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(66,'company','customer','LiiON Inc','Contact','Person','liioninc@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(67,'company','customer','Lithionics Battery','Contact','Person','lithionicsbattery@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(68,'company','customer','Lockheed Martin','Contact','Person','lockheedmartin@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(69,'company','customer','Lockheed Martin 2','Contact','Person','lockheedmartin2@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(70,'company','customer','Mistral Inc','Contact','Person','mistralinc@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(71,'company','customer','MPINarada','Contact','Person','mpinarada@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(72,'company','customer','NeoVolta','Contact','Person','neovolta@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(73,'company','customer','Nevados','Contact','Person','nevados@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(74,'company','customer','Northrop Grumman','Contact','Person','northropgrumman@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(75,'company','customer','Northrop Grumman 2','Contact','Person','northropgrumman2@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(76,'company','customer','Our Next Energy (ONE)','Contact','Person','ournextenergy(one)@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(77,'company','customer','Peppermint Robotics ','Contact','Person','peppermintrobotics@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(78,'company','customer','Power Sonic','Contact','Person','powersonic@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(79,'company','customer','PowerPole','Contact','Person','powerpole@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(80,'company','customer','Pratt / Miller','Contact','Person','pratt/miller@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(81,'company','customer','Prevalon Energy','Contact','Person','prevalonenergy@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(82,'company','customer','Roush','Contact','Person','roush@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(83,'company','customer','Siemens Energy','Contact','Person','siemensenergy@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(84,'company','customer','Siemens Energy 2','Contact','Person','siemensenergy2@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(85,'company','customer','Sol-Ark','Contact','Person','sol-ark@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(86,'company','customer','Solara Power','Contact','Person','solarapower@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(87,'company','customer','Sonnen Inc','Contact','Person','sonneninc@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(88,'company','customer','Swarmbotics','Contact','Person','swarmbotics@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(89,'company','customer','Tenacious International','Contact','Person','tenaciousinternational@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(90,'company','customer','Universal Solutions International','Contact','Person','universalsolutionsinternational@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(91,'company','customer','Vector Climate','Contact','Person','vectorclimate@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(92,'company','customer','Velocity Technology Solutions','Contact','Person','velocitytechnologysolutions@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(93,'company','customer','Yotta Energy ','Contact','Person','yottaenergy@example.com',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'active',NULL,'2025-11-13 15:30:22','2025-11-13 15:30:22',NULL,0,NULL),
(112,'company','customer','Hyde Park Partners',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 0\nPeople: 1','active',1,'2025-11-13 22:13:38','2025-11-15 16:28:22',NULL,0,NULL),
(113,'company','customer','VIU Global',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 0\nPeople: 1','active',1,'2025-11-13 22:13:38','2025-11-15 16:28:25',NULL,0,NULL),
(115,'company','customer','General Dynamics Land Systems',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 0\nPeople: 1','active',1,'2025-11-13 22:13:38','2025-11-14 18:20:14',NULL,0,NULL),
(116,'company','customer','HawkTV',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 0\nPeople: 1','active',1,'2025-11-13 22:13:38','2025-11-14 18:20:17',NULL,0,NULL),
(117,'company','customer','Power Pole Geoff Contact',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 0\nPeople: 1','active',1,'2025-11-13 22:13:38','2025-11-14 18:20:11',NULL,0,NULL),
(118,'company','customer','Cirnapro',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 0\nPeople: 1','active',1,'2025-11-13 22:13:38','2025-11-14 18:20:20',NULL,0,NULL),
(119,'company','customer','Ontario Drive & Gear Limited',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'66 Hinks Street New Hamburg Ontario N3A 2J5',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 0\nPeople: 1','active',1,'2025-11-13 22:13:38','2025-11-14 18:20:23',NULL,0,NULL),
(121,'company','customer','YRC Freight— Urbandale, Iowa',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 0\nPeople: 1','active',1,'2025-11-13 22:13:38','2025-11-14 18:20:31',NULL,0,NULL),
(122,'company','customer','Night Fishing Buoy',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 1\nPeople: 1','active',1,'2025-11-13 22:13:38','2025-11-14 18:20:34',NULL,0,NULL),
(123,'company','customer','Immigration and Customs Enforcment',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 1\nPeople: 1','active',1,'2025-11-13 22:13:38','2025-11-14 18:20:36',NULL,0,NULL),
(124,'company','customer','Tough Signal',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 1\nPeople: 1','active',1,'2025-11-13 22:13:38','2025-11-14 18:20:39',NULL,0,NULL),
(125,'company','customer','Booz Allen Hamilton Inc.',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 1\nPeople: 1','active',1,'2025-11-13 22:13:38','2025-11-14 18:20:40',NULL,0,NULL),
(126,'company','customer','HV Diagnostics',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 1\nPeople: 2','active',1,'2025-11-13 22:13:38','2025-11-14 18:39:26',NULL,0,NULL),
(127,'company','customer','Obsidian Intergration',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 1\nClosed Deals: 0\nPeople: 2','active',1,'2025-11-13 22:13:38','2025-11-14 18:39:30',NULL,0,NULL),
(128,'company','customer','Andretti Autosports',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 0\nPeople: 2','active',1,'2025-11-13 22:13:38','2025-11-14 18:39:34',NULL,0,NULL),
(129,'company','customer','GCC',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 1\nPeople: 2','active',1,'2025-11-13 22:13:38','2025-11-14 18:39:35',NULL,0,NULL),
(130,'company','customer','AGV America',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 0\nPeople: 1','active',1,'2025-11-13 22:13:38','2025-11-14 18:39:37',NULL,0,NULL),
(131,'company','customer','Toronto Coach Terminal Inc.',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Imported from Pipedrive\nOpen Deals: 0\nClosed Deals: 1\nPeople: 2','active',1,'2025-11-13 22:13:38','2025-11-14 18:39:38',NULL,0,NULL),
(132,'company','client','Test Client','','','test@texclient.com','',NULL,'','','','','','','','','','','','','','','','active',1,'2025-11-13 14:47:07','2025-11-13 14:47:07',NULL,0,NULL);
commit;

--
-- Table structure for table `dashboard_stat_cards`
--

CREATE TABLE `dashboard_stat_cards` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `card_key` varchar(100) NOT NULL COMMENT 'Unique identifier like total_customers, pending_invoices',
  `title` varchar(255) NOT NULL COMMENT 'Display title like Total Customers',
  `icon` varchar(100) NOT NULL COMMENT 'Bootstrap icon class like bi-person-badge',
  `color` varchar(50) NOT NULL DEFAULT 'primary' COMMENT 'primary, success, warning, info, danger, secondary',
  `query_type` enum('count','sum','custom') DEFAULT 'count',
  `sql_query` text DEFAULT NULL COMMENT 'SQL query to fetch the main value',
  `secondary_label` varchar(255) DEFAULT NULL COMMENT 'Label for secondary stat like "new" or "pending"',
  `secondary_query` text DEFAULT NULL COMMENT 'SQL query for secondary stat',
  `secondary_icon` varchar(50) DEFAULT NULL COMMENT 'Icon for secondary stat like bi-arrow-up, bi-arrow-down',
  `secondary_color` varchar(50) DEFAULT NULL COMMENT 'Color for secondary stat',
  `format_type` enum('number','currency','percentage','text') DEFAULT 'number',
  `dashboard_section` varchar(100) DEFAULT NULL COMMENT 'Which dashboard this belongs to: main, crm, sales, hr, etc.',
  `display_order` int(11) DEFAULT 0,
  `permission_required` varchar(100) DEFAULT NULL COMMENT 'Permission needed to view this card',
  `is_active` tinyint(1) DEFAULT 1,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `card_key` (`card_key`),
  KEY `idx_dashboard_section` (`dashboard_section`),
  KEY `idx_is_active` (`is_active`),
  KEY `idx_display_order` (`display_order`)
) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `dashboard_stat_cards`
--

set autocommit=0;
INSERT INTO `dashboard_stat_cards` VALUES
(1,'total_customers','Total Customers','bi-person-badge','primary','count','SELECT COUNT(*) as value FROM customers WHERE status = \"active\"','Active',NULL,'bi-check-circle','success','number','main',1,'crm.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(2,'total_products','Total Products','bi-box-seam','success','count','SELECT COUNT(*) as value FROM products WHERE status = \"active\"','low stock','SELECT COUNT(DISTINCT p.id) as value FROM products p INNER JOIN inventory i ON p.id = i.product_id WHERE i.quantity <= p.reorder_level AND p.status = \"active\"','bi-exclamation-triangle','warning','number','main',2,'inventory.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(3,'sales_month','Sales This Month','bi-graph-up','warning','sum','SELECT COALESCE(SUM(total_amount), 0) as value FROM invoices WHERE MONTH(invoice_date) = MONTH(CURRENT_DATE()) AND YEAR(invoice_date) = YEAR(CURRENT_DATE()) AND status IN (\"paid\", \"partial\")','Current month',NULL,'bi-calendar','info','currency','main',3,'sales.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(4,'pending_invoices','Pending Invoices','bi-receipt','info','count','SELECT COUNT(*) as value FROM invoices WHERE status IN (\"draft\", \"sent\")','Awaiting payment',NULL,'bi-clock','warning','number','main',4,'invoices.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(5,'total_opportunities','Total Opportunities','bi-star','warning','count','SELECT COUNT(*) as value FROM opportunities WHERE status NOT IN (\"lost\", \"closed\")','open','SELECT COUNT(*) as value FROM opportunities WHERE status = \"new\"','bi-arrow-up','success','number','crm',1,'crm.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(6,'active_leads','Active Leads','bi-person-lines-fill','primary','count','SELECT COUNT(*) as value FROM customers WHERE type = \"lead\" AND status = \"active\"','new this week',NULL,'bi-calendar-week','success','number','crm',2,'crm.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(7,'pipeline_value','Pipeline Value','bi-cash-stack','success','sum','SELECT COALESCE(SUM(estimated_value), 0) as value FROM opportunities WHERE status NOT IN (\"lost\", \"closed\")','potential revenue',NULL,'bi-graph-up','info','currency','crm',3,'crm.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(8,'conversion_rate','Conversion Rate','bi-percent','info','custom','SELECT ROUND((SELECT COUNT(*) FROM opportunities WHERE status = \"won\") / NULLIF((SELECT COUNT(*) FROM opportunities), 0) * 100, 1) as value','this month',NULL,'bi-trophy','success','percentage','crm',4,'crm.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(9,'orders_today','Orders Today','bi-cart-check','success','count','SELECT COUNT(*) as value FROM sales_orders WHERE DATE(created_at) = CURRENT_DATE()','today',NULL,'bi-calendar-day','primary','number','sales',1,'sales.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(10,'revenue_today','Revenue Today','bi-currency-dollar','primary','sum','SELECT COALESCE(SUM(total_amount), 0) as value FROM sales_orders WHERE DATE(order_date) = CURRENT_DATE() AND status != \"cancelled\"','vs yesterday',NULL,'bi-graph-up','success','currency','sales',2,'sales.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(11,'pending_orders','Pending Orders','bi-hourglass-split','warning','count','SELECT COUNT(*) as value FROM sales_orders WHERE status IN (\"pending\", \"processing\")','need attention',NULL,'bi-exclamation-circle','danger','number','sales',3,'sales.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(12,'quotes_open','Open Quotes','bi-file-earmark-text','info','count','SELECT COUNT(*) as value FROM quotes WHERE status IN (\"draft\", \"sent\")','awaiting response',NULL,'bi-clock-history','warning','number','sales',4,'sales.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(13,'total_employees','Total Employees','bi-people','primary','count','SELECT COUNT(*) as value FROM employees WHERE status = \"active\"','active',NULL,'bi-check-circle','success','number','hr',1,'hr.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(14,'pending_applications','Pending Applications','bi-file-earmark-person','warning','count','SELECT COUNT(*) as value FROM job_applications WHERE status IN (\"new\", \"screening\")','need review',NULL,'bi-eye','info','number','hr',2,'hr.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(15,'open_positions','Open Positions','bi-briefcase','info','count','SELECT COUNT(*) as value FROM job_positions WHERE status = \"open\"','actively recruiting',NULL,'bi-megaphone','success','number','hr',3,'hr.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(16,'upcoming_reviews','Upcoming Reviews','bi-clipboard-check','success','count','SELECT COUNT(*) as value FROM performance_reviews WHERE status = \"scheduled\" AND review_date <= DATE_ADD(CURRENT_DATE(), INTERVAL 30 DAY)','next 30 days',NULL,'bi-calendar-event','warning','number','hr',4,'hr.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(17,'active_work_orders','Active Work Orders','bi-gear','primary','count','SELECT COUNT(*) as value FROM work_orders WHERE status IN (\"pending\", \"in_progress\")','in progress',NULL,'bi-play-circle','success','number','manufacturing',1,'manufacturing.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(18,'production_today','Production Today','bi-box','success','sum','SELECT COALESCE(SUM(quantity_produced), 0) as value FROM work_orders WHERE DATE(updated_at) = CURRENT_DATE()','units',NULL,'bi-check2-circle','info','number','manufacturing',2,'manufacturing.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(19,'material_shortages','Material Shortages','bi-exclamation-triangle','danger','count','SELECT COUNT(*) as value FROM mrp_shortages WHERE status = \"pending\"','need attention',NULL,'bi-exclamation-circle','warning','number','manufacturing',3,'manufacturing.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(20,'equipment_downtime','Equipment Down','bi-wrench','warning','count','SELECT COUNT(*) as value FROM equipment WHERE status = \"down\"','maintenance needed',NULL,'bi-tools','danger','number','manufacturing',4,'manufacturing.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(21,'total_products_inventory','Total Products','bi-box-seam','primary','custom','SELECT COUNT(*) as value FROM products WHERE status = \"active\"','Active products',NULL,'bi-graph-up','info','number','inventory',1,'inventory.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(22,'total_quantity_inventory','Total Quantity','bi-boxes','info','count','SELECT COALESCE(SUM(quantity), 0) as value FROM inventory','Units in stock',NULL,'bi-cart-plus','danger','number','inventory',2,'inventory.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(23,'total_value_inventory','Total Value','bi-currency-dollar','success','count','SELECT COALESCE(SUM(i.quantity * p.cost_price), 0) as value FROM inventory i INNER JOIN products p ON i.product_id = p.id','Stock worth',NULL,'bi-truck','primary','currency','inventory',3,'inventory.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(24,'low_stock_items_inventory','Low Stock Items','bi-exclamation-triangle','warning','count','SELECT COUNT(DISTINCT p.id) as value FROM products p LEFT JOIN inventory i ON p.id = i.product_id WHERE (i.quantity <= p.reorder_level OR i.quantity IS NULL) AND p.reorder_level > 0 AND p.status = \"active\"','Below reorder level',NULL,'bi-calendar-day','success','number','inventory',4,'inventory.view',1,'2025-11-06 00:11:09','2025-11-11 11:25:53'),
(25,'total_categories','Total Categories','bi-folder','primary','count','SELECT COUNT(*) as value FROM product_categories','All categories',NULL,NULL,NULL,'number','product_categories',1,'inventory.view',1,'2025-11-06 11:34:01','2025-11-11 11:25:53'),
(26,'active_categories','Active Categories','bi-check-circle','success','count','SELECT COUNT(*) as value FROM product_categories WHERE is_active = 1','Currently active',NULL,NULL,NULL,'number','product_categories',2,'inventory.view',1,'2025-11-06 11:34:01','2025-11-11 11:25:53'),
(27,'total_products_in_categories','Total Products','bi-box-seam','info','count','SELECT COUNT(*) as value FROM products WHERE category_id IS NOT NULL','Across all categories',NULL,NULL,NULL,'number','product_categories',3,'inventory.view',1,'2025-11-06 11:34:01','2025-11-11 11:25:53'),
(32,'empty_categories','Empty Categories','bi-inbox','warning','count','SELECT COUNT(*) as value FROM product_categories pc LEFT JOIN products p ON pc.id = p.category_id WHERE p.id IS NULL','Without products',NULL,NULL,NULL,'number','product_categories',4,'inventory.view',1,'2025-11-06 11:38:21','2025-11-11 11:25:53'),
(33,'expired_lots','Expired Items','bi-exclamation-triangle','danger','count','SELECT COUNT(*) as value FROM lot_serial_numbers WHERE status = \'active\' AND expiration_date < CURDATE()','Require action',NULL,NULL,NULL,'number','lot_tracking',1,'inventory.view',1,'2025-11-06 12:32:21','2025-11-11 11:25:53'),
(34,'expiring_this_week','Expiring This Week','bi-calendar-week','warning','count','SELECT COUNT(*) as value FROM lot_serial_numbers WHERE status = \'active\' AND expiration_date BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAY)','Next 7 days',NULL,NULL,NULL,'number','lot_tracking',2,'inventory.view',1,'2025-11-06 12:32:21','2025-11-11 11:25:53'),
(35,'expiring_this_month','Expiring This Month','bi-calendar-month','info','count','SELECT COUNT(*) as value FROM lot_serial_numbers WHERE status = \'active\' AND expiration_date BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 30 DAY)','Next 30 days',NULL,NULL,NULL,'number','lot_tracking',3,'inventory.view',1,'2025-11-06 12:32:21','2025-11-11 11:25:53'),
(36,'active_lots','Active Lot/Serials','bi-upc-scan','primary','count','SELECT COUNT(*) as value FROM lot_serial_numbers WHERE status = \'active\'','In inventory',NULL,NULL,NULL,'number','lot_tracking',4,'inventory.view',1,'2025-11-06 12:32:21','2025-11-11 11:25:53');
commit;

--
-- Table structure for table `debit_notes`
--

CREATE TABLE `debit_notes` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `debit_note_number` varchar(50) NOT NULL,
  `supplier_id` int(10) unsigned NOT NULL,
  `bill_id` int(10) unsigned DEFAULT NULL,
  `return_id` int(10) unsigned DEFAULT NULL,
  `issue_date` date NOT NULL,
  `amount` decimal(15,2) NOT NULL,
  `reason` text DEFAULT NULL,
  `status` enum('draft','issued','applied','cancelled') DEFAULT 'draft',
  `notes` text DEFAULT NULL,
  `created_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `deleted_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `debit_note_number` (`debit_note_number`),
  KEY `supplier_id` (`supplier_id`),
  KEY `bill_id` (`bill_id`),
  KEY `return_id` (`return_id`),
  KEY `created_by` (`created_by`),
  KEY `idx_debit_notes_deleted_at` (`deleted_at`),
  CONSTRAINT `debit_notes_ibfk_1` FOREIGN KEY (`supplier_id`) REFERENCES `suppliers` (`id`),
  CONSTRAINT `debit_notes_ibfk_2` FOREIGN KEY (`bill_id`) REFERENCES `supplier_bills` (`id`) ON DELETE SET NULL,
  CONSTRAINT `debit_notes_ibfk_3` FOREIGN KEY (`return_id`) REFERENCES `purchase_returns` (`id`) ON DELETE SET NULL,
  CONSTRAINT `debit_notes_ibfk_4` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `debit_notes`
--

set autocommit=0;
commit;

--
-- Table structure for table `delivery_note_items`
--

CREATE TABLE `delivery_note_items` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `delivery_note_id` int(10) unsigned NOT NULL,
  `product_id` int(10) unsigned NOT NULL,
  `quantity` decimal(10,2) NOT NULL,
  `serial_numbers` text DEFAULT NULL,
  `notes` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `delivery_note_id` (`delivery_note_id`),
  KEY `product_id` (`product_id`),
  CONSTRAINT `delivery_note_items_ibfk_1` FOREIGN KEY (`delivery_note_id`) REFERENCES `delivery_notes` (`id`) ON DELETE CASCADE,
  CONSTRAINT `delivery_note_items_ibfk_2` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `delivery_note_items`
--

set autocommit=0;
commit;

--
-- Table structure for table `delivery_notes`
--

CREATE TABLE `delivery_notes` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `delivery_note_number` varchar(50) NOT NULL,
  `sales_order_id` int(10) unsigned DEFAULT NULL,
  `shipment_id` int(10) unsigned DEFAULT NULL,
  `customer_id` int(10) unsigned NOT NULL,
  `delivery_date` date NOT NULL,
  `delivery_address` text DEFAULT NULL,
  `delivery_city` varchar(100) DEFAULT NULL,
  `delivery_state` varchar(50) DEFAULT NULL,
  `delivery_zip` varchar(20) DEFAULT NULL,
  `delivery_country` varchar(100) DEFAULT 'USA',
  `delivery_contact` varchar(100) DEFAULT NULL,
  `delivery_phone` varchar(50) DEFAULT NULL,
  `carrier` varchar(100) DEFAULT NULL,
  `tracking_number` varchar(100) DEFAULT NULL,
  `notes` text DEFAULT NULL,
  `status` enum('draft','confirmed','in_transit','delivered','cancelled') DEFAULT 'draft',
  `created_by` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `delivery_note_number` (`delivery_note_number`),
  KEY `sales_order_id` (`sales_order_id`),
  KEY `shipment_id` (`shipment_id`),
  KEY `created_by` (`created_by`),
  KEY `idx_status` (`status`),
  KEY `idx_delivery_date` (`delivery_date`),
  KEY `idx_customer` (`customer_id`),
  CONSTRAINT `delivery_notes_ibfk_1` FOREIGN KEY (`sales_order_id`) REFERENCES `sales_orders` (`id`) ON DELETE SET NULL,
  CONSTRAINT `delivery_notes_ibfk_2` FOREIGN KEY (`shipment_id`) REFERENCES `shipments` (`id`) ON DELETE SET NULL,
  CONSTRAINT `delivery_notes_ibfk_3` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`) ON DELETE CASCADE,
  CONSTRAINT `delivery_notes_ibfk_4` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `delivery_notes`
--

set autocommit=0;
commit;

--
-- Table structure for table `departments`
--

CREATE TABLE `departments` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `description` text DEFAULT NULL,
  `manager_id` int(10) unsigned DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `deleted_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `manager_id` (`manager_id`),
  KEY `idx_departments_deleted_at` (`deleted_at`),
  CONSTRAINT `departments_ibfk_1` FOREIGN KEY (`manager_id`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `departments`
--

set autocommit=0;
INSERT INTO `departments` VALUES
(1,'Administration','Administrative and executive staff',NULL,'2025-10-26 14:24:24','2025-11-11 00:36:45',NULL),
(2,'Sales','Sales and marketing team',NULL,'2025-10-26 14:24:24','2025-11-11 00:36:45',NULL),
(3,'Accounting','Finance and accounting department',NULL,'2025-10-26 14:24:24','2025-11-11 00:36:45',NULL),
(4,'Operations','Operations and logistics',NULL,'2025-10-26 14:24:24','2025-11-11 00:36:45',NULL),
(5,'Human Resources','HR and recruitment',NULL,'2025-10-26 14:24:24','2025-11-11 00:36:45',NULL),
(6,'IT','Information Technology',NULL,'2025-10-26 14:24:24','2025-11-11 00:36:45',NULL),
(8,'Marketing','Marketing and Communications',NULL,'2025-10-27 14:37:00','2025-11-11 00:36:45',NULL),
(11,'Finance','Finance and Accounting',NULL,'2025-10-27 14:37:00','2025-11-11 00:36:45',NULL),
(13,'Manufacturing','Manufacturing and Production',NULL,'2025-10-27 14:37:00','2025-11-11 00:36:45',NULL);
commit;

--
-- Table structure for table `depreciation_schedules`
--

CREATE TABLE `depreciation_schedules` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `asset_id` int(10) unsigned NOT NULL,
  `period_date` date NOT NULL COMMENT 'First day of the period (month/quarter/year)',
  `opening_balance` decimal(15,2) NOT NULL,
  `depreciation_amount` decimal(15,2) NOT NULL,
  `accumulated_depreciation` decimal(15,2) NOT NULL,
  `net_book_value` decimal(15,2) NOT NULL,
  `status` enum('scheduled','posted','reversed') DEFAULT 'scheduled',
  `journal_entry_id` int(10) unsigned DEFAULT NULL COMMENT 'Link to posted journal entry',
  `posted_by` int(10) unsigned DEFAULT NULL,
  `posted_at` datetime DEFAULT NULL,
  `notes` text DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_asset_period` (`asset_id`,`period_date`),
  KEY `idx_asset_period` (`asset_id`,`period_date`),
  KEY `idx_status` (`status`),
  KEY `idx_period_date` (`period_date`),
  KEY `posted_by` (`posted_by`),
  CONSTRAINT `depreciation_schedules_ibfk_1` FOREIGN KEY (`asset_id`) REFERENCES `fixed_assets` (`id`) ON DELETE CASCADE,
  CONSTRAINT `depreciation_schedules_ibfk_2` FOREIGN KEY (`posted_by`) REFERENCES `users` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `depreciation_schedules`
--

set autocommit=0;
commit;

--
-- Table structure for table `diagram_shares`
--

CREATE TABLE `diagram_shares` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `diagram_id` int(11) NOT NULL,
  `shared_with_user_id` int(11) NOT NULL,
  `permission` varchar(20) DEFAULT 'view' COMMENT 'view, edit',
  `created_by` int(11) NOT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_share` (`diagram_id`,`shared_with_user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `diagram_shares`
--

set autocommit=0;
INSERT INTO `diagram_shares` VALUES
(1,5,4,'view',1,'2025-12-02 19:37:07'),
(2,6,5,'view',1,'2025-12-04 23:07:12');
commit;

--
-- Table structure for table `diagrams`
--

CREATE TABLE `diagrams` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `description` text DEFAULT NULL,
  `diagram_data` longtext NOT NULL COMMENT 'Excalidraw JSON scene data',
  `module` varchar(50) DEFAULT NULL COMMENT 'Associated module: crm, projects, manufacturing, etc.',
  `entity_id` int(11) DEFAULT NULL COMMENT 'Related record ID',
  `thumbnail_path` varchar(500) DEFAULT NULL COMMENT 'Path to thumbnail image',
  `is_template` tinyint(1) DEFAULT 0,
  `created_by` int(11) NOT NULL,
  `updated_by` int(11) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_module_entity` (`module`,`entity_id`),
  KEY `idx_created_by` (`created_by`),
  KEY `idx_is_template` (`is_template`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `diagrams`
--

set autocommit=0;
INSERT INTO `diagrams` VALUES
(3,'Untitled Diagram','','{\"type\":\"excalidraw\",\"version\":2,\"source\":\"m1_erp\",\"elements\":[{\"id\":\"5RV8qSCrMglkMVB4zs_TS\",\"type\":\"rectangle\",\"x\":310,\"y\":118,\"width\":97,\"height\":64,\"angle\":0,\"strokeColor\":\"#1e1e1e\",\"backgroundColor\":\"transparent\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"groupIds\":[],\"frameId\":null,\"roundness\":{\"type\":3},\"seed\":972801369,\"version\":9,\"versionNonce\":21896281,\"isDeleted\":false,\"boundElements\":null,\"updated\":1764683662156,\"link\":null,\"locked\":false}],\"appState\":{\"showWelcomeScreen\":true,\"theme\":\"dark\",\"collaborators\":[],\"currentChartType\":\"bar\",\"currentItemBackgroundColor\":\"transparent\",\"currentItemEndArrowhead\":\"arrow\",\"currentItemFillStyle\":\"solid\",\"currentItemFontFamily\":1,\"currentItemFontSize\":20,\"currentItemOpacity\":100,\"currentItemRoughness\":1,\"currentItemStartArrowhead\":null,\"currentItemStrokeColor\":\"#1e1e1e\",\"currentItemRoundness\":\"round\",\"currentItemStrokeStyle\":\"solid\",\"currentItemStrokeWidth\":2,\"currentItemTextAlign\":\"left\",\"cursorButton\":\"up\",\"activeEmbeddable\":null,\"draggingElement\":null,\"editingElement\":null,\"editingGroupId\":null,\"editingLinearElement\":null,\"activeTool\":{\"type\":\"selection\",\"customType\":null,\"locked\":false,\"lastActiveTool\":null},\"penMode\":false,\"penDetected\":false,\"errorMessage\":null,\"exportBackground\":true,\"exportScale\":2,\"exportEmbedScene\":false,\"exportWithDarkMode\":false,\"fileHandle\":null,\"gridSize\":null,\"isBindingEnabled\":true,\"defaultSidebarDockedPreference\":false,\"isLoading\":false,\"isResizing\":false,\"isRotating\":false,\"lastPointerDownWith\":\"mouse\",\"multiElement\":null,\"name\":\"Untitled-2025-12-02-0854\",\"contextMenu\":null,\"openMenu\":null,\"openPopup\":null,\"openSidebar\":null,\"openDialog\":null,\"pasteDialog\":{\"shown\":false,\"data\":null},\"previousSelectedElementIds\":[],\"resizingElement\":null,\"scrolledOutside\":false,\"scrollX\":0,\"scrollY\":0,\"selectedElementIds\":{\"5RV8qSCrMglkMVB4zs_TS\":true},\"selectedGroupIds\":[],\"selectedElementsAreBeingDragged\":false,\"selectionElement\":null,\"shouldCacheIgnoreZoom\":false,\"showStats\":false,\"startBoundElement\":null,\"suggestedBindings\":[],\"frameRendering\":{\"enabled\":true,\"clip\":true,\"name\":true,\"outline\":true},\"frameToHighlight\":null,\"editingFrame\":null,\"elementsToHighlight\":null,\"toast\":null,\"viewBackgroundColor\":\"#ffffff\",\"zenModeEnabled\":false,\"zoom\":{\"value\":1},\"viewModeEnabled\":false,\"pendingImageElementId\":null,\"showHyperlinkPopup\":false,\"selectedLinearElement\":null,\"snapLines\":[],\"originSnapOffset\":null,\"objectsSnapModeEnabled\":false,\"offsetLeft\":303,\"offsetTop\":248,\"width\":1119,\"height\":409},\"files\":[]}',NULL,NULL,NULL,0,1,NULL,'2025-12-02 13:54:23','2025-12-02 13:54:23'),
(4,'Untitled Diagram','','{\"type\":\"excalidraw\",\"version\":2,\"source\":\"m1_erp\",\"elements\":[{\"id\":\"Icx763BmkOw566YKOVQwM\",\"type\":\"rectangle\",\"x\":326,\"y\":121,\"width\":234,\"height\":155,\"angle\":0,\"strokeColor\":\"#1e1e1e\",\"backgroundColor\":\"transparent\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"groupIds\":[],\"frameId\":null,\"roundness\":{\"type\":3},\"seed\":574158508,\"version\":14,\"versionNonce\":13524780,\"isDeleted\":false,\"boundElements\":null,\"updated\":1764684031126,\"link\":null,\"locked\":false}],\"appState\":{\"showWelcomeScreen\":true,\"theme\":\"dark\",\"collaborators\":[],\"currentChartType\":\"bar\",\"currentItemBackgroundColor\":\"transparent\",\"currentItemEndArrowhead\":\"arrow\",\"currentItemFillStyle\":\"solid\",\"currentItemFontFamily\":1,\"currentItemFontSize\":20,\"currentItemOpacity\":100,\"currentItemRoughness\":1,\"currentItemStartArrowhead\":null,\"currentItemStrokeColor\":\"#1e1e1e\",\"currentItemRoundness\":\"round\",\"currentItemStrokeStyle\":\"solid\",\"currentItemStrokeWidth\":2,\"currentItemTextAlign\":\"left\",\"cursorButton\":\"up\",\"activeEmbeddable\":null,\"draggingElement\":null,\"editingElement\":null,\"editingGroupId\":null,\"editingLinearElement\":null,\"activeTool\":{\"type\":\"selection\",\"customType\":null,\"locked\":false,\"lastActiveTool\":null},\"penMode\":false,\"penDetected\":false,\"errorMessage\":null,\"exportBackground\":true,\"exportScale\":2,\"exportEmbedScene\":false,\"exportWithDarkMode\":false,\"fileHandle\":null,\"gridSize\":null,\"isBindingEnabled\":true,\"defaultSidebarDockedPreference\":false,\"isLoading\":false,\"isResizing\":false,\"isRotating\":false,\"lastPointerDownWith\":\"mouse\",\"multiElement\":null,\"name\":\"Untitled-2025-12-02-0900\",\"contextMenu\":null,\"openMenu\":null,\"openPopup\":null,\"openSidebar\":null,\"openDialog\":null,\"pasteDialog\":{\"shown\":false,\"data\":null},\"previousSelectedElementIds\":[],\"resizingElement\":null,\"scrolledOutside\":false,\"scrollX\":0,\"scrollY\":0,\"selectedElementIds\":{\"Icx763BmkOw566YKOVQwM\":true},\"selectedGroupIds\":[],\"selectedElementsAreBeingDragged\":false,\"selectionElement\":null,\"shouldCacheIgnoreZoom\":false,\"showStats\":false,\"startBoundElement\":null,\"suggestedBindings\":[],\"frameRendering\":{\"enabled\":true,\"clip\":true,\"name\":true,\"outline\":true},\"frameToHighlight\":null,\"editingFrame\":null,\"elementsToHighlight\":null,\"toast\":null,\"viewBackgroundColor\":\"#ffffff\",\"zenModeEnabled\":false,\"zoom\":{\"value\":1},\"viewModeEnabled\":false,\"pendingImageElementId\":null,\"showHyperlinkPopup\":false,\"selectedLinearElement\":null,\"snapLines\":[],\"originSnapOffset\":null,\"objectsSnapModeEnabled\":false,\"offsetLeft\":303,\"offsetTop\":248,\"width\":1119,\"height\":409},\"files\":[]}',NULL,NULL,NULL,0,1,NULL,'2025-12-02 14:00:32','2025-12-02 14:00:32'),
(5,'Test Diagram','Scrum Board','{\"type\":\"excalidraw\",\"version\":2,\"source\":\"m1_erp\",\"elements\":[{\"type\":\"rectangle\",\"version\":15,\"versionNonce\":1954189837,\"isDeleted\":false,\"id\":\"SZxFf9nIb1xQ95xkRLm20\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":307,\"y\":126,\"strokeColor\":\"#1e1e1e\",\"backgroundColor\":\"transparent\",\"width\":130,\"height\":112,\"seed\":1148644557,\"groupIds\":[],\"frameId\":null,\"roundness\":{\"type\":3},\"boundElements\":[],\"updated\":1764684192522,\"link\":null,\"locked\":false},{\"type\":\"text\",\"version\":1875,\"versionNonce\":1061682605,\"isDeleted\":false,\"id\":\"cFqSDR5ChTid_JZLdLRry\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"dotted\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":334.1245681661849,\"y\":331.08238209477736,\"strokeColor\":\"#495057\",\"backgroundColor\":\"#868e96\",\"width\":43,\"height\":30,\"seed\":1238480899,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":24.013497016931144,\"fontFamily\":1,\"text\":\"Bug\",\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"Bug\",\"lineHeight\":1.2492974254790115,\"baseline\":22.016861788503725},{\"type\":\"ellipse\",\"version\":1810,\"versionNonce\":1245036557,\"isDeleted\":false,\"id\":\"7yAo2RHvSr1dGaL-Tl4Vs\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":265.6160185989297,\"y\":332.7943665048821,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#c92a2a\",\"width\":18.915168634308852,\"height\":13.095116746829012,\"seed\":931250083,\"groupIds\":[\"OYfqssxucSjxV25vLaB1T\"],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"ellipse\",\"version\":1759,\"versionNonce\":184301165,\"isDeleted\":false,\"id\":\"Fw4WZ2q5-tQP56C5b3HnA\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":4.728678266311217,\"x\":260.43014025394814,\"y\":345.4350091324344,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#c92a2a\",\"width\":29.3147504765488,\"height\":25.730897100312987,\"seed\":1829753667,\"groupIds\":[\"OYfqssxucSjxV25vLaB1T\"],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"line\",\"version\":1541,\"versionNonce\":744808653,\"isDeleted\":false,\"id\":\"wVWnTqYQYtvIWjqvuyUWu\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":287.1443779857823,\"y\":350.9001231076778,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":10.743173626990341,\"height\":6.319513898229615,\"seed\":1524265699,\"groupIds\":[\"OYfqssxucSjxV25vLaB1T\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[6.3195138982296095,-6.319513898229616],[10.743173626990341,-1.474553242920248]]},{\"type\":\"line\",\"version\":1562,\"versionNonce\":1141456685,\"isDeleted\":false,\"id\":\"K4LpiD6iLbcx6DuGGxb1b\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":288.3029555337903,\"y\":360.1154911753707,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":10.743173626990341,\"height\":6.319513898229615,\"seed\":1634737795,\"groupIds\":[\"OYfqssxucSjxV25vLaB1T\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[6.3195138982296095,-6.319513898229616],[10.743173626990341,-1.474553242920248]]},{\"type\":\"line\",\"version\":1583,\"versionNonce\":2018693517,\"isDeleted\":false,\"id\":\"Zf732FtLkB7Ah69Lirh0e\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":281.98344163556294,\"y\":370.43736387581407,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":10.743173626990341,\"height\":6.319513898229615,\"seed\":1267684899,\"groupIds\":[\"OYfqssxucSjxV25vLaB1T\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[6.3195138982296095,-6.319513898229616],[10.743173626990341,-1.474553242920248]]},{\"type\":\"line\",\"version\":1575,\"versionNonce\":1719343085,\"isDeleted\":false,\"id\":\"r5erS7zbGDrEQ20DrAUsn\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":263.3408756357835,\"y\":352.3214240342269,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":9.268620384070111,\"height\":5.898212971680975,\"seed\":136747459,\"groupIds\":[\"OYfqssxucSjxV25vLaB1T\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-5.687562508406687,-5.898212971680975],[-9.268620384070111,0]]},{\"type\":\"line\",\"version\":1552,\"versionNonce\":1217106509,\"isDeleted\":false,\"id\":\"yeyj4jpIFVl_tEM53wBb8\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":262.91957470923217,\"y\":362.2219958081197,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":9.268620384070111,\"height\":7.162115751326901,\"seed\":609511779,\"groupIds\":[\"OYfqssxucSjxV25vLaB1T\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-4.213009265486401,-7.162115751326901],[-9.268620384070111,-2.317155096017533]]},{\"type\":\"line\",\"version\":1548,\"versionNonce\":1532870829,\"isDeleted\":false,\"id\":\"RHqhLnuACwMsAICwpkUL0\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":265.86868119508335,\"y\":368.75216016961986,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":9.900571773893068,\"height\":5.055611118583697,\"seed\":90653955,\"groupIds\":[\"OYfqssxucSjxV25vLaB1T\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-5.055611118583717,-5.055611118583697],[-9.90057177389307,-1.2639027796459221]]},{\"type\":\"line\",\"version\":1558,\"versionNonce\":77275917,\"isDeleted\":false,\"id\":\"xtF45LnuG2W0ehXdO8TWu\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":279.5609613079164,\"y\":332.73093094971125,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.740814824778256,\"height\":4.844960655309377,\"seed\":1658694819,\"groupIds\":[\"OYfqssxucSjxV25vLaB1T\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[2.5278055592918505,-4.844960655309377],[6.740814824778256,-1.474553242920234]]},{\"type\":\"line\",\"version\":1534,\"versionNonce\":951925101,\"isDeleted\":false,\"id\":\"GsGHIw9obp4uXGEddBL-A\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":269.87103999728015,\"y\":333.7841832660878,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.530164361503941,\"height\":4.634310192035056,\"seed\":6692931,\"groupIds\":[\"OYfqssxucSjxV25vLaB1T\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-2.106504632743225,-4.634310192035056],[-6.530164361503941,-4.213009265486417]]},{\"type\":\"text\",\"version\":1761,\"versionNonce\":554533837,\"isDeleted\":false,\"id\":\"nW2QIPUcVsD2IkYuoSYJ3\",\"fillStyle\":\"cross-hatch\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":785.5375167489442,\"y\":211.65541583656,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"transparent\",\"width\":256,\"height\":51,\"seed\":668934115,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":44.76229461122525,\"fontFamily\":2,\"text\":\"Scrum board\",\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"Scrum board\",\"lineHeight\":1.139351779057602,\"baseline\":39.72916994240791},{\"type\":\"text\",\"version\":987,\"versionNonce\":27623981,\"isDeleted\":false,\"id\":\"5aJ8L27npkTqX1PJeVZ78\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":582.6763493893804,\"y\":302.1907441607834,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ffff\",\"width\":125,\"height\":40.38461538461539,\"seed\":1666657155,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":35.04490412396706,\"fontFamily\":2,\"text\":\"Backlog\",\"textAlign\":\"center\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"Backlog\",\"lineHeight\":1.1523676949367518,\"baseline\":32.05174606182907},{\"type\":\"text\",\"version\":1135,\"versionNonce\":1601090701,\"isDeleted\":false,\"id\":\"y7Qo8m7_zh1dlVzc8WFPi\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":763.1299134985952,\"y\":287.5511088904809,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ffff\",\"width\":100.31285291772363,\"height\":66.11528942304511,\"seed\":1997325091,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":29.157360231140597,\"fontFamily\":2,\"text\":\"Spring \\nbacklog\",\"textAlign\":\"center\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"Spring \\nbacklog\",\"lineHeight\":1.1337667213171234,\"baseline\":59.35681958665195},{\"type\":\"text\",\"version\":1667,\"versionNonce\":1713543917,\"isDeleted\":false,\"id\":\"DG4X-ewZ7cl7R53yHV-9Q\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1119.097788296654,\"y\":308.27974274455187,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ffff\",\"width\":69.53504577251297,\"height\":33.057644711522556,\"seed\":460220099,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":29.157360231140597,\"fontFamily\":2,\"text\":\"Done\",\"textAlign\":\"center\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"Done\",\"lineHeight\":1.1337667213171234,\"baseline\":26.178409793325976},{\"type\":\"text\",\"version\":1320,\"versionNonce\":239777101,\"isDeleted\":false,\"id\":\"2h_WQiD2jmE_V89mXupwl\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":902.8651361187312,\"y\":299.7890286078846,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#ffff\",\"width\":156.1688732923652,\"height\":36.47740106099041,\"seed\":1998231139,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":31.327781709020442,\"fontFamily\":2,\"text\":\"In progress\",\"textAlign\":\"center\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"In progress\",\"lineHeight\":1.1643786783182033,\"baseline\":29.381662033126105},{\"type\":\"rectangle\",\"version\":1802,\"versionNonce\":54559661,\"isDeleted\":false,\"id\":\"QObjcF6IL-ju-zV961wQr\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":578.2639863310796,\"y\":421.95816981455937,\"strokeColor\":\"#e67700\",\"backgroundColor\":\"#fab005\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":1491063299,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1762,\"versionNonce\":1227720205,\"isDeleted\":false,\"id\":\"c2DmJrXHV1dcC_DBu8ilQ\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":578.2639863310796,\"y\":484.11300542286654,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":834443683,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1814,\"versionNonce\":587938925,\"isDeleted\":false,\"id\":\"NPOzupdsP9kQOcYOuYbTG\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":576.4877047988903,\"y\":640.070523949278,\"strokeColor\":\"#84142d\",\"backgroundColor\":\"#c92a2a\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":1323265347,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1812,\"versionNonce\":950216397,\"isDeleted\":false,\"id\":\"9RZ-JSrOaNOBzgIy5MGmk\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":574.2039142575022,\"y\":706.8840850101376,\"strokeColor\":\"#e9d349\",\"backgroundColor\":\"#ffff1a\",\"width\":50.92852907297534,\"height\":54.12583583092038,\"seed\":1403440355,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1800,\"versionNonce\":2089731373,\"isDeleted\":false,\"id\":\"8DeEk1f5q6FekUwy4pfla\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":762.1502716665209,\"y\":446.0598573566033,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":1939945603,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1833,\"versionNonce\":1379374989,\"isDeleted\":false,\"id\":\"ydVRnhrhjeLuggZxhKQcS\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":762.1502716665209,\"y\":517.1111186442629,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":1821192227,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1892,\"versionNonce\":1943477741,\"isDeleted\":false,\"id\":\"GtPW9iy55LZFnJrZBpjz_\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":760.3739901343315,\"y\":588.162379931922,\"strokeColor\":\"#84142d\",\"backgroundColor\":\"#c92a2a\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":1079587779,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1853,\"versionNonce\":410441805,\"isDeleted\":false,\"id\":\"oBpBy5wiz6ZYk66JFLV9E\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":930.4819362951048,\"y\":443.6748227877313,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":790872931,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1853,\"versionNonce\":1508918957,\"isDeleted\":false,\"id\":\"Yw6Rfxk9JC5Yz5zc-eSe1\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":1173.2039934935192,\"y\":431.5454318551517,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":1899716355,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1854,\"versionNonce\":1525475597,\"isDeleted\":false,\"id\":\"r9X8r2e-IU-4uOj8-ogK3\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":1166.3526218693532,\"y\":498.46049471785045,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":824084131,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1895,\"versionNonce\":753287021,\"isDeleted\":false,\"id\":\"AehLLUFCZozgQX4Toa7s0\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":1174.0344627812983,\"y\":646.4293600676671,\"strokeColor\":\"#84142d\",\"backgroundColor\":\"#c92a2a\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":1165736515,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1900,\"versionNonce\":1982187981,\"isDeleted\":false,\"id\":\"2oN1kzH0BglNg7tMPByGT\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":923.6305646709343,\"y\":516.7561201121812,\"strokeColor\":\"#e9d349\",\"backgroundColor\":\"#ffff1a\",\"width\":50.92852907297534,\"height\":54.12583583092038,\"seed\":724662755,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1896,\"versionNonce\":1472530477,\"isDeleted\":false,\"id\":\"bw-ybwDYZW9Co-ra7geVg\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":1174.0344627812983,\"y\":710.7907298704495,\"strokeColor\":\"#e9d349\",\"backgroundColor\":\"#ffff1a\",\"width\":50.92852907297534,\"height\":54.12583583092038,\"seed\":1062094211,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1786,\"versionNonce\":330136205,\"isDeleted\":false,\"id\":\"1pOIxID11gw2SPX4-kI4V\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":581.9814898234536,\"y\":562.4597087177403,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":957390115,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1918,\"versionNonce\":1922605293,\"isDeleted\":false,\"id\":\"Bs2OQlFY7_ZvsBqJsyNWM\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":1169.4461199663256,\"y\":573.098921956883,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":1676083395,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1865,\"versionNonce\":1779432269,\"isDeleted\":false,\"id\":\"KoLxPv_IMTLBvhWXziSHh\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":760.5758403084437,\"y\":662.3544299287745,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":426766435,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1950,\"versionNonce\":40700333,\"isDeleted\":false,\"id\":\"yplTD4fI3koUQL7YIgQ_T\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":924.5805300168058,\"y\":598.3471360923454,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":2071587843,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"ellipse\",\"version\":1680,\"versionNonce\":2094615565,\"isDeleted\":false,\"id\":\"--FJFvSfXRUDL4S8iAEJh\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":954.5373801096221,\"y\":597.2933874185154,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#c92a2a\",\"width\":12.471776185810908,\"height\":8.634306590176644,\"seed\":1845719971,\"groupIds\":[\"IODJZpYL7Pj4PpeUmE0R8\"],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"ellipse\",\"version\":1632,\"versionNonce\":961430125,\"isDeleted\":false,\"id\":\"6CLywlmpvMp5LFARq5JMj\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":4.728678266311217,\"x\":951.1180548423781,\"y\":605.6280350626122,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#c92a2a\",\"width\":19.328773322340993,\"height\":16.96574827850908,\"seed\":1362822979,\"groupIds\":[\"IODJZpYL7Pj4PpeUmE0R8\"],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"line\",\"version\":1413,\"versionNonce\":1553296589,\"isDeleted\":false,\"id\":\"bRBU8YNiFbqPwhvr6PrS5\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":968.7321718723288,\"y\":609.8908283833497,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":2071930595,\"groupIds\":[\"IODJZpYL7Pj4PpeUmE0R8\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1437,\"versionNonce\":910707501,\"isDeleted\":false,\"id\":\"9jd_517YU6HqAkRuh3DYq\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":970.2107898867434,\"y\":614.592951019859,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":1935561347,\"groupIds\":[\"IODJZpYL7Pj4PpeUmE0R8\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1464,\"versionNonce\":1724931469,\"isDeleted\":false,\"id\":\"YE1uLTZvZoBTGATl2Yoyg\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":965.3292921881111,\"y\":622.1134166368525,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":1771506211,\"groupIds\":[\"IODJZpYL7Pj4PpeUmE0R8\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1446,\"versionNonce\":1164387309,\"isDeleted\":false,\"id\":\"RqJhn8XLHxMj5J50pYF_H\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":953.0372574104567,\"y\":610.168614480021,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.111294126751562,\"height\":3.8890053533873536,\"seed\":1930939843,\"groupIds\":[\"IODJZpYL7Pj4PpeUmE0R8\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-3.7501123050520944,-3.889005353387353],[-6.111294126751561,0]]},{\"type\":\"line\",\"version\":1424,\"versionNonce\":102112845,\"isDeleted\":false,\"id\":\"wiZeM5QTLD7hXAtBo31KO\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":952.759471313776,\"y\":616.6965877517766,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.111294126751562,\"height\":4.722363643398934,\"seed\":50273635,\"groupIds\":[\"IODJZpYL7Pj4PpeUmE0R8\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-2.7778609667052487,-4.722363643398935],[-6.111294126751561,-1.5278235316878936]]},{\"type\":\"line\",\"version\":1419,\"versionNonce\":532073645,\"isDeleted\":false,\"id\":\"KuMwyiqX2b2EXg7ypUQ8e\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":954.7039739904744,\"y\":621.0022722501726,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.527973271757348,\"height\":3.333433160046305,\"seed\":614168835,\"groupIds\":[\"IODJZpYL7Pj4PpeUmE0R8\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-3.3334331600463027,-3.333433160046305],[-6.527973271757348,-0.8333582900115799]]},{\"type\":\"line\",\"version\":1433,\"versionNonce\":1911729933,\"isDeleted\":false,\"id\":\"sF0MtHWHmSfULU4aQosVw\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":963.7320221322661,\"y\":597.2515609848405,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":4.4445775467284045,\"height\":3.194540111711042,\"seed\":1969971363,\"groupIds\":[\"IODJZpYL7Pj4PpeUmE0R8\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[1.6667165800231543,-3.194540111711042],[4.4445775467284045,-0.9722513383468374]]},{\"type\":\"line\",\"version\":1407,\"versionNonce\":725828973,\"isDeleted\":false,\"id\":\"p38e-0slzg3wXOw9f5wfr\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":957.3429419088384,\"y\":597.9460262265186,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":4.3056844983931475,\"height\":3.055647063375781,\"seed\":1595757635,\"groupIds\":[\"IODJZpYL7Pj4PpeUmE0R8\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-1.3889304833526368,-3.0556470633757806],[-4.3056844983931475,-2.7778609667052603]]},{\"type\":\"rectangle\",\"version\":1893,\"versionNonce\":1861357517,\"isDeleted\":false,\"id\":\"koDKD6WcloHjdUi024Thu\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":1104.1577150870962,\"y\":428.7759233133736,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":294638563,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1894,\"versionNonce\":991465005,\"isDeleted\":false,\"id\":\"wCrVqZt8W6Rp3OXjvoMG0\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":1097.3063434629303,\"y\":495.69098617607233,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":1020354435,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1935,\"versionNonce\":245383309,\"isDeleted\":false,\"id\":\"3TcgF1JLRcR-qv9F6L4VW\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":1104.9881843748753,\"y\":643.659851525889,\"strokeColor\":\"#84142d\",\"backgroundColor\":\"#c92a2a\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":186677027,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1936,\"versionNonce\":1329768173,\"isDeleted\":false,\"id\":\"r0czvrUh12plkrxy_QZkI\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":1104.9881843748753,\"y\":708.0212213286713,\"strokeColor\":\"#e9d349\",\"backgroundColor\":\"#ffff1a\",\"width\":50.92852907297534,\"height\":54.12583583092038,\"seed\":1525390019,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1958,\"versionNonce\":1871266125,\"isDeleted\":false,\"id\":\"aPM0HObYzz9UDufUtvM5q\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":1100.3998415599026,\"y\":570.3294134151049,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":953240163,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1992,\"versionNonce\":1422757805,\"isDeleted\":false,\"id\":\"_s8D27CpFziq_3iL-a7uO\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":989.254625787873,\"y\":443.8274204720194,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":429917699,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"ellipse\",\"version\":1722,\"versionNonce\":2100892173,\"isDeleted\":false,\"id\":\"xedSmTEWtHCLI6ieUT9Vs\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1019.2114758806892,\"y\":442.7736717981895,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#c92a2a\",\"width\":12.471776185810908,\"height\":8.634306590176644,\"seed\":1414942115,\"groupIds\":[\"IIw2iYP7lal8kigv8OmHG\"],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"ellipse\",\"version\":1674,\"versionNonce\":1707427949,\"isDeleted\":false,\"id\":\"iBoThSrWuMxt0gIWJN2Il\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":4.728678266311217,\"x\":1015.7921506134453,\"y\":451.1083194422861,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#c92a2a\",\"width\":19.328773322340993,\"height\":16.96574827850908,\"seed\":1545773379,\"groupIds\":[\"IIw2iYP7lal8kigv8OmHG\"],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"line\",\"version\":1455,\"versionNonce\":809218765,\"isDeleted\":false,\"id\":\"iJ7ID5NGch0_FNhhViPHi\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1033.406267643396,\"y\":455.3711127630238,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":979599587,\"groupIds\":[\"IIw2iYP7lal8kigv8OmHG\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1479,\"versionNonce\":154521901,\"isDeleted\":false,\"id\":\"macYQQ-W_-R9zKBVuSWSX\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1034.8848856578106,\"y\":460.0732353995329,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":1218931843,\"groupIds\":[\"IIw2iYP7lal8kigv8OmHG\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1506,\"versionNonce\":1310532493,\"isDeleted\":false,\"id\":\"8lxYr3CELjM9eOPWkPU16\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1030.0033879591783,\"y\":467.59370101652644,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":715973667,\"groupIds\":[\"IIw2iYP7lal8kigv8OmHG\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1488,\"versionNonce\":1932208621,\"isDeleted\":false,\"id\":\"z_ZuHFRhA2CyEuT4Y4775\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1017.7113531815239,\"y\":455.648898859695,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.111294126751562,\"height\":3.8890053533873536,\"seed\":140666819,\"groupIds\":[\"IIw2iYP7lal8kigv8OmHG\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-3.7501123050520944,-3.889005353387353],[-6.111294126751561,0]]},{\"type\":\"line\",\"version\":1466,\"versionNonce\":694772813,\"isDeleted\":false,\"id\":\"bYCGt6Y_VsZLyNmz3ky4N\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1017.4335670848432,\"y\":462.17687213145064,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.111294126751562,\"height\":4.722363643398934,\"seed\":132544355,\"groupIds\":[\"IIw2iYP7lal8kigv8OmHG\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-2.7778609667052487,-4.722363643398935],[-6.111294126751561,-1.5278235316878936]]},{\"type\":\"line\",\"version\":1461,\"versionNonce\":1152471725,\"isDeleted\":false,\"id\":\"OyW3HbF5kaLCCjemCq3GH\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1019.3780697615412,\"y\":466.4825566298466,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.527973271757348,\"height\":3.333433160046305,\"seed\":126325507,\"groupIds\":[\"IIw2iYP7lal8kigv8OmHG\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-3.3334331600463027,-3.333433160046305],[-6.527973271757348,-0.8333582900115799]]},{\"type\":\"line\",\"version\":1475,\"versionNonce\":1638692109,\"isDeleted\":false,\"id\":\"mDs5dcBLsmYPO_R5E5bVY\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1028.4061179033333,\"y\":442.7318453645146,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":4.4445775467284045,\"height\":3.194540111711042,\"seed\":398736035,\"groupIds\":[\"IIw2iYP7lal8kigv8OmHG\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[1.6667165800231543,-3.194540111711042],[4.4445775467284045,-0.9722513383468374]]},{\"type\":\"line\",\"version\":1449,\"versionNonce\":1272204141,\"isDeleted\":false,\"id\":\"mejvtmeM3lEy3rH49iaiO\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1022.017037679906,\"y\":443.4263106061926,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":4.3056844983931475,\"height\":3.055647063375781,\"seed\":894103107,\"groupIds\":[\"IIw2iYP7lal8kigv8OmHG\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-1.3889304833526368,-3.0556470633757806],[-4.3056844983931475,-2.7778609667052603]]},{\"type\":\"rectangle\",\"version\":1976,\"versionNonce\":594695629,\"isDeleted\":false,\"id\":\"3UZ6RbDlWMkEWgoZtyKNL\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":990.254625787873,\"y\":519.8274204720194,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":1123692003,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"ellipse\",\"version\":1709,\"versionNonce\":1134564397,\"isDeleted\":false,\"id\":\"WbSDZ23nw7-UacRmQJt5D\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1020.2114758806892,\"y\":518.7736717981895,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#c92a2a\",\"width\":12.471776185810908,\"height\":8.634306590176644,\"seed\":1138784643,\"groupIds\":[\"FXQS4n1QQ5NM2u35Xoz5R\"],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"ellipse\",\"version\":1661,\"versionNonce\":1749485197,\"isDeleted\":false,\"id\":\"EOPPbHCJY9dhdgMyOwLWK\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":4.728678266311217,\"x\":1016.7921506134453,\"y\":527.1083194422861,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#c92a2a\",\"width\":19.328773322340993,\"height\":16.96574827850908,\"seed\":1430016291,\"groupIds\":[\"FXQS4n1QQ5NM2u35Xoz5R\"],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"line\",\"version\":1442,\"versionNonce\":337685741,\"isDeleted\":false,\"id\":\"pZ7RPeKsfZOCbxGmkVPbj\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1034.406267643396,\"y\":531.3711127630238,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":1752970435,\"groupIds\":[\"FXQS4n1QQ5NM2u35Xoz5R\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1466,\"versionNonce\":917931853,\"isDeleted\":false,\"id\":\"eEzOZQiuihTTpV_Vi122p\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1035.8848856578106,\"y\":536.0732353995329,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":1027515491,\"groupIds\":[\"FXQS4n1QQ5NM2u35Xoz5R\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1493,\"versionNonce\":308417965,\"isDeleted\":false,\"id\":\"sIfK0QEGfrYKOA5GUGLD1\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1031.0033879591783,\"y\":543.5937010165264,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":458366979,\"groupIds\":[\"FXQS4n1QQ5NM2u35Xoz5R\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1475,\"versionNonce\":1649203213,\"isDeleted\":false,\"id\":\"0J1LgOjgyhR_SwlbCKL0g\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1018.7113531815239,\"y\":531.648898859695,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.111294126751562,\"height\":3.8890053533873536,\"seed\":1286940579,\"groupIds\":[\"FXQS4n1QQ5NM2u35Xoz5R\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-3.7501123050520944,-3.889005353387353],[-6.111294126751561,0]]},{\"type\":\"line\",\"version\":1453,\"versionNonce\":1081101933,\"isDeleted\":false,\"id\":\"fW9izBa4CNOU3gdAXebeC\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1018.4335670848432,\"y\":538.1768721314506,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.111294126751562,\"height\":4.722363643398934,\"seed\":1469463363,\"groupIds\":[\"FXQS4n1QQ5NM2u35Xoz5R\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-2.7778609667052487,-4.722363643398935],[-6.111294126751561,-1.5278235316878936]]},{\"type\":\"line\",\"version\":1448,\"versionNonce\":1268119757,\"isDeleted\":false,\"id\":\"nFAwfIzBj_WCf9le-vPYs\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1020.3780697615412,\"y\":542.4825566298466,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.527973271757348,\"height\":3.333433160046305,\"seed\":2018761443,\"groupIds\":[\"FXQS4n1QQ5NM2u35Xoz5R\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-3.3334331600463027,-3.333433160046305],[-6.527973271757348,-0.8333582900115799]]},{\"type\":\"line\",\"version\":1462,\"versionNonce\":223827757,\"isDeleted\":false,\"id\":\"Cq16kQExmFKOVXHF2MJLt\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1029.4061179033333,\"y\":518.7318453645146,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":4.4445775467284045,\"height\":3.194540111711042,\"seed\":1534887555,\"groupIds\":[\"FXQS4n1QQ5NM2u35Xoz5R\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[1.6667165800231543,-3.194540111711042],[4.4445775467284045,-0.9722513383468374]]},{\"type\":\"line\",\"version\":1436,\"versionNonce\":538831245,\"isDeleted\":false,\"id\":\"gYPT_zDOaqJVt-r4G1FsT\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1023.017037679906,\"y\":519.4263106061926,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":4.3056844983931475,\"height\":3.055647063375781,\"seed\":399425059,\"groupIds\":[\"FXQS4n1QQ5NM2u35Xoz5R\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-1.3889304833526368,-3.0556470633757806],[-4.3056844983931475,-2.7778609667052603]]},{\"type\":\"rectangle\",\"version\":1893,\"versionNonce\":354627565,\"isDeleted\":false,\"id\":\"TC_5QNNL9wufhcKN2DkoQ\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":990.4310544602922,\"y\":590.6823628624115,\"strokeColor\":\"#84142d\",\"backgroundColor\":\"#c92a2a\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":1748566467,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1829,\"versionNonce\":443591245,\"isDeleted\":false,\"id\":\"Q355NU9MgHp5_bxJzrM7e\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":815.4310544602922,\"y\":444.68236286241154,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":635031907,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1925,\"versionNonce\":1625282733,\"isDeleted\":false,\"id\":\"DkOHRY8Px8LfFOC6MscAc\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":815.4310544602922,\"y\":518.6823628624115,\"strokeColor\":\"#84142d\",\"backgroundColor\":\"#c92a2a\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":33533187,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1882,\"versionNonce\":1109015309,\"isDeleted\":false,\"id\":\"aUdMMIvuSKZRpodXwIFqJ\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":815.4310544602922,\"y\":586.6823628624115,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":2692259,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1981,\"versionNonce\":647582061,\"isDeleted\":false,\"id\":\"B3wc0uFOVW6XaoylaG27_\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":258.6241116289866,\"y\":510.0337353311961,\"strokeColor\":\"#e67700\",\"backgroundColor\":\"#fab005\",\"width\":44.008394151477845,\"height\":47.04345581709699,\"seed\":805603395,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"text\",\"version\":1969,\"versionNonce\":732339149,\"isDeleted\":false,\"id\":\"QJoL0zKGQjppNG-W_PyFW\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"dotted\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":352.62899456951163,\"y\":528.168202150576,\"strokeColor\":\"#495057\",\"backgroundColor\":\"#868e96\",\"width\":45,\"height\":30,\"seed\":661686243,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":23.844697551811258,\"fontFamily\":1,\"text\":\"Epic\",\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"Epic\",\"lineHeight\":1.258141351334573,\"baseline\":21.80460756797025},{\"type\":\"rectangle\",\"version\":1995,\"versionNonce\":156998189,\"isDeleted\":false,\"id\":\"KvARoP24nXy3mYDAaxc2o\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":256.14087935711177,\"y\":602.7410734810205,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":44.008394151477845,\"height\":47.04345581709699,\"seed\":1014731651,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"text\",\"version\":2046,\"versionNonce\":950127757,\"isDeleted\":false,\"id\":\"YyDkg4gSKdZV5mQmtARKX\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"dotted\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":338.07894672034854,\"y\":601.2235426482107,\"strokeColor\":\"#495057\",\"backgroundColor\":\"#868e96\",\"width\":145,\"height\":30,\"seed\":2137271075,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":24.179336509860274,\"fontFamily\":1,\"text\":\"User history\",\"textAlign\":\"center\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"User history\",\"lineHeight\":1.2407288342161942,\"baseline\":22.22250797881134},{\"type\":\"text\",\"version\":2039,\"versionNonce\":1496494829,\"isDeleted\":false,\"id\":\"99IHM5m6PpzYJ67pSfSjM\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"dotted\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":332.9306307457491,\"y\":696.4914555988303,\"strokeColor\":\"#495057\",\"backgroundColor\":\"#868e96\",\"width\":61,\"height\":31,\"seed\":1956171459,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":24.280493324953294,\"fontFamily\":1,\"text\":\"Task\",\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"Task\",\"lineHeight\":1.2767450638303548,\"baseline\":23.35811846807148},{\"type\":\"text\",\"version\":2311,\"versionNonce\":1469566285,\"isDeleted\":false,\"id\":\"9MxJ5DXmpr2vfDUCfHoH5\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"dotted\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":339.9148133783019,\"y\":436.5948840579856,\"strokeColor\":\"#495057\",\"backgroundColor\":\"#868e96\",\"width\":145,\"height\":30,\"seed\":246939235,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":24.037688391703753,\"fontFamily\":1,\"text\":\"Architecture\",\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"Architecture\",\"lineHeight\":1.2480401405966328,\"baseline\":22.04703662568081},{\"type\":\"rectangle\",\"version\":2197,\"versionNonce\":1395301293,\"isDeleted\":false,\"id\":\"W2dvidT3x0cM00SaDd-Ph\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":248.1114966976411,\"y\":698.0089864316412,\"strokeColor\":\"#e9d349\",\"backgroundColor\":\"#ffff1a\",\"width\":48.344196530933495,\"height\":51.37925819655303,\"seed\":1754282499,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":2412,\"versionNonce\":1142201869,\"isDeleted\":false,\"id\":\"QXTqw-rBY9ZyBWew045Wk\",\"fillStyle\":\"hachure\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":263.1569959347671,\"y\":415.286599243771,\"strokeColor\":\"#c92a2a\",\"backgroundColor\":\"#c92a2a\",\"width\":44.008394151477845,\"height\":47.04345581709699,\"seed\":1059062179,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":2578,\"versionNonce\":1632588909,\"isDeleted\":false,\"id\":\"bVvsYXAH2IS9ES1cEvv2e\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":246.06999292119963,\"y\":428.4823291117493,\"strokeColor\":\"#84142d\",\"backgroundColor\":\"#c92a2a\",\"width\":44.008394151477845,\"height\":47.04345581709699,\"seed\":731239747,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":2002,\"versionNonce\":1185169101,\"isDeleted\":false,\"id\":\"g_ZOK3sC19l3OYrGaRJw_\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":244.6904194368244,\"y\":522.2933260490661,\"strokeColor\":\"#e67700\",\"backgroundColor\":\"#fab005\",\"width\":44.008394151477845,\"height\":47.04345581709699,\"seed\":491795683,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":2014,\"versionNonce\":1521278253,\"isDeleted\":false,\"id\":\"k9KXbbgEvZXGIPaT11cl0\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":246.06999292119963,\"y\":618.4495979098174,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":44.008394151477845,\"height\":47.04345581709699,\"seed\":333291651,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"line\",\"version\":113,\"versionNonce\":1959964557,\"isDeleted\":false,\"id\":\"k2lsgqsLpciIH2BxSXndQ\",\"fillStyle\":\"solid\",\"strokeWidth\":4,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":567.3095805631756,\"y\":383.34458416344,\"strokeColor\":\"#000000\",\"backgroundColor\":\"transparent\",\"width\":680,\"height\":0,\"seed\":419207203,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[680,0]]},{\"type\":\"line\",\"version\":82,\"versionNonce\":1129264621,\"isDeleted\":false,\"id\":\"jS1LQhN8yOsPnJ0LsVCuO\",\"fillStyle\":\"solid\",\"strokeWidth\":4,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":727.3095805631756,\"y\":298.34458416344,\"strokeColor\":\"#000000\",\"backgroundColor\":\"transparent\",\"width\":0,\"height\":540,\"seed\":2057018307,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[0,540]]},{\"type\":\"line\",\"version\":71,\"versionNonce\":1898704973,\"isDeleted\":false,\"id\":\"w0JzjX4owjRiEz-nNl_Io\",\"fillStyle\":\"solid\",\"strokeWidth\":4,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":887.3095805631756,\"y\":298.34458416344,\"strokeColor\":\"#000000\",\"backgroundColor\":\"transparent\",\"width\":0,\"height\":540,\"seed\":1155083107,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[0,540]]},{\"type\":\"line\",\"version\":58,\"versionNonce\":205676205,\"isDeleted\":false,\"id\":\"R0L-H1-IHgzF_GHyApSb4\",\"fillStyle\":\"solid\",\"strokeWidth\":4,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1067.3095805631756,\"y\":298.34458416344,\"strokeColor\":\"#000000\",\"backgroundColor\":\"transparent\",\"width\":0,\"height\":540,\"seed\":2080622339,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[0,540]]},{\"type\":\"rectangle\",\"version\":2015,\"versionNonce\":725352717,\"isDeleted\":false,\"id\":\"92t9ZBzAdg22NNZ5untZ3\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":645.0746113578589,\"y\":426.48544711232034,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":379186851,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1999,\"versionNonce\":154559277,\"isDeleted\":false,\"id\":\"FBo3Ddcj9n-bnYlH6kQd1\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":646.0746113578589,\"y\":502.48544711232046,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":1506458243,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1916,\"versionNonce\":108419405,\"isDeleted\":false,\"id\":\"uW-yjc5H6fCtmDSUGS57G\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":646.2510400302781,\"y\":573.3403895027126,\"strokeColor\":\"#84142d\",\"backgroundColor\":\"#c92a2a\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":953070179,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"rectangle\",\"version\":1967,\"versionNonce\":1045931949,\"isDeleted\":false,\"id\":\"oS9fvw13j1s6K0TJpDShi\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":644.4635002467485,\"y\":647.6906960852943,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":95448579,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"ellipse\",\"version\":1698,\"versionNonce\":1572874765,\"isDeleted\":false,\"id\":\"2AJy_LViL22XgTAR-nW2w\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":674.4203503395647,\"y\":646.6369474114645,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#c92a2a\",\"width\":12.471776185810908,\"height\":8.634306590176644,\"seed\":840545699,\"groupIds\":[\"s6C46DMjtV2hBVdObNF_-\"],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"ellipse\",\"version\":1650,\"versionNonce\":1437163629,\"isDeleted\":false,\"id\":\"6_6O1SZHDlquc5UE7BSSO\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":4.728678266311217,\"x\":671.0010250723208,\"y\":654.971595055561,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#c92a2a\",\"width\":19.328773322340993,\"height\":16.96574827850908,\"seed\":2100889923,\"groupIds\":[\"s6C46DMjtV2hBVdObNF_-\"],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"line\",\"version\":1431,\"versionNonce\":1004325581,\"isDeleted\":false,\"id\":\"bnX5QUs4DndwH0QpcLV-Z\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":688.6151421022714,\"y\":659.2343883762987,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":1013770467,\"groupIds\":[\"s6C46DMjtV2hBVdObNF_-\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1455,\"versionNonce\":821291309,\"isDeleted\":false,\"id\":\"Z3sBCgX_Om4qs7iLbSvO6\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":690.0937601166861,\"y\":663.9365110128078,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":356766851,\"groupIds\":[\"s6C46DMjtV2hBVdObNF_-\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1482,\"versionNonce\":106445709,\"isDeleted\":false,\"id\":\"2vHgjXiD7V5Pv8fRiNLh1\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":685.2122624180538,\"y\":671.4569766298014,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":2004634659,\"groupIds\":[\"s6C46DMjtV2hBVdObNF_-\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1464,\"versionNonce\":608387565,\"isDeleted\":false,\"id\":\"-5evlL-dijUPRNB9rC-xs\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":672.9202276403994,\"y\":659.51217447297,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.111294126751562,\"height\":3.8890053533873536,\"seed\":1459933123,\"groupIds\":[\"s6C46DMjtV2hBVdObNF_-\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-3.7501123050520944,-3.889005353387353],[-6.111294126751561,0]]},{\"type\":\"line\",\"version\":1442,\"versionNonce\":801012813,\"isDeleted\":false,\"id\":\"T-v88QOi3GEPGregjbfrx\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":672.6424415437186,\"y\":666.0401477447256,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.111294126751562,\"height\":4.722363643398934,\"seed\":637263715,\"groupIds\":[\"s6C46DMjtV2hBVdObNF_-\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-2.7778609667052487,-4.722363643398935],[-6.111294126751561,-1.5278235316878936]]},{\"type\":\"line\",\"version\":1437,\"versionNonce\":1889757869,\"isDeleted\":false,\"id\":\"Sd4EOctRaUyAGXZZlXtHV\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":674.5869442204175,\"y\":670.3458322431215,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.527973271757348,\"height\":3.333433160046305,\"seed\":246414083,\"groupIds\":[\"s6C46DMjtV2hBVdObNF_-\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-3.3334331600463027,-3.333433160046305],[-6.527973271757348,-0.8333582900115799]]},{\"type\":\"line\",\"version\":1451,\"versionNonce\":2006682893,\"isDeleted\":false,\"id\":\"T5ViAfbmCEYiyZhaY6OzQ\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":683.6149923622088,\"y\":646.5951209777895,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":4.4445775467284045,\"height\":3.194540111711042,\"seed\":1839178403,\"groupIds\":[\"s6C46DMjtV2hBVdObNF_-\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[1.6667165800231543,-3.194540111711042],[4.4445775467284045,-0.9722513383468374]]},{\"type\":\"line\",\"version\":1425,\"versionNonce\":69231469,\"isDeleted\":false,\"id\":\"V3VlMSpiImQR2e2oK0gey\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":677.2259121387806,\"y\":647.2895862194675,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":4.3056844983931475,\"height\":3.055647063375781,\"seed\":192501315,\"groupIds\":[\"s6C46DMjtV2hBVdObNF_-\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-1.3889304833526368,-3.0556470633757806],[-4.3056844983931475,-2.7778609667052603]]},{\"type\":\"rectangle\",\"version\":1967,\"versionNonce\":712732109,\"isDeleted\":false,\"id\":\"1c29ZhwZuSEGPJReZAaRK\",\"fillStyle\":\"solid\",\"strokeWidth\":1,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":644.4635002467485,\"y\":716.5795849741831,\"strokeColor\":\"#1864ab\",\"backgroundColor\":\"#15aabf\",\"width\":46.36094799019761,\"height\":49.558254748142254,\"seed\":387683811,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"ellipse\",\"version\":1702,\"versionNonce\":969288749,\"isDeleted\":false,\"id\":\"Q6JW7bbayg9GI3gniw4ln\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":674.4203503395647,\"y\":714.8115505860674,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#c92a2a\",\"width\":12.471776185810908,\"height\":8.634306590176644,\"seed\":1603592579,\"groupIds\":[\"yEfL64HT-qz4XzBp4uFET\"],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"ellipse\",\"version\":1654,\"versionNonce\":1642733197,\"isDeleted\":false,\"id\":\"0qQQF-dG7V73Maxz9aqlz\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":4.728678266311217,\"x\":671.0010250723208,\"y\":723.1461982301644,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#c92a2a\",\"width\":19.328773322340993,\"height\":16.96574827850908,\"seed\":1310964003,\"groupIds\":[\"yEfL64HT-qz4XzBp4uFET\"],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false},{\"type\":\"line\",\"version\":1435,\"versionNonce\":429966573,\"isDeleted\":false,\"id\":\"ckpPFpn6bJ6j5FQhEPGwy\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":688.6151421022714,\"y\":727.4089915509016,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":540449987,\"groupIds\":[\"yEfL64HT-qz4XzBp4uFET\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1459,\"versionNonce\":1148428109,\"isDeleted\":false,\"id\":\"Jf7jd6VOj_WvOj95HW0H_\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":690.0937601166861,\"y\":732.1111141874112,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":1634471011,\"groupIds\":[\"yEfL64HT-qz4XzBp4uFET\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1486,\"versionNonce\":414985645,\"isDeleted\":false,\"id\":\"81Ff7uf9auB9RbgcbbijU\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":685.2122624180538,\"y\":739.6315798044047,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":7.083545465098394,\"height\":4.166791450057882,\"seed\":630360067,\"groupIds\":[\"yEfL64HT-qz4XzBp4uFET\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[4.166791450057878,-4.166791450057882],[7.083545465098394,-0.9722513383468285]]},{\"type\":\"line\",\"version\":1468,\"versionNonce\":1168371725,\"isDeleted\":false,\"id\":\"yKxknyE0yg-YYvhu2MZ-u\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":672.9202276403994,\"y\":727.6867776475731,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.111294126751562,\"height\":3.8890053533873536,\"seed\":44601251,\"groupIds\":[\"yEfL64HT-qz4XzBp4uFET\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-3.7501123050520944,-3.889005353387353],[-6.111294126751561,0]]},{\"type\":\"line\",\"version\":1446,\"versionNonce\":1495557741,\"isDeleted\":false,\"id\":\"cNVpdzRYiW-2YaHXl2HaG\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":672.6424415437186,\"y\":734.2147509193287,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.111294126751562,\"height\":4.722363643398934,\"seed\":1255973699,\"groupIds\":[\"yEfL64HT-qz4XzBp4uFET\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-2.7778609667052487,-4.722363643398935],[-6.111294126751561,-1.5278235316878936]]},{\"type\":\"line\",\"version\":1441,\"versionNonce\":1711739085,\"isDeleted\":false,\"id\":\"DL_XMKMhFHCOONlY0WJxX\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":674.5869442204175,\"y\":738.5204354177247,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":6.527973271757348,\"height\":3.333433160046305,\"seed\":109920995,\"groupIds\":[\"yEfL64HT-qz4XzBp4uFET\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-3.3334331600463027,-3.333433160046305],[-6.527973271757348,-0.8333582900115799]]},{\"type\":\"line\",\"version\":1455,\"versionNonce\":1776643885,\"isDeleted\":false,\"id\":\"5w1orMD2F8XkNqcAFUgFV\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":683.6149923622088,\"y\":714.7697241523924,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":4.4445775467284045,\"height\":3.194540111711042,\"seed\":776531587,\"groupIds\":[\"yEfL64HT-qz4XzBp4uFET\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[1.6667165800231543,-3.194540111711042],[4.4445775467284045,-0.9722513383468374]]},{\"type\":\"line\",\"version\":1429,\"versionNonce\":1932067213,\"isDeleted\":false,\"id\":\"Gd1TJnt1ml_iQw36jZIux\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":677.2259121387806,\"y\":715.4641893940707,\"strokeColor\":\"#000000\",\"backgroundColor\":\"#ced4da\",\"width\":4.3056844983931475,\"height\":3.055647063375781,\"seed\":617489955,\"groupIds\":[\"yEfL64HT-qz4XzBp4uFET\"],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[-1.3889304833526368,-3.0556470633757806],[-4.3056844983931475,-2.7778609667052603]]},{\"type\":\"text\",\"version\":24,\"versionNonce\":118179821,\"isDeleted\":false,\"id\":\"1Hk2PGUBxawfOrajaKw02\",\"fillStyle\":\"solid\",\"strokeWidth\":4,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":624.1537362475992,\"y\":354.6580991830908,\"strokeColor\":\"#000000\",\"backgroundColor\":\"transparent\",\"width\":34,\"height\":25,\"seed\":1896573379,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":20,\"fontFamily\":1,\"text\":\"(10)\",\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"(10)\",\"lineHeight\":1.25,\"baseline\":19},{\"type\":\"text\",\"version\":52,\"versionNonce\":1200996941,\"isDeleted\":false,\"id\":\"opeuqqfU4M-C7CE63lhOf\",\"fillStyle\":\"solid\",\"strokeWidth\":4,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":789.3759584698214,\"y\":355.60254362753506,\"strokeColor\":\"#000000\",\"backgroundColor\":\"transparent\",\"width\":26,\"height\":25,\"seed\":941570403,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":20,\"fontFamily\":1,\"text\":\"(7)\",\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"(7)\",\"lineHeight\":1.25,\"baseline\":19},{\"type\":\"text\",\"version\":86,\"versionNonce\":1503785133,\"isDeleted\":false,\"id\":\"V7hvEUvy0aP3CkhDkBpDk\",\"fillStyle\":\"solid\",\"strokeWidth\":4,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":960.598180692044,\"y\":355.60254362753517,\"strokeColor\":\"#000000\",\"backgroundColor\":\"transparent\",\"width\":28,\"height\":25,\"seed\":2002261251,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":20,\"fontFamily\":1,\"text\":\"(6)\",\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"(6)\",\"lineHeight\":1.25,\"baseline\":19},{\"type\":\"text\",\"version\":114,\"versionNonce\":182014733,\"isDeleted\":false,\"id\":\"8hCxFarAyL3wTjrEd667h\",\"fillStyle\":\"solid\",\"strokeWidth\":4,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":1140.1537362475992,\"y\":356.82476584975745,\"strokeColor\":\"#000000\",\"backgroundColor\":\"transparent\",\"width\":34,\"height\":25,\"seed\":2117368995,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":20,\"fontFamily\":1,\"text\":\"(10)\",\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"(10)\",\"lineHeight\":1.25,\"baseline\":19},{\"type\":\"line\",\"version\":131,\"versionNonce\":934635885,\"isDeleted\":false,\"id\":\"Y3p3a2ULwlAFLaK2ytOxj\",\"fillStyle\":\"solid\",\"strokeWidth\":4,\"strokeStyle\":\"dashed\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":900.8204029142662,\"y\":667.2136547386464,\"strokeColor\":\"#e67700\",\"backgroundColor\":\"transparent\",\"width\":151.11111111111086,\"height\":0,\"seed\":677572675,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[151.11111111111086,0]]},{\"type\":\"text\",\"version\":199,\"versionNonce\":1904194509,\"isDeleted\":false,\"id\":\"1yssJxkhiX_c_m4YS_Xb5\",\"fillStyle\":\"solid\",\"strokeWidth\":4,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":960.0426251364888,\"y\":675.8247658497576,\"strokeColor\":\"#e67700\",\"backgroundColor\":\"transparent\",\"width\":39,\"height\":25,\"seed\":1472327651,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":20,\"fontFamily\":1,\"text\":\"WIP\",\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"WIP\",\"lineHeight\":1.25,\"baseline\":19},{\"type\":\"line\",\"version\":86,\"versionNonce\":1683075629,\"isDeleted\":false,\"id\":\"Dkgea9GnIV-i26en68rTb\",\"fillStyle\":\"solid\",\"strokeWidth\":4,\"strokeStyle\":\"dashed\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":739.1537362475992,\"y\":729.0747658497573,\"strokeColor\":\"#e67700\",\"backgroundColor\":\"transparent\",\"width\":141.11111111111086,\"height\":1.1111111111110858,\"seed\":778042243,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":null,\"points\":[[0,0],[141.11111111111086,-1.1111111111110858]]},{\"type\":\"text\",\"version\":140,\"versionNonce\":2098521229,\"isDeleted\":false,\"id\":\"3rmoFEmwQKKku7gUKuIfW\",\"fillStyle\":\"solid\",\"strokeWidth\":4,\"strokeStyle\":\"solid\",\"roughness\":0,\"opacity\":100,\"angle\":0,\"x\":793.3759584698219,\"y\":737.6858769608687,\"strokeColor\":\"#e67700\",\"backgroundColor\":\"transparent\",\"width\":39,\"height\":25,\"seed\":142316323,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"boundElements\":[],\"updated\":1764724963222,\"link\":null,\"locked\":false,\"fontSize\":20,\"fontFamily\":1,\"text\":\"WIP\",\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"containerId\":null,\"originalText\":\"WIP\",\"lineHeight\":1.25,\"baseline\":19}],\"appState\":{\"showWelcomeScreen\":true,\"theme\":\"dark\",\"collaborators\":[],\"currentChartType\":\"bar\",\"currentItemBackgroundColor\":\"transparent\",\"currentItemEndArrowhead\":\"arrow\",\"currentItemFillStyle\":\"solid\",\"currentItemFontFamily\":1,\"currentItemFontSize\":20,\"currentItemOpacity\":100,\"currentItemRoughness\":1,\"currentItemStartArrowhead\":null,\"currentItemStrokeColor\":\"#1e1e1e\",\"currentItemRoundness\":\"round\",\"currentItemStrokeStyle\":\"solid\",\"currentItemStrokeWidth\":2,\"currentItemTextAlign\":\"left\",\"cursorButton\":\"up\",\"activeEmbeddable\":null,\"draggingElement\":null,\"editingElement\":null,\"editingGroupId\":null,\"editingLinearElement\":null,\"activeTool\":{\"type\":\"selection\",\"customType\":null,\"locked\":false,\"lastActiveTool\":null},\"penMode\":false,\"penDetected\":false,\"errorMessage\":null,\"exportBackground\":true,\"exportScale\":2,\"exportEmbedScene\":false,\"exportWithDarkMode\":false,\"fileHandle\":null,\"gridSize\":null,\"isBindingEnabled\":true,\"defaultSidebarDockedPreference\":false,\"isLoading\":false,\"isResizing\":false,\"isRotating\":false,\"lastPointerDownWith\":\"mouse\",\"multiElement\":null,\"name\":\"Untitled-2025-12-02-0903\",\"contextMenu\":null,\"openMenu\":null,\"openPopup\":null,\"openSidebar\":null,\"openDialog\":null,\"pasteDialog\":{\"shown\":false,\"data\":null},\"previousSelectedElementIds\":[],\"resizingElement\":null,\"scrolledOutside\":false,\"scrollX\":474.0776096005857,\"scrollY\":128.2279898366936,\"selectedElementIds\":[],\"selectedGroupIds\":[],\"selectedElementsAreBeingDragged\":false,\"selectionElement\":null,\"shouldCacheIgnoreZoom\":false,\"showStats\":false,\"startBoundElement\":null,\"suggestedBindings\":[],\"frameRendering\":{\"enabled\":true,\"clip\":true,\"name\":true,\"outline\":true},\"frameToHighlight\":null,\"editingFrame\":null,\"elementsToHighlight\":null,\"toast\":null,\"viewBackgroundColor\":\"#ffffff\",\"zenModeEnabled\":false,\"zoom\":{\"value\":0.6041803956031799},\"viewModeEnabled\":false,\"pendingImageElementId\":null,\"showHyperlinkPopup\":false,\"selectedLinearElement\":null,\"snapLines\":[],\"originSnapOffset\":null,\"objectsSnapModeEnabled\":false,\"offsetLeft\":303,\"offsetTop\":189.5,\"width\":1119,\"height\":659},\"files\":[]}',NULL,NULL,NULL,0,1,1,'2025-12-02 14:03:14','2025-12-03 01:35:34'),
(6,'Untitled Diagram','','{\"type\":\"excalidraw\",\"version\":2,\"source\":\"m1_erp\",\"elements\":[{\"type\":\"rectangle\",\"version\":11,\"versionNonce\":211091787,\"isDeleted\":false,\"id\":\"eq80EKfu_iVyHuKnLyk6K\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":410,\"y\":109.5,\"strokeColor\":\"#1e1e1e\",\"backgroundColor\":\"transparent\",\"width\":452,\"height\":132,\"seed\":116474635,\"groupIds\":[],\"frameId\":null,\"roundness\":{\"type\":3},\"boundElements\":[],\"updated\":1764770684029,\"link\":null,\"locked\":false},{\"type\":\"arrow\",\"version\":19,\"versionNonce\":746335653,\"isDeleted\":false,\"id\":\"j4gbc-35Bh3voxdHfFso1\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"angle\":0,\"x\":774,\"y\":157.5,\"strokeColor\":\"#1e1e1e\",\"backgroundColor\":\"transparent\",\"width\":193,\"height\":32,\"seed\":1151115243,\"groupIds\":[],\"frameId\":null,\"roundness\":{\"type\":2},\"boundElements\":[],\"updated\":1764770689802,\"link\":null,\"locked\":false,\"startBinding\":null,\"endBinding\":null,\"lastCommittedPoint\":null,\"startArrowhead\":null,\"endArrowhead\":\"arrow\",\"points\":[[0,0],[193,32]]},{\"id\":\"YAkFN9_R9CmpdyQ1lfJL0\",\"type\":\"rectangle\",\"x\":365,\"y\":287.5,\"width\":295,\"height\":244,\"angle\":0,\"strokeColor\":\"#1e1e1e\",\"backgroundColor\":\"transparent\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"groupIds\":[],\"frameId\":null,\"roundness\":{\"type\":3},\"seed\":1874998676,\"version\":8,\"versionNonce\":2021000212,\"isDeleted\":false,\"boundElements\":null,\"updated\":1764889617217,\"link\":null,\"locked\":false},{\"id\":\"QXswgLdgRENvLfKBYPM1k\",\"type\":\"text\",\"x\":532,\"y\":355.5,\"width\":51.31999969482422,\"height\":25,\"angle\":0,\"strokeColor\":\"#1e1e1e\",\"backgroundColor\":\"transparent\",\"fillStyle\":\"solid\",\"strokeWidth\":2,\"strokeStyle\":\"solid\",\"roughness\":1,\"opacity\":100,\"groupIds\":[],\"frameId\":null,\"roundness\":null,\"seed\":1556373908,\"version\":7,\"versionNonce\":1340932268,\"isDeleted\":false,\"boundElements\":null,\"updated\":1764889622393,\"link\":null,\"locked\":false,\"text\":\"here..\",\"fontSize\":20,\"fontFamily\":1,\"textAlign\":\"left\",\"verticalAlign\":\"top\",\"baseline\":18,\"containerId\":null,\"originalText\":\"here..\",\"lineHeight\":1.25}],\"appState\":{\"showWelcomeScreen\":true,\"theme\":\"dark\",\"collaborators\":[],\"currentChartType\":\"bar\",\"currentItemBackgroundColor\":\"transparent\",\"currentItemEndArrowhead\":\"arrow\",\"currentItemFillStyle\":\"solid\",\"currentItemFontFamily\":1,\"currentItemFontSize\":20,\"currentItemOpacity\":100,\"currentItemRoughness\":1,\"currentItemStartArrowhead\":null,\"currentItemStrokeColor\":\"#1e1e1e\",\"currentItemRoundness\":\"round\",\"currentItemStrokeStyle\":\"solid\",\"currentItemStrokeWidth\":2,\"currentItemTextAlign\":\"left\",\"cursorButton\":\"down\",\"activeEmbeddable\":null,\"draggingElement\":null,\"editingElement\":null,\"editingGroupId\":null,\"editingLinearElement\":null,\"activeTool\":{\"type\":\"selection\",\"customType\":null,\"locked\":false,\"lastActiveTool\":null},\"penMode\":false,\"penDetected\":false,\"errorMessage\":null,\"exportBackground\":true,\"exportScale\":2,\"exportEmbedScene\":false,\"exportWithDarkMode\":false,\"fileHandle\":null,\"gridSize\":null,\"isBindingEnabled\":true,\"defaultSidebarDockedPreference\":false,\"isLoading\":false,\"isResizing\":false,\"isRotating\":false,\"lastPointerDownWith\":\"mouse\",\"multiElement\":null,\"name\":\"Untitled-2025-12-03-0904\",\"contextMenu\":null,\"openMenu\":null,\"openPopup\":null,\"openSidebar\":null,\"openDialog\":null,\"pasteDialog\":{\"shown\":false,\"data\":null},\"previousSelectedElementIds\":[],\"resizingElement\":null,\"scrolledOutside\":false,\"scrollX\":0,\"scrollY\":0,\"selectedElementIds\":[],\"selectedGroupIds\":[],\"selectedElementsAreBeingDragged\":false,\"selectionElement\":null,\"shouldCacheIgnoreZoom\":false,\"showStats\":false,\"startBoundElement\":null,\"suggestedBindings\":[],\"frameRendering\":{\"enabled\":true,\"clip\":true,\"name\":true,\"outline\":true},\"frameToHighlight\":null,\"editingFrame\":null,\"elementsToHighlight\":null,\"toast\":null,\"viewBackgroundColor\":\"#ffffff\",\"zenModeEnabled\":false,\"zoom\":{\"value\":1},\"viewModeEnabled\":false,\"pendingImageElementId\":null,\"showHyperlinkPopup\":false,\"selectedLinearElement\":null,\"snapLines\":[],\"originSnapOffset\":null,\"objectsSnapModeEnabled\":false,\"offsetLeft\":303,\"offsetTop\":189.5,\"width\":1119,\"height\":659},\"files\":[]}',NULL,NULL,NULL,0,1,1,'2025-12-03 14:04:58','2025-12-04 23:07:04');
commit;

--
