Пример #1
0
def writeOrd():
    if state == 0:
        customerType = custTypeVar.get()
    else:
        for key in newOrderDict:
            custKey = key
            customerType = fileOps.getStockistType(custKey)
    print "Writing new order to file"
    print "-------------------------"
    print newOrderDict
    temp = int(fileOps.getNextOrderID())
    temp = str(temp + 1)
    fileOps.writeRecordQuant(newOrderDict, temp, customerType)
    summaryLabelVar.set("New Order Saved")
    newCustProductsVar.set("")
    if state == 0:
        addOrder()
    if state == 1:
        showMain()
Пример #2
0
def writeOrd():
	if state == 0:
		customerType = custTypeVar.get()
	else:
		for key in newOrderDict:
			custKey = key
			customerType = fileOps.getStockistType(custKey)
	print "Writing new order to file"
	print "-------------------------"
	print newOrderDict
	temp = int(fileOps.getNextOrderID())
	temp = str(temp+1)
	fileOps.writeRecordQuant(newOrderDict,temp,customerType)
	summaryLabelVar.set("New Order Saved")
	newCustProductsVar.set("")
	if state == 0:
		addOrder()
	if state == 1:
		showMain()
Пример #3
0
def main():
    forgetFrames()
    global newOrderDict
    newOrderDict = {}
    customerProducts = []
    orderSimilarity = {}

    custID = custEntry.get()
    custType = fileOps.getStockistType("c" + custID)
    print custType
    print '++=========++'
    for key, prods in orders.iteritems():
        if "c" + custID == key:
            #Once we've find the customer, we've got our list of products and can break the loop.
            customerProducts += prods
            print customerProducts

    print '----------'

    for key, prods in orders.iteritems():

        if custID != key:
            customerProducts = set(customerProducts)
            prods = set(prods)

            extraProducts = customerProducts ^ prods  #Xor
            extraProducts = prods & extraProducts
            similarProducts = prods & customerProducts  #interseciton
            #Output
            print ""
            print "Checking customer " + str(key)
            print "  Number of extra products: " + str(len(extraProducts))
            print "  Number of similar products: " + str(len(similarProducts))

            if (len(similarProducts) != 0 and len(extraProducts) != 0):
                temp1 = len(similarProducts) * len(similarProducts)
                temp2 = len(prods) * len(prods)
                sim = math.sqrt(float(temp1) / float(temp2))
                orderSimilarity[key] = sim

    print "-----"
    summaryLabelVar.set("Summary for customer c" + custID)
    summaryLabelVar2.set("Number of similar orders: " +
                         str(len(orderSimilarity)))
    mostSimOrder = 0
    for key, sim in orderSimilarity.iteritems():
        if sim > mostSimOrder:
            mostSimOrder = sim
            keyToSearch = key
    summaryLabelVar3.set("The most Similar order is [" + keyToSearch + "] = " +
                         str(mostSimOrder))
    #Stockist Type sim
    mostSimType = fileOps.getStockistType(keyToSearch)
    stockistSim = stockist[custType][mostSimType]

    #print "probability of wanting the extra item:"
    for key, prods in orders.iteritems():
        if key == keyToSearch:
            prods = set(prods)
            extraProducts = prods ^ customerProducts
            extraProducts = prods & extraProducts
            print "Extra Products " + str(extraProducts)
            similarProducts = prods & customerProducts
            if len(extraProducts) != 0:
                if v.get() == 0:
                    for extraProd in extraProducts:
                        extraProdCat = fileOps.getProductCat(extraProd)
                        extraProdSim = 0

                        for simProd in similarProducts:
                            simProdCat = fileOps.getProductCat(simProd)
                            extraProdSim += category[simProdCat][extraProdCat]

                        extraProdSim = extraProdSim / len(similarProducts)
                        print "sim for :" + extraProd + ":" + str(extraProdSim)
                        if extraProdSim > similarityThreshold:
                            newOrderDict.setdefault("c" + custID, [])
                            newOrderDict["c" + custID].append(extraProd)
                            #print "_______________"
                            #print newOrderDict
                else:
                    for extraProd in extraProducts:
                        newOrderDict.setdefault("c" + custID, [])
                        newOrderDict["c" + custID].append(extraProd)
    print "========="
    suggestLabelVar.set("Suggesting new order of:" + str(newOrderDict))
    suggestLabelVar2.set("Order Ok ?:")
    summaryFrame.pack()
    ordOptionsFrame.pack()
