예제 #1
0
    def bt_nuevo_cb(self, widget):
        self.encabezado = False
        fac = self.entity.get_new(
            self.padre.tim_nc_ventas,
            self.padre.establecimiento,
            self.padre.idpunto_expedicion
        )

        if str(fac[0]) == '1':
            fac = (self.padre.num_ini_nc_ventas,)

        if int(fac[0]) > self.padre.num_fin_nc_ventas:
            msg.errorMsgBox(self.nav('window1'), "Numero Maximo Alcanzado",
                            "Se ha superado la cantidad de numeros permitidos en el timbrado actual, avise al CONTADOR!")
            return

        est = '{:0>3}'.format(str(self.padre.establecimiento))
        pex = '{:0>3}'.format(str(self.padre.idpunto_expedicion))
        num = '{:0>7}'.format(str(fac[0]))
        factura = "%s-%s-%s" % (est, pex, num)

        self.formulario()
        self.frm('entry1').set_text(factura)
        self.frm('entry8').set_text(self.padre.user_login.nombres_apellidos)
        self.frm('entry7').set_text(str(self.padre.tim_nc_ventas))
        self.frm('entry2').set_text(datetime.now().strftime('%d/%m/%Y'))
        self.frm('entry3').grab_focus()
        self.frm('button2').set_sensitive(False)
예제 #2
0
    def cargar_articulos(self):
        if len(self.frm('entry9').get_text()) == 0:
            return
        dato = self.articulos.find(
            idarticulo=self.frm('entry9').get_text()
        )
        if dato[0] is None:
            msg.errorMsgBox(
                self.frm('window1'),
                "Articulo Inexistente",
                "El id ingresado no corresponde a ningún artículo registrado!"
            )
            self.frm('entry8').grab_focus()
            self.limpiar_articulos()
            return
        if not self.articulos.habil_compras:
            msg.errorMsgBox(
                self.frm('window1'),
                "Atención",
                "El articulo no está habilitado para compras."
            )
            self.limpiar_articulos()
            self.frm('entry8').grab_focus()
            return

        self.frm('entry10').set_text(self.articulos.descripcion)
        self.frm('label8').set_text(self.articulos.idunidad_medida + '-' + str(self.articulos.empaque))
        self.frm('label9').set_text(str(self.articulos.get_iva(self.articulos.idarticulo)))
        self.frm('entry11').set_text(str(self.articulos.precio_costo))
        self.frm('entry12').set_text('1')
예제 #3
0
    def cargar_proveedor(self):
        if len(self.frm("entry4").get_text()) == 0:
            return

        dato = self.contactos.get_contacto(1, self.frm("entry4").get_text())
        if dato is None:
            msg.errorMsgBox(
                self.frm("window1"), "Contacto Inexistente", "Contacto inexistente o no indicado como Cliente"
            )
            return
        self.frm("entry5").set_text(dato[1])
        self.frm("entry6").set_text(dato[2])
예제 #4
0
    def treeview_key_press_cb(self, widget, event):
        if event.keyval == 65535:
            sl, it = self.frm("treeview1").get_selection().get_selected()
            try:
                idarticulo = sl.get_value(it, 0)
            except:
                msg.errorMsgBox(self.frm("window1"), "Sin selección", "Seleccione un registro para eliminar")
                return
            res = msg.preguntaMsgBox(self.frm("window1"), "Eliminando Registro", "Estas seguro?")
            if res == -8:
                quitar = self.detalle.quitar_detalle(self.frm("entry1").get_text(), idarticulo)

                self.refrescar_detalle()
예제 #5
0
    def bt_eliminar_cb(self, widget):
        sl, it = self.nav('treeview1').get_selection().get_selected()
        try:
            pk = sl.get_value(it, 0)
            est = sl.get_value(it, 2)
        except:
            msg.errorMsgBox(self.nav('window1'), "Sin selección", "Es necesario seleccionar un registo")
            return
        res = msg.preguntaMsgBox(self.nav('window1'), "Eliminar Registro", "Estas Seguro?")

        if res == -8:
            datos = self.entity.find(idpunto_expedicion=pk, idestablecimiento=est)
            if self.entity.delete():
                self.consultar()
