Subversion Repositories SmartDukaan

Rev

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

Rev 19231 Rev 19234
Line 1425... Line 1425...
1425
            if order == None or order.status not in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.DELIVERED_AT_STORE, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DELIVERY_SUCCESS]:
1425
            if order == None or order.status not in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.DELIVERED_AT_STORE, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DELIVERY_SUCCESS]:
1426
                return False
1426
                return False
1427
            order.status = OrderStatus.RTO_IN_TRANSIT
1427
            order.status = OrderStatus.RTO_IN_TRANSIT
1428
            order.delivery_timestamp = datetime.datetime.now()
1428
            order.delivery_timestamp = datetime.datetime.now()
1429
            order.statusDescription = "Order Returned to Origin"
1429
            order.statusDescription = "Order Returned to Origin"
1430
            update_trust_level(order)
-
 
1431
            session.commit()
-
 
1432
            try:
1430
            try:
1433
                alert_client = AlertClient().get_client()
1431
                alert_client = AlertClient().get_client()
1434
                alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
1432
                alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
1435
            except Exception as e:
1433
            except Exception as e:
1436
                print "Exception in ending alert in MarkOrderAsRTO method"
1434
                print "Exception in ending alert in MarkOrderAsRTO method"
1437
                print e
1435
                print e
-
 
1436
        update_trust_level(orders[0])
-
 
1437
        session.commit()
1438
    else:
1438
    else:
1439
        if selectedOrder == None or selectedOrder.status not in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.DELIVERED_AT_STORE, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DELIVERY_SUCCESS]:
1439
        if selectedOrder == None or selectedOrder.status not in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.DELIVERED_AT_STORE, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DELIVERY_SUCCESS]:
1440
            return False
1440
            return False
1441
        selectedOrder.status = OrderStatus.RTO_IN_TRANSIT
1441
        selectedOrder.status = OrderStatus.RTO_IN_TRANSIT
1442
        selectedOrder.delivery_timestamp = datetime.datetime.now()
1442
        selectedOrder.delivery_timestamp = datetime.datetime.now()
Line 1640... Line 1640...
1640
 
1640
 
1641
def update_trust_level(order):
1641
def update_trust_level(order):
1642
    try:
1642
    try:
1643
        trust_level_delta = 0
1643
        trust_level_delta = 0
1644
        if order.cod == True:
1644
        if order.cod == True:
-
 
1645
            if order.status in [OrderStatus.RTO_RESHIPPED] and order.logisticsTransactionId:
-
 
1646
                earlierMarkedReshipped = Order.query.filter(Order.logisticsTransactionId == order.logisticsTransactionId).filter(Order.status==OrderStatus.RTO_RESHIPPED).first()
-
 
1647
                if earlierMarkedReshipped is None:
-
 
1648
                    trust_level_delta = ORDER_STATUS_TO_USER_TRUST_LEVEL_DELTA_DICT.get(order.status, 0)
-
 
1649
            else:
1645
            trust_level_delta = ORDER_STATUS_TO_USER_TRUST_LEVEL_DELTA_DICT.get(order.status, 0)
1650
                trust_level_delta = ORDER_STATUS_TO_USER_TRUST_LEVEL_DELTA_DICT.get(order.status, 0)
1646
 
1651
 
1647
        if (trust_level_delta != 0):
1652
        if (trust_level_delta != 0):
1648
            user_client = UserClient().get_client()
1653
            user_client = UserClient().get_client()
1649
            user_client.increaseTrustLevel(order.customer_id, trust_level_delta)
1654
            user_client.increaseTrustLevel(order.customer_id, trust_level_delta)
1650
    except Exception as e:
1655
    except Exception as e:
Line 2377... Line 2382...
2377
                except Exception as e:
2382
                except Exception as e:
2378
                    print e
2383
                    print e
2379
            else:
2384
            else:
2380
                order.status = OrderStatus.DELIVERY_SUCCESS
2385
                order.status = OrderStatus.DELIVERY_SUCCESS
2381
                order.statusDescription = "Order delivered"
2386
                order.statusDescription = "Order delivered"
2382
                update_trust_level(order)
-
 
2383
                if order.insuranceDetails:
2387
                if order.insuranceDetails:
2384
                    try:
2388
                    try:
2385
                        update_insurance_details(order)
2389
                        update_insurance_details(order)
2386
                    except:
2390
                    except:
