Пример #1
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.obj("txt_01_2").set_text("")
            elif objeto == self.obj("txt_01_2"):  # Nro. Documento de Empleado
                self.obj("txt_01").set_text("")

            if objeto == self.obj("txt_01") or (objeto == self.obj("txt_01_2") \
            and len(self.obj("txt_01").get_text()) == 0):
                self.obj("txt_01_1").set_text("")
                self.obj("txt_01_3").set_text("")
                self.obj("txt_01_4").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, "Código", self.obj("barraestado")):
                    Op.comprobar_unique(self.nav.datos_conexion, "contratos_s",
                        self.nav.campoid, valor, self.obj("txt_00"),
                        self.estadoedicion, self.obj("barraestado"),
                        "El Código 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 = '" + self.idTipoDoc + "'", "Nro. de Documento")

            elif objeto in (self.obj("txt_04"), self.obj("txt_05")):
                if len(self.obj("txt_04").get_text()) > 0 and len(self.obj("txt_05").get_text()) > 0:
                    if Op.compara_fechas(self.nav.datos_conexion,
                    "'" + self.fecha_ini + "'", ">=", "'" + self.fecha_fin + "'"):
                        self.estadoedicion(False)
                        objeto.grab_focus()
                        self.obj("barraestado").push(0, "La Fecha de Inicio NO puede ser posterior a la de Terminación.")
                    else:
                        self.obj("barraestado").push(0, "")

            elif objeto in (self.obj("txt_06"), self.obj("txt_07")):
                if len(self.obj("txt_06").get_text()) > 0 and len(self.obj("txt_07").get_text()) > 0:
                    if Op.compara_fechas(self.nav.datos_conexion,
                    "'" + self.prueba_ini + "'", ">=", "'" + self.prueba_fin + "'"):
                        self.estadoedicion(False)
                        objeto.grab_focus()
                        self.obj("barraestado").push(0, "La Fecha de Inicio del Periodo de Prueba NO puede ser posterior a la de Terminación.")
                    else:
                        self.obj("barraestado").push(0, "")
Пример #2
0
 def comparar_fechas_periodo(self):
     if len(self.obj("txt_03").get_text()) > 0 and len(self.obj("txt_04").get_text()) > 0:
         if Op.compara_fechas(self.datos_conexion,
         "'" + self.fechaini + "'", ">", "'" + self.fechafin + "'"):
             self.obj("btn_aceptar").set_sensitive(False)
             objeto.grab_focus()
             self.obj("barraestado").push(0, "La Fecha de Inicio del Periodo a examinar NO puede ser posterior a la de Finalización.")
         else:
             self.obj("barraestado").push(0, "")
