\r\n }\r\n }\r\n\r\n\r\n return(\r\n \r\n {this.state.op !== null ? Volver al Listado :null}\r\n {recibos} \r\n {blob}\r\n
\r\n )\r\n }\r\n}\r\n\r\nclass TarjetaOp extends Component{\r\n constructor(props){\r\n super(props);\r\n this.state={\r\n nro_op:props.nro_op,\r\n fecha:props.fecha,\r\n }\r\n this.elegir=props.elegir;\r\n }\r\n\r\n render(){\r\n return< Paper style={{display:'inline-block',width:'150px',height:'180px',margin:'5px'}}>\r\n
\r\n \r\n Nº Repa:{this.state.nro_op} \r\n {this.state.fecha} \r\n {\r\n this.elegir(this.state.nro_op)\r\n }\r\n } >\r\n \r\n \r\n
\r\n \r\n }\r\n}\r\n\r\n\r\n\r\nclass AgrupamientoRetenciones extends Component{\r\n constructor(props){\r\n super(props);\r\n this.state={\r\n retenciones:props.retenciones,\r\n nro_op:props.nro_op,\r\n }\r\n this.elegir = props.elegir;\r\n this.volver = props.volver;\r\n }\r\n\r\n componentWillReceiveProps(props){\r\n this.setState({\r\n retenciones:props.retenciones,\r\n nro_op:props.nro_op,\r\n })\r\n }\r\n\r\n render(){\r\n return \r\n
Recibos Asociados al REPA Nº {this.state.nro_op.substr(10)} \r\n
\r\n \r\n {this.state.retenciones.map((elem,ind)=>\r\n )}\r\n
\r\n
\r\n }\r\n}\r\n\r\n\r\nclass TarjetaRecibo extends Component{\r\n constructor(props){\r\n super(props);\r\n this.state={\r\n nro_op:props.nro_op,\r\n fecha:props.fecha,\r\n ejercicio:props.ejercicio,\r\n tipo_deduc:props.tipo_deduc,\r\n codigo_deduc:props.codigo_deduc,\r\n nro_deduc:props.nro_deduc,\r\n tabla:props.tabla,\r\n }\r\n this.elegir = props.elegir;\r\n }\r\n\r\n componentWillReceiveProps(props){\r\n this.setState(\r\n {\r\n nro_op:props.nro_op,\r\n fecha:props.fecha,\r\n ejercicio:props.ejercicio,\r\n tipo_deduc:props.tipo_deduc,\r\n codigo_deduc:props.codigo_deduc,\r\n nro_deduc:props.nro_deduc,\r\n tabla:props.tabla,\r\n }\r\n )\r\n }\r\n\r\n generarArchivo(data){\r\n \r\n let blob = data;\r\n let nombre = this.state.nro_deduc;\r\n let link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = nombre;\r\n link.click();\r\n }\r\n\r\n descargar(archivo){\r\n \r\n \r\n let con = new XMLHttpRequest();\r\n con.open('POST','https://serweb.presidenteperon.gov.ar/provret/comprobantes/devolver',true);\r\n con.responseType = 'blob';\r\n con.onload = function(event){\r\n let blob = con.response;\r\n let nombre = archivo;\r\n let link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = nombre;\r\n link.click();\r\n }\r\n con.setRequestHeader('Content-type','application/json')\r\n con.send(JSON.stringify({'archivo':archivo}));\r\n }\r\n\r\n render(){\r\n return (\r\n \r\n
\r\n \r\n {this.state.tipo_deduc !== 'Comprobante' ? 'Nº Compro:' + this.state.nro_deduc : 'Comprobante'} \r\n {this.state.tipo_deduc} \r\n {this.state.fecha} \r\n {\r\n this.state.tipo_deduc !== 'Comprobante' ? \r\n this.elegir(this.state.nro_op,this.state.codigo_deduc,this.state.ejercicio,this.state.tabla)\r\n :\r\n this.descargar.bind(this)(this.state.nro_deduc) //viene a ser el archivo a descargar\r\n }\r\n } >\r\n \r\n \r\n
\r\n \r\n )\r\n }\r\n \r\n}","import React,{Component} from 'react';\r\nimport {ListItem,List,TextField,Paper,Button,\r\n Typography,Dialog,DialogActions,DialogContent} from '@material-ui/core';\r\nimport DBHandler from '../DBHandler';\r\nimport AddIcon from '@material-ui/icons/Add';\r\n\r\n\r\nlet URLBASE = 'usuarios/';\r\n\r\n\r\nexport default class Listado extends Component{\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n actual:'',\r\n filtro:'',\r\n preFiltro:'',\r\n listado:[],\r\n habilitarEdicion:false,\r\n usuario:props.usuario\r\n }\r\n \r\n this.cargarUsuarios = this.cargarUsuarios.bind(this);\r\n this.actualizarUsuarios = this.actualizarUsuarios.bind(this);\r\n\r\n this.db = new DBHandler();\r\n this.pedirUsuarios.bind(this)();\r\n\r\n }\r\n\r\n pedirUsuarios(){\r\n this.db.enviarPeticion(\r\n this.cargarUsuarios.bind(this),\r\n URLBASE + 'listaEmpleados',\r\n 'POST',\r\n {\r\n usuario:this.state.usuario\r\n }\r\n )\r\n }\r\n\r\n actualizarUsuarios(){\r\n this.pedirUsuarios.bind(this)();\r\n }\r\n\r\n cargarUsuarios(datos){\r\n this.setState({listado:datos,actual:'',habilitarEdicion:false})\r\n }\r\n\r\n funcionEnter(ev){\r\n if(ev.key==='Enter'){\r\n this.setState({\r\n filtro:this.state.preFiltro\r\n });\r\n ev.preventDefault();\r\n }\r\n }\r\n\r\n render(){\r\n\r\n let lista = \r\n \r\n No hay Usuarios Registrados.\r\n \r\n \r\n let limite = 0;\r\n if(this.state.listado.length > 0){\r\n lista = this.state.listado.map((elem,index)=>{\r\n if(elem.usuario.includes(this.state.filtro) && limite < 200){\r\n limite += 1;\r\n return this.setState({actual:elem.usuario,habilitarEdicion:true})}>\r\n {elem.usuario} \r\n \r\n }\r\n })\r\n }\r\n\r\n /*if(this.state.listado.length > 0){\r\n lista = this.state.listado.map((elem,index)=>{\r\n if(elem.usuario.includes(this.state.filtro)){\r\n return this.setState({actual:elem.usuario})}>\r\n {elem.usuario} \r\n }\r\n })\r\n }*/\r\n let edicion = null\r\n if(this.state.habilitarEdicion){\r\n edicion = this.setState({habilitarEdicion:false})}\r\n actualizarLista = {this.actualizarUsuarios} usuario={this.state.actual}/>\r\n }\r\n\r\n let tam = window.innerHeight - 140;\r\n\r\n return (\r\n \r\n
\r\n
\r\n
this.setState({preFiltro:ev.target.value})}\r\n onKeyPress = {this.funcionEnter.bind(this)}\r\n style={{width:'100px'}}\r\n />\r\n\r\n this.setState({\r\n actual:'',\r\n habilitarEdicion:true,\r\n })}\r\n aria-label='add'\r\n >\r\n \r\n \r\n\r\n \r\n
\r\n {lista}\r\n
\r\n
\r\n
\r\n {edicion}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\n\r\n\r\nclass EditarUsuario extends Component{\r\n constructor(props){\r\n\r\n super(props);\r\n\r\n\r\n let editaUsuario = true;\r\n if(props.usuario !== '' ){\r\n editaUsuario = false;\r\n }\r\n\r\n this.state={\r\n usuario:props.usuario,\r\n pass:'',\r\n passViejo:'',\r\n numero:'',\r\n mail:'',\r\n editaUsuario:editaUsuario,\r\n usuarioDisponible:true,\r\n textoError:'',\r\n textoOk:'Proveedor',\r\n nombre:'',\r\n }\r\n\r\n this.actualizarUsuarios = props.actualizarLista\r\n\r\n this.enviarUsuario = this.enviarUsuario.bind(this);\r\n this.cargarUsuario = this.cargarUsuario.bind(this);\r\n this.db = new DBHandler();\r\n\r\n\r\n this.cerrar = props.cerrar;\r\n\r\n if(props.usuario !== ''){\r\n this.pedirUsuario.bind(this);\r\n }\r\n\r\n }\r\n\r\n\r\n pedirUsuario(){\r\n this.db.enviarPeticion(\r\n this.cargarUsuario.bind(this),\r\n URLBASE + 'devolverUsuario',\r\n 'POST',\r\n {\r\n usuario:this.state.usuario\r\n }\r\n )\r\n }\r\n\r\n componentWillReceiveProps(props){\r\n let editaUsuario = true;\r\n if(props.usuario !== '' ){\r\n editaUsuario = false;\r\n }\r\n \r\n \r\n this.setState({\r\n usuario:props.usuario,\r\n pass:'',\r\n passViejo:'',\r\n numero:'',\r\n mail:'',\r\n editaUsuario:editaUsuario,\r\n usuarioDisponible:true,\r\n textoError:'',\r\n textoOk:'Proveedor',\r\n nombre:'',\r\n })\r\n\r\n this.cerrar = props.cerrar;\r\n\r\n if(props.usuario !== ''){\r\n this.pedirUsuario.bind(this);\r\n }\r\n }\r\n\r\n\r\n\r\n cargarUsuario(usuario){\r\n this.setState({\r\n usuario:usuario.usuario,\r\n passViejo:usuario.pass,\r\n numero:usuario.numero,\r\n mail:usuario.mail,\r\n nombre:usuario.nombre,\r\n })\r\n }\r\n\r\n enviarUsuario(){\r\n if(this.state.usuario.replace(' ','').length === 0 \r\n || this.state.pass.length === 0){\r\n return\r\n }\r\n\r\n if(this.state.editaUsuario){\r\n this.db.enviarPeticion(\r\n this.actualizarUsuarios,\r\n URLBASE + 'crearUsuario',\r\n 'POST',\r\n {\r\n usuario:this.state.usuario,\r\n pass:this.state.pass,\r\n numero:this.state.numero,\r\n mail:this.state.mail\r\n })\r\n }\r\n else{\r\n\r\n if(this.state.usuario !== '' && this.state.pass !== ''\r\n && this.state.usuarioDisponible ){\r\n this.db.enviarPeticion(this.cerrar,\r\n URLBASE + 'editarUsuario',\r\n 'POST',\r\n {\r\n usuario:this.state.usuario,\r\n pass:this.state.pass,\r\n numero:this.state.numero,\r\n mail:this.state.mail\r\n }\r\n )\r\n }\r\n }\r\n }\r\n\r\n limpiarBorrado(){\r\n let editaUsuario = true;\r\n \r\n this.setState({\r\n usuario:'',\r\n pass:'',\r\n passViejo:'',\r\n numero:'',\r\n mail:'',\r\n editaUsuario:editaUsuario,\r\n usuarioDisponible:true,\r\n textoError:'',\r\n textoOk:'Proveedor',\r\n nombre:'',\r\n },this.actualizarUsuarios)\r\n\r\n }\r\n\r\n borrarUsuario(){\r\n this.db.enviarPeticion(this.limpiarBorrado.bind(this),\r\n URLBASE + 'borrarUsuario',\r\n 'POST',\r\n {usuario:this.state.usuario})\r\n }\r\n\r\n render(){\r\n\r\n let textoBoton = null;\r\n let botonBorrar = null;\r\n if(this.state.editaUsuario){\r\n textoBoton = 'Crear';\r\n }\r\n else if(!this.state.editaUsuario ){\r\n textoBoton = 'Actualizar';\r\n botonBorrar = Borrar \r\n }\r\n\r\n \r\n\r\n\r\n\r\n let error = false;\r\n let textoError = ''\r\n if(this.state.textoError.length > 0){\r\n error = 1;\r\n textoError = this.state.textoError\r\n }\r\n\r\n return(\r\n \r\n \r\n \r\n {\r\n if(this.state.usuario.replace(' ','').length === 0 ){\r\n return;\r\n }\r\n this.db.enviarPeticion((datos)=>{\r\n if('error' in datos){\r\n this.setState({usuarioDisponible:false,\r\n textoError:datos['error']})\r\n return;\r\n }\r\n this.setState({usuarioDisponible:true,\r\n textoOk:datos['ok']});\r\n },\r\n URLBASE + 'corroborarUsuario',\r\n 'POST',\r\n {usuario:this.state.usuario})\r\n }\r\n }\r\n error={error}\r\n helperText={textoError}\r\n onChange = {(ev)=>this.setState({usuario:ev.target.value,\r\n textoError:'',textoOk:'Proveedor'})}\r\n disabled={!this.state.editaUsuario}\r\n />\r\n this.setState({\r\n pass:ev.target.value\r\n })}\r\n /> \r\n this.setState({\r\n numero:ev.target.value\r\n })} />\r\n this.setState({\r\n mail:ev.target.value\r\n })}\r\n />\r\n
\r\n \r\n \r\n {botonBorrar}\r\n \r\n {textoBoton}\r\n \r\n \r\n \r\n )\r\n }\r\n}","import React,{Component} from 'react';\r\nimport {TextField,Typography,Button,Input,\r\n Table,TableHead,TableBody,TableCell,TableRow\r\n} from '@material-ui/core';\r\n\r\n\r\n\r\nexport default class SubirComprobantes extends Component{\r\n constructor(props){\r\n super(props);\r\n this.state={\r\n archivos:[],\r\n subiendo:false,\r\n actualsubiendo:null,\r\n \r\n\r\n }\r\n }\r\n\r\n enviarArchivo(fun){\r\n var request = new XMLHttpRequest();\r\n request.onreadystatechange = function(){\r\n if(this.readyState === 4 && this.status === 200){\r\n\r\n if(this.responseText.length > 0){\r\n fun(JSON.parse(this.responseText));\r\n }\r\n }\r\n }\r\n request.open('POST','https://serweb.presidenteperon.gov.ar/provret/comprobantes/subir',true);\r\n \r\n let form = new FormData();\r\n let actual = this.state.archivos[ this.state.actualsubiendo ]\r\n form.append(\r\n 'file',\r\n actual.archivo,\r\n actual.nombre)\r\n \r\n request.send(form);\r\n \r\n }\r\n\r\n recibirRespuesta(data){\r\n \r\n let archivos = this.state.archivos;\r\n let actual = this.state.actualsubiendo;\r\n archivos[actual].estado = data.estado;\r\n this.setState({archivos:archivos},\r\n this.state.subiendo === true ? \r\n this.subirArchivos.bind(this)():\r\n null)\r\n }\r\n\r\n saltarArchivo(){\r\n let actual = this.state.actualsubiendo;\r\n let listado = this.state.archivos;\r\n listado[actual].estado = 'No Subido';\r\n this.subirArchivos.bind(this)();\r\n }\r\n\r\n subirArchivos(){\r\n\r\n let actual = this.state.actualsubiendo;\r\n\r\n if(actual === null){\r\n actual = 0;\r\n }\r\n else{\r\n actual += 1;\r\n }\r\n\r\n if(actual >= this.state.archivos.length){\r\n this.setState({\r\n subiendo:false,\r\n actualsubiendo:null\r\n })\r\n return;\r\n }\r\n\r\n this.setState({\r\n subiendo:true,\r\n actualsubiendo:actual\r\n },()=>\r\n this.state.archivos[actual].valido ?\r\n this.enviarArchivo.bind(this)(this.recibirRespuesta.bind(this)):\r\n this.saltarArchivo.bind(this)()\r\n )\r\n\r\n \r\n }\r\n\r\n validar(archivo){\r\n let nombre = archivo.name;\r\n let repa = nombre.substring(0,4);\r\n if (repa.toLowerCase() !== 'repa'){\r\n return {resultado:false};\r\n }\r\n let numero = nombre.split(' ')[0].substring(4)\r\n if( isNaN(parseInt(numero)) ){\r\n return {resultado:false};\r\n } \r\n\r\n let anio = nombre.split(' ')[1]\r\n if( isNaN(parseInt(anio)) ){\r\n return {resultado:false};\r\n }\r\n\r\n numero = parseInt(numero)\r\n if (numero <= 0){\r\n return {resultado:false};\r\n }\r\n\r\n anio = parseInt(anio)\r\n if (anio < 1 || anio > 99){\r\n return {resultado:false};\r\n }\r\n\r\n return {\r\n resultado:true,\r\n anio:anio,\r\n numero:numero,\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n\r\n seleccionarArchivos(lista){\r\n let final = [];\r\n for (let x = 0; x < lista.length; x++){\r\n let conversion = this.validar(lista[x])\r\n final.push({\r\n archivo:lista[x],\r\n nombre:lista[x].name,\r\n estado:'Pendiente',\r\n valido:conversion.resultado,\r\n numero:conversion.numero,\r\n anio:conversion.anio\r\n })\r\n }\r\n\r\n this.setState({\r\n archivos:final\r\n })\r\n }\r\n\r\n render(){\r\n return(\r\n
Subida de Archivos \r\n
\r\n \r\n this.seleccionarArchivos.bind(this)(ev.target.files)}\r\n style={{display:\"none\"}}\r\n >\r\n \r\n \r\n Seleccionar Archivos\r\n \r\n \r\n \r\n
\r\n
\r\n {this.state.archivos.length === 0 ? null :\r\n
\r\n
Archivos seleccionados \r\n\r\n \r\n \r\n
\r\n \r\n \r\n Archivo\r\n \r\n \r\n Valido\r\n \r\n \r\n Estado\r\n \r\n \r\n \r\n
\r\n {this.state.archivos.map((elem,ind)=>\r\n \r\n {elem.nombre}\r\n \r\n \r\n {elem.valido? 'Archivo Válido': 'Archivo no Válido'}\r\n \r\n \r\n {elem.estado}\r\n \r\n )}\r\n \r\n
\r\n
Subir Archivos \r\n
\r\n \r\n }\r\n
\r\n
)\r\n }\r\n}","import React,{Component} from 'react';\r\nimport {TextField,Select,MenuItem,Table,IconButton,Icon,\r\n TableRow,TableHead,TableBody,TableCell,\r\n Button,} from '@material-ui/core';\r\n\r\nimport IIBB from '../pdfs/RetencionIIBB';\r\nimport Ganancias from '../pdfs/RetencionGanancias';\r\nimport SUSS from '../pdfs/RetencionSUSS';\r\n\r\nimport ICONODESCARGA from '@material-ui/icons/ArrowDropDownCircle';\r\nimport DBHandler from '../DBHandler';\r\n\r\nexport default class ListadoRetenciones extends Component{\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n repas:[],\r\n retenciones:{},\r\n seleccionado:null,\r\n }\r\n }\r\n\r\n actualizarDatos(datos){\r\n let repas = datos['repas'];\r\n let retenciones = datos['retenciones']; //diccionario donde el nº de repa es la clave \r\n this.setState({\r\n repas:repas,\r\n retenciones:retenciones\r\n })\r\n }\r\n\r\n seleccionar(muestra){\r\n this.setState({\r\n seleccionado:muestra\r\n })\r\n }\r\n\r\n\r\n render(){\r\n return (\r\n
\r\n {this.state.seleccionado !== null ? \r\n \r\n this.setState({seleccionado:null})}\r\n color='secondary' fullWidth variant='contained'\r\n >volver \r\n {this.state.seleccionado}\r\n
: \r\n }\r\n \r\n )\r\n }\r\n\r\n}\r\n\r\nclass Listado extends Component{\r\n constructor(props){\r\n super(props);\r\n this.state={\r\n repas:props.repas,\r\n retenciones:props.retenciones,\r\n }\r\n this.seleccionar = props.seleccionar;\r\n\r\n }\r\n\r\n componentWillReceiveProps(props){\r\n this.setState({\r\n repas:props.repas,\r\n retenciones:props.retenciones,\r\n })\r\n }\r\n\r\n render(){\r\n return \r\n \r\n
\r\n \r\n \r\n Nº Repa\r\n \r\n \r\n Ejercicio\r\n \r\n \r\n IIBB\r\n \r\n \r\n Ganancias\r\n \r\n \r\n SUSS\r\n \r\n \r\n Comprobantes\r\n \r\n \r\n \r\n
\r\n {this.state.repas.map((elem,ind)=>)}\r\n \r\n
\r\n
\r\n }\r\n}\r\n\r\nclass LineaTabla extends Component{\r\n constructor(props){\r\n super(props);\r\n this.state={\r\n repa:props.repa,\r\n retenciones:props.retenciones\r\n }\r\n this.seleccionar = props.seleccionar;\r\n }\r\n\r\n componentWillReceiveProps(props){\r\n this.setState({\r\n repa:props.repa,\r\n retenciones:props.retenciones\r\n })\r\n }\r\n\r\n descargar(archivo){\r\n \r\n \r\n let con = new XMLHttpRequest();\r\n con.open('POST','https://serweb.presidenteperon.gov.ar/provret/comprobantes/devolver',true);\r\n con.responseType = 'blob';\r\n con.onload = function(event){\r\n let blob = con.response;\r\n let nombre = archivo;\r\n let link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n link.download = nombre;\r\n link.click();\r\n }\r\n con.setRequestHeader('Content-type','application/json')\r\n con.send(JSON.stringify({'archivo':archivo}));\r\n }\r\n\r\n render(){\r\n return \r\n \r\n {this.state.repa.substr(4)}\r\n \r\n \r\n {this.state.repa.substr(0,4)}\r\n \r\n \r\n {this.state.retenciones['IIBB'] !== null ? {\r\n let act = this.state.retenciones['IIBB']\r\n this.seleccionar()}\r\n } >\r\n \r\n :null}\r\n \r\n \r\n {this.state.retenciones['Ganancias'] !== null ? {\r\n let act = this.state.retenciones['Ganancias']\r\n this.seleccionar()}\r\n } >\r\n \r\n :null}\r\n \r\n \r\n {this.state.retenciones['SUSS'] !== null ? {\r\n let act = this.state.retenciones['SUSS']\r\n this.seleccionar()}\r\n } >\r\n \r\n :null}\r\n \r\n \r\n {this.state.retenciones['Comprobantes'].map((elem,ind)=>{this.descargar.bind(this)(elem.nro_deduc)}\r\n } >\r\n \r\n )}\r\n \r\n \r\n }\r\n}\r\n\r\n\r\n\r\nclass Filtrado extends Component{\r\n constructor(props){\r\n super(props);\r\n this.state={\r\n proveedor:'',\r\n desde: new Date().getFullYear() + '-01-01',\r\n hasta:'',\r\n }\r\n this.db = new DBHandler();\r\n this.cargarDatos = props.cargarDatos;\r\n }\r\n\r\n\r\n pedirDatos(){\r\n this.db.enviarPeticion(\r\n this.cargarDatos,\r\n 'retenciones/listaradmin',\r\n 'POST',\r\n {\r\n proveedor:this.state.proveedor,\r\n desde:this.state.desde,\r\n hasta:this.state.hasta,\r\n }\r\n )\r\n }\r\n\r\n render(){\r\n return \r\n this.setState({\r\n proveedor:ev.target.value\r\n })}\r\n >\r\n this.setState({\r\n desde:ev.target.value\r\n })}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n > \r\n this.setState({\r\n hasta:ev.target.value\r\n })}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n > \r\n \r\n Pedir Datos\r\n \r\n
\r\n }\r\n}","import React,{Component} from 'react';\r\nimport {Tab,Tabs,AppBar,TabPanel} from '@material-ui/core';\r\nimport Usuarios from '../Usuarios/ListarUsuarios';\r\nimport Comprobantes from '../Comprobantes/SubirComprobantes';\r\nimport Listado from '../Retenciones/ListarRetencionesAdmi';\r\n\r\nexport default class VistaAdmin extends Component{\r\n constructor(props){\r\n super(props);\r\n this.state={\r\n actual:0,\r\n usuario:props.usuario,\r\n }\r\n }\r\n componentWillReceiveProps(props){\r\n this.setState({\r\n usuario:props.usuario\r\n })\r\n }\r\n\r\n\r\n render(){\r\n return(\r\n
\r\n
this.setState({actual:val})}>\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}","import React from \"react\";\r\nimport {TextField,Paper,Button,AppBar,Grid,Container,\r\n Toolbar,Typography,IconButton} from '@material-ui/core';\r\nimport MenuIcon from '@material-ui/icons/Menu';\r\nimport DBHandler from \"./DBHandler\";\r\nimport ListarRetenciones from './Retenciones/ListarRetenciones'\r\nimport Usuarios from './Admin/VistaAdmin'//'./Usuarios/ListarUsuarios'\r\nimport Logo from './logo_blanco.png';\r\nimport FB from './botones/ico_redes_facebook4.png';\r\nimport IG from './botones/ico_redes_instagram4.png';\r\nimport TW from './botones/ico_redes_twitter4.png';\r\nimport YT from './botones/ico_redes_youtube4.png';\r\n\r\nlet URLBASE = 'usuarios/';\r\n\r\n\r\nclass Login extends React.Component{\r\n\r\n constructor(props){\r\n super(props);\r\n this.db = new DBHandler();\r\n this.state={\r\n us:'',\r\n pas:'',\r\n onLogin:props.onLogin,\r\n error:'',\r\n }\r\n this.enviar_login = this.enviar_login.bind(this)\r\n this.cargar_usuario = this.cargar_usuario.bind(this)\r\n this.actualizarDatos = this.actualizarDatos.bind(this)\r\n this.funcionEnter = this.funcionEnter.bind(this);\r\n }\r\n\r\n enviar_login(){\r\n this.db.enviarPeticion(\r\n this.cargar_usuario,\r\n URLBASE + 'login',\r\n 'POST',\r\n {\r\n usuario:this.state.us,\r\n pass:this.state.pas\r\n });\r\n }\r\n\r\n cargar_usuario(datos){\r\n if('error' in datos){\r\n this.setState({error:datos.error})\r\n return;\r\n }\r\n this.state.onLogin(datos['usuario'],datos['admin'],datos['cambio']) //la posicion 1 es el usuario y la 3 es si es admin. 4 es para saber si cambian contra\r\n }\r\n\r\n funcionEnter(ev){\r\n if(ev.key==='Enter'){\r\n if(this.state.us.length > 0 && this.state.pas.length > 0){\r\n this.enviar_login();\r\n ev.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n actualizarDatos(evento,texto){\r\n let campo = evento.target.name;\r\n this.setState({[campo]:texto});\r\n\r\n }\r\n\r\n render(){\r\n return(\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 this.setState({us:ev.target.value})}\r\n variant='outlined' \r\n fullWidth size=\"small\"\r\n onKeyPress={this.funcionEnter}/>\r\n \r\n this.setState({pas:ev.target.value})} \r\n type='password' variant='outlined' size=\"small\"\r\n fullWidth style={{marginTop:'20px'}}\r\n onKeyPress={this.funcionEnter}/>\r\n \r\n {this.state.error.length !== 0 ? {this.state.error}
:null}\r\n \r\n \r\n Ingresar\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 Avellaneda 51, J.M. Ezeiza \r\n \r\n \r\n Teléfono: 4885-9000 \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\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\nclass CambioPass extends React.Component{\r\n \r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n pass1:'',\r\n pass2:'',\r\n usuario:props.usuario,\r\n error:'',\r\n }\r\n\r\n this.onCambioPass = props.onCambioPass;\r\n this.db = new DBHandler();\r\n\r\n }\r\n\r\n componentWillReceiveProps(props){\r\n this.setState({usuario:props.usuario});\r\n }\r\n\r\n cambiarContra(){\r\n if(this.state.pass1 !== this.state.pass2){\r\n this.setState({error:'Las contraseñas deben ser iguales'});\r\n return;\r\n }\r\n this.db.enviarPeticion(\r\n this.onCambioPass,\r\n URLBASE + 'cambiarContra',\r\n 'POST',\r\n {\r\n pass:this.state.pass1,\r\n usuario:this.state.usuario\r\n }\r\n );\r\n }\r\n\r\n funcionEnter(ev){\r\n if(ev.key==='Enter'){\r\n if( (this.state.pass1.length > 0 && this.state.pass2.length > 0) && (this.state.pass1 === this.state.pass2) ){\r\n this.cambiarContra.bind(this)();\r\n ev.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n render(){\r\n return ( \r\n \r\n
\r\n Cambio de Contraseña
\r\n this.setState({pass1:ev.target.value})}\r\n type='password' variant='outlined'\r\n onKeyPress={this.funcionEnter}/>\r\n \r\n this.setState({pass2:ev.target.value})} \r\n type='password' variant='outlined'\r\n onKeyPress={this.funcionEnter}/>\r\n \r\n {this.state.error.length !== 0 ?{this.state.error} :null}\r\n \r\n \r\n Ingresar\r\n \r\n \r\n
)\r\n }\r\n}\r\n\r\n\r\nexport default class main extends React.Component{\r\n\r\n constructor(props){\r\n super(props);\r\n this.state = {\r\n render:false,\r\n loged:false,\r\n usuario:'',\r\n admin:false,\r\n cambioPass:false,\r\n cuit:null,\r\n }\r\n this.logueado = this.logueado.bind(this);\r\n }\r\n\r\n\r\n cambioPass(){\r\n this.setState({\r\n cambioPass:false\r\n })\r\n }\r\n\r\n\r\n ver_cookie(datos){\r\n document.cookie = \"auth=\"+datos[\"token\"] + \";\";\r\n this.setState({render:true});\r\n }\r\n\r\n logueado(usuario,admin,cambioPass){\r\n this.setState({\r\n loged:true,\r\n render:true,\r\n usuario:usuario,\r\n admin:admin === 1 ? true:false,\r\n cambioPass:cambioPass === 1 ? true:false,\r\n cuit:usuario,\r\n });\r\n }\r\n\r\n\r\n\r\n render(){\r\n\r\n \r\n if(this.state.loged === false){\r\n return()\r\n }\r\n else if(this.state.cambioPass === true){\r\n return ()\r\n }\r\n \r\n else if(this.state.admin){\r\n return()\r\n }\r\n else{\r\n return()\r\n }\r\n }\r\n}\r\n\r\nconst styles = {\r\n root: {\r\n flexGrow: 1,\r\n },\r\n flex: {\r\n flex: 1,\r\n },\r\n menuButton: {\r\n marginLeft: -12,\r\n marginRight: 20,\r\n },\r\n };\r\n \r\n\r\nclass Menu extends React.Component{\r\n constructor(props){\r\n super(props);\r\n this.state={\r\n abierto:false,\r\n titulo:props.titulo,\r\n }\r\n\r\n }\r\n\r\n componentWillReceiveProps(props){\r\n this.setState({titulo:props.titulo})\r\n }\r\n\r\n render(){\r\n return(\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.titulo}\r\n \r\n \r\n \r\n )\r\n }\r\n}\r\n\r\n\r\nfunction limpiarCont(){\r\n let cont = document.getElementById(\"main\");\r\n let cant = cont.childNodes.length;\r\n for(let x = 0; x< cant; x++){\r\n cont.removeChild(cont.childNodes[0]);\r\n }\r\n\r\n}\r\n","import React from 'react';\r\nimport logo from './logo.svg';\r\nimport './App.css';\r\nimport Header from './app/main';\r\nimport Prueba from './app/pdfs/TasaMunicipalEzeiza'\r\n\r\n\r\nfunction App() {\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = __webpack_public_path__ + \"static/media/firma.23c7f1c7.jpeg\";"],"sourceRoot":""}