示例#1
0
    def cargar_grilla_detalles(self):
        # Cargar campo Total
        cursor = Op.consultar(
            self.conexion, "Total", self.tabla + "_s",
            " WHERE NroPedidoVenta = " + self.obj("txt_00").get_text())
        self.obj("txt_total").set_text(str(cursor.fetchall()[0][0]))

        # Cargar los Detalles de la Factura
        cursor = Op.consultar(
            self.conexion,
            "idDetalle, Nombre, Cantidad, " + "Precio, SubTotal, idItem",
            self.tabla + "_detalles_s", " WHERE " + "NroPedidoVenta = " +
            self.obj("txt_00").get_text() + " ORDER BY idItem")
        datos = cursor.fetchall()
        cant = cursor.rowcount

        lista = self.obj("grilla").get_model()
        lista.clear()

        for i in range(0, cant):
            lista.append([
                datos[i][0], datos[i][1], datos[i][2], datos[i][3],
                datos[i][4], datos[i][5]
            ])

        cant = str(cant) + " registro encontrado." if cant == 1 \
            else str(cant) + " registros encontrados."
        self.obj("barraestado").push(0, cant)
    def eliminar_nota_lote(self, item):
        nota = self.obj("txt_00_3").get_text()
        timb = self.obj("txt_01_1").get_text()

        # Seleccionar Lotes del item seleccionado
        cursor = Op.consultar(
            self.conexion, "NroLote, Cantidad", self.tabla + "_lotes_s",
            " WHERE NroTimbrado = " + timb + " AND NroNotaDebito = " + nota +
            " AND idItem = " + item)
        datos = cursor.fetchall()
        cant = cursor.rowcount

        self.obj("barraestado").push(
            0, "Se han encontrado " + str(cant) + " Lotes a Modificar.")

        for i in range(0, cant):
            cursor = Op.consultar(
                self.conexion, "Cantidad", "lotes",
                " WHERE NroLote = '" + datos[i][0] + "' AND idItem = " + item)
            cant_lote = cursor.fetchall()[0][0] - datos[i][1]

            Op.modificar(
                self.conexion, "lotes_cantidad",
                "'" + datos[i][0] + "', " + item + ", " + str(cant_lote))

            self.obj("barraestado").push(
                0, "Modificando el Lote Nº " + str(i + 1) + " de " +
                str(cant) + ".")

            # Eliminar Nota de Debito con Lotes
            Op.eliminar(
                self.conexion, self.tabla + "_lotes",
                timb + ", " + nota + ", '" + datos[i][0] + "', " + item)
示例#3
0
    def buscar_clientes(self, objeto, campo, valor, nombre):
        conexion = Op.conectar(self.datos_conexion)
        cursor = Op.consultar(
            conexion, "idPersona, RazonSocial, NroDocumento, " +
            "idTipoDocumento, DireccionPrincipal, TelefonoPrincipal",
            "personas_s",
            " WHERE " + campo + " = " + valor + " AND Cliente = 1")
        datos = cursor.fetchall()
        cant = cursor.rowcount
        conexion.close()  # Finaliza la conexión

        if cant > 0:
            direc = "" if datos[0][4] is None else datos[0][4]
            telef = "" if datos[0][5] is None else datos[0][5]

            self.obj("txt_01").set_text(str(datos[0][0]))
            self.obj("txt_01_1").set_text(datos[0][1])
            self.obj("txt_01_2").set_text(datos[0][2])
            self.obj("txt_01_3").set_text(direc)
            self.obj("txt_01_4").set_text(telef)

            # Asignación de Tipo de Documento en Combo
            model, i = self.obj("cmb_tipo_doc").get_model(), 0
            while model[i][0] != datos[0][3]:
                i += 1
            self.obj("cmb_tipo_doc").set_active(i)

            # Buscar Tipo de Cliente y Vendedor
            conexion = Op.conectar(self.datos_conexion)
            cursor = Op.consultar(
                conexion, "idTipoCliente, idVendedor, " + "NombreApellido",
                "clientes_s", " WHERE idCliente = " + str(datos[0][0]))
            datos = cursor.fetchall()
            cant = cursor.rowcount
            conexion.close()  # Finaliza la conexión

            self.idTipoCliente = str(datos[0][0])
            self.obj("txt_02").set_text(str(datos[0][1]))
            self.obj("txt_02_1").set_text(datos[0][2])

            self.obj("barraestado").push(0, "")
            self.verificacion(0)

        else:
            self.estadoguardar(False)
            objeto.grab_focus()
            self.obj("barraestado").push(0, "El " + nombre + " no es válido.")

            otro = self.obj("txt_01_2") if objeto == self.obj(
                "txt_01") else self.obj("txt_01")
            otro.set_text("")

            self.obj("txt_01_1").set_text("")
            self.obj("txt_01_3").set_text("")
            self.obj("txt_01_4").set_text("")
