{"version":3,"sources":["pages/caja/aplicarNCND.js","pages/caja/PrecioCurso.js"],"names":["Auth","AuthService","tokenInfo","movil","test","navigator","userAgent","widthTable","window","screen","width","globales","tabla","marginleft","marginright","columns","name","title","columnExtensions","columnName","align","columnsDetalle","columnExtensionsDetalle","settingFilter","predicate","value","filter","row","funciones","getTime","IntegratedFiltering","defaultPredicate","SIMBOLO","formatCurrency","RowId","ID_NCD_CORR","VirtualTable_cellComponent","props","column","_jsx","Table","Cell","children","simbolo","undefined","withStyles","theme","paper","borderRadius","border_dialog","minWidth","maxWidth","height","maxHeight","paperConfirm","dialogContent","paddingBottom","paperContent","padding","overflow","closeButton","position","right","spacing","top","color","palette","grey","backdrop","zIndex","flexDirection","divContent","display","justifyContent","alignItems","left","React","Component","constructor","super","inputRef","createRef","tablaRef","vtRef","obtener_documentos","Request","get","ip","user","set","getToken","retry","timeout","response","deadline","end","err","res","toString","substr","location","reload","this","setState","loadingMain","showToast","rows","JSON","parse","text","obtener_detalle","id_ncd","loadingDet","visibleTbDet","ID_FACTURA","detVal","DESCRIPCION_NCD","motivoVal","MOTIVO","rowsDetalle","aprobar","isEmpty","state","idRowSelected","textoConfirm","openModalConfirm","rechazar","imprimir","document","getElementById","click","detalle","openModal","actualizar","handleRowClick","idRow","event","changeFilters","filters","handleClose","handleCloseConfirm","gestion_documento","id_ncd_corr","comentario","tipo","post","send","ad_usuario","openBackDrop","length","RESP","aceptar","includes","current","focus","trim","onEnteringConfirm","onEntering","l","e","i","isLoggin","heightTableMain","botones","icono","toolt","nombre","escritura","onclick","botones_estado","componentDidMount","getProfile","plataforma","getHeightTableMain","heightTable","render","classes","Fragment","Paper","className","square","_jsxs","BarraBotones","ref","style","marginLeft","marginleft_movil","marginRight","marginright_movil","CustomTable","Columns","Rows","TableColumnExtensions","columnWidths","getRowId","rowSelected","rowClick","loading","enabledFilterRows","FilteringColumnExtensions","onFiltersChange","Dialog","open","TransitionProps","fullScreen","DialogTitle","Typography","component","variant","IconButton","onClick","size","CloseIcon","fontSize","DialogContent","CircularProgress","_Fragment","marginTop","marginBottom","paddingTop","textAlign","gutterBottom","TextField","label","fullWidth","required","multiline","rowsMax","margin","inputProps","DialogActions","Reporte","id","parametros","String","nom_boton","nom_bar","label_reporte","backcolor","colores","azul","fill","boton","color_bar","opciones","Backdrop","invisible","transitionDuration","controlCambiosPrecio","steps","grouping","columnsPreView","columnExtensionsPreView","columnsJornadas","columnExtensionsJornadas","filterOptionsNivel","createFilterOptions","stringify","option","CODIGO_NIVEL","DESCRIPCION_NIVEL","filterOptions","CODIGO_CURSO","DESCRIPCION_CURSO","ID_PRECIO_CURSO","RowIdJornadas","ID_JORNADA","GroupCellContent","_ref","VirtualTablePrevView_cellComponent","_ref2","MONEDA","TableSelectionCellComponent","_ref3","HAVE_PRECIO","paddingLeft","Checkbox","disabled","checked","TableSelection","TableRow","_ref5","highlighted","rowIndex","selectByRowClick","odd","Row","backgroundColor","alternateColorRow1","alternateColorRow2","renderOption","lineHeight","renderOptionCurso","paperPrecios","formControlSelect","popper","groupAutocomplete","whiteSpace","textOverflow","rootSteps","button","actionsContainer","divProgress","fileRef","browseRef","tablaVistaPreviaRef","dialogActionRef","carreraRef","dialogActionJornadasRef","tablaJornadasRef","verifications","dataset","x","y","columnsPrincipals","valoresIncorrectos","columnsCount","columnsCountVerify","msgError_","msgError","find","toUpperCase","replace","split","join","push","TITLE","INDEX","findIndex","map","item","index","item2","index2","isNaN","item3","index3","isValidFile","info","parseInt","fileSize","toFixed","isReadingFile","buildFileSelector","fileSelector","createElement","setAttribute","_this","addEventListener","hasInvalidFiles","files","endsWith","file","target","reader","FileReader","onload","async","data","Uint8Array","result","Promise","resolve","XLSX","type","then","workbook","Sheets","SheetNames","sheet_to_json","worksheet","header","sheet","bind","readAsArrayBuffer","exception","changesEvent","openModalChanges","openFileDiaog","preventDefault","handleCloseChanges","isPrevView","isPricesChanging","activeStep","controlActualizar","obtenerPreciosCursos","handleClosePrice","isSaving","openModalPrice","onEnteringChanges","priceEvent","valueAutoCompleteNivel","valueAutoComplete","optionAutocomplete","cursosCollectionFull","rowsJornadas","selection","editMode","changeExpandedGroups","expandedGroups","MONTO","DESCRIPCION_CURSO_COMPLETA","obtenerNiveles","loadingNivel","optionAutocompleteNivel","obtenerCursos","loadingCurso","onEnteringPrice","tJornadasHeight","getHeightTableDialog","idCurso","ID_CURSO","optionSelected","onChangeAutocomplete","changeSelection","commitChanges","_ref6","IdJornada","changed","validation","parseFloat","changedRows","PRECIO","UVP","JORNADA","gestionPrecios","strPrecios","idPrecioCurso","adUsuario","tipoProceso","id_curso","str_precios","id_precio_curso","tipo_proceso","handledOkChanges","loadingJornada","deleteEvent","handleCloseDelete","deleteClick","newValue","onChangeAutocompleteNivel","id_nivel","ID_NIVEL","cursos","createPrevView","strPreciosNuevos","repetidos","sinRepetir","ID_CURSO_HIJO","str_precios_nuevos","rowsPreView","onHidden","getStepContent","step","aContent","placeholder","InputProps","readOnly","endAdornment","InputAdornment","Tooltip","PopperProps","edge","SearchIcon","cursor","minHeight","bContent","LinearProgress","cContent","DefaultHiddenColumnNames","handleNext","setTimeout","handleBack","editEvent","msgErrorDataFile","showTooltipFile","editingCells","naranja","botones_movil","botones_precio","botones_eliminar","VirtualTableJornada_cellComponent","_ref7","Boolean","colorText","color_disabled","regex","match","Grouping","ExpandedGroups","ChangeExpandedGroups","groupContentComponent","Stepper","orientation","Step","StepLabel","StepContent","Button","textTransform","elevation","resetContainer","background","Autocomplete","options","getOptionLabel","renderInput","params","onChange","PaperComponent","limitTags","sort","a","b","localeCompare","groupBy","renderGroup","classesRoot","ListSubheader","root","group","key","ListboxProps","RowComponent","Selection","ChangeSelection","tableSelectionCellComponent","cellsEditing","cellsEditingCellComponent","_ref4","editingEnabled","TableInlineCellEditing","selectTextOnEditStart","showSelectionColumn"],"mappings":"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","file":"static/js/main~eb73bb66.14253572.chunk.js","sourcesContent":["import React from 'react';\r\nimport CustomTable from '../../components/CustomTable';\r\nimport {globales, colores, funciones } from '../../global';\r\nimport AuthService from '../../AuthService';\r\nimport Request from 'superagent';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport BarraBotones from '../../components/Barra_menu';\r\nimport {withStyles} from '@material-ui/core/styles';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Reporte from '../../components/Modalreporte';\r\nimport {Table} from '@devexpress/dx-react-grid-material-ui';\r\nimport {IntegratedFiltering} from '@devexpress/dx-react-grid';\r\n\r\nlet Auth = new AuthService();\r\nlet tokenInfo = [];\r\n\r\nvar movil=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n\r\nconst styles = theme => ({\r\n\r\npaper: { \r\n borderRadius: globales.border_dialog,\r\n minWidth: !movil ? '520px' : undefined, \r\n maxWidth: !movil ? '520px' : undefined,\r\n height: !movil ? '580px' : undefined, \r\n maxHeight: !movil ? '95%' : undefined\r\n}, \r\npaperConfirm: { \r\n borderRadius: globales.border_dialog,\r\n minWidth: '320px', \r\n maxWidth: '320px', \r\n},\t\r\ndialogContent: {\r\n height: '100%', \r\n paddingBottom: '20px'\r\n},\r\npaperContent: {\r\n height: \"100%\",\r\n padding: \"15px\",\r\n overflow: \"auto\"\r\n},\r\ncloseButton: {\r\n position: 'absolute',\r\n right: theme.spacing(1),\r\n top: theme.spacing(1),\r\n color: theme.palette.grey[500],\r\n},\r\nbackdrop: {\r\n zIndex: 500000,\r\n color: '#fff', \r\n flexDirection: 'column'\r\n},\r\ndivContent: { \r\n display: 'flex', \r\n justifyContent: 'center', \r\n alignItems: 'center', \r\n height: '100%', \r\n width: '100%', \r\n left: 0\r\n}\r\n});\r\nconst widthTable = !movil ? window.screen.width - (globales.tabla.marginleft + globales.tabla.marginright) : 1336;\r\nconst columns = [ \r\n {name: 'ID_NCD_CORR', title: 'Nº documento'},\r\n {name: 'DESCRIPCION', title: 'Descripción'},\r\n {name: 'FECHA_PROCESO', title: 'Fecha proceso'},\r\n {name: 'FECHA_VENCIMIENTO', title: 'Fecha vencimiento'},\r\n {name: 'CUENTA_ALUMNO', title: 'Cuenta'},\r\n {name: 'NOMBRE_COMPLETO', title: 'Nombre'},\r\n {name: 'ESTATUS NC/ND', title: 'Estado'},\r\n {name: 'USUARIO_CREO', title: 'Usuario'},\r\n {name: 'MONTO_TOTAL', title: 'Monto'},\r\n {name: 'SALDO ACTUAL', title: 'Saldo a apl.'},\r\n];\r\nconst columnExtensions = [ \r\n { columnName: 'ID_NCD_CORR', width: widthTable * 0.09 },\r\n { columnName: 'DESCRIPCION', width: widthTable * 0.07 },\r\n { columnName: 'FECHA_PROCESO', width: widthTable * 0.08, align: 'center'}, \r\n { columnName: 'FECHA_VENCIMIENTO', width: widthTable * 0.08, align: 'center'}, \r\n { columnName: 'CUENTA_ALUMNO', width: widthTable * 0.08, align: 'center'}, \r\n { columnName: 'NOMBRE_COMPLETO', width: widthTable * 0.23}, \r\n { columnName: 'ESTATUS NC/ND', width: widthTable * 0.08, align: 'center'},\r\n { columnName: 'USUARIO_CREO', width: widthTable * 0.08},\r\n { columnName: 'MONTO_TOTAL', width: widthTable * 0.08, align: 'center'}, \r\n { columnName: 'SALDO ACTUAL', width: widthTable * 0.08, align: 'center'}, \r\n];\r\n\r\nconst columnsDetalle = [\r\n {name: 'ID_FACTURA', title: 'Factura'},\r\n {name: 'DESCRIPCION_FACTURA', title: 'Descripción'},\r\n {name: 'MONTO_FACTURA', title: 'Monto'},\r\n {name: 'COMENTARIO', title: 'Comentario'},\r\n];\r\nconst columnExtensionsDetalle = [ \r\n { columnName: 'ID_FACTURA', width: 85 },\r\n { columnName: 'DESCRIPCION_FACTURA', width: 180 },\r\n { columnName: 'MONTO_FACTURA', width: 70, align: \"center\" },\r\n { columnName: 'COMENTARIO', width: 90 },\r\n];\r\n\r\nconst settingFilter = [\r\n\r\n { columnName: 'FECHA_PROCESO',\r\n predicate: (value, filter, row) => {\r\n value = funciones.getTime(value, 0);\r\n return IntegratedFiltering.defaultPredicate(value, filter, row);\r\n },\r\n },\r\n { columnName: 'FECHA_VENCIMIENTO',\r\n predicate: (value, filter, row) => {\r\n value = funciones.getTime(value, 0);\r\n return IntegratedFiltering.defaultPredicate(value, filter, row);\r\n },\r\n },\r\n { columnName: 'MONTO_TOTAL',\r\n predicate: (value, filter, row) => {\r\n value = row.SIMBOLO + \" \" + funciones.formatCurrency(value); \r\n return IntegratedFiltering.defaultPredicate(value, filter, row);\r\n },\r\n },\r\n { columnName: 'SALDO ACTUAL',\r\n predicate: (value, filter, row) => {\r\n value = row.SIMBOLO + \" \" + funciones.formatCurrency(value); \r\n return IntegratedFiltering.defaultPredicate(value, filter, row);\r\n },\r\n }\r\n \r\n];\r\n\r\nconst RowId = row => row.ID_NCD_CORR;\r\nconst VirtualTable_cellComponent = (props) => { \r\n \r\n if (props.column.name === 'FECHA_PROCESO' || props.column.name === 'FECHA_VENCIMIENTO')\r\n {\r\n return (\r\n {funciones.getTime(props.row[props.column.name], 0)}\r\n );\r\n }\r\n \r\n if (props.column.name === 'MONTO_TOTAL' || props.column.name === 'SALDO ACTUAL' || props.column.name === 'MONTO_FACTURA')\r\n {\r\n const simbolo = props.row.SIMBOLO !== undefined ? props.row.SIMBOLO + \" \" : \"\";\r\n\r\n return (\r\n {simbolo + funciones.formatCurrency(props.row[props.column.name])} \r\n );\r\n }\r\n\r\n \r\n return ();\r\n \r\n}\r\n\r\nexport default withStyles(styles) ( \r\nclass App extends React.Component {\r\n\r\ninputRef = React.createRef(); \r\ntablaRef = React.createRef();\r\nvtRef = React.createRef();\r\n\r\n constructor (props) {\r\n super(props);\r\n this.l=props.l\r\n this.e=props.e\r\n this.i=props.i\r\n this.state = {\r\n isLoggin : undefined,\r\n heightTableMain: 0,\r\n loadingMain: true,\r\n rows: [],\r\n openBackDrop: false, \r\n idRowSelected: null,\r\n textoConfirm: \"\",\r\n openModal: false,\r\n openModalConfirm: false,\r\n loadingDet: false,\r\n detVal: null,\r\n motivoVal: null,\r\n rowsDetalle: [],\r\n visibleTbDet: false,\r\n };\r\n this.botones=[\r\n {icono: 'Check', toolt: '', nombre: 'Aprobar', escritura:true, onclick: this.aprobar, display: 'auto', color: \"green\"},\r\n {icono: 'Close', toolt: '', nombre: 'Rechazar', escritura:true, onclick: this.rechazar, display:'auto', color: \"red\"},\r\n {icono: 'Print', toolt: '', nombre: 'Imprimir', escritura:true, onclick: this.imprimir, display: 'auto'},\r\n {icono: 'Info', toolt: '', nombre: 'Det. NC/ND', escritura:true, onclick: this.detalle, display: 'auto'}, \r\n {icono: 'RefreshIcon', toolt: '', nombre: 'Recargar', escritura:true, onclick: this.actualizar, display: 'auto'},\r\n ];\r\n this.botones_estado=[\r\n {icono: 'Check', toolt: '', nombre: 'Aceptar', onclick: this.aceptar, display:'auto'},\r\n {icono: 'Close', toolt: '', nombre: 'Cerrar', onclick: this.handleCloseConfirm, display:'auto', color: 'red'},\r\n ];\r\n}\r\n\r\nobtener_documentos = ()=>{\r\n\r\nnew Request\r\n .get(`${globales.ip}/aplncnd/documentos/${tokenInfo.user}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(1)\r\n .timeout({ response: 15000, deadline: 30000, }) \r\n .end((err, res) => {\r\n \r\n if (err) { \r\n \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n \r\n window.location.reload();\r\n return;\r\n \r\n }\r\n \r\n this.setState({ loadingMain: false }, ()=>{ \r\n funciones.showToast('e', 'No hay conexión'); \r\n }); \r\n \r\n return;\r\n }\r\n \r\n const rows = JSON.parse(res.text); \r\n this.setState({ rows, loadingMain: false }); \r\n \r\n });\r\n\r\n}\r\n\r\nobtener_detalle=(id_ncd)=>{\r\n\r\n new Request\r\n .get(`${globales.ip}/aplncnd/detalle/${id_ncd}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(1)\r\n .timeout({ response: 15000, deadline: 30000, }) \r\n .end((err, res) => {\r\n \r\n if (err) { \r\n \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n \r\n window.location.reload();\r\n return;\r\n \r\n }\r\n \r\n this.setState({ loadingDet: false }, ()=>{ \r\n funciones.showToast('e', 'No hay conexión'); \r\n }); \r\n \r\n return;\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n const visibleTbDet = rows[0].ID_FACTURA !== null ? true : false;\r\n this.setState({ detVal: rows[0].DESCRIPCION_NCD,\r\n motivoVal: rows[0].MOTIVO,\r\n rowsDetalle: visibleTbDet ? rows : [],\r\n visibleTbDet,\r\n loadingDet: false }); \r\n \r\n });\r\n\r\n\r\n}\r\n\r\naprobar = ()=>{\r\nif (funciones.isEmpty(this.state.idRowSelected))\r\n return;\r\n\r\nthis.setState({ textoConfirm: \"¿Confirma que desea aprobar este documento?\",\r\n openModalConfirm: true });\r\n}\r\n\r\nrechazar = ()=>{\r\nif (funciones.isEmpty(this.state.idRowSelected))\r\n return;\r\n\r\nthis.setState({ textoConfirm: \"Se requiere un comentario acerca del motivo por el cual se rechaza este documento.\",\r\n openModalConfirm: true });\r\n}\r\n\r\nimprimir = ()=>{\r\nif (funciones.isEmpty(this.state.idRowSelected))\r\n return;\r\n\r\ndocument.getElementById(\"BT_APROBAR\").click();\r\n}\r\n\r\ndetalle = ()=>{\r\nif (funciones.isEmpty(this.state.idRowSelected))\r\n return;\r\n\r\nthis.setState({ openModal: true });\r\n}\r\n\r\nactualizar = ()=>{\r\n this.setState({ loadingMain: true }, ()=>{\r\n this.obtener_documentos();\r\n }); \r\n}\r\n\r\nhandleRowClick = (idRow) => event =>{\r\n this.setState({ idRowSelected: idRow });\r\n}\r\n\r\nchangeFilters = filters => { \r\n \r\nif (this.state.idRowSelected !== null)\r\n this.setState({ idRowSelected: null });\r\n \r\n}\r\n\r\nhandleClose = ()=>{\r\nthis.setState({ openModal: false }); \r\n}\r\n\r\nhandleCloseConfirm = ()=>{\r\nthis.setState({ openModalConfirm: false });\r\n}\r\n\r\ngestion_documento = (id_ncd_corr, comentario, tipo)=>{\r\n\r\nnew Request\r\n .post(`${globales.ip}/aplncnd`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .set('Content-Type', 'application/json')\r\n .send({ id_ncd_corr, \r\n comentario, \r\n ad_usuario: tokenInfo.user,\r\n tipo })\r\n .retry(0)\r\n .timeout({ response: 15000, deadline: 30000, }) \r\n .end((err, res) => {\r\n \r\n if (err) { \r\n \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n \r\n window.location.reload();\r\n return;\r\n \r\n }\r\n \r\n this.setState({ openBackDrop: false }, ()=> { \r\n funciones.showToast('e', 'No hay conexión'); \r\n });\r\n \r\n return;\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n \r\n this.setState({ openBackDrop: false }, ()=>{ \r\n \r\n if (rows.length === 0 || rows[0].RESP === undefined){\r\n\r\n if (tipo === 1)\r\n funciones.showToast(\"s\", \"El documento fue aprobado\");\r\n else\r\n funciones.showToast(\"s\", \"El documento fue rechazado\");\r\n\r\n this.setState({ idRowSelected: null, rows });\r\n return;\r\n } \r\n\r\n funciones.showToast(\"w\", rows[0].RESP);\r\n\r\n }); \r\n\r\n});\r\n\r\n}\r\n\r\naceptar = ()=>{\r\n\r\nconst tipo = this.state.textoConfirm.includes(\"aprobar\") ? 1 : 2;\r\nif (tipo === 2 && funciones.isEmpty(this.inputRef.current.value)){\r\n funciones.showToast(\"w\", \"El comentario es necesario para continuar\");\r\n this.inputRef.current.focus();\r\n return; \r\n}\r\n\r\nthis.setState({ openBackDrop: true, openModalConfirm: false }, ()=>{\r\n \r\n const id_ncd_corr = this.state.idRowSelected;\r\n const comentario = tipo === 1 ? null : this.inputRef.current.value.trim();\r\n\r\n this.gestion_documento(id_ncd_corr, comentario, tipo);\r\n})\r\n\r\n\r\n}\r\n\r\nonEnteringConfirm = ()=>{\r\n\r\nconst tipo = this.state.textoConfirm.includes(\"aprobar\") ? 1 : 2;\r\n\r\nif (tipo === 2)\r\n this.inputRef.current.focus();\r\n\r\n}\r\n\r\nonEntering = ()=>{\r\n\r\nthis.setState({ loadingDet: true }, ()=>{\r\n this.obtener_detalle(this.state.idRowSelected);\r\n}); \r\n\r\n}\r\n\r\ncomponentDidMount() { \r\n \r\n tokenInfo = Auth.getProfile(); //Token decodificado\r\n\r\n this.setState({ isLoggin: tokenInfo.plataforma !== undefined ? true : false }, ()=>{ \r\n\r\n if (tokenInfo.plataforma === 1) // Usuario Admin\r\n {\r\n this.obtener_documentos(); \r\n }\r\n \r\n this.setState({ heightTableMain: funciones.getHeightTableMain(movil, this).heightTable }); \r\n\r\n }); \r\n \r\n}\r\n\r\n\r\nrender() {\r\nconst { classes } = this.props;\r\n\r\n if (this.state.isLoggin === true)\r\n {\r\n return (\r\n \r\n \r\n \r\n {\r\n (() => {\r\n \r\n if (tokenInfo.plataforma === 1) //Si es Usuario Admin\r\n {\r\n \r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n Documento\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.loadingDet ?\r\n
\r\n :\r\n <>\r\n Descripción\r\n
{this.state.detVal}
\r\n Motivo\r\n
{this.state.motivoVal}
\r\n
\r\n Doc. afectar\r\n
\r\n \r\n
\r\n
\r\n \r\n } \r\n \r\n \r\n
\r\n\r\n \r\n Documento\r\n \r\n \r\n \r\n \r\n \r\n {this.state.textoConfirm.includes(\"rechaza\") ? \r\n <>\r\n \r\n {this.state.textoConfirm}\r\n \r\n \r\n \r\n : \r\n \r\n {this.state.textoConfirm}\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 Procesando...\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\nelse if (this.state.isLoggin === false)\r\n{\r\n //Auth.logout();\r\n window.location.reload();\r\n return; //(())\r\n}\r\nreturn null;\r\n\r\n}//FIN RENDER\r\n}\r\n\r\n)\r\n","import React from 'react';\r\nimport CustomTable from '../../components/CustomTable';\r\nimport {Table, TableInlineCellEditing, TableSelection} from '@devexpress/dx-react-grid-material-ui';\r\nimport {globales, colores, funciones} from '../../global';\r\nimport AuthService from '../../AuthService';\r\nimport Request from 'superagent';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport BarraBotones from '../../components/Barra_menu';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport * as XLSX from 'xlsx';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Autocomplete, {createFilterOptions} from '@material-ui/lab/Autocomplete';\r\nimport ListSubheader from '@material-ui/core/ListSubheader';\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport Step from '@material-ui/core/Step';\r\nimport StepLabel from '@material-ui/core/StepLabel';\r\nimport StepContent from '@material-ui/core/StepContent';\r\nimport Button from '@material-ui/core/Button';\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\n\r\nlet Auth = new AuthService();\r\nlet tokenInfo = [];\r\n\r\nvar movil=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n\r\nconst styles = theme => ({\r\n\r\ncloseButton: {\r\n position: 'absolute',\r\n right: theme.spacing(1),\r\n top: theme.spacing(1),\r\n color: theme.palette.grey[500],\r\n},\r\npaper: { \r\n borderRadius: globales.border_dialog,\r\n minWidth: !movil ? '1020px' : undefined,\r\n maxWidth: !movil ? '1020px' : undefined,\r\n height: !movil ? '630px' : undefined,\r\n maxHeight: !movil ? '98%' : undefined\r\n},\r\npaperPrecios: { \r\n borderRadius: globales.border_dialog,\r\n minWidth: !movil ? '520px' : undefined,\r\n maxWidth: !movil ? '520px' : undefined,\r\n height: !movil ? \"600px\" : undefined,\r\n maxHeight: !movil ? \"95%\" : undefined\r\n},\r\npaperConfirm: { \r\n borderRadius: globales.border_dialog,\r\n minWidth: '320px', \r\n maxWidth: '320px', \r\n}, \r\nformControlSelect: {\r\n width: '100%', \r\n marginTop: theme.spacing(0), \r\n textAlign: 'left',\r\n},\r\npopper:{ \r\n zIndex: 400500\r\n},\r\ngroupAutocomplete: { \r\n maxHeight: '48px', \r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden'\r\n},\r\nrootSteps: {\r\n width: '100%', \r\n paddingBottom: 0,\r\n marginBottom: 0\r\n},\r\nbutton: {\r\n marginTop: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n},\r\nactionsContainer: {\r\n marginBottom: theme.spacing(0.5),\r\n},\r\nbackdrop: {\r\n zIndex: 500000,\r\n color: '#fff', \r\n flexDirection: 'column'\r\n}, \r\ndivProgress:{\r\n height: '48px',\r\n width: \"100%\",\r\n paddingTop: '20px'\r\n}\r\n});\r\nconst widthTable = !movil ? window.screen.width - (globales.tabla.marginleft + globales.tabla.marginright) : 1336; \r\nlet controlCambiosPrecio = null; \r\nconst steps = ['Validación de datos', 'Crear vista previa de precios', 'Actualizar precios'];\r\n\r\nconst columns = [ \r\n { name: 'ID_PRECIO_CURSO', title: 'ID_PRECIO_CURSO' },\r\n { name: 'CODIGO_CURSO', title: 'Código' },\r\n { name: 'DESCRIPCION_CURSO', title: 'Descripción de curso' },\r\n { name: 'JORNADA', title: 'Jornada' },\r\n { name: 'UV', title: 'Uv' },\r\n { name: 'UVP', title: 'Uvp' },\r\n { name: 'DESCRIPCION_NIVEL', title: 'DESCRIPCION_NIVEL' },\r\n {name: 'ID_CURSO', title: 'ID_CURSO'}, \r\n { name: 'MONEDA', title: 'Moneda' },\r\n { name: 'MONTO', title: 'Monto' },\r\n { name: 'DESCRIPCION_CURSO_COMPLETA', title: 'DESCRIPCION_CURSO_COMPLETA'},\r\n];\r\nconst columnExtensions = [\r\n { columnName: 'CODIGO_CURSO', width: widthTable * 0.08}, \r\n { columnName: 'DESCRIPCION_CURSO', width: widthTable * 0.27 }, \r\n { columnName: 'JORNADA', width: widthTable * 0.15 },\r\n { columnName: 'UV', width: widthTable * 0.08, align: 'center'},\r\n { columnName: 'UVP', width: widthTable * 0.08, align: 'center'},\r\n { columnName: 'MONTO', width: widthTable * 0.10, align: 'center'},\r\n { columnName: 'DESCRIPCION_NIVEL', width: 0}, \r\n { columnName: 'DESCRIPCION_CURSO_COMPLETA', width: 0},\r\n { columnName: 'ID_PRECIO_CURSO', width: 0}, \r\n { columnName: 'MONEDA', width: 0}, \r\n { columnName: 'ID_CURSO', width: 0}, \r\n];\r\nconst grouping = [{ columnName: 'DESCRIPCION_NIVEL' }, {columnName: 'DESCRIPCION_CURSO_COMPLETA'}];\r\n\r\nconst columnsPreView = [ \r\n { name: 'ID_CURSO', title: 'ID' },\r\n { name: 'CODIGO_CURSO', title: 'Código' },\r\n { name: 'DESCRIPCION_CURSO', title: 'Descripción' },\r\n { name: 'JORNADA', title: 'Jornada' },\r\n { name: 'MONEDA', title: 'Moneda' },\r\n { name: 'MONTO_ACTUAL', title: 'Monto actual' },\r\n { name: 'MONTO_NUEVO', title: 'Monto nuevo' },\r\n { name: 'DIFERENCIA', title: 'Diferencia' },\r\n];\r\nconst columnExtensionsPreView = [\r\n { columnName: 'ID_CURSO', width: 65},\r\n { columnName: 'CODIGO_CURSO', width: 95},\r\n { columnName: 'DESCRIPCION_CURSO', width: 290, }, \r\n { columnName: 'JORNADA', width: 160, },\r\n { columnName: 'MONTO_ACTUAL', width: 90, align: 'center'},\r\n { columnName: 'MONTO_NUEVO', width: 90, align: 'center'}, \r\n { columnName: 'DIFERENCIA', width: 75, align: 'right'}, \r\n];\r\nconst columnsJornadas = [\r\n { name: 'ID_JORNADA', title: 'ID_JORNADA' },\r\n { name: 'JORNADA', title: 'Jornada' },\r\n { name: 'UV', title: 'Uv' },\r\n { name: 'UVP', title: 'Uvp' },\r\n { name: 'PRECIO', title: 'Precio Uv' },\r\n { name: 'MONTO', title: 'Monto' },\r\n];\r\nconst columnExtensionsJornadas = [ \r\n { columnName: 'JORNADA', width: 130, },\r\n { columnName: 'UV', width: 50, align: 'center'},\r\n { columnName: 'UVP', width: 50, align: 'center'},\r\n { columnName: 'PRECIO', width: 70, align: 'right'}, \r\n { columnName: 'MONTO', width: 90, align: 'right'}, \r\n];\r\n\r\nconst filterOptionsNivel = createFilterOptions ({ \r\n stringify: option => option.CODIGO_NIVEL + option.DESCRIPCION_NIVEL,\r\n});\r\nconst filterOptions = createFilterOptions ({ \r\n stringify: option => option.CODIGO_CURSO + option.DESCRIPCION_CURSO,\r\n});\r\n\r\nconst RowId = row => row.ID_PRECIO_CURSO;\r\nconst RowIdJornadas = row => row.ID_JORNADA;\r\nconst GroupCellContent = ({ column, row }) => { \r\n return (\r\n {row.value}\r\n );\r\n}\r\nconst VirtualTablePrevView_cellComponent = ({value,...props}) => { \r\n \r\n if (props.column.name === 'MONTO_ACTUAL' || props.column.name === 'MONTO_NUEVO')\r\n {\r\n \r\n return (\r\n
\r\n {props.row.MONEDA + ' ' + funciones.formatCurrency(value)}\r\n
\r\n );\r\n\r\n\r\n }\r\n\r\n return ();\r\n \r\n}\r\nconst TableSelectionCellComponent = ({style, ...props}) =>{\r\n \r\n if (props.row.HAVE_PRECIO === 1 )\r\n {\r\n return(\r\n \r\n );\r\n }\r\n\r\n return (); \r\n}\r\nconst cellsEditingCellComponent = (selection)=>({value, editingEnabled, ...props}) =>{\r\n \r\n const checked = Boolean(selection.find(x => x === props.row.ID_JORNADA));\r\n \r\n return ();\r\n}\r\nconst TableRow = ({ highlighted, rowIndex, row, selectByRowClick, ...props}) => {\r\n \r\n const odd = !!(rowIndex % 2); \r\n \r\n return (\r\n \r\n );\r\n\r\n\r\n} \r\nconst renderGroup = (classesRoot) => (params) => [\r\n \r\n {params.group}\r\n ,\r\n params.children,\r\n];\r\nconst renderOption = (option) => ( \r\n
\r\n
{option.CODIGO_NIVEL}
\r\n {option.DESCRIPCION_NIVEL} \r\n
);\r\nconst renderOptionCurso = (option) => ( \r\n
\r\n
{option.CODIGO_CURSO}
\r\n {option.DESCRIPCION_CURSO} \r\n
);\r\n\r\n\r\nexport default withStyles(styles) ( \r\nclass App extends React.Component {\r\n\r\nfileRef = React.createRef();\r\nbrowseRef = React.createRef();\r\ntablaRef = React.createRef();\r\ntablaVistaPreviaRef = React.createRef();\r\ndialogActionRef = React.createRef();\r\ncarreraRef = React.createRef();\r\ndialogActionJornadasRef = React.createRef();\r\ntablaJornadasRef = React.createRef();\r\n\r\n constructor (props) { \r\n super(props);\r\n this.l=props.l\r\n this.e=props.e\r\n this.i=props.i\r\n this.state = {\r\n isLoggin : undefined,\r\n heightTableMain: 0,\r\n rows:[], \r\n openModalChanges: false,\r\n loadingMain: true, \r\n isReadingFile: false,\r\n isValidFile: false,\r\n msgErrorDataFile: null,\r\n rowsPreView: [],\r\n showTooltipFile: false,\r\n expandedGroups: [],\r\n idRowSelected: null,\r\n openModalPrice: false, \r\n loadingNivel: true,\r\n optionAutocompleteNivel: [], \r\n valueAutoCompleteNivel: null, \r\n loadingCurso: true,\r\n tJornadasHeight: 0,\r\n rowsJornadas: [],\r\n loadingJornada: false,\r\n selection: [],\r\n isSaving: false,\r\n openModalConfirm: false,\r\n optionAutocomplete: [],\r\n valueAutoComplete: null,\r\n activeStep: 0,\r\n info: '',\r\n isPrevView: false,\r\n editingCells: [],\r\n openBackDrop: false,\r\n editMode: false,\r\n };\r\n this.fileSelector = this.buildFileSelector();\r\n this.columnsPrincipals = [];\r\n this.dataset = [];\r\n this.fileSize = null; \r\n this.controlActualizar = false;\r\n this.cursosCollectionFull=[]; \r\n this.botones = [\r\n {icono: 'Add', toolt: 'Agregar precios', nombre: 'Agregar' ,escritura:true, onclick: this.priceEvent, display: 'auto'},\r\n {icono: 'Edit', toolt: 'Modificar precio', nombre: 'Modificar' ,escritura:true, onclick: this.editEvent, display: 'auto'}, \r\n {icono: 'Delete', toolt: 'Eliminar precio', nombre: 'Eliminar' ,escritura:true, onclick: this.deleteEvent, color: colores.naranja, display: 'auto'}, \r\n {icono: 'SwapHoriz', toolt: 'Cambios de precios masivos', nombre: 'Cambios', escritura:true, onclick: this.changesEvent, display: 'auto'},\r\n ];\r\n this.botones_movil = [\r\n {icono: 'Add', toolt: 'Agregar precios', nombre: 'Agregar' ,escritura:true, onclick: this.priceEvent, display: 'auto'},\r\n {icono: 'Edit', toolt: 'Modificar precio', nombre: 'Modificar' ,escritura:true, onclick: this.editEvent, display: 'auto'}, \r\n {icono: 'Delete', toolt: 'Eliminar aula', nombre: 'Eliminar' ,escritura:true, onclick: this.deleteEvent, color: colores.naranja, display: 'auto'}, \r\n ];\r\n this.botones_precio =[\r\n {icono: 'Check', toolt: '', nombre: 'Aceptar', onclick: this.handledOkChanges, display: 'auto'},\r\n {icono: 'Close', toolt: '', nombre: 'Cerrar', onclick: this.handleClosePrice, display:'auto', color: 'red'},\r\n ];\r\n this.botones_eliminar =[\r\n {icono: 'Check', toolt: '', nombre: 'Aceptar', onclick: this.deleteClick , display:'auto'},\r\n {icono: 'Close', toolt: '', nombre: 'Cerrar' , onclick: this.handleCloseDelete, display:'auto', color: 'red'},\r\n ];\r\n this.VirtualTableJornada_cellComponent = ({value, onClick, ...props}) => { \r\n \r\n const {selection} = this.state;\r\n const checked = Boolean(selection.find(x => x === props.row.ID_JORNADA) || props.row.HAVE_PRECIO === 1);\r\n const colorText = checked ? undefined : colores.color_disabled;\r\n\r\n if (props.column.name === 'PRECIO')\r\n {\r\n let regex=/(\\d*.\\d{0,2})/; \r\n \r\n return (\r\n {value.toString().match(regex)[0]}\r\n );\r\n }\r\n \r\n return (\r\n {value}\r\n );\r\n \r\n };\r\n}\r\n \r\nverifications = () => {\r\n\r\n \r\n this.dataset = this.dataset.filter(x => x.filter(y => y !== undefined).length >= 3); //3 columnas Obligatorias\r\n \r\n //console.log(this.state.dataset); \r\n \r\n this.columnsPrincipals = [];\r\n let valoresIncorrectos= [];\r\n\r\n let columnsCount = 0;\r\n let columnsCountVerify = true;\r\n \r\n let msgError_ = '';\r\n let msgError = '';\r\n\r\n //Verifica que tenga los titulos correctos\r\n if (this.dataset.length > 0 ) \r\n {\r\n \r\n if (this.dataset[0].find(x => x !== undefined && x.trim().toUpperCase().replace(' ', '_').replace(' ', '_').split('\\n').join('').split('\\r').join('') === 'ID_CURSO_HIJO')) \r\n {\r\n if (this.dataset[0].filter(x => x.trim().toUpperCase().replace(' ', '_').replace(' ', '_').replace('\\n','').split('\\n').join('').split('\\r').join('') === 'ID_CURSO_HIJO').length === 1)\r\n {\r\n\r\n this.columnsPrincipals.push({ TITLE: 'ID_CURSO_HIJO', INDEX: this.dataset[0].findIndex(x => x !== undefined && x.trim().toUpperCase().replace(' ', '_').replace(' ', '_').split('\\n').join('').split('\\r').join('') === 'ID_CURSO_HIJO') });\r\n \r\n }\r\n else\r\n {\r\n msgError_ = 'El título ID_CURSO_HIJO debe ser único';\r\n }\r\n \r\n }\r\n else\r\n { \r\n\r\n msgError_ = 'No se encontró el título de columna necesaria ID_CURSO_HIJO';\r\n\r\n }\r\n\r\n\r\n if (this.dataset[0].find(x => x !== undefined && x.trim().toUpperCase().replace(' ', '_').split('\\n').join('').split('\\r').join('') === 'ID_JORNADA'))\r\n {\r\n \r\n if (this.dataset[0].filter(x => x.trim().toUpperCase().replace(' ', '_').split('\\n').join('').split('\\r').join('') === 'ID_JORNADA').length === 1)\r\n {\r\n this.columnsPrincipals.push({ TITLE: 'ID_JORNADA', INDEX: this.dataset[0].findIndex(x => x !== undefined && x.trim().toUpperCase().replace(' ', '_').split('\\n').join('').split('\\r').join('') === 'ID_JORNADA') }); \r\n \r\n }\r\n else\r\n {\r\n if (msgError_ === '') { msgError_ = 'El título ID_JORNADA debe ser único'; } \r\n }\r\n\r\n }\r\n else\r\n {\r\n if (msgError_ === '') { msgError_ = 'No se encontró el título de columna necesaria ID_JORNADA'; }\r\n }\r\n \r\n if (this.dataset[0].find(x => x !== undefined && x.trim().toUpperCase().replace(' ', '_').split('\\n').join('').split('\\r').join('') === 'NUEVO_MONTO'))\r\n {\r\n \r\n if (this.dataset[0].filter(x => x.trim().toUpperCase().replace(' ', '_').split('\\n').join('').split('\\r').join('') === 'NUEVO_MONTO').length === 1)\r\n {\r\n this.columnsPrincipals.push({ TITLE: 'NUEVO_MONTO', INDEX: this.dataset[0].findIndex(x => x !== undefined && x.trim().toUpperCase().replace(' ', '_').split('\\n').join('').split('\\r').join('') === 'NUEVO_MONTO') }); \r\n \r\n }\r\n else\r\n {\r\n if (msgError_ === '') { msgError_ = 'El título NUEVO_MONTO debe ser único'; } \r\n }\r\n\r\n }\r\n else\r\n {\r\n if (msgError_ === '') { msgError_ = 'No se encontró el título de columna necesaria NUEVO_MONTO'; }\r\n\r\n }\r\n\r\n\r\n columnsCount = this.dataset[0].length; //console.log(this.columnsPrincipals);\r\n\r\n this.dataset.map((item, index)=>{\r\n \r\n if (index > 0 && columnsCountVerify)\r\n { \r\n\r\n if (columnsCountVerify && columnsCount === item.length)\r\n {\r\n item.map((item2, index2)=>{\r\n \r\n if (this.columnsPrincipals.find(x => x.INDEX === index2)) \r\n { \r\n if ( (this.columnsPrincipals.find(x => x.INDEX === index2).TITLE !== 'NUEVO_MONTO' && (isNaN(item2) || item2.toString().includes('.')) ) || \r\n (this.columnsPrincipals.find(x => x.INDEX === index2).TITLE === 'NUEVO_MONTO' && isNaN(item2))\r\n )\r\n {\r\n valoresIncorrectos.push('El valor ' + item2 + ' en la columna ' + this.columnsPrincipals.find(x => x.INDEX === index2 ).TITLE + ' no es válido');\r\n }\r\n\r\n }\r\n\r\n return item2;\r\n });\r\n\r\n \r\n }\r\n else\r\n { \r\n \r\n columnsCountVerify = false;\r\n }\r\n\r\n\r\n\r\n\r\n\r\n }\r\n \r\n if (index > 0)\r\n {\r\n this.columnsPrincipals.map((item3, index3)=>{\r\n \r\n if (item[item3.INDEX] === undefined)\r\n { \r\n valoresIncorrectos.push('Se encontró un valor vacío en la columna ' + item3.TITLE);\r\n }\r\n\r\n return item3;\r\n });\r\n\r\n }\r\n\r\n \r\n \r\n return item;\r\n\r\n });\r\n\r\n \r\n if (!columnsCountVerify) { \r\n \r\n msgError = 'La cantidad de titulos no coincide con la cantidad de columnas de datos';\r\n \r\n }\r\n else if(valoresIncorrectos.length > 0)\r\n {\r\n msgError = valoresIncorrectos[0].toString();\r\n }\r\n \r\n\r\n }\r\n else\r\n {\r\n msgError_ = 'No se encontrarón los títulos de columnas necesarios';\r\n }\r\n \r\n this.setState({ \r\n isValidFile : (msgError_ === '' && msgError === '') ? true : false,\r\n info: (msgError_ === '' && msgError === '') ? 'El formato de datos es correcto, (' + (parseInt(this.fileSize)/1024).toFixed(2).toString() + ' KB, ' + (parseInt(this.dataset.length) - 1).toString() + ' registro(s)).' : \r\n msgError_ !== '' ? msgError_ + '.' : msgError !== '' ? msgError + '.' : '', \r\n }, ()=>{ \r\n this.setState({ isReadingFile: false }); \r\n });\r\n \r\n\r\n}\r\n\r\nbuildFileSelector = () => {\r\n\r\n const fileSelector = document.createElement('input');\r\n fileSelector.setAttribute('type', 'file');\r\n fileSelector.setAttribute('accept', '.xlsx');\r\n fileSelector.setAttribute('id', 'fileInput');\r\n \r\n var allowedExtension = \".xlsx\";\r\n let _this = this;\r\n \r\n fileSelector.addEventListener(\"change\", function(e) {\r\n\r\n _this.setState({ info: 'Validando datos, por favor espere...', isReadingFile: true })\r\n\r\n var hasInvalidFiles = false;\r\n for (var i = 0; i < this.files.length; i++) {\r\n var file = this.files[i];\r\n \r\n if (!file.name.endsWith(allowedExtension)) {\r\n hasInvalidFiles = true;\r\n }\r\n \r\n }\r\n \r\n \r\n if(hasInvalidFiles) {\r\n fileSelector.value = \"\"; \r\n document.getElementById('fileName').value = \"\"; \r\n _this.dataset= [];\r\n _this.fileSize= null;\r\n _this.setState({ info: ' ', isReadingFile: false }); \r\n funciones.showToast('w', 'Tipo de archivo no soportado');\r\n }\r\n else\r\n {\r\n \r\n if (this.files.length > 0) {\r\n try {\r\n \r\n document.getElementById('fileName').value = this.files[0].name; \r\n \r\n let file = e.target.files[0];\r\n let reader = new FileReader();\r\n \r\n reader.onload = async function (e) {\r\n \r\n let data = new Uint8Array(e.target.result);\r\n \r\n new Promise(async (resolve)=>{ \r\n\r\n resolve(XLSX.read(data, { type: \"array\" }));\r\n\r\n }).then(async (workbook)=>{\r\n \r\n\r\n new Promise(async (resolve)=>{\r\n\r\n resolve(workbook.Sheets[workbook.SheetNames[0]]);\r\n\r\n }).then(async (worksheet)=>{\r\n \r\n new Promise(async (resolve)=>{\r\n\r\n resolve(XLSX.utils.sheet_to_json(worksheet, { header: 1 }));\r\n\r\n }).then(async (sheet)=>{\r\n \r\n _this.dataset = sheet;\r\n _this.fileSize = this.files[0].size;\r\n fileSelector.value = \"\";\r\n _this.verifications(); \r\n\r\n });\r\n\r\n });\r\n \r\n\r\n });\r\n\r\n\r\n }.bind(this);\r\n reader.readAsArrayBuffer(file); \r\n } catch (exception) {\r\n \r\n _this.verifications();\r\n funciones.showToast('e', 'Ha ocurrido un error al leer el archivo');\r\n }\r\n } else if (_this.fileSize === null) {\r\n _this.verifications();\r\n funciones.showToast('w', 'No hay archivo seleccionado');\r\n }\r\n \r\n\r\n\r\n\r\n }\r\n\r\n });\r\n \r\n return fileSelector;\r\n}\r\n\r\nchangesEvent = ()=>{\r\n this.setState({ openModalChanges: true })\r\n}\r\n\r\nopenFileDiaog = (event) => {\r\n\r\n if (this.state.isReadingFile)\r\n { \r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n this.fileSelector.click();\r\n}\r\n\r\nhandleCloseChanges = (event) =>{\r\n\r\n if (this.state.isPrevView || this.state.isPricesChanging || this.state.isReadingFile)\r\n {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n this.setState({ openModalChanges: false }, ()=>{\r\n\r\n this.setState({ isValidFile: false , info: '', activeStep: 0 },()=>{\r\n\r\n this.columnsPrincipals = [];\r\n this.dataset= [];\r\n this.fileSize= null;\r\n this.controlActualizar=false;\r\n\r\n\r\n if (controlCambiosPrecio)\r\n {\r\n this.setState({ loadingMain: true, idRowSelected: null }, ()=> { this.obtenerPreciosCursos(); })\r\n }\r\n\r\n });\r\n \r\n\r\n });\r\n\r\n}\r\n\r\nhandleClosePrice = (event) =>{ \r\n\r\n if (this.state.isSaving)\r\n {\r\n return;\r\n }\r\n\r\n this.setState({ openModalPrice: false }, ()=>{ \r\n \r\n if (controlCambiosPrecio)\r\n {\r\n this.setState({ loadingMain: true, idRowSelected: null }, ()=> { \r\n this.obtenerPreciosCursos(); \r\n });\r\n\r\n }\r\n\r\n });\r\n\r\n}\r\n\r\nonEnteringChanges = () => {\r\n\r\n controlCambiosPrecio = false;\r\n\r\n}\r\n\r\npriceEvent = () => {\r\n \r\n if (this.state.loadingMain || this.state.openModalChanges)\r\n {\r\n return;\r\n }\r\n \r\n this.setState({ valueAutoCompleteNivel: null,\r\n valueAutoComplete: null,\r\n optionAutocomplete: this.cursosCollectionFull,\r\n rowsJornadas: [],\r\n selection: [],\r\n editMode: false, \r\n openModalPrice: true })\r\n \r\n}\r\n\r\nchangeExpandedGroups = expandedGroups =>\r\n{\r\n this.setState({ expandedGroups });\r\n \r\n}\r\n\r\nobtenerPreciosCursos = () =>{\r\n \r\n new Request\r\n .get(`${globales.ip}/precios`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(1)\r\n .timeout({ response: 20000, deadline: 30000, }) \r\n .end((err, res) => {\r\n \r\n if (err) { \r\n\r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n \r\n window.location.reload();\r\n return;\r\n \r\n }\r\n\r\n this.setState({ rows: [], loadingMain: false }, ()=>{ \r\n funciones.showToast('e', 'No hay conexión');\r\n }); \r\n\r\n return;\r\n\r\n }\r\n \r\n let rows = JSON.parse(res.text); \r\n\r\n rows = rows.map((item)=>{\r\n item.MONTO = item.MONEDA + ' ' + funciones.formatCurrency(item.MONTO);\r\n item.DESCRIPCION_CURSO_COMPLETA = item.CODIGO_CURSO + \" - \" + item.DESCRIPCION_CURSO;\r\n return item;\r\n });\r\n\r\n this.setState({ rows, loadingMain: false }); \r\n\r\n}); \r\n\r\n}\r\n\r\nobtenerNiveles = ()=>{\r\n\r\n new Request\r\n .get(`${globales.ip}/precios/niveles`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(1)\r\n .timeout({ response: 15000, deadline: 30000, }) \r\n .end((err, res) => {\r\n \r\n if (err) { \r\n \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n \r\n window.location.reload();\r\n return;\r\n \r\n }\r\n \r\n \r\n this.setState({ loadingNivel: false }, ()=> { \r\n funciones.showToast('e', 'No hay conexión');\r\n }); \r\n \r\n \r\n return;\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n \r\n if (rows.length > 0)\r\n { \r\n \r\n this.setState({ optionAutocompleteNivel: rows, loadingNivel: false }); \r\n \r\n }\r\n else \r\n {\r\n this.setState({ loadingNivel: false });\r\n } \r\n \r\n });\r\n\r\n}\r\n\r\nobtenerCursos = ()=>{\r\n\r\n new Request\r\n .get(`${globales.ip}/precios/cursos/${0}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(1)\r\n .timeout({ response: 15000, deadline: 30000, }) \r\n .end((err, res) => {\r\n \r\n if (err) { \r\n \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n \r\n window.location.reload();\r\n return;\r\n \r\n }\r\n \r\n this.setState({ loadingCurso: false }, ()=>{ \r\n funciones.showToast('e', 'No hay conexión');\r\n }); \r\n \r\n return;\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n \r\n if (rows.length > 0)\r\n { \r\n this.cursosCollectionFull= rows; \r\n this.setState({ optionAutocomplete: rows, loadingCurso: false }); \r\n\r\n }\r\n else\r\n {\r\n this.setState({ loadingCurso: false });\r\n } \r\n \r\n });\r\n\r\n}\r\n\r\nonEnteringPrice = () =>{\r\n\r\nthis.setState({ tJornadasHeight: funciones.getHeightTableDialog(movil, this.tablaJornadasRef, this.dialogActionJornadasRef, !movil ? 7 : 5) }, ()=> { \r\n\r\n controlCambiosPrecio = false;\r\n if (!movil){\r\n document.getElementById(\"precios-cursos\").focus();\r\n }\r\n\r\n if (this.state.editMode)\r\n {\r\n let idCurso = this.state.rows.find(x => x.ID_PRECIO_CURSO === this.state.idRowSelected).ID_CURSO;\r\n let optionSelected = this.state.optionAutocomplete.find(x => x.ID_CURSO === idCurso);\r\n \r\n if (optionSelected !== undefined)\r\n {\r\n this.onChangeAutocomplete(null, optionSelected);\r\n }\r\n else\r\n {\r\n funciones.showToast('w', 'No se encontró el curso entre las opciones');\r\n }\r\n\r\n }\r\n\r\n });\r\n\r\n}\r\n\r\nchangeSelection = selection =>\r\n{ \r\n this.setState({ selection }); \r\n}\r\n\r\ncommitChanges = ({ changed }) => { \r\n\r\n let IdJornada;\r\n let validation = false;\r\n this.state.rowsJornadas.map((item, index) => {\r\n \r\n if (changed[item.ID_JORNADA] !== undefined)\r\n { \r\n IdJornada = item.ID_JORNADA;\r\n\r\n if (!isNaN(changed[item.ID_JORNADA]['PRECIO'].toString().trim()) && changed[item.ID_JORNADA]['PRECIO'].toString().trim().length > 0 )\r\n { \r\n if ((changed[item.ID_JORNADA]['PRECIO'].toString() + \"\").split(\".\")[1] === undefined || (changed[item.ID_JORNADA]['PRECIO'].toString() + \"\").split(\".\")[1].length <= 1)\r\n {\r\n changed[item.ID_JORNADA]['PRECIO'] = parseFloat(changed[item.ID_JORNADA]['PRECIO']).toFixed(2);\r\n }\r\n validation = true; \r\n } \r\n } \r\n return item;\r\n });\r\n \r\n const changedRows = this.state.rowsJornadas.map(row => (changed[row.ID_JORNADA] && validation ? { ...row, ...changed[row.ID_JORNADA] } : row));\r\n this.setState({ rowsJornadas: changedRows}, ()=>{\r\n\r\n if (!validation && IdJornada !== undefined)\r\n {\r\n funciones.showToast('w', 'El precio ingresado para la jornada ' + this.state.rowsJornadas.find(x => x.ID_JORNADA === IdJornada).JORNADA + ' no es válido');\r\n }\r\n else if (IdJornada !== undefined)\r\n {\r\n this.state.rowsJornadas.map((item, index)=>{\r\n\r\n if (item.ID_JORNADA === IdJornada)\r\n { \r\n item.MONTO = parseFloat(parseFloat(item.PRECIO) * parseFloat(item.UVP)).toFixed(2).toString();\r\n }\r\n return item\r\n });\r\n \r\n }\r\n\r\n });\r\n\r\n}\r\n\r\ngestionPrecios = (idCurso, strPrecios, idPrecioCurso, adUsuario, tipoProceso)=>{\r\n\r\nnew Request\r\n.post(`${globales.ip}/precios/operaciones`)\r\n.set({'authorization': 'Bearer ' + Auth.getToken() })\r\n.set('Content-Type', 'application/json')\r\n.send({ id_curso: idCurso, \r\n str_precios: strPrecios, \r\n id_precio_curso: idPrecioCurso, \r\n ad_usuario: adUsuario, \r\n tipo_proceso: tipoProceso })\r\n.retry(0)\r\n.timeout({ response: 25000, deadline: 30000, }) \r\n.end((err, res) => {\r\n \r\n if (err) { \r\n\r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n \r\n window.location.reload();\r\n return;\r\n \r\n }\r\n\r\n this.setState({ isSaving: false, openBackDrop: false }, ()=>{\r\n funciones.showToast('e', 'No hay conexión');\r\n });\r\n \r\n return;\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n\r\n if (rows.length > 0) \r\n { \r\n if (rows[0].RESP === 'OK')\r\n { \r\n\r\n if (tipoProceso === 1)\r\n {\r\n controlCambiosPrecio = true;\r\n\r\n this.state.rowsJornadas.map((item, index)=>{\r\n\r\n\r\n if (this.state.selection.find(x => x === item.ID_JORNADA))\r\n {\r\n item.HAVE_PRECIO = 1;\r\n }\r\n\r\n if (index + 1 === this.state.rowsJornadas.length)\r\n {\r\n this.setState({ selection: [], isSaving: false }, ()=>{\r\n funciones.showToast('s', 'Los precios se han actualizado');\r\n });\r\n }\r\n\r\n return item;\r\n }); \r\n\r\n }\r\n else if (tipoProceso === 2)\r\n { \r\n\r\n this.setState({ rows: this.state.rows.filter(x => x.ID_PRECIO_CURSO !== idPrecioCurso) }, ()=>{\r\n this.setState({ idRowSelected: null, openBackDrop: false },()=>{ \r\n funciones.showToast('s', 'El registro de precio se ha eliminado');\r\n });\r\n });\r\n \r\n }\r\n\r\n }\r\n else\r\n { \r\n\r\n if (tipoProceso === 1)\r\n {\r\n this.setState({ isSaving: false }, ()=>{\r\n funciones.showToast('w', rows[0].RESP);\r\n });\r\n }\r\n else if (tipoProceso === 2)\r\n {\r\n this.setState({ openBackDrop: false }, ()=>{ \r\n funciones.showToast('w', rows[0].RESP);\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\nhandledOkChanges = ()=>{\r\n\r\n if (this.state.isSaving || this.state.loadingJornada)\r\n { return; }\r\n\r\n \r\n if (this.state.valueAutoComplete === null)\r\n {\r\n funciones.showToast('w', 'No se ha especificado el curso'); \r\n document.getElementById(\"precios-cursos\").focus();\r\n return;\r\n } \r\n\r\n if (!this.state.rowsJornadas.find(x => x.HAVE_PRECIO === 1) && this.state.selection.length === 0)\r\n {\r\n funciones.showToast('w', 'No hay datos por actualizar');\r\n return;\r\n }\r\n\r\n this.setState({ isSaving: true }, ()=>{ \r\n\r\n\r\n let strPrecios = '';\r\n\r\n this.state.rowsJornadas.map((item, index)=>{\r\n \r\n if (index + 1 < this.state.rowsJornadas.length)\r\n { \r\n if (item.HAVE_PRECIO === 1 || this.state.selection.find(x => x === item.ID_JORNADA))\r\n {\r\n strPrecios = strPrecios + item.ID_JORNADA + 'y' + item.MONTO + 'z';\r\n }\r\n }\r\n else if (index + 1 === this.state.rowsJornadas.length)\r\n { \r\n if (item.HAVE_PRECIO === 1 || this.state.selection.find(x => x === item.ID_JORNADA))\r\n {\r\n strPrecios = strPrecios + item.ID_JORNADA + 'y' + item.MONTO;\r\n }\r\n else if (strPrecios.length > 0)\r\n {\r\n strPrecios = strPrecios.substr(0, strPrecios.length - 1);\r\n }\r\n \r\n this.gestionPrecios(this.state.valueAutoComplete.ID_CURSO, strPrecios, 0, tokenInfo.user, 1);\r\n }\r\n\r\n return item;\r\n });\r\n\r\n });\r\n\r\n}\r\n\r\ndeleteEvent = ()=>{\r\n\r\nif (this.state.idRowSelected !== null && !this.state.openModalChanges)\r\n this.setState({ openModalConfirm: true });\r\n\r\n}\r\n\r\nhandleCloseDelete = () => { \r\n this.setState({ openModalConfirm: false }); \r\n}\r\n\r\ndeleteClick = ()=>{\r\n \r\nthis.setState({ openBackDrop: true, openModalConfirm: false }, ()=>{ \r\n \r\n this.gestionPrecios(0, '0', this.state.idRowSelected, tokenInfo.user, 2);\r\n \r\n});\r\n\r\n}\r\n\r\nchangeFilters = filters => { \r\n \r\nif (this.state.idRowSelected !== null)\r\n this.setState({ idRowSelected: null });\r\n \r\n}\r\n\r\nonChangeAutocomplete = (event, newValue) =>{\r\n\r\nif (!this.state.loadingNivel && !this.state.loadingCurso && !this.state.loadingJornada)\r\n{\r\n this.setState({ valueAutoComplete: newValue }, ()=>{\r\n \r\n if (newValue === null)\r\n {\r\n this.setState({ rowsJornadas: [], selection: [], editMode: false }); \r\n return;\r\n }\r\n\r\n this.setState({ selection: [], editMode: false, loadingJornada: true }, ()=>{ \r\n \r\n new Request\r\n .get(`${globales.ip}/precios/jornadas/${newValue.ID_CURSO}`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(1)\r\n .timeout({ response: 15000, deadline: 30000, }) \r\n .end((err, res) => {\r\n \r\n if (err) { \r\n \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n \r\n window.location.reload();\r\n return;\r\n \r\n }\r\n \r\n \r\n this.setState({ rowsJornadas: [], loadingJornada: false }, ()=> { \r\n funciones.showToast('e', 'No hay conexión');\r\n }); \r\n \r\n return;\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n \r\n if (rows.length > 0)\r\n { \r\n rows.map((item)=>{\r\n item.PRECIO = parseFloat(item.PRECIO).toString();\r\n if ((item.PRECIO + \"\").split(\".\")[1] === undefined || parseInt((item.PRECIO + \"\").split(\".\")[1]) === 0 || (item.PRECIO + \"\").split(\".\")[1].length <= 1)\r\n {\r\n item.PRECIO = parseFloat(item.PRECIO).toFixed(2).toString();\r\n } \r\n return item;\r\n });\r\n\r\n this.setState({ rowsJornadas: rows, loadingJornada: false }); \r\n \r\n }\r\n else\r\n {\r\n this.setState({ rowsJornadas: [], loadingJornada: 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\nonChangeAutocompleteNivel = (event, newValue) =>{\r\n\r\nthis.setState({ valueAutoCompleteNivel: newValue, valueAutoComplete: null, rowsJornadas: [], selection: [] }, ()=>{\r\n \r\n const id_nivel = newValue !== null ? newValue.ID_NIVEL : 0;\r\n const cursos = id_nivel === 0 ? this.cursosCollectionFull :\r\n this.cursosCollectionFull.filter(x => x.ID_NIVEL === id_nivel);\r\n this.setState({ optionAutocomplete: cursos });\r\n\r\n});\r\n\r\n}\r\n\r\ncreatePrevView = ()=>{\r\n\r\n let strPreciosNuevos=''; let repetidos = []; let sinRepetir = [];\r\n\r\n this.dataset.map((item, index) => {\r\n \r\n if (index > 0)\r\n { \r\n if (index + 1 < this.dataset.length)\r\n { \r\n if (!sinRepetir.find(x => x.ID_CURSO_HIJO === item[this.columnsPrincipals.find(x => x.TITLE === 'ID_CURSO_HIJO').INDEX] && x.ID_JORNADA === item[this.columnsPrincipals.find(x => x.TITLE === 'ID_JORNADA').INDEX]))\r\n {\r\n strPreciosNuevos = strPreciosNuevos + item[this.columnsPrincipals.find(x => x.TITLE === 'ID_CURSO_HIJO').INDEX] + 'x' +\r\n item[this.columnsPrincipals.find(x => x.TITLE === 'ID_JORNADA').INDEX] + 'y' +\r\n item[this.columnsPrincipals.find(x => x.TITLE === 'NUEVO_MONTO').INDEX].toFixed(2).toString() + 'z'\r\n \r\n sinRepetir.push({ ID_CURSO_HIJO: item[this.columnsPrincipals.find(x => x.TITLE === 'ID_CURSO_HIJO').INDEX], ID_JORNADA: item[this.columnsPrincipals.find(x => x.TITLE === 'ID_JORNADA').INDEX], MONTO: item[this.columnsPrincipals.find(x => x.TITLE === 'NUEVO_MONTO').INDEX].toFixed(2) });\r\n\r\n }else { repetidos.push({ ID_CURSO_HIJO: item[this.columnsPrincipals.find(x => x.TITLE === 'ID_CURSO_HIJO').INDEX], ID_JORNADA: item[this.columnsPrincipals.find(x => x.TITLE === 'ID_JORNADA').INDEX], MONTO: item[this.columnsPrincipals.find(x => x.TITLE === 'NUEVO_MONTO').INDEX].toFixed(2) }); }\r\n\r\n }\r\n else if (index + 1 === this.dataset.length)\r\n { \r\n\r\n \r\n strPreciosNuevos = strPreciosNuevos + item[this.columnsPrincipals.find(x => x.TITLE === 'ID_CURSO_HIJO').INDEX] + 'x' +\r\n item[this.columnsPrincipals.find(x => x.TITLE === 'ID_JORNADA').INDEX] + 'y' +\r\n item[this.columnsPrincipals.find(x => x.TITLE === 'NUEVO_MONTO').INDEX].toFixed(2).toString() \r\n \r\n //console.log(strPreciosNuevos); console.log(repetidos);\r\n new Request\r\n .post(`${globales.ip}/precios/nuevos`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .set('Content-Type', 'application/json')\r\n .send({ str_precios_nuevos: strPreciosNuevos, ad_usuario: tokenInfo.user })\r\n .retry(0)\r\n .timeout({ response: 300000, deadline: 300000 }) \r\n .end((err, res) => {\r\n \r\n if (err) { \r\n \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n \r\n window.location.reload();\r\n return;\r\n \r\n } \r\n\r\n this.setState({ isPrevView: false }, ()=>{\r\n funciones.showToast('e', 'No hay conexión');\r\n });\r\n \r\n return;\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n \r\n if (rows.length > 0) \r\n { \r\n if (rows[0].RESP === 'OK')\r\n { \r\n \r\n new Request\r\n .get(`${globales.ip}/precios/nuevos/vista_previa`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .retry(0)\r\n .timeout({ response: 40000, deadline: 120000, }) \r\n .end((err, res) => {\r\n \r\n if (err) { \r\n \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n \r\n window.location.reload();\r\n return;\r\n \r\n }\r\n \r\n this.setState({ isPrevView: false }, ()=>{\r\n funciones.showToast('e', 'No hay conexión');\r\n });\r\n \r\n return;\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n \r\n if (rows.length > 0)\r\n { \r\n \r\n this.setState({ rowsPreView: rows, activeStep: 2 }, ()=>{\r\n \r\n this.setState({ isPrevView : false }, ()=>{\r\n funciones.showToast('i', 'Se recomienda hacer una revisión al alzar de algunos valores en la vista previa.

Cierre este mensaje para continuar', undefined, this.onHidden); \r\n });\r\n\r\n });\r\n\r\n }\r\n else \r\n {\r\n this.setState({ isPrevView: false, rowsPreView: [] });\r\n } \r\n \r\n });\r\n\r\n\r\n\r\n }\r\n else\r\n {\r\n \r\n this.setState({ isPrevView: false }, ()=>{\r\n funciones.showToast('w', rows[0].RESP);\r\n });\r\n\r\n }\r\n }\r\n else \r\n {\r\n this.setState({ isPrevView: false });\r\n } \r\n \r\n });\r\n\r\n }\r\n }\r\n\r\n return item;\r\n\r\n });\r\n\r\n\r\n}\r\n\r\ngetStepContent = (step, isReadingFile, isValidFile) => {\r\n\r\n const aContent = (\r\n Se validarán todos los datos antes de su uso, el tiempo de espera dependerá de la cantidad de los mismos.\r\n \r\n {\r\n\r\n (() => {\r\n\r\n if (!isReadingFile)\r\n {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n else\r\n {\r\n return(
);\r\n }\r\n \r\n })()\r\n } \r\n , \r\n }} \r\n style={{ marginTop: '15px', marginBottom: '10px', width: 450 }}\r\n inputProps={{ style: {cursor: 'default'}, ref: this.fileRef }} \r\n />\r\n
{this.state.info}\r\n \r\n )\r\n\r\n const bContent = (\r\n La vista previa le permitirá realizar una verificación de los precios nuevos con respecto a la precios actuales.\r\n {\r\n (()=>{\r\n \r\n if (this.state.isPrevView)\r\n {\r\n\r\n return (\r\n
\r\n \r\n Preparando vista previa, por favor espere...\r\n \r\n );\r\n\r\n } \r\n else if (!this.state.isPrevView && this.state.activeStep === 1)\r\n { \r\n return (\r\n
\r\n Ocurrió un error al intentar realizar la vista previa de precios.\r\n \r\n )\r\n }\r\n })()\r\n } \r\n \r\n ); \r\n \r\n const cContent = (
\r\n \r\n
\r\n );\r\n \r\n\r\n switch (step) {\r\n case 0:\r\n return aContent;\r\n case 1:\r\n return bContent;\r\n case 2:\r\n return cContent;\r\n default:\r\n return ' ';\r\n }\r\n}\r\n\r\nhandleNext = () => {\r\n\r\n if (this.state.activeStep === 0)\r\n {\r\n if (this.fileSize === null)\r\n {\r\n \r\n return funciones.showToast('w', 'No hay archivo seleccionado');\r\n \r\n }\r\n \r\n if (this.state.isReadingFile)\r\n {\r\n return funciones.showToast('w', 'Procesando datos del archivo...');\r\n }\r\n \r\n if (!this.state.isValidFile)\r\n {\r\n return funciones.showToast('w', 'El archivo no tiene el formato de datos necesario');\r\n }\r\n \r\n \r\n this.setState({ activeStep: 1 }, ()=>{\r\n \r\n this.setState({ isPrevView: true }, ()=>{\r\n\r\n setTimeout(()=>{ \r\n this.createPrevView();\r\n }, 1000); //Un segundo por el efecto del StepContent\r\n\r\n }); \r\n \r\n });\r\n\r\n\r\n }else if (this.state.activeStep === 1)\r\n {\r\n \r\n this.setState({ isPrevView: true }, ()=>{\r\n setTimeout(()=>{ \r\n this.createPrevView();\r\n }, 1000); //Un segundo por el efecto del StepContent\r\n });\r\n \r\n }\r\n else if (this.state.activeStep === 2)\r\n { \r\n\r\n if (this.state.isPricesChanging || !this.controlActualizar)\r\n { \r\n return;\r\n }\r\n\r\n this.setState({ isPricesChanging: true }, ()=>{\r\n\r\n new Request\r\n .post(`${globales.ip}/precios/nuevos/actualizar`)\r\n .set({'authorization': 'Bearer ' + Auth.getToken() })\r\n .set('Content-Type', 'application/json')\r\n .send({ ad_usuario: tokenInfo.user })\r\n .retry(0)\r\n .timeout({ response: 100000, deadline: 30000, }) \r\n .end((err, res) => {\r\n \r\n if (err) { \r\n \r\n if (err.toString().substr(0,16) === 'Error: Forbidden')\r\n {\r\n \r\n window.location.reload();\r\n return;\r\n \r\n }\r\n \r\n this.setState({ isPricesChanging: false }, ()=>{ \r\n funciones.showToast('e', 'No hay conexión');\r\n });\r\n \r\n return;\r\n }\r\n \r\n const rows = JSON.parse(res.text);\r\n \r\n if (rows.length > 0)\r\n { \r\n if (rows[0].RESP === 'OK')\r\n { \r\n controlCambiosPrecio = true;\r\n this.setState({ rowsPreView: [], activeStep: 3, isPricesChanging: false }, ()=>{\r\n funciones.showToast('s', 'Se han actualizado los precios satisfactoriamente'); \r\n }); \r\n }\r\n else\r\n {\r\n \r\n this.setState({ isPricesChanging: false }, ()=>{\r\n funciones.showToast('w', rows[0].RESP); \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\nhandleBack = () => {\r\n \r\n this.setState({ isValidFile: false, info: '', rowsPreView: [], activeStep: 0 }, ()=>{\r\n\r\n this.columnsPrincipals = [];\r\n this.dataset= [];\r\n this.fileSize= null;\r\n this.controlActualizar=false;\r\n\r\n });\r\n}\r\n\r\nhandleRowClick = (idRow) => event => {\r\nthis.setState({ idRowSelected: idRow }); \r\n}\r\n\r\neditEvent = ()=>{\r\n\r\nif (this.state.idRowSelected === null)\r\n{\r\n return;\r\n}\r\n\r\nthis.setState({ valueAutoCompleteNivel: null,\r\n valueAutoComplete: null,\r\n optionAutocomplete: this.cursosCollectionFull,\r\n rowsJornadas: [],\r\n selection: [],\r\n editMode: true, \r\n openModalPrice: true });\r\n\r\n}\r\n\r\nonHidden = ()=>{\r\n if (this.state.activeStep === 2){ this.controlActualizar = true}\r\n}\r\n\r\ncomponentDidMount() { \r\n \r\ntokenInfo = Auth.getProfile(); //Token decodificado\r\n\r\nthis.setState({ isLoggin: tokenInfo.plataforma !== undefined ? true : false }, ()=>{ \r\n \r\n if (tokenInfo.plataforma === 1) // Usuario Admin\r\n {\r\n this.obtenerPreciosCursos(); \r\n }\r\n else if (tokenInfo.plataforma === 2) //Usuario estudiante\r\n {\r\n \r\n }\r\n\r\n this.setState({ heightTableMain: funciones.getHeightTableMain(movil, this).heightTable }); \r\n this.obtenerNiveles();\r\n this.obtenerCursos();\r\n \r\n}); \r\n\r\n}\r\n\r\nrender() {\r\nconst { classes } = this.props;\r\n\r\n if (this.state.isLoggin === true)\r\n {\r\n return (\r\n \r\n \r\n \r\n {\r\n (() => {\r\n \r\n if (tokenInfo.plataforma === 1) //Si es Usuario Admin\r\n {\r\n \r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n Actualización masiva de precios\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {steps.map((label, index) => (\r\n \r\n {label}\r\n \r\n {this.getStepContent(index, this.state.isReadingFile, this.state.isValidFile)}\r\n
\r\n
\r\n \r\n Atrás\r\n \r\n \r\n {this.state.activeStep === steps.length - 1 ? 'Actualizar' : this.state.activeStep === 1 ? 'Reintentar' : 'Siguiente'}\r\n \r\n {(()=>{\r\n\r\n if (this.state.activeStep === 2 && this.state.isPricesChanging)\r\n return()\r\n \r\n })()}\r\n
\r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n {this.state.activeStep === steps.length && (\r\n \r\n
\r\n El proceso de actualización de precios se ha completado con éxito.\r\n \r\n
\r\n
\r\n )} \r\n
\r\n \r\n
\r\n \r\n \r\n Precios\r\n \r\n \r\n \r\n \r\n \r\n option.DESCRIPCION_NIVEL}\r\n renderInput={(params) => \r\n {this.state.loadingNivel ? : null}\r\n {params.InputProps.endAdornment}\r\n
\r\n ),\r\n }}\r\n fullWidth\r\n />}\r\n renderOption={renderOption} \r\n onChange={this.onChangeAutocompleteNivel}\r\n value={this.state.valueAutoCompleteNivel} \r\n classes={{ popper: classes.popper }}\r\n filterOptions={filterOptionsNivel} \r\n\t\t\t\t\t PaperComponent={(props)=>()}\r\n limitTags={8} \r\n /> \r\n a.DESCRIPCION_NIVEL.localeCompare(b.DESCRIPCION_NIVEL)) : this.state.optionAutocomplete}\r\n getOptionLabel={(option) => option.DESCRIPCION_CURSO}\r\n style={{ marginTop: '15px' }}\r\n renderInput={(params) => \r\n {this.state.loadingCurso ? : null}\r\n {params.InputProps.endAdornment}\r\n
\r\n ),\r\n }}\r\n fullWidth\r\n />}\r\n renderOption={renderOptionCurso} \r\n onChange={this.onChangeAutocomplete} \r\n loading = {this.state.loadingCurso}\r\n value={this.state.valueAutoComplete} \r\n classes = {{ popper: classes.popper }}\r\n groupBy={this.state.valueAutoCompleteNivel === null ? (option) => option.DESCRIPCION_NIVEL : undefined} \r\n renderGroup={renderGroup(classes.groupAutocomplete)} \r\n filterOptions={filterOptions}\r\n ListboxProps={{ style: {paddingTop: this.state.valueAutoCompleteNivel === null ? 0 : undefined} }} \r\n PaperComponent={(props)=>()} \r\n /> \r\n\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {(() => {\r\n\r\n if (this.state.isSaving) \r\n return(
\r\n \r\n
);\r\n \r\n return ();\r\n \r\n })()}\r\n
\r\n \r\n \r\n \r\n Precio\r\n \r\n \r\n \r\n \r\n \r\n \r\n ¿Desea eliminar el registro de precio?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Eliminando...\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\nelse if (this.state.isLoggin === false)\r\n{\r\n //Auth.logout();\r\n window.location.reload();\r\n return; //(())\r\n}\r\nreturn null;\r\n\r\n}//FIN RENDER\r\n}\r\n\r\n)\r\n"],"sourceRoot":""}