-- =====================================================================
-- Book Stock Update — FINAL CORRECTED VERSION — 30 July 2026
-- 65 exact matches  +  16 ID-resolved  =  81 books updated
-- 22 entries SKIPPED (see bottom — need confirmation or catalog entry)
-- All updates use book ID — immune to title case/encoding differences
-- =====================================================================

-- Step 1: Point to existing Online Store (Website) location — ID=1, code=WEBSITE
-- (already exists in inventory_stocklocation — no insert needed)
SET @loc_id = 1;

-- =====================================================================
-- Step 2: catalog_app_book.stock  (81 books)
-- =====================================================================

-- ── 65 exact title matches ─────────────────────────────────────────
UPDATE `catalog_app_book` SET `stock`= 37 WHERE `id`=  7;  -- A PILLAR OF HOPE
UPDATE `catalog_app_book` SET `stock`= 13 WHERE `id`= 11;  -- DANCE OF THE MONKEYS
UPDATE `catalog_app_book` SET `stock`= 17 WHERE `id`=  9;  -- OF GOATS AND POISONED ORANGES
UPDATE `catalog_app_book` SET `stock`= 20 WHERE `id`=  1;  -- WHAT HAPPENED TO US?
UPDATE `catalog_app_book` SET `stock`= 21 WHERE `id`=  2;  -- BORN TO BE UNSTOPPABLE
UPDATE `catalog_app_book` SET `stock`=  2 WHERE `id`= 92;  -- DAWN OF FORTUNE
UPDATE `catalog_app_book` SET `stock`= 30 WHERE `id`=  3;  -- DESIRE AT DAWN
UPDATE `catalog_app_book` SET `stock`= 14 WHERE `id`=  4;  -- RENDITIONS OF THE SOUL
UPDATE `catalog_app_book` SET `stock`= 13 WHERE `id`=  5;  -- WHEN THE WORLD IN MY VOICE SINGS
UPDATE `catalog_app_book` SET `stock`= 24 WHERE `id`= 13;  -- AN AUTOBIOGRAPHY: AVIATOR PAR EXCELLENCE
UPDATE `catalog_app_book` SET `stock`= 14 WHERE `id`= 14;  -- NEW CONFIDENT AFRICA
UPDATE `catalog_app_book` SET `stock`= 30 WHERE `id`= 31;  -- TOMORROW I WILL BE HERE
UPDATE `catalog_app_book` SET `stock`= 20 WHERE `id`= 15;  -- WHEN RIVERS SAY GOODBYE
UPDATE `catalog_app_book` SET `stock`=  9 WHERE `id`= 93;  -- SINNERS
UPDATE `catalog_app_book` SET `stock`=  8 WHERE `id`= 16;  -- DREAM OF AFRICA: CHAOS BEFORE ORDER
UPDATE `catalog_app_book` SET `stock`= 20 WHERE `id`=  8;  -- THE GEN Z PARENT
UPDATE `catalog_app_book` SET `stock`= 10 WHERE `id`= 17;  -- THE CROOKED SOCIETY
UPDATE `catalog_app_book` SET `stock`=  8 WHERE `id`= 19;  -- BREAKING THE ORPHAN SPIRIT
UPDATE `catalog_app_book` SET `stock`=  7 WHERE `id`= 88;  -- THE PRESENT HINDSIGHT
UPDATE `catalog_app_book` SET `stock`=  8 WHERE `id`= 87;  -- STRANDED
UPDATE `catalog_app_book` SET `stock`=  7 WHERE `id`= 20;  -- A REFLECTION ON OUR CULTURES
UPDATE `catalog_app_book` SET `stock`= 18 WHERE `id`= 24;  -- THE DAYS OF HIS POWER
UPDATE `catalog_app_book` SET `stock`=  7 WHERE `id`= 25;  -- TRUST THE CLOCKMASTER
UPDATE `catalog_app_book` SET `stock`= 14 WHERE `id`= 26;  -- HEART AND SKILL
UPDATE `catalog_app_book` SET `stock`= 14 WHERE `id`= 27;  -- THE HEART OF A WORSHIPPER
UPDATE `catalog_app_book` SET `stock`= 15 WHERE `id`= 28;  -- THE POWER OF CHOICE
UPDATE `catalog_app_book` SET `stock`= 15 WHERE `id`= 29;  -- THE LIFE OF A WORSHIPPER
UPDATE `catalog_app_book` SET `stock`=  9 WHERE `id`= 32;  -- THE INCOMPLETE GRAVESTONE
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 63;  -- ADAM AND THE GARDEN PROMISE SERIES 1
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 64;  -- NOAH AND THE RAINBOW PROMISE SERIES 2
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 65;  -- ABRAHAM AND THE STARRY PROMISE SERIES 3
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 66;  -- MOSES AND THE MOUNTAIN PROMISE SERIES 4
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 67;  -- DAVID THE KINGLY PROMISE SERIES 5
UPDATE `catalog_app_book` SET `stock`=  1 WHERE `id`= 68;  -- JESUS THE GREATEST PROMISE SERIES 6
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 76;  -- RAY'S CULTURAL QUEST PART 1
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 77;  -- CULTURAL CLUB ADVENTURE PART 2
UPDATE `catalog_app_book` SET `stock`=  4 WHERE `id`= 36;  -- CONFESSIONS OF NAIROBI MEN
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 37;  -- GUILTY
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 38;  -- DAMN, GIRL! STOP THAT
UPDATE `catalog_app_book` SET `stock`=  2 WHERE `id`= 39;  -- THINGS I WILL TELL MY DAUGHTER
UPDATE `catalog_app_book` SET `stock`=  4 WHERE `id`= 41;  -- CONFESSIONS OF NAIROBI MEN BOOK 2
UPDATE `catalog_app_book` SET `stock`=  6 WHERE `id`= 42;  -- MAD WOMEN
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 43;  -- CONFESSIONS OF NAIROBI MEN AND WOMEN: THE LAST CHAPTER
UPDATE `catalog_app_book` SET `stock`=  5 WHERE `id`= 44;  -- CONFESSIONS OF NAIROBI WOMEN
UPDATE `catalog_app_book` SET `stock`=  1 WHERE `id`= 45;  -- EVERYTHING I KNOW ABOUT LIFE
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 46;  -- LETTERS TO MY SON
UPDATE `catalog_app_book` SET `stock`=  6 WHERE `id`= 47;  -- CONFESSION OF NAIROBI WOMEN: BOOK TWO
UPDATE `catalog_app_book` SET `stock`=  5 WHERE `id`= 48;  -- QUEENEX CRE ACTIVITIES PRACTICE BOOK - PLAY GROUP
UPDATE `catalog_app_book` SET `stock`=  8 WHERE `id`= 49;  -- QUEENEX CRE ACTIVITIES PRACTICE BOOK - PRE-PRIMARY 1 (PP1)
UPDATE `catalog_app_book` SET `stock`=  5 WHERE `id`= 50;  -- QUEENEX CRE ACTIVITIES PRACTICE BOOK - PRE-PRIMARY 2 (PP2)
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 51;  -- QUEENEX ENVIRONMENTAL ACTIVITIES PRACTICE BOOK - PLAY GROUP
UPDATE `catalog_app_book` SET `stock`=  7 WHERE `id`= 52;  -- QUEENEX LANGUAGE ACTIVITIES PRACTICE BOOK - PLAY GROUP
UPDATE `catalog_app_book` SET `stock`=  7 WHERE `id`= 53;  -- QUEENEX LANGUAGE ACTIVITIES PRACTICE BOOK - PRE-PRIMARY 1 (PP1)
UPDATE `catalog_app_book` SET `stock`=  7 WHERE `id`= 54;  -- QUEENEX LANGUAGE ACTIVITIES PRACTICE BOOK - PRE-PRIMARY 2 (PP2)
UPDATE `catalog_app_book` SET `stock`=  6 WHERE `id`= 55;  -- QUEENEX MATHEMATICAL ACTIVITIES PRACTICE BOOK - PLAY GROUP
UPDATE `catalog_app_book` SET `stock`=  8 WHERE `id`= 56;  -- QUEENEX MATHEMATICAL ACTIVITIES PRACTICE BOOK - PRE-PRIMARY 1 (PP1)
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 57;  -- QUEENEX MATHEMATICAL ACTIVITIES PRACTICE BOOK - PRE-PRIMARY 2 (PP2)
UPDATE `catalog_app_book` SET `stock`= 70 WHERE `id`= 58;  -- SELLING TO INFORMAL MARKETS
UPDATE `catalog_app_book` SET `stock`=  5 WHERE `id`= 59;  -- THE AMERU HISTORY AND THE RISE OF NJURI NCHEKE
UPDATE `catalog_app_book` SET `stock`=  1 WHERE `id`= 60;  -- RIITHO NTURENE
UPDATE `catalog_app_book` SET `stock`=  4 WHERE `id`= 79;  -- THE FUN ANIMAL PUZZLE BOOK
UPDATE `catalog_app_book` SET `stock`=  5 WHERE `id`= 80;  -- WHERE DID THE WORLD COME FROM
UPDATE `catalog_app_book` SET `stock`= 10 WHERE `id`= 81;  -- BLOSSOM READ ALOUD SOUNDS PRACTICE BOOK 1
UPDATE `catalog_app_book` SET `stock`=  5 WHERE `id`= 85;  -- PREMIER COMBINED PRACTICE BOOK - PRE-PRIMARY 1
UPDATE `catalog_app_book` SET `stock`=  5 WHERE `id`= 86;  -- PREMIER COMBINED PRACTICE BOOK - PRE-PRIMARY 2

