Ejemplo n.º 1
0
    def setup_monthly_list(self, data_type):

        month = core.format_date_internal(
            self.combobox_month_displayed.GetValue())
        date = core.datetime_today()[0]

        lists = {EXPENSE: self.list_expenses, INCOME: self.list_incomes}
        list_ctrl = lists[data_type]

        list_ctrl.DeleteAllItems()

        db = database.TransactionsDB()
        transaction_registered = db.monthly_transactions_list(month, data_type)
        for _transaction in transaction_registered:

            category = db.categories_search_id(_transaction.category)
            item = list_ctrl.Append(
                (_transaction.description, core.format_id_user(
                    _transaction.ID), category.category if category else u'',
                 core.format_cash_user(_transaction.value, currency=True),
                 core.format_date_user(_transaction.transaction_date),
                 u'OK' if not _transaction.payment_pendant else u'Pendente'))

            # Atribui uma cor ao item caso o pagamento ainda não tenha sido realizado
            if _transaction.payment_pendant:
                self.setup_item_color(item, data_type)

        db.close()
Ejemplo n.º 2
0
    def delete(self, box):
        """
        Apaga uma entrada em agum dos dados do dia
        :param box: TreeListCtrl da entrada
        :type box: wx.gizmos.TreeListCtrl
        :return:
        """
        boom = box.GetSelection()
        if boom == box.GetRootItem():
            return

        item_data = box.GetItemData(boom).GetData()

        if isinstance(item_data, data_types.ProductData):
            boom = box.GetItemParent(boom)
            item_data = box.GetItemData(boom).GetData()

        db = database.TransactionsDB()

        if box is self.list_sales:
            func = db.delete_sale
            sale.update_inventory(item_data, undo=True)
        elif box is self.list_expenses:
            func = db.delete_expense
        else:
            func = db.delete_waste
            waste.update_inventory(item_data, undo=True)

        func(item_data.ID)

        db.close()
        self.setup(None)
Ejemplo n.º 3
0
    def setup_monthly_expenses(self, event):
        self.list_expenses.DeleteAllItems()
        month = core.format_date_internal(
            self.combobox_month_displayed.GetValue())

        db = database.TransactionsDB()
        expenses = db.monthly_transactions_list(month, transaction.EXPENSE)
        db.close()

        root = self.list_expenses.AddRoot(
            self.combobox_month_displayed.GetValue() or u'-----')
        self.list_expenses.SetItemText(root, u'Gastos Mensais', 1)
        self.list_expenses.SetItemFont(
            root, wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))

        total = 0.0
        for expense_ in expenses:
            x = self.list_expenses.AppendItem(
                root, core.format_date_user(expense_.transaction_date))
            self.list_expenses.SetItemText(x, expense_.description, 1)
            self.list_expenses.SetItemText(
                x, core.format_cash_user(expense_.value, currency=True), 2)

            self.list_expenses.SetItemData(x, wx.TreeItemData(expense_))

            total += expense_.value
        self.list_expenses.SetItemText(
            root, core.format_cash_user(total, currency=True), 2)
        self.list_expenses.ExpandAll(root)
Ejemplo n.º 4
0
    def __init__(self, parent, title=u'Transaçoes'):
        wx.Frame.__init__(self,
                          parent,
                          -1,
                          title,
                          style=wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION
                          | wx.CLOSE_BOX | wx.CLIP_CHILDREN)

        self.setup_gui()

        db = database.TransactionsDB()
        dates = db.list_transactions_dates()
        db.close()

        months = list()

        for date in dates:
            month = core.format_date_user(date[:-3])
            if month not in months:
                months.append(month)
        if months:
            self.combobox_month_displayed.SetItems(months)
            self.combobox_month_displayed.SetSelection(0)

        self.setup(None)
        self.Show()
Ejemplo n.º 5
0
    def save(self, event):
        fund = core.money2float(self.textbox_cash_previous.GetValue())
        cash_ideal = core.money2float(self.textbox_cash_ideal.GetValue())
        cash_real = core.money2float(self.textbox_cash_real.GetValue())
        withdrawal = core.money2float(self.textbox_cash_removed.GetValue())
        if cash_real:
            cash = cash_real - withdrawal
        else:
            cash = cash_ideal - withdrawal
        if cash < 0:
            cash = 0.0

        db = database.TransactionsDB()

        if self.cash_register:
            self.cash_register.withdrawal = withdrawal
            self.cash_register.cash = cash
            self.cash_register.fund = fund

            db.edit_cash(self.cash_register)
        else:
            date = core.format_date_internal(self.combobox_day_option.GetValue())

            self.cash_register = data_types.CashRegisterData()
            self.cash_register.record_date = date
            self.cash_register.withdrawal = withdrawal
            self.cash_register.cash = cash
            self.cash_register.fund = fund

            db.insert_cash(self.cash_register)

        db.close()
