瀏覽代碼

1.修改NPD,增加Order Preview并完成其功能。
2.修改NPD CommonEditor键盘事件,使之适应不同位置和大小的Table。

Pen Li 8 年之前
父節點
當前提交
6e25c6c8d5

+ 12 - 0
RedAnt ERP Mobile/HMLG Mobile.xcodeproj/project.pbxproj

@@ -67,6 +67,8 @@
 		42EC5FFB1FA1D86300F8FAA4 /* EnumSelectAndSortViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 42EC5FF71FA1D86300F8FAA4 /* EnumSelectAndSortViewController.m */; };
 		42F9FAD71F8C5A8700D9C781 /* NetworkUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 42F9FAD31F8C5A8600D9C781 /* NetworkUtils.m */; };
 		42F9FAD81F8C5A8700D9C781 /* RANetworkTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 42F9FAD61F8C5A8600D9C781 /* RANetworkTaskDelegate.m */; };
+		42FD1A1A1FBD5CC900C5D9A8 /* RAOrderEditorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 42FD1A191FBD5CC900C5D9A8 /* RAOrderEditorViewController.m */; };
+		42FD1A1D1FBD5CE200C5D9A8 /* RAOrderPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 42FD1A1C1FBD5CE200C5D9A8 /* RAOrderPreviewController.m */; };
 		715002021D13CDBE00F5927F /* BundleDetailButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 715002011D13CDBE00F5927F /* BundleDetailButton.m */; };
 		715850431CF6F0C400856B20 /* DefaultAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = 715850421CF6F0C400856B20 /* DefaultAppearance.m */; };
 		716AF8DE1D792157001188E0 /* offline_status_filter_cadedate.json in Resources */ = {isa = PBXBuildFile; fileRef = 716AF8DD1D792157001188E0 /* offline_status_filter_cadedate.json */; };
@@ -375,6 +377,10 @@
 		42F9FAD41F8C5A8600D9C781 /* NetworkUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkUtils.h; path = ../../common/NetworkUtils.h; sourceTree = "<group>"; };
 		42F9FAD51F8C5A8600D9C781 /* RANetworkTaskDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RANetworkTaskDelegate.h; path = ../../common/upload/RANetworkTaskDelegate.h; sourceTree = "<group>"; };
 		42F9FAD61F8C5A8600D9C781 /* RANetworkTaskDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RANetworkTaskDelegate.m; path = ../../common/upload/RANetworkTaskDelegate.m; sourceTree = "<group>"; };
+		42FD1A181FBD5CC900C5D9A8 /* RAOrderEditorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAOrderEditorViewController.h; path = common/Functions/order/RAOrderEditorViewController.h; sourceTree = SOURCE_ROOT; };
+		42FD1A191FBD5CC900C5D9A8 /* RAOrderEditorViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RAOrderEditorViewController.m; path = common/Functions/order/RAOrderEditorViewController.m; sourceTree = SOURCE_ROOT; };
+		42FD1A1B1FBD5CE100C5D9A8 /* RAOrderPreviewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAOrderPreviewController.h; path = common/Functions/order/RAOrderPreviewController.h; sourceTree = SOURCE_ROOT; };
+		42FD1A1C1FBD5CE200C5D9A8 /* RAOrderPreviewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RAOrderPreviewController.m; path = common/Functions/order/RAOrderPreviewController.m; sourceTree = SOURCE_ROOT; };
 		715002001D13CDBE00F5927F /* BundleDetailButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BundleDetailButton.h; path = common/Functions/BundleDetailButton.h; sourceTree = SOURCE_ROOT; };
 		715002011D13CDBE00F5927F /* BundleDetailButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BundleDetailButton.m; path = common/Functions/BundleDetailButton.m; sourceTree = SOURCE_ROOT; };
 		715850411CF6F0C400856B20 /* DefaultAppearance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DefaultAppearance.h; path = common/Functions/DefaultAppearance.h; sourceTree = SOURCE_ROOT; };
@@ -1542,6 +1548,10 @@
 		7183E9A51CF29FCB00524787 /* order */ = {
 			isa = PBXGroup;
 			children = (
+				42FD1A181FBD5CC900C5D9A8 /* RAOrderEditorViewController.h */,
+				42FD1A191FBD5CC900C5D9A8 /* RAOrderEditorViewController.m */,
+				42FD1A1B1FBD5CE100C5D9A8 /* RAOrderPreviewController.h */,
+				42FD1A1C1FBD5CE200C5D9A8 /* RAOrderPreviewController.m */,
 				7183E9911CF29FCB00524787 /* CreateOrderViewController.h */,
 				7183E9921CF29FCB00524787 /* CreateOrderViewController.m */,
 				7183E9931CF29FCB00524787 /* OrderDetailHtmlCell.h */,
@@ -1911,6 +1921,7 @@
 				7183E9031CF29F4500524787 /* ImageScrollerViewController.m in Sources */,
 				7183E9F21CF29FCB00524787 /* CategoryViewController.m in Sources */,
 				4289809A1E24B304005F1BD8 /* TextUtils.m in Sources */,
+				42FD1A1D1FBD5CE200C5D9A8 /* RAOrderPreviewController.m in Sources */,
 				7183EA6F1CF2B05C00524787 /* NSString+Base64.m in Sources */,
 				7183E91F1CF29F4500524787 /* ActiveViewController.m in Sources */,
 				7183EA071CF29FCB00524787 /* CustomerInfoViewController.m in Sources */,
@@ -1985,6 +1996,7 @@
 				7183E9FD1CF29FCB00524787 /* RATreeView+UIScrollView.m in Sources */,
 				7183EA021CF29FCB00524787 /* ContactListViewController.m in Sources */,
 				7183EA231CF29FCB00524787 /* ScannerControllerView.m in Sources */,
+				42FD1A1A1FBD5CC900C5D9A8 /* RAOrderEditorViewController.m in Sources */,
 				7183E9E71CF29FCB00524787 /* SliderPage.m in Sources */,
 				7183E9FE1CF29FCB00524787 /* RAViewController.m in Sources */,
 				7183EA001CF29FCB00524787 /* ContactAdvanceSearchViewController.m in Sources */,

+ 3 - 0
RedAnt ERP Mobile/HMLG Mobile/config.h

@@ -41,6 +41,7 @@
 #ifdef test_server
 
 //------------------- chen server-----------------------
+#define  URL_BACK_ORDER_PREVIEW @""
 #define  URL_UPDATE_AUTH  @"http://192.168.0.133:80/pj/isales/login.htm"
 #define  URL_LOGOUT  @"http://192.168.0.133:80/pj/isales/loginOut.htm"
 #define  URL_RETRIEVE_PASS  @"http://192.168.0.133:80/pj/isales/forgotPassword.htm"
@@ -284,6 +285,8 @@
 #define  URL_UPLOAD_OFFLINE  @"http://192.168.0.126:8080/site/offline/uploadOfflineData.htm"
 #define URL_BLOG @""
 #define URL_EMAIL_WISHLIST @""
+#define  URL_BACK_ORDER_PREVIEW @""
+
 #endif
 #endif
 /*

+ 156 - 113
RedAnt ERP Mobile/common/CommonEditor/CommonEditorViewController.m

@@ -58,7 +58,6 @@
 @end
 @interface CommonEditorViewController ()<CommonEditorRangeDelegate>
 
-
 @end
 
 @implementation CommonEditorViewController
@@ -118,7 +117,6 @@
     self.editorTable.tableFooterView = [UIView new];
     self.editorTable.tableHeaderView = [UIView new];
     
-
 }
 
 - (void)registerPhoneCell {
@@ -257,8 +255,23 @@
     NSString *model = [UIDevice currentDevice].model;
     if ([model isEqualToString:@"iPhone"]) {
         [self setupEditorTable];
+    } else {
+        // 在键盘事件中,使用tableContainer计算frame 保证屏幕旋转后table height正确
+        if (self.tableContainer == nil) {
+            self.tableContainer = [[UIView alloc] initWithFrame:self.editorTable.frame];
+            self.tableContainer.autoresizingMask = self.editorTable.autoresizingMask;
+            CGRect frame = self.editorTable.frame;
+            frame.origin.x = 0;
+            frame.origin.y = 0;
+            [self.view addSubview:self.tableContainer];
+            [self.view sendSubviewToBack:self.tableContainer];
+            [self.tableContainer addSubview:self.editorTable];
+        }
     }
     
+    //
+    
+    
 //    self.switchlock =  [[NSLock alloc] init];
     
     
@@ -5703,131 +5716,161 @@
 {
     return [RANetwork request_Editor:request_url params:params];
 }
-#pragma mark Responding to keyboard events
+#pragma mark - Responding to keyboard events
 
-static float table_origin_h = 0;
 
 - (void)keyboardWillChangeFrame:(NSNotification *)notification {
     DebugLog(@"keyboardWillChangeFrame");
-}
-- (void)keyboardWillShow:(NSNotification *)notification {
-    DebugLog(@"keyboardWillShow");
-    
-    if(self.keyboard_show)
-        return;
     
-    self.keyboard_show=true;
-    /*
-     Reduce the size of the text view so that it's not obscured by the keyboard.
-     Animate the resize so that it's in sync with the appearance of the keyboard.
-     */
-    
-    NSDictionary *userInfo = [notification userInfo];
-    
-    // Get the origin of the keyboard when it's displayed.
-    NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
-    
-    // Get the top of the keyboard as the y coordinate of its origin in self's view's coordinate system. The bottom of the text view's frame should align with the top of the keyboard's final position.
-    //    CGRect keyboardRect = [aValue CGRectValue];
-    CGSize keyboardSize = [aValue CGRectValue].size;
-    DebugLog(@"keyboard height:%f",keyboardSize.height);
-    // Get the duration of the animation.
-    NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
-    NSTimeInterval animationDuration;
-    [animationDurationValue getValue:&animationDuration];
+
+    // 使用tableContainer计算frame 保证屏幕旋转后table height正确
+    CGRect table_origin_screen_frame = [self.tableContainer convertRect:self.tableContainer.bounds toView:self.view.window];
     
     
-    //    if(self.keyboard_h==0)
-    //   {
-    self.keyboard_h =keyboardSize.height;
-    CGRect cellrect_screen = [RAUtils relativeFrameForScreenWithView:self.editingcell];
-    CGRect rect_screen = [ UIScreen mainScreen ].bounds;
+//    NSTimeInterval duration = [[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];
+//    duration *= 0.0;
+    CGRect end = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
+    CGFloat end_y = end.origin.y;
+    NSIndexPath *indexPath = [self.editorTable indexPathForCell:self.editingcell];
     
-    //    int vpos =self.view.frame.origin.y+self.view.frame.size.height;
-    //    int loginpos = self.editingcell.frame.origin.y+self.editingcell.frame.size.height;
-    //
-    int cellpos = cellrect_screen.origin.y+cellrect_screen.size.height;
-    //    screen.size.height-keyboardSize.height-(cellpos_screen.origin.x+cellpos_screen.size.height);
-    self.ioffset = cellpos-(rect_screen.size.height-keyboardSize.height);//rect_screen.size.height-keyboardSize.height-(rect_screen.origin.y+rect_screen.size.height);//keyboardSize.height -(self.view.frame.size.height-loginpos);
-    if(self.ioffset>0)
-    {
-        //  self.resize = true;
-        
-        
-        CGPoint contentOffsetPoint = self.editorTable.contentOffset;
-        
-        
-        contentOffsetPoint.y+=self.ioffset;
-        
-        self.editorTable.contentOffset=contentOffsetPoint;
-        
-        
-        //       NSTimeInterval animationDuration = 0.30f;
-        //        CGRect frame = self.view.frame;
-        //        frame.origin.y -=self.ioffset;//view的Y轴上移
-        //        frame.size.height +=self.ioffset; //View的高度增加
-        //        self.view.frame = frame;
-        //        [UIView beginAnimations:@"ResizeView" context:nil];
-        //        [UIView setAnimationDuration:animationDuration];
-        //        self.view.frame = frame;
-        //        [UIView commitAnimations];//设置调整界面的动画效果
+    CGRect table_frame = self.editorTable.frame;
+    if (CGRectGetMaxY(table_origin_screen_frame) > end_y) {
+        table_frame.size.height = CGRectGetHeight(table_origin_screen_frame) - (CGRectGetMaxY(table_origin_screen_frame) - end_y);
+    } else {
+        table_frame.size.height = CGRectGetHeight(table_origin_screen_frame);
+    }
+
+    self.editorTable.frame = table_frame;
+    [self.editorTable scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionNone animated:NO];
+
+    if (end_y >= [UIScreen mainScreen].bounds.size.height) {
+        self.keyboard_show = NO;
+    } else {
+        self.keyboard_show = YES;
     }
     
-    table_origin_h = self.editorTable.frame.size.height;
-    self.editorTable.frame = CGRectMake(0, 0, self.editorTable.frame.size.width, self.editorTable.frame.size.height-self.keyboard_h);
+}
+
+//static float table_origin_h = 0;
+
+- (void)keyboardWillShow:(NSNotification *)notification {
+    DebugLog(@"keyboardWillShow");
     
-    //    CGSize tablecontent =self.editorTable.contentSize;
-    //    tablecontent.height=tablecontent.height+self.keyboard_h;
-    //    self.editorTable.contentSize=tablecontent;
-    //    }
-    // Animate the resize of the text view's frame in sync with the keyboard's appearance.
-    //  [self moveInputBarWithKeyboardHeight:keyboardRect.size.height withDuration:animationDuration];
+//    if(self.keyboard_show)
+//        return;
+//
+//    self.keyboard_show=true;
+//    /*
+//     Reduce the size of the text view so that it's not obscured by the keyboard.
+//     Animate the resize so that it's in sync with the appearance of the keyboard.
+//     */
+//
+//    NSDictionary *userInfo = [notification userInfo];
+//
+//    // Get the origin of the keyboard when it's displayed.
+//    NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
+//
+//    // Get the top of the keyboard as the y coordinate of its origin in self's view's coordinate system. The bottom of the text view's frame should align with the top of the keyboard's final position.
+//    //    CGRect keyboardRect = [aValue CGRectValue];
+//    CGSize keyboardSize = [aValue CGRectValue].size;
+//    DebugLog(@"keyboard height:%f",keyboardSize.height);
+//    // Get the duration of the animation.
+//    NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
+//    NSTimeInterval animationDuration;
+//    [animationDurationValue getValue:&animationDuration];
+//
+//
+//    //    if(self.keyboard_h==0)
+//    //   {
+//    self.keyboard_h =keyboardSize.height;
+//    CGRect cellrect_screen = [RAUtils relativeFrameForScreenWithView:self.editingcell];
+//    CGRect rect_screen = [ UIScreen mainScreen ].bounds;
+//
+//    //    int vpos =self.view.frame.origin.y+self.view.frame.size.height;
+//    //    int loginpos = self.editingcell.frame.origin.y+self.editingcell.frame.size.height;
+//    //
+//    int cellpos = cellrect_screen.origin.y+cellrect_screen.size.height;
+//    //    screen.size.height-keyboardSize.height-(cellpos_screen.origin.x+cellpos_screen.size.height);
+//    self.ioffset = cellpos-(rect_screen.size.height-keyboardSize.height);//rect_screen.size.height-keyboardSize.height-(rect_screen.origin.y+rect_screen.size.height);//keyboardSize.height -(self.view.frame.size.height-loginpos);
+//    if(self.ioffset>0)
+//    {
+//        //  self.resize = true;
+//
+//
+//        CGPoint contentOffsetPoint = self.editorTable.contentOffset;
+//
+//
+//        contentOffsetPoint.y+=self.ioffset;
+//
+//        self.editorTable.contentOffset=contentOffsetPoint;
+//
+//
+//        //       NSTimeInterval animationDuration = 0.30f;
+//        //        CGRect frame = self.view.frame;
+//        //        frame.origin.y -=self.ioffset;//view的Y轴上移
+//        //        frame.size.height +=self.ioffset; //View的高度增加
+//        //        self.view.frame = frame;
+//        //        [UIView beginAnimations:@"ResizeView" context:nil];
+//        //        [UIView setAnimationDuration:animationDuration];
+//        //        self.view.frame = frame;
+//        //        [UIView commitAnimations];//设置调整界面的动画效果
+//    }
+//
+//    table_origin_h = self.editorTable.frame.size.height;
+//    self.editorTable.frame = CGRectMake(0, 0, self.editorTable.frame.size.width, self.editorTable.frame.size.height-self.keyboard_h);
+//
+//    //    CGSize tablecontent =self.editorTable.contentSize;
+//    //    tablecontent.height=tablecontent.height+self.keyboard_h;
+//    //    self.editorTable.contentSize=tablecontent;
+//    //    }
+//    // Animate the resize of the text view's frame in sync with the keyboard's appearance.
+//    //  [self moveInputBarWithKeyboardHeight:keyboardRect.size.height withDuration:animationDuration];
 }
 - (void)keyboardWillHide:(NSNotification *)notification {
     DebugLog(@"keyboardWillHide");
-    
-    self.keyboard_show=false;
-    NSDictionary* userInfo = [notification userInfo];
-    
-    /*
-     Restore the size of the text view (fill self's view).
-     Animate the resize so that it's in sync with the disappearance of the keyboard.
-     */
-    NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
-    NSTimeInterval animationDuration;
-    [animationDurationValue getValue:&animationDuration];
-    CGSize tablecontent =self.editorTable.contentSize;
-    tablecontent.height=tablecontent.height-self.keyboard_h;
-    //    self.editorTable.contentSize=tablecontent;
-    
-    self.editorTable.frame = CGRectMake(0, 0, self.editorTable.frame.size.width, table_origin_h);
-    
-    self.keyboard_h= 0;
-    DebugLog(@"before refresh %@",NSStringFromCGSize(self.editorTable.contentSize));
-    
-    
-    //    if(self.resize)
-    //    {
-    //        NSTimeInterval animationDuration = 0.30f;
-    //        CGRect frame = self.view.frame;
-    //        //    if(prewTag == textField.tag) //当结束编辑的View的TAG是上次的就移动
-    //        //    {   //还原界面
-    //        //        moveY =  prewMoveY;
-    //        frame.origin.y +=self.ioffset;
-    //        frame.size. height -=self.ioffset;
-    //        self.view.frame = frame;
-    //        //    }
-    //        //self.view移回原位置
-    //        [UIView beginAnimations:@"ResizeView" context:nil];
-    //        [UIView setAnimationDuration:animationDuration];
-    //        self.view.frame = frame;
-    //        [UIView commitAnimations];
-    //        //[textField resignFirstResponder];
-    //        self.ioffset=0;
-    //    }
-    
-    
-    //  [self moveInputBarWithKeyboardHeight:0.0 withDuration:animationDuration];
+
+//    self.keyboard_show=false;
+//    NSDictionary* userInfo = [notification userInfo];
+//
+//    /*
+//     Restore the size of the text view (fill self's view).
+//     Animate the resize so that it's in sync with the disappearance of the keyboard.
+//     */
+//    NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
+//    NSTimeInterval animationDuration;
+//    [animationDurationValue getValue:&animationDuration];
+//    CGSize tablecontent =self.editorTable.contentSize;
+//    tablecontent.height=tablecontent.height-self.keyboard_h;
+//    //    self.editorTable.contentSize=tablecontent;
+//
+//    self.editorTable.frame = CGRectMake(0, 0, self.editorTable.frame.size.width, table_origin_h);
+//
+//    self.keyboard_h= 0;
+//    DebugLog(@"before refresh %@",NSStringFromCGSize(self.editorTable.contentSize));
+//
+//
+//    //    if(self.resize)
+//    //    {
+//    //        NSTimeInterval animationDuration = 0.30f;
+//    //        CGRect frame = self.view.frame;
+//    //        //    if(prewTag == textField.tag) //当结束编辑的View的TAG是上次的就移动
+//    //        //    {   //还原界面
+//    //        //        moveY =  prewMoveY;
+//    //        frame.origin.y +=self.ioffset;
+//    //        frame.size. height -=self.ioffset;
+//    //        self.view.frame = frame;
+//    //        //    }
+//    //        //self.view移回原位置
+//    //        [UIView beginAnimations:@"ResizeView" context:nil];
+//    //        [UIView setAnimationDuration:animationDuration];
+//    //        self.view.frame = frame;
+//    //        [UIView commitAnimations];
+//    //        //[textField resignFirstResponder];
+//    //        self.ioffset=0;
+//    //    }
+//
+//
+//    //  [self moveInputBarWithKeyboardHeight:0.0 withDuration:animationDuration];
 }
 
 #pragma mark - RageCell Delegate

+ 34 - 15
RedAnt ERP Mobile/common/Functions/order/RAOrderEditorViewController.m

@@ -12,6 +12,7 @@
 #import "AddressEditorViewController.h"
 #import "CreditCardEditorViewController.h"
 #import "JKTimerManager.h"
+#import "RAOrderPreviewController.h"
 
 
 
@@ -311,18 +312,39 @@ static const int totalPage = 3;
 }
 
 - (IBAction)nextBarItemClick:(UIBarButtonItem *)sender {
-    self.pageIndex++;
     
-    NSMutableDictionary* upparams = [self check_cancommit:false]; // 当前页上行参数
     
-    if (self.pageIndex == totalPage) {
+    NSMutableDictionary* upparams = [self check_cancommit:false]; // 当前页上行参数
+    if(self.cancommit==false)
+        return;
+
+    __weak typeof(self) weakSelf = self;
+    if (self.pageIndex == totalPage - 1) {
         
+        // 在此设置Step 避免返回后index不正确。
+        [upparams setObject:@(self.pageIndex + 1) forKey:@"step"];
         // 尾页 进入Preview
+        [upparams enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
+            
+            [weakSelf.params setObject:obj forKey:key];
+            
+        }];
+        
+        RAOrderPreviewController * orderinfoVC =[ self.storyboard instantiateViewControllerWithIdentifier:@"RAOrderPreviewController"];
+        
+        orderinfoVC.disable_dropdown_refresh=true;
+        orderinfoVC.url_type = URL_REMOTE;
+        orderinfoVC.request_url=URL_BACK_ORDER_PREVIEW;
+        
+        orderinfoVC.params = self.params;
+        
+        orderinfoVC.delegate=self.delegate;
+
+        [self.navigationController pushViewController:orderinfoVC animated:true];
         
         return;
     }
-    
-
+    self.pageIndex++;
     // 请求页码
     [upparams setObject:@(self.pageIndex) forKey:@"step"];
     
@@ -348,17 +370,14 @@ static const int totalPage = 3;
     [self.pageChangeDataArray addObject:self.changed_data];
     
     // 2.请求下一页数据
-    __weak typeof(self) weakSelf = self;
-    for (NSDictionary *page_params in self.pageUpParams) {
-        // 当前页及之前所有页参数均上传
-        [page_params enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
-            
-            [weakSelf.params setObject:obj forKey:key];
-            
-        }];
-    }
+    // 当前页及之前所有页参数均上传
+    [upparams enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
+        
+        [weakSelf.params setObject:obj forKey:key];
+        
+    }];
     
