def verify_calc(self, item, item_quantity): """Подсобная функция для работы функции verify(). Проверяет наличие на складе ингредиентов, входящих в сложный товар на момент продажи. В случае недостатка предлагает совершить мгновенный приход товара. Возвращает True или False в зависимости от итогового наличия необходиомого количества товара на складе для продажи.""" result = True for calc in queries.item_calculation(item): if calc.ingredient.calculation: for calc2 in queries.item_calculation(calc.ingredient): quantity = int(queries.items_in_storage( calc2.ingredient)) need_quantity = (item_quantity * calc2.quantity * calc.quantity) if quantity < need_quantity: if tkMessageBox.askyesno(u'Внимание!', u'Вы пытаетесь продать %d единицы товара "%s".' % (need_quantity, calc2.ingredient.name) + u'\nНа складе имеется всего %d единицы!'% quantity + u'\nВыполнить мгновенную поставку товара?'): incoming = panel() if not queries.execute_incoming_express( calc2.ingredient, incoming) or (need_quantity > incoming + quantity): result = False else: result = False else: quantity = int(queries.items_in_storage(calc.ingredient)) need_quantity = item_quantity * calc.quantity if quantity < need_quantity: if tkMessageBox.askyesno(u'Внимание!', u'Вы пытаетесь продать %d единицы товара "%s".' % (need_quantity, calc.ingredient.name) + u'\nНа складе имеется всего %d единицы!'% quantity + u'\nВыполнить мгновенную поставку товара?'): incoming = panel() if not queries.execute_incoming_express( calc.ingredient, incoming) or (need_quantity > incoming + quantity): result = False else: result = False return result
def listbox_fill(): """Функция заполнения списков товаров и ингредиентов""" for q in range(len(assortiment)): # Очищаем список товаров del(assortiment[0]) listbox_goods.delete(0, END) cath = [] for item in queries.composites(): if item.cathegory.name not in cath: cath.append(item.cathegory.name) assortiment.append(None) head = '-' * (CONTROL_2_WIDTH - len(cath[-1])-1)+cath[-1] + u'-' listbox_goods.insert(END, head) assortiment.append(item) listbox_goods.insert(END, ' ' + item.name) if not item.show: listbox_goods.itemconfig(END, {'fg':'grey'}) elif not queries.item_calculation(item): listbox_goods.itemconfig(END, {'fg':'red'}) for q in range(len(ingredients)): # Очищаем список ингредиентов del(ingredients[0]) listbox_ingr.delete(0, END) for item in queries.items_in_cathegory(None): ingredients.append(item) string = u' %-' + unicode(CONTROL_2_WIDTH - 6) + u's%-5s' listbox_ingr.insert(END, string % (item.name, item.measure))
def listbox_calc_fill(item): """Функция заполнения списка калькуляций ингредиентами""" for q in range(len(calculation)): # Очищаем список калькуляций del(calculation[0]) listbox_calc.delete(0, END) for calc in queries.item_calculation(item): calculation.append(calc) string = u'%-' + unicode(CONTROL_3_WIDTH - 14) + 's %-5d %-5s' listbox_calc.insert(END, string % (calc.ingredient.name, calc.quantity, calc.ingredient.measure))
def calc_fill(item): """Функция заполнения списка калькуляций ингредиентами""" for q in range(len(calculation)): # Очищаем список калькуляций del(calculation[0]) listbox_calc.delete(0, END) for calc in queries.item_calculation(item): calculation.append(calc) string = u' %-' + unicode(CONTROL_6_WIDTH - 6) + 's %-5d' listbox_calc.insert(END, string % (calc.ingredient.name, calc.quantity)) if not calc.ingredient.show: listbox_calc.itemconfig(END, {'fg':'grey'})
def sales_fill(): """Функция заполнения списка акционных товаров""" for q in range(len(sales_assortiment)): # Очищаем список товаров del(sales_assortiment[0]) listbox_sales.delete(0, END) for item in queries.sales_items(): sales_assortiment.append(item) listbox_sales.insert(END, ' ' + item.name) if not queries.item_calculation(item): listbox_sales.itemconfig(END, {'fg':'red'}) elif queries.actual_sales_item(item): listbox_sales.itemconfig(END, {'fg':'#9900BB'})
def verify_calc(self, item, item_quantity): """Подсобная функция для работы функции verify(). Проверяет наличие на складе ингредиентов, входящих в сложный товар на момент списания. Возвращает True или False в зависимости от наличия необходиомого количества товара на складе для списания.""" result = True for calc in queries.item_calculation(item): if calc.ingredient.calculation: for calc2 in queries.item_calculation(calc.ingredient): quantity = int(queries.items_in_storage( calc2.ingredient)) need_quantity = (item_quantity * calc2.quantity * calc.quantity) if quantity < need_quantity: tkMessageBox.showwarning(u'Внимание!', u'Вы пытаетесь списать %d единицы товара "%s".' % (need_quantity, calc2.ingredient.name) + u'\nНа складе имеется всего %d единицы!'% quantity) result = False else: quantity = int(queries.items_in_storage(calc.ingredient)) need_quantity = item_quantity * calc.quantity if quantity < need_quantity: tkMessageBox.showwarning(u'Внимание!', u'Вы пытаетесь списать %d единицы товара "%s".' % (need_quantity, calc.ingredient.name) + u'\nНа складе имеется всего %d единицы!'% quantity) result = False return result