Пример #3
0
    def focus_out_event(self, objeto, evento):
        valor = objeto.get_text()
        if len(valor) == 0:
            self.obj("barraestado").push(0, "")

            if objeto in (self.obj("txt_01"), self.obj("txt_01_2")):
                self.obj("txt_01_1").set_text("")
                self.obj("txt_01_2").set_text("")
                self.obj("txt_01_3").set_text("")
                self.obj("txt_01_4").set_text("")
            elif objeto in (self.obj("txt_02"), self.obj("txt_02_2")):
                self.obj("txt_02_1").set_text("")
                self.obj("txt_02_2").set_text("")
        else:
            if objeto == self.obj("txt_00"):
                # Cuando crea nuevo registro o, al editar, valor es diferente del original
                busq = "" if not self.editando else " AND " + self.nav.campoid + " <> '" + self.cond + "'"

                Op.comprobar_unique(self.nav.datos_conexion, self.nav.tabla + "_s",
                    self.nav.campoid, "'" + valor + "'" + busq, objeto,
                    self.obj("btn_guardar"), self.obj("barraestado"),
                    "El Nro. de Tarjeta introducido ya ha sido registado.")

            elif objeto == self.obj("txt_01"):
                if Op.comprobar_numero(int, objeto, "Cód. de Banco", self.obj("barraestado")):
                    self.buscar_personas(objeto, "idPersona", valor,
                        "Cód. de Banco", objeto, self.obj("txt_01_1"),
                        self.obj("txt_01_2"), self.obj("cmb_doc_banco"),
                        self.obj("txt_01_3"), self.obj("txt_01_4"))

            elif objeto == self.obj("txt_01_2"):
                self.buscar_personas(objeto, "NroDocumento", "'" + valor + "'" +
                    " AND idTipoDocumento = '" + self.idTipoDocBanco + "'",
                    "Nro. de Documento del Banco", self.obj("txt_01"),
                    self.obj("txt_01_1"), objeto, self.obj("cmb_doc_banco"),
                    self.obj("txt_01_3"), self.obj("txt_01_4"))

            elif objeto == self.obj("txt_02"):
                if Op.comprobar_numero(int, objeto, "Cód. de Titular", self.obj("barraestado")):
                    self.buscar_personas(objeto, "idPersona", valor,
                        "Cód. de Titular", objeto, self.obj("txt_02_1"),
                        self.obj("txt_02_2"), self.obj("cmb_doc_titular"))

            elif objeto == self.obj("txt_02_2"):
                self.buscar_personas(objeto, "NroDocumento", "'" + valor + "'" +
                    " AND idTipoDocumento = '" + self.idTipoDocTitular + "'",
                    "Nro. de Documento del Titular", self.obj("txt_02"),
                    self.obj("txt_02_1"), objeto, self.obj("cmb_doc_titular"))

            elif objeto == self.obj("txt_03"):
                if Op.compara_fechas(self.nav.datos_conexion, "NOW()", ">=", "'" + self.fecha_ven + "'") == 1:
                    self.obj("btn_guardar").set_sensitive(False)
                    objeto.grab_focus()
                    self.obj("barraestado").push(0, "La Fecha de Vencimiento debe estar en el FUTURO.")
                else:
                    self.obj("barraestado").push(0, "")
Пример #4
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_03"):  # Código de Proveedor
                self.obj("txt_03_1").set_text("")
                self.obj("txt_03_2").set_text("")
                self.obj("txt_03_3").set_text("")
                self.obj("txt_03_4").set_text("")

            elif objeto == self.obj("txt_03_2") \
            and len(self.obj("txt_03").get_text()) == 0:  # Nro. Documento de Proveedor
                self.obj("txt_03_1").set_text("")
                self.obj("txt_03_3").set_text("")
                self.obj("txt_03_4").set_text("")
        else:
            if objeto in (self.obj("txt_00"), self.obj("txt_01")):
                fact = self.obj("txt_00").get_text()
                timb = self.obj("txt_01").get_text()

                if len(timb) > 0 and len(fact) > 0 and Op.comprobar_numero(int,
                self.obj("txt_01"), "Nro. de Timbrado", self.obj("barraestado")):
                    # Al editar, comprueba que los valores son diferentes del original
                    busq = "" if not self.editando else " AND " + \
                        "(NroTimbrado <> " + self.cond_timb + " OR" + \
                        " NroFactura <> '" + self.cond_fact + "')"

                    Op.comprobar_unique(self.nav.datos_conexion, self.nav.tabla + "_s",
                        "NroFactura", "'" + fact + "' AND NroTimbrado = " + timb + busq,
                        objeto, self.estadoguardar, self.obj("barraestado"),
                        "La Factura de Compra introducida ya ha sido registada.")

            elif objeto == self.obj("txt_02"):
                if Op.compara_fechas(self.nav.datos_conexion, "'" + self.fecha + "'", ">=", "NOW()"):
                    self.estadoguardar(False)
                    objeto.grab_focus()
                    self.obj("barraestado").push(0, "La Fecha de expedición de la Factura NO puede estar en el Futuro.")
                else:
                    self.obj("barraestado").push(0, "")

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

            elif objeto == self.obj("txt_03"):
                if Op.comprobar_numero(int, objeto, "Cód. de Proveedor", self.obj("barraestado")):
                    self.buscar_proveedores(objeto, "idPersona", valor, "Cód. de Proveedor")

            elif objeto == self.obj("txt_03_2"):
                self.buscar_proveedores(objeto, "NroDocumento", "'" + valor + "'" +
                    " AND idTipoDocumento = '" + self.idTipoDoc + "'", "Nro. de Documento")
