diff --git a/backend/src/main/java/com/petshop/backend/controller/AuthController.java b/backend/src/main/java/com/petshop/backend/controller/AuthController.java index eb91c6dc..032518ec 100644 --- a/backend/src/main/java/com/petshop/backend/controller/AuthController.java +++ b/backend/src/main/java/com/petshop/backend/controller/AuthController.java @@ -344,9 +344,11 @@ public class AuthController { @PostMapping("/logout") public ResponseEntity logout() { + User user = authHelper.getAuthenticatedUser(); + user.setTokenVersion(user.getTokenVersion() + 1); + userRepository.save(user); Map response = new HashMap<>(); response.put("message", "Logged out successfully"); - response.put("note", "Token remains valid until expiration. Clear token from client storage."); return ResponseEntity.ok(response); } diff --git a/backend/src/main/java/com/petshop/backend/dto/adoption/CustomerAdoptionRequest.java b/backend/src/main/java/com/petshop/backend/dto/adoption/CustomerAdoptionRequest.java index 287c1d6d..4272b2db 100644 --- a/backend/src/main/java/com/petshop/backend/dto/adoption/CustomerAdoptionRequest.java +++ b/backend/src/main/java/com/petshop/backend/dto/adoption/CustomerAdoptionRequest.java @@ -12,7 +12,7 @@ public class CustomerAdoptionRequest { private Long sourceStoreId; - @NotNull(message = "Appointment date is required") + @NotNull(message = "Adoption date is required") private LocalDate adoptionDate; public Long getPetId() { diff --git a/backend/src/main/java/com/petshop/backend/dto/auth/ProfileUpdateRequest.java b/backend/src/main/java/com/petshop/backend/dto/auth/ProfileUpdateRequest.java index dc1c98c0..97b978b0 100644 --- a/backend/src/main/java/com/petshop/backend/dto/auth/ProfileUpdateRequest.java +++ b/backend/src/main/java/com/petshop/backend/dto/auth/ProfileUpdateRequest.java @@ -1,14 +1,17 @@ package com.petshop.backend.dto.auth; import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; import java.util.Objects; public class ProfileUpdateRequest { @Size(min = 3, max = 50, message = "Username must be between 3 and 50 characters") + @Pattern(regexp = "^(?!\\s*$).+", message = "Username must not be blank") private String username; @Email(message = "Email must be valid") + @Pattern(regexp = "^(?!\\s*$).+", message = "Email must not be blank") private String email; @Size(max = 50, message = "First name must not exceed 50 characters") diff --git a/backend/src/main/java/com/petshop/backend/dto/chat/MessageRequest.java b/backend/src/main/java/com/petshop/backend/dto/chat/MessageRequest.java index cecedfbd..37dcd683 100644 --- a/backend/src/main/java/com/petshop/backend/dto/chat/MessageRequest.java +++ b/backend/src/main/java/com/petshop/backend/dto/chat/MessageRequest.java @@ -1,6 +1,7 @@ package com.petshop.backend.dto.chat; public class MessageRequest { + @jakarta.validation.constraints.Size(max = 10000, message = "Message content must not exceed 10000 characters") private String content; private String attachmentUrl; private String attachmentName; diff --git a/backend/src/main/java/com/petshop/backend/dto/common/CouponRequest.java b/backend/src/main/java/com/petshop/backend/dto/common/CouponRequest.java index 83531a74..ffa7f766 100644 --- a/backend/src/main/java/com/petshop/backend/dto/common/CouponRequest.java +++ b/backend/src/main/java/com/petshop/backend/dto/common/CouponRequest.java @@ -11,6 +11,7 @@ public class CouponRequest { private String couponCode; @NotBlank(message = "Discount type is required") + @jakarta.validation.constraints.Pattern(regexp = "^(Percent|Percentage|Fixed|Flat)$", flags = jakarta.validation.constraints.Pattern.Flag.CASE_INSENSITIVE, message = "Discount type must be Percent, Percentage, Fixed, or Flat") private String discountType; @NotNull(message = "Discount value is required") diff --git a/backend/src/main/java/com/petshop/backend/dto/sale/SaleRequest.java b/backend/src/main/java/com/petshop/backend/dto/sale/SaleRequest.java index db9eb6cd..b0e7989f 100644 --- a/backend/src/main/java/com/petshop/backend/dto/sale/SaleRequest.java +++ b/backend/src/main/java/com/petshop/backend/dto/sale/SaleRequest.java @@ -1,8 +1,10 @@ package com.petshop.backend.dto.sale; import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; import java.util.List; import java.util.Objects; @@ -10,6 +12,8 @@ public class SaleRequest { @NotNull(message = "Store ID is required") private Long storeId; + @NotBlank(message = "Payment method is required") + @Pattern(regexp = "^(Cash|Card)$", message = "Payment method must be Cash or Card") private String paymentMethod; @NotEmpty(message = "At least one item is required") @@ -22,6 +26,7 @@ public class SaleRequest { private Long customerId; + @Pattern(regexp = "^(In Store|Online)$", message = "Channel must be In Store or Online") private String channel; private Long couponId; diff --git a/backend/src/main/java/com/petshop/backend/entity/Sale.java b/backend/src/main/java/com/petshop/backend/entity/Sale.java index b052e17d..d1134b58 100644 --- a/backend/src/main/java/com/petshop/backend/entity/Sale.java +++ b/backend/src/main/java/com/petshop/backend/entity/Sale.java @@ -47,7 +47,7 @@ public class Sale { private Sale originalSale; @Column(nullable = false, length = 20) - private String channel = "IN_STORE"; + private String channel = "In Store"; @ManyToOne @JoinColumn(name = "cartId") diff --git a/backend/src/main/java/com/petshop/backend/service/CouponService.java b/backend/src/main/java/com/petshop/backend/service/CouponService.java index 18ff269c..cf56188f 100644 --- a/backend/src/main/java/com/petshop/backend/service/CouponService.java +++ b/backend/src/main/java/com/petshop/backend/service/CouponService.java @@ -89,7 +89,7 @@ public class CouponService { } private void updateCouponFields(Coupon coupon, CouponRequest request) { - if ("PERCENTAGE".equalsIgnoreCase(request.getDiscountType()) + if (isPercentageType(request.getDiscountType()) && request.getDiscountValue().compareTo(new BigDecimal("100")) >= 0) { throw new BusinessException("Percentage discount must be less than 100"); } diff --git a/backend/src/main/java/com/petshop/backend/service/SaleService.java b/backend/src/main/java/com/petshop/backend/service/SaleService.java index c35c07da..d33d11b3 100644 --- a/backend/src/main/java/com/petshop/backend/service/SaleService.java +++ b/backend/src/main/java/com/petshop/backend/service/SaleService.java @@ -84,7 +84,7 @@ public class SaleService { sale.setStore(store); sale.setPaymentMethod(normalizePaymentMethod(request.getPaymentMethod())); sale.setIsRefund(request.getIsRefund() != null ? request.getIsRefund() : false); - sale.setChannel(request.getChannel() != null ? request.getChannel() : "IN_STORE"); + sale.setChannel(request.getChannel() != null ? request.getChannel() : "In Store"); if (request.getCouponId() != null) { Coupon coupon = couponRepository.findByIdForUpdate(request.getCouponId()) diff --git a/backend/src/main/resources/db/migration/V1__target_baseline.sql b/backend/src/main/resources/db/migration/V1__target_baseline.sql index 01a0c34e..bb5d92f3 100644 --- a/backend/src/main/resources/db/migration/V1__target_baseline.sql +++ b/backend/src/main/resources/db/migration/V1__target_baseline.sql @@ -244,7 +244,7 @@ CREATE TABLE IF NOT EXISTS sale ( customerId BIGINT NULL, isRefund BOOLEAN NOT NULL DEFAULT FALSE, originalSaleId BIGINT NULL, - channel VARCHAR(20) NOT NULL DEFAULT 'IN_STORE', + channel VARCHAR(20) NOT NULL DEFAULT 'In Store', cartId BIGINT NULL, couponId BIGINT NULL, subtotalAmount DECIMAL(10, 2) NULL, diff --git a/backend/src/main/resources/db/migration/V2__seed_data.sql b/backend/src/main/resources/db/migration/V2__seed_data.sql index 4109ec6a..0a307195 100644 --- a/backend/src/main/resources/db/migration/V2__seed_data.sql +++ b/backend/src/main/resources/db/migration/V2__seed_data.sql @@ -59,19 +59,19 @@ INSERT INTO storeLocation (storeId, storeName, address, phone, email, imageUrl) INSERT INTO users (id, username, password, email, firstName, lastName, fullName, phone, avatarUrl, role, staffRole, primaryStoreId, loyaltyPoints, active, tokenVersion) VALUES (1, 'admin', '$2y$10$ok/BmOn/pyyamTeNmUDiB.OfLCduQlZSAaRLlupM/cZb7ZhiBriVe', 'admin@petshop.com', 'Admin', 'User', 'Admin User', '000-000-1000', 'https://images.petshop.local/users/001.webp', 'ADMIN', 'ADMINISTRATOR', 1, 0, 1, 0), -(2, 'morgan.lee', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'morgan.lee@petshop.com', 'Morgan', 'Lee', 'Morgan Lee', '403-700-0002', 'https://images.petshop.local/users/002.webp', 'ADMIN', 'OPERATIONS_ADMIN', 2, 0, 1, 0), -(3, 'staff', '$2y$10$23mqbLolo609T/.PC4KfiuY.9HqYEgA8LrJ/fccZ7CmK0/OIsPrfq', 'staff@petshop.com', 'Staff', 'User', 'Staff User', '000-000-1001', 'https://images.petshop.local/users/003.webp', 'STAFF', 'STORE_MANAGER', 1, 0, 1, 0), -(4, 'sara.smith', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'sara.smith@petshop.com', 'Sara', 'Smith', 'Sara Smith', '403-710-0004', 'https://images.petshop.local/users/004.webp', 'STAFF', 'SALES_ASSOCIATE', 1, 0, 1, 0), -(5, 'david.brown', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'david.brown@petshop.com', 'David', 'Brown', 'David Brown', '403-710-0005', 'https://images.petshop.local/users/005.webp', 'STAFF', 'VETERINARY_TECH', 1, 0, 1, 0), -(6, 'priya.patel', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'priya.patel@petshop.com', 'Priya', 'Patel', 'Priya Patel', '403-710-0006', 'https://images.petshop.local/users/006.webp', 'STAFF', 'GROOMER', 1, 0, 1, 0), -(7, 'michael.johnson', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'michael.johnson@petshop.com', 'Michael', 'Johnson', 'Michael Johnson', '403-710-0007', 'https://images.petshop.local/users/007.webp', 'STAFF', 'STORE_MANAGER', 2, 0, 1, 0), -(8, 'emma.davis', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'emma.davis@petshop.com', 'Emma', 'Davis', 'Emma Davis', '403-710-0008', 'https://images.petshop.local/users/008.webp', 'STAFF', 'SALES_ASSOCIATE', 2, 0, 1, 0), -(9, 'lucas.turner', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'lucas.turner@petshop.com', 'Lucas', 'Turner', 'Lucas Turner', '403-710-0009', 'https://images.petshop.local/users/009.webp', 'STAFF', 'VETERINARY_TECH', 2, 0, 1, 0), -(10, 'nina.green', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'nina.green@petshop.com', 'Nina', 'Green', 'Nina Green', '403-710-0010', 'https://images.petshop.local/users/010.webp', 'STAFF', 'GROOMER', 2, 0, 1, 0), -(11, 'lisa.williams', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'lisa.williams@petshop.com', 'Lisa', 'Williams', 'Lisa Williams', '403-710-0011', 'https://images.petshop.local/users/011.webp', 'STAFF', 'STORE_MANAGER', 3, 0, 1, 0), -(12, 'daniel.moore', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'daniel.moore@petshop.com', 'Daniel', 'Moore', 'Daniel Moore', '403-710-0012', 'https://images.petshop.local/users/012.webp', 'STAFF', 'SALES_ASSOCIATE', 3, 0, 1, 0), -(13, 'chloe.martin', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'chloe.martin@petshop.com', 'Chloe', 'Martin', 'Chloe Martin', '403-710-0013', 'https://images.petshop.local/users/013.webp', 'STAFF', 'VETERINARY_TECH', 3, 0, 1, 0), -(14, 'owen.baker', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'owen.baker@petshop.com', 'Owen', 'Baker', 'Owen Baker', '403-710-0014', 'https://images.petshop.local/users/014.webp', 'STAFF', 'GROOMER', 3, 0, 1, 0), +(2, 'morgan.lee', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'morgan.lee@petshop.com', 'Morgan', 'Lee', 'Morgan Lee', '403-700-0002', 'https://images.petshop.local/users/002.webp', 'ADMIN', 'Operations Admin', 2, 0, 1, 0), +(3, 'staff', '$2y$10$23mqbLolo609T/.PC4KfiuY.9HqYEgA8LrJ/fccZ7CmK0/OIsPrfq', 'staff@petshop.com', 'Staff', 'User', 'Staff User', '000-000-1001', 'https://images.petshop.local/users/003.webp', 'STAFF', 'Store Manager', 1, 0, 1, 0), +(4, 'sara.smith', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'sara.smith@petshop.com', 'Sara', 'Smith', 'Sara Smith', '403-710-0004', 'https://images.petshop.local/users/004.webp', 'STAFF', 'Sales Associate', 1, 0, 1, 0), +(5, 'david.brown', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'david.brown@petshop.com', 'David', 'Brown', 'David Brown', '403-710-0005', 'https://images.petshop.local/users/005.webp', 'STAFF', 'Veterinary Tech', 1, 0, 1, 0), +(6, 'priya.patel', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'priya.patel@petshop.com', 'Priya', 'Patel', 'Priya Patel', '403-710-0006', 'https://images.petshop.local/users/006.webp', 'STAFF', 'Groomer', 1, 0, 1, 0), +(7, 'michael.johnson', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'michael.johnson@petshop.com', 'Michael', 'Johnson', 'Michael Johnson', '403-710-0007', 'https://images.petshop.local/users/007.webp', 'STAFF', 'Store Manager', 2, 0, 1, 0), +(8, 'emma.davis', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'emma.davis@petshop.com', 'Emma', 'Davis', 'Emma Davis', '403-710-0008', 'https://images.petshop.local/users/008.webp', 'STAFF', 'Sales Associate', 2, 0, 1, 0), +(9, 'lucas.turner', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'lucas.turner@petshop.com', 'Lucas', 'Turner', 'Lucas Turner', '403-710-0009', 'https://images.petshop.local/users/009.webp', 'STAFF', 'Veterinary Tech', 2, 0, 1, 0), +(10, 'nina.green', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'nina.green@petshop.com', 'Nina', 'Green', 'Nina Green', '403-710-0010', 'https://images.petshop.local/users/010.webp', 'STAFF', 'Groomer', 2, 0, 1, 0), +(11, 'lisa.williams', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'lisa.williams@petshop.com', 'Lisa', 'Williams', 'Lisa Williams', '403-710-0011', 'https://images.petshop.local/users/011.webp', 'STAFF', 'Store Manager', 3, 0, 1, 0), +(12, 'daniel.moore', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'daniel.moore@petshop.com', 'Daniel', 'Moore', 'Daniel Moore', '403-710-0012', 'https://images.petshop.local/users/012.webp', 'STAFF', 'Sales Associate', 3, 0, 1, 0), +(13, 'chloe.martin', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'chloe.martin@petshop.com', 'Chloe', 'Martin', 'Chloe Martin', '403-710-0013', 'https://images.petshop.local/users/013.webp', 'STAFF', 'Veterinary Tech', 3, 0, 1, 0), +(14, 'owen.baker', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'owen.baker@petshop.com', 'Owen', 'Baker', 'Owen Baker', '403-710-0014', 'https://images.petshop.local/users/014.webp', 'STAFF', 'Groomer', 3, 0, 1, 0), (15, 'customer', '$2y$10$fgIlTHDYUOzvbczwdhQP7..YuAHr2cGODb9OBQJqole3AkiY4CGUq', 'customer@petshop.com', 'Test', 'Customer', 'Test Customer', '000-000-1002', 'https://images.petshop.local/users/015.webp', 'CUSTOMER', 'CUSTOMER', NULL, 0, 1, 0), (16, 'alex.brown', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'alex.brown@gmail.com', 'Alex', 'Brown', 'Alex Brown', '403-730-0016', 'https://images.petshop.local/users/016.webp', 'CUSTOMER', 'CUSTOMER', NULL, 12, 1, 0), (17, 'alex.clark', '$2a$10$mE0D/HrnCuqFeEqMy0NJwuy2jkoRYjQ7GrKcc/7QQ0r2AqnZTvyGq', 'alex.clark@gmail.com', 'Alex', 'Clark', 'Alex Clark', '403-730-0017', 'https://images.petshop.local/users/017.webp', 'CUSTOMER', 'CUSTOMER', NULL, 15, 1, 0), @@ -830,14 +830,14 @@ INSERT INTO purchaseOrder (purchaseOrderId, supId, storeId, orderDate) VALUES (36, 10, 3, '2026-04-22'); INSERT INTO coupon (couponId, couponCode, discountType, discountValue, minOrderAmount, active, startsAt, endsAt, usageLimit) VALUES -(1, 'NOCODE', 'FIXED', 0.00, 0.00, 1, NULL, NULL, NULL), -(2, 'WELCOME10', 'PERCENT', 10.00, 50.00, 1, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 300), -(3, 'TREAT5', 'FIXED', 5.00, 25.00, 1, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 500), -(4, 'GROOM15', 'PERCENT', 15.00, 60.00, 1, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 200), -(5, 'FISHCARE8', 'FIXED', 8.00, 40.00, 1, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 150), -(6, 'BIRD10', 'PERCENT', 10.00, 30.00, 1, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 150), -(7, 'SPRING12', 'PERCENT', 12.00, 75.00, 1, '2026-03-01 00:00:00', '2026-05-31 23:59:59', 180), -(8, 'NEWPET20', 'FIXED', 20.00, 100.00, 1, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 120); +(1, 'NOCODE', 'Fixed', 0.00, 0.00, 1, NULL, NULL, NULL), +(2, 'WELCOME10', 'Percent', 10.00, 50.00, 1, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 300), +(3, 'TREAT5', 'Fixed', 5.00, 25.00, 1, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 500), +(4, 'GROOM15', 'Percent', 15.00, 60.00, 1, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 200), +(5, 'FISHCARE8', 'Fixed', 8.00, 40.00, 1, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 150), +(6, 'BIRD10', 'Percent', 10.00, 30.00, 1, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 150), +(7, 'SPRING12', 'Percent', 12.00, 75.00, 1, '2026-03-01 00:00:00', '2026-05-31 23:59:59', 180), +(8, 'NEWPET20', 'Fixed', 20.00, 100.00, 1, '2026-01-01 00:00:00', '2026-12-31 23:59:59', 120); INSERT INTO pet (petId, petName, petSpecies, petBreed, petAge, petStatus, petPrice, imageUrl, ownerUserId, storeId) VALUES (1, 'Buddy', 'Dog', 'Corgi', 2, 'Available', 466.80, 'https://images.petshop.local/pets/001.webp', NULL, 1), @@ -942,96 +942,96 @@ INSERT INTO pet (petId, petName, petSpecies, petBreed, petAge, petStatus, petPri (100, 'Comet', 'Bird', 'Lovebird', 2, 'Owned', 0.00, 'https://images.petshop.local/pets/100.webp', 79, NULL); INSERT INTO appointment (appointmentId, serviceId, petId, customerId, storeId, employeeId, appointmentDate, appointmentTime, appointmentStatus) VALUES -(1, 2, 37, 16, 1, 3, '2026-01-07', '09:00:00', 'COMPLETED'), -(2, 8, 38, 17, 2, 8, '2026-01-09', '10:30:00', 'COMPLETED'), -(3, 4, 39, 18, 3, 13, '2026-01-11', '13:00:00', 'MISSED'), -(4, 8, 40, 19, 1, 6, '2026-01-13', '14:30:00', 'CANCELLED'), -(5, 5, 41, 20, 2, 7, '2026-01-15', '16:00:00', 'COMPLETED'), -(6, 8, 42, 21, 3, 12, '2026-01-17', '09:00:00', 'COMPLETED'), -(7, 2, 43, 22, 1, 5, '2026-01-19', '10:30:00', 'COMPLETED'), -(8, 8, 44, 23, 2, 10, '2026-01-21', '13:00:00', 'MISSED'), -(9, 4, 45, 24, 3, 11, '2026-01-23', '14:30:00', 'CANCELLED'), -(10, 8, 46, 25, 1, 4, '2026-01-25', '16:00:00', 'COMPLETED'), -(11, 6, 47, 26, 2, 9, '2026-01-27', '09:00:00', 'COMPLETED'), -(12, 7, 48, 27, 3, 14, '2026-01-29', '10:30:00', 'COMPLETED'), -(13, 2, 49, 28, 1, 3, '2026-01-31', '13:00:00', 'MISSED'), -(14, 4, 50, 29, 2, 8, '2026-02-02', '14:30:00', 'CANCELLED'), -(15, 5, 51, 30, 3, 13, '2026-02-04', '16:00:00', 'COMPLETED'), -(16, 1, 52, 31, 1, 6, '2026-02-06', '09:00:00', 'COMPLETED'), -(17, 2, 53, 32, 2, 7, '2026-02-08', '10:30:00', 'COMPLETED'), -(18, 3, 54, 33, 3, 12, '2026-02-10', '13:00:00', 'MISSED'), -(19, 4, 55, 34, 2, 9, '2026-02-12', '14:30:00', 'CANCELLED'), -(20, 5, 56, 35, 3, 14, '2026-02-14', '16:00:00', 'COMPLETED'), -(21, 1, 57, 36, 1, 3, '2026-02-16', '09:00:00', 'COMPLETED'), -(22, 4, 58, 37, 2, 8, '2026-02-18', '10:30:00', 'COMPLETED'), -(23, 4, 59, 38, 3, 13, '2026-02-20', '13:00:00', 'MISSED'), -(24, 5, 60, 39, 1, 6, '2026-02-22', '14:30:00', 'CANCELLED'), -(25, 2, 61, 40, 2, 7, '2026-02-24', '16:00:00', 'COMPLETED'), -(26, 1, 62, 41, 3, 12, '2026-02-26', '09:00:00', 'COMPLETED'), -(27, 2, 63, 42, 1, 5, '2026-02-28', '10:30:00', 'COMPLETED'), -(28, 3, 64, 43, 2, 10, '2026-03-02', '13:00:00', 'MISSED'), -(29, 2, 65, 44, 3, 11, '2026-03-04', '14:30:00', 'CANCELLED'), -(30, 8, 66, 45, 1, 4, '2026-03-06', '16:00:00', 'COMPLETED'), -(31, 2, 67, 46, 2, 9, '2026-03-08', '09:00:00', 'COMPLETED'), -(32, 5, 68, 47, 3, 14, '2026-03-10', '10:30:00', 'COMPLETED'), -(33, 3, 69, 48, 1, 3, '2026-03-12', '13:00:00', 'MISSED'), -(34, 4, 70, 49, 2, 8, '2026-03-14', '14:30:00', 'CANCELLED'), -(35, 5, 71, 50, 3, 13, '2026-03-16', '16:00:00', 'COMPLETED'), -(36, 7, 72, 51, 1, 6, '2026-03-18', '09:00:00', 'COMPLETED'), -(37, 4, 73, 52, 2, 7, '2026-03-20', '10:30:00', 'COMPLETED'), -(38, 4, 74, 53, 3, 12, '2026-03-22', '13:00:00', 'MISSED'), -(39, 4, 75, 54, 1, 5, '2026-03-24', '14:30:00', 'CANCELLED'), -(40, 5, 76, 55, 2, 10, '2026-03-26', '16:00:00', 'COMPLETED'), -(41, 1, 77, 56, 3, 11, '2026-03-28', '09:00:00', 'COMPLETED'), -(42, 2, 78, 57, 1, 4, '2026-03-30', '10:30:00', 'COMPLETED'), -(43, 6, 79, 58, 2, 9, '2026-04-01', '13:00:00', 'BOOKED'), -(44, 8, 80, 59, 3, 14, '2026-04-03', '14:30:00', 'BOOKED'), -(45, 5, 81, 60, 1, 3, '2026-04-05', '16:00:00', 'BOOKED'), -(46, 3, 82, 61, 2, 8, '2026-04-07', '09:00:00', 'BOOKED'), -(47, 2, 83, 62, 3, 13, '2026-04-09', '10:30:00', 'BOOKED'), -(48, 3, 84, 63, 1, 6, '2026-04-11', '13:00:00', 'BOOKED'), -(49, 4, 85, 64, 2, 7, '2026-04-13', '14:30:00', 'BOOKED'), -(50, 4, 86, 65, 3, 12, '2026-04-15', '16:00:00', 'BOOKED'), -(51, 4, 87, 66, 1, 5, '2026-04-17', '09:00:00', 'BOOKED'), -(52, 2, 88, 67, 2, 10, '2026-04-19', '10:30:00', 'BOOKED'), -(53, 2, 89, 68, 3, 11, '2026-04-21', '13:00:00', 'BOOKED'), -(54, 4, 90, 69, 1, 4, '2026-04-23', '14:30:00', 'BOOKED'), -(55, 5, 91, 70, 2, 9, '2026-04-25', '16:00:00', 'BOOKED'), -(56, 1, 92, 71, 3, 14, '2026-04-27', '09:00:00', 'BOOKED'), -(57, 2, 93, 72, 1, 3, '2026-04-29', '10:30:00', 'BOOKED'), -(58, 8, 94, 73, 2, 8, '2026-05-01', '13:00:00', 'BOOKED'), -(59, 4, 95, 74, 3, 13, '2026-05-03', '14:30:00', 'BOOKED'), -(60, 5, 96, 75, 1, 6, '2026-05-05', '16:00:00', 'BOOKED'), -(61, 1, 97, 76, 2, 7, '2026-01-07', '09:00:00', 'COMPLETED'), -(62, 2, 98, 77, 3, 12, '2026-01-09', '10:30:00', 'COMPLETED'), -(63, 3, 99, 78, 1, 5, '2026-01-11', '13:00:00', 'MISSED'), -(64, 7, 100, 79, 2, 10, '2026-01-13', '14:30:00', 'CANCELLED'), -(65, 2, 37, 16, 1, 3, '2026-01-15', '16:00:00', 'COMPLETED'), -(66, 8, 38, 17, 2, 8, '2026-01-17', '09:00:00', 'COMPLETED'), -(67, 4, 39, 18, 3, 13, '2026-01-19', '10:30:00', 'COMPLETED'), -(68, 8, 40, 19, 1, 6, '2026-01-21', '13:00:00', 'MISSED'), -(69, 4, 41, 20, 2, 7, '2026-01-23', '14:30:00', 'CANCELLED'), -(70, 8, 42, 21, 3, 12, '2026-01-25', '16:00:00', 'COMPLETED'), -(71, 1, 43, 22, 1, 5, '2026-01-27', '09:00:00', 'COMPLETED'), -(72, 8, 44, 23, 2, 10, '2026-01-29', '10:30:00', 'COMPLETED'), -(73, 4, 45, 24, 3, 11, '2026-01-31', '13:00:00', 'MISSED'), -(74, 8, 46, 25, 1, 4, '2026-02-02', '14:30:00', 'CANCELLED'), -(75, 6, 47, 26, 2, 9, '2026-02-04', '16:00:00', 'COMPLETED'), -(76, 7, 48, 27, 3, 14, '2026-02-06', '09:00:00', 'COMPLETED'), -(77, 2, 49, 28, 1, 3, '2026-02-08', '10:30:00', 'COMPLETED'), -(78, 4, 50, 29, 2, 8, '2026-02-10', '13:00:00', 'MISSED'), -(79, 4, 51, 30, 3, 13, '2026-02-12', '14:30:00', 'CANCELLED'), -(80, 5, 52, 31, 1, 6, '2026-02-14', '16:00:00', 'COMPLETED'), -(81, 1, 53, 32, 2, 7, '2026-02-16', '09:00:00', 'COMPLETED'), -(82, 2, 54, 33, 3, 12, '2026-02-18', '10:30:00', 'COMPLETED'), -(83, 3, 55, 34, 2, 9, '2026-02-20', '13:00:00', 'MISSED'), -(84, 4, 56, 35, 3, 14, '2026-02-22', '14:30:00', 'CANCELLED'), -(85, 5, 57, 36, 1, 3, '2026-02-24', '16:00:00', 'COMPLETED'), -(86, 4, 58, 37, 2, 8, '2026-02-26', '09:00:00', 'COMPLETED'), -(87, 4, 59, 38, 3, 13, '2026-02-28', '10:30:00', 'COMPLETED'), -(88, 2, 60, 39, 1, 6, '2026-03-02', '13:00:00', 'MISSED'), -(89, 2, 61, 40, 2, 7, '2026-03-04', '14:30:00', 'CANCELLED'), -(90, 5, 62, 41, 3, 12, '2026-03-06', '16:00:00', 'COMPLETED'); +(1, 2, 37, 16, 1, 3, '2026-01-07', '09:00:00', 'Completed'), +(2, 8, 38, 17, 2, 8, '2026-01-09', '10:30:00', 'Completed'), +(3, 4, 39, 18, 3, 13, '2026-01-11', '13:00:00', 'Missed'), +(4, 8, 40, 19, 1, 6, '2026-01-13', '14:30:00', 'Cancelled'), +(5, 5, 41, 20, 2, 7, '2026-01-15', '16:00:00', 'Completed'), +(6, 8, 42, 21, 3, 12, '2026-01-17', '09:00:00', 'Completed'), +(7, 2, 43, 22, 1, 5, '2026-01-19', '10:30:00', 'Completed'), +(8, 8, 44, 23, 2, 10, '2026-01-21', '13:00:00', 'Missed'), +(9, 4, 45, 24, 3, 11, '2026-01-23', '14:30:00', 'Cancelled'), +(10, 8, 46, 25, 1, 4, '2026-01-25', '16:00:00', 'Completed'), +(11, 6, 47, 26, 2, 9, '2026-01-27', '09:00:00', 'Completed'), +(12, 7, 48, 27, 3, 14, '2026-01-29', '10:30:00', 'Completed'), +(13, 2, 49, 28, 1, 3, '2026-01-31', '13:00:00', 'Missed'), +(14, 4, 50, 29, 2, 8, '2026-02-02', '14:30:00', 'Cancelled'), +(15, 5, 51, 30, 3, 13, '2026-02-04', '16:00:00', 'Completed'), +(16, 1, 52, 31, 1, 6, '2026-02-06', '09:00:00', 'Completed'), +(17, 2, 53, 32, 2, 7, '2026-02-08', '10:30:00', 'Completed'), +(18, 3, 54, 33, 3, 12, '2026-02-10', '13:00:00', 'Missed'), +(19, 4, 55, 34, 2, 9, '2026-02-12', '14:30:00', 'Cancelled'), +(20, 5, 56, 35, 3, 14, '2026-02-14', '16:00:00', 'Completed'), +(21, 1, 57, 36, 1, 3, '2026-02-16', '09:00:00', 'Completed'), +(22, 4, 58, 37, 2, 8, '2026-02-18', '10:30:00', 'Completed'), +(23, 4, 59, 38, 3, 13, '2026-02-20', '13:00:00', 'Missed'), +(24, 5, 60, 39, 1, 6, '2026-02-22', '14:30:00', 'Cancelled'), +(25, 2, 61, 40, 2, 7, '2026-02-24', '16:00:00', 'Completed'), +(26, 1, 62, 41, 3, 12, '2026-02-26', '09:00:00', 'Completed'), +(27, 2, 63, 42, 1, 5, '2026-02-28', '10:30:00', 'Completed'), +(28, 3, 64, 43, 2, 10, '2026-03-02', '13:00:00', 'Missed'), +(29, 2, 65, 44, 3, 11, '2026-03-04', '14:30:00', 'Cancelled'), +(30, 8, 66, 45, 1, 4, '2026-03-06', '16:00:00', 'Completed'), +(31, 2, 67, 46, 2, 9, '2026-03-08', '09:00:00', 'Completed'), +(32, 5, 68, 47, 3, 14, '2026-03-10', '10:30:00', 'Completed'), +(33, 3, 69, 48, 1, 3, '2026-03-12', '13:00:00', 'Missed'), +(34, 4, 70, 49, 2, 8, '2026-03-14', '14:30:00', 'Cancelled'), +(35, 5, 71, 50, 3, 13, '2026-03-16', '16:00:00', 'Completed'), +(36, 7, 72, 51, 1, 6, '2026-03-18', '09:00:00', 'Completed'), +(37, 4, 73, 52, 2, 7, '2026-03-20', '10:30:00', 'Completed'), +(38, 4, 74, 53, 3, 12, '2026-03-22', '13:00:00', 'Missed'), +(39, 4, 75, 54, 1, 5, '2026-03-24', '14:30:00', 'Cancelled'), +(40, 5, 76, 55, 2, 10, '2026-03-26', '16:00:00', 'Completed'), +(41, 1, 77, 56, 3, 11, '2026-03-28', '09:00:00', 'Completed'), +(42, 2, 78, 57, 1, 4, '2026-03-30', '10:30:00', 'Completed'), +(43, 6, 79, 58, 2, 9, '2026-04-01', '13:00:00', 'Booked'), +(44, 8, 80, 59, 3, 14, '2026-04-03', '14:30:00', 'Booked'), +(45, 5, 81, 60, 1, 3, '2026-04-05', '16:00:00', 'Booked'), +(46, 3, 82, 61, 2, 8, '2026-04-07', '09:00:00', 'Booked'), +(47, 2, 83, 62, 3, 13, '2026-04-09', '10:30:00', 'Booked'), +(48, 3, 84, 63, 1, 6, '2026-04-11', '13:00:00', 'Booked'), +(49, 4, 85, 64, 2, 7, '2026-04-13', '14:30:00', 'Booked'), +(50, 4, 86, 65, 3, 12, '2026-04-15', '16:00:00', 'Booked'), +(51, 4, 87, 66, 1, 5, '2026-04-17', '09:00:00', 'Booked'), +(52, 2, 88, 67, 2, 10, '2026-04-19', '10:30:00', 'Booked'), +(53, 2, 89, 68, 3, 11, '2026-04-21', '13:00:00', 'Booked'), +(54, 4, 90, 69, 1, 4, '2026-04-23', '14:30:00', 'Booked'), +(55, 5, 91, 70, 2, 9, '2026-04-25', '16:00:00', 'Booked'), +(56, 1, 92, 71, 3, 14, '2026-04-27', '09:00:00', 'Booked'), +(57, 2, 93, 72, 1, 3, '2026-04-29', '10:30:00', 'Booked'), +(58, 8, 94, 73, 2, 8, '2026-05-01', '13:00:00', 'Booked'), +(59, 4, 95, 74, 3, 13, '2026-05-03', '14:30:00', 'Booked'), +(60, 5, 96, 75, 1, 6, '2026-05-05', '16:00:00', 'Booked'), +(61, 1, 97, 76, 2, 7, '2026-01-07', '09:00:00', 'Completed'), +(62, 2, 98, 77, 3, 12, '2026-01-09', '10:30:00', 'Completed'), +(63, 3, 99, 78, 1, 5, '2026-01-11', '13:00:00', 'Missed'), +(64, 7, 100, 79, 2, 10, '2026-01-13', '14:30:00', 'Cancelled'), +(65, 2, 37, 16, 1, 3, '2026-01-15', '16:00:00', 'Completed'), +(66, 8, 38, 17, 2, 8, '2026-01-17', '09:00:00', 'Completed'), +(67, 4, 39, 18, 3, 13, '2026-01-19', '10:30:00', 'Completed'), +(68, 8, 40, 19, 1, 6, '2026-01-21', '13:00:00', 'Missed'), +(69, 4, 41, 20, 2, 7, '2026-01-23', '14:30:00', 'Cancelled'), +(70, 8, 42, 21, 3, 12, '2026-01-25', '16:00:00', 'Completed'), +(71, 1, 43, 22, 1, 5, '2026-01-27', '09:00:00', 'Completed'), +(72, 8, 44, 23, 2, 10, '2026-01-29', '10:30:00', 'Completed'), +(73, 4, 45, 24, 3, 11, '2026-01-31', '13:00:00', 'Missed'), +(74, 8, 46, 25, 1, 4, '2026-02-02', '14:30:00', 'Cancelled'), +(75, 6, 47, 26, 2, 9, '2026-02-04', '16:00:00', 'Completed'), +(76, 7, 48, 27, 3, 14, '2026-02-06', '09:00:00', 'Completed'), +(77, 2, 49, 28, 1, 3, '2026-02-08', '10:30:00', 'Completed'), +(78, 4, 50, 29, 2, 8, '2026-02-10', '13:00:00', 'Missed'), +(79, 4, 51, 30, 3, 13, '2026-02-12', '14:30:00', 'Cancelled'), +(80, 5, 52, 31, 1, 6, '2026-02-14', '16:00:00', 'Completed'), +(81, 1, 53, 32, 2, 7, '2026-02-16', '09:00:00', 'Completed'), +(82, 2, 54, 33, 3, 12, '2026-02-18', '10:30:00', 'Completed'), +(83, 3, 55, 34, 2, 9, '2026-02-20', '13:00:00', 'Missed'), +(84, 4, 56, 35, 3, 14, '2026-02-22', '14:30:00', 'Cancelled'), +(85, 5, 57, 36, 1, 3, '2026-02-24', '16:00:00', 'Completed'), +(86, 4, 58, 37, 2, 8, '2026-02-26', '09:00:00', 'Completed'), +(87, 4, 59, 38, 3, 13, '2026-02-28', '10:30:00', 'Completed'), +(88, 2, 60, 39, 1, 6, '2026-03-02', '13:00:00', 'Missed'), +(89, 2, 61, 40, 2, 7, '2026-03-04', '14:30:00', 'Cancelled'), +(90, 5, 62, 41, 3, 12, '2026-03-06', '16:00:00', 'Completed'); INSERT INTO adoption (adoptionId, petId, customerId, employeeId, sourceStoreId, adoptionDate, adoptionStatus) VALUES (1, 37, 16, 3, 1, '2026-01-08', 'Completed'), @@ -1217,116 +1217,116 @@ INSERT INTO cart_item (cartItemId, cartId, prodId, quantity, unitPrice) VALUES (119, 40, 85, 2, 46.43); INSERT INTO sale (saleId, saleDate, totalAmount, paymentMethod, employeeId, storeId, customerId, isRefund, originalSaleId, channel, cartId, couponId, subtotalAmount, couponDiscountAmount, employeeDiscountAmount, pointsEarned) VALUES -(1, '2026-02-02 10:11:00', 37.83, 'Cash', 3, 1, 3, 0, NULL, 'ONLINE', 1, 1, 44.51, 0.00, 6.68, 0), -(2, '2026-02-03 10:22:00', 192.78, 'Card', 4, 1, 4, 0, NULL, 'ONLINE', 2, 2, 252.00, 25.20, 34.02, 0), -(3, '2026-02-04 10:33:00', 363.23, 'Card', 5, 1, 5, 0, NULL, 'ONLINE', 3, 3, 432.33, 5.00, 64.10, 0), -(4, '2026-02-05 10:44:00', 81.29, 'Cash', 6, 1, 6, 0, NULL, 'ONLINE', 4, 7, 108.67, 13.04, 14.34, 0), -(5, '2026-02-06 10:55:00', 435.73, 'Card', 7, 2, 7, 0, NULL, 'ONLINE', 5, 1, 512.62, 0.00, 76.89, 0), -(6, '2026-02-07 11:06:00', 409.56, 'Card', 8, 2, 8, 0, NULL, 'ONLINE', 6, 1, 481.83, 0.00, 72.27, 0), -(7, '2026-02-08 11:17:00', 56.40, 'Cash', 9, 2, 9, 0, NULL, 'ONLINE', 7, 4, 78.06, 11.71, 9.95, 0), -(8, '2026-02-09 11:28:00', 174.20, 'Card', 10, 2, 10, 0, NULL, 'ONLINE', 8, 5, 212.94, 8.00, 30.74, 0), -(9, '2026-02-10 11:39:00', 619.91, 'Card', 11, 3, 11, 0, NULL, 'ONLINE', 9, 1, 729.31, 0.00, 109.40, 0), -(10, '2026-02-11 11:50:00', 169.73, 'Card', 12, 3, 12, 0, NULL, 'ONLINE', 10, 6, 221.87, 22.19, 29.95, 0), -(11, '2026-02-12 12:01:00', 137.86, 'Cash', 13, 3, 13, 0, NULL, 'ONLINE', 11, 1, 162.19, 0.00, 24.33, 0), -(12, '2026-02-13 12:12:00', 453.95, 'Card', 14, 3, 14, 0, NULL, 'ONLINE', 12, 2, 593.40, 59.34, 80.11, 0), -(13, '2026-01-05 09:15:00', 82.72, 'Card', 3, 1, 15, 0, NULL, 'IN_STORE', NULL, 1, 82.72, 0.00, 0.00, 0), -(14, '2026-01-05 09:52:00', 120.43, 'Card', 8, 2, 16, 0, NULL, 'IN_STORE', NULL, 2, 133.81, 13.38, 0.00, 12), -(15, '2026-01-06 10:29:00', 153.21, 'Cash', 13, 3, 17, 0, NULL, 'IN_STORE', NULL, 1, 153.21, 0.00, 0.00, 15), -(16, '2026-01-06 11:06:00', 20.27, 'Card', 6, 1, 18, 0, NULL, 'IN_STORE', NULL, 3, 25.27, 5.00, 0.00, 2), -(17, '2026-01-07 11:43:00', 58.96, 'Cash', 7, 2, 19, 0, NULL, 'IN_STORE', NULL, 1, 58.96, 0.00, 0.00, 5), -(18, '2026-01-07 12:20:00', 124.54, 'Card', 12, 3, 20, 0, NULL, 'IN_STORE', NULL, 7, 141.52, 16.98, 0.00, 12), -(19, '2026-01-08 12:57:00', 118.84, 'Card', 5, 1, 21, 0, NULL, 'IN_STORE', NULL, 1, 118.84, 0.00, 0.00, 11), -(20, '2026-01-08 13:34:00', 167.02, 'Cash', 10, 2, 22, 0, NULL, 'IN_STORE', NULL, 4, 196.50, 29.48, 0.00, 16), -(21, '2026-01-09 14:11:00', 367.69, 'Card', 11, 3, 23, 0, NULL, 'IN_STORE', NULL, 1, 367.69, 0.00, 0.00, 36), -(22, '2026-01-09 14:48:00', 57.62, 'Cash', 4, 1, 24, 0, NULL, 'IN_STORE', NULL, 1, 57.62, 0.00, 0.00, 5), -(23, '2026-01-10 15:25:00', 84.03, 'Card', 9, 2, 25, 0, NULL, 'IN_STORE', NULL, 6, 93.37, 9.34, 0.00, 8), -(24, '2026-01-10 16:02:00', 297.25, 'Card', 14, 3, 26, 0, NULL, 'IN_STORE', NULL, 1, 297.25, 0.00, 0.00, 29), -(25, '2026-01-11 16:39:00', 35.78, 'Cash', 3, 1, 27, 0, NULL, 'IN_STORE', NULL, 2, 35.78, 0.00, 0.00, 3), -(26, '2026-01-11 17:16:00', 136.99, 'Card', 8, 2, 28, 0, NULL, 'IN_STORE', NULL, 1, 136.99, 0.00, 0.00, 13), -(27, '2026-01-12 17:53:00', 300.52, 'Cash', 13, 3, 29, 0, NULL, 'IN_STORE', NULL, 3, 305.52, 5.00, 0.00, 30), -(28, '2026-01-12 18:30:00', 165.99, 'Card', 6, 1, 30, 0, NULL, 'IN_STORE', NULL, 1, 165.99, 0.00, 0.00, 16), -(29, '2026-01-13 19:07:00', 91.28, 'Card', 7, 2, 31, 0, NULL, 'IN_STORE', NULL, 7, 103.73, 12.45, 0.00, 9), -(30, '2026-01-13 19:44:00', 198.88, 'Cash', 12, 3, 32, 0, NULL, 'IN_STORE', NULL, 1, 198.88, 0.00, 0.00, 19), -(31, '2026-01-14 20:21:00', 25.28, 'Card', 5, 1, 33, 0, NULL, 'IN_STORE', NULL, 4, 25.28, 0.00, 0.00, 2), -(32, '2026-01-14 20:58:00', 58.51, 'Cash', 10, 2, 34, 0, NULL, 'IN_STORE', NULL, 1, 58.51, 0.00, 0.00, 5), -(33, '2026-01-15 21:35:00', 314.15, 'Card', 11, 3, 35, 0, NULL, 'IN_STORE', NULL, 1, 314.15, 0.00, 0.00, 31), -(34, '2026-01-15 22:12:00', 61.62, 'Card', 4, 1, 36, 0, NULL, 'IN_STORE', NULL, 6, 68.47, 6.85, 0.00, 6), -(35, '2026-01-16 22:49:00', 49.61, 'Cash', 9, 2, 37, 0, NULL, 'IN_STORE', NULL, 1, 49.61, 0.00, 0.00, 4), -(36, '2026-01-16 23:26:00', 196.32, 'Card', 14, 3, 38, 0, NULL, 'IN_STORE', NULL, 2, 218.13, 21.81, 0.00, 19), -(37, '2026-01-18 00:03:00', 47.92, 'Cash', 3, 1, 39, 0, NULL, 'IN_STORE', NULL, 1, 47.92, 0.00, 0.00, 4), -(38, '2026-01-18 00:40:00', 121.03, 'Card', 8, 2, 40, 0, NULL, 'IN_STORE', NULL, 3, 126.03, 5.00, 0.00, 12), -(39, '2026-01-19 01:17:00', 187.91, 'Card', 13, 3, 41, 0, NULL, 'IN_STORE', NULL, 1, 187.91, 0.00, 0.00, 18), -(40, '2026-01-19 01:54:00', 108.22, 'Cash', 6, 1, 42, 0, NULL, 'IN_STORE', NULL, 7, 122.98, 14.76, 0.00, 10), -(41, '2026-01-20 02:31:00', 67.71, 'Card', 7, 2, 43, 0, NULL, 'IN_STORE', NULL, 1, 67.71, 0.00, 0.00, 6), -(42, '2026-01-20 03:08:00', 114.93, 'Cash', 12, 3, 44, 0, NULL, 'IN_STORE', NULL, 4, 135.21, 20.28, 0.00, 11), -(43, '2026-01-21 03:45:00', 55.38, 'Card', 5, 1, 45, 0, NULL, 'IN_STORE', NULL, 1, 55.38, 0.00, 0.00, 5), -(44, '2026-01-21 04:22:00', 286.34, 'Card', 10, 2, 46, 0, NULL, 'IN_STORE', NULL, 1, 286.34, 0.00, 0.00, 28), -(45, '2026-01-22 04:59:00', 83.62, 'Cash', 11, 3, 47, 0, NULL, 'IN_STORE', NULL, 6, 92.91, 9.29, 0.00, 8), -(46, '2026-01-22 05:36:00', 29.89, 'Card', 4, 1, 48, 0, NULL, 'IN_STORE', NULL, 1, 29.89, 0.00, 0.00, 2), -(47, '2026-01-23 06:13:00', 161.48, 'Cash', 9, 2, 49, 0, NULL, 'IN_STORE', NULL, 2, 179.42, 17.94, 0.00, 16), -(48, '2026-01-23 06:50:00', 210.14, 'Card', 14, 3, 50, 0, NULL, 'IN_STORE', NULL, 1, 210.14, 0.00, 0.00, 21), -(49, '2026-01-24 07:27:00', 73.64, 'Card', 3, 1, 51, 0, NULL, 'IN_STORE', NULL, 3, 78.64, 5.00, 0.00, 7), -(50, '2026-01-24 08:04:00', 179.28, 'Cash', 8, 2, 52, 0, NULL, 'IN_STORE', NULL, 1, 179.28, 0.00, 0.00, 17), -(51, '2026-01-25 08:41:00', 101.67, 'Card', 13, 3, 53, 0, NULL, 'IN_STORE', NULL, 7, 115.53, 13.86, 0.00, 10), -(52, '2026-01-25 09:18:00', 21.31, 'Cash', 6, 1, 54, 0, NULL, 'IN_STORE', NULL, 1, 21.31, 0.00, 0.00, 2), -(53, '2026-01-26 09:55:00', 79.57, 'Card', 7, 2, 55, 0, NULL, 'IN_STORE', NULL, 4, 93.61, 14.04, 0.00, 7), -(54, '2026-01-26 10:32:00', 156.49, 'Card', 12, 3, 56, 0, NULL, 'IN_STORE', NULL, 1, 156.49, 0.00, 0.00, 15), -(55, '2026-01-27 11:09:00', 28.32, 'Cash', 5, 1, 57, 0, NULL, 'IN_STORE', NULL, 1, 28.32, 0.00, 0.00, 2), -(56, '2026-01-27 11:46:00', 175.47, 'Card', 10, 2, 58, 0, NULL, 'IN_STORE', NULL, 6, 194.97, 19.50, 0.00, 17), -(57, '2026-01-28 12:23:00', 150.60, 'Cash', 11, 3, 59, 0, NULL, 'IN_STORE', NULL, 1, 150.60, 0.00, 0.00, 15), -(58, '2026-01-28 13:00:00', 45.73, 'Card', 4, 1, 60, 0, NULL, 'IN_STORE', NULL, 2, 45.73, 0.00, 0.00, 4), -(59, '2026-01-29 13:37:00', 132.93, 'Card', 9, 2, 61, 0, NULL, 'IN_STORE', NULL, 1, 132.93, 0.00, 0.00, 13), -(60, '2026-01-29 14:14:00', 261.49, 'Cash', 14, 3, 62, 0, NULL, 'IN_STORE', NULL, 3, 266.49, 5.00, 0.00, 26), -(61, '2026-01-30 14:51:00', 57.02, 'Card', 3, 1, 63, 0, NULL, 'IN_STORE', NULL, 1, 57.02, 0.00, 0.00, 5), -(62, '2026-01-30 15:28:00', 90.64, 'Cash', 8, 2, 64, 0, NULL, 'IN_STORE', NULL, 7, 103.00, 12.36, 0.00, 9), -(63, '2026-01-31 16:05:00', 228.91, 'Card', 13, 3, 65, 0, NULL, 'IN_STORE', NULL, 1, 228.91, 0.00, 0.00, 22), -(64, '2026-01-31 16:42:00', 50.36, 'Card', 6, 1, 66, 0, NULL, 'IN_STORE', NULL, 4, 50.36, 0.00, 0.00, 5), -(65, '2026-02-01 17:19:00', 53.77, 'Cash', 7, 2, 67, 0, NULL, 'IN_STORE', NULL, 1, 53.77, 0.00, 0.00, 5), -(66, '2026-02-01 17:56:00', 172.92, 'Card', 12, 3, 68, 0, NULL, 'IN_STORE', NULL, 1, 172.92, 0.00, 0.00, 17), -(67, '2026-02-02 18:33:00', 154.78, 'Cash', 5, 1, 69, 0, NULL, 'IN_STORE', NULL, 6, 171.98, 17.20, 0.00, 15), -(68, '2026-02-02 19:10:00', 198.21, 'Card', 10, 2, 70, 0, NULL, 'IN_STORE', NULL, 1, 198.21, 0.00, 0.00, 19), -(69, '2026-02-03 19:47:00', 134.85, 'Card', 11, 3, 71, 0, NULL, 'IN_STORE', NULL, 2, 149.83, 14.98, 0.00, 13), -(70, '2026-02-03 20:24:00', 74.88, 'Cash', 4, 1, 72, 0, NULL, 'IN_STORE', NULL, 1, 74.88, 0.00, 0.00, 7), -(71, '2026-02-04 21:01:00', 27.77, 'Card', 9, 2, 73, 0, NULL, 'IN_STORE', NULL, 3, 32.77, 5.00, 0.00, 2), -(72, '2026-02-04 21:38:00', 105.22, 'Cash', 14, 3, 74, 0, NULL, 'IN_STORE', NULL, 1, 105.22, 0.00, 0.00, 10), -(73, '2026-02-05 22:15:00', 72.79, 'Card', 3, 1, 75, 0, NULL, 'IN_STORE', NULL, 7, 82.72, 9.93, 0.00, 7), -(74, '2026-02-05 22:52:00', 133.81, 'Card', 8, 2, 76, 0, NULL, 'IN_STORE', NULL, 1, 133.81, 0.00, 0.00, 13), -(75, '2026-02-06 23:29:00', 130.23, 'Cash', 13, 3, 77, 0, NULL, 'IN_STORE', NULL, 4, 153.21, 22.98, 0.00, 13), -(76, '2026-02-07 00:06:00', 25.27, 'Card', 6, 1, 78, 0, NULL, 'IN_STORE', NULL, 1, 25.27, 0.00, 0.00, 2), -(77, '2026-02-08 00:43:00', 58.96, 'Cash', 7, 2, 79, 0, NULL, 'IN_STORE', NULL, 1, 58.96, 0.00, 0.00, 5), -(78, '2026-02-08 01:20:00', 127.37, 'Card', 12, 3, 80, 0, NULL, 'IN_STORE', NULL, 6, 141.52, 14.15, 0.00, 12), -(79, '2026-02-09 01:57:00', 118.84, 'Card', 5, 1, 81, 0, NULL, 'IN_STORE', NULL, 1, 118.84, 0.00, 0.00, 11), -(80, '2026-02-09 02:34:00', 176.85, 'Cash', 10, 2, 82, 0, NULL, 'IN_STORE', NULL, 2, 196.50, 19.65, 0.00, 17), -(81, '2026-02-10 03:11:00', 367.69, 'Card', 11, 3, 83, 0, NULL, 'IN_STORE', NULL, 1, 367.69, 0.00, 0.00, 36), -(82, '2026-02-10 03:48:00', 52.62, 'Cash', 4, 1, 84, 0, NULL, 'IN_STORE', NULL, 3, 57.62, 5.00, 0.00, 5), -(83, '2026-02-11 04:25:00', 93.37, 'Card', 9, 2, 85, 0, NULL, 'IN_STORE', NULL, 1, 93.37, 0.00, 0.00, 9), -(84, '2026-02-11 05:02:00', 261.58, 'Card', 14, 3, 86, 0, NULL, 'IN_STORE', NULL, 7, 297.25, 35.67, 0.00, 26), -(85, '2026-02-12 05:39:00', 35.78, 'Cash', 3, 1, 87, 0, NULL, 'IN_STORE', NULL, 1, 35.78, 0.00, 0.00, 3), -(86, '2026-02-12 06:16:00', 116.44, 'Card', 8, 2, 88, 0, NULL, 'IN_STORE', NULL, 4, 136.99, 20.55, 0.00, 11), -(87, '2026-02-13 06:53:00', 305.52, 'Cash', 13, 3, 89, 0, NULL, 'IN_STORE', NULL, 1, 305.52, 0.00, 0.00, 30), -(88, '2026-02-13 07:30:00', 165.99, 'Card', 6, 1, 90, 0, NULL, 'IN_STORE', NULL, 1, 165.99, 0.00, 0.00, 16), -(89, '2026-02-14 08:07:00', 93.36, 'Card', 7, 2, 91, 0, NULL, 'IN_STORE', NULL, 6, 103.73, 10.37, 0.00, 9), -(90, '2026-02-14 08:44:00', 198.88, 'Cash', 12, 3, 92, 0, NULL, 'IN_STORE', NULL, 1, 198.88, 0.00, 0.00, 19), -(91, '2026-02-15 09:21:00', 25.28, 'Card', 5, 1, 93, 0, NULL, 'IN_STORE', NULL, 2, 25.28, 0.00, 0.00, 2), -(92, '2026-02-15 09:58:00', 58.51, 'Cash', 10, 2, 94, 0, NULL, 'IN_STORE', NULL, 1, 58.51, 0.00, 0.00, 5), -(93, '2026-02-16 10:35:00', 309.15, 'Card', 11, 3, 95, 0, NULL, 'IN_STORE', NULL, 3, 314.15, 5.00, 0.00, 30), -(94, '2026-02-16 11:12:00', 68.47, 'Card', 4, 1, 96, 0, NULL, 'IN_STORE', NULL, 1, 68.47, 0.00, 0.00, 6), -(95, '2026-02-17 11:49:00', 49.61, 'Cash', 9, 2, 97, 0, NULL, 'IN_STORE', NULL, 7, 49.61, 0.00, 0.00, 4), -(96, '2026-02-13 10:11:00', 34.80, 'Card', 3, 1, 3, 1, 1, 'IN_STORE', NULL, 1, 34.80, 0.00, 0.00, 0), -(97, '2026-02-15 10:22:00', 88.32, 'Card', 4, 1, 4, 1, 2, 'IN_STORE', NULL, 1, 88.32, 0.00, 0.00, 0), -(98, '2026-02-17 10:33:00', 49.05, 'Card', 5, 1, 5, 1, 3, 'IN_STORE', NULL, 1, 49.05, 0.00, 0.00, 0), -(99, '2026-02-19 10:44:00', 15.25, 'Card', 6, 1, 6, 1, 4, 'IN_STORE', NULL, 1, 15.25, 0.00, 0.00, 0), -(100, '2026-02-21 10:55:00', 181.42, 'Card', 7, 2, 7, 1, 5, 'IN_STORE', NULL, 1, 181.42, 0.00, 0.00, 0), -(101, '2026-02-23 11:06:00', 130.82, 'Card', 8, 2, 8, 1, 6, 'IN_STORE', NULL, 1, 130.82, 0.00, 0.00, 0), -(102, '2026-02-25 11:17:00', 50.37, 'Card', 9, 2, 9, 1, 7, 'IN_STORE', NULL, 1, 50.37, 0.00, 0.00, 0), -(103, '2026-02-27 11:28:00', 74.13, 'Card', 10, 2, 10, 1, 8, 'IN_STORE', NULL, 1, 74.13, 0.00, 0.00, 0), -(104, '2026-03-01 11:39:00', 68.78, 'Card', 11, 3, 11, 1, 9, 'IN_STORE', NULL, 1, 68.78, 0.00, 0.00, 0), -(105, '2026-03-03 11:50:00', 17.89, 'Card', 12, 3, 12, 1, 10, 'IN_STORE', NULL, 1, 17.89, 0.00, 0.00, 0), -(106, '2026-03-05 12:01:00', 63.09, 'Card', 13, 3, 13, 1, 11, 'IN_STORE', NULL, 1, 63.09, 0.00, 0.00, 0), -(107, '2026-03-07 12:12:00', 149.99, 'Card', 14, 3, 14, 1, 12, 'IN_STORE', NULL, 1, 149.99, 0.00, 0.00, 0), -(108, '2026-01-28 09:15:00', 41.36, 'Card', 3, 1, 15, 1, 13, 'IN_STORE', NULL, 1, 41.36, 0.00, 0.00, 0), -(109, '2026-01-29 09:52:00', 68.47, 'Card', 8, 2, 16, 1, 14, 'IN_STORE', NULL, 1, 68.47, 0.00, 0.00, 0), -(110, '2026-01-31 10:29:00', 14.16, 'Card', 13, 3, 17, 1, 15, 'IN_STORE', NULL, 1, 14.16, 0.00, 0.00, 0); +(1, '2026-02-02 10:11:00', 37.83, 'Cash', 3, 1, 3, 0, NULL, 'Online', 1, 1, 44.51, 0.00, 6.68, 0), +(2, '2026-02-03 10:22:00', 192.78, 'Card', 4, 1, 4, 0, NULL, 'Online', 2, 2, 252.00, 25.20, 34.02, 0), +(3, '2026-02-04 10:33:00', 363.23, 'Card', 5, 1, 5, 0, NULL, 'Online', 3, 3, 432.33, 5.00, 64.10, 0), +(4, '2026-02-05 10:44:00', 81.29, 'Cash', 6, 1, 6, 0, NULL, 'Online', 4, 7, 108.67, 13.04, 14.34, 0), +(5, '2026-02-06 10:55:00', 435.73, 'Card', 7, 2, 7, 0, NULL, 'Online', 5, 1, 512.62, 0.00, 76.89, 0), +(6, '2026-02-07 11:06:00', 409.56, 'Card', 8, 2, 8, 0, NULL, 'Online', 6, 1, 481.83, 0.00, 72.27, 0), +(7, '2026-02-08 11:17:00', 56.40, 'Cash', 9, 2, 9, 0, NULL, 'Online', 7, 4, 78.06, 11.71, 9.95, 0), +(8, '2026-02-09 11:28:00', 174.20, 'Card', 10, 2, 10, 0, NULL, 'Online', 8, 5, 212.94, 8.00, 30.74, 0), +(9, '2026-02-10 11:39:00', 619.91, 'Card', 11, 3, 11, 0, NULL, 'Online', 9, 1, 729.31, 0.00, 109.40, 0), +(10, '2026-02-11 11:50:00', 169.73, 'Card', 12, 3, 12, 0, NULL, 'Online', 10, 6, 221.87, 22.19, 29.95, 0), +(11, '2026-02-12 12:01:00', 137.86, 'Cash', 13, 3, 13, 0, NULL, 'Online', 11, 1, 162.19, 0.00, 24.33, 0), +(12, '2026-02-13 12:12:00', 453.95, 'Card', 14, 3, 14, 0, NULL, 'Online', 12, 2, 593.40, 59.34, 80.11, 0), +(13, '2026-01-05 09:15:00', 82.72, 'Card', 3, 1, 15, 0, NULL, 'In Store', NULL, 1, 82.72, 0.00, 0.00, 0), +(14, '2026-01-05 09:52:00', 120.43, 'Card', 8, 2, 16, 0, NULL, 'In Store', NULL, 2, 133.81, 13.38, 0.00, 12), +(15, '2026-01-06 10:29:00', 153.21, 'Cash', 13, 3, 17, 0, NULL, 'In Store', NULL, 1, 153.21, 0.00, 0.00, 15), +(16, '2026-01-06 11:06:00', 20.27, 'Card', 6, 1, 18, 0, NULL, 'In Store', NULL, 3, 25.27, 5.00, 0.00, 2), +(17, '2026-01-07 11:43:00', 58.96, 'Cash', 7, 2, 19, 0, NULL, 'In Store', NULL, 1, 58.96, 0.00, 0.00, 5), +(18, '2026-01-07 12:20:00', 124.54, 'Card', 12, 3, 20, 0, NULL, 'In Store', NULL, 7, 141.52, 16.98, 0.00, 12), +(19, '2026-01-08 12:57:00', 118.84, 'Card', 5, 1, 21, 0, NULL, 'In Store', NULL, 1, 118.84, 0.00, 0.00, 11), +(20, '2026-01-08 13:34:00', 167.02, 'Cash', 10, 2, 22, 0, NULL, 'In Store', NULL, 4, 196.50, 29.48, 0.00, 16), +(21, '2026-01-09 14:11:00', 367.69, 'Card', 11, 3, 23, 0, NULL, 'In Store', NULL, 1, 367.69, 0.00, 0.00, 36), +(22, '2026-01-09 14:48:00', 57.62, 'Cash', 4, 1, 24, 0, NULL, 'In Store', NULL, 1, 57.62, 0.00, 0.00, 5), +(23, '2026-01-10 15:25:00', 84.03, 'Card', 9, 2, 25, 0, NULL, 'In Store', NULL, 6, 93.37, 9.34, 0.00, 8), +(24, '2026-01-10 16:02:00', 297.25, 'Card', 14, 3, 26, 0, NULL, 'In Store', NULL, 1, 297.25, 0.00, 0.00, 29), +(25, '2026-01-11 16:39:00', 35.78, 'Cash', 3, 1, 27, 0, NULL, 'In Store', NULL, 2, 35.78, 0.00, 0.00, 3), +(26, '2026-01-11 17:16:00', 136.99, 'Card', 8, 2, 28, 0, NULL, 'In Store', NULL, 1, 136.99, 0.00, 0.00, 13), +(27, '2026-01-12 17:53:00', 300.52, 'Cash', 13, 3, 29, 0, NULL, 'In Store', NULL, 3, 305.52, 5.00, 0.00, 30), +(28, '2026-01-12 18:30:00', 165.99, 'Card', 6, 1, 30, 0, NULL, 'In Store', NULL, 1, 165.99, 0.00, 0.00, 16), +(29, '2026-01-13 19:07:00', 91.28, 'Card', 7, 2, 31, 0, NULL, 'In Store', NULL, 7, 103.73, 12.45, 0.00, 9), +(30, '2026-01-13 19:44:00', 198.88, 'Cash', 12, 3, 32, 0, NULL, 'In Store', NULL, 1, 198.88, 0.00, 0.00, 19), +(31, '2026-01-14 20:21:00', 25.28, 'Card', 5, 1, 33, 0, NULL, 'In Store', NULL, 4, 25.28, 0.00, 0.00, 2), +(32, '2026-01-14 20:58:00', 58.51, 'Cash', 10, 2, 34, 0, NULL, 'In Store', NULL, 1, 58.51, 0.00, 0.00, 5), +(33, '2026-01-15 21:35:00', 314.15, 'Card', 11, 3, 35, 0, NULL, 'In Store', NULL, 1, 314.15, 0.00, 0.00, 31), +(34, '2026-01-15 22:12:00', 61.62, 'Card', 4, 1, 36, 0, NULL, 'In Store', NULL, 6, 68.47, 6.85, 0.00, 6), +(35, '2026-01-16 22:49:00', 49.61, 'Cash', 9, 2, 37, 0, NULL, 'In Store', NULL, 1, 49.61, 0.00, 0.00, 4), +(36, '2026-01-16 23:26:00', 196.32, 'Card', 14, 3, 38, 0, NULL, 'In Store', NULL, 2, 218.13, 21.81, 0.00, 19), +(37, '2026-01-18 00:03:00', 47.92, 'Cash', 3, 1, 39, 0, NULL, 'In Store', NULL, 1, 47.92, 0.00, 0.00, 4), +(38, '2026-01-18 00:40:00', 121.03, 'Card', 8, 2, 40, 0, NULL, 'In Store', NULL, 3, 126.03, 5.00, 0.00, 12), +(39, '2026-01-19 01:17:00', 187.91, 'Card', 13, 3, 41, 0, NULL, 'In Store', NULL, 1, 187.91, 0.00, 0.00, 18), +(40, '2026-01-19 01:54:00', 108.22, 'Cash', 6, 1, 42, 0, NULL, 'In Store', NULL, 7, 122.98, 14.76, 0.00, 10), +(41, '2026-01-20 02:31:00', 67.71, 'Card', 7, 2, 43, 0, NULL, 'In Store', NULL, 1, 67.71, 0.00, 0.00, 6), +(42, '2026-01-20 03:08:00', 114.93, 'Cash', 12, 3, 44, 0, NULL, 'In Store', NULL, 4, 135.21, 20.28, 0.00, 11), +(43, '2026-01-21 03:45:00', 55.38, 'Card', 5, 1, 45, 0, NULL, 'In Store', NULL, 1, 55.38, 0.00, 0.00, 5), +(44, '2026-01-21 04:22:00', 286.34, 'Card', 10, 2, 46, 0, NULL, 'In Store', NULL, 1, 286.34, 0.00, 0.00, 28), +(45, '2026-01-22 04:59:00', 83.62, 'Cash', 11, 3, 47, 0, NULL, 'In Store', NULL, 6, 92.91, 9.29, 0.00, 8), +(46, '2026-01-22 05:36:00', 29.89, 'Card', 4, 1, 48, 0, NULL, 'In Store', NULL, 1, 29.89, 0.00, 0.00, 2), +(47, '2026-01-23 06:13:00', 161.48, 'Cash', 9, 2, 49, 0, NULL, 'In Store', NULL, 2, 179.42, 17.94, 0.00, 16), +(48, '2026-01-23 06:50:00', 210.14, 'Card', 14, 3, 50, 0, NULL, 'In Store', NULL, 1, 210.14, 0.00, 0.00, 21), +(49, '2026-01-24 07:27:00', 73.64, 'Card', 3, 1, 51, 0, NULL, 'In Store', NULL, 3, 78.64, 5.00, 0.00, 7), +(50, '2026-01-24 08:04:00', 179.28, 'Cash', 8, 2, 52, 0, NULL, 'In Store', NULL, 1, 179.28, 0.00, 0.00, 17), +(51, '2026-01-25 08:41:00', 101.67, 'Card', 13, 3, 53, 0, NULL, 'In Store', NULL, 7, 115.53, 13.86, 0.00, 10), +(52, '2026-01-25 09:18:00', 21.31, 'Cash', 6, 1, 54, 0, NULL, 'In Store', NULL, 1, 21.31, 0.00, 0.00, 2), +(53, '2026-01-26 09:55:00', 79.57, 'Card', 7, 2, 55, 0, NULL, 'In Store', NULL, 4, 93.61, 14.04, 0.00, 7), +(54, '2026-01-26 10:32:00', 156.49, 'Card', 12, 3, 56, 0, NULL, 'In Store', NULL, 1, 156.49, 0.00, 0.00, 15), +(55, '2026-01-27 11:09:00', 28.32, 'Cash', 5, 1, 57, 0, NULL, 'In Store', NULL, 1, 28.32, 0.00, 0.00, 2), +(56, '2026-01-27 11:46:00', 175.47, 'Card', 10, 2, 58, 0, NULL, 'In Store', NULL, 6, 194.97, 19.50, 0.00, 17), +(57, '2026-01-28 12:23:00', 150.60, 'Cash', 11, 3, 59, 0, NULL, 'In Store', NULL, 1, 150.60, 0.00, 0.00, 15), +(58, '2026-01-28 13:00:00', 45.73, 'Card', 4, 1, 60, 0, NULL, 'In Store', NULL, 2, 45.73, 0.00, 0.00, 4), +(59, '2026-01-29 13:37:00', 132.93, 'Card', 9, 2, 61, 0, NULL, 'In Store', NULL, 1, 132.93, 0.00, 0.00, 13), +(60, '2026-01-29 14:14:00', 261.49, 'Cash', 14, 3, 62, 0, NULL, 'In Store', NULL, 3, 266.49, 5.00, 0.00, 26), +(61, '2026-01-30 14:51:00', 57.02, 'Card', 3, 1, 63, 0, NULL, 'In Store', NULL, 1, 57.02, 0.00, 0.00, 5), +(62, '2026-01-30 15:28:00', 90.64, 'Cash', 8, 2, 64, 0, NULL, 'In Store', NULL, 7, 103.00, 12.36, 0.00, 9), +(63, '2026-01-31 16:05:00', 228.91, 'Card', 13, 3, 65, 0, NULL, 'In Store', NULL, 1, 228.91, 0.00, 0.00, 22), +(64, '2026-01-31 16:42:00', 50.36, 'Card', 6, 1, 66, 0, NULL, 'In Store', NULL, 4, 50.36, 0.00, 0.00, 5), +(65, '2026-02-01 17:19:00', 53.77, 'Cash', 7, 2, 67, 0, NULL, 'In Store', NULL, 1, 53.77, 0.00, 0.00, 5), +(66, '2026-02-01 17:56:00', 172.92, 'Card', 12, 3, 68, 0, NULL, 'In Store', NULL, 1, 172.92, 0.00, 0.00, 17), +(67, '2026-02-02 18:33:00', 154.78, 'Cash', 5, 1, 69, 0, NULL, 'In Store', NULL, 6, 171.98, 17.20, 0.00, 15), +(68, '2026-02-02 19:10:00', 198.21, 'Card', 10, 2, 70, 0, NULL, 'In Store', NULL, 1, 198.21, 0.00, 0.00, 19), +(69, '2026-02-03 19:47:00', 134.85, 'Card', 11, 3, 71, 0, NULL, 'In Store', NULL, 2, 149.83, 14.98, 0.00, 13), +(70, '2026-02-03 20:24:00', 74.88, 'Cash', 4, 1, 72, 0, NULL, 'In Store', NULL, 1, 74.88, 0.00, 0.00, 7), +(71, '2026-02-04 21:01:00', 27.77, 'Card', 9, 2, 73, 0, NULL, 'In Store', NULL, 3, 32.77, 5.00, 0.00, 2), +(72, '2026-02-04 21:38:00', 105.22, 'Cash', 14, 3, 74, 0, NULL, 'In Store', NULL, 1, 105.22, 0.00, 0.00, 10), +(73, '2026-02-05 22:15:00', 72.79, 'Card', 3, 1, 75, 0, NULL, 'In Store', NULL, 7, 82.72, 9.93, 0.00, 7), +(74, '2026-02-05 22:52:00', 133.81, 'Card', 8, 2, 76, 0, NULL, 'In Store', NULL, 1, 133.81, 0.00, 0.00, 13), +(75, '2026-02-06 23:29:00', 130.23, 'Cash', 13, 3, 77, 0, NULL, 'In Store', NULL, 4, 153.21, 22.98, 0.00, 13), +(76, '2026-02-07 00:06:00', 25.27, 'Card', 6, 1, 78, 0, NULL, 'In Store', NULL, 1, 25.27, 0.00, 0.00, 2), +(77, '2026-02-08 00:43:00', 58.96, 'Cash', 7, 2, 79, 0, NULL, 'In Store', NULL, 1, 58.96, 0.00, 0.00, 5), +(78, '2026-02-08 01:20:00', 127.37, 'Card', 12, 3, 80, 0, NULL, 'In Store', NULL, 6, 141.52, 14.15, 0.00, 12), +(79, '2026-02-09 01:57:00', 118.84, 'Card', 5, 1, 81, 0, NULL, 'In Store', NULL, 1, 118.84, 0.00, 0.00, 11), +(80, '2026-02-09 02:34:00', 176.85, 'Cash', 10, 2, 82, 0, NULL, 'In Store', NULL, 2, 196.50, 19.65, 0.00, 17), +(81, '2026-02-10 03:11:00', 367.69, 'Card', 11, 3, 83, 0, NULL, 'In Store', NULL, 1, 367.69, 0.00, 0.00, 36), +(82, '2026-02-10 03:48:00', 52.62, 'Cash', 4, 1, 84, 0, NULL, 'In Store', NULL, 3, 57.62, 5.00, 0.00, 5), +(83, '2026-02-11 04:25:00', 93.37, 'Card', 9, 2, 85, 0, NULL, 'In Store', NULL, 1, 93.37, 0.00, 0.00, 9), +(84, '2026-02-11 05:02:00', 261.58, 'Card', 14, 3, 86, 0, NULL, 'In Store', NULL, 7, 297.25, 35.67, 0.00, 26), +(85, '2026-02-12 05:39:00', 35.78, 'Cash', 3, 1, 87, 0, NULL, 'In Store', NULL, 1, 35.78, 0.00, 0.00, 3), +(86, '2026-02-12 06:16:00', 116.44, 'Card', 8, 2, 88, 0, NULL, 'In Store', NULL, 4, 136.99, 20.55, 0.00, 11), +(87, '2026-02-13 06:53:00', 305.52, 'Cash', 13, 3, 89, 0, NULL, 'In Store', NULL, 1, 305.52, 0.00, 0.00, 30), +(88, '2026-02-13 07:30:00', 165.99, 'Card', 6, 1, 90, 0, NULL, 'In Store', NULL, 1, 165.99, 0.00, 0.00, 16), +(89, '2026-02-14 08:07:00', 93.36, 'Card', 7, 2, 91, 0, NULL, 'In Store', NULL, 6, 103.73, 10.37, 0.00, 9), +(90, '2026-02-14 08:44:00', 198.88, 'Cash', 12, 3, 92, 0, NULL, 'In Store', NULL, 1, 198.88, 0.00, 0.00, 19), +(91, '2026-02-15 09:21:00', 25.28, 'Card', 5, 1, 93, 0, NULL, 'In Store', NULL, 2, 25.28, 0.00, 0.00, 2), +(92, '2026-02-15 09:58:00', 58.51, 'Cash', 10, 2, 94, 0, NULL, 'In Store', NULL, 1, 58.51, 0.00, 0.00, 5), +(93, '2026-02-16 10:35:00', 309.15, 'Card', 11, 3, 95, 0, NULL, 'In Store', NULL, 3, 314.15, 5.00, 0.00, 30), +(94, '2026-02-16 11:12:00', 68.47, 'Card', 4, 1, 96, 0, NULL, 'In Store', NULL, 1, 68.47, 0.00, 0.00, 6), +(95, '2026-02-17 11:49:00', 49.61, 'Cash', 9, 2, 97, 0, NULL, 'In Store', NULL, 7, 49.61, 0.00, 0.00, 4), +(96, '2026-02-13 10:11:00', 34.80, 'Card', 3, 1, 3, 1, 1, 'In Store', NULL, 1, 34.80, 0.00, 0.00, 0), +(97, '2026-02-15 10:22:00', 88.32, 'Card', 4, 1, 4, 1, 2, 'In Store', NULL, 1, 88.32, 0.00, 0.00, 0), +(98, '2026-02-17 10:33:00', 49.05, 'Card', 5, 1, 5, 1, 3, 'In Store', NULL, 1, 49.05, 0.00, 0.00, 0), +(99, '2026-02-19 10:44:00', 15.25, 'Card', 6, 1, 6, 1, 4, 'In Store', NULL, 1, 15.25, 0.00, 0.00, 0), +(100, '2026-02-21 10:55:00', 181.42, 'Card', 7, 2, 7, 1, 5, 'In Store', NULL, 1, 181.42, 0.00, 0.00, 0), +(101, '2026-02-23 11:06:00', 130.82, 'Card', 8, 2, 8, 1, 6, 'In Store', NULL, 1, 130.82, 0.00, 0.00, 0), +(102, '2026-02-25 11:17:00', 50.37, 'Card', 9, 2, 9, 1, 7, 'In Store', NULL, 1, 50.37, 0.00, 0.00, 0), +(103, '2026-02-27 11:28:00', 74.13, 'Card', 10, 2, 10, 1, 8, 'In Store', NULL, 1, 74.13, 0.00, 0.00, 0), +(104, '2026-03-01 11:39:00', 68.78, 'Card', 11, 3, 11, 1, 9, 'In Store', NULL, 1, 68.78, 0.00, 0.00, 0), +(105, '2026-03-03 11:50:00', 17.89, 'Card', 12, 3, 12, 1, 10, 'In Store', NULL, 1, 17.89, 0.00, 0.00, 0), +(106, '2026-03-05 12:01:00', 63.09, 'Card', 13, 3, 13, 1, 11, 'In Store', NULL, 1, 63.09, 0.00, 0.00, 0), +(107, '2026-03-07 12:12:00', 149.99, 'Card', 14, 3, 14, 1, 12, 'In Store', NULL, 1, 149.99, 0.00, 0.00, 0), +(108, '2026-01-28 09:15:00', 41.36, 'Card', 3, 1, 15, 1, 13, 'In Store', NULL, 1, 41.36, 0.00, 0.00, 0), +(109, '2026-01-29 09:52:00', 68.47, 'Card', 8, 2, 16, 1, 14, 'In Store', NULL, 1, 68.47, 0.00, 0.00, 0), +(110, '2026-01-31 10:29:00', 14.16, 'Card', 13, 3, 17, 1, 15, 'In Store', NULL, 1, 14.16, 0.00, 0.00, 0); INSERT INTO saleItem (saleItemId, saleId, prodId, quantity, unitPrice) VALUES (1, 1, 1, 1, 25.09), @@ -2259,52 +2259,52 @@ SET imageUrl = REPLACE(imageUrl, 'https://images.petshop.local/stores/', '/store WHERE imageUrl LIKE 'https://images.petshop.local/stores/%'; INSERT IGNORE INTO appointment (appointmentId, serviceId, petId, customerId, storeId, employeeId, appointmentDate, appointmentTime, appointmentStatus) VALUES -(91, 7, 37, 16, 1, 3, '2026-03-08', '09:00:00', 'COMPLETED'), -(92, 8, 38, 17, 2, 8, '2026-03-10', '10:30:00', 'COMPLETED'), -(93, 8, 39, 18, 3, 13, '2026-03-12', '13:00:00', 'MISSED'), -(94, 4, 40, 19, 1, 6, '2026-03-14', '14:30:00', 'COMPLETED'), -(95, 5, 41, 20, 2, 7, '2026-03-16', '09:00:00', 'COMPLETED'), -(96, 8, 42, 21, 3, 12, '2026-03-18', '10:30:00', 'COMPLETED'), -(97, 2, 43, 22, 1, 5, '2026-03-20', '13:00:00', 'CANCELLED'), -(98, 8, 44, 23, 2, 10, '2026-03-22', '14:30:00', 'COMPLETED'), -(99, 8, 45, 24, 3, 11, '2026-03-24', '09:00:00', 'COMPLETED'), -(100, 8, 46, 25, 1, 4, '2026-03-26', '10:30:00', 'MISSED'), -(101, 6, 47, 26, 2, 9, '2026-03-28', '13:00:00', 'COMPLETED'), -(102, 4, 48, 27, 3, 14, '2026-03-30', '14:30:00', 'COMPLETED'), -(103, 7, 49, 28, 1, 3, '2026-04-01', '09:00:00', 'COMPLETED'), -(104, 6, 50, 29, 2, 8, '2026-04-03', '10:30:00', 'COMPLETED'), -(105, 1, 51, 30, 3, 13, '2026-04-05', '13:00:00', 'MISSED'), -(106, 4, 52, 31, 1, 6, '2026-04-07', '14:30:00', 'COMPLETED'), -(107, 1, 53, 32, 2, 7, '2026-04-09', '09:00:00', 'COMPLETED'), -(108, 2, 54, 33, 3, 12, '2026-04-11', '10:30:00', 'CANCELLED'), -(109, 3, 55, 34, 1, 5, '2026-04-13', '13:00:00', 'COMPLETED'), -(110, 4, 56, 35, 2, 10, '2026-04-15', '10:00:00', 'SCHEDULED'), -(111, 5, 57, 36, 3, 11, '2026-04-16', '14:00:00', 'SCHEDULED'); +(91, 7, 37, 16, 1, 3, '2026-03-08', '09:00:00', 'Completed'), +(92, 8, 38, 17, 2, 8, '2026-03-10', '10:30:00', 'Completed'), +(93, 8, 39, 18, 3, 13, '2026-03-12', '13:00:00', 'Missed'), +(94, 4, 40, 19, 1, 6, '2026-03-14', '14:30:00', 'Completed'), +(95, 5, 41, 20, 2, 7, '2026-03-16', '09:00:00', 'Completed'), +(96, 8, 42, 21, 3, 12, '2026-03-18', '10:30:00', 'Completed'), +(97, 2, 43, 22, 1, 5, '2026-03-20', '13:00:00', 'Cancelled'), +(98, 8, 44, 23, 2, 10, '2026-03-22', '14:30:00', 'Completed'), +(99, 8, 45, 24, 3, 11, '2026-03-24', '09:00:00', 'Completed'), +(100, 8, 46, 25, 1, 4, '2026-03-26', '10:30:00', 'Missed'), +(101, 6, 47, 26, 2, 9, '2026-03-28', '13:00:00', 'Completed'), +(102, 4, 48, 27, 3, 14, '2026-03-30', '14:30:00', 'Completed'), +(103, 7, 49, 28, 1, 3, '2026-04-01', '09:00:00', 'Completed'), +(104, 6, 50, 29, 2, 8, '2026-04-03', '10:30:00', 'Completed'), +(105, 1, 51, 30, 3, 13, '2026-04-05', '13:00:00', 'Missed'), +(106, 4, 52, 31, 1, 6, '2026-04-07', '14:30:00', 'Completed'), +(107, 1, 53, 32, 2, 7, '2026-04-09', '09:00:00', 'Completed'), +(108, 2, 54, 33, 3, 12, '2026-04-11', '10:30:00', 'Cancelled'), +(109, 3, 55, 34, 1, 5, '2026-04-13', '13:00:00', 'Completed'), +(110, 4, 56, 35, 2, 10, '2026-04-15', '10:00:00', 'Scheduled'), +(111, 5, 57, 36, 3, 11, '2026-04-16', '14:00:00', 'Scheduled'); INSERT IGNORE INTO sale (saleId, saleDate, totalAmount, paymentMethod, employeeId, storeId, customerId, isRefund, originalSaleId, channel, cartId, couponId, subtotalAmount, couponDiscountAmount, employeeDiscountAmount, pointsEarned) VALUES -(111, '2026-03-08 09:15:00', 87.50, 'Cash', 3, 1, 3, 0, NULL, 'IN_STORE', NULL, NULL, 87.50, 0.00, 0.00, 8), -(112, '2026-03-09 10:22:00', 145.20, 'Card', 8, 2, 4, 0, NULL, 'IN_STORE', NULL, NULL, 145.20, 0.00, 0.00, 14), -(113, '2026-03-10 11:33:00', 63.75, 'Cash', 13, 3, 5, 0, NULL, 'IN_STORE', NULL, NULL, 63.75, 0.00, 0.00, 6), -(114, '2026-03-11 12:44:00', 210.00, 'Card', 6, 1, 6, 0, NULL, 'ONLINE', NULL, NULL, 210.00, 0.00, 0.00, 21), -(115, '2026-03-12 13:55:00', 38.90, 'Cash', 7, 2, 7, 0, NULL, 'IN_STORE', NULL, NULL, 38.90, 0.00, 0.00, 3), -(116, '2026-03-14 09:10:00', 325.40, 'Card', 12, 3, 8, 0, NULL, 'ONLINE', NULL, NULL, 325.40, 0.00, 0.00, 32), -(117, '2026-03-16 10:25:00', 72.15, 'Cash', 5, 1, 9, 0, NULL, 'IN_STORE', NULL, NULL, 72.15, 0.00, 0.00, 7), -(118, '2026-03-18 11:40:00', 190.80, 'Card', 10, 2, 10, 0, NULL, 'ONLINE', NULL, NULL, 190.80, 0.00, 0.00, 19), -(119, '2026-03-20 12:55:00', 55.30, 'Cash', 11, 3, 11, 0, NULL, 'IN_STORE', NULL, NULL, 55.30, 0.00, 0.00, 5), -(120, '2026-03-22 14:10:00', 412.60, 'Card', 4, 1, 12, 0, NULL, 'ONLINE', NULL, NULL, 412.60, 0.00, 0.00, 41), -(121, '2026-03-24 09:30:00', 98.45, 'Cash', 9, 2, 13, 0, NULL, 'IN_STORE', NULL, NULL, 98.45, 0.00, 0.00, 9), -(122, '2026-03-26 10:45:00', 167.70, 'Card', 14, 3, 14, 0, NULL, 'ONLINE', NULL, NULL, 167.70, 0.00, 0.00, 16), -(123, '2026-03-28 12:00:00', 44.20, 'Cash', 3, 1, 15, 0, NULL, 'IN_STORE', NULL, NULL, 44.20, 0.00, 0.00, 4), -(124, '2026-03-30 13:15:00', 289.55, 'Card', 8, 2, 16, 0, NULL, 'ONLINE', NULL, NULL, 289.55, 0.00, 0.00, 28), -(125, '2026-04-01 09:20:00', 76.80, 'Cash', 13, 3, 17, 0, NULL, 'IN_STORE', NULL, NULL, 76.80, 0.00, 0.00, 7), -(126, '2026-04-03 10:35:00', 234.10, 'Card', 6, 1, 18, 0, NULL, 'ONLINE', NULL, NULL, 234.10, 0.00, 0.00, 23), -(127, '2026-04-05 11:50:00', 52.40, 'Cash', 7, 2, 19, 0, NULL, 'IN_STORE', NULL, NULL, 52.40, 0.00, 0.00, 5), -(128, '2026-04-07 13:05:00', 178.90, 'Card', 12, 3, 20, 0, NULL, 'ONLINE', NULL, NULL, 178.90, 0.00, 0.00, 17), -(129, '2026-04-09 09:15:00', 115.60, 'Cash', 5, 1, 21, 0, NULL, 'IN_STORE', NULL, NULL, 115.60, 0.00, 0.00, 11), -(130, '2026-04-11 10:30:00', 367.25, 'Card', 10, 2, 22, 0, NULL, 'ONLINE', NULL, NULL, 367.25, 0.00, 0.00, 36), -(131, '2026-04-14 11:45:00', 89.70, 'Cash', 11, 3, 23, 0, NULL, 'IN_STORE', NULL, NULL, 89.70, 0.00, 0.00, 8), -(132, '2026-04-15 09:00:00', 145.30, 'Card', 4, 1, 24, 0, NULL, 'ONLINE', NULL, NULL, 145.30, 0.00, 0.00, 14), -(133, '2026-04-16 10:00:00', 78.60, 'Cash', 9, 2, 25, 0, NULL, 'IN_STORE', NULL, NULL, 78.60, 0.00, 0.00, 7); +(111, '2026-03-08 09:15:00', 87.50, 'Cash', 3, 1, 3, 0, NULL, 'In Store', NULL, NULL, 87.50, 0.00, 0.00, 8), +(112, '2026-03-09 10:22:00', 145.20, 'Card', 8, 2, 4, 0, NULL, 'In Store', NULL, NULL, 145.20, 0.00, 0.00, 14), +(113, '2026-03-10 11:33:00', 63.75, 'Cash', 13, 3, 5, 0, NULL, 'In Store', NULL, NULL, 63.75, 0.00, 0.00, 6), +(114, '2026-03-11 12:44:00', 210.00, 'Card', 6, 1, 6, 0, NULL, 'Online', NULL, NULL, 210.00, 0.00, 0.00, 21), +(115, '2026-03-12 13:55:00', 38.90, 'Cash', 7, 2, 7, 0, NULL, 'In Store', NULL, NULL, 38.90, 0.00, 0.00, 3), +(116, '2026-03-14 09:10:00', 325.40, 'Card', 12, 3, 8, 0, NULL, 'Online', NULL, NULL, 325.40, 0.00, 0.00, 32), +(117, '2026-03-16 10:25:00', 72.15, 'Cash', 5, 1, 9, 0, NULL, 'In Store', NULL, NULL, 72.15, 0.00, 0.00, 7), +(118, '2026-03-18 11:40:00', 190.80, 'Card', 10, 2, 10, 0, NULL, 'Online', NULL, NULL, 190.80, 0.00, 0.00, 19), +(119, '2026-03-20 12:55:00', 55.30, 'Cash', 11, 3, 11, 0, NULL, 'In Store', NULL, NULL, 55.30, 0.00, 0.00, 5), +(120, '2026-03-22 14:10:00', 412.60, 'Card', 4, 1, 12, 0, NULL, 'Online', NULL, NULL, 412.60, 0.00, 0.00, 41), +(121, '2026-03-24 09:30:00', 98.45, 'Cash', 9, 2, 13, 0, NULL, 'In Store', NULL, NULL, 98.45, 0.00, 0.00, 9), +(122, '2026-03-26 10:45:00', 167.70, 'Card', 14, 3, 14, 0, NULL, 'Online', NULL, NULL, 167.70, 0.00, 0.00, 16), +(123, '2026-03-28 12:00:00', 44.20, 'Cash', 3, 1, 15, 0, NULL, 'In Store', NULL, NULL, 44.20, 0.00, 0.00, 4), +(124, '2026-03-30 13:15:00', 289.55, 'Card', 8, 2, 16, 0, NULL, 'Online', NULL, NULL, 289.55, 0.00, 0.00, 28), +(125, '2026-04-01 09:20:00', 76.80, 'Cash', 13, 3, 17, 0, NULL, 'In Store', NULL, NULL, 76.80, 0.00, 0.00, 7), +(126, '2026-04-03 10:35:00', 234.10, 'Card', 6, 1, 18, 0, NULL, 'Online', NULL, NULL, 234.10, 0.00, 0.00, 23), +(127, '2026-04-05 11:50:00', 52.40, 'Cash', 7, 2, 19, 0, NULL, 'In Store', NULL, NULL, 52.40, 0.00, 0.00, 5), +(128, '2026-04-07 13:05:00', 178.90, 'Card', 12, 3, 20, 0, NULL, 'Online', NULL, NULL, 178.90, 0.00, 0.00, 17), +(129, '2026-04-09 09:15:00', 115.60, 'Cash', 5, 1, 21, 0, NULL, 'In Store', NULL, NULL, 115.60, 0.00, 0.00, 11), +(130, '2026-04-11 10:30:00', 367.25, 'Card', 10, 2, 22, 0, NULL, 'Online', NULL, NULL, 367.25, 0.00, 0.00, 36), +(131, '2026-04-14 11:45:00', 89.70, 'Cash', 11, 3, 23, 0, NULL, 'In Store', NULL, NULL, 89.70, 0.00, 0.00, 8), +(132, '2026-04-15 09:00:00', 145.30, 'Card', 4, 1, 24, 0, NULL, 'Online', NULL, NULL, 145.30, 0.00, 0.00, 14), +(133, '2026-04-16 10:00:00', 78.60, 'Cash', 9, 2, 25, 0, NULL, 'In Store', NULL, NULL, 78.60, 0.00, 0.00, 7); INSERT IGNORE INTO saleItem (saleItemId, saleId, prodId, quantity, unitPrice) VALUES (226, 111, 5, 2, 25.50), @@ -2452,30 +2452,30 @@ INSERT INTO activityLog (userId, storeId, usernameSnapshot, fullNameSnapshot, ro (11, 3, 'lisa.williams', 'Lisa Williams', 'STAFF', 'West Side Store', 'Created a new appointment | POST /api/v1/appointments → 201', '2026-04-19 11:00:22'); INSERT IGNORE INTO sale (saleId, saleDate, totalAmount, paymentMethod, employeeId, storeId, customerId, isRefund, originalSaleId, channel, cartId, couponId, subtotalAmount, couponDiscountAmount, employeeDiscountAmount, pointsEarned) VALUES -(134, '2026-04-10 09:15:00', 57.67, 'Cash', 4, 1, 16, 0, NULL, 'IN_STORE', NULL, NULL, 57.67, 0.00, 0.00, 5), -(135, '2026-04-10 11:30:00', 143.55, 'Card', 8, 2, 17, 0, NULL, 'ONLINE', NULL, NULL, 143.55, 0.00, 0.00, 14), -(136, '2026-04-10 14:45:00', 50.09, 'Cash', 12, 3, 18, 0, NULL, 'IN_STORE', NULL, NULL, 50.09, 0.00, 0.00, 5), -(137, '2026-04-11 10:00:00', 114.48, 'Card', 5, 1, 19, 0, NULL, 'ONLINE', NULL, NULL, 114.48, 0.00, 0.00, 11), -(138, '2026-04-11 13:20:00', 93.55, 'Cash', 9, 2, 20, 0, NULL, 'IN_STORE', NULL, NULL, 93.55, 0.00, 0.00, 9), -(139, '2026-04-12 09:45:00', 100.71, 'Card', 13, 3, 21, 0, NULL, 'ONLINE', NULL, NULL, 100.71, 0.00, 0.00, 10), -(140, '2026-04-12 11:00:00', 51.07, 'Cash', 6, 1, 22, 0, NULL, 'IN_STORE', NULL, NULL, 51.07, 0.00, 0.00, 5), -(141, '2026-04-12 15:30:00', 139.66, 'Card', 7, 2, 23, 0, NULL, 'ONLINE', NULL, NULL, 139.66, 0.00, 0.00, 13), -(142, '2026-04-13 09:00:00', 73.98, 'Cash', 14, 3, 24, 0, NULL, 'IN_STORE', NULL, NULL, 73.98, 0.00, 0.00, 7), -(143, '2026-04-13 12:15:00', 134.76, 'Card', 4, 1, 25, 0, NULL, 'ONLINE', NULL, NULL, 134.76, 0.00, 0.00, 13), -(144, '2026-04-14 10:30:00', 80.40, 'Cash', 10, 2, 26, 0, NULL, 'IN_STORE', NULL, NULL, 80.40, 0.00, 0.00, 8), -(145, '2026-04-14 14:00:00', 125.90, 'Card', 11, 3, 27, 0, NULL, 'ONLINE', NULL, NULL, 125.90, 0.00, 0.00, 12), -(146, '2026-04-15 10:45:00', 80.62, 'Cash', 5, 1, 28, 0, NULL, 'IN_STORE', NULL, NULL, 80.62, 0.00, 0.00, 8), -(147, '2026-04-15 13:00:00', 141.28, 'Card', 8, 2, 29, 0, NULL, 'ONLINE', NULL, NULL, 141.28, 0.00, 0.00, 14), -(148, '2026-04-16 09:30:00', 97.85, 'Cash', 12, 3, 30, 0, NULL, 'IN_STORE', NULL, NULL, 97.85, 0.00, 0.00, 9), -(149, '2026-04-16 11:45:00', 89.36, 'Card', 6, 1, 31, 0, NULL, 'ONLINE', NULL, NULL, 89.36, 0.00, 0.00, 8), -(150, '2026-04-17 09:15:00', 112.38, 'Cash', 13, 3, 32, 0, NULL, 'IN_STORE', NULL, NULL, 112.38, 0.00, 0.00, 11), -(151, '2026-04-17 11:30:00', 67.49, 'Card', 5, 1, 33, 0, NULL, 'ONLINE', NULL, NULL, 67.49, 0.00, 0.00, 6), -(152, '2026-04-17 14:45:00', 158.20, 'Cash', 9, 2, 34, 0, NULL, 'IN_STORE', NULL, NULL, 158.20, 0.00, 0.00, 15), -(153, '2026-04-18 09:30:00', 84.76, 'Card', 14, 3, 35, 0, NULL, 'ONLINE', NULL, NULL, 84.76, 0.00, 0.00, 8), -(154, '2026-04-18 12:00:00', 203.15, 'Cash', 4, 1, 36, 0, NULL, 'IN_STORE', NULL, NULL, 203.15, 0.00, 0.00, 20), -(155, '2026-04-18 15:15:00', 45.93, 'Card', 7, 2, 37, 0, NULL, 'ONLINE', NULL, NULL, 45.93, 0.00, 0.00, 4), -(156, '2026-04-19 10:00:00', 129.84, 'Cash', 11, 3, 38, 0, NULL, 'IN_STORE', NULL, NULL, 129.84, 0.00, 0.00, 12), -(157, '2026-04-19 13:30:00', 76.50, 'Card', 6, 1, 39, 0, NULL, 'ONLINE', NULL, NULL, 76.50, 0.00, 0.00, 7); +(134, '2026-04-10 09:15:00', 57.67, 'Cash', 4, 1, 16, 0, NULL, 'In Store', NULL, NULL, 57.67, 0.00, 0.00, 5), +(135, '2026-04-10 11:30:00', 143.55, 'Card', 8, 2, 17, 0, NULL, 'Online', NULL, NULL, 143.55, 0.00, 0.00, 14), +(136, '2026-04-10 14:45:00', 50.09, 'Cash', 12, 3, 18, 0, NULL, 'In Store', NULL, NULL, 50.09, 0.00, 0.00, 5), +(137, '2026-04-11 10:00:00', 114.48, 'Card', 5, 1, 19, 0, NULL, 'Online', NULL, NULL, 114.48, 0.00, 0.00, 11), +(138, '2026-04-11 13:20:00', 93.55, 'Cash', 9, 2, 20, 0, NULL, 'In Store', NULL, NULL, 93.55, 0.00, 0.00, 9), +(139, '2026-04-12 09:45:00', 100.71, 'Card', 13, 3, 21, 0, NULL, 'Online', NULL, NULL, 100.71, 0.00, 0.00, 10), +(140, '2026-04-12 11:00:00', 51.07, 'Cash', 6, 1, 22, 0, NULL, 'In Store', NULL, NULL, 51.07, 0.00, 0.00, 5), +(141, '2026-04-12 15:30:00', 139.66, 'Card', 7, 2, 23, 0, NULL, 'Online', NULL, NULL, 139.66, 0.00, 0.00, 13), +(142, '2026-04-13 09:00:00', 73.98, 'Cash', 14, 3, 24, 0, NULL, 'In Store', NULL, NULL, 73.98, 0.00, 0.00, 7), +(143, '2026-04-13 12:15:00', 134.76, 'Card', 4, 1, 25, 0, NULL, 'Online', NULL, NULL, 134.76, 0.00, 0.00, 13), +(144, '2026-04-14 10:30:00', 80.40, 'Cash', 10, 2, 26, 0, NULL, 'In Store', NULL, NULL, 80.40, 0.00, 0.00, 8), +(145, '2026-04-14 14:00:00', 125.90, 'Card', 11, 3, 27, 0, NULL, 'Online', NULL, NULL, 125.90, 0.00, 0.00, 12), +(146, '2026-04-15 10:45:00', 80.62, 'Cash', 5, 1, 28, 0, NULL, 'In Store', NULL, NULL, 80.62, 0.00, 0.00, 8), +(147, '2026-04-15 13:00:00', 141.28, 'Card', 8, 2, 29, 0, NULL, 'Online', NULL, NULL, 141.28, 0.00, 0.00, 14), +(148, '2026-04-16 09:30:00', 97.85, 'Cash', 12, 3, 30, 0, NULL, 'In Store', NULL, NULL, 97.85, 0.00, 0.00, 9), +(149, '2026-04-16 11:45:00', 89.36, 'Card', 6, 1, 31, 0, NULL, 'Online', NULL, NULL, 89.36, 0.00, 0.00, 8), +(150, '2026-04-17 09:15:00', 112.38, 'Cash', 13, 3, 32, 0, NULL, 'In Store', NULL, NULL, 112.38, 0.00, 0.00, 11), +(151, '2026-04-17 11:30:00', 67.49, 'Card', 5, 1, 33, 0, NULL, 'Online', NULL, NULL, 67.49, 0.00, 0.00, 6), +(152, '2026-04-17 14:45:00', 158.20, 'Cash', 9, 2, 34, 0, NULL, 'In Store', NULL, NULL, 158.20, 0.00, 0.00, 15), +(153, '2026-04-18 09:30:00', 84.76, 'Card', 14, 3, 35, 0, NULL, 'Online', NULL, NULL, 84.76, 0.00, 0.00, 8), +(154, '2026-04-18 12:00:00', 203.15, 'Cash', 4, 1, 36, 0, NULL, 'In Store', NULL, NULL, 203.15, 0.00, 0.00, 20), +(155, '2026-04-18 15:15:00', 45.93, 'Card', 7, 2, 37, 0, NULL, 'Online', NULL, NULL, 45.93, 0.00, 0.00, 4), +(156, '2026-04-19 10:00:00', 129.84, 'Cash', 11, 3, 38, 0, NULL, 'In Store', NULL, NULL, 129.84, 0.00, 0.00, 12), +(157, '2026-04-19 13:30:00', 76.50, 'Card', 6, 1, 39, 0, NULL, 'Online', NULL, NULL, 76.50, 0.00, 0.00, 7); INSERT IGNORE INTO saleItem (saleItemId, saleId, prodId, quantity, unitPrice) VALUES (264, 134, 1, 2, 25.09),