示例#4
0
def eliminar(self):
    seleccion, iterador = self.obj("grilla").get_selection().get_selected()
    valor0 = seleccion.get_value(iterador, 1)
    valor1 = str(seleccion.get_value(iterador, 0))
    valor2 = seleccion.get_value(iterador, 2)
    valor3 = seleccion.get_value(iterador, 4)
    valor4 = str(seleccion.get_value(iterador, 9))
    valor5 = str(seleccion.get_value(iterador, 10))
    valor6 = seleccion.get_value(iterador, 13)
    confirmado = seleccion.get_value(iterador, 14)

    mensaje = "Seleccionó:\n\nNro. de Factura: " + valor0 + "\nNro. de Timbrado: " + valor1 + \
        "\nFecha: " + valor2 + "\nProveedor: " + valor3 + "\nTotal a Pagar: " + valor4 + \
        "\nTotal Liq. del IVA: " + valor5 + "\nResponsable: " + valor6

    if confirmado != 1:
        eleccion = Mens.pregunta_borrar(mensaje)
        self.obj("grilla").get_selection().unselect_all()
        self.obj("barraestado").push(0, "")

        if eleccion:
            conexion = Op.conectar(self.datos_conexion)

            # Modificar Cantidades de Lotes afectados
            cursor = Op.consultar(conexion, "NroLote, idItem, Cantidad",
                self.tabla + "_lotes_s", " WHERE NroTimbrado = " + valor1 +
                " AND NroFactura = '" + valor0 + "' ORDER BY idItem")
            datos = cursor.fetchall()
            cant = cursor.rowcount

            self.obj("barraestado").push(0, "Se han encontrado " + str(cant) + " Lotes a Modificar.")

            for i in range(0, cant):
                cursor = Op.consultar(conexion, "Cantidad",
                    "lotes", " WHERE NroLote = '" + datos[i][0] + "'" +
                    " AND idItem = " + str(datos[i][1]))
                cant_lote = cursor.fetchall()[0][0] - datos[i][2]

                Op.modificar(conexion, "lotes_cantidad",
                    "'" + datos[i][0] + "', " + str(datos[i][1]) + ", " + str(cant_lote))

                self.obj("barraestado").push(0, "Modificando el Lote " +
                "Nº " + str(i + 1) + " de " + str(cant) + ".")

            # Eliminar Factura de Compra
            Op.eliminar(conexion, self.tabla, valor1 + ", '" + valor0 + "'")
            conexion.commit()

            conexion.close()  # Finaliza la conexión
            cargar_grilla(self)
    else:
        Mens.no_puede_modificar_eliminar_anular(2, mensaje +
        "\n\nEsta Factura de Compra ya ha sido Confirmada." +
        "\nSolo puede eliminar Facturas pendientes de confirmación.")
示例#5
0
def cargar_grilla(self):
    if self.campo_buscar in ("FechaHora", "FechaHoraExp", "FechaNacimiento"):
        opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \
        " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'"
    else:
        opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \
        " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'"

    conexion = Op.conectar(self.datos_conexion)
    cursor = Op.consultar(conexion, "idAnticipo, NroContrato, idEmpleado, " +
        "idTipoDocumento, NroDocumento, NombreApellido, FechaNacimiento, " +
        "Edad, Cargo, NroComprobante, FechaHoraExp, Monto, FechaHora, " +
        "Observaciones, Alias, NroDocUsuario, NombreUsuario",
        self.tabla + "_s", opcion + " ORDER BY NroContrato, " + self.campoid)
    datos = cursor.fetchall()
    cant = cursor.rowcount
    conexion.close()  # Finaliza la conexión

    lista = self.obj("grilla").get_model()
    lista.clear()

    for i in range(0, cant):
        fechanac = "" if datos[i][6] is None else Cal.mysql_fecha(datos[i][6])
        fechacomp = "" if datos[i][10] is None else Cal.mysql_fecha_hora(datos[i][10])
        fechaexp = "" if datos[i][12] is None else Cal.mysql_fecha_hora(datos[i][12])

        lista.append([datos[i][0], datos[i][1], datos[i][2], datos[i][3],
            datos[i][4], datos[i][5], fechanac, datos[i][7], datos[i][8],
            datos[i][9], fechacomp, datos[i][11], fechaexp, datos[i][13],
            datos[i][14], datos[i][15], datos[i][16], str(datos[i][6]),
            str(datos[i][10]), str(datos[i][12])])

    cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
    self.obj("barraestado").push(0, cant)
def cargar_grilla(self):
    opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \
    " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'"

    if self.obj("rad_act").get_active() or self.obj("rad_ina").get_active():
        activo = "1" if self.obj("rad_act").get_active() else "0"
        opcion += " WHERE " if len(opcion) == 0 else " AND "
        opcion += "Activo = " + activo

    conexion = Op.conectar(self.datos_conexion)
    cursor = Op.consultar(
        conexion, "NroEstablecimiento, Nombre, " +
        "NroDocumento, RazonSocial, Ciudad, Barrio, Direccion, " +
        "NroTelefono, Activo, idEmpresa, idDireccion", self.tabla + "_s",
        opcion + " ORDER BY " + self.campoid)
    datos = cursor.fetchall()
    cant = cursor.rowcount
    conexion.close()  # Finaliza la conexión

    lista = self.obj("grilla").get_model()
    lista.clear()

    for i in range(0, cant):
        lista.append([
            datos[i][0], datos[i][1], datos[i][2], datos[i][3], datos[i][4],
            datos[i][5], datos[i][6], datos[i][7], datos[i][8], datos[i][9],
            datos[i][10]
        ])

    cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
    self.obj("barraestado").push(0, cant)
