{"version":3,"sources":["store.js","action/actionCreatorsRequests.js","history.js","librerias/funciones.js","action/actionCreators.js","components/FichaPerfil.jsx","components/FichaSeleccionVehiculo.jsx","components/VisorGenerico.jsx","components/FichaBoletines.jsx","components/FichaTutorial.jsx","components/FichaHaynes.jsx","pages/MasterPage.js","components/FichaVehiculoTecdoc.jsx","components/FichaDetalleVehiculo.jsx","components/FichaTarea.jsx","components/FichaInfoConsulta.jsx","components/FichaFeedback.jsx","components/FichaPublicidadAssist.jsx","components/ContainerTareas.jsx","components/Login.jsx","index.js"],"names":["createStore","state","action","type","usuario","QUERY_USER","configApp","width","height","idiomaActual","visualizacionDescuento","visualizacionFiltro","visualizacionGrafico","applyMiddleware","store","next","window","location","hostname","console","log","result","getState","thunk","endpoint1","controller","AbortController","LoginEnAPI","USUARIO","PWD","fetch","method","signal","headers","body","JSON","stringify","dataType","then","res","json","catch","error","undefined","obtener_fabricantesEnAPI","TIPO_VEHICULO","Token","obtenerToken","OK","MSGERROR","MENSAJE_ERROR","obtener_modelosEnAPI","FABRICNATE","FABRICANTE","obtener_motorizacionesEnAPI","ID_MODELO","buscar_matriculaEnAPI","MATRICULA","PAIS","obtener_vehiculoEnAPI","ID_VEHICULO","obtener_imagen_vehiculoEnAPI","HEYNES_TOKEN","HEYNES_DIST_TOKEN","ID_VEHICULO_TECDOC","actualizar_usuario_EnAPI","PAYLOAD","ID_IDIOMA","CORREO_RECUPERACION_PWD","OBSERVACIONES","obtener_tarea_EnAPI","ID","obtener_conectorEnAPI","CODIGO_MOTOR","END_POINT_ACTUAL","history","dynamicSortDesc","property","sortOrder","substr","a","b","dynamicSortAsc","TOKEN","warningCliente","texto","alertify","set","warning","setTimeout","push","dispatch","updateStateMasterPage","posicion","abort","trim","Modal","centered","okText","traducirPagina","toUpperCase","okType","pathname","content","className","MSGOK","success","id","idioma","retorno","Object","keys","length","IDIOMA","txt_esp","textos","find","r","txt_por","txt_fra","txt_ale","txt_ita","txt_ing","value","verificarMatricula","matricula","esOk","RegExp","test","getTwoDigits","obtenerFechaLocalObjeto","esMesAnterior","date","Date","getDate","getMonth","getFullYear","descargarDocPasandoBase64Generico","base64String","nombre","linkSource","downloadLink","document","createElement","fileName","href","download","click","recortarCadena","cadena","tamanyo","caracter","substring","ordenarTablaLocal","tipoFiltro","registros","campoAFiltrar","sort","obtenerLicenciaLocal","registro","ID_USUARIO","ID_TALLER","NOMBRE_TALLER","RAZON_TALLER","ID_SOCIO","RAZON_SOCIO","ID_IDIOMA_TECDOC","CODIGO_IDIOMA","REGIONAL_IDIOMA","BAJA","verificarExtension","EXTENSION","resultado","ID_TIPO","TIPO","ES_EXTENSION_PERMITIDA","generateUUID","d","getTime","replace","c","Math","random","floor","toString","construirFecha","codigoMes","Anio","condiciones","fechaLocal","crearFecha","DESDE","HASTA","DIA","obtenerIdioma","pais","convertirTextoBastidor","BASTIDOR","MODIFICAR_VISTA","changeDimensionsApp","estado","showmasterpage","TabPane","Select","Option","Tabs","connect","Checkbox","Group","props","ORDERCOLUM","ORDERDIR","React","useState","textoIdioma","setTextoIdioma","hayCliente","setHayCliente","tabPorDefecto","setTabPorDefecto","idiomasLocal","setIdiomasLocal","passwordUsuario","setPasswordUsuario","NOMBRE","PWD_OLD","PWD_NEW","payLoadLocal","setPayLoadLocal","ABRIR_FICHA","REGISTROS","idiomas","modificarUsuario","modificarContraseña","CERRAR_FICHA","permitirGuardarContraseña","verificarNuevaContraseña","guardarEstadoFormulario","e","target","name","onClose","closable","visible","placement","bodyStyle","padding","style","color","textAlign","aria-label","border","margin","borderRadius","onClick","verticalAlign","viewBox","focusable","data-icon","fill","aria-hidden","fontSize","paddingLeft","title","marginTop","defaultActiveKey","activeKey","onChange","tab","key","overflowY","overflowX","gutter","fontWeight","md","disabled","modificarIdioma","map","autoComplete","TextArea","rows","flexGrow","cursor","SaveOutlined","activeItemOuterTabs","setActiveItemOuterTabs","datosCochePorMatricula","DATOS_COCHE","zIndex","tabs","link","to","active","role","activeItem","backgroundColor","tabId","responsive","hover","IDENTIFICACION_VEHICULO","Matricula","toLowerCase","FECHA1ªMATRÍCULA","FECHAMATRÍCULA","MARCA","MERCADO","MODELO","MODELOGENÉRICO","NÚMERODETRANSMISIONES","PROCEDENCIA","PROVINCIAMATRÍCULA","SEGMENTO","DATOSTECNICOSDGT","CILINDRADA","CO2","COMBUSTIBLE","KW","PESOMAXIMO","PLAZAS","POTENCIAFISCAL","POTENCIAREALAPROX","TARA","VARIANTE","VERSION","FICHATECNICA","CARROCERIA","CAT_HOMOLOGACION","CLASIF_INDUSTRIA","CODIGOS_ECO","CONSUMO","CONTRASENA_HOLOMOGACION","DENOMINACION_COMERCIAL","DIST_ENTRE_EJES","ECO_INNOVA","MASA_MAX_CARGA","MASA_VEHICULO_SERVICIO","NIVEL_EMISIONES","NUM_PLAZAS_DE_PIE","REDUCCION_ECO","RELACION_POTENCIA_PESO","TIPO_ALIMENTACION","VIA_ANTERIOR","VIA_POSTERIOR","VEHICULOS_TECDOC","row","i","VEHICULO_SELECCIONADO","MOTORIZACION","MOTORES","CV","CC","display","flexDirection","justifyContent","alignItems","minHeight","descarga","PROPIEDADES_DOC","TIPO_DOCUMENTO","ABRIR_VISOR","CERRAR_VISOR","CloseOutlined","TITULO","MOSTRAR_BOTON_DESCARGA","DownloadOutlined","marginLeft","URL","src","alt","lineHeight","controls","Search","Input","Panel","Collapse","HISTORIAL_VEHICULO","hayReferencias","setHayReferencias","txtMatricula","setTxtMatricula","marcas","setMarcas","modelos","setModelos","motores","setMotores","smartPack","setSmartPack","detalle","setObtenerDetalle","colapseSeleccionado","setColapseSeleccionado","fichaVehiculo","setFichaVehiculo","infoDGT","setInfoDGT","datosCoche","setDatosCoche","MOTOR","cocheSeleccionado","setCocheSeleccionado","abrirVisor","setabrirVisor","ficheroSeleccionado","setFicheroSeleccionado","limpiarCoche","obtenerSmartPack","motor","HEYNES_SMART_TOKEN","GRUPO","GetSmartPackEnAPI","BOLETINES","obtenerDetalles","ID_SISTEMA","TIPO_TBS","GetDetalleSmartPackEnAPI","DETALLE","vehiculoSeleccionado","coche","async","MOTOR_LOCAL","parseInt","ID_MARCA","modelo","fabricantes","placeholder","allowClear","size","enterButton","onSearch","showSearch","optionFilterProp","fabricante","buscarModelosAPI","filterOption","input","option","children","indexOf","marca","DESCRIPCION","index","SISTEMAS","accordion","isActive","CATEGORIA","bordered","subnodo","indice","header","FECHA","CalendarOutlined","CODIGOOE","tarea","listStyle","borderBottom","boletin","Texto","COMENTARIO","CODIGOEOBD","IMAGEN","TEXTO","FICHERO","EyeOutlined","marginRight","onOk","onCancel","footer","Bastidor","Carburante","FechaMatricula","Marca","Modelo","enlaceHaynes","setEnlaceHaynes","useEffect","haynes","REDIRECT_URL","frameBorder","allowtransparency","search","searchValue","clienteSeleccionado","activeItemReferencia","ABRIR_FICHA_BOLETINES","setABRIR_FICHA_BOLETINES","ABRIR_FICHA_HAYNES","setABRIR_FICHA_HAYNES","ABRIR_FICHA_PERFIL","setABRIR_FICHA_PERFIL","ABRIR_FICHA_TUTORIAL","setABRIR_FICHA_TUTORIAL","innerHeight","innerWidth","setDimensions","addEventListener","activeItemRegistro","double","expand","left","right","FilterOutlined","CON_HAYNES","ReadOutlined","nav","UserOutlined","SettingOutlined","open","BlockOutlined","VideoCameraOutlined","ExportOutlined","rel","DISENYO_ESPECIAL","CP_FABRICANTES","MARCAS","textoBuscador","palabraABuscar","palabra","resultadoFiltro","filter","item","includes","filtrarFabricante","listaMarca","objetoNuevoMarcas","contAux","modelarDatos","TXT_FILTRO","lista","float","POSICION_ACTUAL","DESCRIPCION_MARCA","BUSCAR_MODELOS_API","SET_HISTORIAL","SET_TXT_FILTRO","CP_MODELOS","MODELOS","filtarModelos","DESCRIPCION_MODELO","BUSCAR_MOTORIZACION_API","CP_MOTORIZACION","filtarMotores","DESCRIPCION_MOTOR","ID_MOTOR","ACTUALIZAR_VEHICULO","txtFiltro","setTxtFiltro","historialVehiculo","setHistorialVehiculo","SearchOutlined","vehiculo","setVehiculo","imagenVehiculo","setImagenVehiculo","codmotorizacion","REGISTRO","buscarVehiculoAPI","COD_MOTOR","buscarImagenVehiculoEnAPI","TRACCION","CATALIZADOR","CILINDROS","LITROS","PROCESO_COMBUSTION","SISTEMA_FRENADO","TCS","TIPO_FRENADO","TIPO_MOTOR","TRANSMISION","VALVULAS","ID_CONSULTA","setVisible","conector","setConector","seModificaBastidor","setSeModificaBastidor","paises","setPaises","configuracion","setConfiguracion","tipoTarea","setTipoTarea","grupoMontaje","setGrupoMontaje","cocheDGT","setCocheDGT","abrirSeleccionVehiculo","setAbrirSeleccionVehiculo","creandoTarea","setCreandoTarea","abrirModalInfoVeh","setAbrirModalInfoVeh","TIPO_TAREA","GRUPO_MONTAJE","CODIGO_MOTORES","ficherosTaller","setFicherosTaller","ficherosTecnico","setFicherosTecnico","setAbrirVisor","abrirFichaTecdoc","setAbrirFichaTecdoc","abrirFichaDetalleVeh","setAbrirFichaDetalleVeh","archivosLocal","setArchivosLocal","LOADER_MATRICULA","LOADER_BASTIDOR","loaderTarea","setLoaderTarea","obtenerConfig","config","ID_APP_CONFIGURACION","NOMBRE_PARAMETRO","VALOR","data","eliminarFichero","fichero","ID_MAE_PAIS_TAREA","MATRICULA_PAIS","MATRICULA_MARCA_ID","MATRICULA_MODELO_ID","MATRICULA_MOTOR_ID","MATRICULA_MARCA","MATRICULA_MODELO","MATRICULA_MOTOR","MATRICULA_CODIGO_MOTOR","ID_MAE_PLATAFORMA","ID_MAE_GRUPO_MONTAJE","ID_MAE_PRIORIDAD_TAREA","ID_MAE_TIPO_TAREA","CODIGO_AVERIA","TEXTO_RESPUESTA","ID_MAE_GRADO_SATISFACCION","RESOLUCION_DE_TAREAS","ID_MAE_ESTADO_TAREA","ID_USUARIO_ASIGNADO","ID_USUARIO_EN_CURSO","ID_USUARIO_RESPUESTA","NOMBRE_USUARIO_RESPUESTA","selectBefore","defaultValue","obtener_conector","obtenerCodigoMotores","RESULT_MOTORES","split","v","cocheSeleccionadoLocal","buscarMotorizacionAPI","LISTA_MOTORES","ObtenerFicherosAPI","ID_TAREA","obtener_registrosEnAPI","ARCHIVOS","ObtenerFicherosTallerAPI","obtener_registros_taller_EnAPI","limpiezaVehiculoTecdoc","busquedaPorMatricula","TXT_BUSQUEDA_COCHE","TIPO_BUSQUEDA","busquedaPorBastidor","buscar_bastidorEnAPI","ES_NUEVA_TAREA","buscarPaisesEnAPI","REGISTRO_SELECCIONADO","tipos","buscarConfiguracionEnAPI","COPIA_QUERY","VEHICULO","FK_ID_MAE_PAIS_TAREA","MATRICULA_CODIGO_PAIS","FK_ID_MAE_PLATAFORMA","FK_ID_MAE_GRUPO_MONTAJE","FK_ID_MAE_PRIORIDAD_TAREA","FK_ID_MAE_TIPO_TAREA","TEXTO_CONSULTA","FK_ID_MAE_GRADO_SATISFACCION","FK_ID_MAE_ESTADO_TAREA","FK_ID_USUARIO_ASIGNADO","FK_ID_USUARIO_EN_CURSO","FK_ID_USUARIO_RESPUESTA","visualizador","esTecnico","NOMBRE_IMAGEN","CONSTRUIR_URL","desacargarFichero","MODIFICAR_REGISTRO_CONSULTA","pointerEvents","opacity","loading","addonBefore","onBlur","compact","MOSTRAR_MESAJE","CONECTOR","comprobarConector","trigger","onVisibleChange","FileImageOutlined","grupo","tipo","PROPIEDADES_FICHERO","DeleteOutlined","htmlFor","PlusOutlined","accept","url","ext","lastIndexOf","existe_ext","TIPOS_ARCHIVOS","replaceAll","files","reader","FileReader","onload","STATUS","DATOS","TYPE","readAsDataURL","gestionarFicheroLocal","CloudDownloadOutlined","dangerouslySetInnerHTML","__html","copiarPayload","registroFicheros","DATOS_ENVIAR","Promise","all","ACTUALIZAR_TABLA","FILTROS","TAREAS_CERRADAS","FILTRO_FECHA","FECHA_PARTIDA","ACCION_DESDE","ACCION_HASTA","gestionarTarea","FichaDetalleVehiculo","hayDatos","setHayDatos","HTML_TAREA","overflow","abrirFichaInfoConsulta","setAbrirFichaInfoConsulta","htmlTarea","setHtmlTarea","GRADO_SASTISSFACION","TEXTO_GRADO","lista_grado","setLista_grado","cerrarFicha","setCerrarFicha","enviarComentarios","ID_GRADO","TEXTO_RESOLUCION","actualizar_feedbackEnAPI","DATOS_GRADO","GRADO","SELECCIONADO","GRADOS","documento_consutlaEnAPI","marginBottom","SendOutlined","DOCUMENTO_CONSULTA","enviarInformacion","SERVICIO","solicitud_informacion_servicioEnAPI","mensaje","Layout","Content","setID_GRADO_SAST","datosGrado","setDatosGrado","esNuevaTarea","setEsNuevaTarea","abrirFeedback","setAbrirFeedback","filtrosMovil","setFiltrosMovil","registroSeleccionado","setRegistroSeleccionado","hayLicencias","seHayLicencias","abirPublicidad","setAbirPublicidad","setTextoBuscador","USUARIO_TALLER_ALTA","FECHA_ALTA","NOMBRE_GRUPO_MONTAJE","NOMBRE_ESTADO","cabeceraTabla","setCabeceraTabla","licencias","setLicencias","licenciasAux","setLicenciasAux","iniPage","inicio","final","numPagina","datosPaginacion","setDatosPaginacion","abrirFichaTarea","setAbrirFichaTarea","mesesDelAnio","anios","setAnios","mesSeleccionado","setMesSeleccionado","anioSeleccionado","setAnioSeleccionado","ESTADO_TAREA","filtroSeleccionado","setFiltroSeleccionado","CAMBIO_DIA","CAMBIO_MES","CAMBIO_ANIO","CAMBIO_TODAS","filtroFecha","setFiltroFecha","permisoCrearConsulta","PERMITIR","PROHIBIR_CONSULTAS","hay_feedback_pendientes","filtrarDatosLocales","params","filtroLicencias","filtrarEnTabla","verificarLicencia","licenciasSertec","INCLUIR_BAJAS","INCLUIR_CERRADAS","ID_USUARIO_TALLER","REGSPAGE","PAGE","obtener_registros_paginadosEnAPI","actualizarCabeceraTabla","valor","List","memo","list","licencia","ListItem","anchuraActual","anchura","responsivedDescripcionTarea","CheckSquareOutlined","CloseSquareOutlined","HAY_FEEDBACK_CLIENTE","QuestionCircleOutlined","anyos","maximo","len","buscarAnyosAPI","MES","FECHA_INICIAL","ANIO","filtroConsultasCerradas","checked","filtroConsultasEstados","filtroConsultasFecha","anioActual","CODIGO_MES","TEXTO_MES","MES_PARAMETRO","ObtenerTextoMes","mes","anio","innerText","vistaConsultaWeb","ArrowUpOutlined","ArrowDownOutlined","boxShadown","visibility","showSizeChanger","current","onShowSizeChange","updateNumberPage","total","showTotal","defaultPageSize","page","pageSize","pInicio","paginarTabla","navigator","userAgent","MOADAL_ALERTAS_LOIN","COD_IDIOMA","LOGIN_VOLTAF","DIMENSIONS","GUARDAR_DATOS_FORM","onKeyPress","which","VERIFICA_USUARIO","CERRAR_MODAL","ABRIR_MODAL","afterClose","MODIFICAR_EMAIL_RECUPERACION","RECUPERAR_PWD","EMAIL_RECUPERACION","LOGIN_QTALLER","LOGIN_ASER","FLEX_FUEL","LOGIN_OPTIMA_CAR","ASSIST_FR","LOGIN_DEFAULT","LOGIN_ANDEL","background","emailRecuperacion","setEmailRecuperacion","cargarLogin","setCargarLogin","query","URLSearchParams","EMAIL","payloadLocal","setPayloadLocal","dimensions","verificarUsuario","USER","get","process","recuperarPWD","EMAIL_RECUP","CORREO","CORREO_ELECTRONICO","TIPO_LOGIN","onpopstate","event","path","ReactDOM","render","exact","component","Login","ContainerTareas","getElementById"],"mappings":"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","file":"static/js/main.78e48193.chunk.js","sourcesContent":["import { createStore, applyMiddleware } from 'redux';\r\nimport thunk from 'redux-thunk';\r\n\r\n\r\nconst reducer = (state, action) => {\r\n switch (action.type) {\r\n case \"SET_SESION_USER\":\r\n return {\r\n ...state,\r\n usuario: action.usuario,\r\n }\r\n\r\n case \"QUERY_USER\":\r\n return {\r\n ...state,\r\n QUERY_USER: action.QUERY_USER,\r\n }\r\n case \"CHANGE_DIMENSIONS_APP\":\r\n return {\r\n ...state,\r\n configApp: { ...state.configApp, width: action.width, height: action.height }\r\n }\r\n\r\n case \"UPDATE_IDIOMA_SERTEC\":\r\n return {\r\n ...state,\r\n idiomaActual: action.idiomaActual\r\n }\r\n }\r\n\r\n return state;\r\n};\r\n\r\n\r\n\r\nconst logger = store => next => action => {\r\n if (window.location.hostname === \"licencias.servicenext.eu\") {\r\n let result = next(action)\r\n return result;\r\n } else {\r\n console.log('dispatching', action)\r\n let result = next(action)\r\n console.log('next state', store.getState());\r\n return result;\r\n }\r\n}\r\n\r\n\r\nexport default createStore(reducer, {\r\n usuario: {},\r\n QUERY_USER: {},\r\n configApp: {\r\n width: 0,\r\n height: 0,\r\n visualizacionDescuento: true,\r\n visualizacionFiltro: true,\r\n visualizacionGrafico: true\r\n },\r\n idiomaActual: {}\r\n}, applyMiddleware(logger, thunk));\r\n","import { obtenerToken, MSGERROR } from '../librerias/funciones'\r\nimport store from '../store';\r\n\r\nconst endpoint1 = \"https://assist.servicenext.eu/API_TALLER/\"\r\n//const endpoint1 = \"http://86.109.106.108/API_NEXTASSIST_TALLER/\"\r\n//const endpoint2 = \"https://nextassist.serca.es/API/\"\r\n\r\n\r\nlet controller = new AbortController();\r\n\r\n\r\n/*\r\n\r\nconst buscarMatriculaCocheV2 = (matricula) => {\r\n return axios({\r\n method: 'GET',\r\n url: endpoint1 + \"api/TecnicoNextAssist/\" + matricula,\r\n }).then(function (res) {\r\n if (res.data !== undefined) {\r\n if (!res.data.OK) {\r\n MSGERROR(res.data.MENSAJE_ERROR)\r\n }\r\n return res.data\r\n }\r\n });\r\n}\r\n\r\n\r\n\r\nconst GetSmartPackEnAPI = (ID_VEHICULO) => {\r\n\r\n return axios({\r\n method: 'post',\r\n url: endpoint2 + \"api/Heynes/GetSmartPack\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n data: JSON.stringify({\r\n ID_VEHICULO: ID_VEHICULO,\r\n GRUPO: \"\"\r\n })\r\n }).then(function (res) {\r\n if (res.data !== undefined) {\r\n if (!res.data.OK) {\r\n MSGERROR(res.data.MENSAJE_ERROR)\r\n }\r\n return res.data\r\n }\r\n });\r\n}\r\n\r\n\r\n\r\n\r\n\r\nconst GetDetalleSmartPackEnAPI = (ID_SISTEMA, TIPO_TBS) => {\r\n return axios({\r\n method: 'post',\r\n url: endpoint2 + \"/api/Heynes/GetDetalleSmartPack\",\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n data: JSON.stringify({\r\n ID_SISTEMA: ID_SISTEMA,\r\n TIPO_TBS: TIPO_TBS\r\n })\r\n }).then(function (res) {\r\n if (res.data !== undefined) {\r\n if (!res.data.OK) {\r\n MSGERROR(res.data.MENSAJE_ERROR)\r\n }\r\n return res.data\r\n }\r\n });\r\n}\r\n*/\r\n\r\n\r\n\r\nconst LoginEnAPI = (USUARIO, PWD) => {\r\n // return fetch(endpoint1 + 'Accesos/Login', {\r\n //https://assist.servicenext.eu/test/Accesos/Login\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Accesos/Login', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n USUARIO: USUARIO,\r\n PWD: PWD\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n /*\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n */\r\n return res;\r\n }\r\n })\r\n}\r\n\r\n\r\nconst LogoutEnAPI = () => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Accesos/Logout', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res;\r\n }\r\n })\r\n}\r\n\r\n\r\nconst obtener_registros_paginadosEnAPI = (REGSPAGE, PAGE, ORDERCOLUM, ORDERDIR, INCLUIR_BAJAS, INCLUIR_CERRADAS, ID_TALLER, ID_USUARIO_TALLER, FECHA_PARTIDA, ACCION_DESDE, ACCION_HASTA) => {\r\n controller = new AbortController();\r\n // 'Tareas/obtener_registros_paginados'\r\n //return fetch(endpoint1 + 'Tareas/obtener_registros_paginados', {\r\n //https://assist.servicenext.eu/test/tareas/actualizar_feedback\r\n\r\n return fetch(endpoint1 + 'Tareas/obtener_registros_paginados', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n REGSPAGE: 0,\r\n PAGE: PAGE,\r\n ORDERCOLUM: ORDERCOLUM,\r\n ORDERDIR: ORDERDIR,\r\n //INCLUIR_BAJAS: INCLUIR_BAJAS, \r\n INCLUIR_CERRADAS: INCLUIR_CERRADAS,\r\n //ID_TALLER:ID_TALLER,\r\n //ID_USUARIO_TALLER:ID_USUARIO_TALLER,\r\n FECHA_PARTIDA: FECHA_PARTIDA,\r\n ACCION_DESDE: ACCION_DESDE,\r\n ACCION_HASTA: ACCION_HASTA,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res;\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\nconst obtener_fabricantesEnAPI = (TIPO_VEHICULO) => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'VehiculoTecdoc/obtener_fabricantes', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n TIPO_VEHICULO: TIPO_VEHICULO,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\nconst obtener_modelosEnAPI = (FABRICNATE) => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'VehiculoTecdoc/obtener_modelos', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n FABRICANTE: FABRICNATE,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\nconst obtener_motorizacionesEnAPI = (ID_MODELO) => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'VehiculoTecdoc/obtener_motorizaciones', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ID_MODELO: ID_MODELO,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst obtener_tipo_tareaEnAPI = () => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Maestras/obtener_tipo_tarea', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst obtener_grupo_montajeEnAPI = () => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Maestras/obtener_grupo_montaje', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst obtener_estados_tareaEnAPI = () => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Maestras/obtener_estados_tarea', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst obtener_paises_EnAPI = () => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Maestras/obtener_paises', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\nconst buscar_matriculaEnAPI = (MATRICULA, PAIS) => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Matriculas/buscar_matricula', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n MATRICULA: MATRICULA,\r\n PAIS: PAIS,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst buscar_bastidorEnAPI = (BASTIDOR, PAIS) => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Matriculas/buscar_bastidor', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n BASTIDOR: BASTIDOR,\r\n PAIS: PAIS,\r\n\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\nconst obtener_fichero_tecnico_EnAPI = (ID) => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Archivos/Tecnico/obtener', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ID: ID,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\nconst obtener_fichero_taller_EnAPI = (ID) => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Archivos/obtener', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ID: ID,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst obtener_registrosEnAPI = (ID_TAREA) => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Archivos/Tecnico/obtener_registros', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ID_TAREA: ID_TAREA,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst obtener_registros_taller_EnAPI = (ID_TAREA) => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Archivos/obtener_registros', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ID_TAREA: ID_TAREA,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst insertar_ficheroEnAPI = (ID_TAREA, NOMBRE, EXTENSION, DATOS) => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Archivos/insertar', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ID_TAREA: ID_TAREA,\r\n NOMBRE: NOMBRE,\r\n EXTENSION: EXTENSION,\r\n DATOS: DATOS,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst nueva_tareaEnAPI = (PAYLOAD) => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Tareas/nuevo', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ID_MAE_PAIS_TAREA: PAYLOAD.ID_MAE_PAIS_TAREA,\r\n ID_VEHICULO_TECDOC: PAYLOAD.ID_VEHICULO_TECDOC,\r\n MATRICULA_MARCA_ID: PAYLOAD.MATRICULA_MARCA_ID,\r\n MATRICULA_MODELO_ID: PAYLOAD.MATRICULA_MODELO_ID,\r\n MATRICULA_MOTOR_ID: PAYLOAD.MATRICULA_MOTOR_ID,\r\n BASTIDOR: PAYLOAD.BASTIDOR,\r\n MATRICULA: PAYLOAD.MATRICULA,\r\n MATRICULA_MARCA: PAYLOAD.MATRICULA_MARCA,\r\n MATRICULA_MODELO: PAYLOAD.MATRICULA_MODELO,\r\n MATRICULA_MOTOR: PAYLOAD.MATRICULA_MOTOR,\r\n MATRICULA_CODIGO_MOTOR: PAYLOAD.MATRICULA_CODIGO_MOTOR,\r\n MATRICULA_PAIS: PAYLOAD.MATRICULA_PAIS,\r\n ID_TALLER: PAYLOAD.ID_TALLER,\r\n ID_MAE_PLATAFORMA: PAYLOAD.ID_MAE_PLATAFORMA,\r\n ID_MAE_GRUPO_MONTAJE: PAYLOAD.ID_MAE_GRUPO_MONTAJE,\r\n ID_MAE_PRIORIDAD_TAREA: PAYLOAD.ID_MAE_PRIORIDAD_TAREA,\r\n ID_MAE_TIPO_TAREA: PAYLOAD.ID_MAE_TIPO_TAREA,\r\n TEXTO: PAYLOAD.TEXTO,\r\n CODIGO_AVERIA: PAYLOAD.CODIGO_AVERIA,\r\n TEXTO_RESPUESTA: PAYLOAD.TEXTO_RESPUESTA,\r\n ID_MAE_GRADO_SATISFACCION: PAYLOAD.ID_MAE_GRADO_SATISFACCION,\r\n RESOLUCION_DE_TAREAS: PAYLOAD.RESOLUCION_DE_TAREAS,\r\n ID_MAE_ESTADO_TAREA: PAYLOAD.ID_MAE_ESTADO_TAREA,\r\n ID_USUARIO_ASIGNADO: PAYLOAD.ID_USUARIO_ASIGNADO,\r\n ID_USUARIO_EN_CURSO: PAYLOAD.ID_USUARIO_EN_CURSO,\r\n ID_USUARIO_RESPUESTA: PAYLOAD.ID_USUARIO_RESPUESTA,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\nconst GetSmartPackEnAPI = (ID_VEHICULO_TECDOC) => {\r\n controller = new AbortController();\r\n let HEYNES_TOKEN = store.getState().usuario.HEYNES_SMART_TOKEN;\r\n\r\n return fetch(endpoint1 + 'Heynes/obtener_boletines_reparacion', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n ID_VEHICULO_TECDOC: ID_VEHICULO_TECDOC,\r\n GRUPO: \"\",\r\n HEYNES_SMART_TOKEN: HEYNES_TOKEN,\r\n\r\n Token: obtenerToken()\r\n }\r\n\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\nconst GetDetalleSmartPackEnAPI = (ID_SISTEMA, TIPO_TBS) => {\r\n controller = new AbortController();\r\n let HEYNES_TOKEN = store.getState().usuario.HEYNES_SMART_TOKEN;\r\n\r\n return fetch(endpoint1 + 'Heynes/obtener_detalle_boletin', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ID_SISTEMA: ID_SISTEMA,\r\n TIPO_TBS: TIPO_TBS,\r\n\r\n HEYNES_SMART_TOKEN: HEYNES_TOKEN,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\nconst obtener_vehiculoEnAPI = (ID_VEHICULO) => {\r\n controller = new AbortController();\r\n\r\n return fetch(endpoint1 + 'VehiculoTecdoc/obtener_vehiculo', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ID_VEHICULO: ID_VEHICULO,\r\n\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\nconst obtener_imagen_vehiculoEnAPI = (ID_VEHICULO) => {\r\n controller = new AbortController();\r\n let HEYNES_TOKEN = store.getState().usuario.HEYNES_DIST_TOKEN;\r\n\r\n return fetch(endpoint1 + 'VehiculoTecdoc/obtener_imagen_vehiculo', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ID_VEHICULO_TECDOC: ID_VEHICULO,\r\n HEYNES_DIST_TOKEN: HEYNES_TOKEN,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\nconst recuperar_contrasenyaEnAPI = (CORREO) => {\r\n controller = new AbortController();\r\n\r\n return fetch(endpoint1 + 'Accesos/recuperar_contrasenya', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n CORREO_ELECTRONICO: CORREO,\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst obtener_usuario_EnAPI = () => {\r\n controller = new AbortController();\r\n\r\n return fetch(endpoint1 + 'Usuario/obtener', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst actualizar_usuario_EnAPI = (PAYLOAD, PWD) => {\r\n controller = new AbortController();\r\n\r\n return fetch(endpoint1 + 'Usuario/actualizar', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n USUARIO: PAYLOAD.USUARIO,\r\n PWD: PWD,\r\n ID_IDIOMA: PAYLOAD.ID_IDIOMA,\r\n CORREO_RECUPERACION_PWD: PAYLOAD.CORREO_RECUPERACION_PWD,\r\n OBSERVACIONES: PAYLOAD.OBSERVACIONES,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst obtener_registros_idiomas_EnAPI = (ORDERCOLUM, ORDERDIR) => {\r\n controller = new AbortController();\r\n\r\n return fetch(endpoint1 + 'Idiomas/obtener_registros', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ORDERCOLUM: ORDERCOLUM,\r\n ORDERDIR: ORDERDIR,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst obtener_configuracion_EnAPI = () => {\r\n controller = new AbortController();\r\n\r\n return fetch(endpoint1 + 'Configuracion/obtener', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst obtener_tarea_EnAPI = (ID) => {\r\n controller = new AbortController();\r\n\r\n return fetch(endpoint1 + 'Tareas/obtener', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ID: ID,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst obtener_anyos_EnAPI = () => {\r\n controller = new AbortController();\r\n\r\n return fetch(endpoint1 + 'Tareas/anyos', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\nconst obtener_grado_satisfaccionEnAPI = () => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Maestras/obtener_grado_satisfaccion', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\nconst hay_feedback_pendientesEnAPI = () => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + \"Tareas/hay_feedback_pendientes\", {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst actualizar_feedbackEnAPI = (ID_TAREA, ID_GRADO, TEXTO_RESOLUCION) => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + \"tareas/actualizar_feedback\", {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ID: ID_TAREA,\r\n ID_MAE_GRADO_SATISFACCION: ID_GRADO,\r\n RESOLUCION_DE_TAREAS: TEXTO_RESOLUCION,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\nconst documento_consutlaEnAPI = (ID) => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + \"tareas/documento_consulta\", {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ID: ID,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst obtener_haynes_urlEnAPI = () => {\r\n controller = new AbortController();\r\n\r\n return fetch(endpoint1 + \"Heynes/obtener_haynes_url\", {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\n\r\nconst obtener_conectorEnAPI = (ID_VEHICULO, CODIGO_MOTOR) => {\r\n controller = new AbortController();\r\n //return fetch(\"https://assist.servicenext.eu/TEST/\" + \"VehiculoTecdoc/obtener_conector\", {\r\n return fetch(endpoint1 + \"VehiculoTecdoc/obtener_conector\", {\r\n\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(\r\n {\r\n ID_VEHICULO: ID_VEHICULO,\r\n CODIGO_MOTOR: CODIGO_MOTOR,\r\n Token: obtenerToken()\r\n }\r\n ),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\n\r\nconst solicitud_informacion_servicioEnAPI = (SERVICIO) => {\r\n controller = new AbortController();\r\n return fetch(endpoint1 + 'Tareas/solicitud_informacion_servicio', {\r\n method: 'POST',\r\n signal: controller.signal,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n SERVICIO :SERVICIO,\r\n Token: obtenerToken()\r\n }),\r\n dataType: \"json\",\r\n }).then(res => res.json())\r\n .catch(error => console.error('Error:', error))\r\n .then(function (res) {\r\n\r\n if (res !== undefined) {\r\n if (!res.OK) {\r\n MSGERROR(res.MENSAJE_ERROR)\r\n }\r\n return res\r\n }\r\n })\r\n}\r\n\r\n\r\nconst abortFetch = () => {\r\n controller.abort()\r\n}\r\nconst END_POINT_ACTUAL = () => {\r\n return endpoint1;\r\n}\r\n\r\nexport {\r\n abortFetch,\r\n LoginEnAPI,\r\n LogoutEnAPI,\r\n obtener_registros_paginadosEnAPI,\r\n obtener_fabricantesEnAPI,\r\n obtener_modelosEnAPI,\r\n obtener_motorizacionesEnAPI,\r\n obtener_tipo_tareaEnAPI,\r\n obtener_grupo_montajeEnAPI,\r\n buscar_matriculaEnAPI,\r\n buscar_bastidorEnAPI,\r\n nueva_tareaEnAPI,\r\n obtener_estados_tareaEnAPI,\r\n obtener_registrosEnAPI,\r\n insertar_ficheroEnAPI,\r\n GetSmartPackEnAPI,\r\n GetDetalleSmartPackEnAPI,\r\n obtener_vehiculoEnAPI,\r\n obtener_fichero_tecnico_EnAPI,\r\n obtener_fichero_taller_EnAPI,\r\n obtener_paises_EnAPI,\r\n obtener_imagen_vehiculoEnAPI,\r\n obtener_registros_taller_EnAPI,\r\n recuperar_contrasenyaEnAPI,\r\n obtener_usuario_EnAPI,\r\n actualizar_usuario_EnAPI,\r\n obtener_registros_idiomas_EnAPI,\r\n obtener_configuracion_EnAPI,\r\n obtener_anyos_EnAPI,\r\n obtener_tarea_EnAPI,\r\n END_POINT_ACTUAL,\r\n obtener_grado_satisfaccionEnAPI,\r\n hay_feedback_pendientesEnAPI,\r\n actualizar_feedbackEnAPI,\r\n documento_consutlaEnAPI,\r\n obtener_conectorEnAPI,\r\n obtener_haynes_urlEnAPI,\r\n solicitud_informacion_servicioEnAPI\r\n};","import { createBrowserHistory as history} from 'history';\r\n\r\nexport default history();","import React, { Component } from 'react';\r\n\r\nimport store from '../store';\r\n\r\nimport {\r\n updateStateMasterPage, showItemReferencia,\r\n} from \"../action/actionCreators\";\r\nimport { obtener_vehiculoEnAPI, abortFetch } from \"../action/actionCreatorsRequests\";\r\nimport { Modal, Button, Space } from 'antd';\r\n\r\nimport alertify from 'alertifyjs';\r\nimport history from '../history';\r\nimport txt_esp from \"../json/esp.json\"\r\nimport txt_fra from \"../json/fra.json\"\r\nimport txt_por from \"../json/por.json\"\r\nimport txt_ale from \"../json/ale.json\"\r\nimport txt_ita from \"../json/ita.json\"\r\nimport txt_ing from \"../json/ing.json\"\r\n\r\n\r\n\r\n\r\nexport function obtenerTipoOrdenacion(listaDeReferencias) {\r\n //if (listaDeReferencias.find(element => element.DESTACADO !== 0) !== undefined) { return 9; }\r\n if (listaDeReferencias.find(element => element.CODIGO_MARCA > 0 && element.STOCK_ALMACEN > 0 && element.PRECIO >= 0) !== undefined) { return 9; }\r\n if (listaDeReferencias.find(element => element.CODIGO_MARCA > 0 && element.STOCK_ALMACEN === 0 && element.STOCK_TOTAL > 0 && element.PRECIO >= 0) !== undefined) { return 8; }\r\n if (listaDeReferencias.find(element => element.CODIGO_MARCA <= 0 && element.STOCK_ALMACEN > 0 && element.PRECIO >= 0) !== undefined) { return 7; }\r\n if (listaDeReferencias.find(element => element.CODIGO_MARCA <= 0 && element.STOCK_ALMACEN === 0 && element.STOCK_TOTAL > 0 && element.PRECIO >= 0) !== undefined) { return 6; }\r\n if (listaDeReferencias.find(element => element.CODIGO_MARCA > 0 && element.REFERENCIA_PROVEEDOR !== \"\" && element.STOCK_ALMACEN === 0 && element.STOCK_TOTAL === 0 && element.PRECIO >= 0) !== undefined) { return 5; }\r\n if (listaDeReferencias.find(element => element.CODIGO_MARCA > 0 && element.REFERENCIA_PROVEEDOR === \"\" && element.STOCK_ALMACEN === 0 && element.STOCK_TOTAL === 0 && element.PRECIO >= 0) !== undefined) { return 4; }\r\n if (listaDeReferencias.find(element => element.CODIGO_MARCA <= 0 && element.STOCK_ALMACEN === 0 && element.STOCK_TOTAL === 0 && element.PRECIO >= 0) !== undefined) { return 3; }\r\n if (listaDeReferencias.find(element => element.PRECIO === null) !== undefined) { return 2; }\r\n return 1;\r\n}\r\n\r\nexport function obtenerListaOrdenadaPorStock(listaDeReferencias) {\r\n\r\n let lista = listaDeReferencias.sort(dynamicSortMultipleDesc(\"STOCK_ALMACEN\", \"NETO_ORDENADO\"));\r\n\r\n return lista;\r\n}\r\n\r\n\r\nexport function obtenerStockAlmacen(listaDeReferencias) {\r\n let stockMaximo = 0;\r\n let item = listaDeReferencias.sort(dynamicSortDesc(\"STOCK_ALMACEN\"));\r\n stockMaximo = item[0].STOCK_ALMACEN;\r\n if (stockMaximo === 0) {\r\n let item2 = listaDeReferencias.sort(dynamicSortDesc(\"STOCK_TOTAL\"));\r\n stockMaximo = item2[0].STOCK_TOTAL;\r\n }\r\n return stockMaximo;\r\n}\r\n\r\nexport function obtenerPrecioMinimo(listaDeReferencias) {\r\n let precioMinimo = 0;\r\n let item = listaDeReferencias.sort(dynamicSortAsc(\"NETO\"));\r\n precioMinimo = item[0].NETO * -1;\r\n\r\n return precioMinimo;\r\n}\r\n\r\nexport function ordenarGruposMarcas(listaDeGrupoDeMarcas) {\r\n let lista = listaDeGrupoDeMarcas.sort(dynamicSortMultipleDesc(\"tipoOrdenacion\", \"stock\", \"precio\"));\r\n return lista;\r\n}\r\n\r\n\r\nexport function dynamicSortDesc(property) {\r\n var sortOrder = 1;\r\n if (property[0] === \"-\") {\r\n sortOrder = -1;\r\n property = property.substr(1);\r\n }\r\n return function (a, b) {\r\n var result = (a[property] > b[property]) ? -1 : (a[property] < b[property]) ? 1 : 0;\r\n return result * sortOrder;\r\n }\r\n}\r\n\r\n\r\nexport function dynamicSortAsc(property) {\r\n var sortOrder = 1;\r\n if (property[0] === \"-\") {\r\n sortOrder = -1;\r\n property = property.substr(1);\r\n }\r\n return function (a, b) {\r\n var result = (a[property] < b[property]) ? -1 : (a[property] > b[property]) ? 1 : 0;\r\n return result * sortOrder;\r\n }\r\n}\r\n\r\nexport function dynamicSortMultipleDesc() {\r\n var props = arguments;\r\n return function (obj1, obj2) {\r\n var i = 0, result = 0, numberOfProperties = props.length;\r\n while (result === 0 && i < numberOfProperties) {\r\n result = dynamicSortDesc(props[i])(obj1, obj2);\r\n i++;\r\n }\r\n return result;\r\n }\r\n}\r\n\r\nexport function dynamicSortMultipleAsc() {\r\n var props = arguments;\r\n return function (obj1, obj2) {\r\n var i = 0, result = 0, numberOfProperties = props.length;\r\n\r\n while (result === 0 && i < numberOfProperties) {\r\n result = dynamicSortAsc(props[i])(obj1, obj2);\r\n i++;\r\n }\r\n return result;\r\n }\r\n}\r\n\r\nexport function obtenerPaginas(registros, numeroRegistroPorPagina) {\r\n let numeroDePaginas = 0; let numReferenciasPagina = 0;\r\n\r\n let listaMarcas = registros.marcas;\r\n\r\n if (registros.marcasSeleccionadas !== undefined) {\r\n if (registros.marcasSeleccionadas.length > 0) {\r\n listaMarcas = registros.marcasSeleccionadas\r\n }\r\n }\r\n let listaMarcasOrdenadas = [];\r\n\r\n listaMarcas.map((marca) => {\r\n let listaDeReferenciasDeLaMarca = registros.referencias.filter(referencia => referencia.NOMRE_MARCA === marca);\r\n if (listaDeReferenciasDeLaMarca.length > 0) {\r\n let tipoOrdenacionDeLaMarca = obtenerTipoOrdenacion(listaDeReferenciasDeLaMarca);\r\n let stockMaximoDeLaMarca = obtenerStockAlmacen(listaDeReferenciasDeLaMarca);\r\n let precioMinimoDeLaMarca = obtenerPrecioMinimo(listaDeReferenciasDeLaMarca);\r\n\r\n listaMarcasOrdenadas.push({\r\n marca: marca,\r\n tipoOrdenacion: tipoOrdenacionDeLaMarca,\r\n stock: stockMaximoDeLaMarca,\r\n precio: precioMinimoDeLaMarca\r\n })\r\n }\r\n })\r\n\r\n listaMarcasOrdenadas = ordenarGruposMarcas(listaMarcasOrdenadas);\r\n\r\n listaMarcas = [];\r\n listaMarcasOrdenadas.map((marcaOrdenada) => {\r\n listaMarcas.push(marcaOrdenada.marca);\r\n })\r\n\r\n let paginas = []; let marcaIncio = ''; let marcaFin = ''; let inicial = 0;\r\n\r\n for (var i = 0; i < listaMarcas.length; i++) {\r\n if (inicial === 0) {\r\n marcaIncio = listaMarcas[i];\r\n inicial = 1;\r\n }\r\n\r\n let numeroDeReferenciasEnLaMarca = registros.referencias.filter(registro => registro.NOMRE_MARCA === listaMarcas[i]);\r\n\r\n numReferenciasPagina += numeroDeReferenciasEnLaMarca.length;\r\n if (i === (listaMarcas.length - 1)) {\r\n numeroRegistroPorPagina = numReferenciasPagina\r\n }\r\n\r\n if (numReferenciasPagina >= numeroRegistroPorPagina) {\r\n marcaFin = listaMarcas[i];\r\n\r\n numeroDePaginas += 1;\r\n\r\n paginas.push({ marcaIncio: marcaIncio, marcaFin: marcaFin });\r\n inicial = 0;\r\n\r\n numReferenciasPagina = 0;\r\n } else {\r\n\r\n marcaFin = listaMarcas[i];\r\n }\r\n }\r\n return paginas;\r\n}\r\n\r\n\r\n\r\nexport function distinctMarcas(lista) {\r\n let lookup = {}; let distinctMarcas = [];\r\n if (lista !== undefined) {\r\n lista.map((item, pos) => {\r\n var name = item.NOMRE_MARCA;\r\n if (!(name in lookup)) {\r\n lookup[name] = 1;\r\n distinctMarcas.push(item);\r\n }\r\n })\r\n\r\n distinctMarcas = distinctMarcas.sort(dynamicSortAsc(\"NOMRE_MARCA\"));\r\n }\r\n return distinctMarcas;\r\n}\r\n\r\nexport function distinctGrupoMontaje(referencias) {\r\n let distinctGrupoMontajeLista = [];\r\n let lookup = {};\r\n if (referencias !== undefined) {\r\n referencias.map((item, pos) => {\r\n if (item.CODIGO_MARCA > 0) {\r\n var name = item.NOMBRE_GRUPO_MONTAJE;\r\n if (!(name in lookup)) {\r\n lookup[name] = 1;\r\n distinctGrupoMontajeLista.push(item);\r\n }\r\n }\r\n })\r\n distinctGrupoMontajeLista = distinctGrupoMontajeLista.sort(dynamicSortAsc(\"NOMBRE_GRUPO_MONTAJE\"));\r\n }\r\n return distinctGrupoMontajeLista\r\n}\r\n\r\nexport function buscarNodoTree(lista) {\r\n if (lista.children.length > 0) {\r\n let lista = []\r\n lista.push(lista.title);\r\n\r\n return buscarNodoTree(lista.children);\r\n } else {\r\n return lista.title\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nexport function modelarObjetoReferencia(referencias, marcasSeleccionadas, gruposSeleccionadas, ladosSeleccionados) {\r\n\r\n let agrupacionMarcas = [];\r\n let agrupacionGrupoMontaje = [];\r\n let grupoDeReferencias;\r\n let listaReferencias = [];\r\n referencias.map(referencia => {\r\n if (referencia.NETO === 0) {\r\n referencia.NETO_ORDENADO = -999999999;\r\n } else {\r\n referencia.NETO_ORDENADO = (referencia.NETO * -1)\r\n }\r\n listaReferencias.push(referencia)\r\n })\r\n\r\n /*+**************+++*MODELAR OBJETO REFERENCIA*******************************/\r\n agrupacionMarcas = referencias.map(item => item.NOMRE_MARCA)\r\n .filter((value, index, self) => self.indexOf(value) === index)\r\n agrupacionMarcas = agrupacionMarcas.sort((a, b) => a.localeCompare(b));\r\n\r\n agrupacionGrupoMontaje = referencias.map(item => item.NOMBRE_GRUPO_MONTAJE)\r\n .filter((value, index, self) => self.indexOf(value) === index)\r\n agrupacionGrupoMontaje = agrupacionGrupoMontaje.sort((a, b) => a.localeCompare(b));\r\n\r\n if (marcasSeleccionadas === undefined) { marcasSeleccionadas = []; }\r\n if (gruposSeleccionadas === undefined) { gruposSeleccionadas = []; }\r\n if (ladosSeleccionados === undefined) { ladosSeleccionados = []; }\r\n\r\n grupoDeReferencias = {\r\n marcas: agrupacionMarcas,\r\n referencias: listaReferencias,\r\n auxReferencia: listaReferencias,\r\n grupoMontaje: agrupacionGrupoMontaje,\r\n gruposMontajeSeleccionados: gruposSeleccionadas,\r\n ladosSeleccionados: ladosSeleccionados,\r\n marcasSeleccionadas: marcasSeleccionadas\r\n }\r\n return grupoDeReferencias;\r\n}\r\n\r\nexport function filtrarReferenciasLocalmente(listaReferencias) {\r\n let marcasSeleccionadas = listaReferencias.marcasSeleccionadas;\r\n let grupoDeMontajeSeleccionados = listaReferencias.gruposMontajeSeleccionados;\r\n let ladosSeleccionados = listaReferencias.ladosSeleccionados;\r\n let listaReferenciasFiltradas = [];\r\n let objReferenciasFiltradas = listaReferencias;\r\n if (marcasSeleccionadas.length === 0) {\r\n listaReferenciasFiltradas = listaReferencias.referencias\r\n } else {\r\n listaReferenciasFiltradas = listaReferencias.referencias.filter(referencia => marcasSeleccionadas.includes(referencia.NOMRE_MARCA))\r\n }\r\n\r\n if (grupoDeMontajeSeleccionados.length === 0) {\r\n listaReferenciasFiltradas = listaReferenciasFiltradas\r\n } else {\r\n listaReferenciasFiltradas = listaReferenciasFiltradas.filter(referencia => grupoDeMontajeSeleccionados.includes(referencia.NOMBRE_GRUPO_MONTAJE))\r\n }\r\n\r\n if (ladosSeleccionados.length === 0) {\r\n listaReferenciasFiltradas = listaReferenciasFiltradas\r\n } else {\r\n let referencias = [];\r\n listaReferenciasFiltradas.map(registro => {\r\n for (let i = 0; i < ladosSeleccionados.length; i++) {\r\n let n = registro.LADO_MONTAJE.search(ladosSeleccionados[i])\r\n if (n !== -1) {\r\n referencias.push(registro)\r\n break;\r\n }\r\n }\r\n\r\n })\r\n listaReferenciasFiltradas = referencias;\r\n }\r\n objReferenciasFiltradas.referencias = listaReferenciasFiltradas;\r\n return objReferenciasFiltradas;\r\n}\r\n\r\n\r\nexport function crearPaginacion(referencias, listaPaginacion) {\r\n\r\n\r\n let inicioRegistroPaginación = 10;\r\n if (Object.keys(listaPaginacion).length > 0) {\r\n inicioRegistroPaginación = listaPaginacion.numeroRegistroPagina === undefined ? 10 : listaPaginacion.numeroRegistroPagina;\r\n }\r\n\r\n let listaPaginas = obtenerPaginas(referencias, inicioRegistroPaginación);\r\n let paginationPropiedades = {\r\n \"numeroTotalRegistro\": referencias.referencias.length - 1,\r\n \"numeroTotalRegistroPaginacion\": listaPaginas.length * inicioRegistroPaginación,\r\n \"numeroRegistroPagina\": inicioRegistroPaginación,\r\n \"numeroDePaginas\": listaPaginas.length,\r\n \"paginas\": listaPaginas,\r\n \"paginaAMostrar\": 0\r\n }\r\n\r\n return paginationPropiedades;\r\n\r\n}\r\n\r\nexport function obtenerDatosUsuarioYLicenciaActual(activarMensaje) {\r\n let getCookieUser = JSON.parse(localStorage.getItem(\"usersertec\"));\r\n let accesoLicencia = {};\r\n if (getCookieUser !== null) {\r\n accesoLicencia = getCookieUser.LoginSertec.List_LicenciaSERTE[0];\r\n } else {\r\n let verificarMensaje = activarMensaje === undefined ? true : activarMensaje;\r\n if (verificarMensaje) {\r\n MSGERROR(\"LA PETICION NO ESTA LOGEADA\");\r\n }\r\n }\r\n\r\n return accesoLicencia;\r\n}\r\n\r\n\r\nexport function verficarSiEsCatalogo(usuario) {\r\n let esCatalogo = true;\r\n if (usuario.LoginSertec !== undefined) {\r\n esCatalogo = usuario.LoginSertec.List_LicenciaSERTE[0].SOLO_CATALOGO;\r\n }\r\n return esCatalogo\r\n}\r\n\r\nexport function colorCabeceraPorElPrecioDeLaReferencia(marcas) {\r\n let colorPorDefecto = \"#999\"\r\n if (marcas.referencias !== undefined) {\r\n for (let i = 0; i < marcas.referencias.length; i++) {\r\n if (marcas.referencias[i].PRECIO > 0) {\r\n colorPorDefecto = \"#1f1e1e\"\r\n break;\r\n }\r\n }\r\n }\r\n\r\n for (let i = 0; i < marcas.referencias.length; i++) {\r\n if (marcas.referencias[i].MARCA_PATROCINADA) {\r\n colorPorDefecto = \"#1b3867\"\r\n break;\r\n }\r\n }\r\n\r\n return colorPorDefecto;\r\n}\r\n\r\nexport function colorCabeceraFuente(marcas) {\r\n let colorPorDefecto = \"#fff\";\r\n\r\n for (let i = 0; i < marcas.referencias.length; i++) {\r\n if (marcas.referencias[i].MARCA_PATROCINADA) {\r\n colorPorDefecto = \"#e4ba1c\"\r\n break;\r\n }\r\n }\r\n return colorPorDefecto;\r\n}\r\n\r\n\r\nexport function obtenerPathNodo(nodos) {\r\n let retornoNodos = \"\";\r\n nodos.map((nodo) => {\r\n\r\n retornoNodos = retornoNodos + nodo.Term + \" \" + \" / \";\r\n })\r\n retornoNodos = retornoNodos.substring(0, retornoNodos.length - 2);\r\n return retornoNodos\r\n}\r\n\r\n\r\n\r\nexport function diaPorNumero(numero) {\r\n let dia = \"\"\r\n switch (numero) {\r\n case 1:\r\n dia = \"LUNES\";\r\n break;\r\n case 2:\r\n dia = \"MARTES\";\r\n break;\r\n case 3:\r\n dia = \"MIERCOLES\";\r\n break;\r\n case 4:\r\n dia = \"JUEVES\";\r\n break;\r\n case 5:\r\n dia = \"VIERNES\";\r\n break;\r\n case 6:\r\n dia = \"SABADO\";\r\n break;\r\n case 7:\r\n dia = \"DOMINGO\";\r\n break;\r\n default:\r\n\r\n dia = \"LUNES\";\r\n break;\r\n }\r\n return dia;\r\n}\r\n\r\nexport function convertirCodigoAMeses(CODIGO) {\r\n let MES = \"\"\r\n switch (CODIGO) {\r\n case \"01\":\r\n MES = \"Enero\";\r\n break;\r\n case \"02\":\r\n MES = \"Febrero\";\r\n break;\r\n case \"03\":\r\n MES = \"Marzo\";\r\n break;\r\n case \"04\":\r\n MES = \"Abril\";\r\n break;\r\n case \"05\":\r\n MES = \"Mayo\";\r\n break;\r\n case \"06\":\r\n MES = \"Junio\";\r\n break;\r\n case \"07\":\r\n MES = \"Julio\";\r\n break;\r\n case \"08\":\r\n MES = \"Agosto\";\r\n break;\r\n case \"09\":\r\n MES = \"Septiembre\";\r\n break;\r\n case \"10\":\r\n MES = \"Octubre\";\r\n break;\r\n case \"11\":\r\n MES = \"Noviembre\";\r\n break;\r\n case \"12\":\r\n MES = \"Diciembre\";\r\n break;\r\n default:\r\n MES = \"Enero\";\r\n break;\r\n }\r\n return MES;\r\n}\r\nexport function convertirAMesACodigo(CODIGO) {\r\n let MES = \"\"\r\n switch (CODIGO.toUpperCase()) {\r\n case \"ENERO\":\r\n MES = \"01\";\r\n break;\r\n case \"FEBRERO\":\r\n MES = \"02\";\r\n break;\r\n case \"MARZO\":\r\n MES = \"03\";\r\n break;\r\n case \"ABRIL\":\r\n MES = \"04\";\r\n break;\r\n case \"MAYO\":\r\n MES = \"05\";\r\n break;\r\n case \"JUNIO\":\r\n MES = \"06\";\r\n break;\r\n case \"JULIO\":\r\n MES = \"07\";\r\n break;\r\n case \"AGOSTO\":\r\n MES = \"08\";\r\n break;\r\n case \"SEPTIEMBRE\":\r\n MES = \"09\";\r\n break;\r\n case \"OCTUBRE\":\r\n MES = \"10\";\r\n break;\r\n case \"NOVIEMBRE\":\r\n MES = \"11\";\r\n break;\r\n case \"DICIEMBRE\":\r\n MES = \"12\";\r\n break;\r\n default:\r\n MES = \"01\";\r\n break;\r\n }\r\n return MES;\r\n}\r\n\r\n\r\n\r\nexport function mostrarPaginaPorFiltro(aplicarFiltroPor) {\r\n let listaMarca = store.getState().grupoDeMarcas;\r\n let listaPaginacion = store.getState().pagination;\r\n let agrupacionMarcas = []; let listaDeReferencias = [];\r\n let listaDeGrupoMontaje = distinctGrupoMontaje(listaMarca.referencias)\r\n let posicionPagina = 0;\r\n let listaMarcaFiltro = listaPaginacion.tipoFiltroPorMarca;\r\n\r\n\r\n if (listaMarca.referencias !== undefined) {\r\n if (aplicarFiltroPor === \"PorMarcas\") {\r\n //words.filter(word => word.length > 6);\r\n for (var i = 0; i < listaMarcaFiltro.length; i++) {\r\n listaDeReferencias.push(listaMarca.referencias.filter(referencia => referencia.NOMRE_MARCA === listaMarcaFiltro[i]));\r\n }\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\nexport function mostrarPaginaActual(registros, pagination) {\r\n let marcas = [];\r\n let continuar = false;\r\n let posicionPagina = pagination.paginaAMostrar === undefined ? 0 : pagination.paginaAMostrar === -1 ? 0 : pagination.paginaAMostrar;\r\n\r\n let listaMarcas = registros.marcas;\r\n\r\n if (registros.marcasSeleccionadas !== undefined) {\r\n if (registros.marcasSeleccionadas.length > 0) {\r\n listaMarcas = registros.marcasSeleccionadas\r\n }\r\n }\r\n\r\n\r\n let listaMarcasOrdenadas = [];\r\n\r\n listaMarcas.map((marca) => {\r\n let listaDeReferenciasDeLaMarca = registros.referencias.filter(referencia => referencia.NOMRE_MARCA === marca);\r\n if (listaDeReferenciasDeLaMarca.length > 0) {\r\n let tipoOrdenacionDeLaMarca = obtenerTipoOrdenacion(listaDeReferenciasDeLaMarca);\r\n let stockMaximoDeLaMarca = obtenerStockAlmacen(listaDeReferenciasDeLaMarca);\r\n let precioMinimoDeLaMarca = obtenerPrecioMinimo(listaDeReferenciasDeLaMarca);\r\n\r\n listaMarcasOrdenadas.push({\r\n marca: marca,\r\n tipoOrdenacion: tipoOrdenacionDeLaMarca,\r\n stock: stockMaximoDeLaMarca,\r\n precio: precioMinimoDeLaMarca\r\n })\r\n }\r\n })\r\n listaMarcasOrdenadas = ordenarGruposMarcas(listaMarcasOrdenadas);\r\n\r\n listaMarcas = [];\r\n listaMarcasOrdenadas.map((marcaOrdenada) => {\r\n listaMarcas.push(marcaOrdenada.marca);\r\n })\r\n //let listaMarcaFiltro = pagination.tipoFiltroPorMarca;\r\n if (pagination.paginas !== undefined) {\r\n if (pagination.paginas.length > posicionPagina) {\r\n for (var i = 0; i < listaMarcas.length; i++) {\r\n if (pagination.paginas[posicionPagina].marcaIncio === listaMarcas[i] || continuar) {\r\n continuar = true;\r\n marcas.push(listaMarcas[i]);\r\n if (pagination.paginas[posicionPagina].marcaFin === listaMarcas[i]) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n return marcas;\r\n}\r\n\r\n\r\nexport function mostarReferenciasGenericasEnPantalla(referenciasEncontradas, marcaSeleccionada, grupoSeleccionado, ladosSeleccionados) {\r\n let registros = [];\r\n let nuevoObjetoRegistro = {};\r\n //store.dispatch(estadoAgrupacionDeMarcas({ \"marcas\": [] }))\r\n if (referenciasEncontradas !== null) {\r\n //Inicializo las referencias con su propiedad detalles a null\r\n referenciasEncontradas.map((x, pos) => { x.detalles = {} })\r\n\r\n let objReferencias = modelarObjetoReferencia(referenciasEncontradas, marcaSeleccionada, grupoSeleccionado, ladosSeleccionados);\r\n //Filtramos marcas y grupos de montaje\r\n objReferencias = filtrarReferenciasLocalmente(objReferencias)\r\n\r\n //Actualizo el estado de las referencias.\r\n registros = objReferencias\r\n\r\n //Definimos cada marca en cada página va\r\n let pagination = crearPaginacion(objReferencias, {})\r\n\r\n nuevoObjetoRegistro = { Pagination: pagination, Referencias: registros }\r\n\r\n }\r\n return nuevoObjetoRegistro\r\n}\r\n\r\n\r\n\r\n\r\n\r\nexport function obtenerToken() {\r\n let data = store.getState().usuario;\r\n return data.TOKEN;\r\n}\r\n\r\nexport function obtenerUsuario() {\r\n let getCookieUser = JSON.parse(localStorage.getItem(\"userbackoffice\"));\r\n return getCookieUser;\r\n}\r\n\r\n\r\nexport function efectoRemoveBuscadorReferencia(id, estado) {\r\n /*\r\n if (document.getElementById(id).value !== null) {\r\n document.getElementById(id).value = \"\";\r\n }\r\n\r\n if (document.getElementById(\"closeBuscadorReferencia\") !== null) {\r\n document.getElementById(\"closeBuscadorReferencia\").style.visibility = estado ? 'hidden' : 'visible';\r\n }\r\n */\r\n}\r\n\r\nexport function efectoRemoveBuscador(id, estado, nombreClose) {\r\n if (document.getElementById(id).value !== null) {\r\n document.getElementById(id).value = \"\";\r\n }\r\n\r\n if (document.getElementById(nombreClose) !== null) {\r\n document.getElementById(nombreClose).style.visibility = estado ? 'hidden' : 'visible';\r\n }\r\n}\r\n\r\nexport function getFocus(id) {\r\n setTimeout(() => {\r\n if (document.getElementById(id) !== null) {\r\n document.getElementById(id).focus();\r\n }\r\n }, 500)\r\n}\r\n\r\nexport function removeAllClassCoche() {\r\n let x = document.getElementById(\"svg\");\r\n let y = x.getElementsByTagName(\"polygon\");\r\n\r\n for (let i = 0; i < y.length; i++) {\r\n y[i].classList.remove(\"activeArcauto\");\r\n }\r\n}\r\n\r\n\r\nexport function addClassCoche(e) {\r\n let x = document.getElementById(\"svg\");\r\n let y = x.getElementsByTagName(\"polygon\");\r\n\r\n for (let i = 0; i < y.length; i++) {\r\n if (y[i].attributes[0].nodeValue === e.target.attributes[0].nodeValue) {\r\n\r\n y[i].classList.add(\"activeArcauto\");\r\n }\r\n }\r\n}\r\n\r\n\r\nexport function removeClassCoche(e) {\r\n let x = document.getElementById(\"svg\");\r\n let y = x.getElementsByTagName(\"polygon\");\r\n\r\n for (let i = 0; i < y.length; i++) {\r\n if (y[i].attributes[0].nodeValue === e.target.attributes[0].nodeValue) {\r\n y[i].classList.remove(\"activeArcauto\");\r\n }\r\n }\r\n}\r\n\r\n\r\nexport function warningCliente(texto) {\r\n alertify.set('notifier', 'position', 'top-left');\r\n alertify.warning(texto);\r\n\r\n setTimeout(() => {\r\n //localStorage.removeItem('usersertec');\r\n //localStorage.removeItem('tokensertec');\r\n //store.dispatch(showChildrenDrawerLevel2(false));\r\n history.push(\"/\");\r\n store.dispatch(updateStateMasterPage(false));\r\n //store.dispatch(logOutSesion())\r\n\r\n }, 1000)\r\n}\r\n\r\nexport function MSGERROR(texto, posicion) {\r\n switch (texto) {\r\n case \"LA PETICION NO ESTA LOGEADA\":\r\n warningCliente(texto)\r\n break;\r\n case \"NO SE HA INDICADO EL TOKEN\":\r\n warningCliente(texto)\r\n break;\r\n\r\n case \"LA SESSION NO EXISTE\":\r\n abortFetch();\r\n warningCliente(texto)\r\n break;\r\n default:\r\n if (texto !== undefined && texto !== null) {\r\n if (texto.trim() !== \"\") {\r\n\r\n Modal.warning({\r\n centered: true,\r\n okText: traducirPagina(\"Salir\").toUpperCase(),\r\n okType: history.location.pathname === \"/\" ? \"modalAlertas\" : \"\",\r\n content: (
{texto}
),\r\n });\r\n\r\n /*\r\n alertify.set('notifier', 'position', posicion === undefined ? 'top-left' : posicion);\r\n alertify.warning(texto);\r\n */\r\n }\r\n }\r\n break;\r\n }\r\n}\r\nexport function MSGOK(texto, posicion) {\r\n switch (texto) {\r\n case \"\":\r\n break;\r\n default:\r\n if (texto !== undefined) {\r\n if (texto.trim() !== \"\") {\r\n\r\n Modal.success({\r\n centered: true,\r\n okText: traducirPagina(\"Salir\").toUpperCase(),\r\n okType: history.location.pathname === \"/\" ? \"modalAlertas\" : \"\",\r\n content: ({texto}
),\r\n });\r\n\r\n /*\r\n alertify.set('notifier', 'position', posicion === undefined ? 'top-left' : posicion);\r\n alertify.success(texto);\r\n */\r\n }\r\n }\r\n break;\r\n }\r\n}\r\n\r\nexport function estadoMasterPage() {\r\n if (history.location.pathname === \"/\") {\r\n store.dispatch(updateStateMasterPage(false));\r\n\r\n } else {\r\n store.dispatch(updateStateMasterPage(true));\r\n }\r\n}\r\n\r\n\r\nexport function crearListaKeysTree(nodoIDOrigen) {\r\n let listaArbol = store.getState().listaTree;\r\n if (listaArbol.length > 0) {\r\n let buscarNodo = listaArbol.find(element => element.key === nodoIDOrigen);\r\n if (buscarNodo !== undefined) {\r\n return buscadorNodo(buscarNodo)\r\n }\r\n }\r\n}\r\n\r\nexport function buscadorNodo(lista) {\r\n if (lista.children === 0) {\r\n return \"\";\r\n } else {\r\n let almacenar = \"\";\r\n lista.children.map((item) => {\r\n almacenar += item.key + \";\"\r\n item.children.map((item2) => {\r\n almacenar += item2.key + \";\"\r\n item2.children.map((item3) => {\r\n almacenar += item3.key + \";\"\r\n item3.children.map((item4) => {\r\n almacenar += item4.key + \";\"\r\n })\r\n })\r\n })\r\n })\r\n return almacenar.length > 0 ? almacenar.slice(0, -1) : almacenar;\r\n }\r\n}\r\n\r\nexport function busquedaNodoRecursivo(lista) {\r\n let almacenar = \"\";\r\n lista.children.map((item) => {\r\n almacenar += item.key + \";\"\r\n if (item.children > 0) {\r\n almacenar += busquedaNodoRecursivo(item);\r\n }\r\n })\r\n return almacenar;\r\n\r\n}\r\n\r\nexport function busquedaCochePorMatriculaOBastiidor(esFichaDGT) {\r\n let tipoBusqueda = store.getState().nameDropDownCar;\r\n let obtenerBuscadores = store.getState().buscadorCoche;\r\n\r\n if (Object.keys(obtenerBuscadores).length > 0) {\r\n if (obtenerBuscadores.txtBuscadorCoche !== undefined) {\r\n obtenerBuscadores.txtBuscadorCoche = obtenerBuscadores.txtBuscadorCoche.replaceAll(\" \", \"\");\r\n obtenerBuscadores.txtBuscadorCoche = obtenerBuscadores.txtBuscadorCoche.replaceAll(\"-\", \"\");\r\n\r\n if (verificarMatricula(obtenerBuscadores.txtBuscadorCoche)) {\r\n if (obtenerBuscadores.txtBuscadorCoche !== \"\") {\r\n if (tipoBusqueda.toUpperCase() === traducirPagina(\"Matricula\").toUpperCase()) {\r\n /*\r\n buscarMatriculaCoche(obtenerBuscadores.txtBuscadorCoche).then(coche => {\r\n if (coche !== null) {\r\n if (coche.VEHICULOS_TECDOC.length === 0 && coche.MATRICULA !== null) {\r\n store.dispatch({ type: \"STATE_MODAL_VEHICULO\", abrirModalVehiculo: true })\r\n store.dispatch({ type: \"REPLACE_VEHICULO_MATRICULA\", vehiculoPorMatricula: coche })\r\n } else {\r\n store.dispatch({ type: \"REPLACE_VEHICULO_MATRICULA\", vehiculoPorMatricula: coche })\r\n gestionarBusquedasVehiculo(coche, esFichaDGT);\r\n }\r\n }\r\n })\r\n */\r\n } else if (tipoBusqueda.toUpperCase() === traducirPagina(\"Bastidor\").toUpperCase()) {\r\n /*\r\n buscarBastidorCoche(obtenerBuscadores.txtBuscadorCoche).then(coche => {\r\n if (coche !== null) {\r\n if (coche.VEHICULOS_TECDOC.length === 0 && coche.MATRICULA !== null) {\r\n store.dispatch({ type: \"STATE_MODAL_VEHICULO\", abrirModalVehiculo: true })\r\n\r\n store.dispatch({ type: \"REPLACE_VEHICULO_MATRICULA\", vehiculoPorMatricula: coche })\r\n } else {\r\n store.dispatch({ type: \"REPLACE_VEHICULO_MATRICULA\", vehiculoPorMatricula: coche })\r\n gestionarBusquedasVehiculo(coche, esFichaDGT);\r\n }\r\n }\r\n })\r\n */\r\n }\r\n } else {\r\n MSGERROR(\"Ingrese un vehículo\");\r\n }\r\n\r\n } else {\r\n MSGERROR(\"El formato introducido no es correcto, sólo se aceptan números y letras.\");\r\n }\r\n }\r\n } else {\r\n MSGERROR(\"Ingrese un vehículo\");\r\n }\r\n}\r\n\r\n\r\n/*\r\nexport function gestionarBusquedasVehiculo(datos, esFichaDGT) {\r\n\r\n let vehiculo = datos.VEHICULOS_TECDOC === null ? [] : datos.VEHICULOS_TECDOC;\r\n\r\n if (vehiculo.length > 0) {\r\n if (vehiculo.length > 1) {\r\n store.dispatch(showChildrenDrawerIntegraciones(true));\r\n store.dispatch(activeItemTipoIntegracion(\"busquedaVehiculo\"))\r\n } else {\r\n if (esFichaDGT) {\r\n store.dispatch({\r\n type: \"SET_ID_MOTORIZACION_FICHA_HISTORIAL\",\r\n codMotorizacionFichaHistorial: vehiculo[0].ID,\r\n })\r\n\r\n } else {\r\n store.dispatch(estadoAgrupacionDeMarcas({ marcas: [] }));\r\n store.dispatch(showChildrenDrawerLevel2(false));\r\n // store.dispatch(getIdTecdocMotorByIdHaynes(vehiculo[0].ID));\r\n historialGrupoMontaje(vehiculo[0]);\r\n\r\n gestionarContenedorCoche(true);\r\n store.dispatch(updateVisualizacionFiltro(true));\r\n store.dispatch(showChildrenDrawerIntegraciones(false));\r\n store.dispatch(showItemReferencia(\"tree\"));\r\n }\r\n }\r\n } else {\r\n MSGERROR(\"No hay datos en VEHICULOS_TECDOC\");\r\n }\r\n}\r\n*/\r\n\r\n\r\n\r\nexport function cambiarEstadoDropVehiculo() {\r\n setTimeout(() => {\r\n let listaCodigosBandera = [\"ESP\", \"POR\", \"FRA\", \"MAT\", \"BAS\"];\r\n listaCodigosBandera.map((i) => {\r\n let etiqueta = document.getElementById(i)\r\n if (etiqueta !== undefined && etiqueta !== null) {\r\n etiqueta.classList.remove(\"active\");\r\n }\r\n })\r\n\r\n let tagPrincipal = document.getElementById(\"paisVehiculo\").title;\r\n let tagBusquedaVeh = document.getElementById(\"busquedaVehiculo\").title;\r\n let find = listaCodigosBandera.find(element => tagPrincipal.includes(element))\r\n\r\n let findVeh = listaCodigosBandera.find(element => tagBusquedaVeh.includes(element))\r\n if (findVeh !== undefined) {\r\n if (document.getElementById(findVeh) !== undefined && document.getElementById(findVeh) !== null) {\r\n document.getElementById(findVeh).classList.add(\"active\")\r\n }\r\n }\r\n if (find !== undefined) {\r\n if (document.getElementById(find) !== undefined && document.getElementById(find) !== null) {\r\n document.getElementById(find).classList.add(\"active\")\r\n }\r\n }\r\n }, 100)\r\n}\r\n\r\n\r\n\r\n\r\nexport function limpiarStoreDeRedux() {\r\n\r\n}\r\n\r\n\r\n\r\nexport function limpiarFichaClienteSeleccionado() {\r\n store.dispatch({\r\n type: \"STATE_FICHA_CLIENTE_SELECCIONADO\",\r\n nombre: \"\",\r\n codigo: \"\",\r\n cif: \"\",\r\n registroCliente: {}\r\n })\r\n}\r\n\r\n\r\nexport function traducirPagina(id) {\r\n let idioma = store.getState().idiomaActual;\r\n let retorno = {};\r\n if (idioma !== undefined) {\r\n if (Object.keys(idioma).length > 0) {\r\n switch (idioma.IDIOMA) {\r\n case \"ESP\":\r\n retorno = txt_esp.textos.find((r) => r.id === id)\r\n break;\r\n case \"POR\":\r\n retorno = txt_por.textos.find((r) => r.id === id)\r\n break;\r\n case \"FRA\":\r\n retorno = txt_fra.textos.find((r) => r.id === id)\r\n break;\r\n case \"ALE\":\r\n retorno = txt_ale.textos.find((r) => r.id === id)\r\n break;\r\n case \"ITA\":\r\n retorno = txt_ita.textos.find((r) => r.id === id)\r\n break;\r\n case \"REN\":\r\n retorno = txt_ing.textos.find((r) => r.id === id)\r\n break;\r\n default:\r\n retorno = txt_esp.textos.find((r) => r.id === id)\r\n break;\r\n }\r\n } else {\r\n retorno = txt_esp.textos.find((r) => r.id === id)\r\n }\r\n }\r\n\r\n return retorno === undefined ? \"\" : retorno.value;\r\n}\r\n\r\n\r\n\r\nexport function buscarPrecioRefOE(lista) {\r\n let crearListaREF = []\r\n lista.map((item, indice) => {\r\n crearListaREF.push({ PartNo: item.REFERENCIA_ORIGINAL, EuconId: item.EUCON_ID, NOM_FABRICANTE: item.NOMBRE_FABRICANTE })\r\n })\r\n\r\n // getPricePageOEM(crearListaREF);\r\n}\r\n\r\n\r\n\r\nexport function formatoPrecio(numero) {\r\n let input = numero.toString();\r\n let resultado = input;\r\n\r\n //aquí elimino todo lo que no sea números o comas (,)\r\n let num = input.replace(/\\,/g, '');\r\n if (!isNaN(num)) {\r\n //convierto a string\r\n num = num.toString();\r\n //separo los caracteres del string\r\n num = num.split('');\r\n //invierto el orden del string\r\n num = num.reverse();\r\n //junto todos los caracteres de la cadena\r\n num = num.join('');\r\n //busco los dos primeros caracteres y le coloco una coma en la siguiente posición\r\n num = num.replace(/(?=\\d*\\.?)(\\d{2})/, '$1,');\r\n //invierto del contenido de la cadena y reemplazo todo lo que no sea números o comas\r\n num = num.split('').reverse().join('').replace(/^[\\,]/, '');\r\n //asigno la cadena formateada al input\r\n resultado = num;\r\n }\r\n return resultado\r\n}\r\n\r\nexport function calcularNeto(precio, descuento) {\r\n let resultado = Math.floor(precio * descuento) / 100;\r\n return resultado;\r\n}\r\n\r\n\r\n\r\nexport function convertirMoneda(moneda, simbolo) {\r\n if (moneda === \"\" || moneda === \" \") {\r\n moneda = 0;\r\n }\r\n\r\n let convertirMonedaAString = moneda.toString();\r\n convertirMonedaAString = convertirMonedaAString.replace(\",\", \".\")\r\n\r\n let buscarPunto = convertirMonedaAString.indexOf(\".\");\r\n\r\n\r\n if (buscarPunto === -1) {\r\n convertirMonedaAString = convertirMonedaAString + \".00\";\r\n buscarPunto = convertirMonedaAString.indexOf(\".\");\r\n }\r\n\r\n let obtenerDecimales = convertirMonedaAString.substring(buscarPunto + 1, convertirMonedaAString.length);\r\n\r\n if (obtenerDecimales.length < 2) {\r\n obtenerDecimales = obtenerDecimales + \"0\";\r\n convertirMonedaAString = convertirMonedaAString + \"0\";\r\n }\r\n\r\n let obtenerEntero = convertirMonedaAString.substring(0, buscarPunto);\r\n if (obtenerEntero.length > 3) {\r\n obtenerEntero = obtenerEntero.substring(0, obtenerEntero.length - 3) + \"#\" + obtenerEntero.substring(obtenerEntero.length - 3, obtenerEntero.length);\r\n\r\n convertirMonedaAString = obtenerEntero + \".\" + obtenerDecimales;\r\n }\r\n let obtenerMoneda = \"\"\r\n if (convertirMonedaAString.includes(\"#\")) {\r\n obtenerMoneda = convertirMonedaAString.substring(0, buscarPunto + 4);\r\n } else {\r\n obtenerMoneda = convertirMonedaAString.substring(0, buscarPunto + 3);\r\n }\r\n\r\n\r\n let ponerComaALaMoneda = obtenerMoneda.replace(\".\", \",\");\r\n ponerComaALaMoneda = ponerComaALaMoneda.replace(\"#\", \".\");\r\n\r\n\r\n\r\n\r\n if (simbolo !== undefined && simbolo !== \"\") {\r\n ponerComaALaMoneda = ponerComaALaMoneda + \" \" + simbolo;\r\n }\r\n\r\n\r\n let buscarComa = ponerComaALaMoneda.indexOf(\",\");\r\n ponerComaALaMoneda = ponerComaALaMoneda.substr(0, buscarComa);\r\n\r\n return ponerComaALaMoneda;\r\n}\r\n\r\n\r\nexport function calcularImporteBruto(precio, cantidad) {\r\n let resultado = 0;\r\n\r\n let operacion = cantidad * precio;\r\n\r\n operacion = redondeo(operacion, 2);\r\n resultado = operacion\r\n\r\n return resultado\r\n}\r\n\r\nexport function calculoLineaFacturacion(cantidad, precio, DTO, iva) {\r\n let objetoLineaFacturacion = {\r\n cantidad: 0,\r\n precio: 0,\r\n descuento: 0,\r\n iva: 0,\r\n importeBruto: 0,\r\n importeDescuento: 0,\r\n baseImp: 0,\r\n impuesto: 0,\r\n total: 0\r\n }\r\n\r\n let resultadoImporteBruto = 0;\r\n let resultadoDescuento = 0;\r\n let resultadoBaseImp = 0;\r\n let resultadoImpuesto = 0;\r\n let resultadoTotal = 0;\r\n\r\n\r\n cantidad = cantidad === \"\" ? \"0\" : cantidad.toString();\r\n precio = precio === \"\" ? \"0\" : precio.toString();\r\n DTO = DTO === \"\" ? \"0\" : DTO.toString();\r\n iva = iva === \"\" ? \"0\" : iva.toString();\r\n\r\n\r\n\r\n cantidad = cantidad.replace(\",\", \".\");\r\n precio = precio.replace(\",\", \".\");\r\n DTO = DTO.replace(\",\", \".\");\r\n iva = iva.replace(\",\", \".\");\r\n\r\n cantidad = parseFloat(cantidad);\r\n precio = parseFloat(precio);\r\n DTO = parseFloat(DTO);\r\n iva = parseFloat(iva);\r\n\r\n resultadoImporteBruto = calcularImporteBruto(precio, cantidad);\r\n\r\n resultadoDescuento = calcularImporteDescuento(resultadoImporteBruto, DTO);\r\n resultadoBaseImp = calcularBaseImp(resultadoImporteBruto, resultadoDescuento);\r\n resultadoImpuesto = calcularImporteImpuesto(resultadoBaseImp, iva)\r\n resultadoTotal = resultadoBaseImp + resultadoImpuesto;\r\n\r\n resultadoImporteBruto = redondeo(resultadoImporteBruto, 2);\r\n resultadoDescuento = redondeo(resultadoDescuento, 2);\r\n resultadoBaseImp = redondeo(resultadoBaseImp, 2);\r\n resultadoImpuesto = redondeo(resultadoImpuesto, 2);\r\n resultadoTotal = redondeo(resultadoTotal, 2);\r\n\r\n\r\n objetoLineaFacturacion.cantidad = cantidad;\r\n objetoLineaFacturacion.precio = precio;\r\n objetoLineaFacturacion.descuento = DTO;\r\n objetoLineaFacturacion.iva = iva;\r\n objetoLineaFacturacion.importeBruto = resultadoImporteBruto;\r\n objetoLineaFacturacion.importeDescuento = resultadoDescuento;\r\n objetoLineaFacturacion.baseImp = resultadoBaseImp;\r\n objetoLineaFacturacion.impuesto = resultadoImpuesto;\r\n objetoLineaFacturacion.total = resultadoTotal;\r\n\r\n\r\n return objetoLineaFacturacion;\r\n}\r\n\r\nexport function asignarImportes(props, resultTotales) {\r\n props.payLoadLocal.VALOR_IVA_1 = resultTotales.iva_1\r\n props.payLoadLocal.VALOR_IVA_2 = resultTotales.iva_2\r\n props.payLoadLocal.VALOR_IVA_3 = resultTotales.iva_3\r\n props.payLoadLocal.IMPORTE_BRUTO_1 = resultTotales.importeBruto_1\r\n props.payLoadLocal.IMPORTE_BRUTO_2 = resultTotales.importeBruto_2\r\n props.payLoadLocal.IMPORTE_BRUTO_3 = resultTotales.importeBruto_3\r\n props.payLoadLocal.IMPORTE_BRUTO = resultTotales.importeBruto\r\n props.payLoadLocal.IMPORTE_DESCUENTOS_1 = resultTotales.importeDescuento_1\r\n props.payLoadLocal.IMPORTE_DESCUENTOS_2 = resultTotales.importeDescuento_2\r\n props.payLoadLocal.IMPORTE_DESCUENTOS_3 = resultTotales.importeDescuento_3\r\n props.payLoadLocal.IMPORTE_DESCUENTOS = resultTotales.importeDescuento\r\n props.payLoadLocal.IMPORTE_BASE_IMPONIBLE_1 = resultTotales.baseImp_1\r\n props.payLoadLocal.IMPORTE_BASE_IMPONIBLE_2 = resultTotales.baseImp_2\r\n props.payLoadLocal.IMPORTE_BASE_IMPONIBLE_3 = resultTotales.baseImp_3\r\n props.payLoadLocal.IMPORTE_BASE_IMPONIBLE = resultTotales.baseImp\r\n props.payLoadLocal.IMPORTE_IMPUESTOS_1 = resultTotales.impuesto_1\r\n props.payLoadLocal.IMPORTE_IMPUESTOS_2 = resultTotales.impuesto_2\r\n props.payLoadLocal.IMPORTE_IMPUESTOS_3 = resultTotales.impuesto_3\r\n props.payLoadLocal.IMPORTE_IMPUESTOS = resultTotales.impuesto\r\n props.payLoadLocal.IMPORTE_TOTAL_1 = resultTotales.total_1\r\n props.payLoadLocal.IMPORTE_TOTAL_2 = resultTotales.total_2\r\n props.payLoadLocal.IMPORTE_TOTAL_3 = resultTotales.total_3\r\n props.payLoadLocal.IMPORTE_TOTAL = resultTotales.total\r\n\r\n return props.payLoadLocal\r\n}\r\n\r\n\r\nexport function calculoTotalesPresupuesto(lineasManoObra, lineasArticulos) {\r\n let objetoTotalFacturacion = {\r\n iva_1: \"\",\r\n iva_2: \"\",\r\n iva_3: \"\",\r\n importeBruto_1: 0,\r\n importeBruto_2: 0,\r\n importeBruto_3: 0,\r\n importeBruto: 0,\r\n importeDescuento_1: 0,\r\n importeDescuento_2: 0,\r\n importeDescuento_3: 0,\r\n importeDescuento: 0,\r\n baseImp_1: 0,\r\n baseImp_2: 0,\r\n baseImp_3: 0,\r\n baseImp: 0,\r\n impuesto_1: 0,\r\n impuesto_2: 0,\r\n impuesto_3: 0,\r\n impuesto: 0,\r\n total_1: 0,\r\n total_2: 0,\r\n total_3: 0,\r\n total: 0\r\n }\r\n\r\n\r\n let totalLinea = lineasManoObra.concat(lineasArticulos);\r\n let result = [];\r\n totalLinea.reduce(function (res, value) {\r\n if (!res[value.IVA_VALOR]) {\r\n res[value.IVA_VALOR] = {\r\n IVA_VALOR: value.IVA_VALOR, IMPORTE_BRUTO: 0, IMPORTE_DESCUENTOS: 0,\r\n IMPORTE_BASE_IMPONIBLE: 0, IMPORTE_IMPUESTOS: 0, IMPORTE_TOTAL: 0\r\n };\r\n result.push(res[value.IVA_VALOR])\r\n }\r\n res[value.IVA_VALOR].IMPORTE_BRUTO += value.IMPORTE_BRUTO;\r\n res[value.IVA_VALOR].IMPORTE_DESCUENTOS += value.IMPORTE_DESCUENTOS;\r\n res[value.IVA_VALOR].IMPORTE_BASE_IMPONIBLE += value.IMPORTE_BASE_IMPONIBLE;\r\n res[value.IVA_VALOR].IMPORTE_IMPUESTOS += value.IMPORTE_IMPUESTOS;\r\n res[value.IVA_VALOR].IMPORTE_TOTAL += value.IMPORTE_TOTAL;\r\n\r\n return res;\r\n }, {});\r\n\r\n if (result.length > 0) {\r\n objetoTotalFacturacion.iva_1 = result[0].IVA_VALOR\r\n objetoTotalFacturacion.importeBruto_1 = result[0].IMPORTE_BRUTO\r\n objetoTotalFacturacion.importeDescuento_1 = result[0].IMPORTE_DESCUENTOS\r\n objetoTotalFacturacion.baseImp_1 = result[0].IMPORTE_BASE_IMPONIBLE\r\n objetoTotalFacturacion.impuesto_1 = result[0].IMPORTE_IMPUESTOS\r\n objetoTotalFacturacion.total_1 = result[0].IMPORTE_TOTAL\r\n } else {\r\n\r\n objetoTotalFacturacion.iva_1 = \"\"\r\n objetoTotalFacturacion.importeBruto_1 = \"\"\r\n objetoTotalFacturacion.importeDescuento_1 = \"\"\r\n objetoTotalFacturacion.baseImp_1 = \"\"\r\n objetoTotalFacturacion.impuesto_1 = \"\"\r\n objetoTotalFacturacion.total_1 = \"\"\r\n }\r\n\r\n if (result.length > 1) {\r\n objetoTotalFacturacion.iva_2 = result[1].IVA_VALOR\r\n objetoTotalFacturacion.importeBruto_2 = result[1].IMPORTE_BRUTO\r\n objetoTotalFacturacion.importeDescuento_2 = result[1].IMPORTE_DESCUENTOS\r\n objetoTotalFacturacion.baseImp_2 = result[1].IMPORTE_BASE_IMPONIBLE\r\n objetoTotalFacturacion.impuesto_2 = result[1].IMPORTE_IMPUESTOS\r\n objetoTotalFacturacion.total_2 = result[1].IMPORTE_TOTAL\r\n } else {\r\n objetoTotalFacturacion.iva_2 = \"\"\r\n objetoTotalFacturacion.importeBruto_2 = \"\"\r\n objetoTotalFacturacion.importeDescuento_2 = \"\"\r\n objetoTotalFacturacion.baseImp_2 = \"\"\r\n objetoTotalFacturacion.impuesto_2 = \"\"\r\n objetoTotalFacturacion.total_2 = \"\"\r\n }\r\n\r\n if (result.length > 2) {\r\n objetoTotalFacturacion.iva_3 = result[2].IVA_VALOR\r\n objetoTotalFacturacion.importeBruto_3 = result[2].IMPORTE_BRUTO\r\n objetoTotalFacturacion.importeDescuento_3 = result[2].IMPORTE_DESCUENTOS\r\n objetoTotalFacturacion.baseImp_3 = result[2].IMPORTE_BASE_IMPONIBLE\r\n objetoTotalFacturacion.impuesto_3 = result[2].IMPORTE_IMPUESTOS\r\n objetoTotalFacturacion.total_3 = result[2].IMPORTE_TOTAL\r\n } else {\r\n objetoTotalFacturacion.iva_3 = \"\"\r\n objetoTotalFacturacion.importeBruto_3 = \"\"\r\n objetoTotalFacturacion.importeDescuento_3 = \"\"\r\n objetoTotalFacturacion.baseImp_3 = \"\"\r\n objetoTotalFacturacion.impuesto_3 = \"\"\r\n objetoTotalFacturacion.total_3 = \"\"\r\n }\r\n\r\n if (result.length > 0) {\r\n objetoTotalFacturacion.importeBruto = objetoTotalFacturacion.importeBruto + objetoTotalFacturacion.importeBruto_1\r\n objetoTotalFacturacion.importeDescuento = objetoTotalFacturacion.importeDescuento + objetoTotalFacturacion.importeDescuento_1\r\n objetoTotalFacturacion.baseImp = objetoTotalFacturacion.baseImp + objetoTotalFacturacion.baseImp_1\r\n objetoTotalFacturacion.impuesto = objetoTotalFacturacion.impuesto + objetoTotalFacturacion.impuesto_1\r\n objetoTotalFacturacion.total = objetoTotalFacturacion.total + objetoTotalFacturacion.total_1\r\n } else {\r\n objetoTotalFacturacion.importeBruto = \"\"\r\n objetoTotalFacturacion.importeDescuento = \"\"\r\n objetoTotalFacturacion.baseImp = \"\"\r\n objetoTotalFacturacion.impuesto = \"\"\r\n objetoTotalFacturacion.total = \"\"\r\n }\r\n\r\n if (result.length > 1) {\r\n objetoTotalFacturacion.importeBruto = objetoTotalFacturacion.importeBruto + objetoTotalFacturacion.importeBruto_2\r\n objetoTotalFacturacion.importeDescuento = objetoTotalFacturacion.importeDescuento + objetoTotalFacturacion.importeDescuento_2\r\n objetoTotalFacturacion.baseImp = objetoTotalFacturacion.baseImp + objetoTotalFacturacion.baseImp_2\r\n objetoTotalFacturacion.impuesto = objetoTotalFacturacion.impuesto + objetoTotalFacturacion.impuesto_2\r\n objetoTotalFacturacion.total = objetoTotalFacturacion.total + objetoTotalFacturacion.total_2\r\n }\r\n\r\n if (result.length > 2) {\r\n objetoTotalFacturacion.importeBruto = objetoTotalFacturacion.importeBruto + objetoTotalFacturacion.importeBruto_3\r\n objetoTotalFacturacion.importeDescuento = objetoTotalFacturacion.importeDescuento + objetoTotalFacturacion.importeDescuento_3\r\n objetoTotalFacturacion.baseImp = objetoTotalFacturacion.baseImp + objetoTotalFacturacion.baseImp_3\r\n objetoTotalFacturacion.impuesto = objetoTotalFacturacion.impuesto + objetoTotalFacturacion.impuesto_3\r\n objetoTotalFacturacion.total = objetoTotalFacturacion.total + objetoTotalFacturacion.total_3\r\n }\r\n\r\n\r\n\r\n objetoTotalFacturacion.importeBruto = objetoTotalFacturacion.importeBruto === \"\" ? objetoTotalFacturacion.importeBruto : convertirMoneda(objetoTotalFacturacion.importeBruto, \"€\");\r\n objetoTotalFacturacion.importeBruto_1 = objetoTotalFacturacion.importeBruto_1 === \"\" ? objetoTotalFacturacion.importeBruto_1 : convertirMoneda(objetoTotalFacturacion.importeBruto_1, \"€\");\r\n objetoTotalFacturacion.importeBruto_2 = objetoTotalFacturacion.importeBruto_2 === \"\" ? objetoTotalFacturacion.importeBruto_2 : convertirMoneda(objetoTotalFacturacion.importeBruto_2, \"€\");\r\n objetoTotalFacturacion.importeBruto_3 = objetoTotalFacturacion.importeBruto_3 === \"\" ? objetoTotalFacturacion.importeBruto_3 : convertirMoneda(objetoTotalFacturacion.importeBruto_3, \"€\");\r\n\r\n objetoTotalFacturacion.importeDescuento = objetoTotalFacturacion.importeDescuento === \"\" ? objetoTotalFacturacion.importeDescuento : convertirMoneda(objetoTotalFacturacion.importeDescuento, \"€\");\r\n objetoTotalFacturacion.importeDescuento_1 = objetoTotalFacturacion.importeDescuento_1 === \"\" ? objetoTotalFacturacion.importeDescuento_1 : convertirMoneda(objetoTotalFacturacion.importeDescuento_1, \"€\");\r\n objetoTotalFacturacion.importeDescuento_2 = objetoTotalFacturacion.importeDescuento_2 === \"\" ? objetoTotalFacturacion.importeDescuento_2 : convertirMoneda(objetoTotalFacturacion.importeDescuento_2, \"€\");\r\n objetoTotalFacturacion.importeDescuento_3 = objetoTotalFacturacion.importeDescuento_3 === \"\" ? objetoTotalFacturacion.importeDescuento_3 : convertirMoneda(objetoTotalFacturacion.importeDescuento_3, \"€\");\r\n\r\n objetoTotalFacturacion.baseImp = objetoTotalFacturacion.baseImp === \"\" ? objetoTotalFacturacion.baseImp : convertirMoneda(objetoTotalFacturacion.baseImp, \"€\");\r\n objetoTotalFacturacion.baseImp_1 = objetoTotalFacturacion.baseImp_1 === \"\" ? objetoTotalFacturacion.baseImp_1 : convertirMoneda(objetoTotalFacturacion.baseImp_1, \"€\");\r\n objetoTotalFacturacion.baseImp_2 = objetoTotalFacturacion.baseImp_2 === \"\" ? objetoTotalFacturacion.baseImp_2 : convertirMoneda(objetoTotalFacturacion.baseImp_2, \"€\");\r\n objetoTotalFacturacion.baseImp_3 = objetoTotalFacturacion.baseImp_3 === \"\" ? objetoTotalFacturacion.baseImp_3 : convertirMoneda(objetoTotalFacturacion.baseImp_3, \"€\");\r\n\r\n\r\n objetoTotalFacturacion.impuesto = objetoTotalFacturacion.impuesto === \"\" ? objetoTotalFacturacion.impuesto : convertirMoneda(objetoTotalFacturacion.impuesto, \"€\");\r\n objetoTotalFacturacion.impuesto_1 = objetoTotalFacturacion.impuesto_1 === \"\" ? objetoTotalFacturacion.impuesto_1 : convertirMoneda(objetoTotalFacturacion.impuesto_1, \"€\");\r\n objetoTotalFacturacion.impuesto_2 = objetoTotalFacturacion.impuesto_2 === \"\" ? objetoTotalFacturacion.impuesto_2 : convertirMoneda(objetoTotalFacturacion.impuesto_2, \"€\");\r\n objetoTotalFacturacion.impuesto_3 = objetoTotalFacturacion.impuesto_3 === \"\" ? objetoTotalFacturacion.impuesto_3 : convertirMoneda(objetoTotalFacturacion.impuesto_3, \"€\");\r\n\r\n objetoTotalFacturacion.total = objetoTotalFacturacion.total === \"\" ? objetoTotalFacturacion.total : convertirMoneda(objetoTotalFacturacion.total, \"€\");\r\n\r\n\r\n objetoTotalFacturacion.iva_1 = objetoTotalFacturacion.iva_1 === \"\" ? objetoTotalFacturacion.iva_1 : convertirMoneda(objetoTotalFacturacion.iva_1, \"%\");\r\n objetoTotalFacturacion.iva_2 = objetoTotalFacturacion.iva_2 === \"\" ? objetoTotalFacturacion.iva_2 : convertirMoneda(objetoTotalFacturacion.iva_2, \"%\");\r\n objetoTotalFacturacion.iva_3 = objetoTotalFacturacion.iva_3 === \"\" ? objetoTotalFacturacion.iva_3 : convertirMoneda(objetoTotalFacturacion.iva_3, \"%\");\r\n\r\n return objetoTotalFacturacion;\r\n}\r\n\r\n\r\nexport function calcularImporteDescuento(precio, descuento) {\r\n let des = ((precio * descuento) / 100);\r\n return des\r\n}\r\n\r\nexport function calcularBaseImp(bruto, descuento) {\r\n let valor = bruto - descuento\r\n return valor;\r\n}\r\n\r\nexport function calcularImporteImpuesto(precio, iva) {\r\n let imp = ((precio * iva) / 100);\r\n return imp\r\n}\r\n\r\n\r\nexport function redondeo(num, numDec) {\r\n num = num * Math.pow(10, numDec)\r\n num = Math.round(num)\r\n num = num / Math.pow(10, numDec)\r\n return num\r\n}\r\n\r\nexport function verificarMatricula(matricula) {\r\n\r\n let expresion = \"^[A-Za-z0-9]{1,50}$\";\r\n let regExpMatricula = new RegExp(expresion);\r\n let esOk = true;\r\n\r\n if (!regExpMatricula.test(matricula.toUpperCase())) {\r\n esOk = false\r\n }\r\n return esOk;\r\n}\r\n\r\n\r\n\r\n\r\nexport function obtenerParametrosPorQueryString(params = \"\") {\r\n let rawParams = params.replace(\"?\", \"\").split(\"&\");\r\n let extractedParams = {};\r\n if (params !== \"\") {\r\n rawParams.forEach((item) => {\r\n item = item.split(\"=\");\r\n extractedParams[item[0]] = item[1];\r\n });\r\n } else {\r\n extractedParams = null;\r\n }\r\n\r\n return extractedParams;\r\n}\r\n\r\n\r\n\r\nexport function copiarAlPortapapeles(idTag) {\r\n var codigoACopiar = document.getElementById(idTag); //Elemento a copiar\r\n //Debe estar seleccionado en la página para que surta efecto, así que...\r\n var seleccion = document.createRange(); //Creo una nueva selección vacía\r\n seleccion.selectNodeContents(codigoACopiar); //incluyo el nodo en la selección\r\n //Antes de añadir el intervalo de selección a la selección actual, elimino otros que pudieran existir (sino no funciona en Edge)\r\n window.getSelection().removeAllRanges();\r\n window.getSelection().addRange(seleccion); //Y la añado a lo seleccionado actualmente\r\n try {\r\n var res = document.execCommand('copy'); //Intento el copiado\r\n if (res) {\r\n MSGOK(\"¡¡Texto copiado al portapapeles!!\", \"bottom-right\")\r\n } else {\r\n MSGERROR(\"¡¡Ha fallado el copiado al portapapeles!!\", \"bottom-right\")\r\n\r\n }\r\n }\r\n catch (ex) {\r\n alertify.set('notifier', 'position', 'top-left');\r\n alertify.error(\"Se ha producido un error al copiar al portapaples\");\r\n }\r\n window.getSelection().removeRange(seleccion);\r\n}\r\n\r\n\r\nexport function getTwoDigits(value) {\r\n return value < 10 ? `0${value}` : value;\r\n}\r\n\r\n\r\nexport function obtenerFechaLocal(esMesAnterior) {\r\n let date = new Date();\r\n\r\n let day = getTwoDigits(date.getDate());\r\n let month = getTwoDigits(esMesAnterior ? date.getMonth() : date.getMonth() + 1);\r\n let year = date.getFullYear();\r\n\r\n return `${year}-${month}-${day}`;\r\n}\r\n\r\n\r\nexport function obtenerFechaLocalObjeto(esMesAnterior) {\r\n let resultado = {};\r\n let date = new Date();\r\n\r\n let day = getTwoDigits(date.getDate());\r\n let month = getTwoDigits(esMesAnterior ? date.getMonth() : date.getMonth() + 1);\r\n let year = date.getFullYear();\r\n resultado = { \"DIA\": day, \"MES\": month, \"ANIO\": year }\r\n\r\n return resultado;\r\n}\r\n\r\nexport function obtenerFechaYHora(esMesAnterior) {\r\n let date = new Date();\r\n\r\n let day = getTwoDigits(date.getDate());\r\n let month = getTwoDigits(esMesAnterior ? date.getMonth() : date.getMonth() + 1);\r\n let year = date.getFullYear();\r\n let hour = getTwoDigits(date.getHours());\r\n let minute = getTwoDigits(date.getMinutes());\r\n let seconds = getTwoDigits(date.getSeconds());\r\n let formato = day + \"/\" + month + \"/\" + year + \"_\" + hour + \":\" + minute + \":\" + seconds\r\n\r\n return formato;\r\n}\r\n\r\nexport function nuevoFormatoFechaCliente(fecha) {\r\n var pattern = /^(\\d{1,2})\\/(\\d{1,2})\\/(\\d{4})$/;\r\n var arrayDate = fecha.match(pattern);\r\n /*\r\n var dt = new Date(arrayDate[3], arrayDate[2] - 1, arrayDate[1]);\r\n\r\n var diaActual = new Date(fecha);\r\n var day = diaActual.getDate() < 10 ? \"0\" + diaActual.getDate() : diaActual.getDate();\r\n var month = (diaActual.getMonth() + 1) < 10 ? \"0\" + (diaActual.getMonth() + 1) : (diaActual.getMonth() + 1);\r\n var year = diaActual.getFullYear();\r\n\r\n var hora = diaActual.getHours() < 10 ? \"0\" + diaActual.getHours() : diaActual.getHours();\r\n var minutos = diaActual.getMinutes() < 10 ? \"0\" + diaActual.getMinutes() : diaActual.getMinutes();\r\n*/\r\n return `${arrayDate[3]}-${arrayDate[2]}-${arrayDate[1]}`;\r\n}\r\n\r\n\r\n\r\nexport function efectoLadoDeMontaje(id) {\r\n let estaActivo = false;\r\n if (document.getElementById(id) !== null) {\r\n if (document.getElementById(id).style.opacity !== \"\") {\r\n document.getElementById(id).style.opacity = \"\";\r\n estaActivo = true;\r\n } else {\r\n document.getElementById(id).style.opacity = \"0.5\";\r\n }\r\n }\r\n return estaActivo\r\n}\r\n\r\n\r\nexport function filtroTree(palabra) {\r\n let treeOriginal = store.getState().listaEstructura;\r\n let nodosEncontrados = [];\r\n if (palabra.length >= 3) {\r\n treeOriginal.find(function (nodo, i) {\r\n if (nodo.Term.toLowerCase().includes(palabra.toLowerCase())) {\r\n if (nodo.NIVEL > 1) {\r\n let continuarBuscando = true;\r\n let nodosHijos = [];\r\n let nodoParent = nodo.NODE_ID_PARENT;\r\n do {\r\n let existenNodos = treeOriginal.find(registro => registro.NODE_ID === nodoParent)\r\n if (existenNodos !== undefined) {\r\n if (existenNodos.NIVEL === 1) {\r\n continuarBuscando = false;\r\n } else {\r\n continuarBuscando = true;\r\n nodoParent = existenNodos.NODE_ID_PARENT\r\n }\r\n nodosHijos.push(existenNodos)\r\n } else {\r\n continuarBuscando = false;\r\n }\r\n } while (continuarBuscando);\r\n nodosHijos.push(nodo)\r\n nodosHijos.sort(dynamicSortAsc(\"NIVEL\"))\r\n nodosEncontrados.push(nodosHijos)\r\n }\r\n }\r\n })\r\n }\r\n\r\n store.dispatch({\r\n type: \"REGISTRO_FILTRO_TREE\",\r\n openFiltroTree: nodosEncontrados.length > 0 ? true : false,\r\n registrosFiltro: nodosEncontrados\r\n })\r\n}\r\n\r\nexport function obtenerLineasPorTipo(registros, tipoLinea) {\r\n if (registros.length === 0) {\r\n return []\r\n } else {\r\n registros.map((linea, i) => {\r\n linea.ID = i + 1\r\n })\r\n return registros.filter(registro => registro.TIPO_LINEA === tipoLinea)\r\n }\r\n}\r\n\r\n\r\nexport function descargarPdfPasandoBase64(base64String) {\r\n const linkSource = `data:application/pdf;base64,${base64String}`;\r\n const downloadLink = document.createElement(\"a\");\r\n const fechaFichero = obtenerFechaYHora();\r\n const fileName = \"Documento\" + fechaFichero + \".pdf\";\r\n\r\n downloadLink.href = linkSource;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n}\r\n\r\n\r\nexport function descargarDocPasandoBase64Generico(base64String, nombre) {\r\n const linkSource = base64String;\r\n const downloadLink = document.createElement(\"a\");\r\n const fileName = nombre;\r\n\r\n downloadLink.href = linkSource;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n}\r\nexport function crearLineasParaElPresupuesto(registro, tipoDeLinea) {\r\n let lineas = [];\r\n let obtenerReferencia = registro;\r\n let listaStore = store.getState().PresupuestoTallerSeleccionado;\r\n\r\n //Verificar si no hay iva por defecto\r\n let datosFacturacion = store.getState().datosFacturacion;\r\n let ivaPorDefecto = datosFacturacion.ivaPorDefecto\r\n let precioManoObra = datosFacturacion.manoObraPorDecto\r\n let lineFacturacion = {};\r\n let payLoadArticulo = {};\r\n let payLoadManoObra = {};\r\n\r\n if (tipoDeLinea === \"A\") {\r\n //ARTICULO\r\n lineFacturacion = calculoLineaFacturacion(1, obtenerReferencia.PRECIO, 0, ivaPorDefecto)\r\n payLoadArticulo = {\r\n ORDEN_LINEA: 0,\r\n ID_PRESUPUESTO: null,\r\n TIPO_LINEA: \"A\",\r\n REFERENCIA_SOCIO: obtenerReferencia.REFERENCIA_PROVEEDOR,\r\n REFERENCIA_TECDOC: obtenerReferencia.REFERENCIA,\r\n MARCA_SOCIO: obtenerReferencia.CODIGO_MARCA_ERP,\r\n MARCA_SOCIO_DESCRIPCION: obtenerReferencia.NOMRE_MARCA,\r\n MARCA_TECDOC: obtenerReferencia.CODIGO_MARCA,\r\n MARCA_TECDOC_DESCRIPCION: obtenerReferencia.NOMRE_MARCA,\r\n REFERENCIA_DESCRIPCION: obtenerReferencia.NOMBRE_GRUPO_MONTAJE,\r\n MANO_OBRA: \"\",\r\n PRECIO: obtenerReferencia.PRECIO,\r\n IVA_VALOR: datosFacturacion.ivaPorDefecto,\r\n DTO_VALOR: 0,\r\n CANTIDAD: 1.00,\r\n IMPORTE_BRUTO: lineFacturacion.importeBruto,\r\n IMPORTE_DESCUENTOS: lineFacturacion.importeDescuento,\r\n IMPORTE_BASE_IMPONIBLE: lineFacturacion.baseImp,\r\n IMPORTE_IMPUESTOS: lineFacturacion.impuesto,\r\n IMPORTE_TOTAL: lineFacturacion.total,\r\n ID: 0\r\n }\r\n\r\n\r\n if (listaStore.presupuestoSecundario.length > 0) {\r\n lineas = listaStore.presupuestoSecundario;\r\n lineas.push(payLoadArticulo)\r\n store.dispatch({ type: \"UPDATE_LISTA_PRESUPUESTO_SECUNDARIO\", presupuestoSecundario: lineas })\r\n\r\n } else {\r\n lineas.push(payLoadArticulo)\r\n store.dispatch({ type: \"UPDATE_LISTA_PRESUPUESTO_SECUNDARIO\", presupuestoSecundario: lineas })\r\n }\r\n\r\n\r\n MSGOK(\"Referencia agregada correctamnete\")\r\n } else {\r\n //MANO DE OBRRA\r\n let lineFacturacionManoObra = calculoLineaFacturacion(registro.Tiempo, precioManoObra, 0, ivaPorDefecto)\r\n let manoObraTotal = registro.Descripcion;\r\n\r\n if (registro.TAREAS_REPARACION.length > 0) {\r\n manoObraTotal = manoObraTotal + '
' + '';\r\n registro.TAREAS_REPARACION.map(tarea => {\r\n manoObraTotal = manoObraTotal + '- ' + tarea.Descripcion + '
';\r\n })\r\n manoObraTotal = manoObraTotal + '
';\r\n }\r\n\r\n payLoadManoObra = {\r\n ORDEN_LINEA: 0,\r\n ID_PRESUPUESTO: null,\r\n TIPO_LINEA: \"T\",\r\n REFERENCIA_SOCIO: \"\",\r\n REFERENCIA_TECDOC: \"\",\r\n MARCA_SOCIO: \"\",\r\n MARCA_SOCIO_DESCRIPCION: \"\",\r\n MARCA_TECDOC: \"\",\r\n MARCA_TECDOC_DESCRIPCION: \"\",\r\n REFERENCIA_DESCRIPCION: \"\",\r\n MANO_OBRA: manoObraTotal,\r\n PRECIO: precioManoObra,\r\n IVA_VALOR: ivaPorDefecto,\r\n DTO_VALOR: 0,\r\n CANTIDAD: registro.Tiempo,\r\n IMPORTE_BRUTO: lineFacturacionManoObra.importeBruto,\r\n IMPORTE_DESCUENTOS: lineFacturacionManoObra.importeDescuento,\r\n IMPORTE_BASE_IMPONIBLE: lineFacturacionManoObra.baseImp,\r\n IMPORTE_IMPUESTOS: lineFacturacionManoObra.impuesto,\r\n IMPORTE_TOTAL: lineFacturacionManoObra.total,\r\n ID: 0\r\n }\r\n\r\n\r\n if (listaStore.presupuestoSecundario.length > 0) {\r\n lineas = listaStore.presupuestoSecundario;\r\n lineas.push(payLoadManoObra)\r\n store.dispatch({ type: \"UPDATE_LISTA_PRESUPUESTO_SECUNDARIO\", presupuestoSecundario: lineas })\r\n\r\n } else {\r\n lineas.push(payLoadManoObra)\r\n store.dispatch({ type: \"UPDATE_LISTA_PRESUPUESTO_SECUNDARIO\", presupuestoSecundario: lineas })\r\n }\r\n\r\n MSGOK(\"Referencia agregada correctamnete\")\r\n\r\n }\r\n}\r\n\r\n\r\nexport function convertirMonedaANumero(moneda) {\r\n let resultado = 0;\r\n if (moneda !== 0) {\r\n resultado = moneda.replace(\".\", \"\");\r\n resultado = resultado.replace(\",\", \".\");\r\n resultado = resultado.replace(\"€\", \"\");\r\n resultado = resultado.replace(\" \", \"\");\r\n }\r\n return resultado;\r\n}\r\n\r\n\r\nexport function verificarSiEsMostrador() {\r\n let esMostrador = false;\r\n esMostrador = store.getState().usuario.LoginSertec === undefined ? false : store.getState().usuario.LoginSertec.List_LicenciaSERTE !== null ? store.getState().usuario.LoginSertec.List_LicenciaSERTE[0].MOSTRADOR : false;\r\n\r\n return esMostrador\r\n}\r\n\r\n\r\nexport function obtenerNombreDeSocio(USUARIO) {\r\n let NOMBRE_SOCIO = \"\"\r\n if (Object.keys(USUARIO).length > 0) {\r\n if (USUARIO !== undefined) {\r\n if (USUARIO.ID_ROL === 2) {\r\n NOMBRE_SOCIO = USUARIO.NOMBRE_ROL;\r\n } else {\r\n if (USUARIO.SOCIOS !== null || USUARIO !== undefined ? USUARIO.SOCIOS.length > 0 : false) {\r\n NOMBRE_SOCIO = USUARIO.SOCIOS[0].NOMBRE_SOCIO;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return NOMBRE_SOCIO\r\n}\r\n\r\n\r\n\r\nexport function recortarCadena(cadena, tamanyo, caracter) {\r\n if (cadena === undefined || cadena === null) {\r\n return cadena;\r\n } else {\r\n if (cadena.length < tamanyo) {\r\n return cadena;\r\n }\r\n\r\n let retorno = cadena.substring(0, tamanyo);\r\n\r\n if (caracter !== null || caracter !== \"\") {\r\n retorno = retorno + caracter;\r\n }\r\n return retorno;\r\n }\r\n}\r\n\r\nexport function ordenarTablaLocal(tipoFiltro, registros, campoAFiltrar) {\r\n\r\n let lista = tipoFiltro === \"ASC\" ? registros.sort(dynamicSortAsc(campoAFiltrar)) : registros.sort(dynamicSortDesc(campoAFiltrar));\r\n\r\n return lista;\r\n}\r\n\r\nexport function decode_utf8(s) {\r\n return decodeURIComponent(escape(s));\r\n}\r\n\r\n\r\nexport const colorFondoMedia = (media) => {\r\n if (media < 25) { return \"#f9c9c9\" }\r\n if (media >= 25 && media < 50) { return \"#f5d698\" }\r\n if (media >= 50 && media < 75) { return \"#f5f5b4\" }\r\n if (media >= 75) { return \"#e7f9c9\" }\r\n\r\n}\r\n\r\n\r\n\r\nexport function obtenerLicenciaLocal() {\r\n let registro = store.getState().usuario;\r\n\r\n if (Object.keys(registro).length > 0) {\r\n registro = registro.USUARIO\r\n } else {\r\n\r\n registro = {\r\n ID_USUARIO: \"\",\r\n USUARIO: \"\",\r\n PWD: \"\",\r\n ID_TALLER: \"\",\r\n NOMBRE_TALLER: \"\",\r\n RAZON_TALLER: \"\",\r\n ID_SOCIO: \"\",\r\n RAZON_SOCIO: \"\",\r\n ID_IDIOMA: \"\",\r\n ID_IDIOMA_TECDOC: \"\",\r\n CODIGO_IDIOMA: \"\",\r\n IDIOMA: \"\",\r\n REGIONAL_IDIOMA: \"\",\r\n BAJA: \"\"\r\n }\r\n }\r\n\r\n return registro;\r\n}\r\n\r\n\r\nexport const verificarExtension = (EXTENSION) => {\r\n let resultado = {\r\n ID_TIPO: 7,\r\n TIPO: \"desconocido.png\",\r\n ES_EXTENSION_PERMITIDA: true\r\n }\r\n switch (EXTENSION.toUpperCase()) {\r\n case \"PNG\": case \"JPG\": case \"JPEG\":\r\n resultado.ID_TIPO = 1\r\n resultado.TIPO = \"imagen.png\"\r\n break;\r\n case \"PDF\":\r\n resultado.ID_TIPO = 2\r\n resultado.TIPO = \"pdf.png\"\r\n break;\r\n case \"XLSX\": case \"XLSM\": case \"XLSB\": case \"XLTX\": case \"CSV\":\r\n resultado.ID_TIPO = 3\r\n resultado.TIPO = \"excel.png\"\r\n break;\r\n case \"DOCX\":\r\n resultado.ID_TIPO = 4\r\n resultado.TIPO = \"word.png\"\r\n break;\r\n case \"MP4\": case \"MOV\": case \"WMV\": case \"MKV\":\r\n resultado.ID_TIPO = 5\r\n resultado.TIPO = \"video.png\"\r\n break;\r\n case \"ZIP\": case \"RAR\":\r\n resultado.ID_TIPO = 6\r\n resultado.TIPO = \"comprimido.png\"\r\n break;\r\n default:\r\n resultado.ID_TIPO = 7\r\n resultado.TIPO = \"desconocido.png\"\r\n resultado.ES_EXTENSION_PERMITIDA = false\r\n break;\r\n }\r\n\r\n return resultado;\r\n}\r\n\r\n\r\nexport const generateUUID = () => {\r\n let d = new Date().getTime();\r\n let uuid = 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n let r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n return uuid;\r\n}\r\n\r\n\r\n\r\nexport const buscarVehiculoLocal = async (codmotorizacion) => {\r\n let VEHICULO = {\r\n MATRICULA: \"\",\r\n BASTIDOR: \"\",\r\n MARCA_VEHICULO: \"\",\r\n MODELO_VEHICULO: \"\",\r\n MOTOR_VEHICULO: \"\",\r\n VEHICULO_TECDOC: {}\r\n }\r\n // const { VEHICULO_SERTEC } = store.getState().fichaBusquedaVehiculo;\r\n\r\n codmotorizacion = codmotorizacion.toString();\r\n if (codmotorizacion !== \"\") {\r\n const resultado = await obtener_vehiculoEnAPI(codmotorizacion);\r\n const { MARCA, MODELO, MOTORIZACION } = await resultado;\r\n VEHICULO.MARCA_VEHICULO = MARCA;\r\n VEHICULO.MODELO_VEHICULO = MODELO;\r\n VEHICULO.MOTOR_VEHICULO = MOTORIZACION;\r\n VEHICULO.VEHICULO_TECDOC = resultado;\r\n }\r\n\r\n /*\r\n if (Object.keys(VEHICULO_SERTEC).length > 0) {\r\n const { TIPO_BUSQUEDA, MATRICULA, OK, IDENTIFICADOR } = VEHICULO_SERTEC;\r\n if (OK) {\r\n VEHICULO.MATRICULA = TIPO_BUSQUEDA === \"MATRICULA\" ? MATRICULA.Matricula : \"\";\r\n VEHICULO.BASTIDOR = TIPO_BUSQUEDA === \"MATRICULA\" ? MATRICULA.Bastidor : IDENTIFICADOR;\r\n }\r\n }\r\n */\r\n\r\n return VEHICULO;\r\n}\r\n\r\n\r\n\r\n\r\nexport const construirFecha = (codigoMes, Anio, condiciones) => {\r\n let fechaLocal = obtenerFechaLocalObjeto(false);\r\n let crearFecha = \"\"\r\n\r\n if (condiciones.DESDE === 4 && condiciones.HASTA === 5) {\r\n crearFecha = fechaLocal.DIA + \"/\" + codigoMes + \"/\" + Anio\r\n } else if (condiciones.DESDE === 0 && condiciones.HASTA === 1) {\r\n crearFecha = \"01\" + \"/\" + codigoMes + \"/\" + Anio\r\n } else if (condiciones.DESDE === 2 && condiciones.HASTA === 3) {\r\n crearFecha = \"01\" + \"/\" + \"01\" + \"/\" + Anio\r\n }\r\n\r\n return crearFecha;\r\n}\r\n\r\n\r\n\r\nexport function obtenerIdioma(CODIGO_IDIOMA) {\r\n let pais = { IDIOMA: \"ESP\", PAIS: \"ESPAÑA\" }\r\n switch (CODIGO_IDIOMA.trim()) {\r\n case \"E\":\r\n pais.IDIOMA = \"ESP\";\r\n pais.PAIS = \"ESPAÑA\";\r\n break;\r\n case \"P\":\r\n pais.IDIOMA = \"POR\";\r\n pais.PAIS = \"PORTUGAL\";\r\n break;\r\n case \"F\":\r\n pais.IDIOMA = \"FRA\";\r\n pais.PAIS = \"FRANCIA\";\r\n break;\r\n case \"A\":\r\n pais.IDIOMA = \"ALE\";\r\n pais.PAIS = \"ALEMANIA\";\r\n break;\r\n case \"I\":\r\n pais.IDIOMA = \"ITA\";\r\n pais.PAIS = \"ITALIA\";\r\n break;\r\n case \"N\":\r\n pais.IDIOMA = \"REN\";\r\n pais.PAIS = \"REINO UNIDO\";\r\n break;\r\n case \"S\":\r\n pais.IDIOMA = \"FRA\";\r\n pais.PAIS = \"SUIZA\";\r\n break;\r\n\r\n case \"Z\":\r\n pais.IDIOMA = \"ALE\";\r\n pais.PAIS = \"SUIZA\";\r\n break;\r\n\r\n default:\r\n pais.IDIOMA = \"ESP\";\r\n pais.PAIS = \"ESPAÑA\";\r\n break;\r\n }\r\n return pais;\r\n}\r\n\r\nexport function convertirTextoBastidor(BASTIDOR) {\r\n let MODIFICAR_VISTA = BASTIDOR\r\n\r\n\r\n if (MODIFICAR_VISTA !== undefined && MODIFICAR_VISTA !== null && MODIFICAR_VISTA !== \"\") {\r\n MODIFICAR_VISTA = MODIFICAR_VISTA.substring(0, MODIFICAR_VISTA.length - 5) + \"*****\"\r\n }\r\n\r\n\r\n return MODIFICAR_VISTA\r\n\r\n}\r\n","\r\nimport store from '../store'\r\nimport { getDateToday } from \"../librerias/herramientas\"\r\nimport alertify from 'alertifyjs'\r\nimport { obtenerPaginas } from '../librerias/funciones'\r\n\r\n\r\nconst changeDimensionsApp = (width, height) => {\r\n return {\r\n type: \"CHANGE_DIMENSIONS_APP\",\r\n width,\r\n height\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nconst updateStateMasterPage = (estado) => {\r\n return {\r\n type: \"HANDLE_STATE_MASTER_PAGE\",\r\n showmasterpage: estado\r\n }\r\n}\r\n\r\n\r\nconst cambioImagenPais = (event) => {\r\n let banderaActual = event.textContent.trim() === \"PORTUGAL\" ? \"./imagenes/POR.png\" : event.textContent.trim() === \"FRANCIA\" ? \"./imagenes/FRA.png\" : \"./imagenes/ESP.png\"\r\n let etiqueta = document.getElementById(\"paisVehiculo\");\r\n if (etiqueta !== undefined) {\r\n let att = document.createAttribute(\"title\");\r\n att.value = event.textContent.trim();\r\n etiqueta.setAttributeNode(att);\r\n }\r\n\r\n return {\r\n type: \"REPLACE_BANDERA_PAIS\",\r\n banderaImagen: banderaActual,\r\n codPaisIdioma: event.textContent.trim().charAt(0)\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\nexport {\r\n changeDimensionsApp, updateStateMasterPage, cambioImagenPais\r\n\r\n};","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { MDBSelect } from \"mdbreact\";\r\n\r\nimport { connect } from 'react-redux';\r\nimport { actualizar_usuario_EnAPI, obtener_usuario_EnAPI, obtener_registros_idiomas_EnAPI } from \"../action/actionCreatorsRequests\";\r\nimport { MSGERROR, MSGOK, traducirPagina, obtenerUsuario } from \"../librerias/funciones\"\r\nimport {\r\n PlusOutlined,\r\n SaveOutlined,\r\n EditOutlined,\r\n DeleteOutlined\r\n} from '@ant-design/icons';\r\nimport { Select, Drawer, Input, Checkbox, Row, Col, Tabs } from 'antd';\r\n\r\nimport store from '../store'\r\nconst { Option } = Select;\r\nconst { TabPane } = Tabs;\r\nconst CheckboxGroup = Checkbox.Group;\r\n\r\nconst FichaPerfil = ({ props, configApp }) => {\r\n const [textoIdioma, setTextoIdioma] = React.useState(1);\r\n const [hayCliente, setHayCliente] = React.useState(false);\r\n const [tabPorDefecto, setTabPorDefecto] = React.useState(\"1\");\r\n const [idiomasLocal, setIdiomasLocal] = React.useState([]);\r\n const [passwordUsuario, setPasswordUsuario] = React.useState(\"\");\r\n\r\n const [payLoadLocal, setPayLoadLocal] = React.useState(\r\n {\r\n ID: 0,\r\n NOMBRE: \"\",\r\n CORREO_RECUPERACION_PWD: \"\",\r\n USUARIO: \"\",\r\n PWD_OLD: \"\",\r\n PWD_NEW: \"\",\r\n PWD: \"\",\r\n OBSERVACIONES: \"\",\r\n BAJA: false,\r\n ID_IDIOMA: \"1\",\r\n }\r\n )\r\n\r\n\r\n if (!hayCliente && props.ABRIR_FICHA) {\r\n setHayCliente(true);\r\n\r\n \r\n\r\n obtener_usuario_EnAPI().then(usuario => {\r\n if (usuario !== undefined && usuario !== null && usuario.REGISTROS !== null && usuario.REGISTROS.length > 0) {\r\n const registro = usuario.REGISTROS[0];\r\n setPayLoadLocal({\r\n ID: registro.ID,\r\n NOMBRE: registro.NOMBRE_TALLER,\r\n CORREO_RECUPERACION_PWD: registro.CORREO_RECUPERACION_PWD,\r\n USUARIO: registro.USUARIO,\r\n PWD_OLD: \"\",\r\n PWD_NEW: \"\",\r\n PWD: \"\",\r\n OBSERVACIONES: registro.OBSERVACIONES,\r\n BAJA: registro.BAJA,\r\n ID_IDIOMA: registro.ID_IDIOMA\r\n })\r\n\r\n setPasswordUsuario(registro.PWD)\r\n setTextoIdioma(registro.ID_IDIOMA)\r\n\r\n } else {\r\n setPayLoadLocal(null)\r\n }\r\n })\r\n\r\n obtener_registros_idiomas_EnAPI(1, \"A\").then(idiomas => {\r\n if (idiomas !== undefined) {\r\n if (idiomas !== undefined && idiomas !== null && idiomas.REGISTROS !== null && idiomas.REGISTROS.length > 0) {\r\n setIdiomasLocal(idiomas.REGISTROS)\r\n } else {\r\n setIdiomasLocal(null)\r\n }\r\n }\r\n })\r\n\r\n } else {\r\n if (!props.ABRIR_FICHA && hayCliente) {\r\n setHayCliente(false);\r\n setTextoIdioma(1)\r\n setTabPorDefecto(\"1\")\r\n setIdiomasLocal([])\r\n setPasswordUsuario(\"\")\r\n setPayLoadLocal({\r\n ID: 0,\r\n NOMBRE: \"\",\r\n CORREO_RECUPERACION_PWD: \"\",\r\n USUARIO: \"\",\r\n PWD_OLD: \"\",\r\n PWD_NEW: \"\",\r\n PWD: \"\",\r\n OBSERVACIONES: \"\",\r\n BAJA: false,\r\n ID_IDIOMA: \"1\",\r\n })\r\n }\r\n }\r\n\r\n\r\n const verificarNuevaContraseña = () => {\r\n let modificarContraseña = passwordUsuario\r\n let permitirGuardarContraseña = false\r\n\r\n //Si es nuevo usuario\r\n if (props.ID_USUARIO === -1) {\r\n permitirGuardarContraseña = true\r\n setPasswordUsuario(payLoadLocal.PWD_NEW);\r\n modificarContraseña = payLoadLocal.PWD_NEW;\r\n } else {\r\n if (payLoadLocal.PWD_OLD.trim() === \"\") {\r\n permitirGuardarContraseña = true\r\n modificarContraseña = passwordUsuario\r\n } else {\r\n if (payLoadLocal.PWD_OLD === modificarContraseña) {\r\n if (payLoadLocal.PWD_NEW.trim() !== \"\") {\r\n if (payLoadLocal.PWD_NEW === payLoadLocal.PWD) {\r\n\r\n permitirGuardarContraseña = true\r\n setPasswordUsuario(payLoadLocal.PWD_NEW);\r\n modificarContraseña = payLoadLocal.PWD_NEW;\r\n } else {\r\n MSGERROR(traducirPagina(\"Msg_confirmar_pwd\"))\r\n }\r\n } else {\r\n MSGERROR(traducirPagina(\"Msg_pwd_vacia\"))\r\n }\r\n\r\n } else {\r\n MSGERROR(traducirPagina(\"Msg_pwd_no_coincide\"))\r\n }\r\n }\r\n }\r\n\r\n return permitirGuardarContraseña\r\n }\r\n\r\n\r\n const modificarUsuario = () => {\r\n\r\n let modificarContraseña = passwordUsuario\r\n\r\n if (payLoadLocal.PWD_OLD.trim() === \"\") {\r\n\r\n actualizar_usuario_EnAPI(payLoadLocal, passwordUsuario).then(usuario => {\r\n if (usuario.OK) {\r\n MSGOK(traducirPagina(\"Msg_usuario_modificado\"))\r\n props.CERRAR_FICHA(false)\r\n }\r\n })\r\n\r\n } else {\r\n\r\n let permitirGuardarContraseña = verificarNuevaContraseña()\r\n if (permitirGuardarContraseña) {\r\n modificarContraseña = payLoadLocal.PWD_NEW;\r\n actualizar_usuario_EnAPI(payLoadLocal, modificarContraseña).then(usuario => {\r\n if (usuario.OK) {\r\n MSGOK(traducirPagina(\"Msg_usuario_modificado\"))\r\n props.CERRAR_FICHA(false)\r\n\r\n\r\n }\r\n })\r\n\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n const guardarEstadoFormulario = (e) => {\r\n const NOMBRE = e.target.name === 'NOMBRE' ? e.target.value : payLoadLocal.NOMBRE;\r\n const CORREO_RECUPERACION_PWD = e.target.name === 'CORREO_RECUPERACION_PWD' ? e.target.value : payLoadLocal.CORREO_RECUPERACION_PWD;\r\n const USUARIO = e.target.name === 'USUARIO' ? e.target.value : payLoadLocal.USUARIO;\r\n const PWD_OLD = e.target.name === 'PWD_OLD' ? e.target.value : payLoadLocal.PWD_OLD;\r\n const PWD_NEW = e.target.name === 'PWD_NEW' ? e.target.value : payLoadLocal.PWD_NEW;\r\n const PWD = e.target.name === 'PWD' ? e.target.value : payLoadLocal.PWD;\r\n const OBSERVACIONES = e.target.name === 'OBSERVACIONES' ? e.target.value : payLoadLocal.OBSERVACIONES;\r\n const ID = e.target.name === 'ID' ? e.target.value : payLoadLocal.ID;\r\n const BAJA = e.target.name === 'BAJA' ? e.target.value : payLoadLocal.BAJA;\r\n const ID_IDIOMA = e.target.name === 'ID_IDIOMA' ? e.target.value : payLoadLocal.ID_IDIOMA;\r\n\r\n setPayLoadLocal(\r\n {\r\n ID: ID,\r\n NOMBRE: NOMBRE,\r\n CORREO_RECUPERACION_PWD: CORREO_RECUPERACION_PWD,\r\n USUARIO: USUARIO,\r\n PWD_OLD: PWD_OLD,\r\n PWD_NEW: PWD_NEW,\r\n PWD: PWD,\r\n OBSERVACIONES: OBSERVACIONES,\r\n BAJA: BAJA,\r\n ID_IDIOMA: ID_IDIOMA\r\n }\r\n )\r\n }\r\n\r\n const modificarIdioma = (e) => {\r\n payLoadLocal.ID_IDIOMA = e;\r\n setPayLoadLocal(payLoadLocal)\r\n setTextoIdioma(e)\r\n }\r\n\r\n\r\n\r\n return (\r\n\r\n { props.CERRAR_FICHA(false) }}\r\n closable={false}\r\n\r\n visible={props.ABRIR_FICHA}\r\n placement={\"right\"}\r\n bodyStyle={{ padding: '0px' }}\r\n style={{ color: '#fff' }}>\r\n\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {props.title}\r\n
\r\n
\r\n\r\n {payLoadLocal === null ?\r\n \r\n
{traducirPagina(\"Msg_sin_info_usuario\")}
\r\n \r\n :\r\n <>\r\n setTabPorDefecto(tab)}\r\n style={{ padding: '0px 20px 0px 20px' }}\r\n >\r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n {`${traducirPagina(\"Usuario\")}: `} \r\n \r\n \r\n guardarEstadoFormulario(e)} />\r\n \r\n\r\n \r\n {traducirPagina(\"Msg_modificar_pwd\")} \r\n \r\n\r\n \r\n {`${traducirPagina(\"Pwd_actual\")}: `} \r\n \r\n \r\n guardarEstadoFormulario(e)} />\r\n \r\n\r\n \r\n {`${traducirPagina(\"Nueva_pwd\")}: `} \r\n \r\n \r\n { guardarEstadoFormulario(e) }} />\r\n \r\n\r\n \r\n {`${traducirPagina(\"Confirma_pwd\")}: `} \r\n \r\n \r\n guardarEstadoFormulario(e)} />\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n {`${traducirPagina(\"Observaciones\")}: `} \r\n \r\n \r\n guardarEstadoFormulario(e)} />\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n
\r\n >\r\n }\r\n \r\n\r\n )\r\n}\r\n\r\nFichaPerfil.propTypes = {\r\n title: PropTypes.string,\r\n ID_USUARIO: PropTypes.number,\r\n ABRIR_FICHA: PropTypes.bool,\r\n CERRAR_FICHA: PropTypes.func\r\n\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n configApp: state.configApp,\r\n props: props,\r\n\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(FichaPerfil);","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport { MDBNav, MDBNavItem, MDBNavLink, MDBTabPane, MDBTabContent, MDBCol, MDBRow, MDBTable, MDBTableHead, MDBTableBody } from 'mdbreact';\r\nimport { Drawer } from 'antd';\r\nimport { traducirPagina } from '../librerias/funciones';\r\nconst FichaSeleccionVehiculo = ({ props, configApp }) => {\r\n const [activeItemOuterTabs, setActiveItemOuterTabs] = React.useState(\"1\");\r\n let datosCochePorMatricula = props.DATOS_COCHE;\r\n\r\n\r\n return (\r\n { props.CERRAR_FICHA(false) }}\r\n visible={props.ABRIR_FICHA}\r\n placement={\"right\"}\r\n bodyStyle={{ padding: '0px' }}\r\n style={{ color: '#fff', zIndex: '9999' }}>\r\n\r\n\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {props.title}\r\n
\r\n
\r\n\r\n\r\n \r\n
\r\n \r\n \r\n\r\n \r\n setActiveItemOuterTabs(\"1\")} role=\"tab\">{traducirPagina(\"Identificacion\")}\r\n \r\n\r\n \r\n setActiveItemOuterTabs(\"2\")} role=\"tab\" >DGT\r\n \r\n\r\n \r\n setActiveItemOuterTabs(\"3\")} role=\"tab\">{traducirPagina(\"Ficha_tecnica\")}\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
{traducirPagina(\"Datos_tecnicos\")}
\r\n \r\n {Object.keys(datosCochePorMatricula).length > 0 ?\r\n datosCochePorMatricula.IDENTIFICACION_VEHICULO !== null && datosCochePorMatricula.IDENTIFICACION_VEHICULO !== undefined ?\r\n \r\n {datosCochePorMatricula.Matricula !== null ?\r\n \r\n {traducirPagina(\"Matricula\")} | \r\n {datosCochePorMatricula.Matricula.Matricula} | \r\n
\r\n : null\r\n }\r\n \r\n {(traducirPagina(\"Bastidor\"))} | \r\n {datosCochePorMatricula.IDENTIFICACION_VEHICULO.BASTIDOR} | \r\n {/* {} | */}\r\n
\r\n\r\n\r\n \r\n {`${traducirPagina(\"Fecha\")} 1º ${(traducirPagina(\"Matricula\").toLowerCase())}`} | \r\n {datosCochePorMatricula.IDENTIFICACION_VEHICULO.FECHA1ªMATRÍCULA} | \r\n
\r\n \r\n {traducirPagina(\"Fecha_de_matriculacion\")} | \r\n {datosCochePorMatricula.IDENTIFICACION_VEHICULO.FECHAMATRÍCULA} | \r\n
\r\n \r\n {traducirPagina(\"Marca\")} | \r\n {datosCochePorMatricula.IDENTIFICACION_VEHICULO.MARCA} | \r\n
\r\n \r\n {traducirPagina(\"Mercado\")} | \r\n {datosCochePorMatricula.IDENTIFICACION_VEHICULO.MERCADO} | \r\n
\r\n \r\n {traducirPagina(\"Modelo\")} | \r\n {datosCochePorMatricula.IDENTIFICACION_VEHICULO.MODELO} | \r\n
\r\n \r\n {traducirPagina(\"Modelo_generico\")} | \r\n {datosCochePorMatricula.IDENTIFICACION_VEHICULO.MODELOGENÉRICO} | \r\n
\r\n \r\n {traducirPagina(\"Numero_de_transmisiones\")} | \r\n {datosCochePorMatricula.IDENTIFICACION_VEHICULO.NÚMERODETRANSMISIONES} | \r\n
\r\n \r\n {traducirPagina(\"Procedencia\")} | \r\n {datosCochePorMatricula.IDENTIFICACION_VEHICULO.PROCEDENCIA} | \r\n
\r\n \r\n {traducirPagina(\"Provincia_matricula\")} | \r\n {datosCochePorMatricula.IDENTIFICACION_VEHICULO.PROVINCIAMATRÍCULA} | \r\n
\r\n \r\n {traducirPagina(\"Segmento\")} | \r\n {datosCochePorMatricula.IDENTIFICACION_VEHICULO.SEGMENTO} | \r\n
\r\n \r\n :\r\n null\r\n :\r\n null\r\n }\r\n \r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n {traducirPagina(\"Datos_tecnicos\")}
\r\n \r\n {Object.keys(datosCochePorMatricula).length > 0 ?\r\n datosCochePorMatricula.DATOSTECNICOSDGT !== null && datosCochePorMatricula.DATOSTECNICOSDGT !== undefined ?\r\n \r\n \r\n {traducirPagina(\"Cilindrada\")} | \r\n {datosCochePorMatricula.DATOSTECNICOSDGT.CILINDRADA} | \r\n
\r\n \r\n CO2 | \r\n {datosCochePorMatricula.DATOSTECNICOSDGT.CO2} | \r\n
\r\n \r\n {traducirPagina(\"Combustible\")} | \r\n {datosCochePorMatricula.DATOSTECNICOSDGT.COMBUSTIBLE} | \r\n
\r\n \r\n KW | \r\n {datosCochePorMatricula.DATOSTECNICOSDGT.KW} | \r\n
\r\n \r\n {traducirPagina(\"Marca\")} | \r\n {datosCochePorMatricula.DATOSTECNICOSDGT.MARCA} | \r\n
\r\n \r\n {traducirPagina(\"Modelo\")} | \r\n {datosCochePorMatricula.DATOSTECNICOSDGT.MODELO} | \r\n
\r\n \r\n {traducirPagina(\"Peso_maximo\")} | \r\n {datosCochePorMatricula.DATOSTECNICOSDGT.PESOMAXIMO} | \r\n
\r\n \r\n {traducirPagina(\"Plazas\")} | \r\n {datosCochePorMatricula.DATOSTECNICOSDGT.PLAZAS} | \r\n
\r\n \r\n {traducirPagina(\"Potencia_fiscal\")} | \r\n {datosCochePorMatricula.DATOSTECNICOSDGT.POTENCIAFISCAL} | \r\n
\r\n \r\n {traducirPagina(\"Potencia_aproximada\")} | \r\n {datosCochePorMatricula.DATOSTECNICOSDGT.POTENCIAREALAPROX} | \r\n
\r\n \r\n {traducirPagina(\"Tara\")} | \r\n {datosCochePorMatricula.DATOSTECNICOSDGT.TARA} | \r\n
\r\n \r\n {traducirPagina(\"Tipo\")} | \r\n {datosCochePorMatricula.DATOSTECNICOSDGT.TIPO} | \r\n
\r\n \r\n {traducirPagina(\"Variante\")} | \r\n {datosCochePorMatricula.DATOSTECNICOSDGT.VARIANTE} | \r\n
\r\n \r\n {traducirPagina(\"Version\")} | \r\n {datosCochePorMatricula.DATOSTECNICOSDGT.VERSION} | \r\n
\r\n \r\n :\r\n null\r\n :\r\n null\r\n }\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n \r\n {traducirPagina(\"Datos_tecnicos\")}
\r\n \r\n {Object.keys(datosCochePorMatricula).length > 0 ?\r\n datosCochePorMatricula.FICHATECNICA !== null && datosCochePorMatricula.FICHATECNICA != undefined ?\r\n \r\n\r\n \r\n {traducirPagina(\"Carroceria\")} | \r\n {datosCochePorMatricula.FICHATECNICA.CARROCERIA} | \r\n
\r\n \r\n {traducirPagina(\"CAT_HOMOLOGACIÓN\")} | \r\n {datosCochePorMatricula.FICHATECNICA.CAT_HOMOLOGACION} | \r\n
\r\n \r\n {traducirPagina(\"Cilindrada\")} | \r\n {datosCochePorMatricula.FICHATECNICA.CILINDRADA} | \r\n
\r\n \r\n {traducirPagina(\"Clasif_Industria\")} | \r\n {datosCochePorMatricula.FICHATECNICA.CLASIF_INDUSTRIA} | \r\n
\r\n \r\n CO2 | \r\n {datosCochePorMatricula.FICHATECNICA.CO2} | \r\n
\r\n \r\n {traducirPagina(\"Codigos_ECO\")} | \r\n {datosCochePorMatricula.FICHATECNICA.CODIGOS_ECO} | \r\n
\r\n \r\n {traducirPagina(\"Combustible\")} | \r\n {datosCochePorMatricula.FICHATECNICA.COMBUSTIBLE} | \r\n
\r\n \r\n {traducirPagina(\"Consumo\")} | \r\n {datosCochePorMatricula.FICHATECNICA.CONSUMO} | \r\n
\r\n \r\n {traducirPagina(\"Contrasenia_homologacion\")} | \r\n {datosCochePorMatricula.FICHATECNICA.CONTRASENA_HOLOMOGACION} | \r\n
\r\n \r\n {\"Denominacion_comercial\"} | \r\n {datosCochePorMatricula.FICHATECNICA.DENOMINACION_COMERCIAL} | \r\n
\r\n \r\n {traducirPagina(\"Dist_ejes\")} | \r\n {datosCochePorMatricula.FICHATECNICA.DIST_ENTRE_EJES} | \r\n
\r\n \r\n {traducirPagina(\"ECO_innova\")} | \r\n {datosCochePorMatricula.FICHATECNICA.ECO_INNOVA} | \r\n
\r\n \r\n {traducirPagina(\"Fabricante\")} | \r\n {datosCochePorMatricula.FICHATECNICA.FABRICANTE} | \r\n
\r\n \r\n KW | \r\n {datosCochePorMatricula.FICHATECNICA.KW} | \r\n
\r\n \r\n {traducirPagina(\"Marca\")} | \r\n {datosCochePorMatricula.FICHATECNICA.MARCA} | \r\n
\r\n \r\n {traducirPagina(\"Masa_carga\")} | \r\n {datosCochePorMatricula.FICHATECNICA.MASA_MAX_CARGA} | \r\n
\r\n \r\n {traducirPagina(\"Masa_vehiculo_servicio\")} | \r\n {datosCochePorMatricula.FICHATECNICA.MASA_VEHICULO_SERVICIO} | \r\n
\r\n \r\n {traducirPagina(\"Nivel_emisiones\")} | \r\n {datosCochePorMatricula.FICHATECNICA.NIVEL_EMISIONES} | \r\n
\r\n \r\n {traducirPagina(\"Num_pie\")} | \r\n {datosCochePorMatricula.FICHATECNICA.NUM_PLAZAS_DE_PIE} | \r\n
\r\n \r\n {traducirPagina(\"Peso_maximo\")} | \r\n {datosCochePorMatricula.FICHATECNICA.PESOMAXIMO} | \r\n
\r\n \r\n {traducirPagina(\"Plazas\")} | \r\n {datosCochePorMatricula.FICHATECNICA.PLAZAS} | \r\n
\r\n \r\n {traducirPagina(\"Potencia_fiscal\")} | \r\n {datosCochePorMatricula.FICHATECNICA.POTENCIAFISCAL} | \r\n
\r\n \r\n {traducirPagina(\"Potencia_aprox\")} | \r\n {datosCochePorMatricula.FICHATECNICA.POTENCIAREALAPROX} | \r\n
\r\n \r\n {traducirPagina(\"Procedencia\")} | \r\n {datosCochePorMatricula.FICHATECNICA.PROCEDENCIA} | \r\n
\r\n \r\n {traducirPagina(\"Reduccion_eco\")} | \r\n {datosCochePorMatricula.FICHATECNICA.REDUCCION_ECO} | \r\n
\r\n \r\n {traducirPagina(\"Relacion_potencia_peso\")} | \r\n {datosCochePorMatricula.FICHATECNICA.RELACION_POTENCIA_PESO} | \r\n
\r\n \r\n {traducirPagina(\"Tara\")} | \r\n {datosCochePorMatricula.FICHATECNICA.TARA} | \r\n
\r\n \r\n {traducirPagina(\"Tipo\")} | \r\n {datosCochePorMatricula.FICHATECNICA.TIPO} | \r\n
\r\n \r\n {traducirPagina(\"Tipo_alimentacion\")} | \r\n {datosCochePorMatricula.FICHATECNICA.TIPO_ALIMENTACION} | \r\n
\r\n \r\n {traducirPagina(\"Variante\")} | \r\n {datosCochePorMatricula.FICHATECNICA.VARIANTE} | \r\n
\r\n \r\n {traducirPagina(\"Version\")} | \r\n {datosCochePorMatricula.FICHATECNICA.VERSION} | \r\n
\r\n \r\n {traducirPagina(\"Via_anterior\")} | \r\n {datosCochePorMatricula.FICHATECNICA.VIA_ANTERIOR} | \r\n
\r\n \r\n {traducirPagina(\"Via_posterior\")} | \r\n {datosCochePorMatricula.FICHATECNICA.VIA_POSTERIOR} | \r\n
\r\n \r\n :\r\n null\r\n :\r\n null\r\n }\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n
\r\n\r\n
{traducirPagina(\"Msg_vehiculo_descripcion\") }
\r\n {Object.keys(datosCochePorMatricula).length > 0 ?\r\n datosCochePorMatricula.VEHICULOS_TECDOC !== undefined && datosCochePorMatricula.VEHICULOS_TECDOC !== null ?\r\n
\r\n \r\n \r\n {traducirPagina(\"Motor\")} | \r\n {traducirPagina(\"Codigo\")} | \r\n {traducirPagina(\"Modelo\")} | \r\n {traducirPagina(\"Anio\")} | \r\n KW | \r\n CV | \r\n CC | \r\n {traducirPagina(\"Carroceria\")} | \r\n | \r\n
\r\n \r\n\r\n \r\n {datosCochePorMatricula.VEHICULOS_TECDOC.map((row, i) =>\r\n \r\n {\r\n props.VEHICULO_SELECCIONADO(row)\r\n\r\n }} >{row.MOTORIZACION} | \r\n\r\n {\r\n props.VEHICULO_SELECCIONADO(row)\r\n }}>{row.MOTORES === \"\" ? \"...\" : row.MOTORES} | \r\n\r\n {\r\n props.VEHICULO_SELECCIONADO(row)\r\n }}>{row.MODELO === \"\" ? \"...\" : row.MODELO} | \r\n\r\n {\r\n props.VEHICULO_SELECCIONADO(row)\r\n }}>{row.DESDE === \"\" ? \"...\" : row.DESDE} | \r\n\r\n {\r\n props.VEHICULO_SELECCIONADO(row)\r\n }}>{row.KW === \"\" ? \"...\" : row.KW} | \r\n {\r\n props.VEHICULO_SELECCIONADO(row)\r\n }}>{row.CV === \"\" ? \"...\" : row.CV} | \r\n {\r\n props.VEHICULO_SELECCIONADO(row)\r\n }}>{row.CC === \"\" ? \"...\" : row.CC} | \r\n {\r\n props.VEHICULO_SELECCIONADO(row)\r\n }}>{row.CARROCERIA === \"\" ? \"...\" : row.CARROCERIA}\r\n | \r\n\r\n
\r\n )}\r\n \r\n \r\n :
\r\n\r\n :\r\n null\r\n }\r\n
\r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n\r\n\r\n \r\n\r\n );\r\n}\r\n\r\n\r\n\r\n\r\nFichaSeleccionVehiculo.propTypes = {\r\n ABRIR_FICHA: PropTypes.bool,\r\n CERRAR_FICHA: PropTypes.func,\r\n DATOS_COCHE: PropTypes.object,\r\n VEHICULO_SELECCIONADO: PropTypes.func\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n props: props,\r\n configApp: state.configApp\r\n\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(FichaSeleccionVehiculo);","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport { recortarCadena, descargarFicheroPasandoBase64 } from '../librerias/funciones'\r\n\r\nimport {\r\n CloseOutlined, DownloadOutlined\r\n\r\n} from '@ant-design/icons';\r\n\r\nimport { Drawer } from 'antd';\r\n\r\nconst VisorGenerico = ({ props, configApp }) => {\r\n const [descarga, setDescarga] = React.useState(false);\r\n\r\n\r\n return (\r\n <>\r\n {props.PROPIEDADES_DOC.TIPO_DOCUMENTO === \"IMG\" ?\r\n props.ABRIR_VISOR ?\r\n \r\n\r\n
\r\n\r\n
\r\n {\r\n props.CERRAR_VISOR(false);\r\n }}> \r\n\r\n {props.PROPIEDADES_DOC.TITULO.toUpperCase()}\r\n
\r\n\r\n\r\n {props.MOSTRAR_BOTON_DESCARGA ?\r\n
{\r\n if (!descarga) {\r\n // ObtenerArchivo(ID_ARCHIVO, NOMBRE_ARCHIVO, TIPO_ARCHIVO, EXTENSION_ARCHIVO)\r\n }\r\n }} style={{ width: '14%', color: descarga ? '#999' : '#fff' }} >\r\n {descarga ? \"Descargando ...\" : \"Descargar\"} \r\n
\r\n :\r\n null\r\n }\r\n\r\n\r\n
\r\n\r\n
\r\n {props.PROPIEDADES_DOC.URL === \"\" ?\r\n
\r\n :\r\n

\r\n }\r\n
\r\n
\r\n :\r\n null\r\n :\r\n\r\n { props.CERRAR_VISOR(false) }}\r\n visible={props.ABRIR_VISOR}\r\n placement={\"right\"}\r\n bodyStyle={{ padding: '0px', margin: '0px', lineHeight: '0px' }}\r\n style={{ color: '#fff' }}>\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {configApp.width <= 900 ? recortarCadena(props.PROPIEDADES_DOC.TITULO.toUpperCase(), 20, \"...\") : props.PROPIEDADES_DOC.TITULO.toUpperCase()}\r\n
\r\n {props.MOSTRAR_BOTON_DESCARGA ?\r\n\r\n
{\r\n if (!descarga) {\r\n // ObtenerArchivo(ID_ARCHIVO, NOMBRE_ARCHIVO, TIPO_ARCHIVO, EXTENSION_ARCHIVO)\r\n }\r\n\r\n }} style={{ width: '30%', margin: '0px 10px', fontSize: '16px', color: descarga ? '#999' : '#fff' }} >\r\n {descarga ? \"Descargando ...\" : \"Descargar\"} \r\n
\r\n :\r\n null\r\n }\r\n\r\n
\r\n\r\n {props.PROPIEDADES_DOC.URL === \"\" ?\r\n \r\n :\r\n props.PROPIEDADES_DOC.TIPO_DOCUMENTO === \"DOC\" ?\r\n \r\n :\r\n \r\n \r\n
\r\n\r\n\r\n }\r\n\r\n \r\n }\r\n\r\n\r\n >\r\n )\r\n}\r\n\r\n\r\nVisorGenerico.propTypes = {\r\n title: PropTypes.string,\r\n ABRIR_VISOR: PropTypes.bool,\r\n CERRAR_VISOR: PropTypes.func,\r\n PROPIEDADES_DOC: PropTypes.object,\r\n ZOOM_DOCUMENTO: PropTypes.bool,\r\n MOSTRAR_BOTON_DESCARGA: PropTypes.bool,\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n props: props,\r\n configApp: state.configApp,\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(VisorGenerico);","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport 'antd/dist/antd.css';\r\nimport { obtener_fabricantesEnAPI, obtener_modelosEnAPI, obtener_motorizacionesEnAPI, buscar_matriculaEnAPI, GetSmartPackEnAPI, GetDetalleSmartPackEnAPI } from \"../action/actionCreatorsRequests\";\r\n\r\nimport {\r\n traducirPagina, buscarVehiculoLocal\r\n} from \"../librerias/funciones\"\r\n\r\nimport FichaSeleccionVehiculo from './FichaSeleccionVehiculo'\r\nimport VisorGenerico from './VisorGenerico';\r\n\r\nimport {\r\n CalendarOutlined,\r\n EyeOutlined\r\n} from '@ant-design/icons';\r\nimport { Tabs, Select, Row, Col, Input, Collapse, Modal, Button, Drawer } from 'antd';\r\n\r\n\r\nconst { Option } = Select;\r\nconst { Search } = Input;\r\nconst { TabPane } = Tabs;\r\nconst { Panel } = Collapse;\r\n\r\n\r\nconst FichaBoletines = ({ props, configApp, HISTORIAL_VEHICULO }) => {\r\n const [hayReferencias, setHayReferencias] = React.useState(false);\r\n const [hayLicencias, seHayLicencias] = React.useState(false);\r\n const [txtMatricula, setTxtMatricula] = React.useState(\"\");\r\n const [marcas, setMarcas] = React.useState([]);\r\n const [modelos, setModelos] = React.useState([]);\r\n const [motores, setMotores] = React.useState([]);\r\n\r\n const [smartPack, setSmartPack] = React.useState([]);\r\n const [detalle, setObtenerDetalle] = React.useState([]);\r\n const [colapseSeleccionado, setColapseSeleccionado] = React.useState(0);\r\n const [tabPorDefecto, setTabPorDefecto] = React.useState(\"1\");\r\n const [fichaVehiculo, setFichaVehiculo] = React.useState(false);\r\n const [infoDGT, setInfoDGT] = React.useState(false);\r\n\r\n const [datosCoche, setDatosCoche] = React.useState({});\r\n const [cocheSeleccionado, setCocheSeleccionado] = React.useState({\r\n MARCA: 0,\r\n MODELO: 0,\r\n MOTOR: 0\r\n });\r\n\r\n\r\n const [abrirVisor, setabrirVisor] = React.useState(false);\r\n const [ficheroSeleccionado, setFicheroSeleccionado] = React.useState({});\r\n\r\n\r\n\r\n\r\n\r\n const buscarFabricanteAPI = (fabricante) => {\r\n obtener_fabricantesEnAPI(fabricante).then((fabricantes) => {\r\n if (fabricantes !== undefined) {\r\n if (fabricantes !== null && fabricantes.REGISTROS.length > 0) {\r\n setMarcas(fabricantes.REGISTROS)\r\n\r\n }\r\n } else {\r\n setMarcas(null)\r\n }\r\n })\r\n }\r\n\r\n\r\n const buscarModelosAPI = (fabricante) => {\r\n obtener_modelosEnAPI(fabricante).then((modelo) => {\r\n if (modelo !== undefined) {\r\n if (modelo !== null && modelo.REGISTROS.length > 0) {\r\n setModelos(modelo.REGISTROS)\r\n }\r\n } else {\r\n setModelos(null)\r\n }\r\n })\r\n }\r\n\r\n\r\n const buscarMotorizacionAPI = (modelo) => {\r\n obtener_motorizacionesEnAPI(modelo).then((motor) => {\r\n if (motor !== undefined) {\r\n if (motor !== null && motor.REGISTROS.length > 0) {\r\n setMotores(motor.REGISTROS)\r\n }\r\n } else {\r\n setMotores(null)\r\n }\r\n })\r\n }\r\n\r\n const limpiarCoche = () => {\r\n setModelos([]);\r\n setMotores([]);\r\n setSmartPack([]);\r\n cocheSeleccionado.MARCA = 0;\r\n cocheSeleccionado.MODELO = 0;\r\n cocheSeleccionado.MOTOR = 0;\r\n setCocheSeleccionado({ ...cocheSeleccionado })\r\n }\r\n\r\n const buscarMatricula = () => {\r\n\r\n limpiarCoche()\r\n //5497BNL\r\n if (txtMatricula !== undefined ? txtMatricula.trim().length > 0 : false) {\r\n buscar_matriculaEnAPI(txtMatricula).then(coche => {\r\n if (coche !== undefined) {\r\n if (coche !== null && coche.OK) {\r\n setDatosCoche(coche)\r\n if (coche.VEHICULOS_TECDOC.length === 0 && coche.MATRICULA !== null) {\r\n setInfoDGT(true)\r\n\r\n } else if (coche.VEHICULOS_TECDOC.length === 1) {\r\n vehiculoSeleccionado(coche.VEHICULOS_TECDOC[0])\r\n\r\n } else {\r\n setFichaVehiculo(true)\r\n }\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n const obtenerSmartPack = (motor) => {\r\n setSmartPack([])\r\n setColapseSeleccionado(0)\r\n GetSmartPackEnAPI(motor).then(registro => {\r\n if (registro !== undefined) {\r\n if (registro.BOLETINES !== null) {\r\n setSmartPack(registro.BOLETINES)\r\n } else {\r\n setSmartPack(null)\r\n }\r\n }\r\n })\r\n }\r\n\r\n\r\n const obtenerDetalles = (ID_SISTEMA, TIPO) => {\r\n if (ID_SISTEMA !== undefined) {\r\n setObtenerDetalle([])\r\n GetDetalleSmartPackEnAPI(ID_SISTEMA, TIPO).then((detalle) => {\r\n if (detalle !== undefined) {\r\n if (detalle.DETALLE !== null && detalle.DETALLE.length > 0) {\r\n setObtenerDetalle(detalle.DETALLE)\r\n } else {\r\n setObtenerDetalle(null)\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n\r\n const vehiculoSeleccionado = async (coche) => {\r\n let MOTOR_LOCAL = parseInt(coche.ID);\r\n\r\n let modelo = await obtener_modelosEnAPI(coche.ID_MARCA)\r\n if (modelo !== undefined) {\r\n if (modelo !== null && modelo.REGISTROS.length > 0) {\r\n setModelos(modelo.REGISTROS)\r\n }\r\n } else {\r\n setModelos(null)\r\n }\r\n\r\n let motor = await obtener_motorizacionesEnAPI(coche.ID_MODELO)\r\n if (motor !== undefined) {\r\n if (motor !== null && motor.REGISTROS.length > 0) {\r\n setMotores(motor.REGISTROS)\r\n }\r\n } else {\r\n setMotores(null)\r\n }\r\n\r\n setFichaVehiculo(false);\r\n\r\n cocheSeleccionado.MARCA = coche.ID_MARCA;\r\n cocheSeleccionado.MODELO = coche.ID_MODELO;\r\n cocheSeleccionado.MOTOR = MOTOR_LOCAL;\r\n\r\n obtenerSmartPack(MOTOR_LOCAL)\r\n setCocheSeleccionado({ ...cocheSeleccionado })\r\n }\r\n\r\n /*\r\n const obtenerVehiculoLocal = async () => {\r\n let VEHICULO = await buscarVehiculoLocal(0);\r\n VEHICULO.HISTORIAL_VEHICULO = HISTORIAL_VEHICULO\r\n\r\n const { MATRICULA, BASTIDOR, VEHICULO_TECDOC } = VEHICULO;\r\n if (Object.keys(VEHICULO_TECDOC).length > 0) {\r\n if (VEHICULO.HISTORIAL_VEHICULO.length === 3) {\r\n let ID_MARCA = VEHICULO.HISTORIAL_VEHICULO[0].id\r\n let ID_MODELO = VEHICULO.HISTORIAL_VEHICULO[1].id\r\n let ID_MOTOR = VEHICULO.HISTORIAL_VEHICULO[2].id\r\n\r\n VEHICULO_TECDOC.ID_MARCA = ID_MARCA\r\n VEHICULO_TECDOC.ID_MODELO = ID_MODELO\r\n\r\n setTxtMatricula(MATRICULA);\r\n vehiculoSeleccionado(VEHICULO_TECDOC);\r\n }\r\n }\r\n }\r\n */\r\n\r\n if (!hayReferencias && props.ABRIR_FICHA) {\r\n setHayReferencias(true);\r\n buscarFabricanteAPI(1)\r\n\r\n //buscarVehiculoLocal(33251);\r\n\r\n\r\n //obtenerVehiculoLocal();\r\n\r\n } else {\r\n if (!props.ABRIR_FICHA && hayReferencias) {\r\n setHayReferencias(false);\r\n }\r\n }\r\n\r\n\r\n return (\r\n \r\n
{\r\n props.CERRAR_FICHA(false)\r\n }}\r\n visible={props.ABRIR_FICHA}\r\n placement={\"right\"}\r\n closable={false}\r\n bodyStyle={{ padding: '0px' }}\r\n style={{ color: '#fff' }}>\r\n\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {props.title}\r\n
\r\n
\r\n <>\r\n \r\n\r\n
\r\n
\r\n {traducirPagina(\"Matricula\")} \r\n { setTxtMatricula(e.target.value) }}\r\n onSearch={(e) => {\r\n if (e === \"\") {\r\n limpiarCoche()\r\n } else {\r\n buscarMatricula(e);\r\n }\r\n\r\n }}\r\n />\r\n
\r\n\r\n
\r\n {traducirPagina(\"Marca\")}\r\n {marcas !== undefined && marcas !== null && marcas.length > 0 ?\r\n \r\n : null\r\n }\r\n\r\n
\r\n
\r\n {traducirPagina(\"Modelo\")}\r\n \r\n
\r\n
\r\n {traducirPagina(\"Tipo_motor\")}\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n {smartPack !== null ?\r\n smartPack.length > 0 ?\r\n \r\n {smartPack.map((registro, index) =>\r\n {registro.DESCRIPCION}} key={(index + 1)} >\r\n \r\n
\r\n \r\n {registro.SISTEMAS === null ?\r\n \r\n
{traducirPagina(\"Msg_sin_resultados\")}
\r\n \r\n :\r\n registro.SISTEMAS.length > 0 ?\r\n { setColapseSeleccionado(e); obtenerDetalles(e, registro.CATEGORIA); }}\r\n className=\"site-collapse-custom-collapse\"\r\n bordered={false} activeKey={[colapseSeleccionado]}>\r\n\r\n {registro.SISTEMAS.map((subnodo, indice) =>\r\n \r\n {subnodo.DESCRIPCION}
\r\n \r\n {subnodo.FECHA} \r\n {subnodo.CODIGOOE} \r\n
\r\n
\r\n :\r\n {subnodo.DESCRIPCION}
\r\n }\r\n key={subnodo.ID}\r\n\r\n >\r\n {subnodo === null ?\r\n
{traducirPagina(\"Msg_sin_lubricantes\")}
\r\n :\r\n detalle !== null ?\r\n detalle.length === 0 ?\r\n \r\n :\r\n \r\n {detalle.map((tarea, indice) =>\r\n - \r\n
\r\n
1 ? { borderBottom: (detalle.length - 1) === indice ? \"\" : \"1px #dcdcdc solid\" } : {}}>\r\n \r\n \r\n \r\n \r\n
{tarea.DESCRIPCION}
\r\n\r\n {tarea.BOLETINES.map((boletin, i) =>\r\n <>\r\n
{`${boletin.Texto} ${boletin.COMENTARIO !== null ? boletin.COMENTARIO : ``}`}
\r\n\r\n {boletin.CODIGOEOBD !== null ?\r\n
{boletin.CODIGOEOBD + \" \" + boletin.COMENTARIO}
\r\n : null}\r\n {boletin.IMAGEN !== null ?\r\n
{\r\n setabrirVisor(true);\r\n setFicheroSeleccionado({ TITULO: boletin.TEXTO === undefined || boletin.TEXTO === null ? \"VISTA PREVIA\" :boletin.TEXTO, TIPO_DOCUMENTO: \"IMG\", URL: boletin.IMAGEN, FICHERO: {} })\r\n }}>\r\n

\r\n\r\n
\r\n\r\n
\r\n :\r\n null\r\n }\r\n >\r\n )}\r\n
\r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n )}\r\n
\r\n :\r\n
{traducirPagina(\"Msg_sin_detalles\")}
\r\n }\r\n \r\n )\r\n }\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n :\r\n motores.length === 0 ?\r\n null\r\n :\r\n cocheSeleccionado.MOTOR === 0 ?\r\n null\r\n :\r\n \r\n :\r\n \r\n
{traducirPagina(\"Msg_sin_resultados\")}
\r\n \r\n }\r\n\r\n\r\n\r\n >\r\n \r\n\r\n\r\n\r\n\r\n\r\n {fichaVehiculo ?\r\n \r\n\r\n \r\n :\r\n\r\n null}\r\n\r\n\r\n\r\n {abrirVisor ?\r\n \r\n \r\n :\r\n null\r\n }\r\n\r\n\r\n\r\n { setInfoDGT(false) }}\r\n onCancel={() => { setInfoDGT(false) }}\r\n footer={[\r\n \r\n ]}>\r\n\r\n {Object.keys(datosCoche).length > 0 ?\r\n datosCoche.MATRICULA !== null ?\r\n \r\n \r\n {traducirPagina(\"msgDGT_no_info_bastidor\")}
\r\n \r\n\r\n \r\n {traducirPagina(\"Bastidor\") + \": \" + datosCoche.Matricula.Bastidor}\r\n \r\n\r\n \r\n {traducirPagina(\"Carburante\") + \": \" + datosCoche.Matricula.Carburante}\r\n \r\n\r\n \r\n {traducirPagina(\"Fecha_de_matriculacion\") + \": \" + datosCoche.Matricula.FechaMatricula}\r\n \r\n\r\n \r\n {traducirPagina(\"Marca\") + \": \" + datosCoche.Matricula.Marca}\r\n \r\n\r\n \r\n {traducirPagina(\"Matricula\") + \": \" + datosCoche.Matricula.Matricula}\r\n \r\n\r\n \r\n {traducirPagina(\"Modelo\") + \": \" + datosCoche.Matricula.Modelo}\r\n \r\n\r\n
\r\n\r\n : null\r\n : null\r\n }\r\n \r\n\r\n\r\n\r\n \r\n )\r\n}\r\n\r\nFichaBoletines.propTypes = {\r\n TIPO: PropTypes.string,\r\n CERRAR: PropTypes.object,\r\n ABRIR_FICHA: PropTypes.bool,\r\n CERRAR_FICHA: PropTypes.func\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n configApp: state.configApp,\r\n props: props,\r\n\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(FichaBoletines);","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n PlusOutlined,\r\n SaveOutlined,\r\n EditOutlined,\r\n DeleteOutlined\r\n} from '@ant-design/icons';\r\nimport { Select, Drawer, Checkbox, Tabs } from 'antd';\r\n\r\nimport store from '../store'\r\nconst { Option } = Select;\r\nconst { TabPane } = Tabs;\r\nconst CheckboxGroup = Checkbox.Group;\r\n\r\nconst FichaTutorial = ({ props, configApp }) => {\r\n return (\r\n { props.CERRAR_FICHA(false) }}\r\n closable={false}\r\n\r\n visible={props.ABRIR_FICHA}\r\n placement={\"right\"}\r\n bodyStyle={{ padding: '0px' }}\r\n style={{ color: '#fff' }}>\r\n\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {props.title}\r\n
\r\n
\r\n\r\n\r\n \r\n \r\n
\r\n\r\n \r\n\r\n )\r\n}\r\n\r\nFichaTutorial.propTypes = {\r\n title: PropTypes.string,\r\n ABRIR_FICHA: PropTypes.bool,\r\n CERRAR_FICHA: PropTypes.func\r\n\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n configApp: state.configApp,\r\n props: props,\r\n\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(FichaTutorial);","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport 'antd/dist/antd.css';\r\nimport { obtener_haynes_urlEnAPI } from \"../action/actionCreatorsRequests\";\r\n\r\nimport {\r\n traducirPagina, buscarVehiculoLocal\r\n} from \"../librerias/funciones\"\r\n\r\nimport FichaSeleccionVehiculo from './FichaSeleccionVehiculo'\r\nimport VisorGenerico from './VisorGenerico';\r\n\r\nimport {\r\n CalendarOutlined,\r\n EyeOutlined\r\n} from '@ant-design/icons';\r\nimport { Tabs, Select, Row, Col, Input, Collapse, Modal, Button, Drawer } from 'antd';\r\n\r\n\r\nconst { Option } = Select;\r\nconst { Search } = Input;\r\nconst { TabPane } = Tabs;\r\nconst { Panel } = Collapse;\r\n\r\n\r\nconst FichaHaynes = ({ props, configApp, HISTORIAL_VEHICULO }) => {\r\n const [enlaceHaynes, setEnlaceHaynes] = React.useState(\"\");\r\n\r\n /*\r\n if (!hayEnlce && openDrawerHaynesPro && Object.keys(usuario).length > 0) {\r\n setHayEnlce(true)\r\n\r\n let idCocheTecdoc = fichaBusquedaVehiculo.historicapp.length === 0 ? 0:fichaBusquedaVehiculo.historicapp[2].id;\r\n\r\n loginHaynesProTouch(idCocheTecdoc).then(haynes => {\r\n if (haynes.OK) {\r\n setEnlaceHaynes(haynes.REDIRECT_URL);\r\n } else {\r\n setEnlaceHaynes(null)\r\n }\r\n })\r\n\r\n } else {\r\n if (!openDrawerHaynesPro && hayEnlce) {\r\n setEnlaceHaynes(\"\")\r\n setHayEnlce(false)\r\n }\r\n }\r\n*/\r\n \r\n React.useEffect(() => {\r\n obtener_haynes_urlEnAPI().then(haynes => {\r\n\r\n if (haynes.OK) {\r\n setEnlaceHaynes(haynes.REDIRECT_URL);\r\n } else {\r\n setEnlaceHaynes(null)\r\n }\r\n })\r\n\r\n }, [])\r\n\r\n\r\n\r\n\r\n return (\r\n \r\n
{\r\n props.CERRAR_FICHA(false)\r\n }}\r\n visible={props.ABRIR_FICHA}\r\n placement={\"right\"}\r\n closable={false}\r\n bodyStyle={{ padding: '0px' }}\r\n style={{ color: '#fff' }}>\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {props.title}\r\n
\r\n
\r\n\r\n\r\n {enlaceHaynes !== null ?\r\n enlaceHaynes === \"\" ?\r\n \r\n :\r\n \r\n :\r\n
{traducirPagina(\"Msg_haynespro\")}
\r\n }\r\n\r\n \r\n\r\n
\r\n )\r\n}\r\n\r\nFichaHaynes.propTypes = {\r\n TIPO: PropTypes.string,\r\n CERRAR: PropTypes.object,\r\n ABRIR_FICHA: PropTypes.bool,\r\n CERRAR_FICHA: PropTypes.func\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n configApp: state.configApp,\r\n props: props,\r\n\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(FichaHaynes);","\r\nimport React from \"react\";\r\nimport store from '../store'\r\nimport PropTypes from 'prop-types';\r\nimport { connect } from 'react-redux';\r\n\r\nimport {\r\n changeDimensionsApp\r\n} from '../action/actionCreators';\r\nimport {\r\n LogoutEnAPI\r\n} from '../action/actionCreatorsRequests';\r\n\r\nimport { MDBNavbar, MDBNavbarNav, MDBNavItem, MDBDropdown, MDBDropdownToggle, MDBDropdownMenu, MDBDropdownItem } from 'mdbreact';\r\nimport FichaPerfil from \"../components/FichaPerfil\";\r\nimport FichaBoletines from \"../components/FichaBoletines\";\r\nimport FichaTutorial from \"../components/FichaTutorial\";\r\nimport {\r\n traducirPagina\r\n} from '../librerias/funciones'\r\nimport {\r\n SettingOutlined,\r\n ExportOutlined,\r\n FilterOutlined,\r\n BlockOutlined,\r\n VideoCameraOutlined,\r\n ReadOutlined\r\n} from '@ant-design/icons';\r\n\r\nimport history from '../history';\r\n\r\nimport {\r\n UserOutlined,\r\n FileDoneOutlined\r\n} from '@ant-design/icons';\r\nimport FichaHaynes from \"../components/FichaHaynes\";\r\n\r\nconst MasterPage = ({ configApp, props, usuario }) => {\r\n\r\n\r\n const [ABRIR_FICHA_BOLETINES, setABRIR_FICHA_BOLETINES] = React.useState(false)\r\n const [ABRIR_FICHA_HAYNES, setABRIR_FICHA_HAYNES] = React.useState(false)\r\n\r\n const [ABRIR_FICHA_PERFIL, setABRIR_FICHA_PERFIL] = React.useState(false)\r\n const [ABRIR_FICHA_TUTORIAL, setABRIR_FICHA_TUTORIAL] = React.useState(false)\r\n\r\n const { USUARIO } = usuario;\r\n\r\n const [dimensions, setDimensions] = React.useState({\r\n height: window.innerHeight,\r\n width: window.innerWidth\r\n })\r\n\r\n\r\n React.useEffect(() => {\r\n const handleResize = () => {\r\n setDimensions({\r\n height: window.innerHeight,\r\n width: window.innerWidth\r\n })\r\n store.dispatch(changeDimensionsApp(window.innerWidth, window.innerHeight));\r\n\r\n }\r\n\r\n window.addEventListener('resize', handleResize)\r\n }, [])\r\n\r\n\r\n const logOut = async () => {\r\n const data = await LogoutEnAPI();\r\n }\r\n\r\n\r\n\r\n if (configApp.height === 0) {\r\n store.dispatch(changeDimensionsApp(window.innerWidth, window.innerHeight));\r\n }\r\n\r\n\r\n\r\n if (history.location.pathname !== \"/\") {\r\n //store.dispatch(updateStateMasterPage(true))\r\n\r\n //verifico el estado del usuario en redux\r\n if (Object.keys(usuario).length === 0) {\r\n history.push(\"/\");\r\n store.dispatch({ type: \"STATE_REGISTRO_ITEM\", activeItemRegistro: {} })\r\n //store.dispatch(updateStateMasterPage(false))\r\n }\r\n }\r\n\r\n\r\n\r\n return (\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
![]()
\r\n
TALLER\r\n
\r\n\r\n \r\n \r\n\r\n \r\n {configApp.width <= 1300 ?\r\n \r\n \r\n \r\n :\r\n null}\r\n\r\n {USUARIO !== undefined ?\r\n USUARIO.CON_HAYNES ?\r\n \r\n \r\n \r\n :\r\n null\r\n :\r\n null\r\n }\r\n\r\n\r\n{/*\r\n \r\n \r\n \r\n\r\n */}\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n { setABRIR_FICHA_PERFIL(true) }}> {traducirPagina(\"Mi_configuracion\")} \r\n { window.open(\"https://download.anydesk.com/AnyDesk.exe\") }}> {traducirPagina(\"Soporte_remoto\")}\r\n { window.open(\"https://download.teamviewer.com/download/TeamViewer_Setup_x64.exe\") }}> {traducirPagina(\"Soporte_remoto_Team\")}\r\n\r\n {window.location.hostname === \"supporte85-flexfuel.servicenext.eu\" ?\r\n { setABRIR_FICHA_TUTORIAL(true) }}> {traducirPagina(\"Video_tutorial\")}\r\n :\r\n null\r\n }\r\n\r\n\r\n\r\n\r\n {\r\n logOut();\r\n store.dispatch(\r\n {\r\n type: \"SET_SESION_USER\",\r\n usuario: {}\r\n }\r\n )\r\n history.push(\"/\");\r\n }} > {traducirPagina(\"Cerrar_sesion\")}\r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n {ABRIR_FICHA_BOLETINES ?\r\n
\r\n \r\n\r\n : null}\r\n\r\n {ABRIR_FICHA_HAYNES ?\r\n
\r\n \r\n\r\n : null}\r\n\r\n {ABRIR_FICHA_PERFIL ?\r\n
\r\n \r\n\r\n : null}\r\n\r\n {\r\n ABRIR_FICHA_TUTORIAL ?\r\n
\r\n \r\n :\r\n null\r\n }\r\n\r\n
\r\n {/*
*/}\r\n\r\n
\r\n );\r\n}\r\n\r\n\r\nMasterPage.propTypes = {\r\n ABRIR_FICHA: PropTypes.bool,\r\n CERRAR_FICHA: PropTypes.func,\r\n\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n props: props,\r\n search: state.searchValue,\r\n configApp: state.configApp,\r\n usuario: state.usuario,\r\n clienteSeleccionado: state.clienteSeleccionado,\r\n activeItemReferencia: state.activeItemReferencia,\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(MasterPage);\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport { connect } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nimport { obtener_fabricantesEnAPI, obtener_modelosEnAPI, obtener_motorizacionesEnAPI } from \"../action/actionCreatorsRequests\";\r\nimport { MSGERROR, MSGOK, traducirPagina } from \"../librerias/funciones\"\r\nimport {\r\n SearchOutlined,\r\n CloseOutlined\r\n} from '@ant-design/icons';\r\nimport { Drawer } from 'antd';\r\n\r\nconst CP_FABRICANTES = (props) => {\r\n const filtrarFabricante = (palabraABuscar, marcas) => {\r\n let palabra = palabraABuscar;\r\n let resultado = [];\r\n if (palabraABuscar === undefined || palabraABuscar === \"\") {\r\n resultado = marcas;\r\n\r\n } else {\r\n let resultadoFiltro = marcas.filter((item) => {\r\n return item.DESCRIPCION.toUpperCase().includes(palabra.toUpperCase()) ||\r\n item.DESCRIPCION.toUpperCase() === palabra.toUpperCase()\r\n })\r\n\r\n if (resultadoFiltro.length > 0) {\r\n resultado = resultadoFiltro;\r\n } else {\r\n resultado = [];\r\n }\r\n }\r\n\r\n return resultado;\r\n }\r\n\r\n const modelarDatos = (marcas, textoBuscador) => {\r\n marcas = filtrarFabricante(textoBuscador, marcas);\r\n let listaMarca = [];\r\n let objetoNuevoMarcas = [];\r\n let contAux = 0;\r\n\r\n for (var i = 0; i < marcas.length; i++) {\r\n contAux += 1;\r\n if (contAux <= 3) {\r\n listaMarca.push({ \"ID\": marcas[i].ID, \"Marca\": marcas[i].DESCRIPCION })\r\n if ((marcas.length - 1) === i) {\r\n objetoNuevoMarcas.push({ \"lista\": listaMarca });\r\n }\r\n } else {\r\n objetoNuevoMarcas.push({ \"lista\": listaMarca });\r\n contAux = 0;\r\n listaMarca = []\r\n i = (i - 1)\r\n }\r\n }\r\n return objetoNuevoMarcas.length === 0 ? [] : objetoNuevoMarcas;\r\n }\r\n\r\n\r\n\r\n\r\n return (\r\n\r\n props.MARCAS === undefined || props.MARCAS === null ?\r\n
{traducirPagina(\"Msg_sin_resultados\")}
\r\n :\r\n props.MARCAS.length > 0 ?\r\n modelarDatos(props.MARCAS, props.TXT_FILTRO).map((item, i) =>\r\n \r\n {item.lista.map((row, i) =>\r\n
{\r\n props.HISTORIAL_VEHICULO.POSICION_ACTUAL = 1;\r\n props.HISTORIAL_VEHICULO.DESCRIPCION_MARCA = row.Marca\r\n props.HISTORIAL_VEHICULO.ID_MARCA = row.ID;\r\n\r\n props.BUSCAR_MODELOS_API(row.ID);\r\n\r\n props.SET_HISTORIAL({ ...props.HISTORIAL_VEHICULO })\r\n props.SET_TXT_FILTRO(\"\")\r\n }} >\r\n {row.Marca}\r\n
\r\n )}\r\n
\r\n )\r\n :\r\n \r\n );\r\n\r\n}\r\n\r\nconst CP_MODELOS = (props) => {\r\n\r\n const filtarModelos = (palabraABuscar, registros) => {\r\n let palabra = palabraABuscar;\r\n let resultado = [];\r\n if (palabraABuscar === undefined || palabraABuscar === \"\") {\r\n resultado = registros;\r\n\r\n } else {\r\n let resultadoFiltro = registros.filter((item) => {\r\n return item.DESCRIPCION.toUpperCase().includes(palabra.toUpperCase()) ||\r\n item.DESCRIPCION.toUpperCase() === palabra.toUpperCase() ||\r\n item.DESDE.toUpperCase().includes(palabra.toUpperCase()) ||\r\n item.DESDE.toUpperCase() === palabra.toUpperCase() ||\r\n item.HASTA.toUpperCase().includes(palabra.toUpperCase()) ||\r\n item.HASTA.toUpperCase() === palabra.toUpperCase()\r\n\r\n })\r\n\r\n if (resultadoFiltro.length > 0) {\r\n resultado = resultadoFiltro;\r\n } else {\r\n resultadoFiltro = [];\r\n }\r\n }\r\n\r\n return resultado;\r\n }\r\n\r\n return (\r\n props.MODELOS === null || props.MODELOS === undefined ?\r\n
{traducirPagina(\"Msg_sin_resultados\")}
\r\n :\r\n props.MODELOS.length > 0 ?\r\n \r\n \r\n \r\n { }}>{traducirPagina(\"Modelo\")} | \r\n { }}>{traducirPagina(\"Desde\")} | \r\n {traducirPagina(\"Hasta\")} | \r\n
\r\n \r\n \r\n\r\n {filtarModelos(props.TXT_FILTRO, props.MODELOS).map((registro, i) =>\r\n {\r\n props.HISTORIAL_VEHICULO.POSICION_ACTUAL = 2;\r\n props.HISTORIAL_VEHICULO.DESCRIPCION_MODELO = registro.DESCRIPCION\r\n props.HISTORIAL_VEHICULO.ID_MODELO = registro.ID;\r\n\r\n props.BUSCAR_MOTORIZACION_API(registro.ID);\r\n props.SET_HISTORIAL({ ...props.HISTORIAL_VEHICULO })\r\n props.SET_TXT_FILTRO(\"\")\r\n\r\n\r\n }}>\r\n {registro.DESCRIPCION} | \r\n {registro.DESDE} | \r\n {registro.HASTA} | \r\n
\r\n )\r\n }\r\n \r\n
\r\n :\r\n \r\n );\r\n}\r\n\r\nconst CP_MOTORIZACION = (props) => {\r\n\r\n const filtarMotores = (palabraABuscar, motores) => {\r\n let palabra = palabraABuscar;\r\n let resultado = [];\r\n if (palabraABuscar === undefined || palabraABuscar === \"\") {\r\n resultado = motores;\r\n\r\n } else {\r\n let resultadoFiltro = motores.filter((item) => {\r\n return item.DESCRIPCION.toUpperCase().includes(palabra.toUpperCase()) ||\r\n item.DESCRIPCION.toUpperCase() === palabra.toUpperCase() ||\r\n item.DESDE.toUpperCase().includes(palabra.toUpperCase()) ||\r\n item.DESDE.toUpperCase() === palabra.toUpperCase() ||\r\n item.MOTORES.toUpperCase().includes(palabra.toUpperCase()) ||\r\n item.MOTORES.toUpperCase() === palabra.toUpperCase() ||\r\n item.KW.toString().toUpperCase().includes(palabra.toUpperCase()) ||\r\n item.KW.toString().toUpperCase() === palabra.toUpperCase() ||\r\n item.CV.toString().toUpperCase().includes(palabra.toUpperCase()) ||\r\n item.CV.toString().toUpperCase() === palabra.toUpperCase() ||\r\n item.CC.toString().toUpperCase().includes(palabra.toUpperCase()) ||\r\n item.CC.toString().toUpperCase() === palabra.toUpperCase()\r\n })\r\n\r\n if (resultadoFiltro.length > 0) {\r\n resultado = resultadoFiltro;\r\n } else {\r\n resultadoFiltro = [];\r\n }\r\n }\r\n\r\n return resultado;\r\n }\r\n\r\n\r\n\r\n return (\r\n props.MOTORES === null || props.MOTORES === undefined ?\r\n
{\"Sin datos\"}
\r\n :\r\n props.MOTORES.length > 0 ?\r\n \r\n \r\n \r\n {traducirPagina(\"Motor\")} | \r\n {traducirPagina(\"Codigo\")} | \r\n {traducirPagina(\"Anio\")} | \r\n {\"kW\"} | \r\n {\"CV\"} | \r\n {\"CC\"} | \r\n
\r\n \r\n \r\n\r\n {filtarMotores(props.TXT_FILTRO, props.MOTORES).map((registro, i) =>\r\n {\r\n props.HISTORIAL_VEHICULO.DESCRIPCION_MOTOR = registro.DESCRIPCION\r\n props.HISTORIAL_VEHICULO.ID_MOTOR = registro.ID;\r\n props.HISTORIAL_VEHICULO.MOTORES = registro.MOTORES;\r\n\r\n props.SET_HISTORIAL({ ...props.HISTORIAL_VEHICULO })\r\n props.SET_TXT_FILTRO(\"\")\r\n\r\n props.ACTUALIZAR_VEHICULO(props.HISTORIAL_VEHICULO)\r\n props.CERRAR_FICHA(false)\r\n }}>\r\n {registro.DESCRIPCION} | \r\n {registro.MOTORES} | \r\n {registro.DESDE} | \r\n {registro.KW} | \r\n {registro.CV} | \r\n {registro.CC} | \r\n\r\n
\r\n )\r\n }\r\n \r\n
\r\n\r\n :\r\n \r\n );\r\n}\r\n\r\n\r\nconst FichaVehiculoTecdoc = ({ props, configApp }) => {\r\n const [txtFiltro, setTxtFiltro] = React.useState(\"\");\r\n const [historialVehiculo, setHistorialVehiculo] = React.useState(\r\n {\r\n ID_MARCA: 0,\r\n ID_MODELO: 0,\r\n ID_MOTOR: 0,\r\n DESCRIPCION_MARCA: \"\",\r\n DESCRIPCION_MODELO: \"\",\r\n DESCRIPCION_MOTOR: \"\",\r\n MOTORES: \"\",\r\n POSICION_ACTUAL: 0,\r\n\r\n }\r\n );\r\n\r\n\r\n const [hayCliente, setHayCliente] = React.useState(false);\r\n const [marcas, setMarcas] = React.useState([]);\r\n const [modelos, setModelos] = React.useState([]);\r\n const [motores, setMotores] = React.useState([]);\r\n\r\n\r\n\r\n const buscarFabricanteAPI = (fabricante) => {\r\n obtener_fabricantesEnAPI(fabricante).then((fabricantes) => {\r\n if (fabricantes !== undefined && fabricantes !== null && fabricantes.REGISTROS !== null && fabricantes.REGISTROS.length > 0) {\r\n setMarcas(fabricantes.REGISTROS)\r\n } else {\r\n setMarcas(null);\r\n }\r\n })\r\n }\r\n\r\n\r\n const buscarModelosAPI = async (fabricante) => {\r\n const modelos = await obtener_modelosEnAPI(fabricante);\r\n if (modelos !== undefined && modelos !== null && modelos.REGISTROS !== null && modelos.REGISTROS.length > 0) {\r\n setModelos(modelos.REGISTROS);\r\n } else {\r\n setModelos(null);\r\n }\r\n }\r\n\r\n\r\n const buscarMotorizacionAPI = async (modelo) => {\r\n const motores = await obtener_motorizacionesEnAPI(modelo);\r\n if (motores !== undefined && motores !== null && motores.REGISTROS !== null && motores.REGISTROS.length > 0) {\r\n setMotores(motores.REGISTROS);\r\n\r\n } else {\r\n setMotores(null);\r\n }\r\n }\r\n\r\n\r\n if (!hayCliente && props.ABRIR_FICHA) {\r\n setHayCliente(true);\r\n buscarFabricanteAPI(1);\r\n } else {\r\n if (!props.ABRIR_FICHA && hayCliente) {\r\n setHayCliente(false);\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n { props.CERRAR_FICHA(false) }}\r\n closable={false}\r\n visible={props.ABRIR_FICHA}\r\n placement={\"right\"}\r\n bodyStyle={{ padding: '0px' }}\r\n style={{ color: '#fff' }}>\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {historialVehiculo.POSICION_ACTUAL === 0 ? props.title : historialVehiculo.POSICION_ACTUAL === 1 ? traducirPagina(\"Seleccione_modelo\").toUpperCase() : historialVehiculo.POSICION_ACTUAL === 2 ? traducirPagina(\"Seleccione_tipo_motor\").toUpperCase() : \"\"}\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n {\r\n setTxtFiltro(e.target.value.trim() !== \"\" ? e.target.value : \"\")\r\n }} >\r\n
\r\n\r\n
\r\n {txtFiltro !== \"\" ?\r\n {\r\n setTxtFiltro(\"\")\r\n\r\n }}>\r\n :\r\n null\r\n }\r\n\r\n
\r\n\r\n
\r\n\r\n
{\r\n // setAbrirFichaTecdoc(true)\r\n }}>\r\n \r\n {/** */}\r\n
\r\n
\r\n\r\n {/*\r\n
\r\n {historialVehiculo.DESCRIPCION_MARCA === \"\" ?\r\n null :\r\n \r\n {historialVehiculo.DESCRIPCION_MARCA}\r\n \r\n }\r\n\r\n {historialVehiculo.DESCRIPCION_MARCA === \"\" ?\r\n null :\r\n \r\n {historialVehiculo.DESCRIPCION_MODELO}\r\n \r\n }\r\n {historialVehiculo.DESCRIPCION_MARCA === \"\" ?\r\n null :\r\n \r\n {historialVehiculo.DESCRIPCION_MOTOR}\r\n \r\n }\r\n
\r\n */}\r\n
\r\n\r\n \r\n
\r\n\r\n {historialVehiculo.POSICION_ACTUAL === 0 ?\r\n\r\n \r\n\r\n \r\n\r\n :\r\n\r\n historialVehiculo.POSICION_ACTUAL === 1 ?\r\n \r\n\r\n \r\n :\r\n historialVehiculo.POSICION_ACTUAL === 2 ?\r\n \r\n\r\n \r\n\r\n :\r\n null\r\n }\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n >\r\n )\r\n}\r\n\r\nFichaVehiculoTecdoc.propTypes = {\r\n title: PropTypes.string,\r\n ID_TAREA: PropTypes.number,\r\n\r\n ABRIR_FICHA: PropTypes.bool,\r\n CERRAR_FICHA: PropTypes.func,\r\n REGISTRO_SELECCIONADO: PropTypes.object,\r\n ES_NUEVA_TAREA: PropTypes.bool,\r\n ACTUALIZAR_TABLA: PropTypes.func,\r\n FILTRO_FECHA: PropTypes.object,\r\n FILTROS: PropTypes.object,\r\n\r\n ACTUALIZAR_VEHICULO: PropTypes.func\r\n\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n configApp: state.configApp,\r\n props: props,\r\n QUERY_USER: state.QUERY_USER\r\n\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(FichaVehiculoTecdoc);","\r\nimport { connect } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { MDBCard, MDBCardBody } from 'mdbreact';\r\n\r\nimport { obtener_fabricantesEnAPI, obtener_modelosEnAPI, obtener_imagen_vehiculoEnAPI, obtener_vehiculoEnAPI } from \"../action/actionCreatorsRequests\";\r\nimport { MSGERROR, MSGOK, traducirPagina } from \"../librerias/funciones\"\r\nimport {\r\n SearchOutlined,\r\n CloseOutlined\r\n} from '@ant-design/icons';\r\nimport { Drawer } from 'antd';\r\n\r\nconst FichaVehiculoTecdoc = ({ props, configApp }) => {\r\n const [vehiculo, setVehiculo] = React.useState({});\r\n const [imagenVehiculo, setImagenVehiculo] = React.useState(\"\");\r\n const [hayCliente, setHayCliente] = React.useState(false);\r\n\r\n\r\n const buscarImagenVehiculoEnAPI = async (ID_VEHICULO) => {\r\n setImagenVehiculo(\"\");\r\n const vehiculo = await obtener_imagen_vehiculoEnAPI(ID_VEHICULO);\r\n if (vehiculo !== undefined && vehiculo !== null && vehiculo.IMAGEN !== null) {\r\n setImagenVehiculo(vehiculo.IMAGEN);\r\n } else {\r\n setImagenVehiculo(null);\r\n }\r\n }\r\n\r\n\r\n const buscarVehiculoAPI = async (codmotorizacion) => {\r\n const resultado = await obtener_vehiculoEnAPI(codmotorizacion);\r\n\r\n if (resultado !== undefined && resultado !== null && resultado.REGISTRO !== undefined && resultado.REGISTRO !== null && Object.keys(resultado.REGISTRO).length > 0) {\r\n setVehiculo(resultado.REGISTRO);\r\n } else {\r\n setVehiculo(null);\r\n }\r\n }\r\n\r\n\r\n if (!hayCliente && props.ABRIR_FICHA) {\r\n setHayCliente(true);\r\n\r\n buscarVehiculoAPI(props.COD_MOTOR)\r\n buscarImagenVehiculoEnAPI(props.COD_MOTOR);\r\n\r\n } else {\r\n if (!props.ABRIR_FICHA && hayCliente) {\r\n setHayCliente(false);\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n { props.CERRAR_FICHA(false) }}\r\n closable={false}\r\n visible={props.ABRIR_FICHA}\r\n placement={\"right\"}\r\n bodyStyle={{ padding: '0px' }}\r\n style={{ color: '#fff' }}>\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n
\r\n {props.title}\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n \r\n {vehiculo !== null ?\r\n <>\r\n {\r\n vehiculo.MARCA === \"\" ?\r\n null :\r\n <>\r\n
\r\n {vehiculo.MARCA}\r\n
\r\n
\r\n /\r\n
\r\n >\r\n }\r\n \r\n {\r\n\r\n vehiculo.MODELO === \"\" ?\r\n null :\r\n <>\r\n
\r\n {vehiculo.MODELO}\r\n
\r\n
\r\n /\r\n
\r\n >\r\n }\r\n {\r\n\r\n vehiculo.MOTORIZACION === \"\" ?\r\n null :\r\n
\r\n {vehiculo.MOTORIZACION}\r\n \r\n }\r\n >\r\n :\r\n null\r\n }\r\n\r\n\r\n
\r\n
\r\n\r\n\r\n\r\n \r\n
\r\n {traducirPagina(\"Anio_fabricacion\")}\r\n\r\n
\r\n \r\n \r\n { }}>{ } | \r\n { }}>{ } | \r\n
\r\n \r\n \r\n \r\n {traducirPagina(\"Desde\")} | \r\n {vehiculo !== null ? vehiculo.DESDE : \"\"} | \r\n
\r\n\r\n \r\n {traducirPagina(\"Hasta\")} | \r\n {vehiculo !== null ? vehiculo.HASTA : \"\"} | \r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n {imagenVehiculo === null ?\r\n

\r\n :\r\n imagenVehiculo === \"\" ?\r\n
\r\n :\r\n

\r\n }\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n {vehiculo === null ?\r\n
\r\n
{traducirPagina(\"Msg_sin_resultados\")}
\r\n \r\n :\r\n Object.keys(vehiculo).length > 0 ?\r\n <>\r\n {traducirPagina(\"Datos_tecnicos\")}\r\n\r\n
\r\n \r\n \r\n { }}>{ } | \r\n { }}>{ } | \r\n
\r\n \r\n \r\n \r\n {\"ID TECDOC\"} | \r\n {props.COD_MOTOR} | \r\n
\r\n\r\n \r\n {traducirPagina(\"Carroceria\")} | \r\n {vehiculo.CARROCERIA} | \r\n
\r\n \r\n {traducirPagina(\"Tipo_traccion\")} | \r\n {vehiculo.TRACCION} | \r\n
\r\n \r\n {`${traducirPagina(\"Potencia\")}[KW]`} | \r\n {vehiculo.KW} | \r\n
\r\n \r\n {`${traducirPagina(\"Potencia\")}[CV]`} | \r\n {vehiculo.CV} | \r\n
\r\n \r\n {`${traducirPagina(\"Cilindrada\")}[CC]`} | \r\n {vehiculo.CC} | \r\n
\r\n\r\n \r\n {traducirPagina(\"Combustible\")} | \r\n {vehiculo.COMBUSTIBLE} | \r\n
\r\n \r\n {traducirPagina(\"Catalizador\")} | \r\n {vehiculo.CATALIZADOR} | \r\n
\r\n \r\n {traducirPagina(\"Cilindrada\")} | \r\n {vehiculo.CILINDROS} | \r\n
\r\n \r\n \r\n {traducirPagina(\"Litros\")} | \r\n {vehiculo.LITROS} | \r\n
\r\n\r\n\r\n \r\n {traducirPagina(\"Marca\")} | \r\n {vehiculo.MARCA} | \r\n
\r\n \r\n {traducirPagina(\"Modelo\")} | \r\n {vehiculo.MODELO} | \r\n
\r\n \r\n {traducirPagina(\"Motores\")} | \r\n {vehiculo.MOTORES} | \r\n
\r\n \r\n {traducirPagina(\"Tipo_motor\")} | \r\n {vehiculo.MOTORIZACION} | \r\n
\r\n \r\n {traducirPagina(\"Proceso_combustion\")} | \r\n {vehiculo.PROCESO_COMBUSTION} | \r\n
\r\n \r\n {traducirPagina(\"Sistema_frenado\")} | \r\n {vehiculo.SISTEMA_FRENADO} | \r\n
\r\n \r\n {\"TCS\"} | \r\n {vehiculo.TCS} | \r\n
\r\n \r\n {traducirPagina(\"Tipo_frenado\")} | \r\n {vehiculo.TIPO_FRENADO} | \r\n
\r\n \r\n {traducirPagina(\"Tipo_motor\")} | \r\n {vehiculo.TIPO_MOTOR} | \r\n
\r\n \r\n {traducirPagina(\"Tracción\")} | \r\n {vehiculo.TRACCION} | \r\n
\r\n \r\n {traducirPagina(\"Transmisión\")} | \r\n {vehiculo.TRANSMISION} | \r\n
\r\n \r\n {traducirPagina(\"Válvulas\")} | \r\n {vehiculo.VALVULAS} | \r\n
\r\n\r\n \r\n
\r\n >\r\n :\r\n
\r\n\r\n }\r\n
\r\n
\r\n\r\n \r\n >\r\n )\r\n}\r\n\r\nFichaVehiculoTecdoc.propTypes = {\r\n title: PropTypes.string,\r\n ABRIR_FICHA: PropTypes.bool,\r\n CERRAR_FICHA: PropTypes.func,\r\n COD_MOTOR: PropTypes.number,\r\n\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n configApp: state.configApp,\r\n props: props,\r\n QUERY_USER: state.QUERY_USER\r\n\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(FichaVehiculoTecdoc);","\r\nimport { connect } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport React from 'react';\r\nimport store from \"../store\";\r\n\r\nimport { obtener_configuracion_EnAPI, obtener_fabricantesEnAPI, obtener_modelosEnAPI, obtener_motorizacionesEnAPI, obtener_tipo_tareaEnAPI, obtener_grupo_montajeEnAPI, buscar_matriculaEnAPI, buscar_bastidorEnAPI, nueva_tareaEnAPI, obtener_registrosEnAPI, insertar_ficheroEnAPI, obtener_fichero_tecnico_EnAPI, obtener_fichero_taller_EnAPI, obtener_paises_EnAPI, obtener_imagen_vehiculoEnAPI, obtener_registros_taller_EnAPI, obtener_tarea_EnAPI, END_POINT_ACTUAL, obtener_conectorEnAPI } from \"../action/actionCreatorsRequests\";\r\nimport { MSGERROR, MSGOK, traducirPagina, verificarExtension, obtenerLicenciaLocal, generateUUID, descargarDocPasandoBase64Generico, convertirTextoBastidor, verificarMatricula } from \"../librerias/funciones\"\r\nimport { MDBCard, MDBCardBody } from 'mdbreact';\r\n\r\nimport {\r\n SaveOutlined,\r\n DeleteOutlined,\r\n PlusOutlined,\r\n CloudDownloadOutlined,\r\n EyeOutlined,\r\n SearchOutlined,\r\n CloseOutlined,\r\n FileImageOutlined\r\n} from '@ant-design/icons';\r\nimport { Select, Drawer, Modal, Button, Input, Row, Col, Tabs, Popover } from 'antd';\r\n\r\nimport FichaSeleccionVehiculo from './FichaSeleccionVehiculo';\r\n\r\nimport VisorGenerico from './VisorGenerico';\r\nimport FichaVehiculoTecdoc from './FichaVehiculoTecdoc';\r\nimport FichaDetalleVehiculo from './FichaDetalleVehiculo';\r\nconst { TabPane } = Tabs;\r\nconst { Search } = Input;\r\nconst { Option } = Select;\r\n\r\n\r\nconst FichaTarea = ({ props, configApp, QUERY_USER }) => {\r\n const [visible, setVisible] = React.useState(false);\r\n\r\n const [conector, setConector] = React.useState([]);\r\n\r\n const [seModificaBastidor, setSeModificaBastidor] = React.useState(false);\r\n\r\n const [hayCliente, setHayCliente] = React.useState(false);\r\n const [tabPorDefecto, setTabPorDefecto] = React.useState(\"1\");\r\n const [marcas, setMarcas] = React.useState([]);\r\n const [modelos, setModelos] = React.useState([]);\r\n const [motores, setMotores] = React.useState([]);\r\n const [paises, setPaises] = React.useState([]);\r\n const [configuracion, setConfiguracion] = React.useState([]);\r\n const [imagenVehiculo, setImagenVehiculo] = React.useState(\"\");\r\n const [tipoTarea, setTipoTarea] = React.useState([]);\r\n const [grupoMontaje, setGrupoMontaje] = React.useState([]);\r\n\r\n const [cocheDGT, setCocheDGT] = React.useState({});\r\n const [abrirSeleccionVehiculo, setAbrirSeleccionVehiculo] = React.useState(false);\r\n const [creandoTarea, setCreandoTarea] = React.useState(false);\r\n\r\n const [abrirModalInfoVeh, setAbrirModalInfoVeh] = React.useState(false);\r\n const [cocheSeleccionado, setCocheSeleccionado] = React.useState({\r\n MARCA: 0,\r\n MODELO: 0,\r\n MOTOR: 0,\r\n TIPO_TAREA: 0,\r\n GRUPO_MONTAJE: 0,\r\n CODIGO_MOTORES: []\r\n });\r\n const [ficherosTaller, setFicherosTaller] = React.useState([]);\r\n const [ficherosTecnico, setFicherosTecnico] = React.useState([]);\r\n\r\n const [abrirVisor, setAbrirVisor] = React.useState(false);\r\n\r\n const [abrirFichaTecdoc, setAbrirFichaTecdoc] = React.useState(false);\r\n const [abrirFichaDetalleVeh, setAbrirFichaDetalleVeh] = React.useState(false);\r\n\r\n\r\n const [ficheroSeleccionado, setFicheroSeleccionado] = React.useState({});\r\n const [archivosLocal, setArchivosLocal] = React.useState([]);\r\n const [loaderTarea, setLoaderTarea] = React.useState({\r\n LOADER_MATRICULA: false,\r\n LOADER_BASTIDOR: false\r\n });\r\n\r\n\r\n\r\n const obtenerConfig = (registros, NOMBRE) => {\r\n const config = {\r\n DESCRIPCION: \"\",\r\n ID_APP_CONFIGURACION: 0,\r\n NOMBRE_PARAMETRO: \"\",\r\n VALOR: \"\"\r\n }\r\n\r\n const data = registros.find((registros) => registros.NOMBRE_PARAMETRO === NOMBRE);\r\n if (data !== undefined) {\r\n const { DESCRIPCION, ID_APP_CONFIGURACION, NOMBRE_PARAMETRO, VALOR } = data;\r\n config.DESCRIPCION = DESCRIPCION;\r\n config.ID_APP_CONFIGURACION = ID_APP_CONFIGURACION;\r\n config.NOMBRE_PARAMETRO = NOMBRE_PARAMETRO;\r\n config.VALOR = VALOR\r\n }\r\n\r\n return config;\r\n }\r\n\r\n const gestionarFicheroLocal = (input) => {\r\n const url = input.value;\r\n const ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase();\r\n //const { ES_EXTENSION_PERMITIDA } = verificarExtension(ext);\r\n const { VALOR, DESCRIPCION, TIPOS_ARCHIVOS } = obtenerConfig(configuracion, \"TAMANYO_MAXIMO_ARCHIVO\")\r\n\r\n //obtenerConfig(configuracion, \"TIPOS_ARCHIVOS\").VALOR\r\n let EXTENSIONES_PERMITIDAS = obtenerConfig(configuracion, \"TIPOS_ARCHIVOS\").VALOR\r\n let extension = EXTENSIONES_PERMITIDAS.replaceAll(\".\", \"\");\r\n let Lista_ext = extension.split(\",\");\r\n let existe_ext = Lista_ext.filter((registro) => registro.trim() === ext);\r\n\r\n\r\n if (input.files && input.files[0] && existe_ext.length > 0) {\r\n if (input.files[0].size <= parseInt(VALOR)) {\r\n const reader = new FileReader();\r\n reader.onload = (e) => {\r\n const registro =\r\n {\r\n ID: generateUUID(),\r\n NOMBRE: input.files[0].name,\r\n STATUS: 'pending',\r\n EXTENSION: ext,\r\n DATOS: e.target.result,\r\n TYPE: input.files[0].type,\r\n PROPIEDADES_FICHERO: verificarExtension(ext)\r\n }\r\n\r\n setArchivosLocal([...archivosLocal, registro])\r\n input.value = '';\r\n }\r\n reader.readAsDataURL(input.files[0]);\r\n } else {\r\n MSGERROR(DESCRIPCION, \"botton-right\")\r\n }\r\n } else {\r\n MSGERROR(traducirPagina(\"Archivo_no_permitido\"), \"botton-right\")\r\n input.value = '';\r\n }\r\n }\r\n\r\n\r\n const eliminarFichero = (fichero) => {\r\n let registros = archivosLocal.filter((registro) => registro.ID !== fichero.ID);\r\n\r\n setArchivosLocal([...registros])\r\n }\r\n\r\n\r\n const [payLoadLocal, setPayLoadLocal] = React.useState(\r\n {\r\n ID_MAE_PAIS_TAREA: 1,//id desplegable paises\r\n MATRICULA_PAIS: \"E\",// desplegable paises\r\n\r\n ID_VEHICULO_TECDOC: 0,\r\n MATRICULA_MARCA_ID: 0,\r\n MATRICULA_MODELO_ID: 0,\r\n MATRICULA_MOTOR_ID: 0,\r\n BASTIDOR: \"\",\r\n MATRICULA: \"\",\r\n MATRICULA_MARCA: \"\",\r\n MATRICULA_MODELO: \"\",\r\n MATRICULA_MOTOR: \"\",\r\n MATRICULA_CODIGO_MOTOR: \"\",\r\n\r\n ID_MAE_PLATAFORMA: \"3\",\r\n ID_MAE_GRUPO_MONTAJE: \"\",//desplegable\r\n ID_MAE_PRIORIDAD_TAREA: \"3\",\r\n ID_MAE_TIPO_TAREA: \"\",//Poner desplegable\r\n\r\n TEXTO: \"\",\r\n CODIGO_AVERIA: \"\",\r\n\r\n TEXTO_RESPUESTA: \"\",\r\n ID_MAE_GRADO_SATISFACCION: \"\",\r\n RESOLUCION_DE_TAREAS: \"\",\r\n ID_MAE_ESTADO_TAREA: \"1\",//Estado si asignar\r\n\r\n ID_USUARIO_ASIGNADO: \"\",\r\n ID_USUARIO_EN_CURSO: \"\",\r\n ID_USUARIO_RESPUESTA: \"\",\r\n NOMBRE_USUARIO_RESPUESTA: \"\"\r\n\r\n }\r\n )\r\n\r\n const selectBefore = (\r\n \r\n );\r\n\r\n\r\n\r\n const buscarImagenVehiculoEnAPI = async (ID_VEHICULO) => {\r\n setImagenVehiculo(\"\");\r\n\r\n const vehiculo = await obtener_imagen_vehiculoEnAPI(ID_VEHICULO);\r\n if (vehiculo !== undefined && vehiculo !== null && vehiculo.IMAGEN !== null) {\r\n setImagenVehiculo(vehiculo.IMAGEN);\r\n } else {\r\n setImagenVehiculo(null);\r\n }\r\n }\r\n\r\n\r\n const obtener_conector = async (ID_VEHICULO, CODIGO_MOTOR) => {\r\n\r\n const conector = await obtener_conectorEnAPI(ID_VEHICULO, CODIGO_MOTOR);\r\n\r\n if (conector !== undefined && conector !== null && conector.REGISTROS !== null && conector.REGISTROS.length > 0) {\r\n setConector(conector.REGISTROS);\r\n } else {\r\n setConector(null);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n const obtenerCodigoMotores = (MOTORES) => {\r\n let RESULT_MOTORES = [];\r\n if (MOTORES !== undefined && MOTORES !== null) {\r\n MOTORES = MOTORES === \"\" ? \".\" : MOTORES;\r\n RESULT_MOTORES = MOTORES.split(\"|\");\r\n RESULT_MOTORES = RESULT_MOTORES.filter((v, i, a) => a.indexOf(v) === i);\r\n }\r\n return RESULT_MOTORES\r\n }\r\n\r\n const cocheSeleccionadoLocal = async (vehiculo) => {\r\n buscarModelosAPI(vehiculo.ID_MARCA);\r\n buscarMotorizacionAPI(vehiculo.ID_MODELO);\r\n\r\n\r\n //payLoadLocal.MATRICULA_CODIGO_MOTOR = vehiculo.MOTORES;\r\n let LISTA_MOTORES = obtenerCodigoMotores(vehiculo.MOTORES);\r\n cocheSeleccionado.CODIGO_MOTORES = LISTA_MOTORES\r\n if (LISTA_MOTORES.length === 1) {\r\n payLoadLocal.MATRICULA_CODIGO_MOTOR = LISTA_MOTORES[0];\r\n\r\n obtener_conector(parseInt(vehiculo.ID), LISTA_MOTORES[0])\r\n }\r\n\r\n payLoadLocal.ID_VEHICULO_TECDOC = parseInt(vehiculo.ID);\r\n\r\n\r\n payLoadLocal.MATRICULA_MARCA_ID = vehiculo.ID_MARCA;\r\n payLoadLocal.MATRICULA_MODELO_ID = vehiculo.ID_MODELO;\r\n payLoadLocal.MATRICULA_MOTOR_ID = parseInt(vehiculo.ID);\r\n\r\n payLoadLocal.MATRICULA_MARCA = vehiculo.MARCA\r\n payLoadLocal.MATRICULA_MODELO = vehiculo.MODELO;\r\n payLoadLocal.MATRICULA_MOTOR = vehiculo.MOTORIZACION;\r\n\r\n\r\n\r\n\r\n setCocheSeleccionado({ ...cocheSeleccionado })\r\n setPayLoadLocal({ ...payLoadLocal })\r\n buscarImagenVehiculoEnAPI(parseInt(vehiculo.ID))\r\n\r\n\r\n setAbrirSeleccionVehiculo(false);\r\n }\r\n\r\n\r\n\r\n const ObtenerTiposTareas = () => {\r\n obtener_tipo_tareaEnAPI().then((tipos) => {\r\n if (tipos !== undefined && tipos !== null && tipos.REGISTROS !== null && tipos.REGISTROS.length > 0) {\r\n setTipoTarea(tipos.REGISTROS);\r\n } else {\r\n setTipoTarea(null);\r\n }\r\n })\r\n }\r\n\r\n const ObtenerGrupoMontajes = () => {\r\n obtener_grupo_montajeEnAPI().then((registros) => {\r\n if (registros !== undefined && registros !== null && registros.REGISTROS !== null && registros.REGISTROS.length > 0) {\r\n setGrupoMontaje(registros.REGISTROS);\r\n } else {\r\n setGrupoMontaje(null);\r\n }\r\n })\r\n }\r\n\r\n\r\n const buscarFabricanteAPI = (fabricante) => {\r\n obtener_fabricantesEnAPI(fabricante).then((fabricantes) => {\r\n if (fabricantes !== undefined && fabricantes !== null && fabricantes.REGISTROS !== null && fabricantes.REGISTROS.length > 0) {\r\n setMarcas(fabricantes.REGISTROS);\r\n } else {\r\n setMarcas(null);\r\n }\r\n })\r\n }\r\n\r\n\r\n const buscarModelosAPI = async (fabricante) => {\r\n const modelos = await obtener_modelosEnAPI(fabricante);\r\n if (modelos !== undefined && modelos !== null && modelos.REGISTROS !== null && modelos.REGISTROS.length > 0) {\r\n setModelos(modelos.REGISTROS);\r\n } else {\r\n setModelos(null);\r\n }\r\n }\r\n\r\n\r\n const buscarMotorizacionAPI = async (modelo) => {\r\n const motores = await obtener_motorizacionesEnAPI(modelo);\r\n if (motores !== undefined && motores !== null && motores.REGISTROS !== null && motores.REGISTROS.length > 0) {\r\n setMotores(motores.REGISTROS);\r\n\r\n } else {\r\n setMotores(null);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n const buscarPaisesEnAPI = async (ES_NUEVA_TAREA) => {\r\n const paises = await obtener_paises_EnAPI();\r\n if (paises !== undefined && paises !== null && paises.REGISTROS !== null && paises.REGISTROS.length > 0) {\r\n setPaises(paises.REGISTROS);\r\n\r\n if (ES_NUEVA_TAREA) {\r\n try {\r\n const { ID_IDIOMA, CODIGO_IDIOMA } = store.getState().usuario.USUARIO;\r\n const { ID, DESCRIPCION } = paises.REGISTROS.find((registro) => registro.DESCRIPCION === (CODIGO_IDIOMA.trim()));\r\n\r\n payLoadLocal.ID_MAE_PAIS_TAREA = ID;//id desplegable paises\r\n payLoadLocal.MATRICULA_PAIS = DESCRIPCION;// desplegable paises\r\n setPayLoadLocal({ ...payLoadLocal });\r\n\r\n } catch (error) {\r\n console.log(\"MSG -> \", error)\r\n }\r\n }\r\n } else {\r\n setPaises(null);\r\n }\r\n }\r\n\r\n\r\n const buscarConfiguracionEnAPI = async () => {\r\n const configuracion = await obtener_configuracion_EnAPI();\r\n if (configuracion !== undefined && configuracion !== null && configuracion.REGISTROS !== null && configuracion.REGISTROS.length > 0) {\r\n setConfiguracion(configuracion.REGISTROS);\r\n } else {\r\n setConfiguracion(null);\r\n }\r\n }\r\n\r\n const ObtenerFicherosAPI = (ID_TAREA) => {\r\n obtener_registrosEnAPI(ID_TAREA).then((fichero) => {\r\n if (fichero !== undefined && fichero !== null && fichero.ARCHIVOS !== undefined && fichero.ARCHIVOS !== null && fichero.ARCHIVOS.length > 0) {\r\n setFicherosTecnico(fichero.ARCHIVOS);\r\n } else {\r\n setFicherosTecnico(null);\r\n }\r\n })\r\n }\r\n\r\n\r\n const ObtenerFicherosTallerAPI = (ID_TAREA) => {\r\n obtener_registros_taller_EnAPI(ID_TAREA).then((fichero) => {\r\n if (fichero !== undefined && fichero !== null && fichero.ARCHIVOS !== undefined && fichero.ARCHIVOS !== null && fichero.ARCHIVOS.length > 0) {\r\n\r\n setFicherosTaller(fichero.ARCHIVOS);\r\n } else {\r\n setFicherosTaller(null);\r\n }\r\n })\r\n }\r\n\r\n\r\n const limpiezaVehiculoTecdoc = () => {\r\n payLoadLocal.MATRICULA_MARCA_ID = 0\r\n payLoadLocal.MATRICULA_MODELO_ID = 0\r\n payLoadLocal.MATRICULA_MOTOR_ID = 0\r\n\r\n\r\n payLoadLocal.MATRICULA_MARCA = \"\";\r\n payLoadLocal.MATRICULA_MODELO = \"\";\r\n payLoadLocal.MATRICULA_MOTOR = \"\";\r\n\r\n payLoadLocal.ID_VEHICULO_TECDOC = 0;\r\n\r\n setPayLoadLocal({ ...payLoadLocal })\r\n }\r\n\r\n\r\n\r\n\r\n const busquedaPorMatricula = (TXT_BUSQUEDA_COCHE, PAIS) => {\r\n loaderTarea.LOADER_MATRICULA = true;\r\n setLoaderTarea({ ...loaderTarea })\r\n\r\n if (TXT_BUSQUEDA_COCHE !== \"\") {\r\n setSeModificaBastidor(false)\r\n\r\n\r\n buscar_matriculaEnAPI(TXT_BUSQUEDA_COCHE, PAIS).then(coche => {\r\n if (coche !== undefined && coche !== null && coche.OK) {\r\n coche.TIPO_BUSQUEDA = \"MATRICULA\";\r\n payLoadLocal.BASTIDOR = coche.Matricula.Bastidor;\r\n payLoadLocal.MATRICULA_CODIGO_MOTOR = \"\";\r\n\r\n setPayLoadLocal({ ...payLoadLocal })\r\n setCocheDGT(coche)\r\n if (coche.VEHICULOS_TECDOC === null || coche.VEHICULOS_TECDOC.length === 0) {\r\n //SIN DATOS DGT\r\n setAbrirModalInfoVeh(true)\r\n\r\n limpiezaVehiculoTecdoc();\r\n\r\n } else {\r\n if (coche.VEHICULOS_TECDOC.length > 0) {\r\n if (coche.VEHICULOS_TECDOC.length > 1) {\r\n //ABRIR FICHA PARA SELECCIONAR COCHE\r\n setAbrirSeleccionVehiculo(true)\r\n\r\n\r\n } else {\r\n cocheSeleccionadoLocal(coche.VEHICULOS_TECDOC[0])\r\n\r\n }\r\n } else {\r\n MSGERROR(traducirPagina(\"Msg_sin_resultados\"));\r\n }\r\n }\r\n }\r\n\r\n loaderTarea.LOADER_MATRICULA = false;\r\n setLoaderTarea({ ...loaderTarea })\r\n })\r\n\r\n } else {\r\n MSGERROR(traducirPagina(\"Msg_formato_matricula\"));\r\n }\r\n }\r\n\r\n\r\n const busquedaPorBastidor = (TXT_BUSQUEDA_COCHE, PAIS) => {\r\n loaderTarea.LOADER_BASTIDOR = true;\r\n setLoaderTarea({ ...loaderTarea })\r\n\r\n if (TXT_BUSQUEDA_COCHE !== \"\") {\r\n\r\n buscar_bastidorEnAPI(TXT_BUSQUEDA_COCHE, PAIS).then(coche => {\r\n if (coche !== undefined && coche !== null && coche.OK) {\r\n coche.TIPO_BUSQUEDA = \"BASTIDOR\";\r\n setCocheDGT(coche)\r\n if (coche.VEHICULOS_TECDOC === null || coche.VEHICULOS_TECDOC.length === 0) {\r\n //SIN DATOS DGT\r\n setAbrirModalInfoVeh(true)\r\n limpiezaVehiculoTecdoc();\r\n\r\n } else {\r\n if (coche.VEHICULOS_TECDOC.length > 0) {\r\n if (coche.VEHICULOS_TECDOC.length > 1) {\r\n //ABRIR FICHA PARA SELECCIONAR COCHE\r\n setAbrirSeleccionVehiculo(true)\r\n\r\n\r\n } else {\r\n cocheSeleccionadoLocal(coche.VEHICULOS_TECDOC[0])\r\n }\r\n\r\n } else {\r\n MSGERROR(traducirPagina(\"Msg_sin_resultados\"));\r\n }\r\n }\r\n }\r\n loaderTarea.LOADER_BASTIDOR = false;\r\n setLoaderTarea({ ...loaderTarea })\r\n })\r\n } else {\r\n MSGERROR(traducirPagina(\"Ingrese_bastidor\"));\r\n }\r\n }\r\n\r\n\r\n\r\n const Repreguntar = (ID_CONSULTA) => {\r\n obtener_tarea_EnAPI(ID_CONSULTA).then((data) => {\r\n if (data !== undefined && data !== null && data.REGISTRO !== undefined && data.REGISTRO !== null && Object.keys(data.REGISTRO).length > 0) {\r\n let VEHICULO = data.REGISTRO\r\n\r\n\r\n let LISTA_MOTORES = [VEHICULO.MATRICULA_CODIGO_MOTOR];\r\n\r\n\r\n payLoadLocal.ID_MAE_PAIS_TAREA = VEHICULO.FK_ID_MAE_PAIS_TAREA;\r\n payLoadLocal.MATRICULA_PAIS = VEHICULO.MATRICULA_CODIGO_PAIS;\r\n payLoadLocal.BASTIDOR = VEHICULO.BASTIDOR;\r\n payLoadLocal.MATRICULA = VEHICULO.MATRICULA;\r\n payLoadLocal.MATRICULA_MARCA = VEHICULO.MATRICULA_MARCA;\r\n payLoadLocal.MATRICULA_MODELO = VEHICULO.MATRICULA_MODELO;\r\n payLoadLocal.MATRICULA_MOTOR = VEHICULO.MATRICULA_MOTOR;\r\n\r\n payLoadLocal.MATRICULA_MARCA_ID = VEHICULO.MATRICULA_MARCA_ID;\r\n payLoadLocal.MATRICULA_MODELO_ID = VEHICULO.MATRICULA_MODELO_ID;\r\n payLoadLocal.MATRICULA_MOTOR_ID = VEHICULO.MATRICULA_MOTOR_ID;\r\n payLoadLocal.ID_VEHICULO_TECDOC = VEHICULO.MATRICULA_MOTOR_ID;\r\n\r\n\r\n //payLoadLocal.MATRICULA_CODIGO_MOTOR = VEHICULO.MATRICULA_CODIGO_MOTOR;\r\n payLoadLocal.MATRICULA_CODIGO_MOTOR = LISTA_MOTORES[0];\r\n\r\n payLoadLocal.CODIGO_AVERIA = VEHICULO.CODIGO_AVERIA;\r\n setPayLoadLocal({ ...payLoadLocal });\r\n\r\n\r\n setCocheSeleccionado({\r\n MARCA: VEHICULO.MATRICULA_MARCA_ID,\r\n MODELO: VEHICULO.MATRICULA_MODELO_ID,\r\n MOTOR: VEHICULO.MATRICULA_MOTOR_ID,\r\n TIPO_TAREA: 0,\r\n GRUPO_MONTAJE: 0,\r\n CODIGO_MOTORES: LISTA_MOTORES\r\n })\r\n\r\n\r\n buscarModelosAPI(VEHICULO.MATRICULA_MARCA_ID);\r\n buscarMotorizacionAPI(VEHICULO.MATRICULA_MODELO_ID);\r\n buscarImagenVehiculoEnAPI(VEHICULO.MATRICULA_MOTOR_ID)\r\n\r\n\r\n obtener_conector(VEHICULO.MATRICULA_MOTOR_ID, LISTA_MOTORES[0])\r\n }\r\n })\r\n\r\n }\r\n\r\n\r\n if (!hayCliente && props.ABRIR_FICHA) {\r\n setHayCliente(true);\r\n let PAIS_POR_DEFECTO = props.ES_NUEVA_TAREA && Object.keys(props.REGISTRO_SELECCIONADO).length === 0 ? true : false\r\n buscarPaisesEnAPI(PAIS_POR_DEFECTO);\r\n\r\n //setPaises(props.PAISES);\r\n\r\n buscarFabricanteAPI(1);\r\n ObtenerTiposTareas();\r\n ObtenerGrupoMontajes();\r\n\r\n buscarConfiguracionEnAPI();\r\n\r\n if (props.ES_NUEVA_TAREA) {\r\n //NUEVA TAREA\r\n\r\n setImagenVehiculo(null)\r\n\r\n const COPIA_QUERY = { ...QUERY_USER }\r\n store.dispatch({ type: \"QUERY_USER\", QUERY_USER: {} });\r\n\r\n if (Object.keys(COPIA_QUERY).length > 0) {\r\n payLoadLocal.MATRICULA = COPIA_QUERY.MATRICULA;\r\n setPayLoadLocal({ ...payLoadLocal });\r\n busquedaPorMatricula(payLoadLocal.MATRICULA, payLoadLocal.MATRICULA_PAIS);\r\n }\r\n\r\n\r\n if (Object.keys(props.REGISTRO_SELECCIONADO).length > 0) {\r\n Repreguntar(props.REGISTRO_SELECCIONADO.ID_TAREA)\r\n }\r\n \r\n\r\n if (window.location.hostname === \"supporte85-flexfuel.servicenext.eu\") {\r\n cocheSeleccionado.TIPO_TAREA = 2;\r\n setCocheSeleccionado({ ...cocheSeleccionado })\r\n }\r\n \r\n \r\n \r\n\r\n } else {\r\n //TAREA SELECCIONADA\r\n obtener_tarea_EnAPI(props.REGISTRO_SELECCIONADO.ID_TAREA).then((data) => {\r\n if (data !== undefined && data !== null && data.REGISTRO !== undefined && data.REGISTRO !== null && Object.keys(data.REGISTRO).length > 0) {\r\n let VEHICULO = data.REGISTRO\r\n\r\n let LISTA_MOTORES = [VEHICULO.MATRICULA_CODIGO_MOTOR];\r\n\r\n\r\n //cocheSeleccionado.CODIGO_MOTORES = LISTA_MOTORES\r\n\r\n\r\n\r\n setPayLoadLocal({\r\n ID_MAE_PAIS_TAREA: VEHICULO.FK_ID_MAE_PAIS_TAREA,//id desplegable paises\r\n MATRICULA_PAIS: VEHICULO.MATRICULA_CODIGO_PAIS,// desplegable paises\r\n ID_VEHICULO_TECDOC: VEHICULO.ID_VEHICULO_TECDOC,\r\n BASTIDOR: VEHICULO.BASTIDOR,\r\n MATRICULA: VEHICULO.MATRICULA,\r\n MATRICULA_MARCA: VEHICULO.MATRICULA_MARCA,\r\n MATRICULA_MODELO: VEHICULO.MATRICULA_MODELO,\r\n MATRICULA_MOTOR: VEHICULO.MATRICULA_MOTOR,\r\n //MATRICULA_CODIGO_MOTOR: VEHICULO.MATRICULA_CODIGO_MOTOR,\r\n MATRICULA_CODIGO_MOTOR: LISTA_MOTORES[0],\r\n\r\n ID_MAE_PLATAFORMA: VEHICULO.FK_ID_MAE_PLATAFORMA,\r\n ID_MAE_GRUPO_MONTAJE: VEHICULO.FK_ID_MAE_GRUPO_MONTAJE,//desplegable\r\n ID_MAE_PRIORIDAD_TAREA: VEHICULO.FK_ID_MAE_PRIORIDAD_TAREA,\r\n ID_MAE_TIPO_TAREA: VEHICULO.FK_ID_MAE_TIPO_TAREA,//Poner desplegable\r\n\r\n TEXTO: VEHICULO.TEXTO_CONSULTA,\r\n CODIGO_AVERIA: VEHICULO.CODIGO_AVERIA,\r\n\r\n TEXTO_RESPUESTA: VEHICULO.TEXTO_RESPUESTA,\r\n ID_MAE_GRADO_SATISFACCION: VEHICULO.FK_ID_MAE_GRADO_SATISFACCION,\r\n RESOLUCION_DE_TAREAS: VEHICULO.RESOLUCION_DE_TAREAS,\r\n ID_MAE_ESTADO_TAREA: VEHICULO.FK_ID_MAE_ESTADO_TAREA, //Estado si asignar\r\n\r\n ID_USUARIO_ASIGNADO: VEHICULO.FK_ID_USUARIO_ASIGNADO,\r\n ID_USUARIO_EN_CURSO: VEHICULO.FK_ID_USUARIO_EN_CURSO,\r\n ID_USUARIO_RESPUESTA: VEHICULO.FK_ID_USUARIO_RESPUESTA,\r\n NOMBRE_USUARIO_RESPUESTA: VEHICULO.NOMBRE_USUARIO_RESPUESTA,\r\n })\r\n\r\n setCocheSeleccionado({\r\n MARCA: VEHICULO.MATRICULA_MARCA_ID,\r\n MODELO: VEHICULO.MATRICULA_MODELO_ID,\r\n MOTOR: VEHICULO.MATRICULA_MOTOR_ID,\r\n TIPO_TAREA: VEHICULO.FK_ID_MAE_TIPO_TAREA,\r\n GRUPO_MONTAJE: VEHICULO.FK_ID_MAE_GRUPO_MONTAJE,\r\n CODIGO_MOTORES: LISTA_MOTORES\r\n })\r\n\r\n\r\n buscarModelosAPI(VEHICULO.MATRICULA_MARCA_ID);\r\n buscarMotorizacionAPI(VEHICULO.MATRICULA_MODELO_ID);\r\n ObtenerFicherosAPI(VEHICULO.ID_TAREA);\r\n ObtenerFicherosTallerAPI(VEHICULO.ID_TAREA)\r\n buscarImagenVehiculoEnAPI(VEHICULO.MATRICULA_MOTOR_ID)\r\n }\r\n })\r\n\r\n }\r\n } else {\r\n if (!props.ABRIR_FICHA && hayCliente) {\r\n setHayCliente(false);\r\n setTabPorDefecto(\"1\")\r\n setPayLoadLocal({\r\n ID_MAE_PAIS_TAREA: \"\",//id desplegable paises\r\n ID_VEHICULO_TECDOC: 0,\r\n MATRICULA_MARCA_ID: 0,\r\n MATRICULA_MODELO_ID: 0,\r\n MATRICULA_MOTOR_ID: 0,\r\n BASTIDOR: \"\",\r\n MATRICULA: \"\",\r\n MATRICULA_MARCA: \"\",\r\n MATRICULA_MODELO: \"\",\r\n MATRICULA_MOTOR: \"\",\r\n MATRICULA_CODIGO_MOTOR: \"\",\r\n MATRICULA_PAIS: \"E\",// desplegable paises\r\n ID_MAE_PLATAFORMA: \"3\",\r\n ID_MAE_GRUPO_MONTAJE: \"\",//desplegable\r\n ID_MAE_PRIORIDAD_TAREA: \"3\",\r\n ID_MAE_TIPO_TAREA: \"\",//Poner desplegable\r\n\r\n TEXTO: \"\",\r\n CODIGO_AVERIA: \"\",\r\n\r\n TEXTO_RESPUESTA: \"\",\r\n ID_MAE_GRADO_SATISFACCION: \"\",\r\n RESOLUCION_DE_TAREAS: \"\",\r\n ID_MAE_ESTADO_TAREA: \"1\",//Estado si asignar\r\n\r\n ID_USUARIO_ASIGNADO: \"\",\r\n ID_USUARIO_EN_CURSO: \"\",\r\n ID_USUARIO_RESPUESTA: \"\",\r\n NOMBRE_USUARIO_RESPUESTA: \"\"\r\n })\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n const guardarEstadoFormulario = (e) => {\r\n const ID_MAE_PAIS_TAREA = e.target.name === 'ID_MAE_PAIS_TAREA' ? e.target.value : payLoadLocal.ID_MAE_PAIS_TAREA;\r\n const ID_VEHICULO_TECDOC = e.target.name === 'ID_VEHICULO_TECDOC' ? e.target.value : payLoadLocal.ID_VEHICULO_TECDOC;\r\n const BASTIDOR = e.target.name === 'BASTIDOR' ? e.target.value : payLoadLocal.BASTIDOR;\r\n const MATRICULA = e.target.name === 'MATRICULA' ? e.target.value : payLoadLocal.MATRICULA;\r\n const MATRICULA_MARCA = e.target.name === 'MATRICULA_MARCA' ? e.target.value : payLoadLocal.MATRICULA_MARCA;\r\n const MATRICULA_MODELO = e.target.name === 'MATRICULA_MODELO' ? e.target.value : payLoadLocal.MATRICULA_MODELO;\r\n const MATRICULA_MOTOR = e.target.name === 'MATRICULA_MOTOR' ? e.target.value : payLoadLocal.MATRICULA_MOTOR;\r\n const MATRICULA_CODIGO_MOTOR = e.target.name === 'MATRICULA_CODIGO_MOTOR' ? e.target.value : payLoadLocal.MATRICULA_CODIGO_MOTOR;\r\n const MATRICULA_PAIS = e.target.name === 'MATRICULA_PAIS' ? e.target.value : payLoadLocal.MATRICULA_PAIS;\r\n const ID_MAE_PLATAFORMA = e.target.name === 'ID_MAE_PLATAFORMA' ? e.target.value : payLoadLocal.ID_MAE_PLATAFORMA;\r\n const ID_MAE_GRUPO_MONTAJE = e.target.name === 'ID_MAE_GRUPO_MONTAJE' ? e.target.value : payLoadLocal.ID_MAE_GRUPO_MONTAJE;\r\n const ID_MAE_PRIORIDAD_TAREA = e.target.name === 'ID_MAE_PRIORIDAD_TAREA' ? e.target.value : payLoadLocal.ID_MAE_PRIORIDAD_TAREA;\r\n const TEXTO = e.target.name === 'TEXTO' ? e.target.value : payLoadLocal.TEXTO;\r\n const CODIGO_AVERIA = e.target.name === 'CODIGO_AVERIA' ? e.target.value : payLoadLocal.CODIGO_AVERIA;\r\n const TEXTO_RESPUESTA = e.target.name === 'TEXTO_RESPUESTA' ? e.target.value : payLoadLocal.TEXTO_RESPUESTA;\r\n const ID_MAE_GRADO_SATISFACCION = e.target.name === 'ID_MAE_GRADO_SATISFACCION' ? e.target.value : payLoadLocal.ID_MAE_GRADO_SATISFACCION;\r\n const RESOLUCION_DE_TAREAS = e.target.name === 'RESOLUCION_DE_TAREAS' ? e.target.value : payLoadLocal.RESOLUCION_DE_TAREAS;\r\n const ID_MAE_ESTADO_TAREA = e.target.name === 'ID_MAE_ESTADO_TAREA' ? e.target.value : payLoadLocal.ID_MAE_ESTADO_TAREA;\r\n const ID_USUARIO_ASIGNADO = e.target.name === 'ID_USUARIO_ASIGNADO' ? e.target.value : payLoadLocal.ID_USUARIO_ASIGNADO;\r\n const ID_USUARIO_EN_CURSO = e.target.name === 'ID_USUARIO_EN_CURSO' ? e.target.value : payLoadLocal.ID_USUARIO_EN_CURSO;\r\n const ID_USUARIO_RESPUESTA = e.target.name === 'ID_USUARIO_RESPUESTA' ? e.target.value : payLoadLocal.ID_USUARIO_RESPUESTA;\r\n const ID_MAE_TIPO_TAREA = e.target.name === 'ID_MAE_TIPO_TAREA' ? e.target.value : payLoadLocal.ID_MAE_TIPO_TAREA;\r\n\r\n const MATRICULA_MARCA_ID = e.target.name === 'MATRICULA_MARCA_ID' ? e.target.value : payLoadLocal.MATRICULA_MARCA_ID;\r\n const MATRICULA_MODELO_ID = e.target.name === 'MATRICULA_MODELO_ID' ? e.target.value : payLoadLocal.MATRICULA_MODELO_ID;\r\n const MATRICULA_MOTOR_ID = e.target.name === 'MATRICULA_MOTOR_ID' ? e.target.value : payLoadLocal.MATRICULA_MOTOR_ID;\r\n const NOMBRE_USUARIO_RESPUESTA = e.target.name === 'NOMBRE_USUARIO_RESPUESTA' ? e.target.value : payLoadLocal.NOMBRE_USUARIO_RESPUESTA;\r\n\r\n\r\n\r\n\r\n setPayLoadLocal(\r\n {\r\n ID_MAE_PAIS_TAREA: ID_MAE_PAIS_TAREA,\r\n ID_VEHICULO_TECDOC: ID_VEHICULO_TECDOC,\r\n BASTIDOR: BASTIDOR,\r\n MATRICULA: MATRICULA,\r\n MATRICULA_MARCA: MATRICULA_MARCA,\r\n MATRICULA_MODELO: MATRICULA_MODELO,\r\n MATRICULA_MOTOR: MATRICULA_MOTOR,\r\n MATRICULA_CODIGO_MOTOR: MATRICULA_CODIGO_MOTOR,\r\n MATRICULA_PAIS: MATRICULA_PAIS,\r\n ID_MAE_PLATAFORMA: ID_MAE_PLATAFORMA,\r\n ID_MAE_GRUPO_MONTAJE: ID_MAE_GRUPO_MONTAJE,\r\n ID_MAE_PRIORIDAD_TAREA: ID_MAE_PRIORIDAD_TAREA,\r\n TEXTO: TEXTO,\r\n CODIGO_AVERIA: CODIGO_AVERIA,\r\n TEXTO_RESPUESTA: TEXTO_RESPUESTA,\r\n ID_MAE_GRADO_SATISFACCION: ID_MAE_GRADO_SATISFACCION,\r\n RESOLUCION_DE_TAREAS: RESOLUCION_DE_TAREAS,\r\n ID_MAE_ESTADO_TAREA: ID_MAE_ESTADO_TAREA,\r\n ID_USUARIO_ASIGNADO: ID_USUARIO_ASIGNADO,\r\n ID_USUARIO_EN_CURSO: ID_USUARIO_EN_CURSO,\r\n ID_USUARIO_RESPUESTA: ID_USUARIO_RESPUESTA,\r\n ID_MAE_TIPO_TAREA: ID_MAE_TIPO_TAREA,\r\n MATRICULA_MARCA_ID: MATRICULA_MARCA_ID,\r\n MATRICULA_MODELO_ID: MATRICULA_MODELO_ID,\r\n MATRICULA_MOTOR_ID: MATRICULA_MOTOR_ID,\r\n NOMBRE_USUARIO_RESPUESTA: NOMBRE_USUARIO_RESPUESTA\r\n }\r\n )\r\n }\r\n\r\n\r\n const limpiarCoche = () => {\r\n setModelos([]);\r\n setMotores([]);\r\n setImagenVehiculo(null);\r\n\r\n cocheSeleccionado.MARCA = 0;\r\n cocheSeleccionado.MODELO = 0;\r\n cocheSeleccionado.MOTOR = 0;\r\n cocheSeleccionado.CODIGO_MOTORES = [];\r\n payLoadLocal.MATRICULA_CODIGO_MOTOR = \"\";\r\n payLoadLocal.ID_VEHICULO_TECDOC = 0;\r\n payLoadLocal.MATRICULA = \"\";\r\n payLoadLocal.BASTIDOR = \"\";\r\n\r\n payLoadLocal.MATRICULA_MARCA = \"\";\r\n payLoadLocal.MATRICULA_MODELO = \"\";\r\n payLoadLocal.MATRICULA_MOTOR = \"\";\r\n\r\n\r\n\r\n setCocheSeleccionado({ ...cocheSeleccionado })\r\n setPayLoadLocal({ ...payLoadLocal })\r\n }\r\n\r\n\r\n\r\n\r\n\r\n const gestionarTarea = async () => {\r\n const TEXTO = payLoadLocal.TEXTO.trim();\r\n\r\n if (TEXTO === \"\") {\r\n MSGERROR(traducirPagina(\"Falta_texto_consulta\").toUpperCase());\r\n } else {\r\n setCreandoTarea(true)\r\n\r\n let copiarPayload = { ...payLoadLocal };\r\n const { GRUPO_MONTAJE, TIPO_TAREA } = cocheSeleccionado;\r\n\r\n copiarPayload.ID_MAE_GRUPO_MONTAJE = GRUPO_MONTAJE;\r\n copiarPayload.ID_MAE_TIPO_TAREA = TIPO_TAREA;\r\n\r\n copiarPayload.ID_USUARIO_EN_CURSO = null;\r\n copiarPayload.ID_USUARIO_RESPUESTA = null;\r\n copiarPayload.ID_USUARIO_ASIGNADO = null;\r\n copiarPayload.ID_MAE_GRADO_SATISFACCION = null;\r\n\r\n\r\n\r\n const data = await nueva_tareaEnAPI(copiarPayload);\r\n\r\n if (data !== undefined && data !== null && data.OK) {\r\n\r\n const registroFicheros = archivosLocal.map(async (fichero) => {\r\n let texto = `data:${fichero.TYPE};base64,`\r\n let DATOS_ENVIAR = fichero.DATOS.replace(texto, \"\")\r\n return await insertar_ficheroEnAPI(data.ID, fichero.NOMBRE, fichero.EXTENSION, DATOS_ENVIAR);\r\n })\r\n\r\n Promise.all(registroFicheros).then(data => {\r\n //console.log(\"lista\", data);\r\n const registros = data.filter((registro) => registro.OK === false);\r\n if (registros.length > 0) {\r\n MSGERROR(JSON.stringify(registros))\r\n } else {\r\n MSGOK(traducirPagina(\"Consulta_enviada\"));\r\n props.CERRAR_FICHA(false);\r\n }\r\n\r\n setCreandoTarea(false);\r\n });\r\n\r\n } else {\r\n setCreandoTarea(false);\r\n }\r\n\r\n\r\n props.ACTUALIZAR_TABLA(3, \"D\", false, props.FILTROS.TAREAS_CERRADAS, obtenerLicenciaLocal().ID_TALLER, null, props.FILTRO_FECHA.FECHA_PARTIDA, props.FILTRO_FECHA.ACCION_DESDE, props.FILTRO_FECHA.ACCION_HASTA)\r\n\r\n\r\n }\r\n }\r\n\r\n const visualizador = async (fichero, esTecnico) => {\r\n\r\n if (fichero.NOMBRE_IMAGEN === \"pdf.png\" || fichero.NOMBRE_IMAGEN === \"imagen.png\" || fichero.NOMBRE_IMAGEN === \"video.png\") {\r\n const CONSTRUIR_URL = `${END_POINT_ACTUAL()}Archivos/${(esTecnico ? \"Tecnico/\" : \"\")}visualizar/${fichero.ID}`;\r\n\r\n setFicheroSeleccionado({ TITULO: fichero.NOMBRE, TIPO_DOCUMENTO: fichero.NOMBRE_IMAGEN === \"pdf.png\" ? \"DOC\" : fichero.NOMBRE_IMAGEN === \"imagen.png\" ? \"IMG\" : \"VIDEO\", URL: CONSTRUIR_URL })\r\n setAbrirVisor(true);\r\n\r\n }\r\n }\r\n\r\n const desacargarFichero = async (fichero, esTecnico) => {\r\n const CONSTRUIR_URL = `${END_POINT_ACTUAL()}Archivos/${(esTecnico ? \"Tecnico/\" : \"\")}Descargar/${fichero.ID}`;\r\n descargarDocPasandoBase64Generico(CONSTRUIR_URL, fichero.NOMBRE)\r\n }\r\n\r\n const actualizarVehiculoTecdoc = (VEHICULO) => {\r\n const { ID_MARCA, ID_MODELO, ID_MOTOR, MOTORES, DESCRIPCION_MARCA, DESCRIPCION_MODELO, DESCRIPCION_MOTOR } = VEHICULO\r\n\r\n let LISTA_MOTORES = obtenerCodigoMotores(MOTORES);\r\n cocheSeleccionado.CODIGO_MOTORES = LISTA_MOTORES\r\n if (LISTA_MOTORES.length === 1) {\r\n payLoadLocal.MATRICULA_CODIGO_MOTOR = LISTA_MOTORES[0];\r\n\r\n obtener_conector(ID_MOTOR, LISTA_MOTORES[0])\r\n }\r\n //cocheSeleccionado.CODIGO_MOTORES = obtenerCodigoMotores(MOTORES);\r\n setCocheSeleccionado({ ...cocheSeleccionado })\r\n\r\n\r\n payLoadLocal.MATRICULA_MARCA_ID = ID_MARCA\r\n payLoadLocal.MATRICULA_MODELO_ID = ID_MODELO\r\n payLoadLocal.MATRICULA_MOTOR_ID = ID_MOTOR\r\n\r\n //payLoadLocal.MATRICULA_CODIGO_MOTOR = MOTORES \r\n\r\n\r\n payLoadLocal.MATRICULA_MARCA = DESCRIPCION_MARCA;\r\n payLoadLocal.MATRICULA_MODELO = DESCRIPCION_MODELO;\r\n payLoadLocal.MATRICULA_MOTOR = DESCRIPCION_MOTOR;\r\n\r\n payLoadLocal.ID_VEHICULO_TECDOC = ID_MOTOR;\r\n buscarImagenVehiculoEnAPI(ID_MOTOR);\r\n setPayLoadLocal({ ...payLoadLocal })\r\n }\r\n\r\n \r\n\r\n const comprobarConector = (conector) =>{\r\n let MOSTRAR_MESAJE = false\r\n if(conector === null){\r\n MOSTRAR_MESAJE = true;\r\n }else{\r\n if(conector.length === 1){\r\n if(conector[0].CONECTOR === \"\" || conector[0].IMAGEN === \"\"){\r\n MOSTRAR_MESAJE = true;\r\n }\r\n } \r\n \r\n if(conector.length > 1){\r\n MOSTRAR_MESAJE = true;\r\n }\r\n }\r\n return MOSTRAR_MESAJE;\r\n }\r\n\r\n\r\n return (\r\n <>\r\n {\r\n props.MODIFICAR_REGISTRO_CONSULTA({})\r\n props.CERRAR_FICHA(false)\r\n }}\r\n closable={false}\r\n visible={props.ABRIR_FICHA}\r\n placement={\"right\"}\r\n bodyStyle={creandoTarea ? { padding: '0px', pointerEvents: 'none', opacity: '0.7' } : { padding: '0px' }}\r\n style={{ color: '#fff' }}>\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {props.title}\r\n
\r\n
\r\n\r\n {payLoadLocal === null ?\r\n \r\n
{traducirPagina(\"Msg_sin_info_consulta\")}
\r\n \r\n :\r\n <>\r\n setTabPorDefecto(tab)}\r\n style={{ padding: '0px 20px 0px 20px' }}\r\n >\r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n {imagenVehiculo === null ?\r\n
\r\n :\r\n imagenVehiculo === \"\" ?\r\n\r\n \r\n :\r\n
\r\n }\r\n\r\n \r\n \r\n \r\n \r\n {`${traducirPagina(\"Matricula\")}: `} \r\n { guardarEstadoFormulario(e) }}\r\n onBlur={(e) => {\r\n if (e.target.value !== undefined && e.target.value !== null && e.target.value !== \"\") {\r\n if (!verificarMatricula(e.target.value)) {\r\n MSGERROR(traducirPagina(\"Msg_info_matricula\"));\r\n\r\n payLoadLocal.MATRICULA = \"\";\r\n setPayLoadLocal({ ...payLoadLocal })\r\n }\r\n }\r\n\r\n }}\r\n onSearch={(e) => {\r\n if (e === \"\") {\r\n limpiarCoche()\r\n } else {\r\n cocheSeleccionado.CODIGO_MOTORES = []\r\n setCocheSeleccionado({ ...cocheSeleccionado })\r\n\r\n busquedaPorMatricula(e, payLoadLocal.MATRICULA_PAIS)\r\n }\r\n }}\r\n />\r\n\r\n \r\n {`${traducirPagina(\"Bastidor\")}: `} \r\n { guardarEstadoFormulario(e); setSeModificaBastidor(true) }}\r\n onSearch={(e) => {\r\n if (e === \"\") {\r\n limpiarCoche()\r\n } else {\r\n cocheSeleccionado.CODIGO_MOTORES = []\r\n setCocheSeleccionado({ ...cocheSeleccionado })\r\n\r\n payLoadLocal.MATRICULA = \"\";\r\n payLoadLocal.MATRICULA_CODIGO_MOTOR = \"\";\r\n setPayLoadLocal({ ...payLoadLocal })\r\n //limpiarCoche();\r\n busquedaPorBastidor(e, payLoadLocal.MATRICULA_PAIS)\r\n //buscarMatricula(e);\r\n }\r\n\r\n }}\r\n />\r\n \r\n\r\n \r\n {traducirPagina(\"Vehiculo\")} \r\n \r\n\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n {(`${payLoadLocal.MATRICULA_MARCA} ${payLoadLocal.MATRICULA_MODELO} ${payLoadLocal.MATRICULA_MOTOR}`).trim() === \"\" ?\r\n {\r\n setAbrirFichaTecdoc(true)\r\n\r\n }}>\r\n :\r\n {\r\n setAbrirFichaTecdoc(true)\r\n limpiarCoche()\r\n\r\n payLoadLocal.MATRICULA_MARCA_ID = 0\r\n payLoadLocal.MATRICULA_MODELO_ID = 0\r\n payLoadLocal.MATRICULA_MOTOR_ID = 0\r\n payLoadLocal.ID_VEHICULO_TECDOC = 0;\r\n\r\n payLoadLocal.MATRICULA_CODIGO_MOTOR = \"\";\r\n\r\n payLoadLocal.MATRICULA_MARCA = \"\"\r\n payLoadLocal.MATRICULA_MODELO = \"\"\r\n payLoadLocal.MATRICULA_MOTOR = \"\"\r\n setPayLoadLocal({ ...payLoadLocal })\r\n setConector([])\r\n\r\n }}>\r\n }\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n
{\r\n if (payLoadLocal.ID_VEHICULO_TECDOC > 0 && payLoadLocal.ID_VEHICULO_TECDOC !== \"\") {\r\n setAbrirFichaDetalleVeh(true);\r\n }\r\n\r\n }}>\r\n

\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n {`${traducirPagina(\"Conector\")}: `} \r\n\r\n \r\n 0 ? conector[0].CONECTOR : \"\" } />\r\n\r\n
}\r\n title=\"\"\r\n trigger=\"click\"\r\n visible={visible}\r\n onVisibleChange={(e) => { setVisible(e) }}\r\n >\r\n \r\n \r\n
\r\n \r\n \r\n\r\n\r\n {/*\r\n \r\n 0 ? conector[0].CONECTOR : \"\"} />\r\n */}\r\n\r\n \r\n\r\n \r\n {`${traducirPagina(\"Codigo_motor\")}: `} \r\n\r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n {`${traducirPagina(\"Codigo_averia\")}: `} \r\n { guardarEstadoFormulario(e) }} />\r\n \r\n\r\n\r\n \r\n {`${traducirPagina(\"Tipo_tarea\")}: `} \r\n \r\n \r\n\r\n \r\n {`${traducirPagina(\"Grupo_montaje\")}: `} \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n \r\n {`${traducirPagina(\"Consulta\")}: `} \r\n \r\n \r\n guardarEstadoFormulario(e)} style={{ fontSize: '16px', fontWeight: '500' }} />\r\n \r\n \r\n \r\n {props.ES_NUEVA_TAREA ?\r\n <>\r\n {archivosLocal !== undefined ?\r\n archivosLocal.map((fichero, i) =>\r\n
\r\n
\r\n

\r\n\r\n
\r\n
{ eliminarFichero(fichero) }}>\r\n \r\n
\r\n
\r\n
\r\n
\r\n ) :\r\n null\r\n }\r\n\r\n {\r\n archivosLocal !== undefined && archivosLocal.length <= 4 && configuracion !== null ?\r\n <>\r\n
\r\n
{ gestionarFicheroLocal(e.target) }} />\r\n >\r\n :\r\n null\r\n }\r\n >\r\n :\r\n ficherosTaller !== null ?\r\n ficherosTaller.length > 0 ?\r\n <>\r\n
{traducirPagina(\"Mis_documentos\")}\r\n {ficherosTaller.map((fichero, i) =>\r\n
\r\n
\r\n\r\n

\r\n\r\n
\r\n
{ eliminarFichero(fichero) }}>\r\n {fichero.NOMBRE_IMAGEN === \"pdf.png\" || fichero.NOMBRE_IMAGEN === \"imagen.png\" || fichero.NOMBRE_IMAGEN === \"video.png\" ?\r\n { visualizador(fichero, false); }}>\r\n :\r\n null\r\n }\r\n {\r\n desacargarFichero(fichero, false)\r\n\r\n }}>\r\n
\r\n
\r\n\r\n
\r\n
\r\n )}\r\n >\r\n :\r\n
\r\n :\r\n null\r\n }\r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n {props.ES_NUEVA_TAREA ?\r\n null\r\n :\r\n payLoadLocal.ID_MAE_ESTADO_TAREA === 8 ?\r\n \r\n \r\n
\r\n \r\n {`${traducirPagina(\"Respuesta_tecnico\")} ${payLoadLocal.NOMBRE_USUARIO_RESPUESTA !== undefined\r\n && payLoadLocal.NOMBRE_USUARIO_RESPUESTA !== null ? payLoadLocal.NOMBRE_USUARIO_RESPUESTA : ''}:`} \r\n \r\n \r\n\r\n \r\n\r\n
\r\n\r\n {/* props.ES_NUEVA_TAREA ? guardarEstadoFormulario(e) : null} />*/}\r\n \r\n\r\n \r\n \r\n {\r\n ficherosTecnico !== null ?\r\n ficherosTecnico.length > 0 ?\r\n <>\r\n
{traducirPagina(\"Documentos_tecnico\")}\r\n\r\n {ficherosTecnico.map((fichero, i) =>\r\n
\r\n
\r\n

\r\n\r\n
\r\n
{ eliminarFichero(fichero) }}>\r\n {fichero.NOMBRE_IMAGEN === \"pdf.png\" || fichero.NOMBRE_IMAGEN === \"imagen.png\" || fichero.NOMBRE_IMAGEN === \"video.png\" ?\r\n {\r\n visualizador(fichero, true);\r\n\r\n }}>\r\n :\r\n null}\r\n { desacargarFichero(fichero, true) }}>\r\n
\r\n
\r\n\r\n
\r\n
\r\n )}\r\n >\r\n :\r\n
\r\n :\r\n null\r\n }\r\n
\r\n \r\n
\r\n
\r\n \r\n :\r\n null\r\n }\r\n \r\n \r\n
\r\n
\r\n >\r\n }\r\n \r\n\r\n {abrirSeleccionVehiculo ?\r\n \r\n \r\n :\r\n null\r\n }\r\n\r\n {abrirVisor ?\r\n \r\n\r\n \r\n :\r\n null\r\n }\r\n\r\n {\r\n abrirFichaTecdoc ?\r\n \r\n\r\n \r\n :\r\n null\r\n }\r\n\r\n {\r\n abrirFichaDetalleVeh ?\r\n \r\n \r\n :\r\n null\r\n }\r\n\r\n\r\n {abrirModalInfoVeh ?\r\n { setAbrirModalInfoVeh(true) }}\r\n onCancel={() => { setAbrirModalInfoVeh(false) }}\r\n footer={[\r\n \r\n ]}>\r\n\r\n {Object.keys(cocheDGT.Matricula).length > 0 ?\r\n cocheDGT.Matricula.Matricula !== null ?\r\n \r\n \r\n {traducirPagina(\"msgDGT_no_info_bastidor\")}
\r\n \r\n\r\n \r\n {traducirPagina(\"Bastidor\") + \": \" + cocheDGT.Matricula.Bastidor}\r\n \r\n\r\n \r\n {traducirPagina(\"Carburante\") + \": \" + cocheDGT.Matricula.Carburante}\r\n \r\n\r\n \r\n {traducirPagina(\"Fecha_de_matriculacion\") + \": \" + cocheDGT.Matricula.FechaMatricula}\r\n \r\n\r\n \r\n {traducirPagina(\"Marca\") + \": \" + cocheDGT.Matricula.Marca}\r\n \r\n\r\n \r\n {traducirPagina(\"Matricula\") + \": \" + cocheDGT.Matricula.Matricula}\r\n \r\n\r\n \r\n {traducirPagina(\"Modelo\") + \": \" + cocheDGT.Matricula.Modelo}\r\n \r\n\r\n
\r\n : null\r\n : null\r\n }\r\n \r\n :\r\n null\r\n }\r\n >\r\n )\r\n}\r\n\r\nFichaTarea.propTypes = {\r\n title: PropTypes.string,\r\n ID_TAREA: PropTypes.number,\r\n\r\n ABRIR_FICHA: PropTypes.bool,\r\n CERRAR_FICHA: PropTypes.func,\r\n REGISTRO_SELECCIONADO: PropTypes.object,\r\n ES_NUEVA_TAREA: PropTypes.bool,\r\n ACTUALIZAR_TABLA: PropTypes.func,\r\n FILTRO_FECHA: PropTypes.object,\r\n FILTROS: PropTypes.object,\r\n PAISES: PropTypes.array\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n configApp: state.configApp,\r\n props: props,\r\n QUERY_USER: state.QUERY_USER\r\n\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(FichaTarea);","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\n\r\nimport { connect } from 'react-redux';\r\nimport { MSGERROR, MSGOK, traducirPagina, obtenerUsuario } from \"../librerias/funciones\"\r\nimport {\r\n PlusOutlined,\r\n SaveOutlined,\r\n EditOutlined,\r\n DeleteOutlined,\r\n EyeFilled,\r\n SendOutlined,\r\n EyeOutlined\r\n} from '@ant-design/icons';\r\nimport { Select, Drawer, Input, Checkbox, Row, Col, Tabs } from 'antd';\r\n\r\nconst { Option } = Select;\r\nconst { TabPane } = Tabs;\r\nconst CheckboxGroup = Checkbox.Group;\r\n\r\nconst FichaInfoConsulta = ({ props, configApp }) => {\r\n const [hayDatos, setHayDatos] = React.useState(false);\r\n\r\n\r\n\r\n\r\n\r\n if (!hayDatos && props.ABRIR_FICHA) {\r\n setHayDatos(true);\r\n\r\n } else {\r\n if (!props.ABRIR_FICHA && hayDatos) {\r\n setHayDatos(false);\r\n }\r\n }\r\n\r\n\r\n\r\n return (\r\n {\r\n //props.MODIFICA_ENVIO_FEED_BACK(false)\r\n props.CERRAR_FICHA(false)\r\n }}\r\n closable={false}\r\n\r\n visible={props.ABRIR_FICHA}\r\n placement={\"right\"}\r\n bodyStyle={{ padding: '0px' }}\r\n style={{ color: '#fff' }}>\r\n\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {props.title}\r\n
\r\n\r\n
\r\n\r\n\r\n {props.HTML_TAREA === null ?\r\n \r\n
{traducirPagina(\"Msg_sin_resultados\")}
\r\n \r\n :\r\n props.HTML_TAREA === \"\" ?\r\n \r\n\r\n :\r\n \r\n
\r\n }\r\n\r\n\r\n\r\n \r\n\r\n )\r\n}\r\n\r\nFichaInfoConsulta.propTypes = {\r\n title: PropTypes.string,\r\n ABRIR_FICHA: PropTypes.bool,\r\n CERRAR_FICHA: PropTypes.func,\r\n DOCUMENTO_CONSULTA: PropTypes.object,\r\n HTML_TAREA: PropTypes.string,\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n configApp: state.configApp,\r\n props: props,\r\n\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(FichaInfoConsulta);","import PropTypes from 'prop-types';\r\nimport React, { Component } from 'react';\r\n\r\nimport { connect } from 'react-redux';\r\nimport { obtener_grado_satisfaccionEnAPI, actualizar_feedbackEnAPI, documento_consutlaEnAPI } from \"../action/actionCreatorsRequests\";\r\nimport { MSGERROR, MSGOK, traducirPagina, obtenerLicenciaLocal } from \"../librerias/funciones\"\r\nimport FichaInfoConsulta from './FichaInfoConsulta';\r\nimport {\r\n PlusOutlined,\r\n SaveOutlined,\r\n EditOutlined,\r\n DeleteOutlined,\r\n EyeFilled,\r\n SendOutlined,\r\n EyeOutlined\r\n} from '@ant-design/icons';\r\nimport { Select, Drawer, Input, Checkbox, Row, Col, Tabs } from 'antd';\r\n\r\nimport store from '../store'\r\nconst { Option } = Select;\r\nconst { TabPane } = Tabs;\r\nconst CheckboxGroup = Checkbox.Group;\r\n\r\nconst FichaFeedback = ({ props, configApp }) => {\r\n const [abrirFichaInfoConsulta, setAbrirFichaInfoConsulta] = React.useState(false);\r\n const [htmlTarea, setHtmlTarea] = React.useState(\"\");\r\n\r\n const [hayDatos, setHayDatos] = React.useState(false);\r\n const [payLoadLocal, setPayLoadLocal] = React.useState(\r\n {\r\n ID_TAREA: 0,\r\n GRADO_SASTISSFACION: 1,\r\n TEXTO_GRADO: \"\",\r\n }\r\n )\r\n const [lista_grado, setLista_grado] = React.useState([])\r\n const [cerrarFicha, setCerrarFicha] = React.useState(false);\r\n\r\n\r\n\r\n\r\n const obtener_grado_satisfaccion = () => {\r\n obtener_grado_satisfaccionEnAPI().then((GRADO) => {\r\n if (GRADO !== undefined && GRADO !== null && GRADO.REGISTROS !== null && GRADO.REGISTROS.length > 0) {\r\n GRADO.REGISTROS.map((registro) => {\r\n registro.SELECCIONADO = false;\r\n registro.URL = `./imagenes/caras/${registro.ID}.png`\r\n })\r\n const GRADOS = GRADO.REGISTROS.filter((item) => item.ID !== 1)\r\n\r\n setLista_grado(GRADOS);\r\n } else {\r\n setLista_grado(null);\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n const documento_consutla = (ID) => {\r\n documento_consutlaEnAPI(ID).then((REGISTRO) => {\r\n if (REGISTRO !== undefined && REGISTRO !== null) {\r\n setHtmlTarea(REGISTRO.HTML_TAREA);\r\n } else {\r\n setHtmlTarea(null);\r\n }\r\n })\r\n }\r\n\r\n\r\n\r\n const enviarComentarios = () => {\r\n const { ID_TAREA, GRADO_SASTISSFACION, TEXTO_GRADO } = payLoadLocal\r\n\r\n if (GRADO_SASTISSFACION > 1 && TEXTO_GRADO) {\r\n\r\n actualizar_feedbackEnAPI(ID_TAREA, GRADO_SASTISSFACION, TEXTO_GRADO).then((REGISTRO) => {\r\n setCerrarFicha(true)\r\n if (REGISTRO !== undefined && REGISTRO !== null && REGISTRO.OK) {\r\n props.ACTUALIZAR_TABLA(3, \"D\", false, props.FILTROS.TAREAS_CERRADAS, obtenerLicenciaLocal().ID_TALLER, null, props.FILTRO_FECHA.FECHA_PARTIDA, props.FILTRO_FECHA.ACCION_DESDE, props.FILTRO_FECHA.ACCION_HASTA)\r\n props.CERRAR_FICHA(false)\r\n }\r\n })\r\n\r\n\r\n } else {\r\n MSGERROR(traducirPagina(\"Msg_texto_grado\"))\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n if (!hayDatos && props.ABRIR_FICHA) {\r\n setHayDatos(true);\r\n payLoadLocal.ID_TAREA = props.DATOS_GRADO.ID;\r\n setPayLoadLocal({ ...payLoadLocal })\r\n\r\n obtener_grado_satisfaccion();\r\n\r\n documento_consutla(props.DATOS_GRADO.ID);\r\n } else {\r\n if (!props.ABRIR_FICHA && hayDatos) {\r\n setHayDatos(false);\r\n }\r\n }\r\n\r\n\r\n return (\r\n <>\r\n {\r\n //props.MODIFICA_ENVIO_FEED_BACK(false)\r\n if (cerrarFicha) {\r\n props.CERRAR_FICHA(false)\r\n\r\n }\r\n }}\r\n closable={false}\r\n\r\n visible={props.ABRIR_FICHA}\r\n placement={\"right\"}\r\n bodyStyle={{ padding: '0px' }}\r\n style={{ color: '#fff' }}>\r\n\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {props.title}\r\n
\r\n\r\n
\r\n\r\n\r\n \r\n {lista_grado === null ?\r\n
{traducirPagina(\"Msg_sin_consulta\")}
\r\n\r\n\r\n :\r\n\r\n lista_grado.length > 0 ?\r\n <>\r\n
\r\n
\r\n
\r\n {traducirPagina(\"Msg_consulta_opinion\")}\r\n \r\n
{\r\n setAbrirFichaInfoConsulta(true)\r\n }}> {traducirPagina(\"Msg_recordar\")}\r\n\r\n\r\n
{traducirPagina(\"grado_sastisfacion\")}\r\n\r\n
\r\n {lista_grado.map((registro) =>\r\n
{\r\n lista_grado.map((item) => {\r\n if (item.ID === registro.ID) {\r\n item.SELECCIONADO = true\r\n } else {\r\n item.SELECCIONADO = false\r\n }\r\n })\r\n\r\n setLista_grado([...lista_grado])\r\n\r\n\r\n const { ID } = lista_grado.find((registro) => registro.SELECCIONADO === true);\r\n if (ID !== undefined) {\r\n payLoadLocal.GRADO_SASTISSFACION = ID\r\n setPayLoadLocal({ ...payLoadLocal })\r\n }\r\n\r\n }}>\r\n\r\n

\r\n
\r\n )}\r\n
\r\n
\r\n\r\n
\r\n {traducirPagina(\"grado_resolucion\")}\r\n\r\n {\r\n\r\n payLoadLocal.TEXTO_GRADO = e.target.value;\r\n setPayLoadLocal({ ...payLoadLocal })\r\n\r\n }} />\r\n
\r\n\r\n
\r\n\r\n
\r\n
{\r\n enviarComentarios();\r\n }}>\r\n \r\n {traducirPagina(\"Enviar\")}\r\n
\r\n
\r\n >\r\n :\r\n
\r\n\r\n }\r\n
\r\n \r\n\r\n {\r\n abrirFichaInfoConsulta ?\r\n \r\n \r\n :\r\n null\r\n }\r\n >\r\n\r\n )\r\n}\r\n\r\nFichaFeedback.propTypes = {\r\n title: PropTypes.string,\r\n ID_USUARIO: PropTypes.number,\r\n ABRIR_FICHA: PropTypes.bool,\r\n CERRAR_FICHA: PropTypes.func,\r\n DATOS_GRADO: PropTypes.object,\r\n\r\n ACTUALIZAR_TABLA: PropTypes.func,\r\n FILTRO_FECHA: PropTypes.object,\r\n FILTROS: PropTypes.object\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n configApp: state.configApp,\r\n props: props,\r\n\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(FichaFeedback);","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport 'antd/dist/antd.css';\r\nimport { solicitud_informacion_servicioEnAPI } from \"../action/actionCreatorsRequests\";\r\n\r\nimport {\r\n traducirPagina, MSGERROR,MSGOK\r\n} from \"../librerias/funciones\"\r\n\r\nimport {\r\n CalendarOutlined,\r\n EyeOutlined\r\n} from '@ant-design/icons';\r\nimport { Tabs, Select, Row, Col, Input, Collapse, Modal, Button, Drawer } from 'antd';\r\n\r\n\r\nconst { Option } = Select;\r\nconst { Search } = Input;\r\nconst { TabPane } = Tabs;\r\nconst { Panel } = Collapse;\r\n\r\n\r\nconst FichaPublicidadAssist = ({ props, configApp }) => {\r\n\r\n const enviarInformacion = (SERVICIO) => {\r\n solicitud_informacion_servicioEnAPI(SERVICIO).then(mensaje => {\r\n if (mensaje !== undefined) {\r\n if (mensaje.OK) {\r\n MSGOK(traducirPagina(\"mensaje_enviado_departamento\"));\r\n } else {\r\n MSGERROR(traducirPagina(\"sin_envio_email\"));\r\n }\r\n }\r\n\r\n })\r\n\r\n }\r\n\r\n\r\n return (\r\n \r\n
{\r\n props.CERRAR_FICHA(false)\r\n }}\r\n visible={props.ABRIR_FICHA}\r\n placement={\"right\"}\r\n closable={false}\r\n bodyStyle={{ padding: '0px' }}\r\n style={{ color: '#fff' }}>\r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n {props.title}\r\n
\r\n
\r\n\r\n\r\n \r\n
\r\n

\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
{traducirPagina(\"msgFicPubl_NextAssist_01\")}
\r\n
\r\n {traducirPagina(\"msgFicPubl_NextAssist_02\")}\r\n
\r\n
\r\n {traducirPagina(\"msgFicPubl_NextAssist_03\")}\r\n
\r\n {traducirPagina(\"msgFicPubl_NextAssist_04\")}\r\n
\r\n
\r\n {traducirPagina(\"msgFicPubl_NextAssist_05\")}\r\n \r\n\r\n
\r\n
{traducirPagina(\"Mas_informacion\")}\r\n
\r\n\r\n\r\n
\r\n
\r\n
\r\n\r\n {traducirPagina(\"Me_gustaria_contratar_servicio\")}\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n

\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n )\r\n}\r\n\r\nFichaPublicidadAssist.propTypes = {\r\n ABRIR_FICHA: PropTypes.bool,\r\n CERRAR_FICHA: PropTypes.func\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n configApp: state.configApp,\r\n props: props,\r\n\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(FichaPublicidadAssist);","import React from \"react\";\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { connect } from 'react-redux';\r\nimport MasterPage from '../pages/MasterPage';\r\nimport {\r\n MDBDropdown, MDBDropdownToggle, MDBDropdownMenu, MDBDropdownItem\r\n} from 'mdbreact';\r\nimport { obtener_registros_paginadosEnAPI, obtener_anyos_EnAPI, obtener_paises_EnAPI, hay_feedback_pendientesEnAPI } from \"../action/actionCreatorsRequests\";\r\n\r\nimport FichaTarea from \"./FichaTarea\";\r\nimport FichaFeedback from \"./FichaFeedback\";\r\nimport store from \"../store\";\r\n\r\nimport { Tabs, Select, Row, Col, Input, Collapse, Modal, Button, Pagination, Checkbox } from 'antd';\r\n\r\nimport {\r\n convertirAMesACodigo, obtenerFechaLocalObjeto, convertirCodigoAMeses, obtenerToken, construirFecha,\r\n obtenerLicenciaLocal, recortarCadena, ordenarTablaLocal, traducirPagina\r\n\r\n} from \"../librerias/funciones\"\r\n\r\n\r\nimport {\r\n CloseOutlined,\r\n SearchOutlined,\r\n PrinterOutlined,\r\n PlusOutlined,\r\n ArrowUpOutlined,\r\n ArrowDownOutlined,\r\n FileDoneOutlined,\r\n EyeOutlined,\r\n CheckSquareOutlined,\r\n CloseSquareOutlined,\r\n HistoryOutlined,\r\n QuestionCircleFilled,\r\n QuestionCircleOutlined\r\n\r\n} from '@ant-design/icons';\r\nimport { Layout } from 'antd';\r\nimport FichaPublicidadAssist from \"./FichaPublicidadAssist\";\r\nconst { Content } = Layout;\r\nconst { Option } = Select;\r\nconst { Search } = Input;\r\nconst { TabPane } = Tabs;\r\nconst { Panel } = Collapse;\r\n\r\n\r\n\r\nconst ContainerTareas = ({ props, configApp, QUERY_USER,usuario }) => {\r\n const anchoPorDefecto = 1300;\r\n\r\n const [ID_GRADO_SAST, setID_GRADO_SAST] = React.useState(0);\r\n const [datosGrado, setDatosGrado] = React.useState({});\r\n\r\n\r\n\r\n const [esNuevaTarea, setEsNuevaTarea] = React.useState(false);\r\n\r\n const [abrirFeedback, setAbrirFeedback] = React.useState(false);\r\n\r\n const [filtrosMovil, setFiltrosMovil] = React.useState(false);\r\n\r\n const [registroSeleccionado, setRegistroSeleccionado] = React.useState({});\r\n const [hayLicencias, seHayLicencias] = React.useState(false);\r\n\r\n const [abirPublicidad, setAbirPublicidad] = React.useState(false);\r\n\r\n const [textoBuscador, setTextoBuscador] = React.useState(\"\");\r\n const [cabeceraTabla, setCabeceraTabla] = React.useState(\r\n {\r\n ID_TAREA: false,\r\n USUARIO_TALLER_ALTA: false,\r\n MATRICULA: false,\r\n FECHA_ALTA: false,\r\n MATRICULA_MARCA: false,\r\n NOMBRE_GRUPO_MONTAJE: false,\r\n TEXTO_CONSULTA: false,\r\n NOMBRE_ESTADO: false\r\n }\r\n );\r\n\r\n const [licencias, setLicencias] = React.useState([]);\r\n const [licenciasAux, setLicenciasAux] = React.useState([]);\r\n const [datosPaginacion, setDatosPaginacion] = React.useState({ iniPage: 1, inicio: 1, final: 40, numPagina: 40 });\r\n const [abrirFichaTarea, setAbrirFichaTarea] = React.useState(false);\r\n const [mesesDelAnio, setMesesDelAnio] = React.useState(\r\n [\r\n traducirPagina(\"Enero\"),\r\n traducirPagina(\"Febrero\"),\r\n traducirPagina(\"Marzo\"),\r\n traducirPagina(\"Abril\"),\r\n traducirPagina(\"Mayo\"),\r\n traducirPagina(\"Junio\"),\r\n traducirPagina(\"Julio\"),\r\n traducirPagina(\"Agosto\"),\r\n traducirPagina(\"Septiembre\"),\r\n traducirPagina(\"Octubre\"),\r\n traducirPagina(\"Noviembre\"),\r\n traducirPagina(\"Diciembre\"),\r\n ]\r\n );\r\n\r\n const [anios, setAnios] = React.useState([]);\r\n const [mesSeleccionado, setMesSeleccionado] = React.useState(\"\")\r\n const [anioSeleccionado, setAnioSeleccionado] = React.useState(\"\")\r\n\r\n const [filtroSeleccionado, setFiltroSeleccionado] = React.useState({\r\n ESTADO_TAREA: 0,\r\n GRUPO_MONTAJE: 0,\r\n TAREAS_CERRADAS: true\r\n });\r\n\r\n const [filtroFecha, setFiltroFecha] = React.useState({\r\n CAMBIO_DIA: false,\r\n CAMBIO_MES: false,\r\n CAMBIO_ANIO: true,\r\n CAMBIO_TODAS: false,\r\n ACCION_DESDE: 2,\r\n ACCION_HASTA: 3,\r\n FECHA_PARTIDA: \"\"\r\n });\r\n\r\n\r\n const buscarAnyosAPI = async () => {\r\n const anyos = await obtener_anyos_EnAPI();\r\n if (anyos !== undefined && anyos !== null && anyos.REGISTROS !== null && anyos.REGISTROS.length > 0) {\r\n setAnios(anyos.REGISTROS);\r\n let maximo = 0;\r\n\r\n\r\n for (let i = 0, len = anyos.REGISTROS.length; i < len; i++) {\r\n if (maximo < anyos.REGISTROS[i]) {\r\n maximo = anyos.REGISTROS[i];\r\n }\r\n }\r\n\r\n setAnioSeleccionado(maximo)\r\n\r\n } else {\r\n setAnios(null);\r\n }\r\n }\r\n\r\n\r\n const permisoCrearConsulta = () => {\r\n let PERMITIR = false;\r\n let ESTADO_USUARIO = usuario;\r\n const { PROHIBIR_CONSULTAS } = ESTADO_USUARIO !== undefined && ESTADO_USUARIO !== null ? ESTADO_USUARIO.USUARIO : { PROHIBIR_CONSULTAS: false };\r\n\r\n if (PROHIBIR_CONSULTAS) {\r\n setAbirPublicidad(true)\r\n PERMITIR = PROHIBIR_CONSULTAS\r\n }\r\n\r\n\r\n return PERMITIR;\r\n }\r\n\r\n\r\n const hay_feedback_pendientes = () => {\r\n if (!permisoCrearConsulta()) {\r\n\r\n hay_feedback_pendientesEnAPI().then((GRADO) => {\r\n if (GRADO !== undefined && GRADO !== null && GRADO.ID !== null && GRADO.ID > 0) {\r\n setID_GRADO_SAST(GRADO.ID)\r\n\r\n //FICHA TAREA\r\n //setRegistroSeleccionado({ ID_TAREA: GRADO.ID })\r\n setDatosGrado(GRADO)\r\n\r\n setEsNuevaTarea(true)\r\n setAbrirFichaTarea(true);\r\n\r\n\r\n //FICHA FEEDBACK\r\n setAbrirFeedback(true)\r\n } else {\r\n //setID_GRADO_SAST(0)\r\n setDatosGrado({})\r\n\r\n setEsNuevaTarea(true)\r\n setAbrirFichaTarea(true);\r\n }\r\n })\r\n \r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n const filtrarDatosLocales = (licencias, params, textoBuscador) => {\r\n if (licencias !== undefined && licencias !== null) {\r\n let filtroLicencias = [...licencias];\r\n\r\n if (params.ESTADO_TAREA > 0) {\r\n filtroLicencias = filtroLicencias.filter((item) => params.ESTADO_TAREA === 1 ? item.FK_ID_MAE_ESTADO_TAREA !== 8 : item.FK_ID_MAE_ESTADO_TAREA === 8)\r\n }\r\n\r\n if (params.GRUPO_MONTAJE > 0) {\r\n filtroLicencias = filtroLicencias.filter((item) => item.FK_ID_MAE_GRUPO_MONTAJE === params.GRUPO_MONTAJE)\r\n }\r\n\r\n if (textoBuscador !== \"\") {\r\n filtroLicencias = filtrarEnTabla(textoBuscador, filtroLicencias)\r\n }\r\n\r\n let verificarLicencia = filtroLicencias === undefined || filtroLicencias === null ? null : filtroLicencias.length === 0 ? null : filtroLicencias\r\n setLicencias(verificarLicencia)\r\n }\r\n }\r\n\r\n\r\n\r\n const filtrarEnTabla = (palabra, registros) => {\r\n let resultado = []\r\n if (palabra !== \"\") {\r\n if (registros !== null) {\r\n let resultadoFiltro = registros.filter((item) => {\r\n return item.ID_TAREA.toString().toUpperCase().includes(palabra.toUpperCase()) ||\r\n item.MATRICULA.toUpperCase().includes(palabra.toUpperCase()) ||\r\n item.FECHA_ALTA.toUpperCase().includes(palabra.toUpperCase()) ||\r\n item.MATRICULA_MARCA.toUpperCase().includes(palabra.toUpperCase()) ||\r\n\r\n item.TEXTO_CONSULTA.toUpperCase().includes(palabra.toUpperCase())\r\n\r\n })\r\n resultado = resultadoFiltro;\r\n /*\r\n if (resultadoFiltro.length > 0) {\r\n resultado = resultadoFiltro;\r\n } else {\r\n resultado = registros;\r\n }\r\n */\r\n }\r\n } else {\r\n resultado = licenciasAux;\r\n }\r\n return resultado;\r\n }\r\n\r\n\r\n\r\n const licenciasSertec = (ORDERCOLUM, ORDERDIR, INCLUIR_BAJAS, INCLUIR_CERRADAS, ID_TALLER, ID_USUARIO_TALLER, FECHA_PARTIDA, ACCION_DESDE, ACCION_HASTA) => {\r\n setLicencias([]);\r\n setLicenciasAux([]);\r\n setDatosPaginacion({ iniPage: 1, inicio: 1, final: 40, numPagina: 40 })\r\n\r\n obtener_registros_paginadosEnAPI(100000, 1, ORDERCOLUM, ORDERDIR, INCLUIR_BAJAS, INCLUIR_CERRADAS, ID_TALLER, ID_USUARIO_TALLER, FECHA_PARTIDA, ACCION_DESDE, ACCION_HASTA).then((licencias) => {\r\n\r\n if (licencias !== undefined && licencias !== null && licencias.REGISTROS !== undefined && licencias.REGISTROS !== null && licencias.REGISTROS.length > 0) {\r\n setLicencias(licencias.REGISTROS);\r\n setLicenciasAux(licencias.REGISTROS);\r\n\r\n filtrarDatosLocales(licencias.REGISTROS, { ESTADO_TAREA: filtroSeleccionado.ESTADO_TAREA, GRUPO_MONTAJE: filtroSeleccionado.GRUPO_MONTAJE }, textoBuscador)\r\n } else {\r\n setLicencias(null)\r\n setLicenciasAux(null)\r\n }\r\n })\r\n }\r\n\r\n const actualizarCabeceraTabla = (e, valor) => {\r\n const ID_TAREA = e === 'ID_TAREA' ? valor : false;\r\n const USUARIO_TALLER_ALTA = e === 'USUARIO_TALLER_ALTA' ? valor : false;\r\n const MATRICULA = e === 'MATRICULA' ? valor : false;\r\n const FECHA_ALTA = e === 'FECHA_ALTA' ? valor : false\r\n const MATRICULA_MARCA = e === 'MATRICULA_MARCA' ? valor : false;\r\n const NOMBRE_GRUPO_MONTAJE = e === 'NOMBRE_GRUPO_MONTAJE' ? valor : false;\r\n const TEXTO_CONSULTA = e === 'TEXTO_CONSULTA' ? valor : false;\r\n const NOMBRE_ESTADO = e === 'NOMBRE_ESTADO' ? valor : false;\r\n\r\n\r\n setCabeceraTabla(\r\n {\r\n ID_TAREA: ID_TAREA,\r\n USUARIO_TALLER_ALTA: USUARIO_TALLER_ALTA,\r\n\r\n MATRICULA: MATRICULA,\r\n FECHA_ALTA: FECHA_ALTA,\r\n MATRICULA_MARCA: MATRICULA_MARCA,\r\n NOMBRE_GRUPO_MONTAJE: NOMBRE_GRUPO_MONTAJE,\r\n TEXTO_CONSULTA: TEXTO_CONSULTA,\r\n NOMBRE_ESTADO: NOMBRE_ESTADO\r\n }\r\n )\r\n }\r\n\r\n\r\n\r\n\r\n const responsivedDescripcionTarea = (anchuraActual) => {\r\n let anchura = 0;\r\n if (anchuraActual > 600 && anchuraActual <= 1200) {\r\n anchura = 40;\r\n } else if (anchuraActual > 1200 && anchuraActual < 1500) {\r\n anchura = 40;\r\n } else if (anchuraActual > 1500) {\r\n anchura = 100;\r\n } else if (anchuraActual > 500 && anchuraActual < 600) {\r\n anchura = 30;\r\n } else if (anchuraActual < 500) {\r\n anchura = 10;\r\n }\r\n\r\n return anchura;\r\n }\r\n\r\n\r\n const List = React.memo(({ list }) => {\r\n let datos = [];\r\n\r\n datos = list.map((licencia, i) => (\r\n (i + 1) >= datosPaginacion.inicio && (i + 1) <= datosPaginacion.final ?\r\n \r\n :\r\n null\r\n ))\r\n return (\r\n datos\r\n );\r\n })\r\n\r\n\r\n\r\n\r\n const ListItem = React.memo(({ licencia }) => {\r\n return \r\n {licencia.ID_TAREA} | \r\n {recortarCadena(licencia.USUARIO_TALLER_ALTA, 30, \"...\")} | \r\n\r\n {recortarCadena(licencia.MATRICULA, 20, \"...\")} | \r\n {recortarCadena(licencia.FECHA_ALTA, 30, \"...\")} | \r\n\r\n\r\n {recortarCadena(`${licencia.MATRICULA_MARCA} ${licencia.MATRICULA_MODELO} ${licencia.MATRICULA_MOTOR}`, 35, \"...\")} | \r\n\r\n {recortarCadena(licencia.TEXTO_CONSULTA, responsivedDescripcionTarea(configApp.width), \"...\")} | \r\n\r\n {licencia.FK_ID_MAE_ESTADO_TAREA === 8 ? traducirPagina(\"Finalizado\") : traducirPagina(\"Enviado\")} | \r\n\r\n\r\n {licencia.FK_ID_MAE_ESTADO_TAREA === 8 ? : } | \r\n\r\n\r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n | \r\n
\r\n });\r\n\r\n\r\n const paginarTabla = (page, pageSize) => {\r\n if (licencias.length > 0) {\r\n let pInicio = (pageSize * page) - (datosPaginacion.numPagina);\r\n let pFinal = pageSize * page;\r\n setDatosPaginacion(\r\n {\r\n iniPage: page,\r\n inicio: pInicio,\r\n final: pFinal,\r\n numPagina: datosPaginacion.numPagina\r\n }\r\n )\r\n }\r\n }\r\n\r\n const updateNumberPage = (current, size) => {\r\n setDatosPaginacion(\r\n {\r\n iniPage: 1,\r\n inicio: 1,\r\n final: size,\r\n numPagina: size\r\n }\r\n )\r\n }\r\n\r\n const ObtenerTextoMes = (CODIGO_MES) => {\r\n let TEXTO_MES = mesesDelAnio[0];\r\n if (CODIGO_MES !== undefined && CODIGO_MES !== null && CODIGO_MES !== \"\") {\r\n for (let i = 0; i < mesesDelAnio.length; i++) {\r\n\r\n let MES_PARAMETRO = ((parseInt(CODIGO_MES)) - 1);\r\n console.log(\"CODIGO\", i, \" TEXTO\", mesesDelAnio[i], \"PARAM\", CODIGO_MES, \"CORRECCIO\", MES_PARAMETRO)\r\n\r\n\r\n if (i === MES_PARAMETRO) {\r\n TEXTO_MES = mesesDelAnio[i];\r\n break;\r\n }\r\n\r\n }\r\n }\r\n return TEXTO_MES.toUpperCase()\r\n }\r\n\r\n\r\n\r\n if (!hayLicencias && obtenerToken() !== undefined) {\r\n seHayLicencias(true)\r\n\r\n let fechaLocal = obtenerFechaLocalObjeto(false);\r\n\r\n buscarAnyosAPI();\r\n setMesSeleccionado(fechaLocal.MES)\r\n\r\n\r\n const FECHA_INICIAL = construirFecha(fechaLocal.MES, fechaLocal.ANIO.toString(), { DESDE: 2, HASTA: 3 })\r\n filtroFecha.FECHA_PARTIDA = FECHA_INICIAL\r\n\r\n\r\n setFiltroFecha({ ...filtroFecha })\r\n\r\n licenciasSertec(3, \"D\", false, filtroSeleccionado.TAREAS_CERRADAS, obtenerLicenciaLocal().ID_TALLER, null, FECHA_INICIAL, 2, 3);\r\n\r\n //MATRICULA AUTOMATICA\r\n if (Object.keys(QUERY_USER).length > 0) {\r\n setAbrirFichaTarea(true)\r\n setEsNuevaTarea(true)\r\n }\r\n\r\n }\r\n\r\n const filtroConsultasCerradas = (\r\n {\r\n filtroSeleccionado.TAREAS_CERRADAS = e.target.checked;\r\n setFiltroSeleccionado({ ...filtroSeleccionado })\r\n licenciasSertec(3, \"D\", false, e.target.checked, obtenerLicenciaLocal().ID_TALLER, null, filtroFecha.FECHA_PARTIDA, filtroFecha.ACCION_DESDE, filtroFecha.ACCION_HASTA);\r\n\r\n }} >{traducirPagina(\"Consulta_cerradas\")} \r\n );\r\n\r\n const filtroConsultasEstados = (\r\n \r\n );\r\n\r\n\r\n\r\n const filtroConsultasFecha = (\r\n <>\r\n {\r\n let anioActual = obtenerFechaLocalObjeto(false).ANIO;\r\n const FECHA_PARTIDA = construirFecha(obtenerFechaLocalObjeto(false).MES, anioActual, { DESDE: 4, HASTA: 5 });\r\n //setAnioSeleccionado(anioActual);\r\n\r\n filtroFecha.CAMBIO_DIA = true;\r\n filtroFecha.CAMBIO_MES = false;\r\n filtroFecha.CAMBIO_ANIO = false;\r\n filtroFecha.CAMBIO_TODAS = false;\r\n\r\n filtroFecha.ACCION_DESDE = 4;\r\n filtroFecha.ACCION_HASTA = 5;\r\n filtroFecha.FECHA_PARTIDA = FECHA_PARTIDA;\r\n\r\n setFiltroFecha({ ...filtroFecha })\r\n\r\n licenciasSertec(3, \"D\", false, filtroSeleccionado.TAREAS_CERRADAS, obtenerLicenciaLocal().ID_TALLER, null, FECHA_PARTIDA, 4, 5);\r\n\r\n }}>\r\n {traducirPagina(\"Hoy\").toUpperCase()}\r\n
\r\n\r\n\r\n \r\n \r\n \r\n {ObtenerTextoMes(mesSeleccionado)}\r\n
\r\n \r\n\r\n \r\n {mesesDelAnio.map((mes, i) =>\r\n {\r\n const FECHA_PARTIDA = construirFecha((i + 1), anioSeleccionado, { DESDE: 0, HASTA: 1 });\r\n\r\n setMesSeleccionado((i + 1));\r\n\r\n filtroFecha.CAMBIO_DIA = false;\r\n filtroFecha.CAMBIO_MES = true;\r\n filtroFecha.CAMBIO_ANIO = false;\r\n filtroFecha.CAMBIO_TODAS = false;\r\n\r\n filtroFecha.ACCION_DESDE = 0;\r\n filtroFecha.ACCION_HASTA = 1;\r\n filtroFecha.FECHA_PARTIDA = FECHA_PARTIDA\r\n setFiltroFecha({ ...filtroFecha })\r\n\r\n licenciasSertec(3, \"D\", false, filtroSeleccionado.TAREAS_CERRADAS, obtenerLicenciaLocal().ID_TALLER, null, FECHA_PARTIDA, 0, 1);\r\n\r\n\r\n }}> {mes.toUpperCase()}\r\n )}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {anioSeleccionado}\r\n
\r\n \r\n\r\n \r\n {anios !== null ?\r\n anios.map((anio, i) =>\r\n {\r\n const FECHA_PARTIDA = construirFecha(mesSeleccionado, e.target.innerText, { DESDE: 2, HASTA: 3 });\r\n\r\n setAnioSeleccionado(e.target.innerText);\r\n\r\n filtroFecha.CAMBIO_DIA = false;\r\n filtroFecha.CAMBIO_MES = false;\r\n filtroFecha.CAMBIO_ANIO = true;\r\n filtroFecha.CAMBIO_TODAS = false;\r\n\r\n filtroFecha.ACCION_DESDE = 2;\r\n filtroFecha.ACCION_HASTA = 3;\r\n filtroFecha.FECHA_PARTIDA = FECHA_PARTIDA;\r\n setFiltroFecha({ ...filtroFecha })\r\n\r\n licenciasSertec(3, \"D\", false, filtroSeleccionado.TAREAS_CERRADAS, obtenerLicenciaLocal().ID_TALLER, null, FECHA_PARTIDA, 2, 3);\r\n\r\n }}> {anio}\r\n )\r\n :\r\n null\r\n }\r\n \r\n \r\n\r\n\r\n {\r\n let anioActual = obtenerFechaLocalObjeto(false).ANIO;\r\n //const FECHA_PARTIDA = construirFecha(obtenerFechaLocalObjeto(false).MES, anioActual, { DESDE: 2, HASTA: 3 });\r\n\r\n filtroFecha.CAMBIO_DIA = false;\r\n filtroFecha.CAMBIO_MES = false;\r\n filtroFecha.CAMBIO_ANIO = false;\r\n\r\n filtroFecha.CAMBIO_TODAS = true;\r\n\r\n\r\n\r\n filtroFecha.ACCION_DESDE = 0;\r\n filtroFecha.ACCION_HASTA = 0;\r\n filtroFecha.FECHA_PARTIDA = \"\";\r\n\r\n setFiltroFecha({ ...filtroFecha })\r\n\r\n licenciasSertec(3, \"D\", false, filtroSeleccionado.TAREAS_CERRADAS, obtenerLicenciaLocal().ID_TALLER, null, filtroFecha.FECHA_PARTIDA, filtroFecha.ACCION_DESDE, filtroFecha.ACCION_HASTA);\r\n\r\n }}>\r\n {traducirPagina(\"Todos\").toUpperCase()}\r\n
\r\n\r\n\r\n >\r\n );\r\n\r\n\r\n const vistaConsultaWeb = (\r\n \r\n
\r\n \r\n \r\n {\r\n actualizarCabeceraTabla(\"ID_TAREA\", !cabeceraTabla.ID_TAREA);\r\n\r\n setLicencias(ordenarTablaLocal(cabeceraTabla.ID_TAREA ? \"ASC\" : \"DESC\", licencias, \"ID_TAREA\"))\r\n }}> {\"ID\"} {cabeceraTabla.ID ? : } | \r\n\r\n {\r\n actualizarCabeceraTabla(\"USUARIO_TALLER_ALTA\", !cabeceraTabla.USUARIO_TALLER_ALTA);\r\n\r\n setLicencias(ordenarTablaLocal(cabeceraTabla.USUARIO_TALLER_ALTA ? \"ASC\" : \"DESC\", licencias, \"FECHA_ALTA\"))\r\n }} > {traducirPagina(\"Nombre_usuario\")} {cabeceraTabla.USUARIO_TALLER_ALTA ? : } | \r\n\r\n\r\n\r\n {\r\n actualizarCabeceraTabla(\"MATRICULA\", !cabeceraTabla.MATRICULA);\r\n\r\n setLicencias(ordenarTablaLocal(cabeceraTabla.MATRICULA ? \"ASC\" : \"DESC\", licencias, \"MATRICULA\"))\r\n }}> {traducirPagina(\"Matricula\")} {cabeceraTabla.MATRICULA ? : } | \r\n\r\n {\r\n actualizarCabeceraTabla(\"FECHA_ALTA\", !cabeceraTabla.FECHA_ALTA);\r\n\r\n setLicencias(ordenarTablaLocal(cabeceraTabla.FECHA_ALTA ? \"ASC\" : \"DESC\", licencias, \"FECHA_ALTA\"))\r\n }} > {traducirPagina(\"Fecha\")} {cabeceraTabla.FECHA_ALTA ? : } | \r\n\r\n\r\n\r\n\r\n\r\n {\r\n actualizarCabeceraTabla(\"MATRICULA_MARCA\", !cabeceraTabla.MATRICULA_MARCA);\r\n setLicencias(ordenarTablaLocal(cabeceraTabla.MATRICULA_MARCA ? \"ASC\" : \"DESC\", licencias, \"MATRICULA_MARCA\"))\r\n }} > {traducirPagina(\"Vehiculo\")} {cabeceraTabla.MATRICULA_MARCA ? : } | \r\n\r\n\r\n\r\n {\r\n actualizarCabeceraTabla(\"TEXTO_CONSULTA\", !cabeceraTabla.TEXTO_CONSULTA);\r\n\r\n setLicencias(ordenarTablaLocal(cabeceraTabla.TEXTO_CONSULTA ? \"ASC\" : \"DESC\", licencias, \"TEXTO_CONSULTA\"))\r\n }} > {traducirPagina(\"Consulta\")} {cabeceraTabla.TEXTO_CONSULTA ? : } | \r\n\r\n\r\n | \r\n\r\n\r\n {traducirPagina(\"Finalizado\")} | \r\n\r\n\r\n | \r\n\r\n
\r\n \r\n \r\n
\r\n \r\n\r\n
\r\n
\r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n
\r\n <>\r\n
{traducirPagina(\"Consultas\").toUpperCase()}
\r\n\r\n
\r\n
\r\n {\r\n filtrarDatosLocales(licenciasAux, { ESTADO_TAREA: filtroSeleccionado.ESTADO_TAREA, GRUPO_MONTAJE: filtroSeleccionado.GRUPO_MONTAJE }, e.target.value)\r\n setTextoBuscador(e.target.value)\r\n }} value={textoBuscador} />\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n {filtroConsultasFecha}\r\n
\r\n\r\n
\r\n {filtroConsultasEstados}\r\n
\r\n\r\n
\r\n {filtroConsultasCerradas}\r\n
\r\n\r\n >\r\n
\r\n\r\n
\r\n {licencias !== null ?\r\n licencias.length > 0 ?\r\n
\r\n
\r\n\r\n
{ updateNumberPage(current, size) }}\r\n total={licencias.length}\r\n showTotal={() => ` ${licencias.length} ${traducirPagina(\"Consultas\")}`}\r\n defaultPageSize={40}\r\n onChange={(page, pageSize) => { paginarTabla(page, pageSize) }}\r\n > \r\n\r\n
\r\n
\r\n\r\n :\r\n null\r\n : null\r\n }\r\n {licencias === null ?\r\n
\r\n\r\n
{traducirPagina(\"Msg_sin_consulta\")}
\r\n\r\n
\r\n :\r\n licencias.length > 0 ?\r\n\r\n (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) ?\r\n\r\n
\r\n\r\n {\r\n licencias.map((licencia, i) => (\r\n (i + 1) >= datosPaginacion.inicio && (i + 1) <= datosPaginacion.final ?\r\n\r\n
{\r\n setAbrirFichaTarea(true)\r\n setEsNuevaTarea(false)\r\n setRegistroSeleccionado(licencia)\r\n }}>\r\n
\r\n {licencia.FK_ID_MAE_ESTADO_TAREA === 8 ?\r\n

\r\n\r\n :\r\n

\r\n\r\n }\r\n
\r\n\r\n
\r\n
Consulta número {licencia.ID_TAREA}
\r\n
{licencia.FECHA_ALTA}
\r\n
\r\n\r\n\r\n
{licencia.MATRICULA}
\r\n
{`${licencia.MATRICULA_MARCA} ${licencia.MATRICULA_MODELO} ${licencia.MATRICULA_MOTOR}`}
\r\n
\r\n
\r\n\r\n :\r\n null\r\n ))\r\n }\r\n
\r\n\r\n :\r\n\r\n vistaConsultaWeb\r\n\r\n :\r\n
\r\n }\r\n
\r\n\r\n {\r\n abrirFichaTarea ?\r\n
\r\n \r\n :\r\n null\r\n }\r\n {\r\n abrirFeedback ?\r\n\r\n
\r\n\r\n \r\n :\r\n null\r\n }\r\n\r\n\r\n {abirPublicidad ?\r\n\r\n
\r\n\r\n \r\n :\r\n null\r\n }\r\n\r\n {filtrosMovil ?\r\n
{ setFiltrosMovil(true) }}\r\n onCancel={() => { setFiltrosMovil(false) }}\r\n footer={[\r\n ,\r\n\r\n\r\n\r\n \r\n ]}>\r\n\r\n\r\n \r\n \r\n {filtroConsultasFecha}\r\n \r\n\r\n \r\n {filtroConsultasEstados}\r\n \r\n\r\n \r\n {filtroConsultasCerradas}\r\n \r\n
\r\n \r\n :\r\n null\r\n }\r\n
\r\n >\r\n );\r\n}\r\n\r\nContainerTareas.propTypes = {\r\n DATOS_SESION: PropTypes.object,\r\n ABRIR_FILTRO: PropTypes.bool\r\n\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n props: props,\r\n configApp: state.configApp,\r\n usuario: state.usuario,\r\n QUERY_USER: state.QUERY_USER\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(ContainerTareas);\r\n\r\n\r\n\r\n\r\n","import React from \"react\";\r\nimport { useSearchParams } from \"react-dom\";\r\nimport { connect } from 'react-redux';\r\nimport { checkuserlogin } from \"../action/actionCreators\";\r\nimport { LoginEnAPI, recuperar_contrasenyaEnAPI } from \"../action/actionCreatorsRequests\";\r\n\r\nimport { obtenerIdioma, MSGERROR, MSGOK } from \"../librerias/funciones\"\r\nimport history from '../history';\r\n\r\nimport { Modal, Button, Input, Row, Col } from 'antd';\r\nimport store from \"../store\";\r\n\r\nconst MOADAL_ALERTAS_LOIN = (COD_IDIOMA, TEXTO) => {\r\n\r\n Modal.warning({\r\n centered: true,\r\n okText: COD_IDIOMA !== undefined && COD_IDIOMA === \"FR\" ? \"SORTIR\" : \"SALIR\",\r\n okType: \"modalAlertas\",\r\n content: ({TEXTO}
),\r\n });\r\n}\r\n\r\nconst LOGIN_VOLTAF = (props) => {\r\n return \r\n
\r\n
\r\n
\r\n
\r\n
props.GUARDAR_DATOS_FORM(e)} />\r\n
props.GUARDAR_DATOS_FORM(e)} onKeyPress={(e) => e.which === 13 ? props.VERIFICA_USUARIO(props.PAYLOAD.USUARIO, e.target.value) : null} />\r\n
{ props.CERRAR_MODAL(true) }}>Olvido su contraseña?\r\n
\r\n
\r\n
\r\n
\r\n\r\n
{ props.MODIFICAR_EMAIL_RECUPERACION(\"\") }}\r\n onCancel={() => props.CERRAR_MODAL(false)}\r\n style={{ zIndex: '999' }}\r\n footer={[\r\n ,\r\n \r\n ]}\r\n >\r\n\r\n \r\n \r\n Ingrese el email de recuperación \r\n \r\n \r\n props.MODIFICAR_EMAIL_RECUPERACION(e.target.value)} />\r\n \r\n
\r\n \r\n\r\n\r\n
;\r\n};\r\n\r\n\r\nconst LOGIN_QTALLER = (props) => {\r\n return \r\n
\r\n
\r\n
\r\n
\r\n
props.GUARDAR_DATOS_FORM(e)} />\r\n
props.GUARDAR_DATOS_FORM(e)} onKeyPress={(e) => e.which === 13 ? props.VERIFICA_USUARIO(props.PAYLOAD.USUARIO, e.target.value) : null} />\r\n
{ props.CERRAR_MODAL(true) }}>Olvido su contraseña?\r\n
\r\n
\r\n
\r\n
\r\n\r\n
{ props.MODIFICAR_EMAIL_RECUPERACION(\"\") }}\r\n onCancel={() => props.CERRAR_MODAL(false)}\r\n style={{ zIndex: '999' }}\r\n footer={[\r\n ,\r\n \r\n ]}\r\n >\r\n\r\n \r\n \r\n Ingrese el email de recuperación \r\n \r\n \r\n props.MODIFICAR_EMAIL_RECUPERACION(e.target.value)} />\r\n \r\n
\r\n \r\n\r\n\r\n
;\r\n};\r\n\r\nconst LOGIN_ASER = (props) => {\r\n return \r\n
\r\n
\r\n
\r\n
\r\n
props.GUARDAR_DATOS_FORM(e)} />\r\n
props.GUARDAR_DATOS_FORM(e)} onKeyPress={(e) => e.which === 13 ? props.VERIFICA_USUARIO(props.PAYLOAD.USUARIO, e.target.value) : null} />\r\n
{ props.CERRAR_MODAL(true) }}>Olvido su contraseña?\r\n
\r\n
\r\n
\r\n
\r\n\r\n
{ props.MODIFICAR_EMAIL_RECUPERACION(\"\") }}\r\n onCancel={() => props.CERRAR_MODAL(false)}\r\n style={{ zIndex: '999' }}\r\n footer={[\r\n ,\r\n \r\n ]}\r\n >\r\n\r\n \r\n \r\n Ingrese el email de recuperación \r\n \r\n \r\n props.MODIFICAR_EMAIL_RECUPERACION(e.target.value)} />\r\n \r\n
\r\n \r\n\r\n\r\n
;\r\n};\r\n\r\nconst FLEX_FUEL = (props) => {\r\n return \r\n
\r\n
\r\n
\r\n
\r\n
props.GUARDAR_DATOS_FORM(e)} />\r\n
props.GUARDAR_DATOS_FORM(e)} onKeyPress={(e) => e.which === 13 ? props.VERIFICA_USUARIO(props.PAYLOAD.USUARIO, e.target.value, \"FR\") : null} />\r\n
{ props.CERRAR_MODAL(true) }}>Vous avez oublié votre mot de passe?\r\n
\r\n
\r\n
\r\n
\r\n\r\n
{ props.MODIFICAR_EMAIL_RECUPERACION(\"\") }}\r\n onCancel={() => props.CERRAR_MODAL(false)}\r\n style={{ zIndex: '999' }}\r\n footer={[\r\n ,\r\n \r\n ]}\r\n >\r\n\r\n \r\n \r\n Saisissez l'e-mail de récupération\r\n \r\n \r\n props.MODIFICAR_EMAIL_RECUPERACION(e.target.value)} />\r\n \r\n
\r\n \r\n
;\r\n};\r\n\r\n\r\nconst LOGIN_OPTIMA_CAR = (props) => {\r\n return \r\n
\r\n
\r\n
\r\n
\r\n
props.GUARDAR_DATOS_FORM(e)} />\r\n
props.GUARDAR_DATOS_FORM(e)} onKeyPress={(e) => e.which === 13 ? props.VERIFICA_USUARIO(props.PAYLOAD.USUARIO, e.target.value) : null} />\r\n
{ props.CERRAR_MODAL(true) }}>Olvido su contraseña?\r\n
\r\n
\r\n
\r\n
\r\n\r\n
{ props.MODIFICAR_EMAIL_RECUPERACION(\"\") }}\r\n onCancel={() => props.CERRAR_MODAL(false)}\r\n style={{ zIndex: '999' }}\r\n footer={[\r\n ,\r\n \r\n ]}\r\n >\r\n\r\n \r\n \r\n Ingrese el email de recuperación \r\n \r\n \r\n props.MODIFICAR_EMAIL_RECUPERACION(e.target.value)} />\r\n \r\n
\r\n \r\n\r\n\r\n
;\r\n};\r\n\r\nconst ASSIST_FR = (props) => {\r\n return \r\n
\r\n
\r\n
\r\n
\r\n
props.GUARDAR_DATOS_FORM(e)} />\r\n
props.GUARDAR_DATOS_FORM(e)} onKeyPress={(e) => e.which === 13 ? props.VERIFICA_USUARIO(props.PAYLOAD.USUARIO, e.target.value, \"FR\") : null} />\r\n
{ props.CERRAR_MODAL(true) }}>Vous avez oublié votre mot de passe?\r\n
\r\n
\r\n
\r\n
\r\n\r\n
{ props.MODIFICAR_EMAIL_RECUPERACION(\"\") }}\r\n onCancel={() => props.CERRAR_MODAL(false)}\r\n style={{ zIndex: '999' }}\r\n footer={[\r\n ,\r\n \r\n ]}\r\n >\r\n\r\n \r\n \r\n Saisissez l'e-mail de récupération\r\n \r\n \r\n props.MODIFICAR_EMAIL_RECUPERACION(e.target.value)} />\r\n \r\n
\r\n \r\n
;\r\n};\r\n\r\n\r\nconst LOGIN_DEFAULT = (props) => {\r\n return \r\n
\r\n
\r\n
\r\n
\r\n
props.GUARDAR_DATOS_FORM(e)} />\r\n
props.GUARDAR_DATOS_FORM(e)} onKeyPress={(e) => e.which === 13 ? props.VERIFICA_USUARIO(props.PAYLOAD.USUARIO, e.target.value) : null} />\r\n
{ props.CERRAR_MODAL(true) }}>Olvido su contraseña?\r\n
\r\n
\r\n
\r\n
\r\n\r\n
{ props.MODIFICAR_EMAIL_RECUPERACION(\"\") }}\r\n onCancel={() => props.CERRAR_MODAL(false)}\r\n style={{ zIndex: '999' }}\r\n footer={[\r\n ,\r\n \r\n ]}\r\n >\r\n\r\n \r\n \r\n Ingrese el email de recuperación \r\n \r\n \r\n props.MODIFICAR_EMAIL_RECUPERACION(e.target.value)} />\r\n \r\n
\r\n \r\n\r\n\r\n
;\r\n};\r\n\r\n\r\n\r\nconst LOGIN_ANDEL = (props) => {\r\n return \r\n
\r\n
\r\n
\r\n
\r\n
props.GUARDAR_DATOS_FORM(e)} />\r\n
props.GUARDAR_DATOS_FORM(e)} onKeyPress={(e) => e.which === 13 ? props.VERIFICA_USUARIO(props.PAYLOAD.USUARIO, e.target.value) : null} />\r\n
{ props.CERRAR_MODAL(true) }}>Olvido su contraseña?\r\n
\r\n
\r\n
\r\n
\r\n\r\n
{ props.MODIFICAR_EMAIL_RECUPERACION(\"\") }}\r\n onCancel={() => props.CERRAR_MODAL(false)}\r\n style={{ zIndex: '999' }}\r\n footer={[\r\n ,\r\n \r\n ]}\r\n >\r\n\r\n \r\n \r\n Ingrese el email de recuperación \r\n \r\n \r\n props.MODIFICAR_EMAIL_RECUPERACION(e.target.value)} />\r\n \r\n
\r\n \r\n\r\n\r\n
;\r\n};\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst Login = ({ props }) => {\r\n const [emailRecuperacion, setEmailRecuperacion] = React.useState(\"\");\r\n const [cargarLogin, setCargarLogin] = React.useState(false);\r\n const [visible, setVisible] = React.useState(false);\r\n const query = new URLSearchParams(props.location.search);\r\n const [payloadLocal, setPayloadLocal] = React.useState(\r\n {\r\n EMAIL: \"\",\r\n USUARIO: \"\",\r\n PWD: \"\"\r\n }\r\n );\r\n\r\n const [dimensions, setDimensions] = React.useState({\r\n height: window.innerHeight,\r\n width: window.innerWidth\r\n })\r\n\r\n\r\n\r\n React.useEffect(() => {\r\n const handleResize = () => {\r\n setDimensions({\r\n height: window.innerHeight,\r\n width: window.innerWidth\r\n })\r\n }\r\n window.addEventListener('resize', handleResize)\r\n }, [])\r\n\r\n\r\n\r\n const guardarEstadoFormulario = (e) => {\r\n const EMAIL = e.target.name === 'EMAIL' ? e.target.value : payloadLocal.EMAIL;\r\n const USUARIO = e.target.name === 'USUARIO' ? e.target.value : payloadLocal.USUARIO;\r\n const PWD = e.target.name === 'PWD' ? e.target.value : payloadLocal.PWD;\r\n\r\n setPayloadLocal(\r\n {\r\n EMAIL: EMAIL,\r\n USUARIO: USUARIO,\r\n PWD: PWD\r\n }\r\n )\r\n }\r\n\r\n\r\n const verificarUsuario = async (USER, PWD, COD_IDIOMA) => {\r\n if (USER !== \"\" || PWD !== \"\") {\r\n const registro = await LoginEnAPI(USER, PWD);\r\n\r\n if (registro !== undefined) {\r\n if (registro.OK) {\r\n store.dispatch({ type: \"SET_SESION_USER\", usuario: registro });\r\n store.dispatch(\r\n {\r\n type: \"UPDATE_IDIOMA_SERTEC\",\r\n idiomaActual: obtenerIdioma(registro.USUARIO.CODIGO_IDIOMA)\r\n }\r\n )\r\n const MATRICULA = query.get('matricula');\r\n if (MATRICULA !== null) {\r\n store.dispatch({ type: \"QUERY_USER\", QUERY_USER: { MATRICULA: MATRICULA } });\r\n }\r\n\r\n history.push(`${process.env.PUBLIC_URL}/home`);\r\n } else {\r\n if (COD_IDIOMA === \"FR\") {\r\n MOADAL_ALERTAS_LOIN(COD_IDIOMA, \"Les identifiants sont incorrects\")\r\n //MSGERROR(\"Les identifiants sont incorrects\")\r\n } else {\r\n MOADAL_ALERTAS_LOIN(\"\", \"Las credenciales son incorrectas\")\r\n\r\n //MSGERROR(\"Las credenciales son incorrectas\")\r\n }\r\n }\r\n } else {\r\n if (COD_IDIOMA === \"FR\") {\r\n MOADAL_ALERTAS_LOIN(COD_IDIOMA, \"Problèmes de connexion à l'API\")\r\n\r\n //MSGERROR(\"Problèmes de connexion à l'API\")\r\n } else {\r\n //MSGERROR(\"Problemas al conectar con la API\")\r\n MOADAL_ALERTAS_LOIN(\"\", \"Problemas al conectar con la API\")\r\n }\r\n }\r\n } else {\r\n if (COD_IDIOMA === \"FR\") {\r\n // MSGERROR(\"Nom d'utilisateur ou mot de passe manquant\")\r\n MOADAL_ALERTAS_LOIN(COD_IDIOMA, \"Nom d'utilisateur ou mot de passe manquant\")\r\n\r\n } else {\r\n //MSGERROR(\"Falta usuario o contraseña\")\r\n MOADAL_ALERTAS_LOIN(\"\", \"Falta usuario o contraseña\")\r\n\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n const recuperarPWD = async (EMAIL_RECUP, COD_IDIOMA) => {\r\n if (EMAIL_RECUP.trim() === \"\") {\r\n if (COD_IDIOMA === \"FR\") {\r\n //MSGERROR(\"Saisissez votre e-mail de récupération\")\r\n MOADAL_ALERTAS_LOIN(COD_IDIOMA, \"Saisissez votre e-mail de récupération\")\r\n\r\n } else {\r\n //MSGERROR(\"Ingrese su email de recuparción\")\r\n MOADAL_ALERTAS_LOIN(\"\", \"Ingrese su email de recuparción\")\r\n\r\n }\r\n\r\n } else {\r\n const { OK } = await recuperar_contrasenyaEnAPI(EMAIL_RECUP);\r\n if (OK) {\r\n if (COD_IDIOMA === \"FR\") {\r\n //MSGOK(\"E-mail envoyé avec succès\");\r\n MOADAL_ALERTAS_LOIN(COD_IDIOMA, \"E-mail envoyé avec succès\")\r\n\r\n\r\n } else {\r\n //MSGOK(\"Email enviado correctamente\");\r\n MOADAL_ALERTAS_LOIN(\"\", \"Email enviado correctamente\")\r\n\r\n }\r\n setVisible(false);\r\n }\r\n }\r\n }\r\n\r\n\r\n const TIPO_LOGIN = () => {\r\n let HOST_NAME = window.location.hostname\r\n\r\n switch (HOST_NAME) {\r\n case \"assist.servicenext.eu\":\r\n return ()\r\n\r\n case \"asistencia.qtaller.com\":\r\n return ()\r\n\r\n case \"asertech.aserauto.com\":\r\n return ()\r\n\r\n case \"supporte85-flexfuel.servicenext.eu\":\r\n return ()\r\n case \"optimacar.servicenext.eu\":\r\n return ()\r\n case \"voltaf.assist.servicenext.eu\":\r\n return ()\r\n\r\n case \"assistfr.servicenext.eu\":\r\n return ()\r\n\r\n case \"asistencia-pt.andelautomocion.com\":\r\n return ()\r\n\r\n default:\r\n return ()\r\n\r\n }\r\n }\r\n\r\n if (!cargarLogin) {\r\n setTimeout(() => {\r\n setCargarLogin(true)\r\n }, 2000)\r\n\r\n const USER = query.get('user');\r\n const PWD = query.get('pwd');\r\n const MATRICULA = query.get('matricula');\r\n\r\n if (USER !== null && PWD !== null) {\r\n verificarUsuario(USER, PWD);\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {!cargarLogin ?\r\n \r\n :\r\n <>\r\n {TIPO_LOGIN()}\r\n >\r\n }\r\n\r\n \r\n >\r\n );\r\n}\r\n\r\nLogin.propTypes = {\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n configApp: state.configApp,\r\n props: props,\r\n\r\n };\r\n}\r\n\r\nexport default connect(mapStateToProps)(Login);\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { BrowserRouter, Router, Switch, Route } from \"react-router-dom\";\r\n\r\nimport 'alertifyjs//build/alertify.min.js';\r\nimport 'alertifyjs/build/css/alertify.min.css';\r\nimport 'alertifyjs/build/css/themes/default.min.css';\r\nimport '@fortawesome/fontawesome-free/css/all.min.css';\r\nimport 'bootstrap-css-only/css/bootstrap.min.css';\r\nimport 'mdbreact/dist/css/mdb.css';\r\nimport 'antd/dist/antd.css';\r\nimport './index.css'\r\n\r\nimport store from './store'\r\nimport { Provider } from 'react-redux';\r\nimport { updateStateMasterPage } from './action/actionCreators';\r\nimport ContainerTareas from \"./components/ContainerTareas\";\r\nimport Login from \"./components/Login\";\r\nimport history from './history';\r\n\r\n\r\nwindow.onpopstate = function (event) {\r\n // Code to handle back button or prevent from navigation\r\n if (event.path[0].location.pathname === \"/\") {\r\n store.dispatch(updateStateMasterPage(false))\r\n\r\n } else {\r\n store.dispatch(updateStateMasterPage(true))\r\n }\r\n}\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n \r\n document.getElementById(\"root\")\r\n);\r\n\r\n\r\n"],"sourceRoot":""}