Пример #4
0
def main():
    orders = fileOps.openCsvDebugAmount("casesDebug.csv")
    forgetFrames()
    global newOrderDict
    newOrderDict = {}
    customerProducts[:] = []
    customerProductsSet = set()
    orderSimilarity = {}

    custID = custEntry.get()
    custType = fileOps.getStockistType("c" + custID)
    print custType
    print '++=========++'
    for key, prods in orders.iteritems():
        if "c" + custID == key:
            for prod in prods:
                print prod[0]
                #Once we've find the customer, we've got our list of products and can break the loop.
                customerProducts.append(prod[0])
                print "+++" + str(customerProducts)

    print '----------'

    for key, prods in orders.iteritems():

        if custID != key:
            prodArr[:] = []
            customerProductsSet = set(customerProducts)
            for prod in prods:
                prodArr.append(prod[0])
            prodSet = set(prodArr)
            extraProducts = customerProductsSet ^ prodSet  #Xor
            extraProducts = prodSet & extraProducts
            similarProducts = prodSet & customerProductsSet  #interseciton
            #Output
            print ""
            print "Checking customer " + str(key)
            print "  Number of extra products: " + str(len(extraProducts))
            print "  Number of similar products: " + str(len(similarProducts))

            if (len(similarProducts) != 0 and len(extraProducts) != 0):
                temp1 = len(similarProducts) * len(similarProducts)
                temp2 = len(prodSet) * len(prodSet)
                sim = math.sqrt(float(temp1) / float(temp2))
                orderSimilarity[key] = sim

    print "-----"
    summaryLabelVar.set("Summary for customer c" + custID)
    summaryLabelVar2.set("Number of similar orders: " +
                         str(len(orderSimilarity)))
    mostSimOrder = 0
    for key, sim in orderSimilarity.iteritems():
        if sim > mostSimOrder:
            mostSimOrder = sim
            keyToSearch = key
    summaryLabelVar3.set("The most Similar order is [" + keyToSearch + "] = " +
                         str(mostSimOrder))
    #Stockist Type sim
    mostSimType = fileOps.getStockistType(keyToSearch)
    stockistSim = stockist[custType][mostSimType]
    #clear arrays
    prodArr[:] = []
    amountArr[:] = []
    #print "probability of wanting the extra item:"
    for key, prods in orders.iteritems():
        if key == keyToSearch:
            for prod in prods:
                prodArr.append(prod[0])
            prodSet = set(prodArr)
            extraProducts = prodSet ^ customerProductsSet
            extraProducts = prodSet & extraProducts
            print "Extra Products " + str(extraProducts)
            similarProducts = prodSet & customerProductsSet

            if len(extraProducts) != 0:
                if v.get() == 0:
                    #get amounts
                    for extraProd in extraProducts:
                        extraProdCat = fileOps.getProductCat(extraProd)
                        extraProdSim = 0
                        for simProd in similarProducts:
                            simProdCat = fileOps.getProductCat(simProd)
                            extraProdSim += category[simProdCat][extraProdCat]

                        extraProdSim = extraProdSim / len(similarProducts)
                        print "sim for :" + extraProd + ":" + str(extraProdSim)
                        if extraProdSim > similarityThreshold:
                            newOrderDict.setdefault("c" + custID, [])
                            for prod in prods:
                                if prod[0] == extraProd:
                                    amountArr.append(
                                        int(float(prod[1]) * stockistSim))
                                    newOrderDict["c" + custID].append([
                                        extraProd,
                                        int(float(prod[1]) * stockistSim)
                                    ])
                            #print "_______________"
                            #print newOrderDict
                else:
                    for extraProd in extraProducts:
                        newOrderDict.setdefault("c" + custID, [])
                        for prod in prods:
                            if prod[0] == extraProd:
                                amountArr.append(
                                    int(float(prod[1]) * stockistSim))
                                newOrderDict["c" + custID].append([
                                    extraProd,
                                    int(float(prod[1]) * stockistSim)
                                ])

    print "========="
    print str(amountArr)
    suggestLabelVar.set("Suggesting new order of:" + str(newOrderDict))
    suggestLabelVar2.set("Order Ok ?:")
    summaryFrame.pack()
    ordOptionsFrame.pack()