Пример #5
0
 def comparar_fechas_periodo_pago(self):
     if len(self.obj("txt_03").get_text()) > 0 and len(
             self.obj("txt_04").get_text()) > 0:
         if Op.compara_fechas(self.nav.datos_conexion,
                              "'" + self.fechaini + "'", ">",
                              "'" + self.fechafin + "'"):
             self.estadoguardar(False)
             objeto.grab_focus()
             self.obj("barraestado").push(
                 0,
                 "La Fecha de Inicio del Periodo de Pago NO puede ser posterior a la de Finalización."
             )
         else:
             self.obj("barraestado").push(0, "")
Пример #6
0
    def on_fecha_focus_out_event(self, objeto, evento):
        valor = objeto.get_text()
        if len(valor) == 0:
            self.obj("barraestado").push(0, "")
        else:
            if objeto in (self.obj("txt_f_01"), self.obj("txt_f_02")):
                if len(self.obj("txt_f_01").get_text()) > 0 \
                and len(self.obj("txt_f_02").get_text()) > 0:
                    if Op.compara_fechas(self.nav.datos_conexion,
                                         "'" + self.fechaini + "'", ">",
                                         "'" + self.fechafin + "'"):
                        self.obj("btn_guardar_fecha").set_sensitive(False)
                        objeto.grab_focus()
                        self.obj("barraestado").push(
                            0,
                            "La Fecha de Inicio del Periodo de Vacaciones NO puede ser posterior a la de Finalización."
                        )
                    else:
                        # Cálculo de la Cantidad de Días
                        dias = str(
                            Cal.cantidad_dias(self.fechaini, self.fechafin))
                        self.obj("txt_f_03").set_text(dias)
                        self.obj("barraestado").push(0, "")

            elif objeto == self.obj("txt_f_04"):
                if Op.comprobar_numero(int, objeto,
                                       "Nro. de Comprobante de Pago",
                                       self.obj("barraestado")):
                    conexion = Op.conectar(self.nav.datos_conexion)
                    cursor = Op.consultar(
                        conexion, "NroComprobante", "comprobantepagos_s",
                        " WHERE NroComprobante = " + valor +
                        " AND Confirmado = 1")
                    datos = cursor.fetchall()
                    cant = cursor.rowcount
                    conexion.close()  # Finaliza la conexión

                    if cant > 0:
                        self.obj("barraestado").push(0, "")
                        self.verificacion(0)
                    else:
                        objeto.grab_focus()
                        self.obj("btn_guardar_fecha").set_sensitive(False)
                        self.obj("barraestado").push(
                            0, "El Nro. de Comprobante de Pago no es válido.")
Пример #7
0
    def 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_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_id or str(self.idMoneda) != str(self.cond_moneda)) \
                and Op.comprobar_numero(int, self.obj("txt_00"), "Código", self.obj("barraestado")):
                    Op.comprobar_unique(
                        self.nav.datos_conexion, self.nav.tabla + "_s",
                        self.nav.campoid,
                        valor + " AND idMoneda = " + str(self.idMoneda),
                        objeto, self.obj("btn_guardar"),
                        self.obj("barraestado"),
                        "El Cód. de Cotización introducido ya ha sido registado para esta Moneda."
                    )

            elif objeto == self.obj("txt_01"):
                if Op.compara_fechas(self.nav.datos_conexion,
                                     "'" + self.fecha + "'", ">", "NOW()"):
                    self.obj("btn_guardar").set_sensitive(False)
                    objeto.grab_focus()
                    self.obj("barraestado").push(
                        0, "La Fecha NO puede estar en el Futuro.")
                else:
                    self.obj("barraestado").push(0, "")

            elif objeto == self.obj("txt_02"):
                Op.comprobar_numero(float, self.obj("txt_02"),
                                    "Monto de Compra", self.obj("barraestado"))

            elif objeto == self.obj("txt_03"):
                Op.comprobar_numero(float, self.obj("txt_03"),
                                    "Monto de Venta", self.obj("barraestado"))
