Subversion Repositories SmartDukaan

Rev

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

Rev 4647 Rev 4658
Line 609... Line 609...
609
            session.commit()
609
            session.commit()
610
            raise TransactionServiceException(122, "Unable to capture payment due to connection issue.")
610
            raise TransactionServiceException(122, "Unable to capture payment due to connection issue.")
611
        else:
611
        else:
612
            raise TransactionServiceException(115, "Payment capture failed.")
612
            raise TransactionServiceException(115, "Payment capture failed.")
613
 
613
 
614
def add_billing_details(orderId, invoice_number, imeiNumber, itemNumber, billedBy, jacketNumber, billingType, vendorId):
614
def add_billing_details(orderId, invoice_number, serialNumber, itemNumber, billedBy, jacketNumber, billingType, vendorId):
615
    if jacketNumber is None or jacketNumber <= 0:
615
    if jacketNumber is None or jacketNumber <= 0:
616
        raise TransactionServiceException(110, "Invalid jacket number")
616
        raise TransactionServiceException(110, "Invalid jacket number")
617
    
617
    
618
    if billedBy is None or billedBy.strip() == "":
618
    if billedBy is None or billedBy.strip() == "":
619
        raise TransactionServiceException(110, "Invalid Biller")
619
        raise TransactionServiceException(110, "Invalid Biller")
Line 628... Line 628...
628
            if itemNumber is None or itemNumber.strip() == "":
628
            if itemNumber is None or itemNumber.strip() == "":
629
                raise TransactionServiceException(110, "Invalid item number")
629
                raise TransactionServiceException(110, "Invalid item number")
630
 
630
 
631
            order.invoice_number = get_next_invoice_number()
631
            order.invoice_number = get_next_invoice_number()
632
            lineitem = order.lineitems[0]
632
            lineitem = order.lineitems[0]
633
            if lineitem.productGroup == "Handsets" and imeiNumber <= 0:
633
            if lineitem.productGroup == "Handsets" and not serialNumber:
634
                raise TransactionServiceException(110, "No IMEI number supplied for a handset.")
634
                raise TransactionServiceException(110, "No Serial Number supplied for a handset.")
635
            lineitem.item_number = itemNumber
635
            lineitem.item_number = itemNumber
636
            if imeiNumber > 0:
636
            if serialNumber:
637
                lineitem.imei_number = str(imeiNumber)
637
                lineitem.serial_number = serialNumber
638
        else:
638
        else:
639
            order.invoice_number = invoice_number
639
            order.invoice_number = invoice_number
640
        
640
        
641
        order.status = OrderStatus.BILLED
641
        order.status = OrderStatus.BILLED
642
        order.statusDescription = "Order Billed"
642
        order.statusDescription = "Order Billed"
Line 664... Line 664...
664
 
664
 
665
        # For Mahipal warehouse, we need to scan out items for every billed order
665
        # For Mahipal warehouse, we need to scan out items for every billed order
666
        if order.warehouse_id == 7:
666
        if order.warehouse_id == 7:
667
            try:
667
            try:
668
                warehouse_client = WarehouseClient().get_client()
668
                warehouse_client = WarehouseClient().get_client()
669
                inventoryItem = warehouse_client.getInventoryItem(str(imeiNumber))
669
                inventoryItem = warehouse_client.getInventoryItem(serialNumber)
670
                if (inventoryItem.itemId != item_id):
670
                if (inventoryItem.itemId != item_id):
671
                    item = catalog_client.getItem(inventoryItem.itemId)
671
                    item = catalog_client.getItem(inventoryItem.itemId)
672
                    lineitem = order.lineitems[0]
672
                    lineitem = order.lineitems[0]
673
                    scanItemString = " ".join([item.brand, item.modelName, item.modelNumber, item.color])
673
                    scanItemString = " ".join([item.brand, item.modelName, item.modelNumber, item.color])