-//    [self setupPageControlBar];
+    [self setupPageControlBar];
 
     self.content_data_download = [NSMutableDictionary dictionary];
     [self refresh:nil];

+ 21 - 0
RedAnt ERP Mobile/common/Functions/order/RAOrderPreviewController.h

@@ -0,0 +1,21 @@
+//
+//  RAOrderPreviewController.h
+//  iSales-NPD
+//
+//  Created by Jack on 2017/11/16.
+//  Copyright © 2017年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "CommonEditorViewController.h"
+
+@interface RAOrderPreviewController : CommonEditorViewController
+
+@property bool have_tail;
+
+@property (strong,nonatomic) NSMutableDictionary* upparams;
+
+@property (strong,nonatomic) UIBarButtonItem *btnSubmitOrder;
+
+@property (nonatomic,assign) BOOL resumeOrder;///<恢复订单
+
+@end

+ 3298 - 0
RedAnt ERP Mobile/common/Functions/order/RAOrderPreviewController.m

@@ -0,0 +1,3298 @@
+//
+//  RAOrderPreviewController.m
+//  iSales-NPD
+//
+//  Created by Jack on 2017/11/16.
+//  Copyright © 2017年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "RAOrderPreviewController.h"
+#import "RANetwork.h"
+#import "MainViewController.h"
+#import "Singleton.h"
+#import "config.h"
+#import "CustomIOSAlertView.h"
+#import "AddressEditorViewController.h"
+#import "CreditCardEditorViewController.h"
+#import "JKTimerManager.h"
+
+#define SUBMIT_CONFIRM 123
+#define KEEP_TAIL 456
+#define CLOSE_ACTION 567
+
+@interface RAOrderPreviewController ()
+
+@property (nonatomic,assign) BOOL isResume;///<恢复
+@property (nonatomic,assign) NSInteger userType;///<恢复使用
+
+@end
+
+@implementation RAOrderPreviewController
+
+- (void)alertMessage:(NSString *)msg {
+    
+    
+    if (notifyMe_switch) {
+        
+        if ([self.class_name isEqualToString:@"CreateOrderViewController"]) {
+            
+            NSString *err_msg = msg;
+            UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Attention!!" message:err_msg preferredStyle:UIAlertControllerStyleAlert];
+            __weak typeof(self) weakself = self;
+            UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+                
+                [weakself.navigationController popViewControllerAnimated:YES];
+                
+            }];
+            [alertVC addAction:action];
+            
+            [self presentViewController:alertVC animated:YES completion:nil];
+            
+        } else {
+            
+            [RAUtils message_alert:msg title:nil controller:self] ;
+        }
+        
+    } else {
+        
+        [RAUtils message_alert:msg title:nil controller:self] ;
+    }
+}
+
+-(void) commonAction:(NSString *)value index:(NSIndexPath*) indexPath data:(NSMutableDictionary*) item_json
+{
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if([value isEqualToString:@"new_addr"])
+    {
+        AddressEditorViewController * addressVC =[ self.storyboard instantiateViewControllerWithIdentifier:@"AddressEditorViewController"];
+        
+        addressVC.url_type = URL_REMOTE;
+        
+        addressVC.request_url=URL_ADDRESS_EDOTOR;
+        
+        
+        
+        
+        NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
+        //            NSString * string = [checked componentsJoinedByString:@","];
+        //            [params setValue:string forKey:@"cart2Checkbox"];
+        
+        
+        
+        
+        addressVC.params = params;
+        
+        
+        addressVC.delegate = self;
+        
+        addressVC.from = indexPath;
+        //            orderinfoVC.params = params;
+        
+        [self.navigationController pushViewController:addressVC animated:true];
+        
+    }else if([value isEqualToString:@"credit_card"])
+    {
+        CreditCardEditorViewController * cardVC =[ self.storyboard instantiateViewControllerWithIdentifier:@"CreditCardEditorViewController"];
+        
+        
+        NSDictionary *data = [item_json objectForKey:@"data"];
+        
+        if(data!=nil)
+        {
+            
+            cardVC.content_data_download = [data mutableCopy];
+            cardVC.url_type = URL_NONE;
+            
+            cardVC.request_url=nil;
+        }
+        else
+        {
+            cardVC.url_type = URL_REMOTE;
+            
+            cardVC.request_url=URL_CREDITCARD_EDOTOR;
+        }
+        NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
+        
+        params[@"orderCode"]=appDelegate.order_code;
+        cardVC.params = params;
+        
+        cardVC.delegate = self;
+        
+        cardVC.from = indexPath;
+        
+        
+        //            orderinfoVC.params = params;
+        
+        [self.navigationController pushViewController:cardVC animated:true];
+        
+    }
+    else if([value isEqualToString:@"Sales_Order_Freight_Bill_To"])
+    {
+        
+        
+        ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
+        cvc.showNavibar = true;
+        cvc.contact_type = value;
+        __weak typeof(self) weakself = self;
+        cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
+            
+            [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION];
+            
+            //
+            //                if(self.returnValue)
+            //                    self.returnValue(value);
+        };
+        
+        
+        
+        [self.navigationController pushViewController:cvc animated:true];
+        
+    }
+    else if([value isEqualToString:@"Sales_Order_Ship_From"])
+    {
+        
+        
+        ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
+        cvc.showNavibar = true;
+        cvc.contact_type = value;
+        __weak typeof(self) weakself = self;
+        cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
+            
+            [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION];
+            
+            //
+            //                if(self.returnValue)
+            //                    self.returnValue(value);
+        };
+        
+        
+        
+        [self.navigationController pushViewController:cvc animated:true];
+        
+    }
+    else if([value isEqualToString:@"Sales_Order_Customer"])
+    {
+        
+        
+        ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
+        
+        cvc.contact_type = value;
+        cvc.showNavibar = true;
+        __weak typeof(self) weakself = self;
+        cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
+            
+            [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION];
+            
+            //
+            //                if(self.returnValue)
+            //                    self.returnValue(value);
+        };
+        
+        
+        
+        [self.navigationController pushViewController:cvc animated:true];
+        
+    }
+    else if([value isEqualToString:@"Sales_Order_Merchandise_Bill_To"])
+    {
+        
+        
+        ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
+        cvc.showNavibar = true;
+        cvc.contact_type = value;
+        __weak typeof(self) weakself = self;
+        cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
+            
+            [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION];
+            
+            //
+            //                if(self.returnValue)
+            //                    self.returnValue(value);
+        };
+        
+        
+        
+        [self.navigationController pushViewController:cvc animated:true];
+        
+    }
+    else if([value isEqualToString:@"Contact_Return_To"])
+    {
+        
+        
+        ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
+        cvc.showNavibar = true;
+        cvc.contact_type = value;
+        __weak typeof(self) weakself = self;
+        cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
+            
+            [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION];
+            
+            //
+            //                if(self.returnValue)
+            //                    self.returnValue(value);
+        };
+        
+        
+        
+        [self.navigationController pushViewController:cvc animated:true];
+        
+    }
+    else if([value isEqualToString:@"Sales_Order_Ship_To"])
+    {
+        
+        
+        ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
+        cvc.showNavibar = true;
+        cvc.contact_type = value;
+        __weak typeof(self) weakself = self;
+        cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
+            
+            [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION];
+            
+            //
+            //                if(self.returnValue)
+            //                    self.returnValue(value);
+        };
+        
+        
+        
+        [self.navigationController pushViewController:cvc animated:true];
+        
+    }
+    
+}
+- (void)dealloc {
+    
+    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
+    
+    [appDelegate.urgencyDic removeObjectForKey:[NSString stringWithFormat:@"level_%d",self.level]];
+    [appDelegate.urgencyDic setValue:[NSNumber numberWithInteger:self.level] forKey:@"count"];
+    
+    if (self.isResume && self.userType == USER_ROLE_CUSTOMER) {
+        [self releaseOrderAfterSave];
+    }
+    
+}
+
+-(void) viewWillAppear:(BOOL)animated
+{
+    [super viewWillAppear:animated];
+    
+//    [self start_urgency_timer];
+    
+    self.isResume = [[[NSUserDefaults standardUserDefaults] objectForKey:@"urgency_resume"] boolValue];
+    self.userType = [[[NSUserDefaults standardUserDefaults] objectForKey:@"urgency_userType"] integerValue];
+    BOOL canSubmit = [[[NSUserDefaults standardUserDefaults] objectForKey:@"urgency_submitOrder"] boolValue];
+    
+    // 检查权限
+    NSMutableArray * items = [[NSMutableArray alloc]init];
+    
+    
+    UIBarButtonItem *savebtn = nil;
+    
+    savebtn = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"save"] imageWithRenderingMode:UIImageRenderingModeAutomatic]
+                                               style:UIBarButtonItemStylePlain
+                                              target:self
+                                              action:@selector(onSaveClick:)];
+    
+    
+    self.btnSubmitOrder = nil;
+    self.btnSubmitOrder =[[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"commit"] imageWithRenderingMode:UIImageRenderingModeAutomatic]
+                                                          style:UIBarButtonItemStylePlain
+                                                         target:self
+                                                         action:@selector(onCommitOrderClick:)];
+    
+    
+    UIBarButtonItem *fixedItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
+    fixedItem.width = 20.0f;
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    //  if(appDelegate.user_type ==USER_ROLE_EMPLOYEE)
+    {
+        [items addObject:savebtn];
+        
+        [items addObject:fixedItem];
+    }
+    
+    if (!self.isResume) {
+        // 正常情况
+        if (appDelegate.user_type == USER_ROLE_CUSTOMER) {
+            // customer的订单必须是Sales Order并且有提交权限才能提交
+            if ([Singleton sharedInstance].currentOrderIsMerged && [Singleton sharedInstance].permissions_submit_order) {
+                
+                [items addObject:self.btnSubmitOrder];
+                
+            }
+        } else {
+            [items addObject:self.btnSubmitOrder];
+        }
+        
+    } else {
+        // 恢复
+        if (self.userType == USER_ROLE_CUSTOMER) {
+            // customer的订单必须是Sales Order并且有提交权限才能提交
+            if (canSubmit) {
+                [items addObject:self.btnSubmitOrder];
+            }
+        } else {
+            [items addObject:self.btnSubmitOrder];
+        }
+        [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"urgency_resume"];
+        [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"urgency_userType"];
+        [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"urgency_submitOrder"];
+    }
+    
+    
+    
+    //        [items addObject:item2];
+    self.navigationItem.rightBarButtonItems=items;
+    
+    
+    
+    if(appDelegate.can_submit_order)
+    {
+        
+        
+        [self.btnSubmitOrder setImage:[UIImage imageNamed:@"commit"]];
+        self.btnSubmitOrder.enabled = true;
+    }
+    else
+    {
+        [self.btnSubmitOrder setImage:nil];
+        self.btnSubmitOrder.enabled = false;
+    }
+    
+    self.navigationController.navigationBarHidden=false;
+    
+}
+
+-(void) download_success
+{
+    // 用于处理不同child,在成功去的数据后,需要附加的操作。
+    
+    self.have_tail=[[self.content_data_download valueForKey:@"has_reItem"] boolValue];
+    
+    NSString* order_customerid=[self getValue:@"customer_cid"];
+    
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    appDelegate.order_customer_id = order_customerid;
+    
+}
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    
+    self.editable = YES;
+    
+    UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"close"] imageWithRenderingMode:UIImageRenderingModeAutomatic]
+                                                                    style:UIBarButtonItemStylePlain
+                                                                   target:self
+                                                                   action:@selector(onCloseClick:)];
+    //[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Close", nil) style:UIBarButtonItemStylePlain target:self action:@selector(onCloseClick:)];
+    //    closeButton.title = @"Close";
+    
+    self.navigationItem.leftBarButtonItem = closeButton;
+    
+    //    self.navigationItem.backBarButtonItem = backButton;
+    
+    
+    // Do any additional setup after loading the view.
+}
+- (void)onCommitOrderClick:(id)sender {
+    // get customer info
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    //    if (appDelegate.user_type == USER_ROLE_CUSTOMER) {
+    //
+    //        // 检查价格类型
+    //        // 提货价才能提交订单
+    //        /**  价格类型
+    //         *   0 提货价
+    //         *   1 统一价
+    //         *   2 计算价
+    //         */
+    //        NSInteger priceType = [Singleton sharedInstance].npd_shop_price_type;
+    //        if (priceType != 0) {
+    //
+    //            NSString* pricename = nil;
+    //            switch (priceType) {
+    //                case 1:
+    //                    pricename=flat_price;
+    //                    break;
+    //                case 2:
+    //                    pricename=given_price;
+    //                    break;
+    //                default:
+    //                    break;
+    //            }
+    //
+    //            UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:[NSString stringWithFormat:@"Current price is %@, please change to %@ and try again.",pricename,[Singleton sharedInstance].deliveryString] preferredStyle:UIAlertControllerStyleAlert];
+    //
+    //            UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
+    //
+    //                [alertVC dismissViewControllerAnimated:YES completion:nil];
+    //
+    //            }];
+    //
+    //
+    //            [alertVC addAction:cancelAction];
+    //
+    //            [self presentViewController:alertVC animated:YES completion:nil];
+    //
+    //            return;
+    //        }
+    //    }
+    
+    
+    NSString* msg;
+#ifdef OFFLINE_MODE
+    if(appDelegate.offline_mode)
+    {
+        msg=@"Are you sure to mark offline order as ready for submit?";
+    }
+    else
+#endif
+    {
+        msg=@"Submit order now?";
+        
+        //        if(appDelegate.user_type == USER_ROLE_CUSTOMER) {
+        //
+        //            NSString *specialInstuction = [Singleton sharedInstance].specialInstruction;
+        //            NSString * deliverprice=[Singleton sharedInstance].deliveryString;
+        //            msg = [NSString stringWithFormat:@"Are you sure to submit order?\n\n1. Your price type is %@, Order will sent to NPD with this price.",deliverprice];
+        //            if (specialInstuction.length) {
+        //                msg = [msg stringByAppendingFormat:@"\n2. Special Instruction: %@.",specialInstuction];
+        //            }
+        //
+        //        }
+    }
+    
+    
+    // 2017-03-20 修改
+    //
+    //    CustomIOSAlertView *alertView = [[CustomIOSAlertView alloc] init];
+    //
+    //
+    //
+    //
+    //    // Add some custom content to the alert view
+    //    [alertView setContainerView:[self createDemoView:msg]];
+    //
+    //    // Modify the parameters
+    //
+    //
+    //    NSArray *titleArr = [NSMutableArray arrayWithObjects:@"NO",@"YES", nil];
+    //    [alertView setButtonTitles:titleArr];
+    //    //[alertView setDelegate:self];
+    //
+    //    // You may use a Block, rather than a delegate.
+    //    [alertView setOnButtonTouchUpInside:^(CustomIOSAlertView *alertView, int buttonIndex) {
+    //        //   DebugLog(@"Block: Button at position %d is clicked on alertView %d.", buttonIndex, (int)[alertView tag]);
+    //        if(buttonIndex==0)
+    //            [alertView close];
+    //        else
+    //        {
+    //            // add params check here.
+    //            [self.lastedit endEditing:true];
+    //            [self.lasttextview endEditing:true];
+    //
+    //
+    //
+    //            //        self.cancommit=true;
+    //            //        NSMutableDictionary* upparams=[[NSMutableDictionary alloc] init];
+    //            //        [upparams setValue:[self.params valueForKey:@"cart2Checkbox"] forKey:@"cart2Checkbox"];
+    //            //        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];
+    //            //            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];
+    //            //                NSString* key = [itemjson valueForKey:@"name"];
+    //            //                if(key==nil || key.length==0)
+    //            //                    continue;
+    //            //                if([[itemjson valueForKey:@"control"] isEqualToString:@"enum"])
+    //            //                {
+    //            //                    NSString* single_select = [itemjson valueForKey:@"single_select"];
+    //            //                    if([single_select isEqualToString:@"true"])
+    //            //                    {
+    //            //                        NSDictionary* cadejson=[itemjson objectForKey:@"cadedate"];
+    //            //                        int count = [[cadejson valueForKey:@"count"] intValue];
+    //            //                        bool setvalue = false;
+    //            //                        for(int cc=0;cc<count;cc++)
+    //            //                        {
+    //            //                            NSDictionary* valjson=[cadejson objectForKey:[NSString stringWithFormat:@"val_%d",cc]];
+    //            //                            if([[valjson valueForKey:@"check"]intValue]==1)
+    //            //                            {
+    //            //                                [upparams setValue:[valjson valueForKey:@"value_id"] forKey:[itemjson valueForKey:@"name"]];
+    //            //                                setvalue=true;
+    //            //                                break;
+    //            //                            }
+    //            //                        }
+    //            //                        if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] && setvalue==false)
+    //            //                        {
+    //            //                            self.cancommit = false;
+    //            //                        }
+    //            //                    }
+    //            //                    else
+    //            //                    {
+    //            //                        //not support multi select for now;
+    //            //                    }
+    //            //                    /*
+    //            //                     upparams setValue:itemjson forKey:<#(NSString *)#>
+    //            //
+    //            //                     */
+    //            //                }else
+    //            //                    if([[itemjson valueForKey:@"control"] isEqualToString:@"action"])
+    //            //                    {
+    //            //                        if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] && [itemjson objectForKeyedSubscript:@"data"]==nil)
+    //            //                            self.cancommit = false;
+    //            //                    }
+    //            //                    else if([[itemjson valueForKey:@"control"] isEqualToString:@"signature"])
+    //            //                    {
+    //            //                        if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] && [itemjson objectForKeyedSubscript:@"value"] ==nil)
+    //            //                            self.cancommit = false;
+    //            //
+    //            //                        NSString* valuestr = [itemjson valueForKey:@"value"];
+    //            //                        [upparams setValue:valuestr forKey:[itemjson valueForKey:@"name"]];
+    //            //                    }
+    //            //                    else if([[itemjson valueForKey:@"control"] isEqualToString:@"switch"])
+    //            //                    {
+    //            //                        NSString* valuestr = [itemjson valueForKey:@"value"];
+    //            //                        [upparams setValue:valuestr forKey:[itemjson valueForKey:@"name"]];
+    //            //
+    //            //                        NSString* value = [itemjson valueForKey:@"value"];
+    //            //                        NSMutableDictionary* boolitem=nil;
+    //            //                        NSMutableDictionary* subjson=nil;
+    //            //                        if([value isEqualToString:@"true"])
+    //            //                        {
+    //            //                            boolitem =[[itemjson objectForKey:@"true"] mutableCopy];
+    //            //
+    //            //                        }
+    //            //                        else
+    //            //                        {
+    //            //                            boolitem =[[itemjson objectForKey:@"false"] mutableCopy];
+    //            //
+    //            //                        }
+    //            //                        subjson=[[boolitem objectForKey:@"sub_item"] mutableCopy];
+    //            //                        if( subjson!=nil /*&& !active*/)
+    //            //                        {
+    //            //                            int sub_count = [[subjson valueForKey:@"count"] intValue];
+    //            //                            for(int l=0;l<sub_count;l++)
+    //            //                            {
+    //            //                                NSMutableDictionary * modify_item=[[subjson objectForKey:[NSString stringWithFormat:@"item_%d",l ]] mutableCopy];
+    //            //
+    //            //
+    //            //
+    //            //
+    //            //                                if([modify_item valueForKey:@"value"]!=nil && ![[modify_item valueForKey:@"value"]isEqualToString:@""])
+    //            //                                    [upparams setValue:[modify_item valueForKey:@"value"] forKey:[modify_item valueForKey:@"name"]];
+    //            //                                else
+    //            //                                {
+    //            //                                    if([[modify_item valueForKey:@"required"] isEqualToString: @"true"] )
+    //            //                                        self.cancommit = false;
+    //            //                                }
+    //            //                            }
+    //            //
+    //            //
+    //            //
+    //            //                        }
+    //            //                    }
+    //            //                    else
+    //            //                    {
+    //            //                        if([itemjson valueForKey:@"value"]!=nil && ![[itemjson valueForKey:@"value"]isEqualToString:@""])
+    //            //                            [upparams setValue:[itemjson valueForKey:@"value"] forKey:[itemjson valueForKey:@"name"]];
+    //            //                        else
+    //            //                        {
+    //            //                            if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] )
+    //            //                                self.cancommit = false;
+    //            //                        }
+    //            //                    }
+    //            //                upparams= [self subitem_param:itemjson addto:upparams ];
+    //            //            }
+    //            //        }
+    //            //        if(self.cancommit==false)
+    //            //        {
+    //            //            [RAUtils alert_view:@"Fields with * mark cannot be empty." title:@"Some Requried Fields Are Missing."];
+    //            //            self.content_data_control = [self translate_json:self.content_data_download changed:self.changed_data];
+    //            //            //DebugLog(@"CONTENT translate:%@",[iSalesNetwork DataTOjsonString:self.content_data]);
+    //            //            //[self.editorTable reloadData ];
+    //            //            [self.editorTable reloadData];
+    //            //            //  [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+    //            //            return;
+    //            //        }
+    //
+    //            NSMutableDictionary* upparams = [self check_cancommit:true];
+    //            if(self.cancommit==false)
+    //                return;
+    //
+    //            if(upparams[@"shipping"]==nil)
+    //                goto commit_order;
+    //            if([upparams[@"shipping"] isEqualToString:@"Shipping To Be Quoted"]||[upparams[@"shipping"] isEqualToString:@"To Be Quoted"])
+    //            {
+    //                upparams[@"shipping"] = nil;
+    //                goto commit_order;
+    //            }
+    //            else if([upparams[@"shipping"] doubleValue]==0)
+    //            {
+    //
+    //
+    //                UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Shipping is $0.00, continue submit?" message:nil preferredStyle:UIAlertControllerStyleAlert];
+    //                //block代码块取代了delegate
+    //
+    //
+    //
+    //                UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action)
+    //                                            {
+    //
+    //                                                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    //
+    //                                                if(appDelegate.user_type ==USER_ROLE_EMPLOYEE )
+    //                                                {
+    //
+    //                                                    if(/*!self.have_tail*/ true)
+    //                                                    {UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Order Submission"];
+    //                                                        [upparams setValue:@"false" forKey:@"isHold"];
+    //                                                        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+    //
+    //                                                            NSDictionary* editor_json = [iSalesNetwork saveandcommit_Order:upparams];
+    //
+    //                                                            dispatch_async(dispatch_get_main_queue(), ^{
+    //                                                                [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+    //
+    //
+    //                                                                if([[editor_json valueForKey:@"result"] intValue]==2)
+    //                                                                {
+    //                                                                    //          NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
+    //
+    //                                                                    // debug aaa
+    //                                                                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    //                                                                    NSString* company= appDelegate.customerInfo[@"customer_name"];
+    //                                                                    NSString* send_to =appDelegate.customerInfo[@"customer_email"];
+    //
+    //                                                                    //                                appDelegate.customerInfo = customerInfo;
+    //                                                                    //                                appDelegate.contact_id = [customerInfo valueForKey:@"customer_cid"];
+    //                                                                    //                                appDelegate.order_code = nil;
+    //                                                                    [appDelegate closeOrder];
+    //                                                                    [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+    //
+    //                                                                    NSString* title=nil;
+    //                                                                    NSString* msg=nil;
+    //                                                                    if(appDelegate.offline_mode)
+    //                                                                    {
+    //                                                                        title=TITLE_OFFLINE_SUBMIT;
+    //                                                                        msg=MSG_OFFLINE_SUBMIT;
+    //                                                                    }
+    //                                                                    else
+    //                                                                    {
+    //                                                                        title=@"Submit successful.";
+    //                                                                        msg=[NSString stringWithFormat:@"SO#: %@",[editor_json valueForKey:@"so#"]];
+    //                                                                    }
+    //
+    //                                                                    UIAlertView * alert = [[UIAlertView alloc] initWithTitle: title message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
+    //
+    //                                                                    [alert show];
+    //
+    //                                                                    NSString* pdf_url = [editor_json valueForKey:@"pdf_url"];
+    //                                                                    NSString* email_content =[editor_json valueForKey:@"email_content"];
+    //                                                                    NSString* soid=[editor_json valueForKey:@"so#"];
+    //                                                                    //                                                                if(pdf_url.length>0)
+    //                                                                    //                                                                {
+    //                                                                    //
+    //                                                                    //                                                                    [alert dismissWithClickedButtonIndex:0 animated:FALSE];
+    //                                                                    //                                                                    //[self downloadpdf:pdf_url];
+    //                                                                    //
+    //                                                                    //
+    //                                                                    //                                                                    if([appDelegate.mode isEqualToString:@"Trade Show Mode"]&& appDelegate.submit_order_logout)
+    //                                                                    //                                                                    {
+    //                                                                    //                                                                        //bbb
+    //                                                                    //                                                                        [((MainViewController*)appDelegate.main_vc) Loginout:false];
+    //                                                                    //                                                                    }
+    //                                                                    //
+    //                                                                    //                                                                    [self prepareReturn:nil];
+    //                                                                    //
+    //                                                                    //                                                                    [self.navigationController popViewControllerAnimated:true];
+    //                                                                    //
+    //                                                                    //                                                                    [appDelegate printPdf:pdf_url];
+    //                                                                    ////                                                                    if(self.printPdfCallback)
+    //                                                                    ////                                                                        self.printPdfCallback(pdf_url);
+    //                                                                    //                                                                }
+    //                                                                    //                                                                else
+    //                                                                    {
+    //                                                                        if([appDelegate.mode isEqualToString:@"TM"]&& appDelegate.submit_order_logout)
+    //                                                                        {
+    //                                                                            //bbb
+    //                                                                            [((MainViewController*)appDelegate.main_vc) Loginout:false];
+    //                                                                        }
+    //                                                                        [self prepareReturn:nil];
+    //
+    //                                                                        [self.navigationController popViewControllerAnimated:true];
+    //
+    //                                                                        if(pdf_url.length>0)
+    //                                                                        {
+    //
+    //                                                                            [alert dismissWithClickedButtonIndex:0 animated:FALSE];
+    //                                                                            [appDelegate printPdf:pdf_url company:company send_to:send_to soid:soid content:email_content];
+    //                                                                            //  [appDelegate printPdf:pdf_url];
+    //
+    //                                                                        }
+    //                                                                    }
+    //
+    //                                                                }
+    //                                                                else
+    //                                                                {
+    //                                                                    [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:@"Order Submission" controller:self] ;
+    //                                                                }
+    //
+    //
+    //
+    //
+    //                                                            });
+    //                                                        });
+    //                                                    }
+    //                                                    else
+    //                                                    {
+    //                                                        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Retain models", nil) message:NSLocalizedString(@"There are some models left in cart,do you want to keep them?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
+    //
+    //
+    //                                                        alert.tag = KEEP_TAIL;
+    //
+    //
+    //                                                        self.upparams = upparams;
+    //
+    //                                                        [alert show];
+    //                                                    }
+    //
+    //                                                }
+    //                                                else
+    //                                                { //USER_ROLE_CUSTOMER
+    //
+    //                                                    //            if(self.have_tail)
+    //                                                    //            [upparams setValue:@"true" forKey:@"isHold"];
+    //                                                    //            else
+    //                                                    //                [upparams setValue:@"false" forKey:@"isHold"];
+    //                                                    UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Order Submission"];
+    //
+    //                                                    [upparams setValue:@"true" forKey:@"isHold"];
+    //                                                    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+    //
+    //                                                        NSDictionary* editor_json = [iSalesNetwork saveandcommit_Order:upparams];
+    //
+    //                                                        dispatch_async(dispatch_get_main_queue(), ^{
+    //
+    //                                                            [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+    //
+    //                                                            if([[editor_json valueForKey:@"result"] intValue]==2)
+    //                                                            {
+    //                                                                //       NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
+    //
+    //
+    //                                                                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    //                                                                // appDelegate.customerInfo = customerInfo;
+    //
+    //                                                                //                                                            NSString* orderCode = [editor_json valueForKey:@"orderCode"];
+    //                                                                //                                                            appDelegate.order_code = orderCode;
+    //                                                                //                                                            appDelegate.order_status = [[editor_json valueForKey:@"orderStatus"] intValue];
+    //                                                                [appDelegate closeOrder];
+    //                                                                [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+    //
+    //                                                                NSString* title=nil;
+    //                                                                NSString* msg=nil;
+    //                                                                if(appDelegate.offline_mode)
+    //                                                                {
+    //                                                                    title=TITLE_OFFLINE_SUBMIT;
+    //                                                                    msg=MSG_OFFLINE_SUBMIT;
+    //                                                                }
+    //                                                                else
+    //                                                                {
+    //                                                                    title=@"Submit successful.";
+    //                                                                    msg=[NSString stringWithFormat:@"SO#: %@",[editor_json valueForKey:@"so#"]];
+    //                                                                }
+    //
+    //                                                                UIAlertView * alert = [[UIAlertView alloc] initWithTitle: title message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
+    //
+    //                                                                [alert show];
+    //                                                                //    //     self.labelContact.text=appDelegate.contact_name;
+    //                                                                //
+    //                                                                //    NSDictionary * customerinfo = appDelegate.customerInfo;
+    //                                                                [self prepareReturn:nil];
+    //                                                                [self.navigationController popViewControllerAnimated:true];
+    //                                                                //                                    [self.navigationController dismissViewControllerAnimated:true completion:^{
+    //                                                                //
+    //                                                                //
+    //                                                                //                                        ;
+    //                                                                //                                    }];
+    //
+    //                                                            }
+    //                                                            else
+    //                                                            {
+    //                                                                [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:@"Order Submission" controller:self] ;
+    //                                                            }
+    //
+    //
+    //
+    //
+    //                                                        });
+    //                                                    });
+    //
+    //                                                }
+    //
+    //
+    //
+    //                                            }];
+    //
+    //                UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+    //                    //DebugLog(@"Cancel");
+    //
+    //
+    //                }];
+    //                [alertControl addAction:actionOne];
+    //
+    //                [alertControl addAction:alertthree];
+    //
+    //                //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+    //
+    //
+    //
+    //
+    //                [self presentViewController:alertControl animated:YES completion:nil];
+    //
+    //
+    //
+    //            }
+    //            else
+    //            {
+    //            commit_order:
+    //
+    //                {
+    //                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    //
+    //                    if(appDelegate.user_type ==USER_ROLE_EMPLOYEE )
+    //                    {
+    //
+    //                        if(/*!self.have_tail*/ true)
+    //                        {UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Order Submission"];
+    //                            [upparams setValue:@"false" forKey:@"isHold"];
+    //                            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+    //
+    //                                NSDictionary* editor_json = [iSalesNetwork saveandcommit_Order:upparams];
+    //
+    //                                dispatch_async(dispatch_get_main_queue(), ^{
+    //                                    [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+    //
+    //
+    //                                    if([[editor_json valueForKey:@"result"] intValue]==2)
+    //                                    {
+    //
+    //                                        //debug bbb
+    //                                        //    NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
+    //
+    //
+    //                                        AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    //                                        NSString* company= appDelegate.customerInfo[@"customer_name"];
+    //                                        NSString* send_to =appDelegate.customerInfo[@"customer_email"];
+    //                                        //                                appDelegate.customerInfo = customerInfo;
+    //                                        //                                appDelegate.contact_id = [customerInfo valueForKey:@"customer_cid"];
+    //                                        //                                appDelegate.order_code = nil;
+    //                                        [appDelegate closeOrder];
+    //                                        [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+    //
+    //                                        NSString* title=nil;
+    //                                        NSString* msg=nil;
+    //                                        if(appDelegate.offline_mode)
+    //                                        {
+    //                                            title=TITLE_OFFLINE_SUBMIT;
+    //                                            msg=MSG_OFFLINE_SUBMIT;
+    //                                        }
+    //                                        else
+    //                                        {
+    //                                            title=@"Submit successful.";
+    //                                            msg=[NSString stringWithFormat:@"SO#: %@",[editor_json valueForKey:@"so#"]];
+    //                                        }
+    //
+    //                                        UIAlertView * alert = [[UIAlertView alloc] initWithTitle: title message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
+    //
+    //                                        [alert show];
+    //
+    //                                        NSString* pdf_url = [editor_json valueForKey:@"pdf_url"];
+    //                                        NSString* email_content =[editor_json valueForKey:@"email_content"];
+    //                                        NSString* soid=[editor_json valueForKey:@"so#"];
+    //                                        //                                    if(pdf_url.length>0)
+    //                                        //                                    {
+    //                                        //
+    //                                        //                                        [alert dismissWithClickedButtonIndex:0 animated:FALSE];
+    //                                        ////                                        [self downloadpdf:pdf_url];
+    //                                        //
+    //                                        //
+    //                                        //                                        if([appDelegate.mode isEqualToString:@"Trade Show Mode"]&& appDelegate.submit_order_logout)
+    //                                        //                                        {
+    //                                        //                                            //bbb
+    //                                        //                                            [((MainViewController*)appDelegate.main_vc) Loginout:false];
+    //                                        //                                        }
+    //                                        //
+    //                                        //                                        [self prepareReturn:nil];
+    //                                        //
+    //                                        //                                        [self.navigationController popViewControllerAnimated:true];
+    //                                        //
+    //                                        //                                        [appDelegate printPdf:pdf_url];
+    //                                        //
+    //                                        ////                                        if(self.printPdfCallback)
+    //                                        ////                                            self.printPdfCallback(pdf_url);
+    //                                        //                                    }
+    //                                        //                                    else
+    //                                        {
+    //                                            if([appDelegate.mode isEqualToString:@"TM"]&& appDelegate.submit_order_logout)
+    //                                            {
+    //                                                //bbb
+    //                                                [((MainViewController*)appDelegate.main_vc) Loginout:false];
+    //                                            }
+    //                                            [self prepareReturn:nil];
+    //
+    //                                            [self.navigationController popViewControllerAnimated:true];
+    //
+    //
+    //                                            if(pdf_url.length>0)
+    //                                            {
+    //
+    //                                                [alert dismissWithClickedButtonIndex:0 animated:FALSE];
+    //
+    //                                                [appDelegate printPdf:pdf_url company:company send_to:send_to soid:soid content:email_content];
+    //
+    //
+    //                                            }
+    //
+    //
+    //                                        }
+    //                                        //    //     self.labelContact.text=appDelegate.contact_name;
+    //                                        //
+    //                                        //    NSDictionary * customerinfo = appDelegate.customerInfo;
+    //
+    //
+    //
+    //
+    //
+    //
+    //                                    }
+    //                                    else
+    //                                    {
+    //                                        [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:@"Order Submission" controller:self] ;
+    //                                    }
+    //
+    //
+    //
+    //
+    //                                });
+    //                            });
+    //                        }
+    //                        else
+    //                        {
+    //                            UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Retain models", nil) message:NSLocalizedString(@"There are some models left in cart,do you want to keep them?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
+    //
+    //
+    //                            alert.tag = KEEP_TAIL;
+    //
+    //
+    //                            self.upparams = upparams;
+    //
+    //                            [alert show];
+    //                        }
+    //
+    //                    }
+    //                    else
+    //                    { //USER_ROLE_CUSTOMER
+    //
+    //                        //            if(self.have_tail)
+    //                        //            [upparams setValue:@"true" forKey:@"isHold"];
+    //                        //            else
+    //                        //                [upparams setValue:@"false" forKey:@"isHold"];
+    //                        UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Order Submission"];
+    //
+    //                        [upparams setValue:@"true" forKey:@"isHold"];
+    //                        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+    //
+    //                            NSDictionary* editor_json = [iSalesNetwork saveandcommit_Order:upparams];
+    //
+    //                            dispatch_async(dispatch_get_main_queue(), ^{
+    //
+    //                                [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+    //
+    //                                if([[editor_json valueForKey:@"result"] intValue]==2)
+    //                                {
+    //                                    //       NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
+    //
+    //
+    //                                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    //                                    // appDelegate.customerInfo = customerInfo;
+    //
+    //                                    //                                NSString* orderCode = [editor_json valueForKey:@"orderCode"];
+    //                                    //                                appDelegate.order_code = orderCode;
+    //                                    //                                appDelegate.order_status = [[editor_json valueForKey:@"orderStatus"] intValue];
+    //                                    [appDelegate closeOrder];
+    //                                    [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+    //
+    //                                    NSString* title=nil;
+    //                                    NSString* msg=nil;
+    //                                    if(appDelegate.offline_mode)
+    //                                    {
+    //                                        title=TITLE_OFFLINE_SUBMIT;
+    //                                        msg=MSG_OFFLINE_SUBMIT;
+    //                                    }
+    //                                    else
+    //                                    {
+    //                                        title=@"Submit successful.";
+    //                                        msg=[NSString stringWithFormat:@"SO#: %@",[editor_json valueForKey:@"so#"]];
+    //                                    }
+    //
+    //
+    //                                    UIAlertView * alert = [[UIAlertView alloc] initWithTitle: title message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
+    //
+    //                                    [alert show];
+    //                                    //    //     self.labelContact.text=appDelegate.contact_name;
+    //                                    //
+    //                                    //    NSDictionary * customerinfo = appDelegate.customerInfo;
+    //                                    [self prepareReturn:nil];
+    //                                    //                            [self.navigationController dismissViewControllerAnimated:true completion:^{
+    //                                    //
+    //                                    //
+    //                                    //                                ;
+    //                                    //                            }];
+    //                                    [self.navigationController popViewControllerAnimated:true];
+    //
+    //                                }
+    //                                else
+    //                                {
+    //                                    [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:@"Order Submission" controller:self] ;
+    //                                }
+    //
+    //
+    //
+    //
+    //                            });
+    //                        });
+    //
+    //                    }
+    //                }
+    //
+    //
+    //
+    //
+    //            }
+    //
+    //
+    //
+    //
+    //
+    //
+    //
+    //
+    //
+    //
+    //
+    //        }
+    //    }];
+    //
+    //    //  [alertView setUseMotionEffects:true];
+    //
+    //
+    //    // And launch the dialog
+    //
+    //    [alertView sizeToFit];
+    //    [alertView show];
+    
+    //    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Submit Confirm.", nil) message:NSLocalizedString(msg, nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
+    //
+    //    alert.tag = SUBMIT_CONFIRM;
+    //    [alert show];
+    //
+    
+    UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Order Submission" message:msg preferredStyle:UIAlertControllerStyleAlert];
+    
+    UIAlertAction *yesAction = [UIAlertAction actionWithTitle:@"YES" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
+        
+        {
+            // add params check here.
+            [self.lastedit endEditing:true];
+            [self.lasttextview endEditing:true];
+            
+            
+            NSMutableDictionary* upparams = [self check_cancommit:true];
+            if(self.cancommit==false)
+                return;
+            
+            if(upparams[@"shipping"]==nil)
+                goto commit_order;
+            if([upparams[@"shipping"] isEqualToString:@"Shipping To Be Quoted"]||[upparams[@"shipping"] isEqualToString:@"To Be Quoted"])
+            {
+                upparams[@"shipping"] = nil;
+                goto commit_order;
+            }
+            else if([upparams[@"shipping"] doubleValue]==0)
+            {
+                
+                
+                UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Shipping is $0.00, continue submit?" message:nil preferredStyle:UIAlertControllerStyleAlert];
+                //block代码块取代了delegate
+                
+                
+                
+                UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action)
+                                            {
+                                                
+                                                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                                
+                                                if(appDelegate.user_type ==USER_ROLE_EMPLOYEE )
+                                                {
+                                                    
+                                                    if(/*!self.have_tail*/ true)
+                                                    {UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Order Submission"];
+                                                        [upparams setValue:@"false" forKey:@"isHold"];
+                                                        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                                                            
+                                                            NSDictionary* editor_json = [RANetwork saveandcommit_Order:upparams];
+                                                            
+                                                            dispatch_async(dispatch_get_main_queue(), ^{
+                                                                [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                                                
+                                                                
+                                                                if([[editor_json valueForKey:@"result"] intValue]==2)
+                                                                {
+                                                                    //          NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
+                                                                    
+                                                                    // debug aaa
+                                                                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                                                    NSString* company= appDelegate.customerInfo[@"customer_name"];
+                                                                    NSString* send_to =appDelegate.customerInfo[@"customer_email"];
+                                                                    
+                                                                    //                                appDelegate.customerInfo = customerInfo;
+                                                                    //                                appDelegate.contact_id = [customerInfo valueForKey:@"customer_cid"];
+                                                                    //                                appDelegate.order_code = nil;
+                                                                    [appDelegate closeOrder];
+                                                                    [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+                                                                    
+                                                                    NSString* title=nil;
+                                                                    NSString* msg=nil;
+#ifdef OFFLINE_MODE
+                                                                    if(appDelegate.offline_mode)
+                                                                    {
+                                                                        title=TITLE_OFFLINE_SUBMIT;
+                                                                        msg=MSG_OFFLINE_SUBMIT;
+                                                                    }
+                                                                    else
+#endif
+                                                                    {
+                                                                        title=@"Order submitted sucessfully";
+                                                                        msg=[NSString stringWithFormat:@"Confirmation#: %@",[editor_json valueForKey:@"so#"]];
+                                                                    }
+                                                                    
+                                                                    UIAlertView * alert = [[UIAlertView alloc] initWithTitle: title message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
+                                                                    
+                                                                    [alert show];
+                                                                    
+                                                                    NSString* pdf_url = [editor_json valueForKey:@"pdf_url"];
+                                                                    NSString* email_content =[editor_json valueForKey:@"email_content"];
+                                                                    NSString* soid=[editor_json valueForKey:@"so#"];
+                                                                    //                                                                if(pdf_url.length>0)
+                                                                    //                                                                {
+                                                                    //
+                                                                    //                                                                    [alert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                                                    //                                                                    //[self downloadpdf:pdf_url];
+                                                                    //
+                                                                    //
+                                                                    //                                                                    if([appDelegate.mode isEqualToString:@"Trade Show Mode"]&& appDelegate.submit_order_logout)
+                                                                    //                                                                    {
+                                                                    //                                                                        //bbb
+                                                                    //                                                                        [((MainViewController*)appDelegate.main_vc) Loginout:false];
+                                                                    //                                                                    }
+                                                                    //
+                                                                    //                                                                    [self prepareReturn:nil];
+                                                                    //
+                                                                    //                                                                    [self.navigationController popViewControllerAnimated:true];
+                                                                    //
+                                                                    //                                                                    [appDelegate printPdf:pdf_url];
+                                                                    ////                                                                    if(self.printPdfCallback)
+                                                                    ////                                                                        self.printPdfCallback(pdf_url);
+                                                                    //                                                                }
+                                                                    //                                                                else
+                                                                    {
+                                                                        if([appDelegate.mode isEqualToString:@"TM"]&& appDelegate.submit_order_logout)
+                                                                        {
+                                                                            //bbb
+                                                                            [((MainViewController*)appDelegate.main_vc) Loginout:false];
+                                                                        }
+                                                                        [self prepareReturn:nil];
+                                                                        
+                                                                        [self.navigationController popViewControllerAnimated:true];
+                                                                        
+                                                                        if(pdf_url.length>0)
+                                                                        {
+                                                                            
+                                                                            [alert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                                                            [appDelegate printPdf:pdf_url company:company send_to:send_to soid:soid content:email_content];
+                                                                            //  [appDelegate printPdf:pdf_url];
+                                                                            
+                                                                        }
+                                                                    }
+                                                                    
+                                                                }
+                                                                else
+                                                                {
+                                                                    [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:@"Order Submission" controller:self] ;
+                                                                }
+                                                                
+                                                                
+                                                                
+                                                                
+                                                            });
+                                                        });
+                                                    }
+                                                    else
+                                                    {
+                                                        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Retain models", nil) message:NSLocalizedString(@"There are some models left in cart,do you want to keep them?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
+                                                        
+                                                        
+                                                        alert.tag = KEEP_TAIL;
+                                                        
+                                                        
+                                                        self.upparams = upparams;
+                                                        
+                                                        [alert show];
+                                                    }
+                                                    
+                                                }
+                                                else
+                                                { //USER_ROLE_CUSTOMER
+                                                    
+                                                    //            if(self.have_tail)
+                                                    //            [upparams setValue:@"true" forKey:@"isHold"];
+                                                    //            else
+                                                    //                [upparams setValue:@"false" forKey:@"isHold"];
+                                                    UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Order Submission"];
+                                                    
+                                                    [upparams setValue:@"true" forKey:@"isHold"];
+                                                    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                                                        
+                                                        NSDictionary* editor_json = [RANetwork saveandcommit_Order:upparams];
+                                                        
+                                                        dispatch_async(dispatch_get_main_queue(), ^{
+                                                            
+                                                            [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                                            
+                                                            if([[editor_json valueForKey:@"result"] intValue]==2)
+                                                            {
+                                                                //       NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
+                                                                
+                                                                
+                                                                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                                                // appDelegate.customerInfo = customerInfo;
+                                                                
+                                                                //                                                            NSString* orderCode = [editor_json valueForKey:@"orderCode"];
+                                                                //                                                            appDelegate.order_code = orderCode;
+                                                                //                                                            appDelegate.order_status = [[editor_json valueForKey:@"orderStatus"] intValue];
+                                                                [appDelegate closeOrder];
+                                                                [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+                                                                
+                                                                NSString* title=nil;
+                                                                NSString* msg=nil;
+#ifdef OFFLINE_MODE
+                                                                if(appDelegate.offline_mode)
+                                                                {
+                                                                    title=TITLE_OFFLINE_SUBMIT;
+                                                                    msg=MSG_OFFLINE_SUBMIT;
+                                                                }
+                                                                else
+#endif
+                                                                {
+                                                                    title=@"Order submitted sucessfully";
+                                                                    msg=[NSString stringWithFormat:@"Confirmation#: %@",[editor_json valueForKey:@"so#"]];
+                                                                }
+                                                                
+                                                                UIAlertView * alert = [[UIAlertView alloc] initWithTitle: title message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
+                                                                
+                                                                [alert show];
+                                                                //    //     self.labelContact.text=appDelegate.contact_name;
+                                                                //
+                                                                //    NSDictionary * customerinfo = appDelegate.customerInfo;
+                                                                [self prepareReturn:nil];
+                                                                [self.navigationController popViewControllerAnimated:true];
+                                                                //                                    [self.navigationController dismissViewControllerAnimated:true completion:^{
+                                                                //
+                                                                //
+                                                                //                                        ;
+                                                                //                                    }];
+                                                                
+                                                            }
+                                                            else
+                                                            {
+                                                                [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:@"Order Submission" controller:self] ;
+                                                            }
+                                                            
+                                                            
+                                                            
+                                                            
+                                                        });
+                                                    });
+                                                    
+                                                }
+                                                
+                                                
+                                                
+                                            }];
+                
+                UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+                    //DebugLog(@"Cancel");
+                    
+                    
+                }];
+                [alertControl addAction:actionOne];
+                
+                [alertControl addAction:alertthree];
+                
+                //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+                
+                
+                
+                
+                [self presentViewController:alertControl animated:YES completion:nil];
+                
+                
+                
+            }
+            else
+            {
+            commit_order:
+                
+                {
+                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                    
+                    if(appDelegate.user_type ==USER_ROLE_EMPLOYEE )
+                    {
+                        
+                        if(/*!self.have_tail*/ true)
+                        {UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Order Submission"];
+                            [upparams setValue:@"false" forKey:@"isHold"];
+                            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                                
+                                NSDictionary* editor_json = [RANetwork saveandcommit_Order:upparams];
+                                
+                                dispatch_async(dispatch_get_main_queue(), ^{
+                                    [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                    
+                                    
+                                    if([[editor_json valueForKey:@"result"] intValue]==2)
+                                    {
+                                        
+                                        //debug bbb
+                                        //    NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
+                                        
+                                        
+                                        AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                        NSString* company= appDelegate.customerInfo[@"customer_name"];
+                                        NSString* send_to =appDelegate.customerInfo[@"customer_email"];
+                                        //                                appDelegate.customerInfo = customerInfo;
+                                        //                                appDelegate.contact_id = [customerInfo valueForKey:@"customer_cid"];
+                                        //                                appDelegate.order_code = nil;
+                                        [appDelegate closeOrder];
+                                        [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+                                        
+                                        NSString* title=nil;
+                                        NSString* msg=nil;
+#ifdef OFFLINE_MODE
+                                        if(appDelegate.offline_mode)
+                                        {
+                                            title=TITLE_OFFLINE_SUBMIT;
+                                            msg=MSG_OFFLINE_SUBMIT;
+                                        }
+                                        else
+#endif
+                                        {
+                                            title=@"Order submitted sucessfully";
+                                            msg=[NSString stringWithFormat:@"Confirmation#: %@",[editor_json valueForKey:@"so#"]];
+                                        }
+                                        
+                                        UIAlertView * alert = [[UIAlertView alloc] initWithTitle: title message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
+                                        
+                                        [alert show];
+                                        
+                                        NSString* pdf_url = [editor_json valueForKey:@"pdf_url"];
+                                        NSString* email_content =[editor_json valueForKey:@"email_content"];
+                                        NSString* soid=[editor_json valueForKey:@"so#"];
+                                        //                                    if(pdf_url.length>0)
+                                        //                                    {
+                                        //
+                                        //                                        [alert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                        ////                                        [self downloadpdf:pdf_url];
+                                        //
+                                        //
+                                        //                                        if([appDelegate.mode isEqualToString:@"Trade Show Mode"]&& appDelegate.submit_order_logout)
+                                        //                                        {
+                                        //                                            //bbb
+                                        //                                            [((MainViewController*)appDelegate.main_vc) Loginout:false];
+                                        //                                        }
+                                        //
+                                        //                                        [self prepareReturn:nil];
+                                        //
+                                        //                                        [self.navigationController popViewControllerAnimated:true];
+                                        //
+                                        //                                        [appDelegate printPdf:pdf_url];
+                                        //
+                                        ////                                        if(self.printPdfCallback)
+                                        ////                                            self.printPdfCallback(pdf_url);
+                                        //                                    }
+                                        //                                    else
+                                        {
+                                            NSMutableDictionary* value=[[NSMutableDictionary alloc]init];
+                                            if([appDelegate.mode isEqualToString:@"TM"]&& appDelegate.submit_order_logout)
+                                            {
+                                                //bbb
+                                                [((MainViewController*)appDelegate.main_vc) Loginout:false];
+                                                value[@"commitorder_logout"]=@"true";
+                                            }
+                                            
+                                            
+                                            value[@"is_subaction"] = self.params[@"is_subaction"];
+                                            value[@"subaction_tag"] = self.params[@"subaction_tag"];
+                                            
+                                            [self prepareReturn:value];
+                                            
+                                            [self.navigationController popViewControllerAnimated:true];
+                                            
+                                            
+                                            if(pdf_url.length>0)
+                                            {
+                                                
+                                                [alert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                                
+                                                [appDelegate printPdf:pdf_url company:company send_to:send_to soid:soid content:email_content];
+                                                
+                                                
+                                            }
+                                            
+                                            
+                                        }
+                                        //    //     self.labelContact.text=appDelegate.contact_name;
+                                        //
+                                        //    NSDictionary * customerinfo = appDelegate.customerInfo;
+                                        
+                                        
+                                        
+                                        
+                                        
+                                        
+                                    }
+                                    else
+                                    {
+                                        [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:@"Order Submission" controller:self] ;
+                                    }
+                                    
+                                    
+                                    
+                                    
+                                });
+                            });
+                        }
+                        else
+                        {
+                            UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Retain models", nil) message:NSLocalizedString(@"There are some models left in cart,do you want to keep them?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
+                            
+                            
+                            alert.tag = KEEP_TAIL;
+                            
+                            
+                            self.upparams = upparams;
+                            
+                            [alert show];
+                        }
+                        
+                    }
+                    else
+                    { //USER_ROLE_CUSTOMER
+                        
+                        //            if(self.have_tail)
+                        //            [upparams setValue:@"true" forKey:@"isHold"];
+                        //            else
+                        //                [upparams setValue:@"false" forKey:@"isHold"];
+                        UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Order Submission"];
+                        
+                        [upparams setValue:@"true" forKey:@"isHold"];
+                        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                            
+                            NSDictionary* editor_json = [RANetwork saveandcommit_Order:upparams];
+                            
+                            dispatch_async(dispatch_get_main_queue(), ^{
+                                
+                                [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                
+                                if([[editor_json valueForKey:@"result"] intValue]==2)
+                                {
+                                    //       NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
+                                    
+                                    
+                                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                    // appDelegate.customerInfo = customerInfo;
+                                    
+                                    //                                NSString* orderCode = [editor_json valueForKey:@"orderCode"];
+                                    //                                appDelegate.order_code = orderCode;
+                                    //                                appDelegate.order_status = [[editor_json valueForKey:@"orderStatus"] intValue];
+                                    [appDelegate closeOrder];
+                                    [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+                                    
+                                    NSString* title=nil;
+                                    NSString* msg=nil;
+#ifdef OFFLINE_MODE
+                                    if(appDelegate.offline_mode)
+                                    {
+                                        title=TITLE_OFFLINE_SUBMIT;
+                                        msg=MSG_OFFLINE_SUBMIT;
+                                    }
+                                    else
+#endif
+                                    {
+                                        title=@"Order submitted sucessfully";
+                                        msg=[NSString stringWithFormat:@"Confirmation#: %@",[editor_json valueForKey:@"so#"]];
+                                    }
+                                    
+                                    
+                                    UIAlertView * alert = [[UIAlertView alloc] initWithTitle: title message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
+                                    
+                                    [alert show];
+                                    //    //     self.labelContact.text=appDelegate.contact_name;
+                                    //
+                                    //    NSDictionary * customerinfo = appDelegate.customerInfo;
+                                    [self prepareReturn:nil];
+                                    //                            [self.navigationController dismissViewControllerAnimated:true completion:^{
+                                    //
+                                    //
+                                    //                                ;
+                                    //                            }];
+                                    [self.navigationController popViewControllerAnimated:true];
+                                    
+                                }
+                                else
+                                {
+                                    [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:@"Order Submission" controller:self] ;
+                                }
+                                
+                                
+                                
+                                
+                            });
+                        });
+                        
+                    }
+                }
+                
+                
+                
+                
+            }
+            
+            
+        }
+        
+    }];
+    
+    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"NO" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
+        
+    }];
+    
+    [alertVC addAction:yesAction];
+    [alertVC addAction:cancelAction];
+    
+    [self presentViewController:alertVC animated:yesAction completion:nil];
+    
+}
+- (UIView *)createDemoView:(NSString*) msg
+{
+    UIView *demoView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 290, 200)];
+    
+    //    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 270, 180)];
+    //    [imageView setImage:[UIImage imageNamed:@"demo"]];
+    
+    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 270, 10)];
+    titleLabel.font = [UIFont boldSystemFontOfSize:20];
+    titleLabel.text=@"Order Submission";
+    titleLabel.numberOfLines = 0;
+    titleLabel.lineBreakMode =NSLineBreakByWordWrapping;
+    //    titleLabel.textAlignment = NSTextAlignmentRight;
+    titleLabel.textAlignment = NSTextAlignmentCenter;
+    CGSize constraintkey = CGSizeMake(270, 20000.0f);//key label width is 40% cell width;
+    CGSize sizetitle = [titleLabel.text=@"Order Submission" sizeWithFont:[UIFont systemFontOfSize:20.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping];
+    
+    //[titleLabel sizeToFit];
+    //    titleLabel.center.x = demoView.center.x;
+    titleLabel.frame = CGRectMake(10, 10, 270, sizetitle.height);
+    [demoView addSubview:titleLabel];
+    
+    UILabel *lineLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, titleLabel.frame.origin.y+ titleLabel.frame.size.height+20, 260, 10)];
+    lineLabel.font = [UIFont systemFontOfSize:17];
+    lineLabel.text=msg;
+    lineLabel.numberOfLines = 0;
+    lineLabel.lineBreakMode =NSLineBreakByWordWrapping;
+    
+    CGSize sizemsg = [msg sizeWithFont:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping];
+    
+    lineLabel.frame = CGRectMake(15, titleLabel.frame.origin.y+ titleLabel.frame.size.height+20, 260, sizemsg.height);
+    //[lineLabel sizeToFit];
+    
+    [demoView addSubview:lineLabel];
+    demoView.frame = CGRectMake(0, 0, 290, lineLabel.frame.origin.y+lineLabel.frame.size.height+25);
+    return demoView;
+}
+- (void)onCloseClick:(UIButton *)sender {
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if (self.resumeOrder) {
+        [appDelegate.main_vc.navigationController popViewControllerAnimated:YES];
+        return;
+    }
+    
+    
+    UIAlertView * alert = nil;
+    if(appDelegate.order_status==0)
+    {
+        alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Choose your action", nil) message:NSLocalizedString(@"", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Switch to cart", nil),@"Switch to order history",NSLocalizedString(@"Close and cancel order", nil), nil];
+        
+    }
+    else
+    {
+        alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Choose your action", nil) message:NSLocalizedString(@"", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:@"Continue edit order",NSLocalizedString(@"Switch to cart", nil),@"Switch to order history",NSLocalizedString(@"Close and release order", nil), nil];
+        
+    }
+    
+    
+    
+    alert.tag = CLOSE_ACTION;
+    // alert.
+    [alert show];
+    
+    
+    //    if ([[upparams valueForKey:@"close_on_save"] boolValue]) {
+    //        appDelegate.order_code = nil;
+    //
+    //    }
+    
+    
+}
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+- (IBAction)onSaveClick:(id)sender {
+    //    id foo = nil;
+    //    [[NSMutableArray array] addObject:foo];
+    // add params check here.
+    [self.lastedit endEditing:true];
+    [self.lasttextview endEditing:true];
+    //    self.cancommit=true;
+    //    NSMutableDictionary* upparams=[[NSMutableDictionary alloc] init];
+    //    [upparams setValue:[self.params valueForKey:@"cart2Checkbox"] forKey:@"cart2Checkbox"];
+    //    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];
+    //        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];
+    //            NSString* key = [itemjson valueForKey:@"name"];
+    //            if(key==nil || key.length==0)
+    //                continue;
+    //            if([[itemjson valueForKey:@"control"] isEqualToString:@"enum"])
+    //            {
+    //                NSString* single_select = [itemjson valueForKey:@"single_select"];
+    //                if([single_select isEqualToString:@"true"])
+    //                {
+    //                    NSDictionary* cadejson=[itemjson objectForKey:@"cadedate"];
+    //                    int count = [[cadejson valueForKey:@"count"] intValue];
+    //                    bool setvalue = false;
+    //                    for(int cc=0;cc<count;cc++)
+    //                    {
+    //                        NSDictionary* valjson=[cadejson objectForKey:[NSString stringWithFormat:@"val_%d",cc]];
+    //                        if([[valjson valueForKey:@"check"]intValue]==1)
+    //                        {
+    //                            [upparams setValue:[valjson valueForKey:@"value_id"] forKey:[itemjson valueForKey:@"name"]];
+    //                            setvalue=true;
+    //                            break;
+    //                        }
+    //                    }
+    //                    if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] && setvalue==false)
+    //                    {
+    //                        self.cancommit = false;
+    //                    }
+    //                }
+    //                else
+    //                {
+    //                    //not support multi select for now;
+    //                }
+    //                /*
+    //                 upparams setValue:itemjson forKey:<#(NSString *)#>
+    //
+    //                 */
+    //            }else
+    //                if([[itemjson valueForKey:@"control"] isEqualToString:@"action"])
+    //                {
+    //                    if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] && [itemjson objectForKeyedSubscript:@"data"]==nil)
+    //                        self.cancommit = false;
+    //                }
+    //                else if([[itemjson valueForKey:@"control"] isEqualToString:@"signature"])
+    //                {
+    //                    if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] && [itemjson objectForKeyedSubscript:@"value"]==nil)
+    //                        self.cancommit = false;
+    //
+    //                    NSString* valuestr = [itemjson valueForKey:@"value"];
+    //                    [upparams setValue:valuestr forKey:[itemjson valueForKey:@"name"]];
+    //                }
+    //                else if([[itemjson valueForKey:@"control"] isEqualToString:@"switch"])
+    //                {
+    //                    NSString* valuestr = [itemjson valueForKey:@"value"];
+    //                    [upparams setValue:valuestr forKey:[itemjson valueForKey:@"name"]];
+    //
+    //                    NSString* value = [itemjson valueForKey:@"value"];
+    //                    NSMutableDictionary* boolitem=nil;
+    //                    NSMutableDictionary* subjson=nil;
+    //                    if([value isEqualToString:@"true"])
+    //                    {
+    //                        boolitem =[[itemjson objectForKey:@"true"] mutableCopy];
+    //
+    //                    }
+    //                    else
+    //                    {
+    //                        boolitem =[[itemjson objectForKey:@"false"] mutableCopy];
+    //
+    //                    }
+    //                    subjson=[[boolitem objectForKey:@"sub_item"] mutableCopy];
+    //                    if( subjson!=nil /*&& !active*/)
+    //                    {
+    //                        int sub_count = [[subjson valueForKey:@"count"] intValue];
+    //                        for(int l=0;l<sub_count;l++)
+    //                        {
+    //                            NSMutableDictionary * modify_item=[[subjson objectForKey:[NSString stringWithFormat:@"item_%d",l ]] mutableCopy];
+    //
+    //
+    //
+    //
+    //                            if([modify_item valueForKey:@"value"]!=nil && ![[modify_item valueForKey:@"value"]isEqualToString:@""])
+    //                                [upparams setValue:[modify_item valueForKey:@"value"] forKey:[modify_item valueForKey:@"name"]];
+    //                            else
+    //                            {
+    //                                if([[modify_item valueForKey:@"required"] isEqualToString: @"true"] )
+    //                                    self.cancommit = false;
+    //                            }
+    //                        }
+    //
+    //
+    //
+    //                    }
+    //                }
+    //                else
+    //                {
+    //                    if([itemjson valueForKey:@"value"]!=nil && ![[itemjson valueForKey:@"value"]isEqualToString:@""])
+    //                        [upparams setValue:[itemjson valueForKey:@"value"] forKey:[itemjson valueForKey:@"name"]];
+    //                    else
+    //                    {
+    //                        if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] )
+    //                            self.cancommit = false;
+    //                    }
+    //                }
+    //            upparams= [self subitem_param:itemjson addto:upparams ];
+    //        }
+    //    }
+    //    // save order 不检查必填项;
+    //    self.cancommit=true;
+    //    if(self.cancommit==false)
+    //    {
+    //        [RAUtils alert_view:@"Fields with * mark cannot be empty." title:@"Some Requried Fields Are Missing."];
+    //        self.content_data_control = [self translate_json:self.content_data_download changed:self.changed_data];
+    //        //DebugLog(@"CONTENT translate:%@",[iSalesNetwork DataTOjsonString:self.content_data]);
+    //        //[self.editorTable reloadData ];
+    //        [self.editorTable reloadData];
+    //        return;
+    //    }
+    
+    NSMutableDictionary* upparams = [self check_cancommit:false];
+    //    if(self.cancommit==false)
+    //        return;
+    
+    if([upparams[@"shipping"] isEqualToString:@"Shipping To Be Quoted"]||[upparams[@"shipping"] isEqualToString:@"To Be Quoted"])
+        upparams[@"shipping"] = nil;
+    
+    
+    UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Saving Order"];
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+        
+        NSDictionary* editor_json = [RANetwork save_Order:upparams];
+        
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+            
+            
+            if([[editor_json valueForKey:@"result"] intValue]==2)
+            {
+                
+                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                
+                
+                
+                NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
+                
+                
+                if(appDelegate.user_type ==USER_ROLE_EMPLOYEE)
+                {
+                    appDelegate.customerInfo = customerInfo;
+                    appDelegate.contact_id = [customerInfo valueForKey:@"customer_cid"];
+                }
+                NSString *msg = nil;
+                if ([editor_json objectForKey:@"so#"]) {
+                    msg = [@"SO#:" stringByAppendingString:[editor_json objectForKey:@"so#"]];
+                }
+                [RAUtils message_alert:msg title:@"Order Saved" controller:self] ;
+                
+                if([appDelegate.mode isEqualToString:@"TM"]&& appDelegate.save_order_logout && appDelegate.user_type ==USER_ROLE_EMPLOYEE)
+                {
+                    [((MainViewController*)appDelegate.main_vc) Loginout:false];
+                    [self prepareReturn:nil];
+                    [self.navigationController popViewControllerAnimated:true];
+                }
+                
+                if (appDelegate.user_type == USER_ROLE_CUSTOMER) {
+                    
+                    if (![Singleton sharedInstance].currentOrderIsMerged) {
+                        [self releaseOrderAfterSave];
+                    }
+                    
+                    
+                }
+                
+                
+                //                if ([[upparams valueForKey:@"close_on_save"] boolValue]) {
+                //                    appDelegate.order_code = nil;
+                //
+                //                }
+                //    //     self.labelContact.text=appDelegate.contact_name;
+                //
+                //    NSDictionary * customerinfo = appDelegate.customerInfo;
+                // [self prepareReturn:nil];
+                //                [self.navigationController dismissViewControllerAnimated:true completion:^{
+                //
+                //
+                //                    ;
+                //                }];
+                
+            }
+            else
+            {
+                [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:@"Save Order" controller:self] ;
+            }
+            
+            
+            
+            
+        });
+    });
+    
+}
+
+
+
+- (void)textFieldDidEndEditing:(UITextField *)textField
+{
+    
+    [super textFieldDidEndEditing:textField];
+    
+    UITableViewCell *cell = (UITableViewCell *) textField.superview.superview;
+    NSIndexPath *   indexPath = [self.editorTable indexPathForCell:cell];
+    
+    
+    NSMutableDictionary* section_json=nil;
+    
+    
+    //    DebugLog(@"endedit %d_%d",indexPath.section,indexPath.row);
+    NSMutableDictionary* item_json =[((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row] mutableCopy];
+    
+    
+    NSString* name = [item_json valueForKey:@"name"];
+    
+    if([name isEqualToString:@"shipping"]|| [name isEqualToString:@"handling_fee_value"]||[name isEqualToString:@"lift_gate_value"]||[name isEqualToString:@"tax_percentage"])
+    {
+        float shipping = [self getprice:@"shipping" section:indexPath.section];
+        float paymentsAndCredits = [self getprice:@"paymentsAndCredits" section:indexPath.section];
+        float handling_fee_value = [self getprice:@"handling_fee_value" section:indexPath.section];
+        float lift_gate =[self getprice:@"lift_gate_value" section:indexPath.section];
+        float tax = [self getprice:@"tax_percentage" section:indexPath.section]/100.0*paymentsAndCredits;
+        float totalprice=shipping+paymentsAndCredits+handling_fee_value+lift_gate+tax;
+        
+        section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]] mutableCopy];
+        int count=0;
+        
+        count=[[section_json valueForKey:@"count"] intValue];
+        
+        int total_row_idx=-1;
+        
+        for(int i=0;i<count;i++)
+        {
+            NSDictionary * olditem=[[section_json objectForKey:[NSString stringWithFormat:@"item_%d",i ]] mutableCopy];
+            if([[olditem valueForKey:@"name"] isEqualToString:@"totalPrice" ])
+            {
+                [olditem setValue:[NSString stringWithFormat:@"%.2f",totalprice] forKey:@"value"];
+                [olditem setValue:@"true" forKey:@"dirty"];
+                [section_json setObject:olditem  forKey:[NSString stringWithFormat:@"item_%d",i ]];
+                
+                total_row_idx=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];
+        
+        
+        if(total_row_idx>=0)
+        {
+            
+            
+            
+            NSUInteger newIndex[] = {indexPath.section, total_row_idx};
+            NSIndexPath *newPath = [[NSIndexPath alloc] initWithIndexes:newIndex length:2];
+            //        DebugLog(@"before refresh %@",NSStringFromCGSize(self.editorTable.contentSize));
+            [self.editorTable reloadRowsAtIndexPaths:@[newPath]withRowAnimation:UITableViewRowAnimationMiddle];
+            
+            //         DebugLog(@"after refresh %@",NSStringFromCGSize(self.editorTable.contentSize));
+            
+            
+            //            CGSize tablecontent =self.editorTable.contentSize;
+            //            tablecontent.height=tablecontent.height+self.keyboard_h;
+            //            self.editorTable.contentSize=tablecontent;
+            //
+            //
+            //            DebugLog(@"resize to %@",NSStringFromCGSize(self.editorTable.contentSize));
+        }
+        
+        //                self.content_data = [editor_json mutableCopy];
+        //                    self.content_data = [self translate_json:editor_json];
+        
+        //                  NSMutableDictionary* content_data1 = [self translate_json:self.content_data];
+        
+        //   [self.editorTable reloadData];
+        
+    }
+    //
+    //    [item_json setValue:@"true" forKey:@"dirty"];
+    //    [item_json setValue:textField.text forKey:@"value"];
+}
+
+
+-(float) getprice:(NSString*) name section :(long) index
+{
+    NSMutableDictionary* section_json=nil;
+    section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",index ]] 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 ]] mutableCopy];
+        if([[olditem valueForKey:@"name"] isEqualToString:name])
+        {
+            return [[olditem valueForKey:@"value"] floatValue];
+            
+        }
+        
+    }
+    
+    return 0;
+}
+/*
+ #pragma mark - Navigation
+ 
+ // In a storyboard-based application, you will often want to do a little preparation before navigation
+ - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+ // Get the new view controller using [segue destinationViewController].
+ // Pass the selected object to the new view controller.
+ }
+ */
+#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(buttonIndex!=alertView.cancelButtonIndex && alertView.tag == SUBMIT_CONFIRM)
+    {
+        // add params check here.
+        [self.lastedit endEditing:true];
+        [self.lasttextview endEditing:true];
+        
+        
+        
+        //        self.cancommit=true;
+        //        NSMutableDictionary* upparams=[[NSMutableDictionary alloc] init];
+        //        [upparams setValue:[self.params valueForKey:@"cart2Checkbox"] forKey:@"cart2Checkbox"];
+        //        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];
+        //            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];
+        //                NSString* key = [itemjson valueForKey:@"name"];
+        //                if(key==nil || key.length==0)
+        //                    continue;
+        //                if([[itemjson valueForKey:@"control"] isEqualToString:@"enum"])
+        //                {
+        //                    NSString* single_select = [itemjson valueForKey:@"single_select"];
+        //                    if([single_select isEqualToString:@"true"])
+        //                    {
+        //                        NSDictionary* cadejson=[itemjson objectForKey:@"cadedate"];
+        //                        int count = [[cadejson valueForKey:@"count"] intValue];
+        //                        bool setvalue = false;
+        //                        for(int cc=0;cc<count;cc++)
+        //                        {
+        //                            NSDictionary* valjson=[cadejson objectForKey:[NSString stringWithFormat:@"val_%d",cc]];
+        //                            if([[valjson valueForKey:@"check"]intValue]==1)
+        //                            {
+        //                                [upparams setValue:[valjson valueForKey:@"value_id"] forKey:[itemjson valueForKey:@"name"]];
+        //                                setvalue=true;
+        //                                break;
+        //                            }
+        //                        }
+        //                        if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] && setvalue==false)
+        //                        {
+        //                            self.cancommit = false;
+        //                        }
+        //                    }
+        //                    else
+        //                    {
+        //                        //not support multi select for now;
+        //                    }
+        //                    /*
+        //                     upparams setValue:itemjson forKey:<#(NSString *)#>
+        //
+        //                     */
+        //                }else
+        //                    if([[itemjson valueForKey:@"control"] isEqualToString:@"action"])
+        //                    {
+        //                        if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] && [itemjson objectForKeyedSubscript:@"data"]==nil)
+        //                            self.cancommit = false;
+        //                    }
+        //                    else if([[itemjson valueForKey:@"control"] isEqualToString:@"signature"])
+        //                    {
+        //                        if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] && [itemjson objectForKeyedSubscript:@"value"] ==nil)
+        //                            self.cancommit = false;
+        //
+        //                        NSString* valuestr = [itemjson valueForKey:@"value"];
+        //                        [upparams setValue:valuestr forKey:[itemjson valueForKey:@"name"]];
+        //                    }
+        //                    else if([[itemjson valueForKey:@"control"] isEqualToString:@"switch"])
+        //                    {
+        //                        NSString* valuestr = [itemjson valueForKey:@"value"];
+        //                        [upparams setValue:valuestr forKey:[itemjson valueForKey:@"name"]];
+        //
+        //                        NSString* value = [itemjson valueForKey:@"value"];
+        //                        NSMutableDictionary* boolitem=nil;
+        //                        NSMutableDictionary* subjson=nil;
+        //                        if([value isEqualToString:@"true"])
+        //                        {
+        //                            boolitem =[[itemjson objectForKey:@"true"] mutableCopy];
+        //
+        //                        }
+        //                        else
+        //                        {
+        //                            boolitem =[[itemjson objectForKey:@"false"] mutableCopy];
+        //
+        //                        }
+        //                        subjson=[[boolitem objectForKey:@"sub_item"] mutableCopy];
+        //                        if( subjson!=nil /*&& !active*/)
+        //                        {
+        //                            int sub_count = [[subjson valueForKey:@"count"] intValue];
+        //                            for(int l=0;l<sub_count;l++)
+        //                            {
+        //                                NSMutableDictionary * modify_item=[[subjson objectForKey:[NSString stringWithFormat:@"item_%d",l ]] mutableCopy];
+        //
+        //
+        //
+        //
+        //                                if([modify_item valueForKey:@"value"]!=nil && ![[modify_item valueForKey:@"value"]isEqualToString:@""])
+        //                                    [upparams setValue:[modify_item valueForKey:@"value"] forKey:[modify_item valueForKey:@"name"]];
+        //                                else
+        //                                {
+        //                                    if([[modify_item valueForKey:@"required"] isEqualToString: @"true"] )
+        //                                        self.cancommit = false;
+        //                                }
+        //                            }
+        //
+        //
+        //
+        //                        }
+        //                    }
+        //                    else
+        //                    {
+        //                        if([itemjson valueForKey:@"value"]!=nil && ![[itemjson valueForKey:@"value"]isEqualToString:@""])
+        //                            [upparams setValue:[itemjson valueForKey:@"value"] forKey:[itemjson valueForKey:@"name"]];
+        //                        else
+        //                        {
+        //                            if([[itemjson valueForKey:@"required"] isEqualToString: @"true"] )
+        //                                self.cancommit = false;
+        //                        }
+        //                    }
+        //                upparams= [self subitem_param:itemjson addto:upparams ];
+        //            }
+        //        }
+        //        if(self.cancommit==false)
+        //        {
+        //            [RAUtils alert_view:@"Fields with * mark cannot be empty." title:@"Some Requried Fields Are Missing."];
+        //            self.content_data_control = [self translate_json:self.content_data_download changed:self.changed_data];
+        //            //DebugLog(@"CONTENT translate:%@",[iSalesNetwork DataTOjsonString:self.content_data]);
+        //            //[self.editorTable reloadData ];
+        //            [self.editorTable reloadData];
+        //            //  [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+        //            return;
+        //        }
+        
+        NSMutableDictionary* upparams = [self check_cancommit:true];
+        if(self.cancommit==false)
+            return;
+        
+        if(upparams[@"shipping"]==nil)
+            goto commit_order;
+        if([upparams[@"shipping"] isEqualToString:@"Shipping To Be Quoted"]||[upparams[@"shipping"] isEqualToString:@"To Be Quoted"])
+        {
+            upparams[@"shipping"] = nil;
+            goto commit_order;
+        }
+        else if([upparams[@"shipping"] doubleValue]==0)
+        {
+            
+            
+            UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Shipping is $0.00, continue submit?" message:nil preferredStyle:UIAlertControllerStyleAlert];
+            //block代码块取代了delegate
+            
+            
+            
+            UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action)
+                                        {
+                                            
+                                            AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                            
+                                            if(appDelegate.user_type ==USER_ROLE_EMPLOYEE )
+                                            {
+                                                
+                                                if(/*!self.have_tail*/ true)
+                                                {UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Order Submission"];
+                                                    [upparams setValue:@"false" forKey:@"isHold"];
+                                                    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                                                        
+                                                        NSDictionary* editor_json = [RANetwork saveandcommit_Order:upparams];
+                                                        
+                                                        dispatch_async(dispatch_get_main_queue(), ^{
+                                                            [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                                            
+                                                            
+                                                            if([[editor_json valueForKey:@"result"] intValue]==2)
+                                                            {
+                                                                //          NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
+                                                                
+                                                                // debug aaa
+                                                                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                                                NSString* company= appDelegate.customerInfo[@"customer_name"];
+                                                                NSString* send_to =appDelegate.customerInfo[@"customer_email"];
+                                                                
+                                                                //                                appDelegate.customerInfo = customerInfo;
+                                                                //                                appDelegate.contact_id = [customerInfo valueForKey:@"customer_cid"];
+                                                                //                                appDelegate.order_code = nil;
+                                                                [appDelegate closeOrder];
+                                                                [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+                                                                
+                                                                NSString* title=nil;
+                                                                NSString* msg=nil;
+#ifdef OFFLINE_MODE
+                                                                if(appDelegate.offline_mode)
+                                                                {
+                                                                    title=TITLE_OFFLINE_SUBMIT;
+                                                                    msg=MSG_OFFLINE_SUBMIT;
+                                                                }
+                                                                else
+#endif
+                                                                {
+                                                                    title=@"Order submitted sucessfully";
+                                                                    msg=[NSString stringWithFormat:@"Confirmation#: %@",[editor_json valueForKey:@"so#"]];
+                                                                }
+                                                                
+                                                                UIAlertView * alert = [[UIAlertView alloc] initWithTitle: title message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
+                                                                
+                                                                [alert show];
+                                                                
+                                                                NSString* pdf_url = [editor_json valueForKey:@"pdf_url"];
+                                                                NSString* email_content =[editor_json valueForKey:@"email_content"];
+                                                                NSString* soid=[editor_json valueForKey:@"so#"];
+                                                                //                                                                if(pdf_url.length>0)
+                                                                //                                                                {
+                                                                //
+                                                                //                                                                    [alert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                                                //                                                                    //[self downloadpdf:pdf_url];
+                                                                //
+                                                                //
+                                                                //                                                                    if([appDelegate.mode isEqualToString:@"Trade Show Mode"]&& appDelegate.submit_order_logout)
+                                                                //                                                                    {
+                                                                //                                                                        //bbb
+                                                                //                                                                        [((MainViewController*)appDelegate.main_vc) Loginout:false];
+                                                                //                                                                    }
+                                                                //
+                                                                //                                                                    [self prepareReturn:nil];
+                                                                //
+                                                                //                                                                    [self.navigationController popViewControllerAnimated:true];
+                                                                //
+                                                                //                                                                    [appDelegate printPdf:pdf_url];
+                                                                ////                                                                    if(self.printPdfCallback)
+                                                                ////                                                                        self.printPdfCallback(pdf_url);
+                                                                //                                                                }
+                                                                //                                                                else
+                                                                {
+                                                                    if([appDelegate.mode isEqualToString:@"TM"]&& appDelegate.submit_order_logout)
+                                                                    {
+                                                                        //bbb
+                                                                        [((MainViewController*)appDelegate.main_vc) Loginout:false];
+                                                                    }
+                                                                    [self prepareReturn:nil];
+                                                                    
+                                                                    [self.navigationController popViewControllerAnimated:true];
+                                                                    
+                                                                    if(pdf_url.length>0)
+                                                                    {
+                                                                        
+                                                                        [alert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                                                        [appDelegate printPdf:pdf_url company:company send_to:send_to soid:soid content:email_content];
+                                                                        //  [appDelegate printPdf:pdf_url];
+                                                                        
+                                                                    }
+                                                                }
+                                                                
+                                                            }
+                                                            else
+                                                            {
+                                                                [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:@"Order Submission" controller:self] ;
+                                                            }
+                                                            
+                                                            
+                                                            
+                                                            
+                                                        });
+                                                    });
+                                                }
+                                                else
+                                                {
+                                                    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Retain models", nil) message:NSLocalizedString(@"There are some models left in cart,do you want to keep them?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
+                                                    
+                                                    
+                                                    alert.tag = KEEP_TAIL;
+                                                    
+                                                    
+                                                    self.upparams = upparams;
+                                                    
+                                                    [alert show];
+                                                }
+                                                
+                                            }
+                                            else
+                                            { //USER_ROLE_CUSTOMER
+                                                
+                                                //            if(self.have_tail)
+                                                //            [upparams setValue:@"true" forKey:@"isHold"];
+                                                //            else
+                                                //                [upparams setValue:@"false" forKey:@"isHold"];
+                                                UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Order Submission"];
+                                                
+                                                [upparams setValue:@"true" forKey:@"isHold"];
+                                                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                                                    
+                                                    NSDictionary* editor_json = [RANetwork saveandcommit_Order:upparams];
+                                                    
+                                                    dispatch_async(dispatch_get_main_queue(), ^{
+                                                        
+                                                        [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                                        
+                                                        if([[editor_json valueForKey:@"result"] intValue]==2)
+                                                        {
+                                                            //       NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
+                                                            
+                                                            
+                                                            AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                                            // appDelegate.customerInfo = customerInfo;
+                                                            
+                                                            //                                                            NSString* orderCode = [editor_json valueForKey:@"orderCode"];
+                                                            //                                                            appDelegate.order_code = orderCode;
+                                                            //                                                            appDelegate.order_status = [[editor_json valueForKey:@"orderStatus"] intValue];
+                                                            [appDelegate closeOrder];
+                                                            [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+                                                            
+                                                            NSString* title=nil;
+                                                            NSString* msg=nil;
+#ifdef OFFLINE_MODE
+                                                            if(appDelegate.offline_mode)
+                                                            {
+                                                                title=TITLE_OFFLINE_SUBMIT;
+                                                                msg=MSG_OFFLINE_SUBMIT;
+                                                            }
+                                                            else
+#endif
+                                                            {
+                                                                title=@"Order submitted sucessfully";
+                                                                msg=[NSString stringWithFormat:@"Confirmation#: %@",[editor_json valueForKey:@"so#"]];
+                                                            }
+                                                            
+                                                            UIAlertView * alert = [[UIAlertView alloc] initWithTitle: title message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
+                                                            
+                                                            [alert show];
+                                                            //    //     self.labelContact.text=appDelegate.contact_name;
+                                                            //
+                                                            //    NSDictionary * customerinfo = appDelegate.customerInfo;
+                                                            [self prepareReturn:nil];
+                                                            [self.navigationController popViewControllerAnimated:true];
+                                                            //                                    [self.navigationController dismissViewControllerAnimated:true completion:^{
+                                                            //
+                                                            //
+                                                            //                                        ;
+                                                            //                                    }];
+                                                            
+                                                        }
+                                                        else
+                                                        {
+                                                            [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:@"Order Submission" controller:self] ;
+                                                        }
+                                                        
+                                                        
+                                                        
+                                                        
+                                                    });
+                                                });
+                                                
+                                            }
+                                            
+                                            
+                                            
+                                        }];
+            
+            UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+                //DebugLog(@"Cancel");
+                
+                
+            }];
+            [alertControl addAction:actionOne];
+            
+            [alertControl addAction:alertthree];
+            
+            //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+            
+            
+            
+            
+            [self presentViewController:alertControl animated:YES completion:nil];
+            
+            
+            
+        }
+        else
+        {
+        commit_order:
+            
+            {
+                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                
+                if(appDelegate.user_type ==USER_ROLE_EMPLOYEE )
+                {
+                    
+                    if(/*!self.have_tail*/ true)
+                    {UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Order Submission"];
+                        [upparams setValue:@"false" forKey:@"isHold"];
+                        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                            
+                            NSDictionary* editor_json = [RANetwork saveandcommit_Order:upparams];
+                            
+                            dispatch_async(dispatch_get_main_queue(), ^{
+                                [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                
+                                
+                                if([[editor_json valueForKey:@"result"] intValue]==2)
+                                {
+                                    
+                                    //debug bbb
+                                    //    NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
+                                    
+                                    
+                                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                    NSString* company= appDelegate.customerInfo[@"customer_name"];
+                                    NSString* send_to =appDelegate.customerInfo[@"customer_email"];
+                                    //                                appDelegate.customerInfo = customerInfo;
+                                    //                                appDelegate.contact_id = [customerInfo valueForKey:@"customer_cid"];
+                                    //                                appDelegate.order_code = nil;
+                                    [appDelegate closeOrder];
+                                    [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+                                    
+                                    NSString* title=nil;
+                                    NSString* msg=nil;
+#ifdef OFFLINE_MODE
+                                    if(appDelegate.offline_mode)
+                                    {
+                                        title=TITLE_OFFLINE_SUBMIT;
+                                        msg=MSG_OFFLINE_SUBMIT;
+                                    }
+                                    else
+#endif
+                                    {
+                                        title=@"Order submitted sucessfully";
+                                        msg=[NSString stringWithFormat:@"Confirmation#: %@",[editor_json valueForKey:@"so#"]];
+                                    }
+                                    
+                                    UIAlertView * alert = [[UIAlertView alloc] initWithTitle: title message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
+                                    
+                                    [alert show];
+                                    
+                                    NSString* pdf_url = [editor_json valueForKey:@"pdf_url"];
+                                    NSString* email_content =[editor_json valueForKey:@"email_content"];
+                                    NSString* soid=[editor_json valueForKey:@"so#"];
+                                    //                                    if(pdf_url.length>0)
+                                    //                                    {
+                                    //
+                                    //                                        [alert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                    ////                                        [self downloadpdf:pdf_url];
+                                    //
+                                    //
+                                    //                                        if([appDelegate.mode isEqualToString:@"Trade Show Mode"]&& appDelegate.submit_order_logout)
+                                    //                                        {
+                                    //                                            //bbb
+                                    //                                            [((MainViewController*)appDelegate.main_vc) Loginout:false];
+                                    //                                        }
+                                    //
+                                    //                                        [self prepareReturn:nil];
+                                    //
+                                    //                                        [self.navigationController popViewControllerAnimated:true];
+                                    //
+                                    //                                        [appDelegate printPdf:pdf_url];
+                                    //
+                                    ////                                        if(self.printPdfCallback)
+                                    ////                                            self.printPdfCallback(pdf_url);
+                                    //                                    }
+                                    //                                    else
+                                    {
+                                        if([appDelegate.mode isEqualToString:@"TM"]&& appDelegate.submit_order_logout)
+                                        {
+                                            //bbb
+                                            [((MainViewController*)appDelegate.main_vc) Loginout:false];
+                                        }
+                                        [self prepareReturn:nil];
+                                        
+                                        [self.navigationController popViewControllerAnimated:true];
+                                        
+                                        
+                                        if(pdf_url.length>0)
+                                        {
+                                            
+                                            [alert dismissWithClickedButtonIndex:0 animated:FALSE];
+                                            
+                                            [appDelegate printPdf:pdf_url company:company send_to:send_to soid:soid content:email_content];
+                                            
+                                            
+                                        }
+                                        
+                                        
+                                    }
+                                    //    //     self.labelContact.text=appDelegate.contact_name;
+                                    //
+                                    //    NSDictionary * customerinfo = appDelegate.customerInfo;
+                                    
+                                    
+                                    
+                                    
+                                    
+                                    
+                                }
+                                else
+                                {
+                                    [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:@"Order Submission" controller:self] ;
+                                }
+                                
+                                
+                                
+                                
+                            });
+                        });
+                    }
+                    else
+                    {
+                        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Retain models", nil) message:NSLocalizedString(@"There are some models left in cart,do you want to keep them?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
+                        
+                        
+                        alert.tag = KEEP_TAIL;
+                        
+                        
+                        self.upparams = upparams;
+                        
+                        [alert show];
+                    }
+                    
+                }
+                else
+                { //USER_ROLE_CUSTOMER
+                    
+                    //            if(self.have_tail)
+                    //            [upparams setValue:@"true" forKey:@"isHold"];
+                    //            else
+                    //                [upparams setValue:@"false" forKey:@"isHold"];
+                    UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Order Submission"];
+                    
+                    [upparams setValue:@"true" forKey:@"isHold"];
+                    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                        
+                        NSDictionary* editor_json = [RANetwork saveandcommit_Order:upparams];
+                        
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            
+                            [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+                            
+                            if([[editor_json valueForKey:@"result"] intValue]==2)
+                            {
+                                //       NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
+                                
+                                
+                                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                                // appDelegate.customerInfo = customerInfo;
+                                
+                                //                                NSString* orderCode = [editor_json valueForKey:@"orderCode"];
+                                //                                appDelegate.order_code = orderCode;
+                                //                                appDelegate.order_status = [[editor_json valueForKey:@"orderStatus"] intValue];
+                                [appDelegate closeOrder];
+                                [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+                                
+                                NSString* title=nil;
+                                NSString* msg=nil;
+#ifdef OFFLINE_MODE
+                                if(appDelegate.offline_mode)
+                                {
+                                    title=TITLE_OFFLINE_SUBMIT;
+                                    msg=MSG_OFFLINE_SUBMIT;
+                                }
+                                else
+#endif
+                                {
+                                    title=@"Order submitted sucessfully";
+                                    msg=[NSString stringWithFormat:@"Confirmation#: %@",[editor_json valueForKey:@"so#"]];
+                                }
+                                
+                                
+                                UIAlertView * alert = [[UIAlertView alloc] initWithTitle: title message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
+                                
+                                [alert show];
+                                //    //     self.labelContact.text=appDelegate.contact_name;
+                                //
+                                //    NSDictionary * customerinfo = appDelegate.customerInfo;
+                                [self prepareReturn:nil];
+                                //                            [self.navigationController dismissViewControllerAnimated:true completion:^{
+                                //
+                                //
+                                //                                ;
+                                //                            }];
+                                [self.navigationController popViewControllerAnimated:true];
+                                
+                            }
+                            else
+                            {
+                                [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:@"Order Submission" controller:self] ;
+                            }
+                            
+                            
+                            
+                            
+                        });
+                    });
+                    
+                }
+            }
+
+        }
+        
+        
+    }
+    
+
+    else if(alertView.tag == CLOSE_ACTION)
+    {
+        if (buttonIndex == 1) {
+            // back edit order
+            [self.navigationController popViewControllerAnimated:YES];
+        }
+        else if(buttonIndex==2)
+        {
+            // back to cart
+            [self.navigationController popToRootViewControllerAnimated:true];
+
+        }
+        else if(buttonIndex==3)
+        {
+            
+            [self.navigationController popViewControllerAnimated:false];
+            
+            
+            AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+            
+            [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false];
+            [((MainViewController*)appDelegate.main_vc) switchToOrder];
+
+        }
+        else if(buttonIndex==4)
+        {
+            // close order;
+            
+            
+            AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+            UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Release Order"];
+            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                
+                NSDictionary* order_json = [RANetwork release_Order:appDelegate.order_code withScreen:nil];
+                
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+                    if([[order_json valueForKey:@"result"] intValue]==2)
+                    {
+                        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];
+                        }
+                        
+                        [self prepareReturn:nil];
+                        
+                        
+                        [self.navigationController popViewControllerAnimated:true];
+                        //                        [self.navigationController dismissViewControllerAnimated:true completion:^{
+                        //                            ;
+                        //                        }];
+                        
+                    }
+                    else
+                    {
+                        [RAUtils message_alert:[order_json valueForKey:@"err_msg"] title:@"Open Order"controller:self] ;
+                    }
+                    
+                    
+                    
+                });
+            });
+
+        }
+    }
+}
+
+- (void)releaseOrderAfterSave {
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    [RANetwork release_Order:appDelegate.order_code withScreen:nil];
+    
+    [appDelegate closeOrder];
+    [appDelegate SetSo:nil];
+    appDelegate.cart_count=0;
+    [appDelegate update_count_mark];
+    [((MainViewController*)appDelegate.main_vc) switchToOrder];
+    
+    [self prepareReturn:nil];
+    [self.navigationController popToRootViewControllerAnimated:false];
+    
+}
+
+-(NSString* )create_customer_ext:(NSDictionary*)customerinfo
+{
+    NSString* ret=nil;
+    NSString* customer_address1= [customerinfo valueForKey:@"customer_address1"];
+    NSString* customer_address2= [customerinfo valueForKey:@"customer_address2"];
+    NSString* customer_address3= [customerinfo valueForKey:@"customer_address3"];
+    NSString* customer_address4= [customerinfo valueForKey:@"customer_address4"];
+    
+    NSMutableArray* arraddr = [[NSMutableArray alloc] init];
+    if(customer_address1.length>0)
+        [arraddr addObject:customer_address1];
+    if(customer_address2.length>0)
+        [arraddr addObject:customer_address2];
+    if(customer_address3.length>0)
+        [arraddr addObject:customer_address3];
+    if(customer_address4.length>0)
+        [arraddr addObject:customer_address4];
+    NSString *addr_string = [arraddr componentsJoinedByString:@"\r\n"];
+    
+    
+    NSString* customer_city= [customerinfo valueForKey:@"customer_city"];
+    NSString* customer_country= [customerinfo valueForKey:@"customer_country"];
+    NSString* customer_zipcode= [customerinfo valueForKey:@"customer_zipcode"];
+    NSString* customer_state= [customerinfo valueForKey:@"customer_state"];
+    
+    NSMutableArray* arrcty = [[NSMutableArray alloc] init];
+    if(customer_city.length>0)
+        [arrcty addObject:customer_city];
+    if(customer_state.length>0)
+        [arrcty addObject:customer_state];
+    if(customer_zipcode.length>0)
+        [arrcty addObject:customer_zipcode];
+    if(customer_country.length>0)
+        [arrcty addObject:customer_country];
+    NSString *cty_string = [arrcty componentsJoinedByString:@", "];
+    
+    
+    //    NSString* customer_phone= [customerinfo valueForKey:@"customer_phone"];
+    //    NSString* customer_fax= [customerinfo valueForKey:@"customer_fax"];
+    //
+    //    NSMutableArray* arrpho = [[NSMutableArray alloc] init];
+    //    if(customer_phone.length>0)
+    //    {
+    //        customer_phone = [NSString stringWithFormat:@"TEL: %@",customer_phone];
+    //        [arrpho addObject:customer_phone];
+    //    }
+    //    if(customer_fax.length>0)
+    //    {
+    //        customer_fax = [NSString stringWithFormat:@"FAX: %@",customer_fax];
+    //        [arrpho addObject:customer_fax];
+    //    }
+    //    NSString *phone_string = [arrpho componentsJoinedByString:@", "];
+    //
+    //
+    //    NSString* customer_contact= [customerinfo valueForKey:@"customer_contact"];
+    //    if(customer_contact.length>0)
+    //    {
+    //        customer_contact = [NSString stringWithFormat:@"ATTN: %@",customer_contact];
+    //
+    //    }
+    //    NSString *contact_string = customer_contact;
+    //
+    //
+    //    NSString* customer_email= [customerinfo valueForKey:@"customer_email"];
+    //    if(customer_email.length>0)
+    //    {
+    //        customer_email = [NSString stringWithFormat:@"Email: %@",customer_email];
+    //
+    //    }
+    //    NSString *email_string = customer_email;
+    
+    
+    NSMutableArray* arrext = [[NSMutableArray alloc] init];
+    if(addr_string.length>0)
+        [arrext addObject:addr_string];
+    if(cty_string.length>0)
+        [arrext addObject:cty_string];
+    //    if(phone_string.length>0)
+    //        [arrext addObject:phone_string];
+    //    if(contact_string.length>0)
+    //        [arrext addObject:contact_string];
+    //    if(email_string.length>0)
+    //        [arrext addObject:email_string];
+    
+    ret = [arrext componentsJoinedByString:@"\r\n"];
+    
+    //    NSString *string = [array componentsJoinedByString:@" "];
+    
+    //    NSString* customer_name= [customerinfo valueForKey:@"customer_name"];
+    
+    
+    return ret;
+}
+-(NSMutableDictionary*)create_value_map:(NSDictionary*)key_map
+{
+    NSMutableDictionary* ret= [[NSMutableDictionary alloc] init];
+    NSArray *keys= [key_map allKeys];
+    //遍历keys
+    for(int i=0;i<[keys count];i++)
+    {
+        //得到当前key
+        NSString *key=[keys objectAtIndex:i];
+        //如果key不是pic,说明value是字符类型,比如name:Boris
+        NSString* valuefrom = [key_map valueForKey:key];
+        
+        if(valuefrom.length==0)
+            continue;
+        NSString* value=[self getValue:valuefrom];
+        
+        [ret setValue:value forKey:valuefrom];
+    }
+    NSDictionary * customerinfo =[self create_cusromer_info_from_table];
+    [ret setValue:[self create_customer_ext:customerinfo] forKey:@"customer_contact_ext"];
+    [ret setValue:customerinfo[@"customer_first_name"] forKey:@"customer_first_name"];
+    [ret setValue:customerinfo[@"customer_last_name"] forKey:@"customer_last_name"];
+    return ret;
+}
+
+-(NSMutableDictionary*)create_cusromer_info_from_table
+{
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    NSMutableDictionary* ret= [appDelegate.customerInfo mutableCopy] ;
+    
+    [ret setValue:[self getValue:@"customer_country"] forKey:@"customer_country"];
+    [ret setValue:[self getValue:@"customer_phone"] forKey:@"customer_phone"];
+    [ret setValue:[self getValue:@"customer_email"] forKey:@"customer_email"];
+    [ret setValue:[self getValue:@"customer_name"] forKey:@"customer_name"];
+    [ret setValue:[self getValue:@"customer_address4"] forKey:@"customer_address4"];
+    [ret setValue:[self getValue:@"customer_address3"] forKey:@"customer_address3"];
+    [ret setValue:[self getValue:@"customer_address2"] forKey:@"customer_address2"];
+    [ret setValue:[self getValue:@"customer_address1"] forKey:@"customer_address1"];
+    [ret setValue:[self getValue:@"customer_zipcode"] forKey:@"customer_zipcode"];
+    [ret setValue:[self getValue:@"customer_city"] forKey:@"customer_city"];
+    [ret setValue:[self getValue:@"customer_state"] forKey:@"customer_state"];
+    [ret setValue:[self getValue:@"customer_cid"] forKey:@"customer_cid"];
+    [ret setValue:[self getValue:@"customer_state"] forKey:@"customer_state"];
+    [ret setValue:[self getValue:@"customer_contact"] forKey:@"customer_contact"];
+    [ret setValue:[self getValue:@"customer_fax"] forKey:@"customer_fax"];
+    
+    NSString * firstname =nil;
+    
+    NSString* lastname = nil;
+    NSString* contact_name = [self getValue:@"customer_contact"];
+    if(contact_name!=nil)
+    {
+        NSArray *_arr = [contact_name componentsSeparatedByString:NSLocalizedString(@" ", nil)];
+        
+        
+        
+        if(_arr.count>=1)
+        {
+            firstname =_arr[0];
+            if(_arr.count>1)
+            {
+                
+                lastname=[[_arr subarrayWithRange:NSMakeRange(1, _arr.count-1)] componentsJoinedByString:@" "];
+            }
+        }
+    }
+    [ret setValue:firstname forKey:@"customer_first_name"];
+    [ret setValue:lastname forKey:@"customer_last_name"];
+    
+    //    [ret setValue:[self create_customer_ext:ret] forKey:@"customer_contact_ext"];
+    
+    return ret;
+}
+#pragma mark - multi_action sub action clicked
+
+- (void)MActionClicked:(UIButton *)sender {
+    
+    UITableViewCell *cell = (UITableViewCell *) sender.superview.superview;
+    NSIndexPath *   indexPath = [self.editorTable indexPathForCell:cell];
+    int refresh =0;
+    NSMutableDictionary* section_json=nil;
+    
+    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"];
+    NSDictionary* sub_action = [item_json objectForKey:[NSString stringWithFormat:@"item_%ld",(long)sender.tag]];
+    NSString* type = [sub_action valueForKey:@"type"];
+    if([type isEqualToString:@"pull"])
+    {
+        
+        [self.lastedit endEditing:true];
+        
+        refresh = [[sub_action valueForKey:@"refresh"] intValue];
+        NSDictionary* keymap= [sub_action objectForKey:@"key_map"];
+        
+        NSMutableDictionary* value=[self create_value_map:keymap];
+        
+        if(subid==nil)
+        {
+            NSDictionary* jsonmap=[sub_action valueForKey:@"key_map"];
+            section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]] mutableCopy];
+            int icount=[[section_json valueForKey:@"count"] intValue];
+            for (int ic=0;ic<icount;ic++)
+            {
+                NSMutableDictionary* modify_item= [[section_json objectForKey:[NSString stringWithFormat:@"item_%d",ic ]] mutableCopy];
+                
+                
+                NSString* mapto = [modify_item valueForKey:@"name"];
+                if(mapto.length==0)
+                    continue;
+                NSString* valuefrom= [jsonmap valueForKey:[modify_item valueForKey:@"name"]];
+                if(valuefrom==nil)
+                    continue;
+                NSString* valuestr=[value valueForKey:valuefrom];
+                
+                
+                
+                
+                
+                //                valuestr = [self getValue:valuefrom];
+                if(true)
+                {
+                    if(valuestr.length>0)
+                        [modify_item setValue:valuestr forKey:@"value"];
+                    else
+                        [modify_item setValue:@"" forKey:@"value"];
+                    [modify_item setValue:@"true" forKey:@"dirty"];
+                    [section_json setObject:modify_item  forKey:[NSString stringWithFormat:@"item_%d",ic ]];
+                }
+            }
+        }
+        else
+        {
+            
+            NSArray* idarr=[subid componentsSeparatedByString:@"_"];
+            int section = [(NSString*)idarr[0] intValue];
+            int item=[(NSString*)idarr[1] intValue];
+            NSDictionary* jsonmap=[sub_action valueForKey:@"key_map"];
+            
+            section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%d", section]] mutableCopy];
+            NSMutableDictionary * olditem=[[section_json objectForKey:[NSString stringWithFormat:@"item_%d",item ]] mutableCopy];
+            
+            NSString* control_type = [olditem valueForKey:@"control"];
+            if([control_type isEqualToString:@"switch"])
+                olditem=   [self fill_switch_subitem:olditem subid:nil source:value mapping:jsonmap ];
+            else if([control_type isEqualToString:@"enum"])
+            {
+                olditem=   [self fill_enum_subitem:olditem subid:nil source:value mapping:jsonmap ];
+                
+            }
+            else
+            {
+                [RAUtils alert_view:@"" title:@"not impl"];
+            }
+            
+            [olditem setValue:@"true" forKey:@"dirty"];
+            [section_json setObject:olditem  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];
+        
+        
+        if(refresh==1)
+        {
+            
+            //            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] ;
+            return ;
+        }
+        
+        //    DebugLog(@"CONTENT translate:%@",[iSalesNetwork DataTOjsonString:self.content_data]);
+        [self.editorTable reloadData ];
+        
+        
+    }
+    else
+    {
+        AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+        NSDictionary * item_json = sub_action;
+        NSString* value = [item_json valueForKey:@"value"];
+        if([value isEqualToString:@"new_addr"])
+        {
+            AddressEditorViewController * addressVC =[ self.storyboard instantiateViewControllerWithIdentifier:@"AddressEditorViewController"];
+            
+            addressVC.url_type = URL_REMOTE;
+            
+            addressVC.request_url=URL_ADDRESS_EDOTOR;
+            
+            
+            
+            
+            NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
+            //            NSString * string = [checked componentsJoinedByString:@","];
+            //            [params setValue:string forKey:@"cart2Checkbox"];
+            
+            
+            params[@"is_subaction"]=@"true";
+            params[@"subaction_tag"]= [NSString stringWithFormat:@"%ld",(long)sender.tag];
+            addressVC.params = params;
+            
+            
+            addressVC.delegate = self;
+            
+            addressVC.from = indexPath;
+            //            orderinfoVC.params = params;
+            
+            [self.navigationController pushViewController:addressVC animated:true];
+            
+        }else if([value isEqualToString:@"credit_card"])
+        {
+            CreditCardEditorViewController * cardVC =[ self.storyboard instantiateViewControllerWithIdentifier:@"CreditCardEditorViewController"];
+            
+            
+            NSDictionary *data = [item_json objectForKey:@"data"];
+            
+            if(data!=nil)
+            {
+                
+                cardVC.content_data_download = [data mutableCopy];
+                cardVC.url_type = URL_NONE;
+                
+                cardVC.request_url=nil;
+            }
+            else
+            {
+                cardVC.url_type = URL_REMOTE;
+                
+                cardVC.request_url=URL_CREDITCARD_EDOTOR;
+            }
+            NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
+            
+            params[@"orderCode"]=appDelegate.order_code;
+            
+            params[@"is_subaction"]=@"true";
+            params[@"subaction_tag"]= [NSString stringWithFormat:@"%ld",(long)sender.tag];
+            cardVC.params = params;
+            
+            cardVC.delegate = self;
+            
+            cardVC.from = indexPath;
+            
+            
+            //            orderinfoVC.params = params;
+            
+            [self.navigationController pushViewController:cardVC animated:true];
+            
+        }
+        else if([value isEqualToString:@"Sales_Order_Freight_Bill_To"])
+        {
+            
+            
+            ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
+            cvc.showNavibar = true;
+            cvc.contact_type = value;
+            cvc.is_subaction = @"true";
+            cvc.subaction_tag =[NSString stringWithFormat:@"%ld",(long)sender.tag];
+            
+            
+            cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
+                
+                [self handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION];
+                
+                //
+                //                if(self.returnValue)
+                //                    self.returnValue(value);
+            };
+            
+            
+            
+            [self.navigationController pushViewController:cvc animated:true];
+            
+        }
+        else if([value isEqualToString:@"Sales_Order_Ship_From"])
+        {
+            
+            
+            ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
+            cvc.showNavibar = true;
+            cvc.contact_type = value;
+            cvc.is_subaction = @"true";
+            cvc.subaction_tag =[NSString stringWithFormat:@"%ld",(long)sender.tag];
+            
+            cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
+                
+                [self handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION];
+                
+                //
+                //                if(self.returnValue)
+                //                    self.returnValue(value);
+            };
+            
+            
+            
+            [self.navigationController pushViewController:cvc animated:true];
+            
+        }
+        else if([value isEqualToString:@"Sales_Order_Customer"])
+        {
+            
+            
+            ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
+            cvc.is_subaction = @"true";
+            cvc.subaction_tag =[NSString stringWithFormat:@"%ld",(long)sender.tag];
+            cvc.showNavibar = true;
+            cvc.contact_type = value;
+            __weak typeof(self) weakself = self;
+            cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
+                
+                [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION];
+                
+                //
+                //                if(self.returnValue)
+                //                    self.returnValue(value);
+            };
+            
+            
+            
+            [self.navigationController pushViewController:cvc animated:true];
+            
+        }
+        else if([value isEqualToString:@"Sales_Order_Merchandise_Bill_To"])
+        {
+            
+            
+            ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
+            cvc.showNavibar = true;
+            cvc.contact_type = value;
+            cvc.is_subaction = @"true";
+            cvc.subaction_tag =[NSString stringWithFormat:@"%ld",(long)sender.tag];
+            __weak typeof(self) weakself = self;
+            cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
+                
+                [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION];
+                
+                //
+                //                if(self.returnValue)
+                //                    self.returnValue(value);
+            };
+            
+            
+            
+            [self.navigationController pushViewController:cvc animated:true];
+            
+        }
+        else if([value isEqualToString:@"Contact_Return_To"])
+        {
+            
+            
+            ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
+            cvc.is_subaction = @"true";
+            cvc.subaction_tag =[NSString stringWithFormat:@"%ld",(long)sender.tag];
+            cvc.showNavibar = true;
+            cvc.contact_type = value;
+            __weak typeof(self) weakself = self;
+            cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
+                
+                [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION];
+                
+                //
+                //                if(self.returnValue)
+                //                    self.returnValue(value);
+            };
+            
+            
+            
+            [self.navigationController pushViewController:cvc animated:true];
+            
+        }
+        else if([value isEqualToString:@"Sales_Order_Ship_To"])
+        {
+            
+            
+            ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
+            cvc.is_subaction = @"true";
+            cvc.subaction_tag =[NSString stringWithFormat:@"%ld",(long)sender.tag];
+            cvc.showNavibar = true;
+            cvc.contact_type = value;
+            __weak typeof(self) weakself = self;
+            cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
+                
+                [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION];
+                
+                //
+                //                if(self.returnValue)
+                //                    self.returnValue(value);
+            };
+            
+            
+            
+            [self.navigationController pushViewController:cvc animated:true];
+            
+        }
+        
+        
+    }
+}
+
+#pragma mark - Urgency
+
+
+
+-(void) viewWillDisappear:(BOOL)animated
+{
+    [super viewWillDisappear:animated];
+    [self cancel_urgency_timer];
+}
+
+- (void)start_urgency_timer {
+    
+    if (!self.editable) {
+        return;
+    }
+    
+    __weak typeof(self) weakSelf = self;
+    
+    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
+    
+    [appDelegate.urgencyDic setValue:appDelegate.user forKey:@"user"];
+#ifdef OFFLINE_MODE
+    [appDelegate.urgencyDic setValue:[NSNumber numberWithBool:appDelegate.offline_mode] forKey:@"offline_mode"];
+#endif
+    [[JKTimerManager sharedTimerManager] scheduledDispatchTimerWithName:self.urgency_timer_name timeInterval:1 queue:nil repeats:YES action:^{
+        
+        NSMutableDictionary *urgencyDic = [NSMutableDictionary dictionary];
+        
+        //        DebugLog(@"timer start....");
+        
+        [urgencyDic setValue:weakSelf.content_data_download forKey:[NSString stringWithFormat:@"%@_restored_data",self.class_name]];
+        
+        [urgencyDic setValue:weakSelf.class_name forKey:@"class_name"];
+        
+        
+        
+        if ([weakSelf.class_name isEqualToString:@"CreateOrderViewController"]) {
+            // CreateOrderViewController
+            
+            
+            [urgencyDic setValue:appDelegate.order_code forKey:@"order_code"];
+            MainViewController *mainVC = (MainViewController *)appDelegate.main_vc;
+            NSString *so = [mainVC.labelSo.text substringFromIndex:5];
+            [urgencyDic setValue:so forKey:@"order_so"];
+            [urgencyDic setValue:[NSNumber numberWithInt:appDelegate.order_status ] forKey:@"order_status"];
+            
+            [urgencyDic setValue:appDelegate.order_customer_id forKey:@"order_customer_id"];
+            
+        }
+        
+        [appDelegate.urgencyDic setValue:urgencyDic forKey:[NSString stringWithFormat:@"level_%d",weakSelf.level]];
+        [appDelegate.urgencyDic setValue:[NSNumber numberWithInteger:weakSelf.level + 1] forKey:@"count"];
+        
+    }];
+}
+
+- (void)cancel_urgency_timer {
+    [[JKTimerManager sharedTimerManager] cancelTimerWithName:self.urgency_timer_name];
+}
+
+
+@end

