Beispiel #1
0
def cargar_grilla(self):
    if self.campo_buscar in ("Fecha", "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, "idEntrada, idEmpleado, " +
        "idTipoDocumento, NroDocumento, NombreApellido, FechaNacimiento, " +
        "Edad, Fecha, Observaciones, Alias, NroDocUsuario, NombreUsuario",
        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):
        fechanac = "" if datos[i][5] is None else Cal.mysql_fecha(datos[i][5])
        fecha = "" if datos[i][7] is None else Cal.mysql_fecha(datos[i][7])

        lista.append([datos[i][0], datos[i][1], datos[i][2], datos[i][3],
            datos[i][4], fechanac, datos[i][6], fecha, datos[i][8],
            datos[i][9], datos[i][10], datos[i][11], str(datos[i][5]),
            str(datos[i][7])])

    cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
    self.obj("barraestado").push(0, cant)
def cargar_grilla(self):
    if self.campo_buscar in ("FechaFin", "FechaInicio", "PruebaFin", "PruebaInicio"):
        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() + "%'"

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

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

    conexion = Op.conectar(self.datos_conexion)
    cursor = Op.consultar(conexion, self.campoid + ", idEmpleado, idTipoDocumento, " +
        "NroDocumento, NombreApellido, Edad, DireccionPrincipal, TelefonoPrincipal, " +
        "idTipoSeguro, TipoSeguro, NroSeguroIPS, idAsegurado, idCargo, Cargo, " +
        "idFormaPago, FormaPago, idPeriodoPago, PeriodoPago, idTipoContrato, TipoContrato, " +
        "idTipoSalario, TipoSalario, FechaInicio, FechaFin, Salario, PruebaInicio, " +
        "PruebaFin, Alias, NombreApellidoUsuario, Anulado, SalarioMinimo, CantSalMinimo",
        self.tabla + "_s", opcion + condicion + " 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):
        fechaini = Cal.mysql_fecha(datos[i][22])
        fechafin = Cal.mysql_fecha(datos[i][23]) if datos[i][23] is not None else ""
        pruebaini = Cal.mysql_fecha(datos[i][25]) if datos[i][25] is not None else ""
        pruebafin = Cal.mysql_fecha(datos[i][26]) if datos[i][26] is not None else ""

        ffin = None if datos[i][23] is None else str(datos[i][23])
        pini = None if datos[i][25] is None else str(datos[i][25])
        pfin = None if datos[i][26] is None else str(datos[i][26])
        cantsal = None if datos[i][31] is None else str(datos[i][31])

        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], datos[i][15], datos[i][16], datos[i][17], datos[i][18],
            datos[i][19], datos[i][20], datos[i][21], fechaini, fechafin,
            datos[i][24], pruebaini, pruebafin, datos[i][27], datos[i][28],
            datos[i][29], str(datos[i][22]), ffin, pini, pfin, datos[i][30], cantsal])

    cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
    self.obj("barraestado").push(0, cant)
Beispiel #3
0
def cargar_grilla(self):
    if self.campo_buscar in ("FechaInicio", "FechaFin", "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() + "%'"

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

    conexion = Op.conectar(self.datos_conexion)
    cursor = Op.consultar(
        conexion, "NroComprobante, NroContrato, idEmpleado, " +
        "idTipoDocumento, NroDocumento, NombreApellido, FechaNacimiento, " +
        "Edad, Cargo, FechaInicio, FechaFin, CantDias, TotalPagar, " +
        "FechaHoraExp, Observaciones, Alias, NroDocUsuario, NombreUsuario, " +
        "Confirmado, Anulado", 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):
        fechanac = "" if datos[i][6] is None else Cal.mysql_fecha(datos[i][6])
        fechaini = "" if datos[i][9] is None else Cal.mysql_fecha(datos[i][9])
        fechafin = "" if datos[i][10] is None else Cal.mysql_fecha(
            datos[i][10])
        fechaexp = "" if datos[i][13] is None else Cal.mysql_fecha_hora(
            datos[i][13])

        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], fechaini,
            fechafin, datos[i][11], datos[i][12], fechaexp, datos[i][14],
            datos[i][15], datos[i][16], datos[i][17], datos[i][18],
            datos[i][19],
            str(datos[i][6]),
            str(datos[i][9]),
            str(datos[i][10]),
            str(datos[i][13])
        ])

    cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
    self.obj("barraestado").push(0, cant)
Beispiel #4
0
def cargar_grilla(self):
    if self.campo_buscar in ("FechaEntrada", "FechaNacimiento",
                             "FechaPreaviso", "FechaSalida"):
        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() + "%'"

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

    conexion = Op.conectar(self.datos_conexion)
    cursor = Op.consultar(
        conexion, "idPreaviso, NroContrato, idEmpleado, " +
        "idTipoDocumento, NroDocumento, NombreApellido, FechaNacimiento, " +
        "Edad, Cargo, FechaEntrada, Antiguedad, FechaPreaviso, FechaSalida, " +
        "CantDias, TrabajadorPresenta, Alias, NroDocUsuario, NombreUsuario",
        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):
        fechanac = "" if datos[i][6] is None else Cal.mysql_fecha(datos[i][6])
        fechaent = "" if datos[i][9] is None else Cal.mysql_fecha(datos[i][9])
        fechapre = "" if datos[i][11] is None else Cal.mysql_fecha(
            datos[i][11])
        fechasal = "" if datos[i][12] is None else Cal.mysql_fecha(
            datos[i][12])
        presentador = "Trabajador" if datos[i][14] == 1 else "Empleador"

        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], fechaent,
            datos[i][10], fechapre, fechasal, datos[i][13], presentador,
            datos[i][15], datos[i][16], datos[i][17],
            str(datos[i][6]),
            str(datos[i][9]),
            str(datos[i][11]),
            str(datos[i][12]), datos[i][14]
        ])

    cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
    self.obj("barraestado").push(0, cant)
