Преглед на файлове

HMLG Scan Order add surcharge discount

Ray Zhang преди 1 месец
родител
ревизия
c986217d5c

+ 48 - 2
RedAnt ERP Mobile/HMLG Scan Order/CartViewController.m

@@ -1090,6 +1090,7 @@
 -(void) cartrefresh: (NSNotification *)notification
 {
     [OLDataProvider scanRefreshCart];
+    [self updateSurchargeForCartSection];
     [ActiveViewController Notify:@"CartViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
 //    [self refresh_total];
 //    [self refresh_ui];
@@ -1424,6 +1425,7 @@
         RASingleton.sharedInstance.scan_cart[@"section_0"]  = section;
         RASingleton.sharedInstance.scan_cart[@"price_type"] = @0;
         [OLDataProvider saveScanCart:RASingleton.sharedInstance.scan_cart];
+        [self updateSurchargeForCartSection];
         [self.cartIndicatorBar removeFromSuperview];
         self.cartIndicatorBar = [self setupCartIndicatorBar];
         [self.view addSubview:self.cartIndicatorBar];
@@ -1472,6 +1474,7 @@
         RASingleton.sharedInstance.scan_cart[@"price_type"] = @1;
         RASingleton.sharedInstance.scan_cart[@"section_0"]  = section;
         [OLDataProvider saveScanCart:RASingleton.sharedInstance.scan_cart];
+        [self updateSurchargeForCartSection];
         [self.cartIndicatorBar removeFromSuperview];
         self.cartIndicatorBar = [self setupCartIndicatorBar];
         [self.view addSubview:self.cartIndicatorBar];
@@ -2288,6 +2291,48 @@
     
 }
 
+/**
+ 切换价格组或价格类型后,重新计算购物车每个 item 的 unit_surcharge。
+ price_type 和 price_group 从 RASingleton / AppDelegate 实时读取。
+ */
+- (void)updateSurchargeForCartSection {
+    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+    NSDictionary *price_group = [RADataProvider get_price_group:appDelegate.price_group];
+
+    NSMutableDictionary *section = [RASingleton.sharedInstance.scan_cart[@"section_0"] mutableCopy];
+    int count = [section[@"count"] intValue];
+    for (int i = 0; i < count; i++) {
+        NSMutableDictionary *item = [section[[NSString stringWithFormat:@"item_%d", i]] mutableCopy];
+
+        // 与 onAddToCart / setScan_val 保持相同的 key 选取逻辑
+        NSString *unit_price_key;
+        if (RASingleton.sharedInstance.price_type == 0)
+            unit_price_key = price_group[@"price_0"][@"name"];
+        else if ([item[@"special_price"] boolValue])
+            unit_price_key = price_group[@"price_2"][@"name"];
+        else if ([item[@"net_price"] boolValue])
+            unit_price_key = price_group[@"price_3"][@"name"];
+        else
+            unit_price_key = price_group[@"price_1"][@"name"];
+
+        NSString *surcharge_key  = [unit_price_key stringByAppendingString:@"_surcharge"];
+        id unit_surcharge_val = item[surcharge_key];
+        double surcharge_d = 0;
+        if (unit_surcharge_val != nil && unit_surcharge_val != [NSNull null]) {
+            if ([unit_surcharge_val isKindOfClass:[NSNumber class]])
+                surcharge_d = [unit_surcharge_val doubleValue];
+            else if ([unit_surcharge_val isKindOfClass:[NSString class]] &&
+                     ![(NSString *)unit_surcharge_val isEqualToString:@"N/A"])
+                surcharge_d = [(NSString *)unit_surcharge_val doubleValue];
+        }
+        item[@"unit_surcharge"] = [NSString stringWithFormat:@"%.2f", surcharge_d];
+
+        section[[NSString stringWithFormat:@"item_%d", i]] = item;
+    }
+    RASingleton.sharedInstance.scan_cart[@"section_0"] = section;
+    [OLDataProvider saveScanCart:RASingleton.sharedInstance.scan_cart];
+}
+
 -(void)refresh_total
 {
     self.total=0;
@@ -2358,8 +2403,8 @@
             int item_qty=1;
 //            NSDictionary * bundle_item =[item_json objectForKey:@"combine"];
             
-            // surcharge = unit_surcharge * qty
-            double msurcharge = [[item_json valueForKey:@"unit_surcharge"] doubleValue] * count;
+            // surcharge = unit_surcharge * qty,同样应用折扣
+            double msurcharge = [[item_json valueForKey:@"unit_surcharge"] doubleValue] * count * (1 - discount / 100.0);
 
             
 //            double dprice=0;
@@ -2429,6 +2474,7 @@
     self.labelTotalSurcharge.text = surcharge;
     self.labelTotalPrice.text = totalprice;
     self.labelTotal.text=subtotal;
+    self.labelScanSubtotal.hidden = NO;
     self.labelScanSubtotal.text = subtotal;
     self.label_cuft.text=subcuft;
     self.label_carton.text=subcarton;

+ 1 - 1
RedAnt ERP Mobile/HMLG Scan Order/ScanListCell.m

@@ -184,7 +184,7 @@ static const CGFloat kMinColumnWidth   = 125;
     if (unit_cuft.length == 0) {
         unit_cuft = @"N/A";
     } else {
-        unit_cuft = [NSString stringWithFormat:@"%.4f", [_modelJson[@"unit_cuft"] doubleValue]];
+        unit_cuft = [NSString stringWithFormat:@"%.2f", [_modelJson[@"unit_cuft"] doubleValue]];
     }
 
     _labelModel.text       = _modelJson[@"model"];

+ 1 - 1
RedAnt ERP Mobile/HMLG Scan Order/ScanModelListCell.m

@@ -49,7 +49,7 @@ static const CGFloat kMinColumnWidth = 125;
     if (unit_cuft.length == 0) {
         unit_cuft = @"N/A";
     } else {
-        unit_cuft = [NSString stringWithFormat:@"%.4f", [_modelJson[@"unit_cuft"] doubleValue]];
+        unit_cuft = [NSString stringWithFormat:@"%.2f", [_modelJson[@"unit_cuft"] doubleValue]];
     }
 
     // ── 静态 label ──────────────────────────────────────────────────────────

+ 1 - 1
RedAnt ERP Mobile/common/data_provider/RADataProvider.m

@@ -169,7 +169,7 @@
 //    2022-07-14。1.17
     //    2022-07-14。1.19
     
-NSDate * ddate =[dateFormatter dateFromString:@"2026-01-03"];
+NSDate * ddate =[dateFormatter dateFromString:@"2026-03-07"];
     
 //    bool review=[cdate earlierDate:ddate];
     NSTimeInterval secondsInterval= [cdate timeIntervalSinceDate:ddate];