diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 2a20551e..56bebd9c 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -178,9 +178,17 @@ jobs: if [ -d .git ]; then git config --global --add safe.directory "$DEPLOY_PATH" || true sudo git config --system --add safe.directory "$DEPLOY_PATH" || true - git fetch origin - git checkout main - git pull --ff-only origin main + + # Try normal git first; fallback to sudo git when .git is root-owned. + if git -C "$DEPLOY_PATH" fetch origin; then + git -C "$DEPLOY_PATH" checkout main + git -C "$DEPLOY_PATH" pull --ff-only origin main + else + echo "Normal git fetch failed, retry with sudo git..." + sudo git -C "$DEPLOY_PATH" fetch origin + sudo git -C "$DEPLOY_PATH" checkout main + sudo git -C "$DEPLOY_PATH" pull --ff-only origin main + fi fi if [ ! -f "$ENV_FILE" ]; then diff --git a/backend/src/main/resources/data.sql b/backend/src/main/resources/data.sql index f79f5c50..80df5d3b 100644 --- a/backend/src/main/resources/data.sql +++ b/backend/src/main/resources/data.sql @@ -103,23 +103,23 @@ INSERT INTO `customer_tiers` (`id`,`tier_code`,`tier_name`,`min_spending`,`point INSERT INTO `customers` (`id`,`loyalty_points`,`name`,`phone`,`spent_amount`) VALUES (1,150,'Nguyen Van A','0987654321',1200000),(2,800,'Tran Thi B','0976543210',6200000),(3,2000,'Le Van C','0965432109',18000000),(4,3382,'Pham Thi D','0954321098',56340200),(7,4,'Huy','0961390486',48000),(9,0,'s','09999999999',0),(10,0,'Ko','0961390487',0),(11,0,'Huy','0961390488',0),(12,0,'Huy','0123456789',0),(13,0,'Tú','09612345688',0); -- 8. PRODUCTS -INSERT INTO `products` VALUES (1,'2026-03-18 01:40:08.905784','Vinamilk Fresh Milk','https://res.cloudinary.com/didvvefmu/image/upload/v1773772847/smalltrend/user-avatars/kk2k6wrcth9zjgpywmqa.png',1,'Sữa dinh dưỡng Vinamilk','2026-03-19 16:12:45.102749',1,2,2),(2,'2026-03-18 01:40:08.905784','Dove Beauty Bar','https://res.cloudinary.com/didvvefmu/image/upload/v1773772999/smalltrend/user-avatars/tftx9cld5vsqwbnz6fjc.jpg',1,'Xà Phòng Dove','2026-03-17 18:43:17.100845',4,3,1),(3,'2026-03-18 01:40:08.905784','Instant Coffee 20g x 10','https://res.cloudinary.com/didvvefmu/image/upload/v1773773536/smalltrend/user-avatars/wfg6djw0jvx1yyfep3jy.webp',1,'Cà phê Nescafe 3in1','2026-03-17 18:52:14.891507',2,1,1),(4,'2026-03-18 01:40:08.905784','Coca Cola Classic','https://res.cloudinary.com/didvvefmu/image/upload/v1773778429/smalltrend/user-avatars/c0bmdhxmorkjytxyaupj.jpg',1,'Nước ngọt Coca Cola','2026-03-17 20:13:47.164098',3,1,1),(5,'2026-03-18 01:40:08.905784','Potato Chips ','https://res.cloudinary.com/didvvefmu/image/upload/v1773776096/smalltrend/user-avatars/zodjdb1zjfyv5adn5sku.webp',1,'Bánh snack Oishi','2026-03-17 19:34:59.859986',6,5,1),(6,'2026-03-18 01:40:08.905784','Tương ớt chua cay ','https://res.cloudinary.com/didvvefmu/image/upload/v1773776784/smalltrend/user-avatars/e23icn5gbhnp8m0jmfur.jpg',1,'Tương ớt Cholimex','2026-03-17 19:46:22.345976',7,10,1),(7,'2026-03-18 01:40:08.905784','Xúc xích Vườn Hồng ','https://res.cloudinary.com/didvvefmu/image/upload/v1773777092/smalltrend/user-avatars/g7hw4axoeegxq8hp0plp.jpg',1,'Xúc xích CP','2026-03-17 19:52:43.982585',8,9,1),(8,'2026-03-18 01:40:08.905784','Thịt heo hầm ','https://res.cloudinary.com/didvvefmu/image/upload/v1773777262/smalltrend/user-avatars/h2jmpqvfiwqjvxtmnx1k.webp',1,'Đồ hộp Vissan','2026-03-17 19:54:20.346698',9,7,1),(9,'2026-03-18 01:40:08.905784','Bánh chocopie Orion hộp 12 cái','https://res.cloudinary.com/didvvefmu/image/upload/v1773777545/smalltrend/user-avatars/wcgojffzprveex1dx0tn.png',1,'Bánh Chocopie','2026-03-17 19:59:03.273214',10,8,1),(10,'2026-03-18 01:40:08.905784','Kẹo mút hương trái cây','https://res.cloudinary.com/didvvefmu/image/upload/v1773909949/smalltrend/user-avatars/nfuimxb1hzqxjgabqswt.webp',1,'Kẹo mút Chupa Chups','2026-03-19 08:45:46.881999',11,5,1),(11,'2026-03-18 01:40:08.905784','Phở các loại ','https://res.cloudinary.com/didvvefmu/image/upload/v1773910263/smalltrend/user-avatars/inttsrqtpwgdo4pxdsdf.webp',1,'Phở gói Vifon','2026-03-19 08:50:59.612510',14,11,1),(12,'2026-03-18 01:40:08.905784','Mì tôm chua cay ','https://res.cloudinary.com/didvvefmu/image/upload/v1773910371/smalltrend/user-avatars/gzfznjse9r1ew2vozgrm.jpg',1,'Mì Hảo Hảo','2026-03-19 08:52:48.747456',13,11,1),(13,'2026-03-18 01:40:08.905784','Mì khoai tây sườn hầm ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911223/smalltrend/user-avatars/aya3hodi8cjxt0hj0bhd.webp',1,'Mì Omachi','2026-03-19 09:07:00.486156',14,11,1),(14,'2026-03-18 01:40:08.905784','Nước tương tỏi ớt ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911355/smalltrend/user-avatars/fdqcfjy84csx9eazmvmn.webp',1,'Nước tương Chin-su','2026-03-19 09:09:12.272199',14,10,1),(15,'2026-03-18 01:40:08.905784','Sữa chua nha đam ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911512/smalltrend/user-avatars/hsaspcpfl2lfzcvkvnat.webp',1,'Sữa chua TH True Milk','2026-03-19 09:11:48.821013',15,2,2),(16,'2026-03-18 01:40:08.905784','Sữa tươi ít đường ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911825/smalltrend/user-avatars/hrtum3zrjb6rifilyqz4.png',1,'Sữa tươi TH True Milk','2026-03-19 09:17:02.904303',15,2,2),(17,'2026-03-18 01:40:08.905784','Snack khoai tây tự nhiên ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911989/smalltrend/user-avatars/yhfdrccc0brzy9zxske0.png',1,'Snack Lays','2026-03-19 09:19:45.977722',17,5,1),(18,'2026-03-18 01:40:08.905784','Trà Ô Long giảm béo ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912183/smalltrend/user-avatars/cxskvciux7syhbch9o4j.jpg',1,'Trà Ô Long TEA+ Plus','2026-03-19 09:23:00.694221',17,1,1),(19,'2026-03-18 01:40:08.905784','Hạt nêm thịt thăn xương ống ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912417/smalltrend/user-avatars/qlnrrvcapjfn068ujuxu.png',1,'Hạt nêm Knorr','2026-03-19 09:26:53.805754',19,10,1),(20,'2026-03-18 01:40:08.905784','Dầu hào tự nhiên nấm hương ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912775/smalltrend/user-avatars/z4rxm2iecy2e4ol6qy2j.webp',1,'Dầu hào Maggi','2026-03-19 09:32:51.526885',19,10,1),(21,'2026-03-18 01:40:08.905784','Bia Heineken Silver lon ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912972/smalltrend/user-avatars/ryqebth5xfpn7vvyjt5c.webp',1,'Bia Heineken Silver','2026-03-19 09:36:09.165091',23,1,1),(22,'2026-03-18 01:40:08.905784','Bia Tiger Crystal lon ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913094/smalltrend/user-avatars/csy3ylvsmjvyxiguwre4.jpg',1,'Bia Tiger Bạc','2026-03-19 09:38:11.944943',24,1,1),(23,'2026-03-18 01:40:08.905784','Nước mắm Nam Ngư chai ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913155/smalltrend/user-avatars/xheglrtrqj4ckymxilex.png',1,'Nước mắm Nam Ngư','2026-03-19 09:39:11.885935',14,10,1),(24,'2026-03-18 01:40:08.905784','Sữa đặc có đường Ông Thọ đỏ lon ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913190/smalltrend/user-avatars/ouu72al6cipvjlrdnxfv.png',1,'Sữa đặc Ông Thọ','2026-03-19 09:39:46.628476',1,2,2),(25,'2026-03-18 01:40:08.905784','Dầu ăn thực vật Tường An chai','https://res.cloudinary.com/didvvefmu/image/upload/v1773913261/smalltrend/user-avatars/k09c80gyjlchnftkcr26.png',1,'Dầu ăn Tường An','2026-03-19 09:40:57.807293',25,10,1),(26,'2026-03-18 01:40:08.905784','Bột giặt OMO hệ bọt thông minh ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913287/smalltrend/user-avatars/eo6hjpnfxm6ayqe5xmx2.jpg',1,'Bột giặt OMO','2026-03-19 09:41:24.379170',21,4,1); +INSERT INTO `products` VALUES (1,'2026-03-18 01:40:08.905784','Vinamilk Fresh Milk','https://res.cloudinary.com/didvvefmu/image/upload/v1773772847/smalltrend/user-avatars/kk2k6wrcth9zjgpywmqa.png',1,'Sữa dinh dưỡng Vinamilk','2026-03-19 16:12:45.102749',1,2,2),(2,'2026-03-18 01:40:08.905784','Dove Beauty Bar','https://res.cloudinary.com/didvvefmu/image/upload/v1773772999/smalltrend/user-avatars/tftx9cld5vsqwbnz6fjc.jpg',1,'Xà Phòng Dove','2026-03-17 18:43:17.100845',4,3,1),(3,'2026-03-18 01:40:08.905784','Instant Coffee 20g x 10','https://res.cloudinary.com/didvvefmu/image/upload/v1773773536/smalltrend/user-avatars/wfg6djw0jvx1yyfep3jy.webp',1,'Cà phê Nescafe 3in1','2026-03-17 18:52:14.891507',2,1,1),(5,'2026-03-18 01:40:08.905784','Potato Chips ','https://res.cloudinary.com/didvvefmu/image/upload/v1773776096/smalltrend/user-avatars/zodjdb1zjfyv5adn5sku.webp',1,'Bánh snack Oishi','2026-03-17 19:34:59.859986',6,5,1),(6,'2026-03-18 01:40:08.905784','Tương ớt chua cay ','https://res.cloudinary.com/didvvefmu/image/upload/v1773776784/smalltrend/user-avatars/e23icn5gbhnp8m0jmfur.jpg',1,'Tương ớt Cholimex','2026-03-17 19:46:22.345976',7,10,1),(7,'2026-03-18 01:40:08.905784','Xúc xích Vườn Hồng ','https://res.cloudinary.com/didvvefmu/image/upload/v1773777092/smalltrend/user-avatars/g7hw4axoeegxq8hp0plp.jpg',1,'Xúc xích CP','2026-03-17 19:52:43.982585',8,9,1),(8,'2026-03-18 01:40:08.905784','Thịt heo hầm ','https://res.cloudinary.com/didvvefmu/image/upload/v1773777262/smalltrend/user-avatars/h2jmpqvfiwqjvxtmnx1k.webp',1,'Đồ hộp Vissan','2026-03-17 19:54:20.346698',9,7,1),(9,'2026-03-18 01:40:08.905784','Bánh chocopie Orion hộp 12 cái','https://res.cloudinary.com/didvvefmu/image/upload/v1773777545/smalltrend/user-avatars/wcgojffzprveex1dx0tn.png',1,'Bánh Chocopie','2026-03-17 19:59:03.273214',10,8,1),(10,'2026-03-18 01:40:08.905784','Kẹo mút hương trái cây','https://res.cloudinary.com/didvvefmu/image/upload/v1773909949/smalltrend/user-avatars/nfuimxb1hzqxjgabqswt.webp',1,'Kẹo mút Chupa Chups','2026-03-19 08:45:46.881999',11,5,1),(11,'2026-03-18 01:40:08.905784','Phở các loại ','https://res.cloudinary.com/didvvefmu/image/upload/v1773910263/smalltrend/user-avatars/inttsrqtpwgdo4pxdsdf.webp',1,'Phở gói Vifon','2026-03-19 08:50:59.612510',14,11,1),(12,'2026-03-18 01:40:08.905784','Mì tôm chua cay ','https://res.cloudinary.com/didvvefmu/image/upload/v1773910371/smalltrend/user-avatars/gzfznjse9r1ew2vozgrm.jpg',1,'Mì Hảo Hảo','2026-03-19 08:52:48.747456',13,11,1),(13,'2026-03-18 01:40:08.905784','Mì khoai tây sườn hầm ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911223/smalltrend/user-avatars/aya3hodi8cjxt0hj0bhd.webp',1,'Mì Omachi','2026-03-19 09:07:00.486156',14,11,1),(14,'2026-03-18 01:40:08.905784','Nước tương tỏi ớt ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911355/smalltrend/user-avatars/fdqcfjy84csx9eazmvmn.webp',1,'Nước tương Chin-su','2026-03-19 09:09:12.272199',14,10,1),(15,'2026-03-18 01:40:08.905784','Sữa chua nha đam ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911512/smalltrend/user-avatars/hsaspcpfl2lfzcvkvnat.webp',1,'Sữa chua TH True Milk','2026-03-19 09:11:48.821013',15,2,2),(16,'2026-03-18 01:40:08.905784','Sữa tươi ít đường ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911825/smalltrend/user-avatars/hrtum3zrjb6rifilyqz4.png',1,'Sữa tươi TH True Milk','2026-03-19 09:17:02.904303',15,2,2),(17,'2026-03-18 01:40:08.905784','Snack khoai tây tự nhiên ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911989/smalltrend/user-avatars/yhfdrccc0brzy9zxske0.png',1,'Snack Lays','2026-03-19 09:19:45.977722',17,5,1),(18,'2026-03-18 01:40:08.905784','Trà Ô Long giảm béo ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912183/smalltrend/user-avatars/cxskvciux7syhbch9o4j.jpg',1,'Trà Ô Long TEA+ Plus','2026-03-19 09:23:00.694221',17,1,1),(19,'2026-03-18 01:40:08.905784','Hạt nêm thịt thăn xương ống ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912417/smalltrend/user-avatars/qlnrrvcapjfn068ujuxu.png',1,'Hạt nêm Knorr','2026-03-19 09:26:53.805754',19,10,1),(20,'2026-03-18 01:40:08.905784','Dầu hào tự nhiên nấm hương ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912775/smalltrend/user-avatars/z4rxm2iecy2e4ol6qy2j.webp',1,'Dầu hào Maggi','2026-03-19 09:32:51.526885',19,10,1),(21,'2026-03-18 01:40:08.905784','Bia Heineken Silver lon ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912972/smalltrend/user-avatars/ryqebth5xfpn7vvyjt5c.webp',1,'Bia Heineken Silver','2026-03-19 09:36:09.165091',23,1,1),(22,'2026-03-18 01:40:08.905784','Bia Tiger Crystal lon ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913094/smalltrend/user-avatars/csy3ylvsmjvyxiguwre4.jpg',1,'Bia Tiger Bạc','2026-03-19 09:38:11.944943',24,1,1),(23,'2026-03-18 01:40:08.905784','Nước mắm Nam Ngư chai ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913155/smalltrend/user-avatars/xheglrtrqj4ckymxilex.png',1,'Nước mắm Nam Ngư','2026-03-19 09:39:11.885935',14,10,1),(24,'2026-03-18 01:40:08.905784','Sữa đặc có đường Ông Thọ đỏ lon ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913190/smalltrend/user-avatars/ouu72al6cipvjlrdnxfv.png',1,'Sữa đặc Ông Thọ','2026-03-19 09:39:46.628476',1,2,2),(25,'2026-03-18 01:40:08.905784','Dầu ăn thực vật Tường An chai','https://res.cloudinary.com/didvvefmu/image/upload/v1773913261/smalltrend/user-avatars/k09c80gyjlchnftkcr26.png',1,'Dầu ăn Tường An','2026-03-19 09:40:57.807293',25,10,1),(26,'2026-03-18 01:40:08.905784','Bột giặt OMO hệ bọt thông minh ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913287/smalltrend/user-avatars/eo6hjpnfxm6ayqe5xmx2.jpg',1,'Bột giặt OMO','2026-03-19 09:41:24.379170',21,4,1); -- 8.1 UNITS INSERT INTO `units` VALUES (1,'HOP',NULL,NULL,'SOLID','Hộp','hộp'),(2,'LOC',NULL,NULL,'SOLID','Lốc','lốc'),(3,'THUNG',NULL,NULL,'SOLID','Thùng','thùng'),(4,'GOI',NULL,NULL,'SOLID','Gói','gói'),(5,'CAI',NULL,NULL,'SOLID','Cái','cái'),(6,'LON',NULL,NULL,'SOLID','Lon','lon'),(7,'CHAI',NULL,NULL,'SOLID','Chai','chai'),(8,'BICH',NULL,NULL,'SOLID','Bịch','bich'); -- 9. PRODUCT VARIANTS -INSERT INTO `product_variants` (`id`,`barcode`,`created_at`,`image_url`,`is_active`,`is_base_unit`,`plu_code`,`sell_price`,`sku`,`updated_at`,`coupon_id`,`product_id`,`unit_id`) VALUES (1,'8930000193995','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773772910/smalltrend/user-avatars/o33bylqob6pxjc8tukfu.png',1,1,NULL,23000.00,'DAIRY-VINA-SUADIN-BICH22OML-ITDUONG','2026-03-19 16:12:45.104746',NULL,1,8),(2,'8930000122551','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773773072/smalltrend/user-avatars/dhudvv2ujf5e5co6ootg.jpg',1,1,NULL,15000.00,'PERSONAL_CARE-PG-XAPHON-HOP90G-NGUYEN','2026-03-17 18:44:30.721805',NULL,2,1),(3,'8930000161246','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773774242/smalltrend/user-avatars/nxldrdvkm1o2fljoq0dn.webp',1,1,NULL,45000.00,'BEVERAGE-NEST-CAPHEN-HOP255G-NGUYEN','2026-03-17 19:04:00.806758',NULL,3,1),(4,'8901234567893','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773778489/smalltrend/user-avatars/hpowweus5mmsnz0ccx8l.jpg',1,1,NULL,15400.00,'BEVERAGE-COCA-NUOCNG-LON330ML-NGUYEN','2026-03-19 09:03:42.000358',NULL,4,6),(5,'8930000149572','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773776664/smalltrend/user-avatars/icro6udsd93qzizzvd2j.webp',1,1,NULL,8000.00,'SNACK-OISH-BANHSN-GOI40G-PHOMAT','2026-03-17 19:44:22.804058',NULL,5,4),(6,'8930000171863','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773776870/smalltrend/user-avatars/vrand1uqxez5tq73dktk.jpg',1,1,NULL,13000.00,'CONDIMENT-CHOL-TUONGO-CHAI130G','2026-03-17 19:47:48.174277',NULL,6,7),(7,'8930000196125','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773777228/smalltrend/user-avatars/m1jlc0zltitolbl94ja4.jpg',1,1,NULL,55000.00,'MEAT_SEAFOOD-CP-XUCXIC-GOI500G','2026-03-17 19:53:46.365399',NULL,7,4),(8,'8930000169044','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773777363/smalltrend/user-avatars/bd2hgni4twjpr2zwzsan.webp',1,1,NULL,22000.00,'CANNED_FOOD-VISS-DOHOPV-HOP170G-BOKHO','2026-03-17 19:56:01.293126',NULL,8,1),(9,'8930000144416','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773777788/smalltrend/user-avatars/yqhleiczkcxfbgokhm7b.png',1,1,NULL,38500.00,'BAKERY-ORIO-BANHCH-HOP396G-NGUYEN','2026-03-19 12:45:01.209140',NULL,9,1),(10,'8930000113740','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773910052/smalltrend/user-avatars/rxu9ondhpdln92zll0t7.webp',1,1,NULL,50000.00,'SNACK-CHUP-KEOMUT-GOI30C','2026-03-19 08:47:29.365008',NULL,10,4),(11,'8930000125231','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773910333/smalltrend/user-avatars/uv9otcj50xs26gs4qts2.webp',1,1,NULL,8000.00,'INSTANT_FOOD-MASA-PHOGOI-GOI65G-GA','2026-03-19 08:52:09.825864',NULL,11,4),(12,'8930000127303','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773910438/smalltrend/user-avatars/ik1z1wq7tcxxig6bxggq.jpg',1,1,NULL,4500.00,'INSTANT_FOOD-ACEC-MIHAOH-GOI75G-CHUACAY','2026-03-19 08:53:55.700128',NULL,12,4),(13,'8930000171634','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773911290/smalltrend/user-avatars/d70b96npjlercdnhqc6u.webp',1,1,NULL,10000.00,'INSTANT_FOOD-MASA-MIOMAC-GOI80G-BOHAM','2026-03-19 09:08:08.160152',NULL,13,4),(14,'8930000176011','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773911418/smalltrend/user-avatars/nzpiahhjvtoysx5vfoxi.webp',1,1,NULL,15000.00,'CONDIMENT-MASA-NUOCTU-CHAI330ML-TOIOT','2026-03-19 09:10:15.226258',NULL,14,7),(15,'8901234567904','2026-03-18 01:40:08.933285',NULL,1,1,NULL,6000.00,'TH-N-100G','2026-03-18 01:40:08.933285',NULL,15,1),(16,'8930000171153','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773911928/smalltrend/user-avatars/l5ezwmbvpbjsmewe8hmo.png',1,1,NULL,35000.00,'DAIRY-THTR-SUATUO-HOP220ML-NGUYEN','2026-03-19 09:18:45.165700',NULL,16,1),(17,'8930000146663','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912150/smalltrend/user-avatars/wgvlu99hoyhumcsffge3.png',1,1,NULL,12000.00,'SNACK-MAGG-SNACKL-GOI30G-BO','2026-03-19 09:22:26.744542',NULL,17,4),(18,'8930000109279','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912264/smalltrend/user-avatars/g3quurw8erpu5rpsw5yj.jpg',1,1,NULL,10000.00,'BEVERAGE-MAGG-TRAOLO-CHAI450ML-NGUYEN','2026-03-19 09:24:44.981697',NULL,18,7),(19,'8930000186157','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912473/smalltrend/user-avatars/xktud0bg65rjytvw9foq.png',1,1,NULL,30000.00,'CONDIMENT-KNOR-HATNEM-GOI380G-NAMHUONG','2026-03-19 09:27:50.079383',NULL,19,4),(20,'8930000109811','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912911/smalltrend/user-avatars/lpyqea1uyrfxmacomnz5.webp',1,1,NULL,25000.00,'CONDIMENT-KNOR-DAUHAO-CHAI350G-HAISAN','2026-03-19 09:35:08.042089',NULL,20,7),(21,'8930000139672','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913028/smalltrend/user-avatars/d9ehbqq301llj6fdbyxs.webp',1,1,NULL,23100.00,'BEVERAGE-HEIN-BIAHEI-LON330ML','2026-03-19 09:37:04.680494',NULL,21,6),(22,'8930000123411','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913126/smalltrend/user-avatars/psat5m6feqy4dk4bpjdm.webp',1,1,NULL,18000.00,'BEVERAGE-TIGE-BIATIG-LON330ML','2026-03-19 09:38:42.625590',NULL,22,6),(23,'8901234567912','2026-03-18 01:40:08.933285',NULL,1,1,NULL,35000.00,'NN-500ML','2026-03-18 01:40:08.933285',NULL,23,7),(24,'8930000154279','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913244/smalltrend/user-avatars/vuxvb3qmojdaxvh1ikut.png',1,1,NULL,25000.00,'DAIRY-VINA-SUADAC-LON380G','2026-03-19 09:40:41.594268',NULL,24,6),(25,'8901234567914','2026-03-18 01:40:08.933285',NULL,1,1,NULL,50000.00,'TA-1L','2026-03-18 01:40:08.933285',NULL,25,7),(26,'8930000199911','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913343/smalltrend/user-avatars/x2rsucpqflqznbnerxzb.jpg',1,1,NULL,40000.00,'HOUSEHOLD-OMO-BOTGIA-GOI350G','2026-03-19 09:42:21.876911',NULL,26,4),(27,'8930000133342','2026-03-17 18:42:46.031234','https://res.cloudinary.com/didvvefmu/image/upload/v1773772967/smalltrend/user-avatars/vdu8czpwiu3qet5zsasw.png',1,0,NULL,0.00,'DAIRY-VINA-SUADIN-BICH220ML-DAU','2026-03-19 17:06:51.075335',NULL,1,8),(28,'8930000161734','2026-03-17 18:51:17.975528','https://res.cloudinary.com/didvvefmu/image/upload/v1773773479/smalltrend/user-avatars/bpy5d10ssqg5dnmwvguv.png',1,0,NULL,15400.00,'PERSONAL_CARE-PG-XAPHON-HOP90G-TUOI','2026-03-19 09:04:18.390337',NULL,2,1),(29,'8930000167736','2026-03-17 19:33:48.792449','https://res.cloudinary.com/didvvefmu/image/upload/v1773776030/smalltrend/user-avatars/eins9fd6p4qvhvslj5do.jpg',1,0,NULL,0.00,'BEVERAGE-NEST-CAPHEN-HOP255G-RANG','2026-03-17 19:33:48.792449',NULL,3,1),(30,'8930000149121','2026-03-17 19:45:23.941447','https://res.cloudinary.com/didvvefmu/image/upload/v1773776725/smalltrend/user-avatars/d6dlcsprxbocypnf6cgm.webp',1,0,NULL,12100.00,'SNACK-OISH-BANHSN-GOI40G-TOMCAY','2026-03-19 09:03:09.686273',NULL,5,4),(31,'8930000119278','2026-03-17 19:48:27.446008','https://res.cloudinary.com/didvvefmu/image/upload/v1773776909/smalltrend/user-avatars/j4dj9pjuuhhclkutaxg6.jpg',1,0,NULL,0.00,'CONDIMENT-CHOL-TUONGO-CHAI830G','2026-03-17 19:48:27.446008',NULL,6,7),(32,'8930000121158','2026-03-17 19:58:25.077167','https://res.cloudinary.com/didvvefmu/image/upload/v1773777507/smalltrend/user-avatars/ztpgadh6wdjhqyacr22j.webp',1,0,NULL,0.00,'CANNED_FOOD-VISS-DOHOPV-HOP170G-SUONNAUDAU','2026-03-17 19:58:25.077167',NULL,8,1),(33,'8930000112736','2026-03-17 20:05:18.866189','https://res.cloudinary.com/didvvefmu/image/upload/v1773777920/smalltrend/user-avatars/cup3o2geklrs4pkyco0c.png',1,0,NULL,0.00,'BAKERY-ORIO-BANHCH-HOP360G-MATCHA','2026-03-19 06:06:10.664386',NULL,9,1),(34,'2000010034096','2026-03-17 20:08:13.486592','https://res.cloudinary.com/didvvefmu/image/upload/v1773778115/smalltrend/user-avatars/jmtlotmdvagxrl3gijbl.webp',1,0,NULL,0.00,'DAIRY-VINA-SUADIN-BICH220ML-THUNG48','2026-03-19 17:06:51.075335',NULL,1,3),(35,'2000040035087','2026-03-17 20:15:03.949593','https://res.cloudinary.com/didvvefmu/image/upload/v1773778489/smalltrend/user-avatars/hpowweus5mmsnz0ccx8l.jpg',1,0,NULL,360000.00,'BEVERAGE-COCA-NUOCNG-LON330ML-THUNG30','2026-03-17 20:15:03.966126',NULL,4,3),(36,'8930000112934','2026-03-19 08:32:45.066186','https://res.cloudinary.com/didvvefmu/image/upload/v1773909168/smalltrend/user-avatars/hdothjp2wuqv4u3yobyt.jpg',1,0,NULL,0.00,'BEVERAGE-MAGG-TRAOLO-CHAI450ML-CHANH','2026-03-19 08:32:45.066186',NULL,18,7); +INSERT INTO `product_variants` (`id`,`barcode`,`created_at`,`image_url`,`is_active`,`is_base_unit`,`plu_code`,`sell_price`,`sku`,`updated_at`,`coupon_id`,`product_id`,`unit_id`) VALUES (1,'8930000193995','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773772910/smalltrend/user-avatars/o33bylqob6pxjc8tukfu.png',1,1,NULL,23000.00,'DAIRY-VINA-SUADIN-BICH22OML-ITDUONG','2026-03-19 16:12:45.104746',NULL,1,8),(2,'8930000122551','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773773072/smalltrend/user-avatars/dhudvv2ujf5e5co6ootg.jpg',1,1,NULL,15000.00,'PERSONAL_CARE-PG-XAPHON-HOP90G-NGUYEN','2026-03-17 18:44:30.721805',NULL,2,1),(3,'8930000161246','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773774242/smalltrend/user-avatars/nxldrdvkm1o2fljoq0dn.webp',1,1,NULL,45000.00,'BEVERAGE-NEST-CAPHEN-HOP255G-NGUYEN','2026-03-17 19:04:00.806758',NULL,3,1),(5,'8930000149572','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773776664/smalltrend/user-avatars/icro6udsd93qzizzvd2j.webp',1,1,NULL,8000.00,'SNACK-OISH-BANHSN-GOI40G-PHOMAT','2026-03-17 19:44:22.804058',NULL,5,4),(6,'8930000171863','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773776870/smalltrend/user-avatars/vrand1uqxez5tq73dktk.jpg',1,1,NULL,13000.00,'CONDIMENT-CHOL-TUONGO-CHAI130G','2026-03-17 19:47:48.174277',NULL,6,7),(7,'8930000196125','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773777228/smalltrend/user-avatars/m1jlc0zltitolbl94ja4.jpg',1,1,NULL,55000.00,'MEAT_SEAFOOD-CP-XUCXIC-GOI500G','2026-03-17 19:53:46.365399',NULL,7,4),(8,'8930000169044','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773777363/smalltrend/user-avatars/bd2hgni4twjpr2zwzsan.webp',1,1,NULL,22000.00,'CANNED_FOOD-VISS-DOHOPV-HOP170G-BOKHO','2026-03-17 19:56:01.293126',NULL,8,1),(9,'8930000144416','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773777788/smalltrend/user-avatars/yqhleiczkcxfbgokhm7b.png',1,1,NULL,38500.00,'BAKERY-ORIO-BANHCH-HOP396G-NGUYEN','2026-03-19 12:45:01.209140',NULL,9,1),(10,'8930000113740','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773910052/smalltrend/user-avatars/rxu9ondhpdln92zll0t7.webp',1,1,NULL,50000.00,'SNACK-CHUP-KEOMUT-GOI30C','2026-03-19 08:47:29.365008',NULL,10,4),(11,'8930000125231','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773910333/smalltrend/user-avatars/uv9otcj50xs26gs4qts2.webp',1,1,NULL,8000.00,'INSTANT_FOOD-MASA-PHOGOI-GOI65G-GA','2026-03-19 08:52:09.825864',NULL,11,4),(12,'8930000127303','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773910438/smalltrend/user-avatars/ik1z1wq7tcxxig6bxggq.jpg',1,1,NULL,4500.00,'INSTANT_FOOD-ACEC-MIHAOH-GOI75G-CHUACAY','2026-03-19 08:53:55.700128',NULL,12,4),(13,'8930000171634','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773911290/smalltrend/user-avatars/d70b96npjlercdnhqc6u.webp',1,1,NULL,10000.00,'INSTANT_FOOD-MASA-MIOMAC-GOI80G-BOHAM','2026-03-19 09:08:08.160152',NULL,13,4),(14,'8930000176011','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773911418/smalltrend/user-avatars/nzpiahhjvtoysx5vfoxi.webp',1,1,NULL,15000.00,'CONDIMENT-MASA-NUOCTU-CHAI330ML-TOIOT','2026-03-19 09:10:15.226258',NULL,14,7),(15,'8901234567904','2026-03-18 01:40:08.933285',NULL,1,1,NULL,6000.00,'TH-N-100G','2026-03-18 01:40:08.933285',NULL,15,1),(16,'8930000171153','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773911928/smalltrend/user-avatars/l5ezwmbvpbjsmewe8hmo.png',1,1,NULL,35000.00,'DAIRY-THTR-SUATUO-HOP220ML-NGUYEN','2026-03-19 09:18:45.165700',NULL,16,1),(17,'8930000146663','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912150/smalltrend/user-avatars/wgvlu99hoyhumcsffge3.png',1,1,NULL,12000.00,'SNACK-MAGG-SNACKL-GOI30G-BO','2026-03-19 09:22:26.744542',NULL,17,4),(18,'8930000109279','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912264/smalltrend/user-avatars/g3quurw8erpu5rpsw5yj.jpg',1,1,NULL,10000.00,'BEVERAGE-MAGG-TRAOLO-CHAI450ML-NGUYEN','2026-03-19 09:24:44.981697',NULL,18,7),(19,'8930000186157','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912473/smalltrend/user-avatars/xktud0bg65rjytvw9foq.png',1,1,NULL,30000.00,'CONDIMENT-KNOR-HATNEM-GOI380G-NAMHUONG','2026-03-19 09:27:50.079383',NULL,19,4),(20,'8930000109811','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912911/smalltrend/user-avatars/lpyqea1uyrfxmacomnz5.webp',1,1,NULL,25000.00,'CONDIMENT-KNOR-DAUHAO-CHAI350G-HAISAN','2026-03-19 09:35:08.042089',NULL,20,7),(21,'8930000139672','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913028/smalltrend/user-avatars/d9ehbqq301llj6fdbyxs.webp',1,1,NULL,23100.00,'BEVERAGE-HEIN-BIAHEI-LON330ML','2026-03-19 09:37:04.680494',NULL,21,6),(22,'8930000123411','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913126/smalltrend/user-avatars/psat5m6feqy4dk4bpjdm.webp',1,1,NULL,18000.00,'BEVERAGE-TIGE-BIATIG-LON330ML','2026-03-19 09:38:42.625590',NULL,22,6),(23,'8901234567912','2026-03-18 01:40:08.933285',NULL,1,1,NULL,35000.00,'NN-500ML','2026-03-18 01:40:08.933285',NULL,23,7),(24,'8930000154279','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913244/smalltrend/user-avatars/vuxvb3qmojdaxvh1ikut.png',1,1,NULL,25000.00,'DAIRY-VINA-SUADAC-LON380G','2026-03-19 09:40:41.594268',NULL,24,6),(25,'8901234567914','2026-03-18 01:40:08.933285',NULL,1,1,NULL,50000.00,'TA-1L','2026-03-18 01:40:08.933285',NULL,25,7),(26,'8930000199911','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913343/smalltrend/user-avatars/x2rsucpqflqznbnerxzb.jpg',1,1,NULL,40000.00,'HOUSEHOLD-OMO-BOTGIA-GOI350G','2026-03-19 09:42:21.876911',NULL,26,4),(28,'8930000161734','2026-03-17 18:51:17.975528','https://res.cloudinary.com/didvvefmu/image/upload/v1773773479/smalltrend/user-avatars/bpy5d10ssqg5dnmwvguv.png',1,0,NULL,15400.00,'PERSONAL_CARE-PG-XAPHON-HOP90G-TUOI','2026-03-19 09:04:18.390337',NULL,2,1),(29,'8930000167736','2026-03-17 19:33:48.792449','https://res.cloudinary.com/didvvefmu/image/upload/v1773776030/smalltrend/user-avatars/eins9fd6p4qvhvslj5do.jpg',1,0,NULL,0.00,'BEVERAGE-NEST-CAPHEN-HOP255G-RANG','2026-03-17 19:33:48.792449',NULL,3,1),(30,'8930000149121','2026-03-17 19:45:23.941447','https://res.cloudinary.com/didvvefmu/image/upload/v1773776725/smalltrend/user-avatars/d6dlcsprxbocypnf6cgm.webp',1,0,NULL,12100.00,'SNACK-OISH-BANHSN-GOI40G-TOMCAY','2026-03-19 09:03:09.686273',NULL,5,4),(31,'8930000119278','2026-03-17 19:48:27.446008','https://res.cloudinary.com/didvvefmu/image/upload/v1773776909/smalltrend/user-avatars/j4dj9pjuuhhclkutaxg6.jpg',1,0,NULL,0.00,'CONDIMENT-CHOL-TUONGO-CHAI830G','2026-03-17 19:48:27.446008',NULL,6,7),(32,'8930000121158','2026-03-17 19:58:25.077167','https://res.cloudinary.com/didvvefmu/image/upload/v1773777507/smalltrend/user-avatars/ztpgadh6wdjhqyacr22j.webp',1,0,NULL,0.00,'CANNED_FOOD-VISS-DOHOPV-HOP170G-SUONNAUDAU','2026-03-17 19:58:25.077167',NULL,8,1),(33,'8930000112736','2026-03-17 20:05:18.866189','https://res.cloudinary.com/didvvefmu/image/upload/v1773777920/smalltrend/user-avatars/cup3o2geklrs4pkyco0c.png',1,0,NULL,0.00,'BAKERY-ORIO-BANHCH-HOP360G-MATCHA','2026-03-19 06:06:10.664386',NULL,9,1),(36,'8930000112934','2026-03-19 08:32:45.066186','https://res.cloudinary.com/didvvefmu/image/upload/v1773909168/smalltrend/user-avatars/hdothjp2wuqv4u3yobyt.jpg',1,0,NULL,0.00,'BEVERAGE-MAGG-TRAOLO-CHAI450ML-CHANH','2026-03-19 08:32:45.066186',NULL,18,7); -- 8.2 UNIT CONVERSIONS (Conversion between units for variants) -- Example: 1 carton (THUNG) = 12 boxes (HOP), 1 pack (LOC) = 4 boxes -INSERT INTO `unit_conversions` VALUES (15,48.0000,'',1,0.00,3,27),(16,30.0000,'',1,360000.00,3,4); +-- removed unit_conversions for deleted variants (Coca-Cola / Vinamilk dâu) -- 9.0 VARIANT ATTRIBUTES -INSERT INTO `variant_attributes` VALUES (1,'Ít đường','Hương vị'),(1,'220ml','Thể tích'),(2,'Nguyên bản','Hương'),(2,'90G','Trọng lượng'),(3,'Nguyên bản','Hương vị'),(3,'255G','Trọng lượng'),(4,'Nguyên bản','Hương vị'),(4,'330ml','Thể tích'),(5,'Phô mai','Hương vị'),(5,'40G','Trọng lượng'),(6,'130G','Trọng lượng'),(7,'500G','Trọng lượng'),(8,'Bò kho','Hương vị'),(8,'170G','Khối lượng'),(9,'Nguyên bản','Hương vị'),(9,'396G','Khối lương'),(10,'30 cái','Số lượng'),(11,'Gà','Hương vị'),(11,'65g','Trọng lượng'),(12,'Chua cay','Hương vị'),(12,'75g','Khối lượng'),(13,'Bò hầm','Hương vị'),(13,'80g','Khối lượng'),(14,'Tỏi ớt','Hương'),(14,'330ml','Thể tích'),(16,'Nguyên bản','Hương vị'),(16,'220ml','Thể tích'),(17,'Bò Nướng Texas','Hương vị'),(17,'30g','Trọng lượng'),(18,'Nguyên bản','Hương vị'),(18,'450ml','Thể tích'),(19,'Nấm hương','Loại'),(19,'380g','Trọng lượng'),(20,'Hải sản','Loại'),(20,'350g','Thể tích'),(21,'330ml','Thể tích'),(22,'330ml','Thể tích'),(24,'380g','Khối lượng'),(26,'350g','Trọng lượng'),(27,'Dâu tây','Hương vị'),(27,'220ml','Thể tích'),(28,'Tươi mát','Hương'),(28,'90G','Trọng lượng'),(29,'Cà phê rang','Hương vị'),(29,'255G','Trọng lượng'),(30,'Tôm cay','Hương vị'),(30,'40G','Trọng lượng'),(31,'830G','Trọng lượng'),(32,'Sườn nấu đậu','Hương vị'),(32,'170G','Khối lượng'),(33,'Matcha đậu đỏ','Hương vị'),(33,'360G','Khối lương'),(34,'Dâu tây','Hương vị'),(34,'220ml','Thể tích'),(35,'Nguyên bản','Hương vị'),(35,'330ml','Thể tích'),(36,'Chanh','Hương vị'),(36,'450ml','Thể tích'); +INSERT INTO `variant_attributes` VALUES (1,'Ít đường','Hương vị'),(1,'220ml','Thể tích'),(2,'Nguyên bản','Hương'),(2,'90G','Trọng lượng'),(3,'Nguyên bản','Hương vị'),(3,'255G','Trọng lượng'),(5,'Phô mai','Hương vị'),(5,'40G','Trọng lượng'),(6,'130G','Trọng lượng'),(7,'500G','Trọng lượng'),(8,'Bò kho','Hương vị'),(8,'170G','Khối lượng'),(9,'Nguyên bản','Hương vị'),(9,'396G','Khối lương'),(10,'30 cái','Số lượng'),(11,'Gà','Hương vị'),(11,'65g','Trọng lượng'),(12,'Chua cay','Hương vị'),(12,'75g','Khối lượng'),(13,'Bò hầm','Hương vị'),(13,'80g','Khối lượng'),(14,'Tỏi ớt','Hương'),(14,'330ml','Thể tích'),(16,'Nguyên bản','Hương vị'),(16,'220ml','Thể tích'),(17,'Bò Nướng Texas','Hương vị'),(17,'30g','Trọng lượng'),(18,'Nguyên bản','Hương vị'),(18,'450ml','Thể tích'),(19,'Nấm hương','Loại'),(19,'380g','Trọng lượng'),(20,'Hải sản','Loại'),(20,'350g','Thể tích'),(21,'330ml','Thể tích'),(22,'330ml','Thể tích'),(24,'380g','Khối lượng'),(26,'350g','Trọng lượng'),(28,'Tươi mát','Hương'),(28,'90G','Trọng lượng'),(29,'Cà phê rang','Hương vị'),(29,'255G','Trọng lượng'),(30,'Tôm cay','Hương vị'),(30,'40G','Trọng lượng'),(31,'830G','Trọng lượng'),(32,'Sườn nấu đậu','Hương vị'),(32,'170G','Khối lượng'),(33,'Matcha đậu đỏ','Hương vị'),(33,'360G','Khối lương'),(36,'Chanh','Hương vị'),(36,'450ml','Thể tích'); -- 9.1 VARIANT PRICES (Initial active prices for all variants) -INSERT INTO `variant_prices` (`id`,`created_at`,`effective_date`,`purchase_price`,`selling_price`,`status`,`tax_percent`,`variant_id`,`base_selling_price`,`expiry_date`) VALUES(1,'2026-03-18 01:40:08.947535','2026-01-15',20000.00,23000.00,'ACTIVE',10.00,1,NULL,NULL),(2,'2026-03-18 01:40:08.947535','2026-02-01',12000.00,15000.00,'ACTIVE',10.00,2,NULL,NULL),(3,'2026-03-18 01:40:08.947535','2026-01-20',35000.00,45000.00,'ACTIVE',10.00,3,NULL,NULL),(4,'2026-03-18 01:40:08.947535','2026-02-10',12000.00,12000.00,'INACTIVE',10.00,4,NULL,NULL),(5,'2026-03-18 01:40:08.947535','2026-02-01',6000.00,8000.00,'ACTIVE',10.00,5,NULL,NULL),(6,'2026-03-18 01:40:08.947535','2026-01-15',10000.00,13000.00,'ACTIVE',10.00,6,NULL,NULL),(7,'2026-03-18 01:40:08.947535','2026-02-01',45000.00,55000.00,'ACTIVE',10.00,7,NULL,NULL),(8,'2026-03-18 01:40:08.947535','2026-01-20',18000.00,22000.00,'ACTIVE',10.00,8,NULL,NULL),(9,'2026-03-18 01:40:08.947535','2026-02-10',32000.00,40000.00,'INACTIVE',10.00,9,NULL,NULL),(10,'2026-03-18 01:40:08.947535','2026-02-01',1000.00,2000.00,'ACTIVE',5.00,10,NULL,NULL),(11,'2026-03-18 01:40:08.947535','2026-01-15',6000.00,8000.00,'ACTIVE',10.00,11,NULL,NULL),(12,'2026-03-18 01:40:08.947535','2026-02-01',3000.00,4500.00,'ACTIVE',10.00,12,NULL,NULL),(13,'2026-03-18 01:40:08.947535','2026-01-20',7000.00,10000.00,'ACTIVE',10.00,13,NULL,NULL),(14,'2026-03-18 01:40:08.947535','2026-02-10',11000.00,15000.00,'ACTIVE',10.00,14,NULL,NULL),(15,'2026-03-18 01:40:08.947535','2026-03-01',4000.00,6000.00,'ACTIVE',5.00,15,NULL,NULL),(16,'2026-03-18 01:40:08.947535','2026-03-01',25000.00,35000.00,'ACTIVE',10.00,16,NULL,NULL),(17,'2026-03-18 01:40:08.947535','2026-02-10',8000.00,12000.00,'ACTIVE',10.00,17,NULL,NULL),(18,'2026-03-18 01:40:08.947535','2026-02-15',7000.00,10000.00,'ACTIVE',10.00,18,NULL,NULL),(19,'2026-03-18 01:40:08.947535','2026-01-20',24000.00,30000.00,'ACTIVE',10.00,19,NULL,NULL),(20,'2026-03-18 01:40:08.947535','2026-02-10',20000.00,25000.00,'ACTIVE',10.00,20,NULL,NULL),(21,'2026-03-18 01:40:08.947535','2026-02-15',16000.00,20000.00,'INACTIVE',10.00,21,NULL,NULL),(22,'2026-03-18 01:40:08.947535','2026-02-15',14000.00,18000.00,'ACTIVE',10.00,22,NULL,NULL),(23,'2026-03-18 01:40:08.947535','2026-02-15',28000.00,35000.00,'ACTIVE',10.00,23,NULL,NULL),(24,'2026-03-18 01:40:08.947535','2026-02-15',20000.00,25000.00,'ACTIVE',10.00,24,NULL,NULL),(25,'2026-03-18 01:40:08.947535','2026-02-15',40000.00,50000.00,'ACTIVE',10.00,25,NULL,NULL),(26,'2026-03-18 01:40:08.947535','2026-02-15',32000.00,40000.00,'ACTIVE',10.00,26,NULL,NULL),(27,'2026-03-17 21:53:50.224337','2026-03-17',32000.00,30000.00,'INACTIVE',10.00,9,NULL,NULL),(28,'2026-03-17 21:54:07.038309','2026-03-17',32000.00,35000.00,'INACTIVE',10.00,9,NULL,NULL),(29,'2026-03-18 08:56:14.613425','2026-03-18',0.00,10000.00,'INACTIVE',10.00,33,NULL,'2026-03-19'),(30,'2026-03-18 10:12:59.693522','2026-03-18',32000.00,38500.00,'INACTIVE',10.00,9,NULL,'2026-03-19'),(31,'2026-03-18 16:35:35.389328','2026-03-18',16000.00,23100.00,'ACTIVE',10.00,21,NULL,NULL),(32,'2026-03-19 06:54:18.323113','2026-03-19',500000.00,0.00,'INACTIVE',5.00,34,NULL,NULL),(33,'2026-03-19 06:54:18.331646','2026-03-19',10416.67,0.00,'INACTIVE',5.00,27,NULL,NULL),(34,'2026-03-19 06:55:04.014556','2026-03-19',12083.33,15800.00,'INACTIVE',5.00,27,NULL,'2026-03-20'),(35,'2026-03-19 06:55:19.571183','2026-03-19',580000.00,577500.00,'INACTIVE',5.00,34,NULL,'2026-03-20'),(36,'2026-03-19 09:02:42.165644','2026-03-19',32000.00,38500.00,'ACTIVE',10.00,9,NULL,'2026-08-31'),(37,'2026-03-19 09:03:09.683238','2026-03-19',10000.00,12100.00,'ACTIVE',10.00,30,NULL,'2026-08-31'),(38,'2026-03-19 09:03:41.998133','2026-03-19',12000.00,15400.00,'ACTIVE',10.00,4,NULL,'2026-08-31'),(39,'2026-03-19 09:04:18.388334','2026-03-19',10000.00,15400.00,'ACTIVE',10.00,28,NULL,'2026-08-31'); +INSERT INTO `variant_prices` (`id`,`created_at`,`effective_date`,`purchase_price`,`selling_price`,`status`,`tax_percent`,`variant_id`,`base_selling_price`,`expiry_date`) VALUES(1,'2026-03-18 01:40:08.947535','2026-01-15',20000.00,23000.00,'ACTIVE',10.00,1,NULL,NULL),(2,'2026-03-18 01:40:08.947535','2026-02-01',12000.00,15000.00,'ACTIVE',10.00,2,NULL,NULL),(3,'2026-03-18 01:40:08.947535','2026-01-20',35000.00,45000.00,'ACTIVE',10.00,3,NULL,NULL),(5,'2026-03-18 01:40:08.947535','2026-02-01',6000.00,8000.00,'ACTIVE',10.00,5,NULL,NULL),(6,'2026-03-18 01:40:08.947535','2026-01-15',10000.00,13000.00,'ACTIVE',10.00,6,NULL,NULL),(7,'2026-03-18 01:40:08.947535','2026-02-01',45000.00,55000.00,'ACTIVE',10.00,7,NULL,NULL),(8,'2026-03-18 01:40:08.947535','2026-01-20',18000.00,22000.00,'ACTIVE',10.00,8,NULL,NULL),(9,'2026-03-18 01:40:08.947535','2026-02-10',32000.00,40000.00,'INACTIVE',10.00,9,NULL,NULL),(10,'2026-03-18 01:40:08.947535','2026-02-01',1000.00,2000.00,'ACTIVE',5.00,10,NULL,NULL),(11,'2026-03-18 01:40:08.947535','2026-01-15',6000.00,8000.00,'ACTIVE',10.00,11,NULL,NULL),(12,'2026-03-18 01:40:08.947535','2026-02-01',3000.00,4500.00,'ACTIVE',10.00,12,NULL,NULL),(13,'2026-03-18 01:40:08.947535','2026-01-20',7000.00,10000.00,'ACTIVE',10.00,13,NULL,NULL),(14,'2026-03-18 01:40:08.947535','2026-02-10',11000.00,15000.00,'ACTIVE',10.00,14,NULL,NULL),(15,'2026-03-18 01:40:08.947535','2026-03-01',4000.00,6000.00,'ACTIVE',5.00,15,NULL,NULL),(16,'2026-03-18 01:40:08.947535','2026-03-01',25000.00,35000.00,'ACTIVE',10.00,16,NULL,NULL),(17,'2026-03-18 01:40:08.947535','2026-02-10',8000.00,12000.00,'ACTIVE',10.00,17,NULL,NULL),(18,'2026-03-18 01:40:08.947535','2026-02-15',7000.00,10000.00,'ACTIVE',10.00,18,NULL,NULL),(19,'2026-03-18 01:40:08.947535','2026-01-20',24000.00,30000.00,'ACTIVE',10.00,19,NULL,NULL),(20,'2026-03-18 01:40:08.947535','2026-02-10',20000.00,25000.00,'ACTIVE',10.00,20,NULL,NULL),(21,'2026-03-18 01:40:08.947535','2026-02-15',16000.00,20000.00,'INACTIVE',10.00,21,NULL,NULL),(22,'2026-03-18 01:40:08.947535','2026-02-15',14000.00,18000.00,'ACTIVE',10.00,22,NULL,NULL),(23,'2026-03-18 01:40:08.947535','2026-02-15',28000.00,35000.00,'ACTIVE',10.00,23,NULL,NULL),(24,'2026-03-18 01:40:08.947535','2026-02-15',20000.00,25000.00,'ACTIVE',10.00,24,NULL,NULL),(25,'2026-03-18 01:40:08.947535','2026-02-15',40000.00,50000.00,'ACTIVE',10.00,25,NULL,NULL),(26,'2026-03-18 01:40:08.947535','2026-02-15',32000.00,40000.00,'ACTIVE',10.00,26,NULL,NULL),(27,'2026-03-17 21:53:50.224337','2026-03-17',32000.00,30000.00,'INACTIVE',10.00,9,NULL,NULL),(28,'2026-03-17 21:54:07.038309','2026-03-17',32000.00,35000.00,'INACTIVE',10.00,9,NULL,NULL),(29,'2026-03-18 08:56:14.613425','2026-03-18',0.00,10000.00,'INACTIVE',10.00,33,NULL,'2026-03-19'),(30,'2026-03-18 10:12:59.693522','2026-03-18',32000.00,38500.00,'INACTIVE',10.00,9,NULL,'2026-03-19'),(31,'2026-03-18 16:35:35.389328','2026-03-18',16000.00,23100.00,'ACTIVE',10.00,21,NULL,NULL),(36,'2026-03-19 09:02:42.165644','2026-03-19',32000.00,38500.00,'ACTIVE',10.00,9,NULL,'2026-08-31'),(37,'2026-03-19 09:03:09.683238','2026-03-19',10000.00,12100.00,'ACTIVE',10.00,30,NULL,'2026-08-31'),(39,'2026-03-19 09:04:18.388334','2026-03-19',10000.00,15400.00,'ACTIVE',10.00,28,NULL,'2026-08-31'); -- 9.2 PRICE EXPIRY ALERT LOGS INSERT INTO `price_expiry_alert_logs` VALUES (1,'2026-03-15','admin.smalltrend.swp@gmail.com','2026-03-15 02:53:16.595705',27),(2,'2026-03-15','admin.smalltrend.swp@gmail.com','2026-03-15 02:53:16.640614',28),(3,'2026-03-15','admin.smalltrend.swp@gmail.com','2026-03-15 02:53:16.651063',29),(4,'2026-03-15','dambautv2005@gmail.com','2026-03-15 02:58:20.296450',27),(5,'2026-03-15','dambautv2005@gmail.com','2026-03-15 02:58:20.318989',28),(6,'2026-03-15','dambautv2005@gmail.com','2026-03-15 02:58:20.324900',29),(7,'2026-03-15','dambautv2005@gmail.com','2026-03-15 03:04:04.016778',30),(8,'2026-03-15','admin.smalltrend.swp@gmail.com','2026-03-15 03:05:36.397402',30),(9,'2026-03-15','dambautvsss2005@gmail.com','2026-03-15 03:23:02.758387',27),(10,'2026-03-15','dambautvsss2005@gmail.com','2026-03-15 03:23:02.793075',28),(11,'2026-03-15','dambautvsss2005@gmail.com','2026-03-15 03:23:02.801224',29),(12,'2026-03-15','dambautvsss2005@gmail.com','2026-03-15 03:23:02.811466',30),(14,'2026-03-17','dambautv2005@gmail.com','2026-03-17 09:03:00.184541',27),(15,'2026-03-17','admin.smalltrend.swp@gmail.com','2026-03-17 09:03:03.636309',27),(16,'2026-03-17','dambautvsss2005@gmail.com','2026-03-17 09:03:07.171150',27),(17,'2026-03-17','ngohuyzzz1@gmail.com','2026-03-17 09:03:16.491780',27); @@ -128,10 +128,10 @@ INSERT INTO `locations` VALUES (1,'Kho chính, Dãy A, Hàng 1',5000,'2026-03-18 -- 11. PRODUCT BATCHES -INSERT INTO `product_batches` VALUES (1,'VM2026001',20000.00,'2026-04-15','2026-01-15',1),(2,'DV2026001',12000.00,'2027-02-01','2026-02-01',2),(3,'NC2026001',35000.00,'2027-01-20','2026-01-20',3),(4,'CC2026001',8000.00,'2026-08-10','2026-02-10',4),(5,'OI2026001',6000.00,'2026-06-01','2026-02-01',5),(6,'CH2026001',10000.00,'2026-10-15','2026-01-15',6),(7,'CP2026001',45000.00,'2026-04-01','2026-02-01',7),(8,'VS2026001',18000.00,'2027-01-20','2026-01-20',8),(9,'OR2026001',32000.00,'2026-12-10','2026-02-10',9),(10,'CU2026001',1000.00,'2027-06-01','2026-02-01',10),(11,'VF2026001',6000.00,'2026-07-15','2026-01-15',11),(12,'HH2026001',3000.00,'2026-08-01','2026-02-01',12),(13,'OM2026001',7000.00,'2026-07-20','2026-01-20',13),(14,'CS2026001',11000.00,'2027-02-10','2026-02-10',14),(15,'THY2026001',4000.00,'2026-04-01','2026-03-01',15),(16,'THM2026001',25000.00,'2026-09-01','2026-03-01',16),(17,'LA2026001',8000.00,'2026-11-10','2026-02-10',17),(18,'TP2026001',7000.00,'2026-10-15','2026-02-15',18),(19,'KN2026001',24000.00,'2027-01-20','2026-01-20',19),(20,'MG2026001',20000.00,'2027-02-10','2026-02-10',20),(21,'HEI2026001',16000.00,'2027-02-15','2026-02-15',21),(22,'TIG2026001',14000.00,'2027-02-15','2026-02-15',22),(23,'NN2026001',28000.00,'2027-02-15','2026-02-15',23),(24,'OT2026001',20000.00,'2027-02-15','2026-02-15',24),(25,'TA2026001',40000.00,'2027-02-15','2026-02-15',25),(26,'OMO2026001',32000.00,'2027-02-15','2026-02-15',26),(27,'DA2026027',20000.00,'2026-10-31','2026-03-18',34),(28,'CC2026001',8000.00,'2026-08-10','2026-02-10',35),(29,'BE2026029',12000.00,'2026-11-30','2026-03-18',35),(30,'DA2026030',25000.00,'2026-11-30','2026-03-18',27),(31,'DA2026031',23000.00,'2027-03-18','2026-03-18',27),(32,'PE2026032',10000.00,'2027-12-31','2026-03-18',28),(33,'SN2026033',10000.00,'2027-03-13','2026-03-18',30),(34,'DAIRYV-000034',500000.00,'2027-03-19','2026-03-19',27),(38,'DAIRYV-000035',520000.00,'2026-12-30','2026-03-19',27),(39,'DAIRYV-000036',580000.00,'2026-12-30','2026-03-19',27),(40,'EX2026040',12000.00,'2026-02-10','2026-01-10',4),(41,'EX2026041',16000.00,'2026-01-25','2025-12-25',21),(42,'EX2026042',7000.00,'2026-03-05','2026-01-05',18); +INSERT INTO `product_batches` VALUES (1,'VM2026001',20000.00,'2026-04-15','2026-01-15',1),(2,'DV2026001',12000.00,'2027-02-01','2026-02-01',2),(3,'NC2026001',35000.00,'2027-01-20','2026-01-20',3),(5,'OI2026001',6000.00,'2026-06-01','2026-02-01',5),(6,'CH2026001',10000.00,'2026-10-15','2026-01-15',6),(7,'CP2026001',45000.00,'2026-04-01','2026-02-01',7),(8,'VS2026001',18000.00,'2027-01-20','2026-01-20',8),(9,'OR2026001',32000.00,'2026-12-10','2026-02-10',9),(10,'CU2026001',1000.00,'2027-06-01','2026-02-01',10),(11,'VF2026001',6000.00,'2026-07-15','2026-01-15',11),(12,'HH2026001',3000.00,'2026-08-01','2026-02-01',12),(13,'OM2026001',7000.00,'2026-07-20','2026-01-20',13),(14,'CS2026001',11000.00,'2027-02-10','2026-02-10',14),(15,'THY2026001',4000.00,'2026-04-01','2026-03-01',15),(16,'THM2026001',25000.00,'2026-09-01','2026-03-01',16),(17,'LA2026001',8000.00,'2026-11-10','2026-02-10',17),(18,'TP2026001',7000.00,'2026-10-15','2026-02-15',18),(19,'KN2026001',24000.00,'2027-01-20','2026-01-20',19),(20,'MG2026001',20000.00,'2027-02-10','2026-02-10',20),(21,'HEI2026001',16000.00,'2027-02-15','2026-02-15',21),(22,'TIG2026001',14000.00,'2027-02-15','2026-02-15',22),(23,'NN2026001',28000.00,'2027-02-15','2026-02-15',23),(24,'OT2026001',20000.00,'2027-02-15','2026-02-15',24),(25,'TA2026001',40000.00,'2027-02-15','2026-02-15',25),(26,'OMO2026001',32000.00,'2027-02-15','2026-02-15',26),(32,'PE2026032',10000.00,'2027-12-31','2026-03-18',28),(33,'SN2026033',10000.00,'2027-03-13','2026-03-18',30),(41,'EX2026041',16000.00,'2026-01-25','2025-12-25',21),(42,'EX2026042',7000.00,'2026-03-05','2026-01-05',18); -- 11.1 INVENTORY STOCK -INSERT INTO `inventory_stock` VALUES (1,214,1,1,1),(2,178,2,2,2),(3,260,3,3,3),(4,502,4,4,4),(5,383,5,5,5),(6,120,6,1,6),(7,85,7,2,7),(8,150,8,3,8),(9,200,9,4,9),(10,973,10,5,10),(11,300,11,1,11),(12,500,12,2,12),(13,400,13,3,13),(14,250,14,4,14),(15,180,15,5,15),(16,210,16,1,16),(17,318,17,2,17),(18,280,18,3,18),(19,140,19,4,19),(20,190,20,5,20),(21,300,21,1,21),(22,250,22,2,22),(23,100,23,3,23),(24,148,24,4,24),(25,200,25,5,25),(26,80,26,1,26),(27,480,27,1,34),(28,16,28,4,35),(29,300,29,1,35),(30,480,30,1,27),(31,480,31,2,27),(32,1,32,1,28),(33,10,33,3,30),(34,96,34,1,27),(38,384,38,1,27),(39,240,39,1,27),(40,24,40,2,4),(41,15,41,3,21),(42,30,42,4,18); +INSERT INTO `inventory_stock` VALUES (1,214,1,1,1),(2,178,2,2,2),(3,260,3,3,3),(5,383,5,5,5),(6,120,6,1,6),(7,85,7,2,7),(8,150,8,3,8),(9,200,9,4,9),(10,973,10,5,10),(11,300,11,1,11),(12,500,12,2,12),(13,400,13,3,13),(14,250,14,4,14),(15,180,15,5,15),(16,210,16,1,16),(17,318,17,2,17),(18,280,18,3,18),(19,140,19,4,19),(20,190,20,5,20),(21,300,21,1,21),(22,250,22,2,22),(23,100,23,3,23),(24,148,24,4,24),(25,200,25,5,25),(26,80,26,1,26),(32,1,32,1,28),(33,10,33,3,30),(41,15,41,3,21),(42,30,42,4,18); -- Điều chỉnh số lượng tồn kho để phản ánh trạng thái sau khi đã xác nhận phiếu kiểm kho -- và các giao dịch bán hàng đã ghi nhận trong stock_movements @@ -141,8 +141,6 @@ UPDATE inventory_stock SET quantity = 245 WHERE variant_id = 1 AND location_id = UPDATE inventory_stock SET quantity = 178 WHERE variant_id = 2 AND location_id = 2 AND batch_id = 2; -- variant 3 (Nescafe, loc 3): 260 + 1 (IC-2026-0002) - 1 (bán) = 260 UPDATE inventory_stock SET quantity = 260 WHERE variant_id = 3 AND location_id = 3 AND batch_id = 3; --- variant 4 (Coca Cola, loc 4): 510 - 4 (sale 1) - 4 (lẻ) = ~502, để ở mức trước kiểm -UPDATE inventory_stock SET quantity = 502 WHERE variant_id = 4 AND location_id = 4 AND batch_id = 4; -- variant 5 (Oishi, loc 5): 390 - 3 (sale 1) = 387 UPDATE inventory_stock SET quantity = 387 WHERE variant_id = 5 AND location_id = 5 AND batch_id = 5; @@ -176,7 +174,7 @@ INSERT INTO `product_combos` VALUES (1,'CB-SNACK-1','Combo Siêu đn Vặt',2000 -- PRODUCT COMBO ITEMS -INSERT INTO `product_combo_items` VALUES (37,0,0,0,2,1,NULL,2,2,4),(38,0,0,0,1,1,NULL,1,2,5),(41,0,0,0,1,1,NULL,1,3,1),(42,0,0,0,1,1,NULL,1,3,13),(43,0,0,0,2,1,NULL,2,1,5),(44,0,0,0,1,1,NULL,1,1,17),(45,0,0,0,4,1,NULL,4,1,10),(46,0,0,0,2,1,NULL,2,4,5),(47,0,0,0,2,1,NULL,2,4,4),(48,0,0,0,1,1,NULL,1,5,6),(49,0,0,0,1,1,NULL,1,5,14),(50,0,0,0,1,1,NULL,1,5,20),(51,0,0,0,1,1,NULL,1,5,23),(54,0,0,0,2,1,NULL,2,9,4),(55,0,0,0,2,1,NULL,2,9,18),(56,0,0,0,2,1,NULL,2,9,5),(57,0,0,0,3,1,NULL,3,6,12),(58,0,0,0,3,1,NULL,3,6,13); +INSERT INTO `product_combo_items` VALUES (38,0,0,0,1,1,NULL,1,2,5),(41,0,0,0,1,1,NULL,1,3,1),(42,0,0,0,1,1,NULL,1,3,13),(43,0,0,0,2,1,NULL,2,1,5),(44,0,0,0,1,1,NULL,1,1,17),(45,0,0,0,4,1,NULL,4,1,10),(46,0,0,0,2,1,NULL,2,4,5),(48,0,0,0,1,1,NULL,1,5,6),(49,0,0,0,1,1,NULL,1,5,14),(50,0,0,0,1,1,NULL,1,5,20),(51,0,0,0,1,1,NULL,1,5,23),(55,0,0,0,2,1,NULL,2,9,18),(56,0,0,0,2,1,NULL,2,9,5),(57,0,0,0,3,1,NULL,3,6,12),(58,0,0,0,3,1,NULL,3,6,13); -- 17. CASH REGISTERS INSERT INTO `cash_registers` VALUES (1,'2026-03-18 01:40:09.000000',5000000.00,'DEV-POS-001',NULL,NULL,'Front Counter',NULL,NULL,2000000.00,'POS-001','Quầy 1','MAIN','2026-03-18 01:40:09.000000','ACTIVE','SmallTrend Store',NULL,NULL,NULL,0,'2026-03-18 01:40:09.000000',NULL,3),(2,'2026-03-18 01:40:09.000000',3000000.00,'DEV-POS-002',NULL,NULL,'Express Counter',NULL,NULL,1000000.00,'POS-002','Quầy 2','EXPRESS',NULL,'ACTIVE','SmallTrend Store',NULL,NULL,NULL,0,'2026-03-18 01:40:09.000000',NULL,NULL); @@ -197,7 +195,7 @@ INSERT INTO `sale_orders` VALUES (1,'2026-02-24 09:30:00.000000',0.00,'Đơn mua -- 19. SALE ORDER ITEMS -INSERT INTO `sale_order_items` VALUES (1,0.00,2400.00,26400.00,NULL,'Coca Cola 330ml',2,'COCA-330ML',12000.00,1,4),(2,0.00,2400.00,26400.00,NULL,'Oishi Snack',3,'OISHI-50G',8000.00,1,5),(3,2000.00,4800.00,52800.00,NULL,'Fresh Milk 1L',2,'VMILK-1L',25000.00,2,1),(4,3000.00,4500.00,46500.00,NULL,'Nescafe 3in1',1,'NESCAFE-200G',45000.00,2,3),(5,0.00,3000.00,33000.00,'1 sản phẩm bị lỗi vỏ hộp','Dove Soap 90g',2,'DOVE-90G',15000.00,3,2),(6,0.00,0.00,175000.00,'Migrated from legacy sales_order_items','Fresh Milk 1L',7,'VMILK-1L',25000.00,4,1),(7,0.00,0.00,95000.00,'Migrated from legacy sales_order_items','Dove Soap 90g',4,'DOVE-90G',23750.00,5,2),(8,0.00,0.00,57999.96,'Migrated from legacy sales_order_items','Nescafe 3in1',12,'NESCAFE-200G',4833.33,6,3),(9,0.00,0.00,120000.00,'Migrated from legacy sales_order_items','Coca Cola 330ml',10,'COCA-330ML',12000.00,7,4),(10,0.00,0.00,67000.00,'Migrated from legacy sales_order_items','Oishi Snack',5,'OISHI-50G',13400.00,8,5),(11,0.00,0.00,24000.00,NULL,'Coca Cola 330ml',2,'COCA-330ML',12000.00,9,4),(12,0.00,0.00,24000.00,NULL,'Oishi Snack',3,'OISHI-50G',8000.00,9,5),(13,0.00,0.00,50000.00,NULL,'Fresh Milk 1L',2,'VMILK-1L',25000.00,10,1),(14,0.00,0.00,45000.00,NULL,'Nescafe 3in1',1,'NESCAFE-200G',45000.00,10,3),(15,0.00,0.00,30000.00,NULL,'Dove Soap 90g',2,'DOVE-90G',15000.00,11,2),(16,0.00,0.00,25000.00,NULL,'Fresh Milk 1L',1,'VMILK-1L',25000.00,12,1),(17,0.00,0.00,60000.00,NULL,'Coca Cola 330ml',5,'COCA-330ML',12000.00,13,4),(18,0.00,0.00,32000.00,NULL,'Oishi Snack',4,'OISHI-50G',8000.00,13,5),(19,0.00,0.00,36000.00,NULL,'Coca Cola 330ml',3,'COCA-330ML',12000.00,14,4),(20,0.00,0.00,15000.00,NULL,'Dove Soap 90g',1,'DOVE-90G',15000.00,14,2),(21,0.00,0.00,75000.00,NULL,'Fresh Milk 1L',3,'VMILK-1L',25000.00,15,1),(22,0.00,0.00,90000.00,NULL,'Nescafe 3in1',2,'NESCAFE-200G',45000.00,15,3),(23,0.00,0.00,40000.00,NULL,'Oishi Snack',5,'OISHI-50G',8000.00,16,5),(24,0.00,0.00,50000.00,NULL,'Fresh Milk 1L',2,'VMILK-1L',25000.00,17,1),(25,0.00,0.00,45000.00,NULL,'Dove Soap 90g',3,'DOVE-90G',15000.00,17,2),(26,0.00,0.00,72000.00,NULL,'Coca Cola 330ml',6,'COCA-330ML',12000.00,18,4); +INSERT INTO `sale_order_items` VALUES (2,0.00,2400.00,26400.00,NULL,'Oishi Snack',3,'OISHI-50G',8000.00,1,5),(3,2000.00,4800.00,52800.00,NULL,'Fresh Milk 1L',2,'VMILK-1L',25000.00,2,1),(4,3000.00,4500.00,46500.00,NULL,'Nescafe 3in1',1,'NESCAFE-200G',45000.00,2,3),(5,0.00,3000.00,33000.00,'1 sản phẩm bị lỗi vỏ hộp','Dove Soap 90g',2,'DOVE-90G',15000.00,3,2),(6,0.00,0.00,175000.00,'Migrated from legacy sales_order_items','Fresh Milk 1L',7,'VMILK-1L',25000.00,4,1),(7,0.00,0.00,95000.00,'Migrated from legacy sales_order_items','Dove Soap 90g',4,'DOVE-90G',23750.00,5,2),(8,0.00,0.00,57999.96,'Migrated from legacy sales_order_items','Nescafe 3in1',12,'NESCAFE-200G',4833.33,6,3),(10,0.00,0.00,67000.00,'Migrated from legacy sales_order_items','Oishi Snack',5,'OISHI-50G',13400.00,8,5),(12,0.00,0.00,24000.00,NULL,'Oishi Snack',3,'OISHI-50G',8000.00,9,5),(13,0.00,0.00,50000.00,NULL,'Fresh Milk 1L',2,'VMILK-1L',25000.00,10,1),(14,0.00,0.00,45000.00,NULL,'Nescafe 3in1',1,'NESCAFE-200G',45000.00,10,3),(15,0.00,0.00,30000.00,NULL,'Dove Soap 90g',2,'DOVE-90G',15000.00,11,2),(16,0.00,0.00,25000.00,NULL,'Fresh Milk 1L',1,'VMILK-1L',25000.00,12,1),(18,0.00,0.00,32000.00,NULL,'Oishi Snack',4,'OISHI-50G',8000.00,13,5),(20,0.00,0.00,15000.00,NULL,'Dove Soap 90g',1,'DOVE-90G',15000.00,14,2),(21,0.00,0.00,75000.00,NULL,'Fresh Milk 1L',3,'VMILK-1L',25000.00,15,1),(22,0.00,0.00,90000.00,NULL,'Nescafe 3in1',2,'NESCAFE-200G',45000.00,15,3),(23,0.00,0.00,40000.00,NULL,'Oishi Snack',5,'OISHI-50G',8000.00,16,5),(24,0.00,0.00,50000.00,NULL,'Fresh Milk 1L',2,'VMILK-1L',25000.00,17,1),(25,0.00,0.00,45000.00,NULL,'Dove Soap 90g',3,'DOVE-90G',15000.00,17,2); -- 20. SALE ORDER HISTORIES INSERT INTO `sale_order_histories` VALUES (1,'CREATED','Khởi tạo đơn tại POS-001','2026-02-24 09:30:00.000000',NULL,'PENDING',3,1),(2,'PAYMENT_SUCCESS','Thanh toán tiền mặt thành công','2026-02-24 09:31:00.000000','PENDING','COMPLETED',3,1),(3,'CREATED','Khởi tạo đơn tại POS-001','2026-02-24 19:20:00.000000',NULL,'PENDING',3,2),(4,'PAYMENT_SUCCESS','Thanh toán thẻ thành công','2026-02-24 19:23:00.000000','PENDING','COMPLETED',3,2),(5,'CREATED','Khởi tạo đơn tại POS-002','2026-02-25 20:10:00.000000',NULL,'PENDING',3,3),(6,'PAYMENT_SUCCESS','Thanh toán ví điện tử thành công','2026-02-25 20:15:00.000000','PENDING','COMPLETED',3,3),(7,'REFUND_PARTIAL','Khách trả lại sản phẩm lỗi','2026-02-25 21:00:00.000000','COMPLETED','REFUNDED',2,3); @@ -280,24 +278,14 @@ INSERT INTO `purchase_orders` VALUES (1,'PO-2024-001',2,NULL,1,NULL,'2024-01-10',NULL,NULL,'RECEIVED',5000000.00,0.00,NULL,0.00,NULL,NULL,5000000.00,'Migrated from legacy purchase_orders',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-18 01:40:09.000000','2026-03-18 01:40:09.000000'), (2,'PO-2024-002',2,NULL,2,NULL,'2024-01-15',NULL,NULL,'RECEIVED',3500000.00,0.00,NULL,0.00,NULL,NULL,3500000.00,'Migrated from legacy purchase_orders',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-18 01:40:09.000000','2026-03-18 01:40:09.000000'), -(3,'PO-2024-004',4,NULL,4,NULL,'2024-02-05',NULL,NULL,'RECEIVED',1800000.00,0.00,NULL,0.00,NULL,NULL,1800000.00,'Migrated from legacy purchase_orders',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-18 01:40:09.000000','2026-03-18 01:40:09.000000'), (4,'PO-2024-005',4,NULL,3,NULL,'2024-02-10',NULL,NULL,'CONFIRMED',2200000.00,0.00,NULL,0.00,NULL,NULL,2200000.00,'Migrated from legacy purchase_orders',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-18 01:40:09.000000','2026-03-18 01:40:09.000000'), (5,'PO-2026-001',2,NULL,1,NULL,'2026-02-10',NULL,NULL,'RECEIVED',47000000.00,4700000.00,NULL,500000.00,NULL,NULL,51200000.00,'Đơn nhập sữa Vinamilk tháng 2',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-18 01:40:09.000000','2026-03-18 01:40:09.000000'), (6,'PO-2026-002',2,NULL,2,NULL,'2026-02-12',NULL,NULL,'CONFIRMED',18000000.00,1800000.00,NULL,0.00,NULL,NULL,19800000.00,'Đơn nhập đồ gia dụng Unilever',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-18 01:40:09.000000','2026-03-18 01:40:09.000000'), -(7,'PO-2026-003',1,NULL,1,1,'2026-03-18',NULL,'2026-03-18','RECEIVED',9600000.00,0.00,0.00,0.00,0.00,0.00,9600000.00,'',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-17 20:09:23.200903','2026-03-17 20:10:11.864228'), -(8,'PO-2026-004',4,NULL,4,1,'2026-03-18',NULL,'2026-03-18','RECEIVED',3600000.00,0.00,0.00,0.00,0.00,0.00,3600000.00,'',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-17 20:15:53.075633','2026-03-17 20:16:54.397422'), -(9,'PO-2026-005',2,NULL,1,1,'2026-03-18',NULL,'2026-03-18','RECEIVED',12000000.00,0.00,0.00,0.00,0.00,0.00,12000000.00,'',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-17 20:58:16.495149','2026-03-17 20:59:00.566714'), -(10,'PO-2026-006',2,NULL,1,2,'2026-03-18',NULL,'2026-03-18','RECEIVED',11040000.00,0.00,0.00,0.00,0.00,0.00,11040000.00,'',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-17 21:00:20.775031','2026-03-17 21:03:37.948102'), -(11,'PO-2026-007',3,NULL,NULL,NULL,'2026-03-18',NULL,NULL,'CHECKING',0.00,0.00,0.00,0.00,0.00,0.00,0.00,'',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-17 21:04:06.399199','2026-03-18 07:57:41.708769'), -(12,'PO-2026-008',3,NULL,NULL,NULL,'2026-03-18',NULL,NULL,'CHECKING',0.00,0.00,0.00,0.00,0.00,0.00,0.00,'',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-18 07:35:21.349491','2026-03-18 07:36:02.684663'), (13,'PO-2026-009',2,NULL,1,1,'2026-03-18',NULL,'2026-03-18','RECEIVED',10000.00,100.00,1.00,0.00,1000.00,0.00,11100.00,'',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-18 07:49:07.100376','2026-03-18 08:00:40.487019'), -(14,'PO-2026-010',4,NULL,1,3,'2026-03-18',NULL,'2026-03-18','RECEIVED',100000.00,1000.00,1.00,0.00,1000.00,0.00,102000.00,'',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-18 08:09:02.120031','2026-03-18 08:10:33.189713'), -(15,'PO-2026-011',1,NULL,1,1,'2026-03-19',NULL,'2026-03-19','RECEIVED',1000000.00,100000.00,10.00,0.00,100000.00,0.00,1200000.00,'',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-19 06:52:38.117005','2026-03-19 06:54:18.353439'), -(16,'PO-2026-012',1,NULL,1,1,'2026-03-19',NULL,'2026-03-19','RECEIVED',4160000.00,416000.00,10.00,0.00,100000.00,0.00,4676000.00,'',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-19 11:37:47.963521','2026-03-19 11:39:07.458262'), -(17,'PO-2026-013',1,NULL,1,1,'2026-03-19',NULL,'2026-03-19','RECEIVED',2900000.00,290000.00,10.00,0.00,100000.00,0.00,3290000.00,'',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-19 11:43:22.501573','2026-03-19 11:44:28.297791'); +(14,'PO-2026-010',4,NULL,1,3,'2026-03-18',NULL,'2026-03-18','RECEIVED',100000.00,1000.00,1.00,0.00,1000.00,0.00,102000.00,'',NULL,NULL,NULL,NULL,NULL,NULL,'2026-03-18 08:09:02.120031','2026-03-18 08:10:33.189713'); -- 26. PURCHASE ORDER ITEMS (Matching JPA PurchaseOrderItem schema) -INSERT INTO `purchase_order_items` VALUES (1,NULL,'Migrated from legacy purchase_order_items',250,250,NULL,20000.00,1,1),(2,NULL,'Migrated from legacy purchase_order_items',160,160,NULL,22000.00,2,2),(3,NULL,'Migrated from legacy purchase_order_items',200,200,NULL,9500.00,3,4),(4,NULL,'Migrated from legacy purchase_order_items',180,0,NULL,12000.00,4,5),(5,NULL,'Đã nhận đủ 2000 hộp',2000,2000,NULL,20000.00,5,1),(6,NULL,'Đã nhận đủ 200 gói',200,200,NULL,35000.00,5,3),(7,NULL,'Chưa nhận hàng',1500,0,NULL,12000.00,6,2),(8,'2026-10-31','',10,480,9600000.00,20000.00,7,34),(9,'2026-11-30','',10,300,3600000.00,12000.00,8,35),(10,'2026-11-30','',480,480,12000000.00,25000.00,9,27),(11,NULL,'',480,480,11040000.00,23000.00,10,27),(12,NULL,'',48,0,0.00,0.00,11,27),(13,NULL,'',1,0,0.00,0.00,12,28),(14,'2027-12-31','',1,1,10000.00,10000.00,13,28),(15,'2027-03-13','',10,10,100000.00,10000.00,14,30),(16,'2027-03-19','',2,96,1000000.00,500000.00,15,34),(17,'2026-12-30','',8,384,4160000.00,520000.00,16,34),(18,'2026-12-30','',5,240,2900000.00,580000.00,17,34); +INSERT INTO `purchase_order_items` (`id`,`expiry_date`,`notes`,`quantity`,`received_quantity`,`total_cost`,`unit_price`,`purchase_order_id`,`variant_id`) VALUES (1,NULL,'Migrated from legacy purchase_order_items',250,250,NULL,20000.00,1,1),(2,NULL,'Migrated from legacy purchase_order_items',160,160,NULL,22000.00,2,2),(4,NULL,'Migrated from legacy purchase_order_items',180,0,NULL,12000.00,4,5),(5,NULL,'Đã nhận đủ 2000 hộp',2000,2000,NULL,20000.00,5,1),(6,NULL,'Đã nhận đủ 200 gói',200,200,NULL,35000.00,5,3),(7,NULL,'Chưa nhận hàng',1500,0,NULL,12000.00,6,2),(14,'2027-12-31','',1,1,10000.00,10000.00,13,28),(15,'2027-03-13','',10,10,100000.00,10000.00,14,30); -- 27. SHIFT HANDOVERS INSERT INTO `shift_handovers` VALUES (1,2500000.00,NULL,2500000.00,'{\"500k\":2,\"200k\":5,\"100k\":5}',0,'2026-02-24 23:15:00.000000','2026-03-18 01:40:09.000000',NULL,'{\"printer\":\"OK\",\"scanner\":\"OK\"}',2500000.00,'HANDOVER-001','2026-02-24 23:10:00.000000','Đã bàn giao đầy đủ','{\"note\":\"Bổ sung nước ngọt tầng 2\"}','Không có sự cố lớn','[4,5]','CONFIRMED',96,120000.00,8200000.00,15,'2026-03-18 01:40:09.000000',0.00,1,3,3,2); @@ -309,7 +297,7 @@ INSERT INTO `payroll_calculations` VALUES (1,NULL,NULL,1500000.00,'2026-02-28 18 INSERT INTO `shift_swap_requests` VALUES (1,NULL,'2026-02-21 10:15:00.000000','2026-03-18 01:40:09.000000','2026-02-26 23:59:59.000000','Được phép - hai nhân viên đã thoả thuận','2026-02-26','Có việc gia đình buổi trưa, xin đổi ca sáng sang ca chiều',NULL,'SWAP-REQ-001','ACCEPTED','DIRECT_SWAP','2026-02-26','2026-03-18 01:40:09.000000',NULL,2,1,3,2,4),(2,NULL,NULL,'2026-03-18 01:40:09.000000','2026-02-28 23:59:59.000000','Nhờ đồng nghiệp đổi ca chiều thứ 6','2026-02-28','Xin đổi ca để hỗ trợ ca sáng tuần sau',NULL,'SWAP-REQ-002','PENDING','DIRECT_SWAP','2026-02-28','2026-03-18 01:40:09.000000',NULL,NULL,2,4,1,3),(3,NULL,'2026-02-19 15:00:00.000000','2026-03-18 01:40:09.000000','2026-02-26 23:59:59.000000','Từ chối bởi quản lý','2026-02-22','Muốn đổi từ ca cuối tuần sang ca sáng','Không đủ nhân sự ca sáng','SWAP-REQ-003','REJECTED','DIRECT_SWAP','2026-02-22','2026-03-18 01:40:09.000000',NULL,2,4,6,1,7),(4,NULL,NULL,'2026-03-18 01:40:09.000000','2026-02-25 23:59:59.000000','Tự huỷ do đã giải quyết việc cá nhân','2026-02-25','Trao đổi ca làm việc',NULL,'SWAP-REQ-004','CANCELLED','DIRECT_SWAP','2026-02-25','2026-03-18 01:40:09.000000',NULL,NULL,1,5,4,6); -- 30. STOCK MOVEMENTS (Ghi chép chuyển động tồn kho) -INSERT INTO `stock_movements` VALUES (1,'2026-02-10 08:00:00.000000','Nhập sữa Vinamilk từ nhà cung cấp',2000,1,'PURCHASE_ORDER','IN',1,1,1),(2,'2026-02-10 08:30:00.000000','Nhập cà phê Nescafe từ nhà cung cấp',200,1,'PURCHASE_ORDER','IN',3,3,3),(3,'2026-02-15 10:00:00.000000','Bổ sung sữa lên kệ sale',150,1,'TRANSFER','IN',NULL,5,1),(4,'2026-02-15 10:00:00.000000','Xuất từ kho chính sang display zone',150,1,'TRANSFER','OUT',1,1,1),(5,'2026-02-24 09:31:00.000000','Bán Coca Cola qua POS-001',4,1,'SALE','OUT',4,4,4),(6,'2026-02-24 09:31:00.000000','Bán Oishi snack qua POS-001',3,1,'SALE','OUT',5,5,5),(7,'2026-02-24 19:23:00.000000','Bán sữa qua POS-001',4,2,'SALE','OUT',1,1,1),(8,'2026-02-24 19:23:00.000000','Bán cà phê qua POS-001',1,2,'SALE','OUT',3,3,3),(9,'2026-02-25 20:10:00.000000','Bán Dove soap qua POS-002',2,3,'SALE','OUT',2,2,2),(10,'2026-02-20 15:00:00.000000','IC-2026-0001: kiểm kho thiếu 5 hộp sữa Fresh Milk 1L',-5,1,'INVENTORY_COUNT','ADJUST',1,1,1),(11,'2026-02-20 16:00:00.000000','IC-2026-0002: kiểm kho thặng 1 gói Nescafe 3in1',1,2,'INVENTORY_COUNT','ADJUST',3,3,3),(12,'2026-03-17 20:10:11.812530','Nhập hàng từ PO PO-2026-003 (da nhan so luong quy doi)',480,7,'purchase_order','IN',27,1,34),(13,'2026-03-17 20:16:54.329528','Nhập hàng từ PO PO-2026-004 (da nhan so luong quy doi)',300,8,'purchase_order','IN',29,1,35),(14,'2026-03-17 20:59:00.518460','Nhập hàng từ PO PO-2026-005 (da nhan so luong quy doi)',480,9,'purchase_order','IN',30,1,27),(15,'2026-03-17 21:03:37.903715','Nhập hàng từ PO PO-2026-006 (da nhan so luong quy doi)',480,10,'purchase_order','IN',31,2,27),(16,'2026-03-18 08:00:40.465498','Nhập hàng từ PO PO-2026-009 (da nhan so luong quy doi)',1,13,'purchase_order','IN',32,1,28),(17,'2026-03-18 08:10:33.176734','Nhập hàng từ PO PO-2026-010 (da nhan so luong quy doi)',10,14,'purchase_order','IN',33,3,30),(18,'2026-03-19 06:54:18.306032','Nhập hàng từ PO PO-2026-011 (luu ton kho theo don vi goc)',96,15,'purchase_order','IN',34,1,27),(19,'2026-03-19 11:39:07.402276','Nhập hàng từ PO PO-2026-012 (luu ton kho theo don vi goc)',384,16,'purchase_order','IN',38,1,27),(20,'2026-03-19 11:44:28.263050','Nhập hàng từ PO PO-2026-013 (luu ton kho theo don vi goc)',240,17,'purchase_order','IN',39,1,27),(21,'2026-03-19 13:03:41.945531','POS_SALE',-14,17,'SALE_ORDER','OUT',1,1,1),(22,'2026-03-19 13:03:50.703936','POS_SALE',-14,18,'SALE_ORDER','OUT',1,1,1),(23,'2026-03-19 13:03:50.707199','POS_SALE',-14,19,'SALE_ORDER','OUT',1,1,1),(24,'2026-03-19 13:16:19.163027','POS_SALE',-2,20,'SALE_ORDER','OUT',5,5,5),(25,'2026-03-19 13:16:19.174907','POS_SALE',-1,21,'SALE_ORDER','OUT',17,2,17),(26,'2026-03-19 13:16:19.185327','POS_SALE',-7,22,'SALE_ORDER','OUT',10,5,10),(27,'2026-03-19 13:18:03.079801','POS_SALE',-1,23,'SALE_ORDER','OUT',24,4,24),(28,'2026-03-19 13:18:43.769767','POS_SALE',-1,25,'SALE_ORDER','OUT',24,4,24),(29,'2026-03-19 13:18:43.771033','POS_SALE',-1,24,'SALE_ORDER','OUT',24,4,24),(30,'2026-03-19 13:18:43.803295','POS_SALE',-2,26,'SALE_ORDER','OUT',5,5,5),(31,'2026-03-19 13:18:43.804814','POS_SALE',-2,29,'SALE_ORDER','OUT',5,5,5),(32,'2026-03-19 13:18:43.814672','POS_SALE',-1,27,'SALE_ORDER','OUT',17,2,17),(33,'2026-03-19 13:18:43.824105','POS_SALE',-7,28,'SALE_ORDER','OUT',10,5,10),(34,'2026-03-19 13:18:43.833640','POS_SALE',-1,30,'SALE_ORDER','OUT',17,2,17),(35,'2026-03-19 13:18:43.843636','POS_SALE',-7,31,'SALE_ORDER','OUT',10,5,10),(36,'2026-03-19 13:42:21.433728','POS_SALE',-1,32,'SALE_ORDER','OUT',10,5,10),(37,'2026-03-19 13:42:37.813547','POS_SALE',-1,33,'SALE_ORDER','OUT',10,5,10),(38,'2026-03-19 13:43:21.702339','POS_SALE',-1,34,'SALE_ORDER','OUT',10,5,10),(39,'2026-03-19 13:43:21.703843','POS_SALE',-1,35,'SALE_ORDER','OUT',10,5,10),(40,'2026-03-19 13:43:21.727834','POS_SALE',-1,36,'SALE_ORDER','OUT',10,5,10),(41,'2026-03-19 13:43:21.730826','POS_SALE',-1,37,'SALE_ORDER','OUT',10,5,10),(42,'2026-03-19 13:43:46.432698','POS_SALE',-1,38,'SALE_ORDER','OUT',10,5,10),(43,'2026-03-19 13:43:51.842681','POS_SALE',-1,40,'SALE_ORDER','OUT',10,5,10),(44,'2026-03-19 13:43:51.843682','POS_SALE',-1,39,'SALE_ORDER','OUT',10,5,10),(45,'2026-03-19 14:14:49.946095','POS_SALE',-10,41,'SALE_ORDER','OUT',10,5,10),(46,'2026-03-19 14:15:03.149703','POS_SALE',-10,42,'SALE_ORDER','OUT',10,5,10),(47,'2026-03-19 14:15:03.149703','POS_SALE',-10,43,'SALE_ORDER','OUT',10,5,10),(48,'2026-03-19 14:15:09.616302','POS refund from purchase history',2,NULL,'REFUND','IN',10,5,10),(49,'2026-03-19 14:15:22.755880','POS refund from purchase history',1,NULL,'REFUND','IN',10,5,10),(50,'2026-03-19 14:17:18.459125','Restock from resolved refund ticket TCK-REF-005',10,8,'REFUND','IN',10,5,10),(51,'2026-03-19 15:05:40.210523','POS_SALE',-1,44,'SALE_ORDER','OUT',1,1,1),(52,'2026-03-19 15:07:34.318511','POS_SALE',-1,45,'SALE_ORDER','OUT',1,1,1),(53,'2026-03-19 15:08:36.869550','POS_SALE',-1,46,'SALE_ORDER','OUT',1,1,1); +INSERT INTO `stock_movements` VALUES (1,'2026-02-10 08:00:00.000000','Nhập sữa Vinamilk từ nhà cung cấp',2000,1,'PURCHASE_ORDER','IN',1,1,1),(2,'2026-02-10 08:30:00.000000','Nhập cà phê Nescafe từ nhà cung cấp',200,1,'PURCHASE_ORDER','IN',3,3,3),(3,'2026-02-15 10:00:00.000000','Bổ sung sữa lên kệ sale',150,1,'TRANSFER','IN',NULL,5,1),(4,'2026-02-15 10:00:00.000000','Xuất từ kho chính sang display zone',150,1,'TRANSFER','OUT',1,1,1),(6,'2026-02-24 09:31:00.000000','Bán Oishi snack qua POS-001',3,1,'SALE','OUT',5,5,5),(7,'2026-02-24 19:23:00.000000','Bán sữa qua POS-001',4,2,'SALE','OUT',1,1,1),(8,'2026-02-24 19:23:00.000000','Bán cà phê qua POS-001',1,2,'SALE','OUT',3,3,3),(9,'2026-02-25 20:10:00.000000','Bán Dove soap qua POS-002',2,3,'SALE','OUT',2,2,2),(10,'2026-02-20 15:00:00.000000','IC-2026-0001: kiểm kho thiếu 5 hộp sữa Fresh Milk 1L',-5,1,'INVENTORY_COUNT','ADJUST',1,1,1),(11,'2026-02-20 16:00:00.000000','IC-2026-0002: kiểm kho thặng 1 gói Nescafe 3in1',1,2,'INVENTORY_COUNT','ADJUST',3,3,3),(16,'2026-03-18 08:00:40.465498','Nhập hàng từ PO PO-2026-009 (da nhan so luong quy doi)',1,13,'purchase_order','IN',32,1,28),(17,'2026-03-18 08:10:33.176734','Nhập hàng từ PO PO-2026-010 (da nhan so luong quy doi)',10,14,'purchase_order','IN',33,3,30),(21,'2026-03-19 13:03:41.945531','POS_SALE',-14,17,'SALE_ORDER','OUT',1,1,1),(22,'2026-03-19 13:03:50.703936','POS_SALE',-14,18,'SALE_ORDER','OUT',1,1,1),(23,'2026-03-19 13:03:50.707199','POS_SALE',-14,19,'SALE_ORDER','OUT',1,1,1),(24,'2026-03-19 13:16:19.163027','POS_SALE',-2,20,'SALE_ORDER','OUT',5,5,5),(25,'2026-03-19 13:16:19.174907','POS_SALE',-1,21,'SALE_ORDER','OUT',17,2,17),(26,'2026-03-19 13:16:19.185327','POS_SALE',-7,22,'SALE_ORDER','OUT',10,5,10),(27,'2026-03-19 13:18:03.079801','POS_SALE',-1,23,'SALE_ORDER','OUT',24,4,24),(28,'2026-03-19 13:18:43.769767','POS_SALE',-1,25,'SALE_ORDER','OUT',24,4,24),(29,'2026-03-19 13:18:43.771033','POS_SALE',-1,24,'SALE_ORDER','OUT',24,4,24),(30,'2026-03-19 13:18:43.803295','POS_SALE',-2,26,'SALE_ORDER','OUT',5,5,5),(31,'2026-03-19 13:18:43.804814','POS_SALE',-2,29,'SALE_ORDER','OUT',5,5,5),(32,'2026-03-19 13:18:43.814672','POS_SALE',-1,27,'SALE_ORDER','OUT',17,2,17),(33,'2026-03-19 13:18:43.824105','POS_SALE',-7,28,'SALE_ORDER','OUT',10,5,10),(34,'2026-03-19 13:18:43.833640','POS_SALE',-1,30,'SALE_ORDER','OUT',17,2,17),(35,'2026-03-19 13:18:43.843636','POS_SALE',-7,31,'SALE_ORDER','OUT',10,5,10),(36,'2026-03-19 13:42:21.433728','POS_SALE',-1,32,'SALE_ORDER','OUT',10,5,10),(37,'2026-03-19 13:42:37.813547','POS_SALE',-1,33,'SALE_ORDER','OUT',10,5,10),(38,'2026-03-19 13:43:21.702339','POS_SALE',-1,34,'SALE_ORDER','OUT',10,5,10),(39,'2026-03-19 13:43:21.703843','POS_SALE',-1,35,'SALE_ORDER','OUT',10,5,10),(40,'2026-03-19 13:43:21.727834','POS_SALE',-1,36,'SALE_ORDER','OUT',10,5,10),(41,'2026-03-19 13:43:21.730826','POS_SALE',-1,37,'SALE_ORDER','OUT',10,5,10),(42,'2026-03-19 13:43:46.432698','POS_SALE',-1,38,'SALE_ORDER','OUT',10,5,10),(43,'2026-03-19 13:43:51.842681','POS_SALE',-1,40,'SALE_ORDER','OUT',10,5,10),(44,'2026-03-19 13:43:51.843682','POS_SALE',-1,39,'SALE_ORDER','OUT',10,5,10),(45,'2026-03-19 14:14:49.946095','POS_SALE',-10,41,'SALE_ORDER','OUT',10,5,10),(46,'2026-03-19 14:15:03.149703','POS_SALE',-10,42,'SALE_ORDER','OUT',10,5,10),(47,'2026-03-19 14:15:03.149703','POS_SALE',-10,43,'SALE_ORDER','OUT',10,5,10),(48,'2026-03-19 14:15:09.616302','POS refund from purchase history',2,NULL,'REFUND','IN',10,5,10),(49,'2026-03-19 14:15:22.755880','POS refund from purchase history',1,NULL,'REFUND','IN',10,5,10),(50,'2026-03-19 14:17:18.459125','Restock from resolved refund ticket TCK-REF-005',10,8,'REFUND','IN',10,5,10),(51,'2026-03-19 15:05:40.210523','POS_SALE',-1,44,'SALE_ORDER','OUT',1,1,1),(52,'2026-03-19 15:07:34.318511','POS_SALE',-1,45,'SALE_ORDER','OUT',1,1,1),(53,'2026-03-19 15:08:36.869550','POS_SALE',-1,46,'SALE_ORDER','OUT',1,1,1); -- 31. INVENTORY COUNTS (Phiếu kiểm kho — đủ vòng đời: CONFIRMED, PENDING, COUNTING, DRAFT, REJECTED) -- Code format: IC-{year}-{seq4} — khớp với generateCode() trong InventoryCountService @@ -320,7 +308,7 @@ UPDATE inventory_counts SET rejection_reason = 'Dữ liệu kiểm kê không kh -- 32. INVENTORY COUNT ITEMS -- difference_value tính theo cost_price của batch tương ứng -INSERT INTO `inventory_count_items` (`id`,`actual_quantity`,`difference_quantity`,`difference_value`,`product_id`,`reason`,`system_quantity`,`inventory_count_id`,`variant_id`) VALUES (1,245,-5,-100000.00,1,'SHRINKAGE',250,1,NULL),(2,180,0,0.00,2,NULL,180,1,NULL),(3,120,0,0.00,6,NULL,120,1,NULL),(4,300,0,0.00,11,NULL,300,1,NULL),(5,261,1,35000.00,3,'COUNTING_ERROR',260,2,NULL),(6,150,0,0.00,8,NULL,150,2,NULL),(7,400,0,0.00,13,NULL,400,2,NULL),(8,280,0,0.00,18,NULL,280,2,NULL),(9,84,-1,-45000.00,7,'DAMAGE',85,3,NULL),(10,500,0,0.00,12,NULL,500,3,NULL),(11,320,0,0.00,17,NULL,320,3,NULL),(12,510,0,0.00,4,NULL,510,4,NULL),(13,NULL,NULL,NULL,9,NULL,200,4,NULL),(14,NULL,NULL,NULL,14,NULL,250,4,NULL),(15,390,0,0.00,5,NULL,390,5,NULL),(16,995,-5,-5000.00,10,'OTHER',1000,5,NULL),(17,245,0,0.00,1,'',245,6,1),(18,120,0,0.00,6,'',120,6,6),(19,300,0,0.00,11,'',300,6,11),(20,210,0,0.00,16,'',210,6,16),(21,300,0,0.00,21,'',300,6,21),(22,80,0,0.00,26,'',80,6,26),(23,480,0,0.00,1,'',480,6,27),(24,1,0,0.00,2,'',1,6,28),(25,480,0,0.00,1,'',480,6,34),(26,300,0,0.00,4,'',300,6,35); +INSERT INTO `inventory_count_items` (`id`,`actual_quantity`,`difference_quantity`,`difference_value`,`product_id`,`reason`,`system_quantity`,`inventory_count_id`,`variant_id`) VALUES (1,245,-5,-100000.00,1,'SHRINKAGE',250,1,NULL),(2,180,0,0.00,2,NULL,180,1,NULL),(3,120,0,0.00,6,NULL,120,1,NULL),(4,300,0,0.00,11,NULL,300,1,NULL),(5,261,1,35000.00,3,'COUNTING_ERROR',260,2,NULL),(6,150,0,0.00,8,NULL,150,2,NULL),(7,400,0,0.00,13,NULL,400,2,NULL),(8,280,0,0.00,18,NULL,280,2,NULL),(9,84,-1,-45000.00,7,'DAMAGE',85,3,NULL),(10,500,0,0.00,12,NULL,500,3,NULL),(11,320,0,0.00,17,NULL,320,3,NULL),(13,NULL,NULL,NULL,9,NULL,200,4,NULL),(14,NULL,NULL,NULL,14,NULL,250,4,NULL),(15,390,0,0.00,5,NULL,390,5,NULL),(16,995,-5,-5000.00,10,'OTHER',1000,5,NULL),(17,245,0,0.00,1,'',245,6,1),(18,120,0,0.00,6,'',120,6,6),(19,300,0,0.00,11,'',300,6,11),(20,210,0,0.00,16,'',210,6,16),(21,300,0,0.00,21,'',300,6,21),(22,80,0,0.00,26,'',80,6,26),(24,1,0,0.00,2,'',1,6,28); -- 33. DISPOSAL VOUCHERS (Phiếu thanh lý hàng hỏng/lỗi) INSERT INTO `disposal_vouchers` VALUES (1,'DV-202602-001','2026-02-18 14:00:00.000000','2026-02-18 13:30:00.000000','Sản phẩm lỗi - vỏ hộp, không lỗi chất lượng nội dung','DAMAGED',NULL,'CONFIRMED',1,12,180000.00,NULL,2,5,1),(2,'DV-202602-002','2026-02-22 10:30:00.000000','2026-02-22 10:00:00.000000','Sản phẩm hết hạn sử dụng - tìm thấy khi kiểm kho','EXPIRED',NULL,'CONFIRMED',1,8,96000.00,NULL,2,5,3); @@ -339,24 +327,21 @@ WHERE id > 0 AND status = 'PENDING'; -- 35. LOYALTY GIFTS (Quà tặng gift/rewards từ loyalty program) -INSERT INTO `loyalty_gifts` VALUES (1,'2026-03-18 01:40:09.000000',0,'Nước uống đặc biệt 500ml',50,150,4),(2,'2026-03-18 01:40:09.000000',0,'Bộ cà phê hòa tan 3in1',150,80,3),(3,'2026-03-18 01:40:09.000000',0,'Xà phòng Dove 90g',75,200,2),(4,'2026-03-18 01:40:09.000000',0,'Sữa tươi Vinamilk 1L',200,50,1),(5,'2026-03-18 01:40:09.000000',0,'Combo Snack Oishi',100,100,5),(6,'2026-03-19 15:38:12.253398',0,'Nước ngọt Coca Cola (Đổi điểm)',5,10,4); +INSERT INTO `loyalty_gifts` VALUES (2,'2026-03-18 01:40:09.000000',0,'Bộ cà phê hòa tan 3in1',150,80,3),(3,'2026-03-18 01:40:09.000000',0,'Xà phòng Dove 90g',75,200,2),(4,'2026-03-18 01:40:09.000000',0,'Sữa tươi Vinamilk 1L',200,50,1),(5,'2026-03-18 01:40:09.000000',0,'Combo Snack Oishi',100,100,5); -- 36. GIFT REDEMPTION HISTORY (Lịch sử sử dụng quà tặng) -INSERT INTO `gift_redemption_history` VALUES (1,50,'2026-02-15 10:30:00.000000',1,1),(2,150,'2026-02-16 14:15:00.000000',2,2),(3,75,'2026-02-18 09:20:00.000000',3,3),(4,200,'2026-02-20 16:00:00.000000',4,4),(5,100,'2026-02-22 12:30:00.000000',1,5); +INSERT INTO `gift_redemption_history` VALUES (2,150,'2026-02-16 14:15:00.000000',2,2),(3,75,'2026-02-18 09:20:00.000000',3,3),(4,200,'2026-02-20 16:00:00.000000',4,4),(5,100,'2026-02-22 12:30:00.000000',1,5); -- 37. PURCHASE HISTORY (Phù hợp với legacy purchase history) INSERT INTO `purchase_history` (`id`,`customer_id`,`customer_name`,`product_id`,`product_name`,`quantity`,`price`,`subtotal`,`payment_method`,`voucher_discount_amount`,`created_at`) VALUES -(1,1,'Nguyen Van A',4,'Coca Cola 330ml',2,12000.00,24000.00,'CASH',0.00,'2026-02-24 09:30:00.000000'), (2,1,'Nguyen Van A',5,'Oishi Snack',3,8000.00,24000.00,'CASH',0.00,'2026-02-24 09:30:00.000000'), (3,2,'Tran Thi B',1,'Fresh Milk 1L',2,25000.00,50000.00,'CARD',0.00,'2026-02-24 19:20:00.000000'), (4,2,'Tran Thi B',3,'Nescafe 3in1',1,45000.00,45000.00,'CARD',0.00,'2026-02-24 19:20:00.000000'), (5,3,'Le Van C',2,'Dove Soap 90g',2,15000.00,30000.00,'MOMO',0.00,'2026-02-25 20:10:00.000000'), (6,1,'Nguyen Van A',1,'Fresh Milk 1L',1,25000.00,25000.00,'CASH',0.00,'2026-02-26 10:15:00.000000'), -(7,4,'Pham Thi D',4,'Coca Cola 330ml',5,12000.00,60000.00,'CASH',0.00,'2026-02-26 14:30:00.000000'), (8,4,'Pham Thi D',5,'Oishi Snack',4,8000.00,32000.00,'CASH',0.00,'2026-02-26 14:30:00.000000'), -(9,2,'Tran Thi B',4,'Coca Cola 330ml',3,12000.00,36000.00,'MOMO',0.00,'2026-02-27 08:45:00.000000'), (10,2,'Tran Thi B',2,'Dove Soap 90g',1,15000.00,15000.00,'MOMO',0.00,'2026-02-27 08:45:00.000000'), (17,4,'Pham Thi D',1,'Sữa dinh dưỡng Vinamilk Bịch - Ít đường - 220ml',14,23000.00,322000.00,'Tiền mặt',0.00,'2026-03-19 13:03:41.894956'), (18,4,'Pham Thi D',1,'Sữa dinh dưỡng Vinamilk Bịch - Ít đường - 220ml',14,23000.00,322000.00,'Tiền mặt',0.00,'2026-03-19 13:03:50.691817'), diff --git a/backend/src/test/java/com/smalltrend/service/crm/AdvertisementServiceTest.java b/backend/src/test/java/com/smalltrend/service/crm/AdvertisementServiceTest.java index 7c6efd6a..0fbc0837 100644 --- a/backend/src/test/java/com/smalltrend/service/crm/AdvertisementServiceTest.java +++ b/backend/src/test/java/com/smalltrend/service/crm/AdvertisementServiceTest.java @@ -11,8 +11,6 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import java.math.BigDecimal; -import java.time.LocalDate; import java.util.List; import java.util.Map; import java.util.Optional; @@ -20,7 +18,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) @@ -106,15 +103,13 @@ void delete_shouldThrowWhenAdvertisementMissing() { } @Test - void getStats_shouldCalculateCountsAndContractValue() { + void getStats_shouldCalculateCounts() { Advertisement active = Advertisement.builder() .id(1L) .slot("LEFT") .sponsorName("A") .title("Ad A") .isActive(true) - .contractValue(new BigDecimal("100000")) - .contractEnd(LocalDate.now().minusDays(1)) .build(); Advertisement inactive = Advertisement.builder() .id(2L) @@ -122,8 +117,6 @@ void getStats_shouldCalculateCountsAndContractValue() { .sponsorName("B") .title("Ad B") .isActive(false) - .contractValue(new BigDecimal("200000")) - .contractEnd(LocalDate.now().plusDays(5)) .build(); when(advertisementRepository.findAll()).thenReturn(List.of(active, inactive)); @@ -133,7 +126,5 @@ void getStats_shouldCalculateCountsAndContractValue() { assertEquals(2L, stats.get("total")); assertEquals(1L, stats.get("active")); assertEquals(1L, stats.get("inactive")); - assertEquals(1L, stats.get("expired")); - assertEquals(new BigDecimal("300000"), stats.get("totalContractValue")); } } \ No newline at end of file diff --git a/deploy/fix_seed.sql b/deploy/fix_seed.sql index c7f496e8..89034631 100644 --- a/deploy/fix_seed.sql +++ b/deploy/fix_seed.sql @@ -104,23 +104,23 @@ INSERT INTO `customer_tiers` (`id`,`tier_code`,`tier_name`,`min_spending`,`point INSERT INTO `customers` (`id`,`loyalty_points`,`name`,`phone`,`spent_amount`) VALUES (1,150,'Nguyen Van A','0987654321',1200000),(2,800,'Tran Thi B','0976543210',6200000),(3,2000,'Le Van C','0965432109',18000000),(4,3382,'Pham Thi D','0954321098',56340200),(7,4,'Huy','0961390486',48000),(9,0,'s','09999999999',0),(10,0,'Ko','0961390487',0),(11,0,'Huy','0961390488',0),(12,0,'Huy','0123456789',0),(13,0,'Tú','09612345688',0); -- 8. PRODUCTS -INSERT INTO `products` (id,created_at,name,image_url,is_active,description,updated_at,brand_id,category_id,tax_rate_id) VALUES (1,'2026-03-18 01:40:08.905784','Vinamilk Fresh Milk','https://res.cloudinary.com/didvvefmu/image/upload/v1773772847/smalltrend/user-avatars/kk2k6wrcth9zjgpywmqa.png',1,'Sữa dinh dưỡng Vinamilk','2026-03-19 16:12:45.102749',1,2,2),(2,'2026-03-18 01:40:08.905784','Dove Beauty Bar','https://res.cloudinary.com/didvvefmu/image/upload/v1773772999/smalltrend/user-avatars/tftx9cld5vsqwbnz6fjc.jpg',1,'Xà Phòng Dove','2026-03-17 18:43:17.100845',4,3,1),(3,'2026-03-18 01:40:08.905784','Instant Coffee 20g x 10','https://res.cloudinary.com/didvvefmu/image/upload/v1773773536/smalltrend/user-avatars/wfg6djw0jvx1yyfep3jy.webp',1,'Cà phê Nescafe 3in1','2026-03-17 18:52:14.891507',2,1,1),(4,'2026-03-18 01:40:08.905784','Coca Cola Classic','https://res.cloudinary.com/didvvefmu/image/upload/v1773778429/smalltrend/user-avatars/c0bmdhxmorkjytxyaupj.jpg',1,'Nước ngọt Coca Cola','2026-03-17 20:13:47.164098',3,1,1),(5,'2026-03-18 01:40:08.905784','Potato Chips ','https://res.cloudinary.com/didvvefmu/image/upload/v1773776096/smalltrend/user-avatars/zodjdb1zjfyv5adn5sku.webp',1,'Bánh snack Oishi','2026-03-17 19:34:59.859986',6,5,1),(6,'2026-03-18 01:40:08.905784','Tương ớt chua cay ','https://res.cloudinary.com/didvvefmu/image/upload/v1773776784/smalltrend/user-avatars/e23icn5gbhnp8m0jmfur.jpg',1,'Tương ớt Cholimex','2026-03-17 19:46:22.345976',7,10,1),(7,'2026-03-18 01:40:08.905784','Xúc xích Vườn Hồng ','https://res.cloudinary.com/didvvefmu/image/upload/v1773777092/smalltrend/user-avatars/g7hw4axoeegxq8hp0plp.jpg',1,'Xúc xích CP','2026-03-17 19:52:43.982585',8,9,1),(8,'2026-03-18 01:40:08.905784','Thịt heo hầm ','https://res.cloudinary.com/didvvefmu/image/upload/v1773777262/smalltrend/user-avatars/h2jmpqvfiwqjvxtmnx1k.webp',1,'Đồ hộp Vissan','2026-03-17 19:54:20.346698',9,7,1),(9,'2026-03-18 01:40:08.905784','Bánh chocopie Orion hộp 12 cái','https://res.cloudinary.com/didvvefmu/image/upload/v1773777545/smalltrend/user-avatars/wcgojffzprveex1dx0tn.png',1,'Bánh Chocopie','2026-03-17 19:59:03.273214',10,8,1),(10,'2026-03-18 01:40:08.905784','Kẹo mút hương trái cây','https://res.cloudinary.com/didvvefmu/image/upload/v1773909949/smalltrend/user-avatars/nfuimxb1hzqxjgabqswt.webp',1,'Kẹo mút Chupa Chups','2026-03-19 08:45:46.881999',11,5,1),(11,'2026-03-18 01:40:08.905784','Phở các loại ','https://res.cloudinary.com/didvvefmu/image/upload/v1773910263/smalltrend/user-avatars/inttsrqtpwgdo4pxdsdf.webp',1,'Phở gói Vifon','2026-03-19 08:50:59.612510',14,11,1),(12,'2026-03-18 01:40:08.905784','Mì tôm chua cay ','https://res.cloudinary.com/didvvefmu/image/upload/v1773910371/smalltrend/user-avatars/gzfznjse9r1ew2vozgrm.jpg',1,'Mì Hảo Hảo','2026-03-19 08:52:48.747456',13,11,1),(13,'2026-03-18 01:40:08.905784','Mì khoai tây sườn hầm ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911223/smalltrend/user-avatars/aya3hodi8cjxt0hj0bhd.webp',1,'Mì Omachi','2026-03-19 09:07:00.486156',14,11,1),(14,'2026-03-18 01:40:08.905784','Nước tương tỏi ớt ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911355/smalltrend/user-avatars/fdqcfjy84csx9eazmvmn.webp',1,'Nước tương Chin-su','2026-03-19 09:09:12.272199',14,10,1),(15,'2026-03-18 01:40:08.905784','Sữa chua nha đam ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911512/smalltrend/user-avatars/hsaspcpfl2lfzcvkvnat.webp',1,'Sữa chua TH True Milk','2026-03-19 09:11:48.821013',15,2,2),(16,'2026-03-18 01:40:08.905784','Sữa tươi ít đường ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911825/smalltrend/user-avatars/hrtum3zrjb6rifilyqz4.png',1,'Sữa tươi TH True Milk','2026-03-19 09:17:02.904303',15,2,2),(17,'2026-03-18 01:40:08.905784','Snack khoai tây tự nhiên ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911989/smalltrend/user-avatars/yhfdrccc0brzy9zxske0.png',1,'Snack Lays','2026-03-19 09:19:45.977722',17,5,1),(18,'2026-03-18 01:40:08.905784','Trà Ô Long giảm béo ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912183/smalltrend/user-avatars/cxskvciux7syhbch9o4j.jpg',1,'Trà Ô Long TEA+ Plus','2026-03-19 09:23:00.694221',17,1,1),(19,'2026-03-18 01:40:08.905784','Hạt nêm thịt thăn xương ống ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912417/smalltrend/user-avatars/qlnrrvcapjfn068ujuxu.png',1,'Hạt nêm Knorr','2026-03-19 09:26:53.805754',19,10,1),(20,'2026-03-18 01:40:08.905784','Dầu hào tự nhiên nấm hương ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912775/smalltrend/user-avatars/z4rxm2iecy2e4ol6qy2j.webp',1,'Dầu hào Maggi','2026-03-19 09:32:51.526885',19,10,1),(21,'2026-03-18 01:40:08.905784','Bia Heineken Silver lon ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912972/smalltrend/user-avatars/ryqebth5xfpn7vvyjt5c.webp',1,'Bia Heineken Silver','2026-03-19 09:36:09.165091',23,1,1),(22,'2026-03-18 01:40:08.905784','Bia Tiger Crystal lon ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913094/smalltrend/user-avatars/csy3ylvsmjvyxiguwre4.jpg',1,'Bia Tiger Bạc','2026-03-19 09:38:11.944943',24,1,1),(23,'2026-03-18 01:40:08.905784','Nước mắm Nam Ngư chai ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913155/smalltrend/user-avatars/xheglrtrqj4ckymxilex.png',1,'Nước mắm Nam Ngư','2026-03-19 09:39:11.885935',14,10,1),(24,'2026-03-18 01:40:08.905784','Sữa đặc có đường Ông Thọ đỏ lon ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913190/smalltrend/user-avatars/ouu72al6cipvjlrdnxfv.png',1,'Sữa đặc Ông Thọ','2026-03-19 09:39:46.628476',1,2,2),(25,'2026-03-18 01:40:08.905784','Dầu ăn thực vật Tường An chai','https://res.cloudinary.com/didvvefmu/image/upload/v1773913261/smalltrend/user-avatars/k09c80gyjlchnftkcr26.png',1,'Dầu ăn Tường An','2026-03-19 09:40:57.807293',25,10,1),(26,'2026-03-18 01:40:08.905784','Bột giặt OMO hệ bọt thông minh ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913287/smalltrend/user-avatars/eo6hjpnfxm6ayqe5xmx2.jpg',1,'Bột giặt OMO','2026-03-19 09:41:24.379170',21,4,1); +INSERT INTO `products` (id,created_at,name,image_url,is_active,description,updated_at,brand_id,category_id,tax_rate_id) VALUES (1,'2026-03-18 01:40:08.905784','Vinamilk Fresh Milk','https://res.cloudinary.com/didvvefmu/image/upload/v1773772847/smalltrend/user-avatars/kk2k6wrcth9zjgpywmqa.png',1,'Sữa dinh dưỡng Vinamilk','2026-03-19 16:12:45.102749',1,2,2),(2,'2026-03-18 01:40:08.905784','Dove Beauty Bar','https://res.cloudinary.com/didvvefmu/image/upload/v1773772999/smalltrend/user-avatars/tftx9cld5vsqwbnz6fjc.jpg',1,'Xà Phòng Dove','2026-03-17 18:43:17.100845',4,3,1),(3,'2026-03-18 01:40:08.905784','Instant Coffee 20g x 10','https://res.cloudinary.com/didvvefmu/image/upload/v1773773536/smalltrend/user-avatars/wfg6djw0jvx1yyfep3jy.webp',1,'Cà phê Nescafe 3in1','2026-03-17 18:52:14.891507',2,1,1),(5,'2026-03-18 01:40:08.905784','Potato Chips ','https://res.cloudinary.com/didvvefmu/image/upload/v1773776096/smalltrend/user-avatars/zodjdb1zjfyv5adn5sku.webp',1,'Bánh snack Oishi','2026-03-17 19:34:59.859986',6,5,1),(6,'2026-03-18 01:40:08.905784','Tương ớt chua cay ','https://res.cloudinary.com/didvvefmu/image/upload/v1773776784/smalltrend/user-avatars/e23icn5gbhnp8m0jmfur.jpg',1,'Tương ớt Cholimex','2026-03-17 19:46:22.345976',7,10,1),(7,'2026-03-18 01:40:08.905784','Xúc xích Vườn Hồng ','https://res.cloudinary.com/didvvefmu/image/upload/v1773777092/smalltrend/user-avatars/g7hw4axoeegxq8hp0plp.jpg',1,'Xúc xích CP','2026-03-17 19:52:43.982585',8,9,1),(8,'2026-03-18 01:40:08.905784','Thịt heo hầm ','https://res.cloudinary.com/didvvefmu/image/upload/v1773777262/smalltrend/user-avatars/h2jmpqvfiwqjvxtmnx1k.webp',1,'Đồ hộp Vissan','2026-03-17 19:54:20.346698',9,7,1),(9,'2026-03-18 01:40:08.905784','Bánh chocopie Orion hộp 12 cái','https://res.cloudinary.com/didvvefmu/image/upload/v1773777545/smalltrend/user-avatars/wcgojffzprveex1dx0tn.png',1,'Bánh Chocopie','2026-03-17 19:59:03.273214',10,8,1),(10,'2026-03-18 01:40:08.905784','Kẹo mút hương trái cây','https://res.cloudinary.com/didvvefmu/image/upload/v1773909949/smalltrend/user-avatars/nfuimxb1hzqxjgabqswt.webp',1,'Kẹo mút Chupa Chups','2026-03-19 08:45:46.881999',11,5,1),(11,'2026-03-18 01:40:08.905784','Phở các loại ','https://res.cloudinary.com/didvvefmu/image/upload/v1773910263/smalltrend/user-avatars/inttsrqtpwgdo4pxdsdf.webp',1,'Phở gói Vifon','2026-03-19 08:50:59.612510',14,11,1),(12,'2026-03-18 01:40:08.905784','Mì tôm chua cay ','https://res.cloudinary.com/didvvefmu/image/upload/v1773910371/smalltrend/user-avatars/gzfznjse9r1ew2vozgrm.jpg',1,'Mì Hảo Hảo','2026-03-19 08:52:48.747456',13,11,1),(13,'2026-03-18 01:40:08.905784','Mì khoai tây sườn hầm ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911223/smalltrend/user-avatars/aya3hodi8cjxt0hj0bhd.webp',1,'Mì Omachi','2026-03-19 09:07:00.486156',14,11,1),(14,'2026-03-18 01:40:08.905784','Nước tương tỏi ớt ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911355/smalltrend/user-avatars/fdqcfjy84csx9eazmvmn.webp',1,'Nước tương Chin-su','2026-03-19 09:09:12.272199',14,10,1),(15,'2026-03-18 01:40:08.905784','Sữa chua nha đam ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911512/smalltrend/user-avatars/hsaspcpfl2lfzcvkvnat.webp',1,'Sữa chua TH True Milk','2026-03-19 09:11:48.821013',15,2,2),(16,'2026-03-18 01:40:08.905784','Sữa tươi ít đường ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911825/smalltrend/user-avatars/hrtum3zrjb6rifilyqz4.png',1,'Sữa tươi TH True Milk','2026-03-19 09:17:02.904303',15,2,2),(17,'2026-03-18 01:40:08.905784','Snack khoai tây tự nhiên ','https://res.cloudinary.com/didvvefmu/image/upload/v1773911989/smalltrend/user-avatars/yhfdrccc0brzy9zxske0.png',1,'Snack Lays','2026-03-19 09:19:45.977722',17,5,1),(18,'2026-03-18 01:40:08.905784','Trà Ô Long giảm béo ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912183/smalltrend/user-avatars/cxskvciux7syhbch9o4j.jpg',1,'Trà Ô Long TEA+ Plus','2026-03-19 09:23:00.694221',17,1,1),(19,'2026-03-18 01:40:08.905784','Hạt nêm thịt thăn xương ống ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912417/smalltrend/user-avatars/qlnrrvcapjfn068ujuxu.png',1,'Hạt nêm Knorr','2026-03-19 09:26:53.805754',19,10,1),(20,'2026-03-18 01:40:08.905784','Dầu hào tự nhiên nấm hương ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912775/smalltrend/user-avatars/z4rxm2iecy2e4ol6qy2j.webp',1,'Dầu hào Maggi','2026-03-19 09:32:51.526885',19,10,1),(21,'2026-03-18 01:40:08.905784','Bia Heineken Silver lon ','https://res.cloudinary.com/didvvefmu/image/upload/v1773912972/smalltrend/user-avatars/ryqebth5xfpn7vvyjt5c.webp',1,'Bia Heineken Silver','2026-03-19 09:36:09.165091',23,1,1),(22,'2026-03-18 01:40:08.905784','Bia Tiger Crystal lon ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913094/smalltrend/user-avatars/csy3ylvsmjvyxiguwre4.jpg',1,'Bia Tiger Bạc','2026-03-19 09:38:11.944943',24,1,1),(23,'2026-03-18 01:40:08.905784','Nước mắm Nam Ngư chai ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913155/smalltrend/user-avatars/xheglrtrqj4ckymxilex.png',1,'Nước mắm Nam Ngư','2026-03-19 09:39:11.885935',14,10,1),(24,'2026-03-18 01:40:08.905784','Sữa đặc có đường Ông Thọ đỏ lon ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913190/smalltrend/user-avatars/ouu72al6cipvjlrdnxfv.png',1,'Sữa đặc Ông Thọ','2026-03-19 09:39:46.628476',1,2,2),(25,'2026-03-18 01:40:08.905784','Dầu ăn thực vật Tường An chai','https://res.cloudinary.com/didvvefmu/image/upload/v1773913261/smalltrend/user-avatars/k09c80gyjlchnftkcr26.png',1,'Dầu ăn Tường An','2026-03-19 09:40:57.807293',25,10,1),(26,'2026-03-18 01:40:08.905784','Bột giặt OMO hệ bọt thông minh ','https://res.cloudinary.com/didvvefmu/image/upload/v1773913287/smalltrend/user-avatars/eo6hjpnfxm6ayqe5xmx2.jpg',1,'Bột giặt OMO','2026-03-19 09:41:24.379170',21,4,1); -- 8.1 UNITS INSERT INTO `units` (id,code,default_cost_price,default_sell_price,material_type,name,symbol) VALUES (1,'HOP',NULL,NULL,'SOLID','Hộp','hộp'),(2,'LOC',NULL,NULL,'SOLID','Lốc','lốc'),(3,'THUNG',NULL,NULL,'SOLID','Thùng','thùng'),(4,'GOI',NULL,NULL,'SOLID','Gói','gói'),(5,'CAI',NULL,NULL,'SOLID','Cái','cái'),(6,'LON',NULL,NULL,'SOLID','Lon','lon'),(7,'CHAI',NULL,NULL,'SOLID','Chai','chai'),(8,'BICH',NULL,NULL,'SOLID','Bịch','bich'); -- 9. PRODUCT VARIANTS -INSERT INTO `product_variants` (`id`,`barcode`,`created_at`,`image_url`,`is_active`,`is_base_unit`,`plu_code`,`sell_price`,`sku`,`updated_at`,`coupon_id`,`product_id`,`unit_id`) VALUES (1,'8930000193995','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773772910/smalltrend/user-avatars/o33bylqob6pxjc8tukfu.png',1,1,NULL,23000.00,'DAIRY-VINA-SUADIN-BICH22OML-ITDUONG','2026-03-19 16:12:45.104746',NULL,1,8),(2,'8930000122551','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773773072/smalltrend/user-avatars/dhudvv2ujf5e5co6ootg.jpg',1,1,NULL,15000.00,'PERSONAL_CARE-PG-XAPHON-HOP90G-NGUYEN','2026-03-17 18:44:30.721805',NULL,2,1),(3,'8930000161246','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773774242/smalltrend/user-avatars/nxldrdvkm1o2fljoq0dn.webp',1,1,NULL,45000.00,'BEVERAGE-NEST-CAPHEN-HOP255G-NGUYEN','2026-03-17 19:04:00.806758',NULL,3,1),(4,'8901234567893','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773778489/smalltrend/user-avatars/hpowweus5mmsnz0ccx8l.jpg',1,1,NULL,15400.00,'BEVERAGE-COCA-NUOCNG-LON330ML-NGUYEN','2026-03-19 09:03:42.000358',NULL,4,6),(5,'8930000149572','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773776664/smalltrend/user-avatars/icro6udsd93qzizzvd2j.webp',1,1,NULL,8000.00,'SNACK-OISH-BANHSN-GOI40G-PHOMAT','2026-03-17 19:44:22.804058',NULL,5,4),(6,'8930000171863','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773776870/smalltrend/user-avatars/vrand1uqxez5tq73dktk.jpg',1,1,NULL,13000.00,'CONDIMENT-CHOL-TUONGO-CHAI130G','2026-03-17 19:47:48.174277',NULL,6,7),(7,'8930000196125','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773777228/smalltrend/user-avatars/m1jlc0zltitolbl94ja4.jpg',1,1,NULL,55000.00,'MEAT_SEAFOOD-CP-XUCXIC-GOI500G','2026-03-17 19:53:46.365399',NULL,7,4),(8,'8930000169044','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773777363/smalltrend/user-avatars/bd2hgni4twjpr2zwzsan.webp',1,1,NULL,22000.00,'CANNED_FOOD-VISS-DOHOPV-HOP170G-BOKHO','2026-03-17 19:56:01.293126',NULL,8,1),(9,'8930000144416','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773777788/smalltrend/user-avatars/yqhleiczkcxfbgokhm7b.png',1,1,NULL,38500.00,'BAKERY-ORIO-BANHCH-HOP396G-NGUYEN','2026-03-19 12:45:01.209140',NULL,9,1),(10,'8930000113740','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773910052/smalltrend/user-avatars/rxu9ondhpdln92zll0t7.webp',1,1,NULL,50000.00,'SNACK-CHUP-KEOMUT-GOI30C','2026-03-19 08:47:29.365008',NULL,10,4),(11,'8930000125231','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773910333/smalltrend/user-avatars/uv9otcj50xs26gs4qts2.webp',1,1,NULL,8000.00,'INSTANT_FOOD-MASA-PHOGOI-GOI65G-GA','2026-03-19 08:52:09.825864',NULL,11,4),(12,'8930000127303','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773910438/smalltrend/user-avatars/ik1z1wq7tcxxig6bxggq.jpg',1,1,NULL,4500.00,'INSTANT_FOOD-ACEC-MIHAOH-GOI75G-CHUACAY','2026-03-19 08:53:55.700128',NULL,12,4),(13,'8930000171634','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773911290/smalltrend/user-avatars/d70b96npjlercdnhqc6u.webp',1,1,NULL,10000.00,'INSTANT_FOOD-MASA-MIOMAC-GOI80G-BOHAM','2026-03-19 09:08:08.160152',NULL,13,4),(14,'8930000176011','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773911418/smalltrend/user-avatars/nzpiahhjvtoysx5vfoxi.webp',1,1,NULL,15000.00,'CONDIMENT-MASA-NUOCTU-CHAI330ML-TOIOT','2026-03-19 09:10:15.226258',NULL,14,7),(15,'8901234567904','2026-03-18 01:40:08.933285',NULL,1,1,NULL,6000.00,'TH-N-100G','2026-03-18 01:40:08.933285',NULL,15,1),(16,'8930000171153','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773911928/smalltrend/user-avatars/l5ezwmbvpbjsmewe8hmo.png',1,1,NULL,35000.00,'DAIRY-THTR-SUATUO-HOP220ML-NGUYEN','2026-03-19 09:18:45.165700',NULL,16,1),(17,'8930000146663','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912150/smalltrend/user-avatars/wgvlu99hoyhumcsffge3.png',1,1,NULL,12000.00,'SNACK-MAGG-SNACKL-GOI30G-BO','2026-03-19 09:22:26.744542',NULL,17,4),(18,'8930000109279','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912264/smalltrend/user-avatars/g3quurw8erpu5rpsw5yj.jpg',1,1,NULL,10000.00,'BEVERAGE-MAGG-TRAOLO-CHAI450ML-NGUYEN','2026-03-19 09:24:44.981697',NULL,18,7),(19,'8930000186157','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912473/smalltrend/user-avatars/xktud0bg65rjytvw9foq.png',1,1,NULL,30000.00,'CONDIMENT-KNOR-HATNEM-GOI380G-NAMHUONG','2026-03-19 09:27:50.079383',NULL,19,4),(20,'8930000109811','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912911/smalltrend/user-avatars/lpyqea1uyrfxmacomnz5.webp',1,1,NULL,25000.00,'CONDIMENT-KNOR-DAUHAO-CHAI350G-HAISAN','2026-03-19 09:35:08.042089',NULL,20,7),(21,'8930000139672','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913028/smalltrend/user-avatars/d9ehbqq301llj6fdbyxs.webp',1,1,NULL,23100.00,'BEVERAGE-HEIN-BIAHEI-LON330ML','2026-03-19 09:37:04.680494',NULL,21,6),(22,'8930000123411','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913126/smalltrend/user-avatars/psat5m6feqy4dk4bpjdm.webp',1,1,NULL,18000.00,'BEVERAGE-TIGE-BIATIG-LON330ML','2026-03-19 09:38:42.625590',NULL,22,6),(23,'8901234567912','2026-03-18 01:40:08.933285',NULL,1,1,NULL,35000.00,'NN-500ML','2026-03-18 01:40:08.933285',NULL,23,7),(24,'8930000154279','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913244/smalltrend/user-avatars/vuxvb3qmojdaxvh1ikut.png',1,1,NULL,25000.00,'DAIRY-VINA-SUADAC-LON380G','2026-03-19 09:40:41.594268',NULL,24,6),(25,'8901234567914','2026-03-18 01:40:08.933285',NULL,1,1,NULL,50000.00,'TA-1L','2026-03-18 01:40:08.933285',NULL,25,7),(26,'8930000199911','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913343/smalltrend/user-avatars/x2rsucpqflqznbnerxzb.jpg',1,1,NULL,40000.00,'HOUSEHOLD-OMO-BOTGIA-GOI350G','2026-03-19 09:42:21.876911',NULL,26,4),(27,'8930000133342','2026-03-17 18:42:46.031234','https://res.cloudinary.com/didvvefmu/image/upload/v1773772967/smalltrend/user-avatars/vdu8czpwiu3qet5zsasw.png',1,0,NULL,0.00,'DAIRY-VINA-SUADIN-BICH220ML-DAU','2026-03-19 17:06:51.075335',NULL,1,8),(28,'8930000161734','2026-03-17 18:51:17.975528','https://res.cloudinary.com/didvvefmu/image/upload/v1773773479/smalltrend/user-avatars/bpy5d10ssqg5dnmwvguv.png',1,0,NULL,15400.00,'PERSONAL_CARE-PG-XAPHON-HOP90G-TUOI','2026-03-19 09:04:18.390337',NULL,2,1),(29,'8930000167736','2026-03-17 19:33:48.792449','https://res.cloudinary.com/didvvefmu/image/upload/v1773776030/smalltrend/user-avatars/eins9fd6p4qvhvslj5do.jpg',1,0,NULL,0.00,'BEVERAGE-NEST-CAPHEN-HOP255G-RANG','2026-03-17 19:33:48.792449',NULL,3,1),(30,'8930000149121','2026-03-17 19:45:23.941447','https://res.cloudinary.com/didvvefmu/image/upload/v1773776725/smalltrend/user-avatars/d6dlcsprxbocypnf6cgm.webp',1,0,NULL,12100.00,'SNACK-OISH-BANHSN-GOI40G-TOMCAY','2026-03-19 09:03:09.686273',NULL,5,4),(31,'8930000119278','2026-03-17 19:48:27.446008','https://res.cloudinary.com/didvvefmu/image/upload/v1773776909/smalltrend/user-avatars/j4dj9pjuuhhclkutaxg6.jpg',1,0,NULL,0.00,'CONDIMENT-CHOL-TUONGO-CHAI830G','2026-03-17 19:48:27.446008',NULL,6,7),(32,'8930000121158','2026-03-17 19:58:25.077167','https://res.cloudinary.com/didvvefmu/image/upload/v1773777507/smalltrend/user-avatars/ztpgadh6wdjhqyacr22j.webp',1,0,NULL,0.00,'CANNED_FOOD-VISS-DOHOPV-HOP170G-SUONNAUDAU','2026-03-17 19:58:25.077167',NULL,8,1),(33,'8930000112736','2026-03-17 20:05:18.866189','https://res.cloudinary.com/didvvefmu/image/upload/v1773777920/smalltrend/user-avatars/cup3o2geklrs4pkyco0c.png',1,0,NULL,0.00,'BAKERY-ORIO-BANHCH-HOP360G-MATCHA','2026-03-19 06:06:10.664386',NULL,9,1),(34,'2000010034096','2026-03-17 20:08:13.486592','https://res.cloudinary.com/didvvefmu/image/upload/v1773778115/smalltrend/user-avatars/jmtlotmdvagxrl3gijbl.webp',1,0,NULL,0.00,'DAIRY-VINA-SUADIN-BICH220ML-THUNG48','2026-03-19 17:06:51.075335',NULL,1,3),(35,'2000040035087','2026-03-17 20:15:03.949593','https://res.cloudinary.com/didvvefmu/image/upload/v1773778489/smalltrend/user-avatars/hpowweus5mmsnz0ccx8l.jpg',1,0,NULL,360000.00,'BEVERAGE-COCA-NUOCNG-LON330ML-THUNG30','2026-03-17 20:15:03.966126',NULL,4,3),(36,'8930000112934','2026-03-19 08:32:45.066186','https://res.cloudinary.com/didvvefmu/image/upload/v1773909168/smalltrend/user-avatars/hdothjp2wuqv4u3yobyt.jpg',1,0,NULL,0.00,'BEVERAGE-MAGG-TRAOLO-CHAI450ML-CHANH','2026-03-19 08:32:45.066186',NULL,18,7); +INSERT INTO `product_variants` (`id`,`barcode`,`created_at`,`image_url`,`is_active`,`is_base_unit`,`plu_code`,`sell_price`,`sku`,`updated_at`,`coupon_id`,`product_id`,`unit_id`) VALUES (1,'8930000193995','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773772910/smalltrend/user-avatars/o33bylqob6pxjc8tukfu.png',1,1,NULL,23000.00,'DAIRY-VINA-SUADIN-BICH22OML-ITDUONG','2026-03-19 16:12:45.104746',NULL,1,8),(2,'8930000122551','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773773072/smalltrend/user-avatars/dhudvv2ujf5e5co6ootg.jpg',1,1,NULL,15000.00,'PERSONAL_CARE-PG-XAPHON-HOP90G-NGUYEN','2026-03-17 18:44:30.721805',NULL,2,1),(3,'8930000161246','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773774242/smalltrend/user-avatars/nxldrdvkm1o2fljoq0dn.webp',1,1,NULL,45000.00,'BEVERAGE-NEST-CAPHEN-HOP255G-NGUYEN','2026-03-17 19:04:00.806758',NULL,3,1),(5,'8930000149572','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773776664/smalltrend/user-avatars/icro6udsd93qzizzvd2j.webp',1,1,NULL,8000.00,'SNACK-OISH-BANHSN-GOI40G-PHOMAT','2026-03-17 19:44:22.804058',NULL,5,4),(6,'8930000171863','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773776870/smalltrend/user-avatars/vrand1uqxez5tq73dktk.jpg',1,1,NULL,13000.00,'CONDIMENT-CHOL-TUONGO-CHAI130G','2026-03-17 19:47:48.174277',NULL,6,7),(7,'8930000196125','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773777228/smalltrend/user-avatars/m1jlc0zltitolbl94ja4.jpg',1,1,NULL,55000.00,'MEAT_SEAFOOD-CP-XUCXIC-GOI500G','2026-03-17 19:53:46.365399',NULL,7,4),(8,'8930000169044','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773777363/smalltrend/user-avatars/bd2hgni4twjpr2zwzsan.webp',1,1,NULL,22000.00,'CANNED_FOOD-VISS-DOHOPV-HOP170G-BOKHO','2026-03-17 19:56:01.293126',NULL,8,1),(9,'8930000144416','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773777788/smalltrend/user-avatars/yqhleiczkcxfbgokhm7b.png',1,1,NULL,38500.00,'BAKERY-ORIO-BANHCH-HOP396G-NGUYEN','2026-03-19 12:45:01.209140',NULL,9,1),(10,'8930000113740','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773910052/smalltrend/user-avatars/rxu9ondhpdln92zll0t7.webp',1,1,NULL,50000.00,'SNACK-CHUP-KEOMUT-GOI30C','2026-03-19 08:47:29.365008',NULL,10,4),(11,'8930000125231','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773910333/smalltrend/user-avatars/uv9otcj50xs26gs4qts2.webp',1,1,NULL,8000.00,'INSTANT_FOOD-MASA-PHOGOI-GOI65G-GA','2026-03-19 08:52:09.825864',NULL,11,4),(12,'8930000127303','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773910438/smalltrend/user-avatars/ik1z1wq7tcxxig6bxggq.jpg',1,1,NULL,4500.00,'INSTANT_FOOD-ACEC-MIHAOH-GOI75G-CHUACAY','2026-03-19 08:53:55.700128',NULL,12,4),(13,'8930000171634','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773911290/smalltrend/user-avatars/d70b96npjlercdnhqc6u.webp',1,1,NULL,10000.00,'INSTANT_FOOD-MASA-MIOMAC-GOI80G-BOHAM','2026-03-19 09:08:08.160152',NULL,13,4),(14,'8930000176011','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773911418/smalltrend/user-avatars/nzpiahhjvtoysx5vfoxi.webp',1,1,NULL,15000.00,'CONDIMENT-MASA-NUOCTU-CHAI330ML-TOIOT','2026-03-19 09:10:15.226258',NULL,14,7),(15,'8901234567904','2026-03-18 01:40:08.933285',NULL,1,1,NULL,6000.00,'TH-N-100G','2026-03-18 01:40:08.933285',NULL,15,1),(16,'8930000171153','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773911928/smalltrend/user-avatars/l5ezwmbvpbjsmewe8hmo.png',1,1,NULL,35000.00,'DAIRY-THTR-SUATUO-HOP220ML-NGUYEN','2026-03-19 09:18:45.165700',NULL,16,1),(17,'8930000146663','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912150/smalltrend/user-avatars/wgvlu99hoyhumcsffge3.png',1,1,NULL,12000.00,'SNACK-MAGG-SNACKL-GOI30G-BO','2026-03-19 09:22:26.744542',NULL,17,4),(18,'8930000109279','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912264/smalltrend/user-avatars/g3quurw8erpu5rpsw5yj.jpg',1,1,NULL,10000.00,'BEVERAGE-MAGG-TRAOLO-CHAI450ML-NGUYEN','2026-03-19 09:24:44.981697',NULL,18,7),(19,'8930000186157','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912473/smalltrend/user-avatars/xktud0bg65rjytvw9foq.png',1,1,NULL,30000.00,'CONDIMENT-KNOR-HATNEM-GOI380G-NAMHUONG','2026-03-19 09:27:50.079383',NULL,19,4),(20,'8930000109811','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773912911/smalltrend/user-avatars/lpyqea1uyrfxmacomnz5.webp',1,1,NULL,25000.00,'CONDIMENT-KNOR-DAUHAO-CHAI350G-HAISAN','2026-03-19 09:35:08.042089',NULL,20,7),(21,'8930000139672','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913028/smalltrend/user-avatars/d9ehbqq301llj6fdbyxs.webp',1,1,NULL,23100.00,'BEVERAGE-HEIN-BIAHEI-LON330ML','2026-03-19 09:37:04.680494',NULL,21,6),(22,'8930000123411','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913126/smalltrend/user-avatars/psat5m6feqy4dk4bpjdm.webp',1,1,NULL,18000.00,'BEVERAGE-TIGE-BIATIG-LON330ML','2026-03-19 09:38:42.625590',NULL,22,6),(23,'8901234567912','2026-03-18 01:40:08.933285',NULL,1,1,NULL,35000.00,'NN-500ML','2026-03-18 01:40:08.933285',NULL,23,7),(24,'8930000154279','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913244/smalltrend/user-avatars/vuxvb3qmojdaxvh1ikut.png',1,1,NULL,25000.00,'DAIRY-VINA-SUADAC-LON380G','2026-03-19 09:40:41.594268',NULL,24,6),(25,'8901234567914','2026-03-18 01:40:08.933285',NULL,1,1,NULL,50000.00,'TA-1L','2026-03-18 01:40:08.933285',NULL,25,7),(26,'8930000199911','2026-03-18 01:40:08.933285','https://res.cloudinary.com/didvvefmu/image/upload/v1773913343/smalltrend/user-avatars/x2rsucpqflqznbnerxzb.jpg',1,1,NULL,40000.00,'HOUSEHOLD-OMO-BOTGIA-GOI350G','2026-03-19 09:42:21.876911',NULL,26,4),(28,'8930000161734','2026-03-17 18:51:17.975528','https://res.cloudinary.com/didvvefmu/image/upload/v1773773479/smalltrend/user-avatars/bpy5d10ssqg5dnmwvguv.png',1,0,NULL,15400.00,'PERSONAL_CARE-PG-XAPHON-HOP90G-TUOI','2026-03-19 09:04:18.390337',NULL,2,1),(29,'8930000167736','2026-03-17 19:33:48.792449','https://res.cloudinary.com/didvvefmu/image/upload/v1773776030/smalltrend/user-avatars/eins9fd6p4qvhvslj5do.jpg',1,0,NULL,0.00,'BEVERAGE-NEST-CAPHEN-HOP255G-RANG','2026-03-17 19:33:48.792449',NULL,3,1),(30,'8930000149121','2026-03-17 19:45:23.941447','https://res.cloudinary.com/didvvefmu/image/upload/v1773776725/smalltrend/user-avatars/d6dlcsprxbocypnf6cgm.webp',1,0,NULL,12100.00,'SNACK-OISH-BANHSN-GOI40G-TOMCAY','2026-03-19 09:03:09.686273',NULL,5,4),(31,'8930000119278','2026-03-17 19:48:27.446008','https://res.cloudinary.com/didvvefmu/image/upload/v1773776909/smalltrend/user-avatars/j4dj9pjuuhhclkutaxg6.jpg',1,0,NULL,0.00,'CONDIMENT-CHOL-TUONGO-CHAI830G','2026-03-17 19:48:27.446008',NULL,6,7),(32,'8930000121158','2026-03-17 19:58:25.077167','https://res.cloudinary.com/didvvefmu/image/upload/v1773777507/smalltrend/user-avatars/ztpgadh6wdjhqyacr22j.webp',1,0,NULL,0.00,'CANNED_FOOD-VISS-DOHOPV-HOP170G-SUONNAUDAU','2026-03-17 19:58:25.077167',NULL,8,1),(33,'8930000112736','2026-03-17 20:05:18.866189','https://res.cloudinary.com/didvvefmu/image/upload/v1773777920/smalltrend/user-avatars/cup3o2geklrs4pkyco0c.png',1,0,NULL,0.00,'BAKERY-ORIO-BANHCH-HOP360G-MATCHA','2026-03-19 06:06:10.664386',NULL,9,1),(36,'8930000112934','2026-03-19 08:32:45.066186','https://res.cloudinary.com/didvvefmu/image/upload/v1773909168/smalltrend/user-avatars/hdothjp2wuqv4u3yobyt.jpg',1,0,NULL,0.00,'BEVERAGE-MAGG-TRAOLO-CHAI450ML-CHANH','2026-03-19 08:32:45.066186',NULL,18,7); -- 8.2 UNIT CONVERSIONS (Conversion between units for variants) -- Example: 1 carton (THUNG) = 12 boxes (HOP), 1 pack (LOC) = 4 boxes -INSERT INTO `unit_conversions` (id,conversion_factor,description,is_active,sell_price,to_unit_id,variant_id) VALUES (15,48.0000,'',1,0.00,3,27),(16,30.0000,'',1,360000.00,3,4); +INSERT INTO `unit_conversions` (id,conversion_factor,description,is_active,sell_price,to_unit_id,variant_id) VALUES (15,48.0000,'',1,0.00,3,28); -- 9.0 VARIANT ATTRIBUTES -INSERT INTO `variant_attributes` VALUES (1,'Ít đường','Hương vị'),(1,'220ml','Thể tích'),(2,'Nguyên bản','Hương'),(2,'90G','Trọng lượng'),(3,'Nguyên bản','Hương vị'),(3,'255G','Trọng lượng'),(4,'Nguyên bản','Hương vị'),(4,'330ml','Thể tích'),(5,'Phô mai','Hương vị'),(5,'40G','Trọng lượng'),(6,'130G','Trọng lượng'),(7,'500G','Trọng lượng'),(8,'Bò kho','Hương vị'),(8,'170G','Khối lượng'),(9,'Nguyên bản','Hương vị'),(9,'396G','Khối lương'),(10,'30 cái','Số lượng'),(11,'Gà','Hương vị'),(11,'65g','Trọng lượng'),(12,'Chua cay','Hương vị'),(12,'75g','Khối lượng'),(13,'Bò hầm','Hương vị'),(13,'80g','Khối lượng'),(14,'Tỏi ớt','Hương'),(14,'330ml','Thể tích'),(16,'Nguyên bản','Hương vị'),(16,'220ml','Thể tích'),(17,'Bò Nướng Texas','Hương vị'),(17,'30g','Trọng lượng'),(18,'Nguyên bản','Hương vị'),(18,'450ml','Thể tích'),(19,'Nấm hương','Loại'),(19,'380g','Trọng lượng'),(20,'Hải sản','Loại'),(20,'350g','Thể tích'),(21,'330ml','Thể tích'),(22,'330ml','Thể tích'),(24,'380g','Khối lượng'),(26,'350g','Trọng lượng'),(27,'Dâu tây','Hương vị'),(27,'220ml','Thể tích'),(28,'Tươi mát','Hương'),(28,'90G','Trọng lượng'),(29,'Cà phê rang','Hương vị'),(29,'255G','Trọng lượng'),(30,'Tôm cay','Hương vị'),(30,'40G','Trọng lượng'),(31,'830G','Trọng lượng'),(32,'Sườn nấu đậu','Hương vị'),(32,'170G','Khối lượng'),(33,'Matcha đậu đỏ','Hương vị'),(33,'360G','Khối lương'),(34,'Dâu tây','Hương vị'),(34,'220ml','Thể tích'),(35,'Nguyên bản','Hương vị'),(35,'330ml','Thể tích'),(36,'Chanh','Hương vị'),(36,'450ml','Thể tích'); +INSERT INTO `variant_attributes` VALUES (1,'Ít đường','Hương vị'),(1,'220ml','Thể tích'),(2,'Nguyên bản','Hương'),(2,'90G','Trọng lượng'),(3,'Nguyên bản','Hương vị'),(3,'255G','Trọng lượng'),(5,'Phô mai','Hương vị'),(5,'40G','Trọng lượng'),(6,'130G','Trọng lượng'),(7,'500G','Trọng lượng'),(8,'Bò kho','Hương vị'),(8,'170G','Khối lượng'),(9,'Nguyên bản','Hương vị'),(9,'396G','Khối lương'),(10,'30 cái','Số lượng'),(11,'Gà','Hương vị'),(11,'65g','Trọng lượng'),(12,'Chua cay','Hương vị'),(12,'75g','Khối lượng'),(13,'Bò hầm','Hương vị'),(13,'80g','Khối lượng'),(14,'Tỏi ớt','Hương'),(14,'330ml','Thể tích'),(16,'Nguyên bản','Hương vị'),(16,'220ml','Thể tích'),(17,'Bò Nướng Texas','Hương vị'),(17,'30g','Trọng lượng'),(18,'Nguyên bản','Hương vị'),(18,'450ml','Thể tích'),(19,'Nấm hương','Loại'),(19,'380g','Trọng lượng'),(20,'Hải sản','Loại'),(20,'350g','Thể tích'),(21,'330ml','Thể tích'),(22,'330ml','Thể tích'),(24,'380g','Khối lượng'),(26,'350g','Trọng lượng'),(28,'Tươi mát','Hương'),(28,'90G','Trọng lượng'),(29,'Cà phê rang','Hương vị'),(29,'255G','Trọng lượng'),(30,'Tôm cay','Hương vị'),(30,'40G','Trọng lượng'),(31,'830G','Trọng lượng'),(32,'Sườn nấu đậu','Hương vị'),(32,'170G','Khối lượng'),(33,'Matcha đậu đỏ','Hương vị'),(33,'360G','Khối lương'),(36,'Chanh','Hương vị'),(36,'450ml','Thể tích'); -- 9.1 VARIANT PRICES (Initial active prices for all variants) -INSERT INTO `variant_prices` (`id`,`created_at`,`effective_date`,`purchase_price`,`selling_price`,`status`,`tax_percent`,`variant_id`,`base_selling_price`,`expiry_date`) VALUES(1,'2026-03-18 01:40:08.947535','2026-01-15',20000.00,23000.00,'ACTIVE',10.00,1,NULL,NULL),(2,'2026-03-18 01:40:08.947535','2026-02-01',12000.00,15000.00,'ACTIVE',10.00,2,NULL,NULL),(3,'2026-03-18 01:40:08.947535','2026-01-20',35000.00,45000.00,'ACTIVE',10.00,3,NULL,NULL),(4,'2026-03-18 01:40:08.947535','2026-02-10',12000.00,12000.00,'INACTIVE',10.00,4,NULL,NULL),(5,'2026-03-18 01:40:08.947535','2026-02-01',6000.00,8000.00,'ACTIVE',10.00,5,NULL,NULL),(6,'2026-03-18 01:40:08.947535','2026-01-15',10000.00,13000.00,'ACTIVE',10.00,6,NULL,NULL),(7,'2026-03-18 01:40:08.947535','2026-02-01',45000.00,55000.00,'ACTIVE',10.00,7,NULL,NULL),(8,'2026-03-18 01:40:08.947535','2026-01-20',18000.00,22000.00,'ACTIVE',10.00,8,NULL,NULL),(9,'2026-03-18 01:40:08.947535','2026-02-10',32000.00,40000.00,'INACTIVE',10.00,9,NULL,NULL),(10,'2026-03-18 01:40:08.947535','2026-02-01',1000.00,2000.00,'ACTIVE',5.00,10,NULL,NULL),(11,'2026-03-18 01:40:08.947535','2026-01-15',6000.00,8000.00,'ACTIVE',10.00,11,NULL,NULL),(12,'2026-03-18 01:40:08.947535','2026-02-01',3000.00,4500.00,'ACTIVE',10.00,12,NULL,NULL),(13,'2026-03-18 01:40:08.947535','2026-01-20',7000.00,10000.00,'ACTIVE',10.00,13,NULL,NULL),(14,'2026-03-18 01:40:08.947535','2026-02-10',11000.00,15000.00,'ACTIVE',10.00,14,NULL,NULL),(15,'2026-03-18 01:40:08.947535','2026-03-01',4000.00,6000.00,'ACTIVE',5.00,15,NULL,NULL),(16,'2026-03-18 01:40:08.947535','2026-03-01',25000.00,35000.00,'ACTIVE',10.00,16,NULL,NULL),(17,'2026-03-18 01:40:08.947535','2026-02-10',8000.00,12000.00,'ACTIVE',10.00,17,NULL,NULL),(18,'2026-03-18 01:40:08.947535','2026-02-15',7000.00,10000.00,'ACTIVE',10.00,18,NULL,NULL),(19,'2026-03-18 01:40:08.947535','2026-01-20',24000.00,30000.00,'ACTIVE',10.00,19,NULL,NULL),(20,'2026-03-18 01:40:08.947535','2026-02-10',20000.00,25000.00,'ACTIVE',10.00,20,NULL,NULL),(21,'2026-03-18 01:40:08.947535','2026-02-15',16000.00,20000.00,'INACTIVE',10.00,21,NULL,NULL),(22,'2026-03-18 01:40:08.947535','2026-02-15',14000.00,18000.00,'ACTIVE',10.00,22,NULL,NULL),(23,'2026-03-18 01:40:08.947535','2026-02-15',28000.00,35000.00,'ACTIVE',10.00,23,NULL,NULL),(24,'2026-03-18 01:40:08.947535','2026-02-15',20000.00,25000.00,'ACTIVE',10.00,24,NULL,NULL),(25,'2026-03-18 01:40:08.947535','2026-02-15',40000.00,50000.00,'ACTIVE',10.00,25,NULL,NULL),(26,'2026-03-18 01:40:08.947535','2026-02-15',32000.00,40000.00,'ACTIVE',10.00,26,NULL,NULL),(27,'2026-03-17 21:53:50.224337','2026-03-17',32000.00,30000.00,'INACTIVE',10.00,9,NULL,NULL),(28,'2026-03-17 21:54:07.038309','2026-03-17',32000.00,35000.00,'INACTIVE',10.00,9,NULL,NULL),(29,'2026-03-18 08:56:14.613425','2026-03-18',0.00,10000.00,'INACTIVE',10.00,33,NULL,'2026-03-19'),(30,'2026-03-18 10:12:59.693522','2026-03-18',32000.00,38500.00,'INACTIVE',10.00,9,NULL,'2026-03-19'),(31,'2026-03-18 16:35:35.389328','2026-03-18',16000.00,23100.00,'ACTIVE',10.00,21,NULL,NULL),(32,'2026-03-19 06:54:18.323113','2026-03-19',500000.00,0.00,'INACTIVE',5.00,34,NULL,NULL),(33,'2026-03-19 06:54:18.331646','2026-03-19',10416.67,0.00,'INACTIVE',5.00,27,NULL,NULL),(34,'2026-03-19 06:55:04.014556','2026-03-19',12083.33,15800.00,'INACTIVE',5.00,27,NULL,'2026-03-20'),(35,'2026-03-19 06:55:19.571183','2026-03-19',580000.00,577500.00,'INACTIVE',5.00,34,NULL,'2026-03-20'),(36,'2026-03-19 09:02:42.165644','2026-03-19',32000.00,38500.00,'ACTIVE',10.00,9,NULL,'2026-08-31'),(37,'2026-03-19 09:03:09.683238','2026-03-19',10000.00,12100.00,'ACTIVE',10.00,30,NULL,'2026-08-31'),(38,'2026-03-19 09:03:41.998133','2026-03-19',12000.00,15400.00,'ACTIVE',10.00,4,NULL,'2026-08-31'),(39,'2026-03-19 09:04:18.388334','2026-03-19',10000.00,15400.00,'ACTIVE',10.00,28,NULL,'2026-08-31'); +INSERT INTO `variant_prices` (`id`,`created_at`,`effective_date`,`purchase_price`,`selling_price`,`status`,`tax_percent`,`variant_id`,`base_selling_price`,`expiry_date`) VALUES(1,'2026-03-18 01:40:08.947535','2026-01-15',20000.00,23000.00,'ACTIVE',10.00,1,NULL,NULL),(2,'2026-03-18 01:40:08.947535','2026-02-01',12000.00,15000.00,'ACTIVE',10.00,2,NULL,NULL),(3,'2026-03-18 01:40:08.947535','2026-01-20',35000.00,45000.00,'ACTIVE',10.00,3,NULL,NULL),(5,'2026-03-18 01:40:08.947535','2026-02-01',6000.00,8000.00,'ACTIVE',10.00,5,NULL,NULL),(6,'2026-03-18 01:40:08.947535','2026-01-15',10000.00,13000.00,'ACTIVE',10.00,6,NULL,NULL),(7,'2026-03-18 01:40:08.947535','2026-02-01',45000.00,55000.00,'ACTIVE',10.00,7,NULL,NULL),(8,'2026-03-18 01:40:08.947535','2026-01-20',18000.00,22000.00,'ACTIVE',10.00,8,NULL,NULL),(9,'2026-03-18 01:40:08.947535','2026-02-10',32000.00,40000.00,'INACTIVE',10.00,9,NULL,NULL),(10,'2026-03-18 01:40:08.947535','2026-02-01',1000.00,2000.00,'ACTIVE',5.00,10,NULL,NULL),(11,'2026-03-18 01:40:08.947535','2026-01-15',6000.00,8000.00,'ACTIVE',10.00,11,NULL,NULL),(12,'2026-03-18 01:40:08.947535','2026-02-01',3000.00,4500.00,'ACTIVE',10.00,12,NULL,NULL),(13,'2026-03-18 01:40:08.947535','2026-01-20',7000.00,10000.00,'ACTIVE',10.00,13,NULL,NULL),(14,'2026-03-18 01:40:08.947535','2026-02-10',11000.00,15000.00,'ACTIVE',10.00,14,NULL,NULL),(15,'2026-03-18 01:40:08.947535','2026-03-01',4000.00,6000.00,'ACTIVE',5.00,15,NULL,NULL),(16,'2026-03-18 01:40:08.947535','2026-03-01',25000.00,35000.00,'ACTIVE',10.00,16,NULL,NULL),(17,'2026-03-18 01:40:08.947535','2026-02-10',8000.00,12000.00,'ACTIVE',10.00,17,NULL,NULL),(18,'2026-03-18 01:40:08.947535','2026-02-15',7000.00,10000.00,'ACTIVE',10.00,18,NULL,NULL),(19,'2026-03-18 01:40:08.947535','2026-01-20',24000.00,30000.00,'ACTIVE',10.00,19,NULL,NULL),(20,'2026-03-18 01:40:08.947535','2026-02-10',20000.00,25000.00,'ACTIVE',10.00,20,NULL,NULL),(21,'2026-03-18 01:40:08.947535','2026-02-15',16000.00,20000.00,'INACTIVE',10.00,21,NULL,NULL),(22,'2026-03-18 01:40:08.947535','2026-02-15',14000.00,18000.00,'ACTIVE',10.00,22,NULL,NULL),(23,'2026-03-18 01:40:08.947535','2026-02-15',28000.00,35000.00,'ACTIVE',10.00,23,NULL,NULL),(24,'2026-03-18 01:40:08.947535','2026-02-15',20000.00,25000.00,'ACTIVE',10.00,24,NULL,NULL),(25,'2026-03-18 01:40:08.947535','2026-02-15',40000.00,50000.00,'ACTIVE',10.00,25,NULL,NULL),(26,'2026-03-18 01:40:08.947535','2026-02-15',32000.00,40000.00,'ACTIVE',10.00,26,NULL,NULL),(27,'2026-03-17 21:53:50.224337','2026-03-17',32000.00,30000.00,'INACTIVE',10.00,9,NULL,NULL),(28,'2026-03-17 21:54:07.038309','2026-03-17',32000.00,35000.00,'INACTIVE',10.00,9,NULL,NULL),(29,'2026-03-18 08:56:14.613425','2026-03-18',0.00,10000.00,'INACTIVE',10.00,33,NULL,'2026-03-19'),(30,'2026-03-18 10:12:59.693522','2026-03-18',32000.00,38500.00,'INACTIVE',10.00,9,NULL,'2026-03-19'),(31,'2026-03-18 16:35:35.389328','2026-03-18',16000.00,23100.00,'ACTIVE',10.00,21,NULL,NULL),(36,'2026-03-19 09:02:42.165644','2026-03-19',32000.00,38500.00,'ACTIVE',10.00,9,NULL,'2026-08-31'),(37,'2026-03-19 09:03:09.683238','2026-03-19',10000.00,12100.00,'ACTIVE',10.00,30,NULL,'2026-08-31'),(39,'2026-03-19 09:04:18.388334','2026-03-19',10000.00,15400.00,'ACTIVE',10.00,28,NULL,'2026-08-31'); -- 9.2 PRICE EXPIRY ALERT LOGS -- 10. LOCATIONS @@ -128,10 +128,10 @@ INSERT INTO `locations` (id,address,capacity,created_at,description,grid_col,gri -- 11. PRODUCT BATCHES -INSERT INTO `product_batches` (id,batch_number,cost_price,expiry_date,mfg_date,variant_id) VALUES (1,'VM2026001',20000.00,'2026-04-15','2026-01-15',1),(2,'DV2026001',12000.00,'2027-02-01','2026-02-01',2),(3,'NC2026001',35000.00,'2027-01-20','2026-01-20',3),(4,'CC2026001',8000.00,'2026-08-10','2026-02-10',4),(5,'OI2026001',6000.00,'2026-06-01','2026-02-01',5),(6,'CH2026001',10000.00,'2026-10-15','2026-01-15',6),(7,'CP2026001',45000.00,'2026-04-01','2026-02-01',7),(8,'VS2026001',18000.00,'2027-01-20','2026-01-20',8),(9,'OR2026001',32000.00,'2026-12-10','2026-02-10',9),(10,'CU2026001',1000.00,'2027-06-01','2026-02-01',10),(11,'VF2026001',6000.00,'2026-07-15','2026-01-15',11),(12,'HH2026001',3000.00,'2026-08-01','2026-02-01',12),(13,'OM2026001',7000.00,'2026-07-20','2026-01-20',13),(14,'CS2026001',11000.00,'2027-02-10','2026-02-10',14),(15,'THY2026001',4000.00,'2026-04-01','2026-03-01',15),(16,'THM2026001',25000.00,'2026-09-01','2026-03-01',16),(17,'LA2026001',8000.00,'2026-11-10','2026-02-10',17),(18,'TP2026001',7000.00,'2026-10-15','2026-02-15',18),(19,'KN2026001',24000.00,'2027-01-20','2026-01-20',19),(20,'MG2026001',20000.00,'2027-02-10','2026-02-10',20),(21,'HEI2026001',16000.00,'2027-02-15','2026-02-15',21),(22,'TIG2026001',14000.00,'2027-02-15','2026-02-15',22),(23,'NN2026001',28000.00,'2027-02-15','2026-02-15',23),(24,'OT2026001',20000.00,'2027-02-15','2026-02-15',24),(25,'TA2026001',40000.00,'2027-02-15','2026-02-15',25),(26,'OMO2026001',32000.00,'2027-02-15','2026-02-15',26),(27,'DA2026027',20000.00,'2026-10-31','2026-03-18',34),(28,'CC2026001',8000.00,'2026-08-10','2026-02-10',35),(29,'BE2026029',12000.00,'2026-11-30','2026-03-18',35),(30,'DA2026030',25000.00,'2026-11-30','2026-03-18',27),(31,'DA2026031',23000.00,'2027-03-18','2026-03-18',27),(32,'PE2026032',10000.00,'2027-12-31','2026-03-18',28),(33,'SN2026033',10000.00,'2027-03-13','2026-03-18',30),(34,'DAIRYV-000034',500000.00,'2027-03-19','2026-03-19',27),(38,'DAIRYV-000035',520000.00,'2026-12-30','2026-03-19',27),(39,'DAIRYV-000036',580000.00,'2026-12-30','2026-03-19',27),(40,'EX2026040',12000.00,'2026-02-10','2026-01-10',4),(41,'EX2026041',16000.00,'2026-01-25','2025-12-25',21),(42,'EX2026042',7000.00,'2026-03-05','2026-01-05',18); +INSERT INTO `product_batches` (id,batch_number,cost_price,expiry_date,mfg_date,variant_id) VALUES (1,'VM2026001',20000.00,'2026-04-15','2026-01-15',1),(2,'DV2026001',12000.00,'2027-02-01','2026-02-01',2),(3,'NC2026001',35000.00,'2027-01-20','2026-01-20',3),(5,'OI2026001',6000.00,'2026-06-01','2026-02-01',5),(6,'CH2026001',10000.00,'2026-10-15','2026-01-15',6),(7,'CP2026001',45000.00,'2026-04-01','2026-02-01',7),(8,'VS2026001',18000.00,'2027-01-20','2026-01-20',8),(9,'OR2026001',32000.00,'2026-12-10','2026-02-10',9),(10,'CU2026001',1000.00,'2027-06-01','2026-02-01',10),(11,'VF2026001',6000.00,'2026-07-15','2026-01-15',11),(12,'HH2026001',3000.00,'2026-08-01','2026-02-01',12),(13,'OM2026001',7000.00,'2026-07-20','2026-01-20',13),(14,'CS2026001',11000.00,'2027-02-10','2026-02-10',14),(15,'THY2026001',4000.00,'2026-04-01','2026-03-01',15),(16,'THM2026001',25000.00,'2026-09-01','2026-03-01',16),(17,'LA2026001',8000.00,'2026-11-10','2026-02-10',17),(18,'TP2026001',7000.00,'2026-10-15','2026-02-15',18),(19,'KN2026001',24000.00,'2027-01-20','2026-01-20',19),(20,'MG2026001',20000.00,'2027-02-10','2026-02-10',20),(21,'HEI2026001',16000.00,'2027-02-15','2026-02-15',21),(22,'TIG2026001',14000.00,'2027-02-15','2026-02-15',22),(23,'NN2026001',28000.00,'2027-02-15','2026-02-15',23),(24,'OT2026001',20000.00,'2027-02-15','2026-02-15',24),(25,'TA2026001',40000.00,'2027-02-15','2026-02-15',25),(26,'OMO2026001',32000.00,'2027-02-15','2026-02-15',26),(32,'PE2026032',10000.00,'2027-12-31','2026-03-18',28),(33,'SN2026033',10000.00,'2027-03-13','2026-03-18',30),(41,'EX2026041',16000.00,'2026-01-25','2025-12-25',21),(42,'EX2026042',7000.00,'2026-03-05','2026-01-05',18); -- 11.1 INVENTORY STOCK -INSERT INTO `inventory_stock` (id,quantity,batch_id,location_id,variant_id) VALUES (1,214,1,1,1),(2,178,2,2,2),(3,260,3,3,3),(4,502,4,4,4),(5,383,5,5,5),(6,120,6,1,6),(7,85,7,2,7),(8,150,8,3,8),(9,200,9,4,9),(10,973,10,5,10),(11,300,11,1,11),(12,500,12,2,12),(13,400,13,3,13),(14,250,14,4,14),(15,180,15,5,15),(16,210,16,1,16),(17,318,17,2,17),(18,280,18,3,18),(19,140,19,4,19),(20,190,20,5,20),(21,300,21,1,21),(22,250,22,2,22),(23,100,23,3,23),(24,148,24,4,24),(25,200,25,5,25),(26,80,26,1,26),(27,480,27,1,34),(28,16,28,4,35),(29,300,29,1,35),(30,480,30,1,27),(31,480,31,2,27),(32,1,32,1,28),(33,10,33,3,30),(34,96,34,1,27),(38,384,38,1,27),(39,240,39,1,27),(40,24,40,2,4),(41,15,41,3,21),(42,30,42,4,18); +INSERT INTO `inventory_stock` (id,quantity,batch_id,location_id,variant_id) VALUES (1,214,1,1,1),(2,178,2,2,2),(3,260,3,3,3),(5,383,5,5,5),(6,120,6,1,6),(7,85,7,2,7),(8,150,8,3,8),(9,200,9,4,9),(10,973,10,5,10),(11,300,11,1,11),(12,500,12,2,12),(13,400,13,3,13),(14,250,14,4,14),(15,180,15,5,15),(16,210,16,1,16),(17,318,17,2,17),(18,280,18,3,18),(19,140,19,4,19),(20,190,20,5,20),(21,300,21,1,21),(22,250,22,2,22),(23,100,23,3,23),(24,148,24,4,24),(25,200,25,5,25),(26,80,26,1,26),(32,1,32,1,28),(33,10,33,3,30),(41,15,41,3,21),(42,30,42,4,18); -- Điều chỉnh số lượng tồn kho để phản ánh trạng thái sau khi đã xác nhận phiếu kiểm kho -- và các giao dịch bán hàng đã ghi nhận trong stock_movements @@ -141,8 +141,6 @@ UPDATE inventory_stock SET quantity = 245 WHERE variant_id = 1 AND location_id = UPDATE inventory_stock SET quantity = 178 WHERE variant_id = 2 AND location_id = 2 AND batch_id = 2; -- variant 3 (Nescafe, loc 3): 260 + 1 (IC-2026-0002) - 1 (bán) = 260 UPDATE inventory_stock SET quantity = 260 WHERE variant_id = 3 AND location_id = 3 AND batch_id = 3; --- variant 4 (Coca Cola, loc 4): 510 - 4 (sale 1) - 4 (lẻ) = ~502, để ở mức trước kiểm -UPDATE inventory_stock SET quantity = 502 WHERE variant_id = 4 AND location_id = 4 AND batch_id = 4; -- variant 5 (Oishi, loc 5): 390 - 3 (sale 1) = 387 UPDATE inventory_stock SET quantity = 387 WHERE variant_id = 5 AND location_id = 5 AND batch_id = 5;