SettlementViewController.m 15.6 KB
Newer Older
1 2 3 4 5 6 7 8 9
//
//  SettlementViewController.m
//  Lighting
//
//  Created by 曹云霄 on 16/5/11.
//  Copyright © 2016年 上海勾芒科技有限公司. All rights reserved.
//

#import "SettlementViewController.h"
10
#import "PayViewController.h"
11 12
#import "PromotionalDeductionModel.h"
#import "PromotionalGoodsModel.h"
13
#import "LuckyDrawModel.h"
勾芒's avatar
勾芒 committed
14

勾芒's avatar
勾芒 committed
15
@interface SettlementViewController ()<ReturnTableviewcellIndexpathdelegate,UITextFieldDelegate>
16

勾芒's avatar
勾芒 committed
17 18 19 20 21 22 23 24 25 26
/**
 *  支付宝二维码
 */
@property (nonatomic,copy) NSString *zhiFubaoLabe;

/**
 *  微信二维码
 */
@property (nonatomic,copy) NSString *weiXinLabe;

27 28 29 30 31
/**
 *  二维码界面
 */
@property (nonatomic,strong) PayViewController *payController;

勾芒's avatar
勾芒 committed
32 33


34 35 36 37
@end

@implementation SettlementViewController

38 39 40 41 42 43 44 45 46 47

#pragma mark -初始化二维码显示
- (PayViewController *)payController
{
    if (!_payController) {
        _payController = [[PayViewController alloc]init];
    }
    return _payController;
}

48 49
- (void)viewDidLoad {
    [super viewDidLoad];
勾芒's avatar
勾芒 committed
50 51
    
    [self uiConfigAction];
勾芒's avatar
勾芒 committed
52 53
    [self setGoodsArray];
    [self getPayQrCode];
54 55 56
}


勾芒's avatar
勾芒 committed
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77


#pragma mark -布局
- (void)uiConfigAction
{
    self.goodsAllNumberBackvie.layer.masksToBounds = YES;
    self.goodsAllNumberBackvie.layer.cornerRadius = kCornerRadius;
    self.goodsAllpriceBackView.layer.masksToBounds = YES;
    self.goodsAllpriceBackView.layer.cornerRadius = kCornerRadius;
    self.payTypeButton.layer.masksToBounds = YES;
    self.payTypeButton.layer.cornerRadius = kCornerRadius;
    self.WeixiPayButton.layer.masksToBounds = YES;
    self.WeixiPayButton.layer.cornerRadius = kCornerRadius;
    self.payTreasureButton.layer.masksToBounds = YES;
    self.payTreasureButton.layer.cornerRadius = kCornerRadius;
    self.ISinvoiceButton.layer.masksToBounds = YES;
    self.ISinvoiceButton.layer.cornerRadius = kCornerRadius;
    self.invoiceType.layer.masksToBounds = YES;
    self.invoiceType.layer.cornerRadius = kCornerRadius;
    self.invoiceBackView.layer.masksToBounds = YES;
    self.invoiceBackView.layer.cornerRadius = kCornerRadius;
勾芒's avatar
勾芒 committed
78 79 80 81
    self.cancelButton.layer.masksToBounds = YES;
    self.cancelButton.layer.cornerRadius = kCornerRadius;
    self.sureButton.layer.masksToBounds = YES;
    self.sureButton.layer.cornerRadius = kCornerRadius;
勾芒's avatar
勾芒 committed
82 83
    self.myScrollView.contentSize = CGSizeMake(0, self.view.frame.size.height);
    self.invoiceHeader.delegate = self;
勾芒's avatar
勾芒 committed
84 85 86 87 88
}



#pragma mark -支付总金额,商品总数量
勾芒's avatar
勾芒 committed
89
- (void)setGoodsArray
勾芒's avatar
勾芒 committed
90 91
{
    NSInteger goodsAllNumber = 0;//总数量
勾芒's avatar
勾芒 committed
92
    CGFloat goodAllprice = 0;//总价格
勾芒's avatar
勾芒 committed
93 94
    for (TOOrderdetailEntity *model in _goodsArray) {
        goodsAllNumber += [model.goodsNum integerValue];
勾芒's avatar
勾芒 committed
95
        goodAllprice += [model.goodsPrice floatValue]*[model.goodsNum integerValue];
勾芒's avatar
勾芒 committed
96
    }
97 98 99 100 101 102 103 104 105 106 107
    //** 促销金额 */
    NSInteger totalNumber = 0;
    for (id object in self.promotionalArray) {
        if ([object isKindOfClass:[PromotionalDeductionModel class]]) {
            PromotionalDeductionModel *model = (PromotionalDeductionModel *)object;
            if (model.isSelected) {
                totalNumber += model.total;
            }
        }
    }
    goodAllprice -= totalNumber;
108 109 110 111
    /// 抽奖结果<打折>
    if ([self.resultModel.type isEqualToString:@"discount"]) {
        goodAllprice = goodAllprice*([self.resultModel.number integerValue]/100.0);
    }
勾芒's avatar
勾芒 committed
112
    self.goodsAllNumber.text = [NSString stringWithFormat:@"%ld",goodsAllNumber];
勾芒's avatar
勾芒 committed
113
    self.goodsAllPrice.text = [NSString stringWithFormat:@"¥%.2f",goodAllprice];
勾芒's avatar
勾芒 committed
114 115 116
}


