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()
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()
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()
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()
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()
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()