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, "")
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, "")
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, "")
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")
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, "")
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.")
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"))
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()
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"))
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, "")
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()
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)
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))
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, "")