\r\n \r\n \r\n \r\n {{ $vuetify.icons.values.calendar }}\r\n \r\n Fijado {{ ffijada|shortDateTime }}\r\n \r\n \r\n \r\n {{ $vuetify.icons.values.phone }}\r\n \r\n Avisar antes de ir\r\n \r\n \r\n \r\n {{ $vuetify.icons.values.manoDeObra }}\r\n \r\n Mano de obra NO facturable\r\n \r\n \r\n \r\n {{ $vuetify.icons.values.desplazamiento }}\r\n \r\n Desplazamiento NO facturable\r\n \r\n \r\n \r\n {{ $vuetify.icons.values.motivoBloqueo }}\r\n \r\n {{ tmotivoBloqueo.descripcion }}\r\n \r\n 0\"\r\n class=\"ml-1 mt-1\"\r\n small\r\n color=\"success\"\r\n label\r\n >\r\n \r\n {{ $vuetify.icons.values.accionMaterial }}\r\n \r\n {{ cantAccionesRealizadas }} de {{ cantAccionesTotal }} acciones realizadas\r\n \r\n 0\"\r\n class=\"ml-1 mt-1\"\r\n small\r\n :color=\"proximaRevision.color\"\r\n label\r\n >\r\n \r\n {{ $vuetify.icons.values.revision }}\r\n \r\n {{ proximaRevision.tactuacion.descripcion }} ({{ proximaRevision.periodo_revision.descripcion }}) - {{ proximaRevision.sistema_mant.fplanificacion|shortDate }}\r\n \r\n 0\"\r\n class=\"ml-1 mt-1 align-items-center\"\r\n small\r\n color=\"info\"\r\n label\r\n @click=\"clickChip('notas')\"\r\n >\r\n \r\n {{ $vuetify.icons.values.nota }}\r\n \r\n Con notas\r\n \r\n
\r\n\r\n\r\n\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExtraSubtitle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExtraSubtitle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ExtraSubtitle.vue?vue&type=template&id=7dbc1040&\"\nimport script from \"./ExtraSubtitle.vue?vue&type=script&lang=js&\"\nexport * from \"./ExtraSubtitle.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VChip,VIcon})\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar String = global.String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar un$ToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar multiply = function (data, n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\n\nvar divide = function (data, n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\n\nvar dataToString = function (data) {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = String(data[index]);\n s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n }\n } return s;\n};\n\nvar FORCED = fails(function () {\n return un$ToFixed(0.00008, 3) !== '0.000' ||\n un$ToFixed(0.9, 0) !== '1' ||\n un$ToFixed(1.255, 2) !== '1.25' ||\n un$ToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n // V8 ~ Android 4.3-\n un$ToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toIntegerOrInfinity(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(data, 0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(data, 1e7, 0);\n j -= 7;\n }\n multiply(data, pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(data, 1 << 23);\n j -= 23;\n }\n divide(data, 1 << j);\n multiply(data, 1, 1);\n divide(data, 2);\n result = dataToString(data);\n } else {\n multiply(data, 0, z);\n multiply(data, 1 << -e, 0);\n result = dataToString(data) + repeat('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat('0', fractDigits - k) + result\n : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b10-base',[_c('b10-toolbar',{attrs:{\"title\":_vm.title,\"options\":_vm.toolbarOptions},on:{\"click-option\":_vm.clickToolbarOption}}),_c('b10-page-content',[_c('b10-view-summary',{attrs:{\"item\":_vm.formattedItem,\"showing\":_vm.showingDialogs.moreInfo,\"loading-data\":_vm.loadingData,\"list-item-lines\":3,\"show-alerts\":!_vm.routeFromBrowserHistory},on:{\"update:showing\":function($event){return _vm.$set(_vm.showingDialogs, \"moreInfo\", $event)},\"click-row\":_vm.clickSummaryRow}},[_c('template',{slot:\"extraSubtitle\"},[(_vm.formattedItem.parte_trabajo)?_c('extra-subtitle',{attrs:{\"ffijada\":_vm.formattedItem.parte_trabajo.ffijada,\"avisar-antes-ir\":_vm.formattedItem.parte_trabajo.avisar_antes_ir,\"mano-de-obra-facturable\":_vm.formattedItem.parte_trabajo.manodeobrafacturable,\"idtfacturacion-kilometros\":_vm.formattedItem.parte_trabajo.idtfacturacion_kilometros,\"cant-acciones-realizadas\":_vm.formattedItem.cantAccionesRealizadas,\"cant-acciones-total\":_vm.formattedItem.cantAccionesTotal,\"tmotivo-bloqueo\":_vm.formattedItem.tmotivo_bloqueo_ot,\"proximas-revisiones\":_vm.formattedItem.proximasRevisiones,\"cantidad-notas\":_vm.cantidadNotas},on:{\"click-chip\":_vm.clickChip}}):_vm._e()],1)],2),_c('b10-view-details',{attrs:{\"details\":_vm.details},on:{\"click-detail\":_vm.clickDetail}}),_c('b10-bottom-navigation',{attrs:{\"buttons\":_vm.bottomNavBarButtons},on:{\"click-bottom-nav-bar-button\":_vm.clickBottomNavBarButton}}),_c('buscar-material-afectado',{attrs:{\"showing\":_vm.showingDialogs.buscarMaterialAfectado,\"idparte-trabajo\":_vm.routeParams.idparte_trabajo},on:{\"update:showing\":function($event){return _vm.$set(_vm.showingDialogs, \"buscarMaterialAfectado\", $event)},\"click-buscar-avanzado\":_vm.clickBuscarMaterialAvanzado}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default () => {\r\n return {\r\n checklist: {\r\n title: 'Ir al checklist',\r\n visible: true,\r\n },\r\n sistema: {\r\n title: 'Ir al sistema',\r\n visible: true,\r\n },\r\n irOrden: {\r\n title: 'Ir a la orden de trabajo',\r\n visible: false,\r\n },\r\n parteNuevo: {\r\n title: 'Crear un parte sobre este sistema',\r\n visible: false,\r\n icon: 'add'\r\n },\r\n map: {\r\n title: 'Ver en el mapa',\r\n visible: true,\r\n icon: 'map',\r\n },\r\n addMovimientoCaja: {\r\n title: 'Añadir movimiento de caja',\r\n visible: false,\r\n icon: 'movimientoCaja',\r\n },\r\n geolocalizar: {\r\n title: 'Capturar geolocalización actual',\r\n visible: true,\r\n icon: 'mapLocation',\r\n },\r\n modificar: {\r\n title: 'Modificar',\r\n visible: true,\r\n icon: 'edit',\r\n },\r\n iniciarCrono: {\r\n title: 'Iniciar cronómetro',\r\n visible: true,\r\n icon: 'cronometro',\r\n },\r\n detenerCrono: {\r\n title: 'Detener cronónometro',\r\n visible: true,\r\n icon: 'cronometro',\r\n },\r\n marcarTodoCorrecto: {\r\n title: 'Marcar todo correcto',\r\n visible: true,\r\n icon: 'checkAll'\r\n },\r\n finalizar: {\r\n title: 'Finalizar',\r\n visible: true,\r\n icon: 'finalizar',\r\n },\r\n reabrirParte: {\r\n title: 'Reabrir parte',\r\n visible: true,\r\n icon: 'undo',\r\n },\r\n resumenYFirma: {\r\n title: 'Resumen y firma',\r\n visible: true,\r\n icon: 'signature',\r\n },\r\n subirParte: {\r\n title: 'Subir parte',\r\n visible: true,\r\n icon: 'upload',\r\n },\r\n subirParteSinFinalizar: {\r\n title: 'Subir parte sin finalizar',\r\n visible: true,\r\n icon: 'upload',\r\n },\r\n volverADescargar: {\r\n title: 'Volver a descargar',\r\n visible: true,\r\n icon: 'download',\r\n },\r\n }\r\n}\r\n","import { TABLA } from '@/utils/consts'\r\nimport _ from '@/utils/lodash'\r\n\r\nexport default {\r\n async _addSubqueriesParteTrabajo (Vue, rows) {\r\n for (let row of rows) {\r\n row.emails = await Vue.$offline.sistemaTelefono.selectConSAT(row.sistema.idsistema)\r\n row.direccion = await Vue.$offline.clienteDireccion.formatearDireccion(row.cliente_direccion)\r\n row.cantAccionesRealizadas = (\r\n await Vue.$offline.parteTrabajo.selectCantAccionesRealizadas(row.parte_trabajo.idparte_trabajo)\r\n )[0].cant_acciones_realizadas\r\n row.cantAccionesTotal = (\r\n await Vue.$offline.parteTrabajo.selectCantAccionesTotal(row.parte_trabajo.idparte_trabajo)\r\n )[0].cant_acciones_total\r\n row.proximasRevisiones = await Vue.$offline.sistemaMant.selectProximasRevisiones(row.sistema.idsistema)\r\n }\r\n return rows\r\n },\r\n async selectParteTrabajo (Vue, idparteTrabajo) {\r\n const tables = Vue.$offline.db.tables\r\n const rows = await Vue.$offline.db\r\n .select()\r\n .from(tables.parte_trabajo)\r\n .innerJoin(\r\n tables.orden_trabajo,\r\n tables.parte_trabajo.idorden_trabajo.eq(tables.orden_trabajo.idorden_trabajo)\r\n )\r\n .innerJoin(\r\n tables.sistema,\r\n tables.orden_trabajo.idsistema.eq(tables.sistema.idsistema)\r\n )\r\n .innerJoin(\r\n tables.cliente,\r\n tables.sistema.idcliente.eq(tables.cliente.idcliente)\r\n )\r\n .leftOuterJoin(\r\n tables.cliente_direccion,\r\n tables.sistema.idcliente_direccion_sist.eq(tables.cliente_direccion.idcliente_direccion)\r\n )\r\n .innerJoin(\r\n tables.tsistema,\r\n tables.sistema.idtsistema.eq(tables.tsistema.idtsistema)\r\n )\r\n .innerJoin(\r\n tables.tactuacion_tsistema,\r\n tables.orden_trabajo.idtactuacion_tsistema.eq(tables.tactuacion_tsistema.idtactuacion_tsistema)\r\n )\r\n .innerJoin(\r\n tables.tactuacion,\r\n tables.tactuacion_tsistema.idtactuacion.eq(tables.tactuacion.idtactuacion)\r\n )\r\n .innerJoin(\r\n tables.orden_trabajo_prioridad,\r\n tables.orden_trabajo.idorden_trabajo_prioridad.eq(tables.orden_trabajo_prioridad.idorden_trabajo_prioridad)\r\n )\r\n .leftOuterJoin(\r\n tables.almacen,\r\n tables.parte_trabajo.idalmacen.eq(tables.almacen.idalmacen)\r\n )\r\n .innerJoin(\r\n tables.forma_pago,\r\n tables.orden_trabajo.idforma_pago.eq(tables.forma_pago.idforma_pago)\r\n )\r\n .leftOuterJoin(\r\n tables.tincidencia_ot,\r\n tables.orden_trabajo.idtincidencia_ot.eq(tables.tincidencia_ot.idtincidencia_ot)\r\n )\r\n .leftOuterJoin(\r\n tables.tcierre_parte,\r\n tables.parte_trabajo.idtcierre_parte.eq(tables.tcierre_parte.idtcierre_parte)\r\n )\r\n .leftOuterJoin(\r\n tables.zona,\r\n tables.cliente_direccion.idzona_tecnico.eq(tables.zona.idzona)\r\n )\r\n .leftOuterJoin(\r\n tables.checklist_ot,\r\n tables.orden_trabajo.idorden_trabajo.eq(tables.checklist_ot.idorden_trabajo)\r\n )\r\n .leftOuterJoin(\r\n tables.tmotivo_bloqueo_ot,\r\n tables.orden_trabajo.idtmotivo_bloqueo_ot.eq(tables.tmotivo_bloqueo_ot.idtmotivo_bloqueo_ot)\r\n )\r\n .where(tables.parte_trabajo.idparte_trabajo.eq(idparteTrabajo))\r\n .exec()\r\n return (await this._addSubqueriesParteTrabajo(Vue, rows))[0]\r\n },\r\n async selectMaterialAfectadoCount (Vue, idparteTrabajo) {\r\n const tables = Vue.$offline.db.tables\r\n return await Vue.$offline.db\r\n .select(\r\n tables.subsis.idsubsis,\r\n tables.subsis.descripcion,\r\n Vue.$offline.db.fn.sum(tables.material_sistema.unidades).as('count'),\r\n )\r\n .from(tables.parte_trabajo_matsist)\r\n .innerJoin(\r\n tables.orden_trabajo_matsist,\r\n tables.parte_trabajo_matsist.idorden_trabajo_matsist.eq(tables.orden_trabajo_matsist.idorden_trabajo_matsist)\r\n )\r\n .innerJoin(\r\n tables.material_sistema,\r\n tables.orden_trabajo_matsist.idmaterial_sistema.eq(tables.material_sistema.idmaterial_sistema)\r\n )\r\n .innerJoin(\r\n tables.subsis,\r\n tables.material_sistema.idsubsis.eq(tables.subsis.idsubsis)\r\n )\r\n .where(\r\n Vue.$offline.db.op.and(\r\n tables.parte_trabajo_matsist.idparte_trabajo.eq(idparteTrabajo),\r\n tables.parte_trabajo_matsist.estado.gt(0),\r\n )\r\n )\r\n .groupBy(\r\n tables.subsis.idsubsis,\r\n tables.subsis.descripcion,\r\n )\r\n .exec()\r\n },\r\n async selectMaterialRetiradoCount (Vue, idparteTrabajo) {\r\n const tables = Vue.$offline.db.tables\r\n return await Vue.$offline.db\r\n .select(\r\n tables.subsis.idsubsis,\r\n tables.subsis.descripcion,\r\n Vue.$offline.db.fn.sum(tables.material_sistema.unidades).as('count'),\r\n )\r\n .from(tables.parte_trabajo_matsist)\r\n .innerJoin(\r\n tables.orden_trabajo_matsist,\r\n tables.parte_trabajo_matsist.idorden_trabajo_matsist.eq(tables.orden_trabajo_matsist.idorden_trabajo_matsist)\r\n )\r\n .innerJoin(\r\n tables.material_sistema,\r\n tables.orden_trabajo_matsist.idmaterial_sistema.eq(tables.material_sistema.idmaterial_sistema)\r\n )\r\n .innerJoin(\r\n tables.subsis,\r\n tables.material_sistema.idsubsis.eq(tables.subsis.idsubsis)\r\n )\r\n .where(\r\n Vue.$offline.db.op.and(\r\n tables.parte_trabajo_matsist.idparte_trabajo.eq(idparteTrabajo),\r\n tables.parte_trabajo_matsist.estado.gt(0),\r\n tables.material_sistema.idalmacen.isNotNull(),\r\n )\r\n )\r\n .groupBy(\r\n tables.subsis.idsubsis,\r\n tables.subsis.descripcion,\r\n )\r\n .exec()\r\n },\r\n async selectSubsisCount (Vue, idparteTrabajo) {\r\n const tables = Vue.$offline.db.tables\r\n return await Vue.$offline.db\r\n .select(\r\n tables.orden_trabajo_subsis.idorden_trabajo_subsis,\r\n tables.subsis.idsubsis,\r\n tables.subsis.descripcion,\r\n )\r\n .from(tables.parte_trabajo)\r\n .innerJoin(\r\n tables.orden_trabajo_subsis,\r\n tables.parte_trabajo.idorden_trabajo.eq(tables.orden_trabajo_subsis.idorden_trabajo)\r\n )\r\n .innerJoin(\r\n tables.subsis,\r\n tables.orden_trabajo_subsis.idsubsis.eq(tables.subsis.idsubsis)\r\n )\r\n .where(\r\n Vue.$offline.db.op.and(\r\n tables.parte_trabajo.idparte_trabajo.eq(idparteTrabajo),\r\n tables.subsis.estado.gt(0),\r\n tables.orden_trabajo_subsis.estado.gt(0),\r\n )\r\n )\r\n .exec()\r\n },\r\n async selectRevisionesCount (Vue, idparteTrabajo) {\r\n const tables = Vue.$offline.db.tables\r\n return await Vue.$offline.db\r\n .select(\r\n tables.tactuacion.descripcion,\r\n tables.periodo_revision.descripcion,\r\n Vue.$offline.db.fn.count(tables.sistema_mant.idsistema_mant).as('count'),\r\n )\r\n .from(tables.parte_trabajo)\r\n .innerJoin(\r\n tables.orden_trabajo,\r\n tables.parte_trabajo.idorden_trabajo.eq(tables.orden_trabajo.idorden_trabajo)\r\n )\r\n .innerJoin(\r\n tables.sistema_mant,\r\n tables.orden_trabajo.idsistema.eq(tables.sistema_mant.idsistema)\r\n )\r\n .innerJoin(\r\n tables.tactuacion,\r\n tables.sistema_mant.idtactuacion.eq(tables.tactuacion.idtactuacion)\r\n )\r\n .innerJoin(\r\n tables.periodo_revision,\r\n tables.sistema_mant.idperiodo_revision.eq(tables.periodo_revision.idperiodo_revision)\r\n )\r\n .groupBy(\r\n tables.tactuacion.descripcion,\r\n tables.periodo_revision.descripcion,\r\n )\r\n .where(\r\n Vue.$offline.db.op.and(\r\n tables.parte_trabajo.idparte_trabajo.eq(idparteTrabajo),\r\n tables.sistema_mant.estado.gt(0),\r\n tables.sistema_mant.activar.eq(true),\r\n )\r\n )\r\n .exec()\r\n },\r\n async selectSistemaCuotaCount (Vue, idparteTrabajo) {\r\n const tables = Vue.$offline.db.tables\r\n const idConceptoCuotaDeMantenimiento = await Vue.$offline.conceptoCuotaTservicio.idConceptoCuotaDeMantenimiento()\r\n return await Vue.$offline.db\r\n .select(\r\n tables.sistema_cuota.idsistema_cuota,\r\n tables.concepto_cuota.descripcion_cuota,\r\n )\r\n .from(tables.parte_trabajo)\r\n .innerJoin(\r\n tables.orden_trabajo,\r\n tables.parte_trabajo.idorden_trabajo.eq(tables.orden_trabajo.idorden_trabajo)\r\n )\r\n .innerJoin(\r\n tables.sistema_cuota,\r\n tables.orden_trabajo.idsistema.eq(tables.sistema_cuota.idsistema)\r\n )\r\n .innerJoin(\r\n tables.concepto_cuota,\r\n tables.sistema_cuota.idconcepto_cuota.eq(tables.concepto_cuota.idconcepto_cuota)\r\n )\r\n .where(\r\n Vue.$offline.db.op.and(\r\n tables.parte_trabajo.idparte_trabajo.eq(idparteTrabajo),\r\n tables.sistema_cuota.estado.gt(0),\r\n tables.sistema_cuota.idconcepto_cuota.in(idConceptoCuotaDeMantenimiento),\r\n )\r\n )\r\n .exec()\r\n },\r\n async selectMaterialInstalarCount (Vue, idparteTrabajo) {\r\n const tables = Vue.$offline.db.tables\r\n return await Vue.$offline.db\r\n .select(\r\n tables.subsis.idsubsis,\r\n tables.subsis.descripcion,\r\n Vue.$offline.db.fn.sum(tables.lparte_trabajo.unidades).as('count'),\r\n )\r\n .from(tables.lparte_trabajo)\r\n .innerJoin(\r\n tables.subsis,\r\n tables.lparte_trabajo.idsubsis.eq(tables.subsis.idsubsis)\r\n )\r\n .where(\r\n Vue.$offline.db.op.and(\r\n tables.lparte_trabajo.idparte_trabajo.eq(idparteTrabajo),\r\n tables.lparte_trabajo.estado.gt(0),\r\n )\r\n )\r\n .groupBy(\r\n tables.subsis.idsubsis,\r\n tables.subsis.descripcion,\r\n )\r\n .exec()\r\n },\r\n async selectTiempoTrabajadoCount (Vue, idparteTrabajo) {\r\n const tables = Vue.$offline.db.tables\r\n const tiempos = await Vue.$offline.db\r\n .select()\r\n .from(tables.tiempo_trabajado)\r\n .innerJoin(\r\n tables.empleado,\r\n tables.tiempo_trabajado.idempleado.eq(tables.empleado.idempleado)\r\n )\r\n .where(\r\n Vue.$offline.db.op.and(\r\n tables.tiempo_trabajado.idparte_trabajo.eq(idparteTrabajo),\r\n tables.tiempo_trabajado.estado.gt(0),\r\n )\r\n )\r\n .exec()\r\n let tiempoManoObra = 0\r\n let tiempoDesplazamiento = 0\r\n for (const tiempo of tiempos) {\r\n if (tiempo.tiempo_trabajado.es_desplazamiento) {\r\n tiempoDesplazamiento += tiempo.tiempo_trabajado.ffin.getTime() - tiempo.tiempo_trabajado.finicio.getTime()\r\n } else {\r\n tiempoManoObra += tiempo.tiempo_trabajado.ffin.getTime() - tiempo.tiempo_trabajado.finicio.getTime()\r\n }\r\n }\r\n const countTiempos = (await Vue.$offline.db\r\n .select(\r\n Vue.$offline.db.fn.count(tables.tiempo_trabajado.idtiempo_trabajado).as('count')\r\n )\r\n .from(tables.tiempo_trabajado)\r\n .where(\r\n Vue.$offline.db.op.and(\r\n tables.tiempo_trabajado.idparte_trabajo.eq(idparteTrabajo),\r\n tables.tiempo_trabajado.estado.gt(0),\r\n )\r\n )\r\n .exec())[0]\r\n return {\r\n count: countTiempos.count,\r\n tiempoManoObra,\r\n tiempoDesplazamiento,\r\n }\r\n },\r\n selectTecnicosAsignadosCount (Vue, idparteTrabajo) {\r\n const tables = Vue.$offline.db.tables\r\n return Vue.$offline.db\r\n .select()\r\n .from(tables.parte_trabajo_tecnico)\r\n .innerJoin(\r\n tables.tecnico,\r\n tables.parte_trabajo_tecnico.idtecnico.eq(tables.tecnico.idtecnico)\r\n )\r\n .innerJoin(\r\n tables.empleado,\r\n tables.tecnico.idempleado.eq(tables.empleado.idempleado)\r\n )\r\n .where(\r\n Vue.$offline.db.op.and(\r\n tables.parte_trabajo_tecnico.idparte_trabajo.eq(idparteTrabajo),\r\n )\r\n )\r\n .exec()\r\n },\r\n async selectPersonasContactoCount (Vue, idsistema) {\r\n return await Vue.$offline.sistemaTelefono.selectContactosDelSistema(idsistema)\r\n },\r\n async selectFicherosCount (Vue, idparteTrabajo, idordenTrabajo, idsistema) {\r\n const tables = Vue.$offline.db.tables\r\n return (await Vue.$offline.db\r\n .select(Vue.$offline.db.fn.count(tables.fichero.idfichero).as('count'))\r\n .from(tables.fichero)\r\n .where(\r\n Vue.$offline.db.op.or(\r\n Vue.$offline.db.op.and(\r\n tables.fichero.idtabla.eq(TABLA.parte_trabajo.idtabla),\r\n tables.fichero.id.eq(idparteTrabajo),\r\n ),\r\n Vue.$offline.db.op.and(\r\n tables.fichero.idtabla.eq(TABLA.orden_trabajo.idtabla),\r\n tables.fichero.id.eq(idordenTrabajo),\r\n ),\r\n Vue.$offline.db.op.and(\r\n tables.fichero.idtabla.eq(TABLA.sistema.idtabla),\r\n tables.fichero.id.eq(idsistema),\r\n ),\r\n )\r\n )\r\n .exec())[0]\r\n },\r\n async selectSolicitudMaterialCount (Vue, idparteTrabajo) {\r\n const tables = Vue.$offline.db.tables\r\n return (await Vue.$offline.db\r\n .select(Vue.$offline.db.fn.count(tables.solicitud_material.idsolicitud_material).as('count'))\r\n .from(tables.solicitud_material)\r\n .where(\r\n Vue.$offline.db.op.and(\r\n tables.solicitud_material.idparte_trabajo.eq(idparteTrabajo),\r\n tables.solicitud_material.estado.gt(0),\r\n )\r\n )\r\n .exec())[0]\r\n },\r\n async reabrirParte (Vue, idparteTrabajo) {\r\n await Vue.$offline.parteTrabajo.reabrirParte(idparteTrabajo)\r\n },\r\n async geolocalizar (Vue, idclienteDireccion, latitud, longitud) {\r\n await Vue.$offline.clienteDireccion.updateSync({\r\n idcliente_direccion: idclienteDireccion,\r\n latitud,\r\n longitud,\r\n })\r\n },\r\n async selectNserieFaltantes (Vue, idparteTrabajo) {\r\n const tables = Vue.$offline.db.tables\r\n const nserieFaltantes = await Vue.$offline.db\r\n .select(\r\n tables.lparte_trabajo.idlparte_trabajo\r\n )\r\n .from(tables.lparte_trabajo)\r\n .innerJoin(\r\n tables.articulo,\r\n tables.lparte_trabajo.idarticulo.eq(tables.articulo.idarticulo)\r\n )\r\n .where(\r\n Vue.$offline.db.op.and(\r\n tables.lparte_trabajo.idparte_trabajo.eq(idparteTrabajo),\r\n tables.lparte_trabajo.nserie.isNull(),\r\n tables.articulo.nserie_obligado.eq(true),\r\n )\r\n )\r\n .exec()\r\n return _.map(nserieFaltantes, 'lparte_trabajo.idlparte_trabajo')\r\n },\r\n async selectNotasCount(Vue, idparteTrabajo, idordenTrabajo) {\r\n const tables = Vue.$offline.db.tables\r\n return (await Vue.$offline.db\r\n .select(Vue.$offline.db.fn.count(tables.solicitud_material.idsolicitud_material).as('count'))\r\n .from(tables.nota)\r\n .where(\r\n Vue.$offline.db.op.or(\r\n Vue.$offline.db.op.and(\r\n tables.nota.identificador.eq(idparteTrabajo),\r\n tables.nota.idtabla.eq(TABLA.parte_trabajo.idtabla)\r\n ),\r\n Vue.$offline.db.op.and(\r\n tables.nota.identificador.eq(idordenTrabajo),\r\n tables.nota.idtabla.eq(TABLA.orden_trabajo.idtabla)\r\n )\r\n )\r\n )\r\n .exec())[0]\r\n\r\n },\r\n async descargadoPorOtroTecnico(Vue, idparteTrabajo, idtecnico) {\r\n // Llama a la API porque comprueba antes que esté online en\r\n const resp = await Vue.$api.call('parteTrabajo.descargado_por_otro_tecnico', {\r\n idparte_trabajo: idparteTrabajo,\r\n idtecnico: idtecnico,\r\n })\r\n return resp.data.result\r\n },\r\n}\r\n","