Пример #5
0
def main():
	forgetFrames()
	global newOrderDict
	newOrderDict = {}
	customerProducts = []
	orderSimilarity = {}
	 
	custID = custEntry.get()
	custType = fileOps.getStockistType("c"+custID)
	print custType
	print '++=========++' 
	for key, prods in orders.iteritems():
		if "c" + custID == key:
			#Once we've find the customer, we've got our list of products and can break the loop.
			customerProducts += prods
			print customerProducts
	 
	print '----------'

	for key, prods in orders.iteritems():
	 
		if custID != key:
			customerProducts = set(customerProducts)
			prods = set(prods)
	 
			extraProducts = customerProducts ^ prods	#Xor
			extraProducts = prods & extraProducts
	 		similarProducts = prods & customerProducts	#interseciton
			#Output
			print ""
			print "Checking customer " + str(key)
			print "  Number of extra products: " + str(len(extraProducts))		
			print "  Number of similar products: " + str(len(similarProducts))
	 
			if(len(similarProducts)!= 0 and len(extraProducts)!=0):
				temp1 = len(similarProducts)*len(similarProducts)
				temp2 = len(prods)*len(prods)
				sim = math.sqrt(float(temp1)/float(temp2))
				orderSimilarity[key] = sim 
	 
	print "-----"
	summaryLabelVar.set("Summary for customer c" + custID)
	summaryLabelVar2.set("Number of similar orders: " + str(len(orderSimilarity)))
	mostSimOrder = 0
	for key, sim in orderSimilarity.iteritems():
		if sim > mostSimOrder:
			mostSimOrder = sim
			keyToSearch = key
	summaryLabelVar3.set("The most Similar order is ["+keyToSearch+"] = " + str(mostSimOrder))
	#Stockist Type sim
	mostSimType = fileOps.getStockistType(keyToSearch)
	stockistSim = stockist[custType][mostSimType]

	#print "probability of wanting the extra item:"
	for key, prods in orders.iteritems():
		if key == keyToSearch:
			prods = set(prods)
			extraProducts = prods ^ customerProducts
			extraProducts = prods & extraProducts
			print "Extra Products " + str(extraProducts)
			similarProducts = prods & customerProducts
			if len(extraProducts) != 0:
				if v.get() == 0:
					for extraProd in extraProducts:
						extraProdCat = fileOps.getProductCat(extraProd)
						extraProdSim = 0

						for simProd in similarProducts:
							simProdCat = fileOps.getProductCat(simProd)
							extraProdSim += category[simProdCat][extraProdCat]

						extraProdSim = extraProdSim / len(similarProducts)
						print "sim for :" + extraProd + ":"+ str(extraProdSim)
						if extraProdSim > similarityThreshold:
							newOrderDict.setdefault("c"+custID, [])
							newOrderDict["c"+custID].append(extraProd)
							#print "_______________"
							#print newOrderDict
				else:
					for extraProd in extraProducts:
						newOrderDict.setdefault("c"+custID, [])
						newOrderDict["c"+custID].append(extraProd)
	print "========="
	suggestLabelVar.set("Suggesting new order of:"+str(newOrderDict))
	suggestLabelVar2.set("Order Ok ?:")
	summaryFrame.pack()
	ordOptionsFrame.pack()
