-- Table structure for table `matter_roles`
--

CREATE TABLE IF NOT EXISTS `matter_roles` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci,
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `matter_roles_name_unique` (`name`),
  KEY `matter_roles_created_by_foreign` (`created_by`),
  KEY `matter_roles_updated_by_foreign` (`updated_by`)
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `matter_roles`
--

INSERT INTO `matter_roles` (`id`, `name`, `description`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES
(1, 'Plaintiff', 'Party initiating the case', 0, 0, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(2, 'Defendant', 'Party responding to the case', 0, 0, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(3, 'Applicant', 'Party applying for legal relief', 0, 0, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(4, 'Respondent', 'Party responding to an application', 0, 0, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(5, 'Witness', 'Individual providing testimony', 0, 0, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(6, 'Third Party', 'External party involved in the case', 0, 0, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(7, 'Co-Plaintiff', 'Co-plaintiff on the case', 0, 0, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(8, 'Co-Defendant', 'Co-defendant on the case', 0, 0, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(9, 'Primary Client', 'Role description for Primary Client', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(10, 'Billing Contact', 'Role description for Billing Contact', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(11, 'Lead Lawyer', 'Role description for Lead Lawyer', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(12, 'Role 1', 'Role description for Role 1', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(13, 'Role 2', 'Role description for Role 2', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(14, 'Role 3', 'Role description for Role 3', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(15, 'Role 4', 'Role description for Role 4', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(16, 'Role 5', 'Role description for Role 5', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(17, 'Role 6', 'Role description for Role 6', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(18, 'Role 7', 'Role description for Role 7', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(19, 'Role 8', 'Role description for Role 8', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(20, 'Role 9', 'Role description for Role 9', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(21, 'Role 10', 'Role description for Role 10', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(22, 'Role 11', 'Role description for Role 11', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(23, 'Role 12', 'Role description for Role 12', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(24, 'Role 13', 'Role description for Role 13', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(25, 'Role 14', 'Role description for Role 14', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(26, 'Role 15', 'Role description for Role 15', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(27, 'Role 16', 'Role description for Role 16', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(28, 'Role 17', 'Role description for Role 17', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(29, 'Role 18', 'Role description for Role 18', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(30, 'Role 19', 'Role description for Role 19', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(31, 'Role 20', 'Role description for Role 20', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(32, 'Role 21', 'Role description for Role 21', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(33, 'Role 22', 'Role description for Role 22', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20');

-- --------------------------------------------------------

--
-- Table structure for table `matter_statuses`
--

CREATE TABLE IF NOT EXISTS `matter_statuses` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci,
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `matter_statuses_name_unique` (`name`),
  KEY `matter_statuses_created_by_foreign` (`created_by`),
  KEY `matter_statuses_updated_by_foreign` (`updated_by`)
) ENGINE=InnoDB AUTO_INCREMENT=55 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `matter_statuses`
--

INSERT INTO `matter_statuses` (`id`, `name`, `description`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES
(1, 'Closed', 'Status description for Closed', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(2, 'Intervened', 'government intervention (Code: INTVN)', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(3, 'Open', 'Status description for Open', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(4, 'Pending', 'Case is temporarily inactive or awaiting action (Code: PEND)', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(5, 'Transferred', 'Case has been transferred to another firm or court (Code: TRAN)', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(6, 'Withdrawn', 'Case was withdrawn by the client or counsel (Code: WDTH)', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(32, 'On Hold', 'Status description for On Hold', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(33, 'Status 1', 'Status description for Status 1', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(34, 'Status 2', 'Status description for Status 2', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(35, 'Status 3', 'Status description for Status 3', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(36, 'Status 4', 'Status description for Status 4', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(37, 'Status 5', 'Status description for Status 5', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(38, 'Status 6', 'Status description for Status 6', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(39, 'Status 7', 'Status description for Status 7', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(40, 'Status 8', 'Status description for Status 8', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(41, 'Status 9', 'Status description for Status 9', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(42, 'Status 10', 'Status description for Status 10', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(43, 'Status 11', 'Status description for Status 11', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(44, 'Status 12', 'Status description for Status 12', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(45, 'Status 13', 'Status description for Status 13', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(46, 'Status 14', 'Status description for Status 14', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(47, 'Status 15', 'Status description for Status 15', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(48, 'Status 16', 'Status description for Status 16', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(49, 'Status 17', 'Status description for Status 17', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(50, 'Status 18', 'Status description for Status 18', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(51, 'Status 19', 'Status description for Status 19', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(52, 'Status 20', 'Status description for Status 20', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(53, 'Status 21', 'Status description for Status 21', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(54, 'Status 22', 'Status description for Status 22', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20');

-- --------------------------------------------------------

--
-- Table structure for table `matter_types`
--

CREATE TABLE IF NOT EXISTS `matter_types` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci,
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `matter_types_name_unique` (`name`),
  KEY `matter_types_created_by_foreign` (`created_by`),
  KEY `matter_types_updated_by_foreign` (`updated_by`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `matter_types`
--

INSERT INTO `matter_types` (`id`, `name`, `description`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES
(1, 'robbery', 'Illegal possession or taking of property using force or intimidations.', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(2, 'assault', 'Physical attack causing bodily harm or threat thereof', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(3, 'fraud', 'Deception intended to result in financial or personal gain', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(4, 'burglary', 'Unlawful entry into a structure with intent to commit a crime', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(5, 'theft', 'Unlawful taking of another person’s property without force', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(6, 'homicide', 'Unlawful killing of another human being', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(7, 'kidnapping', 'Unlawful abduction or detention of a person', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(8, 'domestic_violence', 'Abuse or violence occurring within a domestic relationship', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(9, 'drug_trafficking', 'Illegal manufacture, distribution, or sale of controlled substances', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(10, 'money_laundering', 'Concealment of the origins of illegally obtained money', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(11, 'cybercrime', 'Criminal activities carried out using computers or digital networksss', NULL, NULL, '2026-03-18 11:51:58', '2026-03-18 11:51:58'),
(12, 'Litigation', 'Type description for Litigation', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(13, 'Advisory', 'Type description for Advisory', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(14, 'Corporate', 'Type description for Corporate', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(15, 'Type 4', 'Type description for Type 4', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(16, 'Type 5', 'Type description for Type 5', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(17, 'Type 6', 'Type description for Type 6', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(18, 'Type 7', 'Type description for Type 7', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(19, 'Type 8', 'Type description for Type 8', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(20, 'Type 9', 'Type description for Type 9', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(21, 'Type 10', 'Type description for Type 10', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(22, 'Type 11', 'Type description for Type 11', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(23, 'Type 12', 'Type description for Type 12', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(24, 'Type 13', 'Type description for Type 13', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(25, 'Type 14', 'Type description for Type 14', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(26, 'Type 15', 'Type description for Type 15', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(27, 'Type 16', 'Type description for Type 16', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(28, 'Type 17', 'Type description for Type 17', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(29, 'Type 18', 'Type description for Type 18', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(30, 'Type 19', 'Type description for Type 19', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(31, 'Type 20', 'Type description for Type 20', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(32, 'Type 21', 'Type description for Type 21', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(33, 'Type 22', 'Type description for Type 22', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(34, 'Type 23', 'Type description for Type 23', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(35, 'Type 24', 'Type description for Type 24', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(36, 'Type 25', 'Type description for Type 25', 8, 8, '2026-03-19 11:04:56', '2026-03-19 11:04:56'),
(37, 'Type 1', 'Type description for Type 1', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(38, 'Type 2', 'Type description for Type 2', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(39, 'Type 3', 'Type description for Type 3', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(40, 'Type 26', 'Type description for Type 26', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(41, 'Type 27', 'Type description for Type 27', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(42, 'Type 28', 'Type description for Type 28', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(43, 'Type 29', 'Type description for Type 29', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(44, 'Type 30', 'Type description for Type 30', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(45, 'Type 31', 'Type description for Type 31', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(46, 'Type 32', 'Type description for Type 32', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(47, 'Type 33', 'Type description for Type 33', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(48, 'Type 34', 'Type description for Type 34', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(49, 'Type 35', 'Type description for Type 35', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(50, 'Type 36', 'Type description for Type 36', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(51, 'Type 37', 'Type description for Type 37', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(52, 'Type 38', 'Type description for Type 38', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(53, 'Type 39', 'Type description for Type 39', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(54, 'Type 40', 'Type description for Type 40', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(55, 'Type 41', 'Type description for Type 41', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(56, 'Type 42', 'Type description for Type 42', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(57, 'Type 43', 'Type description for Type 43', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20'),
(58, 'Type 44', 'Type description for Type 44', 8, 8, '2026-03-19 11:10:20', '2026-03-19 11:10:20');

-- --------------------------------------------------------

--
-- Table structure for table `migrations`
--

CREATE TABLE IF NOT EXISTS `migrations` (
  `id` int UNSIGNED NOT NULL AUTO_INCREMENT,
  `migration` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `batch` int NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=146 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `migrations`
--

INSERT INTO `migrations` (`id`, `migration`, `batch`) VALUES
(1, '2026_01_01_203350_create_account_types_table', 1),
(2, '2026_01_01_203350_create_assignments_table', 1),
(3, '2026_01_01_203350_create_audit_logs_table', 1),
(4, '2026_01_01_203350_create_cache_store_table', 1),
(5, '2026_01_01_203350_create_cancelled_reasons_table', 1),
(6, '2026_01_01_203350_create_case_categories_table', 1),
(7, '2026_01_01_203350_create_case_lawyers_table', 1),
(8, '2026_01_01_203350_create_case_parties_table', 1),
(9, '2026_01_01_203350_create_case_statuses_table', 1),
(10, '2026_01_01_203350_create_case_types_table', 1),
(11, '2026_01_01_203350_create_cases_table', 1),
(12, '2026_01_01_203350_create_chat_groups_table', 1),
(13, '2026_01_01_203350_create_chat_messages_table', 1),
(14, '2026_01_01_203350_create_chat_participants_table', 1),
(15, '2026_01_01_203350_create_chat_requests_table', 1),
(16, '2026_01_01_203350_create_chat_rooms_table', 1),
(17, '2026_01_01_203350_create_client_categories_table', 1),
(18, '2026_01_01_203350_create_client_journals_table', 1),
(19, '2026_01_01_203350_create_clients_table', 1),
(20, '2026_01_01_203350_create_company_info_table', 1),
(21, '2026_01_01_203350_create_court_areas_table', 1),
(22, '2026_01_01_203350_create_court_filing_statuses_table', 1),
(23, '2026_01_01_203350_create_court_filing_types_table', 1),
(24, '2026_01_01_203350_create_court_filings_table', 1),
(25, '2026_01_01_203350_create_court_types_table', 1),
(26, '2026_01_01_203350_create_currencies_table', 1),
(27, '2026_01_01_203350_create_currency_rates_table', 1),
(28, '2026_01_01_203350_create_departments_table', 1),
(29, '2026_01_01_203350_create_diary_entries_table', 1),
(30, '2026_01_01_203350_create_features_table', 1),
(31, '2026_01_01_203350_create_filing_responsible_lawyers_table', 1),
(32, '2026_01_01_203350_create_general_journals_table', 1),
(33, '2026_01_01_203350_create_general_ledger_accounts_table', 1),
(34, '2026_01_01_203350_create_group_call_participants_table', 1),
(35, '2026_01_01_203350_create_group_calls_table', 1),
(36, '2026_01_01_203350_create_home_currency_history_table', 1),
(37, '2026_01_01_203350_create_home_currency_table', 1),
(38, '2026_01_01_203350_create_journal_transactions_table', 1),
(39, '2026_01_01_203350_create_judgements_table', 1),
(40, '2026_01_01_203350_create_judges_table', 1),
(41, '2026_01_01_203350_create_lawyer_groups_table', 1),
(42, '2026_01_01_203350_create_lawyer_tariffs_table', 1),
(43, '2026_01_01_203350_create_lawyer_types_table', 1),
(44, '2026_01_01_203350_create_lawyers_table', 1),
(45, '2026_01_01_203350_create_modules_table', 1),
(46, '2026_01_01_203350_create_notifications_table', 1),
(47, '2026_01_01_203350_create_password_otps_table', 1),
(48, '2026_01_01_203350_create_password_resets_table', 1),
(49, '2026_01_01_203350_create_permissions_table', 1),
(50, '2026_01_01_203350_create_prompt_conversations_table', 1),
(51, '2026_01_01_203350_create_prompt_messages_table', 1),
(52, '2026_01_01_203350_create_prompt_templates_table', 1),
(53, '2026_01_01_203350_create_prompts_table', 1),
(54, '2026_01_01_203350_create_role_permissions_table', 1),
(55, '2026_01_01_203350_create_subaccounts_table', 1),
(56, '2026_01_01_203350_create_submodules_table', 1),
(57, '2026_01_01_203350_create_supplier_ageing_analysis_table', 1),
(58, '2026_01_01_203350_create_supplier_areas_table', 1),
(59, '2026_01_01_203350_create_supplier_categories_table', 1),
(60, '2026_01_01_203350_create_supplier_journals_table', 1),
(61, '2026_01_01_203350_create_suppliers_table', 1),
(62, '2026_01_01_203350_create_system_settings_categories_table', 1),
(63, '2026_01_01_203350_create_system_settings_history_table', 1),
(64, '2026_01_01_203350_create_system_settings_table', 1),
(65, '2026_01_01_203350_create_taxes_table', 1),
(66, '2026_01_01_203350_create_transactions_table', 1),
(67, '2026_01_01_203350_create_uploaded_chat_files_table', 1),
(68, '2026_01_01_203350_create_user_chat_settings_table', 1),
(69, '2026_01_01_203350_create_user_groups_table', 1),
(70, '2026_01_01_203350_create_user_phones_table', 1),
(71, '2026_01_01_203350_create_user_roles_table', 1),
(72, '2026_01_01_203350_create_user_sessions_table', 1),
(73, '2026_01_01_203350_create_user_tiers_table', 1),
(74, '2026_01_01_203350_create_users_table', 1),
(75, '2026_01_01_203353_add_foreign_keys_to_password_resets_table', 1),
(76, '2026_01_01_203353_add_foreign_keys_to_prompt_conversations_table', 1),
(77, '2026_01_01_203353_add_foreign_keys_to_prompt_messages_table', 1),
(78, '2026_01_01_203353_add_foreign_keys_to_prompt_templates_table', 1),
(79, '2026_01_01_203353_add_foreign_keys_to_prompts_table', 1),
(80, '2026_01_01_204638_create_sessions_table', 1),
(81, '2026_01_03_072509_create_sessions_table', 2),
(82, '2025_09_20_000001_add_gl_account_to_cashbooks_table', 3),
(83, '2025_09_21_000001_create_client_invoice_disbursements_table', 4),
(84, '2026_03_09_160100_make_client_optional_on_client_quotations_table', 5),
(85, '2025_09_22_000001_create_client_invoice_taxes_table', 6),
(86, '2024_10_01_000000_add_accountability_columns_to_chat_tables', 7),
(94, '2026_03_16_000001_create_matter_lookup_tables', 8),
(95, '2026_03_16_000002_create_matters_table', 9),
(96, '2026_03_16_000003_create_matter_clients_table', 10),
(97, '2026_03_16_000004_create_matter_lawyers_table', 11),
(98, '2026_03_16_000006_create_conflict_tables', 12),
(99, '2026_03_16_000007_migrate_cases_to_matters', 13),
(100, '2026_03_22_210000_add_conflict_resolution_columns', 14),
(101, '2026_03_22_213000_add_matter_numbering_to_system_settings', 15),
(102, '2026_03_23_000001_create_account_types_table', 16),
(103, '2026_03_23_000002_create_departments_table', 16),
(104, '2026_03_23_000003_create_general_ledger_accounts_table', 16),
(105, '2026_03_23_000004_create_journal_headers_table', 16),
(106, '2026_03_23_000005_create_journal_lines_table', 16),
(107, '2026_03_23_000006_create_cashbooks_table', 16),
(108, '2026_03_23_000007_create_cashbook_entries_table', 16),
(109, '2026_03_23_000008_create_client_trust_accounts_table', 17),
(110, '2026_03_23_000009_create_trust_transactions_table', 17),
(111, '2026_03_23_000010_create_trust_ledger_entries_table', 17),
(112, '2026_03_23_000011_create_trust_account_reconciliations_table', 17),
(113, '2026_03_23_000012_create_trust_transfers_table', 17),
(114, '2026_03_24_130001_add_trust_account_id_to_cashbooks_table', 18),
(115, '2026_03_24_140001_create_trust_account_matters_table', 19),
(116, '2026_03_24_230001_drop_matter_id_from_client_trust_accounts_table', 20),
(118, '2026_03_25_000001_create_cashbook_entries_table', 21),
(119, '2026_03_26_130001_replace_user_id_with_audit_fields_on_client_invoices_table', 22),
(120, '2026_03_26_130002_replace_user_id_with_audit_fields_on_client_quotations_table', 22),
(121, '2026_03_26_130003_replace_user_id_with_audit_fields_on_client_receipts_table', 22),
(122, '2026_03_26_150000_add_client_quotations_and_receipts_permission_features', 23),
(123, '2026_03_26_151000_add_print_permission_features_for_client_billing', 24),
(124, '2026_03_26_152000_remove_print_permission_features_for_client_billing', 25),
(125, '2026_03_26_203000_add_foreign_key_columns_to_general_journals_table', 26),
(127, '2026_03_27_000001_create_supplier_invoice_lines_and_seed_invoices', 27),
(128, '2026_03_27_000002_seed_court_reference_data_and_filings', 28),
(129, '2026_03_30_000001_drop_bank_name_from_cashbooks_table', 29),
(130, '2026_04_01_130000_drop_assignments_module', 30),
(131, '2026_04_01_141000_drop_court_filings_tables', 31),
(132, '2026_04_02_123409_recreate_vw_active_tariffs_view', 32),
(133, '2026_04_02_153301_add_status_indexes_soft_deletes_to_diaries_table', 33),
(136, '2026_04_02_153354_create_diary_categories_table', 34),
(137, '2026_04_02_153421_create_diary_tags_table', 34),
(138, '2026_04_02_180000_create_client_invoice_gl_accounts_table', 35),
(139, '2026_04_02_153100_create_diary_categories_table', 36),
(140, '2026_04_02_153200_create_diary_tags_table', 36),
(141, '2026_04_02_153300_create_diaries_table', 36),
(142, '2026_04_02_153445_create_diary_entry_tags_table', 37),
(143, '2026_04_02_153514_create_diary_attachments_table', 37),
(144, '2026_04_02_153617_create_diary_reminders_table', 37),
(145, '2026_04_02_180010_add_gl_account_id_to_client_invoice_disbursements_table', 37);

-- --------------------------------------------------------

--
-- Table structure for table `modules`
--

CREATE TABLE IF NOT EXISTS `modules` (
  `module_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `module_name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci,
  PRIMARY KEY (`module_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `notifications`
--

CREATE TABLE IF NOT EXISTS `notifications` (
  `notification_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_id` bigint UNSIGNED NOT NULL,
  `type` enum('message','call','group','request','system') COLLATE utf8mb4_unicode_ci DEFAULT 'message',
  `title` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `content` text COLLATE utf8mb4_unicode_ci,
  `related_id` bigint UNSIGNED DEFAULT NULL,
  `related_type` enum('chat','call','group','system') COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `is_read` tinyint(1) DEFAULT '0',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `read_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`notification_id`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `password_otps`
--

CREATE TABLE IF NOT EXISTS `password_otps` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `otp` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL,
  `expires_at` datetime NOT NULL,
  `used` tinyint(1) NOT NULL 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_email_otp` (`email`,`otp`),
  KEY `idx_email` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `password_otps`
--

INSERT INTO `password_otps` (`id`, `email`, `otp`, `expires_at`, `used`, `created_at`, `updated_at`) VALUES
(1, 'tadiashley2003@gmail.com', '532847', '2026-01-03 09:25:05', 0, '2026-01-03 07:15:05', '2026-01-03 09:15:05'),
(3, 'tadiwagwena@melsoftzim.co.zw', '597023', '2026-01-03 09:49:53', 0, '2026-01-03 07:39:53', '2026-01-03 09:39:53');

-- --------------------------------------------------------

--
-- Table structure for table `password_resets`
--

CREATE TABLE IF NOT EXISTS `password_resets` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_id` bigint UNSIGNED NOT NULL,
  `token_hash` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `expires_at` timestamp NOT NULL,
  `used` tinyint(1) NOT NULL 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 `token_hash` (`token_hash`),
  KEY `idx_user_id_used` (`user_id`,`used`),
  KEY `idx_expires_at` (`expires_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `permission_audit_log`
--

CREATE TABLE IF NOT EXISTS `permission_audit_log` (
  `log_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `entity_type` enum('user','group','tier') COLLATE utf8mb4_unicode_ci NOT NULL,
  `entity_id` bigint UNSIGNED NOT NULL,
  `feature_id` bigint UNSIGNED NOT NULL,
  `old_values` json DEFAULT NULL,
  `new_values` json NOT NULL,
  `action` enum('created','updated','deleted','activated','deactivated') COLLATE utf8mb4_unicode_ci NOT NULL,
  `changed_by` bigint UNSIGNED NOT NULL,
  `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `user_agent` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `changed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`log_id`),
  KEY `idx_audit_entity` (`entity_type`,`entity_id`),
  KEY `idx_audit_feature` (`feature_id`),
  KEY `idx_audit_changed_by` (`changed_by`),
  KEY `idx_audit_changed_at` (`changed_at`)
) ENGINE=InnoDB AUTO_INCREMENT=196 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `permission_audit_log`
--

INSERT INTO `permission_audit_log` (`log_id`, `entity_type`, `entity_id`, `feature_id`, `old_values`, `new_values`, `action`, `changed_by`, `ip_address`, `user_agent`, `changed_at`) VALUES
(1, 'user', 1, 1, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(2, 'user', 1, 2, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(3, 'user', 1, 3, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(4, 'user', 1, 4, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(5, 'user', 1, 5, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(6, 'user', 1, 6, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(7, 'user', 1, 7, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(8, 'user', 1, 8, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(9, 'user', 1, 9, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(10, 'user', 1, 10, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(11, 'user', 1, 11, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(12, 'user', 1, 12, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(13, 'user', 1, 13, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(14, 'user', 1, 14, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(15, 'user', 1, 15, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(16, 'user', 1, 16, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(17, 'user', 1, 17, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(18, 'user', 1, 18, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(19, 'user', 1, 19, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(20, 'user', 1, 20, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(21, 'user', 1, 21, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(22, 'user', 1, 22, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(23, 'user', 1, 23, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(24, 'user', 1, 24, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(25, 'user', 1, 25, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(26, 'user', 1, 26, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(27, 'user', 1, 27, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(28, 'user', 1, 28, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(29, 'user', 1, 29, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(30, 'user', 1, 30, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(31, 'user', 1, 31, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(32, 'user', 1, 32, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(33, 'user', 1, 33, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(34, 'user', 1, 34, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(35, 'user', 1, 35, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(36, 'user', 1, 36, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(37, 'user', 1, 37, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(38, 'user', 1, 38, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:39'),
(39, 'user', 1, 39, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:40'),
(40, 'user', 1, 40, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:40'),
(41, 'user', 1, 41, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:40'),
(42, 'user', 1, 42, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:40'),
(43, 'user', 1, 43, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:40'),
(44, 'user', 1, 44, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:40'),
(45, 'user', 1, 45, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:40'),
(46, 'user', 1, 46, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:40'),
(47, 'user', 1, 47, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:40'),
(48, 'user', 1, 48, NULL, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', 'created', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:18:40'),
(49, 'user', 1, 1, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(50, 'user', 1, 2, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(51, 'user', 1, 3, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(52, 'user', 1, 4, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(53, 'user', 1, 5, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(54, 'user', 1, 6, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(55, 'user', 1, 7, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(56, 'user', 1, 8, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(57, 'user', 1, 9, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(58, 'user', 1, 10, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(59, 'user', 1, 11, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(60, 'user', 1, 12, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(61, 'user', 1, 13, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(62, 'user', 1, 14, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(63, 'user', 1, 15, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(64, 'user', 1, 16, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(65, 'user', 1, 17, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(66, 'user', 1, 18, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(67, 'user', 1, 19, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(68, 'user', 1, 20, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(69, 'user', 1, 21, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(70, 'user', 1, 22, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(71, 'user', 1, 23, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(72, 'user', 1, 24, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(73, 'user', 1, 25, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(74, 'user', 1, 26, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(75, 'user', 1, 27, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(76, 'user', 1, 28, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(77, 'user', 1, 29, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(78, 'user', 1, 30, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(79, 'user', 1, 31, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(80, 'user', 1, 32, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(81, 'user', 1, 33, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(82, 'user', 1, 34, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(83, 'user', 1, 35, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(84, 'user', 1, 36, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(85, 'user', 1, 37, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(86, 'user', 1, 38, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(87, 'user', 1, 39, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(88, 'user', 1, 40, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(89, 'user', 1, 41, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(90, 'user', 1, 42, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(91, 'user', 1, 43, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(92, 'user', 1, 44, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(93, 'user', 1, 45, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(94, 'user', 1, 46, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(95, 'user', 1, 47, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(96, 'user', 1, 48, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 11:52:37'),
(100, 'user', 1, 1, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(101, 'user', 1, 2, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(102, 'user', 1, 3, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(103, 'user', 1, 4, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(104, 'user', 1, 5, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(105, 'user', 1, 6, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(106, 'user', 1, 7, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(107, 'user', 1, 8, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(108, 'user', 1, 9, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(109, 'user', 1, 10, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(110, 'user', 1, 11, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(111, 'user', 1, 12, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(112, 'user', 1, 13, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(113, 'user', 1, 14, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(114, 'user', 1, 15, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:09'),
(115, 'user', 1, 16, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(116, 'user', 1, 17, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(117, 'user', 1, 18, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(118, 'user', 1, 19, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10');
INSERT INTO `permission_audit_log` (`log_id`, `entity_type`, `entity_id`, `feature_id`, `old_values`, `new_values`, `action`, `changed_by`, `ip_address`, `user_agent`, `changed_at`) VALUES
(119, 'user', 1, 20, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": true, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(120, 'user', 1, 21, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": true, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(121, 'user', 1, 22, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(122, 'user', 1, 23, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(123, 'user', 1, 24, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(124, 'user', 1, 25, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(125, 'user', 1, 26, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(126, 'user', 1, 27, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(127, 'user', 1, 28, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(128, 'user', 1, 29, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(129, 'user', 1, 30, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(130, 'user', 1, 31, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(131, 'user', 1, 32, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(132, 'user', 1, 33, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(133, 'user', 1, 34, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(134, 'user', 1, 35, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(135, 'user', 1, 36, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(136, 'user', 1, 37, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(137, 'user', 1, 38, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(138, 'user', 1, 39, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(139, 'user', 1, 40, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(140, 'user', 1, 41, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(141, 'user', 1, 42, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(142, 'user', 1, 43, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(143, 'user', 1, 44, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(144, 'user', 1, 45, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(145, 'user', 1, 46, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(146, 'user', 1, 47, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": true, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(147, 'user', 1, 48, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": true, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:44:10'),
(148, 'user', 1, 1, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(149, 'user', 1, 2, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(150, 'user', 1, 3, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(151, 'user', 1, 4, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(152, 'user', 1, 5, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(153, 'user', 1, 6, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(154, 'user', 1, 7, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(155, 'user', 1, 8, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(156, 'user', 1, 9, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(157, 'user', 1, 10, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(158, 'user', 1, 11, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(159, 'user', 1, 12, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(160, 'user', 1, 13, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(161, 'user', 1, 14, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(162, 'user', 1, 15, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(163, 'user', 1, 16, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(164, 'user', 1, 17, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(165, 'user', 1, 18, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(166, 'user', 1, 19, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(167, 'user', 1, 20, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": true, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": true, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(168, 'user', 1, 21, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": true, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": true, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(169, 'user', 1, 22, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(170, 'user', 1, 23, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(171, 'user', 1, 24, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(172, 'user', 1, 25, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(173, 'user', 1, 26, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(174, 'user', 1, 27, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(175, 'user', 1, 28, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(176, 'user', 1, 29, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(177, 'user', 1, 30, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(178, 'user', 1, 31, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(179, 'user', 1, 32, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(180, 'user', 1, 33, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(181, 'user', 1, 34, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(182, 'user', 1, 35, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(183, 'user', 1, 36, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(184, 'user', 1, 37, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(185, 'user', 1, 38, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(186, 'user', 1, 39, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(187, 'user', 1, 40, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(188, 'user', 1, 41, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(189, 'user', 1, 42, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(190, 'user', 1, 43, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:13'),
(191, 'user', 1, 44, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:14'),
(192, 'user', 1, 45, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:14'),
(193, 'user', 1, 46, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": false, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:14'),
(194, 'user', 1, 47, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": true, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": true, \"can_delete\": true, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:14'),
(195, 'user', 1, 48, '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": true, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', '{\"can_add\": true, \"can_edit\": true, \"can_view\": true, \"can_print\": true, \"can_delete\": false, \"can_export\": false, \"can_approve\": false}', 'updated', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-03-26 12:45:14');

-- --------------------------------------------------------

--
-- Table structure for table `permission_features`
--

CREATE TABLE IF NOT EXISTS `permission_features` (
  `feature_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `module_id` bigint UNSIGNED NOT NULL,
  `feature_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `feature_slug` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `feature_description` text COLLATE utf8mb4_unicode_ci,
  `default_view` tinyint(1) NOT NULL DEFAULT '0',
  `default_add` tinyint(1) NOT NULL DEFAULT '0',
  `default_edit` tinyint(1) NOT NULL DEFAULT '0',
  `default_delete` tinyint(1) NOT NULL DEFAULT '0',
  `default_export` tinyint(1) NOT NULL DEFAULT '0',
  `default_print` tinyint(1) NOT NULL DEFAULT '0',
  `default_approve` tinyint(1) NOT NULL DEFAULT '0',
  `is_restricted` tinyint(1) NOT NULL DEFAULT '0',
  `requires_approval` tinyint(1) NOT NULL DEFAULT '0',
  `display_order` smallint UNSIGNED NOT NULL DEFAULT '0',
  `is_active` tinyint(1) NOT NULL DEFAULT '1',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`feature_id`),
  UNIQUE KEY `uq_feature_slug` (`feature_slug`),
  KEY `idx_feature_module` (`module_id`),
  KEY `idx_feature_active` (`is_active`)
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `permission_features`
--

INSERT INTO `permission_features` (`feature_id`, `module_id`, `feature_name`, `feature_slug`, `feature_description`, `default_view`, `default_add`, `default_edit`, `default_delete`, `default_export`, `default_print`, `default_approve`, `is_restricted`, `requires_approval`, `display_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 1, 'General Ledger', 'general-ledger', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(2, 1, 'Account Types', 'account-types', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(3, 1, 'Departments', 'departments', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(4, 1, 'Cashbooks', 'cashbooks', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(5, 1, 'Sub Accounts', 'sub-accounts', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(6, 1, 'Multi Currency', 'multi-currency', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(7, 1, 'Taxes', 'taxes', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(8, 1, 'Suppliers', 'suppliers', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(9, 1, 'Clients', 'clients', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(10, 1, 'Lawyers', 'lawyers', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(11, 1, 'Cases', 'cases', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(12, 1, 'Court Areas', 'court-areas', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(13, 1, 'Court Types', 'court-types', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(14, 1, 'Judges', 'judges', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(15, 1, 'Judgements', 'judgements', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(16, 1, 'Tariffs', 'tariffs', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(17, 2, 'Assignments', 'assignments', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(18, 2, 'Diary', 'diary', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(19, 2, 'Court Filings', 'court-filings', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(20, 2, 'Client Invoices', 'client-invoices', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(21, 2, 'Supplier Invoices', 'supplier-invoices', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(22, 2, 'Cashbook', 'cashbook', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(23, 2, 'Journals', 'journals', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(24, 3, 'Cashbook Reports', 'cashbook-reports', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(25, 3, 'Client Statements', 'client-statements', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(26, 3, 'Case Status', 'case-status', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(27, 3, 'Court Filings Reports', 'court-filings-reports', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(28, 3, 'Lawyer Statements', 'lawyer-statements', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(29, 3, 'Supplier Statements', 'supplier-statements', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(30, 3, 'Tax Reports', 'tax-reports', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(31, 3, 'Fee Collection', 'fee-collection', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(32, 3, 'Outstanding Fees', 'outstanding-fees', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(33, 3, 'Total Fees', 'total-fees', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(34, 3, 'Income Statements', 'income-statements', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(35, 3, 'Balance Sheet', 'balance-sheet', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(36, 3, 'Trial Balance', 'trial-balance', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(37, 3, 'Journals Reports', 'journals-reports', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(38, 3, 'General Ledger Reports', 'general-ledger-reports', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(39, 3, 'Chart Of Accounts', 'chart-of-accounts', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(40, 4, 'Chat View', 'chat-view', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(41, 4, 'Chat Send', 'chat-send', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(42, 4, 'Chat Manage', 'chat-manage', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(43, 5, 'Lexa AI Assistant', 'lexa-ai', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(44, 6, 'User Management', 'user-management', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(45, 6, 'System Settings', 'system-settings', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(46, 6, 'Approvals', 'approvals', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(47, 2, 'Client Quotations', 'client-quotations', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 1, '2026-03-26 13:02:47', '2026-03-26 13:02:47'),
(48, 2, 'Client Receipts', 'client-receipts', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, '2026-03-26 13:02:47', '2026-03-26 13:02:47');

-- --------------------------------------------------------

--
-- Table structure for table `permission_modules`
--

CREATE TABLE IF NOT EXISTS `permission_modules` (
  `module_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `module_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `module_slug` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `module_description` text COLLATE utf8mb4_unicode_ci,
  `module_icon` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `parent_module_id` bigint UNSIGNED DEFAULT NULL,
  `display_order` smallint UNSIGNED NOT NULL DEFAULT '0',
  `is_active` tinyint(1) NOT NULL DEFAULT '1',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`module_id`),
  UNIQUE KEY `uq_module_slug` (`module_slug`),
  KEY `idx_module_parent` (`parent_module_id`),
  KEY `idx_module_active` (`is_active`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `permission_modules`
--

INSERT INTO `permission_modules` (`module_id`, `module_name`, `module_slug`, `module_description`, `module_icon`, `parent_module_id`, `display_order`, `is_active`, `created_at`, `updated_at`) VALUES
(1, 'Edit Modules', 'edit-modules', NULL, NULL, NULL, 1, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(2, 'Processing Modules', 'processing-modules', NULL, NULL, NULL, 2, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(3, 'Reports Modules', 'reports-modules', NULL, NULL, NULL, 3, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(4, 'Chat Room', 'chat-room', NULL, NULL, NULL, 4, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(5, 'Lexa AI Assistant', 'lexa-ai', NULL, NULL, NULL, 5, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47'),
(6, 'Administration', 'administration', NULL, NULL, NULL, 6, 1, '2026-02-26 11:55:47', '2026-02-26 11:55:47');

-- --------------------------------------------------------

--
-- Table structure for table `sessions`
--

CREATE TABLE IF NOT EXISTS `sessions` (
  `session_token` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
  `user_id` bigint UNSIGNED NOT NULL,
  `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `user_agent` text COLLATE utf8mb4_unicode_ci,
  `login_time` timestamp NULL DEFAULT NULL,
  `last_activity` timestamp NULL DEFAULT NULL,
  `expires_at` timestamp NULL DEFAULT NULL,
  `status` enum('active','inactive') COLLATE utf8mb4_unicode_ci DEFAULT 'active',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`session_token`),
  KEY `sessions_user_id_foreign` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `sessions`
--

INSERT INTO `sessions` (`session_token`, `user_id`, `ip_address`, `user_agent`, `login_time`, `last_activity`, `expires_at`, `status`, `created_at`, `updated_at`) VALUES
('122sDwtHDypi6myU8xDiHoDOAIUOuK6ka1p3HbIYIEmAL1xU6VJ3iFOxBHnuWtMh', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-07 05:43:30', '2026-04-07 05:43:31', '2026-04-07 07:43:30', 'active', '2026-04-07 05:43:30', '2026-04-07 05:43:31'),
('1lENULLogtOHKMyek5yFlsw9inarCV6GE7OATz9eBPgSvO8GC0E8UGapo1XVCW2T', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-07 06:13:24', '2026-04-07 07:00:26', '2026-04-07 08:13:24', 'active', '2026-04-07 06:13:24', '2026-04-07 07:00:26'),
('964d7x38NHOlEIDltU5P4jkWVcRXYeOXGmLQbm1JAO8eyZMeKaI5okMtv6apLWkw', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-07 05:29:05', '2026-04-07 05:29:05', '2026-04-07 07:29:05', 'active', '2026-04-07 05:29:05', '2026-04-07 05:29:05'),
('kCb2w7DPCcnbj55FFilnbbTbrEpstgfNSp2eogLY4xx9hYzgGoL3WWvQ86qvwlld', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-02 11:10:52', '2026-04-02 13:08:27', '2026-04-02 13:10:52', 'active', '2026-04-02 11:10:52', '2026-04-02 13:08:27'),
('XaGHcq9xYShxNq4H5QvqpFcAFVbYMvTPCXNvKIv9QVNm18RMC1D7ylI6wTurXOhq', 1, '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-06 06:20:10', '2026-04-06 06:20:12', '2026-04-06 08:20:10', 'active', '2026-04-06 06:20:10', '2026-04-06 06:20:12');

-- --------------------------------------------------------

--
-- Table structure for table `suppliers`
--

CREATE TABLE IF NOT EXISTS `suppliers` (
  `supplier_id` int NOT NULL AUTO_INCREMENT,
  `supplier_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `supplier_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `full_name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `contact_person` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `contact_1` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `contact_2` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `email` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `address` text COLLATE utf8mb4_unicode_ci,
  `category_id` int DEFAULT NULL,
  `age_analysis_id` int DEFAULT NULL,
  `area_id` int DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`supplier_id`),
  UNIQUE KEY `supplier_code` (`supplier_code`),
  KEY `fk_supplier_category` (`category_id`),
  KEY `fk_supplier_ageing` (`age_analysis_id`),
  KEY `fk_supplier_area` (`area_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `suppliers`
--

INSERT INTO `suppliers` (`supplier_id`, `supplier_code`, `supplier_name`, `full_name`, `contact_person`, `contact_1`, `contact_2`, `email`, `address`, `category_id`, `age_analysis_id`, `area_id`, `created_at`, `updated_at`) VALUES
(1, 'SUP-001', 'Alpha Supplies', 'Alpha Supplies Pvt Ltd', 'John Moyo', '+263771000001', NULL, 'info@alphasupplies.com', '12 Samora Machel Ave, Harare', 1, NULL, 1, '2026-01-07 09:06:37', '2026-01-07 09:06:37'),
(2, 'SUP-002', 'Beta Traders', 'Beta Traders Zimbabwe', 'Sarah Dube', '+263771000002', '+263242700002', 'sales@betatraders.co.zw', '45 Jason Moyo St, Bulawayo', 2, NULL, 2, '2026-01-07 09:06:37', '2026-01-07 09:06:37'),
(3, 'SUP-003', 'Gamma Industries', 'Gamma Industries Ltd', 'Tawanda Chirwa', '+263771000003', NULL, 'contact@gamma.co.zw', '7 Coventry Rd, Workington', 1, NULL, 3, '2026-01-07 09:06:37', '2026-01-07 09:06:37'),
(4, 'SUP-004', 'Delta Logistics', 'Delta Logistics Services', 'Nomsa Ncube', '+263771000004', NULL, 'admin@deltalogistics.com', '88 Airport Rd, Harare', 3, NULL, 1, '2026-01-07 09:06:37', '2026-01-07 09:06:37'),
(5, 'SUP-005', 'Epsilon Holdings', 'Epsilon Holdings Africa', 'Brian Zhou', '+263771000005', '+263242700005', 'info@epsilon.africa', '102 Enterprise Rd, Harare', 2, NULL, 1, '2026-01-07 09:06:37', '2026-01-07 09:06:37'),
(6, 'SUP-006', 'Zeta Chemicals', 'Zeta Chemicals Pvt Ltd', 'Farai Mutasa', '+263771000006', NULL, 'support@zetachem.co.zw', '15 Tilbury Rd, Willowvale', 4, NULL, 3, '2026-01-07 09:06:37', '2026-01-07 09:06:37'),
(7, 'SUP-007', 'Eta Engineering', 'Eta Engineering Services', 'Clive Banda', '+263771000007', NULL, 'projects@etaeng.co.zw', '22 Seke Rd, Harare', 3, NULL, 2, '2026-01-07 09:06:37', '2026-01-07 09:06:37'),
(8, 'SUP-008', 'Theta Foods', 'Theta Foods & Catering', 'Rudo Mahachi', '+263771000008', '+263242700008', 'orders@thetafoods.co.zw', '9 Chinhoyi St, Gweru', 5, NULL, 4, '2026-01-07 09:06:37', '2026-01-07 09:06:37'),
(9, 'SUP-009', 'Iota Technologies', 'Iota Technologies Zimbabwe', 'Kudzai Marume', '+263771000009', NULL, 'hello@iotatech.co.zw', '60 Borrowdale Rd, Harare', 6, NULL, 1, '2026-01-07 09:06:37', '2026-01-07 09:06:37'),
(10, 'SUP-010', 'Kappa Medical', 'Kappa Medical Supplies', 'Dr. L. Nyathi', '+263771000010', NULL, 'procurement@kappamed.co.zw', '14 Hospital Rd, Mutare', 7, NULL, 5, '2026-01-07 09:06:37', '2026-01-07 09:06:37');

-- --------------------------------------------------------

--
-- Table structure for table `supplier_ageing_analysis`
--

CREATE TABLE IF NOT EXISTS `supplier_ageing_analysis` (
  `id` int NOT NULL AUTO_INCREMENT,
  `age_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `ageing_group` enum('monthly','daily','custom') COLLATE utf8mb4_unicode_ci NOT NULL,
  `interval_type` enum('statement_date','invoice_date') COLLATE utf8mb4_unicode_ci NOT NULL,
  `interval_value` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `custom_age_groups` text COLLATE utf8mb4_unicode_ci,
  `custom_intervals` text COLLATE utf8mb4_unicode_ci,
  `actions` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `supplier_areas`
--

CREATE TABLE IF NOT EXISTS `supplier_areas` (
  `area_id` int NOT NULL AUTO_INCREMENT,
  `area_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `area_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `city` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `country` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `specific_location` text COLLATE utf8mb4_unicode_ci,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`area_id`),
  UNIQUE KEY `area_code` (`area_code`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `supplier_areas`
--

INSERT INTO `supplier_areas` (`area_id`, `area_code`, `area_name`, `city`, `country`, `specific_location`, `created_at`) VALUES
(1, 'AC123', 'Downtown', 'London', 'UK', 'Warehouse 1', '2026-01-03 10:04:16');

-- --------------------------------------------------------

--
-- Table structure for table `supplier_categories`
--

CREATE TABLE IF NOT EXISTS `supplier_categories` (
  `category_id` int NOT NULL AUTO_INCREMENT,
  `category_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `category_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`category_id`),
  UNIQUE KEY `category_code` (`category_code`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `supplier_categories`
--

INSERT INTO `supplier_categories` (`category_id`, `category_code`, `category_name`, `description`, `created_at`, `updated_at`) VALUES
(1, 'SUPCT001', 'OFFICE SUPPLIES', 'STATIONERY', '2026-01-14 14:24:54', '2026-01-15 06:35:02');

-- --------------------------------------------------------

--
-- Table structure for table `supplier_invoices`
--

CREATE TABLE IF NOT EXISTS `supplier_invoices` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `supplier_id` bigint UNSIGNED NOT NULL,
  `invoice_number` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `invoice_date` date NOT NULL,
  `reference_number` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `contact_person` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `narration` text COLLATE utf8mb4_unicode_ci,
  `reference_det` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `gl_account` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `tax_id` bigint UNSIGNED NOT NULL,
  `discount` decimal(5,2) NOT NULL DEFAULT '0.00',
  `price` decimal(15,2) NOT NULL,
  `quantity` decimal(10,2) NOT NULL DEFAULT '1.00',
  `currency_id` bigint UNSIGNED NOT NULL,
  `operation_cost` decimal(15,2) NOT NULL DEFAULT '0.00',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `invoice_number` (`invoice_number`),
  KEY `idx_supplier_invoices_supplier_id` (`supplier_id`),
  KEY `idx_supplier_invoices_invoice_date` (`invoice_date`),
  KEY `idx_supplier_invoices_invoice_number` (`invoice_number`),
  KEY `idx_supplier_invoices_gl_account` (`gl_account`),
  KEY `idx_supplier_invoices_created_at` (`created_at`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `supplier_invoices`
--

INSERT INTO `supplier_invoices` (`id`, `supplier_id`, `invoice_number`, `invoice_date`, `reference_number`, `description`, `contact_person`, `narration`, `reference_det`, `gl_account`, `tax_id`, `discount`, `price`, `quantity`, `currency_id`, `operation_cost`, `created_at`, `updated_at`) VALUES
(4, 1, 'SUP-INV-20260327-001', '2026-03-07', 'ALPHA-INV-1001', 'Office stationery and printing supplies', 'John Moyo', 'Monthly office consumables restock.', 'Stationery batch Jan', '5100', 12, 0.00, 120.00, 3.00, 1, 0.00, '2026-03-27 06:19:47', '2026-03-27 06:19:47'),
(5, 2, 'SUP-INV-20260327-002', '2026-03-15', 'BETA-INV-2054', 'IT hardware and structured cabling', 'Sarah Dube', 'Replacement switches and cabling work.', 'IT refresh phase 1', '5100', 12, 5.00, 250.00, 2.00, 1, 25.00, '2026-03-27 06:19:47', '2026-03-27 06:19:47'),
(6, 3, 'SUP-INV-20260327-003', '2026-03-22', 'GAMMA-INV-0078', 'Facility maintenance and security upgrades', 'Tawanda Chirwa', 'Quarterly facility preventive maintenance.', 'Maintenance Q1', '5100', 12, 0.00, 180.00, 1.00, 1, 10.00, '2026-03-27 06:19:47', '2026-03-27 06:19:47');

-- --------------------------------------------------------

--
-- Table structure for table `supplier_invoice_lines`
--

CREATE TABLE IF NOT EXISTS `supplier_invoice_lines` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `invoice_id` bigint UNSIGNED NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `gl_account_id` bigint UNSIGNED DEFAULT NULL,
  `tax_id` bigint UNSIGNED DEFAULT NULL,
  `discount_pct` decimal(5,2) NOT NULL DEFAULT '0.00',
  `unit_price` decimal(15,2) NOT NULL DEFAULT '0.00',
  `quantity` decimal(10,2) NOT NULL DEFAULT '1.00',
  `tax_rate` decimal(5,2) NOT NULL DEFAULT '0.00',
  `tax_amount` decimal(15,2) NOT NULL DEFAULT '0.00',
  `line_total` decimal(15,2) NOT NULL DEFAULT '0.00',
  `currency_id` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `supplier_invoice_lines_invoice_id_index` (`invoice_id`),
  KEY `supplier_invoice_lines_gl_account_id_index` (`gl_account_id`),
  KEY `supplier_invoice_lines_tax_id_index` (`tax_id`),
  KEY `supplier_invoice_lines_currency_id_index` (`currency_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `supplier_invoice_lines`
--

INSERT INTO `supplier_invoice_lines` (`id`, `invoice_id`, `description`, `gl_account_id`, `tax_id`, `discount_pct`, `unit_price`, `quantity`, `tax_rate`, `tax_amount`, `line_total`, `currency_id`, `created_at`, `updated_at`) VALUES
(1, 4, 'Office stationery and printing supplies', NULL, 12, 0.00, 120.00, 3.00, 15.00, 54.00, 414.00, 1, '2026-03-27 06:19:47', '2026-03-27 06:19:47'),
(2, 5, 'IT hardware and structured cabling', NULL, 12, 5.00, 250.00, 2.00, 15.00, 71.25, 571.25, 1, '2026-03-27 06:19:47', '2026-03-27 06:19:47'),
(3, 6, 'Facility maintenance and security upgrades', NULL, 12, 0.00, 180.00, 1.00, 15.00, 27.00, 217.00, 1, '2026-03-27 06:19:47', '2026-03-27 06:19:47');

-- --------------------------------------------------------

--
-- Table structure for table `supplier_journals`
--

CREATE TABLE IF NOT EXISTS `supplier_journals` (
  `id` int NOT NULL AUTO_INCREMENT,
  `date` date NOT NULL,
  `supplier_code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `supplier_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `narration` text COLLATE utf8mb4_unicode_ci,
  `dr` decimal(15,2) DEFAULT '0.00',
  `cr` decimal(15,2) DEFAULT '0.00',
  `status` enum('pending','approved','rejected','reversed') COLLATE utf8mb4_unicode_ci DEFAULT 'pending',
  `supplier_id` int DEFAULT NULL,
  `transaction_code` varchar(50) COLLATE utf8mb4_unicode_ci 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 `transaction_code` (`transaction_code`),
  KEY `idx_date` (`date`),
  KEY `idx_supplier_code` (`supplier_code`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `supplier_journals`
--

INSERT INTO `supplier_journals` (`id`, `date`, `supplier_code`, `supplier_name`, `narration`, `dr`, `cr`, `status`, `supplier_id`, `transaction_code`, `created_at`, `updated_at`) VALUES
(1, '2026-01-02', 'SUP-001', 'Alpha Supplies', 'Office stationery and supplies - January', 320.00, 320.00, 'approved', 1, 'SJ-2026-0001', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(2, '2026-01-05', 'SUP-002', 'Beta Traders', 'Monthly office rent payment - January 2026', 2800.00, 2800.00, 'approved', 2, 'SJ-2026-0002', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(3, '2026-01-07', 'SUP-003', 'Gamma Industries', 'Electricity bill - January office consumption', 415.00, 415.00, 'approved', 3, 'SJ-2026-0003', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(4, '2026-01-09', 'SUP-004', 'Delta Logistics', 'Courier and document delivery services - January', 190.00, 190.00, 'approved', 4, 'SJ-2026-0004', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(5, '2026-01-12', 'SUP-005', 'Epsilon Holdings', 'Fibre internet and VOIP line - January subscription', 560.00, 560.00, 'approved', 5, 'SJ-2026-0005', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(6, '2026-01-15', 'SUP-006', 'Zeta Chemicals', 'Office cleaning supplies and consumables', 145.00, 145.00, 'approved', 6, 'SJ-2026-0006', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(7, '2026-01-19', 'SUP-007', 'Eta Engineering', 'IT support and equipment maintenance - January', 880.00, 880.00, 'approved', 7, 'SJ-2026-0007', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(8, '2026-01-22', 'SUP-008', 'Theta Foods', 'Staff catering and boardroom refreshments', 230.00, 230.00, 'approved', 8, 'SJ-2026-0008', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(9, '2026-01-26', 'SUP-009', 'Iota Technologies', 'Practice management software licence - annual renewal', 1200.00, 1200.00, 'approved', 9, 'SJ-2026-0009', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(10, '2026-01-29', 'SUP-010', 'Kappa Medical', 'First aid and occupational health supplies - office compliance', 175.00, 175.00, 'approved', 10, 'SJ-2026-0010', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(11, '2026-02-02', 'SUP-001', 'Alpha Supplies', 'Printer cartridges and paper stock - February', 290.00, 290.00, 'approved', 1, 'SJ-2026-0011', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(12, '2026-02-05', 'SUP-002', 'Beta Traders', 'Monthly office rent payment - February 2026', 2800.00, 2800.00, 'approved', 2, 'SJ-2026-0012', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(13, '2026-02-08', 'SUP-003', 'Gamma Industries', 'Water and sewerage bill - February', 185.00, 185.00, 'approved', 3, 'SJ-2026-0013', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(14, '2026-02-11', 'SUP-004', 'Delta Logistics', 'Sheriff process serving and document delivery - February', 340.00, 340.00, 'approved', 4, 'SJ-2026-0014', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(15, '2026-02-14', 'SUP-005', 'Epsilon Holdings', 'Backup LTE and mobile data - February', 210.00, 210.00, 'approved', 5, 'SJ-2026-0015', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(16, '2026-02-18', 'SUP-006', 'Zeta Chemicals', 'Refuse removal and municipal rates - February', 320.00, 320.00, 'approved', 6, 'SJ-2026-0016', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(17, '2026-02-21', 'SUP-007', 'Eta Engineering', 'Cloud backup storage and server maintenance', 650.00, 650.00, 'approved', 7, 'SJ-2026-0017', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(18, '2026-02-25', 'SUP-008', 'Theta Foods', 'Boardroom hire for client consultations - February', 480.00, 480.00, 'approved', 8, 'SJ-2026-0018', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(19, '2026-02-27', 'SUP-009', 'Iota Technologies', 'Legal research platform subscription - February', 390.00, 390.00, 'approved', 9, 'SJ-2026-0019', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(20, '2026-03-03', 'SUP-010', 'Kappa Medical', 'Professional indemnity insurance premium - March instalment', 1450.00, 1450.00, 'approved', 10, 'SJ-2026-0020', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(21, '2026-03-06', 'SUP-001', 'Alpha Supplies', 'Office stationery restock - March', 275.00, 275.00, 'approved', 1, 'SJ-2026-0021', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(22, '2026-03-09', 'SUP-002', 'Beta Traders', 'Monthly office rent payment - March 2026', 2800.00, 2800.00, 'approved', 2, 'SJ-2026-0022', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(23, '2026-03-14', 'SUP-003', 'Gamma Industries', 'Electricity bill - March and solar generator levy', 490.00, 490.00, 'approved', 3, 'SJ-2026-0023', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(24, '2026-03-20', 'SUP-007', 'Eta Engineering', 'MS Office and productivity suite licences - annual renewal', 780.00, 780.00, 'approved', 7, 'SJ-2026-0024', '2026-04-01 10:53:15', '2026-04-01 10:53:15'),
(25, '2026-03-26', 'SUP-009', 'Iota Technologies', 'Law Society and Bar Council subscription - annual membership', 960.00, 960.00, 'approved', 9, 'SJ-2026-0025', '2026-04-01 10:53:15', '2026-04-01 10:53:15');

-- --------------------------------------------------------

--
-- Table structure for table `system_settings`
--

CREATE TABLE IF NOT EXISTS `system_settings` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `default_currency_id` bigint UNSIGNED DEFAULT NULL,
  `default_language` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'en',
  `timezone` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'UTC',
  `date_format` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'Y-m-d',
  `number_format` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'en',
  `email_notifications` tinyint(1) NOT NULL DEFAULT '1',
  `auto_backup_frequency` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'weekly',
  `case_number_prefix` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'CASE',
  `invoice_number_prefix` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'INV',
  `quotation_number_prefix` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'QUO',
  `receipt_number_prefix` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'REC',
  `matter_number_prefix` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `matter_number_format` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `matter_number_padding` int UNSIGNED DEFAULT NULL,
  `default_case_status` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'Open',
  `default_payment_terms` int NOT NULL DEFAULT '30',
  `tax_calculation_method` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'exclusive',
  `file_upload_size_limit` int NOT NULL DEFAULT '10',
  `session_timeout` int NOT NULL DEFAULT '60',
  `maintenance_mode` tinyint(1) NOT NULL DEFAULT '0',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_system_settings_currency` (`default_currency_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `system_settings`
--

INSERT INTO `system_settings` (`id`, `default_currency_id`, `default_language`, `timezone`, `date_format`, `number_format`, `email_notifications`, `auto_backup_frequency`, `case_number_prefix`, `invoice_number_prefix`, `quotation_number_prefix`, `receipt_number_prefix`, `matter_number_prefix`, `matter_number_format`, `matter_number_padding`, `default_case_status`, `default_payment_terms`, `tax_calculation_method`, `file_upload_size_limit`, `session_timeout`, `maintenance_mode`, `created_at`, `updated_at`) VALUES
(1, NULL, 'en', 'UTC', 'Y-m-d', 'en', 1, 'weekly', 'CASE', 'INV', 'QUO', 'REC', NULL, NULL, NULL, 'Open', 30, 'exclusive', 10, 60, 0, NULL, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `tariffs`
--

CREATE TABLE IF NOT EXISTS `tariffs` (
  `tariff_id` int NOT NULL AUTO_INCREMENT,
  `lawyer_id` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'FK → lawyers.lawyer_id',
  `tier_id` int DEFAULT NULL COMMENT 'FK → user_tiers.tier_id',
  `group_id` int DEFAULT NULL COMMENT 'FK → lawyer_groups.group_id',
  `service_code` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Unique short code e.g. CIV-DRAFT-JR. Used by application to fetch the correct tariff.',
  `service_name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
  `service_category` enum('legal_advice','drafting','court_appearance','research','correspondence','filing','consultation','negotiation','conveyancing','other') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'other',
  `billing_method` enum('FIXED_FEE','HOURLY','PER_APPEARANCE','PER_STAGE','RETAINER_PLUS','CONTINGENCY','SUBSCRIPTION') COLLATE utf8mb4_unicode_ci NOT NULL,
  `rate_type` enum('PER_HOUR','PER_CASE','PER_DOCUMENT','PER_APPEARANCE','PER_CONSULTATION','PER_MONTH','PERCENTAGE') COLLATE utf8mb4_unicode_ci NOT NULL,
  `rate_amount` decimal(12,2) NOT NULL COMMENT 'Hourly rate (HOURLY) or flat fee (FIXED_FEE)',
  `currency_id` bigint UNSIGNED NOT NULL DEFAULT '1' COMMENT 'FK → currencies.currency_id',
  `billing_increment` int NOT NULL DEFAULT '60' COMMENT 'Rounding unit in minutes: 6, 15, 30, or 60',
  `minimum_billable_mins` int NOT NULL DEFAULT '6' COMMENT 'Smallest unit that can be charged',
  `minimum_fee` decimal(12,2) DEFAULT NULL,
  `maximum_fee` decimal(12,2) DEFAULT NULL,
  `retainer_required` tinyint(1) NOT NULL DEFAULT '0',
  `retainer_amount` decimal(12,2) DEFAULT NULL,
  `court_level` enum('MAGISTRATES','HIGH_COURT','SUPREME_COURT','CONSTITUTIONAL_COURT') COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `complexity_level` enum('LOW','MEDIUM','HIGH') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'MEDIUM',
  `tax_inclusive` tinyint(1) NOT NULL DEFAULT '0',
  `vat_rate` decimal(5,2) NOT NULL DEFAULT '0.00',
  `effective_from` date NOT NULL,
  `effective_to` date DEFAULT NULL,
  `is_active` tinyint(1) NOT NULL DEFAULT '1',
  `deleted_at` timestamp NULL DEFAULT NULL COMMENT 'Soft-delete only. Hard-delete breaks invoice history.',
  `description` text COLLATE utf8mb4_unicode_ci,
  `notes` text COLLATE utf8mb4_unicode_ci,
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`tariff_id`),
  UNIQUE KEY `uq_service_code` (`service_code`),
  KEY `idx_tariff_lawyer` (`lawyer_id`),
  KEY `idx_tariff_tier` (`tier_id`),
  KEY `idx_tariff_group` (`group_id`),
  KEY `idx_tariff_method` (`billing_method`),
  KEY `idx_tariff_active` (`is_active`,`effective_from`,`effective_to`)
) ;

--
-- Dumping data for table `tariffs`
--

INSERT INTO `tariffs` (`tariff_id`, `lawyer_id`, `tier_id`, `group_id`, `service_code`, `service_name`, `service_category`, `billing_method`, `rate_type`, `rate_amount`, `currency_id`, `billing_increment`, `minimum_billable_mins`, `minimum_fee`, `maximum_fee`, `retainer_required`, `retainer_amount`, `court_level`, `complexity_level`, `tax_inclusive`, `vat_rate`, `effective_from`, `effective_to`, `is_active`, `deleted_at`, `description`, `notes`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES
(1, '1', 1, 1, 'CIV-DRAFT-HR', 'Contract Drafting – Hourly', 'drafting', 'HOURLY', 'PER_HOUR', 75.00, 1, 15, 6, 37.50, NULL, 0, NULL, NULL, 'MEDIUM', 0, 15.00, '2026-01-01', NULL, 1, NULL, 'Hourly rate for commercial contract drafting and review.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(2, '1', 1, 1, 'CIV-DRAFT-FIXED', 'Contract Drafting – Fixed Fee', 'drafting', 'FIXED_FEE', 'PER_CASE', 300.00, 1, 0, 0, 300.00, 300.00, 0, NULL, NULL, 'LOW', 0, 15.00, '2026-01-01', NULL, 1, NULL, 'Fixed fee for standard NDA or simple commercial agreement.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(3, '1', 1, 1, 'CIV-RESEARCH-HR', 'Legal Research – Hourly', 'research', 'HOURLY', 'PER_HOUR', 60.00, 1, 15, 6, 30.00, NULL, 0, NULL, NULL, 'LOW', 0, 15.00, '2026-01-01', NULL, 1, NULL, 'Case law research, statute review and memoranda.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(4, '1', 1, 1, 'CIV-CONSULT-HR', 'Civil Law Consultation – Hourly', 'consultation', 'HOURLY', 'PER_HOUR', 80.00, 1, 30, 30, 40.00, NULL, 0, NULL, NULL, 'MEDIUM', 0, 15.00, '2026-01-01', NULL, 1, NULL, 'Client consultation on civil matters.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(5, '2', 2, 3, 'FAM-DIV-FIXED', 'Divorce Proceedings – Full Service', 'filing', 'FIXED_FEE', 'PER_CASE', 1200.00, 1, 0, 0, 1200.00, 1200.00, 1, 300.00, 'HIGH_COURT', 'HIGH', 0, 15.00, '2026-01-01', NULL, 1, NULL, 'Uncontested divorce including summons, pleadings, settlement agreement and up to 3 court appearances.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(6, '2', 2, 3, 'FAM-CUSTODY-FIXED', 'Child Custody Application – Fixed', 'filing', 'FIXED_FEE', 'PER_CASE', 800.00, 1, 0, 0, 800.00, 800.00, 1, 200.00, 'HIGH_COURT', 'HIGH', 0, 15.00, '2026-01-01', NULL, 1, NULL, 'Application for custody order including all pleadings and one court appearance.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(7, '2', 2, 3, 'FAM-CONSULT-HR', 'Family Law Consultation – Hourly', 'consultation', 'HOURLY', 'PER_HOUR', 90.00, 1, 30, 30, 45.00, NULL, 0, NULL, NULL, 'MEDIUM', 0, 15.00, '2026-01-01', NULL, 1, NULL, 'Hourly consultation on divorce, custody and maintenance matters.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(8, '2', 2, 3, 'FAM-MAINT-FIXED', 'Maintenance Application – Fixed', 'filing', 'FIXED_FEE', 'PER_CASE', 500.00, 1, 0, 0, 500.00, 500.00, 0, NULL, 'MAGISTRATES', 'MEDIUM', 0, 15.00, '2026-01-01', NULL, 1, NULL, 'Maintenance application in Magistrates Court.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(9, '3', 3, 2, 'CRIM-APPEAR-MAG', 'Criminal Appearance – Magistrates', 'court_appearance', 'FIXED_FEE', 'PER_APPEARANCE', 150.00, 1, 0, 0, 150.00, 150.00, 0, NULL, 'MAGISTRATES', 'HIGH', 0, 0.00, '2026-01-01', NULL, 1, NULL, 'Single appearance in Magistrates Court for criminal matters.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(10, '3', 3, 2, 'CRIM-APPEAR-HC', 'Criminal Appearance – High Court', 'court_appearance', 'FIXED_FEE', 'PER_APPEARANCE', 350.00, 1, 0, 0, 350.00, 350.00, 0, NULL, 'HIGH_COURT', 'HIGH', 0, 0.00, '2026-01-01', NULL, 1, NULL, 'Single appearance in High Court for criminal matters.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(11, '3', 3, 2, 'CRIM-BRIEF-HR', 'Criminal Defence Brief – Hourly', 'legal_advice', 'HOURLY', 'PER_HOUR', 140.00, 1, 15, 6, 70.00, 2800.00, 1, 700.00, 'HIGH_COURT', 'HIGH', 0, 0.00, '2026-01-01', NULL, 1, NULL, 'Full criminal defence at senior associate hourly rate. Covers briefings, preparation and court time.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(12, '3', 3, 2, 'CRIM-BAIL-FIXED', 'Bail Application – Fixed Fee', 'filing', 'FIXED_FEE', 'PER_CASE', 400.00, 1, 0, 0, 400.00, 400.00, 0, NULL, 'MAGISTRATES', 'HIGH', 0, 0.00, '2026-01-01', NULL, 1, NULL, 'Urgent bail application including supporting affidavits.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(13, 'L200861', NULL, 12, 'MIN-COMPLIANCE-HR', 'Mining Compliance Advisory – Hourly', 'legal_advice', 'HOURLY', 'PER_HOUR', 120.00, 1, 15, 6, 60.00, NULL, 0, NULL, NULL, 'HIGH', 0, 15.00, '2026-01-01', NULL, 1, NULL, 'Regulatory compliance on mining rights, ZEMA and EIA matters.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(14, 'L200861', NULL, 12, 'MIN-PERMIT-FIXED', 'Mining Permit Application – Fixed', 'filing', 'FIXED_FEE', 'PER_CASE', 950.00, 1, 0, 0, 950.00, 950.00, 1, 250.00, NULL, 'HIGH', 0, 15.00, '2026-01-01', NULL, 1, NULL, 'End-to-end mining permit: drafting, lodgement and follow-up.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(15, 'L200861', NULL, 12, 'MIN-DISPUTE-HR', 'Mining Dispute Representation – Hourly', 'negotiation', 'HOURLY', 'PER_HOUR', 130.00, 1, 15, 6, 65.00, 3900.00, 1, 500.00, 'HIGH_COURT', 'HIGH', 0, 15.00, '2026-01-01', NULL, 1, NULL, 'Representation in mining boundary and licence disputes.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(16, 'L940147', NULL, 14, 'TAX-ADVISORY-HR', 'Tax Advisory – Hourly', 'legal_advice', 'HOURLY', 'PER_HOUR', 110.00, 1, 15, 6, 55.00, NULL, 0, NULL, NULL, 'MEDIUM', 0, 15.00, '2026-01-01', NULL, 1, NULL, 'Advice on corporate tax, ZIMRA assessments, VAT and transfer pricing.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(17, 'L940147', NULL, 14, 'TAX-OBJECTION-FIXED', 'ZIMRA Objection – Fixed Fee', 'filing', 'FIXED_FEE', 'PER_CASE', 600.00, 1, 0, 0, 600.00, 1800.00, 0, NULL, NULL, 'HIGH', 0, 15.00, '2026-01-01', NULL, 1, NULL, 'Preparation and lodgement of formal ZIMRA objection.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21'),
(18, 'L940147', NULL, 14, 'TAX-AUDIT-HR', 'Tax Audit Representation – Hourly', 'legal_advice', 'HOURLY', 'PER_HOUR', 125.00, 1, 15, 6, 62.50, 2500.00, 1, 400.00, NULL, 'HIGH', 0, 15.00, '2026-01-01', NULL, 1, NULL, 'Client representation during ZIMRA desk or field audit.', NULL, 1, 1, '2026-03-27 05:55:21', '2026-03-27 05:55:21');

-- --------------------------------------------------------

--
-- Table structure for table `tariff_time_logs`
--

CREATE TABLE IF NOT EXISTS `tariff_time_logs` (
  `log_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `lawyer_id` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'FK → lawyers.lawyer_id',
  `matter_id` bigint UNSIGNED DEFAULT NULL COMMENT 'FK → matters.id',
  `case_id` bigint UNSIGNED DEFAULT NULL COMMENT 'FK → cases.id',
  `client_id` bigint UNSIGNED DEFAULT NULL COMMENT 'FK → clients.id',
  `tariff_id` int DEFAULT NULL COMMENT 'FK → tariffs (NULL = ad-hoc rate)',
  `rate_snapshot` decimal(12,2) NOT NULL COMMENT 'IMMUTABLE. Rate copied from tariffs.rate_amount at log creation. Changing the tariff later does not affect this.',
  `currency_id` bigint UNSIGNED DEFAULT NULL,
  `work_date` date NOT NULL,
  `start_time` time DEFAULT NULL,
  `end_time` time DEFAULT NULL,
  `raw_minutes` int NOT NULL COMMENT 'Actual minutes — computed from start/end or entered manually',
  `rounded_minutes` int NOT NULL COMMENT 'raw_minutes rounded UP to the tariff billing_increment',
  `hours_decimal` decimal(8,4) GENERATED ALWAYS AS (round((`rounded_minutes` / 60.0),4)) STORED COMMENT 'Computed column: rounded_minutes ÷ 60',
  `task_type` enum('document_review','client_meeting','court_appearance','research','filing','correspondence','drafting','negotiation','phone_call','travel','administrative','other') COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `internal_notes` text COLLATE utf8mb4_unicode_ci COMMENT 'Never shown to client',
  `is_billable` tinyint(1) NOT NULL DEFAULT '1',
  `is_billed` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'Set 1 when pulled onto a posted invoice line',
  `invoice_line_id` bigint UNSIGNED DEFAULT NULL COMMENT 'Set when billed — FK → client_invoice_lines.id',
  `amount` decimal(12,2) GENERATED ALWAYS AS (round((`rate_snapshot` * round((`rounded_minutes` / 60.0),4)),2)) STORED COMMENT 'Computed, immutable earnings for this time block',
  `status` enum('draft','submitted','approved','billed','written_off','rejected') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'draft',
  `write_off_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `approved_by` bigint UNSIGNED DEFAULT NULL,
  `approved_at` timestamp NULL DEFAULT NULL,
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`log_id`),
  KEY `idx_ttl_lawyer` (`lawyer_id`),
  KEY `idx_ttl_matter` (`matter_id`),
  KEY `idx_ttl_case` (`case_id`),
  KEY `idx_ttl_client` (`client_id`),
  KEY `idx_ttl_tariff` (`tariff_id`),
  KEY `idx_ttl_work_date` (`work_date`),
  KEY `idx_ttl_status` (`status`),
  KEY `idx_ttl_is_billed` (`is_billed`),
  KEY `idx_ttl_invoice_line` (`invoice_line_id`)
) ;

--
-- Dumping data for table `tariff_time_logs`
--

INSERT INTO `tariff_time_logs` (`log_id`, `lawyer_id`, `matter_id`, `case_id`, `client_id`, `tariff_id`, `rate_snapshot`, `currency_id`, `work_date`, `start_time`, `end_time`, `raw_minutes`, `rounded_minutes`, `task_type`, `description`, `internal_notes`, `is_billable`, `is_billed`, `invoice_line_id`, `status`, `write_off_reason`, `approved_by`, `approved_at`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES
(1, '1', 101, NULL, 1, 1, 75.00, 1, '2026-01-06', NULL, NULL, 70, 75, 'drafting', 'Drafted NDA agreement', NULL, 1, 1, 1, 'billed', NULL, NULL, NULL, NULL, NULL, '2026-03-27 06:13:39', '2026-03-27 06:18:14'),
(2, '1', 101, NULL, 1, 1, 75.00, 1, '2026-01-07', NULL, NULL, 60, 60, 'research', 'Reviewed clauses', NULL, 1, 1, 1, 'billed', NULL, NULL, NULL, NULL, NULL, '2026-03-27 06:13:39', '2026-03-27 06:18:14'),
(3, '1', 101, NULL, 1, 1, 75.00, 1, '2026-01-08', NULL, NULL, 90, 90, '', 'Client strategy meeting', NULL, 1, 1, 1, 'billed', NULL, NULL, NULL, NULL, NULL, '2026-03-27 06:13:39', '2026-03-27 06:18:14'),
(4, '1', 101, NULL, 1, 1, 75.00, 1, '2026-01-12', NULL, NULL, 30, 30, 'correspondence', 'Email follow-up', NULL, 1, 0, NULL, 'approved', NULL, NULL, NULL, NULL, NULL, '2026-03-27 06:13:39', '2026-03-27 06:13:39');

-- --------------------------------------------------------

--
-- Table structure for table `taxes`
--

CREATE TABLE IF NOT EXISTS `taxes` (
  `tax_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `tax_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `tax_description` text COLLATE utf8mb4_unicode_ci,
  `tax_rate` decimal(5,2) NOT NULL,
  `tax_type` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `is_active` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`tax_id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `taxes`
--

INSERT INTO `taxes` (`tax_id`, `tax_name`, `tax_description`, `tax_rate`, `tax_type`, `created_at`, `updated_at`, `is_active`) VALUES
(1, 'AIDS LEVY', NULL, 3.00, 'STATE AID', '2026-01-03 08:00:49', '2026-01-07 09:43:13', 1),
(2, 'VAT – Professional Legal Services', 'Value Added Tax charged on professional legal services as per ZIMRA regulations', 15.00, 'VAT', '2026-01-07 09:41:41', '2026-01-07 09:41:41', 1),
(3, 'Withholding Tax – Legal Fees', 'Statutory withholding tax deducted on legal fees payable to practitioners', 10.00, 'WITHHOLDING', '2026-01-07 09:41:41', '2026-01-07 09:41:41', 1),
(4, 'Capital Gains Tax – Property Transfers', 'Capital gains tax applicable on conveyancing and property transfer transactions', 20.00, 'CAPITAL_GAINS', '2026-01-07 09:41:41', '2026-01-07 09:41:41', 1),
(5, 'Stamp Duty – Property Transfer', 'Stamp duty payable on transfer of immovable property', 4.00, 'DUTY', '2026-01-07 09:41:41', '2026-01-07 09:41:41', 1),
(6, 'Stamp Duty – Share Transfer', 'Stamp duty payable on transfer of shares', 2.00, 'DUTY', '2026-01-07 09:41:41', '2026-01-07 09:41:41', 1),
(7, 'Withholding Tax – Consultancy Services', 'Withholding tax on consultancy and advisory services related to legal work', 10.00, 'WITHHOLDING', '2026-01-07 09:41:41', '2026-01-07 09:41:41', 1),
(8, 'Presumptive Tax – Professional Services', 'Presumptive tax applicable to professional service providers where applicable', 5.00, 'PRESUMPTIVE', '2026-01-07 09:41:41', '2026-01-07 09:41:41', 1),
(9, 'VAT – Disbursements Recoverable', 'VAT charged on recoverable disbursements billed to clients', 15.00, 'VAT', '2026-01-07 09:41:41', '2026-01-07 09:41:41', 1),
(10, 'Court Levy', 'Statutory court levy payable on filing of court documents and processes', 2.00, 'LEVY', '2026-01-07 09:41:41', '2026-01-07 09:41:41', 1),
(11, 'Transfer Duty – Deeds Registry', 'Government transfer duty payable at the Deeds Registry during conveyancing', 3.00, 'DUTY', '2026-01-07 09:41:41', '2026-01-07 09:41:41', 1),
(12, 'VAT', 'Value Added Tax', 15.00, 'VAT', '2026-01-07 08:02:37', '2026-01-07 08:02:37', 1),
(13, 'Sales Tax', 'Sales Tax', 10.00, 'Sales Tax', '2026-01-07 08:02:37', '2026-01-07 08:02:37', 1),
(14, 'Service Tax', 'Service Tax', 12.00, 'Service Tax', '2026-01-07 08:02:37', '2026-01-07 08:02:37', 1),
(15, 'Excise Duty', 'Excise Duty', 20.00, 'Excise Duty', '2026-01-07 08:02:37', '2026-01-07 08:02:37', 1),
(16, 'No Tax', 'No Tax Applicable', 0.00, 'None', '2026-01-07 08:02:37', '2026-01-07 08:02:37', 1);

-- --------------------------------------------------------

--
-- Table structure for table `tier_permissions`
--

CREATE TABLE IF NOT EXISTS `tier_permissions` (
  `tier_permission_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `tier_id` bigint UNSIGNED NOT NULL,
  `feature_id` bigint UNSIGNED NOT NULL,
  `can_view` tinyint(1) NOT NULL DEFAULT '0',
  `can_add` tinyint(1) NOT NULL DEFAULT '0',
  `can_edit` tinyint(1) NOT NULL DEFAULT '0',
  `can_delete` tinyint(1) NOT NULL DEFAULT '0',
  `can_export` tinyint(1) NOT NULL DEFAULT '0',
  `can_print` tinyint(1) NOT NULL DEFAULT '0',
  `can_approve` tinyint(1) NOT NULL DEFAULT '0',
  `created_by` bigint UNSIGNED NOT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`tier_permission_id`),
  UNIQUE KEY `uq_tier_feature` (`tier_id`,`feature_id`),
  KEY `fk_tier_perm_feature` (`feature_id`),
  KEY `fk_tier_perm_created_by` (`created_by`),
  KEY `fk_tier_perm_updated_by` (`updated_by`)
) ENGINE=InnoDB AUTO_INCREMENT=415 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `tier_permissions`
--

INSERT INTO `tier_permissions` (`tier_permission_id`, `tier_id`, `feature_id`, `can_view`, `can_add`, `can_edit`, `can_delete`, `can_export`, `can_print`, `can_approve`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES
(1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(2, 1, 46, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(3, 1, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(4, 1, 35, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(5, 1, 26, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(6, 1, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(7, 1, 22, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(8, 1, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(9, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(10, 1, 39, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(11, 1, 42, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(12, 1, 41, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(13, 1, 40, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(14, 1, 20, 1, 1, 1, 0, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(15, 1, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(16, 1, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(17, 1, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(18, 1, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(19, 1, 27, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(20, 1, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(21, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(22, 1, 18, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(23, 1, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(25, 1, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(26, 1, 34, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(27, 1, 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(28, 1, 37, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(29, 1, 15, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(30, 1, 14, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(31, 1, 28, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(32, 1, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(33, 1, 43, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(34, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(35, 1, 32, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(36, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(37, 1, 21, 1, 1, 1, 0, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(38, 1, 29, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(39, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(40, 1, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(41, 1, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(42, 1, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(43, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(44, 1, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(45, 1, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(46, 1, 44, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(47, 2, 2, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(48, 2, 46, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(49, 2, 17, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(50, 2, 35, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(51, 2, 26, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(52, 2, 11, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(53, 2, 22, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(54, 2, 24, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(55, 2, 4, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(56, 2, 39, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(57, 2, 42, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(58, 2, 41, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(59, 2, 40, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(60, 2, 20, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(61, 2, 25, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(62, 2, 9, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(63, 2, 12, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(64, 2, 19, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(65, 2, 27, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(66, 2, 13, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(67, 2, 3, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(68, 2, 18, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(69, 2, 31, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(70, 2, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(71, 2, 38, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(72, 2, 34, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(73, 2, 23, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(74, 2, 37, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(75, 2, 15, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(76, 2, 14, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(77, 2, 28, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(78, 2, 10, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(79, 2, 43, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(80, 2, 6, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(81, 2, 32, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(82, 2, 5, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(83, 2, 21, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(84, 2, 29, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(85, 2, 8, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(86, 2, 45, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(87, 2, 16, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(88, 2, 30, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(89, 2, 7, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(90, 2, 33, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(91, 2, 36, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(92, 2, 44, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(93, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(94, 3, 46, 1, 1, 1, 0, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(95, 3, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(96, 3, 35, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(97, 3, 26, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(98, 3, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(99, 3, 22, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(100, 3, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(101, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(102, 3, 39, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(103, 3, 42, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(104, 3, 41, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(105, 3, 40, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(106, 3, 20, 1, 1, 1, 0, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(107, 3, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(108, 3, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(109, 3, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:48', '2026-02-26 11:55:48'),
(110, 3, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(111, 3, 27, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(112, 3, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(113, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(114, 3, 18, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(115, 3, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(116, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(117, 3, 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(118, 3, 34, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(119, 3, 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(120, 3, 37, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(121, 3, 15, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(122, 3, 14, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(123, 3, 28, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(124, 3, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(125, 3, 43, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(126, 3, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(127, 3, 32, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(128, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(129, 3, 21, 1, 1, 1, 0, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(130, 3, 29, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(131, 3, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(132, 3, 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(133, 3, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(134, 3, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(135, 3, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(136, 3, 33, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(137, 3, 36, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(138, 3, 44, 1, 1, 1, 1, 1, 1, 1, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(139, 4, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(140, 4, 46, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(141, 4, 17, 1, 1, 1, 1, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(142, 4, 35, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(143, 4, 26, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(144, 4, 11, 1, 1, 1, 1, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(145, 4, 22, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(146, 4, 24, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(147, 4, 4, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(148, 4, 39, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(149, 4, 42, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(150, 4, 41, 1, 1, 1, 1, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(151, 4, 40, 1, 1, 1, 1, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(152, 4, 20, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(153, 4, 25, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(154, 4, 9, 1, 1, 1, 1, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(155, 4, 12, 1, 1, 1, 1, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(156, 4, 19, 1, 1, 1, 1, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(157, 4, 27, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(158, 4, 13, 1, 1, 1, 1, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(159, 4, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(160, 4, 18, 1, 1, 1, 1, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(161, 4, 31, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(162, 4, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(163, 4, 38, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(164, 4, 34, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(165, 4, 23, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(166, 4, 37, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(167, 4, 15, 1, 1, 1, 1, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(168, 4, 14, 1, 1, 1, 1, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(169, 4, 28, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(170, 4, 10, 1, 1, 1, 1, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(171, 4, 43, 1, 1, 1, 1, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(172, 4, 6, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(173, 4, 32, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(174, 4, 5, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(175, 4, 21, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(176, 4, 29, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(177, 4, 8, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(178, 4, 45, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(179, 4, 16, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(180, 4, 30, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(181, 4, 7, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(182, 4, 33, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(183, 4, 36, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(184, 4, 44, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(185, 5, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(186, 5, 46, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(187, 5, 17, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(188, 5, 35, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(189, 5, 26, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(190, 5, 11, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(191, 5, 22, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(192, 5, 24, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(193, 5, 4, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(194, 5, 39, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(195, 5, 42, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(196, 5, 41, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(197, 5, 40, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(198, 5, 20, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(199, 5, 25, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(200, 5, 9, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(201, 5, 12, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(202, 5, 19, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(203, 5, 27, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(204, 5, 13, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(205, 5, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(206, 5, 18, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(207, 5, 31, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(208, 5, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(209, 5, 38, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(210, 5, 34, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(211, 5, 23, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(212, 5, 37, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(213, 5, 15, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(214, 5, 14, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(215, 5, 28, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(216, 5, 10, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(217, 5, 43, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(218, 5, 6, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(219, 5, 32, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(220, 5, 5, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(221, 5, 21, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(222, 5, 29, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(223, 5, 8, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(224, 5, 45, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(225, 5, 16, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(226, 5, 30, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(227, 5, 7, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(228, 5, 33, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(229, 5, 36, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(230, 5, 44, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(231, 6, 2, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(232, 6, 46, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(233, 6, 17, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(234, 6, 35, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(235, 6, 26, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(236, 6, 11, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(237, 6, 22, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(238, 6, 24, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(239, 6, 4, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(240, 6, 39, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(241, 6, 42, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(242, 6, 41, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(243, 6, 40, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(244, 6, 20, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(245, 6, 25, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(246, 6, 9, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(247, 6, 12, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(248, 6, 19, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(249, 6, 27, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(250, 6, 13, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(251, 6, 3, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(252, 6, 18, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(253, 6, 31, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(254, 6, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(255, 6, 38, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(256, 6, 34, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(257, 6, 23, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(258, 6, 37, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(259, 6, 15, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(260, 6, 14, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(261, 6, 28, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(262, 6, 10, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(263, 6, 43, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(264, 6, 6, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(265, 6, 32, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(266, 6, 5, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(267, 6, 21, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(268, 6, 29, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(269, 6, 8, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(270, 6, 45, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(271, 6, 16, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(272, 6, 30, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(273, 6, 7, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(274, 6, 33, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(275, 6, 36, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(276, 6, 44, 1, 0, 0, 0, 1, 1, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(277, 7, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(278, 7, 46, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(279, 7, 17, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(280, 7, 35, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(281, 7, 26, 1, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(282, 7, 11, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(283, 7, 22, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(284, 7, 24, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(285, 7, 4, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(286, 7, 39, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(287, 7, 42, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(288, 7, 41, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(289, 7, 40, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(290, 7, 20, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(291, 7, 25, 1, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(292, 7, 9, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(293, 7, 12, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(294, 7, 19, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(295, 7, 27, 1, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(296, 7, 13, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(297, 7, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(298, 7, 18, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(299, 7, 31, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(300, 7, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(301, 7, 38, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(302, 7, 34, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(303, 7, 23, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(304, 7, 37, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(305, 7, 15, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(306, 7, 14, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(307, 7, 28, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(308, 7, 10, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(309, 7, 43, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(310, 7, 6, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(311, 7, 32, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(312, 7, 5, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(313, 7, 21, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(314, 7, 29, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(315, 7, 8, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(316, 7, 45, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(317, 7, 16, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(318, 7, 30, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(319, 7, 7, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(320, 7, 33, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(321, 7, 36, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(322, 7, 44, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(323, 8, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(324, 8, 46, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(325, 8, 17, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(326, 8, 35, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(327, 8, 26, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(328, 8, 11, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(329, 8, 22, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(330, 8, 24, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(331, 8, 4, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(332, 8, 39, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(333, 8, 42, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(334, 8, 41, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(335, 8, 40, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(336, 8, 20, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(337, 8, 25, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(338, 8, 9, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(339, 8, 12, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(340, 8, 19, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(341, 8, 27, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(342, 8, 13, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(343, 8, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(344, 8, 18, 1, 1, 1, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(345, 8, 31, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(346, 8, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(347, 8, 38, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(348, 8, 34, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(349, 8, 23, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(350, 8, 37, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(351, 8, 15, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(352, 8, 14, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(353, 8, 28, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(354, 8, 10, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(355, 8, 43, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(356, 8, 6, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(357, 8, 32, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:49', '2026-02-26 11:55:49'),
(358, 8, 5, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(359, 8, 21, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(360, 8, 29, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(361, 8, 8, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(362, 8, 45, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(363, 8, 16, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(364, 8, 30, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(365, 8, 7, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(366, 8, 33, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(367, 8, 36, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(368, 8, 44, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(369, 9, 2, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(370, 9, 46, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(371, 9, 17, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(372, 9, 35, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(373, 9, 26, 1, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(374, 9, 11, 1, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(375, 9, 22, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(376, 9, 24, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(377, 9, 4, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(378, 9, 39, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(379, 9, 42, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(380, 9, 41, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(381, 9, 40, 1, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(382, 9, 20, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(383, 9, 25, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(384, 9, 9, 1, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(385, 9, 12, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(386, 9, 19, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(387, 9, 27, 1, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(388, 9, 13, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(389, 9, 3, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(390, 9, 18, 1, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(391, 9, 31, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(392, 9, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(393, 9, 38, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(394, 9, 34, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(395, 9, 23, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(396, 9, 37, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(397, 9, 15, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(398, 9, 14, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(399, 9, 28, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(400, 9, 10, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(401, 9, 43, 1, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(402, 9, 6, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(403, 9, 32, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(404, 9, 5, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(405, 9, 21, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(406, 9, 29, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(407, 9, 8, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(408, 9, 45, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(409, 9, 16, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(410, 9, 30, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(411, 9, 7, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(412, 9, 33, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(413, 9, 36, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50'),
(414, 9, 44, 0, 0, 0, 0, 0, 0, 0, 1, 1, '2026-02-26 11:55:50', '2026-02-26 11:55:50');

-- --------------------------------------------------------

--
-- Table structure for table `transactions`
--

CREATE TABLE IF NOT EXISTS `transactions` (
  `transaction_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `transaction_code` varchar(60) COLLATE utf8mb4_unicode_ci NOT NULL,
  `entry_date` date NOT NULL,
  `narration` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `reference` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `gl_account_id` bigint UNSIGNED NOT NULL,
  `subaccount_id` bigint UNSIGNED DEFAULT NULL,
  `contra_gl_account_id` bigint UNSIGNED DEFAULT NULL,
  `contra_subaccount_id` bigint UNSIGNED DEFAULT NULL,
  `debit` decimal(18,2) NOT NULL DEFAULT '0.00',
  `credit` decimal(18,2) NOT NULL DEFAULT '0.00',
  `quantity` decimal(18,4) DEFAULT NULL,
  `unit_price` decimal(18,2) DEFAULT NULL,
  `discount` decimal(18,2) DEFAULT '0.00',
  `tax_amount` decimal(18,2) DEFAULT '0.00',
  `tax_id` bigint UNSIGNED DEFAULT NULL,
  `line_total` decimal(18,2) NOT NULL,
  `source` enum('invoice','supplier_invoice','receipt','quotation','journal','cashbook','payment','adjustment','other') COLLATE utf8mb4_unicode_ci DEFAULT 'journal',
  `related_type` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `related_id` bigint UNSIGNED DEFAULT NULL,
  `batch_code` varchar(80) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `document_path` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `currency_id` bigint UNSIGNED NOT NULL,
  `exchange_rate` decimal(18,6) DEFAULT '1.000000',
  `posted` tinyint(1) DEFAULT '0',
  `posted_at` datetime DEFAULT NULL,
  `is_reconciled` tinyint(1) DEFAULT '0',
  `reconcile_reference` varchar(120) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `client_id` bigint UNSIGNED DEFAULT NULL,
  `case_id` bigint UNSIGNED DEFAULT NULL,
  `supplier_id` bigint UNSIGNED DEFAULT NULL,
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`transaction_id`),
  UNIQUE KEY `transaction_code` (`transaction_code`),
  KEY `idx_transactions_related` (`related_type`,`related_id`),
  KEY `idx_transactions_entry_date` (`entry_date`),
  KEY `gl_account_id` (`gl_account_id`),
  KEY `subaccount_id` (`subaccount_id`),
  KEY `contra_gl_account_id` (`contra_gl_account_id`),
  KEY `contra_subaccount_id` (`contra_subaccount_id`),
  KEY `tax_id` (`tax_id`),
  KEY `idx_transactions_source` (`source`),
  KEY `currency_id` (`currency_id`),
  KEY `idx_transactions_posted` (`posted`),
  KEY `idx_transactions_client` (`client_id`),
  KEY `idx_transactions_case` (`case_id`),
  KEY `created_by` (`created_by`),
  KEY `updated_by` (`updated_by`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `trust_account_matters`
--

CREATE TABLE IF NOT EXISTS `trust_account_matters` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `trust_account_id` bigint UNSIGNED NOT NULL,
  `matter_id` bigint UNSIGNED NOT NULL,
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_trust_account_matter` (`trust_account_id`,`matter_id`),
  KEY `trust_account_matters_trust_account_id_index` (`trust_account_id`),
  KEY `trust_account_matters_matter_id_index` (`matter_id`),
  KEY `trust_account_matters_created_by_index` (`created_by`),
  KEY `trust_account_matters_updated_by_index` (`updated_by`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `trust_account_matters`
--

INSERT INTO `trust_account_matters` (`id`, `trust_account_id`, `matter_id`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES
(1, 1, 52, 1, 1, '2026-03-24 18:21:43', '2026-03-24 18:21:43');

-- --------------------------------------------------------

--
-- Table structure for table `trust_account_reconciliations`
--

CREATE TABLE IF NOT EXISTS `trust_account_reconciliations` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `cashbook_id` bigint UNSIGNED NOT NULL,
  `reconciliation_date` date NOT NULL,
  `bank_balance` decimal(15,2) NOT NULL,
  `system_balance` decimal(15,2) NOT NULL,
  `difference` decimal(15,2) NOT NULL,
  `notes` text COLLATE utf8mb4_unicode_ci,
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `trust_account_reconciliations_created_by_foreign` (`created_by`),
  KEY `trust_account_reconciliations_updated_by_foreign` (`updated_by`),
  KEY `trust_account_reconciliations_cashbook_id_index` (`cashbook_id`),
  KEY `trust_account_reconciliations_reconciliation_date_index` (`reconciliation_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `trust_ledger_entries`
--

CREATE TABLE IF NOT EXISTS `trust_ledger_entries` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `trust_account_id` bigint UNSIGNED NOT NULL,
  `trust_transaction_id` bigint UNSIGNED NOT NULL,
  `entry_date` date NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `debit` decimal(15,2) NOT NULL DEFAULT '0.00',
  `credit` decimal(15,2) NOT NULL DEFAULT '0.00',
  `running_balance` decimal(15,2) NOT NULL,
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `trust_ledger_entries_created_by_foreign` (`created_by`),
  KEY `trust_ledger_entries_updated_by_foreign` (`updated_by`),
  KEY `trust_ledger_entries_trust_account_id_index` (`trust_account_id`),
  KEY `trust_ledger_entries_trust_transaction_id_index` (`trust_transaction_id`),
  KEY `trust_ledger_entries_entry_date_index` (`entry_date`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `trust_ledger_entries`
--

INSERT INTO `trust_ledger_entries` (`id`, `trust_account_id`, `trust_transaction_id`, `entry_date`, `description`, `debit`, `credit`, `running_balance`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES
(1, 1, 1, '2026-03-25', 'deposit for matter fees', 500.50, 0.00, 500.50, 1, 1, '2026-03-25 11:10:33', '2026-03-25 11:10:33');

-- --------------------------------------------------------

--
-- Table structure for table `trust_transactions`
--

CREATE TABLE IF NOT EXISTS `trust_transactions` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `trust_account_id` bigint UNSIGNED NOT NULL,
  `cashbook_id` bigint UNSIGNED NOT NULL,
  `journal_header_id` bigint UNSIGNED NOT NULL,
  `transaction_type` enum('deposit','withdrawal','transfer_to_business','disbursement','refund') COLLATE utf8mb4_unicode_ci NOT NULL,
  `amount` decimal(15,2) NOT NULL,
  `reference` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `description` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `transaction_date` date NOT NULL,
  `status` enum('pending','posted','reversed') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'pending',
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `trust_transactions_cashbook_id_foreign` (`cashbook_id`),
  KEY `trust_transactions_journal_header_id_foreign` (`journal_header_id`),
  KEY `trust_transactions_created_by_foreign` (`created_by`),
  KEY `trust_transactions_updated_by_foreign` (`updated_by`),
  KEY `trust_transactions_trust_account_id_index` (`trust_account_id`),
  KEY `trust_transactions_transaction_type_index` (`transaction_type`),
  KEY `trust_transactions_transaction_date_index` (`transaction_date`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `trust_transactions`
--

INSERT INTO `trust_transactions` (`id`, `trust_account_id`, `cashbook_id`, `journal_header_id`, `transaction_type`, `amount`, `reference`, `description`, `transaction_date`, `status`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES
(1, 1, 1, 12, 'deposit', 500.50, 'DEPOSIT', 'deposit for matter fees', '2026-03-25', 'posted', 1, 1, '2026-03-25 11:10:33', '2026-03-25 11:10:33');

-- --------------------------------------------------------

--
-- Table structure for table `trust_transfers`
--

CREATE TABLE IF NOT EXISTS `trust_transfers` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `trust_transaction_id` bigint UNSIGNED NOT NULL,
  `from_cashbook_id` bigint UNSIGNED NOT NULL,
  `to_cashbook_id` bigint UNSIGNED NOT NULL,
  `amount` decimal(15,2) NOT NULL,
  `transfer_date` date NOT NULL,
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `trust_transfers_created_by_foreign` (`created_by`),
  KEY `trust_transfers_updated_by_foreign` (`updated_by`),
  KEY `trust_transfers_trust_transaction_id_index` (`trust_transaction_id`),
  KEY `trust_transfers_from_cashbook_id_index` (`from_cashbook_id`),
  KEY `trust_transfers_to_cashbook_id_index` (`to_cashbook_id`),
  KEY `trust_transfers_transfer_date_index` (`transfer_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `uploaded_chat_files`
--

CREATE TABLE IF NOT EXISTS `uploaded_chat_files` (
  `file_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_id` bigint UNSIGNED NOT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `chat_id` bigint UNSIGNED DEFAULT NULL,
  `file_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `file_type` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `file_size` bigint DEFAULT NULL,
  `file_url` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `uploaded_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`file_id`),
  KEY `user_id` (`user_id`),
  KEY `chat_id` (`chat_id`),
  KEY `uploaded_chat_files_updated_by_index` (`updated_by`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `created_by` int DEFAULT NULL,
  `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `password_hash` text COLLATE utf8mb4_unicode_ci NOT NULL,
  `group_id` bigint UNSIGNED DEFAULT NULL,
  `tier_id` bigint UNSIGNED DEFAULT NULL,
  `status` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT 'active',
  `location` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `is_2fa_enabled` tinyint(1) DEFAULT '0',
  `uses_authenticator` tinyint(1) DEFAULT '0',
  `uses_sms` tinyint(1) DEFAULT '0',
  `authenticator_secret` text COLLATE utf8mb4_unicode_ci,
  `sms_verified` tinyint(1) DEFAULT '0',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `failed_login_attempts` int DEFAULT '0',
  `account_locked_until` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `email` (`email`),
  KEY `idx_users_email` (`email`),
  KEY `idx_users_group_id` (`group_id`),
  KEY `idx_users_tier_id` (`tier_id`),
  KEY `idx_users_status` (`status`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `users`
--

INSERT INTO `users` (`id`, `created_by`, `name`, `email`, `password_hash`, `group_id`, `tier_id`, `status`, `location`, `is_2fa_enabled`, `uses_authenticator`, `uses_sms`, `authenticator_secret`, `sms_verified`, `created_at`, `updated_at`, `failed_login_attempts`, `account_locked_until`) VALUES
(1, NULL, 'Ashley Gwena', 'ashleygwena@outlook.com', '$2y$12$FFTuw0zl.RtcbTi.YBEfCeE6bTiQjk76xWm62Mkk6lEAZqivZllF6', 1, 1, 'online', 'Default', 0, 0, 0, NULL, 0, '2026-01-02 08:00:54', '2026-04-01 05:56:34', 0, '2026-01-02 13:22:37'),
(2, NULL, 'Tadi Ashley', 'tadiwagwena@melsoftzim.co.zw', '$2y$12$H3861T8P5SIN1QpsR801MuVywYby7tAzRPDAXx.f1WwcbwS74PAZu', 1, 2, 'online', 'Default', 0, 0, 0, NULL, 0, '2026-01-02 08:00:54', '2026-03-15 06:51:35', 0, NULL),
(3, 1, 'Test Admin Staff', 'test.admin.staff@prolex.local', '$2y$12$NL4wkpZmQhZBp4QMuRWN5euk6JGYJEZNxBn5cLiy/kYYNGHvPDgzS', 4, 5, 'active', 'HQ', 0, 0, 0, NULL, 0, '2026-02-26 12:02:35', '2026-02-26 12:02:35', 0, NULL),
(4, 1, 'Test Compliance Auditor', 'test.compliance.auditor@prolex.local', '$2y$12$VSNLLSR47un5iOmk1WbpZepUQ1pYif724ZrjP3/.h2jN0tJMQWDeq', 1, 6, 'active', 'HQ', 0, 0, 0, NULL, 0, '2026-02-26 12:02:35', '2026-02-26 12:02:35', 0, NULL),
(5, 1, 'Test Junior Lawyer', 'test.junior.lawyer@prolex.local', '$2y$12$thvulpFyAE9R4RvlH9ZWH.a3OmGjbCYyrmVjwv5pcKkKkUvqLcR8q', 3, 7, 'active', 'HQ', 0, 0, 0, NULL, 0, '2026-02-26 12:02:35', '2026-02-26 12:02:35', 0, NULL),
(6, 1, 'Test Paralegal', 'test.paralegal@prolex.local', '$2y$12$Rqn1LEbUMiAUsaa4LptfS.nRPz86ezuk9601Mvh.mM2jRNHe3Lyh6', 3, 8, 'active', 'HQ', 0, 0, 0, NULL, 0, '2026-02-26 12:02:35', '2026-02-26 12:02:35', 0, NULL),
(7, 1, 'Test Legal Intern', 'test.legal.intern@prolex.local', '$2y$12$vlO8GGmtcQmgpLJES58uf.cFqMBl3pMrZKV6L83LtBIj9236PRv1G', 3, 9, 'active', 'HQ', 0, 0, 0, NULL, 0, '2026-02-26 12:02:35', '2026-02-26 12:02:35', 0, NULL),
(8, NULL, 'Seed User 8', 'seed.user8@example.com', '$2y$12$WiQEdQ2w.4tne8vRBTC7duivEa5Blwnrf3Y6vKVHLpP3TQ4YygouC', NULL, NULL, 'active', 'Seeded', 0, 0, 0, NULL, 0, '2026-03-19 11:04:56', '2026-03-19 11:04:56', 0, NULL),
(9, NULL, 'Seed User 9', 'seed.user9@example.com', '$2y$12$dHN7y26YdjlMKjONY9epu.X4lFh.WTDTdVC/v1Lmga.XkXsxvohFC', NULL, NULL, 'active', 'Seeded', 0, 0, 0, NULL, 0, '2026-03-19 11:04:57', '2026-03-19 11:04:57', 0, NULL),
(10, NULL, 'Seed User 10', 'seed.user10@example.com', '$2y$12$Ig9IHzVhEqE57nnj9r9OjeU2AWOzwmkT.vguXt6hoGQl7OkY.kwcC', NULL, NULL, 'active', 'Seeded', 0, 0, 0, NULL, 0, '2026-03-19 11:04:57', '2026-03-19 11:04:57', 0, NULL);

-- --------------------------------------------------------

--
-- Table structure for table `user_chat_settings`
--

CREATE TABLE IF NOT EXISTS `user_chat_settings` (
  `setting_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_id` bigint UNSIGNED NOT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `enable_sound` tinyint(1) DEFAULT '1',
  `auto_scroll` tinyint(1) DEFAULT '1',
  `show_typing_indicators` tinyint(1) DEFAULT '1',
  `dark_mode` tinyint(1) DEFAULT '0',
  `show_online_status` tinyint(1) DEFAULT '1',
  `save_chat_history` tinyint(1) DEFAULT '1',
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`setting_id`),
  UNIQUE KEY `user_chat_settings_user_id_unique` (`user_id`),
  KEY `user_id` (`user_id`),
  KEY `user_chat_settings_updated_by_index` (`updated_by`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- --------------------------------------------------------

--
-- Table structure for table `user_groups`
--

CREATE TABLE IF NOT EXISTS `user_groups` (
  `user_group_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `group_name` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `group_description` text COLLATE utf8mb4_unicode_ci,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `created_by` bigint UNSIGNED DEFAULT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  PRIMARY KEY (`user_group_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `user_groups`
--

INSERT INTO `user_groups` (`user_group_id`, `group_name`, `group_description`, `created_at`, `updated_at`, `created_by`, `updated_by`) VALUES
(1, 'System Auditors', 'Highest-level oversight role with authority to monitor, review, and audit all system activities, financial records, user actions, and compliance logs. Has supervisory access over administrators.', '2026-02-21 19:19:42', '2026-02-21 19:19:42', 1, 1),
(2, 'Administrators', 'System administrators responsible for managing users, cases, billing, configurations, and daily system operations.', '2026-02-21 19:19:42', '2026-02-21 19:19:42', 1, 1),
(3, 'Lawyers', 'Attorneys responsible for managing legal cases, clients, court filings, and legal documentation.', '2026-02-21 19:19:42', '2026-02-21 19:19:42', 1, 1),
(4, 'Secretaries', 'Administrative staff responsible for scheduling, document preparation, file organization, and client communication support.', '2026-02-21 19:19:42', '2026-02-21 19:19:42', 1, 1);

-- --------------------------------------------------------

--
-- Table structure for table `user_permissions`
--

CREATE TABLE IF NOT EXISTS `user_permissions` (
  `user_permission_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_id` bigint UNSIGNED NOT NULL,
  `feature_id` bigint UNSIGNED NOT NULL,
  `can_view` tinyint(1) NOT NULL DEFAULT '0',
  `can_add` tinyint(1) NOT NULL DEFAULT '0',
  `can_edit` tinyint(1) NOT NULL DEFAULT '0',
  `can_delete` tinyint(1) NOT NULL DEFAULT '0',
  `can_export` tinyint(1) NOT NULL DEFAULT '0',
  `can_print` tinyint(1) NOT NULL DEFAULT '0',
  `can_approve` tinyint(1) NOT NULL DEFAULT '0',
  `is_active` tinyint(1) NOT NULL DEFAULT '1',
  `override_reason` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_by` bigint UNSIGNED NOT NULL,
  `updated_by` bigint UNSIGNED DEFAULT NULL,
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`user_permission_id`),
  UNIQUE KEY `uq_user_feature` (`user_id`,`feature_id`),
  KEY `fk_user_perm_feature` (`feature_id`),
  KEY `fk_user_perm_created_by` (`created_by`),
  KEY `fk_user_perm_updated_by` (`updated_by`)
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `user_permissions`
--

INSERT INTO `user_permissions` (`user_permission_id`, `user_id`, `feature_id`, `can_view`, `can_add`, `can_edit`, `can_delete`, `can_export`, `can_print`, `can_approve`, `is_active`, `override_reason`, `created_by`, `updated_by`, `created_at`, `updated_at`) VALUES
(1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(2, 1, 2, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(3, 1, 3, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(4, 1, 4, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(5, 1, 5, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(6, 1, 6, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(7, 1, 7, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(8, 1, 8, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(9, 1, 9, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(10, 1, 10, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(11, 1, 11, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(12, 1, 12, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(13, 1, 13, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(14, 1, 14, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(15, 1, 15, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(16, 1, 16, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(17, 1, 17, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(18, 1, 18, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(19, 1, 19, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(20, 1, 20, 1, 1, 1, 0, 0, 1, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 12:44:10'),
(21, 1, 21, 1, 1, 1, 0, 0, 1, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 12:44:10'),
(22, 1, 22, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(23, 1, 23, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(24, 1, 24, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(25, 1, 25, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(26, 1, 26, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(27, 1, 27, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(28, 1, 28, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(29, 1, 29, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(30, 1, 30, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(31, 1, 31, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(32, 1, 32, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(33, 1, 33, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(34, 1, 34, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(35, 1, 35, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(36, 1, 36, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(37, 1, 37, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(38, 1, 38, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:39', '2026-03-26 11:18:39'),
(39, 1, 39, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:40', '2026-03-26 11:18:40'),
(40, 1, 40, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:40', '2026-03-26 11:18:40'),
(41, 1, 41, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:40', '2026-03-26 11:18:40'),
(42, 1, 42, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:40', '2026-03-26 11:18:40'),
(43, 1, 43, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:40', '2026-03-26 11:18:40'),
(44, 1, 44, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:40', '2026-03-26 11:18:40'),
(45, 1, 45, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:40', '2026-03-26 11:18:40'),
(46, 1, 46, 1, 1, 1, 1, 0, 0, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:40', '2026-03-26 11:18:40'),
(47, 1, 47, 1, 1, 1, 1, 0, 1, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:40', '2026-03-26 12:44:10'),
(48, 1, 48, 1, 1, 1, 0, 0, 1, 0, 1, 'Manual override via administration permissions UI', 1, 1, '2026-03-26 11:18:40', '2026-03-26 12:44:10');

-- --------------------------------------------------------

--
-- Table structure for table `user_phones`
--

CREATE TABLE IF NOT EXISTS `user_phones` (
  `phone_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_id` bigint UNSIGNED NOT NULL,
  `phone_number` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,
  `phone_type` enum('primary','secondary','work','emergency') COLLATE utf8mb4_unicode_ci DEFAULT 'primary',
  `is_verified` tinyint(1) DEFAULT '0',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT NULL,
  `created_by` bigint NOT NULL,
  `updated_by` bigint NOT NULL,
  PRIMARY KEY (`phone_id`),
  KEY `idx_user_phones_user_id` (`user_id`),
  KEY `idx_user_phones_number` (`phone_number`),
  KEY `idx_user_phones_verified` (`is_verified`),
  KEY `fk_user_phones_created_by` (`created_by`),
  KEY `fk_user_phones_updated_by` (`updated_by`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `user_phones`
--

INSERT INTO `user_phones` (`phone_id`, `user_id`, `phone_number`, `phone_type`, `is_verified`, `created_at`, `updated_at`, `created_by`, `updated_by`) VALUES
(1, 1, '+263771234567', 'primary', 1, '2026-02-21 21:46:42', '2026-02-21 21:46:42', 1, 1),
(2, 2, '+263782345678', 'work', 1, '2026-02-21 21:46:42', '2026-02-21 21:46:42', 1, 1),
(3, 3, '+12025551051', 'primary', 1, '2026-02-26 12:02:35', '2026-02-26 12:02:35', 1, 1),
(4, 4, '+12025551052', 'primary', 1, '2026-02-26 12:02:35', '2026-02-26 12:02:35', 1, 1),
(5, 5, '+12025551053', 'primary', 1, '2026-02-26 12:02:35', '2026-02-26 12:02:35', 1, 1),
(6, 6, '+12025551054', 'primary', 1, '2026-02-26 12:02:35', '2026-02-26 12:02:35', 1, 1),
(7, 7, '+12025551055', 'primary', 1, '2026-02-26 12:02:35', '2026-02-26 12:02:35', 1, 1);

-- --------------------------------------------------------

--
-- Table structure for table `user_sessions`
--

CREATE TABLE IF NOT EXISTS `user_sessions` (
  `id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_id` bigint UNSIGNED NOT NULL,
  `session_id` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `user_agent` text COLLATE utf8mb4_unicode_ci,
  `logged_in_at` datetime NOT NULL,
  `last_seen_at` datetime DEFAULT NULL,
  `logged_out_at` datetime DEFAULT NULL,
  `status` enum('active','logged_out','revoked') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'active',
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_session_id` (`session_id`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `user_sessions`
--

INSERT INTO `user_sessions` (`id`, `user_id`, `session_id`, `ip_address`, `user_agent`, `logged_in_at`, `last_seen_at`, `logged_out_at`, `status`, `created_at`, `updated_at`) VALUES
(1, 1, '1sKY7zAUaUOvWgZkT2T2XAEkmXGYcamsnKGWY0cN', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-02 13:10:51', NULL, NULL, 'active', '2026-04-02 13:10:51', '2026-04-02 13:10:51'),
(2, 1, '1sKY7zAUaUOvWgZkT2T2XAEkmXGYcamsnKGWY0cN', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-02 13:10:51', NULL, NULL, 'active', '2026-04-02 13:10:51', '2026-04-02 13:10:51'),
(3, 1, 'w44muXRjHW1TK1soOl3o8MNmfawTTMoXR4CyYfFS', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-02 13:10:52', '2026-04-02 13:10:52', NULL, 'active', '2026-04-02 13:10:52', '2026-04-02 13:10:52'),
(4, 1, 'U0cinE5praqbyFcNOg5FEOK0o6usHrU62YjC7gH8', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-06 08:20:10', NULL, NULL, 'active', '2026-04-06 08:20:10', '2026-04-06 08:20:10'),
(5, 1, 'U0cinE5praqbyFcNOg5FEOK0o6usHrU62YjC7gH8', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-06 08:20:10', NULL, NULL, 'active', '2026-04-06 08:20:10', '2026-04-06 08:20:10'),
(6, 1, 'GUdeBQQK2yrkhv6MXXtzeWRDB3CURS2JGfvldrj3', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-06 08:20:10', '2026-04-06 08:20:10', NULL, 'active', '2026-04-06 08:20:10', '2026-04-06 08:20:10'),
(7, 1, 'dzNlHQFdeb4PvA6bnzfFoMqFVzCjqi4QpmcA3sbs', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-07 07:29:05', NULL, NULL, 'active', '2026-04-07 07:29:05', '2026-04-07 07:29:05'),
(8, 1, 'dzNlHQFdeb4PvA6bnzfFoMqFVzCjqi4QpmcA3sbs', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-07 07:29:05', NULL, NULL, 'active', '2026-04-07 07:29:05', '2026-04-07 07:29:05'),
(9, 1, 'qB7LqXxJVWDSg4QvzT8oUZzslfozhTsqAbUGeGwi', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-07 07:29:05', '2026-04-07 07:29:05', NULL, 'active', '2026-04-07 07:29:05', '2026-04-07 07:29:05'),
(10, 1, 'dj9BRLmfOWkcGH6Ykekc7wpRkBpGqX6MFr7JBVPX', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-07 07:43:30', NULL, NULL, 'active', '2026-04-07 07:43:30', '2026-04-07 07:43:30'),
(11, 1, 'dj9BRLmfOWkcGH6Ykekc7wpRkBpGqX6MFr7JBVPX', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-07 07:43:30', NULL, NULL, 'active', '2026-04-07 07:43:30', '2026-04-07 07:43:30'),
(12, 1, 'gdxB551lN7jqIMZ1CZDUz6PWdVUqYIHWpoyvidJs', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-07 07:43:30', '2026-04-07 07:43:30', NULL, 'active', '2026-04-07 07:43:30', '2026-04-07 07:43:30'),
(13, 1, '9H1pU3gcDLsPYlReia36KQHvCZXN2LJoMwiAsTPa', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-07 08:13:24', NULL, NULL, 'active', '2026-04-07 08:13:24', '2026-04-07 08:13:24'),
(14, 1, '9H1pU3gcDLsPYlReia36KQHvCZXN2LJoMwiAsTPa', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-07 08:13:24', NULL, NULL, 'active', '2026-04-07 08:13:24', '2026-04-07 08:13:24'),
(15, 1, '5ESdIqwmJUaVsWw0BxdIdutgrTCllgE9iAeYUO6P', '127.0.0.1', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36', '2026-04-07 08:13:24', '2026-04-07 08:13:24', NULL, 'active', '2026-04-07 08:13:24', '2026-04-07 08:13:24');

-- --------------------------------------------------------

--
-- Table structure for table `user_tiers`
--

CREATE TABLE IF NOT EXISTS `user_tiers` (
  `tier_id` bigint UNSIGNED NOT NULL AUTO_INCREMENT,
  `user_group_id` bigint UNSIGNED DEFAULT NULL,
  `tier_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
  `description` text COLLATE utf8mb4_unicode_ci,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`tier_id`),
  KEY `fk_user_tiers_user_group` (`user_group_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Dumping data for table `user_tiers`
--

INSERT INTO `user_tiers` (`tier_id`, `user_group_id`, `tier_name`, `description`, `created_at`, `updated_at`) VALUES
(1, 1, 'Superuser', 'Ultimate system authority with unrestricted access including override and system-level controls.', '2026-01-05 14:08:22', '2026-02-21 19:34:23'),
(2, 1, 'Oversight Auditor', 'High-level audit authority with full system visibility and compliance monitoring privileges.', '2026-01-05 14:08:22', '2026-02-21 19:34:23'),
(3, 2, 'Administrative Manager', 'Manages users, system configurations, billing, and operational workflows.', '2026-01-05 14:08:22', '2026-02-21 19:34:23'),
(4, 3, 'Senior Lawyer', 'Handles complex legal cases, court representation, and supervises junior lawyers and paralegals.', '2026-01-05 14:08:22', '2026-02-21 19:34:23'),
(5, 4, 'Administrative Staff', 'Provides scheduling, documentation, and clerical support to legal and administrative teams.', '2026-01-05 14:08:22', '2026-02-21 19:34:23'),
(6, 1, 'System Compliance Auditor', 'Read-only system access for compliance verification and activity auditing.', '2026-01-05 14:08:22', '2026-02-21 19:34:23'),
(7, 3, 'Junior Lawyer', 'Handles assigned cases under supervision of a Senior Lawyer with limited approval authority.', '2026-02-21 19:35:15', '2026-02-21 19:35:15'),
(8, 3, 'Paralegal', 'Performs legal research, drafts documents, and assists lawyers in case preparation.', '2026-02-21 19:35:15', '2026-02-21 19:35:15'),
(9, 3, 'Legal Intern', 'Restricted legal access for training purposes under direct supervision.', '2026-02-21 19:35:15', '2026-02-21 19:35:15');

-- --------------------------------------------------------

--
-- Stand-in structure for view `vw_active_tariffs`
-- (See below for the actual view)
--
DROP VIEW IF EXISTS `vw_active_tariffs`;
CREATE TABLE IF NOT EXISTS `vw_active_tariffs` (
`tariff_id` int
,`service_code` varchar(30)
,`service_name` varchar(150)
,`billing_method` enum('FIXED_FEE','HOURLY','PER_APPEARANCE','PER_STAGE','RETAINER_PLUS','CONTINGENCY','SUBSCRIPTION')
,`rate_type` enum('PER_HOUR','PER_CASE','PER_DOCUMENT','PER_APPEARANCE','PER_CONSULTATION','PER_MONTH','PERCENTAGE')
,`rate_amount` decimal(12,2)
,`billing_increment` int
,`minimum_billable_mins` int
,`minimum_fee` decimal(12,2)
,`maximum_fee` decimal(12,2)
,`vat_rate` decimal(5,2)
,`effective_from` date
,`effective_to` date
,`lawyer_name` varchar(201)
,`lawyer_type` varchar(50)
,`practice_group` varchar(100)
);

-- --------------------------------------------------------

--
-- Stand-in structure for view `vw_invoice_detail`
-- (See below for the actual view)
--
DROP VIEW IF EXISTS `vw_invoice_detail`;
CREATE TABLE IF NOT EXISTS `vw_invoice_detail` (
`invoice_id` bigint unsigned
,`invoice_number` varchar(50)
,`invoice_date` date
,`due_date` date
,`invoice_status` enum('draft','sent','partial','paid','overdue','cancelled','written_off')
,`client_name` varchar(201)
,`responsible_lawyer` varchar(20)
,`lawyer_name` varchar(201)
,`line_id` bigint unsigned
,`charge_type` enum('FIXED_FEE','HOURLY','PER_APPEARANCE','RETAINER_DRAW','ADJUSTMENT')
,`service_name` varchar(255)
,`rate_snapshot` decimal(12,2)
,`hours_decimal` decimal(8,4)
,`quantity` decimal(10,4)
,`base_amount` decimal(12,2)
,`discount_pct` decimal(5,2)
,`discount_amount` decimal(12,2)
,`line_total` decimal(12,2)
,`disbursement_total` decimal(12,2)
,`tax_total` decimal(12,2)
,`total` decimal(12,2)
,`amount_paid` decimal(12,2)
,`balance_due` decimal(12,2)
);

-- --------------------------------------------------------

--
-- Stand-in structure for view `vw_lawyer_earnings`
-- (See below for the actual view)
--
DROP VIEW IF EXISTS `vw_lawyer_earnings`;
CREATE TABLE IF NOT EXISTS `vw_lawyer_earnings` (
`lawyer_id` varchar(20)
,`lawyer_name` varchar(201)
,`lawyer_type` varchar(50)
,`work_year` year
,`work_month` int
,`entry_count` bigint
,`total_minutes` decimal(32,0)
,`total_hours` decimal(36,2)
,`billable_minutes` decimal(32,0)
,`billable_hours` decimal(36,2)
,`gross_earnings` decimal(34,2)
,`invoiced_earnings` decimal(34,2)
,`written_off` decimal(34,2)
,`unbilled_wip` decimal(34,2)
);

-- --------------------------------------------------------

--
-- Stand-in structure for view `vw_outstanding_invoices`
-- (See below for the actual view)
--
DROP VIEW IF EXISTS `vw_outstanding_invoices`;
CREATE TABLE IF NOT EXISTS `vw_outstanding_invoices` (
`id` bigint unsigned
,`invoice_number` varchar(50)
,`invoice_date` date
,`due_date` date
,`days_overdue` int
,`age_bucket` varchar(10)
,`client_name` varchar(201)
,`total` decimal(12,2)
,`amount_paid` decimal(12,2)
,`balance_due` decimal(12,2)
,`status` enum('draft','sent','partial','paid','overdue','cancelled','written_off')
);

-- --------------------------------------------------------

--
-- Stand-in structure for view `vw_unbilled_wip`
-- (See below for the actual view)
--
DROP VIEW IF EXISTS `vw_unbilled_wip`;
CREATE TABLE IF NOT EXISTS `vw_unbilled_wip` (
`client_id` bigint unsigned
,`client_name` varchar(201)
,`matter_id` bigint unsigned
,`case_id` bigint unsigned
,`lawyer_id` varchar(20)
,`lawyer_name` varchar(201)
,`entry_count` bigint
,`total_minutes` decimal(32,0)
,`total_hours` decimal(36,2)
,`wip_value` decimal(34,2)
,`earliest_date` date
,`latest_date` date
);

-- --------------------------------------------------------

--
-- Stand-in structure for view `v_gl_subaccount_display`
-- (See below for the actual view)
--
DROP VIEW IF EXISTS `v_gl_subaccount_display`;
CREATE TABLE IF NOT EXISTS `v_gl_subaccount_display` (
`id` bigint unsigned
,`parent_code` varchar(20)
,`sub_code` varchar(20)
,`full_gl_code` varchar(41)
,`account_name` varchar(255)
,`parent_name` varchar(255)
,`financial_category` enum('income_statement','balance_sheet')
,`is_control_account` tinyint(1)
,`is_trust_account` tinyint(1)
,`is_active` tinyint(1)
);

-- --------------------------------------------------------

--
-- Structure for view `vw_active_tariffs`
--

DROP VIEW IF EXISTS `vw_active_tariffs`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY INVOKER VIEW `vw_active_tariffs`  AS SELECT `t`.`tariff_id` AS `tariff_id`, `t`.`service_code` AS `service_code`, `t`.`service_name` AS `service_name`, `t`.`billing_method` AS `billing_method`, `t`.`rate_type` AS `rate_type`, `t`.`rate_amount` AS `rate_amount`, `t`.`billing_increment` AS `billing_increment`, `t`.`minimum_billable_mins` AS `minimum_billable_mins`, `t`.`minimum_fee` AS `minimum_fee`, `t`.`maximum_fee` AS `maximum_fee`, `t`.`vat_rate` AS `vat_rate`, `t`.`effective_from` AS `effective_from`, `t`.`effective_to` AS `effective_to`, concat(`l`.`first_name`,' ',`l`.`last_name`) AS `lawyer_name`, `l`.`lawyer_type` AS `lawyer_type`, `lg`.`group_name` AS `practice_group` FROM ((`tariffs` `t` join `lawyers` `l` on((`l`.`lawyer_id` = `t`.`lawyer_id`))) left join `lawyer_groups` `lg` on((`lg`.`group_id` = `t`.`group_id`))) WHERE ((`t`.`is_active` = 1) AND (`t`.`deleted_at` is null) AND (`t`.`effective_from` <= curdate()) AND ((`t`.`effective_to` is null) OR (`t`.`effective_to` >= curdate()))) ;

-- --------------------------------------------------------

--
-- Structure for view `vw_invoice_detail`
--

DROP VIEW IF EXISTS `vw_invoice_detail`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vw_invoice_detail`  AS SELECT `ci`.`id` AS `invoice_id`, `ci`.`invoice_number` AS `invoice_number`, `ci`.`invoice_date` AS `invoice_date`, `ci`.`due_date` AS `due_date`, `ci`.`status` AS `invoice_status`, concat(`c`.`first_name`,' ',`c`.`last_name`) AS `client_name`, `ci`.`responsible_lawyer` AS `responsible_lawyer`, concat(`l`.`first_name`,' ',`l`.`last_name`) AS `lawyer_name`, `ln`.`id` AS `line_id`, `ln`.`charge_type` AS `charge_type`, `ln`.`service_name` AS `service_name`, `ln`.`rate_snapshot` AS `rate_snapshot`, `ln`.`hours_decimal` AS `hours_decimal`, `ln`.`quantity` AS `quantity`, `ln`.`base_amount` AS `base_amount`, `ln`.`discount_pct` AS `discount_pct`, `ln`.`discount_amount` AS `discount_amount`, `ln`.`line_total` AS `line_total`, `ci`.`disbursement_total` AS `disbursement_total`, `ci`.`tax_total` AS `tax_total`, `ci`.`total` AS `total`, `ci`.`amount_paid` AS `amount_paid`, `ci`.`balance_due` AS `balance_due` FROM (((`client_invoices` `ci` join `client_invoice_lines` `ln` on((`ln`.`invoice_id` = `ci`.`id`))) join `clients` `c` on((`c`.`id` = `ci`.`client_id`))) left join `lawyers` `l` on((`l`.`lawyer_id` = `ci`.`responsible_lawyer`))) ;

-- --------------------------------------------------------

--
-- Structure for view `vw_lawyer_earnings`
--

DROP VIEW IF EXISTS `vw_lawyer_earnings`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vw_lawyer_earnings`  AS SELECT `tl`.`lawyer_id` AS `lawyer_id`, concat(`l`.`first_name`,' ',`l`.`last_name`) AS `lawyer_name`, `l`.`lawyer_type` AS `lawyer_type`, year(`tl`.`work_date`) AS `work_year`, month(`tl`.`work_date`) AS `work_month`, count(`tl`.`log_id`) AS `entry_count`, sum(`tl`.`rounded_minutes`) AS `total_minutes`, round((sum(`tl`.`rounded_minutes`) / 60.0),2) AS `total_hours`, sum((case when (`tl`.`is_billable` = 1) then `tl`.`rounded_minutes` else 0 end)) AS `billable_minutes`, round((sum((case when (`tl`.`is_billable` = 1) then `tl`.`rounded_minutes` else 0 end)) / 60.0),2) AS `billable_hours`, sum(`tl`.`amount`) AS `gross_earnings`, sum((case when (`tl`.`status` = 'billed') then `tl`.`amount` else 0 end)) AS `invoiced_earnings`, sum((case when (`tl`.`status` = 'written_off') then `tl`.`amount` else 0 end)) AS `written_off`, sum((case when ((`tl`.`is_billable` = 1) and (`tl`.`is_billed` = 0) and (`tl`.`status` not in ('written_off','rejected'))) then `tl`.`amount` else 0 end)) AS `unbilled_wip` FROM (`tariff_time_logs` `tl` join `lawyers` `l` on((`l`.`lawyer_id` = `tl`.`lawyer_id`))) WHERE (`tl`.`is_billable` = 1) GROUP BY `tl`.`lawyer_id`, `l`.`first_name`, `l`.`last_name`, `l`.`lawyer_type`, year(`tl`.`work_date`), month(`tl`.`work_date`) ;

-- --------------------------------------------------------

--
-- Structure for view `vw_outstanding_invoices`
--

DROP VIEW IF EXISTS `vw_outstanding_invoices`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vw_outstanding_invoices`  AS SELECT `ci`.`id` AS `id`, `ci`.`invoice_number` AS `invoice_number`, `ci`.`invoice_date` AS `invoice_date`, `ci`.`due_date` AS `due_date`, (to_days(curdate()) - to_days(`ci`.`due_date`)) AS `days_overdue`, (case when ((to_days(curdate()) - to_days(`ci`.`due_date`)) <= 0) then 'Current' when ((to_days(curdate()) - to_days(`ci`.`due_date`)) <= 30) then '1-30 days' when ((to_days(curdate()) - to_days(`ci`.`due_date`)) <= 60) then '31-60 days' when ((to_days(curdate()) - to_days(`ci`.`due_date`)) <= 90) then '61-90 days' else '90+ days' end) AS `age_bucket`, concat(`c`.`first_name`,' ',`c`.`last_name`) AS `client_name`, `ci`.`total` AS `total`, `ci`.`amount_paid` AS `amount_paid`, `ci`.`balance_due` AS `balance_due`, `ci`.`status` AS `status` FROM (`client_invoices` `ci` join `clients` `c` on((`c`.`id` = `ci`.`client_id`))) WHERE ((`ci`.`status` in ('sent','partial','overdue')) AND (`ci`.`balance_due` > 0)) ;

-- --------------------------------------------------------

--
-- Structure for view `vw_unbilled_wip`
--

DROP VIEW IF EXISTS `vw_unbilled_wip`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `vw_unbilled_wip`  AS SELECT `tl`.`client_id` AS `client_id`, concat(`c`.`first_name`,' ',`c`.`last_name`) AS `client_name`, `tl`.`matter_id` AS `matter_id`, `tl`.`case_id` AS `case_id`, `tl`.`lawyer_id` AS `lawyer_id`, concat(`l`.`first_name`,' ',`l`.`last_name`) AS `lawyer_name`, count(`tl`.`log_id`) AS `entry_count`, sum(`tl`.`rounded_minutes`) AS `total_minutes`, round((sum(`tl`.`rounded_minutes`) / 60.0),2) AS `total_hours`, sum(`tl`.`amount`) AS `wip_value`, min(`tl`.`work_date`) AS `earliest_date`, max(`tl`.`work_date`) AS `latest_date` FROM ((`tariff_time_logs` `tl` left join `clients` `c` on((`c`.`id` = `tl`.`client_id`))) left join `lawyers` `l` on((`l`.`lawyer_id` = `tl`.`lawyer_id`))) WHERE ((`tl`.`is_billable` = 1) AND (`tl`.`is_billed` = 0) AND (`tl`.`status` not in ('written_off','rejected'))) GROUP BY `tl`.`client_id`, `c`.`first_name`, `c`.`last_name`, `tl`.`matter_id`, `tl`.`case_id`, `tl`.`lawyer_id`, `l`.`first_name`, `l`.`last_name` ;

-- --------------------------------------------------------

--
-- Structure for view `v_gl_subaccount_display`
--

DROP VIEW IF EXISTS `v_gl_subaccount_display`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_gl_subaccount_display`  AS SELECT `s`.`id` AS `id`, `p`.`account_code` AS `parent_code`, `s`.`sub_code` AS `sub_code`, concat(`p`.`account_code`,'/',`s`.`sub_code`) AS `full_gl_code`, `s`.`account_name` AS `account_name`, `p`.`account_name` AS `parent_name`, `p`.`financial_category` AS `financial_category`, `p`.`is_control_account` AS `is_control_account`, `p`.`is_trust_account` AS `is_trust_account`, `s`.`is_active` AS `is_active` FROM (`general_ledger_subaccounts` `s` join `general_ledger_parent_accounts` `p` on((`p`.`id` = `s`.`parent_id`))) WHERE ((`s`.`deleted_at` is null) AND (`p`.`deleted_at` is null)) ;

--
-- Constraints for dumped tables
--

--
-- Constraints for table `chat_messages`
--
ALTER TABLE `chat_messages`
  ADD CONSTRAINT `chat_messages_chat_id_foreign` FOREIGN KEY (`chat_id`) REFERENCES `chat_rooms` (`chat_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `chat_messages_sender_id_foreign` FOREIGN KEY (`sender_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `chat_messages_updated_by_foreign` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `chat_participants`
--
ALTER TABLE `chat_participants`
  ADD CONSTRAINT `chat_participants_chat_id_foreign` FOREIGN KEY (`chat_id`) REFERENCES `chat_rooms` (`chat_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `chat_participants_updated_by_foreign` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `chat_participants_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `chat_passcodes`
--
ALTER TABLE `chat_passcodes`
  ADD CONSTRAINT `fk_chat_passcodes_created_by` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `fk_chat_passcodes_updated_by` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `fk_chat_passcodes_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `chat_requests`
--
ALTER TABLE `chat_requests`
  ADD CONSTRAINT `chat_requests_receiver_id_foreign` FOREIGN KEY (`receiver_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `chat_requests_sender_id_foreign` FOREIGN KEY (`sender_id`) REFERENCES `users` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `chat_requests_updated_by_foreign` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `chat_rooms`
--
ALTER TABLE `chat_rooms`
  ADD CONSTRAINT `chat_rooms_created_by_foreign` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `chat_rooms_updated_by_foreign` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `client_invoices`
--
ALTER TABLE `client_invoices`
  ADD CONSTRAINT `fk_inv_client` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  ADD CONSTRAINT `fk_inv_currency` FOREIGN KEY (`currency_id`) REFERENCES `currencies` (`currency_id`) ON DELETE RESTRICT ON UPDATE CASCADE;

--
-- Constraints for table `client_invoice_disbursements`
--
ALTER TABLE `client_invoice_disbursements`
  ADD CONSTRAINT `fk_disb_invoice` FOREIGN KEY (`invoice_id`) REFERENCES `client_invoices` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Constraints for table `client_invoice_lines`
--
ALTER TABLE `client_invoice_lines`
  ADD CONSTRAINT `fk_cil_invoice` FOREIGN KEY (`invoice_id`) REFERENCES `client_invoices` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Constraints for table `client_invoice_taxes`
--
ALTER TABLE `client_invoice_taxes`
  ADD CONSTRAINT `fk_itax_invoice` FOREIGN KEY (`invoice_id`) REFERENCES `client_invoices` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `fk_itax_tax` FOREIGN KEY (`tax_id`) REFERENCES `taxes` (`tax_id`) ON DELETE RESTRICT ON UPDATE CASCADE;

--
-- Constraints for table `client_receipts`
--
ALTER TABLE `client_receipts`
  ADD CONSTRAINT `fk_rec_client` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE;

--
-- Constraints for table `client_receipt_lines`
--
ALTER TABLE `client_receipt_lines`
  ADD CONSTRAINT `fk_rline_invoice` FOREIGN KEY (`invoice_id`) REFERENCES `client_invoices` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  ADD CONSTRAINT `fk_rline_receipt` FOREIGN KEY (`receipt_id`) REFERENCES `client_receipts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Constraints for table `currency_rates`
--
ALTER TABLE `currency_rates`
  ADD CONSTRAINT `fk_base_currency` FOREIGN KEY (`base_currency_id`) REFERENCES `currencies` (`currency_id`),
  ADD CONSTRAINT `fk_currency_rates_created_by` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
  ADD CONSTRAINT `fk_currency_rates_updated_by` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
  ADD CONSTRAINT `fk_target_currency` FOREIGN KEY (`target_currency_id`) REFERENCES `currencies` (`currency_id`);

--
-- Constraints for table `diaries`
--
ALTER TABLE `diaries`
  ADD CONSTRAINT `diaries_assigned_to_foreign` FOREIGN KEY (`assigned_to`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `diaries_category_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `diary_categories` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `diaries_created_by_foreign` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `diaries_updated_by_foreign` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`) ON DELETE SET NULL;

--
-- Constraints for table `diary_attachments`
--
ALTER TABLE `diary_attachments`
  ADD CONSTRAINT `diary_attachments_diary_id_foreign` FOREIGN KEY (`diary_id`) REFERENCES `diaries` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `diary_entry_tags`
--
ALTER TABLE `diary_entry_tags`
  ADD CONSTRAINT `diary_entry_tags_diary_id_foreign` FOREIGN KEY (`diary_id`) REFERENCES `diaries` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `diary_entry_tags_tag_id_foreign` FOREIGN KEY (`tag_id`) REFERENCES `diary_tags` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `diary_reminders`
--
ALTER TABLE `diary_reminders`
  ADD CONSTRAINT `diary_reminders_diary_id_foreign` FOREIGN KEY (`diary_id`) REFERENCES `diaries` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `general_journals`
--
ALTER TABLE `general_journals`
  ADD CONSTRAINT `fk_general_journals_currency` FOREIGN KEY (`currency_id`) REFERENCES `currencies` (`currency_id`) ON DELETE RESTRICT ON UPDATE CASCADE,
  ADD CONSTRAINT `fk_general_journals_subaccount` FOREIGN KEY (`account_id`) REFERENCES `general_ledger_subaccounts` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE;

--
-- Constraints for table `general_ledger_parent_accounts`
--
ALTER TABLE `general_ledger_parent_accounts`
  ADD CONSTRAINT `fk_glpa_account_type` FOREIGN KEY (`account_type_id`) REFERENCES `account_types` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE;

--
-- Constraints for table `general_ledger_subaccounts`
--
ALTER TABLE `general_ledger_subaccounts`
  ADD CONSTRAINT `fk_glsa_parent` FOREIGN KEY (`parent_id`) REFERENCES `general_ledger_parent_accounts` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE;

--
-- Constraints for table `group_permissions`
--
ALTER TABLE `group_permissions`
  ADD CONSTRAINT `fk_group_perm_created_by` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`),
  ADD CONSTRAINT `fk_group_perm_feature` FOREIGN KEY (`feature_id`) REFERENCES `permission_features` (`feature_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_group_perm_group` FOREIGN KEY (`group_id`) REFERENCES `user_groups` (`user_group_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_group_perm_updated_by` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`);

--
-- Constraints for table `lexa_chat_history`
--
ALTER TABLE `lexa_chat_history`
  ADD CONSTRAINT `fk_lex_chat_history_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `lexa_conversations`
--
ALTER TABLE `lexa_conversations`
  ADD CONSTRAINT `fk_lex_conversations_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `permission_audit_log`
--
ALTER TABLE `permission_audit_log`
  ADD CONSTRAINT `fk_audit_changed_by` FOREIGN KEY (`changed_by`) REFERENCES `users` (`id`),
  ADD CONSTRAINT `fk_audit_feature` FOREIGN KEY (`feature_id`) REFERENCES `permission_features` (`feature_id`);

--
-- Constraints for table `permission_features`
--
ALTER TABLE `permission_features`
  ADD CONSTRAINT `fk_feature_module` FOREIGN KEY (`module_id`) REFERENCES `permission_modules` (`module_id`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Constraints for table `permission_modules`
--
ALTER TABLE `permission_modules`
  ADD CONSTRAINT `fk_module_parent` FOREIGN KEY (`parent_module_id`) REFERENCES `permission_modules` (`module_id`) ON DELETE SET NULL ON UPDATE CASCADE;

--
-- Constraints for table `supplier_invoice_lines`
--
ALTER TABLE `supplier_invoice_lines`
  ADD CONSTRAINT `supplier_invoice_lines_currency_id_foreign` FOREIGN KEY (`currency_id`) REFERENCES `currencies` (`currency_id`) ON DELETE SET NULL,
  ADD CONSTRAINT `supplier_invoice_lines_gl_subaccount_id_foreign` FOREIGN KEY (`gl_account_id`) REFERENCES `general_ledger_subaccounts` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
  ADD CONSTRAINT `supplier_invoice_lines_invoice_id_foreign` FOREIGN KEY (`invoice_id`) REFERENCES `supplier_invoices` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `supplier_invoice_lines_tax_id_foreign` FOREIGN KEY (`tax_id`) REFERENCES `taxes` (`tax_id`) ON DELETE SET NULL;

--
-- Constraints for table `system_settings`
--
ALTER TABLE `system_settings`
  ADD CONSTRAINT `fk_system_settings_currency` FOREIGN KEY (`default_currency_id`) REFERENCES `currencies` (`currency_id`) ON DELETE SET NULL ON UPDATE CASCADE;

--
-- Constraints for table `tier_permissions`
--
ALTER TABLE `tier_permissions`
  ADD CONSTRAINT `fk_tier_perm_created_by` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`),
  ADD CONSTRAINT `fk_tier_perm_feature` FOREIGN KEY (`feature_id`) REFERENCES `permission_features` (`feature_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_tier_perm_tier` FOREIGN KEY (`tier_id`) REFERENCES `user_tiers` (`tier_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_tier_perm_updated_by` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`);

--
-- Constraints for table `uploaded_chat_files`
--
ALTER TABLE `uploaded_chat_files`
  ADD CONSTRAINT `uploaded_chat_files_chat_id_foreign` FOREIGN KEY (`chat_id`) REFERENCES `chat_rooms` (`chat_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `uploaded_chat_files_updated_by_foreign` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `uploaded_chat_files_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `users`
--
ALTER TABLE `users`
  ADD CONSTRAINT `fk_users_group` FOREIGN KEY (`group_id`) REFERENCES `user_groups` (`user_group_id`),
  ADD CONSTRAINT `fk_users_tier` FOREIGN KEY (`tier_id`) REFERENCES `user_tiers` (`tier_id`);

--
-- Constraints for table `user_chat_settings`
--
ALTER TABLE `user_chat_settings`
  ADD CONSTRAINT `user_chat_settings_updated_by_foreign` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`) ON DELETE SET NULL,
  ADD CONSTRAINT `user_chat_settings_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `user_permissions`
--
ALTER TABLE `user_permissions`
  ADD CONSTRAINT `fk_user_perm_created_by` FOREIGN KEY (`created_by`) REFERENCES `users` (`id`),
  ADD CONSTRAINT `fk_user_perm_feature` FOREIGN KEY (`feature_id`) REFERENCES `permission_features` (`feature_id`) ON DELETE CASCADE,
  ADD CONSTRAINT `fk_user_perm_updated_by` FOREIGN KEY (`updated_by`) REFERENCES `users` (`id`),
  ADD CONSTRAINT `fk_user_perm_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;

--
-- Constraints for table `user_tiers`
--
ALTER TABLE `user_tiers`
  ADD CONSTRAINT `fk_user_tiers_user_group` FOREIGN KEY (`user_group_id`) REFERENCES `user_groups` (`user_group_id`) ON DELETE SET NULL ON UPDATE CASCADE;
COMMIT;