Ejemplo n.º 6
0
    def end(self):
        _product_id = self.textbox_id.GetValue()
        _amount = self.textbox_amount.GetValue()

        if not _product_id or not _amount:
            return dialogs.launch_error(self, u'Dados insuficientes!')

        date, finish_time = core.datetime_today()

        data = data_types.WasteData()
        data.product_ID = int(_product_id)
        data.amount = float(_amount)
        data.record_date = date
        data.record_time = finish_time
        data.ID = self.key

        db = database.TransactionsDB()
        if self.key != -1 or self.data:
            db.edit_waste(data)
            update_inventory(self.data, undo=True)
        else:
            db.insert_waste(data)
        db.close()

        update_inventory(data)

        self.clean()

        dialogs.Confirmation(self, u"Sucesso", 3)
Ejemplo n.º 7
0
    def __init__(self, parent, title=u'Desperdícios', key=-1, data=None):
        wx.Frame.__init__(self,
                          parent,
                          -1,
                          title,
                          size=(630, 280),
                          style=wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION
                          | wx.CLOSE_BOX | wx.CLIP_CHILDREN)

        self.key = key
        self.data = data

        self.setup_gui()

        self.database_inventory = database.InventoryDB(':memory:')

        if self.key != -1 or data:
            if not data:
                db = database.TransactionsDB()
                self.data = db.wastes_search_id(self.key)
                db.close()
                self.key = self.data.ID
            self.recover_waste()

        self.database_search(None)

        self.Show()
Ejemplo n.º 8
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.º 9
0
 def update_categories(self):
     db = database.TransactionsDB()
     category_list = db.categories_list()
     category_options = [u'Selecione']
     self.categories_ids = [None]
     for category in category_list:
         category_options.append(category.category)
         self.categories_ids.append(category.ID)
     self.combobox_category.SetItems(category_options)
     self.combobox_category.SetSelection(0)
     db.close()
Ejemplo n.º 10
0
    def data_delete(self, box):
        db = database.TransactionsDB()
        item = box.GetSelection()
        data = box.GetItemData(item).GetData()
        db.delete_transaction(data.ID)
        db.close()

        func = {
            self.list_incomes: self.setup_monthly_incomes,
            self.list_expenses: self.setup_monthly_expenses
        }

        func.get(box)(None)
Ejemplo n.º 11
0
    def end(self):
        description = self.textbox_description.GetValue().capitalize()
        val = core.money2float(self.textbox_value.GetValue())
        if len(description) == 0 or val == 0:
            return dialogs.launch_error(self, u'Dados insulficientes')
        date, finish_time = core.datetime_today()

        wx_date = self.calendar_date.GetDate()
        transaction_date = u'%i-%s-%i' % (
            wx_date.GetYear(), core.good_show(
                'o', str(wx_date.GetMonth() + 1)), wx_date.GetDay())

        data = data_types.TransactionData()
        data.ID = self.key
        data.description = description
        data.category = self.categories_ids[
            self.combobox_category.GetSelection()]
        data.value = val
        data.record_date = date
        data.record_time = finish_time
        data.transaction_date = transaction_date
        data.type = self.transaction_type
        data.payment_pendant = not self.checkbox_payed.GetValue()

        db = database.TransactionsDB()
        if self.key == -1:
            db.insert_transaction(data)
        else:
            db.edit_transaction(data)
        db.close()

        parent = self.GetParent()
        if isinstance(parent, monthly_report.Report):
            funcs = {
                EXPENSE: parent.setup_monthly_expenses,
                INCOME: parent.setup_monthly_incomes
            }
            setup = funcs[self.transaction_type]
            setup(None)

        if self.key == -1:
            self.clean()
            confirmation_option = -1
            if self.transaction_type is EXPENSE:
                confirmation_option = 2
            elif self.transaction_type is INCOME:
                confirmation_option = 7
            dialogs.Confirmation(self, u"Sucesso", confirmation_option)

        else:
            self.exit(None)
Ejemplo n.º 12
0
    def setup_options(self):
        db = database.TransactionsDB()

        month_options = list()

        for date in db.list_record_dates():
            month_options.append(core.format_date_user(date))

        db.close()

        self.combobox_day_option = wx.ComboBox(self.panel_top, -1, choices=month_options, size=(130, -1),
                                               pos=(420, 12), style=wx.CB_READONLY)
        self.combobox_day_option.Bind(wx.EVT_COMBOBOX, self.setup)
        if len(month_options) != 0:
            self.combobox_day_option.SetSelection(0)
