Przeglądaj źródła

1.修复Category和Model Detail图片未加载。
2.修改Homer,新建Model Detail Header。

Pen Li 8 lat temu
rodzic
commit
eb6a420338

+ 86 - 0
RedAnt ERP Mobile/iSales-HOMER/HomerModelDetailHeaderCell.h

@@ -0,0 +1,86 @@
+//
+//  HomerModelDetailHeaderCell.h
+//  iSales-HOMER
+//
+//  Created by Jack on 2017/10/25.
+//  Copyright © 2017年 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "DetailHeaderCell.h"
+#import "PhotoStackView.h"
+#import "RTLabel.h"
+#import "NotificationNameCenter.h"
+#import "YTPlayerView.h"
+
+
+
+@interface HomerModelDetailHeaderCell : UITableViewCell<PhotoStackViewDataSource, PhotoStackViewDelegate,UIAlertViewDelegate,UITextFieldDelegate>
+{
+@private
+    id <DetailHeaderCellDelegate>  __weak celldelegate;
+}
+
+@property (weak, nonatomic) id <DetailHeaderCellDelegate> celldelegate;
+
+@property int cqty;
+@property int step;
+@property int quantity;
+@property (nonatomic, strong) NSArray *photos;
+@property (nonatomic, strong) NSDictionary *stack_contents;
+@property (nonatomic, strong) NSArray *urls;
+@property (nonatomic, strong) NSString *product_id;
+
+// Outlet View
+@property (strong, nonatomic) IBOutlet PhotoStackView *photoStack;
+@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
+@property (strong, nonatomic) IBOutlet RTLabel *descriptionRTLabel;
+@property (strong, nonatomic) IBOutlet UILabel *priceLabel;
+@property (strong, nonatomic) IBOutlet UILabel *count_Label;
+@property (strong, nonatomic) IBOutlet UILabel *incomingcount_Label;
+@property (strong, nonatomic) IBOutlet UIStepper *stepper;
+@property (strong, nonatomic) IBOutlet UITextField *quantity_text;
+@property (strong, nonatomic) IBOutlet UIButton *btnaddCart;
+@property (strong, nonatomic) IBOutlet UIButton *btnaddWish;
+@property (strong, nonatomic) IBOutlet UIButton *btnaddPortfolio;
+@property (strong, nonatomic) IBOutlet UIButton *btnNotifyMe;
+@property (strong, nonatomic) IBOutlet UILabel *eta_label;
+@property (strong, nonatomic) IBOutlet UILabel *incoming_stock_label;
+@property (strong, nonatomic) IBOutlet UILabel *etaval_label;
+@property (strong, nonatomic) IBOutlet UILabel *model_label;
+@property (strong, nonatomic) IBOutlet UILabel *cqyt_label;
+@property (strong, nonatomic) IBOutlet UIButton *introduceBtn;
+@property (strong, nonatomic) IBOutlet UIButton *descriptionBtn;
+@property (weak, nonatomic) IBOutlet YTPlayerView *playerView;
+@property (weak, nonatomic) IBOutlet UILabel *hmlg_stock_lb;
+@property (weak, nonatomic) IBOutlet UILabel *hmlg_stock_count_lb;
+@property (weak, nonatomic) IBOutlet UILabel *on_sale_lb;
+
+// nil view
+@property (nonatomic,strong) UIImageView *selector_imageView;
+@property (nonatomic,strong) UILabel *selector_nameLabel;
+@property (nonatomic,strong) UILabel *selector_valLabel;
+@property (nonatomic,strong) UILabel *selector_label;
+@property (nonatomic,strong) UILabel *property_nameLabel;
+@property (nonatomic,strong) UILabel *property_valLabel;
+@property (nonatomic,strong) UIButton *selector_Button;
+
+// block
+@property (nonatomic,copy)  void(^notifyMeBlock)(void);
+@property (nonatomic,copy)  void(^shopCartBlock)(UIImageView *imageView);
+@property (nonatomic,copy)  void(^set_cqty)(int cqty);
+@property (nonatomic,copy)  void(^set_update_data)(bool bupdate);
+@property (nonatomic,copy)  void(^WatchlistBlock)(UIImageView *imageView);
+@property (nonatomic,copy)  void(^PortfolioBlock)(UIImageView *imageView);
+@property (nonatomic,copy)  void(^introduceBlock)(UIButton *sender);
+@property (nonatomic,copy)  void(^descriptionBlock)(UIButton *sender);
+
+- (void)setup;
+- (void)AddPhoto :(UIImage*)photo ;
+- (void)Hide_selector:(bool) bhide;
+- (void)ClearPhotos;
+
+
+
+
+@end

+ 1244 - 0
RedAnt ERP Mobile/iSales-HOMER/HomerModelDetailHeaderCell.m