Beispiel #5
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)
Beispiel #6
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)
Beispiel #7
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)
Beispiel #8
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)
Beispiel #9
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)
Beispiel #10
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)
 def on_btn_nuevo_clicked(self, objeto):
     self.estadoedicion(True)
     self.obj("cmb_tipo_doc").set_active(0)
     self.obj("txt_01").grab_focus()  # Contrato
     self.obj("btn_guardar").set_sensitive(False)
     self.obj("lbl_fecha").set_text(Cal.mysql_fecha(date.today()))
     self.obj("lbl_hora").set_text(strftime('%H:%M:%S'))
Beispiel #12
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)
Beispiel #13
0
    def guardar_encabezado(self, aprobado="0"):
        # Si el encabezado no ha sido registrado
        if not self.encabezado_guardado:
            orden = self.obj("txt_00").get_text()
            prov = self.obj("txt_01").get_text()
            pedido = self.obj("txt_01").get_text()

            sql = orden + ", " + prov + ", " + str(self.idFormaPago)

            if not self.editando:
                Op.insertar(self.conexion, self.nav.tabla, sql)
            else:
                Op.modificar(self.conexion, self.nav.tabla,
                             self.cond + ", " + sql + ", " + aprobado)

            self.obj("txt_fecha").set_text(Cal.mysql_fecha(date.today()))
            self.cond = orden  # Nuevo Nro. Orden original
            self.encabezado_guardado = self.editando = True

            if not self.pedido_guardado:
                sql = orden + ", " + pedido

                if not self.editando_pedido:
                    Op.insertar(self.conexion, "ordencompras_pedidos", sql)
                else:
                    Op.modificar(self.conexion, "ordencompras_pedidos", sql)

                self.editando_pedido = True
Beispiel #14
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)
    def cargar_grilla(self, grilla, barraestado):
        condicion = ""

        if self.obj("chk_01").get_active():
            condicion += "idProveedor = " + self.obj("txt_prov_01").get_text()

        if self.obj("chk_02").get_active():
            if len(condicion) > 0:
                condicion += " AND "
            condicion += "idTipoFactura = " + str(self.idTipoFact)

        if self.obj("chk_03").get_active():
            if len(condicion) > 0:
                condicion += " AND "
            condicion += "Fecha BETWEEN '" + self.fecha_ini + "'" + \
                " AND '" + self.fecha_fin + "'"

        if self.obj("chk_04").get_active():
            if len(condicion) > 0:
                condicion += " AND "
            condicion += "Total "
            total = str(self.obj("txt_total_ini").get_value())

            if self.idTotal == 1:  # Entre
                condicion += "> " + total + \
                " AND Total < " + str(self.obj("txt_total_fin").get_value())
            elif self.idTotal == 2:  # Mayor que
                condicion += "> " + total
            elif self.idTotal == 3:  # Mayor o igual que
                condicion += ">= " + total
            elif self.idTotal == 4:  # Menor que
                condicion += "< " + total
            elif self.idTotal == 5:  # Menor o igual que
                condicion += "<= " + total

        if self.obj("rad_confirmadas").get_active():
            if len(condicion) > 0:
                condicion += " AND "
            condicion += "Confirmado = 1"

        # Obtener datos de Facturas de Compra
        conexion = conectar(self.datos_conexion)
        cursor = consultar(conexion, "NroTimbrado, NroFactura, " +
            "Fecha, TipoFactura, NroDocProveedor, RazonSocial, Total",
            "facturacompras_s", " WHERE " + condicion)
        datos = cursor.fetchall()
        cant = cursor.rowcount
        conexion.close()  # Finaliza la conexión

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

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

        cant = str(cant) + " registro encontrado." if cant == 1 \
            else str(cant) + " registros encontrados."
        barraestado.push(0, cant)
Beispiel #16
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() + "%'"

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

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

    conexion = Op.conectar(self.datos_conexion)
    cursor = Op.consultar(conexion, "NroTimbrado, NroFactura, Fecha, " +
        "NroDocProveedor, RazonSocial, DireccionPrincipal, TelefonoPrincipal, " +
        "idTipoFactura, TipoFactura, Total, TotalLiquidacionIVA, " +
        "Alias, NroDocUsuario, NombreApellido, Confirmado, idProveedor, " +
        "idTipoDocProveedor, NroOrdenCompra, FechaHoraOrden",
        self.tabla + "_s", opcion + condicion + " 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):
        orden = "" if datos[i][17] is None else str(datos[i][17])
        fecha = "" if datos[i][18] is None else Cal.mysql_fecha(datos[i][18])

        lista.append([datos[i][0], datos[i][1], Cal.mysql_fecha(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], str(datos[i][2]), datos[i][15],
            datos[i][16], orden, fecha])

    cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
    self.obj("barraestado").push(0, cant)
Beispiel #17
0
def cargar_grilla(self):
    if self.campo_buscar in ("FechaEmision", "FechaVencimiento"):
        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() + "%'"

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

    conexion = Op.conectar(self.datos_conexion)
    cursor = Op.consultar(
        conexion, self.campoid + ", FechaEmision, " +
        "FechaVencimiento, NroInicio, NroFin, idTipoDocumentoComercial, " +
        "TipoDocumentoComercial, NroPuntoExpedicion, PuntoExpedicion, " +
        "NroEstablecimiento, Establecimiento, NroDocumento, RazonSocial, " +
        "Ciudad, Barrio, Direccion, NroTelefono, Anulado, Estado",
        self.tabla + "_s", opcion + " ORDER BY " + self.campoid + " 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],
            Cal.mysql_fecha(datos[i][1]),
            Cal.mysql_fecha(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][15], datos[i][16], datos[i][17],
            str(datos[i][1]),
            str(datos[i][2]), datos[i][18]
        ])

    cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
    self.obj("barraestado").push(0, cant)