674
                    lineItemString = " ".join([lineitem.brand, lineitem.model_name, lineitem.model_number, lineitem.color])
674
                    lineItemString = " ".join([lineitem.brand, lineitem.model_name, lineitem.model_number, lineitem.color])
675
                    raise TransactionServiceException(110, 'Trying to scan ' + scanItemString + ' instead of ' + lineItemString)
675
                    raise TransactionServiceException(110, 'Trying to scan ' + scanItemString + ' instead of ' + lineItemString)
676
                inventoryItem = warehouse_client.scanSerializedItemForOrder(str(imeiNumber), ScanType.SALE, orderId, order.warehouse_id)
676
                inventoryItem = warehouse_client.scanSerializedItemForOrder(serialNumber, ScanType.SALE, orderId, order.warehouse_id)
677
                lineitem.transfer_price = inventoryItem.unitPrice
677
                lineitem.transfer_price = inventoryItem.unitPrice
678
                order.vendorId = inventoryItem.supplierId
678
                order.vendorId = inventoryItem.supplierId
679
            except WarehouseServiceException as e:
679
            except WarehouseServiceException as e:
680
                print sys.exc_info()[0]
680
                print sys.exc_info()[0]
681
                print 'Could not scan out orders due to: ' + e.message
681
                print 'Could not scan out orders due to: ' + e.message
Line 1099... Line 1099...
1099
            warehouse_client = WarehouseClient().get_client()
1099
            warehouse_client = WarehouseClient().get_client()
1100
            lineitem = order.lineitems[0]
1100
            lineitem = order.lineitems[0]
1101
 
1101
 
1102
            # Inventory should not be updated for DOA returns 
1102
            # Inventory should not be updated for DOA returns 
1103
            if order.status == OrderStatus.RTO_IN_TRANSIT:
1103
            if order.status == OrderStatus.RTO_IN_TRANSIT:
1104
                warehouse_client.scanSerializedItemForOrder(str(lineitem.imei_number), ScanType.SALE_RET, order.id, order.warehouse_id)
1104
                warehouse_client.scanSerializedItemForOrder(lineitem.serial_number, ScanType.SALE_RET, order.id, order.warehouse_id)
1105
                # In case of RTOs increasing availibility only if we receive item in prestine state
1105
                # In case of RTOs increasing availibility only if we receive item in prestine state
1106
                if not receiveCondition:
1106
                if not receiveCondition:
1107
                    catalog_client = CatalogClient().get_client()
1107
                    catalog_client = CatalogClient().get_client()
1108
                    catalog_client.addInventory(lineitem.item_id, order.warehouse_id, lineitem.quantity)
1108
                    catalog_client.addInventory(lineitem.item_id, order.warehouse_id, lineitem.quantity)
1109
            elif order.status in [OrderStatus.DOA_PICKUP_CONFIRMED, OrderStatus.DOA_RETURN_IN_TRANSIT]:
1109
            elif order.status in [OrderStatus.DOA_PICKUP_CONFIRMED, OrderStatus.DOA_RETURN_IN_TRANSIT]:
1110
                warehouse_client.scanSerializedItemForOrder(str(lineitem.imei_number), ScanType.DOA_IN, order.id, order.warehouse_id)
1110
                warehouse_client.scanSerializedItemForOrder(lineitem.serial_number, ScanType.DOA_IN, order.id, order.warehouse_id)
1111
        except:
1111
        except:
1112
            print sys.exc_info()[0]
1112
            print sys.exc_info()[0]
1113
            print 'Could not scan in sales return orders'
1113
            print 'Could not scan in sales return orders'
1114
 
1114
 
1115
    if order.status in [OrderStatus.DOA_PICKUP_CONFIRMED, OrderStatus.DOA_RETURN_IN_TRANSIT]:
1115
    if order.status in [OrderStatus.DOA_PICKUP_CONFIRMED, OrderStatus.DOA_RETURN_IN_TRANSIT]: