Ray Zhang 10 سال پیش
والد
کامیت
4a963b209e
35فایلهای تغییر یافته به همراه1712 افزوده شده و 613 حذف شده
  1. 1 1
      RedAnt ERP Mobile/common/ActiveViewController.h
  2. 12 3
      RedAnt ERP Mobile/common/CommonEditor/CommonEditorCellImg.h
  3. 110 45
      RedAnt ERP Mobile/common/CommonEditor/CommonEditorCellImg.m
  4. 214 86
      RedAnt ERP Mobile/common/CommonEditor/CommonEditorViewController.m
  5. 17 0
      RedAnt ERP Mobile/common/Functions/cart/CartGeneralNotesViewController.h
  6. 90 0
      RedAnt ERP Mobile/common/Functions/cart/CartGeneralNotesViewController.m
  7. 7 0
      RedAnt ERP Mobile/common/Functions/cart/CartViewController.h
  8. 198 60
      RedAnt ERP Mobile/common/Functions/cart/CartViewController.m
  9. 15 0
      RedAnt ERP Mobile/common/Functions/cart/ItemNotesViewController.h
  10. 91 0
      RedAnt ERP Mobile/common/Functions/cart/ItemNotesViewController.m
  11. 1 1
      RedAnt ERP Mobile/common/Functions/cart/ModelItemCell.h
  12. 2 2
      RedAnt ERP Mobile/common/Functions/contact/ContactListViewController.m
  13. 1 1
      RedAnt ERP Mobile/common/Functions/contact/CustomerEditViewController.h
  14. 89 79
      RedAnt ERP Mobile/common/Functions/contact/CustomerEditViewController.m
  15. 1 0
      RedAnt ERP Mobile/common/Functions/contact/CustomerInfoViewController.h
  16. 44 4
      RedAnt ERP Mobile/common/Functions/contact/CustomerInfoViewController.m
  17. 4 1
      RedAnt ERP Mobile/common/Functions/contact/customer_info_template.json
  18. 1 0
      RedAnt ERP Mobile/common/Functions/order/OrderDetailViewController.h
  19. 41 1
      RedAnt ERP Mobile/common/Functions/order/OrderDetailViewController.m
  20. 25 1
      RedAnt ERP Mobile/common/Functions/signature/SignatureView.m
  21. 1 0
      RedAnt ERP Mobile/common/Functions/signature/SignatureViewController.h
  22. 2 1
      RedAnt ERP Mobile/common/Functions/signature/SignatureViewController.m
  23. 2 2
      RedAnt ERP Mobile/common/RAUtils.h
  24. 12 3
      RedAnt ERP Mobile/common/RAUtils.m
  25. 31 1
      RedAnt ERP Mobile/common/customUI/ImageViewController.m
  26. 23 0
      RedAnt ERP Mobile/common/customUI/TouchImageView.h
  27. 38 0
      RedAnt ERP Mobile/common/customUI/TouchImageView.m
  28. 9 4
      RedAnt ERP Mobile/common/data_provider/iSalesNetwork.h
  29. 139 35
      RedAnt ERP Mobile/common/data_provider/iSalesNetwork.m
  30. 18 0
      RedAnt ERP Mobile/iSales-NPD.xcodeproj/project.pbxproj
  31. 1 0
      RedAnt ERP Mobile/iSales-NPD/AppDelegate.h
  32. 3 0
      RedAnt ERP Mobile/iSales-NPD/AppDelegate.m
  33. 322 140
      RedAnt ERP Mobile/iSales-NPD/Base.lproj/Main.storyboard
  34. 1 1
      RedAnt ERP Mobile/iSales-NPD/OLDataProvider.m
  35. 146 141
      RedAnt ERP Mobile/iSales-NPD/config.h

+ 1 - 1
RedAnt ERP Mobile/common/ActiveViewController.h

@@ -7,7 +7,7 @@
 //
 
 #import <UIKit/UIKit.h>
-#import "TouchLabel.h"
+//#import "TouchLabel.h"
 @protocol ActiveViewController
 
 @required

+ 12 - 3
RedAnt ERP Mobile/common/CommonEditor/CommonEditorCellImg.h

@@ -7,13 +7,22 @@
 //
 
 #import <UIKit/UIKit.h>
+#import "TouchImageView.h"
 
-@interface CommonEditorCellImg : UITableViewCell
+@interface CommonEditorCellImg : UITableViewCell<TouchImageViewDelegate>
 @property (strong, nonatomic) IBOutlet UILabel *labelTitle;
-@property (strong, nonatomic) IBOutlet UIButton *buttonImg;
+//@property (strong, nonatomic) IBOutlet UIButton *buttonImg0;
+//@property (strong, nonatomic) IBOutlet UIButton *buttonImg1;
+//@property (strong, nonatomic) IBOutlet UIButton *buttonImg2;
+@property (strong, nonatomic) IBOutlet TouchImageView *touchImageView0;
+@property (strong, nonatomic) IBOutlet TouchImageView *touchImageView1;
+@property (strong, nonatomic) IBOutlet TouchImageView *touchImageView2;
+
+@property (strong, nonatomic) NSMutableArray* imgs;
+
 @property (strong, nonatomic) IBOutlet UILabel *labelDescription;
 @property bool editable;
 @property bool img_validate;
 @property bool isFullScreen;
-@property (nonatomic , copy) void (^imgChanged)(NSString* url_down,NSString* url_up);
+@property (nonatomic , copy) void (^imgChanged)(NSString* url_down,NSString* url_up, int index);
 @end

+ 110 - 45
RedAnt ERP Mobile/common/CommonEditor/CommonEditorCellImg.m

@@ -16,69 +16,134 @@
 @implementation CommonEditorCellImg
 
 - (void)awakeFromNib {
-    // Initialization code
+    self.touchImageView0.delegate=self;
+
+    self.touchImageView1.delegate=self;
+
+    self.touchImageView2.delegate=self;
+
+    self.imgs= [@[@"", @"",@""] mutableCopy];
 }
 
 - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
     [super setSelected:selected animated:animated];
-
+    
     // Configure the view for the selected state
 }
-
-- (IBAction)ImgButtonClicked:(UIButton *)sender {
-
+- (void)TouchImageViewOnTouche:(TouchImageView *)touchImageView
+{
+    __block int tag = touchImageView.tag;
+    UIViewController* vc=[RAUtils getViewController :touchImageView];
     
-    UIViewController* vc=[RAUtils getViewController :sender];
-
     if(self.editable==true)
     {
-    
-    
-    ImageUploadViewController * uploadvc =[ vc.storyboard instantiateViewControllerWithIdentifier:@"ImageUploadViewController"];
-    
-//        UIImage* img =[self.buttonImg backgroundImageForState:UIControlStateNormal];;
-    
-    if(self.img_validate)
-    uploadvc.img= [self.buttonImg backgroundImageForState:UIControlStateNormal];
-    
-    uploadvc.returnValue = ^(NSString* url_down,NSString* url_up,UIImage* img)
-    {
         
-        [self.buttonImg setBackgroundImage:img forState:UIControlStateNormal];
         
-        if(self.imgChanged)
-            self.imgChanged(url_down,url_up);
+        ImageUploadViewController * uploadvc =[ vc.storyboard instantiateViewControllerWithIdentifier:@"ImageUploadViewController"];
         
-    };
-    
-    [vc.navigationController pushViewController:uploadvc animated:false];
+        //        UIImage* img =[self.buttonImg backgroundImageForState:UIControlStateNormal];;
+        
+        if(self.img_validate)
+            uploadvc.img= touchImageView.image;
+        
+        uploadvc.returnValue = ^(NSString* url_down,NSString* url_up,UIImage* img)
+        {
+            
+            self.imgs[tag] = url_up;
+            
+            NSString* newurl=[RAUtils arr2string:self.imgs separator:@"," trim:false];
+            
+            touchImageView.image=img;
+            
+            if(self.imgChanged)
+                self.imgChanged(url_down,newurl,tag);
+            
+        };
+        
+        [vc.navigationController pushViewController:uploadvc animated:false];
     }
     else
     {
+        if(touchImageView.image==nil)
+            return ;
         ImageViewController * imagevc =[ vc.storyboard instantiateViewControllerWithIdentifier:@"ImageViewController"];
         
         
-        UIImage* img=[self.buttonImg backgroundImageForState:UIControlStateNormal];
+        UIImage* img=touchImageView.image;
         
         if(self.img_validate)
-        imagevc.image = img;//.imageView.image = [self.buttonImg backgroundImageForState:UIControlStateNormal];
+            imagevc.image = img;//.imageView.image = [self.buttonImg backgroundImageForState:UIControlStateNormal];
         
-//        uploadvc.returnValue = ^(NSString* url_down,NSString* url_up,UIImage* img)
-//        {
-//            
-//            [self.buttonImg setBackgroundImage:img forState:UIControlStateNormal];
-//            
-//            if(self.imgChanged)
-//                self.imgChanged(url_down,url_up);
-//            
-//        };
+        //        uploadvc.returnValue = ^(NSString* url_down,NSString* url_up,UIImage* img)
+        //        {
+        //
+        //            [self.buttonImg setBackgroundImage:img forState:UIControlStateNormal];
+        //
+        //            if(self.imgChanged)
+        //                self.imgChanged(url_down,url_up);
+        //
+        //        };
         
         [vc.navigationController pushViewController:imagevc animated:false];
     }
-//    bundleVC.content_data = self.bundle_item;
+    //    bundleVC.content_data = self.bundle_item;
+    
     
-
 }
+//- (IBAction)ImgButtonClicked:(UIButton *)sender {
+//
+//    __block int tag = sender.tag;
+//    UIViewController* vc=[RAUtils getViewController :sender];
+//
+//    if(self.editable==true)
+//    {
+//
+//
+//    ImageUploadViewController * uploadvc =[ vc.storyboard instantiateViewControllerWithIdentifier:@"ImageUploadViewController"];
+//
+////        UIImage* img =[self.buttonImg backgroundImageForState:UIControlStateNormal];;
+//
+//    if(self.img_validate)
+//    uploadvc.img= [sender backgroundImageForState:UIControlStateNormal];
+//
+//    uploadvc.returnValue = ^(NSString* url_down,NSString* url_up,UIImage* img)
+//    {
+//
+//        [sender setBackgroundImage:img forState:UIControlStateNormal];
+//
+//        if(self.imgChanged)
+//            self.imgChanged(url_down,url_up,tag);
+//
+//    };
+//
+//    [vc.navigationController pushViewController:uploadvc animated:false];
+//    }
+//    else
+//    {
+//        ImageViewController * imagevc =[ vc.storyboard instantiateViewControllerWithIdentifier:@"ImageViewController"];
+//
+//
+//        UIImage* img=[sender backgroundImageForState:UIControlStateNormal];
+//
+//        if(self.img_validate)
+//        imagevc.image = img;//.imageView.image = [self.buttonImg backgroundImageForState:UIControlStateNormal];
+//
+////        uploadvc.returnValue = ^(NSString* url_down,NSString* url_up,UIImage* img)
+////        {
+////
+////            [self.buttonImg setBackgroundImage:img forState:UIControlStateNormal];
+////
+////            if(self.imgChanged)
+////                self.imgChanged(url_down,url_up);
+////
+////        };
+//
+//        [vc.navigationController pushViewController:imagevc animated:false];
+//    }
+////    bundleVC.content_data = self.bundle_item;
+//
+//
+//}
 //
 //
 //-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
@@ -87,12 +152,12 @@
 //        return;
 //    self.isFullScreen = !self.isFullScreen;
 //    UITouch *touch = [touches anyObject];
-//    
+//
 //    CGPoint touchPoint = [touch locationInView:self.contentView];
-//    
+//
 //    CGPoint imagePoint = self.imageView.frame.origin;
 //    //touchPoint.x ,touchPoint.y 就是触点的坐标
-//    
+//
 //    // 触点在imageView内,点击imageView时 放大,再次点击时缩小
 //    if(imagePoint.x <= touchPoint.x && imagePoint.x +self.imageView.frame.size.width >=touchPoint.x && imagePoint.y <=  touchPoint.y && imagePoint.y+self.imageView.frame.size.height >= touchPoint.y)
 //    {
@@ -100,21 +165,21 @@
 //        [UIView beginAnimations:nil context:nil];
 //        // 动画时间
 //        [UIView setAnimationDuration:1];
-//        
+//
 //        if (self.isFullScreen) {
 //            // 放大尺寸
-//            
+//
 //            self.buttonImg.frame = CGRectMake(0, 0, 768, 1024);
 //        }
 //        else {
 //            // 缩小尺寸
 //            self.buttonImg.frame = CGRectMake(50, 65, 100, 100);
 //        }
-//        
+//
 //        // commit动画
 //        [UIView commitAnimations];
-//        
+//
 //    }
-//    
+//
 //}
 @end

+ 214 - 86
RedAnt ERP Mobile/common/CommonEditor/CommonEditorViewController.m

@@ -67,8 +67,8 @@
     UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200];
     reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Refreshing"];
     
-     if ([self respondsToSelector:@selector(reload_data)])
-    [self performSelector:@selector(reload_data) withObject:nil afterDelay:1];
+    if ([self respondsToSelector:@selector(reload_data)])
+        [self performSelector:@selector(reload_data) withObject:nil afterDelay:1];
     //    DebugLog(@"refresh!!!!!!!!");
     
 }
@@ -1713,7 +1713,7 @@
             cvc.contact_type = value;
             cvc.is_subaction = @"true";
             cvc.subaction_tag =[NSString stringWithFormat:@"%ld",(long)sender.tag];
-
+            
             
             cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
                 
@@ -1738,7 +1738,7 @@
             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];
@@ -1760,7 +1760,7 @@
             ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
             cvc.is_subaction = @"true";
             cvc.subaction_tag =[NSString stringWithFormat:@"%ld",(long)sender.tag];
-cvc.showNavibar = true;
+            cvc.showNavibar = true;
             cvc.contact_type = value;
             
             cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
@@ -1786,7 +1786,7 @@ 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];
@@ -1808,7 +1808,7 @@ cvc.showNavibar = true;
             ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
             cvc.is_subaction = @"true";
             cvc.subaction_tag =[NSString stringWithFormat:@"%ld",(long)sender.tag];
-cvc.showNavibar = true;
+            cvc.showNavibar = true;
             cvc.contact_type = value;
             
             cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
@@ -1832,7 +1832,7 @@ cvc.showNavibar = true;
             ContactListViewController* cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContactListViewController" ];
             cvc.is_subaction = @"true";
             cvc.subaction_tag =[NSString stringWithFormat:@"%ld",(long)sender.tag];
-cvc.showNavibar = true;
+            cvc.showNavibar = true;
             cvc.contact_type = value;
             
             cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){
@@ -2150,6 +2150,8 @@ cvc.showNavibar = true;
 //
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 {
+    
+    bool readonly = [[self.content_data_download valueForKey:@"readonly"]boolValue];
     //    int d=0;
     //    if(indexPath.section==4)
     //        d=0;
@@ -2184,7 +2186,7 @@ cvc.showNavibar = true;
         
         
         int disable = [[item_json valueForKey:@"disable"] intValue];
-        if(disable==1)
+        if(disable==1||readonly)
         {
             cell.textview.editable=NO;
             //            cell.textfield.backgroundColor = [UIColor lightGrayColor];
@@ -2203,12 +2205,12 @@ cvc.showNavibar = true;
         {
             [title appendString:@"*"];
         }
-    
+        
         cell.label_name.text=title;
         cell.textview.text = value;
         cell.textview.delegate = self;
         cell.accessoryType = UITableViewCellAccessoryNone;
-
+        
         
         
         
@@ -2245,7 +2247,7 @@ cvc.showNavibar = true;
             NSString* title = [item_json valueForKey:@"aname"] ;
             NSString* value =[item_json valueForKey:@"value"];
             int disable = [[item_json valueForKey:@"disable"] intValue];
-            if(disable==1)
+            if(disable==1||readonly)
             {
                 cell.editable=false;
             }
@@ -2254,60 +2256,179 @@ cvc.showNavibar = true;
             cell.labelTitle.text = title;
             cell.labelDescription.text = value;
             
-            cell.imgChanged = ^(NSString* url_down,NSString* url_up)
+            cell.imgChanged = ^(NSString* url_down,NSString* url_up,int index )
             {
                 //            NSMutableDictionary* editjson = [item_json mutableCopy];
                 //            editjson[@"img_url"]=url;
-                [self imgIsChanged:url_down url_up:url_up indexPath:indexPath];
+                [self imgIsChanged:url_down url_up:url_up indexPath:indexPath index:index];
                 
                 
             };
             
-            NSString* img_url = [item_json valueForKey:@"img_url"];
+            {
+                NSString* img_url0 = [item_json valueForKey:@"img_url_0"];
+                if(img_url0.length>0)
+                {
+                    cell.imgs[0]=img_url0;
+                    NSString* file_name=[img_url0 lastPathComponent];
+                    NSData* img_data=[iSalesDB load_cached_img:file_name];
+                    if(img_data!=nil)
+                    {
+                        
+                        UIImage * img =[UIImage imageWithData:img_data];
+                        
+                        cell.touchImageView0.image=img;
+                        
+                        cell.img_validate = true;
+                        // [cell.touchImageView setImage:img forState:UIControlStateNormal];
+                    }
+                    else
+                    {
+                        
+                        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                            
+                            NSData*  downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url0]];
+                            
+                            dispatch_async(dispatch_get_main_queue(), ^{
+                                
+                                
+                                
+                                if(downloadimg_data!=nil)
+                                {
+                                    [iSalesDB cache_img:downloadimg_data :file_name ];
+                                    
+                                    UIImage * img =[UIImage imageWithData:downloadimg_data];
+                                    cell.touchImageView0.image=img;
+                                    cell.img_validate = true;
+                                }
+                                else
+                                {
+                                    cell.touchImageView0.image=[UIImage imageNamed:@"notfound_s"];
+                                    
+                                    cell.img_validate = false;
+                                }
+                                
+                            });
+                        });
+                        
+                        
+                    }
+                }
+                else
+                {
+                    cell.touchImageView0.image=nil;
+                    cell.imgs[0]=@"";
+                }
+            }
             