Ejemplo n.º 13
0
    def setup_options(self):
        db = database.TransactionsDB()
        record_dates = db.list_record_dates(transactions=True, deleted=True)
        transactions_dates = db.list_transactions_record_dates(deleted=True)
        db.close()

        day_options = core.convert_list(record_dates, core.format_date_user)
        month_options = list()
        for date in transactions_dates:
            month = core.format_date_user(date[:-3])
            if month not in month_options:
                month_options.append(month)

        entry_types = [
            u'Gastos, Vendas e Desperdícios',
            u'Clientes, Produtos e Categorias', u'Transações e Categorias'
        ]

        self.combobox_entry_type = wx.ComboBox(self.panel_control,
                                               choices=entry_types,
                                               size=(230, -1),
                                               pos=(5, 30),
                                               style=wx.CB_READONLY
                                               | wx.TE_MULTILINE)
        self.combobox_entry_type.Bind(wx.EVT_COMBOBOX, self.data_update)

        self.combobox_month_option = wx.ComboBox(self.panel_control,
                                                 -1,
                                                 choices=month_options,
                                                 size=(130, -1),
                                                 pos=(5, 100),
                                                 style=wx.CB_READONLY)
        self.combobox_month_option.Bind(wx.EVT_COMBOBOX, self.setup)

        self.combobox_day_option = wx.ComboBox(self.panel_control,
                                               -1,
                                               choices=day_options,
                                               size=(130, -1),
                                               pos=(5, 100),
                                               style=wx.CB_READONLY)
        self.combobox_day_option.Bind(wx.EVT_COMBOBOX, self.setup)

        self.combobox_entry_type.SetSelection(1)
        if len(month_options):
            self.combobox_month_option.SetSelection(0)
        if len(day_options):
            self.combobox_day_option.SetSelection(0)
            self.combobox_entry_type.SetSelection(0)
Ejemplo n.º 14
0
    def data_delete(self, event):

        if self.notebook_lists.GetSelection():
            data_list = self.list_incomes

        else:
            data_list = self.list_expenses

        it = data_list.GetFocusedItem()
        if it == -1:
            return
        e_id = data_list.GetItem(it, 1).GetText()

        db = database.TransactionsDB()
        db.delete_transaction(int(e_id))
        db.close()
        self.setup(None)
Ejemplo n.º 15
0
    def data_delete(self, event):
        t = self.list_bought.GetFocusedItem()
        if t == -1:
            return

        if self.list_bought.GetItemTextColour(t) is core.COLOR_LIST_ITEM_DISABLED:
            activate = True
        else:
            activate = False
        db = database.TransactionsDB()
        sale_id = self.list_bought.GetItemData(t)
        db.delete_sale(sale_id=sale_id, undo=activate)
        db.close()
        if activate:
            self.list_bought.SetItemTextColour(t, wx.BLACK)
        else:
            self.list_bought.SetItemTextColour(t, core.COLOR_LIST_ITEM_DISABLED)
Ejemplo n.º 16
0
def notify_pendant_transactions(transaction_type, parent=None):
    import database
    import dialogs

    today = core.datetime_today()[0]
    advance = st.config2type(
        st.CONFIG.get(st.CONFIG_SECTION_NOTIFICATIONS,
                      st.CONFIG_FIELD_TRANSACTION_ADVANCE), int)
    limit_day = core.int2date(core.date2int(today) + advance)

    db = database.TransactionsDB()
    transactions = db.pendant_transactions_list(up_to=limit_day)
    db.close()

    for exchange in transactions:
        if exchange.type == transaction_type:
            gui_line.open(dialogs.TransactionNotification,
                          parent,
                          exchange,
                          title=exchange.description)
Ejemplo n.º 17
0
    def sales_list(self):
        self.list_bought.DeleteAllItems()
        db = database.ClientsDB()
        sales = db.sales_search_client(self.client_id)
        db.close()
        sales_db = database.TransactionsDB()
        value = 0.0
        value_money = 0.0
        value_card = 0.0
        amount = 0
        amount_money = 0
        amount_card = 0
        for sale_ in sales:
            data = sales_db.sales_search_id(sale_.sale)
            if not data.active:
                disconnect_sale(sale_.ID, data.ID)
                continue
            payed = u'Sim' if not data.payment_pendant else u'Não'
            item = self.list_bought.Append((data.record_date, data.record_time,
                                            core.format_cash_user(data.value, currency=True), payed))
            self.list_bought.SetItemData(item, data.ID)

            value += data.value
            amount += 1
            if data.payment == u'Dinheiro':
                amount_money += 1
                value_money += data.value
            elif data.payment.split()[0] == u'Cartão':
                amount_card += 1
                value_card += data.value
        if self.data.last_sale:
            last_sale = u'Última compra registrada em %s \n' \
                        u'Já gastou R$ %s na Canela Santa através de %i compras, das quais %i, no valor de R$ %s,' \
                        u'foram pagas em dinheiro e %i, no valor de R$ %s, foram pagas no cartão.' % \
                        (core.format_date_user(self.data.last_sale), core.format_cash_user(value), amount, amount_money,
                         core.format_cash_user(value_money), amount_card, core.format_cash_user(value_card))
        else:
            last_sale = u'Não há nenhuma compra registrada em seu nome'
        self.textbox_client_intel.SetValue(
            u'Cliente desde %s \n%s'
            % (core.format_date_user(self.data.record_date), last_sale))