2387
                        print "Error generating insurance file for order " + str(order.id)
2391
                        print "Error generating insurance file for order " + str(order.id)
Line 2400... Line 2404...
2400
                    print e
2404
                    print e
2401
    
2405
    
2402
    for logisticsTxnId, ordersList in logisticsTxnIdOrdersMap.iteritems():
2406
    for logisticsTxnId, ordersList in logisticsTxnIdOrdersMap.iteritems():
2403
        if enqueue_delivery_success_mail(logisticsTxnId, ordersList) :
2407
        if enqueue_delivery_success_mail(logisticsTxnId, ordersList) :
2404
            order = ordersList[0]
2408
            order = ordersList[0]
-
 
2409
            update_trust_level(order)
2405
            if order.transaction.payment_option == capitalFloatPayMethod:
2410
            if order.transaction.payment_option == capitalFloatPayMethod:
2406
                total_amount = 0
2411
                total_amount = 0
2407
                for ordObj in ordersList:
2412
                for ordObj in ordersList:
2408
                    total_amount = total_amount + ordObj.total_amount + ordObj.shippingCost - ordObj.gvAmount
2413
                    total_amount = total_amount + ordObj.total_amount + ordObj.shippingCost - ordObj.gvAmount
2409
                creditObj = __creditHistoryObj(order.customer_id, 1, order.transaction.id, total_amount, CreditTxnType.LOAN, order.logisticsTransactionId)
2414
                creditObj = __creditHistoryObj(order.customer_id, 1, order.transaction.id, total_amount, CreditTxnType.LOAN, order.logisticsTransactionId)
Line 2482... Line 2487...
2482
            if order.first_dlvyatmp_timestamp is None:
2487
            if order.first_dlvyatmp_timestamp is None:
2483
                order.first_dlvyatmp_timestamp = deliveryTimestamp
2488
                order.first_dlvyatmp_timestamp = deliveryTimestamp
2484
            order.receiver = receiver
2489
            order.receiver = receiver
2485
        order.status = OrderStatus.DELIVERY_SUCCESS
2490
        order.status = OrderStatus.DELIVERY_SUCCESS
2486
        order.statusDescription = "Order delivered"
2491
        order.statusDescription = "Order delivered"
2487
        update_trust_level(order)
-
 
2488
        if order.insuranceDetails:
2492
        if order.insuranceDetails:
2489
            try:
2493
            try:
2490
                update_insurance_details(order)
2494
                update_insurance_details(order)
2491
            except:
2495
            except:
2492
                print "Error generating insurance file for order " + str(order.id)
2496
                print "Error generating insurance file for order " + str(order.id)
Line 2497... Line 2501...
2497
            order.dataInsuranceDetails[0].expiryDate = order.delivery_timestamp + timedelta(days = 90)
2501
            order.dataInsuranceDetails[0].expiryDate = order.delivery_timestamp + timedelta(days = 90)
2498
        
2502
        
2499
        if order.source == 2:
2503
        if order.source == 2:
2500
            sod = StoreOrderDetail.get_by(orderId = order.id)
2504
            sod = StoreOrderDetail.get_by(orderId = order.id)
2501
            sod.payStatus = StorePaymentStatus.FULL_PAY_RECEIVED
2505
            sod.payStatus = StorePaymentStatus.FULL_PAY_RECEIVED
2502
        session.commit()
-
 
2503
        
2506
        
2504
        if order.pickupStoreId and order.cod:
2507
        if order.pickupStoreId and order.cod:
2505
            __push_collection_to_hotspot(order, "SALE")
2508
            __push_collection_to_hotspot(order, "SALE")
2506
            
2509
            
2507
        for logisticsTxnId, ordersList in logisticsTxnIdOrdersMap.iteritems():
2510
        for logisticsTxnId, ordersList in logisticsTxnIdOrdersMap.iteritems():
Line 2520... Line 2523...
2520
            alert_client = AlertClient().get_client()
2523
            alert_client = AlertClient().get_client()
2521
            alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
2524
            alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
2522
        except Exception as e:
2525
        except Exception as e:
2523
            print "Exception in ending alert in MarkOrderAsDelivered method"
2526
            print "Exception in ending alert in MarkOrderAsDelivered method"
2524
            print e
2527
            print e
-
 
2528
            
-
 
2529
    update_trust_level(grouppedOrdersList[0])
-
 
2530
    session.commit()