-            NSString* file_name=[img_url lastPathComponent];
-            NSData* img_data=[iSalesDB load_cached_img:file_name];
-            if(img_data!=nil)
             {
-                
-                UIImage * img =[UIImage imageWithData:img_data];
-                
-                [cell.buttonImg setBackgroundImage:img forState:UIControlStateNormal];
-                
-                cell.img_validate = true;
-                // [cell.buttonImg setImage:img forState:UIControlStateNormal];
+                NSString* img_url1 = [item_json valueForKey:@"img_url_1"];
+                if(img_url1.length>0)
+                {
+                    cell.imgs[1]=img_url1;
+                    NSString* file_name=[img_url1 lastPathComponent];
+                    NSData* img_data=[iSalesDB load_cached_img:file_name];
+                    if(img_data!=nil)
+                    {
+                        
+                        UIImage * img =[UIImage imageWithData:img_data];
+                        
+                        
+                        cell.touchImageView1.image=img;
+                        
+                        cell.img_validate = true;
+                        // [cell.touchImageView setImage:img forState:UIControlStateNormal];
+                    }
+                    else
+                    {
+                        
+                        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                            
+                            NSData*  downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url1]];
+                            
+                            dispatch_async(dispatch_get_main_queue(), ^{
+                                
+                                
+                                
+                                if(downloadimg_data!=nil)
+                                {
+                                    [iSalesDB cache_img:downloadimg_data :file_name ];
+                                    
+                                    UIImage * img =[UIImage imageWithData:downloadimg_data];
+                                    cell.touchImageView1.image=img;
+                                    cell.img_validate = true;
+                                }
+                                else
+                                {
+                                    cell.touchImageView1.image=[UIImage imageNamed:@"notfound_s"] ;
+                                    cell.img_validate = false;
+                                }
+                                
+                            });
+                        });
+                        
+                        
+                    }
+                }
+                else
+                {
+                    cell.touchImageView1.image=nil;
+                    cell.imgs[1]=@"";
+                }
             }
-            else
             {
-                
-                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
-                    
-                    NSData*  downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url]];
-                    
-                    dispatch_async(dispatch_get_main_queue(), ^{
+                NSString* img_url2 = [item_json valueForKey:@"img_url_2"];
+                if(img_url2.length>0)
+                {
+                    cell.imgs[2]=img_url2;
+                    NSString* file_name=[img_url2 lastPathComponent];
+                    NSData* img_data=[iSalesDB load_cached_img:file_name];
+                    if(img_data!=nil)
+                    {
                         
+                        UIImage * img =[UIImage imageWithData:img_data];
                         
+                        cell.touchImageView2.image=img;
                         
-                        if(downloadimg_data!=nil)
-                        {
-                            [iSalesDB cache_img:downloadimg_data :file_name ];
+                        cell.img_validate = true;
+                        // [cell.touchImageView setImage:img forState:UIControlStateNormal];
+                    }
+                    else
+                    {
+                        
+                        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
                             
-                            UIImage * img =[UIImage imageWithData:downloadimg_data];
-                            [cell.buttonImg setBackgroundImage:img forState:UIControlStateNormal];
-                            cell.img_validate = true;
-                        }
-                        else
-                        {
-                            [cell.buttonImg setBackgroundImage:[UIImage imageNamed:@"notfound_s"] forState:UIControlStateNormal];
-                            cell.img_validate = false;
-                        }
+                            NSData*  downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url2]];
+                            
+                            dispatch_async(dispatch_get_main_queue(), ^{
+                                
+                                
+                                
+                                if(downloadimg_data!=nil)
+                                {
+                                    [iSalesDB cache_img:downloadimg_data :file_name ];
+                                    
+                                    UIImage * img =[UIImage imageWithData:downloadimg_data];
+                                    cell.touchImageView2.image=img;
+                                    cell.img_validate = true;
+                                }
+                                else
+                                {
+                                    cell.touchImageView2.image=[UIImage imageNamed:@"notfound_s"] ;
+                                    cell.img_validate = false;
+                                }
+                                
+                            });
+                        });
                         
-                    });
-                });
-                
-                
+                        
+                    }}
+                else
+                {
+                    cell.touchImageView2.image=nil;
+                    cell.imgs[2]=@"";
+                }
             }
-  
             
             cell.backgroundColor = UIColorFromRGB(0xF2EEEA);
             return cell;
@@ -2328,7 +2449,7 @@ cvc.showNavibar = true;
                     cell.textfield.textAlignment =NSTextAlignmentLeft;
                 
                 int disable = [[item_json valueForKey:@"disable"] intValue];
-                if(disable==1)
+                if(disable==1||readonly)
                 {
                     cell.textfield.enabled=NO;
                     //            cell.textfield.backgroundColor = [UIColor lightGrayColor];
@@ -2350,13 +2471,13 @@ cvc.showNavibar = true;
                 if([keyboard isEqualToString:@"number"])
                 {
                     
-                   // float f = [value floatValue];
+                    // float f = [value floatValue];
                     
                     // value = [NSString stringWithFormat:@"%.2f",f];
                     
                     
                     cell.textfield.keyboardType=UIKeyboardTypeNumbersAndPunctuation;
-
+                    
                     
                     
                 }
@@ -2376,7 +2497,7 @@ cvc.showNavibar = true;
                 cell.textfield.text = value;
                 cell.textfield.delegate = self;
                 cell.accessoryType = UITableViewCellAccessoryNone;
-       
+                
                 
                 
                 
@@ -2440,7 +2561,7 @@ cvc.showNavibar = true;
                     
                     cell.labelTitle.text=title;
                     cell.labelValue.text = value;
-        
+                    
                     
                     cell.backgroundColor = UIColorFromRGB(0xF2EEEA);
                     return cell;
@@ -2592,7 +2713,7 @@ cvc.showNavibar = true;
             NSDictionary* cadedate_json =[item_json objectForKey:@"cadedate"];
             
             int disable = [[item_json valueForKey:@"disable"] intValue];
-            if(disable==1)
+            if(disable==1||readonly)
             {
                 cell.labelValue.textColor= [UIColor lightGrayColor];
                 
@@ -3066,6 +3187,8 @@ cvc.showNavibar = true;
 //
 -(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
 {
+    
+    bool readonly = [[self.content_data_download valueForKey:@"readonly"]boolValue];
     NSLog(@"tableView willSelectRowAtIndexPath");
     NSDictionary* item_json =((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row];
     AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
@@ -3073,7 +3196,7 @@ cvc.showNavibar = true;
     if([control isEqualToString:@"enum"])//||[control isEqualToString:@"ui"])
     {
         int disable = [[item_json valueForKey:@"disable"] intValue];
-        if(disable==1)
+        if(disable==1||readonly)
             return nil;
         //    NSDictionary * item_json = [self.content_data objectForKey:[NSString stringWithFormat:@"item_%d",indexPath.row]];
         NSDictionary* cadedate_json = [item_json objectForKey:@"cadedate"];
@@ -3746,7 +3869,7 @@ cvc.showNavibar = true;
     
     
     
-  }
+}
 - (void)textViewDidEndEditing:(UITextView *)textView
 {
     UITableViewCell *cell = (UITableViewCell *) textView.superview.superview;
@@ -3936,7 +4059,7 @@ cvc.showNavibar = true;
 - (void)textFieldDidEndEditing:(UITextField *)textField
 {
     
-        NSLog(@"textFieldDidEndEditing");
+    NSLog(@"textFieldDidEndEditing");
     UITableViewCell *cell = (UITableViewCell *) textField.superview.superview;
     NSIndexPath *   indexPath = self.lastedit_from;
     
@@ -4059,7 +4182,7 @@ cvc.showNavibar = true;
 #pragma mark- img changed
 
 // image 改变时执行
-- (void) imgIsChanged:(NSString *)url_down url_up:(NSString *)url_up indexPath: (NSIndexPath *) indexPath{
+- (void) imgIsChanged:(NSString *)url_down url_up:(NSString *)url_up indexPath: (NSIndexPath *) indexPath index:(int)index{
     // NSLog(@"Sender is = %@", url);
     
     
@@ -4075,9 +4198,14 @@ cvc.showNavibar = true;
     NSString* refresh_trigger = [item_json valueForKey:@"name"];
     NSString* subid=[item_json valueForKey:@"subid"];
     
-    item_json[@"img_url"]=url_down;
-    item_json[@"avalue"]=url_up;
     
+//    NSArray* imgs=[RAUtils string2arr:url_up separator:@","];
+    
+    
+//    imgs[index];
+    item_json[ [NSString stringWithFormat:@"img_url_%d",index]]=url_down;
+    item_json[@"avalue"]=url_up;
+    [item_json setValue:@"true" forKey:@"dirty"];
     if(subid==nil)
     {
         section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]] mutableCopy];
@@ -4115,8 +4243,8 @@ cvc.showNavibar = true;
     
     self.content_data_control = [self translate_json:self.content_data_download changed: self.changed_data];
     
-  //  NSRange range = NSMakeRange(indexPath.section, 1);
- //   NSIndexSet *sectionToReload = [NSIndexSet indexSetWithIndexesInRange:range];
+    //  NSRange range = NSMakeRange(indexPath.section, 1);
+    //   NSIndexSet *sectionToReload = [NSIndexSet indexSetWithIndexesInRange:range];
     //  [self.editorTable reloadSections:sectionToReload withRowAnimation:UITableViewRowAnimationAutomatic];
     
     
@@ -4437,9 +4565,9 @@ cvc.showNavibar = true;
     
     self.editorTable.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height-self.keyboard_h);
     
-//    CGSize tablecontent =self.editorTable.contentSize;
-//    tablecontent.height=tablecontent.height+self.keyboard_h;
-//    self.editorTable.contentSize=tablecontent;
+    //    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];
@@ -4459,7 +4587,7 @@ cvc.showNavibar = true;
     [animationDurationValue getValue:&animationDuration];
     CGSize tablecontent =self.editorTable.contentSize;
     tablecontent.height=tablecontent.height-self.keyboard_h;
-//    self.editorTable.contentSize=tablecontent;
+    //    self.editorTable.contentSize=tablecontent;
     
     self.editorTable.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
     
@@ -4467,25 +4595,25 @@ cvc.showNavibar = true;
     NSLog(@"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;
-//    }
+    //    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];

+ 17 - 0
RedAnt ERP Mobile/common/Functions/cart/CartGeneralNotesViewController.h

@@ -0,0 +1,17 @@
+//
+//  CartGeneralNotesViewController.h
+//  iSales-NPD
+//
+//  Created by Ray on 2/16/16.
+//  Copyright © 2016 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface CartGeneralNotesViewController : UIViewController
+@property (strong, nonatomic) IBOutlet UITextView *tv_notes;
+//@property (strong,nonatomic) NSString* cart_id;
+
+@property (nonatomic , copy) void (^onSetValue)(NSString* notes);
+@property (strong,nonatomic) NSString* notes;
+@end

+ 90 - 0
RedAnt ERP Mobile/common/Functions/cart/CartGeneralNotesViewController.m

@@ -0,0 +1,90 @@
+//
+//  CartGeneralNotesViewController.m
+//  iSales-NPD
+//
+//  Created by Ray on 2/16/16.
+//  Copyright © 2016 United Software Applications, Inc. All rights reserved.
+//
+
+#import "CartGeneralNotesViewController.h"
+#import "iSalesNetwork.h"
+
+@interface CartGeneralNotesViewController ()
+
+@end
+
+@implementation CartGeneralNotesViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+        self.tv_notes.text = self.notes;
+    // Do any additional setup after loading the view.
+}
+
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+- (IBAction)onCloseClicked:(id)sender {
+    [self dismissViewControllerAnimated:NO
+                             completion:^{
+                                 
+                                 
+                             }];
+}
+- (IBAction)onSaveClicked:(id)sender {
+    
+    
+    
+    
+    // [self.tv_notes endEditing:true];
+    self.notes = self.tv_notes.text;
+    
+    UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait..." title:@"Update General Notes"];
+    
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+        
+        NSDictionary* cart_json = nil;
+        
+        UIApplication * app = [UIApplication sharedApplication];
+        AppDelegate *appDelegate = (AppDelegate *)[app delegate];
+        
+        cart_json = [iSalesNetwork cart_setGeneralNote:appDelegate.order_code notes:self.tv_notes.text];
+        
+        dispatch_async(dispatch_get_main_queue(), ^{
+            
+            
+            [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+            if([[cart_json valueForKey:@"result"] intValue]==2)
+            {
+                [self dismissViewControllerAnimated:NO
+                                         completion:^{
+                                             
+                                             if(self.onSetValue)
+                                                 self.onSetValue(self.notes);
+                                             
+                                         }];
+            }
+            else
+            {
+                [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Update General Notes" controller:self] ;
+            }
+            
+            
+            
+            
+        });
+    });
+}
+
+/*
+ #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.
+ }
+ */
+
+@end

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

@@ -27,6 +27,10 @@
 @property double total_cuft;
 @property double total_weight;
 @property int total_carton;
+@property int total_item;
+@property int total_QTY;
+
+@property (strong,nonatomic) NSString* notes;
 
 @property (strong, nonatomic) IBOutlet UILabel *labelTotal;
 
@@ -52,5 +56,8 @@
 @property (strong, nonatomic) IBOutlet UILabel *label_cuft;
 @property (strong, nonatomic) IBOutlet UILabel *label_weight;
 @property (strong, nonatomic) IBOutlet UILabel *label_carton;
+@property (strong, nonatomic) IBOutlet UILabel *label_qty;
+@property (strong, nonatomic) IBOutlet UILabel *label_items;
+@property (strong, nonatomic) IBOutlet UILabel *label_notes;
 
 @end

+ 198 - 60
RedAnt ERP Mobile/common/Functions/cart/CartViewController.m

@@ -17,6 +17,9 @@
 #import "EditModelPriceViewController.h"
 #import "MainViewController.h"
 #import "LoginViewController.h"
+#import "ItemNotesViewController.h"
+
+#import "CartGeneralNotesViewController.h"
 
 
 #define ALERT_FREE 1024
@@ -32,7 +35,7 @@
 
 -(void) logout
 {
-
+    
     [self.content_arr removeAllObjects];
 }
 
@@ -41,7 +44,7 @@
     
     
     
-
+    
     NSMutableArray* arr_ids = [[NSMutableArray alloc] init];
     
     
@@ -325,12 +328,12 @@
 
 - (IBAction)onEditClick:(id)sender {
     
-//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
-//    
-//    [appDelegate test_onDecodedDataResult:@"371252"];
-//    
-//    
-//    return;
+    //    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    //
+    //    [appDelegate test_onDecodedDataResult:@"371252"];
+    //
+    //
+    //    return;
     
     
     [self begin_edit];
@@ -478,10 +481,10 @@
 }
 -(void) reload_data
 {
-        dispatch_async(dispatch_get_main_queue(), ^{
-    if(self.isrefreshing)
-        return;
-
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if(self.isrefreshing)
+            return;
+        
         self.itemListTable.hidden = true;
         self.label_net_err.hidden=true;
         self.isrefreshing=true;
@@ -508,6 +511,7 @@
                 
                 //            self.content_data = [cart_json mutableCopy];
                 self.freejson = [cart_json objectForKey:@"freeGiveaway"];
+                self.notes = [cart_json valueForKey:@"general_note"];
                 self.content_arr = [RAUtils dictionary2array:cart_json count_fields:@"count" item_mark:@"item_" items_mark:nil];
                 [self.itemListTable reloadData];
                 
@@ -696,23 +700,23 @@
     
     
     /*   FREE GIVE AWAY
-    int free_count = [[self.freejson valueForKey:@"count"]intValue];
-    for(int ic=free_count-1;ic>=0;ic--)
-    {
-        float compare_price = [[self.freejson valueForKey:[NSString stringWithFormat:@"item_%d",ic]] floatValue];
-        if(self.total>=compare_price && !have_free&&appDelegate.can_set_cart_price)
-        {
-            
-            UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Free give away available.", nil) message:[NSString stringWithFormat:@"Order total price more than %.2f, do you want to add free give away item before place order?", compare_price] delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
-            alert.tag = ALERT_FREE;
-            [alert show];
-            return;
-            
-        }
-    }
-    
-    */
+     int free_count = [[self.freejson valueForKey:@"count"]intValue];
+     for(int ic=free_count-1;ic>=0;ic--)
+     {
+     float compare_price = [[self.freejson valueForKey:[NSString stringWithFormat:@"item_%d",ic]] floatValue];
+     if(self.total>=compare_price && !have_free&&appDelegate.can_set_cart_price)
+     {
      
+     UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Free give away available.", nil) message:[NSString stringWithFormat:@"Order total price more than %.2f, do you want to add free give away item before place order?", compare_price] delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
+     alert.tag = ALERT_FREE;
+     [alert show];
+     return;
+     
+     }
+     }
+     
+     */
+    
     NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
     //   NSString * string = [checked componentsJoinedByString:@","];
     //  [params setValue:string forKey:@"cart2Checkbox"];
@@ -862,7 +866,9 @@
             double weight=count*[[item_json valueForKey:@"weight"] doubleValue];
             int carton=count*[[item_json valueForKey:@"carton"] intValue];
             
+            int item_count=1;
             
+            int item_qty=1;
             NSDictionary * bundle_item =[item_json objectForKey:@"combine"];
             
             double dprice=0;
@@ -877,6 +883,8 @@
                     NSDictionary * bitem = [bundle_item objectForKey:[NSString stringWithFormat:@"item_%d",bc]];
                     int modulus= [[bitem valueForKey:@"modulus"] intValue];
                     //    citem+= modulus;
+                    item_count+=1;
+                    item_qty+=modulus;
                     double uprice= [[bitem valueForKey:@"unit_price"]doubleValue];
                     dprice+= uprice*modulus*count;
                     
@@ -888,6 +896,9 @@
             self.total_cuft+=cuft;
             self.total_carton+=carton;
             self.total_weight+=weight;
+            self.total_item+=item_count;
+            self.total_QTY+=(item_qty)*count;
+            
         }
         
         
@@ -899,6 +910,11 @@
     NSString* subcarton = [NSString stringWithFormat:@"%d",self.total_carton];
     NSString* subweight = [NSString stringWithFormat:@"%.2f lbs",self.total_weight];
     
+    
+    NSString* subitems = [NSString stringWithFormat:@"%d",self.total_item];
+    
+    NSString* subqty = [NSString stringWithFormat:@"%d",self.total_QTY];
+    
     if(appDelegate.can_see_price&&appDelegate.price_hidden==false)
     {
         
@@ -913,6 +929,56 @@
     self.label_cuft.text=subcuft;
     self.label_carton.text=subcarton;
     self.label_weight.text=subweight;
+    self.label_items.text = subitems;
+    self.label_qty.text = subqty;
+    self.label_notes.text = self.notes;
+    
+}
+- (IBAction)onEditGeneralNotes:(id)sender {
+    
+    UIViewController* parentvc=self;
+    
+    
+    
+    
+    CartGeneralNotesViewController * vc =[ parentvc.storyboard instantiateViewControllerWithIdentifier:@"CartGeneralNotesViewController"];
+    
+    
+//    NSMutableDictionary * item_json = [self.content_arr[indexPath.row ] mutableCopy];// [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+    
+    
+    
+    
+    vc.notes=self.notes;
+   
+    
+    //    vc.delegate = parentvc.self;
+    //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+            vc.onSetValue = ^(NSString* notes){
+                self.notes = notes;
+                
+                [self refresh_total];
+            };
+    //
+    
+    UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ;
+    
+    
+    
+    
+    
+    //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
+    
+    navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
+    [parentvc presentViewController:navi animated:YES completion:^{
+        
+        //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
+        
+        NSLog(@"EditModelPriceViewController present.........");
+        
+        //   self.btop = false;
+        //  <#code#>
+    }];
     
 }
 - (IBAction)onSelectAll:(UIButton *)sender {
@@ -1361,6 +1427,11 @@
         
         return;
     }
+    
+    // no checkmark support anymore for cart
+    
+    return;
+    
     ModelItemCell* cell = (ModelItemCell*)[tableView cellForRowAtIndexPath:indexPath];
     
     
@@ -1615,44 +1686,108 @@
     
     
     
-    UITableViewRowAction *freeRowAction = nil;
+    //    UITableViewRowAction *freeRowAction = nil;
+    //
+    //
+    //    NSDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
+    //
+    //    bool isfree = [[item_json valueForKey:@"is_free"]boolValue];
+    //
+    //    if(!isfree)
+    //    {
+    //
+    //        freeRowAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Set Free" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
+    //
+    //            NSLog(@"free click");
+    //
+    //
+    //
+    //            UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Free give away confirm", nil) message:NSLocalizedString(@"Are you sure make this model free?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
+    //            alert.tag = ALERT_SET_FREE;
+    //            // alert.
+    //            [alert show];
+    //        }];
+    //    }
+    //    else
+    //    {
+    //
+    //        freeRowAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Not Free" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
+    //
+    //            UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Restore free model confirm", nil) message:NSLocalizedString(@"Are you sure restore free model?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
+    //            alert.tag = ALERT_RESTORE_FREE;
+    //            // alert.
+    //            [alert show];
+    //        }];
+    //    }
+    //
+    //
+    //
+    //    freeRowAction.backgroundColor = [UIColor lightGrayColor];
+    
+    UITableViewRowAction *noteRowAction = nil;
+    
+    
+   // NSDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
     
     
-    NSDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]];
     
-    bool isfree = [[item_json valueForKey:@"is_free"]boolValue];
     
-    if(!isfree)
-    {
+    noteRowAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Edit note" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
         
-        freeRowAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Set Free" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
-            
-            NSLog(@"free click");
+        NSLog(@"item note click");
+        
+        
+        UIViewController* parentvc=self;
+        
+        
+        
+        
+        ItemNotesViewController * vc =[ parentvc.storyboard instantiateViewControllerWithIdentifier:@"ItemNotesViewController"];
+        
+        
+        NSMutableDictionary * item_json = [self.content_arr[indexPath.row ] mutableCopy];// [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy];
+        
+        
+        
+        
+        vc.notes=[item_json valueForKey:@"notes"];
+        vc.cart_id = [NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]];
+        //    vc.delegate = parentvc.self;
+        //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+//        vc.onSetValue = ^(){
+//            [self reload_data];//[main_vc checklogin:true];
+//        };
+//        
+        
+        UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ;
+        
+        
+        
+        
+        
+        //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
+        
+        navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
+        [parentvc presentViewController:navi animated:YES completion:^{
             
+            //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
             
+            NSLog(@"EditModelPriceViewController present.........");
             
-            UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Free give away confirm", nil) message:NSLocalizedString(@"Are you sure make this model free?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
-            alert.tag = ALERT_SET_FREE;
-            // alert.
-            [alert show];
+            //   self.btop = false;
+            //  <#code#>
         }];
-    }
-    else
-    {
         
-        freeRowAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Not Free" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
-            
-            UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Restore free model confirm", nil) message:NSLocalizedString(@"Are you sure restore free model?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil];
-            alert.tag = ALERT_RESTORE_FREE;
-            // alert.
-            [alert show];
-        }];
-    }
-    
+        [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle];
+        
+
+
+        
+    }];
     
     
-    freeRowAction.backgroundColor = [UIColor lightGrayColor];
     