Пример #8
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()
Пример #9
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_03"):
                self.obj("txt_03_1").set_text("")
                self.obj("txt_03_2").set_text("")
                self.obj("txt_03_3").set_text("")
                self.obj("txt_03_4").set_text("")
            elif objeto == self.obj("txt_04"):
                self.obj("txt_04_1").set_text("")
                self.obj("txt_04_2").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, "Código", self.obj("barraestado")):
                    Op.comprobar_unique(self.nav.datos_conexion,
                        self.nav.tabla + "_s", self.nav.campoid, valor, objeto,
                        self.obj("btn_guardar"), self.obj("barraestado"),
                        "El Código introducido ya ha sido registado.")

            elif objeto == self.obj("txt_01"):
                if Op.comprobar_numero(int, objeto, "Nro. de Cheque", self.obj("barraestado")):
                    self.comprobar_cheque(objeto)

            elif objeto == self.obj("txt_02"):
                self.comprobar_cheque(objeto)

            elif objeto == self.obj("txt_03"):
                if Op.comprobar_numero(int, objeto, "Cód. de Banco", self.obj("barraestado")):
                    self.buscar_personas(objeto, "idPersona", valor,
                        "Cód. de Banco", objeto, self.obj("txt_03_1"),
                        self.obj("txt_03_2"), self.obj("cmb_doc_banco"),
                        self.obj("txt_03_3"), self.obj("txt_03_4"))
                    self.comprobar_cheque(objeto)

            elif objeto == self.obj("txt_03_2"):
                self.buscar_personas(objeto, "NroDocumento", "'" + valor + "'" +
                    " AND idTipoDocumento = '" + self.idTipoDocBanco + "'",
                    "Nro. de Documento del Banco", self.obj("txt_03"),
                    self.obj("txt_03_1"), objeto, self.obj("cmb_doc_banco"),
                    self.obj("txt_03_3"), self.obj("txt_03_4"))
                self.comprobar_cheque(objeto)

            elif objeto == self.obj("txt_04"):
                if Op.comprobar_numero(int, objeto, "Cód. de Titular", self.obj("barraestado")):
                    self.buscar_personas(objeto, "idPersona", valor,
                        "Cód. de Titular", objeto, self.obj("txt_04_1"),
                        self.obj("txt_04_2"), self.obj("cmb_doc_titular"))

            elif objeto == self.obj("txt_04_2"):
                self.buscar_personas(objeto, "NroDocumento", "'" + valor + "'" +
                    " AND idTipoDocumento = '" + self.idTipoDocTitular + "'",
                    "Nro. de Documento del Titular", self.obj("txt_04"),
                    self.obj("txt_04_1"), objeto, self.obj("cmb_doc_titular"))

            elif objeto in (self.obj("txt_05"), self.obj("txt_06")):
                if len(self.obj("txt_05").get_text()) > 0 \
                and len(self.obj("txt_06").get_text()) > 0 \
                and Op.compara_fechas(self.nav.datos_conexion,
                "'" + self.fecha_emision + "'", ">", "'" + self.fecha_cobro + "'") == 1:
                    self.obj("btn_guardar").set_sensitive(False)
                    objeto.grab_focus()
                    self.obj("barraestado").push(0, "La Fecha de Emisión NO puede posterior a la Fecha de Cobro.")
                else:
                    self.obj("barraestado").push(0, "")

            elif objeto == self.obj("txt_07"):
                Op.comprobar_numero(float, objeto, "Monto del Cheque", self.obj("barraestado"))
Пример #10
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("")
        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, "Código", 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 Código 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, Vigente",
                        "contratos_s", " WHERE NroContrato = " + valor)
                    datos = cursor.fetchall()
                    cant = cursor.rowcount
                    conexion.close()  # Finaliza la conexión

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

                            self.obj("barraestado").push(0, "")
                            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_04"):
                self.obj("barraestado").push(0, "")

            elif objeto in (self.obj("txt_05"), self.obj("txt_06")):
                if len(self.obj("txt_05").get_text()) > 0 \
                and len(self.obj("txt_06").get_text()) > 0:
                    if Op.compara_fechas(self.nav.datos_conexion,
                    "'" + self.fechaini + "'", ">", "'" + self.fechafin + "'"):
                        self.estadoguardar(False)
                        objeto.grab_focus()
                        self.obj("barraestado").push(0, "La Fecha de Inicio del Reposo NO puede ser posterior a la de Finalización.")
                    else:
                        # Cálculo de la Cantidad de Días
                        dias = str(Cal.cantidad_dias(self.fechaini, self.fechafin))
                        self.obj("txt_07").set_text(dias)
                        self.obj("barraestado").push(0, "")
