Ejemplo n.º 1
0
    def setup_wastes(self):

        inventory_db = database.InventoryDB()

        wastes_db = database.TransactionsDB()
        waste_list = wastes_db.monthly_wastes_list(self.month)
        wastes_db.close()

        walist = {}
        for waste_ in waste_list:
            if waste_.product_ID in walist:
                walist[waste_.product_ID][0] += waste_.amount
                walist[waste_.product_ID][1] += 1
            else:
                product = inventory_db.inventory_search_id(waste_.product_ID)
                walist[waste_.product_ID] = [
                    waste_.amount, 1, product.description, product.price,
                    waste_
                ]

        self.AddColumn(u'ID', 100)
        self.AddColumn(u'Descrição', 300)
        self.AddColumn(u'Preço Unitário', 100)
        self.AddColumn(u'Quantidade', 100)
        self.AddColumn(u'Quantidade de vezes', 150)
        self.AddColumn(u'Valor', 200)
        root = self.AddRoot(u'------')
        self.SetItemText(
            root, u'Desperdícios de %s' % core.format_date_user(self.month), 1)
        self.SetItemFont(root, wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))

        a = 0.0
        b = 0.0
        counter = 0

        for product_id in walist:
            value = walist[product_id][3] * walist[product_id][0]
            item = self.AppendItem(root, str(product_id))
            self.SetItemText(item, walist[product_id][2], 1)
            self.SetItemText(
                item,
                core.format_cash_user(walist[product_id][3], currency=True), 2)
            self.SetItemText(item,
                             core.format_amount_user(walist[product_id][0]), 3)
            self.SetItemText(item, str(walist[product_id][1]), 4)
            self.SetItemText(item, core.format_cash_user(value, currency=True),
                             5)

            self.SetItemData(item, wx.TreeItemData(walist[product_id][4]))

            a += value
            b += walist[product_id][0]
            counter += 1
        self.SetItemText(root, core.format_amount_user(b), 3)
        self.SetItemText(root, str(counter), 4)
        self.SetItemText(root, core.format_cash_user(a, currency=True), 5)
        self.Expand(root)
        self.SortChildren(root)
Ejemplo n.º 2
0
 def database_search(self, event):
     self.list_products.DeleteAllItems()
     db = database.InventoryDB()
     info = self.textbox_filter.GetValue()
     inventory = db.inventory_search(info)
     for product in inventory:
         category = db.categories_search_id(product.category_ID)
         self.list_products.Append(
             (product.description, product.ID, category.category,
              core.format_cash_user(product.price, currency=True),
              core.format_amount_user(product.amount, unit=category.unit),
              core.format_amount_user(product.sold, unit=category.unit)))
     db.close()
Ejemplo n.º 3
0
    def data_edit(self, event):
        _product_id = self.textbox_product_id.GetValue()
        if not _product_id:
            return dialogs.launch_error(
                self, u'Eh necessário especificar o ID do produto!')

        product_id = int(_product_id)
        product = self.database_inventory.inventory_search_id(product_id)
        if not product:
            return dialogs.launch_error(self, u'ID inválido!')

        _amount = core.amount2float(self.textbox_product_amount.GetValue())
        try:
            amount = float(_amount)
        except ValueError:
            self.textbox_product_amount.Clear()
            return dialogs.launch_error(self, u'Quantidade inválida!')

        unit_price = core.format_cash_user(product.price, currency=True)
        unit = self.textbox_product_unit.GetValue()

        self.list_update.SetStringItem(self.item, 0,
                                       core.format_id_user(product.ID))
        self.list_update.SetStringItem(self.item, 1, product.description)
        self.list_update.SetStringItem(
            self.item, 2, core.format_amount_user(amount, unit=unit))
        self.list_update.SetStringItem(self.item, 3, unit_price)

        self.list_update.SetItemData(self.item, product_id)

        self.data_editor_disable(event)