+    noteRowAction.backgroundColor = [UIColor lightGrayColor];
     
     
     
@@ -1661,16 +1796,19 @@
     {
         NSMutableArray* arr=[@[] mutableCopy];
         
+        [arr addObject:noteRowAction];
+        
         [arr addObject:deleteRowAction];
         [arr addObject:addWatchAction];
         
         if(appDelegate.can_set_cart_price)
         {
             [arr addObject:editRowAction];
-           // [arr addObject:freeRowAction];
+            // [arr addObject:freeRowAction];
         }
         
         
+        
         return arr;
         //    return @[deleteRowAction,addWatchAction, editRowAction,freeRowAction];
     }
@@ -1742,7 +1880,7 @@ commitEditingStyle:(UITableViewCellEditingStyle)editingStyle  forRowAtIndexPath:
                     
                     if([[cart_json valueForKey:@"result"] intValue]==2)
                     {
-                      //  AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                        //  AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
                         for(int i=0;i<self.content_arr.count;i++)
                         {
                             NSDictionary* obj_json = self.content_arr[i];
@@ -1878,7 +2016,7 @@ commitEditingStyle:(UITableViewCellEditingStyle)editingStyle  forRowAtIndexPath:
 #pragma mark - Support scanner
 -(void) onDecodedData:(NSString*) value
 {
- //   return;
+    //   return;
     
     
     [self addtocart:value];
@@ -1958,7 +2096,7 @@ commitEditingStyle:(UITableViewCellEditingStyle)editingStyle  forRowAtIndexPath:
             {
                 NSDictionary* newitem = [return_json objectForKey:@"item_0"];
                 NSString* item_id = [newitem valueForKey:@"cart_item_id"];
-              //  bool isnew=false;
+                //  bool isnew=false;
                 AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
                 //                [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
                 for(int i=0;i<self.content_arr.count;i++)
@@ -1967,11 +2105,11 @@ commitEditingStyle:(UITableViewCellEditingStyle)editingStyle  forRowAtIndexPath:
                     NSString* _id =[obj_json valueForKey:@"cart_item_id"];
                     if([_id isEqualToString:item_id])
                     {
-//                        self.content_arr[i] = newitem;
+                        //                        self.content_arr[i] = newitem;
                         
                         
                         [self.content_arr removeObjectAtIndex:i];
-
+                        
                         break;
                         //                        [self.content_arr removeObjectAtIndex:i];
                         //                        [self.itemListTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
@@ -1982,7 +2120,7 @@ commitEditingStyle:(UITableViewCellEditingStyle)editingStyle  forRowAtIndexPath:
                     
                 }
                 [self.content_arr insertObject:newitem atIndex:0];
-               
+                
                 [self.itemListTable reloadData];
                 [self refresh_total];
                 //                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];

+ 15 - 0
RedAnt ERP Mobile/common/Functions/cart/ItemNotesViewController.h

@@ -0,0 +1,15 @@
+//
+//  ItemNotesViewController.h
+//  iSales-NPD
+//
+//  Created by Ray on 2/16/16.
+//  Copyright © 2016 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface ItemNotesViewController : UIViewController
+@property (strong, nonatomic) IBOutlet UITextView *tv_notes;
+@property (strong,nonatomic) NSString* cart_id;
+@property (strong,nonatomic) NSString* notes;
+@end

+ 91 - 0
RedAnt ERP Mobile/common/Functions/cart/ItemNotesViewController.m

@@ -0,0 +1,91 @@
+//
+//  ItemNotesViewController.m
+//  iSales-NPD
+//
+//  Created by Ray on 2/16/16.
+//  Copyright © 2016 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ItemNotesViewController.h"
+#import "iSalesNetwork.h"
+@interface ItemNotesViewController ()
+
+@end
+
+@implementation ItemNotesViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    
+    self.tv_notes.text = self.notes;
+    // Do any additional setup after loading the view.
+}
+
+- (void)didReceiveMemoryWarning {
+    [super didReceiveMemoryWarning];
+    // Dispose of any resources that can be recreated.
+}
+
+
+- (IBAction)onCloseClicked:(id)sender {
+    [self dismissViewControllerAnimated:NO
+                             completion:^{
+                                 
+                                 
+                             }];
+}
+- (IBAction)onSaveClicked:(id)sender {
+    
+    
+    
+
+   // [self.tv_notes endEditing:true];
+    
+    
+    UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait..." title:@"Update Item Notes"];
+    
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+        
+        NSDictionary* cart_json = nil;
+
+        
+
+        cart_json = [iSalesNetwork cart_setItemNote:self.cart_id notes:self.tv_notes.text];
+        
+        dispatch_async(dispatch_get_main_queue(), ^{
+            
+            
+            [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+            if([[cart_json valueForKey:@"result"] intValue]==2)
+            {
+                [self dismissViewControllerAnimated:NO
+                                         completion:^{
+//                                             if(self.onSetValue)
+//                                                 
+//                                                 self.onSetValue();
+                                             
+                                         }];
+            }
+            else
+            {
+                [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Update Item Notes" controller:self] ;
+            }
+            
+            
+            
+            
+        });
+    });
+}
+
+/*
+#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.
+}
+*/
+
+@end

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

@@ -7,7 +7,7 @@
 //
 
 #import <UIKit/UIKit.h>
-#import "TouchLabel.h"
+//#import "TouchLabel.h"
 #import "StrikethroughLabel.h"
 
 @class ModelItemCell;

+ 2 - 2
RedAnt ERP Mobile/common/Functions/contact/ContactListViewController.m

@@ -385,9 +385,9 @@ self.label_net_err.hidden=true;
     
     CustomerEditViewController * cuseditVC =[ self.storyboard instantiateViewControllerWithIdentifier:@"CustomerEditViewController"];
     
-    
+    cuseditVC.bnewcustomer=true;
     cuseditVC.url_type = URL_REMOTE;
-    cuseditVC.request_url=URL_CUSTOMER_EDIT;
+    cuseditVC.request_url=URL_NEW_CUSTOMER;
     
     cuseditVC.params = params;
     

+ 1 - 1
RedAnt ERP Mobile/common/Functions/contact/CustomerEditViewController.h

@@ -9,5 +9,5 @@
 #import "CommonEditorViewController.h"
 
 @interface CustomerEditViewController : CommonEditorViewController
-
+@property bool bnewcustomer;
 @end

+ 89 - 79
RedAnt ERP Mobile/common/Functions/contact/CustomerEditViewController.m

@@ -30,7 +30,7 @@
     
     
     
-//    NSMutableArray * items = [[NSMutableArray alloc]init];
+    //    NSMutableArray * items = [[NSMutableArray alloc]init];
     
     
     UIBarButtonItem *savebtn = nil;//[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"", nil) style:UIBarButtonItemStylePlain target:self action:@selector(onSaveClick:)];
@@ -43,56 +43,56 @@
     
     self.navigationItem.rightBarButtonItem = savebtn;
     
-//    UIBarButtonItem *btnCommit = nil;
-//    btnCommit =[[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"commit"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
-//                                                style:UIBarButtonItemStylePlain
-//                                               target:self
-//                                               action:@selector(onCommitOrderClick:)];
-//    
-//    
-//    
-//    
-//    //savebtn setBackgroundImage:(nullable UIImage *) forState:<#(UIControlState)#> style:<#(UIBarButtonItemStyle)#> barMetrics:<#(UIBarMetrics)#>
-//    //[savebtn setImage:[UIImage imageNamed:@"save"] ];
-//    
-//    
-//    /*
-//     UIBarMetricsDefault,
-//     UIBarMetricsCompact,
-//     UIBarMetricsDefaultPrompt = 101, // Applicable only in bars with the prompt property, such as UINavigationBar and UISearchBar
-//     UIBarMetricsCompactPrompt
-//     
-//     */
-//    // [savebtn setBackgroundImage:[UIImage imageNamed:@"save"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
-//    //        UIBarButtonItem *item1 = [[UIBarButtonItem alloc] init];
-//    //        item1.title = @"item1";
-//    ////        item1.image = [UIImage imageNamed:@"rect_setting"];
-//    //        UIBarButtonItem *item2 = [[UIBarButtonItem alloc] init];
-//    ////        item2.image = [UIImage imageNamed:@"rect_about"];
-//    //        item2.title = @"item2";
-//    
-//    
-//    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];
-//    }
-//    [items addObject:btnCommit];
-//    //        [items addObject:item2];
-//    self.navigationItem.rightBarButtonItems=items;
-
-
+    //    UIBarButtonItem *btnCommit = nil;
+    //    btnCommit =[[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"commit"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
+    //                                                style:UIBarButtonItemStylePlain
+    //                                               target:self
+    //                                               action:@selector(onCommitOrderClick:)];
+    //
+    //
+    //
+    //
+    //    //savebtn setBackgroundImage:(nullable UIImage *) forState:<#(UIControlState)#> style:<#(UIBarButtonItemStyle)#> barMetrics:<#(UIBarMetrics)#>
+    //    //[savebtn setImage:[UIImage imageNamed:@"save"] ];
+    //
+    //
+    //    /*
+    //     UIBarMetricsDefault,
+    //     UIBarMetricsCompact,
+    //     UIBarMetricsDefaultPrompt = 101, // Applicable only in bars with the prompt property, such as UINavigationBar and UISearchBar
+    //     UIBarMetricsCompactPrompt
+    //
+    //     */
+    //    // [savebtn setBackgroundImage:[UIImage imageNamed:@"save"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
+    //    //        UIBarButtonItem *item1 = [[UIBarButtonItem alloc] init];
+    //    //        item1.title = @"item1";
+    //    ////        item1.image = [UIImage imageNamed:@"rect_setting"];
+    //    //        UIBarButtonItem *item2 = [[UIBarButtonItem alloc] init];
+    //    ////        item2.image = [UIImage imageNamed:@"rect_about"];
+    //    //        item2.title = @"item2";
+    //
+    //
+    //    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];
+    //    }
+    //    [items addObject:btnCommit];
+    //    //        [items addObject:item2];
+    //    self.navigationItem.rightBarButtonItems=items;
+    
+    
     // Do any additional setup after loading the view.
 }
 - (void)onBackClick:(UIButton *)sender {
     [self.navigationController popViewControllerAnimated:false];
-     }
+}
 
 - (void)onSaveClick:(UIButton *)sender {
     // add params check here.
@@ -100,7 +100,7 @@
     [self.lasttextview endEditing:true];
     self.cancommit=true;
     NSMutableDictionary* upparams=[[NSMutableDictionary alloc] init];
-//    [upparams setValue:[self.params valueForKey:@"cart2Checkbox"] forKey:@"cart2Checkbox"];
+    //    [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++)
     {
@@ -138,20 +138,20 @@
                 else
                 {
                     
-                     NSMutableArray* checked = [[NSMutableArray alloc] init];
+                    NSMutableArray* checked = [[NSMutableArray alloc] init];
                     NSDictionary* cadejson=[itemjson objectForKey:@"cadedate"];
                     int count = [[cadejson valueForKey:@"count"] intValue];
-                   // bool setvalue = false;
+                    // 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)
                         {
                             
-                             [checked addObject:[NSNumber numberWithInt:[[valjson valueForKey:@"value_id"] intValue]]];
-//                            [upparams setValue:[valjson valueForKey:@"value_id"] forKey:[itemjson valueForKey:@"name"]];
-//                            setvalue=true;
-//                            break;
+                            [checked addObject:[NSNumber numberWithInt:[[valjson valueForKey:@"value_id"] intValue]]];
+                            //                            [upparams setValue:[valjson valueForKey:@"value_id"] forKey:[itemjson valueForKey:@"name"]];
+                            //                            setvalue=true;
+                            //                            break;
                         }
                     }
                     if([[itemjson valueForKey:@"required"] isEqualToString: @"true"]&&checked.count==0)
@@ -160,7 +160,7 @@
                     }
                     else
                     {
-                    NSString * string = [checked componentsJoinedByString:@","];
+                        NSString * string = [checked componentsJoinedByString:@","];
                         [upparams setValue:string forKey:[itemjson valueForKey:@"name"]];
                     }
                 }
@@ -227,22 +227,22 @@
                                 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;
+                        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."];
+        [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];
         //NSLog(@"CONTENT translate:%@",[iSalesNetwork DataTOjsonString:self.content_data]);
         //[self.editorTable reloadData ];
@@ -252,7 +252,12 @@
     UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Saving Contact"];
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
         
-        NSDictionary* editor_json = [iSalesNetwork save_Customer:upparams];
+        NSDictionary* editor_json = nil;
+        NSString* contactId=[upparams valueForKey:@"contactId"];
+        if(self.bnewcustomer )
+            editor_json=[iSalesNetwork save_newCustomer:upparams];
+        else
+            editor_json=[iSalesNetwork update_Customer:upparams];
         
         dispatch_async(dispatch_get_main_queue(), ^{
             [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
@@ -260,21 +265,26 @@
             
             if([[editor_json valueForKey:@"result"] intValue]==2)
             {
-//                NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
-//                
-//                
-//                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
-//                appDelegate.customerInfo = customerInfo;
-//                appDelegate.contact_id = [customerInfo valueForKey:@"customer_cid"];
+                //                NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table];
+                //
+                //
+                //                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                //                appDelegate.customerInfo = customerInfo;
+                //                appDelegate.contact_id = [customerInfo valueForKey:@"customer_cid"];
                 //    //     self.labelContact.text=appDelegate.contact_name;
                 //
                 //    NSDictionary * customerinfo = appDelegate.customerInfo;
                 [self prepareReturn:nil];
-                [self.navigationController popViewControllerAnimated:false];
+                if(self.bnewcustomer  )
+                    [self.navigationController popViewControllerAnimated:false];
+                else
+                    [self.navigationController popToRootViewControllerAnimated:false];
                 
                 AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
                 [((MainViewController*)appDelegate.main_vc) reloadContact:true immediately:false];
                 
+                
+                
             }
             else
             {
@@ -295,13 +305,13 @@
 }
 
 /*
-#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 - 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.
+ }
+ */
 
 @end

+ 1 - 0
RedAnt ERP Mobile/common/Functions/contact/CustomerInfoViewController.h

@@ -18,5 +18,6 @@
 @property (strong,nonatomic) NSString* rightbtn_title;
 @property (strong, nonatomic) IBOutlet UIBarButtonItem *right_btn;
 @property bool update_order;
+@property (strong, nonatomic) IBOutlet UIBarButtonItem *btn_edit;
 
 @end

+ 44 - 4
RedAnt ERP Mobile/common/Functions/contact/CustomerInfoViewController.m

@@ -8,6 +8,7 @@
 
 #import "CustomerInfoViewController.h"
 #import "iSalesNetwork.h"
+#import "CustomerEditViewController.h"
 
 @interface CustomerInfoViewController ()
 
@@ -105,10 +106,24 @@
             
             if([control isEqualToString:@"img"])
             {
-                NSString* img_url = [itemjson valueForKey:@"img_url"];
-                
-                NSString* url_value = [self.data_init valueForKey:img_url];
-                [itemjson setValue:url_value forKey:@"img_url"];
+                {
+                    NSString* img_url = [itemjson valueForKey:@"img_url_0"];
+                    
+                    NSString* url_value = [self.data_init valueForKey:img_url];
+                    [itemjson setValue:url_value forKey:@"img_url_0"];
+                }
+                {
+                    NSString* img_url = [itemjson valueForKey:@"img_url_1"];
+                    
+                    NSString* url_value = [self.data_init valueForKey:img_url];
+                    [itemjson setValue:url_value forKey:@"img_url_1"];
+                }
+                {
+                    NSString* img_url = [itemjson valueForKey:@"img_url_2"];
+                    
+                    NSString* url_value = [self.data_init valueForKey:img_url];
+                    [itemjson setValue:url_value forKey:@"img_url_2"];
+                }
             }
             
             [sectionjson setObject:itemjson forKey:[NSString stringWithFormat:@"item_%d",j]];
@@ -122,6 +137,31 @@
 //    self.navigationItem.title =  [self.content_data_download valueForKey:@"title"] ;
     [self.editorTable reloadData];
 }
+- (IBAction)onEditClick:(id)sender {
+    
+    
+    NSMutableDictionary * params= [[NSMutableDictionary alloc] init];
+    
+    
+    [params setValue:self.contactId forKey:@"contactId"];
+    CustomerEditViewController * cuseditVC =[ self.storyboard instantiateViewControllerWithIdentifier:@"CustomerEditViewController"];
+    
+    cuseditVC.bnewcustomer=false;
+    cuseditVC.url_type = URL_REMOTE;
+    cuseditVC.request_url=URL_EDIT_CUSTOMER;
+    
+    cuseditVC.params = params;
+    
+    cuseditVC.delegate=self;
+    //
+    //    if(checked.count==count)
+    //    {
+    //    orderinfoVC.have_tail = true
+    //    }
+    [[self navigationController] setNavigationBarHidden:NO animated:NO];
+    [self.navigationController pushViewController:cuseditVC animated:false];
+
+}
 - (IBAction)onSetClick:(id)sender {
     
         [self.lastedit endEditing:true];

+ 4 - 1
RedAnt ERP Mobile/common/Functions/contact/customer_info_template.json

@@ -1,5 +1,6 @@
 {
     "result": 1,
+    "readonly":"1",
     "title": "Customer Information",
     "section_count": 1,
     "section_0": {
@@ -22,7 +23,9 @@
             "aname": "Contact ID",
             "name": "customer_cid",
             "control": "img",
-            "img_url":"business_card",
+            "img_url_0":"business_card_0",
+            "img_url_1":"business_card_1",
+            "img_url_2":"business_card_2",
             "value": ""
         },
 

+ 1 - 0
RedAnt ERP Mobile/common/Functions/order/OrderDetailViewController.h

@@ -20,6 +20,7 @@
 @property (strong, nonatomic) IBOutlet UIBarButtonItem *btnOpen;
 @property (strong, nonatomic) IBOutlet UIBarButtonItem *btnRelease;
 @property (strong, nonatomic) IBOutlet UIBarButtonItem *btnCommit;
+@property (strong, nonatomic) IBOutlet UIBarButtonItem *btnSign;
 
 @property (strong, nonatomic) IBOutlet UIBarButtonItem *btnSend;
 

+ 41 - 1
RedAnt ERP Mobile/common/Functions/order/OrderDetailViewController.m

@@ -18,7 +18,7 @@
 #import "DetailViewController.h"
 
 #import "PDFViewController.h"
-
+#import "SignatureViewController.h"
 #import "MainViewController.h"
 
 #define  DEF_CELL_HEIGHT 44
@@ -122,6 +122,16 @@
     
     self.btnOpen.tintColor = UIColorFromRGB(0x996633);
     
+    
+    
+    self.btnSign = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"signature"] imageWithRenderingMode:UIImageRenderingModeAutomatic]
+                                                    style:UIBarButtonItemStylePlain
+                                                   target:self
+                                                   action:@selector(onSignOrderClick:)];//[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Edit", nil) style:UIBarButtonItemStylePlain target:self action:@selector(onOpenOrderClick:)];
+    
+    self.btnSign.tintColor = UIColorFromRGB(0x996633);
+    
+    
     self.btnCommit =[[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"commit"] imageWithRenderingMode:UIImageRenderingModeAutomatic]
                                                      style:UIBarButtonItemStylePlain
                                                     target:self
@@ -164,6 +174,10 @@
     [items addObject:self.btnRelease];
     [items addObject:fixedItem];
     [items addObject:self.btnPDF];
+    [items addObject:fixedItem];
+    [items addObject:self.btnSign];
+    
+    
     //        [items addObject:item2];
     self.navigationItem.rightBarButtonItems=items;
     
@@ -371,6 +385,32 @@
     }
 
     
+}
+- (IBAction)onSignOrderClick:(id)sender {
+    
+//    SignatureViewController * vc;
+    
+    __block UIImage* signimg=nil;
+    SignatureViewController * vc =[ self.storyboard instantiateViewControllerWithIdentifier:@"SignatureViewController"];
+    
+    vc.onReturnImg = ^(UIImage* img)
+    {
+        signimg = img;
+        int aaa = 0;
+    };
+//    orderinfoVC.url_type = URL_REMOTE;
+//    orderinfoVC.request_url=URL_CARTDELIVERY;
+//    
+//    orderinfoVC.params = params;
+//    
+//    orderinfoVC.delegate=self;
+    //
+    //    if(checked.count==count)
+    //    {
+    //    orderinfoVC.have_tail = true
+    //    }
+    
+    [self.navigationController pushViewController:vc animated:true];
 }
 - (IBAction)onOpenOrderClick:(id)sender {
     // get customer info

+ 25 - 1
RedAnt ERP Mobile/common/Functions/signature/SignatureView.m

@@ -103,9 +103,33 @@
 - (UIImage *)signatureImage {
     
 
+    CGRect rect = self.boundary;
+//    rect.size.width = rect.size.width/2;
+//    rect.size.height = rect.size.height/2;
+//    
+//    
+//    cropRect = CGRectMake ((imageHeight - imageWidth) / 2.0, 0.0, imageWidth, imageWidth);
+//    and
+//    
+//    // Create new cropped UIImage
+//    UIImage * croppedImage = [UIImage imageWithCGImage: imageRef scale: chosenImage.scale orientation: chosenImage.imageOrientation];
+//
     
+    
+    rect.origin.x=rect.origin.x*self.image.scale;
+        rect.origin.y=rect.origin.y*self.image.scale;
+        rect.size.width=rect.size.width*self.image.scale;
+        rect.size.height=rect.size.height*self.image.scale;
+    
+//    CGImageRef imageRef = self.image.CGImage;
+//    CGImageRef imagePartRef = CGImageCreateWithImageInRect(imageRef, rect);
+//    UIImage *cropImage = [UIImage imageWithCGImage:imagePartRef scale:self.image.scale orientation:self.image.imageOrientation];
+//    CGImageRelease(imagePartRef);
+//    return cropImage;
+//    
+//    UIImage* img= [[UIImage imageWithCGImage: CGImageCreateWithImageInRect(self.image.CGImage, rect)] copy];
 
-    return [[UIImage imageWithCGImage: CGImageCreateWithImageInRect(self.image.CGImage, CGRectInset(self.boundary, -1, -1))] copy];
+    return [[UIImage imageWithCGImage: CGImageCreateWithImageInRect(self.image.CGImage, CGRectInset(rect, -1, -1))] copy];
     //return [self.image copy];
 }
 

+ 1 - 0
RedAnt ERP Mobile/common/Functions/signature/SignatureViewController.h

@@ -20,5 +20,6 @@
 @property (strong,nonatomic) NSIndexPath *indexPath;
 @property (strong,nonatomic) UIImage *existSignature;
 @property (nonatomic, weak) id<SignatureViewControllerDelegate> delegate;
+@property (nonatomic , copy) void (^onReturnImg)(UIImage* img);
 
 @end

+ 2 - 1
RedAnt ERP Mobile/common/Functions/signature/SignatureViewController.m

@@ -89,7 +89,8 @@
     if (self.delegate && [self.delegate respondsToSelector:@selector(SignatureVCReturnData:indexPath:)]) {
         [self.delegate SignatureVCReturnData:data indexPath:self.indexPath];
     }
-
+    if(self.onReturnImg)
+        self.onReturnImg(img);
     [self.navigationController popViewControllerAnimated:true];
     
     //    [self.aBNewPersonNav dismissViewControllerAnimated:true completion:^{

+ 2 - 2
RedAnt ERP Mobile/common/RAUtils.h

@@ -21,7 +21,7 @@
 
 
 +(NSString*) dict2string:(NSDictionary*) dict;
-
++(NSString*) arr2string:(NSArray *) arr separator:(NSString*)separator trim:(bool) btrim;
 
 +(NSString*) base64en:(NSString*) string;
 +(NSString*) base64de:(NSString*) string;
@@ -33,6 +33,6 @@
 +(NSString* )current_date;
 +(NSMutableArray*)dictionary2array:(NSDictionary*)json count_fields:(NSString*) count_fields item_mark:(NSString*) item_mark items_mark:(NSString* )items_mark;
 
++(NSArray*) string2arr:(NSString*) string separator:(NSString*)separator;
 
-+(NSString*) arr2string:(NSArray *) arr separator:(NSString*)separator;
 @end

+ 12 - 3
RedAnt ERP Mobile/common/RAUtils.m

@@ -283,15 +283,24 @@
 //    [info setValue:[[UIDevice currentDevice] name] forKey:@"name"];
     
 }
