Skip to content

Commit 5de5cfe

Browse files
authored
Merge branch 'main' into dev
2 parents d1f30eb + 47c7249 commit 5de5cfe

34 files changed

+1271
-123
lines changed

backend/src/main/java/com/smalltrend/dto/CRM/AdvertisementResponse.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,6 @@ public class AdvertisementResponse {
1818
private String ctaColor;
1919
private String bgColor;
2020
private Boolean isActive;
21-
// Contract fields
22-
private String contractNumber;
23-
private BigDecimal contractValue;
24-
private LocalDate contractStart;
25-
private LocalDate contractEnd;
26-
private String paymentTerms;
27-
private String contactPerson;
28-
private String contactEmail;
29-
private String contactPhone;
30-
private String notes;
3121
private LocalDateTime createdAt;
3222
private LocalDateTime updatedAt;
3323
}

backend/src/main/java/com/smalltrend/dto/CRM/SaveAdvertisementRequest.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,4 @@ public class SaveAdvertisementRequest {
1616
private String ctaColor;
1717
private String bgColor;
1818
private Boolean isActive;
19-
// Contract
20-
private String contractNumber;
21-
private BigDecimal contractValue;
22-
private LocalDate contractStart;
23-
private LocalDate contractEnd;
24-
private String paymentTerms;
25-
private String contactPerson;
26-
private String contactEmail;
27-
private String contactPhone;
28-
private String notes;
2919
}