Ejemplo n.º 4
0
    def data_insert(self, event):
        _product_id = self.textbox_product_id.GetValue()
        if not _product_id:
            return dialogs.launch_error(
                self, u'Eh necessário especificar o ID do produto!')

        product_id = int(_product_id)
        product = self.database_inventory.inventory_search_id(product_id)
        if not product:
            return dialogs.launch_error(self, u'ID inválido!')

        _amount = self.textbox_product_amount.GetValue()
        try:
            amount = core.amount2float(_amount)
        except ValueError:
            self.textbox_product_amount.Clear()
            return dialogs.launch_error(self, u'Quantidade inválida!')

        unit = self.textbox_product_unit.GetValue()

        unit_price = core.format_cash_user(product.price, currency=True)
        item = self.list_update.Append(
            (core.format_id_user(product.ID), product.description,
             core.format_amount_user(amount, unit=unit), unit_price))
        self.list_update.SetItemData(item, product_id)

        self.textbox_product_amount.Clear()
        self.textbox_product_id.Clear()
        self.textbox_product_description.Clear()
        self.textbox_product_price.SetValue(u"0,00")
        self.textbox_product_unit.Clear()
Ejemplo n.º 5
0
    def clean(self):
        db = database.InventoryDB()

        if self.editable:
            self.update_categories()

        if self.data:
            self.product_id = self.data.ID
        elif self.product_id != -1:
            self.data = db.inventory_search_id(self.product_id)
        else:
            db.close()

            self.textbox_description.SetValue('')
            self.textbox_price.SetValue('R$ 0,00')
            self.textbox_amount.SetValue('')
            self.textbox_supplier.SetValue('')
            self.textbox_observation.SetValue('')
            self.update_categories()

            return
        category = db.categories_search_id(self.data.category_ID)

        self.textbox_description.SetValue(self.data.description)
        self.textbox_barcode.SetValue(self.data.barcode)
        self.textbox_price.SetValue(
            core.format_cash_user(self.data.price, currency=True))
        self.textbox_amount.SetValue(
            core.format_amount_user(self.data.amount, unit=category.unit))
        self.textbox_supplier.SetValue(self.data.supplier)
        self.textbox_observation.SetValue(self.data.obs)

        self.combobox_category.SetValue(category.category)

        db.close()
Ejemplo n.º 6
0
    def recover_waste(self):

        product = self.database_inventory.inventory_search_id(
            self.data.product_ID)
        category = self.database_inventory.categories_search_id(
            product.category_ID)
        self.textbox_id.SetValue(str(self.data.product_ID))
        self.textbox_amount.SetValue(core.format_amount_user(self.data.amount))
        self.textbox_product_unit.SetValue(category.unit)
Ejemplo n.º 7
0
 def database_search(self, event):
     self.list_inventory.DeleteAllItems()
     product_list = self.database_inventory.inventory_search_description(
         self.textbox_product_description.GetValue())
     for product in product_list:
         category = self.database_inventory.categories_search_id(
             product.category_ID)
         item = self.list_inventory.Append(
             (product.description,
              core.format_amount_user(product.amount, category.unit),
              core.format_cash_user(product.price, currency=True)))
         self.list_inventory.SetItemData(item, product.ID)