@@ -0,0 +1,1244 @@
+//
+//  HomerModelDetailHeaderCell.m
+//  iSales-HOMER
+//
+//  Created by Jack on 2017/10/25.
+//  Copyright © 2017年 United Software Applications, Inc. All rights reserved.
+//
+
+#import "HomerModelDetailHeaderCell.h"
+#import "RANetwork.h"
+#import "MainViewController.h"
+#import "LoginViewController.h"
+#import "ContactListViewController.h"
+#import "RAUtils.h"
+#import "OrderListViewController.h"
+
+
+#import "ImageScrollerViewController.h"
+#import "CartUtils.h"
+#import "CustomIOSAlertView.h"
+#import "TextUtils.h"
+
+#import "ContentPreviewController.h"
+
+
+@implementation HomerModelDetailHeaderCell
+@synthesize celldelegate;
+
+- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
+{
+    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
+    if (self) {
+        // Initialization code
+    }
+
+    return self;
+}
+
+- (void)awakeFromNib
+{
+
+    [super awakeFromNib];
+    
+    self.quantity_text.delegate = self;
+    
+//    self.selector_Button.layer.borderWidth = 0.5;
+//    self.selector_Button.layer.borderColor = [[UIColor lightGrayColor] CGColor];
+//    self.selector_Button.layer.cornerRadius = 0;
+    
+    
+    [self.descriptionRTLabel setLineBreakMode: RTTextLineBreakModeWordWrapping];
+    [self.descriptionRTLabel setTextAlignment:RTTextAlignmentCenter];
+    [self.descriptionRTLabel setFont:[UIFont systemFontOfSize:22]];
+
+    [self addObserver:self
+           forKeyPath:@"stack_contents"
+              options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld)
+              context:@"content changed"];
+    
+    
+}
+
+-(void) dealloc
+{
+    [self removeObserver:self forKeyPath:@"stack_contents"];
+}
+
+- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
+{
+    
+    if([keyPath isEqualToString:@"stack_contents"])
+    {
+        [self.playerView stopVideo];
+        
+        self.playerView.hidden=true;
+        
+    }
+    
+}
+- (IBAction)add_toPortfolio:(id)sender {
+    
+    UIApplication * app = [UIApplication sharedApplication];
+    AppDelegate *appDelegate = (AppDelegate *)[app delegate];
+    
+    if (appDelegate.user && appDelegate.user_type == USER_ROLE_CUSTOMER) {
+        [[NSNotificationCenter defaultCenter] postNotificationName:No_Rights_Notification object:nil];
+        return;
+    }
+    
+    
+    MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
+    if(appDelegate.bLogin==false)
+    {
+        UIViewController *vc= [RAUtils getViewController:self];
+        LoginViewController * loginvc =[ vc.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
+
+        
+        loginvc.returnValue = ^(bool blogin){
+            
+
+            
+            if(blogin)
+            {
+                
+                if(self.set_update_data)
+                    self.set_update_data(true);
+                
+                [main_vc checklogin:true];
+                
+                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                    
+                    NSDictionary* return_json = [RANetwork add_toPortfolio:self.product_id withScreen:ScreenCodeModelInfo];
+                    
+                    dispatch_async(dispatch_get_main_queue(), ^{
+                        
+                        if([[return_json valueForKey:@"result"] intValue]==2)
+                        {
+                            
+                            [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
+                            if(self.WatchlistBlock!=nil)
+                            {
+                                UIImage* img=[self photoStackView:self.photoStack photoForIndex:0];
+                                
+                                
+                                CGRect iv_rect = CGRectMake(self.btnaddPortfolio.center.x-50, self.btnaddPortfolio.center.y-50, 100, 100);
+                                UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect];
+                                iv.image = img;
+                                self.PortfolioBlock(iv);
+                                
+                            }
+                        }
+                        else
+                        {
+                            [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Add to portfolio" controller:vc] ;
+                        }
+                        
+                        
+                        
+                    });
+                });
+                
+                
+            }
+
+            
+        };
+        
+        UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:loginvc] ;
+        
+
+        navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
+        [vc presentViewController:navi animated:YES completion:^{
+            
+        }];
+    }
+    else
+    {
+        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+            
+            NSDictionary* return_json = [RANetwork add_toPortfolio:self.product_id withScreen:ScreenCodeModelInfo];
+            
+            dispatch_async(dispatch_get_main_queue(), ^{
+                
+                if([[return_json valueForKey:@"result"] intValue]==2)
+                {
+                    [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
+                    if(self.WatchlistBlock!=nil)
+                    {
+                        UIImage* img=[self photoStackView:self.photoStack photoForIndex:0];
+
+                        CGRect iv_rect = CGRectMake(self.btnaddPortfolio.center.x-50, self.btnaddPortfolio.center.y-50, 100, 100);
+                        UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect];
+                        iv.image = img;
+
+                        self.PortfolioBlock(iv);
+                        
+                    }
+                }
+                else
+                {
+                    UIViewController *vc= [RAUtils getViewController:self];
+                    [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Add to portfolio" controller:vc] ;
+                }
+                
+                
+                
+            });
+        });
+    }
+}
+
+- (IBAction)add_toWatchList:(id)sender {
+    
+    UIApplication * app = [UIApplication sharedApplication];
+    AppDelegate *appDelegate = (AppDelegate *)[app delegate];
+    MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
+    if(appDelegate.bLogin==false)
+    {
+        UIViewController *vc= [RAUtils getViewController:self];
+        LoginViewController * loginvc =[ vc.storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];
+
+        
+        loginvc.returnValue = ^(bool blogin){
+            
+            if(blogin)
+            {
+                
+                if(self.set_update_data)
+                    self.set_update_data(true);
+                
+                [main_vc checklogin:true];
+                
+                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                    
+                    NSDictionary* return_json = [RANetwork add_toWatchList:self.product_id withScreen:ScreenCodeModelInfo];
+                    
+                    dispatch_async(dispatch_get_main_queue(), ^{
+                        
+                        if([[return_json valueForKey:@"result"] intValue]==2)
+                        {
+                            
+                            [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
+                            if(self.WatchlistBlock!=nil)
+                            {
+                                UIImage* img=[self photoStackView:self.photoStack photoForIndex:0];
+                                
+                                
+                                CGRect iv_rect = CGRectMake(self.btnaddWish.center.x-50, self.btnaddWish.center.y-50, 100, 100);
+                                UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect];
+                                iv.image = img;
+                                self.WatchlistBlock(iv);
+                                
+                            }
+                        }
+                        else
+                        {
+                            [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Add Wish List" controller:vc] ;
+                        }
+                        
+                        
+                        
+                    });
+                });
+                
+                
+            }
+        
+            
+        };
+        
+        UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:loginvc] ;
+        
+        
+        
+        
+        
+        
+        navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
+        [vc presentViewController:navi animated:YES completion:^{
+            
+        }];
+    }
+    else
+    {
+        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+            
+            NSDictionary* return_json = [RANetwork add_toWatchList:self.product_id withScreen:ScreenCodeModelInfo];
+            
+            dispatch_async(dispatch_get_main_queue(), ^{
+                
+                if([[return_json valueForKey:@"result"] intValue]==2)
+                {
+                    [((MainViewController*)appDelegate.main_vc) reloadWish:true immediately:false];
+                    if(self.WatchlistBlock!=nil)
+                    {
+                        UIImage* img=[self photoStackView:self.photoStack photoForIndex:0];
+                        
+                        
+                        CGRect iv_rect = CGRectMake(self.btnaddWish.center.x-50, self.btnaddWish.center.y-50, 100, 100);
+                        UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect];
+                        iv.image = img;
+                        self.WatchlistBlock(iv);
+                        
+                    }
+                }
+                else
+                {
+                    UIViewController *vc= [RAUtils getViewController:self];
+                    [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Add Wish List" controller:vc] ;
+                }
+                
+                
+                
+            });
+        });
+    }
+}
+
+- (IBAction)add_toCart:(id)sender {
+    
+    UIViewController *vc= [RAUtils getViewController:self];
+    [CartUtils add_to_cart:vc selectorholder:self selector:@selector(addtocart)];
+    return;
+
+}
+-(void) addtocart
+{
+    int count=[self.quantity_text.text intValue];
+    
+#ifdef MPACK
+    
+    if (count % self.step != 0) {
+        UIViewController *vc= [RAUtils getViewController:self];
+        [RAUtils message_alert:[NSString stringWithFormat:@"Sold in quantities of %d",(int)(self.stepper.stepValue)] title:@"Add to cart" controller:vc];
+        return;
+    }
+    
+#endif
+    
+    int c=[self.count_Label.text intValue];
+    DebugLog(@"count label : %@ , convert:%d", self.count_Label.text ,c);
+    
+    NSString* ct=[self.count_Label.text stringByReplacingOccurrencesOfString:@"\n" withString:@""];
+    
+    
+    
+    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
+    if(/*c<count*/!appDelegate.can_create_backorder && c == 0)
+    {
+        
+        NSString *msg = nil;
+        BOOL continueAdd = YES;
+        // #ifdef BUILD_NPD
+        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+        if (appDelegate.user_type == USER_ROLE_CUSTOMER) {
+            
+            if ([Singleton sharedInstance].currentOrderIsMerged) { // Purchase Order不允许购买数量大于库存
+                msg = [NSString stringWithFormat:@"Item is OUT OF STOCK and not available to order from %@.",COMPANY_SHORT_NAME];
+                continueAdd = NO;
+            } else { // Shop Order购买数量大于库存需要确认
+                msg = [NSString stringWithFormat:@"Item is OUT OF STOCK and not available to order from %@.\nAdd to cart anyway?",COMPANY_SHORT_NAME];
+                continueAdd = YES;
+            }
+        }
+        
+        if (appDelegate.user_type == USER_ROLE_EMPLOYEE) { // Employee不允许购买数量大于库存
+            msg = @"Item is OUT OF STOCK and not available to order.";
+            continueAdd = NO;
+        }
+        
+        // #endif
+        
+        
+        UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:[NSString stringWithFormat:@"Availability %@",ct ] message:msg preferredStyle:UIAlertControllerStyleAlert];
+        
+        UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+            if (continueAdd) {
+                [self addtocart:count];
+            }
+        }];
+        
+        
+        [alertControl addAction:alertthree];
+        
+        
+        UIAlertAction *alertcancel = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+        }];
+        if (continueAdd) {
+            [alertControl addAction:alertcancel];
+        }
+        
+        UIViewController *vc= [RAUtils getViewController:self];
+        
+        
+        [vc presentViewController:alertControl animated:YES completion:nil];
+    }
+    else
+    {
+        [self addtocart:count];
+    }
+    
+    
+    
+    
+}
+-(void)Hide_selector:(bool) bhide
+{
+//    self.selector_Button.hidden=bhide;
+//    self.selector_dorpdown.hidden=bhide;
+//    self.selector_imageView.hidden=bhide;
+//
+}
+-(void) addtocart:(int) count
+{
+    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+    
+    if(self.cqty>0)
+    {
+        
+        
+        UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:[NSString stringWithFormat:@"QTY: %d of this model already in cart. Continue ?",self.cqty] message:nil preferredStyle:UIAlertControllerStyleAlert];
+        //block代码块取代了delegate
+        
+        
+        
+        UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+            
+            int c=self.cqty+count;
+            
+            int m=c%self.step;
+            if(m!=0&&appDelegate.alert_sold_in_quantities)
+            {
+                
+                
+                
+                UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:[NSString stringWithFormat:@"Sold in quantities of %d, Are you sure?",self.step] message:nil preferredStyle:UIAlertControllerStyleAlert];
+                //block代码块取代了delegate
+                
+                
+                
+                UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+                    
+                    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                        
+                        NSDictionary* return_json = [RANetwork add_toCart:self.product_id count:count name:self.model_label.text];
+                        
+                        dispatch_async(dispatch_get_main_queue(), ^{
+                            
+                            
+                            
+                            if([[return_json valueForKey:@"result"] intValue]==2)
+                            {
+                                
+                                //    NSString* order_code = [return_json valueForKey:@"order_code"];
+                                AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+                                [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false];
+                                
+                                
+                                if(self.shopCartBlock!=nil)
+                                {
+                                    UIImage* img=[self photoStackView:self.photoStack photoForIndex:0];
+                                    
+                                    
+                                    CGRect iv_rect = CGRectMake(self.btnaddCart.center.x-50, self.btnaddCart.center.y-50, 100, 100);
+                                    UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect];
+                                    iv.image = img;
+                                    //                        [self.contentView addSubview:iv];
+                                    self.shopCartBlock(iv);
+                                    
+                                    self.cqty +=count;
+                                    if(self.set_cqty)
+                                        self.set_cqty(self.cqty);
+                                    
+                                }
+                                
+                                
+                            }
+                            else
+                            {
+                                UIViewController *vc= [RAUtils getViewController:self];
+                                NSString *msg = [return_json valueForKey:@"err_msg"];
+                                NSString *title = @"Add To Cart";
+                                if ([msg hasPrefix:@"Out of Stock.\n"]) {
+                                    title = @"Add To Cart: Out of Stock";
+                                    msg = [msg substringFromIndex:[@"Out of Stock.\n" length]];
+                                    self.btnNotifyMe.enabled = YES;
+                                    self.btnaddCart.enabled = NO;
+                                }
+                                
+                                [RAUtils message_alert:msg title:title controller:vc] ;
+                            }
+                            
+                            
+                            
+                            
+                        });
+                    });
+                    
+                    
+                }];
+                
+                UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+                    DebugLog(@"No");
+                }];
+                [alertControl addAction:actionOne];
+                
+                [alertControl addAction:alertthree];
+                
+                //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+                
+                UIViewController *vc= [RAUtils getViewController:self];
+                [vc presentViewController:alertControl animated:YES completion:nil];
+                
+                
+                
+            }
+            else
+            {
+                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                    
+                    NSDictionary* return_json = [RANetwork add_toCart:self.product_id count:count name:self.model_label.text];
+                    
+                    dispatch_async(dispatch_get_main_queue(), ^{
+                        
+                        
+                        
+                        if([[return_json valueForKey:@"result"] intValue]==2)
+                        {
+                            
+                            //    NSString* order_code = [return_json valueForKey:@"order_code"];
+                            AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+                            [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false];
+                            
+                            
+                            if(self.shopCartBlock!=nil)
+                            {
+                                UIImage* img=[self photoStackView:self.photoStack photoForIndex:0];
+                                
+                                
+                                CGRect iv_rect = CGRectMake(self.btnaddCart.center.x-50, self.btnaddCart.center.y-50, 100, 100);
+                                UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect];
+                                iv.image = img;
+                                //                        [self.contentView addSubview:iv];
+                                self.shopCartBlock(iv);
+                                
+                                self.cqty +=count;
+                                if(self.set_cqty)
+                                    self.set_cqty(self.cqty);
+                                
+                            }
+                            
+                            
+                        }
+                        else
+                        {
+                            UIViewController *vc= [RAUtils getViewController:self];
+                            NSString *msg = [return_json valueForKey:@"err_msg"];
+                            NSString *title = @"Add To Cart";
+                            if ([msg hasPrefix:@"Out of Stock.\n"]) {
+                                title = @"Add To Cart: Out of Stock";
+                                msg = [msg substringFromIndex:[@"Out of Stock.\n" length]];
+                                self.btnNotifyMe.enabled = YES;
+                                self.btnaddCart.enabled = NO;
+                            }
+                            
+                            [RAUtils message_alert:msg title:title controller:vc] ;
+                        }
+                        
+                        
+                        
+                        
+                    });
+                });
+                
+            }
+
+            
+        }];
+        
+        UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+            DebugLog(@"No");
+        }];
+        [alertControl addAction:actionOne];
+        
+        [alertControl addAction:alertthree];
+        
+        //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+        
+        UIViewController *vc= [RAUtils getViewController:self];
+        [vc presentViewController:alertControl animated:YES completion:nil];
+        
+        
+    }
+    else
+    {
+        
+        int c=self.cqty+count;
+        
+        int m=c%self.step;
+        if(m!=0&&appDelegate.alert_sold_in_quantities)
+        {
+            
+            
+            
+            UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:[NSString stringWithFormat:@"Sold in quantities of %d, Are you sure?",self.step] message:nil preferredStyle:UIAlertControllerStyleAlert];
+            //block代码块取代了delegate
+            
+            
+            
+            UIAlertAction *actionOne = [UIAlertAction actionWithTitle:@"Yes" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
+                
+                dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                    
+                    NSDictionary* return_json = [RANetwork add_toCart:self.product_id count:count name:self.model_label.text];
+                    
+                    dispatch_async(dispatch_get_main_queue(), ^{
+                        
+                        
+                        
+                        if([[return_json valueForKey:@"result"] intValue]==2)
+                        {
+                            
+                            //    NSString* order_code = [return_json valueForKey:@"order_code"];
+                            AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+                           
+                            [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false];
+                            
+                            
+                            if(self.shopCartBlock!=nil)
+                            {
+                                UIImage* img=[self photoStackView:self.photoStack photoForIndex:0];
+                                
+                                
+                                CGRect iv_rect = CGRectMake(self.btnaddCart.center.x-50, self.btnaddCart.center.y-50, 100, 100);
+                                UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect];
+                                iv.image = img;
+                                //                        [self.contentView addSubview:iv];
+                                self.shopCartBlock(iv);
+                                
+                                self.cqty +=count;
+                                if(self.set_cqty)
+                                    self.set_cqty(self.cqty);
+                                
+                            }
+                            
+                            
+                        }
+                        else
+                        {
+                            UIViewController *vc= [RAUtils getViewController:self];
+                            NSString *msg = [return_json valueForKey:@"err_msg"];
+                            NSString *title = @"Add To Cart";
+                            if ([msg hasPrefix:@"Out of Stock.\n"]) {
+                                title = @"Add To Cart: Out of Stock";
+                                msg = [msg substringFromIndex:[@"Out of Stock.\n" length]];
+                                self.btnNotifyMe.enabled = YES;
+                                self.btnaddCart.enabled = NO;
+                            }
+                            
+                            [RAUtils message_alert:msg title:title controller:vc] ;
+                        }
+                        
+                        
+                        
+                        
+                    });
+                });
+                
+                
+            }];
+            
+            UIAlertAction *alertthree = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
+                DebugLog(@"No");
+            }];
+            [alertControl addAction:actionOne];
+            
+            [alertControl addAction:alertthree];
+            
+            //UIAlertControllerStyle类型为UIAlertControllerStyleAlert可以添加addTextFieldWithConfigurationHandler:^(UITextField *textField)
+            
+            UIViewController *vc= [RAUtils getViewController:self];
+            [vc presentViewController:alertControl animated:YES completion:nil];
+            
+            
+            
+        }
+        else
+        {
+            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+                
+                NSDictionary* return_json = [RANetwork add_toCart:self.product_id count:count name:self.model_label.text];
+                
+                dispatch_async(dispatch_get_main_queue(), ^{
+                    
+                    
+                    
+                    if([[return_json valueForKey:@"result"] intValue]==2)
+                    {
+                        
+                        //    NSString* order_code = [return_json valueForKey:@"order_code"];
+                        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+
+                        [((MainViewController*)appDelegate.main_vc) reloadCart:true immediately:false];
+                        
+                        
+                        if(self.shopCartBlock!=nil)
+                        {
+                            UIImage* img=[self photoStackView:self.photoStack photoForIndex:0];
+                            
+                            
+                            CGRect iv_rect = CGRectMake(self.btnaddCart.center.x-50, self.btnaddCart.center.y-50, 100, 100);
+                            UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect];
+                            iv.image = img;
+                            //                        [self.contentView addSubview:iv];
+                            self.shopCartBlock(iv);
+                            
+                            self.cqty +=count;
+                            if(self.set_cqty)
+                                self.set_cqty(self.cqty);
+                            
+                        }
+                        
+                        
+                    }
+                    else
+                    {
+                        UIViewController *vc= [RAUtils getViewController:self];
+                        
+                        NSString *msg = [return_json valueForKey:@"err_msg"];
+                        NSString *title = @"Add To Cart";
+                        if ([msg hasPrefix:@"Out of Stock.\n"]) {
+                            title = @"Add To Cart: Out of Stock";
+                            msg = [msg substringFromIndex:[@"Out of Stock.\n" length]];
+                            self.btnNotifyMe.enabled = YES;
+                            self.btnaddCart.enabled = NO;
+                        }
+                        
+                        [RAUtils message_alert:msg title:title controller:vc] ;
+                    }
+                    
+                    
+                    
+                    
+                });
+            });
+            
+        }
+        
+    }
+    
+}
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated
+{
+    [super setSelected:selected animated:animated];
+    
+    // Configure the view for the selected state
+}
+
+- (IBAction)selectorOnClick:(id)sender {
+    DebugLog(@"select click");
+    [celldelegate SelectorClicked:(UIButton*) sender];
+    //         [self performSegueWithIdentifier:@"selector_popover" sender:self];
+    
+}
+#pragma mark -
+#pragma mark Deck DataSource Protocol Methods
+
+-(NSUInteger)numberOfPhotosInPhotoStackView:(PhotoStackView *)photoStack {
+    return [self.photos count];
+}
+
+-(UIImage *)photoStackView:(PhotoStackView *)photoStack photoForIndex:(NSUInteger)index {
+    
+    
+    if(self.photos.count==0)
+        return nil;
+    return [self.photos objectAtIndex:index];
+}
+
+
+
+#pragma mark -
+#pragma mark Deck Delegate Protocol Methods
+
+-(void)photoStackView:(PhotoStackView *)photoStackView willStartMovingPhotoAtIndex:(NSUInteger)index {
+    // User started moving a photo
+}
+
+-(void)photoStackView:(PhotoStackView *)photoStackView willFlickAwayPhotoFromIndex:(NSUInteger)fromIndex toIndex:(NSUInteger)toIndex {
+    // User flicked the photo away, revealing the next one in the stack
+}
+
+-(void)photoStackView:(PhotoStackView *)photoStackView didRevealPhotoAtIndex:(NSUInteger)index {
+    self.pageControl.currentPage = index;
+}
+
+
+- (UIView *)createVideoView:(NSString*) videoID
+{
+    UIView *demoView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 640, 360)];
+    
+    //    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 270, 180)];
+    //    [imageView setImage:[UIImage imageNamed:@"demo"]];
+    
+    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 620, 10)];
+    titleLabel.font = [UIFont boldSystemFontOfSize:20];
+    titleLabel.text=@"a separated player will show here:";
+    titleLabel.numberOfLines = 0;
+    titleLabel.lineBreakMode =NSLineBreakByWordWrapping;
+    //    titleLabel.textAlignment = NSTextAlignmentRight;
+    titleLabel.textAlignment = NSTextAlignmentCenter;
+    CGSize constraintkey = CGSizeMake(620, 20000.0f);//key label width is 40% cell width;
+    CGSize sizetitle = [@"a separated player will show here:" sizeWithFont:[UIFont systemFontOfSize:20.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping];
+    
+    //[titleLabel sizeToFit];
+    //    titleLabel.center.x = demoView.center.x;
+    titleLabel.frame = CGRectMake(10, 10, 620, sizetitle.height);
+    [demoView addSubview:titleLabel];
+    
+    UILabel *lineLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, titleLabel.frame.origin.y+ titleLabel.frame.size.height+20, 610, 10)];
+    lineLabel.font = [UIFont boldSystemFontOfSize:17];
+    lineLabel.text=videoID;
+    lineLabel.numberOfLines = 0;
+    lineLabel.lineBreakMode =NSLineBreakByWordWrapping;
+    
+    CGSize sizemsg = [videoID sizeWithFont:[UIFont boldSystemFontOfSize:17.0] constrainedToSize:constraintkey lineBreakMode:NSLineBreakByWordWrapping];
+    
+    lineLabel.frame = CGRectMake(15, titleLabel.frame.origin.y+ titleLabel.frame.size.height+20, 630, sizemsg.height);
+    //[lineLabel sizeToFit];
+    
+    [demoView addSubview:lineLabel];
+    demoView.frame = CGRectMake(0, 0, 640, lineLabel.frame.origin.y+lineLabel.frame.size.height+25);
+    return demoView;
+}
+
+
+-(void)photoStackView:(PhotoStackView *)photoStackView didSelectPhotoAtIndex:(NSUInteger)index {
+    DebugLog(@"selected %lu", (unsigned long)index);
+    
+    
+    
+    NSDictionary* item= self.stack_contents[[NSString stringWithFormat:@"item_%ld",index]];
+    
+    if([item[@"type"] isEqualToString:@"video"])
+    {
+        
+        NSString* video_code=item[@"code"];
+        
+        
+        
+        //        [TextUtils expression_varable:video regex:<#(NSString *)#>]
+        
+        NSString* video_id=[self.playerView Embed2VID:video_code];
+        
+        NSDictionary *playerVars = @{
+                                     @"playsinline" : @1,
+                                     @"autoplay" : @(1),
+                                     @"rel":@0,
+                                     @"showinfo": @0,
+                                     @"modestbranding":@0,
+                                     @"enablejsapi":@1
+                                     };
+        
+        [self.playerView loadWithVideoId:video_id playerVars:playerVars];
+        for(UIView *v in self.playerView.subviews)
+        {
+            if([v isKindOfClass:[UIButton class] ])
+                [self.playerView bringSubviewToFront:v];
+        }
+        self.playerView.webView.allowsPictureInPictureMediaPlayback=false;
+        self.playerView.hidden=false;
+        
+        return;
+    } else {
+        ContentPreviewController *preVC = [[UIStoryboard storyboardWithName:@"PhotoList" bundle:nil] instantiateViewControllerWithIdentifier:@"ContentPreviewController"];
+        preVC.content = self.stack_contents;
+        //        preVC.currentIndex = index;
+        [preVC setOffset:index];
+        UIViewController *superVC= [RAUtils getViewController:self];
+        [superVC.navigationController pushViewController:preVC animated:true];
+        return;
+    }
+
+    //    }
+    
+    // 调用展示窗口
+    ImageScrollerViewController *imgShow = [[ImageScrollerViewController alloc] initWithSourceData:[self.photos mutableCopy] withIndex:index];
+    
+    UIViewController *vc= [RAUtils getViewController:self];
+    [vc.navigationController pushViewController:imgShow animated:true];
+
+}
+
+-(void) neworder
+{
+    
+    UIAlertView * waitalert = [RAUtils waiting_alert:@"Please wait" title:@"Create Order"];
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+        
+        NSDictionary* return_json = [RANetwork new_Order];
+        
+        dispatch_async(dispatch_get_main_queue(), ^{
+            [waitalert dismissWithClickedButtonIndex:0 animated:FALSE];
+            
+            
+            if([[return_json valueForKey:@"result"] intValue]==2)
+            {
+                int result=[[return_json valueForKey:@"result"] intValue];
+                if(result==2)
+                {
+                    //successed.
+                    
+                    NSString* order_code = [return_json valueForKey:@"orderCode"];
+                    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
+                    appDelegate.order_code = order_code;
+                    
+                    int count=[self.quantity_text.text intValue];
+                    [self addtocart:count];
+                    
+                    
+                    
+                }
+            }
+            else
+            {
+                UIViewController *vc= [RAUtils getViewController:self];
+                NSString *msg = [return_json valueForKey:@"err_msg"];
+                NSString *title = @"Add To Cart";
+                if ([msg hasPrefix:@"Out of Stock.\n"]) {
+                    title = @"Add To Cart: Out of Stock";
+                    msg = [msg substringFromIndex:[@"Out of Stock.\n" length]];
+                    self.btnNotifyMe.enabled = YES;
+                    self.btnaddCart.enabled = NO;
+                }
+                
+                [RAUtils message_alert:msg title:title controller:vc] ;
+            }
+            
+            
+            
+            
+        });
+    });
+}
+#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
+{
+    UIApplication * app = [UIApplication sharedApplication];
+    AppDelegate *appDelegate = (AppDelegate *)[app delegate];
+    if(alertView.tag==1234)//库存小于0
+    {
+        
+        // availability warring;
+        
+        int count=[self.quantity_text.text intValue];
+        if(buttonIndex!=alertView.cancelButtonIndex)
+        {
+            if(appDelegate.order_code==nil)
+            {
+                [self neworder];
+            }
+            else
+            {
+                [self addtocart:count];
+            }
+        }
+        return;
+    }
+    //   int count=[self.quantity_text.text intValue];
+    
+    MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
+    if(buttonIndex==alertView.cancelButtonIndex)
+    {
+        
+        
+        
+    }
+    else if(buttonIndex==1)
+    {
+        //open exist
+        UIViewController *vc= [RAUtils getViewController:self];
+        OrderListViewController* ovc =[ vc.storyboard instantiateViewControllerWithIdentifier:@"OrderListViewController"];
+        ovc.showNavibar = true;
+        ovc.selectOrder = ^(NSMutableDictionary* order_detail){
+            if(appDelegate.order_code==nil)
+            {
+                [self neworder];
+            }
+            else
+            {
+                if(self.set_update_data)
+                    self.set_update_data(true);
+                
+                int model_count = [[order_detail valueForKey:@"model_count"] intValue];
+                for(int i=0;i<model_count;i++)
+                {
+                    NSDictionary* item = [order_detail objectForKey:[NSString stringWithFormat:@"item_%d",i]];
+                    NSString* product_id = [item valueForKey:@"product_id"];
+                    if([product_id isEqualToString:self.product_id])
+                    {
+                        self.cqty = [[item valueForKey:@"QTY"]intValue];
+                        if(self.set_cqty)
+                            self.set_cqty(self.cqty);
+                        break;
+                    }
+                    
+                }
+                int count=[self.quantity_text.text intValue];
+                [self addtocart:count];
+                [main_vc checklogin:true];
+                
+                
+            }
+            
+        };
+        ovc.init_style = OL_OPEN;
+        ovc.onCancel = ^(){
+            
+            [main_vc checklogin:true];
+            
+        };
+        
+        [vc.navigationController pushViewController:ovc animated:true];
+    }
+    else
+    {
+        //create new;
+        if(appDelegate.customerInfo==nil)// select contact if current contact not exist
+        {
+            UIViewController *vc= [RAUtils getViewController:self];
+            
+            ContactListViewController* cvc = [vc.storyboard 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];
+
+            };
+            
+            cvc.onCancel = ^(){
+                
+                UIViewController *vc= [RAUtils getViewController:self];
+                [RAUtils message_alert:@"Cannot create order without cursomer infomation." title:@"New Order" controller:vc];
+                
+            };
+            cvc.onReset = ^(){
+                [main_vc checklogin:true];
+            };
+            
+            [vc.navigationController pushViewController:cvc animated:true];
+        }
+        else
+        {
+            [self neworder];
+        }
+        
+        
+    }
+}
+
+- (void)valueChanged:(UIStepper *)sender {
+    
+    
+    
+    self.quantity_text.text = [NSString stringWithFormat:@"%d",(int)sender.value ];
+    
+    [celldelegate stepClicked:(int)sender.value];
+    
+}
+
+
+#pragma mark -
+#pragma mark Actions
+-(void)ClearPhotos
+{
+    NSMutableArray *photosMutable = [self.photos mutableCopy];
+    [photosMutable removeAllObjects];
+    self.photos = photosMutable;
+    [self.photoStack reloadData];
+    
+    
+    
+}
+- (void)AddPhoto :(UIImage*)photo {
+    
+    NSMutableArray *photosMutable = [self.photos mutableCopy];
+    [photosMutable addObject:photo];
+    self.photos = photosMutable;
+    [self.photoStack reloadData];
+    self.pageControl.numberOfPages = [self.photos count];
+    if(self.photos.count<2-1)//1 for qrcode;
+        self.photoStack.showBorder=false;
+    else
+        self.photoStack.showBorder=true;
+    
+}
+
+
+
+#pragma mark -
+#pragma mark Setup
+-(void)setup {
+    
+    
+    //    int availability = [self.count_Label.text intValue];
+    self.stepper.minimumValue= self.step;
+    self.stepper.maximumValue = INTMAX_MAX;
+    
+    
+    self.stepper.stepValue= self.step;
+    
+    self.stepper.value= self.quantity;
+    
+    
+    
+    [self.stepper addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];
+    
+    if(true)//(self.photos==nil)
+    {
+        
+        self.photos = [NSArray array];
+    }
+    if(true)//(self.photoStack==nil)
+    {
+        
+        self.photoStack.dataSource = self;
+        self.photoStack.delegate = self;
+        
+        
+        //    [self addSubview:self.photoStack];
+        self.pageControl.numberOfPages = [self.photos count];
+    }
+}
+
+- (IBAction)notifyMeButtonClicked:(UIButton *)sender {
+    
+    if (self.notifyMeBlock) {
+        self.notifyMeBlock();
+    }
+    
+}
+
+#pragma mark - TextField Delegate
+
+- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
+    
+    
+    
+    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
+    
+    int buyQTY = [newString intValue];
+
+    
+    self.stepper.value = buyQTY;
+    
+    return YES;
+}
+
+#pragma mark - Private
+/**检查是否缺货*/
+- (void)checkAvailability:(int)availability buyQTY:(int)buyQty cartQTY:(int)cartQty { // availability不可以通过textField.text取得
+    
+    //#ifdef BUILD_NPD
+    AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
+    if (!appDelegate.bLogin  || buyQty < 1) {
+        return;
+    }
+    
+#ifdef OFFLINE_MODE
+    if (appDelegate.offline_mode) {
+        return;
+    }
+#endif
+    
+    
+    if (appDelegate.user_type == USER_ROLE_CUSTOMER) { // customer
+        
+        if (!appDelegate.order_code) { // 未打开订单状态
+            
+            if ((buyQty + cartQty) > availability) {
+                
+                self.btnaddCart.enabled = NO;
+                self.btnNotifyMe.enabled = YES;
+            } else {
+                
+                self.btnaddCart.enabled = YES;
+                self.btnNotifyMe.enabled = NO;
+            }
+            
+        } else {
+            // 打开订单状态
+            if (![Singleton sharedInstance].currentOrderIsMerged) {
+                // Shop Order
+                self.btnaddCart.enabled = YES;
+                // 默认未缺货
+                self.btnNotifyMe.enabled = NO;
+                
+                if ((buyQty + cartQty) > availability) { // 缺货
+                    
+                    self.btnNotifyMe.enabled = YES;
+                }
+                
+                
+            } else {
+                // Purchase Order
+                if ((buyQty + cartQty) > availability) { // 缺货
+                    self.btnaddCart.enabled = NO;
+                    self.btnNotifyMe.enabled = YES;
+                } else { // 未缺货
+                    self.btnNotifyMe.enabled = NO;
+                    self.btnaddCart.enabled = YES;
+                }
+                
+            }
+            
+            
+        }
+        
+    } else { // empoyee
+        
+        if ((buyQty + cartQty) > availability) { // 缺货
+            self.btnaddCart.enabled = NO;
+            self.btnNotifyMe.enabled = YES;
+        } else { // 未缺货
+            self.btnNotifyMe.enabled = NO;
+            self.btnaddCart.enabled = YES;
+        }
+        
+    }
+    //#endif
+    
+}
+
+- (IBAction)introduceBtnClick:(UIButton *)sender {
+    
+    if (self.introduceBlock) {
+        self.introduceBlock(sender);
+    }
+    
+}
+
+
+- (IBAction)descriptionBtnClick:(UIButton *)sender {
+    if (self.descriptionBlock) {
+        self.descriptionBlock(sender);
+    }
+}
+
+- (IBAction)OnClosePlayer:(id)sender {
+    [self.playerView stopVideo];
+    
+    self.playerView.hidden=true;
+}
+
+@end