-+(NSString*) arr2string:(NSArray *) arr separator:(NSString*)separator
+
++(NSArray*) string2arr:(NSString*) string separator:(NSString*)separator
+{
+    NSArray  *stringArray = [string componentsSeparatedByString:separator];
+    
+    return stringArray;
+}
++(NSString*) arr2string:(NSArray *) arr separator:(NSString*)separator trim:(bool) btrim
 {
     
     NSMutableArray * marr = [arr mutableCopy];
     for (NSString* item in marr) {
-        if(item.length==0)
+        if(item.length==0 )
+            if( btrim)
             [marr removeObject:item];
+        
     }
-    NSString * ret = [marr componentsJoinedByString:@","];
+    NSString * ret = [marr componentsJoinedByString:separator];
     return ret;
 }
 +(NSString*) dict2string:(NSDictionary*) dict

+ 31 - 1
RedAnt ERP Mobile/common/customUI/ImageViewController.m

@@ -22,8 +22,13 @@
                                                                    action:@selector( onBackClick:)];
     
     
-    self.navigationItem.leftBarButtonItem = closeButton;
+    UIBarButtonItem *downloadButton = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"download"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
+                                                                    style:UIBarButtonItemStylePlain
+                                                                   target:self
+                                                                   action:@selector( onDownloadClick:)];
     
+    self.navigationItem.leftBarButtonItem = closeButton;
+    self.navigationItem.rightBarButtonItem = downloadButton;
     
      self.imageView.image = self.image;
     // Do any additional setup after loading the view.
@@ -34,6 +39,31 @@
     [self.navigationController popViewControllerAnimated:FALSE];
 }
 
+- (void)saveImageToPhotos:(UIImage*)savedImage
+{
+    UIImageWriteToSavedPhotosAlbum(savedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
+}
+// 指定回调方法
+- (void)image: (UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo
+{
+    NSString *msg = nil ;
+    if(error != NULL){
+        msg = @"Failed to save image" ;
+    }else{
+        msg = @"Image saved" ;
+    }
+    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Save Image"
+                                                    message:msg
+                                                   delegate:self
+                                          cancelButtonTitle:@"OK"
+                                          otherButtonTitles:nil];
+    [alert show];
+}
+- (void)onDownloadClick:(UIButton *)sender {
+    
+    
+    [self saveImageToPhotos:self.image];
+}
 
 - (void)didReceiveMemoryWarning {
     [super didReceiveMemoryWarning];

+ 23 - 0
RedAnt ERP Mobile/common/customUI/TouchImageView.h

@@ -0,0 +1,23 @@
+//
+//  TouchImageView.h
+//  iSales-NPD
+//
+//  Created by Ray on 2/18/16.
+//  Copyright © 2016 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+@class TouchImageView;
+@protocol TouchImageViewDelegate <NSObject>
+@required
+//- (void)touchLabel:(TouchImageView *)touchLabel touchesWtihTag:(NSInteger)tag;
+- (void)TouchImageViewOnTouche:(TouchImageView *)touchImageView;
+@end
+@interface TouchImageView : UIImageView
+{
+@private
+    id <TouchImageViewDelegate> __unsafe_unretained delegate;
+}
+
+@property (unsafe_unretained) id <TouchImageViewDelegate> delegate;
+@end

+ 38 - 0
RedAnt ERP Mobile/common/customUI/TouchImageView.m

@@ -0,0 +1,38 @@
+//
+//  TouchImageView.m
+//  iSales-NPD
+//
+//  Created by Ray on 2/18/16.
+//  Copyright © 2016 United Software Applications, Inc. All rights reserved.
+//
+
+#import "TouchImageView.h"
+
+@implementation TouchImageView
+@synthesize delegate;
+
+- (void)awakeFromNib {
+    [self becomeFirstResponder];
+    self.userInteractionEnabled=true;
+    self.layer.borderColor = [UIColor darkGrayColor].CGColor;
+    self.layer.borderWidth = 1.0;
+    // Initialization code
+}
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
+    //    [self setTextColor:COLOR(0,0,0,1.0)];
+    UITouch *touch = [touches anyObject];
+    CGPoint points = [touch locationInView:self];
+//    if (points.x >= self.frame.origin.x && points.y >= self.frame.origin.x && points.x <= self.frame.size.width && points.y <= self.frame.size.height)
+//    {
+        [delegate TouchImageViewOnTouche:self];
+//        [delegate touchLabel:self touchesWtihTag:self.tag];
+//    }
+}
+@end

+ 9 - 4
RedAnt ERP Mobile/common/data_provider/iSalesNetwork.h

@@ -44,6 +44,11 @@
 +(NSDictionary*) cart_setPrice:(NSString*) cart_id price:(float) price discount:(float) discount;
 +(NSDictionary*) cart_setFree:(NSString*) cart_id isfree:(bool) isfree;
 
++(NSDictionary*) cart_setItemNote:(NSString*) cart_id notes:(NSString*) notes;
+
++(NSDictionary*) cart_setGeneralNote:(NSString*) order_code notes:(NSString*) notes;
+
+
 +(NSDictionary*) add_toCart:(NSString* ) item_id count:(int) count;
 +(NSDictionary*) add_toCart_byName:(NSString* ) model_name;
 +(NSDictionary*) add_toWatchList:(NSString* ) item_id;
@@ -72,10 +77,10 @@
 +(NSDictionary*)cancel_Order:(NSString*) order_id;
 
 +(NSDictionary*)request_CustomerInfo:(NSString* ) contactid;
-+(NSDictionary*)update_customer_img: (NSString*) contactid img_url:(NSString*) url;
-+(NSDictionary*) new_Customer;
-+(NSDictionary*)save_Customer:(NSMutableDictionary*)params;
-
++(NSDictionary*)update_customer_img: (NSString*) contactid img_url:(NSString*) url ;
+//+(NSDictionary*) new_Customer;
++(NSDictionary*)save_newCustomer:(NSMutableDictionary*)params;
++(NSDictionary*)update_Customer:(NSMutableDictionary*)params;
 
 +(NSDictionary*)create_Address:(NSMutableDictionary*)params;
 +(NSDictionary*)request_ContactList:(int) offset limit:(int)limit keywords:(NSString*) keywords type:(NSString*) contact_type adv_search:(NSDictionary*)upparams;

+ 139 - 35
RedAnt ERP Mobile/common/data_provider/iSalesNetwork.m

@@ -542,6 +542,7 @@ repeat:{
 
 +(NSDictionary*) cart_check:(NSString* ) item_ids
 {
+    return nil;
     if(![self IsNetworkAvailable])
         return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
     NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
@@ -820,8 +821,52 @@ repeat:{
         return nil;
     
 }
-
-+(NSDictionary*)save_Customer:(NSMutableDictionary*)params
++(NSDictionary*)update_Customer:(NSMutableDictionary*)params
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    //    if(![appDelegate.order_customer_id isEqualToString: appDelegate.contact_id]&& appDelegate.order_customer_id!=nil)
+    //        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
+    //    else
+    
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    //    NSDictionary* customerinfo=nil;
+    
+    //    if(![[appDelegate.customerInfo valueForKey:@"customer_cid" ] isEqualToString: [appDelegate.customerInfo valueForKey:@"customer_cid" ]]&& appDelegate.order_customer_id!=nil)
+    //        [params setValue:appDelegate.order_customer_id forKey:@"contactId"];
+    //    else
+    //        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    //
+    //    appDelegate.customerInfo;
+    
+    //    NSArray* keys=[customerinfo allKeys];
+    //    for(int i=0;i<keys.count;i++)
+    //    {
+    //        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
+    //    }
+    
+    //    [params setValue:sourceid forKey:@"sourceid"];
+    //    [params setValue:editor forKey:@"editor"];
+    NSData* json=[self get_json:URL_CUSTOMER_UPDATE parameters:params];
+    if(json!=nil)
+    {
+        NSError *error=nil;
+        NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+        return jsobj;
+    }
+    else
+        return nil;
+    
+}
++(NSDictionary*)save_newCustomer:(NSMutableDictionary*)params
 {
     if(![self IsNetworkAvailable])
         return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
@@ -1286,38 +1331,38 @@ repeat:{
     return jsobj;
 }
 
-+(NSDictionary*) new_Customer
-{
-    if(![self IsNetworkAvailable])
-        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
-    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
-    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
-    if(appDelegate.user!=nil)
-        [params setValue:appDelegate.user forKey:@"user"];
-//    if(appDelegate.contact_id!=nil)
-//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
-    if(appDelegate.password!=nil)
-        [params setValue:appDelegate.password forKey:@"password"];
-    
-//    if(appDelegate.order_code!=nil)
-//        [params setValue:appDelegate.order_code forKey:@"orderCode"];
-    
-    
-    NSDictionary* customerinfo= appDelegate.customerInfo;
-    
-    NSArray* keys=[customerinfo allKeys];
-    for(int i=0;i<keys.count;i++)
-    {
-        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
-    }
-    
-    NSData* json=[self get_json:URL_CUSTOMER_EDIT parameters:params];
-    if(json==nil)
-        return nil;
-    NSError *error=nil;
-    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
-    return jsobj;
-}
+//+(NSDictionary*) new_Customer
+//{
+//    if(![self IsNetworkAvailable])
+//        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+//    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//    if(appDelegate.user!=nil)
+//        [params setValue:appDelegate.user forKey:@"user"];
+////    if(appDelegate.contact_id!=nil)
+////        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+//    if(appDelegate.password!=nil)
+//        [params setValue:appDelegate.password forKey:@"password"];
+//    
+////    if(appDelegate.order_code!=nil)
+////        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+//    
+//    
+//    NSDictionary* customerinfo= appDelegate.customerInfo;
+//    
+//    NSArray* keys=[customerinfo allKeys];
+//    for(int i=0;i<keys.count;i++)
+//    {
+//        [params setValue:[customerinfo valueForKey:(NSString*)keys[i]] forKey:keys[i] ];
+//    }
+//    
+//    NSData* json=[self get_json:URL_CUSTOMER_EDIT parameters:params];
+//    if(json==nil)
+//        return nil;
+//    NSError *error=nil;
+//    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+//    return jsobj;
+//}
 +(NSDictionary*) new_Order
 {
     if(![self IsNetworkAvailable])
@@ -1486,6 +1531,64 @@ repeat:{
     NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
     return jsobj;
 }
++(NSDictionary*) cart_setGeneralNote:(NSString*) order_code notes:(NSString*) notes
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:order_code forKey:@"orderCode"];
+    
+    if(notes.length==0)
+        notes=@"";
+    
+    
+    [params setValue:notes forKey:@"comments"];
+    
+    
+    NSData* json=[self get_json:URL_CART_GENERAL_NOTES parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
++(NSDictionary*) cart_setItemNote:(NSString*) cart_id notes:(NSString*) notes
+{
+    if(![self IsNetworkAvailable])
+        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.user!=nil)
+        [params setValue:appDelegate.user forKey:@"user"];
+    if(appDelegate.contact_id!=nil)
+        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+    if(appDelegate.password!=nil)
+        [params setValue:appDelegate.password forKey:@"password"];
+    
+    [params setValue:cart_id forKey:@"cartitem_id"];
+    
+    if(notes.length==0)
+        notes=@"";
+
+    
+    [params setValue:notes forKey:@"notes"];
+    
+    
+    NSData* json=[self get_json:URL_CART_ITEM_NOTES parameters:params];
+    if(json==nil)
+        return nil;
+    NSError *error=nil;
+    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    return jsobj;
+}
 +(NSDictionary*) cart_setFree:(NSString*) cart_id isfree:(bool) isfree
 {
     if(![self IsNetworkAvailable])
@@ -2083,7 +2186,7 @@ repeat:{
     
     
 }
-+(NSDictionary*)update_customer_img: (NSString*) contactid img_url:(NSString*) url
++(NSDictionary*)update_customer_img: (NSString*) contactid img_url:(NSString*) url 
 {
     if(![self IsNetworkAvailable])
         return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
@@ -2099,6 +2202,7 @@ repeat:{
         [params setValue:appDelegate.password forKey:@"password"];
     [params setValue:contactid forKey:@"contactId"];
     [params setValue:url forKey:@"business_card"];
+    [params setValue:[NSNumber numberWithInt:index ] forKey:@"index"];
     NSData* json=[self get_json:URL_UPDATE_CUSTOMER_BCARD parameters:params];
     if(json==nil)
         return nil;

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

@@ -7,6 +7,8 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		712C40B61C7310F4000E6831 /* CartGeneralNotesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 712C40B51C7310F4000E6831 /* CartGeneralNotesViewController.m */; };
+		712C40B91C731126000E6831 /* ItemNotesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 712C40B81C731126000E6831 /* ItemNotesViewController.m */; };
 		713F76AA1929F4A7006A7305 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 713F76A91929F4A7006A7305 /* Foundation.framework */; };
 		713F76AC1929F4A7006A7305 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 713F76AB1929F4A7006A7305 /* CoreGraphics.framework */; };
 		713F76AE1929F4A7006A7305 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 713F76AD1929F4A7006A7305 /* UIKit.framework */; };
@@ -115,6 +117,7 @@
 		718716271C433D9700F25860 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 718716261C433D9700F25860 /* AudioToolbox.framework */; };
 		718716291C433DA400F25860 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 718716281C433DA400F25860 /* AVFoundation.framework */; };
 		7187162C1C43428100F25860 /* libScanApiCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 718716221C433D5000F25860 /* libScanApiCore.a */; };