Ejemplo n.º 8
0
    def setup_selection_1(self):
        main_root = self.list_edited_data.AddRoot(u"---------")
        self.list_edited_data.SetItemText(main_root, u"Registros Apagados", 2)

        db = database.InventoryDB()
        products = db.product_list(deleted=True)
        categories = db.categories_list(deleted=True)
        db.close()

        db = database.ClientsDB()
        clients = db.clients_list(deleted=True)
        db.close()

        clients_counter = len(clients)
        products_counter = len(products)
        categories_counter = len(categories)

        clients_root = self.list_edited_data.AppendItem(
            main_root, u"---------")
        self.list_edited_data.SetItemText(clients_root, u"Clientes", 2)
        self.list_edited_data.SetItemText(clients_root, str(clients_counter),
                                          3)
        self.list_edited_data.SetItemFont(
            clients_root, wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD))
        for data in clients:

            item = self.list_edited_data.AppendItem(clients_root, u"---------")
            self.list_edited_data.SetItemFont(
                item, wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD))

            self.list_edited_data.SetItemText(item,
                                              core.format_id_user(data.ID), 1)
            self.list_edited_data.SetItemText(item, data.name, 2)

            self.list_edited_data.SetItemData(item, wx.TreeItemData(data))

        products_root = self.list_edited_data.AppendItem(
            main_root, u"---------")
        self.list_edited_data.SetItemText(products_root, u"Produtos", 2)
        self.list_edited_data.SetItemText(products_root, str(products_counter),
                                          3)
        self.list_edited_data.SetItemFont(
            products_root, wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD))
        for data in products:

            item = self.list_edited_data.AppendItem(products_root,
                                                    u"---------")
            self.list_edited_data.SetItemFont(
                item, wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD))

            self.list_edited_data.SetItemText(item,
                                              core.format_id_user(data.ID), 1)
            self.list_edited_data.SetItemText(item, data.description, 2)
            self.list_edited_data.SetItemText(
                item, core.format_amount_user(data.amount), 3)
            self.list_edited_data.SetItemText(
                item, core.format_cash_user(data.price, currency=True), 4)

            self.list_edited_data.SetItemData(item, wx.TreeItemData(data))

        categories_root = self.list_edited_data.AppendItem(
            main_root, u"---------")
        self.list_edited_data.SetItemText(categories_root, u"Categorias", 2)
        self.list_edited_data.SetItemText(categories_root,
                                          str(categories_counter), 3)
        self.list_edited_data.SetItemFont(
            categories_root, wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD))
        for data in categories:

            item = self.list_edited_data.AppendItem(categories_root,
                                                    u"---------")
            self.list_edited_data.SetItemFont(
                item, wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD))

            self.list_edited_data.SetItemText(item,
                                              core.format_id_user(data.ID), 1)
            self.list_edited_data.SetItemText(item, data.category, 2)

            self.list_edited_data.SetItemData(item, wx.TreeItemData(data))

        self.list_edited_data.SetItemFont(
            main_root, wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
        self.list_edited_data.SetItemText(
            main_root,
            str(categories_counter + products_counter + clients_counter), 3)
        self.list_edited_data.Expand(main_root)
Ejemplo n.º 9
0
    def setup_selection_0(self):
        date_user = self.combobox_day_option.GetValue()
        date = core.format_date_internal(date_user)
        if not date_user:
            date_user = u"---------"
        main_root = self.list_edited_data.AddRoot(date_user)
        self.list_edited_data.SetItemText(main_root, u"Registros Apagados", 2)

        db = database.TransactionsDB()
        sales = db.daily_sales_list(date, deleted=True)
        expenses = db.daily_expenses_list(date, deleted=True)
        wastes = db.daily_wastes_list(date, deleted=True)
        db.close()

        sales_counter = len(sales)
        expenses_counter = len(expenses)
        wastes_counter = len(wastes)

        value = 0.0
        sales_root = self.list_edited_data.AppendItem(main_root, u"---------")
        self.list_edited_data.SetItemText(sales_root, u"Vendas", 2)
        self.list_edited_data.SetItemText(sales_root, str(sales_counter), 3)
        self.list_edited_data.SetItemFont(
            sales_root, wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD))
        for data in sales:
            value += data.value

            item = self.list_edited_data.AppendItem(sales_root,
                                                    data.record_time)
            self.list_edited_data.SetItemFont(
                item, wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD))

            self.list_edited_data.SetItemText(item,
                                              core.format_id_user(data.ID), 1)
            self.list_edited_data.SetItemText(item,
                                              str(len(data.products_IDs)), 3)
            self.list_edited_data.SetItemText(
                item, core.format_cash_user(data.value, currency=True), 4)

            self.list_edited_data.SetItemData(item, wx.TreeItemData(data))
            for i in range(len(data.products_IDs)):
                price = data.amounts[i] * data.prices[i]
                product = self.list_edited_data.AppendItem(item, u"---------")
                self.list_edited_data.SetItemText(
                    product, core.format_id_user(data.products_IDs[i]), 1)
                self.list_edited_data.SetItemText(
                    product, core.format_amount_user(data.amounts[i]), 3)
                self.list_edited_data.SetItemText(
                    product, core.format_cash_user(price, currency=True), 4)

            if data.discount != 0:
                extra = self.list_edited_data.AppendItem(item, u"---------")
                self.list_edited_data.SetItemText(extra, u'Desconto', 2)
                self.list_edited_data.SetItemText(
                    extra, core.format_cash_user(data.discount, currency=True),
                    4)
            if data.taxes != 0:
                extra = self.list_edited_data.AppendItem(item, u"---------")
                self.list_edited_data.SetItemText(extra, u'Taixas adicionais',
                                                  2)
                self.list_edited_data.SetItemText(
                    extra, core.format_cash_user(data.discount, currency=True),
                    4)

        self.list_edited_data.SetItemText(
            sales_root, core.format_cash_user(value, currency=True), 4)

        value = 0.0
        expenses_root = self.list_edited_data.AppendItem(
            main_root, u"---------")
        self.list_edited_data.SetItemText(expenses_root, u"Gastos", 2)
        self.list_edited_data.SetItemText(expenses_root, str(expenses_counter),
                                          3)
        self.list_edited_data.SetItemFont(
            expenses_root, wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD))
        for data in expenses:
            value += data.value

            item = self.list_edited_data.AppendItem(expenses_root,
                                                    data.record_time)
            self.list_edited_data.SetItemFont(
                item, wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD))

            self.list_edited_data.SetItemText(item,
                                              core.format_id_user(data.ID), 1)
            self.list_edited_data.SetItemText(item, data.description, 2)
            self.list_edited_data.SetItemText(
                item, core.format_cash_user(data.value, currency=True), 4)

            self.list_edited_data.SetItemData(item, wx.TreeItemData(data))

        self.list_edited_data.SetItemText(
            expenses_root, core.format_cash_user(value, currency=True), 4)

        wastes_root = self.list_edited_data.AppendItem(main_root, u"---------")
        self.list_edited_data.SetItemText(wastes_root, u"Desperdícios", 2)
        self.list_edited_data.SetItemText(wastes_root, str(expenses_counter),
                                          3)
        self.list_edited_data.SetItemFont(
            wastes_root, wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD))
        for data in wastes:

            item = self.list_edited_data.AppendItem(wastes_root,
                                                    data.record_time)
            self.list_edited_data.SetItemFont(
                item, wx.Font(9, wx.SWISS, wx.NORMAL, wx.BOLD))

            self.list_edited_data.SetItemText(item,
                                              core.format_id_user(data.ID), 1)
            self.list_edited_data.SetItemText(
                item, core.format_id_user(data.product_ID), 2)
            self.list_edited_data.SetItemText(
                item, core.format_amount_user(data.amount), 3)

            self.list_edited_data.SetItemData(item, wx.TreeItemData(data))

        self.list_edited_data.SetItemText(
            main_root, str(sales_counter + wastes_counter + expenses_counter),
            3)
        self.list_edited_data.Expand(main_root)
        self.list_edited_data.SetItemFont(
            main_root, wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
Ejemplo n.º 10
0
    def setup_incomes(self):
        sales_db = database.TransactionsDB()
        sales = sales_db.monthly_sales_list(self.month)
        incomes = sales_db.monthly_transactions_list(self.month,
                                                     transaction.INCOME)
        sales_db.close()

        self.AddColumn(u'Data/Horário', 250)
        self.AddColumn(u'Pagamento', 150)
        self.AddColumn(u'Descrição', 250)
        self.AddColumn(u'Quantidade', 100)
        self.AddColumn(u'Valor', 150)
        root = self.AddRoot(u'Ganhos de %s' %
                            core.date_reverse(self.month).replace('-', '/'))
        self.SetItemFont(root, wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))

        a = 0.0
        b = 0
        days = {}
        saturdays = core.week_end(self.month)
        weeks = {}

        for sale_ in sales:
            for day in saturdays:
                if day >= int(sale_.record_date.split('-')[2]):
                    week = saturdays.index(day) + 1
                    break
            if week not in weeks:
                we = self.AppendItem(root, u'%iª Semana' % week)
                self.SetItemFont(we, wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
                weeks[week] = [we, 0.0, 0]
            if sale_.record_date not in days:
                item = self.AppendItem(
                    weeks[week][0], core.format_date_user(sale_.record_date))
                self.SetItemFont(item, wx.Font(11, wx.SWISS, wx.NORMAL,
                                               wx.BOLD))
                days[sale_.record_date] = [item, 0.0, 0]

            b += 1
            a += sale_.value
            weeks[week][1] += sale_.value
            weeks[week][2] += 1
            days[sale_.record_date][1] += sale_.value
            days[sale_.record_date][2] += 1

            father = self.AppendItem(days[sale_.record_date][0],
                                     sale_.record_time)
            self.SetItemFont(father, wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD))
            self.SetItemText(father, sale_.payment, 1)
            self.SetItemText(father, u'-----------', 2)
            self.SetItemText(father, str(len(sale_.products_IDs)), 3)
            self.SetItemText(father,
                             core.format_cash_user(sale_.value, currency=True),
                             4)

            self.SetItemData(father, wx.TreeItemData(sale_))

            for i in range(len(sale_.products_IDs)):
                kid = self.AppendItem(father, u'-----------')
                self.SetItemText(kid, u'-----------', 1)
                self.SetItemText(kid,
                                 core.format_id_user(sale_.products_IDs[i]), 2)
                self.SetItemText(kid,
                                 core.format_amount_user(sale_.amounts[i]), 3)
                self.SetItemText(
                    kid, core.format_cash_user(sale_.prices[i], currency=True),
                    4)

                self.SetItemData(kid,
                                 wx.TreeItemData(str(sale_.products_IDs[i])))

        for j in weeks:
            self.SetItemText(weeks[j][0], str(weeks[j][2]), 3)
            self.SetItemText(weeks[j][0],
                             core.format_cash_user(weeks[j][1], currency=True),
                             4)
        for j in days:
            self.SetItemText(days[j][0], str(days[j][2]), 3)
            self.SetItemText(days[j][0],
                             core.format_cash_user(days[j][1], currency=True),
                             4)
            self.SortChildren(days[j][0])

        if len(incomes):
            parent = self.AppendItem(root, u'Outras entradas de dinheiro')
            self.SetItemFont(parent, wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
            for income in incomes:
                b += 1
                a += income.value

                payment = u'RECEBIDO'
                payment = payment if not income.payment_pendant else u'AINDA NÃO ' + payment

                father = self.AppendItem(
                    parent, core.format_date_user(income.transaction_date))
                self.SetItemFont(father,
                                 wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD))
                self.SetItemText(father, payment, 1)
                self.SetItemText(father, income.description, 2)
                self.SetItemText(
                    father, core.format_cash_user(income.value, currency=True),
                    4)

                self.SetItemData(father, wx.TreeItemData(income))

        self.SetItemText(root, str(b), 3)
        self.SetItemText(root, core.format_cash_user(a, currency=True), 4)
        self.Expand(root)
        self.SortChildren(root)
