Subversion Repositories SmartDukaan

Rev

Rev 6077 | Rev 6094 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6077 Rev 6092
Line 3383... Line 3383...
3383
                update_amount_in_wallet(recharge_order.userId, recharge_order.totalAmount - recharge_order.walletAmount, recharge_order.id)
3383
                update_amount_in_wallet(recharge_order.userId, recharge_order.totalAmount - recharge_order.walletAmount, recharge_order.id)
3384
                recharge_order.status = RechargeOrderStatus.PAYMENT_SUCCESSFUL
3384
                recharge_order.status = RechargeOrderStatus.PAYMENT_SUCCESSFUL
3385
                session.commit()
3385
                session.commit()
3386
                raise TransactionServiceException(103, 'Wallet amount has already been used')
3386
                raise TransactionServiceException(103, 'Wallet amount has already been used')
3387
    
3387
    
3388
    
3388
        try:
3389
        if activate_recharge_txn(recharge_order):
3389
            if activate_recharge_txn(recharge_order):
3390
            recharge_order.status = RechargeOrderStatus.RECHARGE_SUCCESSFUL
-
 
3391
            recharge_order.invoiceNumber = get_next_invoice_number(OrderType.RECHARGE)
3390
                recharge_order.invoiceNumber = get_next_invoice_number(OrderType.RECHARGE)
3392
            session.commit()
3391
                session.commit()
3393
            return True
3392
                return True
3394
        else:
3393
            else:
3395
            recharge_order.status = RechargeOrderStatus.RECHARGE_FAILED
-
 
3396
            update_amount_in_wallet(recharge_order.userId, recharge_order.walletAmount, recharge_order.id)
3394
                update_amount_in_wallet(recharge_order.userId, recharge_order.walletAmount, recharge_order.id)
3397
            update_amount_in_wallet(recharge_order.userId, recharge_order.totalAmount - recharge_order.walletAmount, recharge_order.id)
3395
                update_amount_in_wallet(recharge_order.userId, recharge_order.totalAmount - recharge_order.walletAmount, recharge_order.id)
-
 
3396
                session.commit()
-
 
3397
                return False
-
 
3398
        except:
-
 
3399
            transaction_requiring_extra_processing = TransactionRequiringExtraProcessing()
-
 
3400
            transaction_requiring_extra_processing.category = 'RECHARGE_UNKNOWN'
-
 
3401
            transaction_requiring_extra_processing.transaction_id = recharge_order.transaction_id
3398
            session.commit()
3402
            session.commit()
3399
            return False
3403
            return False
3400
 
3404
 
3401
def activate_recharge_txn(recharge_order):
3405
def activate_recharge_txn(recharge_order):
3402
    print type(recharge_order)
-
 
3403
    if isinstance(recharge_order, MobileRechargeOrder):
3406
    if isinstance(recharge_order, MobileRechargeOrder):
3404
        rechargeType = 'MTP'
3407
        rechargeType = 'MTP'
3405
        deviceNumber = recharge_order.mobileNumber
3408
        deviceNumber = recharge_order.mobileNumber
3406
        strProviderCode = get_provider_code(recharge_order.mobileOperatorId)
3409
        strProviderCode = get_provider_code(recharge_order.mobileOperatorId)
3407
    if isinstance(recharge_order, DTHRechargeOrder):
3410
    if isinstance(recharge_order, DTHRechargeOrder):
3408
        rechargeType = 'RCH'
3411
        rechargeType = 'RCH'
3409
        deviceNumber = recharge_order.dthAccountNumber
3412
        deviceNumber = recharge_order.dthAccountNumber
3410
        strProviderCode = get_provider_code(recharge_order.dthOperatorId)
3413
        strProviderCode = get_provider_code(recharge_order.dthOperatorId)
3411
    
3414
    
3412
    try:
-
 
3413
        retStatus, retCode, spiceTID = RechargeService.rechargeDevice(recharge_order.id, rechargeType, strProviderCode, deviceNumber, recharge_order.totalAmount)
3415
    retStatus, retCode, spiceTID, description = RechargeService.rechargeDevice(recharge_order.id, rechargeType, strProviderCode, deviceNumber, recharge_order.totalAmount)
3414
        if retCode == '00' and retStatus == 'S':
3416
    if retCode == '00' and retStatus == 'S':
-
 
3417
        recharge_order.status = RechargeOrderStatus.RECHARGE_SUCCESSFUL
3415
            recharge_order.spiceTID = spiceTID
3418
        recharge_order.spiceTID = spiceTID
3416
            recharge_order.responseTimestamp = datetime.datetime.now()
3419
        recharge_order.responseTimestamp = datetime.datetime.now()
-
 
3420
        recharge_order.description = description
3417
            session.commit()
3421
        session.commit()
3418
            return True
3422
        return True
3419
        else:
3423
    else:
-
 
3424
        recharge_order.status = RechargeOrderStatus.RECHARGE_FAILED
3420
            recharge_order.spiceTID = spiceTID
3425
        recharge_order.spiceTID = spiceTID
3421
            recharge_order.responseTimestamp = datetime.datetime.now()
3426
        recharge_order.responseTimestamp = datetime.datetime.now()
3422
            session.commit()
3427
        recharge_order.description = description
3423
            return False
3428
        session.commit()
3424
    except:
-
 
3425
        return False
3429
        return False
3426
 
3430
 
-
 
3431
 
3427
def get_user_wallet(userId):
3432
def get_user_wallet(userId):
3428
    wallet = UserWallet.get_by(userId = userId)
3433
    wallet = UserWallet.get_by(userId = userId)
3429
    if not wallet:
3434
    if not wallet:
3430
        wallet = UserWallet()
3435
        wallet = UserWallet()
3431
        wallet.amount = 0
3436
        wallet.amount = 0
Line 3458... Line 3463...
3458
    if rechargeType == RechargeType.DTH:
3463
    if rechargeType == RechargeType.DTH:
3459
        serviceType = 'RCH'
3464
        serviceType = 'RCH'
3460
    
3465
    
3461
    try:    
3466
    try:    
3462
        providerCode = RechargeService.checkServiceProviderApi(serviceType, deviceNumber)
3467
        providerCode = RechargeService.checkServiceProviderApi(serviceType, deviceNumber)
-
 
3468
        if providerCode == 'SNS' or providerCode == '':
-
 
3469
            providerId = 0
-
 
3470
        else:
3463
        providerId = get_provider_id(providerCode)
3471
            providerId = get_provider_id(providerCode)
3464
    except:
3472
    except:
3465
        providerId = 0    
3473
        providerId = -1
-
 
3474
    
-
 
3475
        
3466
    return providerId
3476
    return providerId
3467
    
3477
    
3468
def update_amount_in_wallet(userId, amount, orderId):
3478
def update_amount_in_wallet(userId, amount, orderId):
3469
    if amount == 0:
3479
    if amount == 0:
3470
        return
3480
        return