-- ============================================================
-- Firefly III Evaluation Seed Data
--
-- Task 1: Find Tim Hortons/Starbucks transactions from
--         March 1 through March 7, categorize as Coffee,
--         tag as Cafe, calculate total spent.
--         Expected answer: C$46.50
--
-- Task 2: Set February budgets and determine which are
--         exceeded and by how much.
--         Expected answer:
--           Exceeded: Gas & Transportation (by C$12.10),
--                     Dining Out (by C$1.50),
--                     Shopping (by C$9.99)
-- ============================================================

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

-- ============================================================
-- Clean up existing demo data
-- ============================================================
DELETE FROM `tag_transaction_journal`;
DELETE FROM `category_transaction_journal`;
DELETE FROM `category_transaction`;
DELETE FROM `budget_transaction_journal`;
DELETE FROM `budget_transaction`;
DELETE FROM `auto_budgets`;
DELETE FROM `budget_limits`;
DELETE FROM `available_budgets`;
DELETE FROM `budgets`;
DELETE FROM `transactions`;
DELETE FROM `transaction_journals`;
DELETE FROM `transaction_groups`;
DELETE FROM `account_balances`;
DELETE FROM `account_meta`;
DELETE FROM `accounts` WHERE `account_type_id` IN (1,7,14);
DELETE FROM `categories`;
DELETE FROM `tags`;
DELETE FROM `transaction_currency_user_group`;
DELETE FROM `transaction_currency_user`;

-- ============================================================
-- Enable CAD and USD currencies
-- ============================================================
UPDATE `transaction_currencies` SET `enabled`=0 WHERE `id`=1;  -- disable EUR
UPDATE `transaction_currencies` SET `enabled`=1 WHERE `id`=14; -- enable CAD
UPDATE `transaction_currencies` SET `enabled`=1 WHERE `id`=12; -- enable USD

-- ============================================================
-- Currency defaults: CAD is primary
-- ============================================================
INSERT INTO `transaction_currency_user_group` (`id`,`created_at`,`updated_at`,`user_group_id`,`transaction_currency_id`,`group_default`) VALUES
(1,'2026-02-01 00:00:00','2026-02-01 00:00:00',1,14,1);

INSERT INTO `transaction_currency_user` (`id`,`created_at`,`updated_at`,`user_id`,`transaction_currency_id`,`user_default`) VALUES
(1,'2026-02-01 00:00:00','2026-02-01 00:00:00',1,14,1);

-- ============================================================
-- Update preferences for CAD
-- ============================================================
UPDATE `preferences` SET `data`='[1,2,3,4]' WHERE `name`='frontpageAccounts' AND `user_id`=1;

-- ============================================================
-- Accounts
-- ============================================================

-- Asset accounts (account_type_id=1)
INSERT INTO `accounts` (`id`,`created_at`,`updated_at`,`deleted_at`,`user_id`,`user_group_id`,`account_type_id`,`name`,`virtual_balance`,`iban`,`active`,`encrypted`,`order`,`native_virtual_balance`) VALUES
(1,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,1,'TD Chequing',0.000000000000,NULL,1,0,1,NULL),
(2,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,1,'TD Savings',0.000000000000,NULL,1,0,2,NULL),
(3,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,1,'USD Travel Account',0.000000000000,NULL,1,0,3,NULL),
(4,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,1,'Cash Wallet',0.000000000000,NULL,1,0,4,NULL);