예제 #6
0
 def cargar_cuentas(self):
     if len(self.frm('entry1').get_text()) > 0:
         idcontacto = self.frm('entry1').get_text().split('-')[0]
         self.frm('liststore1').clear()
         for row in self.cuentas.cuentas_all(idcontacto):
             self.frm('liststore1').append([str(row[0]),
                                            str(row[1]),
                                            str(row[2]),
                                            Format.number(row[3]),
                                            row[4]])
     if len(self.frm('liststore1')) == 0:
         msg.errorMsgBox(self.frm('window1'),
                         "Cliente sin cuentas",
                         "Cliente sin cuentas pendientes de pago.")
예제 #7
0
    def bt_editar_cb(self, widget):
        sl, it = self.nav('treeview1').get_selection().get_selected()
        try:
            pk = sl.get_value(it, 0)
        except:
            msg.errorMsgBox(self.nav('window1'), "Sin selección", "Es necesario seleccionar un registo para la edición")
            return

        datos = self.entity.find(idestablecimiento=pk)
        self.formulario()
        self.frm('entry1').set_text(str(self.entity.idestablecimiento))
        self.frm('entry2').set_text(self.entity.direccion)
        self.frm('entry3').set_text(self.entity.telefono)
        self.set_active_combo(self.entity.idempresa)
예제 #8
0
 def cargar_proveedor(self):
     if len(self.frm('entry4').get_text()) == 0:
         return 
     
     dato = self.contactos.get_contacto(2, self.frm('entry4').get_text())
     if dato is None:
         msg.errorMsgBox(
             self.frm('window1'),
             "Contacto Inexistente",
             "Contacto inexistente o no establecido como Proveedor"
         )
         return 
     self.frm('entry5').set_text(dato[1])
     self.frm('entry6').set_text(dato[2])
예제 #9
0
    def bt_editar_cb(self, widget):
        sl, it = self.nav('treeview1').get_selection().get_selected()
        try:
            pk = sl.get_value(it, 0)
        except:
            msg.errorMsgBox(self.nav('window1'), "Sin selección", "Es necesario seleccionar un registo para la edición")
            return

        datos = self.entity.find(idusuario=pk)
        self.formulario()
        self.frm('entry1').set_text(str(self.entity.idusuario))
        self.frm('entry2').set_text(self.entity.nombres_apellidos)
        self.frm('entry3').set_text(self.entity.alias)
        self.frm('entry4').set_text(self.entity.clave)
예제 #10
0
 def bt_menos_cb(self, widget):
     sl, it = self.frm('treeview1').get_selection().get_selected()
     try:
         idtipo = sl.get_value(it, 0)
     except:
         msg.errorMsgBox(self.nav('window1'), "Sin selección", "Es necesario seleccionar un registo")
         return
     res = msg.preguntaMsgBox(self.nav('window1'), "Eliminar Registro", "Estas Seguro?")
     if res == -8:
         kwargs = {
             'idtipo_contacto': idtipo,
             'idcontacto': self.frm('entry1').get_text()
         }
         datos = self.entity_1.find(**kwargs)
         if self.entity_1.delete():
             self.consultar_tipos()
예제 #11
0
    def bt_eliminar_cb(self, widget):
        sl, it = self.nav('treeview1').get_selection().get_selected()
        try:
            pk = sl.get_value(it, 0)
        except:
            msg.errorMsgBox(self.nav('window1'), "Sin selección", "Es necesario seleccionar un registo")
            return
        res = msg.preguntaMsgBox(self.nav('window1'), "Eliminar Registro", "Estas Seguro?")

        if res == -8:
            kwargs = {
                self.entity.__pks__[0]: pk
            }
            datos = self.entity.find(**kwargs)
            if self.entity.delete():
                self.consultar()