+ 28 - 0
RedAnt ERP Mobile/iSales-GATIT.xcodeproj/project.pbxproj

@@ -55,6 +55,8 @@
 		42EC600D1FA1D90C00F8FAA4 /* EnumSelectAndSortViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 42EC60091FA1D90B00F8FAA4 /* EnumSelectAndSortViewController.m */; };
 		42F9FACF1F8C592700D9C781 /* NetworkUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 42F9FACE1F8C592700D9C781 /* NetworkUtils.m */; };
 		42F9FAD21F8C595A00D9C781 /* RANetworkTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 42F9FAD11F8C595A00D9C781 /* RANetworkTaskDelegate.m */; };
+		42FD1A101FBD5B9F00C5D9A8 /* RAOrderEditorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 42FD1A0F1FBD5B9F00C5D9A8 /* RAOrderEditorViewController.m */; };
+		42FD1A131FBD5BB900C5D9A8 /* RAOrderPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 42FD1A121FBD5BB900C5D9A8 /* RAOrderPreviewController.m */; };
 		710274251CC606C4009FD219 /* UserListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 710274241CC606C4009FD219 /* UserListViewController.m */; };
 		7111E5721C76C557004763B3 /* customer_info_template_edit.json in Resources */ = {isa = PBXBuildFile; fileRef = 7111E5711C76C557004763B3 /* customer_info_template_edit.json */; };
 		71131F921CA1372300DBF6E2 /* SimplifiedBuyingProgramViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71131F911CA1372300DBF6E2 /* SimplifiedBuyingProgramViewController.m */; };