Пример #11
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("")
        else:
            if 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.datos_conexion)
                    cursor = Op.consultar(conexion, "idEmpleado, Cargo, Vigente",
                        "contratos_s", " WHERE NroContrato = " + valor)
                    datos = cursor.fetchall()
                    cant = cursor.rowcount
                    conexion.close()  # Finaliza la conexión

                    if cant > 0:
                        if datos[0][2] == 1:
                            self.obj("txt_01").set_text(str(datos[0][0]))
                            self.obj("txt_02_1").set_text(datos[0][1])
                            self.obj("barraestado").push(0, "")

                            self.borrar_contrato = False
                            self.focus_out_event(self.obj("txt_01"), 0)
                        else:
                            objeto.grab_focus()
                            self.obj("btn_aceptar").set_sensitive(False)
                            self.obj("barraestado").push(0, "El Contrato seleccionado ya no se encuentra vigente.")
                    else:
                        objeto.grab_focus()
                        self.obj("btn_aceptar").set_sensitive(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.datos_conexion, "'" + self.fechaini + "'", ">", "NOW()"):
                    self.obj("btn_aceptar").set_sensitive(False)
                    objeto.grab_focus()
                    self.obj("barraestado").push(0, "La Fecha de Inicio del Periodo a examinar NO puede estar en el Futuro.")
                else:
                    self.comparar_fechas_periodo()

            elif objeto == self.obj("txt_04"):
                if Op.compara_fechas(self.datos_conexion, "'" + self.fechafin + "'", ">", "NOW()"):
                    self.obj("btn_aceptar").set_sensitive(False)
                    objeto.grab_focus()
                    self.obj("barraestado").push(0, "La Fecha de Finalización del Periodo a examinar NO puede estar en el Futuro.")
                else:
                    self.comparar_fechas_periodo()
Пример #12
0
    def buscar_horarios(self):
        dia = Cal.dia_hoy_letras()
        self.puntual = "1"

        # Búsqueda de Horarios del Contrato
        nrocontrato = self.obj("txt_01").get_text()
        est = "HoraEntrada" if self.obj(
            "entrada").get_active() else "HoraSalida"

        conexion = Op.conectar(self.datos_conexion)
        cursor = Op.consultar(
            conexion, est, "horarios_s", " WHERE " + "NroContrato = " +
            nrocontrato + " AND Dia = '" + dia + "'" + " ORDER BY " + est)
        horas = cursor.fetchall()
        cant = cursor.rowcount

        if cant == 0:
            self.obj("barraestado").push(
                0,
                "No ha sido encontrado el Horario para este Día y Contrato.")
        else:
            est = "1" if self.obj("entrada").get_active() else "0"
            observacion = ""

            # Obtiene los registros de Asistencias del Empleado
            cursor = Op.consultar(
                conexion, "Hora", "asistencias_s",
                "WHERE NroContrato = " + nrocontrato + " " +
                "AND Fecha = DATE_FORMAT(NOW(), '%Y-%m-%d') " +
                "AND Entrada = " + est + " ORDER BY Hora")
            asist = cursor.fetchall()
            cant = cursor.rowcount

            if self.obj("entrada").get_active():
                try:
                    hora_ent = str(horas[cant][0])

                    # Incluye un periodo de tolerancia de 5 minutos
                    if Op.compara_fechas(
                            self.datos_conexion,
                            "ADDTIME('" + hora_ent + "', '00:05:00')", ">",
                            "DATE_FORMAT(NOW(), '%T'"):
                        observacion = "Llegada Puntual (" + hora_ent + ")"
                    else:
                        observacion = "Llegada Tardía (" + hora_ent + ")"
                        self.puntual = "0"
                except:
                    self.obj("salida").set_active(True)

            else:  # Salida
                try:
                    hora_sal = str(horas[cant][0])

                    if Op.compara_fechas(self.datos_conexion,
                                         "'" + hora_sal + "'", ">",
                                         "DATE_FORMAT(NOW(), '%T'"):
                        observacion = "Salida Temprana (" + hora_sal + ")"
                        self.puntual = "0"
                    else:
                        observacion = "Salida Puntual (" + hora_sal + ")"
                except:
                    self.obj("barraestado").push(0, "Tanto las Entradas como las Salidas " + \
                    "para este Contrato por este Día ya han sido registradas.")

            conexion.close()  # Finaliza la conexión
            self.obj("txt_02").set_text(observacion)
