Example #1
0
        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
Example #2
0
    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))
Example #3
0
    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))
Example #4
0
    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'})
Example #5
0
    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'})
Example #6
0
        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