Beispiel #18
0
    def buscar_familiar(self, objeto, campo, valor, nombre):
        conexion = Op.conectar(self.nav.datos_conexion)
        cursor = Op.consultar(
            conexion, "idPersona, RazonSocial, NroDocumento, " +
            "idTipoDocumento, FechaNacimiento, Genero", "personas_s",
            " WHERE " + campo + " = " + valor + " AND Empleado <> 1 " +
            "AND Empresa <> 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])
            self.obj("txt_01_3").set_text(Cal.mysql_fecha(datos[0][4]))
            self.obj("txt_01_4").set_text(datos[0][5])

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

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

            # Verificar que no se haya regitrado ya como Beneficiario por el Empleado actual
            if Op.comprobar_unique(
                    self.conexion, "beneficiarios_s", "idFamiliar",
                    self.obj("txt_01").get_text() + " AND idEmpleado = " +
                    self.obj("txt_00").get_text(), self.obj("txt_01"),
                    self.obj("btn_guardar_benef"), self.obj("barraestado"),
                    "El Familiar introducido ya ha sido registado."):

                # Si no encuentra coincidencias verifica si está registrado por otro Empleado
                Op.comprobar_unique(
                    self.nav.datos_conexion, "beneficiarios_s", "idFamiliar",
                    valor, self.obj("txt_00"), self.obj("btn_guardar_benef"),
                    self.obj("barraestado"),
                    "El Familiar introducido ha sido registado por otro Empleado."
                )

        else:
            objeto.grab_focus()
            self.obj("btn_guardar_benef").set_sensitive(False)
            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("")
Beispiel #19
0
def cargar_grilla(self):
    if self.campo_buscar in ("FechaEmision", "FechaCobro"):
        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() + "%'"

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

    conexion = Op.conectar(self.datos_conexion)
    cursor = Op.consultar(conexion, self.campoid + ", NroCheque, NroCuenta, " +
        "idBanco, BancoTipoDocumento, BancoNroDocumento, BancoRazonSocial, " +
        "BancoDireccion, BancoTelefono, idTitular, TitularTipoDocumento, " +
        "TitularNroDocumento, TitularRazonSocial, idTipoCheque, TipoCheque, " +
        "FechaEmision, FechaCobro, Monto, Anulado", self.tabla + "_s",
        opcion + " ORDER BY " + self.campoid + " 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], 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]),
            Cal.mysql_fecha(datos[i][16]), datos[i][17], datos[i][18],
            str(datos[i][15]), str(datos[i][16])])

    cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
    self.obj("barraestado").push(0, cant)
Beispiel #20
0
    def guardar_encabezado(self):
        # Si el encabezado no ha sido registrado
        if not self.encabezado_guardado:
            pedido = self.obj("txt_00").get_text()

            if not self.editando:
                Op.insertar(self.conexion, self.nav.tabla, pedido)
            else:
                Op.modificar(self.conexion, self.nav.tabla,
                             self.cond + ", " + pedido)

            self.obj("txt_fecha").set_text(Cal.mysql_fecha(date.today()))
            self.encabezado_guardado = True
            self.editando = True
            self.cond = pedido
    def cargar_grilla_vacaciones(self):
        cursor = Op.consultar(
            self.conexion, "idToma, FechaInicio, FechaFin, " +
            "CantDias, NroComprobante, FechaHoraExp", "vacacionestomadas_s",
            " WHERE idVacacion = " + self.obj("txt_00").get_text() +
            " AND NroContrato = " + self.obj("txt_02").get_text() +
            " ORDER BY idToma")
        datos = cursor.fetchall()
        cant = cursor.rowcount

        maximo = int(self.obj("txt_03_2").get_text())
        dias = 0  # Cantidad de Días asignados

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

        for i in range(0, cant):
            comprobante = "" if datos[i][4] is None else str(datos[i][4])
            fechaexp = "" if datos[i][5] is None else Cal.mysql_fecha_hora(
                datos[i][5])
            dias += datos[i][3]

            lista.append([
                datos[i][0],
                Cal.mysql_fecha(datos[i][1]),
                Cal.mysql_fecha(datos[i][2]), datos[i][3], comprobante,
                fechaexp,
                str(datos[i][1]),
                str(datos[i][2]),
                str(datos[i][5])
            ])

        self.obj("txt_03_3").set_text(str(maximo - dias))
        cant = str(cant) + " registro encontrado." if cant == 1 \
            else str(cant) + " registros encontrados."
        self.obj("barraestado").push(0, cant)
Beispiel #22
0
    def on_lote_focus_out_event(self, objeto, evento):
        valor = objeto.get_text()
        if len(valor) == 0:
            self.obj("barraestado").push(0, "")
        else:
            if objeto == self.obj("txt_01"):
                cursor = Op.consultar(
                    self.conexion, "FechaVencimiento", "lotes",
                    " WHERE idItem = " + self.idItem + " AND NroLote = '" +
                    valor + "'")
                datos = cursor.fetchall()
                cant = cursor.rowcount

                if cant > 0:
                    if self.tabla == "facturacompras":
                        self.editando_lote = True
                        self.cond_lote = valor

                    self.fecha_venc = str(datos[0][0])
                    fecha = Cal.mysql_fecha(datos[0][0])
                    self.obj("txt_02").set_text(fecha)

                    busq = "" if not self.editando else " AND NroLote <> '" + self.cond_lote + "'"
                    # Comprueba si el Nro. de Lote introducido ya ha sido registado
                    Op.comprobar_unique(
                        self.conexion, self.tabla + "_inventario_s", "NroLote",
                        "'" + valor + "' AND " + self.cond_buscar +
                        " AND idItem = " + self.idItem + busq, objeto,
                        self.obj("btn_guardar_lote"), self.obj("barraestado"),
                        "El Nro. de Lote introducido ya ha sido registado (VEA LA TABLA)."
                    )
                else:
                    if self.tabla == "facturacompras":
                        self.editando_lote = False if not self.editando else True
                    else:
                        self.obj("txt_01").grab_focus()
                        self.obj("barraestado").push(
                            0, "El Nro. de Lote NO es válido.")
                        self.obj("btn_guardar_lote").set_sensitive(False)

            elif objeto == self.obj("txt_02"):
                self.obj("barraestado").push(0, "")

            elif objeto == self.obj("txt_03"):
                Op.comprobar_numero(float, objeto, "Cantidad de Ítems",
                                    self.obj("barraestado"))
    def cargar_grilla_descuentos(self):
        cursor = Op.consultar(self.conexion, "idCobro, Monto, FechaCobro",
            "descuentos_periodocobros", " WHERE idDescuento = " +
            self.obj("txt_00").get_text() + " ORDER BY idCobro")
        datos = cursor.fetchall()
        cant = cursor.rowcount
        monto = 0.0

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

        for i in range(0, cant):
            monto += datos[i][1]

            lista.append([datos[i][0], datos[i][1],
                Cal.mysql_fecha(datos[i][2]), str(datos[i][2])])

        self.obj("txt_total").set_text(str(monto))
        cant = str(cant) + " registro encontrado." if cant == 1 \
            else str(cant) + " registros encontrados."
        self.obj("barraestado").push(0, cant)