Ejemplo n.º 18
0
 def setup(self):
     if self.data:
         self.key = self.data.ID
     elif self.key != -1:
         db = database.TransactionsDB()
         self.data = db.transactions_search_id(self.key)
         db.close()
     else:
         return
     self.textbox_description.SetValue(self.data.description)
     self.textbox_value.SetValue(
         core.format_cash_user(self.data.value, currency=True))
     self.checkbox_payed.SetValue(not self.data.payment_pendant)
     date = self.data.transaction_date.split('-')
     wx_date = wx.DateTime()
     wx_date.Set(int(date[2]), int(date[1]) - 1, int(date[0]))
     self.calendar_date.SetDate(wx_date)
     try:
         self.combobox_category.SetSelection(
             self.categories_ids.index(self.data.category))
     except ValueError:
         pass
Ejemplo n.º 19
0
    def data_edit_payment(self, event):
        if self.notebook_lists.GetSelection():
            data_list = self.list_incomes
            data_type = INCOME
        else:
            data_list = self.list_expenses
            data_type = EXPENSE

        it = data_list.GetFocusedItem()
        if it == -1:
            return

        key = data_list.GetItemText(it, 1)

        payment = data_list.GetItemText(it, 5)

        undo = True if payment == u'OK' else False

        db = database.TransactionsDB()
        db.edit_transaction_payment(key, undo=undo)
        db.close()

        data_list.SetStringItem(it, 5, u'OK' if not undo else u'Pendente')
        self.setup_item_color(it, data_type)
Ejemplo n.º 20
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.º 21
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()
Ejemplo n.º 22
0
    def setup_expenses(self):
        expenses_db = database.TransactionsDB()
        expenses = expenses_db.monthly_expenses_list(self.month)
        money_exits = expenses_db.monthly_transactions_list(
            self.month, transaction.EXPENSE)
        expenses_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'Gastos 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 expense_ in expenses:
            for day in saturdays:
                if day >= int(expense_.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 expense_.record_date not in days:
                item = self.AppendItem(
                    weeks[week][0],
                    core.format_date_user(expense_.record_date))
                self.SetItemFont(item, wx.Font(11, wx.SWISS, wx.NORMAL,
                                               wx.BOLD))
                days[expense_.record_date] = [item, 0.0, 0]

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

            father = self.AppendItem(days[expense_.record_date][0],
                                     expense_.record_time)
            self.SetItemFont(father, wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD))
            self.SetItemText(father, expense_.description, 2)
            self.SetItemText(
                father, core.format_cash_user(expense_.value, currency=True),
                4)

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

        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(money_exits):
            parent = self.AppendItem(root, u'Outros Gastos')
            self.SetItemFont(parent, wx.Font(12, wx.SWISS, wx.NORMAL, wx.BOLD))
            for money_exit in money_exits:
                b += 1
                a += money_exit.value

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

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

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

        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.º 23
