// // RAOrderEditorViewController.m // iSales-NPD // // Created by Jack on 2017/11/7. // Copyright © 2017年 United Software Applications, Inc. All rights reserved. // #import "RAOrderEditorViewController.h" #import "AppDelegate.h" #import "MainViewController.h" #import "AddressEditorViewController.h" #import "CreditCardEditorViewController.h" #import "JKTimerManager.h" #import "RAOrderPreviewController.h" #import "CommonEditorCellModel.h" //#define CLOSE_ACTION 567 static const int totalPage = 3; @interface RAOrderEditorViewController () @property (nonatomic,assign) BOOL isResume;///<恢复 @property (nonatomic,assign) NSInteger userType;///<恢复使用 @property (nonatomic,assign) NSInteger pageIndex;///<当前页码 /** * 保存不同页码上行参数,最新的在最后。 * 点击下一页时将当前页面上行参数写入数组尾 * 退回到前一页后删除最后一个元素 */ @property (nonatomic,strong) NSMutableArray *pageUpParams; @property (nonatomic,strong) NSMutableArray *pageContentDownloadArray;///<保存不同页码content_data_download @property (nonatomic,strong) NSMutableArray *pageContentControlArray;///<保存不同页码content_data_control @property (nonatomic,strong) NSMutableArray *pageChangeDataArray;///<保存不同页码change_data @property (strong, nonatomic) IBOutlet UIToolbar *pageControlToolBar; @property (strong, nonatomic) IBOutlet UIBarButtonItem *frontBarItem; @property (strong, nonatomic) IBOutlet UIBarButtonItem *nextBarItem; @end @implementation RAOrderEditorViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.editable = YES; self.navigationController.navigationBarHidden = NO; UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"close"] imageWithRenderingMode:UIImageRenderingModeAutomatic] style:UIBarButtonItemStylePlain target:self action:@selector(onCloseClick:)]; self.navigationItem.leftBarButtonItem = closeButton; // UIBarButtonItem *savebtn = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"save"] imageWithRenderingMode:UIImageRenderingModeAutomatic] // style:UIBarButtonItemStylePlain // target:self // action:@selector(onSaveClick:)]; // // self.navigationItem.rightBarButtonItem = savebtn; [self setupPageControlBar]; } -(void) viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self start_urgency_timer]; self.isResume = [[[NSUserDefaults standardUserDefaults] objectForKey:@"urgency_resume"] boolValue]; self.userType = [[[NSUserDefaults standardUserDefaults] objectForKey:@"urgency_userType"] integerValue]; if (!self.isResume) { // 正常情况 } else { // 恢复 [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"urgency_resume"]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"urgency_userType"]; } self.navigationController.navigationBarHidden=false; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)dealloc { AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; [appDelegate.urgencyDic removeObjectForKey:[NSString stringWithFormat:@"level_%d",self.level]]; [appDelegate.urgencyDic setValue:[NSNumber numberWithInteger:self.level] forKey:@"count"]; if (self.isResume && self.userType == USER_ROLE_CUSTOMER) { [self releaseOrderAfterSave]; } } - (void)awakeFromNib { [super awakeFromNib]; self.navigationItem.rightBarButtonItem = nil; } #pragma mark - Lazy Load - (NSMutableArray *)pageUpParams { if (!_pageUpParams) { _pageUpParams = [NSMutableArray array]; } return _pageUpParams; } - (NSMutableArray *)pageContentDownloadArray { if (!_pageContentDownloadArray) { _pageContentDownloadArray = [NSMutableArray array]; } return _pageContentDownloadArray; } - (NSMutableArray *)pageContentControlArray { if (!_pageContentControlArray) { _pageContentControlArray = [NSMutableArray array]; } return _pageContentControlArray; } - (NSMutableArray *)pageChangeDataArray { if (!_pageChangeDataArray) { _pageChangeDataArray = [NSMutableArray array]; } return _pageChangeDataArray; } #pragma mark - Private - (void)onCloseClick:(UIButton *)sender { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if (self.resumeOrder) { [appDelegate.main_vc.navigationController popViewControllerAnimated:YES]; return; } // UIAlertView * alert = nil; NSString* a2title = nil; if(appDelegate.order_status==0) a2title= @"Close and cancel order"; else a2title=@"Close and release order"; UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Choose your action" message:@"" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *action_0 = [UIAlertAction actionWithTitle:@"Switch to cart" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) { [self.navigationController popViewControllerAnimated:true]; }]; UIAlertAction *action_1 = [UIAlertAction actionWithTitle:@"Switch to order history" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) { [self.navigationController popViewControllerAnimated:false]; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; //#ifdef RA_NOTIFICATION // [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA]; //#else // [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false]; //#endif [((MainViewController*)appDelegate.main_vc) switchToOrder]; }]; UIAlertAction *action_2 = [UIAlertAction actionWithTitle:a2title style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { // close order; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Release Order" completion:^{ [RANetwork request_release_order:appDelegate.order_code withScreen:nil completionHandler:^(NSMutableDictionary *result) { NSDictionary* order_json = result; // [waitalert dismissViewControllerAnimated:YES completion:nil]; [waitalert dismissViewControllerAnimated:YES completion:^{ if([[order_json valueForKey:@"result"] intValue]==2) { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; [appDelegate closeOrder]; //#ifdef RA_NOTIFICATION // [ActiveViewController Notify:@"CartViewController" Message:RA_NOTIFICATION_RELOAD_DATA]; //#else // [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false]; //#endif [((MainViewController*)appDelegate.main_vc) switchToHome]; if([appDelegate.mode isEqualToString:@"TM"]&& appDelegate.submit_order_logout) { [((MainViewController*)appDelegate.main_vc) Loginout:false]; } [self prepareReturn:nil]; [self.navigationController popViewControllerAnimated:true]; } else { [RAUtils message_alert:[order_json valueForKey:@"err_msg"] title:@"Open Order"controller:self] ; } }]; }]; }]; // dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // // NSDictionary* order_json = [RANetwork release_Order:appDelegate.order_code withScreen:nil]; // // dispatch_async(dispatch_get_main_queue(), ^{ // // [waitalert dismissViewControllerAnimated:YES completion:nil]; // [waitalert dismissViewControllerAnimated:YES completion:nil]; // // if([[order_json valueForKey:@"result"] intValue]==2) // { // AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; // // [appDelegate closeOrder]; // // // //#ifdef RA_NOTIFICATION // // [ActiveViewController Notify:@"CartViewController" Message:RA_NOTIFICATION_RELOAD_DATA]; // //#else // // [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false]; // //#endif // [((MainViewController*)appDelegate.main_vc) switchToHome]; // // if([appDelegate.mode isEqualToString:@"TM"]&& appDelegate.submit_order_logout) // { // [((MainViewController*)appDelegate.main_vc) Loginout:false]; // } // // [self prepareReturn:nil]; // // // [self.navigationController popViewControllerAnimated:true]; // // // } // else // { // [RAUtils message_alert:[order_json valueForKey:@"err_msg"] title:@"Open Order"controller:self] ; // } // // // // }); // }); }]; UIAlertAction *action_3 = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { }]; [alertController addAction:action_0]; [alertController addAction:action_1]; [alertController addAction:action_2]; [alertController addAction:action_3]; [self presentViewController:alertController animated:YES completion:nil]; // // alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Choose your action", nil) message:NSLocalizedString(@"", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Switch to cart", nil),@"Switch to order history",NSLocalizedString(@"Close and cancel order", nil), nil]; // else // { // alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Choose your action", nil) message:NSLocalizedString(@"", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) otherButtonTitles:NSLocalizedString(@"Switch to cart", nil),@"Switch to order history",NSLocalizedString(@"Close and release order", nil), nil]; // } // alert.tag = CLOSE_ACTION; // // [alert show]; } //- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { // // if(alertView.tag == CLOSE_ACTION) // { // if(buttonIndex==1) // { // // [self.navigationController popViewControllerAnimated:true]; // // } // if(buttonIndex==2) // { // // [self.navigationController popViewControllerAnimated:false]; // // // // AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; ////#ifdef RA_NOTIFICATION //// [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA]; ////#else //// [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false]; ////#endif // [((MainViewController*)appDelegate.main_vc) switchToOrder]; // // } // else if(buttonIndex==3) // { // // close order; // // AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; // UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Release Order"]; // dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // // NSDictionary* order_json = [RANetwork release_Order:appDelegate.order_code withScreen:nil]; // // dispatch_async(dispatch_get_main_queue(), ^{ //// [waitalert dismissViewControllerAnimated:YES completion:nil]; // [waitalert dismissViewControllerAnimated:YES completion:nil]; // // if([[order_json valueForKey:@"result"] intValue]==2) // { // AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; // // [appDelegate closeOrder]; // // ////#ifdef RA_NOTIFICATION //// [ActiveViewController Notify:@"CartViewController" Message:RA_NOTIFICATION_RELOAD_DATA]; ////#else //// [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false]; ////#endif // [((MainViewController*)appDelegate.main_vc) switchToHome]; // // if([appDelegate.mode isEqualToString:@"TM"]&& appDelegate.submit_order_logout) // { // [((MainViewController*)appDelegate.main_vc) Loginout:false]; // } // // [self prepareReturn:nil]; // // // [self.navigationController popViewControllerAnimated:true]; // // // } // else // { // [RAUtils message_alert:[order_json valueForKey:@"err_msg"] title:@"Open Order"controller:self] ; // } // // // // }); // }); // // // } // } // //} - (void)setupPageControlBar { // 1. 控制ToolBar Item显隐 NSMutableArray *items = [self.pageControlToolBar.items mutableCopy]; if (self.pageIndex == 0) { // 首页不需要前一页 if ([items containsObject:self.frontBarItem]) { [items removeObject:self.frontBarItem]; } } else if (self.pageIndex == totalPage - 1) { // // 尾页不需要后一页 // if ([items containsObject:self.nextBarItem]) { // [items removeObject:self.nextBarItem]; // } // 尾页点击Next进入Preview if (![items containsObject:self.nextBarItem]) { [items addObject:self.nextBarItem]; } } else { // 中间显示前一页、后一页按钮 if (![items containsObject:self.frontBarItem]) { [items insertObject:self.frontBarItem atIndex:0]; } if (![items containsObject:self.nextBarItem]) { [items addObject:self.nextBarItem]; } } self.pageControlToolBar.items = items; } - (NSString *)getValue:(NSString *)key from:(NSArray *)control { NSString *ret = nil; for(int i = 0; i < control.count; i++) { NSMutableArray* items=(NSMutableArray*)control[i]; for(int j=0;j= 0 ; i--) { NSArray *control = [self.pageContentControlArray objectAtIndex:i]; ret = [self getValue:name from:control]; if (ret != nil) { return ret; } } return ret; } else { return [self getValue:name from:self.content_data_control]; } } #pragma mark - Place Order - (void)alertMessage:(NSString *)msg { if (notifyMe_switch) { if ([self.class_name isEqualToString:@"RAOrderEditorViewController"]) { NSString *err_msg = msg; UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Attention!!" message:err_msg preferredStyle:UIAlertControllerStyleAlert]; __weak typeof(self) weakself = self; UIAlertAction *action = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { [weakself.navigationController popViewControllerAnimated:YES]; }]; [alertVC addAction:action]; [self presentViewController:alertVC animated:YES completion:nil]; } else { [RAUtils message_alert:msg title:nil controller:self] ; } } else { [RAUtils message_alert:msg title:nil controller:self] ; } } -(void) commonAction:(NSString *)value index:(NSIndexPath*) indexPath data:(NSMutableDictionary*) item_json { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if([value isEqualToString:@"new_addr"]) { AddressEditorViewController * addressVC = [[AddressEditorViewController alloc] initWithNibName:@"CommonEditor.iPad" bundle:nil]; addressVC.url_type = URL_REMOTE; addressVC.request_url=URL_ADDRESS_EDOTOR; NSMutableDictionary * params= [[NSMutableDictionary alloc] init]; addressVC.params = params; addressVC.delegate = self; addressVC.from = indexPath; // orderinfoVC.params = params; [self.navigationController pushViewController:addressVC animated:true]; }else if([value isEqualToString:@"credit_card"]) { CreditCardEditorViewController * cardVC = [[CreditCardEditorViewController alloc] initWithNibName:@"CommonEditor.iPad" bundle:nil]; NSDictionary *data = [item_json objectForKey:@"data"]; if(data!=nil) { cardVC.content_data_download = [data mutableCopy]; cardVC.url_type = URL_NONE; cardVC.request_url=nil; } else { cardVC.url_type = URL_REMOTE; cardVC.request_url=URL_CREDITCARD_EDOTOR; } NSMutableDictionary * params= [[NSMutableDictionary alloc] init]; params[@"orderCode"]=appDelegate.order_code; cardVC.params = params; cardVC.delegate = self; cardVC.from = indexPath; [self.navigationController pushViewController:cardVC animated:true]; } else if([value isEqualToString:@"Sales_Order_Freight_Bill_To"]) { ContactListViewController* cvc = [[UIStoryboard storyboardWithName:@"ERP_Mobile_Contact" bundle:nil] instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.showNavibar = true; cvc.contact_type = value; __weak typeof(self) weakself = self; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; }; [self.navigationController pushViewController:cvc animated:true]; } else if([value isEqualToString:@"Sales_Order_Ship_From"]) { ContactListViewController* cvc = [[UIStoryboard storyboardWithName:@"ERP_Mobile_Contact" bundle:nil] instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.showNavibar = true; cvc.contact_type = value; __weak typeof(self) weakself = self; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; }; [self.navigationController pushViewController:cvc animated:true]; } else if([value isEqualToString:@"Sales_Order_Customer"]) { ContactListViewController* cvc = [[UIStoryboard storyboardWithName:@"ERP_Mobile_Contact" bundle:nil] instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.contact_type = value; cvc.showNavibar = true; __weak typeof(self) weakself = self; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; }; [self.navigationController pushViewController:cvc animated:true]; } else if([value isEqualToString:@"Sales_Order_Merchandise_Bill_To"]) { ContactListViewController* cvc = [[UIStoryboard storyboardWithName:@"ERP_Mobile_Contact" bundle:nil] instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.showNavibar = true; cvc.contact_type = value; __weak typeof(self) weakself = self; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; }; [self.navigationController pushViewController:cvc animated:true]; } else if([value isEqualToString:@"Contact_Return_To"]) { ContactListViewController* cvc = [[UIStoryboard storyboardWithName:@"ERP_Mobile_Contact" bundle:nil] instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.showNavibar = true; cvc.contact_type = value; __weak typeof(self) weakself = self; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; }; [self.navigationController pushViewController:cvc animated:true]; } else if([value isEqualToString:@"Sales_Order_Ship_To"]) { ContactListViewController* cvc = [[UIStoryboard storyboardWithName:@"ERP_Mobile_Contact" bundle:nil] instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.showNavibar = true; cvc.contact_type = value; __weak typeof(self) weakself = self; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ [weakself handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; }; [self.navigationController pushViewController:cvc animated:true]; } } - (UIView *)createDemoView:(NSString*) msg { UIView *demoView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 290, 200)]; // UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 270, 180)]; // [imageView setImage:[UIImage imageNamed:@"demo"]]; UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 270, 10)]; titleLabel.font = [UIFont boldSystemFontOfSize:20]; titleLabel.text=@"Order Submission"; titleLabel.numberOfLines = 0; titleLabel.lineBreakMode =NSLineBreakByWordWrapping; // titleLabel.textAlignment = NSTextAlignmentRight; titleLabel.textAlignment = NSTextAlignmentCenter; CGSize constraintkey = CGSizeMake(270, 20000.0f);//key label width is 40% cell width; // CGSize sizetitle = [titleLabel.text=@"Order Submission" sizeWithFont:[UIFont systemFontOfSize:20.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping]; CGSize sizetitle = [RAUtils sizeWithFont:titleLabel.text=@"Order Submission" font:[UIFont systemFontOfSize:20.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping]; //[titleLabel sizeToFit]; // titleLabel.center.x = demoView.center.x; titleLabel.frame = CGRectMake(10, 10, 270, sizetitle.height); [demoView addSubview:titleLabel]; UILabel *lineLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, titleLabel.frame.origin.y+ titleLabel.frame.size.height+20, 260, 10)]; lineLabel.font = [UIFont systemFontOfSize:17]; lineLabel.text=msg; lineLabel.numberOfLines = 0; lineLabel.lineBreakMode =NSLineBreakByWordWrapping; // CGSize sizemsg = [msg sizeWithFont:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping]; CGSize sizemsg = [RAUtils sizeWithFont:msg font:[UIFont systemFontOfSize:17.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping]; lineLabel.frame = CGRectMake(15, titleLabel.frame.origin.y+ titleLabel.frame.size.height+20, 260, sizemsg.height); //[lineLabel sizeToFit]; [demoView addSubview:lineLabel]; demoView.frame = CGRectMake(0, 0, 290, lineLabel.frame.origin.y+lineLabel.frame.size.height+25); return demoView; } -(float) getprice:(NSString*) name section :(long) index { NSMutableDictionary* section_json=nil; section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",index ]] mutableCopy]; int count=0; count=[[section_json valueForKey:@"count"] intValue]; for(int i=0;i=0) { NSUInteger newIndex[] = {indexPath.section, total_row_idx}; NSIndexPath *newPath = [[NSIndexPath alloc] initWithIndexes:newIndex length:2]; // DebugLog(@"before refresh %@",NSStringFromCGSize(self.editorTable.contentSize)); [self.editorTable reloadRowsAtIndexPaths:@[newPath]withRowAnimation:UITableViewRowAnimationMiddle]; } } } // //- (IBAction)onSaveClick:(id)sender { // // id a = nil; // NSMutableArray *arr = [NSMutableArray array]; // [arr addObject:a]; // // [self.lastedit endEditing:true]; // [self.lasttextview endEditing:true]; // // NSMutableDictionary* upparams = [self check_cancommit:false]; // // if([upparams[@"shipping"] isEqualToString:@"Shipping To Be Quoted"]||[upparams[@"shipping"] isEqualToString:@"To Be Quoted"]) // upparams[@"shipping"] = nil; // // // UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Saving Order"]; // dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // // NSDictionary* editor_json = [RANetwork save_Order:upparams]; // // dispatch_async(dispatch_get_main_queue(), ^{ // [waitalert dismissViewControllerAnimated:YES completion:nil]; // // // if([[editor_json valueForKey:@"result"] intValue]==2) // { // // AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; // // NSMutableDictionary * customerInfo=[self create_cusromer_info_from_table]; // // if(appDelegate.user_type ==USER_ROLE_EMPLOYEE) // { // appDelegate.customerInfo = customerInfo; // appDelegate.contact_id = [customerInfo valueForKey:@"customer_cid"]; // } // NSString *msg = nil; // if ([editor_json objectForKey:@"so#"]) { // msg = [@"SO#:" stringByAppendingString:[editor_json objectForKey:@"so#"]]; // } // [RAUtils message_alert:msg title:@"Order Saved" controller:self] ; // // if([appDelegate.mode isEqualToString:@"TM"]&& appDelegate.save_order_logout && appDelegate.user_type ==USER_ROLE_EMPLOYEE) // { // [((MainViewController*)appDelegate.main_vc) Loginout:false]; // [self prepareReturn:nil]; // [self.navigationController popViewControllerAnimated:true]; // } // // if (appDelegate.user_type == USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore) { // // if (![Singleton sharedInstance].currentOrderIsMerged) { // [self releaseOrderAfterSave]; // } // // // } // // } // else // { // [RAUtils message_alert:[editor_json valueForKey:@"err_msg"] title:@"Save Order" controller:self] ; // } // // }); // }); // //} - (void)releaseOrderAfterSave { dispatch_async(dispatch_get_main_queue(), ^{ AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; [RANetwork request_release_order:appDelegate.order_code withScreen:nil completionHandler:nil]; [appDelegate closeOrder]; [appDelegate SetSo:nil]; appDelegate.cart_count=0; [appDelegate update_count_mark]; [((MainViewController*)appDelegate.main_vc) switchToOrder]; [self prepareReturn:nil]; [self.navigationController popToRootViewControllerAnimated:false]; }); // // [RANetwork release_Order:appDelegate.order_code withScreen:nil]; // // [appDelegate closeOrder]; // [appDelegate SetSo:nil]; // appDelegate.cart_count=0; // [appDelegate update_count_mark]; // [((MainViewController*)appDelegate.main_vc) switchToOrder]; // // [self prepareReturn:nil]; // [self.navigationController popToRootViewControllerAnimated:false]; } -(NSString* )create_customer_ext:(NSDictionary*)customerinfo { NSString* ret=nil; NSString* customer_address1= [customerinfo valueForKey:@"customer_address1"]; NSString* customer_address2= [customerinfo valueForKey:@"customer_address2"]; NSString* customer_address3= [customerinfo valueForKey:@"customer_address3"]; NSString* customer_address4= [customerinfo valueForKey:@"customer_address4"]; NSMutableArray* arraddr = [[NSMutableArray alloc] init]; if(customer_address1.length>0) [arraddr addObject:customer_address1]; if(customer_address2.length>0) [arraddr addObject:customer_address2]; if(customer_address3.length>0) [arraddr addObject:customer_address3]; if(customer_address4.length>0) [arraddr addObject:customer_address4]; NSString *addr_string = [arraddr componentsJoinedByString:@"\r\n"]; NSString* customer_city= [customerinfo valueForKey:@"customer_city"]; NSString* customer_country= [customerinfo valueForKey:@"customer_country"]; NSString* customer_zipcode= [customerinfo valueForKey:@"customer_zipcode"]; NSString* customer_state= [customerinfo valueForKey:@"customer_state"]; NSMutableArray* arrcty = [[NSMutableArray alloc] init]; if(customer_city.length>0) [arrcty addObject:customer_city]; if(customer_state.length>0) [arrcty addObject:customer_state]; if(customer_zipcode.length>0) [arrcty addObject:customer_zipcode]; if(customer_country.length>0) [arrcty addObject:customer_country]; NSString *cty_string = [arrcty componentsJoinedByString:@", "]; NSMutableArray* arrext = [[NSMutableArray alloc] init]; if(addr_string.length>0) [arrext addObject:addr_string]; if(cty_string.length>0) [arrext addObject:cty_string]; ret = [arrext componentsJoinedByString:@"\r\n"]; return ret; } -(NSMutableDictionary*)create_cusromer_info_from_table { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; NSMutableDictionary* ret= [appDelegate.customerInfo mutableCopy] ; [ret setValue:[self getValue:@"customer_country"] forKey:@"customer_country"]; [ret setValue:[self getValue:@"customer_phone"] forKey:@"customer_phone"]; [ret setValue:[self getValue:@"customer_email"] forKey:@"customer_email"]; [ret setValue:[self getValue:@"customer_name"] forKey:@"customer_name"]; [ret setValue:[self getValue:@"customer_address4"] forKey:@"customer_address4"]; [ret setValue:[self getValue:@"customer_address3"] forKey:@"customer_address3"]; [ret setValue:[self getValue:@"customer_address2"] forKey:@"customer_address2"]; [ret setValue:[self getValue:@"customer_address1"] forKey:@"customer_address1"]; [ret setValue:[self getValue:@"customer_zipcode"] forKey:@"customer_zipcode"]; [ret setValue:[self getValue:@"customer_city"] forKey:@"customer_city"]; [ret setValue:[self getValue:@"customer_state"] forKey:@"customer_state"]; [ret setValue:[self getValue:@"customer_cid"] forKey:@"customer_cid"]; [ret setValue:[self getValue:@"customer_state"] forKey:@"customer_state"]; [ret setValue:[self getValue:@"customer_contact"] forKey:@"customer_contact"]; [ret setValue:[self getValue:@"customer_fax"] forKey:@"customer_fax"]; NSString * firstname =nil; NSString* lastname = nil; NSString* contact_name = [self getValue:@"customer_contact"]; if(contact_name!=nil) { NSArray *_arr = [contact_name componentsSeparatedByString:NSLocalizedString(@" ", nil)]; if(_arr.count>=1) { firstname =_arr[0]; if(_arr.count>1) { lastname=[[_arr subarrayWithRange:NSMakeRange(1, _arr.count-1)] componentsJoinedByString:@" "]; } } } [ret setValue:firstname forKey:@"customer_first_name"]; [ret setValue:lastname forKey:@"customer_last_name"]; // [ret setValue:[self create_customer_ext:ret] forKey:@"customer_contact_ext"]; return ret; } -(NSMutableDictionary*)create_value_map:(NSDictionary*)key_map { NSMutableDictionary* ret= [[NSMutableDictionary alloc] init]; NSArray *keys= [key_map allKeys]; //遍历keys for(int i=0;i<[keys count];i++) { //得到当前key NSString *key=[keys objectAtIndex:i]; //如果key不是pic,说明value是字符类型,比如name:Boris NSString* valuefrom = [key_map valueForKey:key]; if(valuefrom.length==0) continue; NSString* value=[self getValue:valuefrom]; [ret setValue:value forKey:valuefrom]; } NSDictionary * customerinfo =[self create_cusromer_info_from_table]; [ret setValue:[self create_customer_ext:customerinfo] forKey:@"customer_contact_ext"]; [ret setValue:customerinfo[@"customer_first_name"] forKey:@"customer_first_name"]; [ret setValue:customerinfo[@"customer_last_name"] forKey:@"customer_last_name"]; return ret; } #pragma mark - multi_action sub action clicked - (void)MActionClicked:(UIButton *)sender { UITableViewCell *cell = (UITableViewCell *) sender.superview.superview; NSIndexPath * indexPath = [self.editorTable indexPathForCell:cell]; int refresh =0; NSMutableDictionary* section_json=nil; NSMutableDictionary* item_json =[((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row] mutableCopy]; NSString* subid=[item_json valueForKey:@"subid"]; NSString* refresh_trigger = [item_json valueForKey:@"name"]; NSDictionary* sub_action = [item_json objectForKey:[NSString stringWithFormat:@"item_%ld",(long)sender.tag]]; NSString* type = [sub_action valueForKey:@"type"]; bool discardDirty = [[sub_action valueForKey:@"discard_dirty"] boolValue]; if([type isEqualToString:@"pull"]) { [self.lastedit endEditing:true]; refresh = [[sub_action valueForKey:@"refresh"] intValue]; NSDictionary* keymap= [sub_action objectForKey:@"key_map"]; NSMutableDictionary* value=[self create_value_map:keymap]; if(subid==nil) { NSDictionary* jsonmap=[sub_action valueForKey:@"key_map"]; section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]] mutableCopy]; int icount=[[section_json valueForKey:@"count"] intValue]; for (int ic=0;ic0) [modify_item setValue:valuestr forKey:@"value"]; else [modify_item setValue:@"" forKey:@"value"]; [modify_item setValue:@"true" forKey:@"dirty"]; [section_json setObject:modify_item forKey:[NSString stringWithFormat:@"item_%d",ic ]]; } } } else { NSArray* idarr=[subid componentsSeparatedByString:@"_"]; int section = [(NSString*)idarr[0] intValue]; int item=[(NSString*)idarr[1] intValue]; NSDictionary* jsonmap=[sub_action valueForKey:@"key_map"]; section_json = [[self.content_data_download objectForKey:[NSString stringWithFormat:@"section_%d", section]] mutableCopy]; NSMutableDictionary * olditem=[[section_json objectForKey:[NSString stringWithFormat:@"item_%d",item ]] mutableCopy]; NSString* control_type = [olditem valueForKey:@"control"]; if([control_type isEqualToString:@"switch"]) olditem= [self fill_switch_subitem:olditem subid:nil source:value mapping:jsonmap ]; else if([control_type isEqualToString:@"enum"]) { olditem= [self fill_enum_subitem:olditem subid:nil source:value mapping:jsonmap ]; } else { [RAUtils message_alert:@"not impl" title:@"Sorry" controller:self]; // [RAUtils alert_view:@"" title:@"not impl"]; } [olditem setValue:@"true" forKey:@"dirty"]; [section_json setObject:olditem forKey:[NSString stringWithFormat:@"item_%d",item ]]; } [self.content_data_download setObject:section_json forKey:[NSString stringWithFormat:@"section_%ld",(long)indexPath.section ]]; self.content_data_control = [self translate_json:self.content_data_download changed:self.changed_data]; if(refresh==1) { // if(restore_json!=nil) // { // int rc=[[restore_json valueForKey:@"count"] intValue]; // for(int ir=0;ir