示例#7
0
    def cargar_item_pedido(self):
        self.pedido_guardado = False
        self.guardar_encabezado()

        orden = self.obj("txt_00").get_text()
        pedido = self.obj("txt_02").get_text()

        # Eliminando Items del Pedido anterior
        datos = self.obj("grilla").get_model()
        cant = len(datos)
        if cant > 0:  # Si existen ítems registrados en la Orden, los elimina
            for i in range(0, cant):
                Op.eliminar(self.conexion, "ordencompras_detalles",
                            orden + ", " + str(datos[i][0]))

        # Obteniendo Items desde Pedido seleccionado
        conexion = Op.conectar(self.nav.datos_conexion)
        cursor = Op.consultar(conexion, "idItem, Cantidad",
                              "pedidocompras_detalles_s",
                              " WHERE NroPedidoCompra = " + pedido)
        datos = cursor.fetchall()
        cant = cursor.rowcount
        conexion.close()  # Finaliza la conexión

        # Cargando Items desde Pedido seleccionado
        for i in range(0, cant):
            Op.insertar(
                self.conexion, "ordencompras_detalles",
                orden + ", " + str(datos[i][0]) + ", " + str(datos[i][1]) +
                ", NULL, NULL, NULL")

        self.cargar_grilla_items()
        self.verificacion(0)
示例#8
0
    def cargar_grilla_buscar(self):
        buscar = self.obj("txt_buscar").get_text()

        if self.campo_buscar == "FechaVencimiento":
            opcion = "" if len(buscar) == 0 else \
            " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'"
        else:
            opcion = "" if len(buscar) == 0 else \
            " AND " + self.campo_buscar + " LIKE '%" + buscar + "%'"

        conexion = Op.conectar(self.origen.datos_conexion)
        cursor = Op.consultar(
            conexion, "NroLote, FechaVencimiento, " + "Cantidad", "lotes",
            " WHERE idItem = " + self.idItem + opcion +
            " ORDER BY FechaVencimiento DESC")
        datos = cursor.fetchall()
        cant = cursor.rowcount
        conexion.close()  # Finaliza la conexión

        lista = self.obj("grilla_buscar").get_model()
        lista.clear()

        for i in range(0, cant):
            lista.append([
                datos[i][0],
                Cal.mysql_fecha(datos[i][1]), datos[i][2],
                str(datos[i][1])
            ])

        cant = str(cant) + " registro encontrado." if cant == 1 \
            else str(cant) + " registros encontrados."
        self.obj("barraestado").push(0, cant)
示例#9
0
    def cargar_items(self, objeto, campo, valor, nombre):
        conexion = Op.conectar(self.datos_conexion)
        cursor = Op.consultar(
            conexion, "idItem, CodigoBarras, Nombre, " +
            "idPresentacion, Presentacion, idCategoria, Categoria, Porcentaje",
            "items_s", " WHERE " + campo + " = " + valor)
        datos = cursor.fetchall()
        cant = cursor.rowcount
        conexion.close()  # Finaliza la conexión

        if cant > 0:
            self.obj("txt_00").set_text(str(datos[0][0]))
            codbar = "" if datos[0][1] is None else datos[0][1]

            self.obj("txt_00_1").set_text(codbar)
            self.obj("txt_00_2").set_text(datos[0][2])
            self.obj("txt_00_3").set_text(str(datos[0][3]))
            self.obj("txt_00_4").set_text(datos[0][4])
            self.obj("txt_00_5").set_text(str(datos[0][5]))
            self.obj("txt_00_6").set_text(datos[0][6])
            self.obj("txt_00_7").set_text(str(datos[0][7]))

            self.cargar_grilla_lotes()
            self.estadoguardar(True)
        else:
            objeto.grab_focus()
            self.estadoguardar(False)
            self.obj("barraestado").push(0, "El " + nombre + " no es válido.")

            otro = self.obj("txt_00_1") if objeto == self.obj(
                "txt_00") else self.obj("txt_00")
            self.limpiar_items()
            otro.set_text("")
示例#10
0
def cargar_grilla(self):
    opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \
    " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'"

    conexion = Op.conectar(self.datos_conexion)
    cursor = Op.consultar(conexion, self.campoid + ", NroDocumento, " +
        "DigitoVerificador, RazonSocial, NombreFantasia, idPropietario, " +
        "NroDocPropietario, NombreApellido, DireccionPrincipal, " +
        "TelefonoPrincipal, NroPatronalIPS, NroPatronalMJT", self.tabla + "_s",
        opcion + " ORDER BY " + self.campoid)
    datos = cursor.fetchall()
    cant = cursor.rowcount
    conexion.close()  # Finaliza la conexión

    lista = self.obj("grilla").get_model()
    lista.clear()

    for i in range(0, cant):
        documento = str(datos[i][1]) + "-" + str(datos[i][2])
        lista.append([datos[i][0], documento, datos[i][3], datos[i][4],
            datos[i][5], datos[i][6], datos[i][7], datos[i][8], datos[i][9],
            datos[i][10], datos[i][11], datos[i][2]])

    cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
    self.obj("barraestado").push(0, cant)