Ejemplo n.º 11
0
    def setup_products(self):
        inventory_db = database.InventoryDB()

        sales_db = database.TransactionsDB()
        sale_list = sales_db.monthly_sales_list(self.month)
        sales_db.close()

        plist = {}
        categories_dict = {}
        for sale_ in sale_list:
            for i in range(len(sale_.products_IDs)):
                key = sale_.products_IDs[i]
                if key in plist:
                    plist[key][0] += sale_.amounts[i]
                    plist[key][1] += sale_.prices[i]
                    plist[key][2] += 1
                else:
                    product = inventory_db.inventory_search_id(key)
                    plist[key] = [
                        sale_.amounts[i], sale_.prices[i], 1,
                        product.description, product.price, product
                    ]

                category_id = plist[key][5].category_ID

                if category_id in categories_dict:
                    categories_dict[category_id][0] += sale_.amounts[i]
                    categories_dict[category_id][1] += sale_.prices[i]
                    categories_dict[category_id][2] += 1
                else:
                    category = inventory_db.categories_search_id(category_id)
                    categories_dict[category_id] = [
                        sale_.amounts[i], sale_.prices[i], 1,
                        category.category, category, None
                    ]

        inventory_db.close()
        self.AddColumn(u'ID', 100)
        self.AddColumn(u'Descrição', 300)
        self.AddColumn(u'Preço Unitário', 100)
        self.AddColumn(u'Quantidade vendida', 135)
        self.AddColumn(u'Quantidade de vezes vendido', 180)
        self.AddColumn(u'Valor', 115)
        root = self.AddRoot(u'------')
        self.SetItemText(
            root,
            u'Produtos Vendidos em %s' % core.format_date_user(self.month), 1)
        self.SetItemFont(root, wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))
        a = 0.0
        b = 0.0
        counter = 0
        for product_id in plist:
            data = plist[product_id]
            category_id = data[5].category_ID
            data_category = categories_dict[category_id]

            if not data_category[5]:
                aux = self.AppendItem(root, core.format_id_user(category_id))
                self.SetItemText(aux, data_category[3], 1)
                self.SetItemText(
                    aux,
                    core.format_amount_user(data[0],
                                            unit=data_category[4].unit), 3)
                self.SetItemText(aux, str(data_category[2]), 4)
                self.SetItemText(
                    aux, core.format_cash_user(data_category[1],
                                               currency=True), 5)
                self.SetItemData(aux, wx.TreeItemData(data_category[4]))
                self.SetItemFont(aux, wx.Font(11, wx.SWISS, wx.NORMAL,
                                              wx.BOLD))
                data_category[5] = aux

            parent = data_category[5]
            item = self.AppendItem(parent, core.format_id_user(product_id))
            self.SetItemText(item, data[3], 1)
            self.SetItemText(item, core.format_cash_user(data[4],
                                                         currency=True), 2)
            self.SetItemText(
                item,
                core.format_amount_user(data[0], unit=data_category[4].unit),
                3)
            self.SetItemText(item, str(data[2]), 4)
            self.SetItemText(item, core.format_cash_user(data[1],
                                                         currency=True), 5)

            self.SetItemData(item, wx.TreeItemData(data[5]))

            a += plist[product_id][1]
            b += plist[product_id][0]
            counter += 1
        self.SetItemText(root, core.format_amount_user(b), 3)
        self.SetItemText(root, str(counter), 4)
        self.SetItemText(root, core.format_cash_user(a, currency=True), 5)
        self.Expand(root)
        self.SortChildren(root)