Beispiel #24
0
    def __init__(self, datos, v_or):
        self.datos_conexion = datos
        self.origen = v_or

        arch = Op.archivo("caja_aperturas")
        self.obj = arch.get_object

        self.obj("ventana").set_position(1)
        self.obj("ventana").set_title("Aperturas de Cajas")
        Mens.boton_guardar_cancelar(self.obj("btn_guardar"), self.obj("btn_cancelar"))

        self.obj("txt_00").set_max_length(10)
        self.obj("txt_01").set_max_length(10)
        self.obj("txt_02").set_max_length(7)
        self.obj("txt_03").set_max_length(15)

        self.obj("txt_00").set_tooltip_text(Mens.usar_boton("el Establecimiento que afectará"))
        self.obj("txt_00_1").set_tooltip_text("Nombre del Establecimiento")
        self.obj("txt_00_2").set_tooltip_text("Dirección o Localización del Establecimiento")
        self.obj("txt_00_2").set_tooltip_text("Teléfono del Establecimiento")
        self.obj("txt_01").set_tooltip_text(Mens.usar_boton("el Punto de Expedición que afectará"))
        self.obj("txt_01_1").set_tooltip_text("Nombre del Punto de Expedición")
        self.obj("txt_02").set_tooltip_text("Ingrese el Número Inicial del Documento a emitir")
        self.obj("txt_03").set_tooltip_text("Ingrese el Monto de Dinero disponible en Caja en este momento")

        self.txt_nro_est, self.txt_nom_est = self.obj("txt_00"), self.obj("txt_00_1")
        self.txt_dir_est, self.txt_tel_est = self.obj("txt_00_2"), self.obj("txt_00_3")
        self.txt_nro_cja, self.txt_nom_cja = self.obj("txt_01"), self.obj("txt_01_1")

        self.idTipoDoc = -1
        Op.combos_config(self.datos_conexion, self.obj("cmb_tipo_doc"),
            "tipodocumentocomerciales", "idTipoDocumentoComercial")
        arch.connect_signals(self)

        self.obj("txt_fecha").set_text(Cal.mysql_fecha(date.today()))
        self.obj("txt_hora").set_text(strftime('%H:%M:%S'))
        self.obj("ventana").show()
Beispiel #25
0
def cargar_grilla(self):
    if self.campo_buscar == "FechaNacFamiliar":
        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, "idEmpleado, idTipoDocEmpleado, " +
        "NroDocEmpleado, NombreApellidoEmpleado, NroSeguroIPS, idAsegurado, " +
        "idFamiliar, idTipoDocFamiliar, NroDocFamiliar, NombreApellidoFamiliar, "
        +
        "FechaNacFamiliar, EdadFamiliar, idGeneroFamiliar, GeneroFamiliar, " +
        "idTipoParentesco, TipoParentesco, Observaciones", self.tabla + "_s",
        opcion + " ORDER BY idFamiliar, idEmpleado")
    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],
            Cal.mysql_fecha(datos[i][10]), datos[i][11], datos[i][12],
            datos[i][13], datos[i][14], datos[i][15], datos[i][16],
            str(datos[i][10])
        ])

    cant = str(cant) + " registro encontrado." if cant == 1 \
        else str(cant) + " registros encontrados."
    self.obj("barraestado").push(0, cant)
    def buscar_nro_timbrado(self):
        cursor = Op.consultar(
            self.conexion, "NroTimbrado, FechaVencimiento", "timbrados_s",
            " WHERE NroEstablecimiento = " + self.estab + " AND NroCaja = " +
            self.caja +
            " AND FechaVencimiento > NOW() AND idTipoDocumento = 3 AND Anulado <> 1 ORDER BY NroTimbrado"
        )
        datos = cursor.fetchall()

        if cursor.rowcount > 0:
            # Datos del Timbrado
            self.obj("txt_01_1").set_text(str(datos[0][0]))
            self.obj("txt_01_2").set_text(Cal.mysql_fecha(datos[0][1]))
            # Datos del Punto de Expedición
            self.obj("txt_00_1").set_text(Op.cadenanumeros(self.estab, 3))
            self.obj("txt_00_2").set_text(Op.cadenanumeros(self.caja, 3))
        else:
            Mens.error_generico(
                "¡ERROR!",
                "No se ha encontrado un Timbrado\npara este Punto de Expedición."
                +
                "\nConsulte al Administrador del Sistema.\n\nLa ventana de Nota de Débitos se cerrará."
            )
            self.obj("ventana").destroy()
