// // OrderListViewController.m // RedAnt ERP Mobile // // Created by Ray on 8/18/15. // Copyright (c) 2015 United Software Applications, Inc. All rights reserved. // #import "OrderListViewController.h" #import "OrderListTableViewCell.h" #import "RANetwork.h" #import "OrderDetailViewController.h" #import "MainViewController.h" #import "ContactListViewController.h" #import "DefaultAppearance.h" #import "DefaultTableHeaderView.h" #import "SelectUploadOrderViewController.h" #import "NotificationNameCenter.h" #import "RASingleton.h" #import "ERPUtils.h" @interface OrderListViewController () @property (nonatomic,strong) NSOperationQueue *dataOperationQueue; @property (nonatomic,strong) NSMutableArray *mergeList; @property (nonatomic,assign) NSInteger orderType;/// 1) { [self.orderTypeSegmentControl setTitle:[NSString stringWithFormat:@"Purchase Order to %@",COMPANY_SHORT_NAME] forSegmentAtIndex:1]; } // 显示Sales Order与否 if (RASingleton.sharedInstance.user && appDelegate.user_type == USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore) { if ([RASingleton sharedInstance].global_lock || ![RASingleton sharedInstance].customer_can_see_sales_Order) { // 是否解锁,是否有查看Sales Order权限 if (self.orderTypeSegmentControl.numberOfSegments > 1) { [self.orderTypeSegmentControl removeSegmentAtIndex:1 animated:YES]; [self changeOrderType:0]; } } else { if (self.orderTypeSegmentControl.numberOfSegments == 1 && !self.table_order.isEditing) { [self.orderTypeSegmentControl insertSegmentWithTitle:[NSString stringWithFormat:@"Purchase Order to %@",COMPANY_SHORT_NAME] atIndex:1 animated:YES]; } } } } - (IBAction)onNewOrderClicked:(id)sender { NSString* msg=@"Do you want to create a new order?"; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(appDelegate.order_code.length==0) { if(appDelegate.contact_id.length>0) { msg = [msg stringByAppendingString:@"\n\nCustomer:"]; msg = [msg stringByAppendingString:appDelegate.customerInfo[@"customer_name"]]; } } UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Warning" message:msg preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *action_2 = [UIAlertAction actionWithTitle:@"YES" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(appDelegate.order_code && appDelegate.order_code.length>0) { // appDelegate.order_code= nil; // [appDelegate SetSo:nil]; if (appDelegate.user_type == USER_ROLE_EMPLOYEE) { // MainViewController* main_vc=(MainViewController*)appDelegate.main_vc; ContactListViewController* cvc = [[UIStoryboard storyboardWithName:@"ERP_Mobile_Contact" bundle:nil] instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.showNavibar = true; cvc.contact_type = @"Sales_Order_Customer"; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ appDelegate.contact_id=[value valueForKey:@"customer_cid"]; appDelegate.customerInfo = value; self.norefresh = true; [self neworder]; // [main_vc checklogin:true]; // [self handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; // // if(self.returnValue) // self.returnValue(value); }; cvc.onCancel = ^(){ self.norefresh = true; if(appDelegate.customerInfo==nil) { // [RAUtils message_box:@"" message:@"Cannot create order without customer infomation." completion:nil]; [RAUtils message_box:@"" message:@"Cannot create order without customer infomation." completion:nil]; } else { [self neworder]; } // [main_vc checklogin:true]; }; cvc.onReset = ^(){ // [main_vc checklogin:true]; }; [self.navigationController pushViewController:cvc animated:true]; } else if (appDelegate.user_type == USER_ROLE_CUSTOMER){ [self neworder]; } } else { //create new; if(appDelegate.customerInfo==nil)// select contact if current contact not exist { MainViewController* main_vc=(MainViewController*)appDelegate.main_vc; ContactListViewController* cvc = [[UIStoryboard storyboardWithName:@"ERP_Mobile_Contact" bundle:nil] instantiateViewControllerWithIdentifier:@"ContactListViewController" ]; cvc.showNavibar = true; cvc.contact_type = @"Sales_Order_Customer"; cvc.returnValue = ^(NSMutableDictionary* value,NSIndexPath* source){ appDelegate.contact_id=[value valueForKey:@"customer_cid"]; appDelegate.customerInfo = value; if(appDelegate.order_code==nil) [self neworder]; // [main_vc checklogin:true]; // [self handle_action_return:value indexPath:indexPath action:ACTION_FILL_SECTION]; // // if(self.returnValue) // self.returnValue(value); }; cvc.onCancel = ^(){ // [RAUtils message_box:@"" message:@"Cannot create order without customer infomation." completion:nil]; [RAUtils message_box:@"" message:@"Cannot create order without customer infomation." completion:nil]; }; cvc.onReset = ^(){ [main_vc checklogin:true]; }; [self.navigationController pushViewController:cvc animated:true]; } else { [self neworder]; } } }]; UIAlertAction *action_3 = [UIAlertAction actionWithTitle:@"NO" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { }]; [alertController addAction:action_2]; [alertController addAction:action_3]; [self presentViewController:alertController animated:YES completion:nil]; // UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Warning", nil) message:msg delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil]; // [alert show]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } -(void)manually_refresh { UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:201]; if(self.isrefreshing) { [reF endRefreshing]; return; } reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Refreshing"]; if ([self respondsToSelector:@selector(ReloadData)]) [self performSelector:@selector(ReloadData) withObject:nil afterDelay:1]; } -(void)ReloadData { // [self.content_data removeAllObjects]; // [self.table_order reloadData]; // self.table_order.hidden = true; UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:201]; [reF endRefreshing]; reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"]; self.keywords=self.searchbar.text; // self.offset = 0; self.reset_result=true; // [self.content_data removeAllObjects]; // [self.table_order reloadData]; [self loadpage]; // [self loadpage]; } - (void)operation_loadPage { if (self.dataOperationQueue.operationCount > 1) { // 队列后面还有操作 return; } // dispatch_async(self.loading_queue, ^{ dispatch_sync(dispatch_get_main_queue(), ^{ if(self.reset_result) { self.offset = 0; [self.content_data removeAllObjects]; [self.table_order reloadData]; } // NSMutableArray* arr_status = [[NSMutableArray alloc] init]; NSMutableArray* arr_statusname = [[NSMutableArray alloc] init]; int count = [[self.status_cadedate valueForKey:@"count"] intValue]; for(int i=0;i 1) { // 队列后面还有操作 return ; } int result_code=[[content valueForKey:@"result"] intValue]; if(result_code==2||result_code==0) { int count = [[content valueForKey:@"count" ] intValue] ; self.time_zone = [content valueForKey:@"time_zone" ]; self.offset += count; for(int i=0;iself.content_data.count) // { // int debug=true; // } // DebugLog(@"row %ld",(long)indexPath.row); if(indexPath.row==self.content_data.count) { UITableViewCell *moreCell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"mores"]; UILabel *moreDataLabel=[[UILabel alloc] init]; moreDataLabel.tag=200; moreDataLabel.text=self.load_more_hint; [moreDataLabel setFont:[UIFont systemFontOfSize:14.0f]]; [moreDataLabel setTextAlignment:NSTextAlignmentCenter]; moreDataLabel.frame=CGRectMake(0, 10, self.table_order.bounds.size.width, 20); [moreDataLabel setBackgroundColor:[UIColor clearColor]]; moreDataLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; // [moreDataLabel addTarget:self action:@selector(changeCell) forControlEvents:UIControlEventValueChanged]; [moreCell.contentView addSubview:moreDataLabel]; if([self.load_more_hint isEqualToString:@"Load more..."]) [self performSelector:@selector(loadmore) withObject:nil afterDelay:1]; // DebugLog(@"更多..."); moreCell.backgroundColor = [UIColor whiteColor]; return moreCell; } else { NSString *CellIdentifier = @"OrderListTableViewCell"; OrderListTableViewCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; NSString* so= [self.content_data[indexPath.row] valueForKey:@"so#"]; NSString* price= [self.content_data[indexPath.row] valueForKey:@"price"]; if(appDelegate.can_see_price&&appDelegate.price_hidden==false) { } else { price=nil; } NSInteger statusCode = [[self.content_data[indexPath.row] valueForKey:@"orderStatus"] integerValue]; NSString* purchase_time= [self.content_data[indexPath.row] valueForKey:@"purchase_time"]; NSString* status = [self.content_data[indexPath.row] valueForKey:@"order_status"] ; if (RASingleton.sharedInstance.user && appDelegate.user_type == USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore) { status = [ERPUtils orderStatus:statusCode]; } NSString* customer_name = [self.content_data[indexPath.row] valueForKey:@"customer_name"]; NSString* model_count = [self.content_data[indexPath.row] valueForKey:@"model_count"]; NSString* sales = [self.content_data[indexPath.row] valueForKey:@"sales_rep"]; NSString* creator = [self.content_data[indexPath.row] valueForKey:@"create_by"]; NSString *po = [self.content_data[indexPath.row] valueForKey:@"po_id"]; CGRect price_frame = cell.labelprice.frame; if (appDelegate.user_type == USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore && self.orderType == 1) { cell.label_po.hidden = NO; price_frame.origin.y = 5; cell.label_po.text = po; } else { cell.label_po.hidden = YES; price_frame.origin.y = 21; } cell.labelprice.frame = price_frame; cell.label_so.text=so; cell.labelprice.text=price; cell.label_date.text=purchase_time; cell.label_contact.text=customer_name; cell.label_model.text = model_count; cell.label_sales.text = sales; cell.label_creator.text = creator; cell.label_status.text=status; cell.backgroundColor = [UIColor whiteColor]; return cell; } // NSDictionary * item_json = [self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; // NSDictionary * combine_json =[item_json objectForKey:@"combine"]; // cell.bundle_item=combine_json; // NSString* img_url = [item_json valueForKey:@"img_url"]; // NSString* description = [item_json valueForKey:@"description"]; // // NSString* identifier = [item_json valueForKey:@"identifier"]; // // NSString* attribute = [item_json valueForKey:@"attribute"]; // NSString* currency = [item_json valueForKey:@"currency"]; // int count =[[item_json valueForKey:@"count"] intValue]; // double price =[[item_json valueForKey:@"price"] doubleValue]; // // cell.labelAttribute.text = attribute; // cell.labelCurrency.text = currency; // cell.labelDescription.text = description; // // cell.labelIdentifier.text = identifier; // cell.labelPrice.text = [NSString stringWithFormat:@"%.2f",price]; // // // // [cell set_Count:count]; // NSString* file_name=[img_url lastPathComponent]; // NSData* img_data=[iSalesDB load_cached_img:file_name loadFrom:img_url]; // if(img_data!=nil) // { // // UIImage * img =[UIImage imageWithData:img_data]; // [cell.btnImage setBackgroundImage:img forState:UIControlStateNormal]; // } // else // { // // dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // // NSData* downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url]]; // // dispatch_async(dispatch_get_main_queue(), ^{ // // // // if(downloadimg_data!=nil) // { // [FileCache cache_img:downloadimg_data :file_name ]; // // UIImage * img =[UIImage imageWithData:downloadimg_data]; // [cell.btnImage setBackgroundImage:img forState:UIControlStateNormal]; // } // // }); // }); // // // } // } // else // { // NSString *CellIdentifier = @"OrderInfoListItem"; // UITableViewCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; // return cell; // } } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if (tableView.isEditing) { // 编辑模式下不响应 return; } // if(indexPath.row==self.content_data.count) return; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(appDelegate.user_type==USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore) { // Customer if ([RASingleton sharedInstance].global_lock) { // Order list 被锁 [RAUtils message_box:@"Warning" message:@"Permission Needed.\nGoto Menu -> Unlock" completion:nil]; return; } } NSString* orderid= [self.content_data[indexPath.row] valueForKey:@"order_id"]; OrderDetailViewController* dvc = [[UIStoryboard storyboardWithName:@"ERP_Mobile_Order" bundle:nil] instantiateViewControllerWithIdentifier:@"OrderDetailViewController" ]; // int i =[[self.content_data[indexPath.row] valueForKey:@"order_code"]; dvc.selectOrder=^(NSMutableDictionary* order_detail){ [self.navigationController popViewControllerAnimated:false]; if(self.selectOrder) self.selectOrder(order_detail); }; NSString* order_code =[self.content_data[indexPath.row] valueForKey:@"order_code"]; NSString *erpSerialNo = [self.content_data[indexPath.row] valueForKey:@"erp_order_serial_no"]; dvc.erpSerialNo = erpSerialNo; dvc.is_shoporder=(self.orderType == 0); dvc.order_code = order_code; dvc.order_status =[[self.content_data[indexPath.row] valueForKey:@"orderStatus"] intValue]; // bool temp_order = false ; // NSString* order_status=[self.content_data[indexPath.row] valueForKey:@"order_status"]; // if([order_status isEqualToString:@"Saved"]||[order_status isEqualToString:@"Quoted"]) // temp_order=true; // // dvc.isTempOrder = temp_order; // dvc dvc.orderid=orderid; // dvc.category_id=nil; // dvc.ispush=true; // [dvc reload]; [self.navigationController pushViewController:dvc animated:true]; } #pragma mark - searchBar delegate; - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { self.keywords=searchBar.text; // self.offset = 0; // [self.content_data removeAllObjects]; self.reset_result=true; [self loadpage]; } - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { if([searchText isEqualToString:@""] && !self.reset) { DebugLog(@"clear"); self.reset=true; self.keywords=nil; // self.offset = 0; // [self.content_data removeAllObjects]; self.reset_result=true; [self loadpage]; } else self.reset = false; } #pragma mark 在滑动手势删除某一行的时候,显示出更多的按钮 //- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath - (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath { // 添加一个删除按钮 // self.indexPath=indexPath; if(indexPath.row==self.content_data.count) // return @[]; return [UISwipeActionsConfiguration configurationWithActions:@[]]; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; NSString* so= [self.content_data[indexPath.row] valueForKey:@"so#"]; NSString* orderid= [self.content_data[indexPath.row] valueForKey:@"order_id"]; // NSString* order_status= [self.content_data[indexPath.row] valueForKey:@"order_status"]; NSInteger statusCode = [[self.content_data[indexPath.row] valueForKey:@"orderStatus"] integerValue]; if(appDelegate.user_type==USER_ROLE_EMPLOYEE || (appDelegate.user_type==USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeCustomer)) { // UITableViewRowAction *deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Delete" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { UIContextualAction* deleteRowAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive title:@"Delete" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) { DebugLog(@"delete click"); NSString * title =[NSString stringWithFormat:@"Are you sure to delete order SO#: %@",so]; UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:title message:nil preferredStyle:UIAlertControllerStyleAlert]; //block代码块取代了delegate // [alertControl addTextFieldWithConfigurationHandler:^(UITextField *textField) { // textField.text = self.save_name; // // // }]; UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) { // __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Delete Order" completion:^{ PopWaitAlert* pop = [RAUtils waiting_pop:@"Delete Order" completion:nil]; [RANetwork request_delete_order:orderid completionHandler:^(NSMutableDictionary *result) { NSDictionary* return_json = result; // [waitalert dismissViewControllerAnimated:YES completion:nil]; [pop hide]; // [waitalert dismissViewControllerAnimated:YES completion:^{ if([[return_json valueForKey:@"result"] intValue]==2) { if([appDelegate.order_code isEqualToString: [self.content_data[indexPath.row] valueForKey:@"order_code"]]) { appDelegate.order_code= nil; [appDelegate SetSo:nil]; appDelegate.cart_count=0; [appDelegate update_count_mark]; // appDelegate.customerInfo = nil; // appDelegate.contact_id = nil; // appDelegate.order_customer_id = nil; } [RAUtils message_box:@"Order Delete" message:nil completion:nil]; [self ReloadData]; } else { [RAUtils message_box:@"Delete Order" message:[return_json valueForKey:@"err_msg"] completion:nil]; } // }]; }]; // }]; }]; UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { DebugLog(@"Cancel"); }]; [alertControl addAction:actionOne]; [alertControl addAction:alertthree]; //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField) [self presentViewController:alertControl animated:YES completion:nil]; }]; deleteRowAction.backgroundColor = UIColorFromRGB(0x336699); // 添加一个编辑按钮 // // UITableViewRowAction *cancelAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Cancel Order"handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { UIContextualAction* cancelAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleNormal title:@"Cancel Order" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) { DebugLog(@"edit click"); NSString * title =[NSString stringWithFormat:@"Are you sure to cancel order SO#: %@",so]; UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:title message:nil preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) { // __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Cancel Order" completion:^{ PopWaitAlert* pop = [RAUtils waiting_pop:@"Cancel Order" completion:nil]; [RANetwork request_cancel_order:orderid order_code:nil completionHandler:^(NSMutableDictionary *result) { NSDictionary* return_json = result; // [waitalert dismissViewControllerAnimated:YES completion:nil]; // [waitalert dismissViewControllerAnimated:YES completion:^{ [pop hide]; if([[return_json valueForKey:@"result"] intValue]==2) { if([appDelegate.order_code isEqualToString: [self.content_data[indexPath.row] valueForKey:@"order_code"]]) { appDelegate.order_code= nil; //appDelegate.user_type = 0; appDelegate.customerInfo = nil; appDelegate.contact_id = nil; appDelegate.order_customer_id = nil; [appDelegate SetSo:nil]; appDelegate.cart_count=0; [appDelegate update_count_mark]; } [RAUtils message_box:@"Order Canceled" message:nil completion:nil]; [self ReloadData]; } else { [RAUtils message_box:@"Cancel Order" message:[return_json valueForKey:@"err_msg"] completion:nil]; } // }]; }]; // }]; }]; UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { DebugLog(@"Cancel"); }]; [alertControl addAction:actionOne]; [alertControl addAction:alertthree]; //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField) [self presentViewController:alertControl animated:YES completion:nil]; // }]; cancelAction.backgroundColor = UIColorFromRGB(0xff9933); if(/*[order_status isEqualToString:@"Saved Order"]*/statusCode == 1&&appDelegate.can_cancel_order) // return @[cancelAction]; return [UISwipeActionsConfiguration configurationWithActions:@[cancelAction]]; else { if(/*[order_status isEqualToString:@"Quote Saved"]*/statusCode == 0) { NSMutableArray* arr=[@[] mutableCopy]; if(appDelegate.can_delete_order) [arr addObject:deleteRowAction]; if(appDelegate.can_cancel_order) [arr addObject:cancelAction]; // return arr; return [UISwipeActionsConfiguration configurationWithActions:arr]; } } } else if (appDelegate.user_type==USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore) { // // Cancel Order Action // UITableViewRowAction *cancelAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Cancel Order"handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { // UIContextualAction* cancelAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleNormal title:@"Cancel Order" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) { DebugLog(@"edit click"); NSString * title =[NSString stringWithFormat:@"Are you sure to cancel order SO#: %@",so]; UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:title message:nil preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) { // __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Cancel Order" completion:^{ PopWaitAlert* pop = [RAUtils waiting_pop:@"Cancel Order" completion:nil]; [RANetwork request_cancel_order:orderid order_code:nil completionHandler:^(NSMutableDictionary *result) { NSDictionary* return_json =result; // [waitalert dismissViewControllerAnimated:YES completion:nil]; // [waitalert dismissViewControllerAnimated:YES completion:^{ [pop hide]; if([[return_json valueForKey:@"result"] intValue]==2) { if([appDelegate.order_code isEqualToString: [self.content_data[indexPath.row] valueForKey:@"order_code"]]) { appDelegate.order_code= nil; //appDelegate.user_type = 0; appDelegate.customerInfo = nil; appDelegate.contact_id = nil; appDelegate.order_customer_id = nil; [appDelegate SetSo:nil]; appDelegate.cart_count=0; [appDelegate update_count_mark]; } [RAUtils message_box:@"Order Canceled" message:nil completion:nil]; [self ReloadData]; } else { [RAUtils message_box:@"Cancel Order" message:[return_json valueForKey:@"err_msg"] completion:nil]; } // }]; }]; // }]; }]; UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { DebugLog(@"Cancel"); }]; [alertControl addAction:actionOne]; [alertControl addAction:alertthree]; //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField) [self presentViewController:alertControl animated:YES completion:nil]; // }]; cancelAction.backgroundColor = UIColorFromRGB(0xff9933); NSMutableArray *actionArr = [NSMutableArray array]; // 取消订单 if(/*[order_status isEqualToString:@"Saved Order"]*/statusCode == 1&&appDelegate.can_cancel_order) [actionArr addObject:cancelAction]; // return actionArr; return [UISwipeActionsConfiguration configurationWithActions:actionArr]; } // return @[]; return [UISwipeActionsConfiguration configurationWithActions:@[]]; } - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { if(indexPath.row==self.content_data.count) return NO; if(self.init_style==OL_OPEN) return NO; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; // NSString* order_status= [self.content_data[indexPath.row] valueForKey:@"order_status"]; NSInteger statusCode = [[self.content_data[indexPath.row] valueForKey:@"orderStatus"] integerValue]; if(appDelegate.user_type==USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore) { // saved && ((type==0 && merge_permission) || type == 1 || can_cancel) BOOL isSavedOrder = /*[order_status isEqualToString:@"Saved Order"]*/statusCode == 1; switch (self.orderType) { case 0:{ // Shop Order if (!isSavedOrder) { return NO; } else { if ([RASingleton sharedInstance].permissions_merge_order || appDelegate.can_cancel_order) { return YES; } else { return NO; } } } break; case 1:{ // Sales Order if (isSavedOrder && appDelegate.can_cancel_order) { return YES; } return NO; } break; default: break; } } else { return YES; } return YES; } - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { } - (UITableViewCellEditingStyle)tableView:(UITableView *)tv editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { if(indexPath.row==self.content_data.count) return UITableViewCellEditingStyleNone; bool offline_edit =[[self.content_data[indexPath.row] valueForKey:@"offline_edit"] boolValue]; // NSString* order_status= [self.content_data[indexPath.row] valueForKey:@"order_status"]; NSInteger statusCode = [[self.content_data[indexPath.row] valueForKey:@"orderStatus"] integerValue]; if(/*![order_status isEqualToString:@"Saved Order"]&&! [order_status isEqualToString:@"Quote Saved"]*/statusCode != 1 && statusCode != 0) return UITableViewCellEditingStyleNone; else { BOOL condition = offline_edit; #ifdef OFFLINE_MODE AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; condition = condition || appDelegate.offline_mode==false; #else condition = YES; #endif if (condition) return UITableViewCellEditingStyleDelete; else return UITableViewCellEditingStyleNone; } } /* #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 EnumSelectViewControllerDelegate -(void) EnumValueChanged:(NSMutableDictionary *)value indexPath :(NSIndexPath*) indexPath { self.status_cadedate = value; UIApplication * app = [UIApplication sharedApplication]; AppDelegate *appDelegate = (AppDelegate *)[app delegate]; appDelegate.OrderFilter = value; // NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); // NSString *documents = [paths objectAtIndex:0]; // NSString *dist_path = [documents stringByAppendingPathComponent:@"status_filter_cadedate.json"]; // // // // if ([[NSFileManager defaultManager] fileExistsAtPath:dist_path]) { // // // // DebugLog(@"文件已经存在了"); // // // // } // // else // // { // // // // // // // // DebugLog(@"resourceSampleImagesFolderPath=%@",resourceFolderPath); // //NSData *data = [NSJSONSerialization dataWithJSONObject:self.status_cadedate options:kNilOptions error:nil]; // // // DebugLog(@"mainBundleFile==%@",mainBundleFile); // // [[NSFileManager defaultManager] createFileAtPath:dist_path // // contents:data // // attributes:nil]; // // } // self.keywords=searchBar.text; // self.offset = 0; // [self.content_data removeAllObjects]; self.reset_result=true; [self loadpage]; //[self.btnStatusFilter setTitle:setTitle:alert ]; } #pragma mark - button action - (NSIndexPath *)indexPathOfDeleteOrder:(NSString *)orderID { for (NSIndexPath *indexPath in self.table_order.indexPathsForSelectedRows) { NSString* orderid= [NSString stringWithFormat:@"%@",[self.content_data[indexPath.row] valueForKey:@"order_id"]]; if ([orderid isEqualToString:orderID]) { return indexPath; } } return nil; } - (IBAction)mergeListButtonClick:(UIBarButtonItem *)sender { if (!self.table_order.isEditing) { [RAUtils message_box:@"Warning" message:@"You have to click select firstly then select some saved order" completion:nil]; return; } [self handleSelectedOrders]; if (!self.mergeList.count) { return; } SelectUploadOrderViewController *mergeVC = [[UIStoryboard storyboardWithName:@"OLM" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"SelectUploadOrderViewController"]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:mergeVC]; mergeVC.mergeList = self.mergeList; mergeVC.title = @"Combine List"; __weak typeof(self) weakself = self; mergeVC.mergeBlock = ^(NSDictionary *ret) { if (weakself) { __strong typeof(weakself) strongself = weakself; if([[ret objectForKey:@"result"]integerValue] == RESULT_TRUE) { [weakself.mergeList removeAllObjects]; [strongself.table_order endEditing:YES]; [strongself ReloadData]; if ([RASingleton sharedInstance].customer_can_see_sales_Order) { [strongself openOrder:ret]; } } else { NSString *msg = [ret objectForKey:@"err_msg"]; [RAUtils message_box:nil message:msg completion:nil]; } } }; mergeVC.deleteBlock = ^(NSString *orderID){ NSIndexPath *indexPath = [weakself indexPathOfDeleteOrder:orderID]; [weakself.table_order deselectRowAtIndexPath:indexPath animated:YES]; }; mergeVC.clearBlock = ^{ for (NSDictionary *order in self.mergeList) { NSString *order_id = [NSString stringWithFormat:@"%@",[order objectForKey:@"order_id"]]; NSIndexPath *indexPath = [weakself indexPathOfDeleteOrder:order_id]; [weakself.table_order deselectRowAtIndexPath:indexPath animated:YES]; } }; nav.modalPresentationStyle = UIModalPresentationFormSheet; [self presentViewController:nav animated:YES completion:nil]; } - (void)handleSelectedOrders { [self.mergeList removeAllObjects]; if (!self.table_order.isEditing) { return; } for (NSIndexPath *indexPath in self.table_order.indexPathsForSelectedRows) { if(indexPath.row==self.content_data.count) continue; NSString* so= [self.content_data[indexPath.row] valueForKey:@"so#"]; NSString* orderid= [self.content_data[indexPath.row] valueForKey:@"order_id"]; NSString *create_by = [self.content_data[indexPath.row] valueForKey:@"create_by"]; NSString *create_time = [self.content_data[indexPath.row] valueForKey:@"purchase_time"]; NSString *orderCode = [NSString stringWithFormat:@"%@",[self.content_data[indexPath.row] valueForKey:@"order_code"]]; NSMutableDictionary *dic = [NSMutableDictionary dictionary]; [dic setValue:orderid forKey:@"order_id"]; [dic setValue:orderCode forKey:@"order_code"]; [dic setValue:so forKey:@"so_id"]; [dic setValue:create_by forKey:@"create_by"]; [dic setValue:create_time forKey:@"create_time"]; [dic setValue:[NSNumber numberWithInteger:0] forKey:@"check"]; // 合并到 [self.mergeList addObject:dic]; } } - (IBAction)editOrderListButtonClick:(UIBarButtonItem *)sender { if ([RASingleton sharedInstance].global_lock) { // Order list 被锁 [RAUtils message_box:@"Warning" message:@"Permission Needed.\nGoto Menu -> Unlock" completion:nil]; return; } UIImage *gray = [UIImage imageNamed:@"Combinegray"]; UIImage *green = [[UIImage imageNamed:@"converttopo"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];//converttopo if (self.table_order.isEditing) { [self mergeListButtonClick:nil]; // 结束选择时恢复 if ([RASingleton sharedInstance].customer_can_see_sales_Order && ![RASingleton sharedInstance].global_lock) { // 有查看Sales order 权限,并且app没有锁 if (self.orderTypeSegmentControl.numberOfSegments == 1) { [self.orderTypeSegmentControl insertSegmentWithTitle:[NSString stringWithFormat:@"Purchase Order to %@",COMPANY_SHORT_NAME] atIndex:1 animated:YES]; } } self.status_cadedate = self.shop_order_filter; [self ReloadData]; [self.table_order setEditing:NO animated:YES]; // sender.title = @"Select"; // [self.mergeList removeAllObjects]; [sender setImage:gray]; } else { // 选择时不能选择Sales Order if(self.orderTypeSegmentControl.numberOfSegments > 1) { [self.orderTypeSegmentControl removeSegmentAtIndex:1 animated:YES]; [self changeOrderType:0]; } // 切换filter NSData *data=[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"status_filter_cadedate_open" ofType:@"json" ]]; NSError *error=nil; self.status_cadedate = [[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error] mutableCopy]; // 刷新,取Saved Order [self ReloadData]; [self.table_order setEditing:YES animated:YES]; // sender.title = @"Exit"; [sender setImage:green]; } } - (void)changeOrderType:(NSInteger)ordertype { self.orderType = ordertype; [RASingleton sharedInstance].customer_order_type = ordertype; if(self.init_style != OL_OPEN) { switch (ordertype) { case 0:{ self.status_cadedate = self.shop_order_filter; } break; case 1:{ self.status_cadedate = self.sales_order_filter; } break; default: break; } NSMutableArray *items = [self.toolbarView.items mutableCopy]; if (ordertype == 1) { // 不能合并 // if ([items containsObject:self.mergeListButton]) { // 显示button // [items removeObject:self.mergeListButton]; // } if ([items containsObject:self.editOrderListButton]) { // 显示button [items removeObject:self.editOrderListButton]; } self.toolbarView.items = items; } else { // 合并订单的权限 if ([RASingleton sharedInstance].permissions_merge_order) { // 能够合并 // 4 6 顺序不能换 if (![items containsObject:self.editOrderListButton]) { // 没显示button [items insertObject:self.editOrderListButton atIndex:4]; } // if (![items containsObject:self.mergeListButton]) { // 没显示button // [items insertObject:self.mergeListButton atIndex:6]; // } self.toolbarView.items = items; } else { // 不能合并 // if ([items containsObject:self.mergeListButton]) { // 显示button // [items removeObject:self.mergeListButton]; // } if ([items containsObject:self.editOrderListButton]) { // 显示button [items removeObject:self.editOrderListButton]; } self.toolbarView.items = items; } } } else { NSString *resource = @"status_filter_cadedate_open"; if (ordertype == 1) { resource = @"status_filter_cadedate_po"; } NSData *json=[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:resource ofType:@"json" ]]; NSError *error=nil; self.status_cadedate = [[NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error] mutableCopy]; } [self ReloadData]; } - (IBAction)orderTypeChanged:(UISegmentedControl *)sender { [self changeOrderType:sender.selectedSegmentIndex]; } - (void)openOrder:(NSDictionary *)order { if (!order) { return; } NSString *orderCode = [order objectForKey:@"orderCode"]; NSInteger orderStatus = [[order objectForKey:@"orderStatus"] integerValue]; NSString *so = [order objectForKey:@"so#"]; // __weak typeof(self) weakself = self; [RANetwork request_open_order:orderCode completionHandler:^(NSMutableDictionary *result) { NSDictionary* order_json = result ; if([[order_json valueForKey:@"result"] intValue]==2) { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; appDelegate.order_code = orderCode; appDelegate.order_status = (int)orderStatus; [appDelegate SetSo:so]; __weak MainViewController *mainVC = (MainViewController*)appDelegate.main_vc; #ifdef RA_NOTIFICATION [ActiveViewController Notify:@"CartViewController,OrderListViewController,ContactListViewController" Message:RA_NOTIFICATION_RELOAD_DATA]; #else [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false]; [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false]; [((MainViewController*)appDelegate.main_vc) reloadContact:true immediately:false]; #endif [((MainViewController*)appDelegate.main_vc) switchToCart]; mainVC.cartViewController.onFinishLoad=^{ [mainVC.cartViewController placeOrder]; mainVC.cartViewController.onFinishLoad=nil; }; } else { [RAUtils message_box:@"Open Order" message:[order_json valueForKey:@"err_msg"] completion:nil]; } }]; } #pragma mark - notification action - (void)changePriceType:(id)notification { [self ReloadData]; } - (void)lockOrderListNotification:(NSNotification *)notification { if ([notification.name isEqual:Lock_Permission_Notification]) { if (self.orderType == 1) { self.orderTypeSegmentControl.selectedSegmentIndex = 0; // [self changeOrderType:0]; [self.orderTypeSegmentControl sendActionsForControlEvents:UIControlEventValueChanged]; } if(self.orderTypeSegmentControl.numberOfSegments > 1) { [self.orderTypeSegmentControl removeSegmentAtIndex:1 animated:YES]; // [self changeOrderType:0]; } } else { // 解锁 if ([RASingleton sharedInstance].customer_can_see_sales_Order) { // 有查看Sales order 权限 if (self.orderTypeSegmentControl.numberOfSegments == 1 && !self.table_order.isEditing) { [self.orderTypeSegmentControl insertSegmentWithTitle:[NSString stringWithFormat:@"Purchase Order to %@",COMPANY_SHORT_NAME] atIndex:1 animated:YES]; } } } } - (void)handleUserLogin:(NSNotification *)notification { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; self.orderType = 0; if (self.table_order.isEditing) { [self.table_order setEditing:NO animated:YES]; self.editOrderListButton.image = [UIImage imageNamed:@"Combinegray"]; } if (appDelegate.user_type == USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore) { self.orderTypeSegmentControl.selectedSegmentIndex = 0; [RASingleton sharedInstance].customer_order_type = 0; } } - (void)reRefreshView { [self.table_order reloadData]; } #pragma mark - RA_NOTIFICAITON -(void) refresh_ui { [self.table_order reloadData]; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(appDelegate.can_create_order) { [self.btn_newOrder setImage:[UIImage imageNamed:@"neworder"]]; self.btn_newOrder.enabled = true; } else { [self.btn_newOrder setImage:nil]; self.btn_newOrder.enabled = false; } } -(void) reload_data { self.reset_result=true; self.norefresh=true; [self loadpage]; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(appDelegate.can_create_order) { [self.btn_newOrder setImage:[UIImage imageNamed:@"neworder"]]; self.btn_newOrder.enabled = true; } else { [self.btn_newOrder setImage:nil]; self.btn_newOrder.enabled = false; } } -(void) refresh_price { [self refresh_ui]; } @end