+		718B91831C75638100265FFF /* TouchImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 718B91821C75638100265FFF /* TouchImageView.m */; };
 		71DEE874192DE003003F645F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71DEE873192DE003003F645F /* QuartzCore.framework */; };
 		71DEE876192DE00E003F645F /* Accelerate.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71DEE875192DE00E003F645F /* Accelerate.framework */; };
 		71DF742B1C57560600F2789C /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 71DF742A1C57560600F2789C /* Reachability.m */; };
@@ -162,6 +165,10 @@
 /* Begin PBXFileReference section */
 		56528CA8B8A71F67C2EE5366 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = "<group>"; };
 		6C826876B24EFB83AC94A464 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = "<group>"; };
+		712C40B41C7310F4000E6831 /* CartGeneralNotesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CartGeneralNotesViewController.h; path = common/Functions/cart/CartGeneralNotesViewController.h; sourceTree = SOURCE_ROOT; };
+		712C40B51C7310F4000E6831 /* CartGeneralNotesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CartGeneralNotesViewController.m; path = common/Functions/cart/CartGeneralNotesViewController.m; sourceTree = SOURCE_ROOT; };
+		712C40B71C731126000E6831 /* ItemNotesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ItemNotesViewController.h; path = common/Functions/cart/ItemNotesViewController.h; sourceTree = SOURCE_ROOT; };
+		712C40B81C731126000E6831 /* ItemNotesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ItemNotesViewController.m; path = common/Functions/cart/ItemNotesViewController.m; sourceTree = SOURCE_ROOT; };
 		713F76A61929F4A7006A7305 /* NPD iSales.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "NPD iSales.app"; sourceTree = BUILT_PRODUCTS_DIR; };
 		713F76A91929F4A7006A7305 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
 		713F76AB1929F4A7006A7305 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
@@ -366,6 +373,8 @@
 		718716261C433D9700F25860 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
 		718716281C433DA400F25860 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
 		7187162A1C43406300F25860 /* libScanApiCore.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libScanApiCore.a; path = "../../../ios_samples/ScanApiSDK-10.2.227/lib/libScanApiCore.a"; sourceTree = "<group>"; };
+		718B91811C75638100265FFF /* TouchImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TouchImageView.h; path = common/customUI/TouchImageView.h; sourceTree = SOURCE_ROOT; };
+		718B91821C75638100265FFF /* TouchImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TouchImageView.m; path = common/customUI/TouchImageView.m; sourceTree = SOURCE_ROOT; };
 		71DEE873192DE003003F645F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
 		71DEE875192DE00E003F645F /* Accelerate.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accelerate.framework; path = System/Library/Frameworks/Accelerate.framework; sourceTree = SDKROOT; };
 		71DF74291C57560600F2789C /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Reachability.h; path = common/Reachability.h; sourceTree = SOURCE_ROOT; };
@@ -604,6 +613,10 @@
 				7162A5131C58704600AB630E /* EditModelPriceViewController.m */,
 				7162A5141C58704600AB630E /* ModelItemCell.h */,
 				7162A5151C58704600AB630E /* ModelItemCell.m */,
+				712C40B71C731126000E6831 /* ItemNotesViewController.h */,
+				712C40B81C731126000E6831 /* ItemNotesViewController.m */,
+				712C40B41C7310F4000E6831 /* CartGeneralNotesViewController.h */,
+				712C40B51C7310F4000E6831 /* CartGeneralNotesViewController.m */,
 			);
 			name = cartView;
 			sourceTree = "<group>";
@@ -808,6 +821,8 @@
 				71DF747E1C57608F00F2789C /* StrikethroughLabel.m */,
 				71DF747F1C57608F00F2789C /* TouchLabel.h */,
 				71DF74801C57608F00F2789C /* TouchLabel.m */,
+				718B91811C75638100265FFF /* TouchImageView.h */,
+				718B91821C75638100265FFF /* TouchImageView.m */,
 				71DF74811C57608F00F2789C /* UILabel+FontAppearance.h */,
 				71DF74821C57608F00F2789C /* UILabel+FontAppearance.m */,
 			);
@@ -1183,6 +1198,7 @@
 				71DF745B1C575E7900F2789C /* CommonEditorCellAction.m in Sources */,
 				7162A5411C58719D00AB630E /* RATreeNode.m in Sources */,
 				7162A5251C58706C00AB630E /* CategoryCellSmall.m in Sources */,
+				712C40B91C731126000E6831 /* ItemNotesViewController.m in Sources */,
 				7162A5AD1C58735900AB630E /* TearSheetParamViewController.m in Sources */,
 				7141DD611C5747CE00F7DF59 /* NSData+Base64.m in Sources */,
 				7141DD5F1C5747CE00F7DF59 /* AESCrypt.m in Sources */,
@@ -1231,6 +1247,7 @@
 				7162A5741C58728D00AB630E /* DetailViewController.m in Sources */,
 				7162A52A1C58713200AB630E /* CategoryCellNPD.m in Sources */,
 				71DF748E1C57608F00F2789C /* UILabel+FontAppearance.m in Sources */,
+				712C40B61C7310F4000E6831 /* CartGeneralNotesViewController.m in Sources */,
 				7162A5CB1C58761500AB630E /* SignatureViewController.m in Sources */,
 				7162A5DD1C5876E300AB630E /* PopupNavigationController.m in Sources */,
 				7162A59E1C58733400AB630E /* OrderListTableViewCell.m in Sources */,
@@ -1238,6 +1255,7 @@
 				71DF745D1C575E7900F2789C /* CommonEditorCellEnum.m in Sources */,
 				7141DD521C57459B00F7DF59 /* qrinput.c in Sources */,
 				7162A5601C58724700AB630E /* CustomerEditViewController.m in Sources */,
+				718B91831C75638100265FFF /* TouchImageView.m in Sources */,
 				7162A5DC1C5876E300AB630E /* LoginViewController.m in Sources */,
 				7162A5811C5872EF00AB630E /* HomeTableViewCellBanner.m in Sources */,
 				7162A5E61C58781000AB630E /* iSalesNavigationController.m in Sources */,

+ 1 - 0
RedAnt ERP Mobile/iSales-NPD/AppDelegate.h

@@ -41,6 +41,7 @@
 @property (strong,nonatomic) NSString* build;
 -(void) Logout;
 -(void) SetMode:(NSString*)mode;
+@property (strong,nonatomic) NSString* mode;
 -(void) SetSo:(NSString*)So;
 
 -(void) switchToPreviousVC;

+ 3 - 0
RedAnt ERP Mobile/iSales-NPD/AppDelegate.m

