Subversion Repositories SmartDukaan

Rev

Rev 23617 | Blame | Compare with Previous | Last modification | View Log | RSS feed

'''
Created on 23-Mar-2010

@author: ashish
'''
from shop2020.thriftpy.model.v1.inventory.ttypes import ItemInventory, Warehouse, \
    VendorItemPricing, Vendor, VendorItemMapping, StateInfo, InventoryType, \
    WarehouseType, IgnoredInventoryUpdateItems as TIgnoredinventoryupdateitems, \
    ItemStockPurchaseParams, OOSStatus, \
    AmazonInventorySnapshot as TAmazonInventorySnapshot, \
    AmazonFbaInventorySnapshot as TAmazonFbaInventorySnapshot, \
    SnapdealInventoryItem as TSnapdealInventoryItem, \
    HoldInventoryDetail as THoldInventoryDetail, \
    ItemLocationAvailability as TItemLocationAvailability, \
    FlipkartInventorySnapshot as TFlipkartInventorySnapshot, \
    StockWeightedNlcInfo as TStockWeightedNlcInfo
from shop2020.utils.Utils import to_java_date

def to_t_item_inventory(item_inventory_list, item_id):
    t_item_inventory = ItemInventory()
    t_item_inventory.id = item_id
    t_item_inventory.availability = {}
    t_item_inventory.reserved = {}
    t_item_inventory.held = {}
    for inventory_item in item_inventory_list:
        t_item_inventory.availability[inventory_item.warehouse.id] = inventory_item.availability
        t_item_inventory.reserved[inventory_item.warehouse.id] = inventory_item.reserved
        t_item_inventory.held[inventory_item.warehouse.id] = inventory_item.held
#        need review again        
#        if inventory_item.checkedOn:
#            t_item_inventory.lastCheckedOn = to_java_date(inventory_item.checkedOn)
    return t_item_inventory

def to_t_warehouse(warehouse):
    t_warehouse = Warehouse()
    t_warehouse.id = warehouse.id
    t_warehouse.displayName = warehouse.displayName
    t_warehouse.location = warehouse.location
    t_warehouse.tinNumber = warehouse.tinNumber
    t_warehouse.gstin = warehouse.gstin
    t_warehouse.pincode = warehouse.pincode
    t_warehouse.billingType = warehouse.billingType
    t_warehouse.vendor = to_t_vendor(warehouse.vendor)
    t_warehouse.billingWarehouseId = warehouse.billingWarehouseId
    t_warehouse.shippingWarehouseId = warehouse.shippingWarehouseId
    t_warehouse.isAvailabilityMonitored = warehouse.isAvailabilityMonitored
    t_warehouse.transferDelayInHours = warehouse.transferDelayInHours
    t_warehouse.stateId = warehouse.state_id
    t_warehouse.logisticsLocation = warehouse.logisticsLocation
    t_warehouse.inventoryType = InventoryType._NAMES_TO_VALUES[warehouse.inventoryType]
    t_warehouse.warehouseType = WarehouseType._NAMES_TO_VALUES[warehouse.warehouseType]
    if warehouse.vendorString:
        t_warehouse.vendorString = warehouse.vendorString
    if warehouse.addedOn:
        t_warehouse.addedOn = to_java_date(warehouse.addedOn)
    if warehouse.lastCheckedOn:
        t_warehouse.lastCheckedOn = to_java_date(warehouse.lastCheckedOn)
    t_warehouse.source = warehouse.source
    return t_warehouse

def to_t_itemidwarehouseid(iidwid):
    t_iidwid = TIgnoredinventoryupdateitems()
    t_iidwid.itemId = iidwid.item_id
    t_iidwid.warehouseId = iidwid.warehouse_id
    return t_iidwid

def to_t_state(state):
    t_state = StateInfo()
    t_state.id = state.id
    t_state.stateName = state.name
    t_state.vatType = 0
    t_state.stateCode = state.stateCode
    t_state.shortName = state.shortName
    return t_state

def to_t_vendor(vendor):
    t_vendor = Vendor()
    t_vendor.id = vendor.id
    t_vendor.name = vendor.name
    return t_vendor

def to_t_vendor_item_pricing(vendor_item_pricing):
    t_vendor_item_pricing = VendorItemPricing()
    t_vendor_item_pricing.vendorId = vendor_item_pricing.vendor.id
    t_vendor_item_pricing.itemId = vendor_item_pricing.item_id
    t_vendor_item_pricing.transferPrice = vendor_item_pricing.transfer_price
    t_vendor_item_pricing.nlc = vendor_item_pricing.nlc
    t_vendor_item_pricing.dealerPrice = vendor_item_pricing.dealerPrice
    t_vendor_item_pricing.mop = vendor_item_pricing.mop
    return t_vendor_item_pricing

def to_t_vendor_item_mapping(vendor_item_mapping):
    t_vendor_item_mapping = VendorItemMapping()
    t_vendor_item_mapping.vendorId = vendor_item_mapping.vendor.id
    t_vendor_item_mapping.itemId = vendor_item_mapping.item_id
    t_vendor_item_mapping.itemKey = vendor_item_mapping.item_key
    return t_vendor_item_mapping

def to_t_item_stock_purchase_params(item_stock_purchase_params):
    t_item_stock_purchase_params = ItemStockPurchaseParams()
    if item_stock_purchase_params is None:
        return t_item_stock_purchase_params 
    t_item_stock_purchase_params.item_id = item_stock_purchase_params.item_id
    t_item_stock_purchase_params.numOfDaysStock = item_stock_purchase_params.numOfDaysStock
    t_item_stock_purchase_params.minStockLevel = item_stock_purchase_params.minStockLevel
    return t_item_stock_purchase_params