Пример #6
0
def main():
	orders = fileOps.openCsvDebugAmount("casesDebug.csv")
	forgetFrames()
	global newOrderDict
	newOrderDict = {}
	customerProducts[:] = []
	customerProductsSet = set()
	orderSimilarity = {}
	 
	custID = custEntry.get()
	custType = fileOps.getStockistType("c"+custID)
	print custType
	print '++=========++' 
	for key, prods in orders.iteritems():
		if "c" + custID == key:
			for prod in prods:
				print prod[0]
		#Once we've find the customer, we've got our list of products and can break the loop.
				customerProducts.append(prod[0])
				print "+++"+str(customerProducts)

	 
	print '----------'

	for key, prods in orders.iteritems():
	 
		if custID != key:
			prodArr[:] = []
			customerProductsSet = set(customerProducts)
			for prod in prods:
				prodArr.append(prod[0])
			prodSet = set(prodArr)
			extraProducts = customerProductsSet ^ prodSet	#Xor
			extraProducts = prodSet & extraProducts
	 		similarProducts = prodSet & customerProductsSet	#interseciton
			#Output
			print ""
			print "Checking customer " + str(key)
			print "  Number of extra products: " + str(len(extraProducts))		
			print "  Number of similar products: " + str(len(similarProducts))
	 
			if(len(similarProducts)!= 0 and len(extraProducts)!=0):
				temp1 = len(similarProducts)*len(similarProducts)
				temp2 = len(prodSet)*len(prodSet)
				sim = math.sqrt(float(temp1)/float(temp2))
				orderSimilarity[key] = sim 
	 
	print "-----"
	summaryLabelVar.set("Summary for customer c" + custID)
	summaryLabelVar2.set("Number of similar orders: " + str(len(orderSimilarity)))
	mostSimOrder = 0
	for key, sim in orderSimilarity.iteritems():
		if sim > mostSimOrder:
			mostSimOrder = sim
			keyToSearch = key
	summaryLabelVar3.set("The most Similar order is ["+keyToSearch+"] = " + str(mostSimOrder))
	#Stockist Type sim
	mostSimType = fileOps.getStockistType(keyToSearch)
	stockistSim = stockist[custType][mostSimType]
	#clear arrays
	prodArr[:] = []
	amountArr[:] = []
	#print "probability of wanting the extra item:"
	for key, prods in orders.iteritems():
		if key == keyToSearch:
			for prod in prods:
				prodArr.append(prod[0])
			prodSet = set(prodArr)
			extraProducts = prodSet ^ customerProductsSet
			extraProducts = prodSet & extraProducts
			print "Extra Products " + str(extraProducts)
			similarProducts = prodSet & customerProductsSet

			if len(extraProducts) != 0:
				if v.get() == 0:
					#get amounts
					for extraProd in extraProducts:
						extraProdCat = fileOps.getProductCat(extraProd)
						extraProdSim = 0
						for simProd in similarProducts:
							simProdCat = fileOps.getProductCat(simProd)
							extraProdSim += category[simProdCat][extraProdCat]

						extraProdSim = extraProdSim / len(similarProducts)
						print "sim for :" + extraProd + ":"+ str(extraProdSim)
						if extraProdSim > similarityThreshold:
							newOrderDict.setdefault("c"+custID, [])
							for prod in prods:
								if prod[0] == extraProd:
									amountArr.append(int(float(prod[1])*stockistSim))
									newOrderDict["c"+custID].append([extraProd,int(float(prod[1])*stockistSim)])
							#print "_______________"
							#print newOrderDict
				else:
					for extraProd in extraProducts:
						newOrderDict.setdefault("c"+custID, [])
						for prod in prods:
							if prod[0] == extraProd:
								amountArr.append(int(float(prod[1])*stockistSim))
								newOrderDict["c"+custID].append([extraProd,int(float(prod[1])*stockistSim)])
						
						
	print "========="
	print str(amountArr)
	suggestLabelVar.set("Suggesting new order of:"+str(newOrderDict))
	suggestLabelVar2.set("Order Ok ?:")
	summaryFrame.pack()
	ordOptionsFrame.pack()