勾芒's avatar
勾芒 committed
117 118 119
#pragma mark -获取经营者支付二维码
- (void)getPayQrCode
{
120
    WS(weakSelf);
121
    [[NetworkRequestClassManager Manager ] NetworkWithDictionaryRequestWithURL:SERVERREQUESTURL(QRCODE) WithCallClass:weakSelf WithRequestType:1 WithParameter:nil WithReturnValueBlock:^(id returnValue) {
勾芒's avatar
勾芒 committed
122
        
勾芒's avatar
勾芒 committed
123 124 125
        if ([returnValue[@"code"] isEqualToNumber:@0]) {
            
            NSLog(@"获取二维码成功");
126 127
            weakSelf.zhiFubaoLabe = returnValue[@"data"][@"zhifubao"];
            weakSelf.weiXinLabe = returnValue[@"data"][@"weixin"];
勾芒's avatar
勾芒 committed
128 129 130 131
            
        }else
        {
            NSLog(@"获取二维码失败");
132
            [weakSelf ErrorMBProgressView:returnValue[@"message"]];
勾芒's avatar
勾芒 committed
133
        }
勾芒's avatar
勾芒 committed
134 135
        
    } WithErrorCodeBlock:^(id errorCodeValue) {
136 137 138
        [weakSelf ErrorMBProgressView:NETWORK];
    } WithFailureBlock:^(NSError *error) {
        [weakSelf ErrorMBProgressView:error.localizedDescription];
勾芒's avatar
勾芒 committed
139 140
    }];
}
勾芒's avatar
勾芒 committed
141 142


143 144
- (void)viewWillAppear:(BOOL)animated
{
曹云霄's avatar
曹云霄 committed
145
    [super viewWillAppear:animated];
146 147 148 149
    self.view.superview.layer.cornerRadius = 0;
}


勾芒's avatar
勾芒 committed
150 151 152 153 154 155 156 157 158 159
#pragma mark -取消支付
- (IBAction)CancelButtonClick:(UIButton *)sender {
    
    [self dismissViewControllerAnimated:YES completion:nil];
}


#pragma mark -确认支付
- (IBAction)SureButtonClick:(UIButton *)sender {
    
勾芒's avatar
勾芒 committed
160 161 162 163 164 165 166 167 168 169
    if ([self.payTypeButton.currentTitle isEqualToString:@"现金、支票、转账、刷卡"] && !self.payTreasureButton.selected && !self.WeixiPayButton.selected) {
        [self ErrorMBProgressView:@"请选择一种支付方式"];
        
    }else if ([self.invoiceType.currentTitle isEqualToString:@"公司发票"] && self.invoiceHeader.text.length == 0)
    {
        [self ErrorMBProgressView:@"请输入发票抬头"];
    }else
    {
      [self SurePayRequest];
    }
勾芒's avatar
勾芒 committed
170 171 172 173 174
}

#pragma amrk -支付方式选择
- (IBAction)payTypeButtonClick:(UIButton *)sender {
    
勾芒's avatar
勾芒 committed
175
    NSArray *arr = @[@"现金",@"支票",@"转账",@"刷卡"];
勾芒's avatar
勾芒 committed
176 177 178
    [self ShowPopoverViewController:CGSizeMake(100, 200) Withdatas:arr ShowButton:sender SelectedIndex:0 GetTitle:YES];
}