Пример #13
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("")
        else:
            if objeto == self.obj("txt_00"):
                contrato = self.obj("txt_02").get_text()

                if len(contrato) > 0 and Op.comprobar_numero(
                        int, objeto, "Código", self.obj("barraestado")):
                    # Al editar, comprueba que los valores son diferentes del original
                    busq = "" if not self.editando else " AND " + \
                        "(" + self.nav.campoid + " <> " + self.cond_id + \
                        " OR NroContrato <> " + self.cond_cont + ")"

                    Op.comprobar_unique(
                        self.nav.datos_conexion, self.nav.tabla + "_s",
                        self.nav.campoid,
                        valor + " AND NroContrato = " + contrato + busq,
                        objeto, self.obj("btn_guardar"),
                        self.obj("barraestado"),
                        "El Código introducido ya ha sido registado para este Contrato."
                    )

            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, SalarioMensual, Vigente",
                        "contratos_s", " WHERE NroContrato = " + valor)
                    datos = cursor.fetchall()
                    cant = cursor.rowcount
                    conexion.close()  # Finaliza la conexión

                    if cant > 0:
                        if datos[0][3] == 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]))

                            # Nuevo Código de Horas Extraordinarias
                            self.obj("txt_00").set_text(
                                Op.nuevoid(
                                    self.nav.datos_conexion, self.nav.tabla +
                                    "_s " + "WHERE NroContrato = " + valor,
                                    self.nav.campoid))

                            self.obj("barraestado").push(0, "")
                            self.borrar_contrato = False
                            self.focus_out_event(self.obj("txt_01"), 0)
                            self.focus_out_event(self.obj("txt_04"), 0)
                        else:
                            objeto.grab_focus()
                            self.obj("btn_guardar").set_sensitive(False)
                            self.obj("barraestado").push(
                                0,
                                "El Contrato seleccionado ya no se encuentra vigente."
                            )
                    else:
                        objeto.grab_focus()
                        self.obj("btn_guardar").set_sensitive(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.fecha + "'", ">=", "NOW()"):
                    self.obj("btn_guardar").set_sensitive(False)
                    objeto.grab_focus()
                    self.obj("barraestado").push(
                        0, "La Fecha NO puede estar en el Futuro.")
                else:
                    self.obj("barraestado").push(0, "")

            elif objeto in (self.obj("txt_04"), self.obj("txt_05")):
                if len(self.obj("txt_04").get_text()) > 0 \
                and len(self.obj("txt_05").get_text()) > 0:
                    conexion = Op.conectar(self.nav.datos_conexion)
                    cursor = conexion.cursor()
                    cursor.execute("SELECT diferencia_horas(" + "'" +
                                   self.obj("txt_04").get_text() + "', " +
                                   "'" + self.obj("txt_05").get_text() + "')")
                    horas = cursor.fetchall()[0][0]
                    conexion.close()  # Finaliza la conexión

                    self.obj("txt_06").set_text(str(horas))
