Subversion Repositories SmartDukaan

Rev

Rev 9805 | Rev 12654 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/usr/bin/python
# coding: ascii
'''
This script is used to load item details in the catalog database.
It's now mostly used for Accessories since they come in huge numbers.

@author: Chandranshu
'''
from elixir import *
from shop2020.thriftpy.model.v1.catalog.ttypes import Item
import csv
import datetime
from datetime import timedelta
import optparse
import xlrd
from shop2020.clients.CatalogClient import CatalogClient
from shop2020.clients.InventoryClient import InventoryClient
from shop2020.thriftpy.model.v1.inventory.ttypes import VendorItemPricing
from shop2020.utils.Utils import to_java_date
from shop2020.utils.EmailAttachmentSender import mail

if __name__ == '__main__' and __package__ is None:
    import sys
    import os
    sys.path.insert(0, os.getcwd())


def load_item_data(filename):
    workbook = xlrd.open_workbook(filename)
    sheet = workbook.sheet_by_index(0)
    num_rows = sheet.nrows
    updatedOn = to_java_date(datetime.datetime.now())
    cclient = CatalogClient().get_client()
    iclient = InventoryClient().get_client()
        
    for rownum in range(1, num_rows):
        print sheet.row_values(rownum)
        message = ""
        try:
            product_group, brand, model_number, model_name, color, mrp, sp, mop, dp, tp, nlc, start_date, preferred_vendor, risky, weight, item_type = sheet.row_values(rownum)[0:16]
            
            if isinstance(model_number, float):
                model_number = str(int(model_number))
            
            
            item = Item()
            item.productGroup = product_group
            item.brand = brand
            item.modelNumber = model_number
            item.modelName = model_name
            item.color = color
            item.mrp = round(mrp)
            item.sellingPrice = round(sp)
            item.startDate = long(to_java_date(datetime.datetime(1899, 12, 30) + timedelta(days=int(start_date))))
            item.preferredInsurer = preferred_vendor
            item.risky = risky
            item.weight = weight
            item.updatedOn = updatedOn
            item.type = int(item_type)
            for c in (1,2,3,4,5):
                try:
                    item_id = cclient.addItem(item)
                    break
                except Exception as e:
                    cclient = CatalogClient().get_client()       
            
            vip = VendorItemPricing()
            vip.itemId = item_id
            vip.dealerPrice = round(dp)
            vip.mop = round(mop)
            vip.nlc = round(nlc)
            vip.transferPrice = round(tp)
            vip.vendorId = preferred_vendor
            for c in (1,2,3,4,5):
                try:
                    iclient.addVendorItemPricing(vip)
                    break
                except Exception as e:
                    iclient = InventoryClient().get_client()
                    
        except Exception as e:
            message = message + "\t" + str(brand) + "\t" + str(model_name) + "\t" + str(model_number) + "\t" + str(e.message) + "\n"
    
    mail("build@shop2020.in", "cafe@nes", ["amit.gupta@shop2020.in", "chandan.kumar@shop2020.in"], "Problem while adding items", message, [], [], [])    
    print "Successfully updated the item list information."


def main():
    parser = optparse.OptionParser()
    parser.add_option("-f", "--file", dest="filename",
                   default="ItemList.xls", type="string",
                   help="Read the item list from FILE",
                   metavar="FILE")
    (options, args) = parser.parse_args()
    if len(args) != 0:
        parser.error("You've supplied extra arguments. Are you sure you want to run this program?")
    filename = options.filename
    load_item_data(filename)

if __name__ == '__main__':
    main()