-- ── 16 ID-resolved (title mismatch between Excel and DB) ───────────
UPDATE `catalog_app_book` SET `stock`=  7 WHERE `id`= 10;  -- DB: CUCUU  [Excel: CUCU — DB title has diacritics]
UPDATE `catalog_app_book` SET `stock`=  9 WHERE `id`= 21;  -- DB: BASICS OF FINANCIAL LITERACY FOR TEENS AND BEGINNERS  [Excel typo: Begginers]
UPDATE `catalog_app_book` SET `stock`= 17 WHERE `id`= 30;  -- DB: THE OVERLAPPER'S MINDSET  [Smart quote in DB title]
UPDATE `catalog_app_book` SET `stock`=  2 WHERE `id`= 33;  -- DB: MOUNTAINS DO REMEMBER  [Excel: MOUNTAINS REMEMBER — missing DO]
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 61;  -- DB: THOUGHT LEADER'S CODE  [Smart quote in DB title]
UPDATE `catalog_app_book` SET `stock`=  2 WHERE `id`= 62;  -- DB: POWER OF PURPOSE  [Excel: THE POWER OF PURPOSE : A guide...]
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 69;  -- DB: MUNCHING NINJA Book 1  [Kenyan Everyday Fruits, Colouring Book 1]
UPDATE `catalog_app_book` SET `stock`=  2 WHERE `id`= 70;  -- DB: MUNCHING NINJA Book 2  [Kenyan Exotic Fruits, Colouring Book 2]
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 71;  -- DB: MUNCHING NINJA Book 3  [Kenyan Garden Veggies, Colouring Book 3]
UPDATE `catalog_app_book` SET `stock`=  3 WHERE `id`= 72;  -- DB: MUNCHING NINJA Book 4  [Kenyan Power Veggies, Colouring Book 4]
UPDATE `catalog_app_book` SET `stock`=  2 WHERE `id`= 73;  -- DB: MUNCHING NINJA Book 5  [Kenyan Power Snacks, Recipe Book 5]
UPDATE `catalog_app_book` SET `stock`=  2 WHERE `id`= 74;  -- DB: MUNCHING NINJA Book 6  [Kenyan Power Meals, Recipe Book 6 (ID=75 is duplicate)]
UPDATE `catalog_app_book` SET `stock`=  7 WHERE `id`= 91;  -- DB: QUEENEX CREATIVE ACTIVITIES PRACTICE BOOK FOR PRE-PRIMARY 2  [DB title has double space]
UPDATE `catalog_app_book` SET `stock`= 10 WHERE `id`= 90;  -- DB: QUEENEX ENVIRONMENTAL ACTIVITIES PRACTICE BOOK FOR PRE-PRIMARY 2  [Excel title: PP2 / Pp2]
UPDATE `catalog_app_book` SET `stock`=  7 WHERE `id`= 89;  -- DB: KISWAHILI WARIDI KITABU CHA KWANZA  [Excel: BLOSSOM KISWAHILI WARIDI — confirm same book]
UPDATE `catalog_app_book` SET `stock`=  2 WHERE `id`= 75;  -- MUNCHING NINJA Book 6 duplicate (same as ID=74)