勾芒's avatar
勾芒 committed
179 180 181
#pragma mark -微信支付
- (IBAction)WechatButtonClick:(UIButton *)sender {
    
182
    [self.payController dismissViewControllerAnimated:NO completion:nil];
183 184 185
    if ([self.weiXinLabe isKindOfClass:[NSNull class]]) {
        [self SHOWPrompttext:@"微信支付二维码为空,暂停使用!"];return;
    }
勾芒's avatar
勾芒 committed
186
    self.showPayQrCodeImageView.hidden = NO;
187 188 189 190 191
    sender.selected = NO;
    [self.showPayQrCodeImageView sd_setImageWithURL:[NSURL URLWithString:self.weiXinLabe] placeholderImage:REPLACEIMAGE];
    self.payTreasureButton.selected = NO;
    [self.payTypeButton setTitle:@"现金、支票、转账、刷卡" forState:UIControlStateNormal];
    [self BringPayController:YES withButton:sender];
勾芒's avatar
勾芒 committed
192 193 194 195 196 197
}


#pragma mark -支付宝支付
- (IBAction)ZhifubaoPayButtonClick:(UIButton *)sender {
    
198
    [self.payController dismissViewControllerAnimated:NO completion:nil];
199 200 201
    if ([self.zhiFubaoLabe isKindOfClass:[NSNull class]]) {
        [self SHOWPrompttext:@"支付宝支付二维码为空,暂停使用!"];return;
    }
勾芒's avatar
勾芒 committed
202
    self.showPayQrCodeImageView.hidden = NO;
203 204 205 206 207
    sender.selected = NO;
    [self.showPayQrCodeImageView sd_setImageWithURL:[NSURL URLWithString:self.zhiFubaoLabe] placeholderImage:REPLACEIMAGE];
    self.WeixiPayButton.selected = NO;
    [self.payTypeButton setTitle:@"现金、支票、转账、刷卡" forState:UIControlStateNormal];
    [self BringPayController:NO withButton:sender];
勾芒's avatar
勾芒 committed
208 209 210
}


211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
#pragma mark -调出二维码支付框
- (void)BringPayController:(BOOL)weichat withButton:(UIButton *)sender
{
    
    self.payController.preferredContentSize = CGSizeMake(281, 387);
    self.payController.modalPresentationStyle = UIModalPresentationPopover;
    sender.selected = YES;
    UIPopoverPresentationController *pop = self.payController.popoverPresentationController;
    pop.permittedArrowDirections = UIPopoverArrowDirectionLeft;
    pop.sourceView = self.payController.view;
    pop.sourceRect = [self.view convertRect:CGRectMake(sender.mj_x, sender.mj_y-30, sender.mj_w, sender.mj_h) toView:self.view.window];
    self.payController.dealersName.text = weichat?@"微信支付":@"支付宝支付";
    self.payController.dealersName.textColor = weichat?kTCColor(30, 198, 34):kTCColor(88, 172, 220);
    [self.payController.dealersImageView sd_setImageWithURL:[NSURL URLWithString:weichat?self.weiXinLabe:self.zhiFubaoLabe] placeholderImage:REPLACEIMAGE];
    self.payController.payTypeBackimageView.image = weichat?TCImage(@"weixinpay"):TCImage(@"zhifubaopay");
    [self presentViewController:self.payController animated:NO completion:nil];
}


勾芒's avatar
勾芒 committed
230 231
#pragma mark -是否开票
- (IBAction)isinvoiceButtonClick:(UIButton *)sender {
勾芒's avatar
勾芒 committed
232 233 234
    
    NSArray *arr = @[@"是",@"否"];
    [self ShowPopoverViewController:CGSizeMake(50, 150) Withdatas:arr ShowButton:sender SelectedIndex:1 GetTitle:YES];
勾芒's avatar
勾芒 committed
235 236 237 238 239
}


#pragma mark -发票类型
- (IBAction)invoiceTypeButtonClick:(UIButton *)sender {
勾芒's avatar
勾芒 committed
240
    
勾芒's avatar
勾芒 committed
241 242 243 244
    if ([self.ISinvoiceButton.currentTitle isEqualToString:@"否"]) {
        [self ErrorMBProgressView:@"请选择开票"];
        return;
    }
勾芒's avatar
勾芒 committed
245 246
    NSArray *arr = @[@"个人发票",@"公司发票"];
    [self ShowPopoverViewController:CGSizeMake(100, 150) Withdatas:arr ShowButton:sender SelectedIndex:2 GetTitle:YES];
勾芒's avatar
勾芒 committed
247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276
}


