def b_verify(self): """Срабатывает при нажатии кнопки "Сверить список". Проводит предварительную сверку количества товаров.""" if tkMessageBox.askokcancel('Внимание!', 'Вы действительно хотите сверить список со складом?'): self.button_del.configure(state=NORMAL) for cath in queries.cathegories(): for eat in queries.real_items_in_cathegory_shown(cath): storage_quantity = int(queries.items_in_storage(eat)) if storage_quantity and (eat not in self.bill): self.bill.append(eat) self.quantity.append(0) string = u' %-' + unicode(VERIFY_WIDTH - 30) + u's %8d %3s (%s %3s)' string = string % (eat.name, 0, eat.measure, storage_quantity, eat.measure) self.listbox.insert(END, string) self.listbox.itemconfig(END, {'fg':'red'}) #и для Ингредиентов for eat in queries.real_items_in_cathegory_shown(None): storage_quantity = int(queries.items_in_storage(eat)) if storage_quantity and (eat not in self.bill): self.bill.append(eat) self.quantity.append(0) string = u' %-' + unicode(VERIFY_WIDTH - 30) + u's %8d %3s (%s %3s)' string = string % (eat.name, 0, eat.measure, storage_quantity, eat.measure) self.listbox.insert(END, string) self.listbox.itemconfig(END, {'fg':'red'})
def assortiment_fill(): """Функция заполнения списков товаров/ингредиентов""" for q in range(len(assortiment)): # Очищаем список товаров del(assortiment[0]) listbox_goods.delete(0, END) for cath in queries.cathegories(): assortiment.append(None) listbox_goods.insert(END, '') assortiment.append(None) head = '-' * (REPORT_WIDTH - len(cath.name) -1) + cath.name + u'-' listbox_goods.insert(END, head) for item in queries.items_in_cathegory(cath): assortiment.append(item) listbox_goods.insert(END, ' ' + item.name) if not item.show: listbox_goods.itemconfig(END, {'fg':'grey'}) assortiment.append(None) listbox_goods.insert(END, '') assortiment.append(None) head = '-' * (REPORT_WIDTH - len(u'Ингредиенты') -1) + u'Ингредиенты-' listbox_goods.insert(END, head) for item in queries.items_in_cathegory(None): assortiment.append(item) listbox_goods.insert(END, ' ' + item.name) if not item.show: listbox_goods.itemconfig(END, {'fg':'grey'})
def listbox_fill(): """Функция заполнения левого листа товарами""" for q in range(len(assortiment)): # Очищаем список del(assortiment[0]) listbox.delete(0, END) category_list = queries.cathegories() if not category_list: assortiment.append(None) listbox.insert(END, 'Список пуст.') else: for cath in category_list: if cath.name <> u'Акции': assortiment.append(None) listbox.insert(END, '') assortiment.append(None) head = '-' * (CONTROL_WIDTH - len(cath.name) -1) + cath.name + u'-' listbox.insert(END, head) for item in queries.items_in_cathegory(cath): if not item.sales: assortiment.append(item) listbox.insert(END, ' ' + item.name) if not item.show: listbox.itemconfig(END, {'fg':'grey'}) small_listbox.delete(0, END)
def b_accept(self): """Срабатывает при нажатии "Провести операцию" на панели списка. Полностью проводит приход по бухгалтерии, добавляя излишки товара и списывая недостачу. Изменяет базу данных""" if not self.bill: tkMessageBox.showwarning('Однако!', 'Список пуст, инвентаризировать нечего.') elif tkMessageBox.askokcancel('Внимание!', 'Вы утверждаете результаты инвентаризации?'): #Проводим сверку инвентаризационного списка со складом for cath in queries.cathegories(): for eat in queries.real_items_in_cathegory_shown(cath): storage_quantity = int(queries.items_in_storage(eat)) if storage_quantity and (eat not in self.bill): self.bill.append(eat) self.quantity.append(0) string = u' %-' + unicode(VERIFY_WIDTH - 30) + u's %8d %3s (%s %3s)' string = string % (eat.name, 0, eat.measure, storage_quantity, eat.measure) self.listbox.insert(END, string) self.listbox.itemconfig(END, {'fg':'red'}) #...и для ингредиентов for eat in queries.real_items_in_cathegory_shown(None): storage_quantity = int(queries.items_in_storage(eat)) if storage_quantity and (eat not in self.bill): self.bill.append(eat) self.quantity.append(0) string = u' %-' + unicode(VERIFY_WIDTH - 30) + u's %8d %3s (%s %3s)' string = string % (eat.name, 0, eat.measure, storage_quantity, eat.measure) self.listbox.insert(END, string) self.listbox.itemconfig(END, {'fg':'red'}) if not tkMessageBox.askyesno('Внимание!', 'Будете ознакамливаться с окончательным списком (после сверки)?'): queries.execute_inventarize(self.bill, self.quantity, self.memo.get(1.0,END)) self.bill = [] self.quantity = [] self.listbox.delete(0, END) self.button_del.configure(state=DISABLED) show_verify.master.destroy() incomingBottomFrame = Canvas(MasterFrame, highlightthickness=0) show_verify.master = incomingBottomFrame if USE_BACKGROUND: incomingBottomFrame.create_image(0,0, anchor='nw', image=data.photo) incomingBottomFrame.pack(side=LEFT, fill=BOTH, expand=YES) show_verify_cathegory(incomingBottomFrame)
def menu_update(): """Обновляет меню выбора категорий.""" menu = Menu(cathMenu, tearoff=0) cathMenu['menu'] = menu for cath in queries.cathegories(): menu.add_command(label=cath.name, font=('Verdana', FONT_SIZE_BIG), command=lambda key=cath: menu_change(key)) menu.add_command(label=u'-Отсутствует-', font=('Verdana',FONT_SIZE_BIG), command=lambda: menu_change(None))
def listbox_cath_fill(): """Заполняет лист категорий""" for q in range(len(cathegories)): # Очищаем список del(cathegories[0]) listbox_cath.delete(0, END) for cath in queries.cathegories(): cathegories.append(cath) string = u'%-' + unicode(CONTROL_4_WIDTH - 2 - len(cath.picture)) string = (string + u's%s') % (cath.name, cath.picture) listbox_cath.insert(END, ' ' + string) if not queries.items_in_cathegory(cath): listbox_cath.itemconfig(END, {'fg':'red'})
def __init__(self, back): self.IMAGES = {} for key in queries.cathegories(): self.IMAGES[key.picture] = PhotoImage(file='static//food//' + key.picture).subsample( SELL_BUTTON_PIC_SCALE, SELL_BUTTON_PIC_SCALE) self.IMAGES[u'Ингредиенты'] = PhotoImage( file='static//food//ingredients.gif' ).subsample(SELL_BUTTON_PIC_SCALE, SELL_BUTTON_PIC_SCALE) self.IMG_INTERFACE = [] for q in range(11): self.IMG_INTERFACE.append(PhotoImage(file='static//interface//' + str(q)+'.gif').subsample(INTERFACE_BUTTON_PIC_SCALE, INTERFACE_BUTTON_PIC_SCALE)) self.photo = PhotoImage(file = 'static\\back\\' + back, width=2000, height=1200) self.restart = False
def show_sell_cathegory(): """Заполняет нижний фрейм списком категорий товаров (кнопками с картинками). """ master = show_sell.master big_buttons = [] for cathegory in queries.cathegories(): big_buttons.append(Button(master, text=cathegory.name, image=data.IMAGES[cathegory.picture], compound="top", style='Default.TButton', command=lambda cath=cathegory: press_cathegory(cath))) if not queries.actual_items_in_cathegory(cathegory): big_buttons[-1].configure(state=DISABLED) # Вынос картинок на глобальную переменную (в объекте data) не дурость, # а, к сожалению, проблема взаимоотношения Ткинтера с интерпретатором. # Иначе картинки банально исчезают под уборщиком мусора. if not big_buttons: return big_buttons[0].grid(column=0, row=0, padx=SELL_BUTTON_PADX, pady=SELL_BUTTON_PADY) master.update() x1 = master.winfo_width() x2 = big_buttons[0].winfo_width() master.update() SELL_BUTTON_COUNT = x1//(x2+SELL_BUTTON_PADX*2) if SELL_BUTTON_COUNT: for q in range (1, len(big_buttons)): big_buttons[q].grid(column=q%SELL_BUTTON_COUNT, row=q//SELL_BUTTON_COUNT, padx=SELL_BUTTON_PADX, pady=SELL_BUTTON_PADY)
def show_lost_cathegory(master): """Заполняет нижний фрейм списком категорий товаров (кнопками с картинками). """ big_buttons = [] for cathegory in queries.cathegories(): if cathegory.name <> u'Акции': big_buttons.append(Button(master, text=cathegory.name, image=data.IMAGES[cathegory.picture], compound="top", style='Default.TButton', command=lambda cath=cathegory: press_cathegory(master, cath))) if not queries.actual_items_in_cathegory(cathegory): big_buttons[-1].configure(state=DISABLED) # + одну кнопку для "голых" индредиентов big_buttons.append(Button(master, text=u'Ингредиенты', image=data.IMAGES[u'Ингредиенты'], compound="top", style='Default.TButton', command=lambda cath=None: press_cathegory(master, cath))) big_buttons[0].grid(column=0, row=0, padx=SELL_BUTTON_PADX, pady=SELL_BUTTON_PADY) master.update() x1 = master.winfo_width() x2 = big_buttons[0].winfo_width() SELL_BUTTON_COUNT = x1//(x2+SELL_BUTTON_PADX*2) if SELL_BUTTON_COUNT: for q in range (1, len(big_buttons)): big_buttons[q].grid(column=q%SELL_BUTTON_COUNT, row=q//SELL_BUTTON_COUNT, padx=SELL_BUTTON_PADX, pady=SELL_BUTTON_PADY)