backend/src/main/java/com/smalltrend/entity/Advertisement.java

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -56,35 +56,6 @@ public class Advertisement {
5656
@Builder.Default
5757
private Boolean isActive = true;
5858

59-
// ─── Hợp đồng ────────────────────────────────────────────────────────────
60-
61-
@Column(name = "contract_number", length = 100)
62-
private String contractNumber;
63-
64-
@Column(name = "contract_value", precision = 15, scale = 2)
65-
private BigDecimal contractValue;
66-
67-
@Column(name = "contract_start")
68-
private LocalDate contractStart;
69-
70-
@Column(name = "contract_end")
71-
private LocalDate contractEnd;
72-
73-
@Column(name = "payment_terms", length = 500)
74-
private String paymentTerms;
75-
76-
@Column(name = "contact_person", length = 200)
77-
private String contactPerson;
78-
79-
@Column(name = "contact_email", length = 200)
80-
private String contactEmail;
81-
82-
@Column(name = "contact_phone", length = 50)
83-
private String contactPhone;
84-
85-
@Column(name = "notes", columnDefinition = "TEXT")
86-
private String notes;
87-
8859
// ─── Timestamps ───────────────────────────────────────────────────────────
8960

9061
@CreationTimestamp

backend/src/main/java/com/smalltrend/service/CRM/AdvertisementService.java

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -67,19 +67,11 @@ public Map<String, Object> getStats() {
6767
List<Advertisement> all = adRepository.findAll();
6868
long total = all.size();
6969
long active = all.stream().filter(a -> Boolean.TRUE.equals(a.getIsActive())).count();
70-
long expired = all.stream().filter(a ->
71-
a.getContractEnd() != null && a.getContractEnd().isBefore(java.time.LocalDate.now())).count();
72-
java.math.BigDecimal totalValue = all.stream()
73-
.filter(a -> a.getContractValue() != null)
74-
.map(Advertisement::getContractValue)
75-
.reduce(java.math.BigDecimal.ZERO, java.math.BigDecimal::add);
7670

7771
return Map.of(
7872
"total", total,
7973
"active", active,
80-
"inactive", total - active,
81-
"expired", expired,
82-
"totalContractValue", totalValue
74+
"inactive", total - active
8375
);
8476
}
8577

@@ -96,15 +88,6 @@ private void applyRequest(Advertisement ad, SaveAdvertisementRequest req) {
9688
if (req.getCtaColor() != null) ad.setCtaColor(req.getCtaColor());
9789
if (req.getBgColor() != null) ad.setBgColor(req.getBgColor());
9890
if (req.getIsActive() != null) ad.setIsActive(req.getIsActive());
99-
if (req.getContractNumber() != null) ad.setContractNumber(req.getContractNumber());
100-
if (req.getContractValue() != null) ad.setContractValue(req.getContractValue());
101-
if (req.getContractStart() != null) ad.setContractStart(req.getContractStart());
102-
if (req.getContractEnd() != null) ad.setContractEnd(req.getContractEnd());
103-
if (req.getPaymentTerms() != null) ad.setPaymentTerms(req.getPaymentTerms());
104-
if (req.getContactPerson() != null) ad.setContactPerson(req.getContactPerson());
105-
if (req.getContactEmail() != null) ad.setContactEmail(req.getContactEmail());
106-
if (req.getContactPhone() != null) ad.setContactPhone(req.getContactPhone());
107-
if (req.getNotes() != null) ad.setNotes(req.getNotes());
10891
}
10992

11093
private AdvertisementResponse toResponse(Advertisement ad) {
@@ -120,15 +103,6 @@ private AdvertisementResponse toResponse(Advertisement ad) {
120103
r.setCtaColor(ad.getCtaColor());
121104
r.setBgColor(ad.getBgColor());
122105
r.setIsActive(ad.getIsActive());
123-
r.setContractNumber(ad.getContractNumber());
124-
r.setContractValue(ad.getContractValue());
125-
r.setContractStart(ad.getContractStart());
126-
r.setContractEnd(ad.getContractEnd());
127-
r.setPaymentTerms(ad.getPaymentTerms());
128-
r.setContactPerson(ad.getContactPerson());
129-
r.setContactEmail(ad.getContactEmail());
130-
r.setContactPhone(ad.getContactPhone());
131-
r.setNotes(ad.getNotes());
132106
r.setCreatedAt(ad.getCreatedAt());
133107
r.setUpdatedAt(ad.getUpdatedAt());
134108
return r;

backend/src/main/resources/application.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ app.notifications.inventory.out-of-stock.recipients=${APP_NOTIFICATIONS_INVENTOR
6262
app.notifications.inventory.manager.recipients=${APP_NOTIFICATIONS_INVENTORY_MANAGER_RECIPIENTS:}
6363
app.notifications.inventory.out-of-stock.daily-enabled=${APP_NOTIFICATIONS_INVENTORY_OUT_OF_STOCK_DAILY_ENABLED:true}
6464
app.notifications.inventory.out-of-stock.daily-cron=${APP_NOTIFICATIONS_INVENTORY_OUT_OF_STOCK_DAILY_CRON:0 05 7 * * *}
65-
6665
# CORS Configuration
6766
# Comma-separated list of allowed origins (supports patterns like https://*.devtunnels.ms)
6867
cors.allowed-origins=${CORS_ALLOWED_ORIGINS:http://localhost:5173,http://localhost:5174,http://localhost:3000}

backend/src/main/resources/data.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ SET FOREIGN_KEY_CHECKS = 1;
7171
INSERT INTO `suppliers` (`id`,`active`,`address`,`contact_person`,`contract_expiry`,`contract_files`,`contract_signed_date`,`created_at`,`email`,`name`,`notes`,`phone`,`tax_code`,`updated_at`) VALUES (1,0,'10 Tan Trao, District 7, Ho Chi Minh City, Vietnam','Nguyen Van A','2025-01-15',NULL,'2023-01-15',NULL,'sales@vinamilk.com.vn','Vinamilk Distribution','Main dairy supplier','1800-1199','0100170098',NULL),(2,0,'15 Le Duan Blvd, District 1, Ho Chi Minh City, Vietnam','Tran Thi B','2025-03-01',NULL,'2023-03-01',NULL,'contact@unilever.com.vn','Unilever Vietnam','Personal care and household products','1800-5588','0300491828',NULL),(3,0,'The Vista Building, Hanoi Highway, Ho Chi Minh City, Vietnam','Le Van C','2025-06-01',NULL,'2023-06-01',NULL,'info@nestle.com.vn','Nestle Vietnam','Food and beverage supplier','1900-6011','0302127854',NULL),(4,0,'124 Kim Ma Street, Ba Dinh, Hanoi, Vietnam','Pham Thi D','2025-07-01',NULL,'2023-07-01',NULL,'vietnam@cocacola.com','Coca-Cola Vietnam','Soft drinks supplier','1900-0180','0300693409',NULL),(5,0,'39 Le Duan, District 1, Ho Chi Minh City, Vietnam','Le Van M','2025-08-01',NULL,'2023-08-01',NULL,'contact@masan.com.vn','Masan Consumer','Consumer goods supplier','1800-9090','0302017440',NULL),(6,0,'1 Bach Dang, Tan Binh District, Ho Chi Minh City, Vietnam','Tran Van H','2025-10-01',NULL,'2023-10-01',NULL,'sales@heineken.com.vn','Heineken Vietnam','Beer and beverages supplier','1900-1111','0300847056',NULL),(7,0,'138 Hai Ba Trung, District 1, Ho Chi Minh City, Vietnam','Bui Van K','2025-05-01',NULL,'2023-05-01',NULL,'info@kido.vn','KIDO Group (Tuong An)','Edible oils and foods','1800-6688','0302266881',NULL),(8,0,'182 Le Dai Hanh, District 11, Ho Chi Minh City, Vietnam','Nguyen Van P','2025-04-01',NULL,'2023-04-01',NULL,'contact@pepsico.com.vn','PepsiCo Vietnam','Soft drinks and snacks','1900-1220','0300811445',NULL),(9,0,'Thai Hoa Town, Nghe An Province, Vietnam','Tran Thi T','2025-02-01',NULL,'2023-02-01',NULL,'sales@thmilk.vn','TH Milk Distribution','Dairy supplier','1800-545440','2900326335',NULL),(10,0,'Tan Binh Industrial Park, Ho Chi Minh City, Vietnam','Le Van AC','2025-05-01',NULL,'2023-05-01',NULL,'info@acecookvietnam.vn','Acecook Vietnam','Instant noodle supplier','1900-0120','0300808680',NULL),(11,0,'Tan Binh District, Ho Chi Minh City, Vietnam','Pham Van V','2025-05-10',NULL,'2023-05-10',NULL,'info@vifon.com.vn','Vifon Vietnam','Instant noodles and pho','028-3815-4364','0300391837',NULL),(12,0,'My Phuoc Industrial Park, Binh Duong, Vietnam','Kim Orion','2025-04-01',NULL,'2023-04-01',NULL,'contact@orion.vn','Orion Food Vina','Snack supplier','0274-355-0166','3700381324',NULL),(13,0,'VSIP Industrial Park, Binh Duong, Vietnam','Nguyen Van O','2025-04-15',NULL,'2023-04-15',NULL,'sales@oishi.vn','Oishi Vietnam','Snack foods','0274-378-4088','0302752277',NULL),(14,0,'Vinh Loc Industrial Park, Binh Chanh, Ho Chi Minh City, Vietnam','Tran Thi C','2025-03-15',NULL,'2023-03-15',NULL,'info@cholimexfood.com.vn','Cholimex Food','Sauces and condiments','028-3765-2101','0304475742',NULL),(15,0,'Bien Hoa Industrial Zone, Dong Nai, Vietnam','Somchai CP','2025-06-01',NULL,'2023-06-01',NULL,'info@cp.com.vn','CP Vietnam Corporation','Meat and food products','0251-3836-501','3600235308',NULL),(16,0,'VSIP Industrial Park, Binh Duong, Vietnam','Marco Perfetti','2025-06-10',NULL,'2023-06-10',NULL,'info.vn@perfettivanmelle.com','Perfetti Van Melle Vietnam Co., Ltd','Confectionery supplier (Chupa Chups, Alpenliebe, Mentos)','0274-376-8586','0300588569',NULL),(17,0,'913 Truong Chinh Street, Tan Phu District, Ho Chi Minh City, Vietnam','Nguyen Bich Lam','2025-06-10',NULL,'2023-06-10',NULL,'info@vifon.com.vn','Vifon Joint Stock Company','Instant food supplier (Pho, noodles, vermicelli)','028-3815-4368','0300391836',NULL);
7272

7373
-- 2. BRANDS & CATEGORIES
74-
INSERT INTO `categories` VALUES (1,'BEVERAGE','2026-03-18 01:40:08.835126','Các loại nước uống, giải khát','Đồ uống','2026-03-18 01:40:08.835126'),(2,'DAIRY','2026-03-18 01:40:08.835126','Sữa, sữa chua, sữa đặc','Sữa & Sản phẩm từ sữa','2026-03-18 01:40:08.835126'),(3,'PERSONAL_CARE','2026-03-18 01:40:08.835126','Sản phẩm vệ sinh cá nhân','Chăm sóc cá nhân','2026-03-18 01:40:08.835126'),(4,'HOUSEHOLD','2026-03-18 01:40:08.835126','Sản phẩm dùng trong gia đình','Đồ dùng gia đình','2026-03-18 01:40:08.835126'),(5,'SNACK','2026-03-18 01:40:08.835126','Snack, bánh kẹo','Bánh kẹo ăn vặt','2026-03-18 01:40:08.835126'),(6,'HEALTHCARE','2026-03-18 01:40:08.835126','Sản phẩm chăm sóc sức khỏe','Chăm sóc sức khỏe','2026-03-18 01:40:08.835126'),(7,'CANNED_FOOD','2026-03-18 01:40:08.835126','Thực phẩm đóng hộp','Đồ hộp','2026-03-18 01:40:08.835126'),(8,'BAKERY','2026-03-18 01:40:08.835126','Bánh ngọt, bánh mì','Bánh ngọt','2026-03-18 01:40:08.835126'),(9,'MEAT_SEAFOOD','2026-03-18 01:40:08.835126','Thịt, cá, hải sản','Thịt & Hải sản','2026-03-18 01:40:08.835126'),(10,'CONDIMENT','2026-03-18 01:40:08.835126','Gia vị, nước mắm, nước tương','Gia vị & Nước chấm','2026-03-18 01:40:08.835126'),(11,'INSTANT_FOOD','2026-03-18 01:40:08.835126','Mì, phở, hủ tiếu ăn liền','Mì ăn liền','2026-03-18 01:40:08.835126');
74+
INSERT INTO `categories` (`id`,`code`,`name`,`description`,`created_at`,`updated_at`) VALUES (1,'BEVERAGE','Đồ uống','Các loại nước uống, giải khát','2026-03-18 01:40:08.835126','2026-03-18 01:40:08.835126'),(2,'DAIRY','Sữa & Sản phẩm từ sữa','Sữa, sữa chua, sữa đặc','2026-03-18 01:40:08.835126','2026-03-18 01:40:08.835126'),(3,'PERSONAL_CARE','Chăm sóc cá nhân','Sản phẩm vệ sinh cá nhân','2026-03-18 01:40:08.835126','2026-03-18 01:40:08.835126'),(4,'HOUSEHOLD','Đồ dùng gia đình','Sản phẩm dùng trong gia đình','2026-03-18 01:40:08.835126','2026-03-18 01:40:08.835126'),(5,'SNACK','Bánh kẹo ăn vặt','Snack, bánh kẹo','2026-03-18 01:40:08.835126','2026-03-18 01:40:08.835126'),(6,'HEALTHCARE','Chăm sóc sức khỏe','Sản phẩm chăm sóc sức khỏe','2026-03-18 01:40:08.835126','2026-03-18 01:40:08.835126'),(7,'CANNED_FOOD','Đồ hộp','Thực phẩm đóng hộp','2026-03-18 01:40:08.835126','2026-03-18 01:40:08.835126'),(8,'BAKERY','Bánh ngọt','Bánh ngọt, bánh mì','2026-03-18 01:40:08.835126','2026-03-18 01:40:08.835126'),(9,'MEAT_SEAFOOD','Thịt & Hải sản','Thịt, cá, hải sản','2026-03-18 01:40:08.835126','2026-03-18 01:40:08.835126'),(10,'CONDIMENT','Gia vị & Nước chấm','Gia vị, nước mắm, nước tương','2026-03-18 01:40:08.835126','2026-03-18 01:40:08.835126'),(11,'INSTANT_FOOD','Mì ăn liền','Mì, phở, hủ tiếu ăn liền','2026-03-18 01:40:08.835126','2026-03-18 01:40:08.835126');
7575

7676

77-
INSERT INTO `brands` VALUES (1,'Việt Nam','2026-03-18 01:40:08.841821','Sản phẩm sữa','Vinamilk','2026-03-18 01:40:08.841821',2,1),(2,'Thuỵ Sĩ','2026-03-18 01:40:08.841821','Thực phẩm và đồ uống','Nestle','2026-03-18 01:40:08.841821',NULL,3),(3,'Hoa Kỳ','2026-03-18 01:40:08.841821','Nước giải khát','Coca-Cola','2026-03-18 01:40:08.841821',1,4),(4,'Hoa Kỳ','2026-03-18 01:40:08.841821','Hàng tiêu dùng','P&G','2026-03-18 01:40:08.841821',NULL,2),(5,'Việt Nam','2026-03-18 01:40:08.841821','Bánh kẹo','Kinh Do','2026-03-18 01:40:08.841821',5,7),(6,'Philippines','2026-03-18 01:40:08.841821','Snack ăn vặt','Oishi','2026-03-18 01:40:08.841821',5,13),(7,'Việt Nam','2026-03-18 01:40:08.841821','Gia vị và nước chấm','Cholimex','2026-03-18 01:40:08.841821',10,14),(8,'Thái Lan','2026-03-18 01:40:08.841821','Thực phẩm thịt','CP','2026-03-18 01:40:08.841821',9,15),(9,'Việt Nam','2026-03-18 01:40:08.841821','Thịt chế biến','Vissan','2026-03-18 01:40:08.841821',9,15),(10,'Hàn Quốc','2026-03-18 01:40:08.841821','Bánh kẹo','Orion','2026-03-18 01:40:08.841821',5,12),(11,'Tây Ban Nha','2026-03-18 01:40:08.841821','Kẹo','Chupa Chups','2026-03-18 01:40:08.841821',5,16),(12,'Việt Nam','2026-03-18 01:40:08.841821','Mì/phở ăn liền','Vifon','2026-03-18 01:40:08.841821',11,11),(13,'Nhật Bản','2026-03-18 01:40:08.841821','Mì ăn liền','Acecook','2026-03-18 01:40:08.841821',11,10),(14,'Việt Nam','2026-03-18 01:40:08.841821','Hàng tiêu dùng','Masan','2026-03-18 01:40:08.841821',10,5),(15,'Việt Nam','2026-03-18 01:40:08.841821','Sữa','TH True Milk','2026-03-18 01:40:08.841821',2,9),(16,'Hoa Kỳ','2026-03-18 01:40:08.841821','Nước uống & snack','Pepsico','2026-03-18 01:40:08.841821',1,8),(17,'Thụy Sĩ','2026-03-18 01:40:08.841821','Gia vị','Maggi','2026-03-18 01:40:08.841821',10,3),(18,'Vương Quốc Anh','2026-03-18 01:40:08.841821','Chăm sóc cá nhân','Dove','2026-03-18 01:40:08.841821',3,2),(19,'Đức','2026-03-18 01:40:08.841821','Gia vị','Knorr','2026-03-18 01:40:08.841821',10,2),(20,'Vương Quốc Anh','2026-03-18 01:40:08.841821','Chăm sóc cá nhân','Lifebuoy','2026-03-18 01:40:08.841821',3,2),(21,'Vương Quốc Anh','2026-03-18 01:40:08.841821','Giặt tẩy','OMO','2026-03-18 01:40:08.841821',4,2),(22,'Vương Quốc Anh','2026-03-18 01:40:08.841821','Chăm sóc tóc','Sunsilk','2026-03-18 01:40:08.841821',3,2),(23,'Hà Lan','2026-03-18 01:40:08.841821','Bia','Heineken','2026-03-18 01:40:08.841821',1,6),(24,'Singapore','2026-03-18 01:40:08.841821','Bia','Tiger','2026-03-18 01:40:08.841821',1,6),(25,'Việt Nam','2026-03-18 01:40:08.841821','Dầu ăn','Tường An','2026-03-18 01:40:08.841821',10,7);
77+
INSERT INTO `brands` (`id`,`name`,`description`,`country`,`created_at`,`updated_at`,`category_id`,`supplier_id`) VALUES (1,'Vinamilk','Sản phẩm sữa','Việt Nam','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',2,1),(2,'Nestle','Thực phẩm và đồ uống','Thuỵ Sĩ','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',NULL,3),(3,'Coca-Cola','Nước giải khát','Hoa Kỳ','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',1,4),(4,'P&G','Hàng tiêu dùng','Hoa Kỳ','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',NULL,2),(5,'Kinh Do','Bánh kẹo','Việt Nam','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',5,7),(6,'Oishi','Snack ăn vặt','Philippines','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',5,13),(7,'Cholimex','Gia vị và nước chấm','Việt Nam','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',10,14),(8,'CP','Thực phẩm thịt','Thái Lan','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',9,15),(9,'Vissan','Thịt chế biến','Việt Nam','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',9,15),(10,'Orion','Bánh kẹo','Hàn Quốc','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',5,12),(11,'Chupa Chups','Kẹo','Tây Ban Nha','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',5,16),(12,'Vifon','Mì/phở ăn liền','Việt Nam','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',11,11),(13,'Acecook','Mì ăn liền','Nhật Bản','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',11,10),(14,'Masan','Hàng tiêu dùng','Việt Nam','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',10,5),(15,'TH True Milk','Sữa','Việt Nam','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',2,9),(16,'Pepsico','Nước uống & snack','Hoa Kỳ','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',1,8),(17,'Maggi','Gia vị','Thụy Sĩ','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',10,3),(18,'Dove','Chăm sóc cá nhân','Vương Quốc Anh','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',3,2),(19,'Knorr','Gia vị','Đức','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',10,2),(20,'Lifebuoy','Chăm sóc cá nhân','Vương Quốc Anh','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',3,2),(21,'OMO','Giặt tẩy','Vương Quốc Anh','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',4,2),(22,'Sunsilk','Chăm sóc tóc','Vương Quốc Anh','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',3,2),(23,'Heineken','Bia','Hà Lan','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',1,6),(24,'Tiger','Bia','Singapore','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',1,6),(25,'Tường An','Dầu ăn','Việt Nam','2026-03-18 01:40:08.841821','2026-03-18 01:40:08.841821',10,7);
7878

7979
-- 2.1 SUPPLIER CONTRACTS
8080
INSERT INTO `supplier_contracts` VALUES (1,'SC-VM-2026-001','2026-03-18 01:40:08.000000','VND','Giao hàng theo lịch tuần','Hợp đồng cung ứng sữa và chế phẩm sữa cho toàn hệ thống cửa hàng','2026-12-31','Ưu tiên giao hàng dịp cao điểm lá»… tết','Thanh toán 30 ngày kể từ ngày nhận hóa đơn','Tran Thi Manager','Nguyen Van A','2025-12-20','2026-01-01','ACTIVE','Hợp đồng phân phối sữa Vinamilk 2026',1200000000.00,'2026-03-18 01:40:08.000000',1),(2,'SC-UL-2026-001','2026-03-18 01:40:08.000000','VND','Giao hàng trong 48h sau PO','Hợp đồng cung ứng nhóm sản phẩm chăm sóc cá nhân và gia dụng','2026-12-31','Cam kết đổi trả lô lỗi trong 7 ngày','Thanh toán theo từng lô, tối đa 21 ngày','Tran Thi Manager','Tran Thi B','2026-01-10','2026-01-15','ACTIVE','Hợp đồng đồ gia dụng Unilever 2026',800000000.00,'2026-03-18 01:40:08.000000',2);

0 commit comments

Comments
 (0)