0
    def __setup__(self):
        self.clean()

        month = core.format_date_internal(
            self.combobox_month_displayed.GetValue())

        db = database.TransactionsDB()
        sales = db.monthly_sales_list(month)
        expenses = db.monthly_expenses_list(month)
        wastes = db.monthly_wastes_list(month)
        transactions = db.monthly_transactions_list(month)
        db.close()

        inventory_db = database.InventoryDB()

        total_expense = 0.0
        total_income = 0.0
        total_waste = 0.0
        total_card_income = 0.0
        total_money_income = 0.0
        dict_products = {}
        week_sold = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
        days = []
        pendant_income = 0.0
        pendant_expense = 0.0
        pendant_income_count = 0
        pendant_expense_count = 0

        for sale_ in sales:
            date_ = sale_.record_date.split('-')
            week_day = calendar.weekday(int(date_[0]), int(date_[1]),
                                        int(date_[2]))
            if date_[2] not in days:
                days.append(date_[2])
            if not sale_.payment_pendant:
                total_income += sale_.value
                if sale_.payment == u'Dinheiro':
                    total_money_income += sale_.value
                elif sale_.payment.split()[0] == u'Cartão':
                    total_card_income += sale_.value
                week_sold[week_day] += sale_.value
            else:
                pendant_income += sale_.value
                pendant_income_count += 1
            for i in range(len(sale_.products_IDs)):
                product_id = sale_.products_IDs[i]
                if product_id not in dict_products:
                    dict_products[product_id] = [0, 0.0]
                dict_products[product_id][0] += sale_.amounts[i]
                dict_products[product_id][1] += sale_.prices[i]

        for expense_ in expenses:
            total_expense += expense_.value

        for waste_ in wastes:
            product = inventory_db.inventory_search_id(waste_.product_ID)
            total_waste += product.price * waste_.amount

        for transaction_ in transactions:
            if not transaction_.payment_pendant:
                if transaction_.type is transaction.INCOME:
                    total_income += transaction_.value
                elif transaction_.type is transaction.EXPENSE:
                    total_expense += transaction_.value
            else:
                if transaction_.type is transaction.INCOME:
                    pendant_income += transaction_.value
                    pendant_income_count += 1
                elif transaction_.type is transaction.EXPENSE:
                    pendant_expense += transaction_.value
                    pendant_expense_count += 1

        lp1 = []
        lp2 = []

        for item in range(0, 11):

            product_item_left = [u'', 0, 0.0, -1]
            for product_id in dict_products:
                if dict_products[product_id][1] > product_item_left[2]:
                    product_item_left = [
                        inventory_db.inventory_search_id(
                            product_id).description,
                        dict_products[product_id][0],
                        dict_products[product_id][1], product_id
                    ]

            product_item_right = [u'', 0, 0.0, -1]
            for product_id in dict_products:
                if dict_products[product_id][0] > product_item_right[1]:
                    product_item_right = [
                        inventory_db.inventory_search_id(
                            product_id).description,
                        dict_products[product_id][0],
                        dict_products[product_id][1], product_id
                    ]
            if product_item_left[2] and product_item_left not in lp1:
                lp1.append(product_item_left)
            if product_item_right[1] and product_item_right not in lp2:
                lp2.append(product_item_right)

        inventory_db.close()

        for item in lp1:
            item_id = self.list_left.Append(
                (item[0], item[1], core.format_cash_user(item[2],
                                                         currency=True)))
            self.list_left.SetItemData(item_id, item[3])
        for item in lp2:
            item_id = self.list_right.Append(
                (item[0], item[1], core.format_cash_user(item[2],
                                                         currency=True)))
            self.list_right.SetItemData(item_id, item[3])

        total_balance = (total_income - total_expense)

        try:
            average_daily_balance = (total_income - total_expense) / len(days)
        except ZeroDivisionError:
            average_daily_balance = 0.0

        if max(week_sold):
            weekday_best = core.week_days[week_sold.index(max(week_sold))]
        else:
            weekday_best = '-------'

        if min(week_sold):
            weekday_worse = core.week_days[week_sold.index(min(week_sold))]
        else:
            try:
                while not min(week_sold):
                    week_sold.remove(0.0)
                weekday_worse = core.week_days[week_sold.index(min(week_sold))]
                if weekday_best == weekday_worse:
                    weekday_worse = '-------'
            except ValueError:
                weekday_worse = '-------'

        self.text_profit.SetValue(
            core.format_cash_user(total_balance, currency=True))
        self.text_spent.SetValue(
            core.format_cash_user(total_expense, currency=True))
        self.text_income.SetValue(
            core.format_cash_user(total_income, currency=True))
        self.text_wasted.SetValue(
            core.format_cash_user(total_waste, currency=True))
        self.text_income_pendant.SetValue(
            core.format_cash_user(pendant_income, currency=True))
        self.text_expense_pendant.SetValue(
            core.format_cash_user(pendant_expense, currency=True))
        self.text_income_pendant_amount.SetValue(str(pendant_income_count))
        self.text_expense_pendant_amount.SetValue(str(pendant_expense_count))
        self.text_daily_income.SetValue(
            core.format_cash_user(average_daily_balance, currency=True))
        self.text_credit_card_income.SetValue(
            core.format_cash_user(total_card_income, currency=True))
        self.text_money_income.SetValue(
            core.format_cash_user(total_money_income, currency=True))
        self.text_worst_week_day.SetValue(weekday_best)
        self.text_better_week_day.SetValue(weekday_worse)
        self.setup_monthly_incomes(None)
        self.setup_monthly_expenses(None)
