Esempio n. 1
0
 def build(self):
     # create a default grid layout with custom width/height
     table = TableView(size=(500,320),
             pos_hint={'x':0.1, 'center_y':.5})
     # columns
     table.add_column(TableColumn("Col1", key="1", hint_text='0'))
     table.add_column(TableColumn("Col2", key="2", hint_text='0'))
     # content
     for i in range(30):
         row = {'1': str(2*i+0), '2': str(2*i+1)}
         table.add_row(row)
     return table
Esempio n. 2
0
class DbScreen(Screen):
    def __init__(self, **kwargs):
        super(DbScreen, self).__init__(**kwargs)
        self.refresh()

    def on_pre_enter(self):
        self.refresh()

    def changer(self, *args):
        self.manager.current = 'main_screen'

    def refresh(self, ):
        self.layout = BoxLayout(orientation="vertical")
        self.table_layout = BoxLayout(orientation="horizontal",
                                      size_hint=(1.0, 1.0))
        self.article_layout = BoxLayout(orientation="vertical")
        self.delete_layout = BoxLayout(orientation="vertical",
                                       size_hint=(0.2, 1.0))
        self.total_layout = BoxLayout(orientation="horizontal",
                                      size_hint=(1.0, 0.2))
        self.table_layout.clear_widgets()
        self.labels = TableView(size_hint=(0.913, 1.0))
        self.labels.add_column(
            TableColumn("Codigo", key="codigo", hint_text='0'))
        self.labels.add_column(
            TableColumn("Descripcion", key="descripcion", hint_text='0'))
        self.labels.add_column(
            TableColumn("Empresa", key="empresa", hint_text='0'))
        self.labels.add_column(
            TableColumn("Unidades por bulto",
                        key="cantidad_bulto",
                        hint_text='0'))
        self.labels.add_column(
            TableColumn("Precio", key="precio", hint_text='0'))
        self.table = TableView(size_hint=(1.0, 1.0))
        self.table.add_column(
            TableColumn("Codigo", key="codigo", hint_text='0'))
        self.table.add_column(
            TableColumn("Descripcion", key="descripcion", hint_text='0'))
        self.table.add_column(
            TableColumn("Empresa", key="empresa", hint_text='0'))
        self.table.add_column(
            TableColumn("Unidades por bulto",
                        key="cantidad_bulto",
                        hint_text='0'))
        self.table.add_column(
            TableColumn("Precio", key="precio", hint_text='0'))
        row = {
            "codigo": "Codigo",
            "descripcion": "Descripcion",
            "empresa": "Empresa",
            "cantidad_bulto": "Unidades por bulto",
            "precio": "Precio"
        }
        self.labels.add_row(row)
        i = 0
        self.content = BoxLayout(orientation='vertical')
        delete = Button(text="Eliminar", on_release=self.delete)
        delete.bind(on_release=self.delete)
        self.delete_label = Label(text="Esta a punto de eliminar un elemento")
        self.content.add_widget(self.delete_label)
        self.content.add_widget(delete)
        self.delete_popup = Popup(title="Eliminar",
                                  content=self.content,
                                  size_hint=(0.9, 0.25))
        for key in store.keys():
            row = {
                "codigo": store.get(key)['codigo'],
                "descripcion": store.get(key)['descripcion'],
                "empresa": store.get(key)['empresa'],
                "cantidad_bulto": store.get(key)['unidad_bulto'],
                "precio": store.get(key)['precio']
            }
            self.table.add_row(row)
            self.delete_layout.add_widget(
                Button(text="Eliminar",
                       id=str(i),
                       on_release=self.call_delete_popup))
            i = i + 1
        self.article_layout.add_widget(self.labels)
        self.table_layout.add_widget(self.table)
        self.table_layout.add_widget(self.delete_layout)
        self.article_layout.add_widget(self.table_layout)
        self.clear_content = BoxLayout(orientation='vertical')
        clear_button = Button(text="Eliminar")
        clear_button.bind(on_release=self.clear)
        self.clear_label = Label(
            text="Esta a punto de eliminar todos los elementos")
        self.clear_content.add_widget(self.clear_label)
        self.clear_content.add_widget(clear_button)
        self.clear_popup = Popup(title="Eliminar",
                                 content=self.clear_content,
                                 size_hint=(0.9, 0.25))
        self.clear_button = Button(text="Borrar todo", size_hint=(1.0, 0.1))
        self.clear_button.bind(on_release=self.clear_popup.open)
        self.content = BoxLayout(orientation="vertical")
        previous_button = Button(text="Volver", size_hint=(1.0, 0.1))
        previous_button.bind(on_release=self.changer)
        self.discount = TextInput(text="0.0")
        self.layout.add_widget(self.article_layout)
        self.layout.add_widget(self.clear_button)
        self.layout.add_widget(previous_button)
        self.clear_widgets()
        self.add_widget(self.layout)

    def call_delete_popup(self, button):
        i = 0
        for key in store.keys():
            if i == int(button.id):
                break
            i = i + 1
        self.delete_index = i
        self.delete_popup.open()

    def delete(self, button):
        key = store.keys()[self.delete_index]
        store.delete(key)
        self.delete_popup.dismiss()
        self.refresh()

    def clear(self, button):
        for key in store.keys():
            store.delete(key)
        self.clear_popup.dismiss()
        self.refresh()