Beispiel #27
0
    def buscar_empleado(self, objeto, campo, valor, nombre):
        conexion = Op.conectar(self.nav.datos_conexion)
        cursor = Op.consultar(
            conexion, "idPersona, RazonSocial, NroDocumento, " +
            "idTipoDocumento, NroSeguroIPS, idAsegurado, Genero, Nacionalidad, "
            + "EstadoCivil, FechaNacimiento, LugarNacimiento", "personas_s",
            " WHERE " + campo + " = " + valor + " AND Empleado = 1")
        datos = cursor.fetchall()
        cant = cursor.rowcount

        if cant > 0:
            nro_seg = "" if datos[0][4] is None else datos[0][4]
            id_aseg = "" if datos[0][5] is None else datos[0][5]

            self.obj("txt_00").set_text(str(datos[0][0]))
            self.obj("txt_00_1").set_text(datos[0][1])
            self.obj("txt_00_2").set_text(datos[0][2])
            self.obj("txt_00_3").set_text(nro_seg)
            self.obj("txt_00_4").set_text(id_aseg)
            self.obj("txt_00_5").set_text(datos[0][6])
            self.obj("txt_00_6").set_text(datos[0][7])
            self.obj("txt_00_7").set_text(datos[0][8])
            self.obj("txt_00_8").set_text(Cal.mysql_fecha(datos[0][9]))
            self.obj("txt_00_9").set_text(datos[0][10])

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

            # Buscar Dirección Actual
            cursor = Op.consultar(
                conexion, "CONCAT(Direccion, " +
                "IFNULL(CONCAT(' Nº ', NroCasa), '')), " + "Barrio, Ciudad",
                "personas_direcciones_s",
                " WHERE idPersona = " + self.obj("txt_00").get_text())
            datos = cursor.fetchall()

            if cursor.rowcount > 0:
                self.obj("txt_00_10").set_text(datos[0][0])
                self.obj("txt_00_11").set_text(datos[0][1])  # Barrio
                self.obj("txt_00_12").set_text(datos[0][2])  # Ciudad

            # Buscar Teléfono Laboral (2)
            cursor = Op.consultar(
                conexion, "Descripcion", "personas_mediocontactos_s",
                " WHERE idPersona = " + self.obj("txt_00").get_text() +
                " AND idTipoMedioContacto = 2")
            datos = cursor.fetchall()

            if cursor.rowcount > 0:
                medio = "" if len(datos[0][0]) == 0 else datos[0][0]
                self.obj("txt_00_13").set_text(medio)

            # Buscar Teléfono Particular (1)
            cursor = Op.consultar(
                conexion, "Descripcion", "personas_mediocontactos_s",
                " WHERE idPersona = " + self.obj("txt_00").get_text() +
                " AND idTipoMedioContacto = 1")
            datos = cursor.fetchall()

            if cursor.rowcount > 0:
                medio = "" if len(datos[0][0]) == 0 else datos[0][0]
                self.obj("txt_00_14").set_text(medio)

            # Buscar Teléfono Móvil o Celular (3)
            cursor = Op.consultar(
                conexion, "Descripcion", "personas_mediocontactos_s",
                " WHERE idPersona = " + self.obj("txt_00").get_text() +
                " AND idTipoMedioContacto = 3")
            datos = cursor.fetchall()

            if cursor.rowcount > 0:
                medio = "" if len(datos[0][0]) == 0 else datos[0][0]
                self.obj("txt_00_15").set_text(medio)

            # Buscar Correo Electrónico (4)
            cursor = Op.consultar(
                conexion, "Descripcion", "personas_mediocontactos_s",
                " WHERE idPersona = " + self.obj("txt_00").get_text() +
                " AND idTipoMedioContacto = 4")
            datos = cursor.fetchall()

            if cursor.rowcount > 0:
                medio = "" if len(datos[0][0]) == 0 else datos[0][0]
                self.obj("txt_00_16").set_text(medio)

            # Verificar si el Empleado ya fue registrado
            cursor = Op.consultar(
                conexion, "idEmpleado", "beneficiarios_s",
                " WHERE idEmpleado = " + self.obj("txt_00").get_text())
            datos = cursor.fetchall()
            cant = cursor.rowcount

            conexion.close()  # Finaliza la conexión

            if cant > 0:
                if len(self.obj(
                        "grilla").get_model()) > 0:  # Ya hay datos cargados
                    eleccion = Mens.pregunta_generico(
                        "¿Qué Desea?",
                        "Este Empleado ya posee familiares beneficiados con el Seguro de IPS"
                    )

            # - Si hay datos cargados preguntar si desea vincularlos al empleado actual o eliminarlos
            # - - modificar o eliminar (se usa condicion)

            self.cond_empleado = self.obj("txt_00").get_text()
            self.cargar_grilla_beneficiarios()

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

        else:
            conexion.close()  # Finaliza la conexión

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

            otro = self.obj("txt_00_2") if objeto == self.obj(
                "txt_00") else self.obj("txt_00")
            otro.set_text("")
            self.limpiar_empleado()
