// // CartViewController.m // RedAnt ERP Mobile // // Created by Ray on 14-6-6. // Copyright (c) 2014年 United Software Applications, Inc. All rights reserved. // #import "RAUtils.h" #import "CartViewController.h" #import "ModelItemCell.h" #import "RANetwork.h" //#import "CommonGridViewController.h" #import "CreateOrderViewController.h" #import "DetailViewController.h" #import "EditModelPriceViewController.h" #import "MainViewController.h" #import "LoginViewController.h" #import "ItemNotesViewController.h" #import "CartGeneralNotesViewController.h" #import "DefaultAppearance.h" #import "DefaultTableHeaderView.h" #import "SortItemViewController.h" #import "SortButton.h" #import "NotificationNameCenter.h" #import "RASingleton.h" #import "JKMessageBoxController.h" #import "RAPDFViewController.h" #ifdef SCANNER_ORDER #import "ScanCartItemCell.h" #endif #ifdef BACKORDER_PROCESS #import "RAOrderEditorViewController.h" #import "ScanDiscountViewController.h" #endif #import "CustomerEditViewController.h" //#define ALERT_FREE 1024 //#define ALERT_DEL 1025 //#define ALERT_SET_FREE 1026 //#define ALERT_RESTORE_FREE 1027 @interface CartViewController () { CGRect cancelButtonFrame; } @property (nonatomic,strong) SortItemViewController *sortItemController; @property (nonatomic,assign) int sortIndex; @property (nonatomic,strong) SortButton *sortButton; @property (strong, nonatomic) IBOutlet UIButton *placeOrderButton; @property (strong, nonatomic) IBOutlet UIButton *cancelOrderButton; @property (nonatomic,strong) NSOperationQueue *dataOperationQueue; @property (strong, nonatomic) IBOutlet UIButton *emailButton; @property (strong, nonatomic) IBOutlet UIButton *printButton; @property (weak, nonatomic) IBOutlet UIButton *editButton; @property (weak, nonatomic) IBOutlet UIButton *continueButton; @property (weak, nonatomic) IBOutlet UILabel *labelTotalcuft; @property (weak, nonatomic) IBOutlet UILabel *labelTotalWeight; @property (weak, nonatomic) IBOutlet UILabel *labelTotalCarton; @property (weak, nonatomic) IBOutlet UILabel *valuecuft; @property (weak, nonatomic) IBOutlet UILabel *valueweight; @property (weak, nonatomic) IBOutlet UILabel *valuecarton; @property (nonatomic,assign) BOOL currentOrderIsMerged; @property (nonatomic,strong) DefaultTableHeaderView *cartIndicatorBar; @property (nonatomic,assign) BOOL back_order_flag; @property (nonatomic,strong) NSDictionary *cart_json; @property (nonatomic,copy) NSString *print_url; @property (nonatomic,assign) BOOL available;///<所有Model均有库存,才能Place Order。 @end @implementation CartViewController - (NSOperationQueue *)dataOperationQueue { if (!_dataOperationQueue) { _dataOperationQueue = [[NSOperationQueue alloc] init]; _dataOperationQueue.maxConcurrentOperationCount = 1; } return _dataOperationQueue; } - (void)dealloc { #ifndef RA_NOTIFICATION [[NSNotificationCenter defaultCenter] removeObserver:self]; #endif } -(void) logout { [super logout]; [self.content_arr removeAllObjects]; [self refresh_ui]; self.cart_json = nil; } - (IBAction)OnEditSelectClick:(id)sender { NSMutableArray* arr_ids = [[NSMutableArray alloc] init]; long count = self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue]; if(count==0) { [RAUtils message_alert:@"No item in the cart" title:@"Cart" controller:self] ; return; } for(int i=0;i 1) { return; } __block AppDelegate *appDelegate = nil; dispatch_sync(dispatch_get_main_queue(), ^{ //some UI methods ej appDelegate=(AppDelegate*)[[UIApplication sharedApplication] delegate]; }); // AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate; #ifndef SCANNER_ORDER //扫码订单允许后建订单 if (appDelegate.order_code == nil || appDelegate.order_code.length == 0) { [self clearContent]; return; } #endif __weak typeof(self) weakself = self; dispatch_async(dispatch_get_main_queue(), ^{ if(weakself.isrefreshing) return; weakself.available = YES; weakself.itemListTable.hidden = true; weakself.label_net_err.hidden=true; weakself.isrefreshing=true; // [self.content_data removeAllObjects]; // [self.itemListTable reloadData]; // UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200]; // // [reF endRefreshing]; // // reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"]; weakself.mum.center = weakself.view.center; weakself.mum.hidden = YES; // [self.mum startAnimating]; DebugLog(@"reloading..."); __block UIAlertController *loadingView = [RAUtils waiting_alert:self title:@"Loading" completion:^{ [RANetwork request_cart:weakself.sortIndex completionHandler:^(NSMutableDictionary *result) { DebugLog(@"BEGIN LOAD CART"); NSDictionary* cart_json = result; // // [self.mum stopAnimating]; [loadingView dismissViewControllerAnimated:YES completion:^{ // [loadingView dismissWithClickedButtonIndex:0 animated:YES]; // self.content_data = [cart_json mutableCopy]; #ifdef BACKORDER_PROCESS weakself.back_order_flag = [[cart_json objectForKey:@"back_order_version"] boolValue]; #else weakself.back_order_flag = NO; #endif if (!weakself.back_order_flag) { weakself.freejson = [cart_json objectForKey:@"freeGiveaway"]; weakself.notes = [cart_json valueForKey:@"general_note"]; weakself.content_arr = [RAUtils dictionary2array:cart_json count_fields:@"count" item_mark:@"item_" items_mark:nil]; weakself.currentOrderIsMerged = [[cart_json valueForKey:@"is_merged_order"] boolValue]; [RASingleton sharedInstance].currentOrderIsMerged = weakself.currentOrderIsMerged; [weakself.itemListTable reloadData]; weakself.print_url = [cart_json valueForKey:@"cart_print_url"]; [weakself checkProductAvailable:weakself.content_arr]; [weakself refresh_total]; } else { // v1.94 weakself.freejson = [cart_json objectForKey:@"freeGiveaway"]; weakself.notes = [cart_json valueForKey:@"general_note"]; weakself.cart_json = cart_json; [weakself.itemListTable reloadData]; weakself.print_url = [cart_json valueForKey:@"cart_print_url"]; [weakself checkProductAvailable:weakself.content_arr]; } int result_code=[[cart_json valueForKey:@"result"] intValue]; if (weakself.dataOperationQueue.operationCount > 1) { weakself.isrefreshing=false; return; } if(result_code==2||result_code==1||result_code==0) { [weakself.edit_select_arr removeAllObjects]; weakself.itemListTable.hidden = false; // UIApplication * app = [UIApplication sharedApplication]; // AppDelegate *appDelegate = (AppDelegate *)[app delegate]; // appDelegate.cart_count =weakself.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue]; weakself.itemListTable.hidden=false; if(weakself.onFinishLoad) weakself.onFinishLoad(); } else if(result_code==RESULT_NET_ERROR) { weakself.label_net_err.hidden=false; weakself.itemListTable.hidden=true; } else { if(result_code!=1) [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Loading Cart" controller:weakself] ; } weakself.isrefreshing=false; DebugLog(@"FINISH LOAD CART"); }]; }]; }]; // dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // DebugLog(@"BEGIN LOAD CART"); // NSDictionary* cart_json = [RANetwork request_Cart:weakself.sortIndex]; // // dispatch_async(dispatch_get_main_queue(), ^{ // // //// [self.mum stopAnimating]; // [loadingView dismissWithClickedButtonIndex:0 animated:YES]; // // // self.content_data = [cart_json mutableCopy]; //#ifdef BACKORDER_PROCESS // weakself.back_order_flag = [[cart_json objectForKey:@"back_order_version"] boolValue]; //#else // weakself.back_order_flag = NO; //#endif // // if (!weakself.back_order_flag) { // weakself.freejson = [cart_json objectForKey:@"freeGiveaway"]; // weakself.notes = [cart_json valueForKey:@"general_note"]; // weakself.content_arr = [RAUtils dictionary2array:cart_json count_fields:@"count" item_mark:@"item_" items_mark:nil]; // weakself.currentOrderIsMerged = [[cart_json valueForKey:@"is_merged_order"] boolValue]; // [Singleton sharedInstance].currentOrderIsMerged = weakself.currentOrderIsMerged; // [weakself.itemListTable reloadData]; // weakself.print_url = [cart_json valueForKey:@"cart_print_url"]; // // // [weakself checkProductAvailable:weakself.content_arr]; // // // [weakself refresh_total]; // } else { // // v1.94 // weakself.freejson = [cart_json objectForKey:@"freeGiveaway"]; // weakself.notes = [cart_json valueForKey:@"general_note"]; // weakself.cart_json = cart_json; // [weakself.itemListTable reloadData]; // weakself.print_url = [cart_json valueForKey:@"cart_print_url"]; // [weakself checkProductAvailable:weakself.content_arr]; // } // // int result=[[cart_json valueForKey:@"result"] intValue]; // // if (weakself.dataOperationQueue.operationCount > 1) { // weakself.isrefreshing=false; // return; // } // // if(result==2||result==1||result==0) // { // // [weakself.edit_select_arr removeAllObjects]; // // weakself.itemListTable.hidden = false; //// UIApplication * app = [UIApplication sharedApplication]; //// AppDelegate *appDelegate = (AppDelegate *)[app delegate]; //// appDelegate.cart_count =weakself.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue]; // weakself.itemListTable.hidden=false; // if(weakself.onFinishLoad) // weakself.onFinishLoad(); // } // else // if(result==RESULT_NET_ERROR) // { // weakself.label_net_err.hidden=false; // weakself.itemListTable.hidden=true; // } // else // { // if(result!=1) // [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Loading Cart" controller:weakself] ; // } // // weakself.isrefreshing=false; // DebugLog(@"FINISH LOAD CART"); // // }); // }); }); // [[self navigationController] setNavigationBarHidden:YES animated:NO]; } -(void)manually_refresh { UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200]; if(self.isrefreshing) { [reF endRefreshing]; return; } reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Refreshing"]; [self performSelector:@selector(ReloadData) withObject:nil afterDelay:1]; // DebugLog(@"refresh!!!!!!!!"); } -(void) ReloadData { UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:200]; [reF endRefreshing]; reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"]; [self reload_data]; } - (void)viewDidLayoutSubviews { [super viewDidLayoutSubviews]; [self layoutCartIndicatorBar]; } - (DefaultTableHeaderView *)setupCartIndicatorBar { NSString* value =[DefaultAppearance get_noneappearance_value:@"DefaultTableHeaderView" valuename:@"title_text_color"]; if(value==nil) value=@""; unsigned long color = strtoul([value UTF8String],0,16); DefaultTableHeaderView* myView = [[DefaultTableHeaderView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 40)]; // myView.backgroundColor = UIColorFromRGB(0x996633); myView.autoresizingMask = UIViewAutoresizingFlexibleWidth; myView.layer.shadowPath =[UIBezierPath bezierPathWithRect:myView.bounds].CGPath; myView.layer.shadowColor = [UIColor blackColor].CGColor; myView.layer.shadowOffset = CGSizeMake(0, 0); myView.layer.shadowOpacity = 0.5; myView.layer.shadowRadius = 2.0; #ifndef SCANNER_ORDER self.sortButton.tag = 5678 + 0; [myView addSubview:self.sortButton]; #endif UILabel *solabel = [[UILabel alloc] initWithFrame:CGRectMake(130, 9, 90, 22)]; solabel.tag = 5678 + 1; solabel.textColor=UIColorFromRGB(color); solabel.backgroundColor = [UIColor clearColor]; solabel.autoresizingMask=UIViewAutoresizingFlexibleRightMargin; solabel.text=NSLocalizedString(@"Description", nil); [solabel sizeToFit]; [myView addSubview:solabel]; CGFloat x = self.itemListTable.bounds.size.width - (768 - 320); UILabel *contactlabel = [[UILabel alloc] initWithFrame:CGRectMake(x, 9, 90, 22)]; contactlabel.tag = 5678 + 2; contactlabel.textColor=UIColorFromRGB(color); contactlabel.autoresizingMask=UIViewAutoresizingFlexibleLeftMargin; contactlabel.backgroundColor = [UIColor clearColor]; #ifdef SCANNER_ORDER NSString* pricename; NSDictionary *addressDic = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanAddress"]; NSString* servername = [addressDic objectForKey:@"show_name"]; NSArray* arrsn = [RAConvertor string2arr:servername separator:@","]; NSString * shortname = arrsn[0]; if(shortname.length==0) shortname = servername; switch(RASingleton.sharedInstance.price_type) { case 0: pricename =[NSString stringWithFormat:@"%@_DDP",shortname]; break;; case 1: pricename = [NSString stringWithFormat:@"%@_WHSE",shortname];; break;; // case 2: pricename = @"25%"; // break; } contactlabel.text=pricename; #else contactlabel.text=NSLocalizedString(@"Unit price", nil); #endif [contactlabel sizeToFit]; [myView addSubview:contactlabel]; x = self.itemListTable.bounds.size.width - (768 - 470); UILabel *modellabel = [[UILabel alloc] initWithFrame:CGRectMake(x, 9, 90, 22)]; modellabel.tag = 5678 + 3; modellabel.textColor=UIColorFromRGB(color); modellabel.autoresizingMask=UIViewAutoresizingFlexibleLeftMargin; modellabel.backgroundColor = [UIColor clearColor]; modellabel.text=NSLocalizedString(@"Discount/QTY", nil); [modellabel sizeToFit]; [myView addSubview:modellabel]; x = self.itemListTable.bounds.size.width - (768 - 640); UILabel *pricelabel = [[UILabel alloc] initWithFrame:CGRectMake(x, 9, 90, 22)]; pricelabel.tag = 5678 + 4; pricelabel.textColor=UIColorFromRGB(color); pricelabel.autoresizingMask=UIViewAutoresizingFlexibleLeftMargin; pricelabel.backgroundColor = [UIColor clearColor]; pricelabel.text=NSLocalizedString(@"Set/Subtotal", nil); [pricelabel sizeToFit]; [myView addSubview:pricelabel]; return myView; } - (void)layoutCartIndicatorBar { CGFloat x = self.itemListTable.bounds.size.width - (768 - 320); UILabel *solabel = [self.cartIndicatorBar viewWithTag:5678 + 1]; [solabel sizeToFit]; UILabel *contactlabel = [self.cartIndicatorBar viewWithTag:5678 + 2]; contactlabel.frame = CGRectMake(x, 9, 90, 22); [contactlabel sizeToFit]; x = self.itemListTable.bounds.size.width - (768 - 470); UILabel *modellabel = [self.cartIndicatorBar viewWithTag:5678 + 3]; modellabel.frame = CGRectMake(x, 9, 90, 22); [modellabel sizeToFit]; x = self.itemListTable.bounds.size.width - (768 - 640); UILabel *pricelabel = [self.cartIndicatorBar viewWithTag:5678 + 4]; pricelabel.frame = CGRectMake(x, 9, 90, 22); [pricelabel sizeToFit]; } - (void)viewDidLoad { [super viewDidLoad]; #ifdef SCANNER_ORDER self.printButton.hidden = true; self.emailButton.hidden = true; self.editButton.hidden = true; self.continueButton.hidden = true; self.labelTotalcuft.hidden = false; self.labelTotalWeight.hidden = true; self.labelTotalCarton.hidden = true; self.valuecuft.hidden = false; self.valueweight.hidden = true; self.valuecarton.hidden = true; #endif #ifdef RA_NOTIFICATION self.support_scanner = true; #endif self.edit_select_arr= [[NSMutableArray alloc] init]; self.label_net_err.layer.borderColor = [UIColor darkGrayColor].CGColor; self.label_net_err.layer.borderWidth = 2.0; self.label_net_err.layer.cornerRadius=15; self.label_net_err.layer.masksToBounds=true; #ifndef RA_NOTIFICATION [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(priceTypeChanged:) name:Change_Price_Type_Notification object:nil]; #endif UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(refresh_btn_click:)]; // tap.minimumPressDuration = 0.8; //定义按的时间 [self.label_net_err addGestureRecognizer:tap]; UIRefreshControl *ref = [[UIRefreshControl alloc]init]; ref.tag = 200 ; ref.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"]; ref.tintColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7]; // ref.hidden = true; [ref addTarget:self action:@selector(manually_refresh) forControlEvents:UIControlEventValueChanged]; [self.itemListTable addSubview:ref]; self.sortIndex = 0; self.currentOrderIsMerged = NO; self.toolpanel.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.toolpanel.bounds].CGPath; self.toolpanel.layer.masksToBounds = false; //添加四个边阴影 self.toolpanel.layer.shadowColor = [UIColor blackColor].CGColor; self.toolpanel.layer.shadowOffset = CGSizeMake(0, 0); self.toolpanel.layer.shadowOpacity = 0.5; self.toolpanel.layer.shadowRadius = 2.0; cancelButtonFrame = self.cancelOrderButton.frame; // CGRect frame =self.orderInfoTableView.tableHeaderView.frame; // self.orderInfoTableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.orderInfoTableView.bounds.size.width, 0.0001)]; // self.orderInfoTableView.tableHeaderView.backgroundColor = [UIColor redColor]; // // self.detailTable.sectionHeaderHeight = 0.0001; // self.orderInfoTableView.sectionFooterHeight = 0.0001; // Do any additional setup after loading the view. self.cartIndicatorBar = [self setupCartIndicatorBar]; [self.view addSubview:self.cartIndicatorBar]; } //-(void)SelectOrder:(NSString *)orderid //{ //// self.editOrderID.text=orderid; //// self.btnAddToOrder.enabled = true; //} - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } //- (IBAction)stepperAction:(UIStepper *)sender { // // //} - (IBAction)onContinueShoppingClick:(id)sender { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; [appDelegate switchToPreviousVC]; } - (IBAction)onPlaceOrder:(UIButton *)sender { #ifndef SCANNER_ORDER if (![self isOrderAvailable]) { return; } #endif [self placeOrder]; } -(void) scanPlaceOrder { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; NSMutableDictionary * params= [[NSMutableDictionary alloc] init]; // NSString * string = [checked componentsJoinedByString:@","]; // [params setValue:string forKey:@"cart2Checkbox"]; // NSData* data=[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:URL_SO_ORDER ofType:@"json" ]]; // NSError *error=nil; // NSMutableDictionary* dict=[[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error] mutableCopy]; // // NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); // NSString *documents = [paths objectAtIndex:0]; NSString *orderdir = [OLDataProvider getScanPath]; NSMutableDictionary* dict= [[RAUtils dictfromfile:[orderdir stringByAppendingPathComponent:@"order.json"]] mutableCopy]; int section_count = [dict[@"section_count"] intValue]; for(int i=0;i0) { // 当前订单先关闭 // [OLDataProvider deleteScanOrder:appDelegate.order_code]; appDelegate.order_code = nil; appDelegate.customerInfo = nil; RASingleton.sharedInstance.scan_cart = nil; appDelegate.contact_id = nil; // [appDelegate updateScanButton:false]; [appDelegate update_count_mark]; [appDelegate closeOrder]; } // RASingleton.sharedInstance.enable_OfflineOrder = true; // __block MainViewController *brself= self; // if(appDelegate.contact_id.length<=0) // { // // UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"New Offline Order" message:nil preferredStyle:UIAlertControllerStyleAlert]; // UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"With Offline Contact" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { // //// if(appDelegate.order_code && appDelegate.order_code.length>0) //// { //// [RAUtils message_alert:@"Please close current order and try again." title:@"" controller:self]; //// } //// NSLog(@"new click"); // // NSMutableDictionary * params= [[NSMutableDictionary alloc] init]; // //// NSString *path = [[NSBundle mainBundle] pathForResource:@"editContact.json" ofType:nil]; // // CustomerEditViewController * cuseditVC = [[CustomerEditViewController alloc] initWithNibName:@"CommonEditor.iPad" bundle:nil]; // cuseditVC.bnewcustomer=true; // cuseditVC.bolocustomer = true; // cuseditVC.url_type = URL_FILE; // cuseditVC.request_url=[OLDataProvider scanTemplatePath:@"scan_contact.json"]; // // cuseditVC.params = params; // // cuseditVC.returnValue=^(NSMutableDictionary* value) // { // if(value==nil) // { // [RAUtils message_alert:@"Cannot create order without customer infomation." title:@"" controller:self]; // } // else // { // NSString* contact_id=[[NSUUID new] UUIDString]; // // // //---------------- construct customer_contact---------------------- // NSString* customer_first_name = [value valueForKey:@"customer_first_name"]; // if(customer_first_name==nil) // customer_first_name=@""; // // NSString* customer_last_name= [value valueForKey:@"customer_last_name"]; // if(customer_last_name==nil) // customer_last_name=@""; // NSString* customer_contact = [NSString stringWithFormat:@"%@ %@",customer_first_name,customer_last_name]; // customer_contact=[customer_contact stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; // [value setValue:customer_contact forKey:@"customer_contact"]; // // // // value [@"customer_cid"] = contact_id; // appDelegate.contact_id=contact_id; // appDelegate.customerInfo = value; // // // // // // //// [brself refreshContactDisplay]; // [self newoloorder]; // // [self scanPlaceOrder]; // //// [brself switchToCart:nil]; // // } // }; // // // // cuseditVC.delegate=self; // // // // if(checked.count==count) // // { // // orderinfoVC.have_tail = true // // } // // [[self navigationController] setNavigationBarHidden:NO animated:NO]; // [self.navigationController pushViewController:cuseditVC animated:false]; // //// [self dismissViewControllerAnimated:NO completion:^{ ////// [(UINavigationController*)[self parentViewController] pushViewController:cuseditVC animated:false];; ////// [[self navigationController] setNavigationBarHidden:NO animated:NO]; //// ////// [self pushViewController:cuseditVC animated:false]; //// }]; // //// [[self navigationController] setNavigationBarHidden:NO animated:NO]; //// [self.navigationController pushViewController:cuseditVC animated:false]; // // // }]; // // // // UIAlertAction *alertCancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { // // }]; // // [alertControl addAction:actionOne]; // //// [alertControl addAction:alertthree]; // [alertControl addAction:alertCancel]; // // [self presentViewController:alertControl animated:YES completion:nil]; // } // else { [self newoloorder]; } } -(void)placeOrder { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; #ifndef SCANNER_ORDER if (appDelegate.user_type == USER_ROLE_CUSTOMER && appDelegate.customer_type == CustomerTypeStore) { if (![RASingleton sharedInstance].permissions_edit_order) { return; } // if (!self.available) { // // [RAUtils message_alert:@"There are some products is not available" title:@"Warning" controller:self]; // return; // } } #endif // NSMutableArray* checked = [[NSMutableArray alloc] init]; bool have_free = false; long count = self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue]; if(count==0) { [RAUtils message_alert:@"Add some model first." title:@"Cart Is Empty." controller:self] ; return; } for(int i=0;i=0;ic--) { float compare_price = [[self.freejson valueForKey:[NSString stringWithFormat:@"item_%d",ic]] floatValue]; if(self.total>=compare_price && !have_free&&appDelegate.can_set_cart_price) { UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Free give away available.", nil) message:[NSString stringWithFormat:@"Order total price more than %.2f, do you want to add free give away item before place order?", compare_price] delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil]; alert.tag = ALERT_FREE; [alert show]; return; } } */ #ifdef SCANNER_ORDER if(appDelegate.bLogin==false) { LoginViewController * loginvc =[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"LoginViewController"]; // loginvc.delegate = self; // loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种 loginvc.returnValue = ^(bool blogin){ if(blogin) { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if(appDelegate.order_code.length==0) { [self newScanOrder]; } } }; UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:loginvc] ; // [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi]; navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种 [self presentViewController:navi animated:YES completion:^{ // navi.view.superview.bounds = CGRectMake(0, 0, 480, 320); DebugLog(@"LoginViewController present........."); // self.btop = false; // <#code#> }]; return; } else { if(appDelegate.order_code.length==0) { [self newScanOrder]; } else { [self scanPlaceOrder]; //place order } return; } // if(RASingleton.sharedInstance.enable_OfflineOrder) // { // // NSMutableDictionary * params= [[NSMutableDictionary alloc] init]; // // NSString * string = [checked componentsJoinedByString:@","]; // // [params setValue:string forKey:@"cart2Checkbox"]; // //// NSData* data=[NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:URL_SO_ORDER ofType:@"json" ]]; //// NSError *error=nil; //// NSMutableDictionary* dict=[[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error] mutableCopy]; //// // // // NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); // NSString *documents = [paths objectAtIndex:0]; // // // // NSString *orderdir = [documents stringByAppendingPathComponent:appDelegate.order_code]; // // NSMutableDictionary* dict= [[RAUtils dictfromfile:[orderdir stringByAppendingPathComponent:@"order.json"]] mutableCopy]; // // int section_count = [dict[@"section_count"] intValue]; // // for(int i=0;i0) bmodify=true; // NSString* notes = [item_json valueForKey:@"note"]; // if(notes.length==0) // notes=@""; // if(bmodify) // { // // // // if([notes isEqualToString:@""]) //// notes=[NSString stringWithFormat:@"Note: discount %d%% off.",(int)discount]; //// //// NSRange range; //// range = [notes rangeOfString:@"PRICE MODIFIED"]; //// if (range.location != NSNotFound) { //// //// }else{ //// notes= [notes stringByAppendingString:@"\nPRICE MODIFIED"]; //// } // } // else // // { //// notes =@""; // } __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Update Price" completion:^{ [RANetwork request_update_cart_modelprice:cartid price:price discount:discount notes:nil completionHandler:^(NSMutableDictionary *result) { NSDictionary* cart_json = result; [waitalert dismissViewControllerAnimated:YES completion:^{ if([[cart_json valueForKey:@"result"] intValue]==2) { [item_json setValue:[NSNumber numberWithDouble:price ] forKey:@"unit_price"]; [item_json setValue:[NSNumber numberWithDouble:discount ] forKey:@"discount"]; // [item_json setValue:notes forKey:@"note"]; // RASingleton.sharedInstance.scan_cart[@"section_0"][[NSString stringWithFormat:@"item_%d",indexPath.row]]=item_json; // if (self.back_order_flag) { // [self updateItemJson:item_json atIndexPath:indexPath]; // } else { // self.content_arr[indexPath.row ] = item_json; // } // tableView.editing = false; // [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle]; // [self refresh_total]; [self reload_data]; #ifdef RA_NOTIFICATION [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA]; #else AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false]; #endif } else { [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Update Price" controller:self] ; } }]; }]; }]; }; UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ; // [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi]; navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种 [parentvc presentViewController:navi animated:YES completion:^{ // navi.view.superview.bounds = CGRectMake(0, 0, 480, 320); DebugLog(@"EditModelPriceViewController present........."); // self.btop = false; // <#code#> }]; #endif } -(void)refresh_total { self.total=0; self.total_carton=0; self.total_cuft=0; self.total_weight=0; self.total_QTY=0; self.total_item=0; self.surcharge=0; #ifdef SCANNER_ORDER NSString* pricename; NSDictionary *addressDic = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanAddress"]; NSString* servername = [addressDic objectForKey:@"show_name"]; NSArray* arrsn = [RAConvertor string2arr:servername separator:@","]; NSString * shortname = arrsn[0]; if(shortname.length==0) shortname = servername; switch(RASingleton.sharedInstance.price_type ) { case 0: pricename =@"DDP";//[NSString stringWithFormat:@"%@_DDP",shortname]; break;; case 1: pricename = @"WHSE";//[NSString stringWithFormat:@"%@_WHSE",shortname];; break;; // case 2: pricename = @"25%"; // break; } [self.btnPrice setTitle:pricename forState:UIControlStateNormal]; // self.cartIndicatorBar = [self setupCartIndicatorBar]; [self.cartIndicatorBar removeFromSuperview]; self.cartIndicatorBar = [self setupCartIndicatorBar]; [self.view addSubview:self.cartIndicatorBar]; #endif long count =self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue]; for(int i=0;i }]; } //- (IBAction)onSelectAll:(UIButton *)sender { // // // NSMutableArray* arr_ids = [[NSMutableArray alloc] init]; // // // // // // // if([self.btnselect.titleLabel.text isEqualToString:@"Select all"]) // { // // long count = self.content_arr.count;// [[self.content_data valueForKey:@"count"] intValue]; // for(int i=0;i0) { return 146; } else return 120; } //- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section //{ // return 0; //} //- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section //{ // return 0; //} //- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section //{ // UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.0001)]; // return myView; // //} //- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section //{ // UIView* myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 0.0001)]; //// myView.backgroundColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7]; //// UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 90, 22)]; //// titleLabel.textColor=[UIColor whiteColor]; //// titleLabel.backgroundColor = [UIColor clearColor]; //// if(section==0) //// titleLabel.text=NSLocalizedString(@"display_items", nil); //// else //// titleLabel.text=NSLocalizedString(@"hide_items", nil); //// [titleLabel sizeToFit]; //// [myView addSubview:titleLabel]; //// // return myView; //} // //- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { // if(section==0) // return nil; // else // return @"detail section"; //} - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { if (self.back_order_flag) { return [[self.cart_json objectForKey:@"section_count"] integerValue]; } else { return 1; } } - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { #ifdef SCANNER_ORDER return 0; #endif if (self.back_order_flag) { return 50; } else { return 0; } } - (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { #ifdef SCANNER_ORDER return nil; #endif if (self.back_order_flag) { // UIView *header = [tableView dequeueReusableCellWithIdentifier:@"section_header_cell"]; // UILabel *title_lb = [header viewWithTag:8520]; UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(tableView.bounds), 50.0f)]; header.backgroundColor = [UIColor colorWithRed:128 / 255.0 green:95 / 255.0 blue:54 / 255.0 alpha:1]; header.autoresizingMask = UIViewAutoresizingFlexibleWidth; UILabel *title_lb = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, CGRectGetWidth(header.bounds) - 10, 50.0f)]; title_lb.autoresizingMask = UIViewAutoresizingFlexibleWidth; title_lb.font = [UIFont systemFontOfSize:25.0f]; title_lb.textColor = [UIColor whiteColor]; [header addSubview:title_lb]; title_lb.text = [self titleForSection:section]; return header; } else { return nil; } } #ifdef SCANNER_ORDER - (IBAction)onScanChangeCustomerType:(id)sender { return; NSString *orderdir =[OLDataProvider getScanPath]; UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:@"Select Customer type" message:@"" preferredStyle:UIAlertControllerStyleAlert]; //block代码块取代了delegate UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Existing Customer" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) { NSMutableDictionary* dict = nil; dict=[OLDataProvider loadScanTemplate:@"e_order.json"]; NSString *orderPath = [orderdir stringByAppendingPathComponent:@"order.json"]; [RAUtils dicttofile:orderPath dict:dict]; // // NSString *contactpath = [orderdir stringByAppendingPathComponent:@"contact.json"]; // // // // [RAUtils dicttofile:contactpath dict:appDelegate.customerInfo]; // // [self scanPlaceOrder]; // }]; UIAlertAction *alert2 = [UIAlertAction actionWithTitle:@"New customer" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { NSMutableDictionary* dict = nil; dict=[OLDataProvider loadScanTemplate:@"n_order.json"]; NSString *orderPath = [orderdir stringByAppendingPathComponent:@"order.json"]; [RAUtils dicttofile:orderPath dict:dict]; // // // NSString *contactpath = [orderdir stringByAppendingPathComponent:@"contact.json"]; // // // // [RAUtils dicttofile:contactpath dict:appDelegate.customerInfo]; // [self scanPlaceOrder]; }]; UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { DebugLog(@"No"); }]; [alertControl addAction:actionOne]; [alertControl addAction:alert2]; [alertControl addAction:alertthree]; //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField) [self presentViewController:alertControl animated:YES completion:nil]; DebugLog(@"%@",self.edit_select_arr); } #endif - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (self.back_order_flag) { return [self itemCountInSection:section]; } else { // NSDictionary * item_json = [self.content_data objectForKey:@"items"]; long count =self.content_arr.count;//[[self.content_data valueForKey:@"count"] intValue]; return count; } } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // if(tableView==self.itemListTable) // { // AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; NSString *CellIdentifier; #ifdef SCANNER_ORDER CellIdentifier = @"ScanCartItemCell"; ScanCartItemCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; NSDictionary * item_json = nil;//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; item_json = [self itemJsonAtIndexPath:indexPath]; NSString* notes = [item_json valueForKey:@"note"]; if(notes.length>0) { cell.labelNotes.text = notes; } else { cell.labelNotes.text = nil; } NSString* description =[item_json valueForKey:@"description"]; NSString* model =[item_json valueForKey:@"model"]; NSString* dimension =[item_json valueForKey:@"dimension"] ; int count =[[item_json valueForKey:@"count"] intValue]; int stockUom =[[item_json valueForKey:@"stockUom"] intValue]; double unitprice=[[item_json valueForKey:@"unit_price"] doubleValue]; double discount=[[item_json valueForKey:@"discount"] doubleValue]; cell.discount = discount; switch(RASingleton.sharedInstance.price_type) { case 0: cell.btnScanDiscount.hidden = true; break;; case 1: { if(![item_json[@"special_price"] boolValue]&&![item_json[@"net_price"] boolValue]) cell.btnScanDiscount.hidden = false; else cell.btnScanDiscount.hidden = true; } break;; // case 2: pricename = @"25%"; // break; } NSString* product_id = [item_json valueForKey:@"product_id"]; CGRect frame = cell.frame; cell.labelMpack.text =[NSString stringWithFormat:@"Sold in QTY of:%d", stockUom]; __weak typeof(self) weakSelf = self; cell.onReturnQTY=^(int qty,NSDictionary* ext) { int result = [[ext objectForKey:@"result"] intValue]; BOOL refresh = [[ext objectForKey:@"refresh"] boolValue]; if (result == 2 && refresh) { [self ReloadData]; return; } NSMutableDictionary * item_json = nil; if (weakSelf.back_order_flag) { item_json = [[weakSelf itemJsonAtIndexPath:indexPath] mutableCopy]; } else { item_json = [weakSelf.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; } // int count=[[item_json valueForKey:@"count"] intValue]; // if(count==qty) // return; if ([[ext valueForKey:@"result"] integerValue] == 8) { return ; } [item_json setValue:[NSString stringWithFormat:@"%d",qty] forKey:@"count"]; double unit_cuft = [[item_json valueForKey:@"unit_cuft"] doubleValue]; [item_json setValue:[NSString stringWithFormat:@"%f",unit_cuft*qty] forKey:@"cuft"]; // [item_json setValue:[ext valueForKey:@"carton"] forKey:@"carton"]; // [item_json setValue:[ext valueForKey:@"weight"] forKey:@"weight"]; double unit_price = [[item_json valueForKey:@"unit_price"] doubleValue]; // double sub_total=[[item_json valueForKey:@"subtotal_price"] doubleValue]; [item_json setValue:[NSString stringWithFormat:@"%f",unit_price*qty*(1-discount/100.0)] forKey:@"subtotal_price"]; if (weakSelf.back_order_flag) { [weakSelf updateItemJson:item_json atIndexPath:indexPath]; } else { weakSelf.content_arr[indexPath.row]= item_json; } // [self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; [weakSelf refresh_total]; #ifdef RA_NOTIFICATION [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA]; #else AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false]; #endif }; // cell.delegate=self; // cell.from=indexPath; if([item_json[@"net_price"] boolValue]||[item_json[@"special_price"] boolValue]||discount>0) { cell.labelUnitPrice.textColor= [UIColor redColor]; if([item_json[@"special_price"] boolValue]||discount>0) { cell.labelOldPrice.hidden = false; // if([item_json[@"special_price"] boolValue]) // { cell.labelOldPrice.text=[RAConvertor currencyNumber:[item_json[@"price1"] doubleValue]];//[NSString stringWithFormat:@"%.2f",[item_json[@"price1"] doubleValue]]; // } // else // { // } } else cell.labelOldPrice.hidden = true; } else { cell.labelUnitPrice.textColor= [UIColor blackColor]; cell.labelOldPrice.hidden = true; } // if(discount>0) // { // cell.labelNotes.text = [NSString stringWithFormat:@"Note: discount %d%% off.",(int)discount]; // cell.labelOldPrice.hidden = false; //// cell.labelOldPrice.textColor = [UIColor redColor]; // cell.labelUnitPrice.textColor= [UIColor redColor]; // cell.labelOldPrice.text=[item_json[@"unit_price"] stringValue]; // frame.size.height = 120; // } // else // { // // // cell.labelOldPrice.hidden = true; // cell.labelNotes.text = nil; // frame.size.height = 94; // } cell.unit_price = unitprice; // cell.labelAttribute.text = attribute; // cell.labelCurrency.text = currency; NSString* subtotal = [RAConvertor currencyNumber:unitprice*count*(1-discount/100)];//[NSString stringWithFormat:@"%.2f",unitprice*count*(1-discount/100)]; NSString* newunitprice = [RAConvertor currencyNumber:unitprice*(1-discount/100)];//[NSString stringWithFormat:@"%.2f",unitprice*(1-discount/100)]; cell.labelModel.text = model; cell.labelDescription.text = [NSString stringWithFormat:@"%@\n%@",description,dimension]; // if(noprice&&unitprice==0.0) // { // cell.labelPrice.text = @"No Price"; // // cell.labelUnitPrice.text = @"No Price"; // } // else { cell.labelSubtotal.text = subtotal; cell.labelUnitPrice.text = newunitprice; } bool check = [[item_json valueForKey:@"check"] boolValue]; NSString* cart_item_id= [item_json valueForKey:@"cart_item_id"]; cell.cart_id = cart_item_id; if(/*appDelegate.user_type==USER_ROLE_CUSTOMER*/ true) [cell init_Stepper:stockUom max:9999 min:stockUom value:count]; // else // [cell init_Stepper:1 max:9999 min:1 value:count]; [cell set_Count:count]; // Button 设置了大小约束,Size就不会随内容变化 cell.backgroundColor = [UIColor whiteColor]; return cell; #else AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; CellIdentifier = @"CartItemCell"; ModelItemCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; NSDictionary * item_json = nil;//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; if (self.back_order_flag) { item_json = [self itemJsonAtIndexPath:indexPath]; } else { item_json = self.content_arr[indexPath.row]; } NSDictionary * combine_json =[item_json objectForKey:@"combine"]; NSDictionary * master_json = [item_json objectForKey:@"combine_master"]; if (cell.masterBtn != nil) { if (master_json == nil) { cell.masterBtn.hidden = YES; } else{ cell.masterBtn.hidden = NO; cell.master_items = master_json; } } bool isfree = [[item_json valueForKey:@"is_free"]boolValue]; NSString* notes = [item_json valueForKey:@"note"]; BOOL is_out_of_stock = [[item_json valueForKey:@"is_out_of_stock"] boolValue]; bool noprice =[[item_json valueForKey:@"is_no_price"]boolValue]; cell.noprice = noprice; cell.enable_longpress = true; cell.bundle_item=combine_json; NSString* img_url = [item_json valueForKey:@"img_url"]; NSString* description = [item_json valueForKey:@"description"]; // NSString* identifier = [item_json valueForKey:@"identifier"]; // NSString* attribute = [item_json valueForKey:@"attribute"]; // NSString* currency = [item_json valueForKey:@"currency"]; int count =[[item_json valueForKey:@"count"] intValue]; int stockUom =[[item_json valueForKey:@"stockUom"] intValue]; // double totalprice =[[item_json valueForKey:@"subtotal_price"] doubleValue]; double unitprice=[[item_json valueForKey:@"unit_price"] doubleValue]; double discount =[[item_json valueForKey:@"discount"] doubleValue]; NSString* product_id = [item_json valueForKey:@"product_id"]; // handle no such model if(product_id.length==0) cell.labelNoSuchModel.hidden=false; else cell.labelNoSuchModel.hidden=true; //if (appDelegate.user_type == USER_ROLE_CUSTOMER) { if (!is_out_of_stock) { cell.labelOutOfStock.hidden = YES; } else { cell.labelOutOfStock.hidden = NO; } // } else { // cell.labelOutOfStock.hidden = YES; // } // discount = 5.0; cell.discount = discount; CGRect frame = cell.frame; if(notes.length>0) { cell.labelNotes.text = [@"Note: " stringByAppendingString:[notes stringByReplacingOccurrencesOfString:@"\n" withString:@" "]]; frame.size.height = 146; } else { cell.labelNotes.text = nil; frame.size.height = 120; } // cell.frame = frame; NSString* discountstr=[NSString stringWithFormat:@"%@%% off", [RAUtils FloatFormat:discount]]; if(isfree) { cell.labelOldPrice.hidden = false; cell.labelOldPrice.textColor = [UIColor redColor]; cell.labelOldPrice.text=@"Free"; cell.labelOldPrice.hideline = true; cell.labelDiscount.hidden = true; } else { cell.labelOldPrice.textColor = [UIColor blackColor]; cell.labelOldPrice.hideline = false; if(discount==0) { cell.labelOldPrice.hidden = true; cell.labelDiscount.hidden = true; } else { cell.labelOldPrice.hidden = false; cell.labelDiscount.hidden = false; } } __weak typeof(self) weakSelf = self; cell.onReturnQTY=^(int qty,NSDictionary* ext) { int result = [[ext objectForKey:@"result"] intValue]; BOOL refresh = [[ext objectForKey:@"refresh"] boolValue]; if (result == 2 && refresh) { [self ReloadData]; return; } NSMutableDictionary * item_json = nil; if (weakSelf.back_order_flag) { item_json = [[weakSelf itemJsonAtIndexPath:indexPath] mutableCopy]; } else { item_json = [weakSelf.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; } // int count=[[item_json valueForKey:@"count"] intValue]; // if(count==qty) // return; if ([[ext valueForKey:@"result"] integerValue] == 8) { return ; } [item_json setValue:[NSString stringWithFormat:@"%d",qty] forKey:@"count"]; [item_json setValue:[ext valueForKey:@"cuft"] forKey:@"cuft"]; [item_json setValue:[ext valueForKey:@"carton"] forKey:@"carton"]; [item_json setValue:[ext valueForKey:@"weight"] forKey:@"weight"]; double unit_price = [[item_json valueForKey:@"unit_price"] doubleValue]; // double sub_total=[[item_json valueForKey:@"subtotal_price"] doubleValue]; [item_json setValue:[NSString stringWithFormat:@"%f",unit_price*qty] forKey:@"subtotal_price"]; if (weakSelf.back_order_flag) { [weakSelf updateItemJson:item_json atIndexPath:indexPath]; } else { weakSelf.content_arr[indexPath.row]= item_json; } // [self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; [weakSelf refresh_total]; #ifdef RA_NOTIFICATION [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA]; #else AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false]; #endif }; // cell.delegate=self; // cell.from=indexPath; cell.unit_price = unitprice; // cell.labelAttribute.text = attribute; // cell.labelCurrency.text = currency; NSString* oldprice =[NSString stringWithFormat:@"%.2f",unitprice]; NSString* newprice = [NSString stringWithFormat:@"%.2f",unitprice* (1.0-discount/100)*count]; NSString* newunitprice = [NSString stringWithFormat:@"%.2f",unitprice* (1.0-discount/100)]; if(appDelegate.can_see_price&&appDelegate.price_hidden==false) { } else { oldprice=nil; newprice=nil; newunitprice=nil; } cell.labelDiscount.text = discountstr; cell.labelOldPrice.text = oldprice; cell.labelMasterpack.text =[NSString stringWithFormat:@"Sold in QTY of:%d", stockUom]; cell.labelDescription.text = description; // cell.labelIdentifier.text = identifier; if(noprice&&unitprice==0.0) { cell.labelPrice.text = @"No Price"; cell.labelUnitPrice.text = @"No Price"; } else { cell.labelPrice.text = newprice; cell.labelUnitPrice.text = newunitprice; } bool check = [[item_json valueForKey:@"check"] boolValue]; if(check) { cell.img_checkmark.hidden=false; // [item_json setValue:@"0" forKey:@"check"]; } else { // [item_json setValue:@"1" forKey:@"check"]; cell.img_checkmark.hidden=true; } NSString* cart_item_id= [item_json valueForKey:@"cart_item_id"]; cell.cart_id = cart_item_id; if(/*appDelegate.user_type==USER_ROLE_CUSTOMER*/ true) [cell init_Stepper:stockUom max:9999 min:stockUom value:count]; // else // [cell init_Stepper:1 max:9999 min:1 value:count]; [cell set_Count:count]; // Button 设置了大小约束,Size就不会随内容变化 [cell.btnImage setContentMode:UIViewContentModeScaleAspectFit]; [cell.btnImage setContentEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; [cell.btnImage setContentHorizontalAlignment:UIControlContentHorizontalAlignmentFill]; [cell.btnImage setContentVerticalAlignment:UIControlContentVerticalAlignmentFill]; cell.btnImage.imageView.contentMode = UIViewContentModeScaleAspectFit; if (![cell.imageName isEqualToString:img_url]) { cell.imageName = img_url; // [cell.btnImage setBackgroundImage:[UIImage imageNamed:@"loading_s"] forState:UIControlStateNormal]; [cell.btnImage setImage:[UIImage imageNamed:@"loading_s"] forState:UIControlStateNormal]; NSString* file_name=[img_url lastPathComponent]; NSData* img_data=[iSalesDB load_cached_img:file_name loadFrom:img_url]; if(img_data!=nil) { UIImage * img =[UIImage imageWithData:img_data]; // [cell.btnImage setBackgroundImage:img forState:UIControlStateNormal]; [cell.btnImage setImage:img forState:UIControlStateNormal]; } else { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData* downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:img_url]]; dispatch_async(dispatch_get_main_queue(), ^{ if(downloadimg_data!=nil) { [iSalesDB cache_img:downloadimg_data filename:file_name saveTo:img_url]; UIImage * img =[UIImage imageWithData:downloadimg_data]; // [cell.btnImage setBackgroundImage:img forState:UIControlStateNormal]; [cell.btnImage setImage:img forState:UIControlStateNormal]; } else { // [cell.btnImage setBackgroundImage:[UIImage imageNamed:@"notfound_s"] forState:UIControlStateNormal]; [cell.btnImage setImage:[UIImage imageNamed:@"notfound_s"] forState:UIControlStateNormal]; } }); }); } } cell.backgroundColor = [UIColor whiteColor]; if(self.itemListTable.editing) { cell.editCount.enabled = false; cell.stepper.hidden=true; } else { cell.editCount.enabled=true; cell.stepper.hidden=false; } return cell; // } // else // { // NSString *CellIdentifier = @"OrderInfoListItem"; // UITableViewCell * cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; // return cell; // } #endif } -(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { if(!self.itemListTable.editing) return; // NSMutableDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; NSMutableDictionary * item_json = nil; if (self.back_order_flag) { item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy]; } else { item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; } NSString *cart_item_id=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]]; if ([self.edit_select_arr containsObject:cart_item_id]) { [self.edit_select_arr removeObject:cart_item_id]; } } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { #ifdef SCANNER_ORDER return; #endif NSMutableDictionary * item_json = nil; if (self.back_order_flag) { item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy]; } else { item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; } // NSMutableDictionary * item_json =[self.content_arr[indexPath.row] mutableCopy];// [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; if(self.itemListTable.editing) { NSString *cart_item_id=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]]; if (![self.edit_select_arr containsObject:cart_item_id]) { [self.edit_select_arr addObject:cart_item_id]; } return; } // no checkmark support anymore for cart return; // ModelItemCell* cell = (ModelItemCell*)[tableView cellForRowAtIndexPath:indexPath]; // // // cell.selected = false; // // self.dirty = true; // // // bool check = [[item_json valueForKey:@"check"] boolValue]; // if(check) // { // [item_json setValue:@"false" forKey:@"check"]; // cell.img_checkmark.hidden=true; // [self.btnselect setTitle: @"Select all" forState: UIControlStateNormal]; // // double totalprice =[[item_json valueForKey:@"subtotal_price"] doubleValue]; // // self.total-=totalprice; // } // else // { // [item_json setValue:@"true" forKey:@"check"]; // cell.img_checkmark.hidden=false; // // double totalprice =[[item_json valueForKey:@"subtotal_price"] doubleValue]; // // self.total+=totalprice; // } // // // dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // // // NSString *ids=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]]; // // NSDictionary* check_json = [iSalesNetwork cart_check:ids]; // // dispatch_async(dispatch_get_main_queue(), ^{ // // // // if([[check_json valueForKey:@"result"] intValue]==2) // { // // // if([item_json[@"check"] boolValue]==false) // item_json[@"check"]= @"false"; // else // item_json[@"check"]= @"true"; // // self.content_arr[indexPath.row] = item_json; // //[self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; // // // [self reload_container_getdata:false]; // // // } // else // { // [RAUtils message_alert:[check_json valueForKey:@"err_msg"] title:nil controller:self] ; // } // // // // }); // }); // // //debug // //[self.content_data setObject:item_json forKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; // // [self refresh_total]; //self.labelTotal.text=[NSString stringWithFormat:@"$%.2f",self.total]; } - (UITableViewCellEditingStyle)tableView:(UITableView *)tv editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { if(self.itemListTable.editing) return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert; else return UITableViewCellEditingStyleDelete; } #pragma mark 在滑动手势删除某一行的时候,显示出更多的按钮 - (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath { AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; // 添加一个删除按钮 self.indexPath=indexPath; NSMutableDictionary * item_json = nil; if (self.back_order_flag) { item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy]; } else { item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; } NSString* productID = [item_json valueForKey:@"product_id"]; BOOL outOfStock = [[item_json valueForKey:@"is_out_of_stock"] boolValue]; __weak typeof(self) weakself = self; UITableViewRowAction *deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@" Delete " handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { DebugLog(@"delete click"); //[self.itemListTable setEditing:false animated:YES]; UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Delete confirm" message:@"Are you sure remove model from cart?" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *action_2 = [UIAlertAction actionWithTitle:@"YES" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { // [self.itemListTable reloadRowsAtIndexPaths:@[self.indexPath]withRowAnimation:UITableViewRowAnimationMiddle]; NSMutableDictionary * item_json = nil; if (self.back_order_flag) { item_json = [[self itemJsonAtIndexPath:self.indexPath] mutableCopy]; } else { item_json = [self.content_arr[self.indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; } NSString *ids=[NSString stringWithFormat:@"%@",[item_json valueForKey:@"cart_item_id"] ]; __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Remove Model" completion:^{ [RANetwork request_remove_cart:ids completionHandler:^(NSMutableDictionary *result) { NSMutableDictionary* cart_json = result; [waitalert dismissViewControllerAnimated:YES completion:^{ if([[cart_json valueForKey:@"result"] intValue]==2) { // AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; if (self.back_order_flag) { NSInteger section_count = [self sectionCount]; for (int i = 0; i < section_count; i++) { NSInteger item_count = [self itemCountInSection:i]; BOOL ready_break = NO; for (int j = 0; j < item_count; j++) { NSIndexPath *indexPath = [NSIndexPath indexPathForRow:j inSection:i]; NSDictionary* obj_json = [self itemJsonAtIndexPath:indexPath]; NSString* _id =[obj_json valueForKey:@"cart_item_id"]; if([_id isEqualToString:ids]) { [self updateItemJson:nil atIndexPath:indexPath]; ready_break = YES; break; } } if (ready_break) { break; } } } else { for(int i=0;i }]; // [self.itemListTable setEditing:false animated:YES]; //[tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle]; }]; editRowAction.backgroundColor = UIColorFromRGB(0xff9933); // // 添加一个更多按钮 // // UITableViewRowAction *moreRowAction = [UITableView RowActionrowActionWithStyle:UITableViewRowActionStyleNormal title:@"更多" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { // // DebugLog(@点击了更多); // // // [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle]; // // }]; // // moreRowAction.backgroundEffect = [UIBlurEffecteffectWithStyle:UIBlurEffectStyleDark]; // // 将设置好的按钮放到数组中返回 // UITableViewRowAction *freeRowAction = nil; // // // NSDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; // // bool isfree = [[item_json valueForKey:@"is_free"]boolValue]; // // if(!isfree) // { // // freeRowAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Set Free" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { // // DebugLog(@"free click"); // // // // UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Free give away confirm", nil) message:NSLocalizedString(@"Are you sure make this model free?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil]; // alert.tag = ALERT_SET_FREE; // // alert. // [alert show]; // }]; // } // else // { // // freeRowAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Not Free" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { // // UIAlertView * alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Restore free model confirm", nil) message:NSLocalizedString(@"Are you sure restore free model?", nil) delegate:self cancelButtonTitle:NSLocalizedString(@"NO", nil) otherButtonTitles:NSLocalizedString(@"YES", nil), nil]; // alert.tag = ALERT_RESTORE_FREE; // // alert. // [alert show]; // }]; // } // // // // freeRowAction.backgroundColor = [UIColor lightGrayColor]; UITableViewRowAction *noteRowAction = nil; // NSDictionary * item_json = [self.content_arr[indexPath.row] mutableCopy];//[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]]; noteRowAction=[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Edit note" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) { DebugLog(@"item note click"); UIViewController* parentvc=self; ItemNotesViewController * vc =[[UIStoryboard storyboardWithName:@"ERP_Mobile_Cart" bundle:nil] instantiateViewControllerWithIdentifier:@"ItemNotesViewController"]; NSMutableDictionary * item_json = nil; if (self.back_order_flag) { item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy]; } else { item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; } vc.onSaveNote=^(NSString* notes){ [item_json setValue:notes forKey:@"note"]; if (self.back_order_flag) { [self updateItemJson:item_json atIndexPath:indexPath]; } else { self.content_arr[indexPath.row ] = item_json; } tableView.editing = false; [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle]; }; vc.notes=[item_json valueForKey:@"note"]; vc.cart_id = [item_json valueForKey:@"cart_item_id"];//[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]]; // vc.delegate = parentvc.self; // loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种 // vc.onSetValue = ^(){ // [self reload_data];//[main_vc checklogin:true]; // }; // UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ; // [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi]; navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种 [parentvc presentViewController:navi animated:YES completion:^{ // navi.view.superview.bounds = CGRectMake(0, 0, 480, 320); DebugLog(@"EditModelPriceViewController present........."); // self.btop = false; // <#code#> }]; // [self.itemListTable setEditing:false animated:YES]; // [tableView reloadRowsAtIndexPaths:@[indexPath]withRowAnimation:UITableViewRowAnimationMiddle]; }]; noteRowAction.backgroundColor = [UIColor lightGrayColor]; UITableViewRowAction *move2BackAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Move to Back Order" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) { NSDictionary *item_json = [self itemJsonAtIndexPath:indexPath]; NSString* cart_item_id = [item_json valueForKey:@"cart_item_id"]; __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Move To Back Order" completion:^{ [RANetwork request_movetobackorder:cart_item_id completionHandler:^(NSMutableDictionary *result) { NSMutableDictionary* return_json =result ; [waitalert dismissViewControllerAnimated:YES completion:^{ if([[return_json valueForKey:@"result"] intValue]==2) { [self reload_data]; } // if 2 else { [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Move To Back Order" controller:self] ; } }]; }]; }]; // dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // // NSDictionary* return_json = [RANetwork movetobackorder:cart_item_id]; // // dispatch_async(dispatch_get_main_queue(), ^{ // // [waitalert dismissViewControllerAnimated:YES completion:nil]; // // if([[return_json valueForKey:@"result"] intValue]==2) { // // [self reload_data]; // // } // if 2 // else { // [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Move To Back Order" controller:self] ; // } // // }); // main // // }); // global }]; move2BackAction.backgroundColor = UIColorFromRGB(0x336699); if(appDelegate.user_type==USER_ROLE_EMPLOYEE) { NSMutableDictionary * item_json = nil; if (self.back_order_flag) { item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy]; } else { item_json = [self.content_arr[indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; } NSString* product_id = [item_json valueForKey:@"product_id"]; int is_rate = [item_json[@"is_rate"] intValue]; NSMutableArray* arr=[@[] mutableCopy]; BOOL condition = outOfStock; #if defined(BUILD_NPD) || defined(BUILD_USAI) || defined(BUILD_UWAVER)|| defined (BUILD_CONTRAST) #ifdef OFFLINE_MODE condition = !appDelegate.offline_mode && outOfStock; #endif if (condition) { [arr addObject:notifyMeAction]; } NSDictionary *section_json = [self jsonAtSection:indexPath.section]; BOOL available = [[section_json objectForKey:@"available"] boolValue]; // available list if (self.back_order_flag && available) { [arr addObject:move2BackAction]; } #endif #if defined(BUILD_HOMER) || defined(BUILD_GATIT) #ifdef OFFLINE_MODE condition = !appDelegate.offline_mode && outOfStock; #endif if (condition) { [arr addObject:notifyMeAction]; } #endif if(product_id.length>0) [arr addObject:noteRowAction]; [arr addObject:deleteRowAction]; #ifndef SCANNER_ORDER if(product_id.length>0&& is_rate==0) [arr addObject:addWatchAction]; if(appDelegate.can_set_cart_price && product_id.length>0&& is_rate==0) { [arr addObject:editRowAction]; // [arr addObject:freeRowAction]; } #endif return arr; // return @[deleteRowAction,addWatchAction, editRowAction,freeRowAction]; } else if (appDelegate.user_type == USER_ROLE_CUSTOMER) { if (appDelegate.customer_type == CustomerTypeStore) { #ifndef SCANNER_ORDER return @[notifyMeAction,deleteRowAction,addWatchAction,editRowAction]; #else return @[deleteRowAction]; #endif } else { // normal // NSArray *actionArray = @[notifyMeAction,deleteRowAction,addWatchAction]; NSMutableArray *actionArray = [NSMutableArray array]; // move to backorder NSDictionary *section_json = [self jsonAtSection:indexPath.section]; BOOL available = [[section_json objectForKey:@"available"] boolValue]; // available list if (self.back_order_flag && available) { // actionArray = @[move2BackAction,notifyMeAction,deleteRowAction,addWatchAction]; [actionArray addObject:move2BackAction]; } [actionArray addObjectsFromArray:@[notifyMeAction,deleteRowAction,addWatchAction]]; // edit price NSMutableDictionary * item_json = nil; if (self.back_order_flag) { item_json = [[self itemJsonAtIndexPath:indexPath] mutableCopy]; } else { item_json = [self.content_arr[indexPath.row] mutableCopy]; } NSString* product_id = [item_json valueForKey:@"product_id"]; int is_rate = [item_json[@"is_rate"] intValue]; if(appDelegate.can_set_cart_price && product_id.length>0&& is_rate==0) { // actionArray = @[move2BackAction,notifyMeAction,deleteRowAction,addWatchAction,editRowAction]; [actionArray addObject:editRowAction]; } return actionArray; } } else #ifndef SCANNER_ORDER return @[deleteRowAction,addWatchAction]; #else return @[deleteRowAction]; #endif } - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { // NSMutableDictionary * item_json = [[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; // // NSString *ids=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]]; // // // dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // // NSDictionary* cart_json = [iSalesNetwork cart_remove:ids]; // // dispatch_async(dispatch_get_main_queue(), ^{ // // // // if(cart_json!=nil) // { // // [self reload_data]; // } // // }); // }); // sqlite3* db = [ApexMobileDB get_db]; // NSString* sql = [NSString stringWithFormat:@"delete from history where _id=%@",[self.data.pagedata[indexPath.row] valueForKey:@"_id"]]; // [ApexMobileDB execSql:sql db:db]; // [iSalesDB close_db:db]; // // [self.data.pagedata removeObjectAtIndex:indexPath.row]; // // [tableView reloadData]; } //#pragma mark - UIAlertViewDelegate //// Called when a button is clicked. The view will be automatically dismissed after this call returns //- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex //{ // // if(alertView.tag==ALERT_DEL) // { // if(buttonIndex!=alertView.cancelButtonIndex) // { // // [self.itemListTable reloadRowsAtIndexPaths:@[self.indexPath]withRowAnimation:UITableViewRowAnimationMiddle]; // NSMutableDictionary * item_json = nil; // if (self.back_order_flag) { // item_json = [[self itemJsonAtIndexPath:self.indexPath] mutableCopy]; // } else { // item_json = [self.content_arr[self.indexPath.row] mutableCopy];//[[self.content_data objectForKey:[NSString stringWithFormat:@"item_%ld",(long)indexPath.row]] mutableCopy]; // // } // // NSString *ids=[NSString stringWithFormat:@"%d",[[item_json valueForKey:@"cart_item_id"] intValue]]; // [RANetwork request_remove_cart:ids completionHandler:^(NSMutableDictionary *result) { // NSMutableDictionary* cart_json = result; // // // // // if([[cart_json valueForKey:@"result"] intValue]==2) // { // // AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; // if (self.back_order_flag) { // // NSInteger section_count = [self sectionCount]; // for (int i = 0; i < section_count; i++) { // NSInteger item_count = [self itemCountInSection:i]; // BOOL ready_break = NO; // // for (int j = 0; j < item_count; j++) { // NSIndexPath *indexPath = [NSIndexPath indexPathForRow:j inSection:i]; // NSDictionary* obj_json = [self itemJsonAtIndexPath:indexPath]; // NSString* _id =[obj_json valueForKey:@"cart_item_id"]; // if([_id isEqualToString:ids]) // { // [self updateItemJson:nil atIndexPath:indexPath]; // ready_break = YES; // break; // } // } // // if (ready_break) { // break; // } // } // // } else { // for(int i=0;i0) { UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:[NSString stringWithFormat:@"QTY: %d of this model already in cart. Continue ?",cqty] message:nil preferredStyle:UIAlertControllerStyleAlert]; //block代码块取代了delegate UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) { [self addtocart:value]; }]; UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { DebugLog(@"No"); }]; [alertControl addAction:actionOne]; [alertControl addAction:alertthree]; //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField) [self presentViewController:alertControl animated:YES completion:nil]; } else [self addtocart:value]; } -(void) addtocart:(NSString*) modelname { [RANetwork request_addto_cart_byname:modelname withScreen:ScreenCodeCart completionHandler:^(NSMutableDictionary *result) { NSDictionary* return_json =result; if([[return_json valueForKey:@"result"] intValue]==2) { NSDictionary* newitem = [return_json objectForKey:@"item_0"]; NSString* item_id = [newitem valueForKey:@"cart_item_id"]; // bool isnew=false; // // [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false]; if (self.back_order_flag) { NSInteger section_count = [self sectionCount]; for (int i = 0; i < section_count; i++) { NSInteger item_count = [self itemCountInSection:i]; BOOL ready_break = NO; for (int j = 0; j < item_count; j++) { NSIndexPath *indexPath = [NSIndexPath indexPathForRow:j inSection:i]; NSDictionary* obj_json = [self itemJsonAtIndexPath:indexPath]; NSString* _id =[obj_json valueForKey:@"cart_item_id"]; if([_id isEqualToString:item_id]) { [self updateItemJson:nil atIndexPath:indexPath]; ready_break = YES; break; } } if (ready_break) { break; } } } else { for(int i=0;i)coordinator { [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; [coordinator animateAlongsideTransition:^(id _Nonnull context) { // what ever you want to prepare } completion:^(id _Nonnull context) { // self.sortItemController.view.frame = self.view.bounds; self.sortItemController.view.frame = self.view.bounds; self.toolpanel.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.toolpanel.bounds].CGPath; // [self.itemListTable reloadData]; self.cartIndicatorBar.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.cartIndicatorBar.bounds].CGPath; [self layoutCartIndicatorBar]; }]; } -(BOOL) shouldAutorotate { return YES; } //- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // return YES; //} //- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { // self.sortItemController.view.frame = self.view.bounds; // self.toolpanel.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.toolpanel.bounds].CGPath; // //// [self.itemListTable reloadData]; // // self.cartIndicatorBar.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.cartIndicatorBar.bounds].CGPath; // [self layoutCartIndicatorBar]; //} #pragma mark - notification action - (void)priceTypeChanged:(id)notification { [self reload_data]; #ifdef RA_NOTIFICATION [ActiveViewController Notify:@"OrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA]; #else AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; [((MainViewController*)appDelegate.main_vc) reloadOrder:true immediately:false]; #endif } #pragma mark - button action - (IBAction)emailButtonClick:(UIButton *)sender { if (![self isOrderAvailable]) { return; } AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; JKMessageBoxController *emailAddrVC = [JKMessageBoxController messageBoxControllerWithTip:@"Please enter email address"]; emailAddrVC.textFiled.secureTextEntry = NO; emailAddrVC.yesButtonTitle = @"send"; __weak typeof(emailAddrVC) weakVC = emailAddrVC; __weak typeof(self) weakself = self; emailAddrVC.textHandler = ^(NSString *text){ // 验证邮箱格式是否正确 // NSString *match = EMAIL_MATCHES; // NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",match]; // BOOL isEmailAddr = [predicate evaluateWithObject:text]; BOOL isEmailAddr = YES; if (isEmailAddr) { // 验证是邮件地址,发送邮件 [weakVC dismissViewControllerAnimated:YES completion:^{ __block UIAlertController *waitting_alert = [RAUtils waiting_alert:self title:@"Sending Email" completion:^{ [RANetwork request_qouteorder:appDelegate.order_code emailAddr:text completionHandler:^(NSMutableDictionary *result) { DebugLog(@"email cart result: %@",result); [waitting_alert dismissViewControllerAnimated:YES completion:^{ // [waitting_alert dismissWithClickedButtonIndex:0 animated:YES]; if ([[result objectForKey:@"result"] integerValue] != RESULT_TRUE) { UIAlertController *errorAlertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:[NSString stringWithFormat:@"The email send to %@ failed",text] preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *action = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }]; [errorAlertVC addAction:action]; [weakself presentViewController:errorAlertVC animated:YES completion:nil]; }else { [RAUtils message_alert:@"Send Email Success" title:@"Message" controller:weakself]; } }]; }]; }]; // dispatch_async(dispatch_get_global_queue(0, 0), ^{ // // NSDictionary *result = [RANetwork quoteOrder:appDelegate.order_code emailAddr:text]; // DebugLog(@"email cart result: %@",result); // dispatch_async(dispatch_get_main_queue(), ^{ // // [waitting_alert dismissWithClickedButtonIndex:0 animated:YES]; // // if ([[result objectForKey:@"result"] integerValue] != RESULT_TRUE) { // // UIAlertController *errorAlertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:[NSString stringWithFormat:@"The email send to %@ failed",text] preferredStyle:UIAlertControllerStyleAlert]; // UIAlertAction *action = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { // // }]; // // [errorAlertVC addAction:action]; // [weakself presentViewController:errorAlertVC animated:YES completion:nil]; // // }else { // // [RAUtils message_alert:@"Send Email Success" title:@"Message" controller:weakself]; // // } // // }); // // }); }]; } else { // 非邮件地址,警告 [weakVC warning:@"Please enter right email address"]; } }; [self presentViewController:emailAddrVC animated:YES completion:nil]; } - (IBAction)printCartButtonClick:(UIButton *)sender { if (![self isOrderAvailable]) { return; } RAPDFViewController *ViewController = [[UIStoryboard storyboardWithName:@"wkweb" bundle:nil] instantiateViewControllerWithIdentifier:@"RAPDFViewController"]; ViewController.url = self.print_url; ViewController.canSave = false; ViewController.isLocalfile=NO; NSString* subject; subject =@"Cart Print"; AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; NSString* customer_email= [appDelegate.customerInfo valueForKey:@"customer_email"]; NSMutableArray* send_to = [[NSMutableArray alloc]init]; if(customer_email.length>0) { send_to=[[customer_email componentsSeparatedByString:NSLocalizedString(@";", nil)] mutableCopy]; } ViewController.mail_to = send_to; ViewController.filename = [NSString stringWithFormat:@"%@_Product_List.pdf",COMPANY_SHORT_NAME]; ViewController.mail_subject = subject; ViewController.hidenavi = false; [self.navigationController pushViewController:ViewController animated:YES]; } - (void)showAddressBoxToEmailProduct:(NSString *)productID { // AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; JKMessageBoxController *emailAddrVC = [JKMessageBoxController messageBoxControllerWithTip:@"E-mail not setup, please enter your default e-mail address" ContentSize:CGSizeMake(400, 150)]; emailAddrVC.textFiled.secureTextEntry = NO; emailAddrVC.yesButtonTitle = @"send"; __weak typeof(emailAddrVC) weakVC = emailAddrVC; __weak typeof(self) weakself = self; emailAddrVC.textHandler = ^(NSString *text){ // 验证邮箱格式是否正确 // NSString *match = EMAIL_MATCHES; // NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",match]; // BOOL isEmailAddr = [predicate evaluateWithObject:text]; BOOL isEmailAddr = YES; if (isEmailAddr) { // 验证是邮件地址,发送邮件 [weakVC dismissViewControllerAnimated:YES completion:^{ __block UIAlertController *waitting_alert = [RAUtils waiting_alert:self title:@"Sending Email" completion:^{ [RANetwork request_notifymodel:productID emailAddr:text withScreen:ScreenCodeCart completionHandler:^(NSMutableDictionary *result) { // [waitting_alert dismissWithClickedButtonIndex:0 animated:NO]; [waitting_alert dismissViewControllerAnimated:YES completion:^{ int resultStatus = [[result objectForKey:@"result"] intValue]; if (resultStatus != RESULT_TRUE && resultStatus != RESULT_NO_EMAIL_ADDRESS) { NSString *msg = [NSString stringWithFormat:@"The email send failed"]; if ([result valueForKey:@"err_msg"]) { msg = [result valueForKey:@"err_msg"]; } UIAlertController *errorAlertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:msg preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *action = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }]; [errorAlertVC addAction:action]; [weakself presentViewController:errorAlertVC animated:YES completion:nil]; }else if(resultStatus == RESULT_TRUE){ [RAUtils message_alert:@"Notification is sent to default email address." title:@"Message" controller:weakself]; } else if (resultStatus == RESULT_NO_EMAIL_ADDRESS) { [weakself showAddressBoxToEmailProduct:productID]; } }]; }]; }]; // dispatch_async(dispatch_get_global_queue(0, 0), ^{ // // NSDictionary *result = [RANetwork notifyModel:productID emailAddr:text withScreen:ScreenCodeCart]; // // dispatch_async(dispatch_get_main_queue(), ^{ // // [waitting_alert dismissWithClickedButtonIndex:0 animated:NO]; // // int resultStatus = [[result objectForKey:@"result"] intValue]; // if (resultStatus != RESULT_TRUE && resultStatus != RESULT_NO_EMAIL_ADDRESS) { // // NSString *msg = [NSString stringWithFormat:@"The email send failed"]; // if ([result valueForKey:@"err_msg"]) { // msg = [result valueForKey:@"err_msg"]; // } // // // UIAlertController *errorAlertVC = [UIAlertController alertControllerWithTitle:@"Warning" message:msg preferredStyle:UIAlertControllerStyleAlert]; // UIAlertAction *action = [UIAlertAction actionWithTitle:@"ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { // // }]; // // [errorAlertVC addAction:action]; // [weakself presentViewController:errorAlertVC animated:YES completion:nil]; // // }else if(resultStatus == RESULT_TRUE){ // // [RAUtils message_alert:@"Notification is sent to default email address." title:@"Message" controller:weakself]; // // } else if (resultStatus == RESULT_NO_EMAIL_ADDRESS) { // // [weakself showAddressBoxToEmailProduct:productID]; // // } // // }); // // }); }]; } else { // 非邮件地址,警告 [weakVC warning:@"Please enter right email address"]; } }; [self presentViewController:emailAddrVC animated:YES completion:nil]; } #pragma mark - Back Order - (void) setCart_json:(NSDictionary *)cart_json { _cart_json = cart_json; [self fillContentArray]; } - (void)fillContentArray { NSMutableArray *arr = [NSMutableArray array]; for (int i = 0; i < [self sectionCount]; i++) { NSInteger item_count = [self itemCountInSection:i]; for (int j = 0; j < item_count; j++) { NSDictionary *item = [self itemJsonAtIndexPath:[NSIndexPath indexPathForRow:j inSection:i]]; [arr addObject:item]; } } self.content_arr = arr; [self refresh_total]; } - (NSInteger)sectionCount { return [[self.cart_json objectForKey:@"section_count"] integerValue]; } - (NSDictionary *)jsonAtSection:(NSInteger)section { return [self.cart_json objectForKey:[NSString stringWithFormat:@"section_%ld",section]]; } - (NSInteger)itemCountInSection:(NSInteger)section { NSDictionary *section_json = [self jsonAtSection:section]; return [[section_json objectForKey:@"count"] integerValue]; } - (NSString *)titleForSection:(NSInteger)section { NSDictionary *section_json = [self jsonAtSection:section]; return [section_json objectForKey:@"title"]; } - (NSDictionary *)itemJsonAtIndexPath:(NSIndexPath *)indexPath { NSDictionary *section = [self jsonAtSection:indexPath.section]; return [section objectForKey:[NSString stringWithFormat:@"item_%ld",indexPath.row]]; } - (void)updateItemJson:(NSDictionary *)new_item_json atIndexPath:(NSIndexPath *)indexPath { NSMutableDictionary *new_cart_json = [self.cart_json mutableCopy]; NSMutableDictionary *new_section_json = [[self jsonAtSection:indexPath.section] mutableCopy]; NSString *section_key = [NSString stringWithFormat:@"section_%ld",indexPath.section]; NSString *item_key = [NSString stringWithFormat:@"item_%ld",indexPath.row]; if (new_item_json) { // 更新Item [new_section_json setObject:new_item_json forKey:item_key]; } else { // 删除Item NSInteger item_count = [self itemCountInSection:indexPath.section]; for (NSInteger i = 0; i < item_count; i++) { if (i >= indexPath.row) { if (i < item_count - 1) { item_key = [NSString stringWithFormat:@"item_%ld",i + 1]; NSDictionary *followed_item_json = [new_section_json objectForKey:item_key]; item_key = [NSString stringWithFormat:@"item_%ld",i]; [new_section_json setObject:followed_item_json forKey:item_key]; } else { item_key = [NSString stringWithFormat:@"item_%ld",i]; [new_section_json removeObjectForKey:item_key]; } } } [new_section_json setObject:@(item_count - 1) forKey:@"count"]; } [new_cart_json setObject:new_section_json forKey:section_key]; self.cart_json = [new_cart_json copy]; } - (void)reRefreshView { [self.itemListTable reloadData]; } #pragma mark - RA_NOTIFICAITON -(void) refresh_ui { [self.itemListTable reloadData]; [self refresh_total]; } -(void) refresh_price { [self refresh_ui]; } - (void) reload_data { __weak typeof(self) weakself = self; self.currentOrderIsMerged = NO; NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ if (weakself) { __strong typeof(weakself) strongself = weakself; [strongself operation_reload_data]; } }]; [self.dataOperationQueue addOperation:operation]; } @end