Exemple #1
0
    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
Exemple #2
0
 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
Exemple #3
0
    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"
Exemple #4
0
    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
Exemple #5
0
    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"
Exemple #6
0
    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"
Exemple #7
0
 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
Exemple #8
0
    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
Exemple #9
0
    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
Exemple #10
0
 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
Exemple #11
0
 def gesttare_drawif_horaeditable(self, cursor):
     if qsatype.FLUtil().quickSqlSelect(
             "gt_controldiario", "validado",
             "idc_diario = {}".format(cursor.valueBuffer("idc_diario"))):
         return "disabled"
Exemple #12
0
    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
Exemple #13
0
    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