-- Expense accounts (account_type_id=7)
INSERT INTO `accounts` (`id`,`created_at`,`updated_at`,`deleted_at`,`user_id`,`user_group_id`,`account_type_id`,`name`,`virtual_balance`,`iban`,`active`,`encrypted`,`order`,`native_virtual_balance`) VALUES
(5, '2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,7,'Tim Hortons',NULL,NULL,1,0,0,NULL),
(6, '2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,7,'Starbucks',NULL,NULL,1,0,0,NULL),
(7, '2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,7,'Loblaws',NULL,NULL,1,0,0,NULL),
(8, '2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,7,'Amazon.ca',NULL,NULL,1,0,0,NULL),
(9, '2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,7,'Shell Gas Station',NULL,NULL,1,0,0,NULL),
(10,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,7,'Netflix',NULL,NULL,1,0,0,NULL),
(11,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,7,'Uber Eats',NULL,NULL,1,0,0,NULL),
(12,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,7,'Canadian Tire',NULL,NULL,1,0,0,NULL),
(13,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,7,'Shoppers Drug Mart',NULL,NULL,1,0,0,NULL),
(14,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,7,'McDonald''s',NULL,NULL,1,0,0,NULL),
(15,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,7,'Costco',NULL,NULL,1,0,0,NULL),
(16,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,7,'Rogers Wireless',NULL,NULL,1,0,0,NULL),
(17,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,7,'Hydro Ottawa',NULL,NULL,1,0,0,NULL);

-- Revenue accounts (account_type_id=14)
INSERT INTO `accounts` (`id`,`created_at`,`updated_at`,`deleted_at`,`user_id`,`user_group_id`,`account_type_id`,`name`,`virtual_balance`,`iban`,`active`,`encrypted`,`order`,`native_virtual_balance`) VALUES
(18,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,14,'Employer - Payroll',NULL,NULL,1,0,0,NULL),
(19,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,14,'CRA Tax Refund',NULL,NULL,1,0,0,NULL),
(20,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,14,'Freelance USD Client',NULL,NULL,1,0,0,NULL);

-- ============================================================
-- Account metadata
-- ============================================================
INSERT INTO `account_meta` (`id`,`created_at`,`updated_at`,`account_id`,`name`,`data`) VALUES
-- TD Chequing
(1,'2026-02-01 00:00:00','2026-02-01 00:00:00',1,'account_role','"defaultAsset"'),
(2,'2026-02-01 00:00:00','2026-02-01 00:00:00',1,'currency_id','"14"'),
-- TD Savings
(3,'2026-02-01 00:00:00','2026-02-01 00:00:00',2,'account_role','"savingAsset"'),
(4,'2026-02-01 00:00:00','2026-02-01 00:00:00',2,'currency_id','"14"'),
-- USD Travel
(5,'2026-02-01 00:00:00','2026-02-01 00:00:00',3,'account_role','"defaultAsset"'),
(6,'2026-02-01 00:00:00','2026-02-01 00:00:00',3,'currency_id','"12"'),
-- Cash Wallet
(7,'2026-02-01 00:00:00','2026-02-01 00:00:00',4,'account_role','"cashWalletAsset"'),
(8,'2026-02-01 00:00:00','2026-02-01 00:00:00',4,'currency_id','"14"'),
-- Expense account metadata (BIC + account_number, empty)
(9, '2026-02-01 00:00:00','2026-02-01 00:00:00',5, 'BIC','""'),
(10,'2026-02-01 00:00:00','2026-02-01 00:00:00',5, 'account_number','""'),
(11,'2026-02-01 00:00:00','2026-02-01 00:00:00',6, 'BIC','""'),
(12,'2026-02-01 00:00:00','2026-02-01 00:00:00',6, 'account_number','""'),
(13,'2026-02-01 00:00:00','2026-02-01 00:00:00',7, 'BIC','""'),
(14,'2026-02-01 00:00:00','2026-02-01 00:00:00',7, 'account_number','""'),
(15,'2026-02-01 00:00:00','2026-02-01 00:00:00',8, 'BIC','""'),
(16,'2026-02-01 00:00:00','2026-02-01 00:00:00',8, 'account_number','""'),
(17,'2026-02-01 00:00:00','2026-02-01 00:00:00',9, 'BIC','""'),
(18,'2026-02-01 00:00:00','2026-02-01 00:00:00',9, 'account_number','""'),
(19,'2026-02-01 00:00:00','2026-02-01 00:00:00',10,'BIC','""'),
(20,'2026-02-01 00:00:00','2026-02-01 00:00:00',10,'account_number','""'),
(21,'2026-02-01 00:00:00','2026-02-01 00:00:00',11,'BIC','""'),
(22,'2026-02-01 00:00:00','2026-02-01 00:00:00',11,'account_number','""'),
(23,'2026-02-01 00:00:00','2026-02-01 00:00:00',12,'BIC','""'),
(24,'2026-02-01 00:00:00','2026-02-01 00:00:00',12,'account_number','""'),
(25,'2026-02-01 00:00:00','2026-02-01 00:00:00',13,'BIC','""'),
(26,'2026-02-01 00:00:00','2026-02-01 00:00:00',13,'account_number','""'),
(27,'2026-02-01 00:00:00','2026-02-01 00:00:00',14,'BIC','""'),
(28,'2026-02-01 00:00:00','2026-02-01 00:00:00',14,'account_number','""'),
(29,'2026-02-01 00:00:00','2026-02-01 00:00:00',15,'BIC','""'),
(30,'2026-02-01 00:00:00','2026-02-01 00:00:00',15,'account_number','""'),
(31,'2026-02-01 00:00:00','2026-02-01 00:00:00',16,'BIC','""'),
(32,'2026-02-01 00:00:00','2026-02-01 00:00:00',16,'account_number','""'),
(33,'2026-02-01 00:00:00','2026-02-01 00:00:00',17,'BIC','""'),
(34,'2026-02-01 00:00:00','2026-02-01 00:00:00',17,'account_number','""'),
-- Revenue account metadata
(35,'2026-02-01 00:00:00','2026-02-01 00:00:00',18,'BIC','""'),
(36,'2026-02-01 00:00:00','2026-02-01 00:00:00',18,'account_number','""'),
(37,'2026-02-01 00:00:00','2026-02-01 00:00:00',19,'BIC','""'),
(38,'2026-02-01 00:00:00','2026-02-01 00:00:00',19,'account_number','""'),
(39,'2026-02-01 00:00:00','2026-02-01 00:00:00',20,'BIC','""'),
(40,'2026-02-01 00:00:00','2026-02-01 00:00:00',20,'account_number','""');

-- ============================================================
-- Categories (deliberately NO "Coffee" category)
-- ============================================================
INSERT INTO `categories` (`id`,`created_at`,`updated_at`,`deleted_at`,`user_id`,`user_group_id`,`name`,`encrypted`) VALUES
(1,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,'Groceries',0),
(2,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,'Gas & Transportation',0),
(3,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,'Entertainment',0),
(4,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,'Utilities & Bills',0),
(5,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,'Dining Out',0),
(6,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,'Shopping',0),
(7,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,'Health & Personal Care',0);

-- ============================================================
-- Tags (deliberately NO "Cafe" tag)
-- ============================================================
INSERT INTO `tags` (`id`,`created_at`,`updated_at`,`deleted_at`,`user_id`,`user_group_id`,`tag`,`tag_mode`,`date`,`date_tz`,`description`,`latitude`,`longitude`,`zoomLevel`) VALUES
(1,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,'essential','nothing',NULL,NULL,NULL,NULL,NULL,NULL),
(2,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,'recurring','nothing',NULL,NULL,NULL,NULL,NULL,NULL),
(3,'2026-02-01 00:00:00','2026-02-01 00:00:00',NULL,1,1,'impulse-buy','nothing',NULL,NULL,NULL,NULL,NULL,NULL);

-- ============================================================
-- Transaction Groups (one per transaction, 31 total)
-- ============================================================
INSERT INTO `transaction_groups` (`id`,`created_at`,`updated_at`,`deleted_at`,`user_id`,`user_group_id`,`title`) VALUES
(1, '2026-02-15 00:00:00','2026-02-15 00:00:00',NULL,1,1,NULL),
(2, '2026-02-18 00:00:00','2026-02-18 00:00:00',NULL,1,1,NULL),
(3, '2026-02-20 00:00:00','2026-02-20 00:00:00',NULL,1,1,NULL),
(4, '2026-02-20 00:00:00','2026-02-20 00:00:00',NULL,1,1,NULL),
(5, '2026-02-22 00:00:00','2026-02-22 00:00:00',NULL,1,1,NULL),
(6, '2026-02-23 00:00:00','2026-02-23 00:00:00',NULL,1,1,NULL),
(7, '2026-02-25 00:00:00','2026-02-25 00:00:00',NULL,1,1,NULL),
(8, '2026-02-25 00:00:00','2026-02-25 00:00:00',NULL,1,1,NULL),
(9, '2026-02-26 00:00:00','2026-02-26 00:00:00',NULL,1,1,NULL),
(10,'2026-02-27 00:00:00','2026-02-27 00:00:00',NULL,1,1,NULL),
(11,'2026-02-28 00:00:00','2026-02-28 00:00:00',NULL,1,1,NULL),
(12,'2026-03-01 00:00:00','2026-03-01 00:00:00',NULL,1,1,NULL),
(13,'2026-03-01 00:00:00','2026-03-01 00:00:00',NULL,1,1,NULL),
(14,'2026-03-02 00:00:00','2026-03-02 00:00:00',NULL,1,1,NULL),
(15,'2026-03-02 00:00:00','2026-03-02 00:00:00',NULL,1,1,NULL),
(16,'2026-03-03 00:00:00','2026-03-03 00:00:00',NULL,1,1,NULL),
(17,'2026-03-03 00:00:00','2026-03-03 00:00:00',NULL,1,1,NULL),
(18,'2026-03-03 00:00:00','2026-03-03 00:00:00',NULL,1,1,NULL),
(19,'2026-03-04 00:00:00','2026-03-04 00:00:00',NULL,1,1,NULL),
(20,'2026-03-04 00:00:00','2026-03-04 00:00:00',NULL,1,1,NULL),
(21,'2026-03-05 00:00:00','2026-03-05 00:00:00',NULL,1,1,NULL),
(22,'2026-03-05 00:00:00','2026-03-05 00:00:00',NULL,1,1,NULL),
(23,'2026-03-06 00:00:00','2026-03-06 00:00:00',NULL,1,1,NULL),
(24,'2026-03-06 00:00:00','2026-03-06 00:00:00',NULL,1,1,NULL),
(25,'2026-03-07 00:00:00','2026-03-07 00:00:00',NULL,1,1,NULL),
(26,'2026-03-08 00:00:00','2026-03-08 00:00:00',NULL,1,1,NULL),
(27,'2026-03-09 00:00:00','2026-03-09 00:00:00',NULL,1,1,NULL),
(28,'2026-03-10 00:00:00','2026-03-10 00:00:00',NULL,1,1,NULL),
(29,'2026-03-10 00:00:00','2026-03-10 00:00:00',NULL,1,1,NULL),
(30,'2026-03-11 00:00:00','2026-03-11 00:00:00',NULL,1,1,NULL),
(31,'2026-03-12 00:00:00','2026-03-12 00:00:00',NULL,1,1,NULL);

-- ============================================================
-- Transaction Journals
-- Types: 1=Deposit, 6=Transfer, 7=Withdrawal
-- Currency: 14=CAD, 12=USD
-- tag_count: number of tags on that journal
-- ============================================================
INSERT INTO `transaction_journals` (`id`,`created_at`,`updated_at`,`deleted_at`,`user_id`,`user_group_id`,`transaction_type_id`,`transaction_group_id`,`bill_id`,`transaction_currency_id`,`description`,`date`,`date_tz`,`interest_date`,`book_date`,`process_date`,`order`,`tag_count`,`encrypted`,`completed`) VALUES
-- February 2026
(1, '2026-02-15 00:00:00','2026-02-15 00:00:00',NULL,1,1,1, 1, NULL,14,'Salary - first half of February',       '2026-02-15 00:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(2, '2026-02-18 00:00:00','2026-02-18 00:00:00',NULL,1,1,7, 2, NULL,14,'Weekly groceries',                       '2026-02-18 00:00:00','America/Toronto',NULL,NULL,NULL,0,1,0,1),
(3, '2026-02-20 00:00:00','2026-02-20 00:00:00',NULL,1,1,7, 3, NULL,14,'Gas fill-up',                            '2026-02-20 00:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(4, '2026-02-20 00:00:00','2026-02-20 00:00:00',NULL,1,1,1, 4, NULL,12,'Freelance web design payment',           '2026-02-20 00:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(5, '2026-02-22 00:00:00','2026-02-22 00:00:00',NULL,1,1,7, 5, NULL,14,'Netflix monthly subscription',           '2026-02-22 00:00:00','America/Toronto',NULL,NULL,NULL,0,1,0,1),
(6, '2026-02-23 00:00:00','2026-02-23 00:00:00',NULL,1,1,7, 6, NULL,14,'Rogers phone bill',                      '2026-02-23 00:00:00','America/Toronto',NULL,NULL,NULL,0,1,0,1),
(7, '2026-02-25 00:00:00','2026-02-25 00:00:00',NULL,1,1,7, 7, NULL,14,'Flat white and scone',                   '2026-02-25 00:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(8, '2026-02-25 00:00:00','2026-02-25 00:00:00',NULL,1,1,7, 8, NULL,14,'Medium double double',                   '2026-02-25 00:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(9, '2026-02-26 00:00:00','2026-02-26 00:00:00',NULL,1,1,7, 9, NULL,14,'Bluetooth headphones',                   '2026-02-26 00:00:00','America/Toronto',NULL,NULL,NULL,0,1,0,1),
(10,'2026-02-27 00:00:00','2026-02-27 00:00:00',NULL,1,1,7,10, NULL,14,'Costco bulk shopping',                   '2026-02-27 00:00:00','America/Toronto',NULL,NULL,NULL,0,1,0,1),
(11,'2026-02-28 00:00:00','2026-02-28 00:00:00',NULL,1,1,1,11, NULL,14,'Salary - second half of February',       '2026-02-28 00:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),

-- March 1-7: FIRST WEEK OF MARCH (Tim Hortons/Starbucks have NO category, NO tag)
(12,'2026-03-01 09:15:00','2026-03-01 09:15:00',NULL,1,1,7,12, NULL,14,'Double double and muffin',               '2026-03-01 09:15:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(13,'2026-03-01 00:00:00','2026-03-01 00:00:00',NULL,1,1,7,13, NULL,14,'Netflix monthly subscription',           '2026-03-01 00:00:00','America/Toronto',NULL,NULL,NULL,0,1,0,1),
(14,'2026-03-02 08:30:00','2026-03-02 08:30:00',NULL,1,1,7,14, NULL,14,'Grande latte',                           '2026-03-02 08:30:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(15,'2026-03-02 00:00:00','2026-03-02 00:00:00',NULL,1,1,7,15, NULL,14,'Weekly groceries',                       '2026-03-02 00:00:00','America/Toronto',NULL,NULL,NULL,0,1,0,1),
(16,'2026-03-03 07:45:00','2026-03-03 07:45:00',NULL,1,1,7,16, NULL,14,'Large coffee and bagel BELT',            '2026-03-03 07:45:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(17,'2026-03-03 00:00:00','2026-03-03 00:00:00',NULL,1,1,7,17, NULL,14,'Gas fill-up',                            '2026-03-03 00:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(18,'2026-03-03 00:00:00','2026-03-03 00:00:00',NULL,1,1,6,18, NULL,14,'Transfer to savings',                    '2026-03-03 00:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(19,'2026-03-04 08:00:00','2026-03-04 08:00:00',NULL,1,1,7,19, NULL,14,'Venti caramel macchiato',                '2026-03-04 08:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(20,'2026-03-04 00:00:00','2026-03-04 00:00:00',NULL,1,1,7,20, NULL,14,'Dinner delivery',                        '2026-03-04 00:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(21,'2026-03-05 09:00:00','2026-03-05 09:00:00',NULL,1,1,7,21, NULL,14,'Large dark roast',                       '2026-03-05 09:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(22,'2026-03-05 00:00:00','2026-03-05 00:00:00',NULL,1,1,7,22, NULL,14,'Lunch combo',                            '2026-03-05 12:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(23,'2026-03-06 08:15:00','2026-03-06 08:15:00',NULL,1,1,7,23, NULL,14,'Pike Place and cake pop',                '2026-03-06 08:15:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(24,'2026-03-06 00:00:00','2026-03-06 00:00:00',NULL,1,1,7,24, NULL,14,'Vitamins and toiletries',                '2026-03-06 00:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(25,'2026-03-07 07:30:00','2026-03-07 07:30:00',NULL,1,1,7,25, NULL,14,'Iced capp and donut',                    '2026-03-07 07:30:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),

-- After first week of March
(26,'2026-03-08 00:00:00','2026-03-08 00:00:00',NULL,1,1,7,26, NULL,14,'Windshield wipers',                      '2026-03-08 00:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(27,'2026-03-09 00:00:00','2026-03-09 00:00:00',NULL,1,1,7,27, NULL,14,'Weekly groceries',                       '2026-03-09 00:00:00','America/Toronto',NULL,NULL,NULL,0,1,0,1),
(28,'2026-03-10 09:00:00','2026-03-10 09:00:00',NULL,1,1,7,28, NULL,14,'Roll Up the Rim coffee',                 '2026-03-10 09:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(29,'2026-03-10 08:45:00','2026-03-10 08:45:00',NULL,1,1,7,29, NULL,14,'Matcha latte',                           '2026-03-10 08:45:00','America/Toronto',NULL,NULL,NULL,0,0,0,1),
(30,'2026-03-11 00:00:00','2026-03-11 00:00:00',NULL,1,1,7,30, NULL,14,'Electricity bill',                       '2026-03-11 00:00:00','America/Toronto',NULL,NULL,NULL,0,1,0,1),
(31,'2026-03-12 00:00:00','2026-03-12 00:00:00',NULL,1,1,7,31, NULL,12,'Amazon US order - Programming books',    '2026-03-12 00:00:00','America/Toronto',NULL,NULL,NULL,0,0,0,1);

-- ============================================================
-- Transactions (2 rows per journal: source and destination)
-- balance_dirty=1 so Firefly recalculates balances
-- ============================================================
INSERT INTO `transactions` (`id`,`created_at`,`updated_at`,`deleted_at`,`reconciled`,`account_id`,`transaction_journal_id`,`description`,`transaction_currency_id`,`amount`,`balance_before`,`balance_after`,`balance_dirty`,`foreign_amount`,`foreign_currency_id`,`identifier`,`native_amount`,`native_foreign_amount`) VALUES
-- TJ1: Salary deposit Feb 15 (Employer->Chequing, CAD 3500)
(1, '2026-02-15 00:00:00','2026-02-15 00:00:00',NULL,0,18,1,NULL,14,-3500.000000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(2, '2026-02-15 00:00:00','2026-02-15 00:00:00',NULL,0,1, 1,NULL,14, 3500.000000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ2: Groceries Feb 18 (Chequing->Loblaws, CAD 87.43)
(3, '2026-02-18 00:00:00','2026-02-18 00:00:00',NULL,0,1, 2,NULL,14,-87.430000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(4, '2026-02-18 00:00:00','2026-02-18 00:00:00',NULL,0,7, 2,NULL,14, 87.430000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ3: Gas Feb 20 (Chequing->Shell, CAD 62.10)
(5, '2026-02-20 00:00:00','2026-02-20 00:00:00',NULL,0,1, 3,NULL,14,-62.100000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(6, '2026-02-20 00:00:00','2026-02-20 00:00:00',NULL,0,9, 3,NULL,14, 62.100000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ4: Freelance deposit Feb 20 (Freelance->USD Acct, USD 750)
(7, '2026-02-20 00:00:00','2026-02-20 00:00:00',NULL,0,20,4,NULL,12,-750.000000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(8, '2026-02-20 00:00:00','2026-02-20 00:00:00',NULL,0,3, 4,NULL,12, 750.000000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ5: Netflix Feb 22 (Chequing->Netflix, CAD 16.99)
(9, '2026-02-22 00:00:00','2026-02-22 00:00:00',NULL,0,1, 5,NULL,14,-16.990000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(10,'2026-02-22 00:00:00','2026-02-22 00:00:00',NULL,0,10,5,NULL,14, 16.990000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ6: Rogers Feb 23 (Chequing->Rogers, CAD 75.00)
(11,'2026-02-23 00:00:00','2026-02-23 00:00:00',NULL,0,1, 6,NULL,14,-75.000000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(12,'2026-02-23 00:00:00','2026-02-23 00:00:00',NULL,0,16,6,NULL,14, 75.000000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ7: Starbucks Feb 25 (Chequing->Starbucks, CAD 9.35) -- HAS category (Dining Out)
(13,'2026-02-25 00:00:00','2026-02-25 00:00:00',NULL,0,1, 7,NULL,14,-9.350000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(14,'2026-02-25 00:00:00','2026-02-25 00:00:00',NULL,0,6, 7,NULL,14, 9.350000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ8: Tim Hortons Feb 25 (Chequing->Tim Hortons, CAD 2.15) -- HAS category (Dining Out)
(15,'2026-02-25 00:00:00','2026-02-25 00:00:00',NULL,0,1, 8,NULL,14,-2.150000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(16,'2026-02-25 00:00:00','2026-02-25 00:00:00',NULL,0,5, 8,NULL,14, 2.150000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ9: Amazon headphones Feb 26 (Chequing->Amazon, CAD 49.99)
(17,'2026-02-26 00:00:00','2026-02-26 00:00:00',NULL,0,1, 9,NULL,14,-49.990000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(18,'2026-02-26 00:00:00','2026-02-26 00:00:00',NULL,0,8, 9,NULL,14, 49.990000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ10: Costco Feb 27 (Chequing->Costco, CAD 156.82)
(19,'2026-02-27 00:00:00','2026-02-27 00:00:00',NULL,0,1, 10,NULL,14,-156.820000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(20,'2026-02-27 00:00:00','2026-02-27 00:00:00',NULL,0,15,10,NULL,14, 156.820000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ11: Salary deposit Feb 28 (Employer->Chequing, CAD 3500)
(21,'2026-02-28 00:00:00','2026-02-28 00:00:00',NULL,0,18,11,NULL,14,-3500.000000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(22,'2026-02-28 00:00:00','2026-02-28 00:00:00',NULL,0,1, 11,NULL,14, 3500.000000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- ====== FIRST WEEK OF MARCH: TARGET TRANSACTIONS (no category, no tag) ======

-- TJ12: Tim Hortons Mar 1 - "Double double and muffin" CAD 5.47
(23,'2026-03-01 09:15:00','2026-03-01 09:15:00',NULL,0,1, 12,NULL,14,-5.470000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(24,'2026-03-01 09:15:00','2026-03-01 09:15:00',NULL,0,5, 12,NULL,14, 5.470000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ13: Netflix Mar 1 (Chequing->Netflix, CAD 16.99)
(25,'2026-03-01 00:00:00','2026-03-01 00:00:00',NULL,0,1, 13,NULL,14,-16.990000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(26,'2026-03-01 00:00:00','2026-03-01 00:00:00',NULL,0,10,13,NULL,14, 16.990000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ14: Starbucks Mar 2 - "Grande latte" CAD 6.45
(27,'2026-03-02 08:30:00','2026-03-02 08:30:00',NULL,0,1, 14,NULL,14,-6.450000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(28,'2026-03-02 08:30:00','2026-03-02 08:30:00',NULL,0,6, 14,NULL,14, 6.450000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ15: Loblaws Mar 2 (Chequing->Loblaws, CAD 93.21)
(29,'2026-03-02 00:00:00','2026-03-02 00:00:00',NULL,0,1, 15,NULL,14,-93.210000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(30,'2026-03-02 00:00:00','2026-03-02 00:00:00',NULL,0,7, 15,NULL,14, 93.210000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ16: Tim Hortons Mar 3 - "Large coffee and bagel BELT" CAD 8.23
(31,'2026-03-03 07:45:00','2026-03-03 07:45:00',NULL,0,1, 16,NULL,14,-8.230000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(32,'2026-03-03 07:45:00','2026-03-03 07:45:00',NULL,0,5, 16,NULL,14, 8.230000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ17: Shell gas Mar 3 (Chequing->Shell, CAD 58.40)
(33,'2026-03-03 00:00:00','2026-03-03 00:00:00',NULL,0,1, 17,NULL,14,-58.400000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(34,'2026-03-03 00:00:00','2026-03-03 00:00:00',NULL,0,9, 17,NULL,14, 58.400000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ18: Transfer to savings Mar 3 (Chequing->Savings, CAD 500)
(35,'2026-03-03 00:00:00','2026-03-03 00:00:00',NULL,0,1, 18,NULL,14,-500.000000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(36,'2026-03-03 00:00:00','2026-03-03 00:00:00',NULL,0,2, 18,NULL,14, 500.000000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ19: Starbucks Mar 4 - "Venti caramel macchiato" CAD 7.20
(37,'2026-03-04 08:00:00','2026-03-04 08:00:00',NULL,0,1, 19,NULL,14,-7.200000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(38,'2026-03-04 08:00:00','2026-03-04 08:00:00',NULL,0,6, 19,NULL,14, 7.200000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ20: Uber Eats Mar 4 (Chequing->Uber Eats, CAD 32.15)
(39,'2026-03-04 00:00:00','2026-03-04 00:00:00',NULL,0,1, 20,NULL,14,-32.150000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(40,'2026-03-04 00:00:00','2026-03-04 00:00:00',NULL,0,11,20,NULL,14, 32.150000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ21: Tim Hortons Mar 5 - "Large dark roast" CAD 2.35
(41,'2026-03-05 09:00:00','2026-03-05 09:00:00',NULL,0,1, 21,NULL,14,-2.350000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(42,'2026-03-05 09:00:00','2026-03-05 09:00:00',NULL,0,5, 21,NULL,14, 2.350000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ22: McDonald's Mar 5 (Chequing->McDonald's, CAD 12.49)
(43,'2026-03-05 12:00:00','2026-03-05 12:00:00',NULL,0,1, 22,NULL,14,-12.490000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(44,'2026-03-05 12:00:00','2026-03-05 12:00:00',NULL,0,14,22,NULL,14, 12.490000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ23: Starbucks Mar 6 - "Pike Place and cake pop" CAD 8.95
(45,'2026-03-06 08:15:00','2026-03-06 08:15:00',NULL,0,1, 23,NULL,14,-8.950000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(46,'2026-03-06 08:15:00','2026-03-06 08:15:00',NULL,0,6, 23,NULL,14, 8.950000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ24: Shoppers Drug Mart Mar 6 (Chequing->Shoppers, CAD 34.67)
(47,'2026-03-06 00:00:00','2026-03-06 00:00:00',NULL,0,1, 24,NULL,14,-34.670000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(48,'2026-03-06 00:00:00','2026-03-06 00:00:00',NULL,0,13,24,NULL,14, 34.670000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ25: Tim Hortons Mar 7 - "Iced capp and donut" CAD 7.85
(49,'2026-03-07 07:30:00','2026-03-07 07:30:00',NULL,0,1, 25,NULL,14,-7.850000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(50,'2026-03-07 07:30:00','2026-03-07 07:30:00',NULL,0,5, 25,NULL,14, 7.850000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- ====== AFTER FIRST WEEK (distractors) ======

-- TJ26: Canadian Tire Mar 8 (Chequing->Can Tire, CAD 28.99)
(51,'2026-03-08 00:00:00','2026-03-08 00:00:00',NULL,0,1, 26,NULL,14,-28.990000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(52,'2026-03-08 00:00:00','2026-03-08 00:00:00',NULL,0,12,26,NULL,14, 28.990000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ27: Loblaws Mar 9 (Chequing->Loblaws, CAD 71.33)
(53,'2026-03-09 00:00:00','2026-03-09 00:00:00',NULL,0,1, 27,NULL,14,-71.330000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(54,'2026-03-09 00:00:00','2026-03-09 00:00:00',NULL,0,7, 27,NULL,14, 71.330000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ28: Tim Hortons Mar 10 - DISTRACTOR (outside first week, no category)
(55,'2026-03-10 09:00:00','2026-03-10 09:00:00',NULL,0,1, 28,NULL,14,-3.450000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(56,'2026-03-10 09:00:00','2026-03-10 09:00:00',NULL,0,5, 28,NULL,14, 3.450000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ29: Starbucks Mar 10 - DISTRACTOR (outside first week, no category)
(57,'2026-03-10 08:45:00','2026-03-10 08:45:00',NULL,0,1, 29,NULL,14,-6.750000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(58,'2026-03-10 08:45:00','2026-03-10 08:45:00',NULL,0,6, 29,NULL,14, 6.750000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ30: Hydro Ottawa Mar 11 (Chequing->Hydro, CAD 142.50)
(59,'2026-03-11 00:00:00','2026-03-11 00:00:00',NULL,0,1, 30,NULL,14,-142.500000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(60,'2026-03-11 00:00:00','2026-03-11 00:00:00',NULL,0,17,30,NULL,14, 142.500000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),

-- TJ31: Amazon US order Mar 12 (USD Acct->Amazon, USD 45.99)
(61,'2026-03-12 00:00:00','2026-03-12 00:00:00',NULL,0,3, 31,NULL,12,-45.990000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL),
(62,'2026-03-12 00:00:00','2026-03-12 00:00:00',NULL,0,8, 31,NULL,12, 45.990000000000,NULL,NULL,1,NULL,NULL,0,NULL,NULL);

-- ============================================================
-- Category <-> Transaction Journal links
-- Only for non-target transactions
-- ============================================================
INSERT INTO `category_transaction_journal` (`id`,`category_id`,`transaction_journal_id`) VALUES
-- Feb transactions with categories
(1, 1, 2),   -- TJ2:  Groceries -> Weekly groceries
(2, 2, 3),   -- TJ3:  Gas & Transportation -> Gas fill-up
(3, 3, 5),   -- TJ5:  Entertainment -> Netflix
(4, 4, 6),   -- TJ6:  Utilities & Bills -> Rogers
(5, 5, 7),   -- TJ7:  Dining Out -> Starbucks Feb 25
(6, 5, 8),   -- TJ8:  Dining Out -> Tim Hortons Feb 25
(7, 6, 9),   -- TJ9:  Shopping -> Bluetooth headphones
(8, 1, 10),  -- TJ10: Groceries -> Costco
-- March transactions with categories (NOT the Tim Hortons/Starbucks first-week ones)
(9,  3, 13), -- TJ13: Entertainment -> Netflix Mar 1
(10, 1, 15), -- TJ15: Groceries -> Loblaws Mar 2
(11, 2, 17), -- TJ17: Gas & Transportation -> Shell Mar 3
(12, 5, 20), -- TJ20: Dining Out -> Uber Eats Mar 4
(13, 5, 22), -- TJ22: Dining Out -> McDonald's Mar 5
(14, 7, 24), -- TJ24: Health & Personal Care -> Shoppers Mar 6
(15, 6, 26), -- TJ26: Shopping -> Canadian Tire Mar 8
(16, 1, 27), -- TJ27: Groceries -> Loblaws Mar 9
(17, 4, 30), -- TJ30: Utilities & Bills -> Hydro Ottawa Mar 11
(18, 6, 31); -- TJ31: Shopping -> Amazon US Mar 12

-- ============================================================
-- Tag <-> Transaction Journal links
-- Only for non-target transactions
-- ============================================================
INSERT INTO `tag_transaction_journal` (`id`,`tag_id`,`transaction_journal_id`) VALUES
(1, 1, 2),   -- essential -> Weekly groceries Feb
(2, 2, 5),   -- recurring -> Netflix Feb
(3, 2, 6),   -- recurring -> Rogers Feb
(4, 3, 9),   -- impulse-buy -> Bluetooth headphones
(5, 1, 10),  -- essential -> Costco Feb
(6, 2, 13),  -- recurring -> Netflix Mar
(7, 1, 15),  -- essential -> Loblaws Mar
(8, 1, 27),  -- essential -> Loblaws Mar 9
(9, 2, 30);  -- recurring -> Hydro Ottawa Mar

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;

-- ============================================================
-- TASK 1 VERIFICATION:
-- Target transactions (Tim Hortons/Starbucks, March 1-7):
--   TJ12: Tim Hortons  Mar 1  C$5.47
--   TJ14: Starbucks    Mar 2  C$6.45
--   TJ16: Tim Hortons  Mar 3  C$8.23
--   TJ19: Starbucks    Mar 4  C$7.20
--   TJ21: Tim Hortons  Mar 5  C$2.35
--   TJ23: Starbucks    Mar 6  C$8.95
--   TJ25: Tim Hortons  Mar 7  C$7.85
-- Total: C$46.50
--
-- Distractors (should NOT be included):
--   TJ7:  Starbucks    Feb 25 C$9.35  (before March)
--   TJ8:  Tim Hortons  Feb 25 C$2.15  (before March)
--   TJ28: Tim Hortons  Mar 10 C$3.45  (after first week)
--   TJ29: Starbucks    Mar 10 C$6.75  (after first week)
-- ============================================================
--
-- ============================================================
-- TASK 2 VERIFICATION:
-- February spending by category:
--   Groceries:           C$87.43 + C$156.82 = C$244.25
--   Gas & Transportation: C$62.10
--   Entertainment:        C$16.99
--   Utilities & Bills:    C$75.00
--   Dining Out:           C$9.35 + C$2.15 = C$11.50
--   Shopping:             C$49.99
--
-- Budgets vs Actual:
--   Groceries:            Budget C$300   | Spent C$244.25 | UNDER by C$55.75
--   Gas & Transportation: Budget C$50    | Spent C$62.10  | EXCEEDED by C$12.10
--   Entertainment:        Budget C$25    | Spent C$16.99  | UNDER by C$8.01
--   Utilities & Bills:    Budget C$100   | Spent C$75.00  | UNDER by C$25.00
--   Dining Out:           Budget C$10    | Spent C$11.50  | EXCEEDED by C$1.50
--   Shopping:             Budget C$40    | Spent C$49.99  | EXCEEDED by C$9.99
-- ============================================================