2525
 
2531
 
2526
    
2532
    
2527
def mark_order_as_received_at_store(orderId, deliveryTimestamp):
2533
def mark_order_as_received_at_store(orderId, deliveryTimestamp):
2528
    order = Order.get_by(id=orderId)
2534
    order = Order.get_by(id=orderId)
2529
    if order != None or order.status in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DELIVERED_AT_STORE]:
2535
    if order != None or order.status in [OrderStatus.SHIPPED_FROM_WH, OrderStatus.SHIPPED_TO_LOGST, OrderStatus.SHIPPED_TO_DESTINATION_CITY, OrderStatus.REACHED_DESTINATION_CITY, OrderStatus.FIRST_DELIVERY_ATTEMPT_MADE, OrderStatus.DELIVERED_AT_STORE]:
Line 2556... Line 2562...
2556
                continue
2562
                continue
2557
                #raise TransactionServiceException(103, "No order found for the awb:" + awb)
2563
                #raise TransactionServiceException(103, "No order found for the awb:" + awb)
2558
            order.status = OrderStatus.RTO_IN_TRANSIT
2564
            order.status = OrderStatus.RTO_IN_TRANSIT
2559
            order.delivery_timestamp, reason = detail.split('|')
2565
            order.delivery_timestamp, reason = detail.split('|')
2560
            order.statusDescription = "Order Returned to Origin:" + reason
2566
            order.statusDescription = "Order Returned to Origin:" + reason
2561
            update_trust_level(order)
-
 
2562
            session.commit()
-
 
2563
            try:
2567
            try:
2564
                alert_client = AlertClient().get_client()
2568
                alert_client = AlertClient().get_client()
2565
                alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
2569
                alert_client.endMonitoringEntity(EntityType.COURIER, "orderId = " + str(order.id))
2566
            except Exception as e:
2570
            except Exception as e:
2567
                print "Exception in ending alert in MarkOrderAsRTO method"
2571
                print "Exception in ending alert in MarkOrderAsRTO method"
2568
                print e
2572
                print e
-
 
2573
        
-
 
2574
        update_trust_level(orders[0])        
-
 
2575
        session.commit()
2569
 
2576
 
2570
def get_rto_orders(provider_id):
2577
def get_rto_orders(provider_id):
2571
    current_time = datetime.datetime.now()
2578
    current_time = datetime.datetime.now()
2572
    to_datetime = datetime.datetime(current_time.year, current_time.month, current_time.day)
2579
    to_datetime = datetime.datetime(current_time.year, current_time.month, current_time.day)
2573
    rto_orders = Order.query.filter_by(logistics_provider_id = provider_id).filter_by(status=OrderStatus.RTO_IN_TRANSIT).filter(Order.delivery_timestamp <= to_datetime).all()
2580
    rto_orders = Order.query.filter_by(logistics_provider_id = provider_id).filter_by(status=OrderStatus.RTO_IN_TRANSIT).filter(Order.delivery_timestamp <= to_datetime).all()
Line 3626... Line 3633...
3626
        for lineitem in order.lineitems:
3633
        for lineitem in order.lineitems:
3627
            inventoryClient.reduceReservationCount(lineitem.item_id, order.fulfilmentWarehouseId, sourceId, order.id, lineitem.quantity)
3634
            inventoryClient.reduceReservationCount(lineitem.item_id, order.fulfilmentWarehouseId, sourceId, order.id, lineitem.quantity)
3628
    except:
3635
    except:
3629
        print "Unable to reduce reservation count"
3636
        print "Unable to reduce reservation count"
3630
 
3637
 
3631
def __clone_order(order, should_copy_billing_info, is_cod):
3638
def __clone_order(order, should_copy_billing_info, is_cod, reserved=True):
3632
    current_time = datetime.datetime.now()
3639
    current_time = datetime.datetime.now()
3633
    new_order = Order()
3640
    new_order = Order()
3634
    new_order.customer_id = order.customer_id
3641
    new_order.customer_id = order.customer_id
3635
    new_order.customer_name = order.customer_name
3642
    new_order.customer_name = order.customer_name
3636
    new_order.customer_city = order.customer_city
3643
    new_order.customer_city = order.customer_city
Line 3705... Line 3712...
3705
    new_order.airwaybill_no = logistics_info.airway_billno
3712
    new_order.airwaybill_no = logistics_info.airway_billno