def to_t_oos_status(oos_status):
    t_oos_status = OOSStatus()
    t_oos_status.item_id = oos_status.item_id
    t_oos_status.date = to_java_date(oos_status.date)
    t_oos_status.is_oos = oos_status.is_oos
    t_oos_status.num_orders = oos_status.num_orders
    t_oos_status.rto_orders = oos_status.rto_orders
    t_oos_status.sourceId = oos_status.sourceId
    return t_oos_status

def to_t_amazon_inventory_snapshot(AmazonInventorySnapshot):
    t_amazon_inventory_snapshot = TAmazonInventorySnapshot()
    t_amazon_inventory_snapshot.item_id = AmazonInventorySnapshot.item_id
    t_amazon_inventory_snapshot.availability = AmazonInventorySnapshot.availability
    t_amazon_inventory_snapshot.reserved = AmazonInventorySnapshot.reserved
    return t_amazon_inventory_snapshot

def to_t_amazon_fba_inventory_snapshot(AmazonFbaInventorySnapshot):
    t_amazon_inventory_snapshot = TAmazonFbaInventorySnapshot()
    if AmazonFbaInventorySnapshot is None:
        return t_amazon_inventory_snapshot 
    t_amazon_inventory_snapshot.item_id = AmazonFbaInventorySnapshot.item_id
    t_amazon_inventory_snapshot.availability = AmazonFbaInventorySnapshot.availability
    t_amazon_inventory_snapshot.location = AmazonFbaInventorySnapshot.location
    t_amazon_inventory_snapshot.reserved = AmazonFbaInventorySnapshot.reserved
    t_amazon_inventory_snapshot.inbound = AmazonFbaInventorySnapshot.inbound
    t_amazon_inventory_snapshot.unfulfillable = AmazonFbaInventorySnapshot.unfulfillable
    return t_amazon_inventory_snapshot

def to_t_snapdeal_inventory_snapshot(snapdealInventoryItem):
    t_snapdeal_inventory_snapshot = TSnapdealInventoryItem()
    if snapdealInventoryItem is None:
        return t_snapdeal_inventory_snapshot 
    t_snapdeal_inventory_snapshot.item_id = snapdealInventoryItem.item_id 
    t_snapdeal_inventory_snapshot.availability = snapdealInventoryItem.availability
    t_snapdeal_inventory_snapshot.pendingOrders = snapdealInventoryItem.pendingOrders
    t_snapdeal_inventory_snapshot.lastUpdatedOnSnapdeal = to_java_date(snapdealInventoryItem.lastUpdatedOnSnapdeal)
    return t_snapdeal_inventory_snapshot

def to_t_hold_inventory_detail(holdInventoryDetail):
    t_hold_inventory_detail = THoldInventoryDetail()
    if holdInventoryDetail:
        t_hold_inventory_detail.item_id = holdInventoryDetail.item_id
        t_hold_inventory_detail.warehouse_id = holdInventoryDetail.warehouse_id
        t_hold_inventory_detail.source = holdInventoryDetail.source
        t_hold_inventory_detail.held = holdInventoryDetail.held
    return t_hold_inventory_detail

def to_t_flipkart_inventory_snapshot(flipkartInventoryItem):
    t_flipkart_inventory_snapshot = TFlipkartInventorySnapshot()
    if flipkartInventoryItem is None:
        return t_flipkart_inventory_snapshot 
    t_flipkart_inventory_snapshot.item_id = flipkartInventoryItem.item_id 
    t_flipkart_inventory_snapshot.availability = flipkartInventoryItem.availability
    t_flipkart_inventory_snapshot.heldOrders = flipkartInventoryItem.heldOrders
    t_flipkart_inventory_snapshot.createdOrders = flipkartInventoryItem.createdOrders
    return t_flipkart_inventory_snapshot

def to_t_stock_weighted_nlc_info(stockWeightedNlcInfo):
    t_stock_weighted_nlc_info = TStockWeightedNlcInfo()
    t_stock_weighted_nlc_info.itemId = stockWeightedNlcInfo.itemId
    t_stock_weighted_nlc_info.source = stockWeightedNlcInfo.source
    t_stock_weighted_nlc_info.updatedTimestamp  = to_java_date(stockWeightedNlcInfo.updatedTimestamp)
    t_stock_weighted_nlc_info.stockQuantity = stockWeightedNlcInfo.stockQuantity
    t_stock_weighted_nlc_info.grnDetail = stockWeightedNlcInfo.grnDetail
    t_stock_weighted_nlc_info.avgWeightedNlc = stockWeightedNlcInfo.avgWeightedNlc
    return t_stock_weighted_nlc_info

def to_t_item_location_availability(itemLocationAvailabilityCache):
    t_item_location_availability = TItemLocationAvailability()
    t_item_location_availability.itemId = itemLocationAvailabilityCache.item_id
    t_item_location_availability.locationId = itemLocationAvailabilityCache.location_id
    t_item_location_availability.physicalQty = itemLocationAvailabilityCache.physical_availability
    t_item_location_availability.virtualQty = itemLocationAvailabilityCache.virtual_availability
    t_item_location_availability.minTransferDelay = itemLocationAvailabilityCache.min_transfer_delay
    t_item_location_availability.virtualQty = itemLocationAvailabilityCache.max_transfer_delay
    return t_item_location_availability