Ejemplo n.º 12
0
    def __setup__(self):
        if self.combobox_day_option.GetValue() != u'':
            self.clean()
            transactions_db = database.TransactionsDB()
            inventory_db = database.InventoryDB()

            day = core.format_date_internal(self.combobox_day_option.GetValue())

            root = self.list_sales.AddRoot(u"Vendas de " + self.combobox_day_option.GetValue())
            self.list_sales.SetItemFont(root, wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
            sales_value = 0.0
            sales_amount = 0
            money_value = 0.00
            money_amount = 0
            card_value = 0.00
            card_amount = 0

            day_sales = transactions_db.daily_sales_list(day)
            for sale_item in day_sales:
                sales_value += sale_item.value
                sold = self.list_sales.AppendItem(root, sale_item.record_time)
                self.list_sales.SetItemText(sold, sale_item.payment, 2)
                self.list_sales.SetItemText(sold, core.format_cash_user(sale_item.value, currency=True), 3)
                self.list_sales.SetItemFont(sold, wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD))

                self.list_sales.SetItemData(sold, wx.TreeItemData(sale_item))

                for i in range(len(sale_item.products_IDs)):
                    product_id = sale_item.products_IDs[i]
                    product = inventory_db.inventory_search_id(int(product_id))

                    a = self.list_sales.AppendItem(sold, product.description)
                    self.list_sales.SetItemText(a, core.format_amount_user(sale_item.amounts[i]), 1)
                    self.list_sales.SetItemText(a, core.format_cash_user(sale_item.prices[i], currency=True), 3)

                    self.list_sales.SetItemData(a, wx.TreeItemData(product))
                if sale_item.discount:
                    web = self.list_sales.AppendItem(sold, u"Desconto")
                    self.list_sales.SetItemText(web, core.format_cash_user(sale_item.discount, currency=True), 3)
                if sale_item.taxes:
                    bew = self.list_sales.AppendItem(sold, u"Taxas adicionais")
                    self.list_sales.SetItemText(bew, core.format_cash_user(sale_item.taxes, currency=True), 3)
                sales_amount += 1
                if sale_item.payment == u"Dinheiro":
                    money_amount += 1
                    money_value += sale_item.value
                elif sale_item.payment.split()[0] == u"Cartão":
                    card_amount += 1
                    card_value += sale_item.value

            self.list_sales.SetItemText(root, str(sales_amount), 1)
            self.list_sales.SetItemText(root, core.format_cash_user(sales_value, currency=True), 3)
            self.list_sales.Expand(root)

            raz = self.list_expenses.AddRoot(self.combobox_day_option.GetValue())
            expenses_value = 0.0
            expenses_amount = 0
            self.list_expenses.SetItemFont(raz, wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD))

            day_expenses = transactions_db.daily_expenses_list(day)
            for expense_item in day_expenses:
                value = expense_item.value
                description = expense_item.description
                expenses_amount += 1
                expenses_value += value
                golf = self.list_expenses.AppendItem(raz, core.format_date_user(expense_item.record_time))
                self.list_expenses.SetItemText(golf, description, 1)
                self.list_expenses.SetItemText(golf, core.format_cash_user(value, currency=True), 3)

                self.list_expenses.SetItemData(golf, wx.TreeItemData(expense_item))

            self.list_expenses.SetItemText(raz, u"Gastos", 1)
            self.list_expenses.SetItemText(raz, str(expenses_amount), 2)
            self.list_expenses.SetItemText(raz, core.format_cash_user(expenses_value, currency=True), 3)
            self.list_expenses.Expand(raz)

            pain = self.list_wastes.AddRoot(u"Desperdícios de " + self.combobox_day_option.GetValue())
            wastes_value = 0.0
            wastes_amount = 0
            self.list_wastes.SetItemFont(pain, wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD))

            day_wastes = transactions_db.daily_wastes_list(day)
            for wasted in day_wastes:
                amount = wasted.amount
                product = inventory_db.inventory_search_id(wasted.product_ID)
                value = product.price * amount
                wastes_amount += 1
                wastes_value += value

                king = self.list_wastes.AppendItem(pain, product.description)
                self.list_wastes.SetItemText(king, core.format_amount_user(amount), 1)
                self.list_wastes.SetItemText(king, core.format_cash_user(value, currency=True), 2)

                self.list_wastes.SetItemData(king, wx.TreeItemData(wasted))

            self.list_wastes.SetItemText(pain, str(wastes_amount), 1)
            self.list_wastes.SetItemText(pain, core.format_cash_user(wastes_value, currency=True), 2)
            self.list_wastes.Expand(pain)

            self.textbox_day_total.SetValue(core.format_cash_user(sales_value - expenses_value, currency=True))
            self.textbox_sales_value.SetValue(core.format_cash_user(sales_value, currency=True))
            self.textbox_sales_amount.SetValue(str(sales_amount))
            self.textbox_money_value.SetValue(core.format_cash_user(money_value, currency=True))
            self.textbox_money_amount.SetValue(str(money_amount))
            self.textbox_card_value.SetValue(core.format_cash_user(card_value, currency=True))
            self.textbox_card_amount.SetValue(str(card_amount))
            self.textbox_spent_value.SetValue(core.format_cash_user(expenses_value, currency=True))
            self.textbox_spent_amount.SetValue(str(expenses_amount))

            self.cash_register = transactions_db.cash_search_date(day)

            if self.cash_register:
                self.textbox_cash_previous.SetValue(core.format_cash_user(self.cash_register.fund))
                self.textbox_cash_real.SetValue(core.format_cash_user(self.cash_register.cash))
                self.textbox_cash_removed.SetValue(core.format_cash_user(self.cash_register.withdrawal))
            else:
                months = self.combobox_day_option.GetItems()
                last_movement = months[self.combobox_day_option.GetSelection()-1]
                cash_register = transactions_db.cash_search_date(core.format_date_internal(last_movement))
                if cash_register:
                    self.textbox_cash_previous.SetValue(core.format_cash_user(cash_register.cash))
                else:
                    self.textbox_cash_previous.SetValue('0,00')
                self.textbox_cash_real.SetValue('0,00')
                self.textbox_cash_removed.SetValue('0,00')

            self.update_cash(None)

            transactions_db.close()
            inventory_db.close()

            self.save(None)

            self.combobox_day_option.Enable()