@@ -372,6 +374,10 @@
 		42F9FACE1F8C592700D9C781 /* NetworkUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NetworkUtils.m; path = ../../common/NetworkUtils.m; sourceTree = "<group>"; };
 		42F9FAD01F8C595A00D9C781 /* RANetworkTaskDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RANetworkTaskDelegate.h; path = ../../common/upload/RANetworkTaskDelegate.h; sourceTree = "<group>"; };
 		42F9FAD11F8C595A00D9C781 /* RANetworkTaskDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RANetworkTaskDelegate.m; path = ../../common/upload/RANetworkTaskDelegate.m; sourceTree = "<group>"; };
+		42FD1A0E1FBD5B9F00C5D9A8 /* RAOrderEditorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAOrderEditorViewController.h; path = common/Functions/order/RAOrderEditorViewController.h; sourceTree = SOURCE_ROOT; };
+		42FD1A0F1FBD5B9F00C5D9A8 /* RAOrderEditorViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RAOrderEditorViewController.m; path = common/Functions/order/RAOrderEditorViewController.m; sourceTree = SOURCE_ROOT; };
+		42FD1A111FBD5BB800C5D9A8 /* RAOrderPreviewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAOrderPreviewController.h; path = common/Functions/order/RAOrderPreviewController.h; sourceTree = SOURCE_ROOT; };
+		42FD1A121FBD5BB900C5D9A8 /* RAOrderPreviewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RAOrderPreviewController.m; path = common/Functions/order/RAOrderPreviewController.m; sourceTree = SOURCE_ROOT; };
 		710274231CC606C4009FD219 /* UserListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UserListViewController.h; path = common/Functions/sidemenu/UserListViewController.h; sourceTree = SOURCE_ROOT; };
 		710274241CC606C4009FD219 /* UserListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UserListViewController.m; path = common/Functions/sidemenu/UserListViewController.m; sourceTree = SOURCE_ROOT; };
 		7111E5711C76C557004763B3 /* customer_info_template_edit.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = customer_info_template_edit.json; path = common/Functions/contact/customer_info_template_edit.json; sourceTree = SOURCE_ROOT; };
@@ -1098,6 +1104,24 @@
 			path = common/CommonEditor/EnumSelectAndSort;
 			sourceTree = SOURCE_ROOT;
 		};
+		42FD1A0C1FBD5B6D00C5D9A8 /* Order Editor */ = {
+			isa = PBXGroup;
+			children = (
+				42FD1A0E1FBD5B9F00C5D9A8 /* RAOrderEditorViewController.h */,
+				42FD1A0F1FBD5B9F00C5D9A8 /* RAOrderEditorViewController.m */,
+			);
+			name = "Order Editor";
+			sourceTree = "<group>";
+		};
+		42FD1A0D1FBD5B7600C5D9A8 /* Order Preview */ = {
+			isa = PBXGroup;
+			children = (
+				42FD1A111FBD5BB800C5D9A8 /* RAOrderPreviewController.h */,
+				42FD1A121FBD5BB900C5D9A8 /* RAOrderPreviewController.m */,
+			);
+			name = "Order Preview";
+			sourceTree = "<group>";
+		};
 		710212821B8D59DE00E1788B /* watchlist */ = {
 			isa = PBXGroup;
 			children = (
@@ -1231,6 +1255,8 @@
 				7185C3CE1B919C7200B4823C /* contact */,
 				719E45D71B63883100FD098B /* modelDetail */,
 				71DBACEE1B5E401A00D8BD7E /* HomeView */,
+				42FD1A0C1FBD5B6D00C5D9A8 /* Order Editor */,
+				42FD1A0D1FBD5B7600C5D9A8 /* Order Preview */,
 				714C6AE21B83107A000123E3 /* order */,
 				717AE10B1D1A5E99007DC5CA /* offline */,
 				711A551F1C153AA800EF5FDA /* portfolio */,
@@ -2073,6 +2099,7 @@
 				7162A5C31C5873BB00AB630E /* ItemSearchFilterViewController.m in Sources */,
 				71D30A2D1CFC0EF8006F9477 /* DefaultImageButton.m in Sources */,
 				7162A5841C5872EF00AB630E /* HomeTableViewCellTopic.m in Sources */,
+				42FD1A101FBD5B9F00C5D9A8 /* RAOrderEditorViewController.m in Sources */,
 				7162A59F1C58733400AB630E /* OrderListViewController.m in Sources */,
 				712AFEE21DBA077F00254965 /* pdfCreator.m in Sources */,
 				71BBA2401CEAEF0700C91DED /* ioapi.c in Sources */,
@@ -2163,6 +2190,7 @@
 				7162A5181C58704600AB630E /* CartViewController.m in Sources */,
 				71DF74601C575E7900F2789C /* CommonEditorCellMAction.m in Sources */,
 				42BF67CC1E5179970081F90A /* ERPUtils.m in Sources */,
+				42FD1A131FBD5BB900C5D9A8 /* RAOrderPreviewController.m in Sources */,
 				71DF745F1C575E7900F2789C /* CommonEditorCellLabel.m in Sources */,
 				7141DD3C1C5726B700F7DF59 /* ScanApiHelper.mm in Sources */,
 				7162A5261C58706C00AB630E /* CategoryViewController.m in Sources */,

+ 2 - 0
RedAnt ERP Mobile/iSales-GATIT/config.h

@@ -47,6 +47,7 @@
 #ifdef test_server
 
 //------------------- chen server-----------------------
+#define  URL_BACK_ORDER_PREVIEW @""
 #define  URL_UPDATE_AUTH  @"http://192.168.0.133:8080/site/isales/login.htm"
 #define  URL_LOGOUT  @"http://192.168.0.133:8080/site/isales/loginOut.htm"
 #define  URL_RETRIEVE_PASS  @"http://192.168.0.133:8080/site/isales/forgotPassword.htm"
@@ -303,6 +304,7 @@
 #define URL_EMAIL_WISHLIST @"https://www.newpacificdirect.com/isales/sendWishListEmail.htm"
 
 #define URL_BLOG @"https://www.newpacificdirect.com/blog"
+#define  URL_BACK_ORDER_PREVIEW @""
 
 #endif
 

+ 28 - 0
RedAnt ERP Mobile/iSales-HOMER.xcodeproj/project.pbxproj

@@ -61,6 +61,8 @@
 		42EC1CA81FA02078008B0325 /* HomerModelDetailHeaderCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 42EC1CA61FA02078008B0325 /* HomerModelDetailHeaderCell.xib */; };
 		42F1A9221F9DC40D000C0605 /* FileCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 42F1A9201F9DC40D000C0605 /* FileCache.m */; };
 		42F1A9231F9DC40D000C0605 /* RAConvertor.m in Sources */ = {isa = PBXBuildFile; fileRef = 42F1A9211F9DC40D000C0605 /* RAConvertor.m */; };