示例#11
0
    def cargar_item_orden(self):
        self.guardar_encabezado()

        fact = self.obj("txt_00").get_text()
        timb = self.obj("txt_01").get_text()
        orden = self.obj("txt_orden").get_text()

        # Eliminando Items de la Orden anterior
        datos = self.obj("grilla").get_model()
        cant = len(datos)
        if cant > 0:  # Si existen ítems registrados en la Factura, los elimina
            for i in range(0, cant):
                Op.eliminar(self.nav.conexion, self.nav.tabla + "_detalles",
                timb + ", '" + fact + "', " + str(datos[i][0]))

        # Obteniendo Items desde Orden seleccionada
        cursor = Op.consultar(self.nav.conexion, "idItem, Cantidad, PrecioAcordado, Porcentaje",
        "ordencompras_detalles_s", " WHERE NroOrdenCompra = " + orden)
        datos = cursor.fetchall()
        cant = cursor.rowcount

        # Cargando Items desde Orden seleccionada
        for i in range(0, cant):
            Op.insertar(self.nav.conexion, self.nav.tabla + "_detalles",
            timb + ", '" + fact + "', " + str(datos[i][0]) + ", " +
            str(datos[i][1]) + ", " + str(datos[i][2]) + ", " + str(datos[i][3]))

        self.cargar_grilla_detalles()
        self.estadoguardar(True)
示例#12
0
def cargar_grilla(self):
    if self.campo_buscar == "Fecha":
        opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \
        " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'"
    else:
        opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \
        " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'"

    conexion = Op.conectar(self.datos_conexion)
    cursor = Op.consultar(
        conexion,
        self.campoid + ", idMoneda, Moneda, " + "Fecha, Compra, Venta",
        self.tabla + "_s", opcion + " ORDER BY Fecha DESC")
    datos = cursor.fetchall()
    cant = cursor.rowcount
    conexion.close()  # Finaliza la conexión

    lista = self.obj("grilla").get_model()
    lista.clear()

    for i in range(0, cant):
        lista.append([
            datos[i][0], datos[i][1], datos[i][2],
            Cal.mysql_fecha(datos[i][3]), datos[i][4], datos[i][5],
            str(datos[i][3])
        ])

    cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
    self.obj("barraestado").push(0, cant)
示例#13
0
def cargar_grilla(self):
    if self.campo_buscar == "FechaVencimiento":
        opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \
        " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'"
    else:
        opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \
        " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'"

    conexion = Op.conectar(self.datos_conexion)
    cursor = Op.consultar(conexion, self.campoid + ", idBanco, BancoTipoDocumento, " +
        "BancoNroDocumento, BancoRazonSocial, BancoDireccion, BancoTelefono, " +
        "idTitular, TitularTipoDocumento, TitularNroDocumento, TitularRazonSocial, " +
        "idMarcaTarjeta, MarcaTarjeta, idTipoTarjeta, TipoTarjeta, FechaVencimiento",
        self.tabla + "_s", opcion + " ORDER BY " + self.campoid)
    datos = cursor.fetchall()
    cant = cursor.rowcount
    conexion.close()  # Finaliza la conexión

    lista = self.obj("grilla").get_model()
    lista.clear()

    for i in range(0, cant):
        lista.append([datos[i][0], datos[i][1], datos[i][2], datos[i][3],
            datos[i][4], datos[i][5], datos[i][6], datos[i][7], datos[i][8],
            datos[i][9], datos[i][10], datos[i][11], datos[i][12], datos[i][13],
            datos[i][14], Cal.mysql_fecha(datos[i][15]), str(datos[i][15])])

    cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
    self.obj("barraestado").push(0, cant)
    def cargar_grilla_buscar(self):
        if self.campo_buscar == "FechaHora":
            opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \
            " WHERE " + self.campo_buscar + " = '" + self.fecha + "%'"
        else:
            opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \
            " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'"

        opcion += " WHERE " if len(opcion) == 0 else " AND "
        opcion += "Anulado <> 1"

        cursor = Op.consultar(
            self.conexion, "NroTimbrado, NroNotaDebito, " +
            "FechaHora, NroTimbradoFact, NroFactura, idTipoDocCliente, NroDocCliente, "
            + "RazonSocial, DireccionPrincipal, Total, TotalLiquidacionIVA, " +
            "Alias, NroDocUsuario, NombreApellido, Anulado, idCliente",
            "notadebitoventas_s", opcion + " ORDER BY FechaHora DESC")
        datos = cursor.fetchall()
        cant = cursor.rowcount

        lista = self.obj("grilla_buscar").get_model()
        lista.clear()

        for i in range(0, cant):
            lista.append([
                datos[i][0], datos[i][1],
                Cal.mysql_fecha_hora(datos[i][2]), datos[i][3], datos[i][4],
                datos[i][5], datos[i][6], datos[i][7], datos[i][8],
                datos[i][9], datos[i][10], datos[i][11], datos[i][12],
                datos[i][13], datos[i][14], datos[i][2], datos[i][15]
            ])

        cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
        self.obj("barraestado").push(0, cant)
    def buscar_nro_nota_debito(self):
        timb = self.obj("txt_01_1").get_text()

        cursor = Op.consultar(
            self.conexion, "NumeroInicio, NumeroFin", "timbrados_s",
            " WHERE NroTimbrado = " + timb + " AND " +
            "idTipoDocumento = 3 AND FechaVencimiento > NOW() AND Anulado <> 1"
        )
        datos = cursor.fetchall()

        ini, fin = datos[0][0], datos[0][1]
        num_nota = Op.nuevoid(self.conexion,
                              self.tabla + "_s WHERE NroTimbrado = " + timb,
                              "NroNotaDebito")

        if int(num_nota) >= ini and int(num_nota) <= fin:
            self.obj("txt_00_3").set_text(Op.cadenanumeros(num_nota, 7))
        elif int(num_nota) < ini:
            self.obj("txt_00_3").set_text(Op.cadenanumeros(str(ini), 7))
        elif int(num_nota) > fin:
            Mens.error_generico(
                "¡ERROR!", "El nuevo Número de Nota de Débito es mayor " +
                "al último número\npara el Timbrado asignado a este Punto de Expedición."
                + "\n\nHable con el Administrador par resolver el problema.")
            self.estadoedicion(False)
            self.limpiarcampos()
