def gesttare_get_model_info(self, model, data, ident, template, where_filter): if template == "control_diario": user_name = qsatype.FLUtil.nameUser() user_company = qsatype.FLUtil.sqlSelect( "aqn_user", "idcompany", "idusuario = {}".format(user_name)) where = "" if qsatype.FLUtil.sqlSelect("auth_user", "is_superuser", "username = '******'".format(user_name)): where += "aqn_user.idcompany = " + str(user_company) else: where += "(gt_controldiario.idusuario = '" + str( user_name) + "' OR aqn_user.idresponsable = '" + str( user_name) + "')" if where_filter: where += " AND " + where_filter tiempototal = qsatype.FLUtil.quickSqlSelect( "gt_controldiario INNER JOIN aqn_user ON gt_controldiario.idusuario = aqn_user.idusuario", "SUM(horasordinarias)", where) or 0 tiempototal = flgesttare_def.iface.seconds_to_time( tiempototal, all_in_hours=True) return {"controldiario": "Tiempo total: {}".format(tiempototal)} if template == "newrecord": fecha = qsatype.FLUtil().quickSqlSelect( "gt_controldiario", "fecha", "idc_diario = {}".format(data["idc_diario"])) formateaFecha = str(fecha).split("-") return { "chForm": "Nuevo registro para " + formateaFecha[2] + "-" + formateaFecha[1] + "-" + formateaFecha[0] } elif template == "formRecord": if isinstance(data, list): return None fecha = qsatype.FLUtil().quickSqlSelect( "gt_controldiario", "fecha", "idc_diario = {}".format(data["idc_diario"])) formateaFecha = str(fecha).split("-") return { "controlHorarioFormRecord": "Editar registro para " + formateaFecha[2] + "-" + formateaFecha[1] + "-" + formateaFecha[0] } return None
def diagnosis_dameSubregistrosDiagnosis(self, model): haySubReg = qsatype.FLUtil().sqlSelect("yb_subregdiagnosis", "idsubreg", "idreg = " + str(model.pk)) if haySubReg: return '/diagnosis/yb_regdiagnosis/' + str(model.pk) else: return False
def gesttare_drawif_validar_user(self, cursor): if cursor.valueBuffer("validado_user"): return "hidden" if qsatype.FLUtil.nameUser() != str(cursor.valueBuffer("idusuario")): return "hidden" if qsatype.FLUtil().quickSqlSelect( "gt_controldiario", "idc_diario", "idc_mensual = {} AND NOT validado".format( cursor.valueBuffer("idc_mensual"))): return "disabled"
def gesttare_gotoNuevoTramoFecha(self, model, oParam): tengopermiso = flgesttare_def.iface.compruebaPermisosPlan("start") if tengopermiso != True: return tengopermiso resul = {} resul['status'] = 1 # oParam["fecha"] = "2020-05-12" # print("el valor es: ",oParam["fecha"]) if "fecha" in oParam: user_name = qsatype.FLUtil.nameUser() idc_diario = qsatype.FLUtil().quickSqlSelect( "gt_controldiario", "idc_diario", "idusuario = '{}' AND fecha = '{}'".format( user_name, oParam["fecha"])) if idc_diario: resul[ "msg"] = "Ya existe un registro para tu usaurio en el dia " + oParam[ "fecha"] return resul if not idc_diario: if not qsatype.FLUtil().sqlInsert("gt_controldiario", [ "fecha", "horaentrada", "horasextra", "idusuario" ], [oParam["fecha"], "00:00:01", "00:00:00", user_name]): resul["msg"] = "Error al crear el registro diario" return resul idc_diario = qsatype.FLUtil().quickSqlSelect( "gt_controldiario", "idc_diario", "idusuario = '{}' AND fecha = '{}'".format( user_name, oParam["fecha"])) url = '/gesttare/gt_controlhorario/newRecord?p_idc_diario=' + str( idc_diario) + '&p_idusuario=' + str(user_name) resul["url"] = url else: resul[ 'msg'] = "Debes indicar una fecha para crear registro de tiempo" return resul
def gesttare_drawif_desbloquear(self, cursor): if cursor.valueBuffer("validado"): return True if qsatype.FLUtil.nameUser() != str(cursor.valueBuffer("idusuario")): return "hidden" if qsatype.FLUtil().quickSqlSelect( "gt_controlhorario", "idc_horario", "idc_diario = {} AND horafin IS NULL".format( cursor.valueBuffer("idc_diario"))): return "hidden" return "hidden"
def gesttare_drawif_borrarButton(self, cursor): if cursor.valueBuffer("validado"): return "hidden" if qsatype.FLUtil.nameUser() != str(cursor.valueBuffer("idusuario")): return "disabled" # if not cursor.valueBuffer("horasextra"): # return "disabled" if qsatype.FLUtil().quickSqlSelect( "gt_controlhorario", "idc_horario", "idc_diario = {} AND horafin IS NULL".format( cursor.valueBuffer("idc_diario"))): return "hidden"
def gesttare_drawIfstartControl(self, cursor): usuario = qsatype.FLUtil.nameUser() # idcompany = qsatype.FLUtil.quickSqlSelect("aqn_user", "idcompany", "idusuario = '{}'".format(usuario)) # tengomodulo = qsatype.FLUtil.quickSqlSelect("aqn_modulescompanies", "id", "idcompany = '{}'".format(idcompany)) idc_horario = qsatype.FLUtil().quickSqlSelect( "gt_controlhorario", "idc_horario", "idusuario = {} AND horafin IS NULL".format(usuario)) id_compania = qsatype.FLUtil.quickSqlSelect( "aqn_user", "idcompany", "idusuario = '{}'".format(usuario)) id_plan = qsatype.FLUtil.quickSqlSelect( "aqn_companies", "idplan", "idcompany = '{}'".format(id_compania)) or None # if not tengomodulo: # return "hidden" if idc_horario and id_plan != 1 and id_plan != 2 and id_plan != 5: return "hidden" return True
def gesttare_validar(self, model, oParam, cursor): if qsatype.FLUtil().quickSqlSelect( "gt_controlhorario", "idc_horario", "idc_diario = {} AND horafin IS NULL".format( cursor.valueBuffer("idc_diario"))): response = {} response["status"] = 1 response[ "msg"] = "No puedes validar el día si tienes un tramo activo" return response if "confirmacion" not in oParam: resul = {} if cursor.valueBuffer("horasextra"): if cursor.valueBuffer("horasordinarias" ) < flgesttare_def.iface.time_to_seconds( cursor.valueBuffer("horasextra")): resul["status"] = 1 resul[ "msg"] = "Las horas extraordinarias no pueden superar el total de tiempo" return resul resul['status'] = 2 horasextra = cursor.valueBuffer("horasextra") or "00:00:00" horasordinarias = cursor.valueBuffer( "horasordinariasstring") or "00:00:00" resul[ 'confirm'] = "Vas a validar el día con los siguientes datos: " + str( horasordinarias ) + " como tiempo de trabajo ordinario, y " + str( horasextra ) + " como tiempo de trabajo extraordinario. ¿Son correctos los datos?" return resul else: if cursor.valueBuffer("validado"): return True cursor.setValueBuffer("validado", True) if not cursor.commitBuffer(): return False resul = {} # resul['status'] = True resul["msg"] = "Día validado correctamente" return resul return True
def gesttare_validar_admin(self, model, oParam, cursor): if cursor.valueBuffer("validado_admin"): return True if "confirmacion" not in oParam: resul = {} if cursor.valueBuffer( "horasordinarias") < flgesttare_def.iface.time_to_seconds( cursor.valueBuffer("horasextra")): resul["status"] = 1 resul[ "msg"] = "Las horas extraordinarias no pueden superar el total de tiempo" return resul nombre = qsatype.FLUtil().quickSqlSelect( "aqn_user", "concat(nombre, ' ', apellidos)", "idusuario = {}".format(cursor.valueBuffer("idusuario"))) resul['status'] = 2 resul[ 'confirm'] = "Vas a validar el mes de " + nombre + " con los siguientes datos: " + str( cursor.valueBuffer("horasordinariasstring") ) + " como tiempo de trabajo ordinario, y " + str( cursor.valueBuffer("horasextra") ) + " como tiempo de trabajo extraordinario. ¿Son correctos los datos?" resul["msg"] = "Validado como responsable" return resul else: usuario = qsatype.FLUtil.nameUser() now = str(qsatype.Date()) fecha = now[:10] cursor.setValueBuffer("idadmin", usuario) cursor.setValueBuffer("validado_admin", True) cursor.setValueBuffer("idvalidador", usuario) cursor.setValueBuffer("fechavalidadoadmin", fecha) if not cursor.commitBuffer(): return False return True
def gesttare_iniciaValoresCursor(self, cursor=None): fechainicio = qsatype.FLUtil().quickSqlSelect( "gt_controldiario", "fecha", "idc_diario = '{}'".format(cursor.valueBuffer("idc_diario"))) cursor.setValueBuffer(u"fechafin", fechainicio) return True
def gesttare_drawif_horaeditable(self, cursor): if qsatype.FLUtil().quickSqlSelect( "gt_controldiario", "validado", "idc_diario = {}".format(cursor.valueBuffer("idc_diario"))): return "disabled"
def gesttare_start(self, model, oParam): user_name = qsatype.FLUtil.nameUser() # response = self.plan_compania(user_name) # if response: # return response tengopermiso = flgesttare_def.iface.compruebaPermisosPlan("start") if tengopermiso != True: return tengopermiso now = str(qsatype.Date()) fecha = now[:10] hora = now[-8:] curDiario = qsatype.FLSqlCursor(u"gt_controldiario") curDiario.select( ustr(u"fecha = '", fecha, u"' AND idusuario = '", user_name, "'")) if curDiario.next(): curHorario = qsatype.FLSqlCursor(u"gt_controlhorario") curHorario.select( ustr(u"idc_diario = '", curDiario.valueBuffer("idc_diario"), u"'")) while curHorario.next(): curHorario.setModeAccess(curHorario.Browse) curHorario.refreshBuffer() horaInicio = flgesttare_def.iface.time_to_seconds(hora) anteriorInicio = flgesttare_def.iface.time_to_seconds( (curHorario.valueBuffer("horainicio"))) anteriorFin = flgesttare_def.iface.time_to_seconds( (curHorario.valueBuffer("horafin"))) if (horaInicio > anteriorInicio and horaInicio < anteriorFin): resul = {} resul["status"] = 1 resul["msg"] = "Error ya existe un tramo en este horario" return resul mes = str(fecha).split("-")[1] anio = str(fecha).split("-")[0] response = {} response["resul"] = False response["msg"] = "" if qsatype.FLUtil().quickSqlSelect( "gt_controldiario", "validado", "fecha = '{}' AND idusuario = '{}'".format( now[:10], user_name)): # response["status"] = 1 # response["msg"] = "El día ya está validado. Debe desbloquear el día para iniciar tracking" # return response mes = str(fecha).split("-")[1] mesvalid = qsatype.FLUtil.sqlSelect("gt_controlmensual", "validado_user", "mes = '{}'".format(mes)) if mesvalid: resul = {} resul['status'] = 1 resul['msg'] = "Error. Debes desbloquear primero el mes" return resul if not oParam or "confirmacion" not in oParam: response['status'] = 2 response[ 'confirm'] = "El día está bloqueado. Vas a desbloquear el día" response["serverAction"] = "start" return response else: if not qsatype.FLSqlQuery().execSql( "UPDATE gt_controldiario set validado = {} WHERE fecha = '{}' AND idusuario = '{}'" .format(False, now[:10], user_name)): return False return self.iface.start(model, oParam) # curDiario = qsatype.FLSqlCursor(u"gt_controldiario") # curDiario.setModeAccess(curDiario.Edit) # curDiario.refreshBuffer() # if not curDiario.valueBuffer("validado"): # return True # print("????????") # curDiario.setValueBuffer("validado", False) # if not curDiario.commitBuffer(): # return False return True if qsatype.FLUtil().quickSqlSelect( "gt_controlmensual", "validado_user", "mes = '{}' AND anyo = '{}' AND idusuario = '{}'".format( mes, anio, user_name)): response["status"] = 1 response["msg"] = "El mes ya esta validado por el usuario" return response if qsatype.FLUtil().quickSqlSelect( "gt_controlhorario", "idc_horario", "idusuario = '{}' AND horafin IS NULL".format(user_name)): response["msg"] = "Ya existe un tramo iniciado" return response if not qsatype.FLUtil().sqlInsert( "gt_controlhorario", ["horainicio", "fechafin", "idusuario"], [hora, fecha, user_name]): response["msg"] = "Error al crear el registro horario" return response response["resul"] = True response["msg"] = "Control horario iniciado" return response
def gesttare_pause(self, model, oParam): response = {} now = str(qsatype.Date()) fecha = now[:10] hora = now[-8:] user_name = qsatype.FLUtil.nameUser() if oParam and "confirmacion" in oParam: # return False if not qsatype.FLUtil().sqlUpdate( "gt_controlhorario", ["horafin", "fechafin"], [hora, fecha], "idusuario = '{}' AND horafin IS NULL".format(user_name)): response["msg"] = "Error al actualizar el registro horario" return response response["resul"] = True response["msg"] = "Control horario iniciado" return True response["resul"] = False response["msg"] = "" horainicio = qsatype.FLUtil().quickSqlSelect( "gt_controlhorario", "horainicio", "idusuario = '{}' AND horafin IS NULL".format(user_name)) idcdiario = qsatype.FLUtil().quickSqlSelect( "gt_controlhorario", "idc_diario", "idusuario = '{}' AND horafin IS NULL".format(user_name)) idchorario = qsatype.FLUtil().quickSqlSelect( "gt_controlhorario", "idc_horario", "idusuario = '{}' AND horafin IS NULL".format(user_name)) if not idcdiario: response["msg"] = "No existe un tramo iniciado" return response fechaAnterior = qsatype.FLUtil().quickSqlSelect( "gt_controldiario", "fecha", "idc_diario = '{}'".format(idcdiario)) if qsatype.Date(str(fechaAnterior)) < qsatype.Date(fecha): diferencia = (qsatype.Date(fecha) - qsatype.Date(str(fechaAnterior))) dias = 24 * diferencia.days resta = ( flgesttare_def.iface.time_to_seconds(str(dias) + ":00:00") - flgesttare_def.iface.time_to_seconds(horainicio) ) + flgesttare_def.iface.time_to_seconds(hora) else: resta = flgesttare_def.iface.time_to_seconds( hora) - flgesttare_def.iface.time_to_seconds(horainicio) totalHoras = flgesttare_def.iface.seconds_to_time(resta, all_in_hours=True) if int(flgesttare_def.iface.time_to_hours(totalHoras)) > 12: response["status"] = 2 response[ "confirm"] = "El tiempo registrado en este intervalo es de " + str( totalHoras) + " ¿Es correcto?" response["serverAction"] = "pause" response["goto"] = { "nombre": "Editar", "url": "/gesttare/gt_controlhorario/" + str(idchorario) } return response # .seconds_to_time(tiempototal.total_seconds(), all_in_hours=True) # return False if not qsatype.FLUtil().sqlUpdate( "gt_controlhorario", ["horafin", "fechafin"], [hora, fecha], "idusuario = '{}' AND horafin IS NULL".format(user_name)): response["msg"] = "Error al actualizar el registro horario" return response response["resul"] = True response["msg"] = "Control horario detenido" return response