+		42FD1A081FBD5A4500C5D9A8 /* RAOrderEditorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 42FD1A071FBD5A4500C5D9A8 /* RAOrderEditorViewController.m */; };
+		42FD1A0B1FBD5A5A00C5D9A8 /* RAOrderPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 42FD1A0A1FBD5A5A00C5D9A8 /* RAOrderPreviewController.m */; };
 		710274251CC606C4009FD219 /* UserListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 710274241CC606C4009FD219 /* UserListViewController.m */; };
 		7111E5721C76C557004763B3 /* customer_info_template_edit.json in Resources */ = {isa = PBXBuildFile; fileRef = 7111E5711C76C557004763B3 /* customer_info_template_edit.json */; };
 		71131F921CA1372300DBF6E2 /* SimplifiedBuyingProgramViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71131F911CA1372300DBF6E2 /* SimplifiedBuyingProgramViewController.m */; };
@@ -381,6 +383,10 @@
 		42F1A91F1F9DC40D000C0605 /* RAConvertor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAConvertor.h; path = ../../common/RAConvertor.h; sourceTree = "<group>"; };
 		42F1A9201F9DC40D000C0605 /* FileCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FileCache.m; path = ../../common/FileCache.m; sourceTree = "<group>"; };
 		42F1A9211F9DC40D000C0605 /* RAConvertor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RAConvertor.m; path = ../../common/RAConvertor.m; sourceTree = "<group>"; };
+		42FD1A061FBD5A4500C5D9A8 /* RAOrderEditorViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAOrderEditorViewController.h; path = common/Functions/order/RAOrderEditorViewController.h; sourceTree = SOURCE_ROOT; };
+		42FD1A071FBD5A4500C5D9A8 /* RAOrderEditorViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RAOrderEditorViewController.m; path = common/Functions/order/RAOrderEditorViewController.m; sourceTree = SOURCE_ROOT; };
+		42FD1A091FBD5A5A00C5D9A8 /* RAOrderPreviewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RAOrderPreviewController.h; path = common/Functions/order/RAOrderPreviewController.h; sourceTree = SOURCE_ROOT; };
+		42FD1A0A1FBD5A5A00C5D9A8 /* RAOrderPreviewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RAOrderPreviewController.m; path = common/Functions/order/RAOrderPreviewController.m; sourceTree = SOURCE_ROOT; };
 		710274231CC606C4009FD219 /* UserListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UserListViewController.h; path = common/Functions/sidemenu/UserListViewController.h; sourceTree = SOURCE_ROOT; };
 		710274241CC606C4009FD219 /* UserListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UserListViewController.m; path = common/Functions/sidemenu/UserListViewController.m; sourceTree = SOURCE_ROOT; };
 		7111E5711C76C557004763B3 /* customer_info_template_edit.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = customer_info_template_edit.json; path = common/Functions/contact/customer_info_template_edit.json; sourceTree = SOURCE_ROOT; };
@@ -1121,6 +1127,24 @@
 			name = Homer;
 			sourceTree = "<group>";
 		};
+		42FD1A041FBD5A0400C5D9A8 /* Order Editor */ = {
+			isa = PBXGroup;
+			children = (
+				42FD1A061FBD5A4500C5D9A8 /* RAOrderEditorViewController.h */,
+				42FD1A071FBD5A4500C5D9A8 /* RAOrderEditorViewController.m */,
+			);
+			name = "Order Editor";
+			sourceTree = "<group>";
+		};
+		42FD1A051FBD5A1B00C5D9A8 /* Order Preview */ = {
+			isa = PBXGroup;
+			children = (
+				42FD1A091FBD5A5A00C5D9A8 /* RAOrderPreviewController.h */,
+				42FD1A0A1FBD5A5A00C5D9A8 /* RAOrderPreviewController.m */,
+			);
+			name = "Order Preview";
+			sourceTree = "<group>";
+		};
 		710212821B8D59DE00E1788B /* watchlist */ = {
 			isa = PBXGroup;
 			children = (
@@ -1254,6 +1278,8 @@
 				7185C3CE1B919C7200B4823C /* contact */,
 				719E45D71B63883100FD098B /* modelDetail */,
 				71DBACEE1B5E401A00D8BD7E /* HomeView */,
+				42FD1A041FBD5A0400C5D9A8 /* Order Editor */,
+				42FD1A051FBD5A1B00C5D9A8 /* Order Preview */,
 				714C6AE21B83107A000123E3 /* order */,
 				717AE10B1D1A5E99007DC5CA /* offline */,
 				711A551F1C153AA800EF5FDA /* portfolio */,
@@ -2101,6 +2127,7 @@
 				71D01B1B1E0A2055006620CE /* PDFUtils.m in Sources */,
 				7141DD4F1C57459B00F7DF59 /* mask.c in Sources */,
 				7162A54E1C58722200AB630E /* CreditCardEditorViewController.m in Sources */,
+				42FD1A0B1FBD5A5A00C5D9A8 /* RAOrderPreviewController.m in Sources */,
 				7162A5C31C5873BB00AB630E /* ItemSearchFilterViewController.m in Sources */,
 				71D30A2D1CFC0EF8006F9477 /* DefaultImageButton.m in Sources */,
 				7162A5841C5872EF00AB630E /* HomeTableViewCellTopic.m in Sources */,
@@ -2126,6 +2153,7 @@
 				712C40B61C7310F4000E6831 /* CartGeneralNotesViewController.m in Sources */,
 				712AFEDE1DBA050200254965 /* TableDrawable.m in Sources */,
 				7162A5CB1C58761500AB630E /* SignatureViewController.m in Sources */,
+				42FD1A081FBD5A4500C5D9A8 /* RAOrderEditorViewController.m in Sources */,
 				7162A5DD1C5876E300AB630E /* PopupNavigationController.m in Sources */,
 				7162A59E1C58733400AB630E /* OrderListTableViewCell.m in Sources */,
 				71DF746A1C575E7900F2789C /* SRMonthPicker.m in Sources */,

+ 2 - 0
RedAnt ERP Mobile/iSales-HOMER/config.h

@@ -49,6 +49,7 @@
 #ifdef test_server
 
 //------------------- chen server-----------------------
+#define  URL_BACK_ORDER_PREVIEW @""
 #define  URL_UPDATE_AUTH  @"http://192.168.0.133:8080/site/isales/login.htm"
 #define  URL_LOGOUT  @"http://192.168.0.133:8080/site/isales/loginOut.htm"
 #define  URL_RETRIEVE_PASS  @"http://192.168.0.133:8080/site/isales/forgotPassword.htm"
@@ -305,6 +306,7 @@
 #define URL_EMAIL_WISHLIST @"https://shopla.homelegance.com/isales/sendWishListEmail.htm"
 
 #define URL_BLOG @"https://shopla.homelegance.com/blog"
+#define  URL_BACK_ORDER_PREVIEW @""
 
 #endif
 

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

@@ -64,6 +64,7 @@
 		42DC12F11F0CD98E00A4C011 /* OrderDetailPickInfoCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 42DC12F01F0CD98E00A4C011 /* OrderDetailPickInfoCell.m */; };
 		42DC31131D546FBE00BCD1C6 /* category.json in Resources */ = {isa = PBXBuildFile; fileRef = 42DC31121D546FBE00BCD1C6 /* category.json */; };
 		42E489611EE63F4E007256A0 /* more_color_64.png in Resources */ = {isa = PBXBuildFile; fileRef = 42E489601EE63F4E007256A0 /* more_color_64.png */; };
+		42FD1A031FBD1A3000C5D9A8 /* RAOrderPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 42FD1A021FBD1A3000C5D9A8 /* RAOrderPreviewController.m */; };
 		710274251CC606C4009FD219 /* UserListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 710274241CC606C4009FD219 /* UserListViewController.m */; };
 		71073AE61DD41DD8001BC653 /* so_thumb.json in Resources */ = {isa = PBXBuildFile; fileRef = 71073AE51DD41DD8001BC653 /* so_thumb.json */; };
 		7111E5721C76C557004763B3 /* customer_info_template_edit.json in Resources */ = {isa = PBXBuildFile; fileRef = 7111E5711C76C557004763B3 /* customer_info_template_edit.json */; };