Esempio n. 3
0
class TableScreen(Screen):
    def __init__(self, **kwargs):
        super(TableScreen, self).__init__(**kwargs)
        self.refresh()

    def on_pre_enter(self):
        self.refresh()

    def changer(self, *args):
        self.manager.current = 'main_screen'

    def refresh(self, ):
        self.layout = BoxLayout(orientation="vertical")
        self.table_layout = BoxLayout(orientation="horizontal",
                                      size_hint=(1.0, 1.0))
        self.article_layout = BoxLayout(orientation="vertical")
        self.quantity_layout = BoxLayout(orientation="vertical",
                                         size_hint=(0.1, 1.0))
        self.delete_layout = BoxLayout(orientation="vertical",
                                       size_hint=(0.2, 1.0))
        self.total_layout = BoxLayout(orientation="horizontal",
                                      size_hint=(1.0, 0.2))
        self.table_layout.clear_widgets()
        self.labels = TableView(size_hint=(0.877, 1.0))
        self.labels.add_column(
            TableColumn("Codigo", key="codigo", hint_text='0'))
        self.labels.add_column(
            TableColumn("Descripcion", key="descripcion", hint_text='0'))
        self.labels.add_column(
            TableColumn("Empresa", key="empresa", hint_text='0'))
        self.labels.add_column(
            TableColumn("Unidades por bulto",
                        key="cantidad_bulto",
                        hint_text='0'))
        self.labels.add_column(
            TableColumn("Precio", key="precio", hint_text='0'))
        self.table = TableView(size_hint=(1.0, 1.0))
        self.table.add_column(
            TableColumn("Codigo", key="codigo", hint_text='0'))
        self.table.add_column(
            TableColumn("Descripcion", key="descripcion", hint_text='0'))
        self.table.add_column(
            TableColumn("Empresa", key="empresa", hint_text='0'))
        self.table.add_column(
            TableColumn("Unidades por bulto",
                        key="cantidad_bulto",
                        hint_text='0'))
        self.table.add_column(
            TableColumn("Precio", key="precio", hint_text='0'))
        row = {
            "codigo": "Codigo",
            "descripcion": "Descripcion",
            "empresa": "Empresa",
            "cantidad_bulto": "Unidades por bulto",
            "precio": "Precio"
        }
        self.labels.add_row(row)
        i = 0
        self.content = BoxLayout(orientation='vertical')
        delete = Button(text="Eliminar", on_release=self.delete)
        delete.bind(on_release=self.delete)
        self.delete_label = Label(text="Esta a punto de eliminar un elemento")
        self.content.add_widget(self.delete_label)
        self.content.add_widget(delete)
        self.delete_popup = Popup(title="Eliminar",
                                  content=self.content,
                                  size_hint=(0.9, 0.25))
        for key in shopping_car.keys():
            row = {
                "codigo": shopping_car.get(key)['codigo'],
                "descripcion": shopping_car.get(key)['descripcion'],
                "empresa": shopping_car.get(key)['empresa'],
                "cantidad_bulto": shopping_car.get(key)['unidad_bulto'],
                "precio": shopping_car.get(key)['precio']
            }
            self.table.add_row(row)
            self.quantity_layout.add_widget(
                TextInput(text=shopping_car.get(key)['cantidad'], id=str(i)))
            self.delete_layout.add_widget(
                Button(text="Eliminar",
                       id=str(i),
                       on_release=self.call_delete_popup))
            i = i + 1
        for children in self.quantity_layout.children:
            children.bind(text=self.refresh_total)
        self.article_layout.add_widget(self.labels)
        self.table_layout.add_widget(self.table)
        self.table_layout.add_widget(self.quantity_layout)
        self.table_layout.add_widget(self.delete_layout)
        self.article_layout.add_widget(self.table_layout)
        self.clear_content = BoxLayout(orientation='vertical')
        clear_button = Button(text="Eliminar")
        clear_button.bind(on_release=self.clear)
        self.clear_label = Label(
            text="Esta a punto de eliminar todos los elementos")
        self.clear_content.add_widget(self.clear_label)
        self.clear_content.add_widget(clear_button)
        self.clear_popup = Popup(title="Eliminar",
                                 content=self.clear_content,
                                 size_hint=(0.9, 0.25))
        self.clear_button = Button(text="Borrar todo", size_hint=(1.0, 0.1))
        self.clear_button.bind(on_release=self.clear_popup.open)
        self.content = BoxLayout(orientation="vertical")
        export = Button(text="Export", on_release=self.export)
        self.export_name = TextInput(hint_text="Nombre del archivo")
        self.content.add_widget(self.export_name)
        self.content.add_widget(export)
        self.export_popup = Popup(title="Exportar archivo",
                                  content=self.content,
                                  size_hint=(0.9, 0.25))
        export_button = Button(text="Exportar", size_hint=(1.0, 0.1))
        export_button.bind(on_release=self.export_popup.open)
        previous_button = Button(text="Volver", size_hint=(1.0, 0.1))
        previous_button.bind(on_release=self.changer)
        self.discount = TextInput(text="0.0")
        discount_button = Button(text="Aplicar descuento")
        discount_button.bind(on_release=self.apply_discount)
        self.discount_warning = Popup(title="Error!",
                                      content=Label(text="Descuento invalido"),
                                      size_hint=(0.9, 0.25))
        self.succes_export_popup = Popup(
            title="Exportar Archivo",
            content=Label(text="Archivo exportado con exito"),
            size_hint=(0.9, 0.25))
        self.total = Label(text="Total")
        self.calculate_total(0)
        self.total_layout.add_widget(self.discount)
        self.total_layout.add_widget(discount_button)
        self.total_layout.add_widget(self.total)
        self.layout.add_widget(self.article_layout)
        self.layout.add_widget(self.total_layout)
        self.layout.add_widget(export_button)
        self.layout.add_widget(self.clear_button)
        self.layout.add_widget(previous_button)
        self.clear_widgets()
        self.add_widget(self.layout)

    def call_delete_popup(self, button):
        i = 0
        for key in shopping_car.keys():
            if i == int(button.id):
                break
            i = i + 1
        self.delete_index = i
        self.delete_popup.open()

    def delete(self, button):
        key = shopping_car.keys()[self.delete_index]
        shopping_car.delete(key)
        self.delete_popup.dismiss()
        self.refresh()

    def clear(self, button):
        for key in shopping_car.keys():
            shopping_car.delete(key)
        self.clear_popup.dismiss()
        self.refresh()

    def calculate_total(self, discount):
        i = 0
        total = 0
        for key in shopping_car.keys():
            price = float(shopping_car.get(key)['precio'])
            for children in self.quantity_layout.children:
                if int(children.id) == i:
                    quantity = int(children.text)
            total = total + quantity * price
        total = (1 - discount) * total
        self.total.text = "%.2f" % total

    def apply_discount(self, button):
        try:
            discount = float(self.discount.text)
        except:
            self.discount_warning.open()
            return
        if discount > 100 or discount < 0:
            self.discount_warning.open()
            return
        discount = discount / 100
        self.calculate_total(discount)

    def refresh_total(self, text_input, text):
        try:
            discount = float(self.discount.text)
        except:
            self.discount_warning.open()
            return
        if discount > 100 or discount < 0:
            self.discount_warning.open()
            return
        discount = discount / 100
        self.calculate_total(discount)

    def export(self, button):
        name = self.export_name.text
        i = 0
        f = open("/sdcard/" + name + ".csv", "w+")
        f.write(
            "Codigo,Descripcion,Empresa,Unidades por bulto,Precio unitario,Cantidad,Subtotal\n"
        )
        for key in shopping_car.keys():
            codigo = shopping_car.get(key)['codigo']
            descripcion = shopping_car.get(key)['descripcion']
            empresa = shopping_car.get(key)['empresa']
            cantidad_bulto = shopping_car.get(key)['unidad_bulto']
            precio = shopping_car.get(key)['precio']
            for children in self.quantity_layout.children:
                if int(children.id) == i:
                    quantity = int(children.text)
            subtotal = str(quantity * float(precio))
            f.write("%s,%s,%s,%s,%s,%s,%s\n" %
                    (codigo, descripcion, empresa, cantidad_bulto, precio,
                     str(quantity), subtotal))
        f.write(" , , , , ,Descuento,%s\n" % (self.discount.text))
        f.write(" , , , , ,Total,%s\n" % (self.total.text))
        f.close()
        self.export_popup.dismiss()
        self.succes_export_popup.open()