3706
    new_order.tracking_id = new_order.airwaybill_no
3713
    new_order.tracking_id = new_order.airwaybill_no
3707
    '''
3714
    '''
3708
    new_order.source = order.source
3715
    new_order.source = order.source
3709
    
3716
    
-
 
3717
    if reserved:
3710
    order.courier_delivery_time = (current_time + datetime.timedelta(days=logistics_info.deliveryDelay)).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
3718
        order.courier_delivery_time = (current_time + datetime.timedelta(days=logistics_info.deliveryDelay)).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
3711
    new_order.expected_delivery_time = (current_time + datetime.timedelta(days=logistics_info.deliveryTime)).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
3719
        new_order.expected_delivery_time = (current_time + datetime.timedelta(days=logistics_info.deliveryTime)).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
3712
    new_order.promised_delivery_time = new_order.expected_delivery_time
3720
        new_order.promised_delivery_time = new_order.expected_delivery_time
3713
    new_order.expected_shipping_time = (current_time + datetime.timedelta(days=logistics_info.shippingTime)).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
3721
        new_order.expected_shipping_time = (current_time + datetime.timedelta(days=logistics_info.shippingTime)).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
3714
    new_order.promised_shipping_time = new_order.expected_shipping_time
3722
        new_order.promised_shipping_time = new_order.expected_shipping_time
-
 
3723
    else:
-
 
3724
        order.courier_delivery_time = (current_time + datetime.timedelta(days=logistics_info.deliveryDelay)).replace(hour=PREPAID_SHIPPING_CUTOFF_TIME, minute=0, second=0)
-
 
3725
        new_order.expected_delivery_time = order.expected_delivery_time
-
 
3726
        new_order.promised_delivery_time = order.promised_delivery_time
-
 
3727
        new_order.expected_shipping_time = order.expected_shipping_time
-
 
3728
        new_order.promised_shipping_time = order.promised_shipping_time
3715
        
3729
        
3716
    if should_copy_billing_info:
3730
    if should_copy_billing_info:
3717
        new_order.vendorId = order.vendorId
3731
        new_order.vendorId = order.vendorId
3718
        new_order.invoice_number = order.invoice_number
3732
        new_order.invoice_number = order.invoice_number
3719
        new_order.billed_by = order.billed_by
3733
        new_order.billed_by = order.billed_by
Line 3735... Line 3749...
3735
                new_order.airwaybill_no= logistics_client.getEmptyAWB(new_order.logistics_provider_id, DeliveryType.PREPAID)
3749
                new_order.airwaybill_no= logistics_client.getEmptyAWB(new_order.logistics_provider_id, DeliveryType.PREPAID)
3736
                new_order.tracking_id = new_order.airwaybill_no
3750
                new_order.tracking_id = new_order.airwaybill_no
3737
                
3751
                
3738
        session.commit()
3752
        session.commit()
3739
    else:
3753
    else:
3740
        session.commit()       
3754
        session.commit()
-
 
3755
        if reserved:       
3741
        inventoryClient = InventoryClient().get_client()
3756
            inventoryClient = InventoryClient().get_client()
3742
        inventoryClient.reserveItemInWarehouse(item_id, logistics_info.fulfilmentWarehouseId, sourceId, new_order.id, to_java_date(new_order.created_timestamp), to_java_date(new_order.promised_shipping_time), new_order.lineitems[0].quantity)
3757
            inventoryClient.reserveItemInWarehouse(item_id, logistics_info.fulfilmentWarehouseId, sourceId, new_order.id, to_java_date(new_order.created_timestamp), to_java_date(new_order.promised_shipping_time), new_order.lineitems[0].quantity)
3743
    
3758
    
3744
    if order.source == 2:
3759
    if order.source == 2:
3745
        new_order.advanceAmount = order.advanceAmount
3760
        new_order.advanceAmount = order.advanceAmount
3746
        new_order.storeId = order.storeId   
3761
        new_order.storeId = order.storeId   
3747
        oldSod = StoreOrderDetail.query.filter(StoreOrderDetail.orderId == order.id).filter(StoreOrderDetail.storeId == order.storeId).first()
3762
        oldSod = StoreOrderDetail.query.filter(StoreOrderDetail.orderId == order.id).filter(StoreOrderDetail.storeId == order.storeId).first()
Line 8553... Line 8568...
8553
                            if warehouseDbConnection.open:
8568
                            if warehouseDbConnection.open:
8554
                                warehouseDbConnection.close()
8569
                                warehouseDbConnection.close()
8555
                            raise TransactionServiceException(318, "Unsufficient Quantity with this item number " + itemNumbers[0]+" in Vendor Warehouse Id- "+str(warehouse.id)+" Order Id:- "+str(order.id))
8570
                            raise TransactionServiceException(318, "Unsufficient Quantity with this item number " + itemNumbers[0]+" in Vendor Warehouse Id- "+str(warehouse.id)+" Order Id:- "+str(order.id))
8556
                        
8571
                        
8557
                        usedInventory = 0
8572
                        usedInventory = 0
8558
                        if nonSerializedUsedInventoryMap.has_key(item.id):
8573
                        if nonSerializedUsedInventoryMap.has_key(str(item.id)+"_"+str(warehouse.id)):
8559
                            usedInventory = nonSerializedUsedInventoryMap.get(item.id)
8574
                            usedInventory = nonSerializedUsedInventoryMap.get(str(item.id)+"_"+str(warehouse.id))
8560
                            usedInventory = usedInventory+orderQuantity
8575
                            usedInventory = usedInventory+orderQuantity
8561
                            nonSerializedUsedInventoryMap[item.id] = usedInventory
8576
                            nonSerializedUsedInventoryMap[str(item.id)+"_"+str(warehouse.id)] = usedInventory
8562
                        else:
8577
                        else:
8563
                            usedInventory = orderQuantity
8578
                            usedInventory = orderQuantity
8564
                            nonSerializedUsedInventoryMap[item.id] = usedInventory
8579
                            nonSerializedUsedInventoryMap[str(item.id)+"_"+str(warehouse.id)] = usedInventory
8565
                        
8580
                        
8566
                        if usedInventory > totalCurrentQuantity:
8581
                        if usedInventory > totalCurrentQuantity:
8567
                            if warehouseDbConnection.open:
8582
                            if warehouseDbConnection.open:
8568
                                warehouseDbConnection.close()
8583
                                warehouseDbConnection.close()
8569
                            raise TransactionServiceException(318, "Unsufficient Quantity with this item number " + itemNumbers[0]+" in Vendor Warehouse Id- "+str(warehouse.id)+" Order Id:- "+str(order.id))
8584
                            raise TransactionServiceException(318, "Unsufficient Quantity with this item number " + itemNumbers[0]+" in Vendor Warehouse Id- "+str(warehouse.id)+" Order Id:- "+str(order.id))
Line 8700... Line 8715...
8700
                            if warehouseDbConnection.open:
8715
                            if warehouseDbConnection.open:
8701
                                warehouseDbConnection.close()
8716
                                warehouseDbConnection.close()
8702
                            raise TransactionServiceException(110, "Unsufficient Quantity with this item number " + itemNumbers[0]+" in Vendor Warehouse Id- "+str(warehouse.id)+" Order Id:- "+str(order.id))
8717
                            raise TransactionServiceException(110, "Unsufficient Quantity with this item number " + itemNumbers[0]+" in Vendor Warehouse Id- "+str(warehouse.id)+" Order Id:- "+str(order.id))
8703
                        
8718
                        
8704
                        usedInventory = 0
8719
                        usedInventory = 0
8705
                        if nonSerializedUsedInventoryMap.has_key(item.id):
8720
                        if nonSerializedUsedInventoryMap.has_key(str(item.id)+"_"+str(warehouse.id)):
8706
                            usedInventory = nonSerializedUsedInventoryMap.get(item.id)
8721
                            usedInventory = nonSerializedUsedInventoryMap.get(str(item.id)+"_"+str(warehouse.id))
8707
                            usedInventory = usedInventory+orderQuantity
8722
                            usedInventory = usedInventory+orderQuantity
8708
                            nonSerializedUsedInventoryMap[item.id] = usedInventory
8723
                            nonSerializedUsedInventoryMap[str(item.id)+"_"+str(warehouse.id)] = usedInventory
8709
                        else:
8724
                        else:
8710
                            usedInventory = orderQuantity
8725
                            usedInventory = orderQuantity
8711
                            nonSerializedUsedInventoryMap[item.id] = usedInventory
8726
                            nonSerializedUsedInventoryMap[str(item.id)+"_"+str(warehouse.id)] = usedInventory
8712
                        
8727
                        