Beispiel #28
0
def genera_comprobante_pago(datos_conexion, nro_comp):
    ubicacion_archivo = dialogo_guardar("Comprobante de Pago")

    if ubicacion_archivo is not None:
        # Si no tiene la terminación .pdf se le agrega
        if ubicacion_archivo[-4:].lower() != ".pdf":
            ubicacion_archivo += ".pdf"

        story = []
        titulo = tabla_celda_titulo()
        texto = tabla_celda_just_izquierdo()
        numero = tabla_celda_just_derecho()
        centro = tabla_celda_centrado()

        tabla = Table([[
            Paragraph(
                "<b><font size=15>Distribuidora María Auxiliadora</font></b><br/><br/>"
                +
                "<i><font size=12>Productos y Servicios S.A.</font></i><br/><br/><br/>"
                + "<font size=8>Caaguazú - Paraguay</font>", centro),
            Paragraph(
                "RUC:<br/><br/>" +
                "<b><font size=15>RECIBO DE PAGO</font></b><br/><br/>" +
                "<i><font size=7>Liquidación de Sueldo y Otras Remuneraciones<br/>"
                +
                "(Conforme al Art. 235 del Código Laboral)</font></i><br/><br/>"
                + "<b><font size=15>" + cadenanumeros(nro_comp, 7) +
                "</font></b>", centro),
        ]], [350, 150])
        tabla.setStyle([
            ('VALIGN', (0, 0), (-1, -1),
             'MIDDLE'),  # Alineación Vertical de la Tabla
            ('BOX', (0, 0), (-1, -1), 0.25,
             colors.black),  # Borde Exterior de la Tabla
            ('INNERGRID', (0, 0), (-1, -1), 0.25,
             colors.black),  # Grilla Interior de la Tabla
        ])
        story.append(tabla)
        story.append(Spacer(0, 20))

        # Establece la conexión con la Base de Datos
        conexion = conectar(datos_conexion)
        cursor = consultar(
            conexion, "idEmpleado, NroDocumento, " +
            "NombreApellido, FechaInicio, FechaFin, TotalPagar",
            "comprobantepagos_s", " WHERE NroComprobante = " + nro_comp)
        datos_comp = cursor.fetchall()

        # Buscar otros datos del Empleado
        cursor = consultar(conexion, "DireccionPrincipal", "personas_s",
                           " WHERE idPersona = " + str(datos_comp[0][0]))
        datos_empl = cursor.fetchall()
        if cursor.rowcount > 0:
            direccion = "" if datos_empl[0][0] is None else datos_empl[0][0]
        else:
            direccion = ""

        # Buscar datos de la Empresa
        cursor = consultar(conexion, "NroPatronalIPS, NroPatronalMJT",
                           "empresas_s", " ORDER BY idEmpresa")
        datos_empr = cursor.fetchall()
        if cursor.rowcount > 0:
            ips = "" if datos_empr[0][0] is None else datos_empr[0][0]
            mjt = "" if datos_empr[0][1] is None else datos_empr[0][1]
        else:
            ips = mjt = ""

        tabla = Table(
            [[
                Paragraph("<b>Lugar y Fecha:</b>", texto),
                Paragraph("Caaguazú, " + fecha_hoy(), texto), '', ''
            ],
             [
                 Paragraph("<b>Trabajador:</b>", texto),
                 Paragraph(datos_comp[0][2], texto),
                 Paragraph("<b>C.I. Nro.:</b>", texto),
                 Paragraph(datos_comp[0][1], texto)
             ],
             [
                 Paragraph("<b>Dirección:</b>", texto),
                 Paragraph(direccion, texto), '', ''
             ],
             [
                 Paragraph("<b>Sucursal:</b>", texto),
                 Paragraph("Caaguazú", texto), '', ''
             ],
             [
                 Paragraph("<b>Periodo de Pago:</b>", texto),
                 Paragraph(
                     "Desde " + mysql_fecha(datos_comp[0][3]) + " hasta " +
                     mysql_fecha(datos_comp[0][4]), texto), '', ''
             ],
             [
                 Paragraph("<b>Nro. Patronal:</b>", texto),
                 Paragraph(ips + " / " + str(mjt), texto), '', ''
             ]], [100, 275, 50, 75])
        tabla.setStyle([
            ('SPAN', (1, 0), (-1, 0)),  # Combina columnas, primera fila
            ('ALIGN', (0, 0), (0, -1),
             'RIGHT'),  # Alineación de la Primera Columna
            ('ALIGN', (1, 1), (-1, -1),
             'LEFT'),  # Alineación de Otras Columnas
            ('VALIGN', (0, 0), (-1, -1),
             'MIDDLE'),  # Alineación Vertical de la Tabla
            ('TOPPADDING', (0, 0), (-1, -1), 1),  # Espacio Arriba
            ('BOTTOMPADDING', (0, 0), (-1, -1), 3),  # Espacio Abajo
            ('LEFTPADDING', (0, 0), (-1, -1), 3),  # Espacio a la Izquierda
            ('RIGHTPADDING', (0, 0), (-1, -1), 3),  # Espacio a la Derecha
            ('SPAN', (1, 2), (-1, 2)),  # Combina columnas, segunda fila
            ('SPAN', (1, 3), (-1, 3)),  # Combina columnas, tercera fila
            ('SPAN', (1, 4), (-1, 4)),  # Combina columnas, cuarta fila
            ('SPAN', (1, 5), (-1, 5)),  # Combina columnas, quinta fila
        ])
        story.append(tabla)
        story.append(Spacer(0, 20))

        cursor = consultar(conexion, "Cantidad, Concepto, Monto",
                           "comprobantepagos_detalles_s",
                           " WHERE NroComprobante = " + nro_comp)
        datos_det = cursor.fetchall()
        cant = cursor.rowcount
        lista = [[
            Paragraph("Cantidad", titulo),
            Paragraph("Descripción", titulo),
            Paragraph("Importe", titulo)
        ]]

        for i in range(0, cant):
            cantidad = "" if datos_det[i][0] is None else str(datos_det[i][0])
            lista.append([
                Paragraph(cantidad, centro),
                Paragraph(datos_det[i][1], texto),
                Paragraph(str(datos_det[i][2]), numero)
            ])

        if cant < 16:  # Completar hasta 16 casillas
            for i in range(cant, 16):
                lista.append(["", "", ""])

        # Total a Pagar
        lista.append([
            Paragraph("Total a Pagar:", numero), '',
            Paragraph(str(datos_comp[0][5]), numero)
        ])

        tabla = Table(lista, [100, 300, 100])
        tabla = tabla_style(tabla)
        tabla.setStyle([
            ('SPAN', (0, -1), (-2, -1)),  # Combina columnas, última fila
        ])
        story.append(tabla)

        #ubicacion_archivo = path.join(path.expanduser("~"), "Desktop", "listado.pdf")
        doc = SimpleDocTemplate(
            ubicacion_archivo,
            pagesize=A4,  # Tamaño de Página (landscape(A4) hoja horizontal)
            leftMargin=3 * cm,  # Margen Izquierdo
            rightMargin=3 * cm,  # Margen Derecho
            topMargin=2.5 * cm,  # Margen Superior
            bottomMargin=2.5 * cm,  # Margen Inferior
            allowSplitting=1,
            title="Comprobante de Pago Nro. " + cadenanumeros(nro_comp, 7),
            author="Sistema Distribuidora")

        try:  # Generar Archivo
            doc.build(story)
            popen(ubicacion_archivo)
        except PermissionError as e:
            error_permiso_archivo(str(e))