示例#16
0
    def cargar_grilla_cuotas(self):
        fact = self.obj("txt_fact").get_text()
        fact = "'" + fact + "'" if self.tabla == "cuentaspagar" else fact
        timb = self.obj("txt_timb").get_text()

        cursor = Op.consultar(
            self.conexion, "NroCuota, FechaVencimiento, " + "Monto",
            self.tabla, " WHERE NroTimbrado = " + timb + " AND NroFactura = " +
            fact + " ORDER BY NroCuota")
        datos = cursor.fetchall()
        cant = cursor.rowcount

        monto = 0.0
        lista = self.obj("grilla").get_model()
        lista.clear()

        for i in range(0, cant):
            lista.append([
                datos[i][0],
                Cal.mysql_fecha(datos[i][1]), datos[i][2],
                str(datos[i][1])
            ])
            monto += datos[i][2]

        fact = float(self.obj("txt_total_fact").get_text())
        self.obj("txt_total").set_text(str(monto))
        self.obj("txt_no_asignado").set_text(str(fact - monto))

        cant = str(cant) + " registro encontrado." if cant == 1 \
            else str(cant) + " registros encontrados."
        self.obj("barraestado").push(0, cant)
示例#17
0
    def cargar_grilla_buscar(self):
        if self.campo_buscar == "FechaVencimiento":
            opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \
            " WHERE " + self.campo_buscar + " BETWEEN '" + self.fecha_ini + "' AND '" + self.fecha_fin + "'"
        else:
            opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \
            " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'"

        conexion = Op.conectar(self.origen.datos_conexion)
        cursor = Op.consultar(
            conexion,
            "NroTimbrado, NroFactura, " + "NroCuota, FechaVencimiento, Monto",
            "cuentascobrar", opcion + " ORDER BY FechaVencimiento")
        datos = cursor.fetchall()
        cant = cursor.rowcount
        conexion.close()  # Finaliza la conexión

        lista = self.obj("grilla_buscar").get_model()
        lista.clear()

        for i in range(0, cant):
            lista.append([
                datos[i][0], datos[i][1], datos[i][2],
                Cal.mysql_fecha(datos[i][3]), datos[i][4],
                str(datos[i][3])
            ])

        cant = str(cant) + " registro encontrado." if cant == 1 \
            else str(cant) + " registros encontrados."
        self.obj("barraestado").push(0, cant)