Ejemplo n.º 24
0
    def setup_gui(self):
        self.SetBackgroundColour(core.COLOR_DEFAULT_BACKGROUND)
        self.Centre()
        self.SetIcon(wx.Icon(core.ICON_MAIN, wx.BITMAP_TYPE_ICO))
        part1 = wx.Panel(self,
                         -1,
                         pos=(10, 10),
                         size=(1180, 290),
                         style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL)
        self.text_profit = wx.TextCtrl(part1,
                                       -1,
                                       pos=(200, 50),
                                       size=(100, 30),
                                       style=wx.TE_READONLY)
        self.text_income = wx.TextCtrl(part1,
                                       -1,
                                       pos=(200, 90),
                                       size=(100, 30),
                                       style=wx.TE_READONLY)
        self.text_spent = wx.TextCtrl(part1,
                                      -1,
                                      pos=(200, 130),
                                      size=(100, 30),
                                      style=wx.TE_READONLY)
        self.text_wasted = wx.TextCtrl(part1,
                                       -1,
                                       pos=(200, 170),
                                       size=(100, 30),
                                       style=wx.TE_READONLY)
        self.text_income_pendant = wx.TextCtrl(part1,
                                               -1,
                                               pos=(200, 210),
                                               size=(100, 30),
                                               style=wx.TE_READONLY)
        self.text_expense_pendant = wx.TextCtrl(part1,
                                                -1,
                                                pos=(200, 250),
                                                size=(100, 30),
                                                style=wx.TE_READONLY)
        self.text_daily_income = wx.TextCtrl(part1,
                                             -1,
                                             pos=(500, 10),
                                             size=(100, 30),
                                             style=wx.TE_READONLY)
        self.text_credit_card_income = wx.TextCtrl(part1,
                                                   -1,
                                                   pos=(500, 50),
                                                   size=(100, 30),
                                                   style=wx.TE_READONLY)
        self.text_money_income = wx.TextCtrl(part1,
                                             -1,
                                             pos=(500, 90),
                                             size=(100, 30),
                                             style=wx.TE_READONLY)
        self.text_worst_week_day = wx.TextCtrl(part1,
                                               -1,
                                               pos=(500, 130),
                                               size=(100, 30),
                                               style=wx.TE_READONLY)
        self.text_better_week_day = wx.TextCtrl(part1,
                                                -1,
                                                pos=(500, 170),
                                                size=(100, 30),
                                                style=wx.TE_READONLY)
        self.text_income_pendant_amount = wx.TextCtrl(part1,
                                                      -1,
                                                      pos=(500, 210),
                                                      size=(100, 30),
                                                      style=wx.TE_READONLY)
        self.text_expense_pendant_amount = wx.TextCtrl(part1,
                                                       -1,
                                                       pos=(500, 250),
                                                       size=(100, 30),
                                                       style=wx.TE_READONLY)
        self.list_left = wx.ListCtrl(part1,
                                     -1,
                                     pos=(625, 30),
                                     size=(250, 240),
                                     style=wx.SIMPLE_BORDER | wx.LC_REPORT
                                     | wx.LC_HRULES | wx.LC_VRULES)
        self.list_right = wx.ListCtrl(part1,
                                      -1,
                                      pos=(900, 30),
                                      size=(250, 240),
                                      style=wx.SIMPLE_BORDER | wx.LC_REPORT
                                      | wx.LC_HRULES | wx.LC_VRULES)
        self.list_left.InsertColumn(0, u'Descrição')
        self.list_left.InsertColumn(1, u'Quantidade')
        self.list_left.InsertColumn(2, u'Valor')
        self.list_right.InsertColumn(3, u'Descrição')
        self.list_right.InsertColumn(4, u'Quantidade')
        self.list_right.InsertColumn(5, u'Valor')
        wx.StaticText(part1, -1, u'Mês/Ano', pos=(10, 17))
        wx.StaticText(part1, -1, u'Lucro', pos=(10, 57))
        wx.StaticText(part1, -1, u'Receita', pos=(10, 97))
        wx.StaticText(part1, -1, u'Custos', pos=(10, 137))
        wx.StaticText(part1, -1, u'Total Perdido', pos=(10, 177))
        wx.StaticText(part1,
                      -1,
                      u'Entradas Pendentes de Pagamento',
                      pos=(10, 217))
        wx.StaticText(part1,
                      -1,
                      u'Gastos Pendentes de Pagamento',
                      pos=(10, 257))
        wx.StaticText(part1, -1, u'Rendimento Médio por dia', pos=(310, 17))
        wx.StaticText(part1, -1, u'Total Vendido no Cartão', pos=(310, 57))
        wx.StaticText(part1, -1, u'Total Vendido em Dinheiro', pos=(310, 97))
        wx.StaticText(part1,
                      -1,
                      u'Dia da Semana menos Rentável',
                      pos=(310, 137))
        wx.StaticText(part1,
                      -1,
                      u'Dia da Semana mais Rentável',
                      pos=(310, 177))
        wx.StaticText(part1,
                      -1,
                      u'Quantidade de Entradas Pendentes',
                      pos=(310, 217))
        wx.StaticText(part1,
                      -1,
                      u'Quantidade de Gastos Pendentes',
                      pos=(310, 257))

        wx.StaticText(part1, -1, u'Produtos de Maior Redimento',
                      pos=(625, 10)).SetFont(
                          wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD))
        wx.StaticText(part1, -1, u'Produtos Mais Vendidos',
                      pos=(900, 10)).SetFont(
                          wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD))

        part2 = wx.Panel(self,
                         -1,
                         pos=(10, 305),
                         size=(1180, 50),
                         style=wx.TAB_TRAVERSAL)
        part21 = wx.Panel(part2,
                          -1,
                          pos=(10, 0),
                          size=(620, 50),
                          style=wx.SIMPLE_BORDER)
        part22 = wx.Panel(part2,
                          -1,
                          pos=(790, 0),
                          size=(380, 50),
                          style=wx.SIMPLE_BORDER)
        button1 = GenBitmapTextButton(
            part21,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'Report.png',
                      wx.BITMAP_TYPE_PNG),
            u'Tabela de Vendas',
            pos=(0, 0),
            size=(150, 50))
        button2 = GenBitmapTextButton(
            part21,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'Report.png',
                      wx.BITMAP_TYPE_PNG),
            u'Tabela de Gastos',
            pos=(150, 0),
            size=(150, 50))
        button3 = GenBitmapTextButton(
            part21,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'Report.png',
                      wx.BITMAP_TYPE_PNG),
            u'Tabela de Produtos',
            pos=(300, 0),
            size=(150, 50))
        button7 = GenBitmapTextButton(
            part21,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'Report.png',
                      wx.BITMAP_TYPE_PNG),
            u'Tabela de Desperdícios',
            pos=(450, 0),
            size=(170, 50))
        button8 = GenBitmapTextButton(
            part2,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'Reset.png',
                      wx.BITMAP_TYPE_PNG),
            u'Recalcular',
            pos=(645, 0),
            size=(130, 50),
            style=wx.SIMPLE_BORDER)
        button4 = GenBitmapTextButton(
            part22,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'system-users.png',
                      wx.BITMAP_TYPE_PNG),
            u'Registar Gasto',
            pos=(0, 0),
            size=(130, 50))
        button5 = GenBitmapTextButton(
            part22,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'system-users.png',
                      wx.BITMAP_TYPE_PNG),
            u'Registrar Ganho',
            pos=(130, 0),
            size=(130, 50))
        button6 = GenBitmapTextButton(
            part22,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'system-users.png',
                      wx.BITMAP_TYPE_PNG),
            u'Observações',
            pos=(260, 0),
            size=(120, 50))
        button1.Bind(wx.EVT_BUTTON, self.open_sheets_sales)
        button2.Bind(wx.EVT_BUTTON, self.open_sheets_expenses)
        button3.Bind(wx.EVT_BUTTON, self.open_sheets_products)
        button7.Bind(wx.EVT_BUTTON, self.open_sheets_wastes)
        button8.Bind(wx.EVT_BUTTON, self.setup)
        button4.Bind(wx.EVT_BUTTON, self.open_new_monthly_expense)
        button5.Bind(wx.EVT_BUTTON, self.open_new_monthly_income)
        button6.Bind(wx.EVT_BUTTON, self.open_text_box)
        button1.SetBackgroundColour(core.COLOR_LIGHT_YELLOW)
        button2.SetBackgroundColour(core.COLOR_LIGHT_YELLOW)
        button3.SetBackgroundColour(core.COLOR_LIGHT_YELLOW)
        button7.SetBackgroundColour(core.COLOR_LIGHT_YELLOW)
        button4.SetBackgroundColour(core.COLOR_LIGHT_BLUE)
        button5.SetBackgroundColour(core.COLOR_LIGHT_BLUE)
        button6.SetBackgroundColour(core.COLOR_LIGHT_BLUE)

        part3 = wx.Panel(self,
                         pos=(10, 360),
                         size=(1180, 280),
                         style=wx.SIMPLE_BORDER)

        part31 = wx.Panel(part3,
                          56,
                          pos=(10, 5),
                          size=(575, 260),
                          style=wx.SUNKEN_BORDER)
        part31.SetBackgroundColour(core.COLOR_DEFAULT_BACKGROUND)
        self.list_incomes = wx.gizmos.TreeListCtrl(part31,
                                                   -1,
                                                   pos=(10, 10),
                                                   size=(400, 240),
                                                   style=wx.SIMPLE_BORDER
                                                   | wx.TR_DEFAULT_STYLE
                                                   | wx.TR_FULL_ROW_HIGHLIGHT)
        self.list_incomes.AddColumn(u"Data", width=110)
        self.list_incomes.AddColumn(u"Descrição", width=180)
        self.list_incomes.AddColumn(u"Valor", width=100)
        self.list_incomes.SetMainColumn(0)
        dr = wx.StaticText(part31, -1, u'Ganhos\nMensais', pos=(420, 10))
        dr.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))
        last_panel = wx.Panel(part31,
                              pos=(420, 80),
                              size=(145, 160),
                              style=wx.SIMPLE_BORDER)

        button31 = GenBitmapTextButton(
            last_panel,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'Add.png',
                      wx.BITMAP_TYPE_PNG),
            u'Adicionar',
            pos=(0, 0),
            size=(145, 40))
        button32 = GenBitmapTextButton(
            last_panel,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'Edit.png',
                      wx.BITMAP_TYPE_PNG),
            u'Editar',
            pos=(0, 40),
            size=(145, 40))
        button33 = GenBitmapTextButton(
            last_panel,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'Trash.png',
                      wx.BITMAP_TYPE_PNG),
            u'Apagar',
            pos=(0, 80),
            size=(145, 40))
        button34 = GenBitmapTextButton(
            last_panel,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'Reset.png',
                      wx.BITMAP_TYPE_PNG),
            u'Atualizar',
            pos=(0, 120),
            size=(145, 40))
        button31.Bind(wx.EVT_BUTTON, self.open_new_monthly_income)
        button32.Bind(wx.EVT_BUTTON, self.open_edit_monthly_income)
        button33.Bind(wx.EVT_BUTTON, self.ask_delete_income)
        button34.Bind(wx.EVT_BUTTON, self.setup_monthly_incomes)

        part32 = wx.Panel(part3,
                          56,
                          pos=(590, 5),
                          size=(575, 260),
                          style=wx.SUNKEN_BORDER)
        part32.SetBackgroundColour(core.COLOR_DEFAULT_BACKGROUND)
        self.list_expenses = wx.gizmos.TreeListCtrl(part32,
                                                    -1,
                                                    pos=(10, 10),
                                                    size=(400, 240),
                                                    style=wx.SIMPLE_BORDER
                                                    | wx.TR_DEFAULT_STYLE
                                                    | wx.TR_FULL_ROW_HIGHLIGHT)
        self.list_expenses.AddColumn(u"Data", width=110)
        self.list_expenses.AddColumn(u"Descrição", width=180)
        self.list_expenses.AddColumn(u"Valor", width=100)
        self.list_expenses.SetMainColumn(0)
        dr = wx.StaticText(part32, -1, u'Gastos\nMensais', pos=(420, 10))
        dr.SetFont(wx.Font(14, wx.SWISS, wx.NORMAL, wx.BOLD))
        last_buttons = wx.Panel(part32,
                                pos=(420, 80),
                                size=(145, 160),
                                style=wx.SIMPLE_BORDER)

        button41 = GenBitmapTextButton(
            last_buttons,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'Add.png',
                      wx.BITMAP_TYPE_PNG),
            u'Adicionar',
            pos=(0, 0),
            size=(145, 40))
        button42 = GenBitmapTextButton(
            last_buttons,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'Edit.png',
                      wx.BITMAP_TYPE_PNG),
            u'Editar',
            pos=(0, 40),
            size=(145, 40))
        button43 = GenBitmapTextButton(
            last_buttons,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'Trash.png',
                      wx.BITMAP_TYPE_PNG),
            u'Apagar',
            pos=(0, 80),
            size=(145, 40))
        button44 = GenBitmapTextButton(
            last_buttons,
            -1,
            wx.Bitmap(core.directory_paths['icons'] + 'Reset.png',
                      wx.BITMAP_TYPE_PNG),
            u'Atualizar',
            pos=(0, 120),
            size=(145, 40))
        button41.Bind(wx.EVT_BUTTON, self.open_new_monthly_expense)
        button42.Bind(wx.EVT_BUTTON, self.open_edit_monthly_expense)
        button43.Bind(wx.EVT_BUTTON, self.ask_delete_expense)
        button44.Bind(wx.EVT_BUTTON, self.setup_monthly_expenses)

        db = database.TransactionsDB()
        dates = db.list_record_dates(transactions=True)
        db.close()

        month_options = list()

        for date in dates:
            date_ = core.format_date_user(date[:7])
            if date_ not in month_options:
                month_options.append(date_)

        self.combobox_month_displayed = wx.ComboBox(part1,
                                                    -1,
                                                    choices=month_options,
                                                    size=(100, 30),
                                                    pos=(200, 15),
                                                    style=wx.CB_READONLY)
        self.combobox_month_displayed.Bind(wx.EVT_COMBOBOX, self.setup)
        if len(month_options) != 0:
            self.combobox_month_displayed.SetValue(month_options[0])
