{"version":3,"sources":["auth/AuthProvider.js","auth/useAuth.js","components/ui/Navbar.js","routers/PrivateRoute.js","routers/PublicRoute.js","services/Alert.js","components/pages/LoginPage.js","assets/img/menu/invoice.svg","assets/img/menu/quotation.svg","components/pages/HomePage.js","components/pages/UploadPage.js","components/codes/NotFoundPage.js","assets/img/download.svg","components/pages/AcusePage.js","services/Funciones.js","components/pages/PricePage.js","components/pages/PriceIdPage.js","routers/AppRouter.js","App.js","index.js"],"names":["cookies","Cookies","AuthContext","createContext","AuthProvider","children","useState","JSON","parse","localStorage","getItem","user","setUser","get","token","setToken","errmsg","setErrmsg","config","setconfig","getData","datacnf","a","BaseUrl","baseUrl","AppId","appId","tkid","data","apikey","action","provider","password","axios","post","then","response","datos","type","resultado","usuario","descripcion","tabla","clave","login","set","path","code","message","catch","error","console","log","getConfig","headers","conf","setItem","stringify","errd","useEffect","remove","sesion","errclear","userval","usertk","logout","removeItem","isLogged","Provider","value","useAuth","useContext","Navbar","auth","className","to","src","width","height","class","alt","id","exact","activeClassName","toUpperCase","onClick","PrivateRoute","Component","component","rest","location","useLocation","pathname","state","from","PublicRoute","Alert","msg","opts","optsDef","position","autoClose","theme","notifyval","toast","info","success","warn","LoginPage","history","useHistory","prevObjectUrl","form","LoginUser","LoginPass","errorMsg","setState","handleChange","evt","target","checked","name","onSubmit","e","preventDefault","userdata","push","placeholder","onChange","htmlFor","href","HomePage","logo_xml","logo_price","UploadPage","loading","files","setstate","addList","objNew","bEncontrado","length","iList","tmpArchivo","method","undefined","replaceAll","tmpArchivos","cambiado","forEach","element","i","folio","handleSubmit","accept","multiple","objFiles","Array","archivo","reader","FileReader","readAsDataURL","onload","auxb64","result","split","idFile","miarchivo","size","handleChangeFile","disabled","role","map","row","toFixed","splice","handleRemove","NotFoundPage","AcusePage","useParams","folioQ","URLSearchParams","search","acuse","totales","total","importe","mensaje","cargado","toCurrency","val","dec","parseFloat","toString","listacuse","itotales","documento","rfc_emisor","empresa","fecha","alta","align","rel","logo_down","style","colSpan","Funciones","toNumber","toDate","dateString","formatChar","sepChar","staDate","Date","date","getDate","month","getMonth","year","getFullYear","newdate","ex","this","getDMY","ndate","PricePage","fun","cotizacion","listcotizacion","vencimiento","sucursal","comentario","productos","estado","PriceIdPage","folio_lista","setproductos","startDate","setStartDate","file","setfile","valor","replace","tmpProductos","precio","readFile","f","bstr","wb","XLSX","wsname","SheetNames","ws","Sheets","sheet_to_csv","header","finalFile","convertToJson","readAsBinaryString","csv","lines","obj","currentline","j","cotizacionobj","comprador","dateFormat","selected","handleChangeFecha","stopPropagation","bind","json_to_sheet","excelBuffer","bookType","Blob","saveAs","exportToCSV","talla","color","unidad","cantidad","backgroundColor","border","showError","msgError","AppRouter","basename","App","ReactDOM","render","document","getElementById"],"mappings":"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","file":"static/js/main.837d0e7e.chunk.js","sourcesContent":["import { createContext, useState, useEffect } from \"react\";\r\nimport axios from \"axios\";\r\nimport Cookies from \"universal-cookie\";\r\n\r\nconst cookies = new Cookies();\r\n\r\nexport const AuthContext = createContext();\r\n\r\nexport const AuthProvider = ({children}) => {\r\n\r\n const [user, setUser] = useState(JSON.parse(localStorage.getItem('usprovdb')) || null);\r\n const [token, setToken] = useState(cookies.get('pvckid') || '');\r\n const [errmsg, setErrmsg] = useState('');\r\n const [config, setconfig] = useState({});\r\n \r\n const getData = async (datacnf) => {\r\n var BaseUrl = datacnf.baseUrl || 'http://localhost/wservices/';\r\n var AppId = datacnf.appId || '';\r\n var tkid = cookies.get('pvckid');\r\n \r\n try{\r\n const data = {\r\n apikey: AppId || '',\r\n action: 'login',\r\n provider: 'proveedor',\r\n data: {\r\n tkid: tkid || '',\r\n user: '',\r\n password: ''\r\n }\r\n }\r\n \r\n //Limpiamos el error\r\n setErrmsg('');\r\n \r\n await axios.post(BaseUrl, data)\r\n .then(response => {\r\n return response.data\r\n })\r\n .then(datos => {\r\n //console.log('Login automatico'); \r\n \r\n if((datos.type || '') === ''){\r\n setErrmsg('No hubo respuesta del servidor');\r\n return;\r\n }\r\n \r\n //Ya tenemos una respuesta valida, ahora la procesamos\r\n if(datos.type === 'error'){\r\n setErrmsg('No hay conexion 1, ' + datos.code + ' - ' + datos.message);\r\n return;\r\n }\r\n \r\n const resultado = datos.data || {};\r\n setUser({\r\n usuario: resultado.usuario || '',\r\n descripcion: resultado.descripcion || '',\r\n tabla: resultado.tabla || '',\r\n clave: resultado.clave || '',\r\n login: true\r\n });\r\n \r\n cookies.set('pvckid',resultado.tkid, { path: '/' });\r\n //console.log('Login correcto');\r\n }).catch(error => {\r\n console.log(error);\r\n setErrmsg('Error desconocido');\r\n });\r\n }catch(error){\r\n console.log(error);\r\n setErrmsg('Error al consultar datos');\r\n }\r\n }\r\n\r\n const getConfig = async() => {\r\n \r\n await axios.get('./assets/config/config.json', {headers:{\r\n 'Content-Type':'application/json',\r\n 'Accept': 'application/json'\r\n }})\r\n .then(response => {\r\n const conf = response.data;\r\n setconfig(conf);\r\n getData(conf);\r\n localStorage.setItem('config',JSON.stringify(conf));\r\n }).catch(error => {\r\n const errd = { baseUrl: 'http://localhost/wservices/', appId: '' };\r\n setconfig(errd);\r\n getData(errd);\r\n });\r\n }\r\n\r\n useEffect(() => { \r\n try{\r\n getConfig();\r\n }catch(error){\r\n localStorage.remove('usprovdb');\r\n }\r\n }, []);\r\n\r\n const sesion = {\r\n user,\r\n errmsg,\r\n token,\r\n config,\r\n errclear(){\r\n setErrmsg('');\r\n },\r\n login(){ \r\n var userval = JSON.parse(localStorage.getItem(\"usprovdb\")) || null;\r\n var usertk = cookies.get('pvckid') || '';\r\n setUser(userval);\r\n setToken(usertk);\r\n },\r\n logout(){\r\n localStorage.removeItem('usprovdb');\r\n cookies.remove('pvckid');\r\n setUser(null);\r\n setToken('');\r\n },\r\n isLogged(){\r\n return !!user;\r\n }\r\n }\r\n \r\n return \r\n {children}\r\n \r\n}\r\n","import { useContext } from 'react'\r\nimport { AuthContext } from './AuthProvider';\r\n\r\nexport const useAuth = () => {\r\n const contextValue = useContext(AuthContext);\r\n return contextValue;\r\n}\r\n","import React from 'react';\r\nimport { Link, NavLink } from 'react-router-dom';\r\nimport { useAuth } from '../../auth/useAuth';\r\n\r\nexport const Navbar = () => {\r\n \r\n const auth = useAuth();\r\n\r\n return (\r\n \r\n )\r\n}","import React from 'react'\r\nimport { Redirect, Route, useLocation } from 'react-router'\r\nimport { useAuth } from '../auth/useAuth';\r\n\r\nexport const PrivateRoute = ( { component: Component, ...rest }) => {\r\n\r\n const auth = useAuth();\r\n const location = useLocation();\r\n\r\n return (\r\n { auth.isLogged() ? () : () }\r\n )\r\n}\r\n","import React from 'react'\r\nimport { Redirect, Route, useLocation } from 'react-router'\r\nimport { useAuth } from '../auth/useAuth';\r\n\r\nexport const PublicRoute = ( { component: Component, ...rest }) => {\r\n\r\n const auth = useAuth();\r\n const location = useLocation();\r\n \r\n return (\r\n { !auth.isLogged() ? () : () }\r\n )\r\n}\r\n","import { toast } from 'react-toastify';\r\n\r\nexport function Alert(msg, type = '', opts){\r\n var optsDef = {\r\n ...opts,\r\n position: \"top-center\",\r\n autoClose: 8000,\r\n theme: 'colored'\r\n }\r\n\r\n const notifyval = () => {\r\n switch (type) {\r\n case 'error':\r\n toast.error(msg, optsDef);\r\n break;\r\n case 'info':\r\n toast.info(msg, optsDef);\r\n break;\r\n case 'success':\r\n toast.success(msg, optsDef);\r\n break;\r\n case 'warning':\r\n toast.warn(msg, optsDef);\r\n break;\r\n default:\r\n toast(msg, optsDef);\r\n break;\r\n }\r\n }\r\n notifyval();\r\n}","import React, { useState } from 'react';\r\nimport { useHistory, useLocation } from 'react-router';\r\nimport axios from 'axios';\r\nimport Cookies from 'universal-cookie';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport { Alert } from '../../services/Alert';\r\n\r\nimport { useAuth } from '../../auth/useAuth';\r\n\r\nconst cookies = new Cookies();\r\n\r\nexport const LoginPage = () => {\r\n \r\n const auth = useAuth();\r\n \r\n const history = useHistory();\r\n const location = useLocation();\r\n const prevObjectUrl = location.state?.from;\r\n\r\n const [state, setState] = useState({\r\n form:{\r\n LoginUser:'',\r\n LoginPass:'',\r\n },\r\n error:false,\r\n errorMsg:''\r\n });\r\n\r\n const handleLogin = (e) => {\r\n e.preventDefault();\r\n\r\n const getData = async() => {\r\n const config = JSON.parse(localStorage.getItem('config'));\r\n const BaseUrl = config.baseUrl || 'http://localhost/wservices/';\r\n const AppId = config.appId ||'';\r\n \r\n try{\r\n //console.log(state);\r\n const data = {\r\n apikey: AppId || '',\r\n action: 'login',\r\n provider: 'proveedor',\r\n data: {\r\n tkid: '', \r\n user: state.form.LoginUser, \r\n password: state.form.LoginPass \r\n }\r\n }\r\n \r\n await axios.post(BaseUrl, data)\r\n .then(response => {\r\n return response.data\r\n })\r\n .then(datos => {\r\n \r\n if((datos.type || '') === ''){\r\n Alert('Advertencia: No hubo respuesta del servidor','warning',{});\r\n return;\r\n }\r\n \r\n //Ya tenemos una respuesta valida, ahora la procesamos\r\n if(datos.type === 'error'){\r\n Alert('Advertencia: '+ datos.code + ' - ' + datos.message,'warning',{});\r\n return;\r\n }\r\n \r\n const resultado = datos.data || {};\r\n \r\n const userdata = {\r\n usuario: resultado.usuario || '',\r\n descripcion: resultado.descripcion || '',\r\n tabla: resultado.tabla || '',\r\n clave: resultado.clave || '',\r\n login: true\r\n }\r\n\r\n localStorage.setItem('usprovdb',JSON.stringify(userdata));\r\n cookies.set('pvckid',resultado.tkid, { path: '/' });\r\n auth.login();\r\n \r\n if(!auth.isLogged()){\r\n //setError('Login correcto: ' + auth.isLogged());\r\n history.push(prevObjectUrl || '/');\r\n }else{\r\n Alert('Datos de usuario no validos: ' + auth.isLogged(),'warning',{});\r\n }\r\n\r\n }).catch(error => {\r\n Alert('Error: '+error.message,'error',{});\r\n });\r\n }catch(error){\r\n Alert('Error: '+error.message,'error',{});\r\n }\r\n }\r\n\r\n getData();\r\n \r\n }\r\n\r\n const handleChange = async (evt) => {\r\n const value = (evt.target.type === \"checkbox\" || evt.target.type === \"radio\") ? evt.target.checked : evt.target.value;\r\n setState({\r\n form:{\r\n ...state.form,\r\n [evt.target.name]: value\r\n }\r\n });\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Iniciar sesió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

¿No tienes una cuenta? Contactanos

\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n )\r\n}\r\n","export default __webpack_public_path__ + \"static/media/invoice.60a89613.svg\";","export default __webpack_public_path__ + \"static/media/quotation.64bca11e.svg\";","import React from 'react';\r\nimport { useAuth } from '../../auth/useAuth';\r\nimport { Alert } from '../../services/Alert';\r\nimport { ToastContainer } from 'react-toastify';\r\n\r\nimport logo_xml from '../../assets/img/menu/invoice.svg';\r\nimport logo_price from '../../assets/img/menu/quotation.svg';\r\nimport { NavLink } from 'react-router-dom';\r\n\r\nexport const HomePage = () => {\r\n\r\n const user = useAuth();\r\n\r\n if(user.errmsg !== ''){\r\n Alert(user.errmsg,'error',{});\r\n user.errclear();\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