示例#18
0
    def funcion_items(self):
        self.guardar_principal_vendedores()

        if self.editando_item:
            seleccion, iterador = self.obj("grilla_items").get_selection().get_selected()
            com = seleccion.get_value(iterador, 11)
            self.obj("txt_it_03").set_value(com)

            self.obj("txt_it_00").set_text(self.cond_item)
            self.focus_out_event(self.obj("txt_it_00"), 0)

            # Verificar si se registró el Ítem individualmente
            cursor = Op.consultar(self.conexion, "idItem", "vendedorcomisionitems_s",
                " WHERE idVendedor = " + self.obj("txt_00").get_text())
            datos = cursor.fetchall()
            cant = cursor.rowcount

            if not cant > 0:
                self.editando_item = False

        self.obj("notebook").set_show_tabs(False)
        self.estadoedicion(True)

        self.obj("btn_guardar_item").set_sensitive(False)
        self.obj("grilla_items").get_selection().unselect_all()
        self.obj("barraestado").push(0, "")
    def concesion_de_permisos_grupos(self, codigo):
        cant = len(self.obj("grilla").get_model())
        if cant > 0:
            eleccion = Mens.pregunta_generico(
                "¿Desea conservar los permisos?",
                "El usuario ya posee pemisos sobre unas " + str(cant) +
                " entidades.")

            if not eleccion:
                self.on_btn_per_todos_clicked(0)

        conexion = Op.conectar(self.datos_conexion)
        cursor = Op.consultar(
            conexion, "*", "grupousuarios_permisos_s",
            " WHERE idGrupoUsuario = " + codigo + " ORDER BY idTabla")
        datos = cursor.fetchall()
        cant = cursor.rowcount
        conexion.close()  # Finaliza la conexión

        for i in range(0, cant):
            self.idTabla = datos[i][2]
            con = True if datos[i][4] == 1 else False
            ins = True if datos[i][5] == 1 else False
            act = True if datos[i][6] == 1 else False
            eli = True if datos[i][7] == 1 else False
            anu = True if datos[i][8] == 1 else False
            self.permisos_tablas(con, ins, act, eli, anu, True)

        self.cargar_grilla()
示例#20
0
    def on_btn_consulta_clicked(self, objeto):
        cont = self.obj("txt_02").get_text()

        if len(cont) > 0:
            conexion = Op.conectar(self.nav.datos_conexion)

            # Obtener monto total cobrado durante el presente año
            cursor = Op.consultar(
                conexion, "IFNULL(SUM(TotalPagar), 0)", "comprobantepagos_s",
                " WHERE (YEAR(FechaHoraExp) = YEAR(NOW())) AND (NroContrato = "
                + cont + ")")
            datos = cursor.fetchall()
            cant = cursor.rowcount

            if datos[0][0] == 0:
                Mens.informa_generico(
                    "Revise los datos",
                    "No se han encontrado registros de pagos realizados\n" +
                    "al Empleado relacionado al Contrato Nro. " + cont)
                total = Decimal(0.00)
            else:
                total = round(Decimal(datos[0][0]))
            self.obj("txt_03").set_text(str(total))

            # Cálculo del Aguinaldo
            monto = round(total / 12)
            self.obj("txt_04").set_text(str(monto))
        else:
            self.obj("barraestado").push(
                0, "Seleccione un Contrato primero, luego podrá consultar.")
示例#21
0
    def cargar_grilla_lotes(self):
        self.disponible = self.maximo

        cursor = Op.consultar(
            self.conexion, "NroLote, FechaVencimiento, " +
            "CantidadInv, idMovimiento, idDeposito, Observaciones",
            self.tabla + "_inventario_s", " WHERE " + self.cond_buscar +
            " AND idItem = " + self.idItem + " ORDER BY FechaVencimiento DESC")
        datos = cursor.fetchall()
        cant = cursor.rowcount

        lista = self.obj("grilla").get_model()
        lista.clear()

        for i in range(0, cant):
            if datos[i][0] is None:
                fecha = ""  # Si Lote es NULL, la cantidad está disponible
            else:
                fecha = Cal.mysql_fecha(datos[i][1])
                self.disponible -= datos[i][2]  # Resta Cantidad a Máximo

            lista.append([
                datos[i][0], fecha, datos[i][2],
                str(datos[i][1]), datos[i][3]
            ])

        self.dep = "NULL" if datos[0][4] is None else str(datos[0][4])
        self.obs = "NULL" if datos[0][5] is None else "'" + datos[0][5] + "'"

        self.obj("txt_total").set_text(str(self.maximo))
        self.obj("txt_disponible").set_text(str(self.disponible))

        cant = str(cant) + " registro encontrado." if cant == 1 \
            else str(cant) + " registros encontrados."
        self.obj("barraestado").push(0, cant)
示例#22
0
    def buscar_empleados(self, objeto, campo, valor, nombre):
        conexion = Op.conectar(self.nav.datos_conexion)
        cursor = Op.consultar(
            conexion,
            "idPersona, RazonSocial, " + "NroDocumento, idTipoDocumento",
            "personas_s",
            " WHERE " + campo + " = " + valor + " AND Empleado = 1")
        datos = cursor.fetchall()
        cant = cursor.rowcount
        conexion.close()  # Finaliza la conexión

        if cant > 0:
            self.obj("txt_01").set_text(str(datos[0][0]))
            self.obj("txt_01_1").set_text(datos[0][1])
            self.obj("txt_01_2").set_text(datos[0][2])

            # Asignación de Tipo de Documento en Combo
            model, i = self.obj("cmb_tipo_doc").get_model(), 0
            while model[i][0] != datos[0][3]:
                i += 1
            self.obj("cmb_tipo_doc").set_active(i)

            self.obj("barraestado").push(0, "")
            self.verificacion(0)

        else:
            self.estadoguardar(False)
            objeto.grab_focus()
            self.obj("barraestado").push(0, "El " + nombre + " no es válido.")

            otro = self.obj("txt_01_2") if objeto == self.obj(
                "txt_01") else self.obj("txt_01")
            otro.set_text("")
            self.obj("txt_01_1").set_text("")
