Subversion Repositories SmartDukaan

Rev

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

Rev 8717 Rev 8729
Line 4237... Line 4237...
4237
    
4237
    
4238
    if rechargeOrderStatus == RechargeOrderStatus.RECHARGE_FAILED:
4238
    if rechargeOrderStatus == RechargeOrderStatus.RECHARGE_FAILED:
4239
        recharge_order.status = RechargeOrderStatus.RECHARGE_FAILED
4239
        recharge_order.status = RechargeOrderStatus.RECHARGE_FAILED
4240
        recharge_order.responseTimestamp = datetime.datetime.now()
4240
        recharge_order.responseTimestamp = datetime.datetime.now()
4241
        session.commit()
4241
        session.commit()
4242
        update_amount_in_wallet(recharge_order.userId, recharge_order.walletAmount, recharge_order.id)
4242
        update_amount_in_wallet(recharge_order.userId, recharge_order.walletAmount, recharge_order.id, 1)
4243
        update_amount_in_wallet(recharge_order.userId, recharge_order.totalAmount - recharge_order.walletAmount - recharge_order.couponAmount, recharge_order.id)
4243
        update_amount_in_wallet(recharge_order.userId, recharge_order.totalAmount - recharge_order.walletAmount - recharge_order.couponAmount, recharge_order.id, 0)
4244
        enqueue_recharge_info_email(recharge_order)
4244
        enqueue_recharge_info_email(recharge_order)
4245
        return True
4245
        return True
4246
    
4246
    
4247
    if rechargeOrderStatus == RechargeOrderStatus.RECHARGE_SUCCESSFUL:
4247
    if rechargeOrderStatus == RechargeOrderStatus.RECHARGE_SUCCESSFUL:
4248
        recharge_order.status = RechargeOrderStatus.RECHARGE_SUCCESSFUL
4248
        recharge_order.status = RechargeOrderStatus.RECHARGE_SUCCESSFUL
Line 4254... Line 4254...
4254
    
4254
    
4255
    if rechargeOrderStatus == RechargeOrderStatus.RECHARGE_FAILED_REFUNDED:
4255
    if rechargeOrderStatus == RechargeOrderStatus.RECHARGE_FAILED_REFUNDED:
4256
        recharge_order.status = RechargeOrderStatus.RECHARGE_FAILED_REFUNDED
4256
        recharge_order.status = RechargeOrderStatus.RECHARGE_FAILED_REFUNDED
4257
        order.responseTimestamp = datetime.datetime.now()
4257
        order.responseTimestamp = datetime.datetime.now()
4258
        session.commit()
4258
        session.commit()
4259
        update_amount_in_wallet(recharge_order.userId, recharge_order.walletAmount, recharge_order.id)
4259
        update_amount_in_wallet(recharge_order.userId, recharge_order.walletAmount, recharge_order.id, 1)
4260
        update_amount_in_wallet(recharge_order.userId, recharge_order.totalAmount - recharge_order.walletAmount - recharge_order.couponAmount, recharge_order.id)
4260
        update_amount_in_wallet(recharge_order.userId, recharge_order.totalAmount - recharge_order.walletAmount - recharge_order.couponAmount, recharge_order.id, 0)
4261
        enqueue_recharge_info_email(recharge_order)
4261
        enqueue_recharge_info_email(recharge_order)
4262
        return True
4262
        return True
4263
            
4263
            
4264
    if rechargeOrderStatus == RechargeOrderStatus.PAYMENT_SUCCESSFUL:
4264
    if rechargeOrderStatus == RechargeOrderStatus.PAYMENT_SUCCESSFUL:
4265
        gvs = {}
4265
        gvs = {}
4266
        recharge_order.status = RechargeOrderStatus.PAYMENT_SUCCESSFUL
4266
        recharge_order.status = RechargeOrderStatus.PAYMENT_SUCCESSFUL
4267
        session.commit()
4267
        session.commit()
4268
        if recharge_order.walletAmount > 0:
4268
        if recharge_order.walletAmount > 0:
4269
            wallet = get_user_wallet(recharge_order.userId)
4269
            wallet = get_user_wallet(recharge_order.userId)
4270
            if wallet and wallet.amount >= recharge_order.walletAmount:
4270
            if wallet and wallet.amount >= recharge_order.walletAmount:
4271
                update_amount_in_wallet(recharge_order.userId, -recharge_order.walletAmount, recharge_order.id)
4271
                update_amount_in_wallet(recharge_order.userId, -recharge_order.walletAmount, recharge_order.id, 1)
4272
            else:
4272
            else:
4273
                update_amount_in_wallet(recharge_order.userId, recharge_order.totalAmount - recharge_order.walletAmount - recharge_order.couponAmount, recharge_order.id)
4273
                update_amount_in_wallet(recharge_order.userId, recharge_order.totalAmount - recharge_order.walletAmount - recharge_order.couponAmount, recharge_order.id, 0)
4274
                raise TransactionServiceException(103, 'Wallet amount has already been used')
4274
                raise TransactionServiceException(103, 'Wallet amount has already been used')
4275
    
4275
    
4276
        try:
4276
        try:
4277
            if activate_recharge_txn(recharge_order):
4277
            if activate_recharge_txn(recharge_order):
4278
                recharge_order.invoiceNumber = get_next_invoice_number(OrderType.RECHARGE)
4278
                recharge_order.invoiceNumber = get_next_invoice_number(OrderType.RECHARGE)
4279
                session.commit()
4279
                session.commit()
4280
                gvs = allocate_gift_voucher(recharge_order)
4280
                gvs = allocate_gift_voucher(recharge_order)
4281
                return True
4281
                return True
4282
            else:
4282
            else:
4283
                update_amount_in_wallet(recharge_order.userId, recharge_order.walletAmount, recharge_order.id)
4283
                update_amount_in_wallet(recharge_order.userId, recharge_order.walletAmount, recharge_order.id, 1)
4284
                update_amount_in_wallet(recharge_order.userId, recharge_order.totalAmount - recharge_order.walletAmount - recharge_order.couponAmount, recharge_order.id)
4284
                update_amount_in_wallet(recharge_order.userId, recharge_order.totalAmount - recharge_order.walletAmount - recharge_order.couponAmount, recharge_order.id, 0)
4285
                session.commit()
4285
                session.commit()
4286
                return False
4286
                return False
4287
        except:
4287
        except:
4288
            transaction_requiring_extra_processing = TransactionRequiringExtraProcessing()
4288
            transaction_requiring_extra_processing = TransactionRequiringExtraProcessing()
4289
            transaction_requiring_extra_processing.category = 'RECHARGE_UNKNOWN'
4289
            transaction_requiring_extra_processing.category = 'RECHARGE_UNKNOWN'
Line 4423... Line 4423...
4423
    if provider:
4423
    if provider:
4424
        deviceNumberInfo.operatorName = provider.name
4424
        deviceNumberInfo.operatorName = provider.name
4425
    return deviceNumberInfo
4425
    return deviceNumberInfo
4426
 
4426
 
4427
def validate_recharge(rechargeType, deviceNumber, userSelectedProviderId, clientAddress):
4427
def validate_recharge(rechargeType, deviceNumber, userSelectedProviderId, clientAddress):
4428
    
-
 
-
 
4428
    return "Recharge is not available right now. Please try after some time."
4429
    addressComponents = clientAddress.split('.')
4429
    addressComponents = clientAddress.split('.')
4430
    n = 3
4430
    n = 3
4431
    addressNumber = 0
4431
    addressNumber = 0
4432
    for addressComponent in addressComponents :
4432
    for addressComponent in addressComponents :
4433
        addressNumber = addressNumber + (int(addressComponent) * pow(256, n))
4433
        addressNumber = addressNumber + (int(addressComponent) * pow(256, n))
Line 4482... Line 4482...
4482
def get_previous_transactions(clientAddress):
4482
def get_previous_transactions(clientAddress):
4483
    limittime = datetime.datetime.now() - datetime.timedelta(hours=24)
4483
    limittime = datetime.datetime.now() - datetime.timedelta(hours=24)
4484
    totalSuccessfulRechargeAmount = session.query(func.sum(RechargeOrder.totalAmount)).filter(RechargeOrder.status == 5).filter(RechargeOrder.ipAddress == clientAddress).filter(RechargeOrder.creationTimestamp  > limittime).scalar()