#pragma mark -弹出popover视图控制器
- (void)ShowPopoverViewController:(CGSize)size Withdatas:(NSArray *)datasArray ShowButton:(UIButton *)button SelectedIndex:(NSInteger)index GetTitle:(BOOL )istitle
{
    
    PopoverViewController *popover = [[PopoverViewController alloc]init];
    popover.datasArray = datasArray;
    popover.delegate = self;
    popover.Selectedindex = index;
    popover.isString = YES;
    popover.contentSize = size;
    popover.preferredContentSize = size;
    popover.modalPresentationStyle = UIModalPresentationPopover;
    UIPopoverPresentationController *pop = popover.popoverPresentationController;
    pop.permittedArrowDirections = UIPopoverArrowDirectionUp;
    pop.sourceView = popover.view;
    pop.barButtonItem = [[UIBarButtonItem alloc]initWithCustomView:button];
    [self presentViewController:popover animated:YES completion:nil];
}


/**
 *  选中筛选条件对象typecode
 *
 *  @param index NSString
 */
- (void)returnCellindexpathwithrow:(NSString *)Type WithcellTitle:(NSString *)title Withselected:(NSInteger)Selected
{
勾芒's avatar
勾芒 committed
277
    [self dismissViewControllerAnimated:YES completion:nil];
勾芒's avatar
勾芒 committed
278
    
勾芒's avatar
勾芒 committed
279 280 281 282
    switch (Selected) {
        case 0://支付方式
        {
            [self.payTypeButton setTitle:title forState:UIControlStateNormal];
勾芒's avatar
勾芒 committed
283 284
            self.payTreasureButton.selected = NO;
            self.WeixiPayButton.selected = NO;
勾芒's avatar
勾芒 committed
285
            self.showPayQrCodeImageView.hidden = YES;
勾芒's avatar
勾芒 committed
286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303
        }
            break;
        case 1://是否开票
        {
            [self.ISinvoiceButton setTitle:title forState:UIControlStateNormal];
        }
            break;
        case 2://发票类型
        {
            [self.invoiceType setTitle:title forState:UIControlStateNormal];
        }
            break;
            
        default:
            break;
    }
}

勾芒's avatar
勾芒 committed
304 305 306 307