예제 #12
0
    def bt_editar_cb(self, widget):
        sl, it = self.nav('treeview1').get_selection().get_selected()
        try:
            pk = sl.get_value(it, 0)
        except:
            msg.errorMsgBox(self.nav('window1'), "Sin selección", "Es necesario seleccionar un registo para la edición")
            return

        datos = self.entity.find(nro_timbrado=pk)
        self.formulario()
        self.frm('entry1').set_text(str(self.entity.nro_timbrado))
        self.frm('entry2').set_text(self.entity.fecha_vigencia.strftime('%d/%m/%Y'))
        self.frm('entry3').set_text(self.entity.fecha_vencimiento.strftime('%d/%m/%Y'))
        self.frm('entry4').set_text(str(self.entity.numero_inicial))
        self.frm('entry5').set_text(str(self.entity.numero_final))
        self.set_active_combo(str(self.entity.idtipo_comprobante))
예제 #13
0
    def bt_editar_cb(self, widget):
        sl, it = self.nav('treeview1').get_selection().get_selected()
        try:
            pk = sl.get_value(it, 0)
        except:
            msg.errorMsgBox(self.nav('window1'), "Sin selección", "Es necesario seleccionar un registo para la edición")
            return

        datos = self.entity.find(idcontacto=pk)
        self.formulario()
        self.frm('entry1').set_text(str(self.entity.idcontacto))
        self.frm('entry2').set_text(self.entity.razon_social)
        self.frm('entry3').set_text(self.entity.ruc_ci)
        self.frm('entry4').set_text(self.entity.direccion)
        self.frm('entry5').set_text(self.entity.telefono)
        self.consultar_tipos()
예제 #14
0
    def bt_editar_cb(self, widget):
        sl, it = self.nav('treeview1').get_selection().get_selected()
        try:
            pk = sl.get_value(it, 0)
            est = sl.get_value(it, 2)
        except:
            msg.errorMsgBox(self.nav('window1'), "Sin selección", "Es necesario seleccionar un registo para la edición")
            return

        datos = self.entity.find(idpunto_expedicion=pk, idestablecimiento=est)
        self.formulario()
        self.frm('entry1').set_text(str(self.entity.idpunto_expedicion))
        self.frm('entry2').set_text(self.entity.descripcion)
        self.set_active_combo(self.entity.idestablecimiento)

        self.frm('combobox1').set_sensitive(False)
예제 #15
0
    def treeview_key_press_cb(self, widget, event):
        if event.keyval == 65535:
            sl, it = self.frm('treeview1').get_selection().get_selected()
            try:
                idarticulo = sl.get_value(it, 0)
            except:
                msg.errorMsgBox(self.frm('window1'), "Sin selección", "Seleccione un registro para eliminar")
                return
            res = msg.preguntaMsgBox(self.frm('window1'), "Eliminando Registro",
                                     "Estas seguro?")
            if res == -8:
                nro_factura = self.frm('entry1').get_text().split('-')[2]
                quitar = self.detalle.quitar_detalle(
                    nro_factura,
                    self.frm('entry7').get_text(),
                    self.padre.establecimiento,
                    self.padre.idpunto_expedicion,
                    idarticulo
                )

                self.refrescar_detalle()