8713
                        if usedInventory > totalCurrentQuantity:
8728
                        if usedInventory > totalCurrentQuantity:
8714
                            if warehouseDbConnection.open:
8729
                            if warehouseDbConnection.open:
8715
                                warehouseDbConnection.close()
8730
                                warehouseDbConnection.close()
8716
                            raise TransactionServiceException(318, "Unsufficient Quantity with this item number " + itemNumbers[0]+" in Vendor Warehouse Id- "+str(warehouse.id)+" Order Id:- "+str(order.id))
8731
                            raise TransactionServiceException(318, "Unsufficient Quantity with this item number " + itemNumbers[0]+" in Vendor Warehouse Id- "+str(warehouse.id)+" Order Id:- "+str(order.id))
Line 8930... Line 8945...
8930
    if split_order_quantity >=order.lineitems[0].quantity:
8945
    if split_order_quantity >=order.lineitems[0].quantity:
8931
        raise TransactionServiceException(115, "Split Quantity is greater than or equal to order quantity")
8946
        raise TransactionServiceException(115, "Split Quantity is greater than or equal to order quantity")
8932
    if order.status not in [OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW, OrderStatus.LOW_INV_PO_RAISED, OrderStatus.LOW_INV_REVERSAL_IN_PROCESS, OrderStatus.LOW_INV_NOT_AVAILABLE_AT_HOTSPOT, OrderStatus.CAPTURE_IN_PROCESS, OrderStatus.REJECTED, OrderStatus.ACCEPTED]:
8947
    if order.status not in [OrderStatus.SUBMITTED_FOR_PROCESSING, OrderStatus.INVENTORY_LOW, OrderStatus.LOW_INV_PO_RAISED, OrderStatus.LOW_INV_REVERSAL_IN_PROCESS, OrderStatus.LOW_INV_NOT_AVAILABLE_AT_HOTSPOT, OrderStatus.CAPTURE_IN_PROCESS, OrderStatus.REJECTED, OrderStatus.ACCEPTED]:
8933
        raise TransactionServiceException(115, "Order not allowed to be split")
8948
        raise TransactionServiceException(115, "Order not allowed to be split")
8934
    
8949
    
8935
    new_order = __clone_order(order, False, order.cod)
8950
    new_order = __clone_order(order, False, order.cod, False)
8936
    
8951
    
8937
    new_order.lineitems[0].quantity = split_order_quantity
8952
    new_order.lineitems[0].quantity = split_order_quantity
8938
    new_order.lineitems[0].total_price = new_order.lineitems[0].unit_price*split_order_quantity
8953
    new_order.lineitems[0].total_price = new_order.lineitems[0].unit_price*split_order_quantity
8939
    new_order.lineitems[0].total_weight = new_order.lineitems[0].unit_weight*split_order_quantity
8954
    new_order.lineitems[0].total_weight = new_order.lineitems[0].unit_weight*split_order_quantity
8940
    new_order.total_amount = new_order.lineitems[0].total_price
8955
    new_order.total_amount = new_order.lineitems[0].total_price
Line 8947... Line 8962...
8947
    order.total_amount = order.lineitems[0].total_price
8962
    order.total_amount = order.lineitems[0].total_price
8948
    order.total_weight = order.lineitems[0].total_weight
8963
    order.total_weight = order.lineitems[0].total_weight
8949
    order.shippingCost = order.shippingCost - new_order.shippingCost
8964
    order.shippingCost = order.shippingCost - new_order.shippingCost
8950
    
8965
    
8951
    session.commit()
8966
    session.commit()
-
 
8967
    inventoryClient = InventoryClient().get_client()
-
 
8968
    inventoryClient.reserveItemInWarehouse(new_order.lineitems[0].item_id, new_order.fulfilmentWarehouseId, sourceId, new_order.id, to_java_date(new_order.created_timestamp), to_java_date(new_order.promised_shipping_time), new_order.lineitems[0].quantity)
-
 
8969
    inventoryClient.reduceReservationCount(order.lineitems[0].item_id, order.fulfilmentWarehouseId, sourceId, order.id, order.lineitems[0].quantity)
-
 
8970
 
8952
    html = """
8971
    html = """
8953
    <html>
8972
    <html>
8954
    <body>
8973
    <body>
8955
    <div>
8974
    <div>
8956
        <p>Dear Customer,</p>
8975
        <p>Dear Customer,</p>