Пример #14
0
    def focus_out_event(self, objeto, evento):
        valor = objeto.get_text()
        if len(valor) == 0:
            self.obj("barraestado").push(0, "")
            self.limpiar_campos(objeto)
        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, self.obj("txt_00"), "Nro. de Timbrado", self.obj("barraestado")):
                    Op.comprobar_unique(
                        self.nav.datos_conexion, self.nav.tabla + "_s",
                        self.nav.campoid, valor, self.obj("txt_00"),
                        self.obj("btn_guardar"), self.obj("barraestado"),
                        "El Nro. de Timbrado introducido ya ha sido registado."
                    )

            elif objeto == self.obj("txt_01"):
                if Op.comprobar_numero(int, objeto, "Nro. de Establecimiento",
                                       self.obj("barraestado")):
                    conexion = Op.conectar(self.nav.datos_conexion)
                    cursor = Op.consultar(
                        conexion,
                        "Nombre, Ciudad, Direccion, NroTelefono, Activo",
                        "establecimientos_s",
                        " WHERE NroEstablecimiento = " + valor)
                    datos = cursor.fetchall()
                    cant = cursor.rowcount
                    conexion.close()  # Finaliza la conexión

                    if cant > 0:
                        direccion = "" if datos[0][
                            2] is None else ", " + datos[0][2]
                        telefono = "" if datos[0][3] is None else datos[0][3]

                        self.obj("txt_01_1").set_text(datos[0][0])
                        self.obj("txt_01_2").set_text(datos[0][1] + direccion)
                        self.obj("txt_01_3").set_text(telefono)

                        if datos[0][4] != 1:  # Si no está Activo
                            self.obj("btn_guardar").set_sensitive(False)
                            self.obj("txt_01").grab_focus()
                            self.obj("barraestado").push(
                                0,
                                "El Establecimiento seleccionado NO está Activo."
                            )
                        else:
                            self.obj("barraestado").push(0, "")
                            self.focus_out_event(self.obj("txt_02"), 0)
                    else:
                        self.obj("btn_guardar").set_sensitive(False)
                        self.obj("txt_01").grab_focus()
                        self.obj("barraestado").push(
                            0, "El Nro. de Establecimiento NO es válido.")
                        self.limpiar_campos(objeto)

            elif objeto == self.obj("txt_02") and not len(
                    self.obj("txt_01").get_text()) == 0:
                if Op.comprobar_numero(int, objeto,
                                       "Nro. de Punto de Expedición",
                                       self.obj("barraestado")):
                    conexion = Op.conectar(self.nav.datos_conexion)
                    cursor = Op.consultar(
                        conexion, "Nombre, Activo", "puntoexpediciones_s",
                        " WHERE NroPuntoExpedicion = " + valor +
                        " AND NroEstablecimiento = " +
                        self.obj("txt_01").get_text())
                    datos = cursor.fetchall()
                    cant = cursor.rowcount
                    conexion.close()  # Finaliza la conexión

                    if cant > 0:
                        self.obj("txt_02_1").set_text(datos[0][0])

                        if datos[0][1] != 1:  # Si no está Activo
                            self.obj("btn_guardar").set_sensitive(False)
                            self.obj("txt_02").grab_focus()
                            self.obj("barraestado").push(
                                0,
                                "El Punto de Expedición seleccionado NO está Activo."
                            )
                        else:
                            self.obj("barraestado").push(0, "")
                    else:
                        self.obj("btn_guardar").set_sensitive(False)
                        self.obj("txt_02").grab_focus()
                        self.obj("barraestado").push(
                            0, "El Nro. de Punto de Expedición NO es válido.")
                        self.limpiar_campos(objeto)

            else:  # Fechas de Emisión y Vencimiento
                if len(self.obj("txt_03").get_text()) > 0 and len(
                        self.obj("txt_04").get_text()) > 0:
                    if Op.compara_fechas(self.nav.datos_conexion,
                                         "'" + self.fecha_emi + "'", ">",
                                         "'" + self.fecha_ven + "'"):
                        self.obj("btn_guardar").set_sensitive(False)
                        objeto.grab_focus()
                        self.obj("barraestado").push(
                            0,
                            "La Fecha de Emisión NO puede ser posterior a la Fecha de Vencimiento."
                        )
                    else:
                        self.obj("barraestado").push(0, "")
                else:
                    self.obj("barraestado").push(0, "")