@@ -387,6 +388,8 @@
 		42DC12F01F0CD98E00A4C011 /* OrderDetailPickInfoCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OrderDetailPickInfoCell.m; path = common/Functions/order/OrderDetailPickInfoCell.m; sourceTree = SOURCE_ROOT; };
 		42DC31121D546FBE00BCD1C6 /* category.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = category.json; sourceTree = "<group>"; };
 		42E489601EE63F4E007256A0 /* more_color_64.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = more_color_64.png; sourceTree = "<group>"; };
+		42FD1A011FBD1A3000C5D9A8 /* RAOrderPreviewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RAOrderPreviewController.h; path = common/Functions/order/RAOrderPreviewController.h; sourceTree = SOURCE_ROOT; };
+		42FD1A021FBD1A3000C5D9A8 /* RAOrderPreviewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RAOrderPreviewController.m; path = common/Functions/order/RAOrderPreviewController.m; sourceTree = SOURCE_ROOT; };
 		710274231CC606C4009FD219 /* UserListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UserListViewController.h; path = common/Functions/sidemenu/UserListViewController.h; sourceTree = SOURCE_ROOT; };
 		710274241CC606C4009FD219 /* UserListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UserListViewController.m; path = common/Functions/sidemenu/UserListViewController.m; sourceTree = SOURCE_ROOT; };
 		71073AE51DD41DD8001BC653 /* so_thumb.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = so_thumb.json; sourceTree = "<group>"; };
@@ -1122,6 +1125,15 @@
 			path = View;
 			sourceTree = "<group>";
 		};
+		42FD1A001FBD19B800C5D9A8 /* Order Preview */ = {
+			isa = PBXGroup;
+			children = (
+				42FD1A011FBD1A3000C5D9A8 /* RAOrderPreviewController.h */,
+				42FD1A021FBD1A3000C5D9A8 /* RAOrderPreviewController.m */,
+			);
+			name = "Order Preview";
+			sourceTree = "<group>";
+		};
 		710212821B8D59DE00E1788B /* watchlist */ = {
 			isa = PBXGroup;
 			children = (
@@ -1257,6 +1269,7 @@
 				71DBACEE1B5E401A00D8BD7E /* HomeView */,
 				714C6AE21B83107A000123E3 /* order */,
 				4254CCDB1FB1AB6600C8B4B6 /* Order Editor */,
+				42FD1A001FBD19B800C5D9A8 /* Order Preview */,
 				717AE10B1D1A5E99007DC5CA /* offline */,
 				711A551F1C153AA800EF5FDA /* portfolio */,
 				714A52061995E90300627D23 /* cam_scan */,
@@ -2209,6 +2222,7 @@
 				7162A5181C58704600AB630E /* CartViewController.m in Sources */,
 				71DF74601C575E7900F2789C /* CommonEditorCellMAction.m in Sources */,
 				42BF67CC1E5179970081F90A /* ERPUtils.m in Sources */,
+				42FD1A031FBD1A3000C5D9A8 /* RAOrderPreviewController.m in Sources */,
 				71DF745F1C575E7900F2789C /* CommonEditorCellLabel.m in Sources */,
 				7141DD3C1C5726B700F7DF59 /* ScanApiHelper.mm in Sources */,
 				7162A5261C58706C00AB630E /* CategoryViewController.m in Sources */,

File diff suppressed because it is too large
+ 525 - 74
RedAnt ERP Mobile/iSales-NPD/Base.lproj/Main.storyboard


+ 1 - 1
RedAnt ERP Mobile/iSales-NPD/config.h

@@ -47,7 +47,7 @@
 #ifdef test_server
 
 //------------------- chen server-----------------------
-#define  URL_CART_DELIVERY_A  @"http://192.168.0.133:8080/site/isales/cartDeliveryStepA.htm"
+#define  URL_BACK_ORDER_PREVIEW  @"http://192.168.0.133:8080/site/isales/cartDeliveryBackOrderReview.htm"
 
 #define  URL_UPDATE_AUTH  @"http://192.168.0.133:8080/site/isales/login.htm"
 #define  URL_LOGOUT  @"http://192.168.0.133:8080/site/isales/loginOut.htm"

Some files were not shown because too many files changed in this diff