示例#23
0
    def cargar_grilla_conceptos(self):
        cursor = Op.consultar(
            self.conexion, "idDetalle, idConcepto, Concepto, " +
            "Cantidad, Monto, Suma, Observaciones",
            "comprobantepagos_detalles_s", " WHERE NroComprobante = " +
            self.obj("txt_00").get_text() + " ORDER BY idDetalle")
        datos = cursor.fetchall()
        cant = cursor.rowcount

        total = 0  # Monto Total a Pagar

        lista = self.obj("grilla").get_model()
        lista.clear()

        for i in range(0, cant):
            cantidad = "" if datos[i][3] is None else str(datos[i][3])
            obs = "" if datos[i][6] is None else " " + datos[i][6]
            total += datos[i][4]

            lista.append([
                datos[i][0], datos[i][1], datos[i][2] + obs, cantidad,
                datos[i][4], datos[i][5], obs
            ])

        self.obj("txt_total").set_text(str(total))
        cant = str(cant) + " registro encontrado." if cant == 1 \
            else str(cant) + " registros encontrados."
        self.obj("barraestado").push(0, cant)
示例#24
0
    def buscar_foraneos(self,
                        objeto,
                        companero,
                        nombre,
                        tabla,
                        campo,
                        valor,
                        condicion=""):
        if Op.comprobar_numero(int, objeto, "Cód. de " + nombre,
                               self.obj("barraestado")):
            conexion = Op.conectar(self.nav.datos_conexion)
            cursor = Op.consultar(
                conexion, "Nombre", tabla,
                " WHERE " + campo + " = " + valor + condicion)
            datos = cursor.fetchall()
            cant = cursor.rowcount
            conexion.close()  # Finaliza la conexión

            if cant > 0:
                companero.set_text(datos[0][0])
                self.obj("barraestado").push(0, "")

                if self.nav.tabla == "ciudades" and objeto == self.obj("txt_02") \
                and len(self.obj("txt_03_1").get_text()) == 0:
                    # Con paises, si no aparece el nombre del departamento, lo buscará
                    self.focus_out_event(self.obj("txt_03"), 0)
                else:
                    self.focus_out_event(self.obj("txt_00"), 0)

            else:
                self.obj("btn_guardar").set_sensitive(False)
                objeto.grab_focus()
                self.obj("barraestado").push(
                    0, "El Cód. de " + nombre + " no es válido.")
                companero.set_text("")
示例#25
0
    def cargar_grilla_items(self):
        cursor = Op.consultar(
            self.conexion, "idItem, CodigoBarras, Nombre, " +
            "Categoria, Presentacion, Cantidad, PrecioAcordado, PorcDescuento, "
            + "MontoDescuento, SubTotal, Observaciones",
            "ordencompras_detalles_s", " WHERE NroOrdenCompra = " +
            self.obj("txt_00").get_text() + " ORDER BY idItem")
        datos = cursor.fetchall()
        cant = cursor.rowcount

        total = 0.0
        lista = self.obj("grilla").get_model()
        lista.clear()

        for i in range(0, cant):
            lista.append([
                datos[i][0], datos[i][1], datos[i][2], datos[i][3],
                datos[i][4], datos[i][5], datos[i][6], datos[i][7],
                datos[i][8], datos[i][9], datos[i][10]
            ])
            total += datos[i][9]

        self.obj("txt_total").set_text(str(total))

        cant = str(cant) + " registro encontrado." if cant == 1 \
            else str(cant) + " registros encontrados."
        self.obj("barraestado").push(0, cant)
示例#26
0
def cargar_grilla(self):
    opcion = "" if len(self.obj("txt_buscar").get_text()) == 0 else \
    " WHERE " + self.campo_buscar + " LIKE '%" + self.obj("txt_buscar").get_text() + "%'"

    if len(self.condicion) > 0:
        self.condicion = " WHERE " + self.condicion if len(opcion) == 0 \
        else " AND " + self.condicion

    campos, camporden = self.campoid + ", Nombre, idPais, Pais", ""
    if self.tabla == "ciudades":
        campos += ", idDepartamento, Departamento"
        camporden += "idDepartamento, "

    conexion = Op.conectar(self.datos_conexion)
    cursor = Op.consultar(
        conexion, campos, self.tabla + "_s", opcion + self.condicion +
        " ORDER BY idPais, " + camporden + self.campoid)
    datos = cursor.fetchall()
    cant = cursor.rowcount
    conexion.close()  # Finaliza la conexión

    lista = self.obj("grilla").get_model()
    lista.clear()

    for i in range(0, cant):
        fila = [datos[i][0], datos[i][1], datos[i][2], datos[i][3]]
        if self.tabla == "ciudades":
            fila += [datos[i][4], datos[i][5]]
        lista.append(fila)

    cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
    self.obj("barraestado").push(0, cant)