예제 #16
0
    def cargar_articulos(self):
        if len(self.frm('entry9').get_text()) == 0:
            return
        try:
            dato = self.articulos.find(
                idarticulo=self.frm('entry9').get_text()
            )
        except:
            msg.errorMsgBox(
                self.frm('window1'),
                "Articulo Inexistente",
                "El id ingresado no corresponde a ningún artículo registrado!"
            )
            return
        if dato[0] is None:
            msg.errorMsgBox(
                self.frm('window1'),
                "Articulo Inexistente",
                "El id ingresado no corresponde a ningún artículo registrado!"
            )
            self.frm('entry8').grab_focus()
            self.limpiar_articulos()
            return
        if not self.articulos.habil_ventas:
            msg.errorMsgBox(
                self.frm('window1'),
                "Atención",
                "El articulo no está habilitado para ventas."
            )
            self.limpiar_articulos()
            self.frm('entry8').grab_focus()
            return

        self.frm('entry10').set_text(self.articulos.descripcion)
        precios = self.precios.all(where = "idarticulo=%s and vigente = True"%self.articulos.idarticulo)
        if len(precios) > 1:
            busquedas.Buscar(self, precios,
                             [self.frm('entry11'), self.frm('label8')], None, 1, True)
        else:
            self.frm('entry11').set_text(str(precios[0][5]))
            self.frm('label8').set_text(precios[0][3] + '-' + str(precios[0][4]))
        self.frm('label9').set_text(str(self.articulos.get_iva(self.articulos.idarticulo)))

        self.frm('entry12').set_text('1')
예제 #17
0
    def guardar(self, widget=None):

        if len(self.frm('entry1').get_text()) == 0:
            msg.errorMsgBox(self.frm('window1'), "Campo Obligatorio",
                            "El campo Nro. Documento es Obligatorio!")
            self.frm('entry1').grab_focus()
            return
        if len(self.frm('entry2').get_text()) == 0:
            msg.errorMsgBox(self.frm('window1'), "Campo Obligatorio",
                            "El campo Fecha es Obligatorio!")
            self.frm('entry2').grab_focus()
            return
        if len(self.frm('entry3').get_text()) == 0:
            msg.errorMsgBox(self.frm('window1'), "Campo Obligatorio",
                            "El campo Tipo Factura es Obligatorio!")
            self.frm('entry3').grab_focus()
            return
        if len(self.frm('entry4').get_text()) == 0:
            msg.errorMsgBox(self.frm('window1'), "Campo Obligatorio",
                            "El campo Proveedor es Obligatorio!")
            self.frm('entry4').grab_focus()
            return
        if len(self.frm('entry7').get_text()) == 0:
            msg.errorMsgBox(self.frm('window1'), "Campo Obligatorio",
                            "El campo Timbrado es Obligatorio!")
            self.frm('entry7').grab_focus()
            return

        if len(self.frm('entry9').get_text()) == 0:
            msg.errorMsgBox(self.frm('window1'), "Campo Obligatorio",
                            "El campo Articulo es Obligatorio!")
            self.frm('entry9').grab_focus()
            return

        if len(self.frm('entry10').get_text()) == 0:
            msg.errorMsgBox(self.frm('window1'), "Campo Obligatorio",
                            "El campo Precio Costo es Obligatorio!")
            self.frm('entry10').grab_focus()
            return

        if not self.encabezado:
            self.entity.nro_notacredito = self.frm('entry1').get_text()
            self.entity.nro_timbrado = self.frm('entry7').get_text()
            self.entity.idcontacto = self.frm('entry4').get_text()
            self.entity.fecha = self.frm('entry2').get_text()
            self.entity.idtipo_factura = self.frm('entry3').get_text().split('-')[0]
            self.entity.idusuario = self.padre.user_login.idusuario

            self.entity.nro_factura = self.frm('entry13').get_text()
            self.entity.nro_timbrado_compras = self.frm('entry15').get_text()
            self.entity.idcontacto_compras = self.frm('entry4').get_text()

            if self.entity.save():
                self.desactivar_encabezado()
                self.encabezado = True
                self.consultar()

        if self.encabezado:
            cantidad = self.articulo_en_detalle(self.frm('entry9').get_text())
            if cantidad:
                cantidad += float(self.frm('entry12').get_text())
                update = self.detalle.update_cantidad(
                    cantidad, self.frm('entry1').get_text(),
                    self.frm('entry7').get_text(),
                    self.frm('entry4').get_text(),
                    self.frm('entry9').get_text()
                )
                if update:
                    self.limpiar_articulos()
                    self.refrescar_detalle()
                    self.frm('entry9').grab_focus()

                return

            self.detalle.nro_notacredito = self.frm('entry1').get_text()
            self.detalle.nro_timbrado = self.frm('entry7').get_text()
            self.detalle.idcontacto = self.frm('entry4').get_text()
            self.detalle.idarticulo = self.frm('entry9').get_text()
            self.detalle.idunidad_medida = self.frm('label8').get_text().split('-')[0]
            self.detalle.cantidad_empaque = self.frm('label8').get_text().split('-')[1]
            self.detalle.precio_costo = self.frm('entry11').get_text()
            self.detalle.iva = self.frm('label9').get_text()
            self.detalle.cantidad = self.frm('entry12').get_text()

            if self.detalle.save():
                self.refrescar_detalle()
                self.limpiar_articulos()
                self.frm('entry9').grab_focus()
                self.frm('button2').set_sensitive(True)