Bienvenido { user.user.usuario }

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \"Subir\r\n
\r\n
\r\n

Subir facturas

\r\n
\r\n
\r\n
\r\n
\r\n {\r\n user.user.tabla.toUpperCase()==='PROVEEDOR'?(\r\n
\r\n \r\n
\r\n
\r\n \"Subir\r\n
\r\n
\r\n

Cotizaciones

\r\n
\r\n
\r\n
\r\n
\r\n ):''\r\n }\r\n
\r\n \r\n
\r\n )\r\n}","import React, { useState } from 'react';\r\nimport { useAuth } from '../../auth/useAuth';\r\nimport { Alert } from '../../services/Alert';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport axios from 'axios';\r\nimport { useHistory } from 'react-router';\r\n\r\nexport const UploadPage = () => {\r\n\r\n const history = useHistory();\r\n const [state, setstate] = useState({loading:false, files:[]})\r\n const user = useAuth();\r\n const config = user.config;\r\n \r\n if(user.errmsg !== ''){\r\n Alert(user.errmsg,'error',{});\r\n user.errclear();\r\n }\r\n\r\n const addList = (objNew) => {\r\n var bEncontrado = false;\r\n \r\n if(state.files.length >= 10){\r\n Alert('Se ha excedido el maximo de XML a subir','warning',{});\r\n return;\r\n }\r\n\r\n for (let iList = 0; iList < state.files.length; iList++) {\r\n const element = state.files[iList];\r\n\r\n if(element.name === objNew.name){\r\n bEncontrado = true;\r\n }\r\n }\r\n\r\n if(!bEncontrado){\r\n let tmpArchivo = state.files;\r\n tmpArchivo.push(objNew);\r\n setstate({...state, files: tmpArchivo});\r\n }\r\n }\r\n\r\n const handleRemove = (id) => {\r\n let tmpArchivo = state.files;\r\n \r\n for (let iList = 0; iList < tmpArchivo.length; iList++) {\r\n const element = tmpArchivo[iList];\r\n\r\n if(element.id === id){\r\n tmpArchivo.splice(iList,1);\r\n }\r\n }\r\n setstate({...state, files: tmpArchivo});\r\n }\r\n\r\n const handleChangeFile = (e) => {\r\n let objFiles = e.target.files;\r\n \r\n Array.from(objFiles).forEach( async (archivo) => {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(archivo);\r\n reader.onload=function(){\r\n var auxb64=[];\r\n var base64 = reader.result;\r\n auxb64= base64.split(',');\r\n\r\n var idFile = 1;\r\n if(state.files.length>=1){\r\n idFile = state.files[state.files.length - 1].id + 1;\r\n }\r\n\r\n let miarchivo = {id: idFile, name: archivo.name, size: archivo.size, type: archivo.type, data: auxb64[1], error:'' };\r\n addList(miarchivo);\r\n }\r\n });\r\n }\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n \r\n setstate({...state, loading: true });\r\n\r\n const getData = async() => {\r\n \r\n const BaseUrl = config.baseUrl || 'http://localhost/wservices/';\r\n const AppId = config.appId ||'';\r\n \r\n try{\r\n //console.log(state);\r\n const data = {\r\n apikey: AppId || '',\r\n action: 'subirxml',\r\n provider: 'proveedor',\r\n data: {\r\n tabla: user.user.tabla || '',\r\n clave: user.user.clave || '', \r\n usuario: user.user.usuario || '', \r\n files: state.files || [] \r\n }\r\n }\r\n \r\n await axios.post(BaseUrl, data,{ headers: {'Content-Type': 'application/json'}})\r\n .then(response => {\r\n\r\n let data = response.data;\r\n let jsonData = {}\r\n if(data.type===undefined){\r\n data = data.replaceAll('\\\\r\\\\n',' ')\r\n data = data.replaceAll(\"\\\\'\",' ')\r\n }\r\n jsonData = data;\r\n \r\n return jsonData\r\n })\r\n .then(datos => {\r\n setstate({...state, loading: false });\r\n \r\n if((datos.type || '') === ''){\r\n console.log(datos.type);\r\n Alert('Advertencia: No hubo respuesta del servidor','warning',{});\r\n return;\r\n }\r\n \r\n //Ya tenemos una respuesta valida, ahora la procesamos\r\n if(datos.type === 'error'){\r\n Alert('Advertencia: '+ datos.code + ' - ' + datos.message,'warning',{});\r\n return;\r\n }\r\n \r\n const resultado = datos.data || {};\r\n \r\n if(resultado.files !== undefined){\r\n if(resultado.files.length){\r\n let tmpArchivos = state.files;\r\n let cambiado = false;\r\n //Procesamos para mostrar los errores en los archivos correctos\r\n resultado.files.forEach(element => {\r\n for(var i = 0; i < tmpArchivos.length; i++){\r\n if(tmpArchivos[i].name.toUpperCase()===element.name.toUpperCase()){\r\n tmpArchivos[i].error = element.message;\r\n cambiado = true;\r\n }\r\n }\r\n });\r\n\r\n if(cambiado){\r\n setstate({ ...state, files: tmpArchivos});\r\n }\r\n }\r\n }\r\n\r\n if(resultado.folio===''){\r\n Alert('La carga de archivos tuvo problemas, revisar los detalles en la lista de archivos','warning',{});\r\n return;\r\n }\r\n\r\n setstate({...state,files: [], folio: resultado.folio });\r\n\r\n Alert('Archivos subidos con exito','info',{});\r\n history.push('/acuse/' + (resultado.folio || ''));\r\n \r\n }).catch(error => {\r\n setstate({...state, loading: false });\r\n Alert('Error: '+error.message,'error',{});\r\n console.log(error);\r\n });\r\n }catch(error){\r\n setstate({...state, loading: false });\r\n Alert('Error: '+error.message,'error',{});\r\n }\r\n }\r\n\r\n getData();\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

Subir facturas

\r\n
\r\n
\r\n
handleSubmit(e)}>\r\n
\r\n \r\n handleChangeFile(e)} />\r\n
\r\n \r\n
\r\n
\r\n
    \r\n {\r\n state.files.map(row => (\r\n
  • \r\n { row.name || 'fake.xml' } ( { ((row.size || 0) / 1024).toFixed(0) } KB)
    { row.error }\r\n handleRemove(row.id) }\r\n >Eliminar\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\n\r\nexport const NotFoundPage = () => {\r\n return (\r\n
\r\n
\r\n

Pagina no encontrada

\r\n
\r\n
\r\n )\r\n}\r\n","export default __webpack_public_path__ + \"static/media/download.3dbbe2f2.svg\";","import React, { useEffect, useState } from 'react'\r\nimport { useParams, useLocation } from 'react-router-dom'\r\nimport axios from 'axios';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport { Alert } from '../../services/Alert';\r\n\r\nimport { useAuth } from '../../auth/useAuth';\r\nimport logo_down from '../../assets/img/download.svg';\r\n\r\nexport const AcusePage = () => {\r\n\r\n const auth = useAuth();\r\n \r\n //Parametros por url\r\n const { folio } = useParams();\r\n \r\n //Parametros por query\r\n const location = useLocation();\r\n const query = new URLSearchParams(location.search);\r\n const folioQ = query.get('folio') || '';\r\n\r\n const [state, setstate] = useState({\r\n acuse:[],\r\n totales:{\r\n total: 0,\r\n importe:0\r\n },\r\n folio: folio || folioQ,\r\n mensaje: '',\r\n cargado: false,\r\n config: JSON.parse(localStorage.getItem('config'))\r\n })\r\n\r\n const loadAcuseList = () => {\r\n \r\n const getData = async() => {\r\n const config = JSON.parse(localStorage.getItem('config'));\r\n const BaseUrl = config.baseUrl || 'http://localhost/wservices/';\r\n const AppId = config.appId ||'';\r\n\r\n if(AppId===''){\r\n //Volvemos a llamar la funcion hasta acabar\r\n //reloadAcuse();\r\n return;\r\n }\r\n \r\n try{\r\n //console.log(state);\r\n const data = {\r\n apikey: AppId || '',\r\n action: 'GetAcuse',\r\n provider: 'proveedor',\r\n data: {\r\n usuario: auth.user.usuario,\r\n tabla: auth.user.tabla,\r\n clave: auth.user.clave,\r\n folio: state.folio!==''?state.folio:'%'\r\n }\r\n }\r\n \r\n await axios.post(BaseUrl, data)\r\n .then(response => {\r\n return response.data\r\n })\r\n .then(datos => {\r\n \r\n if((datos.type || '') === ''){\r\n Alert('Advertencia: No hubo respuesta del servidor','warning',{});\r\n return;\r\n }\r\n \r\n //Ya tenemos una respuesta valida, ahora la procesamos\r\n if(datos.type === 'error'){\r\n Alert('Advertencia: '+ datos.code + ' - ' + datos.message,'warning',{});\r\n return;\r\n }\r\n \r\n const resultado = datos.data || {};\r\n \r\n let listacuse = resultado.acuse || [];\r\n let itotales = {\r\n total:0,\r\n importe:0\r\n }\r\n\r\n listacuse.forEach(element => {\r\n itotales.total++;\r\n itotales.importe+=parseFloat(element.importe || 0)\r\n });\r\n \r\n setstate({\r\n ...state, \r\n acuse: listacuse, \r\n totales: itotales, \r\n mensaje: resultado.mensaje || '', \r\n cargado: true, \r\n config: config \r\n });\r\n \r\n }).catch(error => {\r\n Alert('Error: '+error.message,'error',{});\r\n });\r\n }catch(error){\r\n Alert('Error: '+error.message,'error',{});\r\n }\r\n }\r\n\r\n getData();\r\n }\r\n\r\n const toCurrency = (val, dec) => {\r\n const valor = parseFloat(val);\r\n return '$' + (valor.toFixed(dec)).toString();\r\n }\r\n\r\n useEffect(() => {\r\n if(!state.cargado){\r\n loadAcuseList();\r\n }\r\n }, [])\r\n\r\n return (\r\n
\r\n
\r\n

Acuses

\r\n
{ auth.user.descripcion }
\r\n
\r\n
\r\n { state.mensaje !== '' ? (\r\n
\r\n { state.mensaje }\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 state.acuse.map(row => (\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
#IdDocumentoRFCEmpresaFechaAltaImporte#
{ row.folio }{ row.id }{ row.documento }{ row.rfc_emisor }{ row.empresa }{ row.fecha }{ row.alta }{ toCurrency(row.importe,2) }\r\n \r\n \"Descargar\"\r\n \r\n
Total: { state.totales.total }{ toCurrency(state.totales.importe,2) }#
\r\n
\r\n
\r\n \r\n
\r\n )\r\n}\r\n","\r\nexport const Funciones = () => {\r\n return {\r\n toCurrency(val, dec){\r\n const valor = parseFloat(val);\r\n return '$' + (valor.toFixed(dec)).toString();\r\n },\r\n toNumber(val, dec){\r\n const valor = parseFloat(val);\r\n return (valor.toFixed(dec)).toString();\r\n },\r\n toDate(dateString, formatChar='YMD',sepChar='/'){\r\n try{\r\n let staDate = Date.parse(dateString)\r\n let date = staDate.getDate();\r\n let month = staDate.getMonth() + 1;\r\n let year = staDate.getFullYear();\r\n console.log(dateString);\r\n console.log(staDate);\r\n let newdate = year.toString() + sepChar + (month<10?'0'+month.toString():month.toString())+sepChar+(date<10?'0'+date.toString():date.toString());\r\n\r\n switch (formatChar) {\r\n case 'YMD':\r\n newdate = year.toString() + sepChar + (month<10?'0'+month.toString():month.toString())+sepChar+(date<10?'0'+date.toString():date.toString());\r\n break;\r\n\r\n case 'DMY':\r\n newdate = (date<10?'0'+date.toString():date.toString()) + sepChar + (month<10?'0'+month.toString():month.toString()) + sepChar + year.toString();\r\n break;\r\n \r\n default:\r\n newdate = year.toString() + sepChar + (month<10?'0'+month.toString():month.toString())+sepChar+(date<10?'0'+date.toString():date.toString());\r\n break;\r\n }\r\n\r\n return newdate;\r\n\r\n }catch(ex){\r\n //nothing\r\n console.log(ex);\r\n return this.getDate(sepChar);\r\n }\r\n\r\n },\r\n getDate(sepChar='/'){\r\n let staDate = new Date()\r\n let date = staDate.getDate();\r\n let month = staDate.getMonth() + 1;\r\n let year = staDate.getFullYear();\r\n let newdate = year.toString() + sepChar + (month<10?'0'+month.toString():month.toString())+sepChar+(date<10?'0'+date.toString():date.toString());\r\n\r\n return newdate\r\n },\r\n getDMY(ndate, sepChar) {\r\n let date = ndate.getDate();\r\n let month = ndate.getMonth() + 1;\r\n let year = ndate.getFullYear();\r\n let newdate = (ndate<10?'0'+date.toString():date.toString()) + sepChar + (month<10?'0'+month.toString():month.toString()) + sepChar + year.toString();\r\n\r\n return newdate\r\n }\r\n }\r\n}","import React, { useEffect, useState } from 'react'\r\nimport { useParams, useLocation, NavLink } from 'react-router-dom'\r\nimport axios from 'axios';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport { Alert } from '../../services/Alert';\r\n\r\nimport { useAuth } from '../../auth/useAuth';\r\nimport logo_down from '../../assets/img/download.svg';\r\nimport { Funciones } from '../../services/Funciones';\r\n\r\nexport const PricePage = () => {\r\n\r\n const auth = useAuth();\r\n const fun = Funciones();\r\n \r\n //Parametros por query\r\n const location = useLocation();\r\n \r\n const [state, setstate] = useState({\r\n cotizacion:[],\r\n cargado: false,\r\n config: JSON.parse(localStorage.getItem('config'))\r\n })\r\n\r\n const loadCotizacionList = () => {\r\n \r\n const getData = async() => {\r\n const config = JSON.parse(localStorage.getItem('config'));\r\n const BaseUrl = config.baseUrl || 'http://localhost/wservices/';\r\n const AppId = config.appId ||'';\r\n\r\n if(AppId===''){\r\n //Volvemos a llamar la funcion hasta acabar\r\n //reloadAcuse();\r\n return;\r\n }\r\n \r\n try{\r\n //console.log(state);\r\n const data = {\r\n apikey: AppId || '',\r\n action: 'GetCotizacion',\r\n provider: 'proveedor',\r\n data: {\r\n usuario: auth.user.usuario,\r\n tabla: auth.user.tabla,\r\n clave: auth.user.clave\r\n }\r\n }\r\n \r\n await axios.post(BaseUrl, data)\r\n .then(response => {\r\n return response.data\r\n })\r\n .then(datos => {\r\n \r\n if((datos.type || '') === ''){\r\n Alert('Advertencia: No hubo respuesta del servidor','warning',{});\r\n return;\r\n }\r\n \r\n //Ya tenemos una respuesta valida, ahora la procesamos\r\n if(datos.type === 'error'){\r\n Alert('Advertencia: '+ datos.code + ' - ' + datos.message,'warning',{});\r\n return;\r\n }\r\n \r\n const resultado = datos.data || {};\r\n \r\n let listcotizacion = resultado.cotizacion || [];\r\n \r\n setstate({\r\n ...state, \r\n cotizacion: listcotizacion, \r\n cargado: true, \r\n config: config \r\n });\r\n \r\n }).catch(error => {\r\n Alert('Error: '+error.message,'error',{});\r\n });\r\n }catch(error){\r\n Alert('Error: '+error.message,'error',{});\r\n }\r\n }\r\n\r\n getData();\r\n }\r\n\r\n useEffect(() => {\r\n if(!state.cargado){\r\n loadCotizacionList();\r\n }\r\n }, [])\r\n\r\n return (\r\n
\r\n
\r\n

Cotizaciones

\r\n
{ auth.user.descripcion }
\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 state.cotizacion.map(row => (\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
FolioFechaVencimientoSucursalComentarioProductosEstado
{ row.folio }{ row.fecha }{ row.vencimiento }{ row.sucursal }{ row.comentario }{ fun.toNumber(row.productos,0) }{ row.estado }
Total: { fun.toNumber(state.cotizacion.length) }
\r\n
\r\n
\r\n \r\n
\r\n )\r\n}\r\n","import React, { useEffect, useState } from 'react'\r\nimport { useHistory } from 'react-router';\r\nimport { useParams } from 'react-router-dom'\r\nimport axios from 'axios';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport { Alert } from '../../services/Alert';\r\n\r\nimport { useAuth } from '../../auth/useAuth';\r\nimport { Funciones } from '../../services/Funciones';\r\nimport DatePicker from 'react-datepicker';\r\nimport * as XLSX from 'xlsx';\r\nimport { saveAs } from 'file-saver';\r\n\r\nexport const PriceIdPage = () => {\r\n\r\n const auth = useAuth();\r\n const fun = Funciones();\r\n const history = useHistory();\r\n \r\n //Parametros por url\r\n const { folio } = useParams();\r\n \r\n const [state, setstate] = useState({\r\n cotizacion: {\r\n folio:'',\r\n productos:[]\r\n },\r\n folio: folio,\r\n folio_lista: '',\r\n mensaje: '',\r\n cargado: false,\r\n config: JSON.parse(localStorage.getItem('config'))\r\n })\r\n\r\n const [productos, setproductos] = useState([])\r\n const [startDate, setStartDate] = useState(new Date());\r\n const [file, setfile] = useState(null);\r\n\r\n const loadCotizacion = () => {\r\n \r\n const getData = async() => {\r\n const config = JSON.parse(localStorage.getItem('config'));\r\n const BaseUrl = config.baseUrl || 'http://localhost/wservices/';\r\n const AppId = config.appId ||'';\r\n\r\n if(AppId===''){\r\n return;\r\n }\r\n \r\n try{\r\n //console.log(state);\r\n const data = {\r\n apikey: AppId || '',\r\n action: 'GetCotizacionId',\r\n provider: 'proveedor',\r\n data: {\r\n usuario: auth.user.usuario,\r\n tabla: auth.user.tabla,\r\n clave: auth.user.clave,\r\n folio: state.folio\r\n }\r\n }\r\n \r\n await axios.post(BaseUrl, data)\r\n .then(response => {\r\n return response.data\r\n })\r\n .then(datos => {\r\n \r\n if((datos.type || '') === ''){\r\n Alert('Advertencia: No hubo respuesta del servidor','warning',{});\r\n return;\r\n }\r\n \r\n //Ya tenemos una respuesta valida, ahora la procesamos\r\n if(datos.type === 'error'){\r\n Alert('Advertencia: '+ datos.code + ' - ' + datos.message,'warning',{});\r\n return;\r\n }\r\n \r\n const resultado = datos.data || {};\r\n \r\n let cotizacionobj = resultado.cotizacion || [];\r\n \r\n setproductos(cotizacionobj.productos || []);\r\n\r\n setstate({\r\n ...state, \r\n cotizacion: cotizacionobj, \r\n mensaje: resultado.mensaje || '', \r\n cargado: true, \r\n config: config \r\n });\r\n \r\n }).catch(error => {\r\n Alert('Error: '+error.message,'error',{});\r\n });\r\n }catch(error){\r\n Alert('Error: '+error.message,'error',{});\r\n }\r\n }\r\n\r\n getData();\r\n }\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n \r\n const getData = async() => {\r\n const config = JSON.parse(localStorage.getItem('config'));\r\n const BaseUrl = config.baseUrl || 'http://localhost/wservices/';\r\n const AppId = config.appId ||'';\r\n\r\n if(AppId===''){\r\n Alert('Advertencia: No se encontro el appid para conectar a la base de datos','warning',{});\r\n return;\r\n }\r\n \r\n try{\r\n let showError = false;\r\n let msgError = \"\";\r\n //Primero validamos que tengan configurado un precio correcto\r\n productos.forEach(element => {\r\n if(parseFloat(element.precio) < 0 && !showError){\r\n msgError = 'Advertencia: El producto ' + element.descripcion + ', no tiene un precio valido';\r\n showError = true;\r\n }\r\n });\r\n\r\n if(showError){\r\n Alert(msgError,'warning',{});\r\n return;\r\n }\r\n\r\n //console.log(state);\r\n const data = {\r\n apikey: AppId || '',\r\n action: 'SetCotizacionPrecio',\r\n provider: 'proveedor',\r\n data: {\r\n usuario: auth.user.usuario,\r\n tabla: auth.user.tabla,\r\n clave: auth.user.clave,\r\n folio: state.folio,\r\n fecha: fun.getDMY(startDate,'/'),\r\n productos: productos\r\n }\r\n }\r\n \r\n await axios.post(BaseUrl, data)\r\n .then(response => {\r\n return response.data\r\n })\r\n .then(datos => {\r\n \r\n if((datos.type || '') === ''){\r\n Alert('Advertencia: No hubo respuesta del servidor','warning',{});\r\n return;\r\n }\r\n \r\n //Ya tenemos una respuesta valida, ahora la procesamos\r\n if(datos.type === 'error'){\r\n Alert('Advertencia: '+ datos.code + ' - ' + datos.message,'warning',{});\r\n return;\r\n }\r\n \r\n const resultado = datos.data || {};\r\n \r\n let documento = resultado.documento || [];\r\n \r\n setstate({\r\n ...state, \r\n mensaje: resultado.mensaje || '', \r\n cargado: true, \r\n config: config, \r\n folio: documento.folio,\r\n folio_lista: documento.folio_lista\r\n });\r\n \r\n Alert('Información: Precios actualizados, folio: '+ documento.folio_lista,'info',{});\r\n }).catch(error => {\r\n Alert('Error: '+error.message,'error',{});\r\n });\r\n }catch(error){\r\n Alert('Error: '+error.message,'error',{});\r\n }\r\n }\r\n\r\n getData();\r\n }\r\n\r\n const handleChange = (e) => {\r\n e.preventDefault();\r\n\r\n let valor = e.target.value;\r\n let name = e.target.name.replace(\"row_\",\"\")\r\n let tmpProductos = productos;\r\n\r\n tmpProductos.forEach(row => {\r\n if(row.id===name){\r\n row.precio = parseFloat(valor);\r\n }\r\n })\r\n\r\n setproductos(tmpProductos);\r\n }\r\n\r\n const handleChangeFecha = (date) => {\r\n setStartDate(date);\r\n //console.log(date);\r\n }\r\n\r\n const exportToCSV = () => {\r\n const fileType = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8\";\r\n const fileExtension = \".xlsx\";\r\n\r\n const ws = XLSX.utils.json_to_sheet(productos);\r\n const wb = { Sheets: { data: ws }, SheetNames: [\"data\"] };\r\n const excelBuffer = XLSX.write(wb, { bookType: \"xlsx\", type: \"array\" });\r\n const data = new Blob([excelBuffer], { type: fileType });\r\n saveAs(data, 'CotizacionPrecio' + fileExtension);\r\n }\r\n \r\n const filePathset = (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n var file = e.target.files[0];\r\n readFile(e.target.files[0]);\r\n }\r\n\r\n const readFile = (f) => {\r\n if(f===undefined||f===null){\r\n setfile(null);\r\n return;\r\n }\r\n \r\n const reader = new FileReader();\r\n reader.onload = (evt) => {\r\n const bstr = evt.target.result;\r\n const wb = XLSX.read(bstr, { type: \"binary\" });\r\n const wsname = wb.SheetNames[0];\r\n const ws = wb.Sheets[wsname];\r\n const data = XLSX.utils.sheet_to_csv(ws, { header: 1 });\r\n const finalFile = convertToJson(data);\r\n setfile(finalFile);\r\n //console.log(finalFile);\r\n };\r\n reader.readAsBinaryString(f);\r\n }\r\n\r\n const convertToJson = (csv) => {\r\n var lines = csv.split(\"\\n\");\r\n var result = [];\r\n var headers = lines[0].split(\",\");\r\n \r\n for (var i = 1; i < lines.length; i++) {\r\n var obj = {};\r\n var currentline = lines[i].split(\",\");\r\n \r\n if(currentline[0]!==''){\r\n for (var j = 0; j < headers.length; j++) {\r\n obj[headers[j]] = currentline[j];\r\n }\r\n result.push(obj);\r\n }\r\n }\r\n \r\n return result; //JavaScript object\r\n //return JSON.stringify(result); //JSON\r\n }\r\n\r\n const loadImportCSV = () => {\r\n if(file===null){\r\n Alert('Advertencia: No se ha cargado archivo para importar','warning',{});\r\n return;\r\n }\r\n\r\n //Cargamos los datos que se importaron\r\n setstate({...state,cotizacion:{...state.cotizacion, productos: file }});\r\n setproductos(file);\r\n \r\n Alert('Información: Archivo cargado con exito','info',{});\r\n }\r\n \r\n useEffect(() => {\r\n if(!state.cargado){\r\n if(state.folio===''){\r\n history.push('/price/');\r\n }\r\n loadCotizacion();\r\n }\r\n }, [])\r\n\r\n return (\r\n
\r\n
\r\n

Cotizacion

\r\n
{ 'Folio: ' + state.folio }
\r\n
\r\n { state.mensaje !== '' ? (\r\n
\r\n
\r\n { state.mensaje }\r\n
\r\n
\r\n ) : '' }\r\n
\r\n
\r\n
\r\n Fecha: { state.cotizacion.fecha || fun.getDate() }
\r\n Vencimiento: { state.cotizacion.vencimiento || fun.getDate() }
\r\n Sucursal: { state.cotizacion.sucursal || '' }
\r\n Comprador: { state.cotizacion.comprador || '' }
\r\n Comentario: { state.cotizacion.comentario || '' }\r\n
\r\n
\r\n
\r\n
\r\n Vigencia de precios:\r\n handleChangeFecha(date) } className='form-control m8-itext mb-3' />\r\n
\r\n
\r\n Cargar archivo XLSX:\r\n \r\n exportToCSV() }>Descargar lista\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
e.preventDefault() }>\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 state.cotizacion.productos.map(row => (\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
#ClaveTallaColorDescripcionUnidadCantidadPrecio
{ row.id }{ row.clave }{ row.talla }{ row.color }{ row.descripcion }{ row.unidad }{ fun.toNumber(row.cantidad,0) }\r\n
\r\n
\r\n
$
\r\n
\r\n \r\n
\r\n
Total: { state.cotizacion.productos.length }
\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 { BrowserRouter as Router, Switch, Route } from 'react-router-dom';\r\n\r\nimport { Navbar } from '../components/ui/Navbar';\r\nimport { PrivateRoute } from './PrivateRoute';\r\nimport { PublicRoute } from './PublicRoute';\r\n\r\nimport { LoginPage } from '../components/pages/LoginPage';\r\nimport { HomePage } from '../components/pages/HomePage';\r\nimport { UploadPage } from '../components/pages/UploadPage';\r\nimport { NotFoundPage } from '../components/codes/NotFoundPage';\r\nimport { AcusePage } from '../components/pages/AcusePage';\r\nimport { PricePage } from '../components/pages/PricePage';\r\nimport { PriceIdPage } from '../components/pages/PriceIdPage';\r\n\r\nexport const AppRouter = () => {\r\n\r\n //\r\n //\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \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 { AuthProvider } from './auth/AuthProvider';\r\nimport { AppRouter } from './routers/AppRouter';\r\n\r\nimport './assets/css/site.css';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport 'react-datepicker/dist/react-datepicker.css';\r\n\r\nexport const App = () => {\r\n \r\n\treturn (\r\n <>\r\n \r\n \r\n \r\n \r\n )\r\n}","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { App } from './App';\r\n\r\nReactDOM.render( , document.getElementById('root') );\r\n\r\n"],"sourceRoot":""}