def txt_tabla_focus_out(self, objeto, datos_conexion, boton_guardar):
    codigo = objeto.get_text()

    if len(codigo) > 0 and Op.comprobar_numero(int, objeto, "Código", self.obj("barraestado")):
        conexion = Op.conectar(datos_conexion)
        cursor = Op.consultar(conexion, "Nombre, Tabla",
            "sistematablas", " WHERE idTabla = " + codigo)
        datos = cursor.fetchall()
        cant = cursor.rowcount
        conexion.close()  # Finaliza la conexión

        if cant > 0:
            self.idTabla = int(codigo)
            self.obj("txt_des_tabla").set_text(datos[0][0])

            self.editando_tabla = cambiar_tabla_seleccionada(self)
        else:
            objeto.grab_focus()
            self.obj("txt_des_tabla").set_text("")
            boton_guardar.set_sensitive(False)
            self.obj("barraestado").push(0, "El Código de Tabla no es válido.")
    else:
        self.obj("txt_des_tabla").set_text("")
        boton_guardar.set_sensitive(False)

        self.idTabla = -1
        visibilidad_permisos(self)
示例#28
0
    def cargar_grilla(self, grilla, barraestado):
        opcion = "" if not self.obj("chk_empleado").get_active() else \
            " AND NroContrato = " + self.obj("txt_02").get_text()

        conexion = Op.conectar(self.datos_conexion)
        cursor = Op.consultar(conexion, "NroContrato, idEmpleado, " +
            "idTipoDocumento, NroDocumento, NombreApellido, Cargo, " +
            "Fecha, Hora, Entrada, Puntual, Observaciones, Alias",
            "asistencias_s", " WHERE Fecha BETWEEN '" + self.fechaini + "'" +
            " AND '" + self.fechafin + "'" + opcion + " ORDER BY Fecha, Hora")
        datos = cursor.fetchall()
        cant = cursor.rowcount
        conexion.close()  # Finaliza la conexión

        lista = grilla.get_model()
        lista.clear()

        for i in range(0, cant):
            estado = "Entrada" if datos[i][8] == 1 else "Salida"
            puntual = "Puntual" if datos[i][9] == 1 else ""
            obs = "" if datos[i][10] is None else datos[i][10]

            lista.append([str(datos[i][0]), str(datos[i][1]), datos[i][2],
                datos[i][3], datos[i][4], datos[i][5], Cal.mysql_fecha(datos[i][6]),
                str(datos[i][7]), estado, puntual, obs, datos[i][11],
                str(datos[i][6])])

        cant = str(cant) + " registro encontrado." if cant == 1 \
            else str(cant) + " registros encontrados."
        barraestado.push(0, cant)
示例#29
0
    def cargar_grilla_beneficiarios(self):
        cursor = Op.consultar(
            self.conexion, "idFamiliar, idTipoDocFamiliar, " +
            "NroDocFamiliar, NombreApellidoFamiliar, FechaNacFamiliar, " +
            "EdadFamiliar, idGeneroFamiliar, GeneroFamiliar, " +
            "idTipoParentesco, TipoParentesco, Observaciones",
            self.nav.tabla + "_s", " WHERE idEmpleado = " +
            self.obj("txt_00").get_text() + " ORDER BY idFamiliar")
        datos = cursor.fetchall()
        cant = cursor.rowcount

        lista = self.obj("grilla").get_model()
        lista.clear()

        for i in range(0, cant):
            lista.append([
                datos[i][0], datos[i][1], datos[i][2], datos[i][3],
                Cal.mysql_fecha(datos[i][4]), datos[i][5], datos[i][6],
                datos[i][7], datos[i][8], datos[i][9], datos[i][10],
                str(datos[i][4])
            ])

        cant = str(cant) + " registro encontrado." if cant == 1 \
            else str(cant) + " registros encontrados."
        self.obj("barraestado").push(0, cant)
示例#30
0
    def focus_out_event(self, objeto, evento):
        if len(self.obj("txt_fact").get_text()) == 0 or len(
                self.obj("txt_timb").get_text()) == 0:
            self.obj("barraestado").push(0, "")
        else:
            fact = self.obj("txt_fact").get_text()
            timb = self.obj("txt_timb").get_text()

            if self.tabla == "cuentaspagar":
                fact = "'" + fact + "'"
                tabla = "facturacompras_s"
            else:
                tabla = "facturaventas_s"

            conexion = Op.conectar(self.datos_conexion)
            cursor = Op.consultar(
                conexion, "Total", tabla, " WHERE " + "NroTimbrado = " + timb +
                " AND NroFactura = " + fact)
            datos = cursor.fetchall()
            cant = cursor.rowcount
            conexion.close()  # Finaliza la conexión

            if cant > 0:
                self.obj("txt_total_fact").set_text(str(datos[0][0]))
                self.obj("barraestado").push(0, "")
                self.cargar_grilla_cuotas()
            else:
                self.estadoguardar(False)
                self.obj("txt_fact").grab_focus()
                self.obj("barraestado").push(
                    0, "El Nro. Factura introducido no es válido (NO EXISTE).")
                self.obj("txt_total_fact").set_text("")
                self.obj("txt_no_asignado").set_text("")