예제 #18
0
    def guardar(self, widget=None):

        if len(self.frm("entry1").get_text()) == 0:
            msg.errorMsgBox(self.frm("window1"), "Campo Obligatorio", "El campo Nro. Documento!")
            self.frm("entry1").grab_focus()
            return
        if len(self.frm("entry2").get_text()) == 0:
            msg.errorMsgBox(self.frm("window1"), "Campo Obligatorio", "El campo Fecha es Obligatorio!")
            self.frm("entry2").grab_focus()
            return
        if len(self.frm("entry4").get_text()) == 0:
            msg.errorMsgBox(self.frm("window1"), "Campo Obligatorio", "El campo Cliente es Obligatorio!")
            self.frm("entry4").grab_focus()
            return
        if len(self.frm("entry9").get_text()) == 0:
            msg.errorMsgBox(self.frm("window1"), "Campo Obligatorio", "El campo Articulo es Obligatorio!")
            self.frm("entry9").grab_focus()
            return

        if len(self.frm("entry10").get_text()) == 0:
            msg.errorMsgBox(self.frm("window1"), "Campo Obligatorio", "El campo Precio Costo es Obligatorio!")
            self.frm("entry10").grab_focus()
            return

        if not self.encabezado:
            self.entity.numero = self.frm("entry1").get_text()
            self.entity.fecha = self.frm("entry2").get_text()
            self.entity.idcontacto = self.frm("entry4").get_text()
            self.entity.idusuario = self.padre.user_login.idusuario

            if self.entity.save():
                self.desactivar_encabezado()
                self.encabezado = True
                self.consultar()

        if self.encabezado:
            cantidad = self.articulo_en_detalle(self.frm("entry9").get_text())
            if cantidad:
                cantidad += float(self.frm("entry12").get_text())
                update = self.detalle.update_cantidad(
                    cantidad, self.frm("entry1").get_text(), self.frm("entry9").get_text()
                )
                if update:
                    self.limpiar_articulos()
                    self.refrescar_detalle()
                    self.frm("entry9").grab_focus()

                return

            self.detalle.numero = self.frm("entry1").get_text()
            self.detalle.idarticulo = self.frm("entry9").get_text()
            self.detalle.cantidad = self.frm("entry12").get_text()
            self.detalle.idunidad_medida = self.frm("label8").get_text().split("-")[0]
            self.detalle.cantidad_empaque = self.frm("label8").get_text().split("-")[1]
            self.detalle.precio_venta = self.frm("entry11").get_text()
            self.detalle.iva = self.frm("label9").get_text()

            if self.detalle.save():
                self.refrescar_detalle()
                self.limpiar_articulos()
                self.frm("entry9").grab_focus()
                self.frm("button2").set_sensitive(True)