Beispiel #29
0
    def __init__(self, edit, origen):
        self.editando = edit
        self.nav = origen

        arch = Op.archivo("compra_ordenes")
        self.obj = arch.get_object

        self.obj("ventana").set_position(1)
        self.obj("ventana").set_default_size(650, 600)
        self.obj("ventana").set_modal(True)

        edit = "Creando" if not self.editando else "Editando"
        self.obj("ventana").set_title(edit + " Registro de " + self.nav.titulo)
        Mens.boton_guardar_cancelar(self.obj("btn_guardar"),
                                    self.obj("btn_cancelar"))

        self.estadoedicion(True)
        self.estadoguardar(False)
        self.estadoitem(False)
        self.config_grilla_items()

        self.obj("txt_00").set_max_length(10)
        self.obj("txt_01").set_max_length(10)
        self.obj("txt_01_2").set_max_length(12)
        self.obj("txt_02").set_max_length(10)

        self.obj("txt_00").set_tooltip_text("Ingrese el Número de " +
                                            self.nav.titulo)
        self.obj("txt_01").set_tooltip_text(
            Mens.usar_boton("al Proveedor de los ítems"))
        self.obj("txt_01_1").set_tooltip_text("Razón Social del Proveedor")
        self.obj("txt_01_2").set_tooltip_text(
            "Nro. de Documento de Identidad del Proveedor")
        self.obj("txt_01_3").set_tooltip_text(
            "Dirección principal del Proveedor")
        self.obj("txt_01_4").set_tooltip_text(
            "Teléfono principal del Proveedor")
        self.obj("txt_02").set_tooltip_text(
            Mens.usar_boton("un Pedido de Compra para cargar la Orden"))
        self.obj("txt_00").grab_focus()

        self.obj("txt_it_01").set_max_length(10)
        self.obj("txt_it_01_1").set_max_length(40)
        self.obj("txt_it_02").set_max_length(14)
        self.obj("txt_it_03").set_max_length(14)
        self.obj("txt_it_05").set_max_length(100)

        self.obj("txt_it_01").set_tooltip_text("Ingrese el Código del Ítem")
        self.obj("txt_it_01_1").set_tooltip_text(
            "Ingrese el Código de Barras del Ítem")
        self.obj("txt_it_01_2").set_tooltip_text("Descripción del Ítem")
        self.obj("txt_it_01_3").set_tooltip_text("Presentación del Ítem")
        self.obj("txt_it_01_4").set_tooltip_text("Categoría del Ítem")
        self.obj("txt_it_02").set_tooltip_text("Ingrese la Cantidad de Ítems")
        self.obj("txt_it_03").set_tooltip_text(
            "Ingrese el Precio Acordado del Ítem")
        self.obj("txt_it_04").set_tooltip_text(
            "Ingrese el Porcentaje de Descuento Acordado")
        self.obj("txt_it_05").set_tooltip_text(
            "Ingrese una Observación sobre el Ítems")

        self.idFormaPago = self.idTipoDoc = -1
        self.txt_cod_per, self.txt_rzn_scl = self.obj("txt_01"), self.obj(
            "txt_01_1")
        self.txt_nro_doc, self.cmb_tip_doc = self.obj("txt_01_2"), self.obj(
            "cmb_tipo_doc")
        self.txt_dir_per, self.txt_tel_per = self.obj("txt_01_3"), self.obj(
            "txt_01_4")
        self.txt_nro_ped = self.obj("txt_02")

        self.txt_cod_it = self.obj("txt_it_01")
        self.txt_bar_it, self.txt_nom_it = self.obj("txt_it_01_1"), self.obj(
            "txt_it_01_2")
        self.txt_des_pres, self.txt_des_cat = self.obj(
            "txt_it_01_3"), self.obj("txt_it_01_4")

        Op.combos_config(self.nav.datos_conexion, self.obj("cmb_tipo_doc"),
                         "tipodocumentos", "idTipoDocumento")
        Op.combos_config(self.nav.datos_conexion, self.obj("cmb_pago"),
                         "formapagos", "idFormaPago")
        arch.connect_signals(self)

        if self.editando:
            seleccion, iterador = self.nav.obj(
                "grilla").get_selection().get_selected()
            self.cond = str(seleccion.get_value(iterador, 0))
            fecha = seleccion.get_value(iterador, 1)[0:-9]  # Quita la Hora
            ruc = seleccion.get_value(iterador, 2)
            nombre = seleccion.get_value(iterador, 3)
            direc = seleccion.get_value(iterador, 4)
            telef = seleccion.get_value(iterador, 5)
            pago = seleccion.get_value(iterador, 7)
            resp = seleccion.get_value(iterador, 11)
            aprob = seleccion.get_value(iterador, 12)

            idper = str(seleccion.get_value(iterador, 14))
            tipodoc = str(seleccion.get_value(iterador, 15))
            pedido = str(seleccion.get_value(iterador, 16))

            direc = "" if direc is None else direc
            telef = "" if telef is None else telef

            self.obj("txt_00").set_text(self.cond)
            self.obj("txt_fecha").set_text(fecha)
            self.obj("txt_01").set_text(idper)
            self.obj("txt_01_1").set_text(nombre)
            self.obj("txt_01_2").set_text(ruc)
            self.obj("txt_01_2").set_text(direc)
            self.obj("txt_01_3").set_text(telef)
            self.obj("txt_02").set_text(pedido)

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

            # Asignación de Forma de Pago en Combo
            model, i = self.obj("cmb_pago").get_model(), 0
            while model[i][0] != pago:
                i += 1
            self.obj("cmb_pago").set_active(i)

            if aprob != 1:
                self.obj("btn_aprobar").set_sensitive(True)
                self.obj("btn_rechazar").set_sensitive(True)
            else:
                self.obj("hbox1").set_sensitive(False)
                self.obj("vbox1").set_sensitive(False)
                self.obj("vbox3").set_sensitive(False)
                self.obj("hbox16").set_sensitive(False)
                self.obj("grilla").set_sensitive(False)
                self.obj("hbox18").set_sensitive(False)

                Mens.no_puede_modificar_eliminar_anular(
                    1, "Seleccionó:\n\nNro. de Orden: " + self.cond +
                    "\nFecha: " + fecha + "\nResponsable: " + resp +
                    "\n\nEsta Orden de Compra ya ha sido Aprobada." +
                    "\nSolo puede modificar Órdenes pendientes de aprobación.")

            self.encabezado_guardado = True
            self.editando_pedido = True if len(pedido) > 0 else False
        else:
            self.obj("txt_00").set_text(
                Op.nuevoid(self.nav.datos_conexion, self.nav.tabla + "_s",
                           self.nav.campoid))
            self.obj("txt_fecha").set_text(Cal.mysql_fecha(date.today()))

            self.obj("cmb_tipo_doc").set_active(0)
            self.obj("cmb_pago").set_active(0)
            self.encabezado_guardado = self.editando_pedido = False

        self.pedido_guardado = True
        self.conexion = Op.conectar(self.nav.datos_conexion)
        self.cargar_grilla_items()

        self.nav.obj("grilla").get_selection().unselect_all()
        self.nav.obj("barraestado").push(0, "")
        self.obj("ventana").show()