#pragma mark -确认支付请求
- (void)SurePayRequest
{
勾芒's avatar
勾芒 committed
308
    OrderPayRequest *order = [[OrderPayRequest alloc]init];
309 310 311 312
    order.orderNumber =  self.orderCode;
    order.fnewstate =  PAYSUCCESS;
    order.oldstate =  NOTPAY;
    order.drawId = self.resultModel.drawId;
313 314
    /// 查询是否有赠送商品促销
    order.realAmount = [NSNumber numberWithFloat:[[self.goodsAllPrice.text substringFromIndex:1] floatValue]];
315 316 317 318 319 320 321 322 323 324
    NSMutableArray *goodsArray = [NSMutableArray array];
    for (id object in self.promotionalArray) {
        if ([object isKindOfClass:[PromotionalGoodsModel class]]) {
            PromotionalGoodsModel *model = (PromotionalGoodsModel *)object;
            PromotionGoods *goods = [[PromotionGoods alloc]init];
            UCN *goodDetails = [[UCN alloc]init];
            goodDetails.code = model.goods.code;
            goodDetails.uuid = model.goods.uuid;
            goodDetails.name = model.goods.name;
            goods.goods = goodDetails;
325
            goods.promotionNumber = [NSNumber numberWithInteger:model.count];
326 327 328 329
            [goodsArray addObject:goods];
        }
    }
    order.promotionGoods = (NSArray<PromotionGoods> *)goodsArray;
330
    /// 查询是否有京东E卡促销
331
    NSInteger totalNumber = 0;//促销卡面额
332 333 334
    for (id object in self.luckyDrawAndJDECardArray) {
        if ([object isKindOfClass:[PromotionalDeductionModel class]]) {
            PromotionalDeductionModel *model = (PromotionalDeductionModel *)object;
335
            if ([model.type isEqualToString:JDECardAction] && [model.body isEqualToString:GUIDE]) {
336 337 338 339 340
                totalNumber += model.total;
            }
        }
    }
    order.jdCardDenomation = totalNumber;
341
    /// 查询是否有导购抽奖机会
342 343 344
    for (id object in self.luckyDrawAndJDECardArray) {
        if ([object isKindOfClass:[LuckyDrawModel class]]) {
            LuckyDrawModel *model = (LuckyDrawModel *)object;
345 346
            if ([model.body isEqualToString:GUIDE]) {
                order.lotteryId = model.lottery.uuid;
347 348 349
            }
        }
    }
勾芒's avatar
勾芒 committed
350 351 352
    //支付类型
    if (self.payTreasureButton.selected) {
       order.payType =  @"005";
353
    }else if (self.WeixiPayButton.selected){
勾芒's avatar
勾芒 committed
354
        order.payType = @"006";
355
    }else{
勾芒's avatar
勾芒 committed
356 357 358 359
        order.payType =  [self PayTypeSelected:self.payTypeButton.currentTitle];
    }
    //是否开票
    if ([self.ISinvoiceButton.currentTitle isEqualToString:@"是"]) {
勾芒's avatar
勾芒 committed
360
        order.isbill = @"Y";
勾芒's avatar
勾芒 committed
361 362
    }
    else if ([self.ISinvoiceButton.currentTitle isEqualToString:@"否"]){
勾芒's avatar
勾芒 committed
363
       order.isbill =  @"N";
勾芒's avatar
勾芒 committed
364 365
    }
    //发票类型
366
    if ([self.invoiceType.currentTitle isEqualToString:@"公司发票"] && [order.isbill isEqualToString:@"Y"]) {
367
        order.billType =  @"002";
勾芒's avatar
勾芒 committed
368 369 370 371
        if (self.invoiceHeader.text.length == 0 || !self.invoiceHeader.text) {
            [self ErrorMBProgressView:@"发票抬头不能为空"];
            return;
        }
勾芒's avatar
勾芒 committed
372
        order.billTitle = self.invoiceHeader.text;
373
    }else if ([self.invoiceType.currentTitle isEqualToString:@"个人发票"] && [order.isbill isEqualToString:@"Y"])
勾芒's avatar
勾芒 committed
374
    {
375
        order.billType =  @"001";
376
    }
勾芒's avatar
勾芒 committed
377
    [self CreateMBProgressHUDLoding];
曹云霄's avatar
曹云霄 committed
378
    WS(weakSelf);
379
    NSLog(@"%@",[order toDictionary]);
380
    [[NetworkRequestClassManager Manager] NetworkRequestWithURL:SERVERREQUESTURL(CONFIRMPAY) WithCallClass:weakSelf WithRequestType:0 WithParameter:order WithReturnValueBlock:^(id returnValue) {
勾芒's avatar
勾芒 committed
381
        
382
        [weakSelf RemoveMBProgressHUDLoding];
勾芒's avatar
勾芒 committed
383
        if ([returnValue[@"code"] isEqualToNumber:@0]) {
曹云霄's avatar
曹云霄 committed
384 385 386 387 388
            [weakSelf dismissViewControllerAnimated:YES completion:^{
                if (weakSelf.PaySuccessReturnBlock) {
                    weakSelf.PaySuccessReturnBlock();
                }
            }];
389 390
        }else{
            [weakSelf ErrorMBProgressView:returnValue[@"message"]];
勾芒's avatar
勾芒 committed
391 392
        }
    } WithErrorCodeBlock:^(id errorCodeValue) {
393 394 395 396 397
        [weakSelf RemoveMBProgressHUDLoding];
        [weakSelf ErrorMBProgressView:NETWORK];
    } WithFailureBlock:^(NSError *error) {
        [weakSelf RemoveMBProgressHUDLoding];
        [weakSelf ErrorMBProgressView:error.localizedDescription];
勾芒's avatar
勾芒 committed
398 399 400
    }];
}

勾芒's avatar
勾芒 committed
401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419
#pragma mark -支付方式选择
- (NSString *)PayTypeSelected:(NSString *)selecte
{
    NSString *payCode = nil;
    if ([selecte isEqualToString:@"现金"]) {
        return payCode = @"001";
    }
    if ([selecte isEqualToString:@"刷卡"]) {
        return payCode = @"002";
    }
    if ([selecte isEqualToString:@"转账"]) {
        return payCode = @"003";
    }
    if ([selecte isEqualToString:@"支票"]) {
        return payCode = @"004";
    }
    return nil;
}

勾芒's avatar
勾芒 committed
420 421 422 423 424 425 426
#pragma mark -汉字转码
- (NSString *)ReturnUrlString:(NSString *)ChineseString
{
    NSString* encodedString = [ChineseString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    return encodedString;
}

勾芒's avatar
勾芒 committed
427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442
#pragma mark -开始编辑
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    if ([self.ISinvoiceButton.currentTitle isEqualToString:@"否"]) {
        [self ErrorMBProgressView:@"请选择开票"];
        return NO;
    }
    return YES;
}

#pragma mark -结束编辑
- (void)textFieldDidEndEditing:(UITextField *)textField
{
    self.myScrollView.contentOffset = CGPointMake(0, 0);
}

443 444 445 446 447 448 449
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end