+ 284 - 0
RedAnt ERP Mobile/iSales-HOMER/HomerModelDetailHeaderCell.xib

@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13196" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina4_7" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13173"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <customFonts key="customFonts">
+        <array key="HelveticaNeue.ttc">
+            <string>HelveticaNeue</string>
+        </array>
+    </customFonts>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="HomerModelDetailHeaderCell" rowHeight="550" id="R7c-XN-Jrq" customClass="HomerModelDetailHeaderCell">
+            <rect key="frame" x="0.0" y="0.0" width="768" height="550"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="R7c-XN-Jrq" id="6Dz-6I-mEC">
+                <rect key="frame" x="0.0" y="0.0" width="768" height="549.5"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="USD 123.45" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Leg-Uo-pHM">
+                        <rect key="frame" x="525" y="104" width="191" height="26"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="21"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <pageControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" numberOfPages="3" translatesAutoresizingMaskIntoConstraints="NO" id="Tgg-P6-WSo">
+                        <rect key="frame" x="50" y="467" width="319" height="37"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                        <color key="pageIndicatorTintColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <color key="currentPageIndicatorTintColor" red="0.33333333329999998" green="0.33333333329999998" blue="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    </pageControl>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Availability" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mgQ-BO-nX9">
+                        <rect key="frame" x="448" y="230" width="181" height="20"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Incoming stock" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5VL-X9-WjJ">
+                        <rect key="frame" x="448" y="261" width="181" height="20"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="count" lineBreakMode="wordWrap" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Fjq-bO-m1H">
+                        <rect key="frame" x="637" y="230" width="115" height="20"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+                        <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
+                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Availability in 7-10 days" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Zx9-0T-NX4">
+                        <rect key="frame" x="448" y="322" width="181" height="20"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="count" lineBreakMode="wordWrap" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="N2k-Q3-MsT">
+                        <rect key="frame" x="637" y="322" width="115" height="20"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+                        <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
+                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="count" lineBreakMode="wordWrap" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2CX-bB-G2v">
+                        <rect key="frame" x="637" y="261" width="115" height="20"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+                        <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="17"/>
+                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <view contentMode="scaleToFill" fixedFrame="YES" restorationIdentifier="PhotoStackView" translatesAutoresizingMaskIntoConstraints="NO" id="c4B-EA-s0u" customClass="PhotoStackView">
+                        <rect key="frame" x="35" y="108" width="349" height="348"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                    </view>
+                    <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="mss-jN-aaG">
+                        <rect key="frame" x="344" y="499" width="40" height="40"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <state key="normal" image="Assembly icon">
+                            <color key="titleColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </state>
+                        <connections>
+                            <action selector="introduceBtnClick:" destination="R7c-XN-Jrq" eventType="touchUpInside" id="nVw-eb-EHS"/>
+                        </connections>
+                    </button>
+                    <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Bkg-jb-XTH">
+                        <rect key="frame" x="35" y="510" width="100" height="30"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <state key="normal" title="Features"/>
+                        <connections>
+                            <action selector="descriptionBtnClick:" destination="R7c-XN-Jrq" eventType="touchUpInside" id="1sT-K5-JKr"/>
+                        </connections>
+                    </button>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Quantity" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NSs-s3-H8z">
+                        <rect key="frame" x="448" y="391" width="66" height="21"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="w7K-vl-wq5" customClass="DefaultImageButton">
+                        <rect key="frame" x="457" y="485" width="124" height="39"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                        <state key="normal" title="Add to portfolio" backgroundImage="btn_addtoportfolio">
+                            <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                            <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </state>
+                        <connections>
+                            <action selector="add_toPortfolio:" destination="R7c-XN-Jrq" eventType="touchUpInside" id="8PS-r7-u0b"/>
+                        </connections>
+                    </button>
+                    <stepper opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minimumValue="1" maximumValue="100" translatesAutoresizingMaskIntoConstraints="NO" id="CCe-eu-ria">
+                        <rect key="frame" x="624" y="386" width="92" height="29"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                    </stepper>
+                    <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="1" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="7U2-88-bEi">
+                        <rect key="frame" x="554" y="386" width="61" height="30"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                        <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
+                    </textField>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Next Arrival Date" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZbP-b2-gc7">
+                        <rect key="frame" x="448" y="292" width="181" height="20"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="e7C-FU-4pu">
+                        <rect key="frame" x="637" y="292" width="115" height="20"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Model QTY in Cart" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YVH-XA-mPg">
+                        <rect key="frame" x="448" y="353" width="264" height="21"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                        <color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sIm-Dr-Yf1">
+                        <rect key="frame" x="116" y="5" width="532" height="29"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                        <fontDescription key="fontDescription" type="boldSystem" pointSize="24"/>
+                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="kfi-ve-qUu" userLabel="Description RTLabel" customClass="RTLabel">
+                        <rect key="frame" x="35" y="40" width="696" height="54"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LJG-iH-9BD">
+                                <rect key="frame" x="-37" y="-44" width="240" height="128"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                            </view>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    </view>
+                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Price:" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oPo-G9-sas">
+                        <rect key="frame" x="448" y="104" width="74" height="26"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="21"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                    <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qlv-Ja-Df8" customClass="DefaultImageButton">
+                        <rect key="frame" x="590" y="485" width="123" height="39"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                        <state key="normal" title="Add to wish list" backgroundImage="btn_addtowish">
+                            <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                            <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </state>
+                        <userDefinedRuntimeAttributes>
+                            <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                <integer key="value" value="15"/>
+                            </userDefinedRuntimeAttribute>
+                        </userDefinedRuntimeAttributes>
+                        <connections>
+                            <action selector="add_toWatchList:" destination="R7c-XN-Jrq" eventType="touchUpInside" id="nXL-1v-xrH"/>
+                        </connections>
+                    </button>
+                    <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="m3d-iT-WN2" customClass="DefaultImageButton">
+                        <rect key="frame" x="590" y="439" width="125" height="39"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="22"/>
+                        <state key="normal" title="Add to cart" backgroundImage="btn_addtocart_large">
+                            <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                            <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </state>
+                        <connections>
+                            <action selector="add_toCart:" destination="R7c-XN-Jrq" eventType="touchUpInside" id="nDE-fC-1VK"/>
+                        </connections>
+                    </button>
+                    <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dcY-Wu-HIu">
+                        <rect key="frame" x="457" y="439" width="124" height="39"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
+                        <state key="normal" image="notifyMe">
+                            <color key="titleColor" red="0.60000002379999995" green="0.40000000600000002" blue="0.20000000300000001" alpha="1" colorSpace="calibratedRGB"/>
+                        </state>
+                        <connections>
+                            <action selector="notifyMeButtonClicked:" destination="R7c-XN-Jrq" eventType="touchUpInside" id="WvG-QY-K9h"/>
+                        </connections>
+                    </button>
+                    <view hidden="YES" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rOn-ih-C46" customClass="YTPlayerView">
+                        <rect key="frame" x="0.0" y="0.0" width="768" height="554"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Video player will show here" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Dlx-wR-QB7">
+                                <rect key="frame" x="146" y="233" width="476" height="83"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="32"/>
+                                <color key="textColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qbj-q2-LbU">
+                                <rect key="frame" x="726" y="15" width="32" height="32"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                                <state key="normal" image="close"/>
+                                <connections>
+                                    <action selector="OnClosePlayer:" destination="R7c-XN-Jrq" eventType="touchUpInside" id="rQM-cU-Tjf"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
+                    </view>
+                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="On Sale" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mvn-Q4-VfR">
+                        <rect key="frame" x="602" y="138" width="114" height="30"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+                        <fontDescription key="fontDescription" type="system" pointSize="24"/>
+                        <color key="textColor" red="1" green="0.1047433005" blue="0.075207091899999995" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <nil key="highlightedColor"/>
+                    </label>
+                </subviews>
+            </tableViewCellContentView>
+            <inset key="separatorInset" minX="15" minY="0.0" maxX="0.0" maxY="0.0"/>
+            <connections>
+                <outlet property="btnNotifyMe" destination="dcY-Wu-HIu" id="v6u-2h-l6B"/>
+                <outlet property="btnaddCart" destination="m3d-iT-WN2" id="bcH-XS-GI8"/>
+                <outlet property="btnaddPortfolio" destination="w7K-vl-wq5" id="8Zb-o1-S6v"/>
+                <outlet property="btnaddWish" destination="qlv-Ja-Df8" id="IOV-Ny-2lL"/>
+                <outlet property="count_Label" destination="Fjq-bO-m1H" id="4Hx-AQ-WLi"/>
+                <outlet property="cqyt_label" destination="YVH-XA-mPg" id="lpE-6Z-FNi"/>
+                <outlet property="descriptionBtn" destination="Bkg-jb-XTH" id="hXp-zh-gfo"/>
+                <outlet property="descriptionRTLabel" destination="kfi-ve-qUu" id="J7p-Gj-Op8"/>
+                <outlet property="eta_label" destination="ZbP-b2-gc7" id="P9u-vj-4kQ"/>
+                <outlet property="etaval_label" destination="e7C-FU-4pu" id="Fzb-tk-hjR"/>
+                <outlet property="hmlg_stock_count_lb" destination="N2k-Q3-MsT" id="Umc-F4-rGy"/>
+                <outlet property="hmlg_stock_lb" destination="Zx9-0T-NX4" id="Xzs-WX-clZ"/>
+                <outlet property="incoming_stock_label" destination="5VL-X9-WjJ" id="z3f-wQ-AxH"/>
+                <outlet property="incomingcount_Label" destination="2CX-bB-G2v" id="4Lc-Mt-VF0"/>
+                <outlet property="introduceBtn" destination="mss-jN-aaG" id="09e-ts-8Ii"/>
+                <outlet property="model_label" destination="sIm-Dr-Yf1" id="CmT-fv-Sh5"/>
+                <outlet property="on_sale_lb" destination="mvn-Q4-VfR" id="daB-z8-yQP"/>
+                <outlet property="pageControl" destination="Tgg-P6-WSo" id="ZCJ-AM-l6o"/>
+                <outlet property="photoStack" destination="c4B-EA-s0u" id="aPD-rQ-TnY"/>
+                <outlet property="playerView" destination="rOn-ih-C46" id="OP6-xB-RhP"/>
+                <outlet property="priceLabel" destination="Leg-Uo-pHM" id="TeK-KW-rGA"/>
+                <outlet property="quantity_text" destination="7U2-88-bEi" id="Zol-4a-R29"/>
+                <outlet property="stepper" destination="CCe-eu-ria" id="XZp-Ci-P5V"/>
+            </connections>
+        </tableViewCell>
+    </objects>
+    <resources>
+        <image name="Assembly icon" width="32" height="32"/>
+        <image name="btn_addtocart_large" width="124" height="39"/>
+        <image name="btn_addtoportfolio" width="124" height="39"/>
+        <image name="btn_addtowish" width="124" height="39"/>
+        <image name="close" width="32" height="32"/>
+        <image name="notifyMe" width="123" height="39"/>
+    </resources>
+</document>