Beispiel #30
0
    def focus_out_event(self, objeto, evento):
        valor = objeto.get_text()
        if len(valor) == 0:
            self.obj("barraestado").push(0, "")

            if objeto == self.obj("txt_01"):  # Código de Empleado
                self.idPersona == None
                self.obj("txt_01_1").set_text("")
                self.obj("txt_01_2").set_text("")

            elif objeto == self.obj("txt_01_2") \
            and len(self.obj("txt_01").get_text()) == 0:  # Nro. Documento de Empleado
                self.obj("txt_01_1").set_text("")

            elif objeto == self.obj("txt_02"):  # Número de Contrato
                self.obj("txt_02_1").set_text("")
                self.obj("txt_02_2").set_text("")
                self.obj("txt_02_3").set_text("")
        else:
            if objeto == self.obj("txt_00"):
                # Cuando crea nuevo registro o, al editar, valor es diferente del original,
                # y si es un numero entero, comprueba si ya ha sido registado
                if (not self.editando or valor != self.cond) and \
                Op.comprobar_numero(int, objeto, "Nro. de Comprobante", self.obj("barraestado")):
                    Op.comprobar_unique(
                        self.nav.datos_conexion, self.nav.tabla + "_s",
                        self.nav.campoid, valor, objeto, self.estadoguardar,
                        self.obj("barraestado"),
                        "El Nro. de Comprobante introducido ya ha sido registado."
                    )

            elif objeto == self.obj("txt_01"):
                if Op.comprobar_numero(int, objeto, "Cód. de Empleado",
                                       self.obj("barraestado")):
                    self.buscar_empleados(objeto, "idPersona", valor,
                                          "Cód. de Empleado")

            elif objeto == self.obj("txt_01_2"):
                self.buscar_empleados(
                    objeto, "NroDocumento", "'" + valor + "'" +
                    " AND idTipoDocumento = '" + str(self.idTipoDoc) + "'",
                    "Nro. de Documento")

            elif objeto == self.obj("txt_02"):
                if Op.comprobar_numero(int, objeto, "Nro. de Contrato",
                                       self.obj("barraestado")):
                    conexion = Op.conectar(self.nav.datos_conexion)
                    cursor = Op.consultar(
                        conexion, "idEmpleado, Cargo, " +
                        "Salario, PeriodoPago, idPeriodoPago, Vigente",
                        "contratos_s", " WHERE NroContrato = " + valor)
                    datos = cursor.fetchall()
                    cant = cursor.rowcount
                    conexion.close()  # Finaliza la conexión

                    if cant > 0:
                        if datos[0][5] == 1:
                            self.obj("txt_01").set_text(str(datos[0][0]))
                            self.obj("txt_02_1").set_text(datos[0][1])
                            self.obj("txt_02_2").set_text(str(datos[0][2]))
                            self.obj("txt_02_3").set_text(datos[0][3])

                            self.idPeriodoPago = datos[0][4]
                            self.obj("barraestado").push(0, "")

                            if len(self.obj("txt_03").get_text()) == 0:
                                # Buscar último pago y comparar fechas
                                conexion = Op.conectar(self.nav.datos_conexion)
                                cursor = Op.consultar(
                                    conexion, "MAX(FechaFin)",
                                    "comprobantepagos_s",
                                    " WHERE (NroContrato = " + valor + ")")
                                datos = cursor.fetchall()
                                cant = cursor.rowcount
                                conexion.close()  # Finaliza la conexión

                                if datos[0][0] is None:
                                    fecha = ""
                                else:
                                    fecha = Cal.mysql_fecha(datos[0][0])
                                    self.fechaini = str(datos[0][0])
                                self.obj("txt_03").set_text(fecha)

                            self.borrar_contrato = False
                            self.focus_out_event(self.obj("txt_01"), 0)
                        else:
                            objeto.grab_focus()
                            self.estadoguardar(False)
                            self.obj("barraestado").push(
                                0,
                                "El Contrato seleccionado ya no se encuentra vigente."
                            )
                    else:
                        objeto.grab_focus()
                        self.estadoguardar(False)
                        self.obj("barraestado").push(
                            0, "El Nro. de Contrato no es válido.")

            elif objeto == self.obj("txt_03"):
                if Op.compara_fechas(self.nav.datos_conexion,
                                     "'" + self.fechaini + "'", ">", "NOW()"):
                    self.estadoguardar(False)
                    objeto.grab_focus()
                    self.obj("barraestado").push(
                        0,
                        "La Fecha de Inicio del Periodo de Pago NO puede estar en el Futuro."
                    )
                else:
                    self.comparar_fechas_periodo_pago()

            elif objeto == self.obj("txt_04"):
                if Op.compara_fechas(self.nav.datos_conexion,
                                     "'" + self.fechafin + "'", ">", "NOW()"):
                    self.estadoguardar(False)
                    objeto.grab_focus()
                    self.obj("barraestado").push(
                        0,
                        "La Fecha de Finalización del Periodo de Pago NO puede estar en el Futuro."
                    )
                else:
                    self.comparar_fechas_periodo_pago()