Browse Source

HMLG scan order 1.27
Fix bug
Autocomplete textfield add input text length parameter

Ray Zhang 3 years ago
parent
commit
32c7c3ae9f
21 changed files with 7436 additions and 530 deletions
  1. 8 8
      RedAnt ERP Mobile/HMLG Scan Order.xcodeproj/project.pbxproj
  2. 1 1
      RedAnt ERP Mobile/HMLG Scan Order.xcodeproj/xcuserdata/ruizhang.xcuserdatad/xcschemes/xcschememanagement.plist
  3. 79 0
      RedAnt ERP Mobile/HMLG Scan Order/CartViewController.h
  4. 6350 0
      RedAnt ERP Mobile/HMLG Scan Order/CartViewController.m
  5. 0 9
      RedAnt ERP Mobile/RedAnt ERP Mobile.xcworkspace/contents.xcworkspacedata
  6. 248 55
      RedAnt ERP Mobile/common/ERP_Mobile_Cart.storyboard
  7. 1 1
      RedAnt ERP Mobile/common/Functions/cart/CartViewController.h
  8. 21 2
      RedAnt ERP Mobile/common/Functions/cart/CartViewController.m
  9. 6 0
      RedAnt ERP Mobile/common/Functions/offline/OLDataProvider.m
  10. 12 44
      RedAnt ERP Mobile/iSales-CONTRAST.xcodeproj/project.pbxproj
  11. 1 1
      RedAnt ERP Mobile/iSales-CONTRAST.xcodeproj/xcuserdata/ruizhang.xcuserdatad/xcschemes/xcschememanagement.plist
  12. 76 0
      RedAnt ERP Mobile/iSales-CONTRAST/ContrastModelItemCell.h
  13. 574 0
      RedAnt ERP Mobile/iSales-CONTRAST/ContrastModelItemCell.m
  14. 0 41
      RedAnt ERP Mobile/iSales-NPD.xcodeproj/project.pbxproj
  15. 0 20
      RedAnt ERP Mobile/iSales-TRADESHOW.xcodeproj/project.pbxproj
  16. 0 16
      RedAnt ERP Mobile/iSales-UNITED WAVER.xcodeproj/project.pbxproj
  17. 0 55
      RedAnt ERP Mobile/iSales-USAI.xcodeproj/project.pbxproj
  18. 12 3
      common/customUI/CommonEditoriPad/iPadCommonEditorCellModel.xib
  19. 6 6
      common/customUI/commoneditor/CommonEditorAutoCompleteView.m
  20. 1 0
      common/customUI/commoneditor/CommonEditorCellModel.h
  21. 40 268
      common/customUI/commoneditor/CommonEditorViewController.m

+ 8 - 8
RedAnt ERP Mobile/HMLG Scan Order.xcodeproj/project.pbxproj

@@ -18,7 +18,6 @@
 		3C473C9127C4D22900CC8C12 /* ScanUserListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C473C9027C4D22900CC8C12 /* ScanUserListViewController.m */; };
 		3C4DA61F27B50199001EB44E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3C4DA61D27B50199001EB44E /* Main.storyboard */; };
 		3C4DA62527B503B1001EB44E /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C4DA62327B503B1001EB44E /* MainViewController.m */; };
-		3C4F575928656BA5003C0005 /* CartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C4F575828656BA5003C0005 /* CartViewController.m */; };
 		3C51492F273CF9B900F78617 /* DBUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C51492E273CF9B900F78617 /* DBUtil.m */; };
 		3C514932273D092A00F78617 /* EnumSelectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C514931273D092A00F78617 /* EnumSelectViewController.m */; };
 		3C514947273D095900F78617 /* CommonEditorCellSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C514934273D095800F78617 /* CommonEditorCellSwitch.m */; };
@@ -87,6 +86,7 @@
 		3C8855AA27E85A0C005DC3FA /* ScanCartItemCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C8855A927E85A0C005DC3FA /* ScanCartItemCell.m */; };
 		3C9F81D427F6E04300B4C511 /* SetupServerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C9F81D327F6E04300B4C511 /* SetupServerViewController.m */; };
 		3C9F81D727F831A500B4C511 /* ScanServerListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C9F81D627F831A500B4C511 /* ScanServerListViewController.m */; };
+		3CA6DDC128E54D1C003655FF /* CartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CA6DDBF28E54D1C003655FF /* CartViewController.m */; };
 		3CABBF122836224500FA3352 /* guest.json in Resources */ = {isa = PBXBuildFile; fileRef = 3CABBF112836224400FA3352 /* guest.json */; };
 		3CABE0202861A51F00CF0DC1 /* StockViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CABE01F2861A51E00CF0DC1 /* StockViewController.m */; };
 		3CABE0232861A5E000CF0DC1 /* StockTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CABE0222861A5E000CF0DC1 /* StockTableViewCell.m */; };
@@ -356,8 +356,6 @@
 		3C4DA61E27B50199001EB44E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
 		3C4DA62327B503B1001EB44E /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainViewController.m; sourceTree = "<group>"; };
 		3C4DA62427B503B1001EB44E /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainViewController.h; sourceTree = "<group>"; };
-		3C4F575728656BA5003C0005 /* CartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CartViewController.h; path = common/Functions/cart/CartViewController.h; sourceTree = SOURCE_ROOT; };
-		3C4F575828656BA5003C0005 /* CartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CartViewController.m; path = common/Functions/cart/CartViewController.m; sourceTree = SOURCE_ROOT; };
 		3C51492D273CF9B900F78617 /* DBUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DBUtil.h; path = common/DBUtil.h; sourceTree = SOURCE_ROOT; };
 		3C51492E273CF9B900F78617 /* DBUtil.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = DBUtil.m; path = common/DBUtil.m; sourceTree = SOURCE_ROOT; };
 		3C514930273D092A00F78617 /* EnumSelectViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EnumSelectViewController.h; path = ../../common/customUI/commoneditor/EnumSelectViewController.h; sourceTree = "<group>"; };
@@ -470,6 +468,8 @@
 		3C9F81D327F6E04300B4C511 /* SetupServerViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SetupServerViewController.m; sourceTree = "<group>"; };
 		3C9F81D527F831A500B4C511 /* ScanServerListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScanServerListViewController.h; sourceTree = "<group>"; };
 		3C9F81D627F831A500B4C511 /* ScanServerListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ScanServerListViewController.m; sourceTree = "<group>"; };
+		3CA6DDBF28E54D1C003655FF /* CartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CartViewController.m; sourceTree = "<group>"; };
+		3CA6DDC028E54D1C003655FF /* CartViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CartViewController.h; sourceTree = "<group>"; };
 		3CABBF112836224400FA3352 /* guest.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = guest.json; path = common/Functions/OLO/guest.json; sourceTree = SOURCE_ROOT; };
 		3CABE01E2861A51E00CF0DC1 /* StockViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StockViewController.h; sourceTree = "<group>"; };
 		3CABE01F2861A51E00CF0DC1 /* StockViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StockViewController.m; sourceTree = "<group>"; };
@@ -1391,8 +1391,8 @@
 		7143E0C919414E4B00B2EB1A /* cartView */ = {
 			isa = PBXGroup;
 			children = (
-				3C4F575728656BA5003C0005 /* CartViewController.h */,
-				3C4F575828656BA5003C0005 /* CartViewController.m */,
+				3CA6DDC028E54D1C003655FF /* CartViewController.h */,
+				3CA6DDBF28E54D1C003655FF /* CartViewController.m */,
 				7162A50C1C58704600AB630E /* BundleModelCell.h */,
 				7162A50D1C58704600AB630E /* BundleModelCell.m */,
 				7162A50E1C58704600AB630E /* BundleModelViewController.h */,
@@ -2183,9 +2183,9 @@
 				71E9F6C21F8B57E40052C78E /* RANetworkTaskDelegate.m in Sources */,
 				712C40B91C731126000E6831 /* ItemNotesViewController.m in Sources */,
 				3CDDB268273A5A0400681F78 /* StrikethroughLabel.m in Sources */,
-				3C4F575928656BA5003C0005 /* CartViewController.m in Sources */,
 				7162A5AD1C58735900AB630E /* TearSheetParamViewController.m in Sources */,
 				7141DD611C5747CE00F7DF59 /* NSData+Base64.m in Sources */,
+				3CA6DDC128E54D1C003655FF /* CartViewController.m in Sources */,
 				71BBA2431CEAEF0700C91DED /* zip.c in Sources */,
 				7141DD5F1C5747CE00F7DF59 /* AESCrypt.m in Sources */,
 				3C514959273D098700F78617 /* DatePickerViewController.m in Sources */,
@@ -2519,7 +2519,7 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				CURRENT_PROJECT_VERSION = 51964;
+				CURRENT_PROJECT_VERSION = 51974;
 				DEVELOPMENT_TEAM = HXWLAA5YN5;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -2563,7 +2563,7 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				CURRENT_PROJECT_VERSION = 51964;
+				CURRENT_PROJECT_VERSION = 51974;
 				DEVELOPMENT_TEAM = HXWLAA5YN5;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",

+ 1 - 1
RedAnt ERP Mobile/HMLG Scan Order.xcodeproj/xcuserdata/ruizhang.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -7,7 +7,7 @@
 		<key>HMLG Scan Order.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>2</integer>
+			<integer>5</integer>
 		</dict>
 	</dict>
 </dict>

+ 79 - 0
RedAnt ERP Mobile/HMLG Scan Order/CartViewController.h

@@ -0,0 +1,79 @@
+//
+//  CartViewController.h
+//  RedAnt ERP Mobile
+//
+//  Created by Ray on 14-6-6.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+// SCANNER ORDER  CART 
+
+
+#import <UIKit/UIKit.h>
+//#import "CommonGridViewController.h"
+
+#import "CommonEditorViewController.h"
+#import "ActiveViewController.h"
+
+@class ModelItemCell;
+
+@interface CartViewController : ActiveViewController <UITableViewDataSource,UITableViewDelegate,CommonEditorViewControllerDelegate/*,CommonGridViewControllerDelegate,ModelItemCellDelegate*/,UIAlertViewDelegate>
+@property (strong, nonatomic) IBOutlet UITableView *itemListTable;
+@property (strong, nonatomic) IBOutlet UIView *cartItemView;
+//@property (strong, nonatomic) IBOutlet UIView *orderCreateView;
+//@property (strong,nonatomic) NSMutableDictionary* content_data;
+@property (strong,nonatomic) NSMutableArray* content_arr;
+@property (strong,nonatomic) NSDictionary* freejson;
+@property (weak, nonatomic) IBOutlet UIButton *btnBulkDiscount;
+
+@property (weak, nonatomic) IBOutlet UIButton *btnPrice;
+@property (strong,nonatomic) NSString* orderid;
+@property (strong, nonatomic) IBOutlet UIButton *btnselect;
+@property (strong, nonatomic) IBOutlet UIButton *btndelete;
+@property (strong, nonatomic)  NSIndexPath *indexPath;
+@property double total;
+@property double surcharge;
+@property double total_cuft;
+@property double total_weight;
+@property int total_carton;
+@property int total_item;
+@property int total_QTY;
+@property bool edit_check;
+@property (weak, nonatomic) IBOutlet UIButton *btnOrderDiscount;
+@property (weak, nonatomic) IBOutlet UILabel *labelTotalPrice;
+@property (weak, nonatomic) IBOutlet UILabel *labelTotalSurcharge;
+
+//@property (weak, nonatomic) IBOutlet UIButton *btnScanDiscount;
+
+@property (strong,nonatomic) NSString* notes;
+
+@property (strong, nonatomic) IBOutlet UILabel *labelTotal;
+
+@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *mum;
+-(void)placeOrder;
+
+@property (nonatomic , copy) void (^onFinishLoad)(void);
+//@property (strong, nonatomic) IBOutlet UITableView *orderInfoTableView;
+//@property (strong, nonatomic) IBOutlet UITextField *editCount;
+//@property (strong, nonatomic) IBOutlet UITextField *editOrderID;
+//@property (strong, nonatomic) IBOutlet UIButton *btnAddToOrder;
+@property (strong, nonatomic) IBOutlet UIView *toolpanel;
+@property (strong, nonatomic) IBOutlet UIToolbar *toolbar;
+@property (strong, nonatomic) IBOutlet UIBarButtonItem *btn_addwish;
+@property (strong, nonatomic) IBOutlet UIBarButtonItem *btn_delete;
+@property (strong, nonatomic) IBOutlet UIBarButtonItem *btn_edit_select;
+
+@property (strong, nonatomic) IBOutlet UILabel *label_net_err;
+
+@property (strong, nonatomic) NSMutableArray *edit_select_arr;
+@property (strong, nonatomic) NSString *scanner_code;
+
+@property (strong, nonatomic) IBOutlet UILabel *label_cuft;
+@property (strong, nonatomic) IBOutlet UILabel *label_weight;
+@property (strong, nonatomic) IBOutlet UILabel *label_carton;
+@property (strong, nonatomic) IBOutlet UILabel *label_qty;
+@property (strong, nonatomic) IBOutlet UILabel *label_items;
+@property (strong, nonatomic) IBOutlet UILabel *label_notes;
+
+
+@end

+ 6350 - 0
RedAnt ERP Mobile/HMLG Scan Order/CartViewController.m

@@ -0,0 +1,6350 @@
+//
+//  CartViewController.m
+//  RedAnt ERP Mobile
+//
+//  Created by Ray on 14-6-6.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+
+#import "RAUtils.h"
+#import "CartViewController.h"
+#import "ModelItemCell.h"
+#import "RANetwork.h"
+//#import "CommonGridViewController.h"
+#import "CreateOrderViewController.h"
+#import "DetailViewController.h"
+#import "EditModelPriceViewController.h"
+#import "MainViewController.h"
+#import "LoginViewController.h"
+#import "ItemNotesViewController.h"
+
+#import "CartGeneralNotesViewController.h"
+#import "DefaultAppearance.h"
+#import "DefaultTableHeaderView.h"
+#import "SortItemViewController.h"
+#import "SortButton.h"
+#import "NotificationNameCenter.h"
+#import "RASingleton.h"
+#import "JKMessageBoxController.h"
+#import "RAPDFViewController.h"
+
+
+
+#ifdef SCANNER_ORDER
+#import "ScanCartItemCell.h"
+#import "ScanDiscountViewController.h"
+#else
+
+
+#endif
+
+
+#ifdef BUILD_CONTRAST
+#import "OrderDiscountViewController.h"
+#endif
+
+#ifdef BACKORDER_PROCESS
+#import "RAOrderEditorViewController.h"
+
+#endif
+
+
+
+#import "CustomerEditViewController.h"
+//#define ALERT_FREE 1024
+//#define ALERT_DEL 1025
+//#define ALERT_SET_FREE 1026
+//#define ALERT_RESTORE_FREE 1027
+
+@interface CartViewController ()
+{
+    CGRect cancelButtonFrame;
+    
+}
+@property (nonatomic,strong) SortItemViewController *sortItemController;
+@property (nonatomic,assign) int sortIndex;
+@property (nonatomic,strong) SortButton *sortButton;
+@property (strong, nonatomic) IBOutlet UIButton *placeOrderButton;
+@property (strong, nonatomic) IBOutlet UIButton *cancelOrderButton;
+
+@property (nonatomic,strong) NSOperationQueue *dataOperationQueue;
+@property (strong, nonatomic) IBOutlet UIButton *emailButton;
+@property (strong, nonatomic) IBOutlet UIButton *printButton;
+@property (weak, nonatomic) IBOutlet UIButton *editButton;
+@property (weak, nonatomic) IBOutlet UIButton *continueButton;
+
+@property (weak, nonatomic) IBOutlet UILabel *labelTotalcuft;
+@property (weak, nonatomic) IBOutlet UILabel *labelTotalWeight;
+@property (weak, nonatomic) IBOutlet UILabel *labelTotalCarton;
+@property (weak, nonatomic) IBOutlet UILabel *valuecuft;
+@property (weak, nonatomic) IBOutlet UILabel *valueweight;
+@property (weak, nonatomic) IBOutlet UILabel *valuecarton;
+
+@property (nonatomic,assign) BOOL currentOrderIsMerged;
+@property (nonatomic,strong) DefaultTableHeaderView *cartIndicatorBar;
+@property (nonatomic,assign) BOOL back_order_flag;
+@property (nonatomic,strong) NSDictionary *cart_json;
+@property (nonatomic,copy) NSString *print_url;
+
+@property (nonatomic,assign) BOOL available;///<所有Model均有库存,才能Place Order。
+
+@end
+
+@implementation CartViewController
+
+- (NSOperationQueue *)dataOperationQueue {
+    if (!_dataOperationQueue) {
+        _dataOperationQueue = [[NSOperationQueue alloc] init];
+        _dataOperationQueue.maxConcurrentOperationCount = 1;
+    }
+    return _dataOperationQueue;
+}
+
+
+- (void)dealloc {
+        #ifndef RA_NOTIFICATION
+    [[NSNotificationCenter defaultCenter] removeObserver:self];
+#endif
+}
+
+-(void) logout
+{
+    [super logout];
+    [self.content_arr removeAllObjects];
+    [self refresh_ui];
+    self.cart_json = nil;
+}
+
+
+- (IBAction)OnEditSelectClick:(id)sender {
+    
+    
+    
+    
+    NSMutableArray* arr_ids = [[NSMutableArray alloc] init];
+    
+    
+    long count = self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
+    
+    if(count==0)
+    {
+        [RAUtils message_alert:@"No item in the cart" title:@"Cart" controller:self] ;
+        return;
+    }
+    for(int i=0;i<count;i++)
+    {
+        NSMutableDictionary * item_json = [self.content_arr[i] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
+        
+        [arr_ids addObject:[NSNumber numberWithInt:[[item_json valueForKey:@"cart_item_id"] intValue]]];
+        
+    }
+    
+    NSString * ids = [arr_ids componentsJoinedByString:@","];
+    
+    
+    
+    UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Select all model and" message:nil preferredStyle:UIAlertControllerStyleAlert];
+    //block代码块取代了delegate
+    
+    
+    
+    UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Delete" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+        UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Are you sure remove all models from cart?" message:nil preferredStyle:UIAlertControllerStyleAlert];
+        //block代码块取代了delegate
+        
+        
+        
+        UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+            __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Remove Models From Cart" completion:^{
+                [RANetwork request_remove_cart:ids completionHandler:^(NSMutableDictionary *result) {
+                                NSMutableDictionary* cart_json =result;
+                                
+                                
+                //                [waitalert dismissViewControllerAnimated:YES completion:nil];
+                                [waitalert dismissViewControllerAnimated:YES completion:^{
+                                    if([[cart_json valueForKey:@"result"] intValue]==2)
+                                                    {
+                                                        
+                                                        [self end_edit];
+                                                        
+                                                        
+                                                        
+                                    #ifdef RA_NOTIFICATION
+                                                        [ActiveViewController Notify:@"CartViewController,CategoryViewController,OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+                                    #else
+                                                        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+                                                        [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:true];
+                                                        [((MainViewController*)appDelegate.main_vc) reloadCategory:true immediately:true];
+                                                        [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+                                    #endif
+                                                    }
+                                                    else
+                                                    {
+                                                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Delete Model" controller:self] ;
+                                                    }
+                                }];
+                                
+                                
+                                
+                                
+                                
+                                
+                            }];
+
+            }];
+            
+            //            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//                NSDictionary* cart_json = [RANetwork cart_remove:ids];
+//
+//                dispatch_async(dispatch_get_main_queue(), ^{
+//
+//                    [waitalert dismissViewControllerAnimated:YES completion:nil];
+//
+//                    if([[cart_json valueForKey:@"result"] intValue]==2)
+//                    {
+//
+//                        [self end_edit];
+//
+//
+//
+//#ifdef RA_NOTIFICATION
+//                        [ActiveViewController Notify:@"CartViewController,CategoryViewController,OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+//#else
+//                        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+//                        [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:true];
+//                        [((MainViewController*)appDelegate.main_vc) reloadCategory:true immediately:true];
+//                        [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+//#endif
+//                    }
+//                    else
+//                    {
+//                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Delete Model" controller:self] ;
+//                    }
+//
+//
+//
+//                });
+//            });
+            
+            
+        }];
+        
+        UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+            DebugLog(@"No");
+        }];
+        [alertControl addAction:actionOne];
+        
+        [alertControl addAction:alertthree];
+        
+        //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+        
+        
+        [self presentViewController:alertControl animated:YES completion:nil];
+        
+        DebugLog(@"%@",self.edit_select_arr);
+        
+        
+    }];
+    UIAlertAction *actionTwo = [UIAlertAction actionWithTitle:@"Move To Wish List" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
+        __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Move Models To Wish List" completion:^{
+            [RANetwork request_move_cart2wish:ids completionHandler:^(NSMutableDictionary *result) {
+                        NSDictionary* cart_json =result;
+                        
+                        
+                        [waitalert dismissViewControllerAnimated:YES completion:^{
+                            if([[cart_json valueForKey:@"result"] intValue]==2)
+                            {
+                                
+                                
+                                
+                                
+            #ifdef RA_NOTIFICATION
+                                [ActiveViewController Notify:@"WatchListViewController,CartViewController,OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+            #else
+                                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
+                                [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:true];
+                                [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+            #endif
+                                
+                                
+                                [self end_edit];
+                            }
+                            else
+                            {
+                                [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Move Models To Wish List" controller:self] ;
+                            }
+                        }];
+                        
+
+                        
+                        
+                        
+                        
+                    }];
+
+        }];
+        //        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//            NSDictionary* cart_json = [RANetwork move_cart2wish:ids];
+//
+//            dispatch_async(dispatch_get_main_queue(), ^{
+//
+//                [waitalert dismissViewControllerAnimated:YES completion:nil];
+//
+//                if([[cart_json valueForKey:@"result"] intValue]==2)
+//                {
+//
+//
+//
+//
+//#ifdef RA_NOTIFICATION
+//                    [ActiveViewController Notify:@"WatchListViewController,CartViewController,OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+//#else
+//                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                    [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
+//                    [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:true];
+//                    [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+//#endif
+//
+//
+//                    [self end_edit];
+//                }
+//                else
+//                {
+//                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Move Models To Wish List" controller:self] ;
+//                }
+//
+//
+//
+//            });
+//        });
+        
+        
+    }];
+    
+    UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+        DebugLog(@"No");
+    }];
+    [alertControl addAction:actionOne];
+    [alertControl addAction:actionTwo];
+    [alertControl addAction:alertthree];
+    
+    //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+    
+    
+    [self presentViewController:alertControl animated:YES completion:nil];
+    
+    DebugLog(@"%@",self.edit_select_arr);
+    
+    
+    
+}
+- (IBAction)onEditAddWishClick:(id)sender {
+    if(self.edit_select_arr.count==0)
+    {
+        [RAUtils message_alert:@"You must select at least one model." title:@"Cannot Move To Wish List" controller:self] ;
+        return;
+    }
+    
+    NSString * ids = [self.edit_select_arr componentsJoinedByString:@","];
+    
+    //    UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Are you sure remove selected models from cart?" message:nil preferredStyle:UIAlertControllerStyleAlert];
+    //    //block代码块取代了delegate
+    //
+    //
+    //
+    //    UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+    __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Move Models To Wish List" completion:^{
+        [RANetwork request_move_cart2wish:ids completionHandler:^(NSMutableDictionary *result) {
+                NSDictionary* cart_json = result;
+                
+                
+                [waitalert dismissViewControllerAnimated:YES completion:^{
+                    if([[cart_json valueForKey:@"result"] intValue]==2)
+                    {
+                        
+                        [self end_edit];
+                        
+        #ifdef RA_NOTIFICATION
+                        [ActiveViewController Notify:@"WatchListViewController,CartViewController,OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+        #else
+                        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+                        [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
+                        [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:true];
+                        [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+        #endif
+                        
+                    }
+                    else
+                    {
+                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Move To Wish List" controller:self] ;
+                    }
+                }];
+                
+
+                
+                
+                
+                
+            }];
+
+    }];
+    
+        
+//    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//        NSDictionary* cart_json = [RANetwork move_cart2wish:ids];
+//
+//        dispatch_async(dispatch_get_main_queue(), ^{
+//
+//            [waitalert dismissViewControllerAnimated:YES completion:nil];
+//
+//            if([[cart_json valueForKey:@"result"] intValue]==2)
+//            {
+//
+//                [self end_edit];
+//
+//#ifdef RA_NOTIFICATION
+//                [ActiveViewController Notify:@"WatchListViewController,CartViewController,OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+//#else
+//                AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+//                [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
+//                [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:true];
+//                [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+//#endif
+//
+//            }
+//            else
+//            {
+//                [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Move To Wish List" controller:self] ;
+//            }
+//
+//
+//
+//        });
+//    });
+    
+    
+    //    }];
+    
+    //    UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+    //        DebugLog(@"No");
+    //    }];
+    //    [alertControl addAction:actionOne];
+    //
+    //    [alertControl addAction:alertthree];
+    //
+    //    //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+    //
+    //
+    //    [self presentViewController:alertControl animated:YES completion:nil];
+    //
+    //    DebugLog(@"%@",self.edit_select_arr);
+    
+}
+- (IBAction)onEditDelClick:(id)sender {
+    
+    
+    if(self.edit_select_arr.count==0)
+    {
+        [RAUtils message_alert:@"You must select at least one model." title:@"Cannot Delete From Cart" controller:self] ;
+        return;
+    }
+    
+    NSString * ids = [self.edit_select_arr componentsJoinedByString:@","];
+    
+    UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Are you sure remove selected models from cart?" message:nil preferredStyle:UIAlertControllerStyleAlert];
+    //block代码块取代了delegate
+    
+    
+    
+    UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+        __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Remove Models From Cart" completion:^{
+            [RANetwork request_remove_cart:ids completionHandler:^(NSMutableDictionary *result) {
+                        NSMutableDictionary* cart_json =result;
+                        
+                        
+                        [waitalert dismissViewControllerAnimated:YES completion:^{
+                            if([[cart_json valueForKey:@"result"] intValue]==2)
+                            {
+                                
+                                [self end_edit];
+                                
+                                
+            #ifdef RA_NOTIFICATION
+                                [ActiveViewController Notify:@"CartViewController,CategoryViewController,OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+            #else
+                                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:true];
+                                [((MainViewController*)appDelegate.main_vc) reloadCategory:true immediately:true];
+                                [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+            #endif
+                            }
+                            else
+                            {
+                                [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Delete Model" controller:self] ;
+                            }
+                        }];
+                        
+
+                        
+                        
+                        
+                        
+                    }];
+
+        }];
+        //        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//            NSDictionary* cart_json = [RANetwork cart_remove:ids];
+//
+//            dispatch_async(dispatch_get_main_queue(), ^{
+//
+//                [waitalert dismissViewControllerAnimated:YES completion:nil];
+//
+//                if([[cart_json valueForKey:@"result"] intValue]==2)
+//                {
+//
+//                    [self end_edit];
+//
+//
+//#ifdef RA_NOTIFICATION
+//                    [ActiveViewController Notify:@"CartViewController,CategoryViewController,OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+//#else
+//                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                    [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:true];
+//                    [((MainViewController*)appDelegate.main_vc) reloadCategory:true immediately:true];
+//                    [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+//#endif
+//                }
+//                else
+//                {
+//                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Delete Model" controller:self] ;
+//                }
+//
+//
+//
+//            });
+//        });
+        
+        
+    }];
+    
+    UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+        DebugLog(@"No");
+    }];
+    [alertControl addAction:actionOne];
+    
+    [alertControl addAction:alertthree];
+    
+    //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+    
+    
+    [self presentViewController:alertControl animated:YES completion:nil];
+    
+    DebugLog(@"%@",self.edit_select_arr);
+}
+
+- (IBAction)onEndEditClick:(id)sender {
+    [self end_edit];
+}
+
+-(void)begin_edit
+{
+    self.toolpanel.hidden = true;
+    self.toolbar.hidden = false;
+    
+    //   DebugLog(@"begin edit %@",NSStringFromCGRect(self.cartItemView.frame));
+    UIInterfaceOrientation orientation = [[UIApplication sharedApplication]statusBarOrientation];
+    if ( UIInterfaceOrientationIsPortrait(orientation))
+        self.cartItemView.frame = CGRectMake(0,40,768,840);
+    else
+        self.cartItemView.frame = CGRectMake(0,40,1024,584);
+    [self.itemListTable setEditing:true animated:YES];
+    [self.itemListTable reloadData];
+}
+-(void) end_edit
+{
+    self.toolpanel.hidden=false;
+    self.toolbar.hidden=true;
+    //    DebugLog(@"end edit %@",NSStringFromCGRect(self.cartItemView.frame));
+    
+    
+    UIInterfaceOrientation orientation = [[UIApplication sharedApplication]statusBarOrientation];
+    if ( UIInterfaceOrientationIsPortrait(orientation))
+        self.cartItemView.frame = CGRectMake(0,40,768,760);
+    else
+        self.cartItemView.frame = CGRectMake(0,40,1024,508);
+    
+    [self.itemListTable setEditing:false animated:YES];
+    [self.edit_select_arr removeAllObjects];
+    [self.itemListTable reloadData];
+    //    [self reload_data];
+}
+
+- (IBAction)onEditClick:(id)sender {
+    
+//        AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//    
+//        [appDelegate test_onDecodedDataResult:@"4400022"];
+//    
+//    
+//        return;
+    
+    
+    [self begin_edit];
+}
+#ifndef RA_NOTIFICATION
+-(void) reload_container_getdata:(bool) update_data
+{
+    
+    [super reload_container_getdata:update_data];
+    if(update_data)
+        [self reload_data];
+    else
+    {
+        [self.itemListTable reloadData];
+        [self refresh_total];
+    }
+}
+#endif
+
+
+-(void) showHidePrice
+{
+#ifndef RA_NOTIFICATION
+    [self reload_container_getdata:false];
+#endif
+    //    [self refresh_total];
+    
+}
+
+
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
+{
+    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
+    if (self) {
+        // Custom initialization
+        
+    }
+    return self;
+}
+- (IBAction)imgbtnClick:(UIButton *)sender {
+    
+#ifdef SCANNER_ORDER
+    
+    return;
+#endif
+    UITableViewCell* cell =(UITableViewCell*) sender.superview.superview;
+    
+    NSIndexPath *   indexPath = [self.itemListTable indexPathForCell:cell];
+    //            DebugLog(@"shouldchangeedit %d_%d",indexPath.section,indexPath.row);
+    NSDictionary * item_json = nil;
+    if (self.back_order_flag) {
+        item_json = [self itemJsonAtIndexPath:indexPath];
+    } else {
+        item_json = self.content_arr[indexPath.row];//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
+    }
+    
+    NSString* product_id = [item_json valueForKey:@"product_id"];
+    NSString *name = [item_json valueForKey:@"model"];
+    
+    int is_rate = [item_json[@"is_rate"] intValue];
+    if(is_rate==1)
+        return;
+    
+    DetailViewController* dvc = [[UIStoryboard storyboardWithName:@"ERP_Mobile_Model" bundle:nil] instantiateViewControllerWithIdentifier:@"DetailViewController" ];
+    //            dvc
+    
+    dvc.product_id=product_id;
+    dvc.category_id=nil;
+    dvc.ispush=true;
+    dvc.model_name = name;
+    
+    [dvc reload];
+    [self.navigationController pushViewController:dvc animated:true];
+}
+-(void)viewWillLayoutSubviews
+{
+    //    if(self.showDetail==true)
+    //    {
+    //        UIInterfaceOrientation orientation =[UIApplication sharedApplication].statusBarOrientation;
+    //        int width=175;
+    //        // int height;
+    //        if(orientation == UIDeviceOrientationLandscapeLeft ||orientation == UIDeviceOrientationLandscapeRight)
+    //        {
+    //            width = 370;
+    //            //      height = 400;
+    //        }
+    //        else
+    //        {
+    //            //      height = 300;
+    //            width = 175;
+    //        }
+    //
+    //
+    //        CGRect frame = CGRectMake(0, 64, width, self.view.bounds.size.height-64);
+    //
+    //        self.collectionview.frame=frame;
+    //
+    //
+    //
+    //        CGRect framedetail = CGRectMake(width,64 ,self.view.bounds.size.width-width,self.view.bounds.size.height-64);
+    //        self.detailView.frame = framedetail;
+    //    }
+    
+    
+    self.toolpanel.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.toolpanel.bounds].CGPath;
+    
+    
+    //    self.collectionview.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.collectionview.bounds].CGPath;
+}
+
+- (void)viewWillAppear:(BOOL)animated
+{
+    
+    [super viewWillAppear:animated];
+    
+    // print 13 email 19 cancel 24 place order
+
+    // Shop 权限检查
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if (appDelegate.user && appDelegate.user_type == USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore) {
+        if (![RASingleton sharedInstance].permissions_edit_order) {
+            
+            CGRect frame0 = self.cancelOrderButton.frame;
+            CGRect frame1 = self.placeOrderButton.frame;
+            CGRect frame2 = self.emailButton.frame;
+            CGRect frame3 = self.printButton.frame;
+            
+            CGFloat x = CGRectGetMaxX(frame1) - frame0.size.width;
+            frame0.origin.x = x;
+            self.cancelOrderButton.frame = frame0;
+            
+            x -= 20 + CGRectGetWidth(frame2);
+            frame2.origin.x = x;
+            self.emailButton.frame = frame2;
+            
+            x -= 20 + CGRectGetWidth(frame3);
+            frame3.origin.x = x;
+            self.printButton.frame = frame3;
+            
+            self.placeOrderButton.hidden = YES;
+        } else {
+            self.placeOrderButton.hidden = NO;
+            CGSize size = cancelButtonFrame.size;
+            CGFloat x = CGRectGetMinX(self.placeOrderButton.frame) - 24 - size.width;
+            CGFloat y = CGRectGetMinY(self.placeOrderButton.frame);
+            self.cancelOrderButton.frame = CGRectMake(x, y, size.width, size.height);
+            
+            CGRect frame2 = self.emailButton.frame;
+            x -= 20 + CGRectGetWidth(frame2);
+            frame2.origin.x = x;
+            self.emailButton.frame = frame2;
+            
+            CGRect frame3 = self.printButton.frame;
+            x -= 20 + CGRectGetWidth(frame3);
+            frame3.origin.x = x;
+            self.printButton.frame = frame3;
+        }
+    } else {
+//        self.cancelOrderButton.frame = cancelButtonFrame;
+        self.placeOrderButton.hidden = NO;
+        CGSize size = cancelButtonFrame.size;
+        CGFloat x = CGRectGetMinX(self.placeOrderButton.frame) - 24 - size.width;
+        CGFloat y = CGRectGetMinY(self.placeOrderButton.frame);
+        self.cancelOrderButton.frame = CGRectMake(x, y, size.width, size.height);
+        
+        CGRect frame2 = self.emailButton.frame;
+        x -= 20 + CGRectGetWidth(frame2);
+        frame2.origin.x = x;
+        self.emailButton.frame = frame2;
+        
+        CGRect frame3 = self.printButton.frame;
+        x -= 20 + CGRectGetWidth(frame3);
+        frame3.origin.x = x;
+        self.printButton.frame = frame3;
+    }
+#ifdef OFFLINE_MODE
+    // 离线隐藏Email
+    self.emailButton.hidden = appDelegate.offline_mode;
+    // 离线隐藏Print
+    self.printButton.hidden = appDelegate.offline_mode;
+#endif
+
+    [[self navigationController] setNavigationBarHidden:YES animated:NO];
+    
+    
+#ifdef SCANNER_ORDER
+    if(appDelegate.user_type == USER_ROLE_EMPLOYEE)
+    {
+        self.btnBulkDiscount.hidden = false;
+    }
+    else
+        self.btnBulkDiscount.hidden = true;
+#endif
+}
+
+- (void)checkProductAvailable:(NSArray *)contents {
+    if (contents == nil) {
+        self.available = NO;
+        return;
+    }
+    [contents enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
+        
+        if ([obj isKindOfClass:[NSDictionary class]]) {
+            
+            NSDictionary *item_json = (NSDictionary *)obj;
+            BOOL isAvailable = ![[item_json valueForKey:@"is_out_of_stock"] boolValue];
+            self.available = self.available && isAvailable;
+
+        }
+        
+    }];
+}
+
+- (void)clearContent {
+    dispatch_async(dispatch_get_main_queue(), ^{
+        self.freejson = nil;
+        self.notes = nil;
+        self.content_arr = nil;
+        self.currentOrderIsMerged = nil;
+        self.cart_json = nil;
+        [RASingleton sharedInstance].currentOrderIsMerged = NO;
+        self.print_url = nil;
+        
+        [self checkProductAvailable:self.content_arr];
+        [self refresh_total];
+        [self.itemListTable reloadData];
+        
+        AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+        appDelegate.cart_count = 0;
+        [appDelegate update_count_mark];
+    });
+}
+
+-(void) operation_reload_data
+{
+    if (self.dataOperationQueue.operationCount > 1) {
+        return;
+    }
+    __block AppDelegate *appDelegate = nil;
+    
+    dispatch_sync(dispatch_get_main_queue(), ^{
+        //some UI methods ej
+        appDelegate=(AppDelegate*)[[UIApplication sharedApplication] delegate];
+    });
+//    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
+#ifndef SCANNER_ORDER
+    
+    //扫码订单允许后建订单
+    if (appDelegate.order_code == nil || appDelegate.order_code.length == 0) {
+        [self clearContent];
+        return;
+    }
+#endif
+    
+    __weak typeof(self) weakself = self;
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if(weakself.isrefreshing)
+            return;
+        
+        weakself.available = YES;
+        weakself.itemListTable.hidden = true;
+        weakself.label_net_err.hidden=true;
+        weakself.isrefreshing=true;
+        //    [self.content_data removeAllObjects];
+        // [self.itemListTable reloadData];
+        //    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
+        //
+        //    [reF endRefreshing];
+        //
+        //    reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"];
+        
+        weakself.mum.center = weakself.view.center;
+        weakself.mum.hidden = YES;
+//        [self.mum startAnimating];
+        DebugLog(@"reloading...");
+        __block UIAlertController *loadingView = [RAUtils waiting_alert:self title:@"Loading" completion:^{
+            [RANetwork request_cart:weakself.sortIndex completionHandler:^(NSMutableDictionary *result) {
+                        DebugLog(@"BEGIN LOAD CART");
+                        NSDictionary* cart_json = result;
+                        
+                        //
+                        //                [self.mum stopAnimating];
+                        [loadingView dismissViewControllerAnimated:YES completion:^{
+                            //            [loadingView dismissWithClickedButtonIndex:0 animated:YES];
+                            
+                            //            self.content_data = [cart_json mutableCopy];
+            #ifdef BACKORDER_PROCESS
+                            weakself.back_order_flag = [[cart_json objectForKey:@"back_order_version"] boolValue];
+            #else
+                            weakself.back_order_flag = NO;
+            #endif
+                            
+                            if (!weakself.back_order_flag) {
+                                weakself.freejson = [cart_json objectForKey:@"freeGiveaway"];
+                                weakself.notes = [cart_json valueForKey:@"general_note"];
+                                weakself.content_arr = [RAUtils dictionary2array:cart_json count_fields:@"count" item_mark:@"item_" items_mark:nil];
+                                weakself.currentOrderIsMerged = [[cart_json valueForKey:@"is_merged_order"] boolValue];
+                                [RASingleton sharedInstance].currentOrderIsMerged = weakself.currentOrderIsMerged;
+                                [weakself.itemListTable reloadData];
+                                weakself.print_url = [cart_json valueForKey:@"cart_print_url"];
+                                
+                                
+                                [weakself checkProductAvailable:weakself.content_arr];
+                                
+                                
+                                [weakself refresh_total];
+                            } else {
+                                // v1.94
+                                weakself.freejson = [cart_json objectForKey:@"freeGiveaway"];
+                                weakself.notes = [cart_json valueForKey:@"general_note"];
+                                weakself.cart_json = cart_json;
+                                [weakself.itemListTable reloadData];
+                                weakself.print_url = [cart_json valueForKey:@"cart_print_url"];
+                                [weakself checkProductAvailable:weakself.content_arr];
+                            }
+                            
+                            int result_code=[[cart_json valueForKey:@"result"] intValue];
+                            
+                            if (weakself.dataOperationQueue.operationCount > 1) {
+                                weakself.isrefreshing=false;
+                                return;
+                            }
+                            
+                            if(result_code==2||result_code==1||result_code==0)
+                            {
+                                
+                                [weakself.edit_select_arr removeAllObjects];
+                                
+                                weakself.itemListTable.hidden = false;
+                                //                    UIApplication * app = [UIApplication sharedApplication];
+                                //                    AppDelegate *appDelegate = (AppDelegate *)[app delegate];
+                                //                    appDelegate.cart_count =weakself.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
+                                weakself.itemListTable.hidden=false;
+                                if(weakself.onFinishLoad)
+                                    weakself.onFinishLoad();
+                            }
+                            else
+                                if(result_code==RESULT_NET_ERROR)
+                                {
+                                    weakself.label_net_err.hidden=false;
+                                    weakself.itemListTable.hidden=true;
+                                }
+                                else
+                                {
+                                    if(result_code!=1)
+                                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Loading Cart" controller:weakself] ;
+                                }
+                            
+                            weakself.isrefreshing=false;
+                            DebugLog(@"FINISH LOAD CART");
+                        }];
+
+                        
+                        
+                    }];
+
+        }];
+        
+                
+//        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//            DebugLog(@"BEGIN LOAD CART");
+//            NSDictionary* cart_json = [RANetwork request_Cart:weakself.sortIndex];
+//
+//            dispatch_async(dispatch_get_main_queue(), ^{
+//                //
+////                [self.mum stopAnimating];
+//                [loadingView dismissWithClickedButtonIndex:0 animated:YES];
+//
+//                //            self.content_data = [cart_json mutableCopy];
+//#ifdef BACKORDER_PROCESS
+//                weakself.back_order_flag = [[cart_json objectForKey:@"back_order_version"] boolValue];
+//#else
+//                weakself.back_order_flag = NO;
+//#endif
+//
+//                if (!weakself.back_order_flag) {
+//                    weakself.freejson = [cart_json objectForKey:@"freeGiveaway"];
+//                    weakself.notes = [cart_json valueForKey:@"general_note"];
+//                    weakself.content_arr = [RAUtils dictionary2array:cart_json count_fields:@"count" item_mark:@"item_" items_mark:nil];
+//                    weakself.currentOrderIsMerged = [[cart_json valueForKey:@"is_merged_order"] boolValue];
+//                    [Singleton sharedInstance].currentOrderIsMerged = weakself.currentOrderIsMerged;
+//                    [weakself.itemListTable reloadData];
+//                    weakself.print_url = [cart_json valueForKey:@"cart_print_url"];
+//
+//
+//                    [weakself checkProductAvailable:weakself.content_arr];
+//
+//
+//                    [weakself refresh_total];
+//                } else {
+//                    // v1.94
+//                    weakself.freejson = [cart_json objectForKey:@"freeGiveaway"];
+//                    weakself.notes = [cart_json valueForKey:@"general_note"];
+//                    weakself.cart_json = cart_json;
+//                    [weakself.itemListTable reloadData];
+//                    weakself.print_url = [cart_json valueForKey:@"cart_print_url"];
+//                    [weakself checkProductAvailable:weakself.content_arr];
+//                }
+//
+//                int result=[[cart_json valueForKey:@"result"] intValue];
+//
+//                if (weakself.dataOperationQueue.operationCount > 1) {
+//                    weakself.isrefreshing=false;
+//                    return;
+//                }
+//
+//                if(result==2||result==1||result==0)
+//                {
+//
+//                    [weakself.edit_select_arr removeAllObjects];
+//
+//                    weakself.itemListTable.hidden = false;
+////                    UIApplication * app = [UIApplication sharedApplication];
+////                    AppDelegate *appDelegate = (AppDelegate *)[app delegate];
+////                    appDelegate.cart_count =weakself.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
+//                    weakself.itemListTable.hidden=false;
+//                    if(weakself.onFinishLoad)
+//                        weakself.onFinishLoad();
+//                }
+//                else
+//                    if(result==RESULT_NET_ERROR)
+//                    {
+//                        weakself.label_net_err.hidden=false;
+//                        weakself.itemListTable.hidden=true;
+//                    }
+//                    else
+//                    {
+//                        if(result!=1)
+//                            [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Loading Cart" controller:weakself] ;
+//                    }
+//
+//                weakself.isrefreshing=false;
+//                DebugLog(@"FINISH LOAD CART");
+//
+//            });
+//        });
+    });
+    //    [[self navigationController] setNavigationBarHidden:YES animated:NO];
+}
+
+
+
+-(void)manually_refresh
+{
+    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
+    
+    if(self.isrefreshing)
+    {
+        [reF endRefreshing];
+        return;
+    }
+    
+    reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Refreshing"];
+    [self performSelector:@selector(ReloadData) withObject:nil afterDelay:1];
+    //    DebugLog(@"refresh!!!!!!!!");
+    
+}
+-(void) ReloadData
+{
+    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
+    
+    [reF endRefreshing];
+    
+    reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"];
+    [self reload_data];
+    
+    
+}
+
+- (void)viewDidLayoutSubviews {
+    [super viewDidLayoutSubviews];
+    
+    [self layoutCartIndicatorBar];
+}
+
+- (DefaultTableHeaderView *)setupCartIndicatorBar {
+    
+    NSString* value =[DefaultAppearance get_noneappearance_value:@"DefaultTableHeaderView" valuename:@"title_text_color"];
+    
+    if(value==nil)
+        value=@"";
+    unsigned long color = strtoul([value UTF8String],0,16);
+    DefaultTableHeaderView* myView = [[DefaultTableHeaderView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 40)];
+    //  myView.backgroundColor = UIColorFromRGB(0x996633);
+    myView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
+    
+    myView.layer.shadowPath =[UIBezierPath bezierPathWithRect:myView.bounds].CGPath;
+    
+    myView.layer.shadowColor = [UIColor blackColor].CGColor;
+    myView.layer.shadowOffset = CGSizeMake(0, 0);
+    myView.layer.shadowOpacity = 0.5;
+    myView.layer.shadowRadius = 2.0;
+    
+#ifndef SCANNER_ORDER
+    self.sortButton.tag = 5678 + 0;
+    [myView addSubview:self.sortButton];
+#endif
+    UILabel *solabel = [[UILabel alloc] initWithFrame:CGRectMake(130, 9, 90, 22)];
+    solabel.tag = 5678 + 1;
+    
+    solabel.textColor=UIColorFromRGB(color);
+    solabel.backgroundColor = [UIColor clearColor];
+    solabel.autoresizingMask=UIViewAutoresizingFlexibleRightMargin;
+    solabel.text=NSLocalizedString(@"Description", nil);
+    [solabel sizeToFit];
+    [myView addSubview:solabel];
+    CGFloat x = self.itemListTable.bounds.size.width - (768 - 320);
+    
+    UILabel *contactlabel = [[UILabel alloc] initWithFrame:CGRectMake(x, 9, 90, 22)];
+    contactlabel.tag = 5678 + 2;
+    
+    contactlabel.textColor=UIColorFromRGB(color);
+    contactlabel.autoresizingMask=UIViewAutoresizingFlexibleRightMargin;
+    contactlabel.backgroundColor = [UIColor clearColor];
+    
+#ifdef SCANNER_ORDER
+    
+    NSString* pricename;
+    
+    NSDictionary *addressDic = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanAddress"];
+
+     
+     NSString* servername = [addressDic objectForKey:@"show_name"];
+    NSArray* arrsn = [RAConvertor string2arr:servername separator:@","];
+    
+    NSString * shortname = arrsn[0];
+    if(shortname.length==0)
+        shortname = servername;
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    NSDictionary* price_group = [RADataProvider get_price_group:appDelegate.price_group];
+//    self.labelPrice0.text = price_group[@"price_0"][@"display"];//appDelegate.price0_name;
+//    self.labelPrice1.text = price_group[@"price_1"][@"display"];//appDelegate.price1_name;
+    
+    
+    switch(RASingleton.sharedInstance.price_type)
+    {
+        case 0:
+//            pricename =[NSString stringWithFormat:@"%@_DDP",shortname];
+            pricename = price_group[@"price_0"][@"display"];
+            break;;
+        case 1:
+//            pricename = [NSString stringWithFormat:@"%@_WHSE",shortname];;
+            pricename=price_group[@"price_1"][@"display"];//@"WHSE";
+            break;;
+//        case 2: pricename = @"25%";
+//            break;
+    }
+    contactlabel.text=pricename;
+//    contactlabel.frame= CGRectMake(x-100, 9, 90, 22);
+//    contactlabel.tran
+#else
+    contactlabel.text=NSLocalizedString(@"Unit price", nil);
+#endif
+    [contactlabel sizeToFit];
+    [myView addSubview:contactlabel];
+    
+    x = self.itemListTable.bounds.size.width - (768 - 470);
+    UILabel *modellabel = [[UILabel alloc] initWithFrame:CGRectMake(x, 9, 90, 22)];
+    modellabel.tag = 5678 + 3;
+    
+    modellabel.textColor=UIColorFromRGB(color);
+    modellabel.autoresizingMask=UIViewAutoresizingFlexibleLeftMargin;
+    modellabel.backgroundColor = [UIColor clearColor];
+    modellabel.text=NSLocalizedString(@"Discount/QTY", nil);
+    [modellabel sizeToFit];
+    [myView addSubview:modellabel];
+    x = self.itemListTable.bounds.size.width - (768 - 640);
+    
+    UILabel *pricelabel = [[UILabel alloc] initWithFrame:CGRectMake(x, 9, 90, 22)];
+    pricelabel.tag = 5678 + 4;
+    
+    pricelabel.textColor=UIColorFromRGB(color);
+    pricelabel.autoresizingMask=UIViewAutoresizingFlexibleLeftMargin;
+    pricelabel.backgroundColor = [UIColor clearColor];
+    pricelabel.text=NSLocalizedString(@"Set/Subtotal", nil);
+    [pricelabel sizeToFit];
+    [myView addSubview:pricelabel];
+    
+    return myView;
+}
+
+- (void)layoutCartIndicatorBar {
+    CGFloat x = self.itemListTable.bounds.size.width - (768 - 320);
+    
+    UILabel *solabel = [self.cartIndicatorBar viewWithTag:5678 + 1];
+    [solabel sizeToFit];
+    
+    UILabel *contactlabel = [self.cartIndicatorBar viewWithTag:5678 + 2];
+    contactlabel.frame = CGRectMake(x, 9, 90, 22);
+    [contactlabel sizeToFit];
+    
+    x = self.itemListTable.bounds.size.width - (768 - 470);
+    UILabel *modellabel = [self.cartIndicatorBar viewWithTag:5678 + 3];
+    modellabel.frame = CGRectMake(x, 9, 90, 22);
+    [modellabel sizeToFit];
+    
+    x = self.itemListTable.bounds.size.width - (768 - 640);
+    UILabel *pricelabel = [self.cartIndicatorBar viewWithTag:5678 + 4];
+    pricelabel.frame = CGRectMake(x, 9, 90, 22);
+    [pricelabel sizeToFit];
+}
+
+- (void)viewDidLoad
+{
+    [super viewDidLoad];
+    
+#ifdef BUILD_CONTRAST
+    self.btnOrderDiscount.hidden=false;
+#endif
+    
+#ifdef SCANNER_ORDER
+    self.printButton.hidden = true;
+    self.emailButton.hidden = true;
+    self.editButton.hidden = true;
+    self.continueButton.hidden = true;
+   
+    self.labelTotalcuft.hidden = false;
+    self.labelTotalWeight.hidden = true;
+    self.labelTotalCarton.hidden = true;
+    self.valuecuft.hidden = false;
+    self.valueweight.hidden = true;
+    self.valuecarton.hidden = true;
+    
+    
+
+#endif
+#ifdef RA_NOTIFICATION
+    self.support_scanner = true;
+#endif
+    self.edit_select_arr= [[NSMutableArray alloc] init];
+    self.label_net_err.layer.borderColor = [UIColor darkGrayColor].CGColor;
+    self.label_net_err.layer.borderWidth = 2.0;
+    self.label_net_err.layer.cornerRadius=15;
+    self.label_net_err.layer.masksToBounds=true;
+    
+    
+    
+#ifdef SCANNER_ORDER
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(cartrefresh:) name:@"RA_NOTIFICATION_CART_REFRESH" object:nil];
+#endif
+    
+    #ifndef RA_NOTIFICATION
+    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(priceTypeChanged:) name:Change_Price_Type_Notification object:nil];
+    
+
+#endif
+    
+    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(refresh_btn_click:)];
+    //            tap.minimumPressDuration = 0.8; //定义按的时间
+    [self.label_net_err addGestureRecognizer:tap];
+    
+    UIRefreshControl *ref = [[UIRefreshControl alloc]init];
+    ref.tag = 200 ;
+    ref.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"];
+    ref.tintColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7];
+    //    ref.hidden = true;
+    [ref addTarget:self action:@selector(manually_refresh) forControlEvents:UIControlEventValueChanged];
+    [self.itemListTable addSubview:ref];
+    
+    
+    self.sortIndex = 0;
+    self.currentOrderIsMerged = NO;
+    
+    self.toolpanel.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.toolpanel.bounds].CGPath;
+    self.toolpanel.layer.masksToBounds = false;
+    //添加四个边阴影
+    
+    self.toolpanel.layer.shadowColor = [UIColor blackColor].CGColor;
+    self.toolpanel.layer.shadowOffset = CGSizeMake(0, 0);
+    self.toolpanel.layer.shadowOpacity = 0.5;
+    self.toolpanel.layer.shadowRadius = 2.0;
+    
+    
+    cancelButtonFrame = self.cancelOrderButton.frame;
+    
+    //  CGRect frame =self.orderInfoTableView.tableHeaderView.frame;
+    //    self.orderInfoTableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.orderInfoTableView.bounds.size.width, 0.0001)];
+    //    self.orderInfoTableView.tableHeaderView.backgroundColor = [UIColor redColor];
+    //    //    self.detailTable.sectionHeaderHeight = 0.0001;
+    //    self.orderInfoTableView.sectionFooterHeight = 0.0001;
+    // Do any additional setup after loading the view.
+    
+    
+    self.cartIndicatorBar = [self setupCartIndicatorBar];
+    [self.view addSubview:self.cartIndicatorBar];
+    
+}
+-(void) cartrefresh: (NSNotification *)notification
+{
+    [OLDataProvider scanRefreshCart];
+    [ActiveViewController Notify:@"CartViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+//    [self refresh_total];
+//    [self refresh_ui];
+}
+//-(void)SelectOrder:(NSString *)orderid
+//{
+////    self.editOrderID.text=orderid;
+////    self.btnAddToOrder.enabled = true;
+//}
+- (void)didReceiveMemoryWarning
+{
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+//- (IBAction)stepperAction:(UIStepper *)sender {
+//
+//
+//}
+
+
+- (IBAction)onContinueShoppingClick:(id)sender {
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    [appDelegate switchToPreviousVC];
+    
+}
+- (IBAction)onOrderDiscount:(id)sender {
+    
+#ifdef BUILD_CONTRAST
+    
+    OrderDiscountViewController * vc =[[UIStoryboard storyboardWithName:@"ERP_Mobile_Cart" bundle:nil] instantiateViewControllerWithIdentifier:@"OrderDiscountViewController"];
+    
+    
+    
+    
+//    vc.discount=[[item_json valueForKey:@"discount"] floatValue];
+//    vc.price = [[item_json valueForKey:@"unit_price"] floatValue];
+//    vc.cart_id = [item_json valueForKey:@"cart_item_id"];//[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
+//    __block NSString* cartid=[item_json valueForKey:@"cart_item_id"];
+    //    vc.delegate = parentvc.self;
+    //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+    vc.onSetValue = ^(double discount){
+        
+//        bool bmodify=false;
+//        if(discount>0)
+//            bmodify=true;
+        
+//        NSString* notes = [item_json valueForKey:@"note"];
+//        if(notes.length==0)
+//            notes=@"";
+//        if(bmodify)
+//        {
+//
+//
+//           // if([notes isEqualToString:@""])
+////                notes=[NSString stringWithFormat:@"Note: discount %d%% off.",(int)discount];
+////
+////            NSRange range;
+////            range = [notes rangeOfString:@"PRICE MODIFIED"];
+////            if (range.location != NSNotFound) {
+////
+////            }else{
+////               notes= [notes stringByAppendingString:@"\nPRICE MODIFIED"];
+////            }
+//        }
+//        else
+//
+//        {
+////            notes =@"";
+//        }
+        
+        __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Update Discount" completion:^{
+            
+            [RANetwork request_order_discount:discount completionHandler:^(NSMutableDictionary *result) {
+                [waitalert dismissViewControllerAnimated:YES completion:^{
+                    
+                    int iresult = [result[@"result"] intValue];
+                    if(iresult==RESULT_TRUE)
+                    {
+                        [self reload_data];
+                    }
+                    else
+                    {
+                        [RAUtils message_alert:@"Can't set order discount, please contact administrator" title:@"Set Order Discount" controller:self];
+                    }
+//                                               if([[cart_json valueForKey:@"result"] intValue]==2)
+//                                               {
+//                                                   [item_json setValue:[NSNumber numberWithDouble:price ] forKey:@"unit_price"];
+//
+//                                                   [item_json setValue:[NSNumber numberWithDouble:discount ] forKey:@"discount"];
+//               //                                    [item_json setValue:notes forKey:@"note"];
+//
+//               //                                    RASingleton.sharedInstance.scan_cart[@"section_0"][[NSString stringWithFormat:@"item_%d",indexPath.row]]=item_json;
+//               //                                    if (self.back_order_flag) {
+//               //                                        [self updateItemJson:item_json atIndexPath:indexPath];
+//               //                                    } else {
+//               //                                        self.content_arr[indexPath.row ] = item_json;
+//               //                                    }
+//               //                                    tableView.editing = false;
+//                                                   //                        [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
+//                                                   //                        [self refresh_total];
+//
+//
+//                                                   [self reload_data];
+//
+//                           #ifdef RA_NOTIFICATION
+//                                                   [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+//                           #else
+//                                                   AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                                                   [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+//                           #endif
+//                                               }
+//                                               else
+//                                               {
+//                                                   [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Update Price" controller:self] ;
+//                                               }
+                                           }];
+            }];
+//            [RANetwork request_update_cart_modelprice:cartid price:price discount:discount notes:nil completionHandler:^(NSMutableDictionary *result) {
+//                                        NSDictionary* cart_json = result;
+//
+//                            [waitalert dismissViewControllerAnimated:YES completion:^{
+//                                if([[cart_json valueForKey:@"result"] intValue]==2)
+//                                {
+//                                    [item_json setValue:[NSNumber numberWithDouble:price ] forKey:@"unit_price"];
+//
+//                                    [item_json setValue:[NSNumber numberWithDouble:discount ] forKey:@"discount"];
+////                                    [item_json setValue:notes forKey:@"note"];
+//
+////                                    RASingleton.sharedInstance.scan_cart[@"section_0"][[NSString stringWithFormat:@"item_%d",indexPath.row]]=item_json;
+////                                    if (self.back_order_flag) {
+////                                        [self updateItemJson:item_json atIndexPath:indexPath];
+////                                    } else {
+////                                        self.content_arr[indexPath.row ] = item_json;
+////                                    }
+////                                    tableView.editing = false;
+//                                    //                        [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
+//                                    //                        [self refresh_total];
+//
+//
+//                                    [self reload_data];
+//
+//            #ifdef RA_NOTIFICATION
+//                                    [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+//            #else
+//                                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                                    [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+//            #endif
+//                                }
+//                                else
+//                                {
+//                                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Update Price" controller:self] ;
+//                                }
+//                            }];
+//
+//
+//
+//
+//
+//
+//                        }];
+
+        }];
+   
+       
+    };
+    
+    UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ;
+    
+    
+    
+    
+    
+    //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
+    
+    navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
+    [self presentViewController:navi animated:YES completion:^{
+        
+        //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
+        
+        DebugLog(@"EditModelPriceViewController present.........");
+        
+        //   self.btop = false;
+        //  <#code#>
+    }];
+    
+#endif
+    
+}
+
+- (IBAction)onPlaceOrder:(UIButton *)sender {
+    
+    
+#ifndef SCANNER_ORDER
+    if (![self isOrderAvailable]) {
+        return;
+    }
+#endif
+    [self placeOrder];
+    
+    
+}
+-(void) scanPlaceOrder
+{
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
+    //   NSString * string = [checked componentsJoinedByString:@","];
+    //  [params setValue:string forKey:@"cart2Checkbox"];
+    
+//        NSData* data=[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:URL_SO_ORDER ofType:@"json" ]];
+//        NSError *error=nil;
+//        NSMutableDictionary* dict=[[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error] mutableCopy];
+//
+    
+    
+//    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+//    NSString *documents = [paths objectAtIndex:0];
+    
+        
+        
+    NSString *orderdir = [OLDataProvider getScanPath];
+    
+    
+    NSMutableDictionary* dict= [[RAUtils dictfromfile:[orderdir stringByAppendingPathComponent:@"order.json"]] mutableCopy];
+    
+    int section_count = [dict[@"section_count"] intValue];
+    
+    for(int i=0;i<section_count;i++)
+    {
+        NSMutableDictionary* section = [dict[[NSString stringWithFormat:@"section_%d",i]] mutableCopy];
+        NSString* title = section[@"title"];
+        if([title isEqualToString:@"Model Information"])
+        {
+            
+            NSMutableDictionary* cart_section = RASingleton.sharedInstance.scan_cart[@"section_0"];
+            int cart_count = [cart_section[@"count"] intValue];
+            for(int j=0;j<cart_count;j++)
+            {
+                NSMutableDictionary* cart_item = [cart_section[[NSString stringWithFormat:@"item_%d",j]] mutableCopy];
+                cart_item[@"description"]= [NSString stringWithFormat:@"%@\n%@\n%@",cart_item[@"model"],cart_item[@"description"],cart_item[@"dimension"] ];
+                cart_item[@"control"]=@"model";
+                section[[NSString stringWithFormat:@"item_%d",j]] = cart_item;
+                
+            }
+            section[@"count"] = @(cart_count);
+            dict[[NSString stringWithFormat:@"section_%d",i]] = section;
+        }
+        else
+            if([title isEqualToString:@"Customer"])
+            {
+                
+                int scount = [section[@"count"] intValue];
+                for(int j=0;j<scount;j++)
+                {
+                    NSMutableDictionary * item = [section[[NSString stringWithFormat:@"item_%d",j]] mutableCopy];
+                    NSString * name = item[@"name"];
+                    
+                    if([name isEqualToString:@"business_card"])
+                    {
+                        NSArray*arr =[RAConvertor string2arr:appDelegate.customerInfo[name] separator:@","];
+                        for(int l=0;l<arr.count;l++)
+                        {
+                            item[[NSString stringWithFormat:@"img_url_%d",l] ]=arr[l];
+                        }
+                    }
+                    else
+                    {
+                        if(item[@"value"]==nil ||[item[@"value"] stringValue].length==0) //order 内没有值才从customer 复制
+                            item[@"value"]=appDelegate.customerInfo[name];
+                    }
+                    section[[NSString stringWithFormat:@"item_%d",j]] = item;
+                }
+                
+//                    NSDictionary* item_0=@{@"control":@"text",@"name":@"customer_cid",@"aname":@"Contact",@"value":appDelegate.contact_id};
+                dict[[NSString stringWithFormat:@"section_%d",i]] = section;
+                
+                
+            }
+            else
+                if([title isEqualToString:@"Remarks Content"])
+                {
+                    
+                    int scount = [section[@"count"] intValue];
+                    for(int j=0;j<scount;j++)
+                    {
+                        NSMutableDictionary * item = [section[[NSString stringWithFormat:@"item_%d",j]] mutableCopy];
+                        NSString * name = item[@"name"];
+                        
+                        
+                        if([name isEqualToString:@"comments"])
+                        {
+                            item[@"value"] = RASingleton.sharedInstance.scan_cart[@"general_note"];
+                            section[[NSString stringWithFormat:@"item_%d",j]] = item;
+                        }
+                        
+                        
+                    }
+                    
+//                    NSDictionary* item_0=@{@"control":@"text",@"name":@"customer_cid",@"aname":@"Contact",@"value":appDelegate.contact_id};
+                    dict[[NSString stringWithFormat:@"section_%d",i]] = section;
+                    
+                    
+                }
+        else if([title isEqualToString:@"Order Total"])
+        {
+            
+            int scount = [section[@"count"] intValue];
+            for(int j=0;j<scount;j++)
+            {
+                NSMutableDictionary * item = [section[[NSString stringWithFormat:@"item_%d",j]] mutableCopy];
+                NSString * name = item[@"name"];
+                
+                
+                if([name isEqualToString:@"totalPrice"])
+                {
+                    item[@"value"] = [RAConvertor currencyNumber:self.total+self.surcharge];//[NSString stringWithFormat:@"%.2f",self.total+self.surcharge];
+                    section[[NSString stringWithFormat:@"item_%d",j]] = item;
+                }
+                else if([name isEqualToString:@"subtotalPrice"])
+                {
+                    item[@"value"] = [RAConvertor currencyNumber:self.total];//[NSString stringWithFormat:@"%.2f",self.total];
+                    section[[NSString stringWithFormat:@"item_%d",j]] = item;
+                }
+                else if([name isEqualToString:@"surcharge"])
+                {
+                    item[@"value"] = [RAConvertor currencyNumber:self.surcharge];//[NSString stringWithFormat:@"%.2f",self.surcharge];
+                    section[[NSString stringWithFormat:@"item_%d",j]] = item;
+                }
+                
+            }
+            
+//                    NSDictionary* item_0=@{@"control":@"text",@"name":@"customer_cid",@"aname":@"Contact",@"value":appDelegate.contact_id};
+            dict[[NSString stringWithFormat:@"section_%d",i]] = section;
+            
+            
+            
+        }
+           
+        
+        
+        
+    }
+    
+//        NSString *path = NSTemporaryDirectory();
+//
+//        NSString* file=[NSString stringWithFormat:@"SO_%@.json",appDelegate.order_code];
+//        NSString *filePath = [path stringByAppendingPathComponent:file];
+//
+//
+//
+    [RAUtils dicttofile:[orderdir stringByAppendingPathComponent:@"order.json"] dict:dict];
+    
+     CreateOrderViewController * orderinfoVC = [[CreateOrderViewController alloc] initWithNibName:@"CommonEditor.iPad" bundle:nil];
+    
+    
+    
+    orderinfoVC.disable_dropdown_refresh=true;
+    orderinfoVC.url_type = URL_FILE;
+    orderinfoVC.request_url=[orderdir stringByAppendingPathComponent:@"order.json"];
+    
+    orderinfoVC.params = params;
+    orderinfoVC.title=@"";
+    orderinfoVC.delegate=self;
+    //
+    //    if(checked.count==count)
+    //    {
+    //    orderinfoVC.have_tail = true
+    //    }
+    
+    [self.navigationController pushViewController:orderinfoVC animated:true];
+    
+    return;
+}
+- (IBAction)onBulkDiscount:(id)sender {
+    
+#ifdef SCANNER_ORDER
+    
+    ScanDiscountViewController * vc =[[UIStoryboard storyboardWithName:@"SO" bundle:nil] instantiateViewControllerWithIdentifier:@"ScanDiscountViewController"];
+    
+    
+    
+    vc.bulk = true;
+    
+    vc.discount=0;
+//    vc.price = 0;
+//    vc.cart_id = [item_json valueForKey:@"cart_item_id"];//[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
+//    __block NSString* cartid=[item_json valueForKey:@"cart_item_id"];
+    //    vc.delegate = parentvc.self;
+    //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+    vc.onSetValue = ^(double price,double discount){
+        
+        bool bmodify=false;
+        if(discount>0)
+            bmodify=true;
+        
+        
+        __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Update Price" completion:^{
+            [RANetwork request_scan_bulkdiscount:discount notes:nil completionHandler:^(NSMutableDictionary *result) {
+                                        NSDictionary* cart_json = result;
+                                        
+                            [waitalert dismissViewControllerAnimated:YES completion:^{
+                                if([[cart_json valueForKey:@"result"] intValue]==2)
+                                {
+//                                    [item_json setValue:[NSNumber numberWithDouble:price ] forKey:@"unit_price"];
+//
+//                                    [item_json setValue:[NSNumber numberWithDouble:discount ] forKey:@"discount"];
+//                                    [item_json setValue:notes forKey:@"note"];
+                                    
+//                                    RASingleton.sharedInstance.scan_cart[@"section_0"][[NSString stringWithFormat:@"item_%d",indexPath.row]]=item_json;
+//                                    if (self.back_order_flag) {
+//                                        [self updateItemJson:item_json atIndexPath:indexPath];
+//                                    } else {
+//                                        self.content_arr[indexPath.row ] = item_json;
+//                                    }
+//                                    tableView.editing = false;
+                                    //                        [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
+                                    //                        [self refresh_total];
+                                    
+                                    
+                                    [self reload_data];
+                                    
+            #ifdef RA_NOTIFICATION
+                                    [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+            #else
+                                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                    [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+            #endif
+                                }
+                                else
+                                {
+                                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Update Price" controller:self] ;
+                                }
+                            }];
+                                        
+                                       
+                                        
+                                        
+                                        
+                                        
+                        }];
+
+        }];
+   
+       
+    };
+    
+    UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ;
+    
+    
+    
+    
+    
+    //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
+    
+    navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
+    [self presentViewController:navi animated:YES completion:^{
+        
+        //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
+        
+        DebugLog(@"EditModelPriceViewController present.........");
+        
+        //   self.btop = false;
+        //  <#code#>
+    }];
+    
+#endif
+}
+- (IBAction)onChangePrice:(id)sender {
+    
+#ifdef SCANNER_ORDER
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    if(RASingleton.sharedInstance.scan_cart ==nil)
+    {
+//            NSData* json =[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:URL_SO_CART ofType:@"json" ]];
+        NSMutableDictionary* cartTemplate=[OLDataProvider loadScanTemplate:@"scan_cart.json"];
+        RASingleton.sharedInstance.scan_cart=cartTemplate;//[[RAConvertor data2dict:json] mutableCopy];
+    }
+    
+    
+    NSDictionary* price_group = [RADataProvider get_price_group:appDelegate.price_group];
+    UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Change Price Type" message:nil preferredStyle:UIAlertControllerStyleAlert];
+    UIAlertAction *action1 = [UIAlertAction actionWithTitle:price_group[@"price_0"][@"display"] style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
+
+        self.btnBulkDiscount.hidden = true;
+//        self.btnPrice.titleLabel.text = @"FOB CTNR";
+        [self.btnPrice setTitle: price_group[@"price_0"][@"display"] forState:UIControlStateNormal];
+        RASingleton.sharedInstance.price_type=0;
+        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];
+                item[@"price"]=item[ price_group[@"price_0"][@"name"]];
+                item[@"unit_price"]= item[price_group[@"price_0"][@"name"]];
+                item[@"erp_unit_price"]= item[price_group[@"price_0"][@"name"]];
+                item[@"discount"]=@(0);
+                item[@"note"]=@"";
+                section[[NSString stringWithFormat:@"item_%d",i]] = item;
+            }
+        RASingleton.sharedInstance.scan_cart[@"section_0"]  = section;
+        RASingleton.sharedInstance.scan_cart[@"price_type"] = @0;
+        [OLDataProvider saveScanCart:RASingleton.sharedInstance.scan_cart];
+        [self.cartIndicatorBar removeFromSuperview];
+        self.cartIndicatorBar = [self setupCartIndicatorBar];
+        [self.view addSubview:self.cartIndicatorBar];
+        [self reload_data];
+    }];
+    UIAlertAction *action2 = [UIAlertAction actionWithTitle:price_group[@"price_1"][@"display"] style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
+
+        self.btnBulkDiscount.hidden = false;
+        [self.btnPrice setTitle: price_group[@"price_1"][@"display"] forState:UIControlStateNormal];
+        RASingleton.sharedInstance.price_type=1;
+        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];
+                
+                NSString * unit_price;
+   
+                if(item [@"net_price"])
+                    unit_price=item[price_group[@"price_3"][@"name"]];
+                else if(item [@"special_price"])
+                {
+                    unit_price= item[price_group[@"price_2"][@"name"]];
+                }
+                else
+                {
+                    unit_price= item[price_group[@"price_1"][@"name"]];
+                }
+
+                if([unit_price isEqualToString:@"N/A"])
+                    unit_price = @"0";
+                else
+                {
+                    
+                    unit_price = [NSString stringWithFormat:@"%.2f", [unit_price doubleValue]];
+                }
+                
+                
+                item[@"unit_price"] = unit_price;
+                item[@"erp_unit_price"] = unit_price;
+                
+                item[@"price"]= unit_price;//item[@"price1"];
+//                item[@"unit_price"]= item[@"price1"];
+                section[[NSString stringWithFormat:@"item_%d",i]] = item;
+            }
+        RASingleton.sharedInstance.scan_cart[@"price_type"] = @1;
+        RASingleton.sharedInstance.scan_cart[@"section_0"]  = section;
+        [OLDataProvider saveScanCart:RASingleton.sharedInstance.scan_cart];
+        [self.cartIndicatorBar removeFromSuperview];
+        self.cartIndicatorBar = [self setupCartIndicatorBar];
+        [self.view addSubview:self.cartIndicatorBar];
+        [self reload_data];
+    }];
+    
+    UIAlertAction *action3 = [UIAlertAction actionWithTitle:@"%25" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
+
+//        self.btnPrice.titleLabel.text = @"%25";
+        [self.btnPrice setTitle: @"%25" forState:UIControlStateNormal];
+        RASingleton.sharedInstance.price_type=2;
+        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];
+                item[@"price"]= item[price_group[@"price_2"][@"name"]];
+                item[@"unit_price"]= item[price_group[@"price_2"][@"name"]];
+                section[[NSString stringWithFormat:@"item_%d",i]] = item;
+            }
+        RASingleton.sharedInstance.scan_cart[@"section_0"]  = section;
+        RASingleton.sharedInstance.scan_cart[@"price_type"] = @2;
+        [OLDataProvider saveScanCart:RASingleton.sharedInstance.scan_cart];
+        
+        [self.cartIndicatorBar removeFromSuperview];
+        self.cartIndicatorBar = [self setupCartIndicatorBar];
+        [self.view addSubview:self.cartIndicatorBar];
+        [self reload_data];
+    }];
+    
+    UIAlertAction *alertCancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+        
+    }];
+    
+    [alertControl addAction:action1];
+    [alertControl addAction:action2];
+//    [alertControl addAction:action3];
+    
+//        [alertControl addAction:alertthree];
+    [alertControl addAction:alertCancel];
+    
+    [self presentViewController:alertControl animated:YES completion:nil];
+#endif
+}
+-(void) newoloorder
+{
+    
+    NSString *orderdir =[OLDataProvider getScanPath];
+//    NSString* order_code = RASingleton.sharedInstance.scan_temp_code;
+                                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                                appDelegate.order_code = order_code;
+    
+//    if(appDelegate.user.length==0)
+//    {
+//        [RAUtils message_alert:@"Please login first." title:@"Warring" controller:self];
+//        return;
+//    }
+    
+//    NSData* json =[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:URL_SO_CART ofType:@"json" ]];
+//    NSMutableDictionary* cartTemplate=[OLDataProvider loadScanTemplate:@"scan_cart.json"];
+//    RASingleton.sharedInstance.scan_cart=cartTemplate;//[[RAConvertor data2dict:json] mutableCopy];
+    
+    
+    
+//    appDelegate.user_type = USER_ROLE_EMPLOYEE;
+    appDelegate.can_set_cart_price = true;
+    appDelegate.can_see_price = true;
+    
+//    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+//    NSString *documents = [paths objectAtIndex:0];
+    
+    {
+        
+        
+
+//        [OLDataProvider moveScanTemp2Order];
+        
+//        NSError *error = nil;
+//        bool bsuccess=[[NSFileManager defaultManager] createDirectoryAtPath:orderdir withIntermediateDirectories:YES attributes:nil error:&error];
+        
+        
+//        NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
+        //   NSString * string = [checked componentsJoinedByString:@","];
+        //  [params setValue:string forKey:@"cart2Checkbox"];
+        
+//        NSData* data=[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:URL_SO_ORDER ofType:@"json" ]];
+        
+//        NSMutableDictionary* dict=[[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error] mutableCopy];
+        
+        
+        
+//        __block NSMutableDictionary* block_dict = dict;
+        if(appDelegate.user_type== USER_ROLE_EMPLOYEE)
+        {
+           
+            
+            
+            UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Select Customer type" message:@"" preferredStyle:UIAlertControllerStyleAlert];
+            //block代码块取代了delegate
+            
+            
+            
+            UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Existing Customer" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+                
+                NSMutableDictionary* dict = nil;
+                
+//                NSMutableDictionary* dict = nil;
+                
+                NSString* ordertemplate = nil;
+                if([RADataProvider getSiteHasERP])
+                    ordertemplate =@"e_order.json";
+                else
+                    ordertemplate =@"e_order_noerp.json";
+                
+                dict=[OLDataProvider loadScanTemplate:ordertemplate];
+                
+                NSString *orderPath = [orderdir stringByAppendingPathComponent:@"order.json"];
+                
+                
+                
+                [RAUtils dicttofile:orderPath dict:dict];
+                
+                
+
+                
+                
+                NSString *contactpath = [orderdir stringByAppendingPathComponent:@"contact.json"];
+                
+                
+                
+                [RAUtils dicttofile:contactpath dict:appDelegate.customerInfo];
+                
+                [self scanPlaceOrder];
+                
+            }];
+            
+            UIAlertAction *alert2 = [UIAlertAction actionWithTitle:@"New customer" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
+                NSMutableDictionary* dict = nil;
+                dict=[OLDataProvider loadScanTemplate:@"n_order.json"];
+                
+                NSString *orderPath = [orderdir stringByAppendingPathComponent:@"order.json"];
+                
+                
+                
+                [RAUtils dicttofile:orderPath dict:dict];
+                
+                
+
+                
+                
+                NSString *contactpath = [orderdir stringByAppendingPathComponent:@"contact.json"];
+                
+                
+                
+                [RAUtils dicttofile:contactpath dict:appDelegate.customerInfo];
+                [self scanPlaceOrder];
+            }];
+            UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+                appDelegate.order_code = nil;
+                DebugLog(@"No");
+            }];
+            [alertControl addAction:actionOne];
+            [alertControl addAction:alert2];
+            [alertControl addAction:alertthree];
+            
+            //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+            
+            
+            [self presentViewController:alertControl animated:YES completion:nil];
+            
+            DebugLog(@"%@",self.edit_select_arr);
+
+            
+        }
+        else
+        {
+            NSMutableDictionary* dict = nil;
+            
+            if([appDelegate.customerInfo[@"customer_cid"] stringValue].length ==0 )
+            {
+                dict=[OLDataProvider loadScanTemplate:@"nc_order.json"];
+            }
+            else
+                dict=[OLDataProvider loadScanTemplate:@"c_order.json"];
+            
+            NSString *orderPath = [orderdir stringByAppendingPathComponent:@"order.json"];
+            
+            
+            
+            [RAUtils dicttofile:orderPath dict:dict];
+            
+            
+
+            
+            
+            NSString *contactpath = [orderdir stringByAppendingPathComponent:@"contact.json"];
+            
+            
+            
+            [RAUtils dicttofile:contactpath dict:appDelegate.customerInfo];
+            [self scanPlaceOrder];
+        }
+            
+
+//        NSMutableDictionary* dict=[OLDataProvider loadScanTemplate:@"scan_order.json"];
+
+
+        
+
+        
+        
+    }
+//    MainViewController * mainvc=(MainViewController * )appDelegate.main_vc;
+//    mainvc.btnScan.enabled = true;
+    
+//    [appDelegate updateScanButton:true];
+
+   
+    
+}
+-(void) newoloorder1
+{
+//    NSString* order_code = RASingleton.sharedInstance.scan_temp_code;
+                                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                                appDelegate.order_code = order_code;
+    
+//    if(appDelegate.user.length==0)
+//    {
+//        [RAUtils message_alert:@"Please login first." title:@"Warring" controller:self];
+//        return;
+//    }
+    
+//    NSData* json =[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:URL_SO_CART ofType:@"json" ]];
+//    NSMutableDictionary* cartTemplate=[OLDataProvider loadScanTemplate:@"scan_cart.json"];
+//    RASingleton.sharedInstance.scan_cart=cartTemplate;//[[RAConvertor data2dict:json] mutableCopy];
+    
+    
+    
+//    appDelegate.user_type = USER_ROLE_EMPLOYEE;
+    appDelegate.can_set_cart_price = true;
+    appDelegate.can_see_price = true;
+    
+//    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+//    NSString *documents = [paths objectAtIndex:0];
+    
+    {
+        
+        
+        NSString *orderdir =[OLDataProvider getScanPath];
+//        [OLDataProvider moveScanTemp2Order];
+        
+//        NSError *error = nil;
+//        bool bsuccess=[[NSFileManager defaultManager] createDirectoryAtPath:orderdir withIntermediateDirectories:YES attributes:nil error:&error];
+        
+        
+//        NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
+        //   NSString * string = [checked componentsJoinedByString:@","];
+        //  [params setValue:string forKey:@"cart2Checkbox"];
+        
+//        NSData* data=[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:URL_SO_ORDER ofType:@"json" ]];
+        
+//        NSMutableDictionary* dict=[[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error] mutableCopy];
+        
+        
+        
+//        __block NSMutableDictionary* block_dict = dict;
+        if(appDelegate.user_type== USER_ROLE_EMPLOYEE)
+        {
+           
+            
+            
+            UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Select Customer type" message:@"" preferredStyle:UIAlertControllerStyleAlert];
+            //block代码块取代了delegate
+            
+            
+            
+            UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Existing Customer" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+                
+                NSMutableDictionary* dict = nil;
+                
+                NSString* ordertemplate = nil;
+                if([RADataProvider getSiteHasERP])
+                    ordertemplate =@"e_order.json";
+                else
+                    ordertemplate =@"e_order_noerp.json";
+                
+                dict=[OLDataProvider loadScanTemplate:ordertemplate];
+                
+                NSString *orderPath = [orderdir stringByAppendingPathComponent:@"order.json"];
+                
+                
+                
+                [RAUtils dicttofile:orderPath dict:dict];
+                
+                
+
+                
+                
+                NSString *contactpath = [orderdir stringByAppendingPathComponent:@"contact.json"];
+                
+                
+                
+                [RAUtils dicttofile:contactpath dict:appDelegate.customerInfo];
+                
+                [self scanPlaceOrder];
+                
+            }];
+            
+            UIAlertAction *alert2 = [UIAlertAction actionWithTitle:@"New customer" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
+                NSMutableDictionary* dict = nil;
+                dict=[OLDataProvider loadScanTemplate:@"n_order.json"];
+                
+                NSString *orderPath = [orderdir stringByAppendingPathComponent:@"order.json"];
+                
+                
+                
+                [RAUtils dicttofile:orderPath dict:dict];
+                
+                
+
+                
+                
+                NSString *contactpath = [orderdir stringByAppendingPathComponent:@"contact.json"];
+                
+                
+                
+                [RAUtils dicttofile:contactpath dict:appDelegate.customerInfo];
+                [self scanPlaceOrder];
+            }];
+            UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+                appDelegate.order_code = nil;
+                DebugLog(@"No");
+            }];
+            [alertControl addAction:actionOne];
+            [alertControl addAction:alert2];
+            [alertControl addAction:alertthree];
+            
+            //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+            
+            
+            [self presentViewController:alertControl animated:YES completion:nil];
+            
+            DebugLog(@"%@",self.edit_select_arr);
+
+            
+        }
+        else
+        {
+            NSMutableDictionary* dict = nil;
+            if([appDelegate.customerInfo[@"customer_cid"] stringValue].length ==0 )
+            {
+                dict=[OLDataProvider loadScanTemplate:@"nc_order.json"];
+            }
+            else
+                dict=[OLDataProvider loadScanTemplate:@"c_order.json"];
+            
+            NSString *orderPath = [orderdir stringByAppendingPathComponent:@"order.json"];
+            
+            
+            
+            [RAUtils dicttofile:orderPath dict:dict];
+            
+            
+
+            
+            
+            NSString *contactpath = [orderdir stringByAppendingPathComponent:@"contact.json"];
+            
+            
+            
+            [RAUtils dicttofile:contactpath dict:appDelegate.customerInfo];
+            [self scanPlaceOrder];
+        }
+            
+
+//        NSMutableDictionary* dict=[OLDataProvider loadScanTemplate:@"scan_order.json"];
+
+
+        
+
+        
+        
+    }
+//    MainViewController * mainvc=(MainViewController * )appDelegate.main_vc;
+//    mainvc.btnScan.enabled = true;
+    
+//    [appDelegate updateScanButton:true];
+
+   
+    
+}
+-(void)newScanOrder1
+{
+    
+//
+//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//
+//
+//    if(appDelegate.order_code.length>0)
+//    {
+////        当前订单先关闭
+////        [OLDataProvider deleteScanOrder:appDelegate.order_code];
+//        appDelegate.order_code = nil;
+//        appDelegate.customerInfo = nil;
+//        RASingleton.sharedInstance.scan_cart = nil;
+//        appDelegate.contact_id = nil;
+////        [appDelegate updateScanButton:false];
+//
+//        [appDelegate update_count_mark];
+//        [appDelegate closeOrder];
+//
+//    }
+//
+//
+    {
+        [self newoloorder1];
+        
+    }
+}
+-(void)newScanOrder
+{
+    
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+        
+//if(appDelegate.user.length<=0)
+//{
+//    [RAUtils message_alert:@"Please select a sales first." title:@"Warring" controller:self];
+//    return;
+//}
+    
+//    if(appDelegate.order_code.length>0)
+//    {
+////        当前订单先关闭
+////        [OLDataProvider deleteScanOrder:appDelegate.order_code];
+//        appDelegate.order_code = nil;
+//        appDelegate.customerInfo = nil;
+//        RASingleton.sharedInstance.scan_cart = nil;
+//        appDelegate.contact_id = nil;
+////        [appDelegate updateScanButton:false];
+//
+//        [appDelegate update_count_mark];
+//        [appDelegate closeOrder];
+//
+//    }
+    
+    
+//    RASingleton.sharedInstance.enable_OfflineOrder = true;
+    
+
+//    __block MainViewController *brself= self;
+//    if(appDelegate.contact_id.length<=0)
+//    {
+//
+//        UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"New Offline Order" message:nil preferredStyle:UIAlertControllerStyleAlert];
+//        UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"With Offline Contact" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
+//
+////            if(appDelegate.order_code && appDelegate.order_code.length>0)
+////            {
+////                [RAUtils message_alert:@"Please close current order and try again." title:@"" controller:self];
+////            }
+////            NSLog(@"new click");
+//
+//            NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
+//
+////            NSString *path = [[NSBundle mainBundle] pathForResource:@"editContact.json" ofType:nil];
+//
+//            CustomerEditViewController * cuseditVC = [[CustomerEditViewController alloc] initWithNibName:@"CommonEditor.iPad" bundle:nil];
+//            cuseditVC.bnewcustomer=true;
+//            cuseditVC.bolocustomer = true;
+//            cuseditVC.url_type = URL_FILE;
+//            cuseditVC.request_url=[OLDataProvider scanTemplatePath:@"scan_contact.json"];
+//
+//            cuseditVC.params = params;
+//
+//            cuseditVC.returnValue=^(NSMutableDictionary* value)
+//            {
+//                if(value==nil)
+//                {
+//                    [RAUtils message_alert:@"Cannot create order without customer infomation." title:@"" controller:self];
+//                }
+//                else
+//                {
+//                    NSString* contact_id=[[NSUUID new] UUIDString];
+//
+//
+//                    //---------------- construct customer_contact----------------------
+//                    NSString* customer_first_name = [value valueForKey:@"customer_first_name"];
+//                    if(customer_first_name==nil)
+//                        customer_first_name=@"";
+//
+//                    NSString* customer_last_name= [value valueForKey:@"customer_last_name"];
+//                    if(customer_last_name==nil)
+//                        customer_last_name=@"";
+//                    NSString* customer_contact = [NSString stringWithFormat:@"%@ %@",customer_first_name,customer_last_name];
+//                    customer_contact=[customer_contact stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
+//                    [value setValue:customer_contact forKey:@"customer_contact"];
+//
+//
+//
+//                        value [@"customer_cid"] = contact_id;
+//                        appDelegate.contact_id=contact_id;
+//                        appDelegate.customerInfo = value;
+//
+//
+//
+//
+//
+//
+////                        [brself refreshContactDisplay];
+//                    [self newoloorder];
+//
+//                    [self scanPlaceOrder];
+//
+////                        [brself switchToCart:nil];
+//
+//                }
+//            };
+//
+//
+//        //    cuseditVC.delegate=self;
+//            //
+//            //    if(checked.count==count)
+//            //    {
+//            //    orderinfoVC.have_tail = true
+//            //    }
+//
+//            [[self navigationController] setNavigationBarHidden:NO animated:NO];
+//            [self.navigationController pushViewController:cuseditVC animated:false];
+//
+////            [self dismissViewControllerAnimated:NO completion:^{
+//////                [(UINavigationController*)[self parentViewController] pushViewController:cuseditVC animated:false];;
+//////                            [[self navigationController] setNavigationBarHidden:NO animated:NO];
+////
+//////                            [self pushViewController:cuseditVC animated:false];
+////            }];
+//
+////            [[self navigationController] setNavigationBarHidden:NO animated:NO];
+////            [self.navigationController pushViewController:cuseditVC animated:false];
+//
+//
+//        }];
+//
+//
+//
+//        UIAlertAction *alertCancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+//
+//        }];
+//
+//        [alertControl addAction:actionOne];
+//
+////        [alertControl addAction:alertthree];
+//        [alertControl addAction:alertCancel];
+//
+//        [self presentViewController:alertControl animated:YES completion:nil];
+//    }
+//    else
+    {
+        [self newoloorder];
+        
+    }
+}
+
+-(void)placeOrder
+{
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+#ifndef SCANNER_ORDER
+    if (appDelegate.user_type == USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore) {
+        
+        
+        if (![RASingleton sharedInstance].permissions_edit_order) {
+            
+            return;
+        }
+        
+//        if (!self.available) {
+//            
+//            [RAUtils message_alert:@"There are some products is not available" title:@"Warning" controller:self];
+//            return;
+//        }
+        
+    }
+#endif
+//    NSMutableArray* checked = [[NSMutableArray alloc] init];
+    
+    bool have_free = false;
+    
+    long count = self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
+    
+    
+    if(count==0)
+    {
+        [RAUtils message_alert:@"Add some model first." title:@"Cart Is Empty." controller:self] ;
+        return;
+    }
+    for(int i=0;i<count;i++)
+    {
+        NSMutableDictionary * item_json = [self.content_arr[i] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
+//        bool check = [[item_json valueForKey:@"check"] boolValue];
+        NSString* product_id = [item_json valueForKey:@"product_id"];
+//        if(check)
+//        {
+//            [checked addObject:[NSNumber numberWithInt:[[item_json valueForKey:@"cart_item_id"] intValue]]];
+//            
+//        }
+        if(product_id.length==0)
+        {
+            [RAUtils message_alert:@"Some models in cart does not exist, you must remove them before place order." title:@"No Such Model" controller:self] ;
+            return;
+        }
+        bool is_free = [[item_json valueForKey:@"is_free"]boolValue];
+        if(is_free)
+            have_free=true;
+    }
+    //     disable for debug
+//    if(checked.count==0)
+//    {
+//        [RAUtils message_alert:@"You must select at least one model." title:@"Cannot Place Order" controller:self] ;
+//        return;
+//    }
+    
+    
+    
+    //  NSDictionary * freejson = [self.content_data objectForKey:@"freeGiveaway"];
+ //   AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    
+    /*   FREE GIVE AWAY
+     int free_count = [[self.freejson valueForKey:@"count"]intValue];
+     for(int ic=free_count-1;ic>=0;ic--)
+     {
+     float compare_price = [[self.freejson valueForKey:[NSString stringWithFormat:@"item_%d",ic]] floatValue];
+     if(self.total>=compare_price && !have_free&&appDelegate.can_set_cart_price)
+     {
+     
+     UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Free give away available.", nil) message:[NSString stringWithFormat:@"Order total price more than %.2f, do you want to add free give away item before place order?", compare_price] delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
+     alert.tag = ALERT_FREE;
+     [alert show];
+     return;
+     
+     }
+     }
+     
+     */
+#ifdef SCANNER_ORDER
+    
+
+    if(appDelegate.bLogin==false)
+    {
+        LoginViewController * loginvc =[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"LoginViewController"];
+        //        loginvc.delegate = self;
+        //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+        
+        loginvc.returnValue = ^(bool blogin){
+            
+            
+            if(blogin)
+            {
+                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                if(appDelegate.order_code.length==0)
+                {
+                    [self newScanOrder];
+                }
+                
+            }
+            
+            
+        };
+        
+        UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:loginvc] ;
+        
+        
+        
+        
+        
+        //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
+        
+        navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
+        [self presentViewController:navi animated:YES completion:^{
+            
+            //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
+            
+            DebugLog(@"LoginViewController present.........");
+            
+            //   self.btop = false;
+            //  <#code#>
+        }];
+        return;
+    }
+    else
+    {
+        
+        NSString *orderdir =[OLDataProvider getScanPath];
+        NSString *orderPath = [orderdir stringByAppendingPathComponent:@"order.json"];
+        
+        if(appDelegate.order_code.length==0 )
+        {
+            [self newScanOrder];
+        }
+        else if( ![[NSFileManager defaultManager] fileExistsAtPath:orderPath])
+        {
+            [self newScanOrder1];
+        }
+        else
+        {
+            
+            [self scanPlaceOrder];
+           //place order
+        }
+        return;
+    }
+        
+   
+    
+    
+    
+    
+    
+    
+    
+//    if(RASingleton.sharedInstance.enable_OfflineOrder)
+//    {
+//
+//        NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
+//        //   NSString * string = [checked componentsJoinedByString:@","];
+//        //  [params setValue:string forKey:@"cart2Checkbox"];
+//
+////        NSData* data=[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:URL_SO_ORDER ofType:@"json" ]];
+////        NSError *error=nil;
+////        NSMutableDictionary* dict=[[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error] mutableCopy];
+////
+//
+//
+//        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+//        NSString *documents = [paths objectAtIndex:0];
+//
+//
+//
+//            NSString *orderdir = [documents stringByAppendingPathComponent:appDelegate.order_code];
+//
+//        NSMutableDictionary* dict= [[RAUtils dictfromfile:[orderdir stringByAppendingPathComponent:@"order.json"]] mutableCopy];
+//
+//        int section_count = [dict[@"section_count"] intValue];
+//
+//        for(int i=0;i<section_count;i++)
+//        {
+//            NSMutableDictionary* section = [dict[[NSString stringWithFormat:@"section_%d",i]] mutableCopy];
+//            NSString* title = section[@"title"];
+//            if([title isEqualToString:@"Model Information"])
+//            {
+//
+//                NSMutableDictionary* cart_section = RASingleton.sharedInstance.scan_cart[@"section_0"];
+//                int cart_count = [cart_section[@"count"] intValue];
+//                for(int j=0;j<cart_count;j++)
+//                {
+//                    NSMutableDictionary* cart_item = [cart_section[[NSString stringWithFormat:@"item_%d",j]] mutableCopy];
+//                    cart_item[@"control"]=@"model";
+//                    section[[NSString stringWithFormat:@"item_%d",j]] = cart_item;
+//
+//                }
+//                section[@"count"] = @(cart_count);
+//                dict[[NSString stringWithFormat:@"section_%d",i]] = section;
+//            }
+//            else
+//                if([title isEqualToString:@"Customer"])
+//                {
+//
+//                    int scount = [section[@"count"] intValue];
+//                    for(int j=0;j<scount;j++)
+//                    {
+//                        NSMutableDictionary * item = [section[[NSString stringWithFormat:@"item_%d",j]] mutableCopy];
+//                        NSString * name = item[@"name"];
+//
+//                        if([name isEqualToString:@"business_card"])
+//                        {
+//                            NSArray*arr =[RAConvertor string2arr:appDelegate.customerInfo[name] separator:@","];
+//                            for(int l=0;l<arr.count;l++)
+//                            {
+//                                item[[NSString stringWithFormat:@"img_url_%d",l] ]=arr[l];
+//                            }
+//                        }
+//                        else
+//                            item[@"value"]=appDelegate.customerInfo[name];
+//
+//                        section[[NSString stringWithFormat:@"item_%d",j]] = item;
+//                    }
+//
+////                    NSDictionary* item_0=@{@"control":@"text",@"name":@"customer_cid",@"aname":@"Contact",@"value":appDelegate.contact_id};
+//                    dict[[NSString stringWithFormat:@"section_%d",i]] = section;
+//
+//
+//                }
+//                else
+//                    if([title isEqualToString:@"Remarks Content"])
+//                    {
+//
+//                        int scount = [section[@"count"] intValue];
+//                        for(int j=0;j<scount;j++)
+//                        {
+//                            NSMutableDictionary * item = [section[[NSString stringWithFormat:@"item_%d",j]] mutableCopy];
+//                            NSString * name = item[@"name"];
+//
+//
+//                            if([name isEqualToString:@"comments"])
+//                            {
+//                                item[@"value"] = RASingleton.sharedInstance.scan_cart[@"general_note"];
+//                                section[[NSString stringWithFormat:@"item_%d",j]] = item;
+//                            }
+//
+//
+//                        }
+//
+//    //                    NSDictionary* item_0=@{@"control":@"text",@"name":@"customer_cid",@"aname":@"Contact",@"value":appDelegate.contact_id};
+//                        dict[[NSString stringWithFormat:@"section_%d",i]] = section;
+//
+//
+//                    }
+//            else if([title isEqualToString:@"Order Total"])
+//            {
+//
+//                int scount = [section[@"count"] intValue];
+//                for(int j=0;j<scount;j++)
+//                {
+//                    NSMutableDictionary * item = [section[[NSString stringWithFormat:@"item_%d",j]] mutableCopy];
+//                    NSString * name = item[@"name"];
+//
+//
+//                    if([name isEqualToString:@"totalPrice"])
+//                    {
+//                        item[@"value"] = [NSString stringWithFormat:@"%.2f",self.total];
+//                        section[[NSString stringWithFormat:@"item_%d",j]] = item;
+//                    }
+//
+//
+//                }
+//
+////                    NSDictionary* item_0=@{@"control":@"text",@"name":@"customer_cid",@"aname":@"Contact",@"value":appDelegate.contact_id};
+//                dict[[NSString stringWithFormat:@"section_%d",i]] = section;
+//
+//
+//
+//            }
+//
+//
+//
+//
+//        }
+//
+////        NSString *path = NSTemporaryDirectory();
+////
+////        NSString* file=[NSString stringWithFormat:@"SO_%@.json",appDelegate.order_code];
+////        NSString *filePath = [path stringByAppendingPathComponent:file];
+////
+////
+////
+//        [RAUtils dicttofile:[orderdir stringByAppendingPathComponent:@"order.json"] dict:dict];
+//
+//         CreateOrderViewController * orderinfoVC = [[CreateOrderViewController alloc] initWithNibName:@"CommonEditor.iPad" bundle:nil];
+//
+//
+//
+//        orderinfoVC.disable_dropdown_refresh=true;
+//        orderinfoVC.url_type = URL_FILE;
+//        orderinfoVC.request_url=[orderdir stringByAppendingPathComponent:@"order.json"];
+//
+//        orderinfoVC.params = params;
+//        orderinfoVC.title=@"";
+//        orderinfoVC.delegate=self;
+//        //
+//        //    if(checked.count==count)
+//        //    {
+//        //    orderinfoVC.have_tail = true
+//        //    }
+//
+//        [self.navigationController pushViewController:orderinfoVC animated:true];
+//
+//        return;
+//    }
+#endif
+    
+#ifdef BACKORDER_PROCESS
+    if (self.back_order_flag) {
+
+        NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
+        [params setObject:@(0) forKey:@"step"];
+        
+        
+        RAOrderEditorViewController *orderEditorVC =[[UIStoryboard storyboardWithName:@"ERP_Mobile_Order" bundle:nil] instantiateViewControllerWithIdentifier:@"RAOrderEditorViewController"];
+        
+        
+        //[[RAOrderEditorViewController alloc] initWithNibName:@"CommonEditor.iPad" bundle:nil];
+        
+        orderEditorVC.disable_dropdown_refresh=true;
+        orderEditorVC.url_type = URL_REMOTE;
+        orderEditorVC.request_url=URL_CARTDELIVERY;
+        orderEditorVC.params = params;
+        orderEditorVC.delegate=self;
+        orderEditorVC.title=@"";
+        [self.navigationController pushViewController:orderEditorVC animated:true];
+        
+    }
+    else
+#endif
+    {
+        NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
+        //   NSString * string = [checked componentsJoinedByString:@","];
+        //  [params setValue:string forKey:@"cart2Checkbox"];
+        
+        
+        
+
+        
+         CreateOrderViewController * orderinfoVC = [[CreateOrderViewController alloc] initWithNibName:@"CommonEditor.iPad" bundle:nil];
+        
+        orderinfoVC.disable_dropdown_refresh=true;
+        orderinfoVC.url_type = URL_REMOTE;
+        orderinfoVC.request_url=URL_CARTDELIVERY;
+        
+        orderinfoVC.params = params;
+        orderinfoVC.title=@"";
+        orderinfoVC.delegate=self;
+        //
+        //    if(checked.count==count)
+        //    {
+        //    orderinfoVC.have_tail = true
+        //    }
+        
+        [self.navigationController pushViewController:orderinfoVC animated:true];
+    }
+    
+
+}
+
+- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
+{
+
+    return NO;
+}
+
+
+
+//- (IBAction)onDelete:(UIButton *)sender {
+//    return ;
+//    NSMutableArray* checked = [[NSMutableArray alloc] init];
+//
+//
+//
+//    long count = self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
+//    for(int i=0;i<count;i++)
+//    {
+//        NSMutableDictionary * item_json = [self.content_arr[i] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
+//        bool check = [[item_json valueForKey:@"check"] boolValue];
+//        if(check)
+//        {
+//            [checked addObject:[NSNumber numberWithInt:[[item_json valueForKey:@"cart_item_id"] intValue]]];
+//
+//        }
+//    }
+//    // disable for debug
+//    if(checked.count==0)
+//        return;
+//
+//    //    NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
+//    NSString * string = [checked componentsJoinedByString:@","];
+//    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//        NSDictionary* cart_json = [RANetwork cart_remove:string];
+//
+//        dispatch_async(dispatch_get_main_queue(), ^{
+//
+//
+//
+//            if([[cart_json valueForKey:@"result"] intValue]==2)
+//            {
+//
+//                [self reload_data];
+//            }
+//            else
+//            {
+//                [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Delete Model" controller:self] ;
+//            }
+//
+//
+//
+//        });
+//    });
+//}
+- (IBAction)onScanDiscount:(UIButton*)sender {
+    
+    
+#ifdef SCANNER_ORDER
+    
+
+    UITableViewCell* cell =(UITableViewCell*) sender.superview.superview;
+    
+    NSIndexPath *   indexPath = [self.itemListTable indexPathForCell:cell];
+    
+    UIViewController* parentvc=self;
+    
+    
+//    EditModelPriceViewController
+    
+    ScanDiscountViewController * vc =[[UIStoryboard storyboardWithName:@"SO" bundle:nil] instantiateViewControllerWithIdentifier:@"ScanDiscountViewController"];
+    
+    
+    NSMutableDictionary * item_json = nil;
+    if (self.back_order_flag) {
+        item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy];
+    } else {
+        item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+        
+    }
+    
+    
+    
+    
+    vc.discount=[[item_json valueForKey:@"discount"] floatValue];
+    vc.price = [[item_json valueForKey:@"unit_price"] floatValue];
+    vc.cart_id = [item_json valueForKey:@"cart_item_id"];//[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
+    __block NSString* cartid=[item_json valueForKey:@"cart_item_id"];
+    //    vc.delegate = parentvc.self;
+    //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+    vc.onSetValue = ^(double price,double discount){
+        
+        bool bmodify=false;
+        if(discount>0)
+            bmodify=true;
+        
+//        NSString* notes = [item_json valueForKey:@"note"];
+//        if(notes.length==0)
+//            notes=@"";
+//        if(bmodify)
+//        {
+//
+//
+//           // if([notes isEqualToString:@""])
+////                notes=[NSString stringWithFormat:@"Note: discount %d%% off.",(int)discount];
+////
+////            NSRange range;
+////            range = [notes rangeOfString:@"PRICE MODIFIED"];
+////            if (range.location != NSNotFound) {
+////
+////            }else{
+////               notes= [notes stringByAppendingString:@"\nPRICE MODIFIED"];
+////            }
+//        }
+//        else
+//
+//        {
+////            notes =@"";
+//        }
+        
+        __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Update Price" completion:^{
+            [RANetwork request_update_cart_modelprice:cartid price:price discount:discount notes:nil completionHandler:^(NSMutableDictionary *result) {
+                                        NSDictionary* cart_json = result;
+                                        
+                            [waitalert dismissViewControllerAnimated:YES completion:^{
+                                if([[cart_json valueForKey:@"result"] intValue]==2)
+                                {
+//                                    [item_json setValue:[NSNumber numberWithDouble:price ] forKey:@"unit_price"];
+//                                    
+//                                    [item_json setValue:[NSNumber numberWithDouble:discount ] forKey:@"discount"];
+//                                    [item_json setValue:notes forKey:@"note"];
+                                    
+//                                    RASingleton.sharedInstance.scan_cart[@"section_0"][[NSString stringWithFormat:@"item_%d",indexPath.row]]=item_json;
+//                                    if (self.back_order_flag) {
+//                                        [self updateItemJson:item_json atIndexPath:indexPath];
+//                                    } else {
+//                                        self.content_arr[indexPath.row ] = item_json;
+//                                    }
+//                                    tableView.editing = false;
+                                    //                        [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
+                                    //                        [self refresh_total];
+                                    
+                                    
+                                    [self reload_data];
+                                    
+            #ifdef RA_NOTIFICATION
+                                    [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+            #else
+                                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                    [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+            #endif
+                                }
+                                else
+                                {
+                                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Update Price" controller:self] ;
+                                }
+                            }];
+                                        
+                                       
+                                        
+                                        
+                                        
+                                        
+                        }];
+
+        }];
+   
+       
+    };
+    
+    UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ;
+    
+    
+    
+    
+    
+    //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
+    
+    navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
+    [parentvc presentViewController:navi animated:YES completion:^{
+        
+        //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
+        
+        DebugLog(@"EditModelPriceViewController present.........");
+        
+        //   self.btop = false;
+        //  <#code#>
+    }];
+#endif
+    
+}
+
+-(void)refresh_total
+{
+    self.total=0;
+    
+    self.total_carton=0;
+    self.total_cuft=0;
+    self.total_weight=0;
+    self.total_QTY=0;
+    self.total_item=0;
+    self.surcharge=0;
+    
+#ifdef SCANNER_ORDER
+    
+    NSString* pricename;
+    
+    NSDictionary *addressDic = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanAddress"];
+    NSString* servername = [addressDic objectForKey:@"show_name"];
+   NSArray* arrsn = [RAConvertor string2arr:servername separator:@","];
+   
+   NSString * shortname = arrsn[0];
+   if(shortname.length==0)
+       shortname = servername;
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    NSDictionary* price_group = [RADataProvider get_price_group:appDelegate.price_group];
+    
+    switch(RASingleton.sharedInstance.price_type )
+    {
+        case 0: pricename =price_group[@"price_0"][@"display"];//@"DDP";//[NSString stringWithFormat:@"%@_DDP",shortname];
+            break;;
+        case 1: pricename =price_group[@"price_1"][@"display"];//@"WHSE";//[NSString stringWithFormat:@"%@_WHSE",shortname];;
+            break;;
+//        case 2: pricename = @"25%";
+//            break;
+    }
+    
+    [self.btnPrice setTitle:pricename forState:UIControlStateNormal];
+//    self.cartIndicatorBar = [self setupCartIndicatorBar];
+    [self.cartIndicatorBar removeFromSuperview];
+    self.cartIndicatorBar = [self setupCartIndicatorBar];
+    [self.view addSubview:self.cartIndicatorBar];
+    
+#endif
+    
+    long count =self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
+    for(int i=0;i<count;i++)
+    {
+        NSMutableDictionary * item_json = [self.content_arr[i] mutableCopy];// [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
+        
+        bool bcheck = [[item_json valueForKey:@"check"]boolValue];
+        
+        if(bcheck)
+        {
+            double unitprice = [[item_json valueForKey:@"unit_price"] doubleValue];
+            double discount = [[item_json valueForKey:@"discount"] doubleValue];
+            
+            int count=[[item_json valueForKey:@"count"] intValue];
+            
+            double totalprice =count*unitprice*(1-discount/100.0);
+            
+            double cuft=[[item_json valueForKey:@"cuft"] doubleValue];
+            double weight=[[item_json valueForKey:@"weight"] doubleValue];
+            int carton=/*count**/[[item_json valueForKey:@"carton"] intValue];
+            
+            int item_count=1;
+            
+            int item_qty=1;
+//            NSDictionary * bundle_item =[item_json objectForKey:@"combine"];
+            
+            double msurcharge =0;
+            if(RASingleton.sharedInstance.price_type==1)
+            {
+                if([item_json[@"special_price"] boolValue])
+                {
+                    msurcharge=([item_json[price_group[@"price_3"][@"name"]] doubleValue]-[item_json[price_group[@"price_2"][@"name"]] doubleValue])*count*(1-discount/100.0);
+                    if(msurcharge<0)
+                        msurcharge = 0;
+                }
+                else
+                {
+                    msurcharge=([item_json[price_group[@"price_3"][@"name"]] doubleValue]-[item_json[price_group[@"price_1"][@"name"]] doubleValue])*count*(1-discount/100.0);
+                    if(msurcharge<0)
+                        msurcharge = 0;
+
+                    
+                }
+            }
+
+            
+//            double dprice=0;
+            
+//            if(bundle_item!=nil)
+//            {
+//                //  int citem=0;
+//
+//                int bcount=[[bundle_item valueForKey:@"count"] intValue];
+//                for(int bc=0;bc<bcount;bc++)
+//                {
+//                    NSDictionary * bitem = [bundle_item objectForKey:[NSString stringWithFormat:@"item_%d",bc]];
+//                    int modulus= [[bitem valueForKey:@"modulus"] intValue];
+//                    //    citem+= modulus;
+//                    item_count+=1;
+//                    item_qty+=modulus;
+//                    double uprice= [[bitem valueForKey:@"unit_price"]doubleValue];
+//                    dprice+= uprice*modulus*count;
+//
+//                }
+//            }
+//            totalprice+= dprice;
+            
+            
+            self.surcharge+=msurcharge;
+            self.total+=totalprice;
+            self.total_cuft+=cuft;
+            self.total_carton+=carton;
+            self.total_weight+=weight;
+            self.total_item+=item_count;
+            self.total_QTY+=(item_qty)*count;
+            
+        }
+        
+        
+        
+    }
+    
+    
+    NSString* subtotal = [RAConvertor currencyNumber:self.total];//[NSString stringWithFormat:@"$%@",];
+    NSString* subcuft = [NSString stringWithFormat:@"%.2f",self.total_cuft];
+    NSString* subcarton = [NSString stringWithFormat:@"%d",self.total_carton];
+    NSString* subweight = [NSString stringWithFormat:@"%.2f lbs",self.total_weight];
+    NSString* surcharge = [RAConvertor currencyNumber:self.surcharge];//[NSString stringWithFormat:@"$%@",];
+    NSString* totalprice = [RAConvertor currencyNumber:(self.total+self.surcharge)];//[NSString stringWithFormat:@"$%@",];
+    
+    NSString* subitems = [NSString stringWithFormat:@"%d",self.total_item];
+    
+    NSString* subqty = [NSString stringWithFormat:@"%d",self.total_QTY];
+#ifndef SCANNER_ORDER
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.can_see_price&&appDelegate.price_hidden==false)
+    {
+        
+    }
+    else
+    {
+        subtotal=nil;
+        
+    }
+    
+#else
+//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    [OLDataProvider updateScanOrder:appDelegate.order_code];
+#endif
+    
+    self.labelTotalSurcharge.text = surcharge;
+    self.labelTotalPrice.text = totalprice;
+    self.labelTotal.text=subtotal;
+    self.label_cuft.text=subcuft;
+    self.label_carton.text=subcarton;
+    self.label_weight.text=subweight;
+    self.label_items.text = subitems;
+    self.label_qty.text = subqty;
+    self.label_notes.text = [self.notes stringByReplacingOccurrencesOfString:@"\n" withString:@" "];
+    
+}
+- (IBAction)onEditGeneralNotes:(id)sender {
+#ifndef SCANNER_ORDER
+    if (![self isOrderAvailable]) {
+        return;
+    }
+#endif
+    UIViewController* parentvc=self;
+    
+    
+    
+    
+    CartGeneralNotesViewController * vc =[[UIStoryboard storyboardWithName:@"ERP_Mobile_Cart" bundle:nil] instantiateViewControllerWithIdentifier:@"CartGeneralNotesViewController"];
+    
+    
+//    NSMutableDictionary * item_json = [self.content_arr[indexPath.row ] mutableCopy];// [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+    
+    
+    
+    
+    vc.notes=self.notes;
+   
+    
+    //    vc.delegate = parentvc.self;
+    //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+            vc.onSetValue = ^(NSString* notes){
+                self.notes = notes;
+                
+                [self refresh_total];
+            };
+    //
+    
+    UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ;
+    
+    
+    
+    
+    
+    //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
+    
+    navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
+    [parentvc presentViewController:navi animated:YES completion:^{
+        
+        //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
+        
+        DebugLog(@"general notes editor present.........");
+        
+        //   self.btop = false;
+        //  <#code#>
+    }];
+    
+}
+//- (IBAction)onSelectAll:(UIButton *)sender {
+//    
+//    
+//    NSMutableArray* arr_ids = [[NSMutableArray alloc] init];
+//    
+//    
+//    
+//    
+//    
+//    
+//    if([self.btnselect.titleLabel.text isEqualToString:@"Select all"])
+//    {
+//        
+//        long count = self.content_arr.count;// [[self.content_data valueForKey:@"count"] intValue];
+//        for(int i=0;i<count;i++)
+//        {
+//            NSMutableDictionary * item_json = [self.content_arr[i] mutableCopy]; //[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
+//            if(![[item_json valueForKey:@"check"] boolValue])
+//                [arr_ids addObject:[NSNumber numberWithInt:[[item_json valueForKey:@"cart_item_id"] intValue]]];
+//            
+//        }
+//        [self.btnselect setTitle: @"Deselect all" forState: UIControlStateNormal];
+//    }
+//    else
+//    {
+//        long count = self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
+//        for(int i=0;i<count;i++)
+//        {
+//            NSMutableDictionary * item_json = [self.content_arr[i] mutableCopy]; //[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
+//            if([[item_json valueForKey:@"check"] boolValue])
+//                [arr_ids addObject:[NSNumber numberWithInt:[[item_json valueForKey:@"cart_item_id"] intValue]]];
+//            
+//        }
+//        [self.btnselect setTitle: @"Select all" forState: UIControlStateNormal];
+//    }
+//    
+//    NSString * ids = [arr_ids componentsJoinedByString:@","];
+//    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//        
+//        
+//        NSDictionary* check_json = [iSalesNetwork cart_check:ids];
+//        
+//        dispatch_async(dispatch_get_main_queue(), ^{
+//            
+//            
+//            
+//            if([[check_json valueForKey:@"result"] intValue]==2)
+//            {
+//                
+//                long count = self.content_arr.count;
+//                for(int i=0;i<count;i++)
+//                {
+//                    NSMutableDictionary * item_json = [self.content_arr[i] mutableCopy];
+//                    if([item_json[@"check"] boolValue])
+//                        item_json[@"check"]= @"false";
+//                    else
+//                        item_json[@"check"]= @"true";
+//                    
+//                    self.content_arr[i] = item_json;
+//                    //[self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%d",i]];
+//                }
+//                
+//                [self reload_container_getdata:false];
+//                
+//                // [self reload_data];
+//            }
+//            else
+//            {
+//                [RAUtils message_alert:[check_json valueForKey:@"err_msg"] title:nil controller:self] ;
+//            }
+//            
+//            
+//            
+//        });
+//    });
+//    
+//    
+//    
+//    
+//    
+//    
+//    //  [self refresh_total];
+//    //  self.labelTotal.text=[NSString stringWithFormat:@"$%.2f",self.total];
+//    //    DebugLog(self.btnselect.titleLabel.text);
+//    //    if(self.btnselect.titleLabel.text)
+//}
+//#pragma mark - MODEL cell delegate
+//-(void) returnQTY:(int)qty
+//{
+//    NSMutableDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+//    
+//    int count=[[item_json valueForKey:@"count"] intValue];
+//    
+//    if(count==qty)
+//        return;
+//    [item_json setValue:[NSString stringWithFormat:@"%d",qty] forKey:@"count"];
+//    double unit_price = [[item_json valueForKey:@"unit_price"] doubleValue];
+//    //   double sub_total=[[item_json valueForKey:@"subtotal_price"] doubleValue];
+//    [item_json setValue:[NSString stringWithFormat:@"%f",unit_price*qty] forKey:@"subtotal_price"];
+//    self.content_arr[indexPath.row]= item_json;
+//    //  [self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
+//    [self refresh_total];
+//    //  self.total+=(unit_price*qty-sub_total);
+//    //  self.labelTotal.text=[NSString stringWithFormat:@"$%.2f",self.total];
+//    
+//    
+//}
+- (IBAction)OnCancelOrderClicked:(id)sender {
+    
+//    if (![self isOrderAvailable]) {
+//        return;
+//    }
+//
+//    UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Cancel Order" message:@"Are you sure to cancel the order in cart ?" preferredStyle:UIAlertControllerStyleAlert];
+//    //block代码块取代了delegate
+//
+//
+//
+//    UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+//           AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//        __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Cancel Order" completion:^{
+//
+//#ifdef SCANNER_ORDER
+////      if(RASingleton.sharedInstance.enable_OfflineOrder)
+//      {
+//          [waitalert dismissViewControllerAnimated:YES completion:nil];
+//          [OLDataProvider deleteScanOrder:appDelegate.order_code];
+//          [appDelegate closeOrder];
+//          return;
+//      }
+//#endif
+//            [RANetwork request_cancel_order:nil order_code:appDelegate.order_code completionHandler:^(NSMutableDictionary *result) {
+//                        [waitalert dismissViewControllerAnimated:YES completion:^{
+//                            NSDictionary* return_json = result;
+//
+//                            if([[return_json valueForKey:@"result"] intValue]==2)
+//                            {
+//                                //if([appDelegate.order_code isEqualToString: [self.content_data[indexPath.row] valueForKey:@"order_code"]])
+//                                {
+//                                    appDelegate.order_code = nil;
+//                                    //appDelegate.user_type = 0;
+//                                    appDelegate.customerInfo = nil;
+//                                    appDelegate.contact_id = nil;
+//                                    appDelegate.order_customer_id = nil;
+//                                    [appDelegate SetSo:nil];
+//                                    appDelegate.cart_count=0;
+//                                    [appDelegate update_count_mark];
+//
+//
+//                                }
+//            #ifdef RA_NOTIFICATION
+//                                [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+//            #else
+//                                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                                [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+//            #endif
+//                                //[RAUtils message_alert:nil title:@"Order Canceled" controller:self] ;
+//                                //[self ReloadData];
+//
+//                                //                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                                //                    //                        appDelegate.order_code = nil;
+//                                //
+//                                //                    [appDelegate closeOrder];
+//                                //                    [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false];
+//                                [((MainViewController*)appDelegate.main_vc) switchToHome];
+//
+//                                //                    if([appDelegate.mode isEqualToString:@"TM"]&& appDelegate.submit_order_logout)
+//                                //                    {
+//                                //                        [((MainViewController*)appDelegate.main_vc) Loginout:false];
+//                                //                    }
+//                            }
+//                            else
+//                            {
+//                                [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Cancel Order" controller:self] ;
+//                            }
+//                        }];
+//
+//
+//
+//
+//
+//
+//                    }];
+//
+//        }];
+//
+////        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+////
+////            NSDictionary* return_json = [RANetwork cancel_Order:nil order_code:appDelegate.order_code];
+////
+////            dispatch_async(dispatch_get_main_queue(), ^{
+////                [waitalert dismissViewControllerAnimated:YES completion:nil];
+////
+////
+////                if([[return_json valueForKey:@"result"] intValue]==2)
+////                {
+////                    //if([appDelegate.order_code isEqualToString: [self.content_data[indexPath.row] valueForKey:@"order_code"]])
+////                    {
+////                        appDelegate.order_code= nil;
+////                        //appDelegate.user_type = 0;
+////                        appDelegate.customerInfo = nil;
+////                        appDelegate.contact_id = nil;
+////                        appDelegate.order_customer_id = nil;
+////                        [appDelegate SetSo:nil];
+////                        appDelegate.cart_count=0;
+////                        [appDelegate update_count_mark];
+////
+////
+////                    }
+////#ifdef RA_NOTIFICATION
+////                    [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+////#else
+////                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+////                    [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+////#endif
+////                    //[RAUtils message_alert:nil title:@"Order Canceled" controller:self] ;
+////                    //[self ReloadData];
+////
+//////                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//////                    //                        appDelegate.order_code = nil;
+//////
+//////                    [appDelegate closeOrder];
+//////                    [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false];
+////                    [((MainViewController*)appDelegate.main_vc) switchToHome];
+////
+//////                    if([appDelegate.mode isEqualToString:@"TM"]&& appDelegate.submit_order_logout)
+//////                    {
+//////                        [((MainViewController*)appDelegate.main_vc) Loginout:false];
+//////                    }
+////                }
+////                else
+////                {
+////                    [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Cancel Order" controller:self] ;
+////                }
+////
+////
+////
+////
+////            });
+////        });
+//
+//
+//    }];
+//
+//    UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+//        DebugLog(@"No");
+//    }];
+//    [alertControl addAction:actionOne];
+//
+//    [alertControl addAction:alertthree];
+//
+//    //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+//
+//
+//    [self presentViewController:alertControl animated:YES completion:nil];
+//
+//    DebugLog(@"%@",self.edit_select_arr);
+//
+//
+
+
+}
+
+#pragma mark - Private
+
+- (BOOL)isOrderAvailable {
+
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if (appDelegate.order_code.length == 0) {
+        
+        UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:@"please create a new order first" preferredStyle:UIAlertControllerStyleAlert];
+        UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+            
+        }];
+        
+        [alertVC addAction:okAction];
+        
+        [self presentViewController:alertVC animated:YES completion:nil];
+        
+        return NO;
+    }
+    return YES;
+}
+
+#pragma mark - commoneditor controller delegate
+-(void) returnValue:(NSMutableDictionary *)value indexPath :(NSIndexPath*) indexPath
+{
+    //   [self reload_data];
+    if([value[@"commitorder_logout"] boolValue])
+        [self logout];
+    
+    [[self navigationController] setNavigationBarHidden:YES animated:NO];
+}
+#pragma mark - Table view data source
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
+{
+    NSDictionary * item_json = nil;
+    if (self.back_order_flag) {
+        item_json = [self itemJsonAtIndexPath:indexPath];
+    } else {
+        item_json = self.content_arr[indexPath.row ];// [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+        
+    }
+    
+    NSString* notes =[item_json valueForKey:@"note"];
+    if(notes.length>0)
+    {
+        return 146;
+    }
+    else
+        return 120;
+
+}
+
+//- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
+//{
+//    return 0;
+//}
+//- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
+//{
+//    return 0;
+//}
+//- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
+//{
+//        UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.0001)];
+//    return myView;
+//
+//}
+
+//- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
+//{
+//    UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.0001)];
+////    myView.backgroundColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7];
+////    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 90, 22)];
+////    titleLabel.textColor=[UIColor whiteColor];
+////    titleLabel.backgroundColor = [UIColor clearColor];
+////    if(section==0)
+////        titleLabel.text=NSLocalizedString(@"display_items", nil);
+////    else
+////        titleLabel.text=NSLocalizedString(@"hide_items", nil);
+////    [titleLabel sizeToFit];
+////    [myView addSubview:titleLabel];
+////
+//    return myView;
+//}
+//
+//- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
+//    if(section==0)
+//        return nil;
+//    else
+//        return @"detail section";
+//}
+- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
+{
+    if (self.back_order_flag) {
+        return [[self.cart_json objectForKey:@"section_count"] integerValue];
+    } else {
+        return 1;
+    }
+}
+- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
+{
+#ifdef SCANNER_ORDER
+    return 0;
+#endif
+    
+    if (self.back_order_flag) {
+        return 50;
+    } else {
+        return 0;
+    }
+}
+- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
+{
+    
+#ifdef SCANNER_ORDER
+    return nil;
+#endif
+    
+    if (self.back_order_flag) {
+//        UIView *header = [tableView dequeueReusableCellWithIdentifier:@"section_header_cell"];
+//        UILabel *title_lb = [header viewWithTag:8520];
+        UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(tableView.bounds), 50.0f)];
+        header.backgroundColor = [UIColor colorWithRed:128 / 255.0 green:95 / 255.0 blue:54 / 255.0 alpha:1];
+        header.autoresizingMask = UIViewAutoresizingFlexibleWidth;
+        
+        UILabel *title_lb = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, CGRectGetWidth(header.bounds) - 10, 50.0f)];
+        title_lb.autoresizingMask = UIViewAutoresizingFlexibleWidth;
+        title_lb.font = [UIFont systemFontOfSize:25.0f];
+        title_lb.textColor = [UIColor whiteColor];
+        [header addSubview:title_lb];
+        
+        title_lb.text = [self titleForSection:section];
+        return header;
+    } else {
+        return nil;
+    }
+    
+    
+}
+#ifdef SCANNER_ORDER
+- (IBAction)onScanChangeCustomerType:(id)sender {
+    
+    return;
+    NSString *orderdir =[OLDataProvider getScanPath];
+    
+    UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Select Customer type" message:@"" preferredStyle:UIAlertControllerStyleAlert];
+    //block代码块取代了delegate
+    
+    
+    
+    UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Existing Customer" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+        
+        NSMutableDictionary* dict = nil;
+        NSString* ordertemplate = nil;
+        if([RADataProvider getSiteHasERP])
+            ordertemplate =@"e_order.json";
+        else
+            ordertemplate =@"e_order_noerp.json";
+        
+        dict=[OLDataProvider loadScanTemplate:ordertemplate];
+        
+        NSString *orderPath = [orderdir stringByAppendingPathComponent:@"order.json"];
+        
+        
+        
+        [RAUtils dicttofile:orderPath dict:dict];
+        
+        
+
+        
+//
+//        NSString *contactpath = [orderdir stringByAppendingPathComponent:@"contact.json"];
+//
+//
+//
+//        [RAUtils dicttofile:contactpath dict:appDelegate.customerInfo];
+//
+//        [self scanPlaceOrder];
+//
+    }];
+    
+    UIAlertAction *alert2 = [UIAlertAction actionWithTitle:@"New customer" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
+        NSMutableDictionary* dict = nil;
+        dict=[OLDataProvider loadScanTemplate:@"n_order.json"];
+        
+        NSString *orderPath = [orderdir stringByAppendingPathComponent:@"order.json"];
+        
+        
+        
+        [RAUtils dicttofile:orderPath dict:dict];
+        
+        
+
+//        
+//        
+//        NSString *contactpath = [orderdir stringByAppendingPathComponent:@"contact.json"];
+//        
+//        
+//        
+//        [RAUtils dicttofile:contactpath dict:appDelegate.customerInfo];
+//        [self scanPlaceOrder];
+    }];
+    UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+        DebugLog(@"No");
+    }];
+    [alertControl addAction:actionOne];
+    [alertControl addAction:alert2];
+    [alertControl addAction:alertthree];
+    
+    //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+    
+    
+    [self presentViewController:alertControl animated:YES completion:nil];
+    
+    DebugLog(@"%@",self.edit_select_arr);
+
+    
+}
+#endif
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
+{
+    if (self.back_order_flag) {
+        return [self itemCountInSection:section];
+    } else {
+        // NSDictionary * item_json = [self.content_data objectForKey:@"items"];
+        long count =self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue];
+        return count;
+    }
+    
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    
+  
+    //    if(tableView==self.itemListTable)
+    //    {
+    
+    //    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    NSString *CellIdentifier;
+#ifdef SCANNER_ORDER
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    CellIdentifier = @"ScanCartItemCell";
+    ScanCartItemCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
+    
+    
+    NSDictionary * item_json = nil;//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
+    
+
+        item_json = [self itemJsonAtIndexPath:indexPath];
+    
+  
+    
+    
+    NSString* notes = [item_json valueForKey:@"note"];
+    
+    if(notes.length>0)
+    {
+        cell.labelNotes.text = notes;
+        
+    }
+    else
+    {
+        cell.labelNotes.text = nil;
+        
+    }
+    
+    NSString* description =[item_json valueForKey:@"description"];
+    NSString* model =[item_json valueForKey:@"model"];
+    
+    
+    NSString* dimension =[item_json valueForKey:@"dimension"] ;
+    int count =[[item_json valueForKey:@"count"] intValue];
+    
+    int stockUom =[[item_json valueForKey:@"stockUom"] intValue];
+    
+    
+    double unitprice=[[item_json valueForKey:@"unit_price"] doubleValue];
+    
+    double discount=[[item_json valueForKey:@"discount"] doubleValue];
+    cell.discount = discount;
+    
+    if(appDelegate.user_type == USER_ROLE_CUSTOMER)
+    {
+        cell.btnScanDiscount.hidden = true;
+    }
+    else
+    {
+        switch(RASingleton.sharedInstance.price_type)
+        {
+            case 0: cell.btnScanDiscount.hidden = true;
+                break;;
+            case 1:
+            {
+                if(![item_json[@"special_price"] boolValue]&&![item_json[@"net_price"] boolValue])
+                    cell.btnScanDiscount.hidden = false;
+                else
+                    cell.btnScanDiscount.hidden = true;
+            }
+                break;;
+    //        case 2: pricename = @"25%";
+    //            break;
+        }
+    }
+
+    
+
+    
+    NSString* product_id = [item_json valueForKey:@"product_id"];
+    
+
+    
+    
+    CGRect frame = cell.frame;
+    cell.labelMpack.text =[NSString stringWithFormat:@"Sold in QTY of:%d", stockUom];
+    
+  
+    
+    
+    __weak typeof(self) weakSelf = self;
+    cell.onReturnQTY=^(int qty,NSDictionary* ext)
+    {
+        int result = [[ext objectForKey:@"result"] intValue];
+        BOOL refresh = [[ext objectForKey:@"refresh"] boolValue];
+
+        if (result == 2 && refresh) {
+            [self ReloadData];
+            return;
+        }
+
+        NSMutableDictionary * item_json = nil;
+        if (weakSelf.back_order_flag) {
+            item_json = [[weakSelf itemJsonAtIndexPath:indexPath] mutableCopy];
+        } else {
+            item_json = [weakSelf.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+        }
+
+//        int count=[[item_json valueForKey:@"count"] intValue];
+
+//        if(count==qty)
+//            return;
+
+        if ([[ext valueForKey:@"result"] integerValue] == 8) {
+            return ;
+        }
+
+        [item_json setValue:[NSString stringWithFormat:@"%d",qty] forKey:@"count"];
+        double unit_cuft = [[item_json valueForKey:@"unit_cuft"] doubleValue];
+        [item_json setValue:[NSString stringWithFormat:@"%f",unit_cuft*qty] forKey:@"cuft"];
+//                [item_json setValue:[ext valueForKey:@"carton"] forKey:@"carton"];
+//                [item_json setValue:[ext valueForKey:@"weight"] forKey:@"weight"];
+        double unit_price = [[item_json valueForKey:@"unit_price"] doubleValue];
+        //   double sub_total=[[item_json valueForKey:@"subtotal_price"] doubleValue];
+        [item_json setValue:[NSString stringWithFormat:@"%f",unit_price*qty*(1-discount/100.0)] forKey:@"subtotal_price"];
+
+        if (weakSelf.back_order_flag) {
+            [weakSelf updateItemJson:item_json atIndexPath:indexPath];
+        } else {
+            weakSelf.content_arr[indexPath.row]= item_json;
+        }
+        //  [self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
+        [weakSelf refresh_total];
+
+#ifdef RA_NOTIFICATION
+        [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+#else
+        AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+        [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+#endif
+    };
+ //   cell.delegate=self;
+ //   cell.from=indexPath;
+    NSDictionary* price_group = [RADataProvider get_price_group:appDelegate.price_group];
+    
+    if(RASingleton.sharedInstance.price_type==1&&([item_json[@"net_price"] boolValue]||[item_json[@"special_price"] boolValue]||discount>0))
+    {
+                cell.labelUnitPrice.textColor= [UIColor redColor];
+        if([item_json[@"special_price"] boolValue]||discount>0)
+        {
+            cell.labelOldPrice.hidden = false;
+//            if([item_json[@"special_price"] boolValue])
+//            {
+            cell.labelOldPrice.text=[RAConvertor currencyNumber:[item_json[price_group[@"price_1"][@"name"]] doubleValue]];//[NSString stringWithFormat:@"%.2f",[item_json[@"price1"] doubleValue]];
+//            }
+//            else
+//            {
+                
+//            }
+        }
+        else
+            cell.labelOldPrice.hidden = true;
+    }
+    else
+            {
+                cell.labelUnitPrice.textColor= [UIColor blackColor];
+                cell.labelOldPrice.hidden = true;
+            }
+    
+//    if(discount>0)
+//    {
+//        cell.labelNotes.text = [NSString stringWithFormat:@"Note: discount %d%% off.",(int)discount];
+//        cell.labelOldPrice.hidden = false;
+////        cell.labelOldPrice.textColor = [UIColor redColor];
+//        cell.labelUnitPrice.textColor= [UIColor redColor];
+//        cell.labelOldPrice.text=[item_json[@"unit_price"] stringValue];
+//        frame.size.height = 120;
+//    }
+//    else
+//    {
+//
+//
+//        cell.labelOldPrice.hidden = true;
+//        cell.labelNotes.text = nil;
+//        frame.size.height = 94;
+//    }
+    
+    
+    
+    cell.unit_price = unitprice;
+    //    cell.labelAttribute.text = attribute;
+    //    cell.labelCurrency.text = currency;
+    
+    
+    NSString* subtotal = [RAConvertor currencyNumber:unitprice*count*(1-discount/100)];//[NSString stringWithFormat:@"%.2f",unitprice*count*(1-discount/100)];
+    NSString* newunitprice = [RAConvertor currencyNumber:unitprice*(1-discount/100)];//[NSString stringWithFormat:@"%.2f",unitprice*(1-discount/100)];
+    
+    cell.labelModel.text = model;
+
+    
+    cell.labelDescription.text = [NSString stringWithFormat:@"%@\n%@",description,dimension];
+    
+    
+//    if(noprice&&unitprice==0.0)
+//    {
+//        cell.labelPrice.text = @"No Price";
+//
+//        cell.labelUnitPrice.text = @"No Price";
+//    }
+//    else
+    {
+        cell.labelSubtotal.text =  subtotal;
+        
+        cell.labelUnitPrice.text =  newunitprice;
+    }
+    bool check = [[item_json valueForKey:@"check"] boolValue];
+
+    
+    NSString* cart_item_id= [item_json valueForKey:@"cart_item_id"];
+    cell.cart_id = cart_item_id;
+    
+    if(/*appDelegate.user_type==USER_ROLE_CUSTOMER*/ true)
+        [cell init_Stepper:stockUom max:9999 min:stockUom value:count];
+//    else
+//        [cell init_Stepper:1 max:9999 min:1 value:count];
+    
+    
+    [cell set_Count:count];
+    
+    // Button 设置了大小约束,Size就不会随内容变化
+  
+    
+    
+    cell.backgroundColor = [UIColor whiteColor];
+    
+    return cell;
+    
+#else
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    CellIdentifier = @"CartItemCell";
+    ModelItemCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
+    
+    
+    NSDictionary * item_json = nil;//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
+    
+    if (self.back_order_flag) {
+        item_json = [self itemJsonAtIndexPath:indexPath];
+    } else {
+        item_json = self.content_arr[indexPath.row];
+    }
+    
+    NSDictionary * combine_json =[item_json objectForKey:@"combine"];
+    NSDictionary * master_json = [item_json objectForKey:@"combine_master"];
+    if (cell.masterBtn != nil) {
+        if (master_json == nil) {
+            cell.masterBtn.hidden = YES;
+        } else{
+            cell.masterBtn.hidden = NO;
+            cell.master_items = master_json;
+        }
+    }
+    
+    
+    bool isfree = [[item_json valueForKey:@"is_free"]boolValue];
+    NSString* notes = [item_json valueForKey:@"note"];
+    BOOL is_out_of_stock = [[item_json valueForKey:@"is_out_of_stock"] boolValue];
+    bool noprice =[[item_json valueForKey:@"is_no_price"]boolValue];
+    cell.noprice = noprice;
+    cell.enable_longpress = true;
+    cell.bundle_item=combine_json;
+    NSString* img_url = [item_json valueForKey:@"img_url"];
+    NSString* description = [item_json valueForKey:@"description"];
+    //    NSString* identifier = [item_json valueForKey:@"identifier"];
+    //    NSString* attribute = [item_json valueForKey:@"attribute"];
+    //    NSString* currency = [item_json valueForKey:@"currency"];
+    int count =[[item_json valueForKey:@"count"] intValue];
+    
+    int stockUom =[[item_json valueForKey:@"stockUom"] intValue];
+    
+    //    double totalprice =[[item_json valueForKey:@"subtotal_price"] doubleValue];
+    
+    double unitprice=[[item_json valueForKey:@"unit_price"] doubleValue];
+    
+    double discount =[[item_json valueForKey:@"discount"] doubleValue];
+    
+    
+    NSString* product_id = [item_json valueForKey:@"product_id"];
+    
+    // handle no such model
+    if(product_id.length==0)
+        cell.labelNoSuchModel.hidden=false;
+    else
+        cell.labelNoSuchModel.hidden=true;
+    
+    //if (appDelegate.user_type == USER_ROLE_CUSTOMER) {
+        if (!is_out_of_stock) {
+            cell.labelOutOfStock.hidden = YES;
+        } else {
+            cell.labelOutOfStock.hidden = NO;
+        }
+//    } else {
+//        cell.labelOutOfStock.hidden = YES;
+//    }
+    
+    //    discount = 5.0;
+    cell.discount = discount;
+    
+    
+    CGRect frame = cell.frame;
+    
+    
+    if(notes.length>0)
+    {
+        cell.labelNotes.text = [@"Note: " stringByAppendingString:[notes stringByReplacingOccurrencesOfString:@"\n" withString:@" "]];
+        frame.size.height = 146;
+    }
+    else
+    {
+        cell.labelNotes.text = nil;
+        frame.size.height = 120;
+    }
+    
+  //  cell.frame = frame;
+    
+    NSString* discountstr=[NSString stringWithFormat:@"%@%% off", [RAUtils FloatFormat:discount]];
+    
+    if(isfree)
+    {
+        cell.labelOldPrice.hidden = false;
+        cell.labelOldPrice.textColor = [UIColor redColor];
+        cell.labelOldPrice.text=@"Free";
+        cell.labelOldPrice.hideline = true;
+        
+        cell.labelDiscount.hidden = true;
+    }
+    else
+    {
+        cell.labelOldPrice.textColor = [UIColor blackColor];
+        cell.labelOldPrice.hideline = false;
+        if(discount==0)
+        {
+            cell.labelOldPrice.hidden = true;
+            cell.labelDiscount.hidden = true;
+            
+        }
+        else
+        {
+            cell.labelOldPrice.hidden = false;
+            cell.labelDiscount.hidden = false;
+        }
+    }
+    __weak typeof(self) weakSelf = self;
+    cell.onReturnQTY=^(int qty,NSDictionary* ext)
+    {
+        int result = [[ext objectForKey:@"result"] intValue];
+        BOOL refresh = [[ext objectForKey:@"refresh"] boolValue];
+        
+        if (result == 2 && refresh) {
+            [self ReloadData];
+            return;
+        }
+        
+        NSMutableDictionary * item_json = nil;
+        if (weakSelf.back_order_flag) {
+            item_json = [[weakSelf itemJsonAtIndexPath:indexPath] mutableCopy];
+        } else {
+            item_json = [weakSelf.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+        }
+        
+//        int count=[[item_json valueForKey:@"count"] intValue];
+        
+//        if(count==qty)
+//            return;
+        
+        if ([[ext valueForKey:@"result"] integerValue] == 8) {
+            return ;
+        }
+        
+        [item_json setValue:[NSString stringWithFormat:@"%d",qty] forKey:@"count"];
+        [item_json setValue:[ext valueForKey:@"cuft"] forKey:@"cuft"];
+                [item_json setValue:[ext valueForKey:@"carton"] forKey:@"carton"];
+                [item_json setValue:[ext valueForKey:@"weight"] forKey:@"weight"];
+        double unit_price = [[item_json valueForKey:@"unit_price"] doubleValue];
+        //   double sub_total=[[item_json valueForKey:@"subtotal_price"] doubleValue];
+        [item_json setValue:[NSString stringWithFormat:@"%f",unit_price*qty] forKey:@"subtotal_price"];
+        
+        if (weakSelf.back_order_flag) {
+            [weakSelf updateItemJson:item_json atIndexPath:indexPath];
+        } else {
+            weakSelf.content_arr[indexPath.row]= item_json;
+        }
+        //  [self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
+        [weakSelf refresh_total];
+        
+#ifdef RA_NOTIFICATION
+        [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+#else
+        AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+        [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+#endif
+    };
+ //   cell.delegate=self;
+ //   cell.from=indexPath;
+    cell.unit_price = unitprice;
+    //    cell.labelAttribute.text = attribute;
+    //    cell.labelCurrency.text = currency;
+    
+    
+    NSString* oldprice =[NSString stringWithFormat:@"%.2f",unitprice];
+    NSString* newprice = [NSString stringWithFormat:@"%.2f",unitprice* (1.0-discount/100)*count];
+    NSString* newunitprice = [NSString stringWithFormat:@"%.2f",unitprice* (1.0-discount/100)];
+    if(appDelegate.can_see_price&&appDelegate.price_hidden==false)
+    {
+        
+    }
+    else
+    {
+        oldprice=nil;
+        newprice=nil;
+        newunitprice=nil;
+    }
+    
+    
+    cell.labelDiscount.text = discountstr;
+    cell.labelOldPrice.text = oldprice;
+    
+    cell.labelMasterpack.text =[NSString stringWithFormat:@"Sold in QTY of:%d", stockUom];
+    
+    cell.labelDescription.text = description;
+    //   cell.labelIdentifier.text = identifier;
+    
+    if(noprice&&unitprice==0.0)
+    {
+        cell.labelPrice.text = @"No Price";
+        
+        cell.labelUnitPrice.text = @"No Price";
+    }
+    else
+    {
+        cell.labelPrice.text = newprice;
+        
+        cell.labelUnitPrice.text = newunitprice;
+    }
+    bool check = [[item_json valueForKey:@"check"] boolValue];
+    if(check)
+    {
+        
+        cell.img_checkmark.hidden=false;
+        //        [item_json setValue:@"0" forKey:@"check"];
+        
+    }
+    else
+    {
+        //        [item_json setValue:@"1" forKey:@"check"];
+        
+        cell.img_checkmark.hidden=true;
+    }
+    
+    NSString* cart_item_id= [item_json valueForKey:@"cart_item_id"];
+    cell.cart_id = cart_item_id;
+    
+    if(/*appDelegate.user_type==USER_ROLE_CUSTOMER*/ true)
+ {
+#ifdef IGNORE_MPACK
+        [cell init_Stepper:1 max:9999 min:1 value:count];
+#else
+        [cell init_Stepper:stockUom max:9999 min:stockUom value:count];
+#endif
+ }
+//    else
+//        [cell init_Stepper:1 max:9999 min:1 value:count];
+    
+    
+    [cell set_Count:count];
+    
+    // Button 设置了大小约束,Size就不会随内容变化
+    [cell.btnImage setContentMode:UIViewContentModeScaleAspectFit];
+    [cell.btnImage setContentEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
+    [cell.btnImage setContentHorizontalAlignment:UIControlContentHorizontalAlignmentFill];
+    [cell.btnImage setContentVerticalAlignment:UIControlContentVerticalAlignmentFill];
+    cell.btnImage.imageView.contentMode = UIViewContentModeScaleAspectFit;
+    
+    if (![cell.imageName isEqualToString:img_url]) {
+        cell.imageName = img_url;
+//        [cell.btnImage setBackgroundImage:[UIImage imageNamed:@"loading_s"] forState:UIControlStateNormal];
+        [cell.btnImage setImage:[UIImage imageNamed:@"loading_s"] forState:UIControlStateNormal];
+        
+        NSString* file_name=[img_url lastPathComponent];
+        NSData* img_data=[iSalesDB load_cached_img:file_name loadFrom:img_url];
+        if(img_data!=nil)
+        {
+            
+            UIImage * img =[UIImage imageWithData:img_data];
+//            [cell.btnImage setBackgroundImage:img forState:UIControlStateNormal];
+            [cell.btnImage setImage:img forState:UIControlStateNormal];
+        }
+        else
+        {
+            
+            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                
+                NSData*  downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url]];
+                
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    
+                    
+                    
+                    if(downloadimg_data!=nil)
+                    {
+                        
+                        [iSalesDB cache_img:downloadimg_data filename:file_name saveTo:img_url];
+                        
+                        UIImage * img =[UIImage imageWithData:downloadimg_data];
+//                        [cell.btnImage setBackgroundImage:img forState:UIControlStateNormal];
+                        [cell.btnImage setImage:img forState:UIControlStateNormal];
+                    }
+                    else
+                    {
+//                        [cell.btnImage setBackgroundImage:[UIImage imageNamed:@"notfound_s"] forState:UIControlStateNormal];
+                        [cell.btnImage setImage:[UIImage imageNamed:@"notfound_s"] forState:UIControlStateNormal];
+                    }
+                    
+                });
+            });
+            
+            
+        }
+    }
+    cell.backgroundColor = [UIColor whiteColor];
+    
+    
+    if(self.itemListTable.editing)
+    {
+        cell.editCount.enabled = false;
+        cell.stepper.hidden=true;
+    }
+    else
+    {
+        cell.editCount.enabled=true;
+        cell.stepper.hidden=false;
+        
+    }
+    return cell;
+    //    }
+    //    else
+    //    {
+    //        NSString *CellIdentifier = @"OrderInfoListItem";
+    //        UITableViewCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
+    //        return cell;
+    //    }
+    
+#endif
+}
+
+
+-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    if(!self.itemListTable.editing)
+        return;
+    
+//    NSMutableDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+    
+    NSMutableDictionary * item_json = nil;
+    if (self.back_order_flag) {
+        item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy];
+    } else {
+        item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+        
+    }
+    
+    NSString *cart_item_id=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
+    if ([self.edit_select_arr containsObject:cart_item_id])
+    {
+        [self.edit_select_arr removeObject:cart_item_id];
+    }
+}
+- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    
+#ifdef SCANNER_ORDER
+    
+    return;
+    
+#endif
+    
+    NSMutableDictionary * item_json = nil;
+    if (self.back_order_flag) {
+        item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy];
+    } else {
+        item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+        
+    }
+    
+//    NSMutableDictionary * item_json =[self.content_arr[indexPath.row] mutableCopy];// [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+    if(self.itemListTable.editing)
+    {
+        
+        NSString *cart_item_id=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
+        
+        if (![self.edit_select_arr containsObject:cart_item_id]) {
+            [self.edit_select_arr addObject:cart_item_id];
+        }
+        
+        return;
+    }
+    
+    // no checkmark support anymore for cart
+    
+    return;
+    
+//    ModelItemCell* cell = (ModelItemCell*)[tableView cellForRowAtIndexPath:indexPath];
+//    
+//    
+//    cell.selected = false;
+//    //    self.dirty = true;
+//    
+//    
+//    bool check = [[item_json valueForKey:@"check"] boolValue];
+//    if(check)
+//    {
+//        [item_json setValue:@"false" forKey:@"check"];
+//        cell.img_checkmark.hidden=true;
+//        [self.btnselect setTitle: @"Select all" forState: UIControlStateNormal];
+//        //        double totalprice =[[item_json valueForKey:@"subtotal_price"] doubleValue];
+//        //        self.total-=totalprice;
+//    }
+//    else
+//    {
+//        [item_json setValue:@"true" forKey:@"check"];
+//        cell.img_checkmark.hidden=false;
+//        //        double totalprice =[[item_json valueForKey:@"subtotal_price"] doubleValue];
+//        //        self.total+=totalprice;
+//    }
+//    
+//    
+//    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//        
+//        
+//        NSString *ids=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
+//        
+//        NSDictionary* check_json = [iSalesNetwork cart_check:ids];
+//        
+//        dispatch_async(dispatch_get_main_queue(), ^{
+//            
+//            
+//            
+//            if([[check_json valueForKey:@"result"] intValue]==2)
+//            {
+//                
+//                
+//                if([item_json[@"check"] boolValue]==false)
+//                    item_json[@"check"]= @"false";
+//                else
+//                    item_json[@"check"]= @"true";
+//                
+//                self.content_arr[indexPath.row] = item_json;
+//                //[self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
+//                
+//                
+//                [self reload_container_getdata:false];
+//                
+//                
+//            }
+//            else
+//            {
+//                [RAUtils message_alert:[check_json valueForKey:@"err_msg"] title:nil controller:self] ;
+//            }
+//            
+//            
+//            
+//        });
+//    });
+//    
+//    //debug
+//    //[self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
+//    
+//    [self refresh_total];
+    //self.labelTotal.text=[NSString stringWithFormat:@"$%.2f",self.total];
+}
+
+- (UITableViewCellEditingStyle)tableView:(UITableView *)tv editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
+    if(self.itemListTable.editing)
+        return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;
+    else
+        return UITableViewCellEditingStyleDelete;
+}
+
+#pragma mark 在滑动手势删除某一行的时候,显示出更多的按钮
+
+- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath
+
+{
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    // 添加一个删除按钮
+    
+    self.indexPath=indexPath;
+    
+    NSMutableDictionary * item_json = nil;
+    if (self.back_order_flag) {
+        item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy];
+    } else {
+        item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+
+    }
+    
+    NSString* productID = [item_json valueForKey:@"product_id"];
+    BOOL outOfStock = [[item_json valueForKey:@"is_out_of_stock"] boolValue];
+    
+    __weak typeof(self) weakself = self;
+    
+    
+    UITableViewRowAction *deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@" Delete " handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
+        
+        DebugLog(@"delete click");
+        
+         //[self.itemListTable setEditing:false animated:YES];
+        
+        
+        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Confirm Deletion" message:@"Are you sure to delete this model?" preferredStyle:UIAlertControllerStyleAlert];
+         
+         
+      
+
+         UIAlertAction *action_2 = [UIAlertAction actionWithTitle:@"YES" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+            
+             // [self.itemListTable reloadRowsAtIndexPaths:@[self.indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
+             NSMutableDictionary * item_json = nil;
+             if (self.back_order_flag) {
+                 item_json = [[self itemJsonAtIndexPath:self.indexPath] mutableCopy];
+             } else {
+                 item_json = [self.content_arr[self.indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+                 
+             }
+             
+             NSString *ids=[NSString stringWithFormat:@"%@",[item_json valueForKey:@"cart_item_id"] ];
+             
+             __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Remove Model" completion:^{
+                 [RANetwork request_remove_cart:ids completionHandler:^(NSMutableDictionary *result) {
+                                  NSMutableDictionary* cart_json = result;
+
+
+                                  [waitalert dismissViewControllerAnimated:YES completion:^{
+                                      if([[cart_json valueForKey:@"result"] intValue]==2)
+                                      {
+                                          //  AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                          if (self.back_order_flag) {
+                                              
+                                              NSInteger section_count = [self sectionCount];
+                                              for (int i = 0; i < section_count; i++) {
+                                                  NSInteger item_count = [self itemCountInSection:i];
+                                                  BOOL ready_break = NO;
+                                                  
+                                                  for (int j = 0; j < item_count; j++) {
+                                                      NSIndexPath *indexPath = [NSIndexPath indexPathForRow:j inSection:i];
+                                                      NSDictionary* obj_json = [self itemJsonAtIndexPath:indexPath];
+                                                      NSString* _id =[obj_json valueForKey:@"cart_item_id"];
+                                                      if([_id isEqualToString:ids])
+                                                      {
+                                                          [self updateItemJson:nil atIndexPath:indexPath];
+                                                          ready_break = YES;
+                                                          break;
+                                                      }
+                                                  }
+                                                  
+                                                  if (ready_break) {
+                                                      break;
+                                                  }
+                                              }
+                                              
+                                          } else {
+                                              for(int i=0;i<self.content_arr.count;i++)
+                                              {
+                                                  NSDictionary* obj_json = self.content_arr[i];
+                                                  NSString* _id =[obj_json valueForKey:@"cart_item_id"];
+                                                  if([_id isEqualToString:ids])
+                                                  {
+                                                      [self.content_arr removeObjectAtIndex:i];
+                                                      //  [self.itemListTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:self.indexPath] withRowAnimation:UITableViewRowAnimationLeft];
+                                                      break;
+                                                      // appDelegate.cart_count--;
+                                                      // [appDelegate update_count_mark];
+                                                  }
+                                                  
+                                              }
+                                          }
+#ifdef SCANNER_ORDER
+                                          self.cart_json = cart_json;
+#endif
+                                          [self.itemListTable reloadData];
+                                          [self refresh_total];
+                 #ifdef RA_NOTIFICATION
+                                          [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+                 #else
+                                          AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                          [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+                 #endif
+                                          //                        [self reload_data];
+                                      }
+                                      else
+                                      {
+                                          [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Delete Model" controller:self] ;
+                                      }
+                                  }];
+
+
+
+
+
+                              }];
+
+             }];
+                          
+//                         dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//                             NSDictionary* cart_json = [RANetwork cart_remove:ids];
+//
+//                             dispatch_async(dispatch_get_main_queue(), ^{
+//
+//
+//
+//                                 if([[cart_json valueForKey:@"result"] intValue]==2)
+//                                 {
+//                                     //  AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                                     if (self.back_order_flag) {
+//
+//                                         NSInteger section_count = [self sectionCount];
+//                                         for (int i = 0; i < section_count; i++) {
+//                                             NSInteger item_count = [self itemCountInSection:i];
+//                                             BOOL ready_break = NO;
+//
+//                                             for (int j = 0; j < item_count; j++) {
+//                                                 NSIndexPath *indexPath = [NSIndexPath indexPathForRow:j inSection:i];
+//                                                 NSDictionary* obj_json = [self itemJsonAtIndexPath:indexPath];
+//                                                 NSString* _id =[obj_json valueForKey:@"cart_item_id"];
+//                                                 if([_id isEqualToString:ids])
+//                                                 {
+//                                                     [self updateItemJson:nil atIndexPath:indexPath];
+//                                                     ready_break = YES;
+//                                                     break;
+//                                                 }
+//                                             }
+//
+//                                             if (ready_break) {
+//                                                 break;
+//                                             }
+//                                         }
+//
+//                                     } else {
+//                                         for(int i=0;i<self.content_arr.count;i++)
+//                                         {
+//                                             NSDictionary* obj_json = self.content_arr[i];
+//                                             NSString* _id =[obj_json valueForKey:@"cart_item_id"];
+//                                             if([_id isEqualToString:ids])
+//                                             {
+//                                                 [self.content_arr removeObjectAtIndex:i];
+//                                                 //  [self.itemListTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:self.indexPath] withRowAnimation:UITableViewRowAnimationLeft];
+//                                                 break;
+//                                                 // appDelegate.cart_count--;
+//                                                 // [appDelegate update_count_mark];
+//                                             }
+//
+//                                         }
+//                                     }
+//                                     [self.itemListTable reloadData];
+//                                     [self refresh_total];
+//             #ifdef RA_NOTIFICATION
+//                                     [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+//             #else
+//                                     AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                                     [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+//             #endif
+//                                     //                        [self reload_data];
+//                                 }
+//                                 else
+//                                 {
+//                                     [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Delete Model" controller:self] ;
+//                                 }
+//
+//                             });
+//                         });
+                         
+  
+             
+         }];
+         UIAlertAction *action_3 = [UIAlertAction actionWithTitle:@"NO" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
+             
+             
+             
+         }];
+
+         [alertController addAction:action_2];
+         [alertController addAction:action_3];
+         
+         
+         [self presentViewController:alertController animated:YES completion:nil];
+        
+//        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Delete confirm", nil) message:NSLocalizedString(@"Are you sure remove model from cart?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
+//        alert.tag = ALERT_DEL;
+//        // alert.
+//        [alert show];
+        
+        
+        
+        
+        
+        
+    }];
+    
+    deleteRowAction.backgroundColor = [UIColor redColor];
+    
+    UITableViewRowAction *notifyMeAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Notify Me" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
+        
+        {
+            
+            __block UIAlertController *waitting_alert = [RAUtils waiting_alert:self title:@"Sending Email" completion:^{
+                [RANetwork request_notifymodel:productID emailAddr:nil withScreen:ScreenCodeCart completionHandler:^(NSMutableDictionary *result) {
+                                NSMutableDictionary *dic = result;
+                                
+                                
+                //                [waitting_alert dismissWithClickedButtonIndex:0 animated:NO];
+                                [waitting_alert dismissViewControllerAnimated:YES completion:^{
+                                    int result_code = [[dic valueForKey:@"result"] intValue];
+                                    
+                                    if (result_code != RESULT_TRUE && result_code != RESULT_NO_EMAIL_ADDRESS)
+                                    {
+                                        
+                                        NSString *msg = [NSString stringWithFormat:@"The email send failed"];
+                                        
+                                        if ([dic valueForKey:@"err_msg"]) {
+                                            msg = [dic valueForKey:@"err_msg"];
+                                        }
+                                        
+                                        
+                                        UIAlertController *errorAlertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:msg preferredStyle:UIAlertControllerStyleAlert];
+                                        UIAlertAction *action = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+                                            
+                                        }];
+                                        
+                                        [errorAlertVC addAction:action];
+                                        [weakself presentViewController:errorAlertVC animated:YES completion:nil];
+                                        
+                                    } else if (result_code == RESULT_TRUE){
+                                        
+                                        [RAUtils message_alert:@"Notification is sent to default email address." title:@"Message" controller:weakself];
+                                        
+                                    } else if (result_code == RESULT_NO_EMAIL_ADDRESS) {
+                                        
+                                        [weakself showAddressBoxToEmailProduct:productID];
+                                        
+                                    }
+                                }];
+                                
+                              
+                                
+                            }];
+
+            }];
+            
+                        
+//            dispatch_async(dispatch_get_global_queue(0,0), ^{
+//
+//                NSDictionary *dic = [RANetwork notifyModel:productID emailAddr:nil withScreen:ScreenCodeCart];
+//
+//                dispatch_async(dispatch_get_main_queue(), ^{
+//
+//                    [waitting_alert dismissWithClickedButtonIndex:0 animated:NO];
+//
+//                    NSInteger result = [[dic valueForKey:@"result"] integerValue];
+//
+//                    if (result != RESULT_TRUE && result != RESULT_NO_EMAIL_ADDRESS) {
+//
+//                        NSString *msg = [NSString stringWithFormat:@"The email send failed"];
+//
+//                        if ([dic valueForKey:@"err_msg"]) {
+//                            msg = [dic valueForKey:@"err_msg"];
+//                        }
+//
+//
+//                        UIAlertController *errorAlertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:msg preferredStyle:UIAlertControllerStyleAlert];
+//                        UIAlertAction *action = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+//
+//                        }];
+//
+//                        [errorAlertVC addAction:action];
+//                        [weakself presentViewController:errorAlertVC animated:YES completion:nil];
+//
+//                    } else if (result == RESULT_TRUE){
+//
+//                        [RAUtils message_alert:@"Notification is sent to default email address." title:@"Message" controller:weakself];
+//
+//                    } else if (result == RESULT_NO_EMAIL_ADDRESS) {
+//
+//                        [weakself showAddressBoxToEmailProduct:productID];
+//
+//                    }
+//                });
+//
+//
+//            });
+            
+            
+        };
+        
+        
+    }];
+    
+    notifyMeAction.backgroundColor = UIColorFromRGB(0x9BBF5A);
+    
+    
+    UITableViewRowAction *addWatchAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Move To Wish List" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
+        
+        DebugLog(@"Wishlist click");
+        
+        
+        NSMutableDictionary * item_json = nil;
+        if (self.back_order_flag) {
+            item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy];
+        } else {
+            item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+            
+        }
+        
+        NSString* cart_item_id = [item_json valueForKey:@"cart_item_id"];
+        [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
+        
+        [RANetwork request_move_cart2wish:cart_item_id completionHandler:^(NSMutableDictionary *result) {
+            NSDictionary* return_json = result;
+            
+            
+            if([[return_json valueForKey:@"result"] intValue]==2)
+            {
+                
+                
+                
+                
+                
+                
+#ifdef RA_NOTIFICATION
+                [ActiveViewController Notify:@"WatchListViewController,OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+#else
+                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
+                [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+                
+#endif
+                
+                
+                for(int i=0;i<self.content_arr.count;i++)
+                {
+                    NSDictionary* obj_json = self.content_arr[i];
+                    NSString* _id =[obj_json valueForKey:@"cart_item_id"];
+                    if([_id isEqualToString:cart_item_id])
+                    {
+                        if (self.back_order_flag) {
+                            [self updateItemJson:nil atIndexPath:indexPath];
+                        } else {
+                            [self.content_arr removeObjectAtIndex:i];
+                        }
+                        [self.itemListTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
+                        appDelegate.cart_count--;
+                        [appDelegate update_count_mark];
+                        
+                        
+                        [self refresh_total];
+                    }
+                    
+                }
+                
+                [self.itemListTable reloadData];
+                
+            }
+            else
+            {
+                [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Move To Wish List" controller:self] ;
+            }
+            
+            
+            
+            
+        }];
+        
+//        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+////            ModelItemCell* cell=[self.itemListTable cellForRowAtIndexPath:indexPath];
+////            [cell cancel_setQTY];
+//
+//            NSDictionary* return_json = [RANetwork move_cart2wish:cart_item_id ];
+//
+//            dispatch_async(dispatch_get_main_queue(), ^{
+//
+//                if([[return_json valueForKey:@"result"] intValue]==2)
+//                {
+//
+//
+//
+//
+//
+//
+//#ifdef RA_NOTIFICATION
+//                    [ActiveViewController Notify:@"WatchListViewController,OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+//#else
+//                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                    [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
+//                    [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+//
+//#endif
+//
+//
+//                    for(int i=0;i<self.content_arr.count;i++)
+//                    {
+//                        NSDictionary* obj_json = self.content_arr[i];
+//                        NSString* _id =[obj_json valueForKey:@"cart_item_id"];
+//                        if([_id isEqualToString:cart_item_id])
+//                        {
+//                            if (self.back_order_flag) {
+//                                [self updateItemJson:nil atIndexPath:indexPath];
+//                            } else {
+//                                [self.content_arr removeObjectAtIndex:i];
+//                            }
+//                            [self.itemListTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
+//                            appDelegate.cart_count--;
+//                            [appDelegate update_count_mark];
+//
+//
+//                            [self refresh_total];
+//                        }
+//
+//                    }
+//
+//                    [self.itemListTable reloadData];
+//
+//                }
+//                else
+//                {
+//                    [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Move To Wish List" controller:self] ;
+//                }
+//
+//
+//
+//            });
+//        });
+        
+        
+        
+        
+        
+    }];
+    
+    addWatchAction.backgroundColor = UIColorFromRGB(0x339966);
+    
+    
+    // 添加一个编辑按钮
+    UITableViewRowAction *editRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Edit Price"handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
+        
+        DebugLog(@"edit click");
+        if (appDelegate.user_type == USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore) {
+            
+            
+            if (self.currentOrderIsMerged) { // 合并过的订单不能编辑价格
+                
+                UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Warning" message:@"Purchase Order Can't Edit Price" preferredStyle:UIAlertControllerStyleAlert];
+                
+                UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
+                    [alert dismissViewControllerAnimated:YES completion:nil];
+                }];
+                
+                [alert addAction:action];
+                
+                if (weakself) {
+                    __strong typeof(weakself) strongself = weakself;
+                    [strongself presentViewController:alert animated:YES completion:nil];
+                }
+                
+                return ;
+            }
+            
+            if ([RASingleton sharedInstance].npd_shop_price_type == 0) { // 提货价不能编辑价格
+                
+                UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Warning" message:[NSString stringWithFormat:@"Current Price Type is %@,You Can't Change it",[RASingleton sharedInstance].deliveryString] preferredStyle:UIAlertControllerStyleAlert];
+                
+                UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
+                    [alert dismissViewControllerAnimated:YES completion:nil];
+                }];
+                
+                [alert addAction:action];
+                
+                if (weakself) {
+                    __strong typeof(weakself) strongself = weakself;
+                    [strongself presentViewController:alert animated:YES completion:nil];
+                }
+                
+                return ;
+            }
+            
+        }
+        
+        
+        UIViewController* parentvc=self;
+        
+        
+        
+        
+        EditModelPriceViewController * vc =[[UIStoryboard storyboardWithName:@"ERP_Mobile_Cart" bundle:nil] instantiateViewControllerWithIdentifier:@"EditModelPriceViewController"];
+        
+        
+        NSMutableDictionary * item_json = nil;
+        if (self.back_order_flag) {
+            item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy];
+        } else {
+            item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+            
+        }
+        
+        
+        
+        
+        vc.discount=[[item_json valueForKey:@"discount"] floatValue];
+        vc.price = [[item_json valueForKey:@"unit_price"] floatValue];
+        vc.cart_id = [item_json valueForKey:@"cart_item_id"];//[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
+        __block NSString* cartid=[item_json valueForKey:@"cart_item_id"];
+        //    vc.delegate = parentvc.self;
+        //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+        vc.onSetValue = ^(double price,double discount){
+            
+            bool bmodify=false;
+            if(price!= [[item_json valueForKey:@"unit_price"] floatValue])
+                bmodify=true;
+            
+            NSString* notes = [item_json valueForKey:@"note"];
+            if(notes.length==0)
+                notes=@"";
+            if(bmodify)
+            {
+                if([notes isEqualToString:@""])
+                    notes=@"PRICE MODIFIED";
+
+                NSRange range;
+                range = [notes rangeOfString:@"PRICE MODIFIED"];
+                if (range.location != NSNotFound) {
+                    
+                }else{
+                   notes= [notes stringByAppendingString:@"\nPRICE MODIFIED"];
+                }
+            }
+            
+            __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Update Price" completion:^{
+                [RANetwork request_update_cart_modelprice:cartid price:price discount:discount notes:notes completionHandler:^(NSMutableDictionary *result) {
+                                            NSDictionary* cart_json = result;
+                                            
+                                [waitalert dismissViewControllerAnimated:YES completion:^{
+                                    if([[cart_json valueForKey:@"result"] intValue]==2)
+                                    {
+                                        [item_json setValue:[NSNumber numberWithDouble:price ] forKey:@"unit_price"];
+                                        
+                                        [item_json setValue:[NSNumber numberWithDouble:discount ] forKey:@"discount"];
+                                        [item_json setValue:notes forKey:@"note"];
+                                        if (self.back_order_flag) {
+                                            [self updateItemJson:item_json atIndexPath:indexPath];
+                                        } else {
+                                            self.content_arr[indexPath.row ] = item_json;
+                                        }
+                                        tableView.editing = false;
+                                        //                        [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
+                                        //                        [self refresh_total];
+                                        
+                                        
+                                        [weakself reload_data];
+                                        
+                #ifdef RA_NOTIFICATION
+                                        [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+                #else
+                                        AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                        [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+                #endif
+                                    }
+                                    else
+                                    {
+                                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Update Price" controller:self] ;
+                                    }
+                                }];
+                                            
+                                           
+                                            
+                                            
+                                            
+                                            
+                            }];
+
+            }];
+       
+                        
+//            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//
+//
+//                NSDictionary* cart_json = nil;
+//
+//                cart_json = [RANetwork cart_setPrice:[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]] price:price discount:discount notes:notes];
+//
+//                dispatch_async(dispatch_get_main_queue(), ^{
+//
+//                    [waitalert dismissViewControllerAnimated:YES completion:nil];
+//
+//                    if([[cart_json valueForKey:@"result"] intValue]==2)
+//                    {
+//                        [item_json setValue:[NSNumber numberWithDouble:price ] forKey:@"unit_price"];
+//
+//                        [item_json setValue:[NSNumber numberWithDouble:discount ] forKey:@"discount"];
+//                         [item_json setValue:notes forKey:@"note"];
+//                        if (self.back_order_flag) {
+//                            [self updateItemJson:item_json atIndexPath:indexPath];
+//                        } else {
+//                            self.content_arr[indexPath.row ] = item_json;
+//                        }
+//                        tableView.editing = false;
+////                        [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
+////                        [self refresh_total];
+//
+//
+//                        [weakself reload_data];
+//
+//#ifdef RA_NOTIFICATION
+//                        [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+//#else
+//                        AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                        [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+//#endif
+//                    }
+//                    else
+//                    {
+//                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Update Price" controller:self] ;
+//                    }
+//
+//
+//
+//
+//                });
+//            });
+
+            
+
+
+            
+          //  [self reload_data];//[main_vc checklogin:true];
+        };
+        
+        
+        UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ;
+        
+        
+        
+        
+        
+        //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
+        
+        navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
+        [parentvc presentViewController:navi animated:YES completion:^{
+            
+            //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
+            
+            DebugLog(@"EditModelPriceViewController present.........");
+            
+            //   self.btop = false;
+            //  <#code#>
+        }];
+        // [self.itemListTable setEditing:false animated:YES];
+        //[tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
+        
+        
+    }];
+    
+    editRowAction.backgroundColor = UIColorFromRGB(0xff9933);
+    
+    
+    //    // 添加一个更多按钮
+    //
+    //    UITableViewRowAction *moreRowAction = [UITableView RowActionrowActionWithStyle:UITableViewRowActionStyleNormal title:@"更多" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
+    //
+    //        DebugLog(@点击了更多);
+    //
+    //
+    //        [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
+    //
+    //    }];
+    //
+    //    moreRowAction.backgroundEffect = [UIBlurEffecteffectWithStyle:UIBlurEffectStyleDark];
+    //
+    
+    // 将设置好的按钮放到数组中返回
+    
+    
+    
+    //    UITableViewRowAction *freeRowAction = nil;
+    //
+    //
+    //    NSDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
+    //
+    //    bool isfree = [[item_json valueForKey:@"is_free"]boolValue];
+    //
+    //    if(!isfree)
+    //    {
+    //
+    //        freeRowAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Set Free" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
+    //
+    //            DebugLog(@"free click");
+    //
+    //
+    //
+    //            UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Free give away confirm", nil) message:NSLocalizedString(@"Are you sure make this model free?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
+    //            alert.tag = ALERT_SET_FREE;
+    //            // alert.
+    //            [alert show];
+    //        }];
+    //    }
+    //    else
+    //    {
+    //
+    //        freeRowAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Not Free" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
+    //
+    //            UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Restore free model confirm", nil) message:NSLocalizedString(@"Are you sure restore free model?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
+    //            alert.tag = ALERT_RESTORE_FREE;
+    //            // alert.
+    //            [alert show];
+    //        }];
+    //    }
+    //
+    //
+    //
+    //    freeRowAction.backgroundColor = [UIColor lightGrayColor];
+    
+    UITableViewRowAction *noteRowAction = nil;
+    
+    
+   // NSDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
+    
+    
+    
+    
+    noteRowAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Edit note" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
+        
+        DebugLog(@"item note click");
+        
+        
+        UIViewController* parentvc=self;
+        
+        
+        
+        
+        ItemNotesViewController * vc =[[UIStoryboard storyboardWithName:@"ERP_Mobile_Cart" bundle:nil] instantiateViewControllerWithIdentifier:@"ItemNotesViewController"];
+        
+        
+        NSMutableDictionary * item_json = nil;
+        if (self.back_order_flag) {
+            item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy];
+        } else {
+            item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+            
+        }
+        
+        
+        vc.onSaveNote=^(NSString* notes){
+            [item_json setValue:notes forKey:@"note"];
+            if (self.back_order_flag) {
+                [self updateItemJson:item_json atIndexPath:indexPath];
+            } else {
+                self.content_arr[indexPath.row ] = item_json;
+            }
+            tableView.editing = false;
+                    [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
+        };
+        
+        vc.notes=[item_json valueForKey:@"note"];
+        vc.cart_id = [item_json valueForKey:@"cart_item_id"];//[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
+        //    vc.delegate = parentvc.self;
+        //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+//        vc.onSetValue = ^(){
+//            [self reload_data];//[main_vc checklogin:true];
+//        };
+//        
+        
+        UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ;
+        
+        
+        
+        
+        
+        //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
+        
+        navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
+        [parentvc presentViewController:navi animated:YES completion:^{
+            
+            //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
+            
+            DebugLog(@"EditModelPriceViewController present.........");
+            
+            //   self.btop = false;
+            //  <#code#>
+        }];
+        //    [self.itemListTable setEditing:false animated:YES];
+       // [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
+        
+
+
+        
+    }];
+    
+    
+    
+    noteRowAction.backgroundColor = [UIColor lightGrayColor];
+
+
+    UITableViewRowAction *move2BackAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Move to Back Order" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
+        
+        NSDictionary *item_json = [self itemJsonAtIndexPath:indexPath];
+        NSString* cart_item_id = [item_json valueForKey:@"cart_item_id"];
+        
+        
+        __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Move To Back Order" completion:^{
+            [RANetwork request_movetobackorder:cart_item_id completionHandler:^(NSMutableDictionary *result) {
+               NSMutableDictionary* return_json =result  ;
+                
+                
+                    
+                [waitalert dismissViewControllerAnimated:YES completion:^{
+                    if([[return_json valueForKey:@"result"] intValue]==2) {
+                        
+                        [self reload_data];
+                        
+                    } // if 2
+                    else {
+                        [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Move To Back Order" controller:self] ;
+                    }
+                }];
+                    
+
+                    
+                
+            }];
+
+        }];
+        
+                
+//        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//            NSDictionary* return_json = [RANetwork movetobackorder:cart_item_id];
+//
+//            dispatch_async(dispatch_get_main_queue(), ^{
+//
+//                [waitalert dismissViewControllerAnimated:YES completion:nil];
+//
+//                if([[return_json valueForKey:@"result"] intValue]==2) {
+//
+//                    [self reload_data];
+//
+//                } // if 2
+//                else {
+//                    [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Move To Back Order" controller:self] ;
+//                }
+//
+//            }); // main
+//
+//        }); // global
+        
+        
+    }];
+    
+    move2BackAction.backgroundColor = UIColorFromRGB(0x336699);
+    
+    if(appDelegate.user_type==USER_ROLE_EMPLOYEE)
+    {
+        NSMutableDictionary * item_json = nil;
+        if (self.back_order_flag) {
+            item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy];
+        } else {
+            item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+            
+        }
+        NSString* product_id = [item_json valueForKey:@"product_id"];
+        
+        int is_rate = [item_json[@"is_rate"] intValue];
+
+        NSMutableArray* arr=[@[] mutableCopy];
+
+        BOOL condition = outOfStock;
+#if defined(BUILD_NPD) || defined(BUILD_USAI) || defined(BUILD_UWAVER)|| defined (BUILD_CONTRAST)
+#ifdef OFFLINE_MODE
+        condition = !appDelegate.offline_mode && outOfStock;
+#endif
+        if (condition) {
+            [arr addObject:notifyMeAction];
+        }
+
+        NSDictionary *section_json = [self jsonAtSection:indexPath.section];
+        BOOL available = [[section_json objectForKey:@"available"] boolValue]; // available list
+        
+        if (self.back_order_flag && available) {
+            [arr addObject:move2BackAction];
+        }
+        
+#endif
+        
+#if defined(BUILD_HOMER) || defined(BUILD_GATIT)
+#ifdef OFFLINE_MODE
+        condition = !appDelegate.offline_mode && outOfStock;
+#endif
+        if (condition) {
+            [arr addObject:notifyMeAction];
+        }
+#endif
+        
+        if(product_id.length>0)
+            [arr addObject:noteRowAction];
+        
+        [arr addObject:deleteRowAction];
+        
+#ifndef SCANNER_ORDER
+        if(product_id.length>0&& is_rate==0)
+            [arr addObject:addWatchAction];
+        if(appDelegate.can_set_cart_price && product_id.length>0&& is_rate==0)
+        {
+            [arr addObject:editRowAction];
+            // [arr addObject:freeRowAction];
+        }
+#endif
+
+        
+        
+        
+        return arr;
+        //    return @[deleteRowAction,addWatchAction, editRowAction,freeRowAction];
+    } else if (appDelegate.user_type == USER_ROLE_CUSTOMER) {
+        if (appDelegate.customer_type == CustomerTypeStore) {
+#ifndef SCANNER_ORDER
+            return @[notifyMeAction,deleteRowAction,addWatchAction,editRowAction];
+#else
+            return @[deleteRowAction];
+#endif
+        } else {
+            
+            // normal
+//            NSArray *actionArray = @[notifyMeAction,deleteRowAction,addWatchAction];
+            
+            NSMutableArray *actionArray = [NSMutableArray array];
+            
+            // move to backorder
+            NSDictionary *section_json = [self jsonAtSection:indexPath.section];
+            BOOL available = [[section_json objectForKey:@"available"] boolValue]; // available list
+            if (self.back_order_flag && available) {
+//                actionArray = @[move2BackAction,notifyMeAction,deleteRowAction,addWatchAction];
+                [actionArray addObject:move2BackAction];
+            }
+            
+            [actionArray addObjectsFromArray:@[notifyMeAction,deleteRowAction,addWatchAction]];
+            
+            // edit price
+            NSMutableDictionary * item_json = nil;
+            if (self.back_order_flag) {
+                item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy];
+            } else {
+                item_json = [self.content_arr[indexPath.row] mutableCopy];
+            }
+            NSString* product_id = [item_json valueForKey:@"product_id"];
+            int is_rate = [item_json[@"is_rate"] intValue];
+            if(appDelegate.can_set_cart_price && product_id.length>0&& is_rate==0) {
+//                actionArray = @[move2BackAction,notifyMeAction,deleteRowAction,addWatchAction,editRowAction];
+                [actionArray addObject:editRowAction];
+            }
+            
+            return actionArray;
+        }
+    }
+    else
+#ifndef SCANNER_ORDER
+        return @[deleteRowAction,addWatchAction];
+#else
+    return @[deleteRowAction];
+#endif
+    
+    
+}
+
+
+- (void)tableView:(UITableView *)tableView
+commitEditingStyle:(UITableViewCellEditingStyle)editingStyle  forRowAtIndexPath:(NSIndexPath *)indexPath {
+    
+    
+    //    NSMutableDictionary * item_json = [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+    //
+    //    NSString *ids=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
+    //
+    //
+    //    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+    //
+    //        NSDictionary* cart_json = [iSalesNetwork cart_remove:ids];
+    //
+    //        dispatch_async(dispatch_get_main_queue(), ^{
+    //
+    //
+    //
+    //            if(cart_json!=nil)
+    //            {
+    //
+    //                [self reload_data];
+    //            }
+    //
+    //        });
+    //    });
+    
+    //    sqlite3* db = [ApexMobileDB get_db];
+    //    NSString* sql = [NSString stringWithFormat:@"delete from history where _id=%@",[self.data.pagedata[indexPath.row] valueForKey:@"_id"]];
+    //    [ApexMobileDB execSql:sql db:db];
+    //    [iSalesDB close_db:db];
+    //
+    //    [self.data.pagedata removeObjectAtIndex:indexPath.row];
+    //
+    //    [tableView reloadData];
+    
+}
+//#pragma mark - UIAlertViewDelegate
+//// Called when a button is clicked. The view will be automatically dismissed after this call returns
+//- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
+//{
+//
+//    if(alertView.tag==ALERT_DEL)
+//    {
+//        if(buttonIndex!=alertView.cancelButtonIndex)
+//        {
+//           // [self.itemListTable reloadRowsAtIndexPaths:@[self.indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
+//            NSMutableDictionary * item_json = nil;
+//            if (self.back_order_flag) {
+//                item_json = [[self itemJsonAtIndexPath:self.indexPath] mutableCopy];
+//            } else {
+//                item_json = [self.content_arr[self.indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+//
+//            }
+//
+//            NSString *ids=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
+//            [RANetwork request_remove_cart:ids completionHandler:^(NSMutableDictionary *result) {
+//                NSMutableDictionary* cart_json = result;
+//
+//
+//
+//
+//                if([[cart_json valueForKey:@"result"] intValue]==2)
+//                {
+//                    //  AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                    if (self.back_order_flag) {
+//
+//                        NSInteger section_count = [self sectionCount];
+//                        for (int i = 0; i < section_count; i++) {
+//                            NSInteger item_count = [self itemCountInSection:i];
+//                            BOOL ready_break = NO;
+//
+//                            for (int j = 0; j < item_count; j++) {
+//                                NSIndexPath *indexPath = [NSIndexPath indexPathForRow:j inSection:i];
+//                                NSDictionary* obj_json = [self itemJsonAtIndexPath:indexPath];
+//                                NSString* _id =[obj_json valueForKey:@"cart_item_id"];
+//                                if([_id isEqualToString:ids])
+//                                {
+//                                    [self updateItemJson:nil atIndexPath:indexPath];
+//                                    ready_break = YES;
+//                                    break;
+//                                }
+//                            }
+//
+//                            if (ready_break) {
+//                                break;
+//                            }
+//                        }
+//
+//                    } else {
+//                        for(int i=0;i<self.content_arr.count;i++)
+//                        {
+//                            NSDictionary* obj_json = self.content_arr[i];
+//                            NSString* _id =[obj_json valueForKey:@"cart_item_id"];
+//                            if([_id isEqualToString:ids])
+//                            {
+//                                [self.content_arr removeObjectAtIndex:i];
+//                                //  [self.itemListTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:self.indexPath] withRowAnimation:UITableViewRowAnimationLeft];
+//                                break;
+//                                // appDelegate.cart_count--;
+//                                // [appDelegate update_count_mark];
+//                            }
+//
+//                        }
+//                    }
+//                    [self.itemListTable reloadData];
+//                    [self refresh_total];
+//#ifdef RA_NOTIFICATION
+//                    [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+//#else
+//                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                    [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+//#endif
+//                    //                        [self reload_data];
+//                }
+//                else
+//                {
+//                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Delete Model" controller:self] ;
+//                }
+//
+//
+//            }];
+//
+////            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+////
+////                NSDictionary* cart_json = [RANetwork cart_remove:ids];
+////
+////                dispatch_async(dispatch_get_main_queue(), ^{
+////
+////
+////
+////                    if([[cart_json valueForKey:@"result"] intValue]==2)
+////                    {
+////                        //  AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+////                        if (self.back_order_flag) {
+////
+////                            NSInteger section_count = [self sectionCount];
+////                            for (int i = 0; i < section_count; i++) {
+////                                NSInteger item_count = [self itemCountInSection:i];
+////                                BOOL ready_break = NO;
+////
+////                                for (int j = 0; j < item_count; j++) {
+////                                    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:j inSection:i];
+////                                    NSDictionary* obj_json = [self itemJsonAtIndexPath:indexPath];
+////                                    NSString* _id =[obj_json valueForKey:@"cart_item_id"];
+////                                    if([_id isEqualToString:ids])
+////                                    {
+////                                        [self updateItemJson:nil atIndexPath:indexPath];
+////                                        ready_break = YES;
+////                                        break;
+////                                    }
+////                                }
+////
+////                                if (ready_break) {
+////                                    break;
+////                                }
+////                            }
+////
+////                        } else {
+////                            for(int i=0;i<self.content_arr.count;i++)
+////                            {
+////                                NSDictionary* obj_json = self.content_arr[i];
+////                                NSString* _id =[obj_json valueForKey:@"cart_item_id"];
+////                                if([_id isEqualToString:ids])
+////                                {
+////                                    [self.content_arr removeObjectAtIndex:i];
+////                                    //  [self.itemListTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:self.indexPath] withRowAnimation:UITableViewRowAnimationLeft];
+////                                    break;
+////                                    // appDelegate.cart_count--;
+////                                    // [appDelegate update_count_mark];
+////                                }
+////
+////                            }
+////                        }
+////                        [self.itemListTable reloadData];
+////                        [self refresh_total];
+////#ifdef RA_NOTIFICATION
+////                        [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+////#else
+////                        AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+////                        [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+////#endif
+////                        //                        [self reload_data];
+////                    }
+////                    else
+////                    {
+////                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Delete Model" controller:self] ;
+////                    }
+////
+////                });
+////            });
+//
+//        }
+//    }
+//
+//}
+
+#pragma mark - Support scanner
+-(void) onDecodedData:(NSString*) value
+{
+    int cqty=0;
+    
+    
+    
+    if (self.back_order_flag) {
+        
+        NSInteger section_count = [self sectionCount];
+        for (int i = 0; i < section_count; i++) {
+            NSInteger item_count = [self itemCountInSection:i];
+            
+            for (int j = 0; j < item_count; j++) {
+                NSIndexPath *indexPath = [NSIndexPath indexPathForRow:j inSection:i];
+                NSDictionary* item = [self itemJsonAtIndexPath:indexPath];
+                if([item[@"model"] isEqualToString:value]) {
+                    cqty=[item[@"count"] intValue];
+                }
+            }
+            
+            
+        }
+        
+    } else {
+        
+        for(int i=0;i<self.content_arr.count;i++)
+        {
+            NSDictionary* item= self.content_arr[i];
+            if([item[@"model"] isEqualToString:value])
+                cqty=[item[@"count"]intValue];
+        }
+        
+    }
+    
+    if(cqty>0)
+    {
+        
+        
+        UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:[NSString stringWithFormat:@"QTY: %d of this model already in cart. Continue ?",cqty] message:nil preferredStyle:UIAlertControllerStyleAlert];
+        //block代码块取代了delegate
+        
+        
+        
+        UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+            [self addtocart:value];
+        }];
+        
+        UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+            DebugLog(@"No");
+        }];
+        [alertControl addAction:actionOne];
+        
+        [alertControl addAction:alertthree];
+        
+        //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+        
+        
+        [self presentViewController:alertControl animated:YES completion:nil];
+        
+        
+    }
+    else
+    [self addtocart:value];
+    
+    
+}
+
+-(void) addtocart:(NSString*) modelname
+{
+    
+    
+    [RANetwork request_addto_cart_byname:modelname withScreen:ScreenCodeCart completionHandler:^(NSMutableDictionary *result) {
+        
+        
+        NSDictionary* return_json =result;
+        if([[return_json valueForKey:@"result"] intValue]==2)
+        {
+            NSDictionary* newitem = [return_json objectForKey:@"item_0"];
+            NSString* item_id = [newitem valueForKey:@"cart_item_id"];
+            //  bool isnew=false;
+            //
+            //                [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
+            
+            if (self.back_order_flag) {
+                
+                NSInteger section_count = [self sectionCount];
+                for (int i = 0; i < section_count; i++) {
+                    NSInteger item_count = [self itemCountInSection:i];
+                    BOOL ready_break = NO;
+                    for (int j = 0; j < item_count; j++) {
+                        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:j inSection:i];
+                        NSDictionary* obj_json = [self itemJsonAtIndexPath:indexPath];
+                        NSString* _id =[obj_json valueForKey:@"cart_item_id"];
+                        if([_id isEqualToString:item_id])
+                        {
+                            [self updateItemJson:nil atIndexPath:indexPath];
+                            ready_break = YES;
+                            break;
+                        }
+                    }
+                    if (ready_break) {
+                        break;
+                    }
+                    
+                    
+                }
+                
+            } else {
+                
+                for(int i=0;i<self.content_arr.count;i++)
+                {
+                    NSDictionary* obj_json = self.content_arr[i];
+                    NSString* _id =[obj_json valueForKey:@"cart_item_id"];
+                    if([_id isEqualToString:item_id])
+                    {
+                        //                        self.content_arr[i] = newitem;
+                        
+                        
+                        [self.content_arr removeObjectAtIndex:i];
+                        
+                        break;
+                        //                        [self.content_arr removeObjectAtIndex:i];
+                        //                        [self.itemListTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
+                        //                        appDelegate.cart_count--;
+                        //                        [appDelegate update_count_mark];
+                    }
+                    
+                    
+                }
+            }
+            
+            AppDelegate *appDelegate =nil;
+            appDelegate=(AppDelegate*)[[UIApplication sharedApplication] delegate];
+#ifdef OFFLINE_MODE
+            
+            if(appDelegate.offline_mode)
+            {
+                
+                [self ReloadData];
+                
+            }
+            else
+#endif
+            {
+                
+                if (self.back_order_flag) {
+                    [self ReloadData];
+                } else {
+                    [self.content_arr insertObject:newitem atIndex:0];
+                    
+                    [self.itemListTable reloadData];
+                    [self refresh_total];
+                }
+                
+            }
+            
+            //                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+            
+            
+            
+            
+#ifdef RA_NOTIFICATION
+            [ActiveViewController Notify:@"CartViewController,OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+#else
+            [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false];
+            [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+#endif
+            
+            
+        }
+        else
+        {
+            
+            [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Add To Cart" controller:self] ;
+        }
+        
+        
+        
+        
+    }];
+    
+//    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//        NSDictionary* return_json = [RANetwork add_toCart_byName: modelname withScreen:ScreenCodeCart];
+//
+//        dispatch_async(dispatch_get_main_queue(), ^{
+//
+//
+//
+//            if([[return_json valueForKey:@"result"] intValue]==2)
+//            {
+//                NSDictionary* newitem = [return_json objectForKey:@"item_0"];
+//                NSString* item_id = [newitem valueForKey:@"cart_item_id"];
+//                //  bool isnew=false;
+////
+//                //                [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
+//
+//                if (self.back_order_flag) {
+//
+//                    NSInteger section_count = [self sectionCount];
+//                    for (int i = 0; i < section_count; i++) {
+//                        NSInteger item_count = [self itemCountInSection:i];
+//                        BOOL ready_break = NO;
+//                        for (int j = 0; j < item_count; j++) {
+//                            NSIndexPath *indexPath = [NSIndexPath indexPathForRow:j inSection:i];
+//                            NSDictionary* obj_json = [self itemJsonAtIndexPath:indexPath];
+//                            NSString* _id =[obj_json valueForKey:@"cart_item_id"];
+//                            if([_id isEqualToString:item_id])
+//                            {
+//                                [self updateItemJson:nil atIndexPath:indexPath];
+//                                ready_break = YES;
+//                                break;
+//                            }
+//                        }
+//                        if (ready_break) {
+//                            break;
+//                        }
+//
+//
+//                    }
+//
+//                } else {
+//
+//                    for(int i=0;i<self.content_arr.count;i++)
+//                    {
+//                        NSDictionary* obj_json = self.content_arr[i];
+//                        NSString* _id =[obj_json valueForKey:@"cart_item_id"];
+//                        if([_id isEqualToString:item_id])
+//                        {
+//                            //                        self.content_arr[i] = newitem;
+//
+//
+//                            [self.content_arr removeObjectAtIndex:i];
+//
+//                            break;
+//                            //                        [self.content_arr removeObjectAtIndex:i];
+//                            //                        [self.itemListTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
+//                            //                        appDelegate.cart_count--;
+//                            //                        [appDelegate update_count_mark];
+//                        }
+//
+//
+//                    }
+//                }
+//
+//                AppDelegate *appDelegate =nil;
+//                appDelegate=(AppDelegate*)[[UIApplication sharedApplication] delegate];
+//#ifdef OFFLINE_MODE
+//
+//                if(appDelegate.offline_mode)
+//                {
+//
+//                    [self ReloadData];
+//
+//                }
+//                else
+//#endif
+//                {
+//
+//                    if (self.back_order_flag) {
+//                        [self ReloadData];
+//                    } else {
+//                        [self.content_arr insertObject:newitem atIndex:0];
+//
+//                        [self.itemListTable reloadData];
+//                        [self refresh_total];
+//                    }
+//
+//                }
+//
+//                //                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//
+//
+//
+//
+//#ifdef RA_NOTIFICATION
+//                [ActiveViewController Notify:@"CartViewController,OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+//#else
+//                [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false];
+//                [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+//#endif
+//
+//
+//            }
+//            else
+//            {
+//
+//                [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Add To Cart" controller:self] ;
+//            }
+//
+//
+//
+//
+//        });
+//    });
+    
+    
+}
+
+#pragma mark - sort button
+
+- (void)cartSortButtonClicked:(UIButton *)sender {
+    DebugLog(@"cart sort button clicked");
+    
+    [self.view addSubview:self.sortItemController.view];
+}
+
+- (SortItemViewController *)sortItemController {
+    if (!_sortItemController) {
+        _sortItemController = [[SortItemViewController alloc] initWithTableOrigin:CGPointMake(20, 50)];
+        _sortItemController.sortIndex = self.sortIndex;
+        
+        
+        _sortItemController.sortData = @[
+                                         @{@"title":@"Last",@"icon":@"TX_18"},
+                                         @{@"title":@"First",@"icon":@"TS_18"},
+                                         @{@"title":@"Item number a-z",@"icon":@"IX_18"},
+                                         @{@"title":@"Item number z-a",@"icon":@"IS_18"},
+                                         @{@"title":@"Description",@"icon":@"DX_18"},
+                                         ];
+        
+        __weak typeof(self) weakSelf = self;
+        _sortItemController.sortBlock = ^(int sort){
+            weakSelf.sortIndex = sort;
+            
+            [weakSelf reload_data];
+            
+        };
+    }
+//    _sortItemController.sortIndex = self.sortIndex;
+    
+    return _sortItemController;
+}
+
+- (SortButton *)sortButton {
+    if (!_sortButton) {
+        _sortButton = [SortButton sortButtonWithHeight:40];
+        _sortButton.autoresizingMask=UIViewAutoresizingFlexibleRightMargin;
+        [_sortButton addTarget:self action:@selector(cartSortButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
+    }
+    return _sortButton;
+}
+
+- (void)setSortIndex:(int)sortIndex {
+    _sortIndex = sortIndex;
+    
+    NSString *selectedImageName = @"";
+    switch (sortIndex) {
+        case 0:{
+            selectedImageName = @"TX_22";
+        }
+            break;
+        case 1:{
+            selectedImageName = @"TS_22";
+        }
+            break;
+        case 2:{
+            selectedImageName = @"IX_22";
+        }
+            break;
+        case 3:{
+            selectedImageName = @"IS_22";
+        }
+            break;
+        case 4:{
+            selectedImageName = @"DX_22";
+        }
+            break;
+            
+        default:
+            break;
+    }
+    
+    self.sortButton.imageView.image = [UIImage imageNamed:selectedImageName];
+    
+}
+
+#pragma mark - rotation
+
+//- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
+//
+//    self.sortItemController.view.frame = self.view.bounds;
+//}
+
+- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
+    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
+    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext>  _Nonnull context) {
+        // what ever you want to prepare
+    } completion:^(id<UIViewControllerTransitionCoordinatorContext>  _Nonnull context) {
+//        self.sortItemController.view.frame = self.view.bounds;
+          self.sortItemController.view.frame = self.view.bounds;
+             self.toolpanel.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.toolpanel.bounds].CGPath;
+            
+        //    [self.itemListTable reloadData];
+            
+            self.cartIndicatorBar.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.cartIndicatorBar.bounds].CGPath;
+            [self layoutCartIndicatorBar];
+    }];
+}
+
+
+-(BOOL) shouldAutorotate
+{
+    return YES;
+}
+//- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
+//    return YES;
+//}
+
+//- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
+//    self.sortItemController.view.frame = self.view.bounds;
+//     self.toolpanel.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.toolpanel.bounds].CGPath;
+//
+////    [self.itemListTable reloadData];
+//
+//    self.cartIndicatorBar.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.cartIndicatorBar.bounds].CGPath;
+//    [self layoutCartIndicatorBar];
+//}
+
+#pragma mark - notification action
+
+- (void)priceTypeChanged:(id)notification {
+    [self reload_data];
+#ifdef RA_NOTIFICATION
+    [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+#else
+    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+    [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+#endif
+}
+
+#pragma mark - button action
+
+- (IBAction)emailButtonClick:(UIButton *)sender {
+    
+    if (![self isOrderAvailable]) {
+        return;
+    }
+    
+    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+
+    JKMessageBoxController *emailAddrVC = [JKMessageBoxController messageBoxControllerWithTip:@"Please enter email address"];
+    emailAddrVC.textFiled.secureTextEntry = NO;
+    emailAddrVC.yesButtonTitle = @"send";
+    
+    __weak typeof(emailAddrVC) weakVC = emailAddrVC;
+    __weak typeof(self) weakself = self;
+    
+    emailAddrVC.textHandler = ^(NSString *text){
+        
+        // 验证邮箱格式是否正确
+//        NSString *match = EMAIL_MATCHES;
+//        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",match];
+//        BOOL isEmailAddr = [predicate evaluateWithObject:text];
+        BOOL isEmailAddr = YES;
+        if (isEmailAddr) {
+            
+            // 验证是邮件地址,发送邮件
+            [weakVC dismissViewControllerAnimated:YES completion:^{
+                
+                __block UIAlertController *waitting_alert = [RAUtils waiting_alert:self title:@"Sending Email" completion:^{
+                    [RANetwork request_qouteorder:appDelegate.order_code emailAddr:text completionHandler:^(NSMutableDictionary *result) {
+                        DebugLog(@"email cart result: %@",result);
+                        
+                        [waitting_alert dismissViewControllerAnimated:YES completion:^{
+                            //                    [waitting_alert dismissWithClickedButtonIndex:0 animated:YES];
+                            
+                            if ([[result objectForKey:@"result"] integerValue] != RESULT_TRUE) {
+                                
+                                UIAlertController *errorAlertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:[NSString stringWithFormat:@"The email send to %@ failed",text] preferredStyle:UIAlertControllerStyleAlert];
+                                UIAlertAction *action = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+                                    
+                                }];
+                                
+                                [errorAlertVC addAction:action];
+                                [weakself presentViewController:errorAlertVC animated:YES completion:nil];
+                                
+                            }else {
+                                
+                                [RAUtils message_alert:@"Send Email Success" title:@"Message" controller:weakself];
+                                
+                            }
+                        }];
+
+                        
+                        
+                    }];
+
+                }];
+                
+                                
+//                dispatch_async(dispatch_get_global_queue(0, 0), ^{
+//
+//                    NSDictionary *result = [RANetwork quoteOrder:appDelegate.order_code emailAddr:text];
+//                    DebugLog(@"email cart result: %@",result);
+//                   dispatch_async(dispatch_get_main_queue(), ^{
+//
+//                       [waitting_alert dismissWithClickedButtonIndex:0 animated:YES];
+//
+//                       if ([[result objectForKey:@"result"] integerValue] != RESULT_TRUE) {
+//
+//                           UIAlertController *errorAlertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:[NSString stringWithFormat:@"The email send to %@ failed",text] preferredStyle:UIAlertControllerStyleAlert];
+//                           UIAlertAction *action = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+//
+//                           }];
+//
+//                           [errorAlertVC addAction:action];
+//                           [weakself presentViewController:errorAlertVC animated:YES completion:nil];
+//
+//                       }else {
+//
+//                           [RAUtils message_alert:@"Send Email Success" title:@"Message" controller:weakself];
+//
+//                       }
+//
+//                   });
+//
+//                });
+                
+            }];
+            
+        } else {
+            
+            // 非邮件地址,警告
+            [weakVC warning:@"Please enter right email address"];
+            
+        }
+        
+    };
+    
+    [self presentViewController:emailAddrVC animated:YES completion:nil];
+    
+}
+
+- (IBAction)printCartButtonClick:(UIButton *)sender {
+    
+    if (![self isOrderAvailable]) {
+        return;
+    }
+    
+    RAPDFViewController *ViewController = [[UIStoryboard storyboardWithName:@"wkweb" bundle:nil] instantiateViewControllerWithIdentifier:@"RAPDFViewController"];
+    
+    ViewController.url = self.print_url;
+    ViewController.canSave = false;
+    ViewController.isLocalfile=NO;
+    NSString* subject;
+    
+
+    subject =@"Cart Print";
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    NSString* customer_email=    [appDelegate.customerInfo valueForKey:@"customer_email"];
+    
+    
+    NSMutableArray* send_to = [[NSMutableArray alloc]init];
+    if(customer_email.length>0)
+    {
+        send_to=[[customer_email componentsSeparatedByString:NSLocalizedString(@";", nil)] mutableCopy];
+        
+    }
+    ViewController.mail_to = send_to;
+    
+    ViewController.filename = [NSString stringWithFormat:@"%@_Product_List.pdf",COMPANY_SHORT_NAME];
+
+
+    ViewController.mail_subject = subject;
+    
+    ViewController.hidenavi = false;
+    [self.navigationController pushViewController:ViewController animated:YES];
+    
+}
+
+- (void)showAddressBoxToEmailProduct:(NSString *)productID {
+    //    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+    
+    JKMessageBoxController *emailAddrVC = [JKMessageBoxController messageBoxControllerWithTip:@"E-mail not setup, please enter your default e-mail address" ContentSize:CGSizeMake(400, 150)];
+    emailAddrVC.textFiled.secureTextEntry = NO;
+    emailAddrVC.yesButtonTitle = @"send";
+    
+    __weak typeof(emailAddrVC) weakVC = emailAddrVC;
+    __weak typeof(self) weakself = self;
+    
+    emailAddrVC.textHandler = ^(NSString *text){
+        
+        // 验证邮箱格式是否正确
+//        NSString *match = EMAIL_MATCHES;
+//        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",match];
+//        BOOL isEmailAddr = [predicate evaluateWithObject:text];
+        BOOL isEmailAddr = YES;
+        if (isEmailAddr) {
+            
+            // 验证是邮件地址,发送邮件
+            [weakVC dismissViewControllerAnimated:YES completion:^{
+                
+                __block UIAlertController *waitting_alert = [RAUtils waiting_alert:self title:@"Sending Email" completion:^{
+                    [RANetwork request_notifymodel:productID emailAddr:text withScreen:ScreenCodeCart completionHandler:^(NSMutableDictionary *result) {
+                                        
+                                        
+                    //                    [waitting_alert dismissWithClickedButtonIndex:0 animated:NO];
+                                        [waitting_alert dismissViewControllerAnimated:YES completion:^{
+                                            int resultStatus = [[result objectForKey:@"result"] intValue];
+                                            if (resultStatus != RESULT_TRUE && resultStatus != RESULT_NO_EMAIL_ADDRESS) {
+                                                
+                                                NSString *msg = [NSString stringWithFormat:@"The email send failed"];
+                                                if ([result valueForKey:@"err_msg"]) {
+                                                    msg = [result valueForKey:@"err_msg"];
+                                                }
+                                                
+                                                
+                                                UIAlertController *errorAlertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:msg preferredStyle:UIAlertControllerStyleAlert];
+                                                UIAlertAction *action = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+                                                    
+                                                }];
+                                                
+                                                [errorAlertVC addAction:action];
+                                                [weakself presentViewController:errorAlertVC animated:YES completion:nil];
+                                                
+                                            }else if(resultStatus == RESULT_TRUE){
+                                                
+                                                [RAUtils message_alert:@"Notification is sent to default email address." title:@"Message" controller:weakself];
+                                                
+                                            } else if (resultStatus == RESULT_NO_EMAIL_ADDRESS) {
+                                                
+                                                [weakself showAddressBoxToEmailProduct:productID];
+                                                
+                                            }
+                                        }];
+                                        
+
+                                        
+                                        
+                                    }];
+
+                }];
+                
+                                
+//                dispatch_async(dispatch_get_global_queue(0, 0), ^{
+//
+//                    NSDictionary *result = [RANetwork notifyModel:productID emailAddr:text withScreen:ScreenCodeCart];
+//
+//                    dispatch_async(dispatch_get_main_queue(), ^{
+//
+//                        [waitting_alert dismissWithClickedButtonIndex:0 animated:NO];
+//
+//                        int resultStatus = [[result objectForKey:@"result"] intValue];
+//                        if (resultStatus != RESULT_TRUE && resultStatus != RESULT_NO_EMAIL_ADDRESS) {
+//
+//                            NSString *msg = [NSString stringWithFormat:@"The email send failed"];
+//                            if ([result valueForKey:@"err_msg"]) {
+//                                    msg = [result valueForKey:@"err_msg"];
+//                            }
+//
+//
+//                            UIAlertController *errorAlertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:msg preferredStyle:UIAlertControllerStyleAlert];
+//                            UIAlertAction *action = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+//
+//                            }];
+//
+//                            [errorAlertVC addAction:action];
+//                            [weakself presentViewController:errorAlertVC animated:YES completion:nil];
+//
+//                        }else if(resultStatus == RESULT_TRUE){
+//
+//                            [RAUtils message_alert:@"Notification is sent to default email address." title:@"Message" controller:weakself];
+//
+//                        } else if (resultStatus == RESULT_NO_EMAIL_ADDRESS) {
+//
+//                            [weakself showAddressBoxToEmailProduct:productID];
+//
+//                        }
+//
+//                    });
+//
+//                });
+                
+            }];
+            
+        } else {
+            
+            // 非邮件地址,警告
+            [weakVC warning:@"Please enter right email address"];
+            
+        }
+        
+    };
+    
+    [self presentViewController:emailAddrVC animated:YES completion:nil];
+}
+
+#pragma mark - Back Order
+
+- (void) setCart_json:(NSDictionary *)cart_json {
+    _cart_json = cart_json;
+    [self fillContentArray];
+    
+}
+
+- (void)fillContentArray {
+    NSMutableArray *arr = [NSMutableArray array];
+    for (int i = 0; i < [self sectionCount]; i++) {
+        NSInteger item_count = [self itemCountInSection:i];
+        for (int j = 0; j < item_count; j++) {
+            NSDictionary *item = [self itemJsonAtIndexPath:[NSIndexPath indexPathForRow:j inSection:i]];
+            [arr addObject:item];
+        }
+    }
+    self.content_arr = arr;
+    [self refresh_total];
+}
+
+- (NSInteger)sectionCount {
+    return [[self.cart_json objectForKey:@"section_count"] integerValue];
+}
+
+- (NSDictionary *)jsonAtSection:(NSInteger)section {
+    return [self.cart_json objectForKey:[NSString stringWithFormat:@"section_%ld",section]];
+}
+
+- (NSInteger)itemCountInSection:(NSInteger)section {
+    NSDictionary *section_json = [self jsonAtSection:section];
+    return [[section_json objectForKey:@"count"] integerValue];
+}
+
+- (NSString *)titleForSection:(NSInteger)section {
+    NSDictionary *section_json = [self jsonAtSection:section];
+    return [section_json objectForKey:@"title"];
+}
+
+- (NSDictionary *)itemJsonAtIndexPath:(NSIndexPath *)indexPath {
+    NSDictionary *section = [self jsonAtSection:indexPath.section];
+    return [section objectForKey:[NSString stringWithFormat:@"item_%ld",indexPath.row]];
+}
+
+- (void)updateItemJson:(NSDictionary *)new_item_json atIndexPath:(NSIndexPath *)indexPath {
+    
+    NSMutableDictionary *new_cart_json = [self.cart_json mutableCopy];
+    NSMutableDictionary *new_section_json = [[self jsonAtSection:indexPath.section] mutableCopy];
+    
+    NSString *section_key = [NSString stringWithFormat:@"section_%ld",indexPath.section];
+    NSString *item_key = [NSString stringWithFormat:@"item_%ld",indexPath.row];
+    
+    if (new_item_json) {
+        // 更新Item
+        [new_section_json setObject:new_item_json forKey:item_key];
+    } else {
+        // 删除Item
+        NSInteger item_count = [self itemCountInSection:indexPath.section];
+        for (NSInteger i = 0; i < item_count; i++) {
+            if (i >= indexPath.row) {
+                if (i < item_count - 1) {
+                    item_key = [NSString stringWithFormat:@"item_%ld",i + 1];
+                    NSDictionary *followed_item_json = [new_section_json objectForKey:item_key];
+                    
+                    item_key = [NSString stringWithFormat:@"item_%ld",i];
+                    [new_section_json setObject:followed_item_json forKey:item_key];
+                } else {
+                    item_key = [NSString stringWithFormat:@"item_%ld",i];
+                    [new_section_json removeObjectForKey:item_key];
+                }
+            }
+        }
+        [new_section_json setObject:@(item_count - 1) forKey:@"count"];
+    }
+    [new_cart_json setObject:new_section_json forKey:section_key];
+    
+    self.cart_json = [new_cart_json copy];
+}
+
+- (void)reRefreshView {
+    [self.itemListTable reloadData];
+}
+
+
+#pragma mark - RA_NOTIFICAITON
+-(void) refresh_ui
+{
+    [self.itemListTable reloadData];
+    [self refresh_total];
+}
+-(void) refresh_price
+{
+    [self refresh_ui];
+}
+- (void) reload_data {
+    
+    
+    
+    
+    __weak typeof(self) weakself = self;
+    self.currentOrderIsMerged = NO;
+    NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
+        
+        if (weakself) {
+            __strong typeof(weakself) strongself = weakself;
+            [strongself operation_reload_data];
+        }
+        
+    }];
+    
+    [self.dataOperationQueue addOperation:operation];
+}
+@end

+ 0 - 9
RedAnt ERP Mobile/RedAnt ERP Mobile.xcworkspace/contents.xcworkspacedata

@@ -10,15 +10,6 @@
    <Group
       location = "container:"
       name = "not active">
-      <FileRef
-         location = "group:iSales-GATIT.xcodeproj">
-      </FileRef>
-      <FileRef
-         location = "group:HMLG Mobile.xcodeproj">
-      </FileRef>
-      <FileRef
-         location = "group:iSales-HOMER.xcodeproj">
-      </FileRef>
    </Group>
    <FileRef
       location = "group:iSales-TRADESHOW.xcodeproj">

+ 248 - 55
RedAnt ERP Mobile/common/ERP_Mobile_Cart.storyboard

@@ -1,9 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21225" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
     <device id="ipad7_9" orientation="portrait" layout="fullscreen" appearance="light"/>
     <dependencies>
-        <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21207"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
@@ -29,20 +28,20 @@
                                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                                         <color key="sectionIndexBackgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                         <prototypes>
-                                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="CartItemCell" rowHeight="146" id="9d9-Fh-IGR" customClass="ModelItemCell">
-                                                <rect key="frame" x="0.0" y="44.5" width="744" height="146"/>
+                                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="ContrastCartItemCell" rowHeight="146" id="9d9-Fh-IGR" customClass="ContrastModelItemCell">
+                                                <rect key="frame" x="0.0" y="50" width="744" height="146"/>
                                                 <autoresizingMask key="autoresizingMask"/>
                                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="9d9-Fh-IGR" id="NLP-mv-Q7E">
                                                     <rect key="frame" x="0.0" y="0.0" width="744" height="146"/>
                                                     <autoresizingMask key="autoresizingMask"/>
                                                     <subviews>
                                                         <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="name aaaaaaaaaaaaa aaaaaaaaaa BBBBB  CCCCC" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Sj7-pu-c1Y" userLabel="name and description">
-                                                            <rect key="frame" x="123" y="10" width="158" height="100"/>
+                                                            <rect key="frame" x="123" y="10" width="174" height="100"/>
                                                             <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="15"/>
                                                             <nil key="highlightedColor"/>
                                                         </label>
                                                         <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="9999" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="cfH-6d-98v" userLabel="qty">
-                                                            <rect key="frame" x="414" y="41" width="60" height="32"/>
+                                                            <rect key="frame" x="430" y="41" width="60" height="32"/>
                                                             <constraints>
                                                                 <constraint firstAttribute="height" constant="32" id="9qV-vK-2rq"/>
                                                                 <constraint firstAttribute="width" constant="60" id="Lkj-nL-CD6"/>
@@ -68,7 +67,7 @@
                                                             </connections>
                                                         </button>
                                                         <stepper opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" maximumValue="99999" translatesAutoresizingMaskIntoConstraints="NO" id="Icr-T0-BzH">
-                                                            <rect key="frame" x="489" y="41" width="94" height="32"/>
+                                                            <rect key="frame" x="505" y="41" width="94" height="32"/>
                                                             <constraints>
                                                                 <constraint firstAttribute="height" constant="32" id="8h7-sY-BPG"/>
                                                                 <constraint firstAttribute="width" constant="94" id="wmY-Eg-mTQ"/>
@@ -78,7 +77,7 @@
                                                             </connections>
                                                         </stepper>
                                                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12345678.99" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9e7-U4-taE" userLabel="unit price">
-                                                            <rect key="frame" x="289" y="46.5" width="110" height="21"/>
+                                                            <rect key="frame" x="305" y="46.5" width="110" height="21"/>
                                                             <constraints>
                                                                 <constraint firstAttribute="width" constant="110" id="W0G-CU-uww"/>
                                                             </constraints>
@@ -87,7 +86,7 @@
                                                             <nil key="highlightedColor"/>
                                                         </label>
                                                         <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="30 bundle item with $xxx" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6Z9-hg-rlD">
-                                                            <rect key="frame" x="123" y="87.5" width="424" height="21"/>
+                                                            <rect key="frame" x="123" y="87" width="191" height="21"/>
                                                             <constraints>
                                                                 <constraint firstAttribute="height" constant="21" id="hlq-zF-MhA"/>
                                                             </constraints>
@@ -96,7 +95,7 @@
                                                             <nil key="highlightedColor"/>
                                                         </label>
                                                         <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12345678.99" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7zr-Zx-7tD" userLabel="price before discount" customClass="StrikethroughLabel">
-                                                            <rect key="frame" x="289" y="10" width="110" height="21"/>
+                                                            <rect key="frame" x="305" y="10" width="110" height="21"/>
                                                             <constraints>
                                                                 <constraint firstAttribute="width" constant="110" id="0wV-fW-oya"/>
                                                                 <constraint firstAttribute="height" constant="21" id="1BK-GJ-UM1"/>
@@ -106,7 +105,7 @@
                                                             <nil key="highlightedColor"/>
                                                         </label>
                                                         <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="99.99% off" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aTC-Ir-xIh" userLabel="discount">
-                                                            <rect key="frame" x="443" y="10" width="100" height="21"/>
+                                                            <rect key="frame" x="459" y="10" width="100" height="21"/>
                                                             <constraints>
                                                                 <constraint firstAttribute="width" constant="100" id="u3i-gR-l4k"/>
                                                             </constraints>
@@ -115,7 +114,7 @@
                                                             <nil key="highlightedColor"/>
                                                         </label>
                                                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sold in QTY of:9999" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="d6n-Fn-anV">
-                                                            <rect key="frame" x="553" y="10" width="160" height="21"/>
+                                                            <rect key="frame" x="569" y="10" width="160" height="21"/>
                                                             <constraints>
                                                                 <constraint firstAttribute="width" constant="160" id="JFg-Eg-ICy"/>
                                                                 <constraint firstAttribute="height" constant="21" id="bk0-ux-cHr"/>
@@ -125,26 +124,13 @@
                                                             <nil key="highlightedColor"/>
                                                         </label>
                                                         <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="123456789.00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4CM-f3-iTa" userLabel="subtotal price">
-                                                            <rect key="frame" x="598" y="46.5" width="115" height="21"/>
+                                                            <rect key="frame" x="614" y="46.5" width="115" height="21"/>
                                                             <constraints>
                                                                 <constraint firstAttribute="width" constant="115" id="H2W-Ot-Soh"/>
                                                             </constraints>
                                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                             <nil key="highlightedColor"/>
                                                         </label>
-                                                        <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ocu-RP-B0J" customClass="BundleDetailButton">
-                                                            <rect key="frame" x="555" y="83" width="50" height="30"/>
-                                                            <constraints>
-                                                                <constraint firstAttribute="height" constant="30" id="DSn-b9-pka"/>
-                                                                <constraint firstAttribute="width" constant="50" id="vPF-fd-wAB"/>
-                                                            </constraints>
-                                                            <state key="normal" title="Detail">
-                                                                <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                                            </state>
-                                                            <connections>
-                                                                <action selector="OnClick_BundleDetail:" destination="9d9-Fh-IGR" eventType="touchUpInside" id="coI-MK-RRd"/>
-                                                            </connections>
-                                                        </button>
                                                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="915-GD-PCl">
                                                             <rect key="frame" x="15" y="117" width="714" height="21"/>
                                                             <constraints>
@@ -177,22 +163,17 @@ Stock</string>
                                                             <color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
                                                             <nil key="highlightedColor"/>
                                                         </label>
-                                                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Dh8-s0-2mU" customClass="BundleDetailButton">
-                                                            <rect key="frame" x="613" y="83" width="100" height="30"/>
-                                                            <constraints>
-                                                                <constraint firstAttribute="height" constant="30" id="k4d-bv-5h4"/>
-                                                                <constraint firstAttribute="width" constant="100" id="qzO-hT-b92"/>
-                                                            </constraints>
-                                                            <state key="normal" title="Master Model"/>
-                                                            <connections>
-                                                                <action selector="masterBundleClick:" destination="9d9-Fh-IGR" eventType="touchUpInside" id="pkR-vH-UQm"/>
-                                                            </connections>
-                                                        </button>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Master Pack:9999" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xdp-jz-uq8">
+                                                            <rect key="frame" x="569" y="87" width="160" height="21"/>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <nil key="textColor"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
                                                     </subviews>
                                                     <constraints>
                                                         <constraint firstItem="aTC-Ir-xIh" firstAttribute="firstBaseline" secondItem="7zr-Zx-7tD" secondAttribute="firstBaseline" id="1Td-Kv-cc2"/>
+                                                        <constraint firstItem="Xdp-jz-uq8" firstAttribute="leading" secondItem="d6n-Fn-anV" secondAttribute="leading" id="24z-Fq-k9d"/>
                                                         <constraint firstItem="7zr-Zx-7tD" firstAttribute="leading" secondItem="9e7-U4-taE" secondAttribute="leading" id="52p-Qe-9w0"/>
-                                                        <constraint firstItem="915-GD-PCl" firstAttribute="top" secondItem="Dh8-s0-2mU" secondAttribute="bottom" constant="4" id="64y-GD-vfr"/>
                                                         <constraint firstItem="Sj7-pu-c1Y" firstAttribute="leading" secondItem="hIo-dM-bDY" secondAttribute="trailing" constant="8" id="75X-vj-Hea"/>
                                                         <constraint firstItem="cfH-6d-98v" firstAttribute="leading" secondItem="9e7-U4-taE" secondAttribute="trailing" constant="15" id="8F9-yN-6W9"/>
                                                         <constraint firstItem="d6n-Fn-anV" firstAttribute="firstBaseline" secondItem="7zr-Zx-7tD" secondAttribute="firstBaseline" id="9iT-4A-L9L"/>
@@ -200,54 +181,266 @@ Stock</string>
                                                         <constraint firstItem="6Z9-hg-rlD" firstAttribute="leading" secondItem="hIo-dM-bDY" secondAttribute="trailing" constant="8" id="ATA-H2-mK7"/>
                                                         <constraint firstItem="915-GD-PCl" firstAttribute="leading" secondItem="NLP-mv-Q7E" secondAttribute="leading" constant="15" id="AX0-Ft-vsT"/>
                                                         <constraint firstItem="d6n-Fn-anV" firstAttribute="top" secondItem="yAE-wv-LeH" secondAttribute="top" id="Dhm-46-456"/>
+                                                        <constraint firstItem="Xdp-jz-uq8" firstAttribute="centerY" secondItem="6Z9-hg-rlD" secondAttribute="centerY" id="Dun-DJ-R9q"/>
                                                         <constraint firstItem="Icr-T0-BzH" firstAttribute="top" secondItem="aTC-Ir-xIh" secondAttribute="bottom" constant="10" id="IMo-YX-GTm"/>
+                                                        <constraint firstItem="Xdp-jz-uq8" firstAttribute="trailing" secondItem="d6n-Fn-anV" secondAttribute="trailing" id="IUq-Cf-khD"/>
                                                         <constraint firstItem="yAE-wv-LeH" firstAttribute="leading" secondItem="NLP-mv-Q7E" secondAttribute="leading" constant="15" id="JNh-If-aG6"/>
-                                                        <constraint firstItem="Dh8-s0-2mU" firstAttribute="leading" secondItem="ocu-RP-B0J" secondAttribute="trailing" constant="8" id="KVg-MO-1xD"/>
                                                         <constraint firstItem="yAE-wv-LeH" firstAttribute="top" secondItem="NLP-mv-Q7E" secondAttribute="top" constant="10" id="Km4-ou-Qjr"/>
                                                         <constraint firstItem="7zr-Zx-7tD" firstAttribute="leading" secondItem="Sj7-pu-c1Y" secondAttribute="trailing" constant="8" id="LTy-g6-5Oc"/>
                                                         <constraint firstItem="4CM-f3-iTa" firstAttribute="leading" secondItem="Icr-T0-BzH" secondAttribute="trailing" constant="15" id="MBZ-e1-Kkl"/>
-                                                        <constraint firstAttribute="trailingMargin" secondItem="Dh8-s0-2mU" secondAttribute="trailing" constant="15" id="O5r-cV-qvD"/>
                                                         <constraint firstItem="hIo-dM-bDY" firstAttribute="top" secondItem="NLP-mv-Q7E" secondAttribute="top" constant="10" id="R3g-ik-HqB"/>
                                                         <constraint firstItem="Icr-T0-BzH" firstAttribute="centerY" secondItem="9e7-U4-taE" secondAttribute="centerY" id="SRJ-mZ-8It"/>
                                                         <constraint firstItem="4CM-f3-iTa" firstAttribute="trailing" secondItem="d6n-Fn-anV" secondAttribute="trailing" id="VDn-f0-7Mj"/>
                                                         <constraint firstItem="d6n-Fn-anV" firstAttribute="leading" secondItem="aTC-Ir-xIh" secondAttribute="trailing" constant="10" id="VL0-Gw-woj"/>
                                                         <constraint firstItem="FOL-ZC-Dqb" firstAttribute="leading" secondItem="NLP-mv-Q7E" secondAttribute="leadingMargin" constant="45" id="YPW-BP-Mcn"/>
-                                                        <constraint firstItem="ocu-RP-B0J" firstAttribute="top" secondItem="Icr-T0-BzH" secondAttribute="bottom" constant="10" id="bSK-Fu-b7F"/>
                                                         <constraint firstItem="Icr-T0-BzH" firstAttribute="leading" secondItem="cfH-6d-98v" secondAttribute="trailing" constant="15" id="bY8-fu-gEq"/>
                                                         <constraint firstItem="FOL-ZC-Dqb" firstAttribute="top" secondItem="NLP-mv-Q7E" secondAttribute="topMargin" constant="45" id="bYR-h8-STB"/>
                                                         <constraint firstItem="Sj7-pu-c1Y" firstAttribute="bottom" secondItem="yAE-wv-LeH" secondAttribute="bottom" id="cNr-OO-2Fl"/>
                                                         <constraint firstItem="4CM-f3-iTa" firstAttribute="centerY" secondItem="9e7-U4-taE" secondAttribute="centerY" id="cdk-Lj-QYP"/>
-                                                        <constraint firstItem="Dh8-s0-2mU" firstAttribute="trailing" secondItem="4CM-f3-iTa" secondAttribute="trailing" id="e5V-lU-uUo"/>
-                                                        <constraint firstItem="ocu-RP-B0J" firstAttribute="leading" secondItem="6Z9-hg-rlD" secondAttribute="trailing" constant="8" id="gHz-lx-Pek"/>
                                                         <constraint firstAttribute="trailing" secondItem="915-GD-PCl" secondAttribute="trailing" constant="15" id="gkQ-Pm-FbF"/>
-                                                        <constraint firstItem="Dh8-s0-2mU" firstAttribute="firstBaseline" secondItem="ocu-RP-B0J" secondAttribute="firstBaseline" id="h1B-nw-7PW"/>
-                                                        <constraint firstItem="Dh8-s0-2mU" firstAttribute="leading" secondItem="ocu-RP-B0J" secondAttribute="trailing" constant="8" id="nXk-Iz-0wQ"/>
-                                                        <constraint firstItem="ocu-RP-B0J" firstAttribute="firstBaseline" secondItem="6Z9-hg-rlD" secondAttribute="firstBaseline" id="peL-Lg-lJF"/>
+                                                        <constraint firstAttribute="trailing" secondItem="d6n-Fn-anV" secondAttribute="trailing" constant="15" id="jJt-cU-yn3"/>
                                                         <constraint firstItem="Sj7-pu-c1Y" firstAttribute="top" secondItem="yAE-wv-LeH" secondAttribute="top" id="s49-yu-i8R"/>
+                                                        <constraint firstItem="Xdp-jz-uq8" firstAttribute="top" secondItem="Icr-T0-BzH" secondAttribute="bottom" constant="14" id="vgQ-YH-pDt"/>
                                                         <constraint firstItem="cfH-6d-98v" firstAttribute="centerY" secondItem="9e7-U4-taE" secondAttribute="centerY" id="xL9-QS-Ao7"/>
                                                         <constraint firstItem="hIo-dM-bDY" firstAttribute="leading" secondItem="NLP-mv-Q7E" secondAttribute="leading" constant="15" id="yGg-xZ-kC9"/>
                                                     </constraints>
                                                 </tableViewCellContentView>
                                                 <connections>
                                                     <outlet property="btnImage" destination="hIo-dM-bDY" id="3nj-hw-V2Y"/>
-                                                    <outlet property="bundleButton" destination="ocu-RP-B0J" id="0Pr-Cg-rPA"/>
                                                     <outlet property="bundleLabel" destination="6Z9-hg-rlD" id="zMh-Si-hHa"/>
                                                     <outlet property="editCount" destination="cfH-6d-98v" id="vtA-8r-44o"/>
                                                     <outlet property="labelDescription" destination="Sj7-pu-c1Y" id="PDK-TS-NAc"/>
                                                     <outlet property="labelDiscount" destination="aTC-Ir-xIh" id="zj7-OV-Bkk"/>
                                                     <outlet property="labelMasterpack" destination="d6n-Fn-anV" id="a0S-Mp-ZYa"/>
+                                                    <outlet property="labelMpack" destination="Xdp-jz-uq8" id="I9M-el-4SN"/>
                                                     <outlet property="labelNoSuchModel" destination="FOL-ZC-Dqb" id="5oX-tH-J6J"/>
                                                     <outlet property="labelNotes" destination="915-GD-PCl" id="XGW-Ik-SNk"/>
                                                     <outlet property="labelOldPrice" destination="7zr-Zx-7tD" id="jGH-Gj-HaL"/>
                                                     <outlet property="labelOutOfStock" destination="yAE-wv-LeH" id="ZCZ-0R-oge"/>
                                                     <outlet property="labelPrice" destination="4CM-f3-iTa" id="8MX-X5-OAP"/>
                                                     <outlet property="labelUnitPrice" destination="9e7-U4-taE" id="Gry-Vf-QLD"/>
-                                                    <outlet property="masterBtn" destination="Dh8-s0-2mU" id="W5Y-n2-n90"/>
                                                     <outlet property="stepper" destination="Icr-T0-BzH" id="u9D-9n-nC1"/>
                                                 </connections>
                                             </tableViewCell>
+                                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="CartItemCell" rowHeight="146" id="IPG-eZ-Ldx" customClass="ModelItemCell">
+                                                <rect key="frame" x="0.0" y="196" width="744" height="146"/>
+                                                <autoresizingMask key="autoresizingMask"/>
+                                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="IPG-eZ-Ldx" id="aV7-ct-m80">
+                                                    <rect key="frame" x="0.0" y="0.0" width="744" height="146"/>
+                                                    <autoresizingMask key="autoresizingMask"/>
+                                                    <subviews>
+                                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="name aaaaaaaaaaaaa aaaaaaaaaa BBBBB  CCCCC" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FCZ-fr-RiL" userLabel="name and description">
+                                                            <rect key="frame" x="123" y="10" width="158" height="100"/>
+                                                            <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="15"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="9999" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="wHh-57-qX6" userLabel="qty">
+                                                            <rect key="frame" x="414" y="41" width="60" height="32"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="32" id="KXe-1A-b27"/>
+                                                                <constraint firstAttribute="width" constant="60" id="wjw-qO-cXc"/>
+                                                            </constraints>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                                            <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
+                                                            <connections>
+                                                                <outlet property="delegate" destination="IPG-eZ-Ldx" id="AVP-GF-R30"/>
+                                                            </connections>
+                                                        </textField>
+                                                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CQr-4f-BTN" userLabel="imgbtn detail">
+                                                            <rect key="frame" x="15" y="10" width="100" height="100"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="100" id="RNM-hR-GDe"/>
+                                                                <constraint firstAttribute="width" constant="100" id="xII-sR-2Wi"/>
+                                                            </constraints>
+                                                            <state key="normal">
+                                                                <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            </state>
+                                                            <connections>
+                                                                <action selector="imgbtnClick:" destination="K4s-dn-ekA" eventType="touchUpInside" id="pbj-2j-9Hp"/>
+                                                            </connections>
+                                                        </button>
+                                                        <stepper opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" maximumValue="99999" translatesAutoresizingMaskIntoConstraints="NO" id="vwR-Fh-jnH">
+                                                            <rect key="frame" x="489" y="41" width="94" height="32"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="32" id="QsM-o1-LcJ"/>
+                                                                <constraint firstAttribute="width" constant="94" id="pJL-uY-OjG"/>
+                                                            </constraints>
+                                                            <connections>
+                                                                <action selector="setpperChanged:" destination="IPG-eZ-Ldx" eventType="touchUpInside" id="q8t-mH-H6A"/>
+                                                            </connections>
+                                                        </stepper>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12345678.99" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="g10-XF-ITc" userLabel="unit price">
+                                                            <rect key="frame" x="289" y="46.5" width="110" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="110" id="QkU-rk-OkC"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="30 bundle item with $xxx" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VvV-8Y-xAb">
+                                                            <rect key="frame" x="123" y="87.5" width="424" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="21" id="OAi-uv-jUT"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12345678.99" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HPA-0m-jgH" userLabel="price before discount" customClass="StrikethroughLabel">
+                                                            <rect key="frame" x="289" y="10" width="110" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="21" id="qWe-b3-eT6"/>
+                                                                <constraint firstAttribute="width" constant="110" id="wHI-to-aDP"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.33333333329999998" green="0.33333333329999998" blue="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="99.99% off" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="A2s-Fq-cxF" userLabel="discount">
+                                                            <rect key="frame" x="443" y="10" width="100" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="100" id="NUK-yo-JsL"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sold in QTY of:9999" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oNL-Hg-1kJ">
+                                                            <rect key="frame" x="553" y="10" width="160" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="160" id="8Eu-eU-qip"/>
+                                                                <constraint firstAttribute="height" constant="21" id="Q5u-Bc-19T"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="123456789.00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="M7N-AZ-h62" userLabel="subtotal price">
+                                                            <rect key="frame" x="598" y="46.5" width="115" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="115" id="KLp-yr-BZP"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ADi-I6-dec" customClass="BundleDetailButton">
+                                                            <rect key="frame" x="555" y="83" width="50" height="30"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="30" id="V6H-y4-IXW"/>
+                                                                <constraint firstAttribute="width" constant="50" id="sIj-8n-CXc"/>
+                                                            </constraints>
+                                                            <state key="normal" title="Detail">
+                                                                <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            </state>
+                                                            <connections>
+                                                                <action selector="OnClick_BundleDetail:" destination="IPG-eZ-Ldx" eventType="touchUpInside" id="47b-lI-FXy"/>
+                                                            </connections>
+                                                        </button>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ydZ-Dl-e6B">
+                                                            <rect key="frame" x="15" y="117" width="714" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="21" id="cXO-aU-gQq"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="No Such Model" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9W8-mR-B12">
+                                                            <rect key="frame" x="61" y="56" width="337" height="42"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="337" id="cqU-0q-DZK"/>
+                                                                <constraint firstAttribute="height" constant="42" id="ldE-We-XLr"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="boldSystem" pointSize="35"/>
+                                                            <color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hpU-oT-VR7">
+                                                            <rect key="frame" x="15" y="10" width="100" height="100"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="100" id="vme-ZV-t7u"/>
+                                                                <constraint firstAttribute="height" constant="100" id="vxj-9s-cfU"/>
+                                                            </constraints>
+                                                            <string key="text"> Out
+of
+Stock</string>
+                                                            <fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
+                                                            <color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="IQg-X5-LA5" customClass="BundleDetailButton">
+                                                            <rect key="frame" x="613" y="83" width="100" height="30"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="100" id="Fin-jv-Lz1"/>
+                                                                <constraint firstAttribute="height" constant="30" id="NN3-JK-wra"/>
+                                                            </constraints>
+                                                            <state key="normal" title="Master Model"/>
+                                                            <connections>
+                                                                <action selector="masterBundleClick:" destination="IPG-eZ-Ldx" eventType="touchUpInside" id="cva-6R-ULu"/>
+                                                            </connections>
+                                                        </button>
+                                                    </subviews>
+                                                    <constraints>
+                                                        <constraint firstItem="M7N-AZ-h62" firstAttribute="leading" secondItem="vwR-Fh-jnH" secondAttribute="trailing" constant="15" id="5tm-xr-thu"/>
+                                                        <constraint firstItem="hpU-oT-VR7" firstAttribute="top" secondItem="aV7-ct-m80" secondAttribute="top" constant="10" id="8xN-9h-5RR"/>
+                                                        <constraint firstItem="IQg-X5-LA5" firstAttribute="trailing" secondItem="M7N-AZ-h62" secondAttribute="trailing" id="9IQ-E0-uLD"/>
+                                                        <constraint firstAttribute="bottom" secondItem="ydZ-Dl-e6B" secondAttribute="bottom" constant="8" id="9nV-Iw-abd"/>
+                                                        <constraint firstItem="vwR-Fh-jnH" firstAttribute="leading" secondItem="wHh-57-qX6" secondAttribute="trailing" constant="15" id="C5i-2z-rBj"/>
+                                                        <constraint firstItem="ydZ-Dl-e6B" firstAttribute="top" secondItem="IQg-X5-LA5" secondAttribute="bottom" constant="4" id="Cyd-ex-tOI"/>
+                                                        <constraint firstItem="FCZ-fr-RiL" firstAttribute="bottom" secondItem="hpU-oT-VR7" secondAttribute="bottom" id="GQW-mu-Uo7"/>
+                                                        <constraint firstItem="ADi-I6-dec" firstAttribute="leading" secondItem="VvV-8Y-xAb" secondAttribute="trailing" constant="8" id="Gri-HW-jUa"/>
+                                                        <constraint firstItem="vwR-Fh-jnH" firstAttribute="top" secondItem="A2s-Fq-cxF" secondAttribute="bottom" constant="10" id="IRq-4Y-fi2"/>
+                                                        <constraint firstItem="M7N-AZ-h62" firstAttribute="trailing" secondItem="oNL-Hg-1kJ" secondAttribute="trailing" id="K3R-Z7-V6c"/>
+                                                        <constraint firstItem="ADi-I6-dec" firstAttribute="top" secondItem="vwR-Fh-jnH" secondAttribute="bottom" constant="10" id="KMu-mg-k3l"/>
+                                                        <constraint firstItem="oNL-Hg-1kJ" firstAttribute="top" secondItem="hpU-oT-VR7" secondAttribute="top" id="KRW-nL-Bgz"/>
+                                                        <constraint firstItem="M7N-AZ-h62" firstAttribute="centerY" secondItem="g10-XF-ITc" secondAttribute="centerY" id="Kzh-04-OEX"/>
+                                                        <constraint firstItem="oNL-Hg-1kJ" firstAttribute="leading" secondItem="A2s-Fq-cxF" secondAttribute="trailing" constant="10" id="PHh-JL-bqq"/>
+                                                        <constraint firstItem="CQr-4f-BTN" firstAttribute="leading" secondItem="aV7-ct-m80" secondAttribute="leading" constant="15" id="RnL-rc-AyX"/>
+                                                        <constraint firstAttribute="trailing" secondItem="ydZ-Dl-e6B" secondAttribute="trailing" constant="15" id="SV7-b7-IDm"/>
+                                                        <constraint firstItem="IQg-X5-LA5" firstAttribute="leading" secondItem="ADi-I6-dec" secondAttribute="trailing" constant="8" id="VuE-td-Ywp"/>
+                                                        <constraint firstItem="FCZ-fr-RiL" firstAttribute="leading" secondItem="CQr-4f-BTN" secondAttribute="trailing" constant="8" id="XM5-I2-d16"/>
+                                                        <constraint firstItem="IQg-X5-LA5" firstAttribute="leading" secondItem="ADi-I6-dec" secondAttribute="trailing" constant="8" id="XnH-hx-jDy"/>
+                                                        <constraint firstItem="9W8-mR-B12" firstAttribute="top" secondItem="aV7-ct-m80" secondAttribute="topMargin" constant="45" id="aL8-Y8-QOH"/>
+                                                        <constraint firstItem="vwR-Fh-jnH" firstAttribute="centerY" secondItem="g10-XF-ITc" secondAttribute="centerY" id="bBC-QS-EM6"/>
+                                                        <constraint firstItem="HPA-0m-jgH" firstAttribute="leading" secondItem="FCZ-fr-RiL" secondAttribute="trailing" constant="8" id="cF7-zr-Glk"/>
+                                                        <constraint firstItem="A2s-Fq-cxF" firstAttribute="firstBaseline" secondItem="HPA-0m-jgH" secondAttribute="firstBaseline" id="caV-QL-6Yx"/>
+                                                        <constraint firstItem="oNL-Hg-1kJ" firstAttribute="firstBaseline" secondItem="HPA-0m-jgH" secondAttribute="firstBaseline" id="cgQ-FW-AjC"/>
+                                                        <constraint firstItem="wHh-57-qX6" firstAttribute="centerY" secondItem="g10-XF-ITc" secondAttribute="centerY" id="dwn-2J-1Lm"/>
+                                                        <constraint firstItem="FCZ-fr-RiL" firstAttribute="top" secondItem="hpU-oT-VR7" secondAttribute="top" id="edW-1C-ouu"/>
+                                                        <constraint firstItem="HPA-0m-jgH" firstAttribute="leading" secondItem="g10-XF-ITc" secondAttribute="leading" id="f91-Lx-Wfi"/>
+                                                        <constraint firstItem="ydZ-Dl-e6B" firstAttribute="leading" secondItem="aV7-ct-m80" secondAttribute="leading" constant="15" id="fb3-hD-cgR"/>
+                                                        <constraint firstItem="VvV-8Y-xAb" firstAttribute="leading" secondItem="CQr-4f-BTN" secondAttribute="trailing" constant="8" id="hah-yF-hQf"/>
+                                                        <constraint firstAttribute="trailingMargin" secondItem="IQg-X5-LA5" secondAttribute="trailing" constant="15" id="jZh-U9-btE"/>
+                                                        <constraint firstItem="IQg-X5-LA5" firstAttribute="firstBaseline" secondItem="ADi-I6-dec" secondAttribute="firstBaseline" id="lp7-yN-cYR"/>
+                                                        <constraint firstItem="hpU-oT-VR7" firstAttribute="leading" secondItem="aV7-ct-m80" secondAttribute="leading" constant="15" id="tKp-ob-ZEF"/>
+                                                        <constraint firstItem="CQr-4f-BTN" firstAttribute="top" secondItem="aV7-ct-m80" secondAttribute="top" constant="10" id="tUd-Tq-hbO"/>
+                                                        <constraint firstItem="wHh-57-qX6" firstAttribute="leading" secondItem="g10-XF-ITc" secondAttribute="trailing" constant="15" id="wC4-5X-T1h"/>
+                                                        <constraint firstItem="ADi-I6-dec" firstAttribute="firstBaseline" secondItem="VvV-8Y-xAb" secondAttribute="firstBaseline" id="zGL-5h-rOI"/>
+                                                        <constraint firstItem="9W8-mR-B12" firstAttribute="leading" secondItem="aV7-ct-m80" secondAttribute="leadingMargin" constant="45" id="zkR-bJ-3Ua"/>
+                                                    </constraints>
+                                                </tableViewCellContentView>
+                                                <connections>
+                                                    <outlet property="btnImage" destination="CQr-4f-BTN" id="k1r-sr-wZ0"/>
+                                                    <outlet property="bundleButton" destination="ADi-I6-dec" id="CVe-ZY-EmZ"/>
+                                                    <outlet property="bundleLabel" destination="VvV-8Y-xAb" id="EEN-7m-EPw"/>
+                                                    <outlet property="editCount" destination="wHh-57-qX6" id="xHO-Ch-5ct"/>
+                                                    <outlet property="labelDescription" destination="FCZ-fr-RiL" id="Avq-Cw-gbO"/>
+                                                    <outlet property="labelDiscount" destination="A2s-Fq-cxF" id="TvG-Kp-D0u"/>
+                                                    <outlet property="labelMasterpack" destination="oNL-Hg-1kJ" id="rlk-Ub-uhl"/>
+                                                    <outlet property="labelNoSuchModel" destination="9W8-mR-B12" id="ZxG-RO-L1o"/>
+                                                    <outlet property="labelNotes" destination="ydZ-Dl-e6B" id="yqV-7k-OhI"/>
+                                                    <outlet property="labelOldPrice" destination="HPA-0m-jgH" id="TJg-aN-UGZ"/>
+                                                    <outlet property="labelOutOfStock" destination="hpU-oT-VR7" id="LIq-3M-Bvy"/>
+                                                    <outlet property="labelPrice" destination="M7N-AZ-h62" id="eI7-HQ-9A0"/>
+                                                    <outlet property="labelUnitPrice" destination="g10-XF-ITc" id="5Wa-4y-L8o"/>
+                                                    <outlet property="masterBtn" destination="IQg-X5-LA5" id="zCc-cU-W5H"/>
+                                                    <outlet property="stepper" destination="vwR-Fh-jnH" id="0eD-O0-Ppw"/>
+                                                </connections>
+                                            </tableViewCell>
                                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="ScanCartItemCell" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="ScanCartItemCell" rowHeight="120" id="fca-Fb-rTa" customClass="ScanCartItemCell">
-                                                <rect key="frame" x="0.0" y="190.5" width="744" height="120"/>
+                                                <rect key="frame" x="0.0" y="342" width="744" height="120"/>
                                                 <autoresizingMask key="autoresizingMask"/>
                                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="fca-Fb-rTa" id="efk-9P-2wE">
                                                     <rect key="frame" x="0.0" y="0.0" width="744" height="120"/>
@@ -327,7 +520,7 @@ Stock</string>
                                                             <nil key="highlightedColor"/>
                                                         </label>
                                                         <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Kns-xs-xWh">
-                                                            <rect key="frame" x="425" y="78" width="169" height="31"/>
+                                                            <rect key="frame" x="425" y="74.5" width="169" height="34.5"/>
                                                             <state key="normal" title="Button"/>
                                                             <buttonConfiguration key="configuration" style="plain" title="Discount"/>
                                                             <connections>
@@ -372,7 +565,7 @@ Stock</string>
                                                 </connections>
                                             </tableViewCell>
                                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="section_header_cell" rowHeight="50" id="XyA-7C-sJn">
-                                                <rect key="frame" x="0.0" y="310.5" width="744" height="50"/>
+                                                <rect key="frame" x="0.0" y="462" width="744" height="50"/>
                                                 <autoresizingMask key="autoresizingMask"/>
                                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="XyA-7C-sJn" translatesAutoresizingMaskIntoConstraints="NO" id="Ugp-AX-JtS">
                                                     <rect key="frame" x="0.0" y="0.0" width="744" height="50"/>
@@ -681,7 +874,7 @@ Stock</string>
                                         </connections>
                                     </button>
                                     <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Q8b-hd-FFZ">
-                                        <rect key="frame" x="123.5" y="9.5" width="81.5" height="31"/>
+                                        <rect key="frame" x="113" y="8" width="92" height="34.5"/>
                                         <state key="normal" title="Button"/>
                                         <buttonConfiguration key="configuration" style="plain" title="Discount"/>
                                         <connections>
@@ -1081,7 +1274,7 @@ Stock</string>
                                 <nil key="highlightedColor"/>
                             </label>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Mp7-AD-fSK">
-                                <rect key="frame" x="321" y="239" width="69" height="31"/>
+                                <rect key="frame" x="313.5" y="235.5" width="76.5" height="34.5"/>
                                 <state key="normal" title="Button"/>
                                 <buttonConfiguration key="configuration" style="plain" title="Cancel"/>
                                 <connections>
@@ -1089,7 +1282,7 @@ Stock</string>
                                 </connections>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="6tg-ic-Sng">
-                                <rect key="frame" x="90" y="239" width="72" height="31"/>
+                                <rect key="frame" x="90" y="235.5" width="80" height="34.5"/>
                                 <state key="normal" title="Button"/>
                                 <buttonConfiguration key="configuration" style="plain" title="Update"/>
                                 <connections>

+ 1 - 1
RedAnt ERP Mobile/common/Functions/cart/CartViewController.h

@@ -6,7 +6,7 @@
 //  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
 //
 
-// SCANNER ORDER  CART
+
 
 
 #import <UIKit/UIKit.h>

+ 21 - 2
RedAnt ERP Mobile/common/Functions/cart/CartViewController.m

@@ -9,7 +9,11 @@
 
 #import "RAUtils.h"
 #import "CartViewController.h"
+#ifdef BUILD_CONTRAST
+#import "ContrastModelItemCell.h"
+#else
 #import "ModelItemCell.h"
+#endif
 #import "RANetwork.h"
 //#import "CommonGridViewController.h"
 #import "CreateOrderViewController.h"
@@ -3030,7 +3034,7 @@
             
             int item_qty=1;
 //            NSDictionary * bundle_item =[item_json objectForKey:@"combine"];
-            
+#ifdef SCANNER_ORDER
             double msurcharge =0;
             if(RASingleton.sharedInstance.price_type==1)
             {
@@ -3074,6 +3078,7 @@
             
             
             self.surcharge+=msurcharge;
+#endif
             self.total+=totalprice;
             self.total_cuft+=cuft;
             self.total_carton+=carton;
@@ -3908,9 +3913,18 @@
     
 #else
     AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    
+#ifdef BUILD_CONTRAST
+    
+    CellIdentifier = @"ContrastCartItemCell";
+    ContrastModelItemCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
+    
+#else
     CellIdentifier = @"CartItemCell";
     ModelItemCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
-    
+
+#endif
     
     NSDictionary * item_json = nil;//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
     
@@ -3947,6 +3961,11 @@
     int count =[[item_json valueForKey:@"count"] intValue];
     
     int stockUom =[[item_json valueForKey:@"stockUom"] intValue];
+    int mpack =[[item_json valueForKey:@"mpack"] intValue];
+    
+#ifdef BUILD_CONTRAST
+    cell.labelMpack.text =[NSString stringWithFormat:@"Master Pack:%d", mpack];
+#endif
     
     //    double totalprice =[[item_json valueForKey:@"subtotal_price"] doubleValue];
     

+ 6 - 0
RedAnt ERP Mobile/common/Functions/offline/OLDataProvider.m

@@ -2679,8 +2679,13 @@
     [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false];
 #endif
 }
+
+#ifdef SCANNER_ORDER
 +(void) scanRefreshCart
 {
+    
+    
+
     AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
     NSMutableDictionary* cart =[[RAUtils copyDict: RASingleton.sharedInstance.scan_cart] mutableCopy];
     NSMutableDictionary * section = cart[@"section_0"];
@@ -3016,6 +3021,7 @@ if(stockUom==0)
     
     [RAUtils dicttofile:cartpath dict:cart];
 }
+#endif
 +(NSDictionary *) prepareUpload:(NSArray*) arr_order params:(NSMutableDictionary*)add_params
 {
     assert(add_params[@"user"]!=nil);

+ 12 - 44
RedAnt ERP Mobile/iSales-CONTRAST.xcodeproj/project.pbxproj

@@ -63,11 +63,8 @@
 		3C69618423C7156D0075172A /* wkweb.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3C69618023C7156D0075172A /* wkweb.storyboard */; };
 		3C7E5A8E237BDB0C006D0105 /* PortfolioListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C7E5A8C237BDB0C006D0105 /* PortfolioListViewController.m */; };
 		3C872A242797F1C800BE1FC8 /* scan_cart.json in Resources */ = {isa = PBXBuildFile; fileRef = 3C872A212797F1C800BE1FC8 /* scan_cart.json */; };
-		3C88559827E1D233005DC3FA /* RAUploadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C88559027E1D233005DC3FA /* RAUploadOperation.m */; };
-		3C88559927E1D233005DC3FA /* RAUploadListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C88559227E1D233005DC3FA /* RAUploadListViewController.m */; };
-		3C88559A27E1D233005DC3FA /* RAUploadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C88559527E1D233005DC3FA /* RAUploadManager.m */; };
-		3C88559E27E1D29D005DC3FA /* UIView+Toast.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C88559C27E1D29D005DC3FA /* UIView+Toast.m */; };
-		3C8855A127E1D2FA005DC3FA /* UploadCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C8855A027E1D2FA005DC3FA /* UploadCell.m */; };
+		3CA6DDBE28E54B72003655FF /* ContrastModelItemCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CA6DDBC28E54B72003655FF /* ContrastModelItemCell.m */; };
+		3CA6DDC428E575FB003655FF /* ModelItemCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CA6DDC328E575FB003655FF /* ModelItemCell.m */; };
 		3CDDB25C273A564200681F78 /* DefaultTableHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CDDB25A273A564200681F78 /* DefaultTableHeaderView.m */; };
 		3CDDB262273A59DF00681F78 /* TouchImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CDDB260273A59DF00681F78 /* TouchImageView.m */; };
 		3CDDB265273A59EF00681F78 /* RTLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CDDB264273A59EF00681F78 /* RTLabel.m */; };
@@ -195,7 +192,6 @@
 		7162A5171C58704600AB630E /* BundleModelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7162A50F1C58704600AB630E /* BundleModelViewController.m */; };
 		7162A5181C58704600AB630E /* CartViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7162A5111C58704600AB630E /* CartViewController.m */; };
 		7162A5191C58704600AB630E /* EditModelPriceViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7162A5131C58704600AB630E /* EditModelPriceViewController.m */; };
-		7162A51A1C58704600AB630E /* ModelItemCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 7162A5151C58704600AB630E /* ModelItemCell.m */; };
 		7162A5251C58706C00AB630E /* CategoryCellSmall.m in Sources */ = {isa = PBXBuildFile; fileRef = 7162A5201C58706C00AB630E /* CategoryCellSmall.m */; };
 		7162A5261C58706C00AB630E /* CategoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7162A5221C58706C00AB630E /* CategoryViewController.m */; };
 		7162A5411C58719D00AB630E /* RATreeNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 7162A52C1C58719D00AB630E /* RATreeNode.m */; };
@@ -406,16 +402,10 @@
 		3C7E5A8C237BDB0C006D0105 /* PortfolioListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PortfolioListViewController.m; path = common/Functions/portfolio/PortfolioListViewController.m; sourceTree = SOURCE_ROOT; };
 		3C7E5A8D237BDB0C006D0105 /* PortfolioListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PortfolioListViewController.h; path = common/Functions/portfolio/PortfolioListViewController.h; sourceTree = SOURCE_ROOT; };
 		3C872A212797F1C800BE1FC8 /* scan_cart.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = scan_cart.json; path = common/Functions/OLO/scan_cart.json; sourceTree = SOURCE_ROOT; };
-		3C88559027E1D233005DC3FA /* RAUploadOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAUploadOperation.m; sourceTree = "<group>"; };
-		3C88559127E1D233005DC3FA /* RAUploadManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAUploadManager.h; sourceTree = "<group>"; };
-		3C88559227E1D233005DC3FA /* RAUploadListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAUploadListViewController.m; sourceTree = "<group>"; };
-		3C88559427E1D233005DC3FA /* RAUploadOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAUploadOperation.h; sourceTree = "<group>"; };
-		3C88559527E1D233005DC3FA /* RAUploadManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAUploadManager.m; sourceTree = "<group>"; };
-		3C88559627E1D233005DC3FA /* RAUploadListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAUploadListViewController.h; sourceTree = "<group>"; };
-		3C88559C27E1D29D005DC3FA /* UIView+Toast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIView+Toast.m"; path = "../../common/customUI/UIView+Toast.m"; sourceTree = "<group>"; };
-		3C88559D27E1D29D005DC3FA /* UIView+Toast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIView+Toast.h"; path = "../../common/customUI/UIView+Toast.h"; sourceTree = "<group>"; };
-		3C88559F27E1D2FA005DC3FA /* UploadCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UploadCell.h; path = "iSales-USAI/UploadCell.h"; sourceTree = SOURCE_ROOT; };
-		3C8855A027E1D2FA005DC3FA /* UploadCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UploadCell.m; path = "iSales-USAI/UploadCell.m"; sourceTree = SOURCE_ROOT; };
+		3CA6DDBC28E54B72003655FF /* ContrastModelItemCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContrastModelItemCell.m; sourceTree = "<group>"; };
+		3CA6DDBD28E54B72003655FF /* ContrastModelItemCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContrastModelItemCell.h; sourceTree = "<group>"; };
+		3CA6DDC228E575FB003655FF /* ModelItemCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ModelItemCell.h; path = common/Functions/cart/ModelItemCell.h; sourceTree = SOURCE_ROOT; };
+		3CA6DDC328E575FB003655FF /* ModelItemCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ModelItemCell.m; path = common/Functions/cart/ModelItemCell.m; sourceTree = SOURCE_ROOT; };
 		3CDDB25A273A564200681F78 /* DefaultTableHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DefaultTableHeaderView.m; path = ../../common/customUI/commoneditor/DefaultTableHeaderView.m; sourceTree = "<group>"; };
 		3CDDB25B273A564200681F78 /* DefaultTableHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DefaultTableHeaderView.h; path = ../../common/customUI/commoneditor/DefaultTableHeaderView.h; sourceTree = "<group>"; };
 		3CDDB25F273A597B00681F78 /* const.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = const.h; path = common/const.h; sourceTree = SOURCE_ROOT; };
@@ -648,8 +638,6 @@
 		7162A5111C58704600AB630E /* CartViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CartViewController.m; path = common/Functions/cart/CartViewController.m; sourceTree = SOURCE_ROOT; };
 		7162A5121C58704600AB630E /* EditModelPriceViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EditModelPriceViewController.h; path = common/Functions/cart/EditModelPriceViewController.h; sourceTree = SOURCE_ROOT; };
 		7162A5131C58704600AB630E /* EditModelPriceViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = EditModelPriceViewController.m; path = common/Functions/cart/EditModelPriceViewController.m; sourceTree = SOURCE_ROOT; };
-		7162A5141C58704600AB630E /* ModelItemCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ModelItemCell.h; path = common/Functions/cart/ModelItemCell.h; sourceTree = SOURCE_ROOT; };
-		7162A5151C58704600AB630E /* ModelItemCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ModelItemCell.m; path = common/Functions/cart/ModelItemCell.m; sourceTree = SOURCE_ROOT; };
 		7162A51F1C58706C00AB630E /* CategoryCellSmall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CategoryCellSmall.h; path = common/Functions/category/CategoryCellSmall.h; sourceTree = SOURCE_ROOT; };
 		7162A5201C58706C00AB630E /* CategoryCellSmall.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CategoryCellSmall.m; path = common/Functions/category/CategoryCellSmall.m; sourceTree = SOURCE_ROOT; };
 		7162A5211C58706C00AB630E /* CategoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CategoryViewController.h; path = common/Functions/category/CategoryViewController.h; sourceTree = SOURCE_ROOT; };
@@ -978,28 +966,11 @@
 		3C88558E27E1D233005DC3FA /* upload */ = {
 			isa = PBXGroup;
 			children = (
-				3C88559027E1D233005DC3FA /* RAUploadOperation.m */,
-				3C88559127E1D233005DC3FA /* RAUploadManager.h */,
-				3C88559227E1D233005DC3FA /* RAUploadListViewController.m */,
-				3C88559427E1D233005DC3FA /* RAUploadOperation.h */,
-				3C88559527E1D233005DC3FA /* RAUploadManager.m */,
-				3C88559627E1D233005DC3FA /* RAUploadListViewController.h */,
 			);
 			name = upload;
 			path = ../../common/upload;
 			sourceTree = "<group>";
 		};
-		3C88559B27E1D293005DC3FA /* olo */ = {
-			isa = PBXGroup;
-			children = (
-				3C88559F27E1D2FA005DC3FA /* UploadCell.h */,
-				3C8855A027E1D2FA005DC3FA /* UploadCell.m */,
-				3C88559D27E1D29D005DC3FA /* UIView+Toast.h */,
-				3C88559C27E1D29D005DC3FA /* UIView+Toast.m */,
-			);
-			name = olo;
-			sourceTree = "<group>";
-		};
 		4254CCDB1FB1AB6600C8B4B6 /* Order Editor */ = {
 			isa = PBXGroup;
 			children = (
@@ -1383,7 +1354,6 @@
 		713F76AF1929F4A7006A7305 /* iSales-CONTRAST */ = {
 			isa = PBXGroup;
 			children = (
-				3C88559B27E1D293005DC3FA /* olo */,
 				3C88558E27E1D233005DC3FA /* upload */,
 				3C872A1F2797F1AD00BE1FC8 /* Scaner Order */,
 				71DF74311C5757C800F2789C /* CommonUI */,
@@ -1482,6 +1452,10 @@
 		7143E0C919414E4B00B2EB1A /* cartView */ = {
 			isa = PBXGroup;
 			children = (
+				3CA6DDC228E575FB003655FF /* ModelItemCell.h */,
+				3CA6DDC328E575FB003655FF /* ModelItemCell.m */,
+				3CA6DDBD28E54B72003655FF /* ContrastModelItemCell.h */,
+				3CA6DDBC28E54B72003655FF /* ContrastModelItemCell.m */,
 				7162A50C1C58704600AB630E /* BundleModelCell.h */,
 				7162A50D1C58704600AB630E /* BundleModelCell.m */,
 				7162A50E1C58704600AB630E /* BundleModelViewController.h */,
@@ -1490,8 +1464,6 @@
 				7162A5111C58704600AB630E /* CartViewController.m */,
 				7162A5121C58704600AB630E /* EditModelPriceViewController.h */,
 				7162A5131C58704600AB630E /* EditModelPriceViewController.m */,
-				7162A5141C58704600AB630E /* ModelItemCell.h */,
-				7162A5151C58704600AB630E /* ModelItemCell.m */,
 				712C40B71C731126000E6831 /* ItemNotesViewController.h */,
 				712C40B81C731126000E6831 /* ItemNotesViewController.m */,
 				712C40B41C7310F4000E6831 /* CartGeneralNotesViewController.h */,
@@ -2211,7 +2183,6 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				3C88559E27E1D29D005DC3FA /* UIView+Toast.m in Sources */,
 				7141DD531C57459B00F7DF59 /* qrspec.c in Sources */,
 				3C69618323C7156D0075172A /* WebViewController.m in Sources */,
 				71BF07081D2F3D2800981938 /* SyncControlPanelViewController.m in Sources */,
@@ -2291,7 +2262,6 @@
 				712AFEDF1DBA050200254965 /* TextDrawable.m in Sources */,
 				7162A5611C58724700AB630E /* CustomerInfoViewController.m in Sources */,
 				428980471E249339005F1BD8 /* JKLockController.m in Sources */,
-				3C88559827E1D233005DC3FA /* RAUploadOperation.m in Sources */,
 				7162A5731C58728D00AB630E /* DetailTopicCell.m in Sources */,
 				71BBA2421CEAEF0700C91DED /* unzip.c in Sources */,
 				7162A5AC1C58735900AB630E /* PortfolioViewController.m in Sources */,
@@ -2323,8 +2293,6 @@
 				3C51497F273E07D600F78617 /* EnumSelectAndSortCell.m in Sources */,
 				71D30A2D1CFC0EF8006F9477 /* DefaultImageButton.m in Sources */,
 				7162A5841C5872EF00AB630E /* HomeTableViewCellTopic.m in Sources */,
-				3C88559A27E1D233005DC3FA /* RAUploadManager.m in Sources */,
-				3C88559927E1D233005DC3FA /* RAUploadListViewController.m in Sources */,
 				7162A59F1C58733400AB630E /* OrderListViewController.m in Sources */,
 				4254CCDE1FB1AC2B00C8B4B6 /* RAOrderEditorViewController.m in Sources */,
 				712AFEE21DBA077F00254965 /* pdfCreator.m in Sources */,
@@ -2364,6 +2332,7 @@
 				3C514956273D097E00F78617 /* CommonEditorTableContainerView.m in Sources */,
 				7162A5E61C58781000AB630E /* iSalesNavigationController.m in Sources */,
 				7141DD631C5747CE00F7DF59 /* NSString+Base64.m in Sources */,
+				3CA6DDC428E575FB003655FF /* ModelItemCell.m in Sources */,
 				71E9F6BC1F8B52DD0052C78E /* NetworkUtils.m in Sources */,
 				7162A5C41C5873BB00AB630E /* ItemSearchViewController.m in Sources */,
 				7162A5481C58719D00AB630E /* RATreeView+TableViewDataSource.m in Sources */,
@@ -2381,6 +2350,7 @@
 				7162A5471C58719D00AB630E /* RATreeView+Private.m in Sources */,
 				3CDDB262273A59DF00681F78 /* TouchImageView.m in Sources */,
 				428980041E2490C1005F1BD8 /* NotificationNameCenter.m in Sources */,
+				3CA6DDBE28E54B72003655FF /* ContrastModelItemCell.m in Sources */,
 				3C51497E273E07D600F78617 /* EnumSelectAndSortViewController.m in Sources */,
 				4289802C1E2492D2005F1BD8 /* CategoryPriceViewController.m in Sources */,
 				71DF748D1C57608F00F2789C /* TouchLabel.m in Sources */,
@@ -2388,7 +2358,6 @@
 				3C514932273D092A00F78617 /* EnumSelectViewController.m in Sources */,
 				428980171E24924D005F1BD8 /* SortItemViewController.m in Sources */,
 				7162A5711C58728D00AB630E /* DetailImageCell.m in Sources */,
-				7162A51A1C58704600AB630E /* ModelItemCell.m in Sources */,
 				7141DD511C57459B00F7DF59 /* qrencode.c in Sources */,
 				7162A5451C58719D00AB630E /* RATreeView.m in Sources */,
 				3C514974273E074500F78617 /* CommonEditorCellEditor.m in Sources */,
@@ -2410,7 +2379,6 @@
 				3C514969273D0B1E00F78617 /* RADataProvider.m in Sources */,
 				7162A5721C58728D00AB630E /* DetailKVCell.m in Sources */,
 				7141DD501C57459B00F7DF59 /* QRCodeGenerator.m in Sources */,
-				3C8855A127E1D2FA005DC3FA /* UploadCell.m in Sources */,
 				715671331E10A0EF006324A0 /* RectDrawable.m in Sources */,
 				4289802B1E2492D2005F1BD8 /* CategoryPriceCell.m in Sources */,
 				7162A5DA1C5876E300AB630E /* AboutViewController.m in Sources */,

+ 1 - 1
RedAnt ERP Mobile/iSales-CONTRAST.xcodeproj/xcuserdata/ruizhang.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -7,7 +7,7 @@
 		<key>iSales-CONTRAST.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>5</integer>
+			<integer>1</integer>
 		</dict>
 		<key>iSales-USAI.xcscheme_^#shared#^_</key>
 		<dict>

+ 76 - 0
RedAnt ERP Mobile/iSales-CONTRAST/ContrastModelItemCell.h

@@ -0,0 +1,76 @@
+//
+//  CartItemCell.h
+//  RedAnt ERP Mobile
+//
+//  Created by Ray on 14-7-9.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+//#import "TouchLabel.h"
+#import "StrikethroughLabel.h"
+
+@class ContrastModelItemCell;
+//@protocol ModelItemCellDelegate <NSObject>
+//
+//-(void) returnQTY:(int)qty ;//indexPath :(NSIndexPath*) indexPath;
+//
+//@end
+@interface ContrastModelItemCell : UITableViewCell
+
+//@property (nonatomic, weak) id<ModelItemCellDelegate> delegate;
+
+@property (strong, nonatomic) IBOutlet UIButton *masterBtn;
+@property (nonatomic,strong) NSDictionary *master_items;
+
+@property (strong, nonatomic) IBOutlet UILabel *labelDescription;
+
+//@property (strong, nonatomic) IBOutlet UILabel *labelCurrency;
+@property (strong, nonatomic) IBOutlet UILabel *labelPrice;
+@property (strong, nonatomic) IBOutlet UITextField *editCount;
+@property (strong, nonatomic) IBOutlet UIButton *btnImage;
+@property (strong, nonatomic) IBOutlet UILabel *labelUnitPrice;
+@property (strong, nonatomic) IBOutlet UILabel *bundleLabel;
+@property (strong, nonatomic) NSDictionary* bundle_item;
+-(void) set_Count:(int) count;
+@property (strong, nonatomic) IBOutlet UIButton *bundleButton;
+@property (strong, nonatomic) IBOutlet UIStepper *stepper;
+
+-(void) init_Stepper:(int) step max:(int) max min:(int)min value:(int)value;
+@property (strong,nonatomic) NSString* cart_id;
+@property int pre_val;
+@property double unit_price;
+@property double discount;
+@property (strong, nonatomic) IBOutlet StrikethroughLabel *labelOldPrice;
+@property (strong, nonatomic) IBOutlet UILabel *labelDiscount;
+@property (strong, nonatomic) IBOutlet UILabel *labelMasterpack;
+
+//@property (strong,nonatomic) NSIndexPath* from;
+@property (strong, nonatomic) IBOutlet UILabel *labelNotes;
+@property (weak, nonatomic) IBOutlet UILabel *labelMpack;
+
+
+@property bool enable_longpress;
+@property bool noprice;
+@property (strong, nonatomic) IBOutlet UIImageView *img_checkmark;
+
+@property (strong, nonatomic) IBOutlet UILabel *labelNoSuchModel;
+@property (strong, nonatomic) IBOutlet UILabel *labelOutOfStock;
+
+@property (nonatomic , copy) void (^onReturnQTY)(int qty , NSDictionary* ext);
+
+@property (strong, nonatomic) IBOutlet UILabel *available_qty_label;
+@property (strong, nonatomic) IBOutlet UILabel *available_qty_value_label;
+
+@property (strong, nonatomic) IBOutlet UILabel *qty_Label; // wish list qty
+
+@property int totalchange;
+
+@property (nonatomic,copy) NSString *imageName;///<图片标识,若图片更改则标识更改,那么就重新加载图片
+
+-(void) cancel_setQTY;
+//@property (strong,nonatomic) NSString* last_edit;
+
+//@property int step;
+//@property int quantity;
+@end

+ 574 - 0
RedAnt ERP Mobile/iSales-CONTRAST/ContrastModelItemCell.m

@@ -0,0 +1,574 @@
+//
+//  CartItemCell.m
+//  RedAnt ERP Mobile
+//
+//  Created by Ray on 14-7-9.
+//  Copyright (c) 2014年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ContrastModelItemCell.h"
+#import "RANetwork.h"
+#import "EditModelPriceViewController.h"
+#import "RAUtils.h"
+#import "BundleModelViewController.h"
+#import "CartViewController.h"
+
+#if defined(BUILD_HOMER) || defined(BUILD_GATIT)
+
+#import "MasterModelViewController.h"
+
+#endif
+
+#define NUMBERS @"0123456789\n"
+@implementation ContrastModelItemCell
+
+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
+{
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    if (self) {
+        // Initialization code
+    }
+    return self;
+}
+
+-(void) init_Stepper:(int) step max:(int) max min:(int)min value:(int)value
+{
+    
+//    [self.stepper becomeFirstResponder];
+    if(self.stepper!=nil)
+    {
+        if(min<=0)
+            min=1;
+        if(step<=0)
+            step=1;
+        self.stepper.minimumValue= min;
+        
+        
+        
+        self.stepper.stepValue= step;
+        
+        self.stepper.value= value;
+        
+        self.pre_val = value;
+        
+        [self.stepper addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];
+        self.totalchange=0;
+        
+    }
+}
+- (IBAction)setpperChanged:(UIStepper *)sender {
+    
+    DebugLog(@"setpperChanged");
+    
+    int val_change=(int)sender.value-self.pre_val;
+    
+        _totalchange=_totalchange+val_change;
+    
+    
+//    
+//    if(val_change==(int)sender.stepValue)
+//    {
+//        
+//        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//            
+//            NSDictionary* cart_json = [iSalesNetwork cart_incresement:self.cart_id increse:true];
+//            
+//            dispatch_async(dispatch_get_main_queue(), ^{
+//                
+//                
+//                
+//                if([[cart_json valueForKey:@"result"] intValue]==2)
+//                {
+//                    if(self.onReturnQTY)
+//                        self.onReturnQTY(sender.value,cart_json);
+////                    
+////                    if (self.delegate && [self.delegate respondsToSelector:@selector(returnQTY:)]) {
+////                        [self.delegate returnQTY:sender.value ];
+//                   // }
+//                }
+//                else
+//                {
+//                    UIViewController* vc=[RAUtils getViewController :self];
+//                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+//                }
+//                
+//                
+//
+//                
+//            });
+//        });
+//        //increse;
+//    }
+//    else if(val_change==-(int)sender.stepValue)
+//    {
+//        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//            
+//            NSDictionary* cart_json = [iSalesNetwork cart_incresement:self.cart_id increse:false];
+//            
+//            dispatch_async(dispatch_get_main_queue(), ^{
+//                
+//                
+//                
+//                
+//                if([[cart_json valueForKey:@"result"] intValue]==2)
+//                {
+//                    if(self.onReturnQTY)
+//                        self.onReturnQTY(sender.value,cart_json);
+//                }
+//                else
+//                {
+//                    UIViewController* vc=[RAUtils getViewController :self];
+//                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+//                }
+//
+//                
+//            });
+//        });
+//        
+//    }
+//    else
+//    {
+//        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//            
+//            NSDictionary* cart_json = [iSalesNetwork cart_setQTY:self.cart_id value:sender.value];
+//            
+//            dispatch_async(dispatch_get_main_queue(), ^{
+//                
+//                if([[cart_json valueForKey:@"result"] intValue]==2)
+//                {
+//                    if(self.onReturnQTY)
+//                        self.onReturnQTY(sender.value,cart_json);
+////                    if (self.delegate && [self.delegate respondsToSelector:@selector(returnQTY:)]) {
+////                        [self.delegate returnQTY:sender.value ];
+////                    }
+//                }
+//                else
+//                {
+//                    UIViewController* vc=[RAUtils getViewController :self];
+//                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+//                }
+//                
+//
+//                
+//            });
+//        });
+//        
+//        //setvalue;
+//    }
+    self.pre_val = (int)sender.value;
+    
+    
+    [self cancel_setQTY];
+    [self performSelector:@selector(delayRun) withObject:nil afterDelay:0.8];
+    
+}
+
+-(void) cancel_setQTY
+{
+    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(delayRun) object:nil];
+}
+-(void) delayRun
+{
+//    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(calculate) object:nil];
+//    // 启动
+//    [thread start];
+    
+    [RANetwork request_update_cartqty:self.cart_id value:self.pre_val completionHandler:^(NSMutableDictionary *result) {
+        NSDictionary* cart_json =result;
+        self.totalchange=0;
+        if([[cart_json valueForKey:@"result"] intValue]==2)
+        {
+            if(self.onReturnQTY)
+                self.onReturnQTY(self.pre_val,cart_json);
+            //                    if (self.delegate && [self.delegate respondsToSelector:@selector(returnQTY:)]) {
+            //                        [self.delegate returnQTY:sender.value ];
+            //                    }
+        }
+        else
+        {
+            UIViewController* vc=[RAUtils getViewController :self];
+            [((CartViewController *)vc).itemListTable reloadData];
+            [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+        }
+        
+        
+        
+    }];
+    
+//            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//                NSDictionary* cart_json = [RANetwork cart_setQTY:self.cart_id value:self.pre_val];
+//
+//                dispatch_async(dispatch_get_main_queue(), ^{
+//                    self.totalchange=0;
+//                    if([[cart_json valueForKey:@"result"] intValue]==2)
+//                    {
+//                        if(self.onReturnQTY)
+//                            self.onReturnQTY(self.pre_val,cart_json);
+//    //                    if (self.delegate && [self.delegate respondsToSelector:@selector(returnQTY:)]) {
+//    //                        [self.delegate returnQTY:sender.value ];
+//    //                    }
+//                    }
+//                    else
+//                    {
+//                        UIViewController* vc=[RAUtils getViewController :self];
+//                        [((CartViewController *)vc).itemListTable reloadData];
+//                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+//                    }
+//
+//
+//
+//                });
+//            });
+    
+    
+}
+
+- (void)valueChanged:(UIStepper *)sender {
+    
+    
+    
+    self.editCount.text = [NSString stringWithFormat:@"%d",(int)sender.value ];
+    
+    [self set_Count:(int)sender.value ];
+    
+    
+    //
+    //    [celldelegate stepClicked:(int)sender.value];
+    //    -(void) stepClicked:(int) value;
+}
+-(void) set_Count:(int) count
+{
+    
+    self.stepper.value=count;
+    if(self.enable_longpress)
+    {
+      //  [self addGestureRecognizer: [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longTap:)]];
+    }
+    
+    double dprice=0;
+    if(self.bundle_item!=nil)
+    {
+        int citem=0;
+        
+        int bcount=[[self.bundle_item valueForKey:@"count"] intValue];
+        for(int bc=0;bc<bcount;bc++)
+        {
+            NSDictionary * bitem = [self.bundle_item objectForKey:[NSString stringWithFormat:@"item_%d",bc]];
+            int modulus= [[bitem valueForKey:@"modulus"] intValue];
+            citem+= modulus;
+            double uprice= [[bitem valueForKey:@"unit_price"]doubleValue];
+            dprice+= uprice*modulus;
+            
+        }
+        if(citem==1)
+                self.bundleLabel.text= [NSString stringWithFormat: @"%d bundle item with price of $ %.2f",citem,dprice ];
+        else
+            self.bundleLabel.text= [NSString stringWithFormat: @"%d bundle items with price of $ %.2f",citem,dprice ];
+        self.bundleButton.hidden = NO;
+        self.bundleLabel.hidden = NO;
+    }
+    else
+    {
+        self.bundleButton.hidden = YES;
+        self.bundleLabel.hidden = YES;
+    }
+    
+    //    self.labelUnitPrice.text =[NSString stringWithFormat:@"%.2f",self.unit_price];
+    
+    
+    
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    NSString* price = [NSString stringWithFormat:@"%.2f",(self.unit_price* (1.0-self.discount/100.0)+dprice)*count ];
+    if(appDelegate.can_see_price&&appDelegate.price_hidden==false)
+    {
+        
+    }
+    else
+    {
+        price=nil;
+    }
+    
+
+    if(self.noprice&&self.unit_price==0.0)
+        self.labelPrice.text =@"No Price";
+    else
+        self.labelPrice.text =price;
+    
+    self.editCount.text =[NSString stringWithFormat:@"%d",count];
+}
+//- (void)awakeFromNib
+//{
+//    // Initialization code
+//    
+//    
+//
+//}
+
+- (IBAction)masterBundleClick:(UIButton *)sender {
+    
+    
+    
+
+#if defined(BUILD_HOMER) || defined(BUILD_GATIT)
+    UIViewController* vc=[RAUtils getViewController :self.bundleButton];
+    MasterModelViewController *masterModelVC = [MasterModelViewController buildMasterModelViewController];
+    masterModelVC.content_data = self.master_items;
+    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:masterModelVC];
+    [vc presentViewController:nav animated:YES completion:nil];
+    
+#endif
+    
+}
+
+//-(UIViewController*) getViewController
+//{
+//    for (UIView* next = [self superview]; next; next = next.superview) {
+//        UIResponder* nextResponder = [next nextResponder];
+//        if ([nextResponder isKindOfClass:[UIViewController class]]) {
+//            return (UIViewController*)nextResponder;
+//        }
+//    }
+//    return nil;
+//    
+//}
+
+- (IBAction)OnClick_BundleDetail:(id)sender {
+    
+    UIViewController* vc=[RAUtils getViewController :self.bundleButton];
+    
+    
+    BundleModelViewController * bundleVC =[[UIStoryboard storyboardWithName:@"ERP_Mobile_Model" bundle:nil] instantiateViewControllerWithIdentifier:@"BundleModelViewController"];
+
+    bundleVC.content_data = self.bundle_item;
+    
+    UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:bundleVC] ;
+    
+    
+    
+    navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
+    [vc presentViewController:navi animated:YES completion:^{
+        
+        //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
+        
+        DebugLog(@"bundle present.........");
+        
+        //   self.btop = false;
+        //  <#code#>
+    }];
+    
+
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated
+{
+    [super setSelected:selected animated:animated];
+    
+    // Configure the view for the selected state
+}
+#pragma mark textField delegate
+
+- (BOOL)textFieldShouldReturn:(UITextField *)textField {
+    [textField resignFirstResponder];
+    return NO;
+}
+-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
+    
+    
+    DebugLog(@"text:%@",textField.text);
+    
+    
+  
+    NSCharacterSet *cs;
+    cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];
+    
+    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""];
+    
+    BOOL canChange = [string isEqualToString:filtered];
+    
+    
+    
+    
+    return canChange;
+}
+- (void)textFieldDidEndEditing:(UITextField *)textField
+{
+    
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    int qty = [textField.text intValue];
+    
+    if(qty==0)
+        qty=self.stepper.minimumValue;
+    
+#ifdef MPACK
+    if ((int)qty % (int)self.stepper.stepValue != 0) {
+        UIViewController* vc=[RAUtils getViewController :self];
+        [((CartViewController *)vc).itemListTable reloadData];
+        [RAUtils message_alert:[NSString stringWithFormat:@"Sold in quantities of %d",(int)(self.stepper.stepValue)] title:@"Change Model Count" controller:vc];
+        return;
+    }
+#endif
+    
+        
+        int c=qty;
+        
+        int m=c%(int)(self.stepper.stepValue);
+        if(m!=0&&appDelegate.alert_sold_in_quantities)
+        {
+            
+            
+            
+            UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:[NSString stringWithFormat:@"Sold in quantities of %d, Are you sure?",(int)(self.stepper.stepValue)] message:nil preferredStyle:UIAlertControllerStyleAlert];
+            //block代码块取代了delegate
+            
+            
+            
+            UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+                [self set_Count:qty];
+                
+                
+                
+                [RANetwork request_update_cartqty:self.cart_id value:qty completionHandler:^(NSMutableDictionary *result) {
+                    NSDictionary* cart_json =result;
+                    if([[cart_json valueForKey:@"result"] intValue]==2)
+                    {
+                        //                if (self.delegate && [self.delegate respondsToSelector:@selector(returnQTY:)]) {
+                        //                    [self.delegate returnQTY:qty];
+                        //                }
+                        
+                        if(self.onReturnQTY)
+                            self.onReturnQTY(qty,cart_json);
+                    }
+                    else
+                    {
+                        UIViewController* vc=[RAUtils getViewController :self];
+                        [((CartViewController *)vc).itemListTable reloadData];
+                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+                    }
+                    
+                    
+                    
+                }];
+                
+//                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//                    NSDictionary* cart_json = [RANetwork cart_setQTY:self.cart_id value:qty];
+//
+//                    dispatch_async(dispatch_get_main_queue(), ^{
+//
+//                        if([[cart_json valueForKey:@"result"] intValue]==2)
+//                        {
+//                            //                if (self.delegate && [self.delegate respondsToSelector:@selector(returnQTY:)]) {
+//                            //                    [self.delegate returnQTY:qty];
+//                            //                }
+//
+//                            if(self.onReturnQTY)
+//                                self.onReturnQTY(qty,cart_json);
+//                        }
+//                        else
+//                        {
+//                            UIViewController* vc=[RAUtils getViewController :self];
+//                            [((CartViewController *)vc).itemListTable reloadData];
+//                            [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+//                        }
+//
+//
+//
+//                    });
+//                });
+
+            }];
+            
+            UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+                DebugLog(@"No");
+                textField.text = [NSString stringWithFormat:@"%d",self.pre_val];
+            }];
+            [alertControl addAction:actionOne];
+            
+            [alertControl addAction:alertthree];
+            
+            //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+            
+            UIViewController *vc= [RAUtils getViewController:self];
+            [vc presentViewController:alertControl animated:YES completion:nil];
+            
+            
+            
+        }
+        else
+        {
+            [self set_Count:qty];
+            
+            [RANetwork request_update_cartqty:self.cart_id value:qty completionHandler:^(NSMutableDictionary *result) {
+                NSDictionary* cart_json =result;
+                if([[cart_json valueForKey:@"result"] intValue]==2)
+                {
+                    //                if (self.delegate && [self.delegate respondsToSelector:@selector(returnQTY:)]) {
+                    //                    [self.delegate returnQTY:qty];
+                    //                }
+                    
+                    if(self.onReturnQTY)
+                        self.onReturnQTY(qty,cart_json);
+                }
+                else
+                {
+                    UIViewController* vc=[RAUtils getViewController :self];
+                    [((CartViewController *)vc).itemListTable reloadData];
+                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+                }
+                
+                
+                
+            }];
+            
+//            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//                NSDictionary* cart_json = [RANetwork cart_setQTY:self.cart_id value:qty];
+//
+//                dispatch_async(dispatch_get_main_queue(), ^{
+//
+//                    if([[cart_json valueForKey:@"result"] intValue]==2)
+//                    {
+//                        //                if (self.delegate && [self.delegate respondsToSelector:@selector(returnQTY:)]) {
+//                        //                    [self.delegate returnQTY:qty];
+//                        //                }
+//
+//                        if(self.onReturnQTY)
+//                            self.onReturnQTY(qty,cart_json);
+//                    }
+//                    else
+//                    {
+//                        UIViewController* vc=[RAUtils getViewController :self];
+//                        [((CartViewController *)vc).itemListTable reloadData];
+//                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+//                    }
+//
+//
+//
+//                });
+//            });
+
+        }
+        
+    
+        
+    
+    
+    
+    
+
+}
+
+- (void)textFieldDidBeginEditing:(UITextField *)textField
+{
+    NSString* text = textField.text;
+    if(text.length==0)
+        text=@"0";
+    self.pre_val = [textField.text intValue];
+    
+   // self.last_edit = textField.text;
+}
+
+@end

+ 0 - 41
RedAnt ERP Mobile/iSales-NPD.xcodeproj/project.pbxproj

@@ -9,11 +9,7 @@
 /* Begin PBXBuildFile section */
 		3C2F99BB237BE1880000808F /* PortfolioListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C2F99BA237BE1880000808F /* PortfolioListTableViewCell.m */; };
 		3C2F99BF237BE7190000808F /* NPD_Mobile.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3C2F99BE237BE7190000808F /* NPD_Mobile.storyboard */; };
-		3C3E26B027CDF83300EF6F5C /* RAUploadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C3E26A827CDF83300EF6F5C /* RAUploadOperation.m */; };
-		3C3E26B127CDF83300EF6F5C /* RAUploadListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C3E26AA27CDF83300EF6F5C /* RAUploadListViewController.m */; };
-		3C3E26B227CDF83300EF6F5C /* RAUploadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C3E26AD27CDF83300EF6F5C /* RAUploadManager.m */; };
 		3C3E26B527CDF87000EF6F5C /* UIView+Toast.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C3E26B327CDF87000EF6F5C /* UIView+Toast.m */; };
-		3C3E26B827CDF8A600EF6F5C /* UploadCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C3E26B727CDF8A600EF6F5C /* UploadCell.m */; };
 		3C57169923CEA4120002E9FC /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3C57169823CEA4120002E9FC /* Launch Screen.storyboard */; };
 		3C6831A72397884A00AD5BD7 /* iPadCommonEditorCellSignature.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3C68319C2397884A00AD5BD7 /* iPadCommonEditorCellSignature.xib */; };
 		3C6831A82397884A00AD5BD7 /* iPadCommonEditorCellTextView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3C68319D2397884A00AD5BD7 /* iPadCommonEditorCellTextView.xib */; };
@@ -317,16 +313,8 @@
 		3C2F99B9237BE1880000808F /* PortfolioListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PortfolioListTableViewCell.h; path = common/Functions/portfolio/PortfolioListTableViewCell.h; sourceTree = SOURCE_ROOT; };
 		3C2F99BA237BE1880000808F /* PortfolioListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PortfolioListTableViewCell.m; path = common/Functions/portfolio/PortfolioListTableViewCell.m; sourceTree = SOURCE_ROOT; };
 		3C2F99BE237BE7190000808F /* NPD_Mobile.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = NPD_Mobile.storyboard; sourceTree = "<group>"; };
-		3C3E26A827CDF83300EF6F5C /* RAUploadOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAUploadOperation.m; sourceTree = "<group>"; };
-		3C3E26A927CDF83300EF6F5C /* RAUploadManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAUploadManager.h; sourceTree = "<group>"; };
-		3C3E26AA27CDF83300EF6F5C /* RAUploadListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAUploadListViewController.m; sourceTree = "<group>"; };
-		3C3E26AC27CDF83300EF6F5C /* RAUploadOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAUploadOperation.h; sourceTree = "<group>"; };
-		3C3E26AD27CDF83300EF6F5C /* RAUploadManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAUploadManager.m; sourceTree = "<group>"; };
-		3C3E26AE27CDF83300EF6F5C /* RAUploadListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAUploadListViewController.h; sourceTree = "<group>"; };
 		3C3E26B327CDF87000EF6F5C /* UIView+Toast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIView+Toast.m"; path = "../../common/customUI/UIView+Toast.m"; sourceTree = "<group>"; };
 		3C3E26B427CDF87000EF6F5C /* UIView+Toast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIView+Toast.h"; path = "../../common/customUI/UIView+Toast.h"; sourceTree = "<group>"; };
-		3C3E26B627CDF8A600EF6F5C /* UploadCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UploadCell.h; path = "iSales-USAI/UploadCell.h"; sourceTree = SOURCE_ROOT; };
-		3C3E26B727CDF8A600EF6F5C /* UploadCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UploadCell.m; path = "iSales-USAI/UploadCell.m"; sourceTree = SOURCE_ROOT; };
 		3C57169823CEA4120002E9FC /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = "<group>"; };
 		3C68319C2397884A00AD5BD7 /* iPadCommonEditorCellSignature.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = iPadCommonEditorCellSignature.xib; path = ../../common/customUI/CommonEditoriPad/iPadCommonEditorCellSignature.xib; sourceTree = "<group>"; };
 		3C68319D2397884A00AD5BD7 /* iPadCommonEditorCellTextView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = iPadCommonEditorCellTextView.xib; path = ../../common/customUI/CommonEditoriPad/iPadCommonEditorCellTextView.xib; sourceTree = "<group>"; };
@@ -897,20 +885,6 @@
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
-		3C3E26A627CDF83300EF6F5C /* upload */ = {
-			isa = PBXGroup;
-			children = (
-				3C3E26A827CDF83300EF6F5C /* RAUploadOperation.m */,
-				3C3E26A927CDF83300EF6F5C /* RAUploadManager.h */,
-				3C3E26AA27CDF83300EF6F5C /* RAUploadListViewController.m */,
-				3C3E26AC27CDF83300EF6F5C /* RAUploadOperation.h */,
-				3C3E26AD27CDF83300EF6F5C /* RAUploadManager.m */,
-				3C3E26AE27CDF83300EF6F5C /* RAUploadListViewController.h */,
-			);
-			name = upload;
-			path = ../../common/upload;
-			sourceTree = "<group>";
-		};
 		3CA2109D2761DA66000FC2F3 /* PhotoList */ = {
 			isa = PBXGroup;
 			children = (
@@ -975,13 +949,6 @@
 			path = ../../common/HUD;
 			sourceTree = "<group>";
 		};
-		3CF8CEB827A0D4740094A6CD /* SCAN_ORDER */ = {
-			isa = PBXGroup;
-			children = (
-			);
-			name = SCAN_ORDER;
-			sourceTree = "<group>";
-		};
 		4254CCDB1FB1AB6600C8B4B6 /* Order Editor */ = {
 			isa = PBXGroup;
 			children = (
@@ -1365,8 +1332,6 @@
 		713F76AF1929F4A7006A7305 /* iSales-NPD */ = {
 			isa = PBXGroup;
 			children = (
-				3C3E26A627CDF83300EF6F5C /* upload */,
-				3CF8CEB827A0D4740094A6CD /* SCAN_ORDER */,
 				71DF742C1C57567800F2789C /* NPD */,
 				712AFEE31DBDAEA000254965 /* PDFResource */,
 				716387C71953CDB4006E65E6 /* utils */,
@@ -1946,8 +1911,6 @@
 		71DF742C1C57567800F2789C /* NPD */ = {
 			isa = PBXGroup;
 			children = (
-				3C3E26B627CDF8A600EF6F5C /* UploadCell.h */,
-				3C3E26B727CDF8A600EF6F5C /* UploadCell.m */,
 				3C3E26B427CDF87000EF6F5C /* UIView+Toast.h */,
 				3C3E26B327CDF87000EF6F5C /* UIView+Toast.m */,
 				719562351CF5733500C74A49 /* appearance */,
@@ -2206,7 +2169,6 @@
 				712AFED81DBA050200254965 /* GridDrawable.m in Sources */,
 				424A02D11FFB3A0B0088DC56 /* RABackOrderSubmitAlertController.m in Sources */,
 				7162A5C11C5873BB00AB630E /* FilterCellCadedate.m in Sources */,
-				3C3E26B827CDF8A600EF6F5C /* UploadCell.m in Sources */,
 				42BEF3581E89FE1200632AB6 /* GTMNSData+zlib.m in Sources */,
 				3CA210B12761DAAC000FC2F3 /* RASingleton.m in Sources */,
 				71DF742B1C57560600F2789C /* Reachability.m in Sources */,
@@ -2234,7 +2196,6 @@
 				71DF748B1C57608F00F2789C /* SimpleGrid.m in Sources */,
 				42BEF3621E8A005800632AB6 /* GoogleAnalyst.m in Sources */,
 				7162A5171C58704600AB630E /* BundleModelViewController.m in Sources */,
-				3C3E26B127CDF83300EF6F5C /* RAUploadListViewController.m in Sources */,
 				7162A5411C58719D00AB630E /* RATreeNode.m in Sources */,
 				7162A5251C58706C00AB630E /* CategoryCellSmall.m in Sources */,
 				712AFEDA1DBA050200254965 /* ImageDrawable.m in Sources */,
@@ -2256,7 +2217,6 @@
 				3CA210AE2761DA8B000FC2F3 /* DefaultTableHeaderView.m in Sources */,
 				7162A5DF1C5876E300AB630E /* ScannerSettingViewController.m in Sources */,
 				3CA210F02761DC38000FC2F3 /* CommonEditorViewController.m in Sources */,
-				3C3E26B227CDF83300EF6F5C /* RAUploadManager.m in Sources */,
 				71DF74831C57608F00F2789C /* ImageScrollerView.m in Sources */,
 				71DF74871C57608F00F2789C /* NIDropDown.m in Sources */,
 				3CA210FF2761DC95000FC2F3 /* DatePickerViewController.m in Sources */,
@@ -2307,7 +2267,6 @@
 				7162A54B1C58719D00AB630E /* RAViewController.m in Sources */,
 				71BBA2411CEAEF0700C91DED /* mztools.c in Sources */,
 				7162A59C1C58733400AB630E /* OrderDetailPriceCell.m in Sources */,
-				3C3E26B027CDF83300EF6F5C /* RAUploadOperation.m in Sources */,
 				715850461CF6F0E500856B20 /* DefaultAppearance.m in Sources */,
 				4295AE1C1FE74D46007BE365 /* CommonEditorAutoCompleteView.m in Sources */,
 				7162A5B61C58738600AB630E /* SCShapeView.m in Sources */,

+ 0 - 20
RedAnt ERP Mobile/iSales-TRADESHOW.xcodeproj/project.pbxproj

@@ -31,8 +31,6 @@
 		3C69618A23C718150075172A /* RAPDFViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C69618523C718140075172A /* RAPDFViewController.m */; };
 		3C69618B23C718150075172A /* WebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C69618623C718140075172A /* WebViewController.m */; };
 		3C69618C23C718150075172A /* wkweb.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3C69618923C718150075172A /* wkweb.storyboard */; };
-		3C775816289227B100064C39 /* RAUploadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C775812289227B000064C39 /* RAUploadManager.m */; };
-		3C775817289227B100064C39 /* RAUploadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C775815289227B100064C39 /* RAUploadOperation.m */; };
 		3C7E5A84237BDAA6006D0105 /* PortfolioListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C7E5A83237BDAA6006D0105 /* PortfolioListViewController.m */; };
 		3C9FFA20274795690067830C /* RASingleton.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C9FFA1F274795690067830C /* RASingleton.m */; };
 		3C9FFA26274795C90067830C /* RAUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C9FFA24274795C90067830C /* RAUtils.m */; };
@@ -342,10 +340,6 @@
 		3C69618723C718140075172A /* WebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebViewController.h; path = "../../common/WK PDF+Web/WebViewController.h"; sourceTree = "<group>"; };
 		3C69618823C718150075172A /* RAPDFViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAPDFViewController.h; path = "../../common/WK PDF+Web/RAPDFViewController.h"; sourceTree = "<group>"; };
 		3C69618923C718150075172A /* wkweb.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = wkweb.storyboard; path = "../../common/WK PDF+Web/wkweb.storyboard"; sourceTree = "<group>"; };
-		3C775812289227B000064C39 /* RAUploadManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RAUploadManager.m; path = ../../common/upload/RAUploadManager.m; sourceTree = "<group>"; };
-		3C775813289227B000064C39 /* RAUploadManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAUploadManager.h; path = ../../common/upload/RAUploadManager.h; sourceTree = "<group>"; };
-		3C775814289227B000064C39 /* RAUploadOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAUploadOperation.h; path = ../../common/upload/RAUploadOperation.h; sourceTree = "<group>"; };
-		3C775815289227B100064C39 /* RAUploadOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RAUploadOperation.m; path = ../../common/upload/RAUploadOperation.m; sourceTree = "<group>"; };
 		3C7E5A82237BDAA6006D0105 /* PortfolioListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PortfolioListViewController.h; path = common/Functions/portfolio/PortfolioListViewController.h; sourceTree = SOURCE_ROOT; };
 		3C7E5A83237BDAA6006D0105 /* PortfolioListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PortfolioListViewController.m; path = common/Functions/portfolio/PortfolioListViewController.m; sourceTree = SOURCE_ROOT; };
 		3C9FFA1E274795690067830C /* RASingleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RASingleton.h; path = common/RASingleton.h; sourceTree = SOURCE_ROOT; };
@@ -1557,7 +1551,6 @@
 				712AFEC41DBA044C00254965 /* pdfCreator */,
 				71BBA2171CEAC10200C91DED /* zip */,
 				71B1250B1C55BD4600118904 /* QRCODE */,
-				71E9F6BD1F8B53AB0052C78E /* upload */,
 				71BE066E1BA1607400FA6544 /* AES */,
 				71DF74291C57560600F2789C /* Reachability.h */,
 				71DF742A1C57560600F2789C /* Reachability.m */,
@@ -1998,17 +1991,6 @@
 			name = CommonEditor;
 			sourceTree = "<group>";
 		};
-		71E9F6BD1F8B53AB0052C78E /* upload */ = {
-			isa = PBXGroup;
-			children = (
-				3C775813289227B000064C39 /* RAUploadManager.h */,
-				3C775812289227B000064C39 /* RAUploadManager.m */,
-				3C775814289227B000064C39 /* RAUploadOperation.h */,
-				3C775815289227B100064C39 /* RAUploadOperation.m */,
-			);
-			name = upload;
-			sourceTree = "<group>";
-		};
 		71F731FC192F395000F2CF76 /* AutoScrollImage */ = {
 			isa = PBXGroup;
 			children = (
@@ -2188,7 +2170,6 @@
 				7162A5851C5872EF00AB630E /* HomeViewController.m in Sources */,
 				7162A5E31C5877CE00AB630E /* WatchListViewController.m in Sources */,
 				715001FF1D114D9100F5927F /* BundleDetailButton.m in Sources */,
-				3C775817289227B100064C39 /* RAUploadOperation.m in Sources */,
 				3C9FFA52274797460067830C /* RTLabel.m in Sources */,
 				7162A5421C58719D00AB630E /* RATreeNodeCollectionController.m in Sources */,
 				7162A5DE1C5876E300AB630E /* RetrievePassViewController.m in Sources */,
@@ -2220,7 +2201,6 @@
 				7162A5161C58704600AB630E /* BundleModelCell.m in Sources */,
 				42DC12F11F0CD98E00A4C011 /* OrderDetailPickInfoCell.m in Sources */,
 				7141DD621C5747CE00F7DF59 /* NSData+CommonCrypto.m in Sources */,
-				3C775816289227B100064C39 /* RAUploadManager.m in Sources */,
 				712AFED71DBA050200254965 /* BasicDrawable.m in Sources */,
 				71DF74891C57608F00F2789C /* RadioButton.m in Sources */,
 				7162A5DF1C5876E300AB630E /* ScannerSettingViewController.m in Sources */,

+ 0 - 16
RedAnt ERP Mobile/iSales-UNITED WAVER.xcodeproj/project.pbxproj

@@ -910,13 +910,6 @@
 			path = ../../common/HUD;
 			sourceTree = "<group>";
 		};
-		3C7D31ED27882722005EB380 /* OLO */ = {
-			isa = PBXGroup;
-			children = (
-			);
-			name = OLO;
-			sourceTree = "<group>";
-		};
 		3C9FFA29274796620067830C /* PhotoList */ = {
 			isa = PBXGroup;
 			children = (
@@ -1340,7 +1333,6 @@
 		713F76AF1929F4A7006A7305 /* iSales-UWAVER */ = {
 			isa = PBXGroup;
 			children = (
-				3C7D31ED27882722005EB380 /* OLO */,
 				71DF742C1C57567800F2789C /* UWAVER */,
 				712AFEE31DBDAEA000254965 /* PDFResource */,
 				716387C71953CDB4006E65E6 /* utils */,
@@ -1564,7 +1556,6 @@
 				712AFEC41DBA044C00254965 /* pdfCreator */,
 				71BBA2171CEAC10200C91DED /* zip */,
 				71B1250B1C55BD4600118904 /* QRCODE */,
-				71E9F6BD1F8B53AB0052C78E /* upload */,
 				71BE066E1BA1607400FA6544 /* AES */,
 				71DF74291C57560600F2789C /* Reachability.h */,
 				71DF742A1C57560600F2789C /* Reachability.m */,
@@ -2007,13 +1998,6 @@
 			name = CommonEditor;
 			sourceTree = "<group>";
 		};
-		71E9F6BD1F8B53AB0052C78E /* upload */ = {
-			isa = PBXGroup;
-			children = (
-			);
-			name = upload;
-			sourceTree = "<group>";
-		};
 		71F731FC192F395000F2CF76 /* AutoScrollImage */ = {
 			isa = PBXGroup;
 			children = (

+ 0 - 55
RedAnt ERP Mobile/iSales-USAI.xcodeproj/project.pbxproj

@@ -38,11 +38,6 @@
 		3C514994273E091500F78617 /* VideoPreviewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C51498E273E091500F78617 /* VideoPreviewCell.m */; };
 		3C514995273E091500F78617 /* PhotoPreviewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C514990273E091500F78617 /* PhotoPreviewCell.m */; };
 		3C514999273E097C00F78617 /* RAProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C514998273E097B00F78617 /* RAProgressHUD.m */; };
-		3C51E7CB27B261EC00E61163 /* RAUploadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C51E7C327B261EC00E61163 /* RAUploadOperation.m */; };
-		3C51E7CC27B261EC00E61163 /* RAUploadListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C51E7C527B261EC00E61163 /* RAUploadListViewController.m */; };
-		3C51E7CD27B261EC00E61163 /* RAUploadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C51E7C827B261EC00E61163 /* RAUploadManager.m */; };
-		3C51E7D027B2623700E61163 /* UploadCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C51E7CF27B2623700E61163 /* UploadCell.m */; };
-		3C51E7D327B2628900E61163 /* UIView+Toast.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C51E7D227B2628900E61163 /* UIView+Toast.m */; };
 		3C68314D239607B500AD5BD7 /* ytplayer.html in Resources */ = {isa = PBXBuildFile; fileRef = 3C68314A239607B500AD5BD7 /* ytplayer.html */; };
 		3C68314E239607B500AD5BD7 /* RAYTPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C68314B239607B500AD5BD7 /* RAYTPlayer.m */; };
 		3C6831562396082800AD5BD7 /* ERP_Mobile_Discard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3C68314F2396082700AD5BD7 /* ERP_Mobile_Discard.storyboard */; };
@@ -67,8 +62,6 @@
 		3C69618323C7156D0075172A /* WebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C69617F23C7156D0075172A /* WebViewController.m */; };
 		3C69618423C7156D0075172A /* wkweb.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3C69618023C7156D0075172A /* wkweb.storyboard */; };
 		3C7E5A8E237BDB0C006D0105 /* PortfolioListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C7E5A8C237BDB0C006D0105 /* PortfolioListViewController.m */; };
-		3C872A1E27955CF300BE1FC8 /* scan_cart.json in Resources */ = {isa = PBXBuildFile; fileRef = 3C872A1D27955CF300BE1FC8 /* scan_cart.json */; };
-		3C872A262797FE7C00BE1FC8 /* scan_order.json in Resources */ = {isa = PBXBuildFile; fileRef = 3C872A252797FE7C00BE1FC8 /* scan_order.json */; };
 		3CC1122B279163F4004ACA57 /* offline_order_new_contact.json in Resources */ = {isa = PBXBuildFile; fileRef = 3CC1122A279163F4004ACA57 /* offline_order_new_contact.json */; };
 		3CDDB25C273A564200681F78 /* DefaultTableHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CDDB25A273A564200681F78 /* DefaultTableHeaderView.m */; };
 		3CDDB262273A59DF00681F78 /* TouchImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CDDB260273A59DF00681F78 /* TouchImageView.m */; };
@@ -378,16 +371,6 @@
 		3C514997273E097B00F78617 /* RAProgressHUD.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAProgressHUD.h; sourceTree = "<group>"; };
 		3C514998273E097B00F78617 /* RAProgressHUD.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAProgressHUD.m; sourceTree = "<group>"; };
 		3C51499A273E0B6400F78617 /* common_const.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = common_const.h; path = ../../common/common_const.h; sourceTree = "<group>"; };
-		3C51E7C327B261EC00E61163 /* RAUploadOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAUploadOperation.m; sourceTree = "<group>"; };
-		3C51E7C427B261EC00E61163 /* RAUploadManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAUploadManager.h; sourceTree = "<group>"; };
-		3C51E7C527B261EC00E61163 /* RAUploadListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAUploadListViewController.m; sourceTree = "<group>"; };
-		3C51E7C727B261EC00E61163 /* RAUploadOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAUploadOperation.h; sourceTree = "<group>"; };
-		3C51E7C827B261EC00E61163 /* RAUploadManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAUploadManager.m; sourceTree = "<group>"; };
-		3C51E7C927B261EC00E61163 /* RAUploadListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAUploadListViewController.h; sourceTree = "<group>"; };
-		3C51E7CE27B2623700E61163 /* UploadCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UploadCell.h; sourceTree = "<group>"; };
-		3C51E7CF27B2623700E61163 /* UploadCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UploadCell.m; sourceTree = "<group>"; };
-		3C51E7D127B2628900E61163 /* UIView+Toast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIView+Toast.h"; path = "../../common/customUI/UIView+Toast.h"; sourceTree = "<group>"; };
-		3C51E7D227B2628900E61163 /* UIView+Toast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIView+Toast.m"; path = "../../common/customUI/UIView+Toast.m"; sourceTree = "<group>"; };
 		3C68314A239607B500AD5BD7 /* ytplayer.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = ytplayer.html; path = ../../common/Youtube/ytplayer.html; sourceTree = "<group>"; };
 		3C68314B239607B500AD5BD7 /* RAYTPlayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RAYTPlayer.m; path = ../../common/Youtube/RAYTPlayer.m; sourceTree = "<group>"; };
 		3C68314C239607B500AD5BD7 /* RAYTPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAYTPlayer.h; path = ../../common/Youtube/RAYTPlayer.h; sourceTree = "<group>"; };
@@ -416,8 +399,6 @@
 		3C69618123C7156D0075172A /* WebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebViewController.h; path = "../../common/WK PDF+Web/WebViewController.h"; sourceTree = "<group>"; };
 		3C7E5A8C237BDB0C006D0105 /* PortfolioListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PortfolioListViewController.m; path = common/Functions/portfolio/PortfolioListViewController.m; sourceTree = SOURCE_ROOT; };
 		3C7E5A8D237BDB0C006D0105 /* PortfolioListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PortfolioListViewController.h; path = common/Functions/portfolio/PortfolioListViewController.h; sourceTree = SOURCE_ROOT; };
-		3C872A1D27955CF300BE1FC8 /* scan_cart.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = scan_cart.json; path = common/Functions/OLO/scan_cart.json; sourceTree = SOURCE_ROOT; };
-		3C872A252797FE7C00BE1FC8 /* scan_order.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = scan_order.json; path = common/Functions/OLO/scan_order.json; sourceTree = SOURCE_ROOT; };
 		3CC1122A279163F4004ACA57 /* offline_order_new_contact.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = offline_order_new_contact.json; path = common/Functions/contact/offline_order_new_contact.json; sourceTree = SOURCE_ROOT; };
 		3CDDB25A273A564200681F78 /* DefaultTableHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DefaultTableHeaderView.m; path = ../../common/customUI/commoneditor/DefaultTableHeaderView.m; sourceTree = "<group>"; };
 		3CDDB25B273A564200681F78 /* DefaultTableHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DefaultTableHeaderView.h; path = ../../common/customUI/commoneditor/DefaultTableHeaderView.h; sourceTree = "<group>"; };
@@ -968,34 +949,6 @@
 			path = ../../common/HUD;
 			sourceTree = "<group>";
 		};
-		3C51E7C127B261EC00E61163 /* upload */ = {
-			isa = PBXGroup;
-			children = (
-				3C51E7C327B261EC00E61163 /* RAUploadOperation.m */,
-				3C51E7C427B261EC00E61163 /* RAUploadManager.h */,
-				3C51E7C527B261EC00E61163 /* RAUploadListViewController.m */,
-				3C51E7C727B261EC00E61163 /* RAUploadOperation.h */,
-				3C51E7C827B261EC00E61163 /* RAUploadManager.m */,
-				3C51E7C927B261EC00E61163 /* RAUploadListViewController.h */,
-			);
-			name = upload;
-			path = ../../common/upload;
-			sourceTree = "<group>";
-		};
-		3C7D31F127882A5F005EB380 /* OLO */ = {
-			isa = PBXGroup;
-			children = (
-				3C51E7D127B2628900E61163 /* UIView+Toast.h */,
-				3C51E7D227B2628900E61163 /* UIView+Toast.m */,
-				3C51E7C127B261EC00E61163 /* upload */,
-				3C872A1D27955CF300BE1FC8 /* scan_cart.json */,
-				3C872A252797FE7C00BE1FC8 /* scan_order.json */,
-				3C51E7CE27B2623700E61163 /* UploadCell.h */,
-				3C51E7CF27B2623700E61163 /* UploadCell.m */,
-			);
-			name = OLO;
-			sourceTree = "<group>";
-		};
 		4254CCDB1FB1AB6600C8B4B6 /* Order Editor */ = {
 			isa = PBXGroup;
 			children = (
@@ -1379,7 +1332,6 @@
 		713F76AF1929F4A7006A7305 /* iSales-USAI */ = {
 			isa = PBXGroup;
 			children = (
-				3C7D31F127882A5F005EB380 /* OLO */,
 				71DF742C1C57567800F2789C /* USAI */,
 				712AFEE31DBDAEA000254965 /* PDFResource */,
 				716387C71953CDB4006E65E6 /* utils */,
@@ -2139,7 +2091,6 @@
 				7143E228202FD2CA00451903 /* portfolio_2x3.json in Resources */,
 				713F76C21929F4A7006A7305 /* Images.xcassets in Resources */,
 				3C6831572396082800AD5BD7 /* ERP_Mobile_Cart.storyboard in Resources */,
-				3C872A262797FE7C00BE1FC8 /* scan_order.json in Resources */,
 				3C6831592396082800AD5BD7 /* ERP_Mobile_Search.storyboard in Resources */,
 				3C514992273E091500F78617 /* PhotoList.storyboard in Resources */,
 				42E489611EE63F4E007256A0 /* more_color_64.png in Resources */,
@@ -2169,7 +2120,6 @@
 				7141DD3D1C5726B700F7DF59 /* softScanBeep.wav in Resources */,
 				3C68316F2396094200AD5BD7 /* iPadCommonEditorCellModel.xib in Resources */,
 				4295AE1D1FE74D46007BE365 /* CommonEditorAutoCompleteView.xib in Resources */,
-				3C872A1E27955CF300BE1FC8 /* scan_cart.json in Resources */,
 				7141DD341C57269B00F7DF59 /* include in Resources */,
 				7141DD601C5747CE00F7DF59 /* LICENSE in Resources */,
 				3C68314D239607B500AD5BD7 /* ytplayer.html in Resources */,
@@ -2220,7 +2170,6 @@
 				714037052164707E0029B10F /* MainHeaderViewColorPanel.m in Sources */,
 				712AFEDC1DBA050200254965 /* PDFDrawable.m in Sources */,
 				7195623C1CF57D1800C74A49 /* CategoryHeaderView.m in Sources */,
-				3C51E7D327B2628900E61163 /* UIView+Toast.m in Sources */,
 				712AFED81DBA050200254965 /* GridDrawable.m in Sources */,
 				424A02D11FFB3A0B0088DC56 /* RABackOrderSubmitAlertController.m in Sources */,
 				7162A5C11C5873BB00AB630E /* FilterCellCadedate.m in Sources */,
@@ -2231,7 +2180,6 @@
 				71BBA2271CEAC16000C91DED /* ZipArchive.mm in Sources */,
 				7162A5491C58719D00AB630E /* RATreeView+TableViewDelegate.m in Sources */,
 				3C514950273D095900F78617 /* CommonEditorCellModel.m in Sources */,
-				3C51E7CC27B261EC00E61163 /* RAUploadListViewController.m in Sources */,
 				428980451E249339005F1BD8 /* JKDotView.m in Sources */,
 				7162A5B41C58738600AB630E /* ScannerControllerView.m in Sources */,
 				7162A5831C5872EF00AB630E /* HomeTableViewCellSlide.m in Sources */,
@@ -2369,7 +2317,6 @@
 				712BABF31C897E3A0007466B /* CategorySearchFilterViewController.m in Sources */,
 				71DF74981C57614C00F2789C /* PhotoStackViewController.m in Sources */,
 				428980151E24924D005F1BD8 /* SortButton.m in Sources */,
-				3C51E7CB27B261EC00E61163 /* RAUploadOperation.m in Sources */,
 				3C514980273E07D600F78617 /* EnumModel.m in Sources */,
 				7162A59A1C58733400AB630E /* OrderDetailInfoCell.m in Sources */,
 				7162A5471C58719D00AB630E /* RATreeView+Private.m in Sources */,
@@ -2404,7 +2351,6 @@
 				7162A5721C58728D00AB630E /* DetailKVCell.m in Sources */,
 				7141DD501C57459B00F7DF59 /* QRCodeGenerator.m in Sources */,
 				715671331E10A0EF006324A0 /* RectDrawable.m in Sources */,
-				3C51E7D027B2623700E61163 /* UploadCell.m in Sources */,
 				4289802B1E2492D2005F1BD8 /* CategoryPriceCell.m in Sources */,
 				7162A5DA1C5876E300AB630E /* AboutViewController.m in Sources */,
 				7141DD4E1C57459B00F7DF59 /* bitstream.c in Sources */,
@@ -2420,7 +2366,6 @@
 				7162A50A1C586FC100AB630E /* NSTimer+Addition.m in Sources */,
 				3C514949273D095900F78617 /* CommonEditorCellEnum.m in Sources */,
 				712AFED91DBA050200254965 /* GroupDrawable.m in Sources */,
-				3C51E7CD27B261EC00E61163 /* RAUploadManager.m in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

+ 12 - 3
common/customUI/CommonEditoriPad/iPadCommonEditorCellModel.xib

@@ -1,9 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21225" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
     <device id="ipad9_7" orientation="portrait" layout="fullscreen" appearance="light"/>
     <dependencies>
-        <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21207"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -103,6 +102,12 @@
                         <color key="textColor" red="1" green="0.14913141730000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <nil key="highlightedColor"/>
                     </label>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Mpack:9999" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ja9-Ui-f2b">
+                        <rect key="frame" x="462" y="106" width="140.5" height="21"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                        <nil key="textColor"/>
+                        <nil key="highlightedColor"/>
+                    </label>
                 </subviews>
                 <constraints>
                     <constraint firstItem="N4y-kV-Abh" firstAttribute="baseline" secondItem="cdV-EN-AC5" secondAttribute="firstBaseline" id="0O8-Hl-JaX"/>
@@ -121,11 +126,13 @@
                     <constraint firstAttribute="trailing" secondItem="31Q-hs-9l0" secondAttribute="trailing" constant="22" id="Nnc-De-W9Q"/>
                     <constraint firstItem="MWP-U1-4gi" firstAttribute="baseline" secondItem="jXY-8A-c0T" secondAttribute="baseline" id="OeU-yU-nm3"/>
                     <constraint firstAttribute="bottomMargin" secondItem="N4y-kV-Abh" secondAttribute="bottom" constant="2" id="OjB-KP-CUZ"/>
+                    <constraint firstItem="Ja9-Ui-f2b" firstAttribute="leading" secondItem="DiR-zl-kj1" secondAttribute="leading" id="OuN-R3-Kcz"/>
                     <constraint firstItem="N4y-kV-Abh" firstAttribute="top" secondItem="Qde-5C-KXh" secondAttribute="bottom" constant="10" id="PcC-6b-dya"/>
                     <constraint firstItem="hlq-ia-5c5" firstAttribute="leading" secondItem="eSO-cn-6Wf" secondAttribute="leading" constant="20" id="QPG-zA-u3c"/>
                     <constraint firstAttribute="trailing" secondItem="Qde-5C-KXh" secondAttribute="trailing" constant="22" id="Tvt-Ho-K1B"/>
                     <constraint firstItem="GqP-L3-Ygz" firstAttribute="centerX" secondItem="eSO-cn-6Wf" secondAttribute="centerX" id="UAK-pn-JQi"/>
                     <constraint firstItem="cdV-EN-AC5" firstAttribute="top" secondItem="4Eu-9D-ElM" secondAttribute="bottom" constant="6" id="YT2-Gs-JqW"/>
+                    <constraint firstItem="Ja9-Ui-f2b" firstAttribute="trailing" secondItem="DiR-zl-kj1" secondAttribute="trailing" id="Z2y-no-ptv"/>
                     <constraint firstItem="4Eu-9D-ElM" firstAttribute="top" secondItem="eSO-cn-6Wf" secondAttribute="topMargin" constant="4" id="aX4-Mb-oyU"/>
                     <constraint firstItem="cdV-EN-AC5" firstAttribute="centerY" secondItem="N4y-kV-Abh" secondAttribute="centerY" id="ajc-Ly-TM1"/>
                     <constraint firstItem="4Eu-9D-ElM" firstAttribute="centerY" secondItem="MWP-U1-4gi" secondAttribute="centerY" id="blT-Ga-63C"/>
@@ -133,6 +140,7 @@
                     <constraint firstItem="4Eu-9D-ElM" firstAttribute="firstBaseline" secondItem="DiR-zl-kj1" secondAttribute="firstBaseline" id="gP3-dY-QUS"/>
                     <constraint firstAttribute="trailing" secondItem="N4y-kV-Abh" secondAttribute="trailing" constant="22" id="ixr-Lm-1eI"/>
                     <constraint firstItem="DiR-zl-kj1" firstAttribute="baseline" secondItem="31Q-hs-9l0" secondAttribute="baseline" id="mbF-hK-hgR"/>
+                    <constraint firstItem="N4y-kV-Abh" firstAttribute="centerY" secondItem="Ja9-Ui-f2b" secondAttribute="centerY" id="uBr-ja-w9I"/>
                     <constraint firstItem="DiR-zl-kj1" firstAttribute="centerX" secondItem="3a4-O9-TRc" secondAttribute="centerX" id="yP1-F1-f1T"/>
                 </constraints>
             </tableViewCellContentView>
@@ -147,6 +155,7 @@
                 <outlet property="labelOldPrice" destination="MWP-U1-4gi" id="hbE-Ff-3P4"/>
                 <outlet property="labelTotalPrice" destination="N4y-kV-Abh" id="m53-am-MIG"/>
                 <outlet property="labelUnitPrice" destination="jXY-8A-c0T" id="Piz-HJ-0lu"/>
+                <outlet property="labelmPack" destination="Ja9-Ui-f2b" id="Xoj-vl-Azx"/>
             </connections>
             <point key="canvasLocation" x="133" y="-226"/>
         </tableViewCell>

+ 6 - 6
common/customUI/commoneditor/CommonEditorAutoCompleteView.m

@@ -101,12 +101,12 @@
 -(void) searchAutocomplete:(NSString*)keyword
 {
     
-    if(keyword.length==0)
-    {
-        self.arr_result = nil;
-        [self.ResultTableView reloadData];
-        return;
-    }
+//    if(keyword.length==0)
+//    {
+//        self.arr_result = nil;
+//        [self.ResultTableView reloadData];
+//        return;
+//    }
         __weak typeof(self) weakself = self;
     if(self.dataSource)
     {

+ 1 - 0
common/customUI/commoneditor/CommonEditorCellModel.h

@@ -24,6 +24,7 @@
 @property (strong, nonatomic) NSDictionary* bundle_item;
 @property (strong, nonatomic) IBOutlet UILabel *avalibilityLabel;
 
+@property (weak, nonatomic) IBOutlet UILabel *labelmPack;
 @property (strong, nonatomic) IBOutlet UIButton *masterBtn;
 @property (nonatomic,strong) NSDictionary *master_items;
 @property (weak, nonatomic) IBOutlet UILabel *labelBackOrder;

+ 40 - 268
common/customUI/commoneditor/CommonEditorViewController.m

@@ -2531,11 +2531,7 @@ if(!self.alert.isBeingDismissed)
     
     //用于会填 textfield 的值,textViewDidEndEditing 和 partial refresh 会调用。
     
-    
-    //                        DebugLog(@"textFieldDidEndEditing");
-    //                        //  UITableViewCell *cell = (UITableViewCell *) textField.superview.superview;
-    //                        NSIndexPath *   indexPath = self.lastedit_from;
-    //
+
     
     NSMutableDictionary* section_json=nil;
     
@@ -2543,7 +2539,8 @@ if(!self.alert.isBeingDismissed)
     
     val = [val stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
     
-    //    DebugLog(@"endedit %d_%d",indexPath.section,indexPath.row);
+        DebugLog(@"endedit %d_%d",indexPath.section,indexPath.row);
+    DebugLog(@"endedit %@",[RAConvertor dict2string:self.content_data_control]);
     NSMutableDictionary* item_json =[((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row] mutableCopy];
     
     NSString* subid=[item_json valueForKey:@"subid"];
@@ -4295,6 +4292,7 @@ if(!self.alert.isBeingDismissed)
             //            NSString* mp = [item_json valueForKey:@"stockUom"];
             double unitprice=[[item_json valueForKey:@"unit_price"] doubleValue];
             int stockUom =[[item_json valueForKey:@"stockUom"] intValue];
+            int mPack =[[item_json valueForKey:@"mPack"] intValue];
             double discount =[[item_json valueForKey:@"discount"] doubleValue];
             NSString* discountstr=[NSString stringWithFormat:@"%@%% off", [RAUtils FloatFormat:discount]];
 
@@ -4352,6 +4350,7 @@ if(!self.alert.isBeingDismissed)
             cell.labelDiscount.text = discountstr;
             cell.labelOldPrice.text = oldprice;
             cell.labelMasterPack.text =[NSString stringWithFormat:@"Sold in QTY of:%d", stockUom];
+            cell.labelmPack.text =[NSString stringWithFormat:@"MPack:%d", mPack];
             
             bool isfree = [[item_json valueForKey:@"is_free"]boolValue];
             
@@ -6180,263 +6179,7 @@ if(!self.alert.isBeingDismissed)
 //        self.autocompleteView.params = nil;
     }
     [self textfieldSetValue:indexPath value:textField.text];
-    //    NSMutableDictionary* section_json=nil;
-    //
-    //
-    //
-    //    textField.text = [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
-    //
-    //    //    DebugLog(@"endedit %d_%d",indexPath.section,indexPath.row);
-    //    NSMutableDictionary* item_json =[((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row] mutableCopy];
-    //
-    //    NSString* subid=[item_json valueForKey:@"subid"];
-    //    NSString* refresh_trigger = [item_json valueForKey:@"name"];
-    //
-    //    [item_json setValue:@"true" forKey:@"dirty"];
-    //    [item_json setValue:textField.text forKey:@"value"];
-    //    if([[item_json valueForKey:@"keyboard"] isEqualToString:@"number"])
-    //    {
-    //        float f = [ textField.text floatValue];
-    //        [item_json setValue:[NSString stringWithFormat:@"%.2f",f] forKey:@"value"];
-    //
-    //    }
-    //
-    //    //    [self.content_data_control[indexPath.section] setObject:item_json forKey:indexPath.row];
-    //    if(subid==nil)
-    //    {
-    //        section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]] mutableCopy];
-    //        int count=0;
-    //
-    //        count=[[section_json valueForKey:@"count"] intValue];
-    //
-    //        for(int i=0;i<count;i++)
-    //        {
-    //            NSDictionary * olditem=[section_json objectForKey:[NSString stringWithFormat:@"item_%d",i ]];
-    //            if([[olditem valueForKey:@"name"] isEqualToString:[item_json valueForKey:@"name" ]])
-    //                [section_json setObject:item_json  forKey:[NSString stringWithFormat:@"item_%d",i ]];
-    //
-    //
-    //        }
-    //
-    //
-    //        [self.content_data_download setObject:section_json forKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]];
-    //        self.content_data_control = [self translate_json:self.content_data_download changed:self.changed_data];
-    //
-    //        int refresh = [[item_json valueForKey:@"refresh"] intValue];
-    //
-    //        NSDictionary * restore_json=[item_json objectForKeyedSubscript:@"restore"];
-    //        bool partial_refresh=[[item_json valueForKey:@"partial_refresh"] boolValue];
-    //        if(refresh)
-    //        {
-    //
-    //            if(restore_json!=nil)
-    //            {
-    //                int rc=[[restore_json valueForKey:@"count"] intValue];
-    //                for(int ir=0;ir<rc;ir++)
-    //                {
-    //                    NSString* name = [restore_json valueForKey:[NSString stringWithFormat:@"item_%d",ir]];
-    //
-    //
-    //                    int section_count=[[self.content_data_download valueForKey:@"section_count"] intValue];
-    //                    for(int i=0;i<section_count;i++)
-    //                    {
-    //                        NSMutableDictionary * sectionjson = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%d",i ]] mutableCopy];
-    //                        //                    NSMutableDictionary * to_sectionjson = [[to objectForKey:[NSString stringWithFormat:@"section_%d",i ]] mutableCopy];
-    //                        int item_count = [[sectionjson valueForKey:@"count"] intValue];
-    //                        for(int j=0;j<item_count;j++)
-    //                        {
-    //                            NSMutableDictionary * itemjson=[[sectionjson objectForKey:[NSString stringWithFormat:@"item_%d",j ]] mutableCopy];
-    //                            //             NSMutableDictionary * to_itemjson=[[to_sectionjson objectForKey:[NSString stringWithFormat:@"item_%d",j ]] mutableCopy];
-    //
-    //                            if([[itemjson valueForKey:@"name"] isEqualToString:name])
-    //                            {
-    //                                [itemjson removeObjectForKey:@"dirty"];
-    //                                [sectionjson setObject:itemjson forKey:[NSString stringWithFormat:@"item_%d",j ]];
-    //                            }
-    //
-    //                        }
-    //                        [self.content_data_download setObject:sectionjson forKey:[NSString stringWithFormat:@"section_%d",i ]];
-    //                    }
-    //
-    //
-    //                }
-    //
-    //            }
-    //            [self refresh:refresh_trigger] ;
-    //
-    //        }
-    //        else if(partial_refresh)
-    //        {
-    //            NSString* name = [item_json valueForKey:@"name"] ;
-    //            NSString* url = [item_json valueForKey:@"data_interface"] ;
-    //
-    //
-    //            NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
-    //
-    //            [params setValue:textField.text forKey:name];
-    //
-    //
-    //            UIAlertView * waitalert = [RAUtils waiting_alert:self.loading_msg title:self.loading_title];
-    //            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
-    //
-    //                NSDictionary* editor_json = [iSalesNetwork commoneditor_partialrefresh:params url:url];
-    //
-    //                dispatch_async(dispatch_get_main_queue(), ^{
-    //
-    //                    [waitalert dismissViewControllerAnimated:YES completion:nil];
-    //
-    //
-    //                    if([[editor_json valueForKey:@"result"] intValue]==2)
-    //                    {
-    //
-    //                        int prcount = [[editor_json valueForKey:@"count"] intValue];
-    //                        for(int ipr=0;ipr<prcount;ipr++)
-    //                        {
-    //                            NSDictionary* pr_item = [editor_json objectForKey:[NSString stringWithFormat:@"item_%d",ipr]];
-    //                            NSString* name = [pr_item valueForKey:@"name"];
-    //                            NSString* value = [pr_item valueForKey:@"value"];
-    //
-    //                            [self setValue:name value:value];
-    //                        }
-    //
-    //
-    //                    }
-    //                    else
-    //                    {
-    //                        [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:nil controller:self] ;
-    //                    }
-    //
-    //
-    //                });
-    //            });
-    //
-    //
-    //
-    //        }
-    //        self.lastedit = nil;
-    //        self.lastedit_from=nil;
-    //        return ;
-    //    }
-    //    else
-    //    {
-    //        NSArray* idarr=[subid componentsSeparatedByString:@"_"];
-    //        int section = [(NSString*)idarr[0] intValue];
-    //        int item=[(NSString*)idarr[1] intValue];
-    //
-    //
-    //        section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%d", section]] mutableCopy];
-    //        NSDictionary * olditem=[section_json objectForKey:[NSString stringWithFormat:@"item_%d",item ]];
-    //
-    //        NSString* control_type= [olditem valueForKey:@"control"];
-    //        NSMutableDictionary* new_item=nil;
-    //        [item_json setValue:@"true" forKey:@"dirty"];
-    //        if([control_type isEqualToString:@"enum"])
-    //            new_item= [self enum_subitem_changed:[olditem mutableCopy] subid:idarr value:item_json step:2];
-    //        else if([control_type isEqualToString:@"switch"])
-    //            new_item= [self switch_subitem_changed:[olditem mutableCopy] subid:idarr value:item_json step:2];
-    //
-    //        [section_json setObject:new_item  forKey:[NSString stringWithFormat:@"item_%d",item ]];
-    //
-    //
-    //        [self.content_data_download setObject:section_json forKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]];
-    //        self.content_data_control = [self translate_json:self.content_data_download changed:self.changed_data];
-    //
-    //        int refresh = [[item_json valueForKey:@"refresh"] intValue];
-    //
-    //        NSDictionary * restore_json=[item_json objectForKeyedSubscript:@"restore"];
-    //        bool partial_refresh=[[item_json valueForKey:@"partial_refresh"] boolValue];
-    //        if(refresh)
-    //        {
-    //
-    //            if(restore_json!=nil)
-    //            {
-    //                int rc=[[restore_json valueForKey:@"count"] intValue];
-    //                for(int ir=0;ir<rc;ir++)
-    //                {
-    //                    NSString* name = [restore_json valueForKey:[NSString stringWithFormat:@"item_%d",ir]];
-    //
-    //
-    //                    int section_count=[[self.content_data_download valueForKey:@"section_count"] intValue];
-    //                    for(int i=0;i<section_count;i++)
-    //                    {
-    //                        NSMutableDictionary * sectionjson = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%d",i ]] mutableCopy];
-    //                        //                    NSMutableDictionary * to_sectionjson = [[to objectForKey:[NSString stringWithFormat:@"section_%d",i ]] mutableCopy];
-    //                        int item_count = [[sectionjson valueForKey:@"count"] intValue];
-    //                        for(int j=0;j<item_count;j++)
-    //                        {
-    //                            NSMutableDictionary * itemjson=[[sectionjson objectForKey:[NSString stringWithFormat:@"item_%d",j ]] mutableCopy];
-    //                            //             NSMutableDictionary * to_itemjson=[[to_sectionjson objectForKey:[NSString stringWithFormat:@"item_%d",j ]] mutableCopy];
-    //
-    //                            if([[itemjson valueForKey:@"name"] isEqualToString:name])
-    //                            {
-    //                                [itemjson removeObjectForKey:@"dirty"];
-    //                                [sectionjson setObject:itemjson forKey:[NSString stringWithFormat:@"item_%d",j ]];
-    //                            }
-    //
-    //                        }
-    //                        [self.content_data_download setObject:sectionjson forKey:[NSString stringWithFormat:@"section_%d",i ]];
-    //                    }
-    //
-    //
-    //                }
-    //
-    //            }
-    //            [self refresh:refresh_trigger] ;
-    //
-    //        }
-    //        else if(partial_refresh)
-    //        {
-    //            NSString* name = [item_json valueForKey:@"name"] ;
-    //            NSString* url = [item_json valueForKey:@"data_interface"] ;
-    //
-    //
-    //            NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
-    //
-    //            [params setValue:textField.text forKey:name];
-    //
-    //
-    //            UIAlertView * waitalert = [RAUtils waiting_alert:self.loading_msg title:self.loading_title];
-    //            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
-    //
-    //                NSDictionary* editor_json = [iSalesNetwork commoneditor_partialrefresh:params url:url];
-    //
-    //                dispatch_async(dispatch_get_main_queue(), ^{
-    //
-    //                    [waitalert dismissViewControllerAnimated:YES completion:nil];
-    //
-    //
-    //                    if([[editor_json valueForKey:@"result"] intValue]==2)
-    //                    {
-    //
-    //                        int prcount = [[editor_json valueForKey:@"count"] intValue];
-    //                        for(int ipr=0;ipr<prcount;ipr++)
-    //                        {
-    //                            NSDictionary* pr_item = [editor_json objectForKey:[NSString stringWithFormat:@"item_%d",ipr]];
-    //                            NSString* name = [pr_item valueForKey:@"name"];
-    //                            NSString* value = [pr_item valueForKey:@"value"];
-    //
-    //                            [self setValue:name value:value];
-    //                        }
-    //
-    //                    }
-    //                    else
-    //                    {
-    //                        [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:nil controller:self] ;
-    //                    }
-    //
-    //
-    //                });
-    //            });
-    //
-    //
-    //
-    //        }
-    //        self.lastedit = nil;
-    //        self.lastedit_from=nil;
-    //
-    //        return;
-    //    }
-    //
+  
     
     
 }
@@ -6449,16 +6192,42 @@ if(!self.alert.isBeingDismissed)
     UITableViewCell *cell = (UITableViewCell *) textField.superview.superview;
     self.lastedit_from  = [self.editorTable indexPathForCell:cell];
     
-    NSDictionary* item_json =((NSMutableArray*)self.content_data_control[self.lastedit_from.section])[self.lastedit_from.row];
+    NSDictionary* item_json2 =((NSMutableArray*)self.content_data_control[self.lastedit_from.section])[self.lastedit_from.row];
     
-    if ([item_json valueForKey:@"clear"]) {
+    if ([item_json2 valueForKey:@"clear"]) {
         //开始编辑时清掉旧内容
-        BOOL clear = [[item_json valueForKey:@"clear"] doubleValue] == [textField.text doubleValue];
+        BOOL clear = [[item_json2 valueForKey:@"clear"] doubleValue] == [textField.text doubleValue];
         
         if (clear) {
             textField.text = nil;
         }
     }
+    
+    
+
+    
+    NSIndexPath* indexPath=[self.editorTable indexPathForCell:cell];
+//    NSMutableDictionary* section_json=nil;
+    NSMutableDictionary* item_json1 =[((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row] mutableCopy];
+    if([item_json1[@"autocomplete"] boolValue]==true)
+    {
+
+        int autocomplete_length =[item_json1[@"autocomplete_length"] intValue];
+
+       if(autocomplete_length==0)
+       {
+           self.autocompleteView.hidden = false;
+           CGRect f = self.autocompleteView.frame;
+           CGRect rframe=[RAUtils relativeFrameForScreenWithView:textField];
+           NSLog(@"edit y %f",rframe.origin.y);
+           self.autocompleteView.frame = CGRectMake(f.origin.x, rframe.origin.y+rframe.size.height, f.size.width, f.size.height);
+         
+         
+               [self.autocompleteView performSearch:@""];
+       }
+//        return false;
+    }
+    
 }
 - (BOOL)textFieldShouldReturn:(UITextField *)textField
 {
@@ -6477,16 +6246,17 @@ if(!self.alert.isBeingDismissed)
     {
 //        [textField endEditing:true];
         
-            self.lastedit_from  = [self.editorTable indexPathForCell:(UITableViewCell*) textField.superview.superview];
+//            self.lastedit_from  = [self.editorTable indexPathForCell:(UITableViewCell*) textField.superview.superview];
         self.autocompleteView.active_field = textField;
 //        self.autocompleteView.hidden = false;
         self.autocompleteView.searchInput.keyboardType=textField.keyboardType;
         self.autocompleteView.searchInput.text= textField.text;
-        [self.autocompleteView.searchInput becomeFirstResponder];
+//        [self.autocompleteView.searchInput becomeFirstResponder];
         __weak typeof(self) weakself = self;
         NSMutableDictionary* params = [item_json[@"autocomplete_params"] mutableCopy];
         params[@"full_url"] = item_json[@"full_url"];
         params[@"url"] = item_json[@"url"];
+      //  int autocomplete_length =[item_json[@"autocomplete_length"] intValue];
         NSMutableDictionary* add_params = [item_json[@"autocomplete_addation_params"] mutableCopy];
         NSArray* add_key=[add_params allKeys];
         for(int i=0;i<add_key.count;i++)
@@ -6532,6 +6302,8 @@ if(!self.alert.isBeingDismissed)
         
         self.autocompleteView.frame= CGRectMake(rframe.origin.x,rframe.origin.y+rframe.size.height,rframe.size.width,400);//CGRectMake(screenframe.origin.x, screenframe.origin.y, screenframe.size.width, end_y);
         
+        
+        
 //        return false;
     }