-- =====================================================================
-- Step 3: inventory_inventorybalance upsert  (81 rows)
-- =====================================================================

-- ── exact matches ──────────────────────────────────────────────────
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(7,@loc_id,37,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=37;  -- A PILLAR OF HOPE
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(11,@loc_id,13,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=13;  -- DANCE OF THE MONKEYS
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(9,@loc_id,17,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=17;  -- OF GOATS AND POISONED ORANGES
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(1,@loc_id,20,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=20;  -- WHAT HAPPENED TO US?
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(2,@loc_id,21,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=21;  -- BORN TO BE UNSTOPPABLE
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(92,@loc_id,2,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=2;  -- DAWN OF FORTUNE
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(3,@loc_id,30,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=30;  -- DESIRE AT DAWN
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(4,@loc_id,14,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=14;  -- RENDITIONS OF THE SOUL
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(5,@loc_id,13,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=13;  -- WHEN THE WORLD IN MY VOICE SINGS
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(13,@loc_id,24,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=24;  -- AN AUTOBIOGRAPHY: AVIATOR PAR EXCELLENCE
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(14,@loc_id,14,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=14;  -- NEW CONFIDENT AFRICA
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(31,@loc_id,30,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=30;  -- TOMORROW I WILL BE HERE
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(15,@loc_id,20,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=20;  -- WHEN RIVERS SAY GOODBYE
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(93,@loc_id,9,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=9;  -- SINNERS
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(16,@loc_id,8,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=8;  -- DREAM OF AFRICA: CHAOS BEFORE ORDER
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(8,@loc_id,20,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=20;  -- THE GEN Z PARENT
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(17,@loc_id,10,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=10;  -- THE CROOKED SOCIETY
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(19,@loc_id,8,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=8;  -- BREAKING THE ORPHAN SPIRIT
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(88,@loc_id,7,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=7;  -- THE PRESENT HINDSIGHT
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(87,@loc_id,8,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=8;  -- STRANDED
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(20,@loc_id,7,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=7;  -- A REFLECTION ON OUR CULTURES
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(24,@loc_id,18,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=18;  -- THE DAYS OF HIS POWER
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(25,@loc_id,7,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=7;  -- TRUST THE CLOCKMASTER
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(26,@loc_id,14,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=14;  -- HEART AND SKILL
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(27,@loc_id,14,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=14;  -- THE HEART OF A WORSHIPPER
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(28,@loc_id,15,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=15;  -- THE POWER OF CHOICE
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(29,@loc_id,15,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=15;  -- THE LIFE OF A WORSHIPPER
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(32,@loc_id,9,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=9;  -- THE INCOMPLETE GRAVESTONE
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(63,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- ADAM AND THE GARDEN PROMISE SERIES 1
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(64,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- NOAH AND THE RAINBOW PROMISE SERIES 2
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(65,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- ABRAHAM AND THE STARRY PROMISE SERIES 3
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(66,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- MOSES AND THE MOUNTAIN PROMISE SERIES 4
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(67,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- DAVID THE KINGLY PROMISE SERIES 5
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(68,@loc_id,1,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=1;  -- JESUS THE GREATEST PROMISE SERIES 6
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(76,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- RAY'S CULTURAL QUEST PART 1
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(77,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- CULTURAL CLUB ADVENTURE PART 2
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(36,@loc_id,4,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=4;  -- CONFESSIONS OF NAIROBI MEN
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(37,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- GUILTY
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(38,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- DAMN, GIRL! STOP THAT
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(39,@loc_id,2,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=2;  -- THINGS I WILL TELL MY DAUGHTER
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(41,@loc_id,4,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=4;  -- CONFESSIONS OF NAIROBI MEN BOOK 2
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(42,@loc_id,6,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=6;  -- MAD WOMEN
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(43,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- CONFESSIONS OF NAIROBI MEN AND WOMEN: THE LAST CHAPTER
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(44,@loc_id,5,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=5;  -- CONFESSIONS OF NAIROBI WOMEN
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(45,@loc_id,1,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=1;  -- EVERYTHING I KNOW ABOUT LIFE
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(46,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- LETTERS TO MY SON
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(47,@loc_id,6,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=6;  -- CONFESSION OF NAIROBI WOMEN: BOOK TWO
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(48,@loc_id,5,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=5;  -- QUEENEX CRE ACTIVITIES PRACTICE BOOK - PLAY GROUP
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(49,@loc_id,8,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=8;  -- QUEENEX CRE ACTIVITIES PRACTICE BOOK - PRE-PRIMARY 1 (PP1)
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(50,@loc_id,5,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=5;  -- QUEENEX CRE ACTIVITIES PRACTICE BOOK - PRE-PRIMARY 2 (PP2)
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(51,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- QUEENEX ENVIRONMENTAL ACTIVITIES PRACTICE BOOK - PLAY GROUP
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(52,@loc_id,7,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=7;  -- QUEENEX LANGUAGE ACTIVITIES PRACTICE BOOK - PLAY GROUP
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(53,@loc_id,7,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=7;  -- QUEENEX LANGUAGE ACTIVITIES PRACTICE BOOK - PRE-PRIMARY 1 (PP1)
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(54,@loc_id,7,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=7;  -- QUEENEX LANGUAGE ACTIVITIES PRACTICE BOOK - PRE-PRIMARY 2 (PP2)
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(55,@loc_id,6,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=6;  -- QUEENEX MATHEMATICAL ACTIVITIES PRACTICE BOOK - PLAY GROUP
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(56,@loc_id,8,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=8;  -- QUEENEX MATHEMATICAL ACTIVITIES PRACTICE BOOK - PRE-PRIMARY 1 (PP1)
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(57,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- QUEENEX MATHEMATICAL ACTIVITIES PRACTICE BOOK - PRE-PRIMARY 2 (PP2)
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(58,@loc_id,70,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=70;  -- SELLING TO INFORMAL MARKETS
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(59,@loc_id,5,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=5;  -- THE AMERU HISTORY AND THE RISE OF NJURI NCHEKE
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(60,@loc_id,1,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=1;  -- RIITHO NTURENE
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(79,@loc_id,4,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=4;  -- THE FUN ANIMAL PUZZLE BOOK
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(80,@loc_id,5,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=5;  -- WHERE DID THE WORLD COME FROM
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(81,@loc_id,10,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=10;  -- BLOSSOM READ ALOUD SOUNDS PRACTICE BOOK 1
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(85,@loc_id,5,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=5;  -- PREMIER COMBINED PRACTICE BOOK - PRE-PRIMARY 1
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(86,@loc_id,5,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=5;  -- PREMIER COMBINED PRACTICE BOOK - PRE-PRIMARY 2

-- ── ID-resolved ────────────────────────────────────────────────────
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(10,@loc_id,7,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=7;  -- CUCUU
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(21,@loc_id,9,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=9;  -- BASICS OF FINANCIAL LITERACY FOR TEENS AND BEGINNERS
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(30,@loc_id,17,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=17;  -- THE OVERLAPPER'S MINDSET
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(33,@loc_id,2,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=2;  -- MOUNTAINS DO REMEMBER
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(61,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- THOUGHT LEADER'S CODE
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(62,@loc_id,2,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=2;  -- POWER OF PURPOSE
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(69,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- MUNCHING NINJA Book 1
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(70,@loc_id,2,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=2;  -- MUNCHING NINJA Book 2
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(71,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- MUNCHING NINJA Book 3
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(72,@loc_id,3,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=3;  -- MUNCHING NINJA Book 4
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(73,@loc_id,2,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=2;  -- MUNCHING NINJA Book 5
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(74,@loc_id,2,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=2;  -- MUNCHING NINJA Book 6
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(91,@loc_id,7,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=7;  -- QUEENEX CREATIVE ACTIVITIES PRACTICE BOOK FOR PRE-PRIMARY 2
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(90,@loc_id,10,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=10;  -- QUEENEX ENVIRONMENTAL ACTIVITIES PRACTICE BOOK FOR PRE-PRIMARY 2
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(89,@loc_id,7,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=7;  -- KISWAHILI WARIDI KITABU CHA KWANZA
INSERT INTO `inventory_inventorybalance`(`book_id`,`location_id`,`quantity_on_hand`,`quantity_reserved`)
VALUES(75,@loc_id,2,0) ON DUPLICATE KEY UPDATE `quantity_on_hand`=2;  -- MUNCHING NINJA Book 6 duplicate

-- =====================================================================
-- SKIPPED (22 entries) — action required before stock can be set
-- =====================================================================

-- *** stock=  6 | THE CROOKED SOCIETY - OLDER VERSION
--         DB has only one Crooked Society (ID=17, set to stock=10 above).
--         If same book: change ID=17 above to stock=16. If separate: add to catalog first.

-- *** stock= 10 | QUEENEX ENVIRONMENTAL ACTIVITIES PRACTICE BOOK - PP1
--         No PP1 environmental book in DB (only PLAY GROUP ID=51 and PP2 ID=90). Confirm with admin.

-- *** stock=  2 | QUEENEX MATHEMATICAL ACTIVITIES PRACTICE BOOK - PLAY GROUP (COMPETENCY BASED CURRICULUM)
--         DB ID=55 exists without CBE suffix. If same book: change ID=55 above to stock=8 (6+2). If separate: add first.

-- *** stock=  1 | QUEENEX MATHEMATICAL ACTIVITIES PRACTICE BOOK - PRE-PRIMARY 2 (PP2) (COMPETENCY BASED)
--         DB ID=57 exists without CBE suffix. If same book: change ID=57 above to stock=4 (3+1). If separate: add first.

-- *** stock=  3 | QUEENEX CREATIVE ACTIVITIES PRACTICE BOOK FOR Playgroup (COMPETENCY BASED)
--         Not in DB. Add to catalog first.

-- *** stock=  3 | QUEENEX CREATIVE ACTIVITIES PRACTICE BOOK FOR PRE-PRIMARY 1
--         Not in DB — only PP2 exists (ID=91). Add to catalog first.

-- *** stock= 13 | AFRICA'S BOOK OF GREATS V1
--         Not in DB. Add to catalog first.

-- *** stock=  5 | BEST BEFORE '09
--         Not in DB. Add to catalog first.

-- *** stock=  3 | THE SINS OF OUR FATHER
--         Not in DB. Add to catalog first.

-- *** stock=  5 | SHADOWS IN MY SUNSHINE
--         Not in DB. Add to catalog first.

-- *** stock=  8 | DEPORTEE
--         Not in DB. Add to catalog first.

-- *** stock= 12 | ENDURING LOVE & FAITHFULNESS
--         Not in DB. Add to catalog first.

-- *** stock= 11 | The Work Life (Nyambur Muhoro)
--         Not in DB. Add to catalog first.

-- *** stock=  3 | GIRL GET OFF THE FLOOR
--         Not in DB. Add to catalog first.

-- *** stock=  3 | Family Rise Up Against Gender-Based Violence
--         Not in DB. Add to catalog first.

-- *** stock=  4 | DON'T BUY THAT HOUSE
--         Not in DB. Add to catalog first.

-- *** stock=  4 | THE ABNORMAL STUDENT
--         Not in DB. Add to catalog first.

-- *** stock=  5 | ELIMINATING PROJECT DELAYS COST OVERRUNS
--         Not in DB. Add to catalog first.

-- *** stock=  3 | THE 7 RULES OF REAL ESTATE INVESTMENT
--         Not in DB. Add to catalog first.

-- *** stock=  5 | PREMIER REVISION ENCYCLOPEDIA PLAY GROUP
--         Not in DB. Add to catalog first.

-- *** stock=  5 | THE AMERU SOCIAL ROLE OF GICHIARO
--         Not in DB. Add to catalog first.

-- *** stock=  3 | THE ANIMAL TRIVIA GAME
--         Not in DB. Add to catalog first.

-- =====================================================================
-- END. Verify: every UPDATE and INSERT should affect exactly 1 row.
-- Any 0-row result means the book ID is wrong — check before re-running.
-- =====================================================================