@@ -226,6 +226,7 @@
         {
             if([mode isEqualToString:@"Regualar Mode"])
             {
+                self.mode=@"Regualar Mode";
                 NSString* title = self.user;
                 [main_vc.buttonUser setTitle:title forState:UIControlStateNormal];
                 
@@ -239,6 +240,8 @@
             }
             else
             {
+                
+                self.mode=@"Tradeshow Mode";
                 NSString* title = self.user;
                 [main_vc.buttonUser setTitle:title forState:UIControlStateNormal];
                 

+ 322 - 140
RedAnt ERP Mobile/iSales-NPD/Base.lproj/Main.storyboard

@@ -2195,7 +2195,7 @@
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <view contentMode="scaleToFill" id="APc-j8-ZhR" userLabel="cart item view">
-                                <rect key="frame" x="0.0" y="0.0" width="768" height="924"/>
+                                <rect key="frame" x="0.0" y="0.0" width="768" height="900"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <subviews>
                                     <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" animating="YES" style="whiteLarge" id="636-3h-qpT" userLabel="mum">
@@ -2204,7 +2204,7 @@
                                         <color key="color" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
                                     </activityIndicatorView>
                                     <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="120" sectionHeaderHeight="22" sectionFooterHeight="22" id="r3H-Zh-AQ4">
-                                        <rect key="frame" x="0.0" y="0.0" width="768" height="924"/>
+                                        <rect key="frame" x="0.0" y="0.0" width="768" height="900"/>
                                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                         <color key="backgroundColor" red="0.94901960780000005" green="0.93333333330000001" blue="0.91764705879999997" alpha="1" colorSpace="calibratedRGB"/>
                                         <prototypes>
@@ -2277,22 +2277,18 @@
                                                             <nil key="highlightedColor"/>
                                                         </label>
                                                         <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Master pack:9999" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="qsG-i3-KAv">
-                                                            <rect key="frame" x="589" y="14" width="144" height="21"/>
+                                                            <rect key="frame" x="609" y="14" width="144" height="21"/>
                                                             <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
                                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                             <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
                                                             <nil key="highlightedColor"/>
                                                         </label>
                                                         <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="123456789.00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Cxh-Hh-Y8F" userLabel="subtotal price">
-                                                            <rect key="frame" x="613" y="50" width="120" height="21"/>
+                                                            <rect key="frame" x="633" y="50" width="120" height="21"/>
                                                             <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
                                                             <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                             <nil key="highlightedColor"/>
                                                         </label>
-                                                        <imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="check_1_24" id="5sz-2Y-3e4">
-                                                            <rect key="frame" x="733" y="48" width="24" height="24"/>
-                                                            <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
-                                                        </imageView>
                                                         <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="Dkp-pb-PTw">
                                                             <rect key="frame" x="645" y="86" width="56" height="25"/>
                                                             <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
@@ -2310,7 +2306,6 @@
                                                     <outlet property="bundleButton" destination="Dkp-pb-PTw" id="eDc-dg-qwF"/>
                                                     <outlet property="bundleLabel" destination="QWI-YE-CV8" id="srT-BQ-YqU"/>
                                                     <outlet property="editCount" destination="oSc-5L-77o" id="yVB-6f-UJ1"/>
-                                                    <outlet property="img_checkmark" destination="5sz-2Y-3e4" id="CgF-xt-SqK"/>
                                                     <outlet property="labelDescription" destination="S98-fV-nsC" id="3cx-Ee-3zi"/>
                                                     <outlet property="labelDiscount" destination="eye-i2-TEC" id="7ZC-tD-pNg"/>
                                                     <outlet property="labelMasterpack" destination="qsG-i3-KAv" id="Kaj-AC-zHb"/>
@@ -2337,18 +2332,25 @@
                                 <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
                             </view>
                             <view contentMode="scaleToFill" id="NPc-ws-YtX">
-                                <rect key="frame" x="0.0" y="924" width="768" height="100"/>
+                                <rect key="frame" x="0.0" y="900" width="768" height="124"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
                                 <subviews>
-                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sub Total Price:" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wXv-yr-XXW" userLabel="total price">
-                                        <rect key="frame" x="502" y="10" width="117" height="18"/>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Total QTY:" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="wXv-yr-XXW" userLabel="total price">
+                                        <rect key="frame" x="502" y="10" width="117" height="20"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sub Total Price:" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="tXb-kL-1kM" userLabel="total price">
+                                        <rect key="frame" x="502" y="62" width="117" height="18"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
                                         <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                         <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
                                         <nil key="highlightedColor"/>
                                     </label>
                                     <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Rak-uF-hDd" userLabel="value">
-                                        <rect key="frame" x="627" y="8" width="124" height="18"/>
+                                        <rect key="frame" x="627" y="62" width="124" height="18"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
                                         <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                         <nil key="highlightedColor"/>
@@ -2371,13 +2373,10 @@
                                         <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                         <nil key="highlightedColor"/>
                                     </label>
-                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="jew-M1-our">
-                                        <rect key="frame" x="634" y="48" width="117" height="30"/>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="jew-M1-our">
+                                        <rect key="frame" x="634" y="83" width="117" height="30"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
-                                        <color key="backgroundColor" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
-                                        <state key="normal" title="Place Order">
-                                            <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
-                                        </state>
+                                        <state key="normal" title="Place Order"/>
                                         <userDefinedRuntimeAttributes>
                                             <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
                                                 <integer key="value" value="15"/>
@@ -2387,31 +2386,18 @@
                                             <action selector="onPlaceOrder:" destination="Cwo-Rn-ZMW" eventType="touchUpInside" id="oox-kf-LJE"/>
                                         </connections>
                                     </button>
-                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="TuC-Bk-vSP">
-                                        <rect key="frame" x="15" y="7" width="200" height="30"/>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="TuC-Bk-vSP">
+                                        <rect key="frame" x="15" y="7" width="170" height="30"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                                        <color key="backgroundColor" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
-                                        <state key="normal" title="Remove all from order">
-                                            <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
-                                            <color key="titleShadowColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
-                                        </state>
-                                        <userDefinedRuntimeAttributes>
-                                            <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
-                                                <integer key="value" value="15"/>
-                                            </userDefinedRuntimeAttribute>
-                                        </userDefinedRuntimeAttributes>
+                                        <state key="normal" title="Remove all from order"/>
                                         <connections>
                                             <action selector="onSelectAll:" destination="Cwo-Rn-ZMW" eventType="touchUpInside" id="Ab4-tx-Bth"/>
                                         </connections>
                                     </button>
-                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="wordWrap" id="R1S-km-dYZ">
-                                        <rect key="frame" x="15" y="48" width="200" height="30"/>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="wordWrap" id="R1S-km-dYZ">
+                                        <rect key="frame" x="15" y="45" width="170" height="30"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                                        <color key="backgroundColor" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
-                                        <state key="normal" title="Continue shopping">
-                                            <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
-                                            <color key="titleShadowColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
-                                        </state>
+                                        <state key="normal" title="Continue shopping"/>
                                         <userDefinedRuntimeAttributes>
                                             <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
                                                 <integer key="value" value="15"/>
@@ -2436,16 +2422,22 @@
                                         <nil key="highlightedColor"/>
                                     </label>
                                     <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Total Carton:" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="iga-uL-e6c">
-                                        <rect key="frame" x="216" y="63" width="117" height="18"/>
+                                        <rect key="frame" x="216" y="62" width="117" height="18"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Total  Items:" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Gqc-UY-CbE">
+                                        <rect key="frame" x="502" y="36" width="117" height="20"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                         <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
                                         <nil key="highlightedColor"/>
                                     </label>
-                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" id="Tqs-85-7UT">
-                                        <rect key="frame" x="502" y="48" width="117" height="30"/>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="Tqs-85-7UT">
+                                        <rect key="frame" x="502" y="83" width="117" height="30"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
-                                        <color key="backgroundColor" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
                                         <state key="normal" title="Edit"/>
                                         <userDefinedRuntimeAttributes>
                                             <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
@@ -2456,6 +2448,35 @@
                                             <action selector="onEditClick:" destination="Cwo-Rn-ZMW" eventType="touchUpInside" id="P5Y-zO-eCp"/>
                                         </connections>
                                     </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="7DL-ww-tGr">
+                                        <rect key="frame" x="15" y="83" width="107" height="30"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <state key="normal" title="General notes"/>
+                                        <connections>
+                                            <action selector="onEditGeneralNotes:" destination="Cwo-Rn-ZMW" eventType="touchUpInside" id="CNQ-t3-MJV"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="hbx-ZC-6uS">
+                                        <rect key="frame" x="627" y="35" width="124" height="21"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="a8v-V0-Le7">
+                                        <rect key="frame" x="627" y="10" width="117" height="21"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Q86-CY-riR">
+                                        <rect key="frame" x="130" y="89" width="356" height="18"/>
+                                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
                                 </subviews>
                                 <color key="backgroundColor" red="0.94901960780000005" green="0.93333333330000001" blue="0.91764705879999997" alpha="1" colorSpace="calibratedRGB"/>
                             </view>
@@ -2501,7 +2522,10 @@
                         <outlet property="labelTotal" destination="Rak-uF-hDd" id="zd4-Ey-hCG"/>
                         <outlet property="label_carton" destination="ur8-5x-2YG" id="Kme-E8-VpV"/>
                         <outlet property="label_cuft" destination="iCF-vq-woI" id="RuT-aL-IYn"/>
+                        <outlet property="label_items" destination="hbx-ZC-6uS" id="15E-ep-V4m"/>
                         <outlet property="label_net_err" destination="ibW-P7-Q9w" id="TZZ-ja-WIj"/>
+                        <outlet property="label_notes" destination="Q86-CY-riR" id="Ahd-Yr-Y5K"/>
+                        <outlet property="label_qty" destination="a8v-V0-Le7" id="o1W-1L-2Mc"/>
                         <outlet property="label_weight" destination="5XQ-b9-pCs" id="T2j-4T-MeJ"/>
                         <outlet property="mum" destination="636-3h-qpT" id="oVo-Z4-hgK"/>
                         <outlet property="toolbar" destination="GnW-hP-0qy" id="etW-tE-Wxa"/>
@@ -3330,29 +3354,34 @@
                                             <outlet property="labelValue" destination="v3W-a9-ogk" id="K77-QV-Q2i"/>
                                         </connections>
                                     </tableViewCell>
-                                    <tableViewCell contentMode="scaleToFill" restorationIdentifier="CommonEditorCellImg" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellImg" rowHeight="120" id="hDB-VQ-RpN" customClass="CommonEditorCellImg">
+                                    <tableViewCell contentMode="scaleToFill" restorationIdentifier="CommonEditorCellImg" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellImg" rowHeight="120" id="hgq-kD-iRf" customClass="CommonEditorCellImg">
                                         <rect key="frame" x="0.0" y="733.5" width="768" height="120"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="hDB-VQ-RpN" id="Vxw-RY-3YI">
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="hgq-kD-iRf" id="9g7-Vy-Z4W">
                                             <rect key="frame" x="0.0" y="0.0" width="768" height="119.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
-                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="HKI-dr-fh2">
-                                                    <rect key="frame" x="15" y="53" width="150" height="21"/>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="20K-3B-t9q">
+                                                    <rect key="frame" x="15" y="50" width="150" height="21"/>
                                                     <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
                                                     <nil key="highlightedColor"/>
                                                 </label>
-                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="T9P-k8-pco">
-                                                    <rect key="frame" x="653" y="10" width="100" height="100"/>
+                                                <imageView contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" id="ogu-IX-QqF" customClass="TouchImageView">
+                                                    <rect key="frame" x="653" y="11" width="100" height="100"/>
                                                     <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                                                    <connections>
-                                                        <action selector="ImgButtonClicked:" destination="hDB-VQ-RpN" eventType="touchUpInside" id="XSe-uC-x8t"/>
-                                                    </connections>
-                                                </button>
-                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="ggV-BV-1Ym">
-                                                    <rect key="frame" x="180" y="53" width="458" height="21"/>
+                                                </imageView>
+                                                <imageView contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" id="G7O-cG-QMH" customClass="TouchImageView">
+                                                    <rect key="frame" x="545" y="11" width="100" height="100"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                </imageView>
+                                                <imageView contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" id="7OZ-ga-2So" customClass="TouchImageView">
+                                                    <rect key="frame" x="437" y="11" width="100" height="100"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                </imageView>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="nhU-Ia-Mq5">
+                                                    <rect key="frame" x="180" y="27" width="249" height="67"/>
                                                     <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
@@ -3361,9 +3390,11 @@
                                             </subviews>
                                         </tableViewCellContentView>
                                         <connections>
-                                            <outlet property="buttonImg" destination="T9P-k8-pco" id="ENc-Fk-eT7"/>
-                                            <outlet property="labelDescription" destination="ggV-BV-1Ym" id="aZp-m1-RCs"/>
-                                            <outlet property="labelTitle" destination="HKI-dr-fh2" id="bRi-KL-Inw"/>
+                                            <outlet property="labelDescription" destination="nhU-Ia-Mq5" id="Qo3-ek-A7W"/>
+                                            <outlet property="labelTitle" destination="20K-3B-t9q" id="mLH-Pk-VSt"/>
+                                            <outlet property="touchImageView0" destination="ogu-IX-QqF" id="Ocq-Yw-AK0"/>
+                                            <outlet property="touchImageView1" destination="G7O-cG-QMH" id="vkG-hJ-GIB"/>
+                                            <outlet property="touchImageView2" destination="7OZ-ga-2So" id="IEM-1r-lEt"/>
                                         </connections>
                                     </tableViewCell>
                                 </prototypes>
@@ -3783,7 +3814,7 @@
                                 <color key="backgroundColor" red="0.93725490199999995" green="0.93725490199999995" blue="0.95686274510000002" alpha="1" colorSpace="calibratedRGB"/>
                                 <prototypes>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellModel" rowHeight="140" id="jfO-PG-uLf" customClass="CommonEditorCellModel">
-                                        <rect key="frame" x="0.0" y="49.5" width="768" height="140"/>
+                                        <rect key="frame" x="0.0" y="50" width="768" height="140"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="jfO-PG-uLf" id="OQa-3r-YQf">
                                             <rect key="frame" x="0.0" y="0.0" width="768" height="139.5"/>
@@ -3868,7 +3899,7 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellEnum" id="hBt-wz-8R3" customClass="CommonEditorCellEnum">
-                                        <rect key="frame" x="0.0" y="189.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="190" width="768" height="44"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="hBt-wz-8R3" id="4tx-f9-R46">
                                             <rect key="frame" x="0.0" y="0.0" width="768" height="43.5"/>
@@ -3894,7 +3925,7 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellSwitch" rowHeight="44" id="Frq-at-iBO" customClass="CommonEditorCellSwitch">
-                                        <rect key="frame" x="0.0" y="233.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="234" width="768" height="44"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Frq-at-iBO" id="u5d-Y6-H6n">
                                             <rect key="frame" x="0.0" y="0.0" width="768" height="43.5"/>
@@ -3919,7 +3950,7 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="CommonEditorCellEdit" rowHeight="44" id="HHd-xB-CbF" customClass="CommonEditorCellEdit">
-                                        <rect key="frame" x="0.0" y="277.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="278" width="768" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="HHd-xB-CbF" id="3YF-sE-hnj">
                                             <rect key="frame" x="0.0" y="0.0" width="768" height="43.5"/>
@@ -3946,7 +3977,7 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellSignature" rowHeight="140" id="O6q-II-rf6" customClass="CommonEditorCellSignature">
-                                        <rect key="frame" x="0.0" y="321.5" width="768" height="140"/>
+                                        <rect key="frame" x="0.0" y="322" width="768" height="140"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="O6q-II-rf6" id="xAz-ry-USU">
                                             <rect key="frame" x="0.0" y="0.0" width="768" height="139.5"/>
@@ -3971,7 +4002,7 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellLabel" id="8jN-k8-vT8" customClass="CommonEditorCellLabel">
-                                        <rect key="frame" x="0.0" y="461.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="462" width="768" height="44"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="8jN-k8-vT8" id="y8d-Br-QK9">
                                             <rect key="frame" x="0.0" y="0.0" width="768" height="43.5"/>
@@ -3999,7 +4030,7 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" restorationIdentifier="CommonEditorCellAction" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellAction" id="fhp-We-Evw" customClass="CommonEditorCellAction">
-                                        <rect key="frame" x="0.0" y="505.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="506" width="768" height="44"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="fhp-We-Evw" id="peL-rj-bhn">
                                             <rect key="frame" x="0.0" y="0.0" width="768" height="43.5"/>
@@ -4019,7 +4050,7 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" restorationIdentifier="CommonEditorCellMAction" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellMAction" id="953-S4-Ybs" customClass="CommonEditorCellMAction">
-                                        <rect key="frame" x="0.0" y="549.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="550" width="768" height="44"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="953-S4-Ybs" id="Tf0-xp-ake">
                                             <rect key="frame" x="0.0" y="0.0" width="768" height="43.5"/>
@@ -4067,7 +4098,7 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" restorationIdentifier="CommonEditorCellTextView" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellTextView" rowHeight="140" id="4O2-Vc-tpo" customClass="CommonEditorCellTextView">
-                                        <rect key="frame" x="0.0" y="593.5" width="768" height="140"/>
+                                        <rect key="frame" x="0.0" y="594" width="768" height="140"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="4O2-Vc-tpo" id="8ou-Ms-EtS">
                                             <rect key="frame" x="0.0" y="0.0" width="768" height="139.5"/>
@@ -4096,40 +4127,55 @@
                                             <outlet property="textview" destination="2GD-3v-rgI" id="nvr-rx-gzq"/>
                                         </connections>
                                     </tableViewCell>
-                                    <tableViewCell contentMode="scaleToFill" restorationIdentifier="CommonEditorCellImg" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellImg" rowHeight="120" id="p7f-LJ-3n3" customClass="CommonEditorCellImg">
-                                        <rect key="frame" x="0.0" y="733.5" width="768" height="120"/>
+                                    <tableViewCell contentMode="scaleToFill" restorationIdentifier="CommonEditorCellImg" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellImg" rowHeight="120" id="hgI-Qq-2nD" customClass="CommonEditorCellImg">
+                                        <rect key="frame" x="0.0" y="734" width="768" height="120"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="p7f-LJ-3n3" id="PLc-yV-TeX">
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="hgI-Qq-2nD" id="wiw-ap-T5s">
                                             <rect key="frame" x="0.0" y="0.0" width="768" height="119.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
-                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="cxB-Wr-yQO">
-                                                    <rect key="frame" x="15" y="53" width="150" height="21"/>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="xSE-Wq-J3k">
+                                                    <rect key="frame" x="15" y="50" width="150" height="21"/>
                                                     <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
                                                     <nil key="highlightedColor"/>
                                                 </label>
-                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="04x-2v-ZLv">
-                                                    <rect key="frame" x="653" y="10" width="100" height="100"/>
-                                                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
-                                                    <connections>
-                                                        <action selector="ImgButtonClicked:" destination="p7f-LJ-3n3" eventType="touchUpInside" id="AGP-2Z-BJF"/>
-                                                    </connections>
-                                                </button>
-                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="HQS-Sz-ZY1">
-                                                    <rect key="frame" x="180" y="53" width="458" height="21"/>
-                                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="yAI-bA-SEu">
+                                                    <rect key="frame" x="180" y="27" width="249" height="67"/>
+                                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
                                                     <nil key="highlightedColor"/>
                                                 </label>
+                                                <imageView contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="add_180" id="fc7-B8-2rh" customClass="TouchImageView">
+                                                    <rect key="frame" x="653" y="11" width="100" height="100"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                                </imageView>
+                                                <imageView tag="1" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="add_180" id="pq3-uQ-q6j" customClass="TouchImageView">
+                                                    <rect key="frame" x="545" y="11" width="100" height="100"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                                </imageView>
+                                                <imageView tag="2" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="add_180" id="4yp-de-o0H" customClass="TouchImageView">
+                                                    <rect key="frame" x="437" y="11" width="100" height="100"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="2"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderColor">
+                                                            <color key="value" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                    </userDefinedRuntimeAttributes>
+                                                </imageView>
                                             </subviews>
                                         </tableViewCellContentView>
                                         <connections>
-                                            <outlet property="buttonImg" destination="04x-2v-ZLv" id="tEA-mc-Znk"/>
-                                            <outlet property="labelDescription" destination="HQS-Sz-ZY1" id="irp-On-5NC"/>
-                                            <outlet property="labelTitle" destination="cxB-Wr-yQO" id="Quw-rt-HSi"/>
+                                            <outlet property="labelDescription" destination="yAI-bA-SEu" id="2Tc-gF-OsQ"/>
+                                            <outlet property="labelTitle" destination="xSE-Wq-J3k" id="mb1-Gu-mDf"/>
+                                            <outlet property="touchImageView0" destination="fc7-B8-2rh" id="ejg-wi-bdA"/>
+                                            <outlet property="touchImageView1" destination="pq3-uQ-q6j" id="azR-bh-08y"/>
+                                            <outlet property="touchImageView2" destination="4yp-de-o0H" id="Oha-rM-3x2"/>
                                         </connections>
                                     </tableViewCell>
                                 </prototypes>
@@ -4166,10 +4212,10 @@
                                 <color key="backgroundColor" red="0.94901960780000005" green="0.93333333330000001" blue="0.91764705879999997" alpha="1" colorSpace="calibratedRGB"/>
                                 <prototypes>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellModel" rowHeight="140" id="VsS-mx-QUE" customClass="CommonEditorCellModel">
-                                        <rect key="frame" x="0.0" y="49.5" width="768" height="140"/>
+                                        <rect key="frame" x="0.0" y="50" width="768" height="140"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="VsS-mx-QUE" id="swD-Ty-dh5">
-                                            <rect key="frame" x="0.0" y="0.0" width="768" height="139.5"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="768" height="140"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" id="YuT-mx-pzq">
@@ -4227,10 +4273,10 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellEnum" id="hLG-bx-D5g" customClass="CommonEditorCellEnum">
-                                        <rect key="frame" x="0.0" y="189.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="190" width="768" height="44"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="hLG-bx-D5g" id="Ftr-it-733">
-                                            <rect key="frame" x="0.0" y="0.0" width="768" height="43.5"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="768" height="44"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="2u9-Yh-yPm">
@@ -4254,10 +4300,10 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellSwitch" rowHeight="44" id="84I-ba-dgo" customClass="CommonEditorCellSwitch">
-                                        <rect key="frame" x="0.0" y="233.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="234" width="768" height="44"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="84I-ba-dgo" id="m4g-FC-0qV">
-                                            <rect key="frame" x="0.0" y="0.0" width="768" height="43.5"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="768" height="44"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="KeC-Bb-MiK">
@@ -4281,10 +4327,10 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="CommonEditorCellEdit" rowHeight="44" id="rbQ-WZ-rgp" customClass="CommonEditorCellEdit">
-                                        <rect key="frame" x="0.0" y="277.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="278" width="768" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="rbQ-WZ-rgp" id="lou-RM-uZo">
-                                            <rect key="frame" x="0.0" y="0.0" width="768" height="43.5"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="768" height="44"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="17" id="gmO-WI-XRS">
@@ -4310,7 +4356,7 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellSignature" rowHeight="140" id="UdD-HS-now" customClass="CommonEditorCellSignature">
-                                        <rect key="frame" x="0.0" y="321.5" width="768" height="140"/>
+                                        <rect key="frame" x="0.0" y="322" width="768" height="140"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="UdD-HS-now" id="f4h-LX-6q5">
                                             <rect key="frame" x="0.0" y="0.0" width="768" height="139.5"/>
@@ -4335,7 +4381,7 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellLabel" id="jMZ-h9-v7w" customClass="CommonEditorCellLabel">
-                                        <rect key="frame" x="0.0" y="461.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="462" width="768" height="44"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="jMZ-h9-v7w" id="h5V-78-c7u">
                                             <rect key="frame" x="0.0" y="0.0" width="768" height="43.5"/>
@@ -4365,7 +4411,7 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" restorationIdentifier="nEditorCellAction" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellAction" id="3LN-pk-gwJ" customClass="CommonEditorCellAction">
-                                        <rect key="frame" x="0.0" y="505.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="506" width="768" height="44"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="3LN-pk-gwJ" id="m3o-A5-n3D">
                                             <rect key="frame" x="0.0" y="0.0" width="768" height="43.5"/>
@@ -4384,70 +4430,77 @@
                                             <outlet property="labelAction" destination="2fm-Jo-U0U" id="GOS-R8-kAq"/>
                                         </connections>
                                     </tableViewCell>
-                                    <tableViewCell contentMode="scaleToFill" restorationIdentifier="CommonEditorCellImg" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellImg" rowHeight="120" id="bE1-Ad-zVH" customClass="CommonEditorCellImg">
-                                        <rect key="frame" x="0.0" y="549.5" width="768" height="120"/>
+                                    <tableViewCell contentMode="scaleToFill" restorationIdentifier="CommonEditorCellTextView" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellTextView" rowHeight="140" id="JAa-Em-AdW" customClass="CommonEditorCellTextView">
+                                        <rect key="frame" x="0.0" y="550" width="768" height="140"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="bE1-Ad-zVH" id="gga-Wr-JVE">
-                                            <rect key="frame" x="0.0" y="0.0" width="768" height="119.5"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="JAa-Em-AdW" id="Hkq-Qy-8zT">
+                                            <rect key="frame" x="0.0" y="0.0" width="768" height="139.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
-                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="9H2-D9-Rdf">
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="fQe-Uq-XBK">
                                                     <rect key="frame" x="15" y="53" width="150" height="21"/>
                                                     <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
                                                     <nil key="highlightedColor"/>
                                                 </label>
-                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="UJC-AK-hq7">
-                                                    <rect key="frame" x="653" y="10" width="100" height="100"/>
-                                                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
-                                                    <connections>
-                                                        <action selector="ImgButtonClicked:" destination="bE1-Ad-zVH" eventType="touchUpInside" id="r7M-kK-UwH"/>
-                                                    </connections>
-                                                </button>
-                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="MGR-QP-ALd">
-                                                    <rect key="frame" x="180" y="53" width="458" height="21"/>
+                                                <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" textAlignment="natural" id="pLs-zi-uRi">
+                                                    <rect key="frame" x="180" y="8" width="573" height="128"/>
                                                     <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                                                    <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                                    <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string>
                                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
-                                                    <nil key="highlightedColor"/>
-                                                </label>
+                                                    <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
+                                                    <dataDetectorType key="dataDetectorTypes" phoneNumber="YES" link="YES" address="YES"/>
+                                                </textView>
                                             </subviews>
                                         </tableViewCellContentView>
                                         <connections>
-                                            <outlet property="buttonImg" destination="UJC-AK-hq7" id="SN4-TL-e94"/>
-                                            <outlet property="labelDescription" destination="MGR-QP-ALd" id="F6F-Gp-CfG"/>
-                                            <outlet property="labelTitle" destination="9H2-D9-Rdf" id="bfO-2W-ZJZ"/>
+                                            <outlet property="label_name" destination="fQe-Uq-XBK" id="r6B-gi-dgU"/>
+                                            <outlet property="textview" destination="pLs-zi-uRi" id="bdw-9I-ugc"/>
                                         </connections>
                                     </tableViewCell>
-                                    <tableViewCell contentMode="scaleToFill" restorationIdentifier="CommonEditorCellTextView" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellTextView" rowHeight="140" id="JAa-Em-AdW" customClass="CommonEditorCellTextView">
-                                        <rect key="frame" x="0.0" y="669.5" width="768" height="140"/>
+                                    <tableViewCell contentMode="scaleToFill" restorationIdentifier="CommonEditorCellImg" selectionStyle="default" indentationWidth="10" reuseIdentifier="CommonEditorCellImg" rowHeight="120" id="ILu-EU-lsU" customClass="CommonEditorCellImg">
+                                        <rect key="frame" x="0.0" y="690" width="768" height="120"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="JAa-Em-AdW" id="Hkq-Qy-8zT">
-                                            <rect key="frame" x="0.0" y="0.0" width="768" height="139.5"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="ILu-EU-lsU" id="e2Y-b9-F17">
+                                            <rect key="frame" x="0.0" y="0.0" width="768" height="119.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
-                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="fQe-Uq-XBK">
-                                                    <rect key="frame" x="15" y="53" width="150" height="21"/>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Trd-8e-3Q4">
+                                                    <rect key="frame" x="15" y="50" width="150" height="21"/>
                                                     <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
                                                     <nil key="highlightedColor"/>
                                                 </label>
-                                                <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" textAlignment="natural" id="pLs-zi-uRi">
-                                                    <rect key="frame" x="180" y="8" width="573" height="128"/>
-                                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
-                                                    <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
-                                                    <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string>
+                                                <imageView contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" id="7ij-FH-q5R" customClass="TouchImageView">
+                                                    <rect key="frame" x="653" y="11" width="100" height="100"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                                </imageView>
+                                                <imageView contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" id="KXp-os-ybo" customClass="TouchImageView">
+                                                    <rect key="frame" x="545" y="11" width="100" height="100"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                                </imageView>
+                                                <imageView contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" id="vbh-DM-fhR" customClass="TouchImageView">
+                                                    <rect key="frame" x="437" y="11" width="100" height="100"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                                </imageView>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="k3J-mJ-kiN">
+                                                    <rect key="frame" x="180" y="27" width="249" height="67"/>
+                                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                                                    <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
-                                                    <dataDetectorType key="dataDetectorTypes" phoneNumber="YES" link="YES" address="YES"/>
-                                                </textView>
+                                                    <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
                                             </subviews>
                                         </tableViewCellContentView>
                                         <connections>
-                                            <outlet property="label_name" destination="fQe-Uq-XBK" id="r6B-gi-dgU"/>
-                                            <outlet property="textview" destination="pLs-zi-uRi" id="bdw-9I-ugc"/>
+                                            <outlet property="labelDescription" destination="k3J-mJ-kiN" id="iPb-ck-9Ah"/>
+                                            <outlet property="labelTitle" destination="Trd-8e-3Q4" id="HWD-rP-tad"/>
+                                            <outlet property="touchImageView0" destination="7ij-FH-q5R" id="N8r-sS-rTw"/>
+                                            <outlet property="touchImageView1" destination="KXp-os-ybo" id="lHw-ga-q4S"/>
+                                            <outlet property="touchImageView2" destination="vbh-DM-fhR" id="ofo-OW-3pu"/>
                                         </connections>
                                     </tableViewCell>
                                 </prototypes>
@@ -4461,13 +4514,21 @@
                     </view>
                     <navigationItem key="navigationItem" title="Title" id="QgA-cN-k2t">
                         <barButtonItem key="backBarButtonItem" title="Back" id="y0W-sT-I3b"/>
-                        <barButtonItem key="rightBarButtonItem" title="Assign contact to order" id="5sG-x3-eg6">
-                            <connections>
-                                <action selector="onSetClick:" destination="DWK-Wf-EcW" id="k97-rq-IKo"/>
-                            </connections>
-                        </barButtonItem>
+                        <rightBarButtonItems>
+                            <barButtonItem title="Edit" id="6Dl-e3-x5X">
+                                <connections>
+                                    <action selector="onEditClick:" destination="DWK-Wf-EcW" id="scn-UR-6Pi"/>
+                                </connections>
+                            </barButtonItem>
+                            <barButtonItem title="Assign to order" id="5sG-x3-eg6">
+                                <connections>
+                                    <action selector="onSetClick:" destination="DWK-Wf-EcW" id="k97-rq-IKo"/>
+                                </connections>
+                            </barButtonItem>
+                        </rightBarButtonItems>
                     </navigationItem>
                     <connections>
+                        <outlet property="btn_edit" destination="6Dl-e3-x5X" id="0Zb-6F-d86"/>
                         <outlet property="editorTable" destination="5qU-ef-a2c" id="uh4-uU-1k5"/>
                         <outlet property="right_btn" destination="5sG-x3-eg6" id="w81-ln-KCf"/>
                     </connections>
@@ -4959,7 +5020,7 @@ redantsupport@united-us.net</string>
                         <subviews>
                             <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" id="rJ3-Gh-cOg">
                                 <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                             </imageView>
                         </subviews>
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
@@ -6209,10 +6270,10 @@ redantsupport@united-us.net</string>
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                         <prototypes>
                             <tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" id="Ebw-26-5Ud">
-                                <rect key="frame" x="0.0" y="86" width="768" height="44"/>
+                                <rect key="frame" x="0.0" y="22" width="768" height="44"/>
                                 <autoresizingMask key="autoresizingMask"/>
                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Ebw-26-5Ud" id="gop-RV-8fg">
-                                    <rect key="frame" x="0.0" y="0.0" width="768" height="44"/>
+                                    <rect key="frame" x="0.0" y="0.0" width="768" height="43.5"/>
                                     <autoresizingMask key="autoresizingMask"/>
                                 </tableViewCellContentView>
                             </tableViewCell>
@@ -6404,7 +6465,7 @@ redantsupport@united-us.net</string>
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="yoH-31-hlo" userLabel="First Responder" sceneMemberID="firstResponder"/>
             </objects>
-            <point key="canvasLocation" x="2084" y="-1596"/>
+            <point key="canvasLocation" x="2065" y="-1588"/>
         </scene>
         <!--ItemSearchViewController-->
         <scene sceneID="Afq-lt-Ifc">
@@ -7183,9 +7244,130 @@ redantsupport@united-us.net</string>
             </objects>
             <point key="canvasLocation" x="-1558" y="-395"/>
         </scene>
+        <!--ItemNotesViewController-->
+        <scene sceneID="FU0-46-0B3">
+            <objects>
+                <viewController storyboardIdentifier="ItemNotesViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="z8X-Ni-xE3" userLabel="ItemNotesViewController" customClass="ItemNotesViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="glj-lT-GGb">
+                        <rect key="frame" x="0.0" y="0.0" width="480" height="320"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="2Mn-Q2-gEG">
+                                <rect key="frame" x="60" y="268" width="360" height="38"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                <color key="backgroundColor" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="20"/>
+                                <state key="normal" title="Save">
+                                    <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                        <integer key="value" value="19"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                                <connections>
+                                    <action selector="onSaveClicked:" destination="z8X-Ni-xE3" eventType="touchUpInside" id="7ky-nQ-Ik9"/>
+                                </connections>
+                            </button>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Item notes:" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="90Q-DQ-Par">
+                                <rect key="frame" x="41" y="48" width="90" height="26"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" id="uaF-eS-aiA">
+                                <rect key="frame" x="41" y="82" width="419" height="170"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
+                            </textView>
+                        </subviews>
+                        <color key="backgroundColor" red="0.94901960780000005" green="0.93333333330000001" blue="0.91764705879999997" alpha="1" colorSpace="calibratedRGB"/>
+                    </view>
+                    <navigationItem key="navigationItem" title="Model Price" id="hah-34-zzN" userLabel="Item Notes">
+                        <barButtonItem key="rightBarButtonItem" title="Close" id="PWl-19-p8o">
+                            <connections>
+                                <action selector="onCloseClicked:" destination="z8X-Ni-xE3" id="4Mj-Pb-GQB"/>
+                            </connections>
+                        </barButtonItem>
+                    </navigationItem>
+                    <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+                    <size key="freeformSize" width="480" height="320"/>
+                    <connections>
+                        <outlet property="tv_notes" destination="uaF-eS-aiA" id="gDE-OV-HDT"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="fiS-Df-JZ2" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2034" y="-1176"/>
+        </scene>
+        <!--CartGeneralNotesViewController-->
+        <scene sceneID="WsE-4P-YUg">
+            <objects>
+                <viewController storyboardIdentifier="CartGeneralNotesViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="UXD-DN-MuG" userLabel="CartGeneralNotesViewController" customClass="CartGeneralNotesViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="81c-tD-KgH">
+                        <rect key="frame" x="0.0" y="0.0" width="480" height="320"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" id="S4A-xz-neh">
+                                <rect key="frame" x="60" y="268" width="360" height="38"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                <color key="backgroundColor" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="20"/>
+                                <state key="normal" title="Save">
+                                    <color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                    <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+                                </state>
+                                <userDefinedRuntimeAttributes>
+                                    <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                        <integer key="value" value="19"/>
+                                    </userDefinedRuntimeAttribute>
+                                </userDefinedRuntimeAttributes>
+                                <connections>
+                                    <action selector="onSaveClicked:" destination="UXD-DN-MuG" eventType="touchUpInside" id="Sjq-Vw-nBG"/>
+                                </connections>
+                            </button>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="General notes:" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="YNX-KI-Jc2">
+                                <rect key="frame" x="41" y="48" width="112" height="26"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" id="83p-xc-EHS">
+                                <rect key="frame" x="41" y="82" width="419" height="170"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
+                            </textView>
+                        </subviews>
+                        <color key="backgroundColor" red="0.94901960780000005" green="0.93333333330000001" blue="0.91764705879999997" alpha="1" colorSpace="calibratedRGB"/>
+                    </view>
+                    <navigationItem key="navigationItem" title="Model Price" id="ksw-64-JnJ" userLabel="General Notes">
+                        <barButtonItem key="rightBarButtonItem" title="Close" id="hQq-Q9-S7C">
+                            <connections>
+                                <action selector="onCloseClicked:" destination="UXD-DN-MuG" id="poZ-5O-HTu"/>
+                            </connections>
+                        </barButtonItem>
+                    </navigationItem>
+                    <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+                    <size key="freeformSize" width="480" height="320"/>
+                    <connections>
+                        <outlet property="tv_notes" destination="83p-xc-EHS" id="adD-iG-5Gh"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="QYs-KB-eRL" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="2561" y="-1176"/>
+        </scene>
     </scenes>
     <resources>
         <image name="about" width="96" height="96"/>
+        <image name="add_180" width="180" height="180"/>
         <image name="album" width="48" height="48"/>
         <image name="camera" width="48" height="48"/>
         <image name="cart_empty" width="72" height="72"/>

+ 1 - 1
RedAnt ERP Mobile/iSales-NPD/OLDataProvider.m

@@ -617,7 +617,7 @@
             [arr_addr addObject:nsphone];
             
             
-            NSString * name = [RAUtils arr2string:arr_addr separator:@","];
+            NSString * name = [RAUtils arr2string:arr_addr separator:@"," trim:true];
             
             
           

+ 146 - 141
RedAnt ERP Mobile/iSales-NPD/config.h

@@ -16,178 +16,183 @@
 #define LOCAL_URL_CUSTOMER_INFO_EDITOR @"customer_info_template"
 #define LOCAL_URL_CUSTOMER_ADV_SEARCH @"customer_advanced_search"
 
-//
-////------------------- chen server-----------------------
-//#define  URL_UPDATE_AUTH  @"http://192.168.0.119:8080/site/isales/login.htm"
-//#define  URL_LOGOUT  @"http://192.168.0.119:8080/site/isales/loginOut.htm"
-//#define  URL_RETRIEVE_PASS  @"http://192.168.0.119:8080/site/isales/forgotPassword.htm"
-//
-//#define  URL_REQUEST_CATMENU  @"http://192.168.0.119:8080/site/isales/menu.htm"
-//#define  URL_LOAD_HOME  @"http://192.168.0.119:8080/site/isales/homePage.htm"
-//#define  URL_CATEGORY @"http://192.168.0.119:8080/site/isales/distinctCategory.htm"
-//#define  URL_SEARCH  @"http://192.168.0.119:8080/site/isales/search.htm"
-//#define  URL_ITEM_SEARCH  @"http://192.168.0.119:8080/site/isales/itemSearch.htm"
-//#define  URL_CATEGORY_LOADMORE  @"http://192.168.0.119:8080/site/isales/categoryMore.htm"
-//
-//
-//
-//#define  URL_ORDER_LIST  @"http://192.168.0.119:8080/site/isales/orderList.htm"
-//#define  URL_ORDER_DETAIL  @"http://192.168.0.119:8080/site/isales/orderDetail.htm"
-//#define URL_COMMIT_ORDER @"http://192.168.0.119:8080/site/isales/createOrder.htm"
-//#define URL_SAVE_ORDER @"http://192.168.0.119:8080/site/isales/saveOrder.htm"
-//#define URL_UPDATE_ORDERCUSTOMER @"http://192.168.0.119:8080/site/isales/updateOrderCustomerInfo.htm"
-//#define  URL_NEW_ORDER  @"http://192.168.0.119:8080/site/isales/createNewOrder.htm"
-//#define  URL_OPEN_ORDER  @"http://192.168.0.119:8080/site/isales/openOrder.htm"
-//#define  URL_RELEASE_ORDER  @"http://192.168.0.119:8080/site/isales/closeOrder.htm"
-//#define  URL_DELETE_ORDER  @"http://192.168.0.119:8080/site/isales/deleteOrder.htm"
-//#define  URL_CANCEL_ORDER  @"http://192.168.0.119:8080/site/isales/cancelOrder.htm"
-//
-//
-//#define  URL_CART_SET_PRICE  @"http://192.168.0.119:8080/site/isales/setPrice.htm"
-//#define  URL_CART_INCRESEMENT  @"http://192.168.0.119:8080/site/isales/increment.htm"
-//#define  URL_CART  @"http://192.168.0.119:8080/site/isales/cartDtail.htm"
-//#define  URL_CARTDELIVERY  @"http://192.168.0.119:8080/site/isales/cartDelivery.htm"
-//#define  URL_ADD_TO_CART  @"http://192.168.0.119:8080/site/isales/addToCart.htm"
-//#define  URL_CART_REMOVE  @"http://192.168.0.119:8080/site/isales/deleteToCart.htm"
-//#define  URL_CART_CHECK  @"http://192.168.0.119:8080/site/isales/checkCartItem.htm"
-//#define  URL_CART2WISH  @"http://192.168.0.119:8080/site/isales/cartRemoveToWishlist.htm"
-//#define  URL_WISH2CART  @"http://192.168.0.119:8080/site/isales/wishlistRemoveToCart.htm"
-//
-//
-//
-//
-//#define  URL_ITEM_DETAIL  @"http://192.168.0.119:8080/site/isales/modelDetail.htm"
-//
-//#define  URL_ADD_TO_WATCHLIST  @"http://192.168.0.119:8080/site/isales/addToWishList.htm"
-//#define  URL_WATCHLIST  @"http://192.168.0.119:8080/site/isales/wishList.htm"
-//#define  URL_WATCHLIST_REMOVE  @"http://192.168.0.119:8080/site/isales/deleteToWishList.htm"
-//
-//
-//
-//#define  URL_ADD_TO_PORTFOLIO @"http://192.168.0.119:8080/site/isales/addToPortfolio.htm"
-//#define  URL_PORTFOLIO_REMOVE  @"http://192.168.0.119:8080/site/isales/deleteToPortfolio.htm"
-//#define  URL_PORTFOLIO  @"http://192.168.0.119:8080/site/isales/portfolios.htm"
-//#define  URL_PORTFOLIO_SET_PRICE  @"http://192.168.0.119:8080/site/isales/setTearSheetPrice.htm"
-//#define  URL_DM_PARAMS @"http://192.168.0.119:8080/site/isales/selectTearSheetParam.htm"
-//#define  URL_REQUEST_DM @"http://192.168.0.119:8080/site/isales/getTearSheetPdf.htm"
-//#define  URL_SAVE_DM_DIRECT @"http://192.168.0.119:8080/site/isales/getTearSheetPdf.htm"
-//#define  URL_SAVE_DM @"http://192.168.0.119:8080/site/isales/saveTearSheetPdf.htm"
-//#define  URL_DM_LIST @"http://192.168.0.119:8080/site/isales/tearSheetPdfList.htm"
-//
-//
-//#define  URL_CONTACT_LIST  @"http://192.168.0.119:8080/site/isales/getAllContact.htm"
-//#define  URL_SHIPTO_LIST  @"http://192.168.0.119:8080/site/isales/getShipToContact.htm"
-//
-//#define  URL_ADDRESS_EDOTOR  @"http://192.168.0.119:8080/site/isales/getAddAddress.htm"
-//#define  URL_ADDRESS_SAVE  @"http://192.168.0.119:8080/site/isales/saveAddress.htm"
-//
-//
-//#define  URL_CREDITCARD_EDOTOR  @"http://192.168.0.119:8080/site/isales/creditCard.htm"
-//#define  URL_CREDITCARD_SAVE  @"http://192.168.0.119:8080/site/isales/saveAddress.htm"
-//
-//
-//
-//#define  URL_CUSTOMER_INFO  @"http://192.168.0.119:8080/site/isales/getCustomerInfoByContact.htm"
-//#define  URL_CUSTOMER_EDIT  @"http://192.168.0.119:8080/site/isales/getAddCustomer.htm"
-//#define  URL_CUSTOMER_SAVE  @"http://192.168.0.119:8080/site/isales/saveCustomer.htm"
-//#define  URL_UPDATE_CUSTOMER_BCARD  @"http://192.168.0.119:8080/site/isales/updateCustomerBusiCard.htm"
-//
-//
-//
-//
-//
-//
-//#define  URL_ERR_LOG  @"http://192.168.0.119:8080/site/isales/er_log.htm"
-//
-//#define  URL_UPLOAD_IMG  @"http://192.168.0.119:8080/site/isales/uploadImg.htm"
-//
-//
 
+//------------------- chen server-----------------------
+#define  URL_UPDATE_AUTH  @"http://192.168.0.119:8080/site/isales/login.htm"
+#define  URL_LOGOUT  @"http://192.168.0.119:8080/site/isales/loginOut.htm"
+#define  URL_RETRIEVE_PASS  @"http://192.168.0.119:8080/site/isales/forgotPassword.htm"
+
+#define  URL_REQUEST_CATMENU  @"http://192.168.0.119:8080/site/isales/menu.htm"
+#define  URL_LOAD_HOME  @"http://192.168.0.119:8080/site/isales/homePage.htm"
+#define  URL_CATEGORY @"http://192.168.0.119:8080/site/isales/distinctCategory.htm"
+#define  URL_SEARCH  @"http://192.168.0.119:8080/site/isales/search.htm"
+#define  URL_ITEM_SEARCH  @"http://192.168.0.119:8080/site/isales/itemSearch.htm"
+#define  URL_CATEGORY_LOADMORE  @"http://192.168.0.119:8080/site/isales/categoryMore.htm"
 
 
 
+#define  URL_ORDER_LIST  @"http://192.168.0.119:8080/site/isales/orderList.htm"
+#define  URL_ORDER_DETAIL  @"http://192.168.0.119:8080/site/isales/orderDetail.htm"
+#define URL_COMMIT_ORDER @"http://192.168.0.119:8080/site/isales/createOrder.htm"
+#define URL_SAVE_ORDER @"http://192.168.0.119:8080/site/isales/saveOrder.htm"
+#define URL_UPDATE_ORDERCUSTOMER @"http://192.168.0.119:8080/site/isales/updateOrderCustomerInfo.htm"
+#define  URL_NEW_ORDER  @"http://192.168.0.119:8080/site/isales/createNewOrder.htm"
+#define  URL_OPEN_ORDER  @"http://192.168.0.119:8080/site/isales/openOrder.htm"
+#define  URL_RELEASE_ORDER  @"http://192.168.0.119:8080/site/isales/closeOrder.htm"
+#define  URL_DELETE_ORDER  @"http://192.168.0.119:8080/site/isales/deleteOrder.htm"
+#define  URL_CANCEL_ORDER  @"http://192.168.0.119:8080/site/isales/cancelOrder.htm"
 
-//------------------- test server-----------------------
-#define  URL_UPDATE_AUTH  @"http://113.28.30.235/site/isales/login.htm"
-#define  URL_LOGOUT  @"http://113.28.30.235/site/isales/loginOut.htm"
-#define  URL_RETRIEVE_PASS  @"http://113.28.30.235/site/isales/forgotPassword.htm"
 
-#define  URL_REQUEST_CATMENU  @"http://113.28.30.235/site/isales/menu.htm"
-#define  URL_LOAD_HOME  @"http://113.28.30.235/site/isales/homePage.htm"
-#define  URL_CATEGORY @"http://113.28.30.235/site/isales/distinctCategory.htm"
-#define  URL_SEARCH  @"http://113.28.30.235/site/isales/search.htm"
-#define  URL_ITEM_SEARCH  @"http://113.28.30.235/site/isales/itemSearch.htm"
-#define  URL_CATEGORY_LOADMORE  @"http://113.28.30.235/site/isales/categoryMore.htm"
+#define  URL_CART_SET_PRICE  @"http://192.168.0.119:8080/site/isales/setPrice.htm"
+#define  URL_CART_ITEM_NOTES  @"http://192.168.0.119:8080/site/isales/setItemNotes.htm"
+#define  URL_CART_GENERAL_NOTES  @"http://192.168.0.119:8080/site/isales/updateGeneralNote.htm"
 
+#define  URL_CART_INCRESEMENT  @"http://192.168.0.119:8080/site/isales/increment.htm"
+#define  URL_CART  @"http://192.168.0.119:8080/site/isales/cartDtail.htm"
+#define  URL_CARTDELIVERY  @"http://192.168.0.119:8080/site/isales/cartDelivery.htm"
+#define  URL_ADD_TO_CART  @"http://192.168.0.119:8080/site/isales/addToCart.htm"
+#define  URL_CART_REMOVE  @"http://192.168.0.119:8080/site/isales/deleteToCart.htm"
+#define  URL_CART_CHECK  @"http://192.168.0.119:8080/site/isales/checkCartItem.htm"
+#define  URL_CART2WISH  @"http://192.168.0.119:8080/site/isales/cartRemoveToWishlist.htm"
+#define  URL_WISH2CART  @"http://192.168.0.119:8080/site/isales/wishlistRemoveToCart.htm"
 
 
-#define  URL_ORDER_LIST  @"http://113.28.30.235/site/isales/orderList.htm"
-#define  URL_ORDER_DETAIL  @"http://113.28.30.235/site/isales/orderDetail.htm"
-#define URL_COMMIT_ORDER @"http://113.28.30.235/site/isales/createOrder.htm"
-#define URL_SAVE_ORDER @"http://113.28.30.235/site/isales/saveOrder.htm"
-#define URL_UPDATE_ORDERCUSTOMER @"http://113.28.30.235/site/isales/updateOrderCustomerInfo.htm"
-#define  URL_NEW_ORDER  @"http://113.28.30.235/site/isales/createNewOrder.htm"
-#define  URL_OPEN_ORDER  @"http://113.28.30.235/site/isales/openOrder.htm"
-#define  URL_RELEASE_ORDER  @"http://113.28.30.235/site/isales/closeOrder.htm"
-#define  URL_DELETE_ORDER  @"http://113.28.30.235/site/isales/deleteOrder.htm"
-#define  URL_CANCEL_ORDER  @"http://113.28.30.235/site/isales/cancelOrder.htm"
 
 
-#define  URL_CART_SET_PRICE  @"http://113.28.30.235/site/isales/setPrice.htm"
-#define  URL_CART_INCRESEMENT  @"http://113.28.30.235/site/isales/increment.htm"
-#define  URL_CART  @"http://113.28.30.235/site/isales/cartDtail.htm"
-#define  URL_CARTDELIVERY  @"http://113.28.30.235/site/isales/cartDelivery.htm"
-#define  URL_ADD_TO_CART  @"http://113.28.30.235/site/isales/addToCart.htm"
-#define  URL_CART_REMOVE  @"http://113.28.30.235/site/isales/deleteToCart.htm"
-#define  URL_CART_CHECK  @"http://113.28.30.235/site/isales/checkCartItem.htm"
+#define  URL_ITEM_DETAIL  @"http://192.168.0.119:8080/site/isales/modelDetail.htm"
 
-#define  URL_CART2WISH  @"http://113.28.30.235/site/isales/cartRemoveToWishlist.htm"
-#define  URL_WISH2CART  @"http://113.28.30.235/site/isales/wishlistRemoveToCart.htm"
+#define  URL_ADD_TO_WATCHLIST  @"http://192.168.0.119:8080/site/isales/addToWishList.htm"
+#define  URL_WATCHLIST  @"http://192.168.0.119:8080/site/isales/wishList.htm"
+#define  URL_WATCHLIST_REMOVE  @"http://192.168.0.119:8080/site/isales/deleteToWishList.htm"
 
-#define  URL_ITEM_DETAIL  @"http://113.28.30.235/site/isales/modelDetail.htm"
 
-#define  URL_ADD_TO_WATCHLIST  @"http://113.28.30.235/site/isales/addToWishList.htm"
-#define  URL_WATCHLIST  @"http://113.28.30.235/site/isales/wishList.htm"
-#define  URL_WATCHLIST_REMOVE  @"http://113.28.30.235/site/isales/deleteToWishList.htm"
 
+#define  URL_ADD_TO_PORTFOLIO @"http://192.168.0.119:8080/site/isales/addToPortfolio.htm"
+#define  URL_PORTFOLIO_REMOVE  @"http://192.168.0.119:8080/site/isales/deleteToPortfolio.htm"
+#define  URL_PORTFOLIO  @"http://192.168.0.119:8080/site/isales/portfolios.htm"
+#define  URL_PORTFOLIO_SET_PRICE  @"http://192.168.0.119:8080/site/isales/setTearSheetPrice.htm"
+#define  URL_DM_PARAMS @"http://192.168.0.119:8080/site/isales/selectTearSheetParam.htm"
+#define  URL_REQUEST_DM @"http://192.168.0.119:8080/site/isales/getTearSheetPdf.htm"
+#define  URL_SAVE_DM_DIRECT @"http://192.168.0.119:8080/site/isales/getTearSheetPdf.htm"
+#define  URL_SAVE_DM @"http://192.168.0.119:8080/site/isales/saveTearSheetPdf.htm"
+#define  URL_DM_LIST @"http://192.168.0.119:8080/site/isales/tearSheetPdfList.htm"
 
 
-#define  URL_ADD_TO_PORTFOLIO @"http://113.28.30.235/site/isales/addToPortfolio.htm"
-#define  URL_PORTFOLIO_REMOVE  @"http://113.28.30.235/site/isales/deleteToPortfolio.htm"
-#define  URL_PORTFOLIO  @"http://113.28.30.235/site/isales/portfolios.htm"
-#define  URL_PORTFOLIO_SET_PRICE  @"http://113.28.30.235/site/isales/setTearSheetPrice.htm"
-#define  URL_DM_PARAMS @"http://113.28.30.235/site/isales/selectTearSheetParam.htm"
-#define  URL_REQUEST_DM @"http://113.28.30.235/site/isales/getTearSheetPdf.htm"
-#define  URL_SAVE_DM_DIRECT @"http://113.28.30.235/site/isales/getTearSheetPdf.htm"
-#define  URL_SAVE_DM @"http://113.28.30.235/site/isales/saveTearSheetPdf.htm"
-#define  URL_DM_LIST @"http://113.28.30.235/site/isales/tearSheetPdfList.htm"
+#define  URL_CONTACT_LIST  @"http://192.168.0.119:8080/site/isales/getAllContact.htm"
+#define  URL_SHIPTO_LIST  @"http://192.168.0.119:8080/site/isales/getShipToContact.htm"
 
+#define  URL_ADDRESS_EDOTOR  @"http://192.168.0.119:8080/site/isales/getAddAddress.htm"
+#define  URL_ADDRESS_SAVE  @"http://192.168.0.119:8080/site/isales/saveAddress.htm"
 
-#define  URL_CONTACT_LIST  @"http://113.28.30.235/site/isales/getAllContact.htm"
-#define  URL_SHIPTO_LIST  @"http://113.28.30.235/site/isales/getShipToContact.htm"
 
-#define  URL_ADDRESS_EDOTOR  @"http://113.28.30.235/site/isales/getAddAddress.htm"
-#define  URL_ADDRESS_SAVE  @"http://113.28.30.235/site/isales/saveAddress.htm"
+#define  URL_CREDITCARD_EDOTOR  @"http://192.168.0.119:8080/site/isales/creditCard.htm"
+#define  URL_CREDITCARD_SAVE  @"http://192.168.0.119:8080/site/isales/saveAddress.htm"
 
 
-#define  URL_CREDITCARD_EDOTOR  @"http://113.28.30.235/site/isales/creditCard.htm"
-#define  URL_CREDITCARD_SAVE  @"http://113.28.30.235/site/isales/saveAddress.htm"
 
+#define  URL_CUSTOMER_INFO  @"http://192.168.0.119:8080/site/isales/getCustomerInfoByContact.htm"
+#define  URL_NEW_CUSTOMER  @"http://192.168.0.119:8080/site/isales/getAddCustomer.htm"
+#define  URL_EDIT_CUSTOMER  @"http://192.168.0.119:8080/site/isales/getUpdateCustomerInfoByContact.htm"
+#define  URL_CUSTOMER_SAVE  @"http://192.168.0.119:8080/site/isales/saveCustomer.htm"
+#define  URL_CUSTOMER_UPDATE  @"http://192.168.0.119:8080/site/isales/updateCustomer.htm"
+#define  URL_UPDATE_CUSTOMER_BCARD  @"http://192.168.0.119:8080/site/isales/updateCustomerBusiCard.htm"
 
 
-#define  URL_CUSTOMER_INFO  @"http://113.28.30.235/site/isales/getCustomerInfoByContact.htm"
-#define  URL_CUSTOMER_EDIT  @"http://113.28.30.235/site/isales/getAddCustomer.htm"
-#define  URL_CUSTOMER_SAVE  @"http://113.28.30.235/site/isales/saveCustomer.htm"
-#define  URL_UPDATE_CUSTOMER_BCARD  @"http://113.28.30.235/site/isales/updateCustomerBusiCard.htm"
 
 
 
 
+#define  URL_ERR_LOG  @"http://192.168.0.119:8080/site/isales/er_log.htm"
 
+#define  URL_UPLOAD_IMG  @"http://192.168.0.119:8080/site/isales/uploadImg.htm"
 
-#define  URL_ERR_LOG  @"http://113.28.30.235/site/isales/er_log.htm"
 
-#define  URL_UPLOAD_IMG  @"http://113.28.30.235/site/isales/uploadImg.htm"
+
+
+//
+//
+//
+////------------------- test server-----------------------
+//#define  URL_UPDATE_AUTH  @"http://113.28.30.235/site/isales/login.htm"
+//#define  URL_LOGOUT  @"http://113.28.30.235/site/isales/loginOut.htm"
+//#define  URL_RETRIEVE_PASS  @"http://113.28.30.235/site/isales/forgotPassword.htm"
+//
+//#define  URL_REQUEST_CATMENU  @"http://113.28.30.235/site/isales/menu.htm"
+//#define  URL_LOAD_HOME  @"http://113.28.30.235/site/isales/homePage.htm"
+//#define  URL_CATEGORY @"http://113.28.30.235/site/isales/distinctCategory.htm"
+//#define  URL_SEARCH  @"http://113.28.30.235/site/isales/search.htm"
+//#define  URL_ITEM_SEARCH  @"http://113.28.30.235/site/isales/itemSearch.htm"
+//#define  URL_CATEGORY_LOADMORE  @"http://113.28.30.235/site/isales/categoryMore.htm"
+//
+//
+//
+//#define  URL_ORDER_LIST  @"http://113.28.30.235/site/isales/orderList.htm"
+//#define  URL_ORDER_DETAIL  @"http://113.28.30.235/site/isales/orderDetail.htm"
+//#define URL_COMMIT_ORDER @"http://113.28.30.235/site/isales/createOrder.htm"
+//#define URL_SAVE_ORDER @"http://113.28.30.235/site/isales/saveOrder.htm"
+//#define URL_UPDATE_ORDERCUSTOMER @"http://113.28.30.235/site/isales/updateOrderCustomerInfo.htm"
+//#define  URL_NEW_ORDER  @"http://113.28.30.235/site/isales/createNewOrder.htm"
+//#define  URL_OPEN_ORDER  @"http://113.28.30.235/site/isales/openOrder.htm"
+//#define  URL_RELEASE_ORDER  @"http://113.28.30.235/site/isales/closeOrder.htm"
+//#define  URL_DELETE_ORDER  @"http://113.28.30.235/site/isales/deleteOrder.htm"
+//#define  URL_CANCEL_ORDER  @"http://113.28.30.235/site/isales/cancelOrder.htm"
+//
+//
+//#define  URL_CART_SET_PRICE  @"http://113.28.30.235/site/isales/setPrice.htm"
+//#define  URL_CART_INCRESEMENT  @"http://113.28.30.235/site/isales/increment.htm"
+//#define  URL_CART  @"http://113.28.30.235/site/isales/cartDtail.htm"
+//#define  URL_CARTDELIVERY  @"http://113.28.30.235/site/isales/cartDelivery.htm"
+//#define  URL_ADD_TO_CART  @"http://113.28.30.235/site/isales/addToCart.htm"
+//#define  URL_CART_REMOVE  @"http://113.28.30.235/site/isales/deleteToCart.htm"
+//#define  URL_CART_CHECK  @"http://113.28.30.235/site/isales/checkCartItem.htm"
+//
+//#define  URL_CART2WISH  @"http://113.28.30.235/site/isales/cartRemoveToWishlist.htm"
+//#define  URL_WISH2CART  @"http://113.28.30.235/site/isales/wishlistRemoveToCart.htm"
+//
+//#define  URL_ITEM_DETAIL  @"http://113.28.30.235/site/isales/modelDetail.htm"
+//
+//#define  URL_ADD_TO_WATCHLIST  @"http://113.28.30.235/site/isales/addToWishList.htm"
+//#define  URL_WATCHLIST  @"http://113.28.30.235/site/isales/wishList.htm"
+//#define  URL_WATCHLIST_REMOVE  @"http://113.28.30.235/site/isales/deleteToWishList.htm"
+//
+//
+//
+//#define  URL_ADD_TO_PORTFOLIO @"http://113.28.30.235/site/isales/addToPortfolio.htm"
+//#define  URL_PORTFOLIO_REMOVE  @"http://113.28.30.235/site/isales/deleteToPortfolio.htm"
+//#define  URL_PORTFOLIO  @"http://113.28.30.235/site/isales/portfolios.htm"
+//#define  URL_PORTFOLIO_SET_PRICE  @"http://113.28.30.235/site/isales/setTearSheetPrice.htm"
+//#define  URL_DM_PARAMS @"http://113.28.30.235/site/isales/selectTearSheetParam.htm"
+//#define  URL_REQUEST_DM @"http://113.28.30.235/site/isales/getTearSheetPdf.htm"
+//#define  URL_SAVE_DM_DIRECT @"http://113.28.30.235/site/isales/getTearSheetPdf.htm"
+//#define  URL_SAVE_DM @"http://113.28.30.235/site/isales/saveTearSheetPdf.htm"
+//#define  URL_DM_LIST @"http://113.28.30.235/site/isales/tearSheetPdfList.htm"
+//
+//
+//#define  URL_CONTACT_LIST  @"http://113.28.30.235/site/isales/getAllContact.htm"
+//#define  URL_SHIPTO_LIST  @"http://113.28.30.235/site/isales/getShipToContact.htm"
+//
+//#define  URL_ADDRESS_EDOTOR  @"http://113.28.30.235/site/isales/getAddAddress.htm"
+//#define  URL_ADDRESS_SAVE  @"http://113.28.30.235/site/isales/saveAddress.htm"
+//
+//
+//#define  URL_CREDITCARD_EDOTOR  @"http://113.28.30.235/site/isales/creditCard.htm"
+//#define  URL_CREDITCARD_SAVE  @"http://113.28.30.235/site/isales/saveAddress.htm"
+//
+//
+//
+//#define  URL_CUSTOMER_INFO  @"http://113.28.30.235/site/isales/getCustomerInfoByContact.htm"
+//#define  URL_NEW_CUSTOMER  @"http://113.28.30.235/site/isales/getAddCustomer.htm"
+//#define  URL_CUSTOMER_SAVE  @"http://113.28.30.235/site/isales/saveCustomer.htm"
+//#define  URL_UPDATE_CUSTOMER_BCARD  @"http://113.28.30.235/site/isales/updateCustomerBusiCard.htm"
+//
+//
+//
+//
+//
+//
+//#define  URL_ERR_LOG  @"http://113.28.30.235/site/isales/er_log.htm"
+//
+//#define  URL_UPLOAD_IMG  @"http://113.28.30.235/site/isales/uploadImg.htm"
 
 
 //
@@ -260,7 +265,7 @@
 //
 //
 //#define  URL_CUSTOMER_INFO  @"https://www.newpacificdirect.com/isales/getCustomerInfoByContact.htm"
-//#define  URL_CUSTOMER_EDIT  @"https://www.newpacificdirect.com/isales/getAddCustomer.htm"
+//#define  URL_NEW_CUSTOMER  @"https://www.newpacificdirect.com/isales/getAddCustomer.htm"
 //#define  URL_CUSTOMER_SAVE  @"https://www.newpacificdirect.com/isales/saveCustomer.htm"
 //#define  URL_UPDATE_CUSTOMER_BCARD  @"https://www.newpacificdirect.com/isales/updateCustomerBusiCard.htm"
 //