Ejemplo n.º 25
0
 def database_insert(self):
     db = database.TransactionsDB()
     db.insert_waste(self)
     db.close()
Ejemplo n.º 26
0
    def setup_selection_2(self):
        month_user = self.combobox_month_option.GetValue()
        date = core.format_date_internal(month_user)
        if not month_user:
            month_user = u"---------"
        main_root = self.list_edited_data.AddRoot(month_user)
        self.list_edited_data.SetItemText(main_root, u"Registros Apagados", 2)

        db = database.TransactionsDB()
        transactions = db.monthly_transactions_list(date, deleted=True)
        categories = db.categories_list(deleted=True)
        db.close()

        incomes_counter = 0
        expenses_counter = 0
        categories_counter = len(categories)

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

        incomes_value = 0.0
        income_root = self.list_edited_data.AppendItem(main_root, u"---------")
        self.list_edited_data.SetItemText(income_root, u"Entrada", 2)
        self.list_edited_data.SetItemText(income_root, str(expenses_counter),
                                          3)
        self.list_edited_data.SetItemFont(
            income_root, wx.Font(11, wx.SWISS, wx.NORMAL, wx.BOLD))
        for data in transactions:
            if data.type == data_types.EXPENSE:
                parent = expenses_root
                expenses_counter += 1
                expenses_value += data.value
            elif data.type == data_types.INCOME:
                parent = income_root
                incomes_counter += 1
                incomes_value += data.value
            else:
                parent = main_root

            item = self.list_edited_data.AppendItem(parent,
                                                    data.transaction_date)
            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(
            income_root, core.format_cash_user(incomes_value, currency=True),
            4)
        self.list_edited_data.SetItemText(
            expenses_root, core.format_cash_user(expenses_value,
                                                 currency=True), 4)

        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.SetItemText(
            main_root, str(incomes_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.º 27
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.º 28
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.º 29
0
 def ready(self, event):
     db = database.TransactionsDB()
     db.edit_transaction_payment(self.data.ID)
     db.close()
     self.exit(None)