4484
    totalSuccessfulRechargeAmount = session.query(func.sum(RechargeOrder.totalAmount)).filter(RechargeOrder.status == 5).filter(RechargeOrder.ipAddress == clientAddress).filter(RechargeOrder.creationTimestamp  > limittime).scalar()
4485
    return totalSuccessfulRechargeAmount    
4485
    return totalSuccessfulRechargeAmount    
4486
    
4486
    
4487
def update_amount_in_wallet(userId, amount, orderId):
4487
def update_amount_in_wallet(userId, amount, orderId, updateType):
-
 
4488
    """
-
 
4489
    UpdateType 1 is for wallet amounts
-
 
4490
    and 0 is for payment amounts
-
 
4491
    """
4488
    if amount == 0:
4492
    if amount == 0:
4489
        return
4493
        return
4490
    wallet = get_user_wallet(userId)
4494
    wallet = get_user_wallet(userId)
4491
    wallet.amount = wallet.amount + amount
4495
    wallet.amount = wallet.amount + amount
4492
    
4496
    
-
 
4497
    history = None
-
 
4498
    if updateType == 1 and amount > 0 :
-
 
4499
        history = UserWalletHistory.query.filter_by(orderId = orderId).filter_by(amount = -amount).first()
-
 
4500
        if history is None:
-
 
4501
            print 'No amount was debited from wallet for recharge Id : ' + str(orderId)
-
 
4502
            return
-
 
4503
    
4493
    history = UserWalletHistory()
4504
    history = UserWalletHistory()
4494
    history.amount = amount
4505
    history.amount = amount
4495
    history.orderId = orderId
4506
    history.orderId = orderId
4496
    history.wallet = wallet
4507
    history.wallet = wallet
4497
    history.timestamp = datetime.datetime.now()
4508
    history.timestamp = datetime.datetime.now()
Line 4707... Line 4718...
4707
        status = RechargeOrderStatus.REFUNDED
4718
        status = RechargeOrderStatus.REFUNDED
4708
    else :
4719
    else :
4709
        amountToRefund = wallet.amount
4720
        amountToRefund = wallet.amount
4710
        status = RechargeOrderStatus.PARTIALLY_REFUNDED
4721
        status = RechargeOrderStatus.PARTIALLY_REFUNDED
4711
        
4722
        
4712
    update_amount_in_wallet(rechargeOrder.userId, -amountToRefund, rechargeOrderId)
4723
    update_amount_in_wallet(rechargeOrder.userId, -amountToRefund, rechargeOrderId, 1)
4713
    
4724
    
4714
    try:    
4725
    try:    
4715
        pc = PaymentClient().get_client()
4726
        pc = PaymentClient().get_client()
4716
        if pc.refundPayment(rechargeOrder.transaction_id, amountToRefund, True) :
4727
        if pc.refundPayment(rechargeOrder.transaction_id, amountToRefund, True) :
4717
            rechargeOrder.status = status
4728
            rechargeOrder.status = status
4718
            rechargeOrder.refundTimestamp = datetime.datetime.now()
4729
            rechargeOrder.refundTimestamp = datetime.datetime.now()
4719
            session.commit()
4730
            session.commit()
4720
            return True
4731
            return True
4721
        else :
4732
        else :
4722
            update_amount_in_wallet(rechargeOrder.userId, amountToRefund, rechargeOrderId)
4733
            update_amount_in_wallet(rechargeOrder.userId, amountToRefund, rechargeOrderId, 1)
4723
            
4734
            
4724
    except:
4735
    except:
4725
        update_amount_in_wallet(rechargeOrder.userId, amountToRefund, rechargeOrderId)
4736
        update_amount_in_wallet(rechargeOrder.userId, amountToRefund, rechargeOrderId, 1)
4726
        
4737
        
4727
    return False 
4738
    return False 
4728
    
4739
    
4729
def get_physical_orders(from_date, to_date):
4740
def get_physical_orders(from_date, to_date):
4730
    query = Order.query.filter(Order.created_timestamp >from_date).filter(Order.created_timestamp < to_date).filter(Order.status>=2)
4741
    query = Order.query.filter(Order.created_timestamp >from_date).filter(Order.created_timestamp < to_date).filter(Order.status>=2)