{"version":3,"sources":["history.js","components/app/App.js","reducers/stockReducer.js","reducers/invoiceReducer.js","reducers/infoReducer.js","store.js","components/login/LoginPage.js","components/register/Register.js","components/home/Home.js","dateFormat.js","components/stocks/Stocks.js","components/invoices/Invoices.js","components/infos/Backoffice.js","components/profile/Profile.js","components/privacyPolicy/PrivacyPolicy.js","index.js"],"names":["createBrowserHistory","App","history","push","localStorage","getItem","this","props","id","className","onClick","onNavigateSignUp","href","viewBox","xmlns","fill","d","onNavigateLogin","React","Component","withRouter","stockReducer","state","stocks","action","type","payload","invoiceReducer","invoices","infoReducer","infos","store","createStore","combineReducers","LoginPage","vat","password","error","token","handlePassChange","bind","handleVatChange","handleSubmit","dismissError","onNavigateHome","login","setState","evt","preventDefault","target","value","a","errorAuth","fetch","process","method","headers","Accept","body","JSON","stringify","then","response","ok","status","json","data","name","isSupplier","removeItem","setItem","message","catch","document","getElementById","onSubmit","placeholder","data-test","onChange","Register","getCountryVatValidation","countryCode","austria","belgium","bulgaria","croatia","cyprus","czechRepublic","denmark","estonia","finland","france","germany","greece","hungary","ireland","italy","latvia","lithuania","luxembourg","malta","netherlands","poland","portugal","romania","slovakiaRepublic","slovenia","spain","sweden","unitedKingdom","isVatValid","number","country","vatValid","checkVAT","countries","isValid","isValidFormat","email","mobile","contact_name","confirmPass","success","handleconfirmPassChange","handleCompanyChange","handleEmailChange","handleCountryChange","handleMobileChange","handleContactChange","dismissSuccess","register","length","trim","val","$","prepend","on","text","attr","e","which","defaultValue","required","disabled","hidden","selected","Home","verifyLogin","logout","alt","width","src","onNavigateStocks","onNavigateInvoices","onNavigateProfile","onNavigateBackoffice","dateString","date","Date","day","getDate","completeDay","toString","monthDisplay","getMonth","completeMonth","year","getFullYear","hours","getHours","completeHours","minutes","getMinutes","completeMinutes","time","Stocks","tab","pending","currentTablePage","currentItems","pages","totalItems","filter","week","DateObject","handleChange","handleChangeTablePage","page","fetchStocks","handleFilter","event","handleWeek","handleApplyFilter","handleExport","showStocks","dates","getDatesFromWeek","Authorization","getQueryString","csvContent","reduce","acc","curr","stock_date","material_nr","material_desc","quantity","dateFormat","current","capitalize","supplier_nr","map","join","encodedUri","encodeURI","link","createElement","setAttribute","appendChild","click","console","err","finally","handleCancelFilter","handleCancelWeek","enterSearch","keyCode","key","string","charAt","toUpperCase","slice","getFilters","query","startDate","firstDate","endDate","lastDate","count","exportation","queryString","search","qs","delimiter","arrayFormat","match","params","firstDayOfWeek","lastDayOfWeek","month","getDot","index","getSpaceDot","res","total","totalRows","Math","ceil","log","toFirstOfWeek","toLastOfWeek","r","i","uniqueArray","Set","sort","b","dots","align","onKeyDown","Clear","range","weekPicker","showOtherDays","displayWeekNumbers","weekNumber","format","maxDate","inputClass","Tooltip","title","Search","GetApp","Array","renderPoints","connect","dispatch","Invoices","fetchInvoices","showInvoices","inv_date","Backoffice","editItem","fetchSuppliers","handleEdit","item","oldData","newData","handleCancelEdit","updatedCurrentItems","handleCheckEdit","Promise","resolve","setTimeout","dataToUpdate","login_date","handleEditValue","handleStateToggle","checked","showInfos","Check","class","for","Euro","handleRedirectToInvoice","Edit","style","cursor","handleRedirectToStock","Profile","handleChangeTab","handleChangePassword","changePassword","changed","sap","profileFields","companyname","passwordFields","confirmPassword","handleChangeInput","handleChangePasswordInput","save","savePassword","htmlFor","readOnly","PrivacyPolicy","ReactDOM","render","exact","path","component"],"mappings":"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","file":"static/js/main.5de18bd4.chunk.js","sourcesContent":["import { createBrowserHistory } from 'history';\n\nexport default createBrowserHistory();","import React from \"react\";\nimport \"./App.css\";\nimport { withRouter } from \"react-router-dom\";\nimport history from \"../../history\";\n\nclass App extends React.Component {\n onNavigateLogin() {\n history.push(\"/login\");\n }\n\n onNavigateSignUp() {\n history.push(\"/register\");\n }\n\n componentDidMount() {\n if (localStorage.getItem(\"token\") !== null) {\n const { history } = this.props;\n history.push(\"/home\");\n }\n }\n\n render() {\n return (\n
\n
\n
\n this.onNavigateSignUp()}\n className=\"signUpBtn\"\n >\n Sign up\n \n
\n
\n
\n
\n \n \n \n \n \n
\n
\n
\n
\n
SupplyNet
\n
Welcome
\n
\n
\n \n
\n \n
\n
\n );\n }\n}\n\nexport default withRouter(App);\n","const stockReducer = (state = {\n stocks: []\n }, action) => {\n switch(action.type) {\n case \"SHOW_STOCKS\":\n return state = {\n ...state,\n stocks: action.payload\n };\n default:\n return state;\n }\n };\n\n export default stockReducer;\n ","const invoiceReducer = (state = {\n invoices: []\n}, action) => {\n switch (action.type) {\n case \"SHOW_INVOICES\":\n return state = {\n ...state,\n invoices: action.payload\n };\n default:\n return state;\n }\n};\n\nexport default invoiceReducer;\n","const infoReducer = (state = {\n infos: []\n}, action) => {\n switch (action.type) {\n case \"SHOW_INFOS\":\n return state = {\n ...state,\n infos: action.payload\n };\n default:\n return state;\n }\n};\n\nexport default infoReducer;\n","import {createStore, combineReducers} from 'redux';\n\nimport stocks from \"./reducers/stockReducer\";\nimport invoices from \"./reducers/invoiceReducer\";\nimport infos from \"./reducers/infoReducer\";\n\nconst store = createStore(\n combineReducers({\n stocks, invoices, infos\n }), \n {}\n);\n\nexport default store;","import React, { Component } from \"react\";\r\nimport \"../app/App.css\";\r\nimport \"./LoginPage.css\";\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nclass LoginPage extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n vat: \"\",\r\n password: \"\",\r\n error: \"\",\r\n token: \"\",\r\n };\r\n\r\n this.handlePassChange = this.handlePassChange.bind(this);\r\n this.handleVatChange = this.handleVatChange.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n this.dismissError = this.dismissError.bind(this);\r\n this.onNavigateHome = this.onNavigateHome.bind(this);\r\n this.login = this.login.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (localStorage.getItem(\"token\") !== null) {\r\n const { history } = this.props;\r\n history.push(\"/home\");\r\n }\r\n }\r\n\r\n dismissError() {\r\n this.setState({ error: \"\" });\r\n }\r\n\r\n handleSubmit(evt) {\r\n evt.preventDefault();\r\n const { vat, password } = this.state;\r\n\r\n if (!vat) {\r\n return this.setState({ error: \"VAT is required\" });\r\n }\r\n\r\n if (!password) {\r\n return this.setState({ error: \"Password is required\" });\r\n }\r\n\r\n return this.setState({ error: \"\" });\r\n }\r\n\r\n handleVatChange(evt) {\r\n this.setState({\r\n vat: evt.target.value,\r\n });\r\n }\r\n\r\n handlePassChange(evt) {\r\n this.setState({\r\n password: evt.target.value,\r\n });\r\n }\r\n\r\n onNavigateHome() {\r\n if (localStorage.getItem(\"token\") != null) {\r\n const { history } = this.props;\r\n history.push(\"/home\");\r\n } else {\r\n this.setState({\r\n password: \"\",\r\n });\r\n }\r\n }\r\n\r\n async login(vat, password) {\r\n let errorAuth = null;\r\n await fetch(process.env.REACT_APP_SERVER_LINK + \"user/login\", {\r\n method: \"POST\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n vat: vat,\r\n password: password,\r\n }),\r\n })\r\n .then((response) => {\r\n if (!response.ok) {\r\n if (response.status === 401 || response.status === 400)\r\n this.setState({ error: \"Incorrect VAT or password.\" });\r\n else if (response.status === 403)\r\n this.setState({\r\n error: \"This account is inactive. Contact admin.\",\r\n });\r\n else if (response.status === 405)\r\n this.setState({\r\n error:\r\n \"This account is not approved yet. Waiting for admin approval.\",\r\n });\r\n else\r\n this.setState({\r\n error: \"Authentication failed.\",\r\n });\r\n }\r\n return response.json();\r\n })\r\n .then(function (data) {\r\n const token = data.token;\r\n const name = data.name;\r\n const isSupplier = data.isSupplier;\r\n localStorage.removeItem(\"token\");\r\n localStorage.removeItem(\"name\");\r\n localStorage.removeItem(\"isSupplier\");\r\n if (token != null) {\r\n localStorage.setItem(\"token\", token);\r\n }\r\n if (name != null) {\r\n localStorage.setItem(\"name\", name);\r\n }\r\n if (isSupplier != null) {\r\n localStorage.setItem(\"isSupplier\", isSupplier);\r\n }\r\n if (data.message === \"Auth failed\") {\r\n errorAuth = true;\r\n }\r\n })\r\n .catch();\r\n if (errorAuth) {\r\n document.getElementById(\"password\").value = \"\";\r\n } else {\r\n this.onNavigateHome();\r\n }\r\n }\r\n\r\n render() {\r\n // NOTE: I use data-attributes for easier E2E testing\r\n // but you don't need to target those (any css-selector will work)\r\n const { vat, password, error } = this.state;\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
Welcome
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {error && (\r\n \r\n {error}\r\n
\r\n )}\r\n {\r\n this.login(vat, password);\r\n }}\r\n data-test=\"submit\"\r\n className=\"signBtn\"\r\n />\r\n
\r\n Not registered?{\" \"}\r\n \r\n Create an account\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(LoginPage);\r\n","import React, { Component } from \"react\";\r\nimport $ from \"jquery\";\r\n\r\nimport \"./Register.css\";\r\n//import DropDown from \"./DropDown\";\r\nimport {\r\n checkVAT,\r\n austria,\r\n belgium,\r\n bulgaria,\r\n croatia,\r\n cyprus,\r\n czechRepublic,\r\n denmark,\r\n estonia,\r\n finland,\r\n france,\r\n germany,\r\n greece,\r\n hungary,\r\n ireland,\r\n italy,\r\n latvia,\r\n lithuania,\r\n luxembourg,\r\n malta,\r\n netherlands,\r\n poland,\r\n portugal,\r\n romania,\r\n slovakiaRepublic,\r\n slovenia,\r\n spain,\r\n sweden,\r\n unitedKingdom,\r\n countries,\r\n} from \"jsvat\";\r\nexport default class Register extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n email: \"\",\r\n mobile: \"\",\r\n name: \"\",\r\n password: \"\",\r\n error: \"\",\r\n contact_name: \"\",\r\n vat: \"\",\r\n confirmPass: \"\",\r\n success: \"\",\r\n country: \"\",\r\n };\r\n\r\n this.handlePassChange = this.handlePassChange.bind(this);\r\n this.handleconfirmPassChange = this.handleconfirmPassChange.bind(this);\r\n this.handleCompanyChange = this.handleCompanyChange.bind(this);\r\n this.handleEmailChange = this.handleEmailChange.bind(this);\r\n this.handleCountryChange = this.handleCountryChange.bind(this);\r\n this.handleMobileChange = this.handleMobileChange.bind(this);\r\n this.handleVatChange = this.handleVatChange.bind(this);\r\n this.handleContactChange = this.handleContactChange.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n this.dismissError = this.dismissError.bind(this);\r\n this.dismissSuccess = this.dismissSuccess.bind(this);\r\n this.register = this.register.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n if (localStorage.getItem(\"token\") !== null) {\r\n const { history } = this.props;\r\n history.push(\"/home\");\r\n }\r\n }\r\n\r\n dismissError() {\r\n this.setState({ error: \"\" });\r\n }\r\n\r\n dismissSuccess() {\r\n this.setState({ success: \"\" });\r\n }\r\n\r\n handleSubmit(evt) {\r\n evt.preventDefault();\r\n\r\n const {\r\n confirmPass,\r\n password,\r\n name,\r\n email,\r\n vat,\r\n country,\r\n contact_name,\r\n mobile,\r\n } = this.state;\r\n if (country === \"\") {\r\n return this.setState({ error: \"Country code is required\" });\r\n }\r\n\r\n if (password.length < 8) {\r\n return this.setState({\r\n error: \"Password too short. Must have at least 8 characters.\",\r\n });\r\n }\r\n\r\n if (confirmPass !== password) {\r\n return this.setState({ error: \"Passwords are not identical\" });\r\n }\r\n\r\n if (!name) {\r\n return this.setState({ error: \"Name is required\" });\r\n }\r\n\r\n if (!email) {\r\n return this.setState({ error: \"Email is required\" });\r\n }\r\n\r\n if (!password) {\r\n return this.setState({ error: \"Password is required\" });\r\n }\r\n\r\n if (!confirmPass) {\r\n return this.setState({ error: \"Confirm Password is required\" });\r\n }\r\n\r\n if (!vat) {\r\n return this.setState({ error: \"VAT is required\" });\r\n }\r\n\r\n if (!contact_name) {\r\n return this.setState({ error: \"Contact name is required\" });\r\n }\r\n\r\n const validVat = this.isVatValid(country, vat);\r\n if (!validVat) {\r\n return this.setState({ error: \"VAT is invalid.\" });\r\n }\r\n\r\n this.register(email, password, name, mobile, country + vat, contact_name);\r\n return this.setState({ error: \"\" });\r\n }\r\n\r\n handleCompanyChange(evt) {\r\n this.setState({\r\n name: evt.target.value,\r\n });\r\n }\r\n\r\n handleEmailChange(evt) {\r\n this.setState({\r\n email: evt.target.value,\r\n });\r\n }\r\n\r\n handleMobileChange(evt) {\r\n this.setState({\r\n mobile: evt.target.value,\r\n });\r\n }\r\n\r\n handleVatChange(evt) {\r\n this.setState({\r\n vat: evt.target.value,\r\n });\r\n }\r\n\r\n handlePassChange(evt) {\r\n this.setState({\r\n password: evt.target.value,\r\n });\r\n }\r\n\r\n handleconfirmPassChange(evt) {\r\n this.setState({\r\n confirmPass: evt.target.value,\r\n });\r\n }\r\n\r\n handleContactChange(evt) {\r\n this.setState({\r\n contact_name: evt.target.value,\r\n });\r\n }\r\n\r\n handleCountryChange(evt) {\r\n this.setState({\r\n country: evt.target.value,\r\n });\r\n }\r\n\r\n getCountryVatValidation = (countryCode) => {\r\n switch (countryCode) {\r\n case \"AT\":\r\n return austria;\r\n case \"BE\":\r\n return belgium;\r\n case \"BG\":\r\n return bulgaria;\r\n case \"HR\":\r\n return croatia;\r\n case \"CY\":\r\n return cyprus;\r\n case \"CZ\":\r\n return czechRepublic;\r\n case \"DK\":\r\n return denmark;\r\n case \"EE\":\r\n return estonia;\r\n case \"FI\":\r\n return finland;\r\n case \"FR\":\r\n return france;\r\n case \"DE\":\r\n return germany;\r\n case \"EL\":\r\n return greece;\r\n case \"HU\":\r\n return hungary;\r\n case \"IE\":\r\n return ireland;\r\n case \"IT\":\r\n return italy;\r\n case \"LV\":\r\n return latvia;\r\n case \"LT\":\r\n return lithuania;\r\n case \"LU\":\r\n return luxembourg;\r\n case \"MT\":\r\n return malta;\r\n case \"NL\":\r\n return netherlands;\r\n case \"PL\":\r\n return poland;\r\n case \"PT\":\r\n return portugal;\r\n case \"RO\":\r\n return romania;\r\n case \"SK\":\r\n return slovakiaRepublic;\r\n case \"SI\":\r\n return slovenia;\r\n case \"ES\":\r\n return spain;\r\n case \"SE\":\r\n return sweden;\r\n case \"GB\":\r\n return unitedKingdom;\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n isVatValid = (countryCode, number) => {\r\n const country = this.getCountryVatValidation(countryCode);\r\n const vatValid = checkVAT(\r\n `${countryCode}${number}`,\r\n !!country ? [country] : countries\r\n );\r\n return vatValid.isValid && vatValid.isValidFormat;\r\n };\r\n\r\n async register(email, password, name, mobile, vat, contact_name) {\r\n await fetch(process.env.REACT_APP_SERVER_LINK + \"user/signup\", {\r\n method: \"POST\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n email: email,\r\n password: password,\r\n name: name,\r\n mobile: mobile,\r\n vat: vat.trim(),\r\n contact_name: contact_name,\r\n }),\r\n }).then((response) => {\r\n if (response.ok)\r\n this.setState({\r\n success: \"Successful registration. Waiting for admin approval.\",\r\n });\r\n else {\r\n if (response.status === 409)\r\n this.setState({ error: \"Supplier already registered.\" });\r\n else\r\n this.setState({\r\n error: \"Something must be wrong. Please again try later.\",\r\n });\r\n }\r\n return response.json();\r\n });\r\n }\r\n\r\n render() {\r\n // NOTE: I use data-attributes for easier E2E testing\r\n // but you don't need to target those (any css-selector will work)\r\n /* \r\n }*/\r\n const {\r\n name,\r\n vat,\r\n contact_name,\r\n password,\r\n email,\r\n confirmPass,\r\n error,\r\n success,\r\n country,\r\n } = this.state;\r\n\r\n var val = $(\"#mySelect\").val();\r\n if (!!val)\r\n $(\"#mySelect\").prepend(\r\n \"\"\r\n );\r\n\r\n $(\"#mySelect\").on(\"change\", function () {\r\n var val = $(\"#mySelect\").val();\r\n var lbl = $(\"#mySelect option:selected\").text();\r\n\r\n $(\"#mySelect option[data-value='selected']\").attr(\"value\", val);\r\n $(\"#mySelect option[data-value='selected']\").text(val);\r\n\r\n $(\"#mySelect\").val(val);\r\n });\r\n\r\n $(\"#VAT\").on(\"keypress\", function (e) {\r\n if (e.which == 32) return false;\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
Register
\r\n
your company
\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\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\n
*/}\r\n\r\n
\r\n
\r\n {error ? (\r\n \r\n {error}\r\n
\r\n ) : success ? (\r\n \r\n {success}\r\n
\r\n ) : (\r\n
.
\r\n )}\r\n
\r\n
\r\n Volkswagen Autoeuropa, as controller, undertakes to use the data\r\n contained in the registration form exclusively for commercial\r\n purposes (business-to-business) related to supplier and\r\n partnership management processes and stock management that are in\r\n progress or will take place, not using them for other purposes,\r\n taking into account the legal requirement of necessity and\r\n minimization of the retention period. You may, at any time and\r\n free of charge, exercise your rights of access, rectification, or\r\n erasure of data, object, restriction, and portability of your data\r\n through the email address dpo@volkswagen.pt. For further\r\n information, please consult our{\" \"}\r\n \r\n Privacy Policy\r\n {\" \"}\r\n or contact our Data Protection Officer at the email address\r\n mentioned above. If you believe that Volkswagen Autoeuropa may\r\n have infringed your rights under applicable data protection law,\r\n you may lodge a complaint with the Portuguese Supervisory\r\n Authority.\r\n
\r\n \r\n
\r\n Already registered?{\" \"}\r\n \r\n Sign In\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 \"./Home.css\";\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nclass Home extends React.Component {\r\n logout() {\r\n const { history } = this.props;\r\n localStorage.removeItem(\"token\");\r\n history.push(\"/\");\r\n }\r\n\r\n onNavigateStocks() {\r\n const { history } = this.props;\r\n history.push(\"/stocks\");\r\n }\r\n\r\n onNavigateInvoices() {\r\n const { history } = this.props;\r\n history.push(\"/invoices\");\r\n }\r\n\r\n onNavigateProfile() {\r\n const { history } = this.props;\r\n history.push(\"/profile\");\r\n }\r\n\r\n onNavigateBackoffice() {\r\n const { history } = this.props;\r\n history.push(\"/backoffice\");\r\n }\r\n\r\n verifyLogin() {\r\n return localStorage.getItem(\"token\") == null;\r\n }\r\n\r\n componentDidMount() {\r\n if (this.verifyLogin()) {\r\n const { history } = this.props;\r\n history.push(\"/\");\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n
{localStorage.getItem(\"name\")}
\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
SupplyNet
\r\n
Welcome
\r\n
\r\n
\r\n \r\n \r\n {localStorage.getItem(\"isSupplier\") === \"true\" ? (\r\n \r\n ) : (\r\n this.onNavigateBackoffice()}\r\n className=\"btn\"\r\n >\r\n Backoffice\r\n \r\n )}\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(Home);\r\n","const monthsNames = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nexport default {\n readableDate: (dateString: string) => {\n const date = new Date(dateString);\n return `${\n monthsNames[date.getMonth()]\n } ${date.getDate()}, ${date.getFullYear()}`;\n },\n readableDateTime: (dateString: string) => {\n const date = new Date(dateString);\n return `${\n monthsNames[date.getMonth()]\n } ${date.getDate()}, ${date.getFullYear()} at ${date.getHours()}:${date.getMinutes()}`;\n },\n fullDate: (dateString: string) => {\n const date = new Date(dateString);\n\n const day = date.getDate();\n const monthIndex = date.getMonth();\n const year = date.getFullYear();\n\n return `${day}/${monthIndex + 1}/${year}`;\n },\n invertedFullDate: (dateString: string) => {\n const date = new Date(dateString);\n const day = date.getDate();\n const completeDay = day.toString().length > 1 ? `${day}` : `0${day}`;\n const monthIndex = date.getMonth();\n const monthDisplay = monthIndex + 1;\n const completeMonth =\n monthDisplay.toString().length > 1\n ? `${monthDisplay}`\n : `0${monthDisplay}`;\n const year = date.getFullYear();\n return `${year}-${completeMonth}-${completeDay}`;\n },\n fullDateWithTime: (dateString: string) => {\n const date = new Date(dateString);\n\n const day = date.getDate();\n const completeDay = day.toString().length > 1 ? `${day}` : `0${day}`;\n const monthIndex = date.getMonth();\n const year = date.getFullYear();\n const hours = date.getHours();\n const completeHours =\n hours.toString().length > 1 ? `${hours}` : `0${hours}`;\n const minutes = date.getMinutes();\n const completeMinutes =\n minutes.toString().length > 1 ? `${minutes}` : `0${minutes}`;\n\n return {\n date: `${completeDay}/${monthIndex + 1}/${year}`,\n time: `${completeHours}:${completeMinutes}`,\n };\n },\n invertedFullDateWithTime: (dateString: string) => {\n const date = new Date(dateString);\n\n const day = date.getDate();\n const completeDay = day.toString().length > 1 ? `${day}` : `0${day}`;\n const monthIndex = date.getMonth();\n const monthDisplay = monthIndex + 1;\n const completeMonth =\n monthDisplay.toString().length > 1\n ? `${monthDisplay}`\n : `0${monthDisplay}`;\n const year = date.getFullYear();\n const hours = date.getHours();\n const completeHours =\n hours.toString().length > 1 ? `${hours}` : `0${hours}`;\n const minutes = date.getMinutes();\n const completeMinutes =\n minutes.toString().length > 1 ? `${minutes}` : `0${minutes}`;\n\n return {\n date: `${year}-${completeMonth}-${completeDay}`,\n time: `${completeHours}:${completeMinutes}`,\n };\n },\n};\n","import React from \"react\";\nimport { connect } from \"react-redux\";\n//import SearchTable from \"./SearchTable\";\n//import Tabs from \"./Tabs\";\nimport { Clear, Search, GetApp } from \"@material-ui/icons\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport dateFormat from \"../../dateFormat\";\nimport { useParams } from \"react-router-dom\";\nimport DatePicker, {DateObject} from \"react-multi-date-picker\";\nimport qs from \"qs\";\n\nimport \"./Stocks.css\";\n\nconst mapStateToProps = (state) => {\n return {\n stocks: state.stocks,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n showStocks: (data) => dispatch({ type: \"SHOW_STOCKS\", payload: data }),\n };\n};\n\nclass Stocks extends React.Component {\n state = {\n tab: 0,\n pending: false,\n currentTablePage: 0,\n currentItems: [],\n pages: 0,\n totalItems: 0,\n filter: \"\",\n week: new DateObject(),\n };\n\n logout() {\n const { history } = this.props;\n localStorage.removeItem(\"token\");\n history.push(\"/\");\n }\n\n handleChange = (tab) => {\n this.setState({ tab });\n const isSupplier = localStorage.getItem(\"isSupplier\") === \"true\";\n switch (tab) {\n case 2:\n return isSupplier\n ? this.onNavigateProfile()\n : this.onNavigateBackoffice();\n case 1:\n return this.onNavigateInvoices();\n default:\n return;\n }\n };\n\n handleChangeTablePage = async (page) => {\n const { filter, week } = this.state;\n this.setState({ currentTablePage: page });\n await this.fetchStocks(page, filter, week);\n };\n\n handleFilter = (event) => {\n this.setState({\n filter: event.target.value,\n });\n };\n\n handleWeek = (value) => {\n this.setState({\n week: value,\n });\n };\n\n handleApplyFilter = async () => {\n const { filter, week } = this.state;\n this.setState({ currentTablePage: 0 });\n await this.fetchStocks(0, filter, week);\n };\n\n handleExport = async () => {\n const { filter, week } = this.state;\n const { showStocks } = this.props;\n this.setState({ pending: true });\n const isSupplier = localStorage.getItem(\"isSupplier\") === \"true\";\n const dates = this.getDatesFromWeek(week);\n\n const headers = {\n method: \"GET\",\n headers: {\n Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\n },\n };\n\n await fetch(\n process.env.REACT_APP_SERVER_LINK +\n this.getQueryString(isSupplier, 0, filter, dates, false, true),\n headers\n )\n .then((response) => response.json())\n .then((data) => {\n if (!!data.message) this.logout();\n const headers = isSupplier\n ? [\n \"Material number\",\n \"Material description\",\n \"Quantity\",\n \"Stock date\",\n \"State\",\n ]\n : [\n \"Vendor number\",\n \"Material number\",\n \"Material description\",\n \"Quantity\",\n \"Stock date\",\n \"State\",\n ];\n const array = data.reduce(\n (acc, curr) => {\n if (!curr) return acc;\n const { stock_date, material_nr, material_desc, quantity, state } = curr;\n const date =\n !!stock_date && dateFormat.invertedFullDateWithTime(stock_date);\n const current = isSupplier\n ? [\n material_nr,\n material_desc,\n quantity,\n !!stock_date ? `${date.date} ${date.time}` : \"\",\n this.capitalize(state),\n ]\n : [\n curr.supplier_nr,\n material_nr,\n material_desc,\n quantity,\n !!stock_date ? `${date.date} ${date.time}` : \"\",\n this.capitalize(state),\n ];\n return [...acc, current];\n },\n [headers]\n );\n let csvContent =\n \"data:text/csv;charset=utf-8,\" +\n array.map((e) => e.join(\",\")).join(\"\\n\");\n var encodedUri = encodeURI(csvContent);\n var link = document.createElement(\"a\");\n link.setAttribute(\"href\", encodedUri);\n link.setAttribute(\"download\", \"stocks.csv\");\n document.body.appendChild(link); // Required for FF\n link.click();\n })\n .catch((e) => {\n console.err(e);\n })\n .finally(() => this.setState({ pending: false }));\n };\n\n handleCancelFilter = async () => {\n this.setState({ filter: \"\" });\n };\n\n handleCancelWeek = async () => {\n this.setState({ week: null });\n };\n\n enterSearch = async (event) => {\n if (event.keyCode === 13 && event.key === \"Enter\")\n await this.handleApplyFilter();\n };\n\n capitalize = (string) => {\n return string.charAt(0).toUpperCase() + string.slice(1);\n };\n\n onNavigateInvoices() {\n const { history } = this.props;\n history.push(\"/invoices\");\n }\n\n onNavigateProfile() {\n const { history } = this.props;\n history.push(\"/profile\");\n }\n\n onNavigateBackoffice() {\n const { history } = this.props;\n history.push(\"/backoffice\");\n }\n onNavigateStocks() {\n const { history } = this.props;\n history.push(\"/stocks\");\n }\n\n verifyLogin() {\n return localStorage.getItem(\"token\") == null;\n }\n\n getFilters = (filter, week) => {\n let query = {};\n if (!!filter) query = { ...query, filter };\n if (week)\n query = { ...query, startDate: week.firstDate, endDate: week.lastDate };\n return query;\n };\n\n getQueryString = (isSupplier, page, filter, week, count, exportation) => {\n let queryString = isSupplier ? \"supplier/stocks\" : \"admin/stocks\";\n const query = this.getFilters(filter, week);\n const search = !!query\n ? qs.stringify(query, {\n delimiter: \",\",\n arrayFormat: \"brackets\",\n })\n : null;\n if (!!count) {\n queryString += \"Count\";\n if (this.props.match.params.id)\n queryString += \"/\" + this.props.match.params.id;\n if (!!search) queryString += `?search=${search}`;\n return queryString;\n }\n if (!!exportation) {\n queryString += \"Exportation\";\n if (!!search) queryString += `?search=${search}`;\n return queryString;\n }\n if (this.props.match.params.id)\n queryString += \"/\" + this.props.match.params.id;\n if (!!page || !!search) {\n queryString += \"?\";\n if (!!page || page === 0) queryString += `page=${page}`;\n if ((!!page || page === 0) && !!search) queryString += \"&\";\n if (!!search) queryString += `search=${search}`;\n }\n return queryString;\n };\n\n async fetchStocks(page, filter, week) {\n const { showStocks } = this.props;\n this.setState({ pending: true });\n const isSupplier = localStorage.getItem(\"isSupplier\") === \"true\";\n const dates = this.getDatesFromWeek(week);\n\n const headers = {\n method: \"GET\",\n headers: {\n Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\n },\n };\n\n await fetch(\n process.env.REACT_APP_SERVER_LINK +\n this.getQueryString(isSupplier, page, filter, dates, true),\n headers\n )\n .then((res) => res.json())\n .then((total) => {\n const totalRows = total[0] ? total[0].value : 10;\n fetch(\n process.env.REACT_APP_SERVER_LINK +\n this.getQueryString(isSupplier, page, filter, dates, false),\n headers\n )\n .then((response) => response.json())\n .then((data) => {\n if (!!data.message) this.logout();\n showStocks(data);\n if (data.length !== 0) {\n const pages = Math.ceil(totalRows / 10);\n this.setState({\n pages,\n currentItems: data,\n totalItems: totalRows,\n });\n } else {\n this.setState({\n pages: 0,\n currentItems: [],\n totalItems: 0,\n });\n }\n })\n .catch((e) => {\n console.err(e);\n })\n .finally(() => this.setState({ pending: false }));\n })\n .catch((err) => {\n console.log(err);\n });\n }\n\n async componentDidMount() {\n const { history } = this.props;\n const firstDayOfWeek = new DateObject().toFirstOfWeek();\n const lastDayOfWeek = new DateObject().toLastOfWeek();\n const week = [firstDayOfWeek, lastDayOfWeek];\n this.setState({\n week,\n });\n if (this.verifyLogin()) history.push(\"/\");\n else await this.fetchStocks(0, \"\", week);\n }\n\n getDatesFromWeek = (week) => {\n if (!week) return null;\n const firstDayOfWeek = week[0];\n const lastDayOfWeek = week[1];\n const firstDate = `${firstDayOfWeek.year}-${\n firstDayOfWeek.month.number < 10\n ? `0${firstDayOfWeek.month.number}`\n : firstDayOfWeek.month.number\n }-${\n firstDayOfWeek.day < 10 ? `0${firstDayOfWeek.day}` : firstDayOfWeek.day\n }`;\n const lastDate = `${lastDayOfWeek.year}-${\n lastDayOfWeek.month.number < 10\n ? `0${lastDayOfWeek.month.number}`\n : lastDayOfWeek.month.number\n }-${lastDayOfWeek.day < 10 ? `0${lastDayOfWeek.day}` : lastDayOfWeek.day}`;\n return { firstDate, lastDate };\n };\n\n getDot = (index, selected) => (\n this.handleChangeTablePage(index)}\n >\n {index + 1}\n \n );\n getSpaceDot = () => ;\n\n renderPoints(total, current) {\n const r = [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n total - 1,\n total - 2,\n total - 3,\n total - 4,\n total - 5,\n total - 6,\n total - 7,\n total - 8,\n total - 9,\n total - 10,\n ];\n for (let i = current - 40; i < current + 40; i++) {\n if (i > 0 && i < total - 5) r.push(i);\n }\n const uniqueArray = [...new Set(r.sort((a, b) => (a > b ? 1 : -1)))];\n const dots = [];\n for (let i = 0; i < uniqueArray.length; i++) {\n const value = uniqueArray[i];\n dots.push(this.getDot(value, value === current));\n if (i + 1 < uniqueArray.length && value + 1 !== uniqueArray[i + 1])\n dots.push(this.getSpaceDot());\n }\n return dots;\n }\n\n render() {\n const { pending, currentItems, currentTablePage, pages, filter, week } =\n this.state;\n const isSupplier = localStorage.getItem(\"isSupplier\") === \"true\";\n return (\n
\n
\n
\n
{localStorage.getItem(\"name\")}
\n \n
\n
\n
\n \n
\n
\n
\n {pending ? (\n
\n {/* AE fixes\n \n
Loading stocks...
\n */}\n A carregar\n
\n ) : (\n <>\n
\n
\n
Stocks
\n
\n
this.handleChange(1)}>\n Invoices\n
\n
\n
this.handleChange(2)}>\n {isSupplier ? \"Profile\" : \"Backoffice\"}\n
\n
\n
\n
\n
Search
\n
\n \n {!!filter && (\n \n )}\n
\n
\n
\n
Week
\n
\n \n {!!week && (\n \n )}\n
\n
\n \n \n \n \n \n \n
\n
\n {/* AE fixes\n \n */}\n\n
\n \n \n {!isSupplier && }\n \n \n \n \n \n \n {currentItems.length > 0 ? (\n currentItems.map((curr) => {\n const date =\n !!curr.stock_date &&\n dateFormat.invertedFullDateWithTime(curr.stock_date);\n return [\n \n {!isSupplier && }\n \n \n \n \n {isSupplier ? (\n \n ) : (\n \n )}\n ,\n ];\n })\n ) : (\n \n
\n No records to display{\" \"}\n {\n //!!week && \"on this week\"\n }\n
\n \n )}\n
Vendor numberMaterial numberMaterial descriptionQuantityStock dateState
{curr.supplier_nr}{curr.material_nr}{curr.material_desc}{curr.quantity}\n {!!curr.stock_date ? `${date.date} ${date.time}` : \"\"}\n \n {curr.state === \"critic\" ? (\n \n ) : curr.state === \"overstock\" ? (\n \n ) : (\n \n )}\n {this.capitalize(curr.state)}
\n
\n
\n {pages < 100\n ? [...Array(pages)].map((curr, index) => [\n this.getDot(index, currentTablePage === index),\n ])\n : this.renderPoints(pages, currentTablePage)}\n
\n \n )}\n \n
\n );\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Stocks);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport \"./Invoices.css\";\n//import SearchTable from \"./SearchTable\";\n//import Tabs from \"./Tabs\";\nimport { Clear, Search, GetApp } from \"@material-ui/icons\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport dateFormat from \"../../dateFormat\";\nimport DatePicker, { DateObject } from \"react-multi-date-picker\";\nimport qs from \"qs\";\n\nconst mapStateToProps = (state) => {\n return {\n invoices: state.invoices,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n showInvoices: (data) => dispatch({ type: \"SHOW_INVOICES\", payload: data }),\n };\n};\n\nclass Invoices extends React.Component {\n state = {\n tab: 1,\n pending: false,\n currentTablePage: 0,\n currentItems: [],\n pages: 0,\n totalItems: 0,\n filter: \"\",\n week: new DateObject(),\n };\n\n logout() {\n const { history } = this.props;\n localStorage.removeItem(\"token\");\n history.push(\"/\");\n }\n\n handleChange = (tab) => {\n this.setState({ tab });\n const isSupplier = localStorage.getItem(\"isSupplier\") === \"true\";\n switch (tab) {\n case 2:\n return isSupplier\n ? this.onNavigateProfile()\n : this.onNavigateBackoffice();\n case 0:\n return this.onNavigateStocks();\n default:\n return;\n }\n };\n\n handleChangeTablePage = async (page) => {\n const { filter, week } = this.state;\n this.setState({ currentTablePage: page });\n await this.fetchInvoices(page, filter, week);\n };\n\n handleFilter = (event) => {\n this.setState({\n filter: event.target.value,\n });\n };\n\n handleWeek = (value) => {\n this.setState({\n week: value,\n });\n };\n\n handleApplyFilter = async () => {\n const { filter, week } = this.state;\n this.setState({ currentTablePage: 0 });\n await this.fetchInvoices(0, filter, week);\n };\n\n handleExport = async () => {\n const { filter, week } = this.state;\n const { showInvoices } = this.props;\n this.setState({ pending: true });\n const isSupplier = localStorage.getItem(\"isSupplier\") === \"true\";\n const dates = this.getDatesFromWeek(week);\n\n const headers = {\n method: \"GET\",\n headers: {\n Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\n },\n };\n\n await fetch(\n process.env.REACT_APP_SERVER_LINK +\n this.getQueryString(isSupplier, 0, filter, dates, false, true),\n headers\n )\n .then((response) => response.json())\n .then((data) => {\n if (!!data.message) this.logout();\n const headers = isSupplier \n ? [\"Material number\",\"Material description\",\"Quantity\",\"Invoice date\"] \n : [\"Vendor number\", \"Material number\",\"Material description\",\"Quantity\",\"Invoice date\"]\n const array = data.reduce((acc, curr) => {\n if(!curr) return acc;\n const {inv_date, material_nr, material_desc, quantity} = curr;\n const date =\n !!curr.inv_date &&\n dateFormat.invertedFullDateWithTime(curr.inv_date);\n const current = isSupplier \n ? [material_nr, material_desc, quantity, !!inv_date ? `${date.date} ${date.time}` : \"\"]\n : [curr.supplier_nr, material_nr, material_desc, quantity, !!inv_date ? `${date.date} ${date.time}` : \"\"]\n return [...acc, current];\n }, [headers]);\n let csvContent =\n \"data:text/csv;charset=utf-8,\" +\n array.map((e) => e.join(\",\")).join(\"\\n\");\n var encodedUri = encodeURI(csvContent);\n var link = document.createElement(\"a\");\n link.setAttribute(\"href\", encodedUri);\n link.setAttribute(\"download\", \"invoices.csv\");\n document.body.appendChild(link); // Required for FF\n link.click();\n })\n .catch((e) => {\n console.err(e);\n })\n .finally(() => this.setState({ pending: false }));\n }\n\n handleCancelFilter = async () => {\n this.setState({ filter: \"\" });\n };\n\n handleCancelWeek = async () => {\n this.setState({ week: null });\n };\n\n enterSearch = async (event) => {\n if (event.keyCode === 13 && event.key === \"Enter\")\n await this.handleApplyFilter();\n };\n\n onNavigateStocks() {\n const { history } = this.props;\n history.push(\"/stocks\");\n }\n\n onNavigateProfile() {\n const { history } = this.props;\n history.push(\"/profile\");\n }\n\n onNavigateBackoffice() {\n const { history } = this.props;\n history.push(\"/backoffice\");\n }\n\n onNavigateInvoices() {\n const { history } = this.props;\n history.push(\"/invoices\");\n }\n\n verifyLogin() {\n return localStorage.getItem(\"token\") == null;\n }\n\n getFilters = (filter, week) => {\n let query = {};\n if (!!filter) query = { ...query, filter };\n if (week)\n query = { ...query, startDate: week.firstDate, endDate: week.lastDate };\n return query;\n };\n\n getQueryString = (isSupplier, page, filter, week, count, exportation) => {\n let queryString = isSupplier ? \"supplier/invoices\" : \"admin/invoices\";\n const query = this.getFilters(filter, week);\n const search = !!query\n ? qs.stringify(query, {\n delimiter: \",\",\n arrayFormat: \"brackets\",\n })\n : null;\n if (!!count) {\n queryString += \"Count\";\n if (this.props.match.params.id)\n queryString += \"/\" + this.props.match.params.id;\n if (!!search) queryString += `?search=${search}`;\n return queryString;\n }\n if (!!exportation) {\n queryString += \"Exportation\";\n if (!!search) queryString += `?search=${search}`;\n return queryString;\n }\n if (this.props.match.params.id)\n queryString += \"/\" + this.props.match.params.id;\n if (!!page || !!search) {\n queryString += \"?\";\n if (!!page || page === 0) queryString += `page=${page}`;\n if ((!!page || page === 0) && !!search) queryString += \"&\";\n if (!!search) queryString += `search=${search}`;\n }\n return queryString;\n };\n\n async fetchInvoices(page, filter, week) {\n const { showInvoices } = this.props;\n this.setState({ pending: true });\n const isSupplier = localStorage.getItem(\"isSupplier\") === \"true\";\n const dates = this.getDatesFromWeek(week);\n\n const headers = {\n method: \"GET\",\n headers: {\n Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\n },\n };\n\n await fetch(\n process.env.REACT_APP_SERVER_LINK +\n this.getQueryString(isSupplier, page, filter, dates, true),\n headers\n )\n .then((res) => res.json())\n .then((total) => {\n const totalRows = total[0] ? total[0].value : 10;\n fetch(\n process.env.REACT_APP_SERVER_LINK +\n this.getQueryString(isSupplier, page, filter, dates, false),\n headers\n )\n .then((response) => response.json())\n .then((data) => {\n if (!!data.message) this.logout();\n showInvoices(data);\n if (data.length !== 0) {\n const pages = Math.ceil(totalRows / 10);\n this.setState({\n pages,\n currentItems: data,\n totalItems: totalRows,\n });\n } else {\n this.setState({\n pages: 0,\n currentItems: [],\n totalItems: 0,\n });\n }\n })\n .catch((e) => {\n console.err(e);\n })\n .finally(() => this.setState({ pending: false }));\n })\n .catch((err) => {\n console.log(err);\n });\n }\n\n async componentDidMount() {\n const { history } = this.props;\n const firstDayOfWeek = new DateObject().toFirstOfWeek();\n const lastDayOfWeek = new DateObject().toLastOfWeek();\n const week = [firstDayOfWeek, lastDayOfWeek];\n this.setState({\n week,\n });\n if (this.verifyLogin()) history.push(\"/\");\n else await this.fetchInvoices(0, \"\", week);\n }\n\n getDatesFromWeek = (week) => {\n if (!week) return null;\n const firstDayOfWeek = week[0];\n const lastDayOfWeek = week[1];\n const firstDate = `${firstDayOfWeek.year}-${\n firstDayOfWeek.month.number < 10\n ? `0${firstDayOfWeek.month.number}`\n : firstDayOfWeek.month.number\n }-${\n firstDayOfWeek.day < 10 ? `0${firstDayOfWeek.day}` : firstDayOfWeek.day\n }`;\n const lastDate = `${lastDayOfWeek.year}-${\n lastDayOfWeek.month.number < 10\n ? `0${lastDayOfWeek.month.number}`\n : lastDayOfWeek.month.number\n }-${lastDayOfWeek.day < 10 ? `0${lastDayOfWeek.day}` : lastDayOfWeek.day}`;\n return { firstDate, lastDate };\n };\n\n getDot = (index, selected) => (\n this.handleChangeTablePage(index)}\n >\n {index + 1}\n \n );\n getSpaceDot = () => ;\n\n renderPoints(total, current) {\n const r = [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n total - 1,\n total - 2,\n total - 3,\n total - 4,\n total - 5,\n total - 6,\n total - 7,\n total - 8,\n total - 9,\n total - 10,\n ];\n for (let i = current - 40; i < current + 40; i++) {\n if (i > 0 && i < total - 5) r.push(i);\n }\n const uniqueArray = [...new Set(r.sort((a, b) => (a > b ? 1 : -1)))];\n const dots = [];\n for (let i = 0; i < uniqueArray.length; i++) {\n const value = uniqueArray[i];\n dots.push(this.getDot(value, value === current));\n if (i + 1 < uniqueArray.length && value + 1 !== uniqueArray[i + 1])\n dots.push(this.getSpaceDot());\n }\n return dots;\n }\n\n render() {\n const { pending, currentItems, currentTablePage, pages, filter, week } =\n this.state;\n const isSupplier = localStorage.getItem(\"isSupplier\") === \"true\";\n return (\n
\n
\n
\n
{localStorage.getItem(\"name\")}
\n \n
\n
\n
\n \n
\n
\n
\n {pending ? (\n
\n {/* AE fixes\n \n
Loading invoices...
\n */}\n A carregar\n
\n ) : (\n <>\n
\n
\n
this.handleChange(0)}>\n Stocks\n
\n
\n
Invoices
\n
\n
this.handleChange(2)}>\n {isSupplier ? \"Profile\" : \"Backoffice\"}\n
\n
\n
\n
\n
Search
\n
\n \n {!!filter && (\n \n )}\n
\n
\n
\n
Week
\n
\n \n {!!week && (\n \n )}\n
\n
\n \n \n \n \n \n \n
\n
\n {/* AE fixes\n \n */}\n
\n \n \n {!isSupplier && }\n \n \n \n \n \n {currentItems.length > 0 ? (\n currentItems.map((curr) => {\n const date =\n !!curr.inv_date &&\n dateFormat.invertedFullDateWithTime(curr.inv_date);\n return [\n \n {!isSupplier && }\n \n \n \n \n ,\n ];\n })\n ) : (\n \n
\n No records to display{\" \"}\n {\n //filter.indexOf(\"-\") > -1 && \"on this day\"\n }\n
\n \n )}\n
Vendor numberMaterial numberMaterial descriptionQuantityInvoice date
{curr.supplier_nr}{curr.material_nr}{curr.material_desc}{curr.quantity}\n {!!curr.inv_date ? `${date.date} ${date.time}` : \"\"}\n
\n
\n
\n {pages < 100\n ? [...Array(pages)].map((curr, index) => [\n this.getDot(index, currentTablePage === index),\n ])\n : this.renderPoints(pages, currentTablePage)}\n
\n \n )}\n \n
\n );\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Invoices);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\n//import SearchTable from \"./SearchTable\";\n//import Tabs from \"./Tabs\";\nimport \"./Backoffice.css\";\nimport { Edit, Clear, Check, Search, Euro} from \"@material-ui/icons\";\nimport dateFormat from \"../../dateFormat\";\n\nconst mapStateToProps = (state) => {\n return {\n infos: state.infos,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return {\n showInfos: (data) => dispatch({ type: \"SHOW_INFOS\", payload: data }),\n };\n};\n\nclass Backoffice extends React.Component {\n state = {\n tab: 2,\n pending: false,\n currentTablePage: 0,\n currentItems: [],\n pages: 0,\n totalItems: 0,\n editItem: null,\n filter: \"\",\n };\n\n logout() {\n const { history } = this.props;\n localStorage.removeItem(\"token\");\n history.push(\"/\");\n }\n\n handleChange = (tab) => {\n this.setState({ tab });\n switch (tab) {\n case 0:\n return this.onNavigateStocks();\n case 1:\n return this.onNavigateInvoices();\n default:\n return;\n }\n };\n\n handleChangeTablePage = async (page) => {\n const { filter } = this.state;\n this.setState({ currentTablePage: page });\n await this.fetchSuppliers(page, filter);\n };\n\n handleFilter = (event) => {\n this.setState({\n filter: event.target.value,\n });\n };\n\n handleApplyFilter = async () => {\n const { filter } = this.state;\n this.setState({ currentTablePage: 0 });\n\n await this.fetchSuppliers(0, filter);\n };\n\n handleCancelFilter = async () => {\n this.setState({ filter: \"\", currentTablePage: 0 });\n await this.fetchSuppliers(0);\n };\n\n enterSearch = async (event) => {\n if (event.keyCode === 13 && event.key === \"Enter\")\n await this.handleApplyFilter();\n };\n\n handleEdit = (item) => {\n this.setState({ editItem: { oldData: item, newData: item } });\n };\n\n handleCancelEdit = () => {\n const { editItem, currentItems } = this.state;\n const { oldData } = editItem;\n const updatedCurrentItems = currentItems.map((item) =>\n item.id === oldData.id ? oldData : item\n );\n this.setState({ editItem: null, currentItems: updatedCurrentItems });\n };\n\n handleCheckEdit = async () => {\n const { editItem, currentItems } = this.state;\n new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n const { oldData, newData } = editItem;\n if (oldData) {\n const dataToUpdate = !!newData.password\n ? {\n vat: oldData.vat,\n login_date: oldData.login_date,\n number: newData.number,\n name: newData.name,\n email: newData.email,\n mobile: newData.mobile,\n contact_name: newData.contact_name,\n password: newData.password,\n state: newData.state ? 1 : 0,\n }\n : {\n vat: oldData.vat,\n login_date: oldData.login_date,\n number: newData.number,\n name: newData.name,\n email: newData.email,\n mobile: newData.mobile,\n contact_name: newData.contact_name,\n state: newData.state ? 1 : 0,\n };\n const updatedCurrentItems = currentItems.map((item) =>\n item.id === newData.id ? newData : item\n );\n fetch(process.env.REACT_APP_SERVER_LINK + \"admin/update\", {\n method: \"POST\",\n headers: {\n Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\n Accept: \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(dataToUpdate),\n }).then((response) => {\n this.setState({\n currentItems: updatedCurrentItems,\n editItem: null,\n });\n return response.json();\n });\n return { updatedCurrentItems };\n }\n }, 600);\n });\n };\n\n handleEditValue = (event) => {\n const { editItem, currentItems } = this.state;\n if (!event.target.name && !event.target.value) return;\n const updatedCurrentItems = currentItems.map((item) =>\n item.id === editItem.oldData.id\n ? { ...editItem.newData, [event.target.name]: event.target.value }\n : item\n );\n this.setState({\n editItem: {\n ...editItem,\n newData: {\n ...editItem.newData,\n [event.target.name]: event.target.value,\n },\n },\n currentItems: updatedCurrentItems,\n });\n };\n\n handleStateToggle = (event) => {\n const { editItem, currentItems } = this.state;\n if (!event.target.name && !event.target.value) return;\n const updatedCurrentItems = currentItems.map((item) =>\n item.id === editItem.oldData.id\n ? { ...editItem.newData, [event.target.name]: event.target.checked }\n : item\n );\n this.setState({\n editItem: {\n ...editItem,\n newData: {\n ...editItem.newData,\n [event.target.name]: event.target.checked,\n },\n },\n currentItems: updatedCurrentItems,\n });\n };\n\n handleRedirectToStock(id) {\n const { history } = this.props;\n history.push(\"/stocks/\"+id);\n }\n\n handleRedirectToInvoice(id){\n const { history } = this.props;\n history.push(\"/invoices/\"+id);\n }\n\n onNavigateStocks() {\n const { history } = this.props;\n history.push(\"/stocks\");\n }\n\n onNavigateInvoices() {\n const { history } = this.props;\n history.push(\"/invoices\");\n }\n\n onNavigateInfos() {\n const { history } = this.props;\n history.push(\"/backoffice\");\n }\n\n verifyLogin() {\n return localStorage.getItem(\"token\") == null;\n }\n\n getQueryString = (page, filter, count) => {\n let queryString = \"admin/info\";\n if (!!count) {\n queryString += \"Count\";\n if (!!filter) queryString += `?filter=${filter}`;\n return queryString;\n }\n if (!!page || !!filter) {\n queryString += \"?\";\n if (!!page || page === 0) queryString += `page=${page}`;\n if ((!!page || page === 0) && !!filter) queryString += \"&\";\n if (!!filter) queryString += `filter=${filter}`;\n }\n return queryString;\n };\n\n async fetchSuppliers(page, filter) {\n const { showInfos } = this.props;\n this.setState({ pending: true });\n const headers = {\n method: \"GET\",\n headers: {\n Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\n },\n };\n await fetch(\n process.env.REACT_APP_SERVER_LINK +\n this.getQueryString(page, filter, true),\n headers\n )\n .then((res) => res.json())\n .then((total) => {\n const totalRows = total[0] ? total[0].value : 10;\n fetch(\n process.env.REACT_APP_SERVER_LINK +\n this.getQueryString(page, filter, false),\n headers\n )\n .then((response) => response.json())\n .then((data) => {\n if (!!data.message) this.logout();\n showInfos(data);\n if (data.length !== 0) {\n const pages = Math.ceil(totalRows / 10);\n this.setState({\n pages,\n currentItems: data,\n totalItems: totalRows,\n });\n } else {\n this.setState({\n pages: 0,\n currentItems: [],\n totalItems: 0,\n });\n }\n })\n .catch((e) => {\n console.err(e);\n })\n .finally(() => this.setState({ pending: false }));\n })\n .catch((err) => {\n console.log(err);\n });\n }\n\n async componentDidMount() {\n const { history } = this.props;\n if (this.verifyLogin()) history.push(\"/\");\n else await this.fetchSuppliers(0);\n }\n\n getDot = (index, selected) => (\n this.handleChangeTablePage(index)}\n >\n {index + 1}\n \n );\n getSpaceDot = () => ;\n\n renderPoints(total, current) {\n const r = [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n total - 1,\n total - 2,\n total - 3,\n total - 4,\n total - 5,\n total - 6,\n total - 7,\n total - 8,\n total - 9,\n total - 10,\n ];\n for (let i = current - 40; i < current + 40; i++) {\n if (i > 0 && i < total - 5) r.push(i);\n }\n const uniqueArray = [...new Set(r.sort((a, b) => (a > b ? 1 : -1)))];\n const dots = [];\n for (let i = 0; i < uniqueArray.length; i++) {\n const value = uniqueArray[i];\n dots.push(this.getDot(value, value === current));\n if (i + 1 < uniqueArray.length && value + 1 !== uniqueArray[i + 1])\n dots.push(this.getSpaceDot());\n }\n return dots;\n }\n\n render() {\n const {\n //tab,\n pending,\n currentItems,\n editItem,\n currentTablePage,\n pages,\n filter,\n } = this.state;\n //const isSupplier = localStorage.getItem(\"isSupplier\") === \"true\";\n\n return (\n
\n
\n
\n
{localStorage.getItem(\"name\")}
\n \n
\n
\n
\n \n
\n
\n
\n {pending ? (\n
\n {/* AE fixes\n \n
Loading suppliers...
\n */}\n A carregar\n
\n ) : (\n <>\n
\n
\n
this.handleChange(0)}>\n Stocks\n
\n
\n
this.handleChange(1)}>\n Invoices\n
\n
\n
Backoffice
\n
\n
\n
Search
\n
\n \n \n {!!filter && (\n \n )}\n
\n
\n
\n\n {/* AE fixes\n \n \n */}\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {currentItems.length > 0 ? (\n currentItems.map((curr) => {\n const date =\n !!curr.login_date &&\n dateFormat.invertedFullDateWithTime(curr.login_date);\n if (\n !!editItem &&\n !!editItem.oldData &&\n curr.id === editItem.oldData.id\n ) {\n return [\n \n \n \n \n \n \n \n \n \n \n \n \n {\n //Inserir td com icon para invoices com vendor number\n }\n ,\n ];\n }\n return [\n \n \n \n this.handleRedirectToStock(curr.number)\n }\n >\n {curr.number}\n \n \n \n \n \n \n \n \n \n \n ,\n ];\n })\n ) : (\n \n
No records to display
\n \n )}\n
ActionsVendor NumberNameEmailMobileContact nameVATStatusLogin DatePasswordInvoices
\n \n \n \n \n \n \n \n \n \n \n \n \n {curr.vat}\n {!!curr.state ? (\n
\n \n \n
\n ) : (\n
\n \n \n
\n )}\n
\n {!!curr.login_date\n ? `${date.date} ${date.time}`\n : \"\"}\n \n \n \n \n this.handleRedirectToInvoice(curr.number)\n }\n />\n
\n this.handleEdit(curr)}\n />\n {curr.name}{curr.email}{curr.mobile}{curr.contact_name}{curr.vat}{!!curr.state ? \"Active\" : \"Inactive\"}\n {!!curr.login_date ? `${date.date} ${date.time}` : \"\"}\n ******\n \n this.handleRedirectToInvoice(curr.number)\n }\n />\n
\n
\n
\n {pages < 100\n ? [...Array(pages)].map((curr, index) => [\n this.getDot(index, currentTablePage === index),\n ])\n : this.renderPoints(pages, currentTablePage)}\n
\n \n )}\n \n
\n );\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Backoffice);\n","import React, { Component } from \"react\";\r\nimport \"./Profile.css\";\r\n//import Tabs from \"./Tabs\";\r\nimport { connect } from \"react-redux\";\r\n\r\nconst mapStateToProps = (state) => {\r\n return {\r\n infos: state.infos,\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = (dispatch) => {\r\n return {\r\n showInfos: (data) => dispatch({ type: \"SHOW_INFOS\", payload: data }),\r\n };\r\n};\r\n\r\nclass Profile extends Component {\r\n constructor() {\r\n super();\r\n this.state = {\r\n error: \"\",\r\n contact_name: \"\",\r\n success: \"\",\r\n country: \"\",\r\n vat: \"\",\r\n sap: \"\",\r\n profileFields: {\r\n companyname: \"\",\r\n email: \"\",\r\n contact_name: \"\",\r\n mobile: \"\",\r\n },\r\n passwordFields: {\r\n password: \"\",\r\n confirmPassword: \"\",\r\n },\r\n changed: false,\r\n changePassword: false,\r\n tab: 2,\r\n };\r\n\r\n this.dismissError = this.dismissError.bind(this);\r\n this.dismissSuccess = this.dismissSuccess.bind(this);\r\n this.handleChangePassword = this.handleChangePassword.bind(this);\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleChangeInput = this.handleChangeInput.bind(this);\r\n this.handleChangePasswordInput = this.handleChangePasswordInput.bind(this);\r\n this.save = this.save.bind(this);\r\n this.savePassword = this.savePassword.bind(this);\r\n }\r\n\r\n async componentDidMount() {\r\n const { history, showInfos } = this.props;\r\n if (this.verifyLogin()) {\r\n history.push(\"/\");\r\n } else {\r\n await fetch(process.env.REACT_APP_SERVER_LINK + \"supplier/info\", {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\r\n },\r\n })\r\n .then((res) => res.json())\r\n .then((data) => {\r\n showInfos(data);\r\n })\r\n .catch();\r\n\r\n this.handleChange();\r\n }\r\n }\r\n\r\n handleChangeTab = (tab) => {\r\n this.setState({ tab });\r\n switch (tab) {\r\n case 0:\r\n return this.onNavigateStocks();\r\n case 1:\r\n return this.onNavigateInvoices();\r\n default:\r\n return;\r\n }\r\n };\r\n\r\n onNavigateStocks() {\r\n const { history } = this.props;\r\n history.push(\"/stocks\");\r\n }\r\n\r\n onNavigateInvoices() {\r\n const { history } = this.props;\r\n history.push(\"/invoices\");\r\n }\r\n\r\n onNavigateInfos() {\r\n const { history } = this.props;\r\n history.push(\"/profile\");\r\n }\r\n\r\n verifyLogin() {\r\n return localStorage.getItem(\"token\") == null;\r\n }\r\n\r\n dismissError() {\r\n this.setState({ error: \"\" });\r\n }\r\n\r\n dismissSuccess() {\r\n this.setState({ success: \"\" });\r\n }\r\n\r\n save() {\r\n const { profileFields } = this.state;\r\n const { companyname, email, contact_name, mobile } = profileFields;\r\n fetch(process.env.REACT_APP_SERVER_LINK + \"supplier/update\", {\r\n method: \"POST\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\r\n },\r\n body: JSON.stringify({\r\n email,\r\n name: companyname,\r\n mobile,\r\n contact_name,\r\n }),\r\n }).then((response) => {\r\n if (response.ok)\r\n this.setState({\r\n success: \"Information changed successfully!\",\r\n changed: false,\r\n });\r\n else\r\n this.setState({\r\n error: \"Something must be wrong. Please again try later.\",\r\n changed: false,\r\n });\r\n return response.json();\r\n });\r\n }\r\n\r\n savePassword() {\r\n const { passwordFields, vat } = this.state;\r\n const { password, confirmPassword } = passwordFields;\r\n if (password.length < 8)\r\n this.setState({\r\n error: \"Password too short. Must have at least 8 characters.\",\r\n });\r\n else if (password !== confirmPassword)\r\n this.setState({ error: \"Passwords aren't matching\" });\r\n else {\r\n fetch(process.env.REACT_APP_SERVER_LINK + \"supplier/update\", {\r\n method: \"POST\",\r\n headers: {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: \"Bearer \" + localStorage.getItem(\"token\"),\r\n },\r\n body: JSON.stringify({\r\n vat,\r\n password,\r\n }),\r\n }).then((response) => {\r\n if (response.ok)\r\n this.setState({\r\n success: \"Password changed successfully!\",\r\n changed: false,\r\n changePassword: false,\r\n passwordFields: {\r\n password: \"\",\r\n confirmPassword: \"\",\r\n },\r\n });\r\n else\r\n this.setState({\r\n error: \"Something must be wrong. Please try again later.\",\r\n changed: false,\r\n });\r\n return response.json();\r\n });\r\n }\r\n }\r\n\r\n handleChange() {\r\n const { infos } = this.props;\r\n if (!infos || !infos.infos || !infos.infos[0]) return;\r\n const { name, email, vat, contact_name, mobile, number } = infos.infos[0];\r\n this.setState({\r\n vat,\r\n sap: number,\r\n profileFields: {\r\n companyname: name,\r\n email,\r\n contact_name,\r\n mobile,\r\n },\r\n });\r\n }\r\n\r\n handleChangeInput(event) {\r\n const { profileFields } = this.state;\r\n this.setState({\r\n profileFields: {\r\n ...profileFields,\r\n [event.target.id]: event.target.value,\r\n },\r\n changed: true,\r\n error: null,\r\n success: null,\r\n });\r\n }\r\n\r\n handleChangePasswordInput(event) {\r\n const { passwordFields } = this.state;\r\n this.setState({\r\n passwordFields: {\r\n ...passwordFields,\r\n [event.target.id]: event.target.value,\r\n },\r\n changed: true,\r\n });\r\n }\r\n\r\n handleChangePassword = () => {\r\n const { changePassword } = this.state;\r\n this.setState(\r\n {\r\n changePassword: !changePassword,\r\n changed: false,\r\n error: null,\r\n success: null,\r\n },\r\n () => this.handleChange()\r\n );\r\n };\r\n\r\n logout() {\r\n const { history } = this.props;\r\n localStorage.removeItem(\"token\");\r\n history.push(\"/\");\r\n }\r\n\r\n render() {\r\n // NOTE: I use data-attributes for easier E2E testing\r\n // but you don't need to target those (any css-selector will work)\r\n /* \r\n }*/\r\n //const isSupplier = localStorage.getItem(\"isSupplier\") === \"true\";\r\n const {\r\n profileFields,\r\n changed,\r\n //tab,\r\n changePassword,\r\n passwordFields,\r\n vat,\r\n sap,\r\n error,\r\n success,\r\n } = this.state;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
{localStorage.getItem(\"name\")}
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
this.handleChangeTab(0)}>\r\n Stocks\r\n
\r\n
\r\n
this.handleChangeTab(1)}>\r\n Invoices\r\n
\r\n
\r\n
Profile
\r\n
\r\n {/* AE fixes\r\n \r\n */}\r\n
\r\n
\r\n {changePassword ? (\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 {error && (\r\n \r\n {error}\r\n
\r\n )}\r\n {success && (\r\n \r\n {success}\r\n
\r\n )}\r\n
\r\n\r\n
\r\n this.handleChangePassword()}\r\n >\r\n {changePassword ? \"Cancel\" : \"Change password\"}\r\n \r\n\r\n \r\n changePassword ? this.savePassword() : this.save()\r\n }\r\n >\r\n Save\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Profile);\r\n","import React, { Component } from \"react\";\r\nimport \"./PrivacyPolicy.css\";\r\nexport default class PrivacyPolicy extends Component {\r\n constructor() {\r\n super();\r\n }\r\n\r\n render() {\r\n // NOTE: I use data-attributes for easier E2E testing\r\n // but you don't need to target those (any css-selector will work)\r\n //CHANGED PRIVACY POLICY FROM PT TO EN\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
Privacy Policy
\r\n
A. General Part
\r\n

\r\n This Privacy Policy intends to give to the Users of the websites\r\n hosted at supplynet.autoeuropa.pt (“Site”), detailed information on\r\n how Volkswagen  Autoeuropa, Lda., with head office at Quinta da\r\n Marquesa 2954-024 Quinta do Anjo, registered at the Palmela\r\n Commercial Registry Office, sob o with the corporate taxpayer number\r\n 502 616 695, hereinafter “Volkswagen Autoeuropa” may require you to\r\n provide personal data, i.e. information provided by you that allows\r\n Volkswagen Autoeuropa to identify and/or contact you (\"personal\r\n data\").\r\n

\r\n

\r\n Through this Privacy Policy, Volkswagen Autoeuropa provides you,\r\n pursuant to your right to information set out in the General Data\r\n Protection Regulation (Regulation (EU) 2016/679, of the European\r\n Parliament and of the Council, of 27 April 2016) and the Personal\r\n Data Protection Act (Law No. 58/2019, 8 August), with detailed\r\n information about the nature of the data collected and about the\r\n purpose and processing that will be carried out in respect of your\r\n Personal Data.\r\n

\r\n
\r\n 1. User data collection and processing\r\n
\r\n

\r\n Volkswagen Autoeuropa collects and processes the following user\r\n data, which applies depending on the purpose (see point 6 of this\r\n Policy):\r\n

\r\n
    \r\n
  • \r\n Identification data: name of contact person;\r\n
  • \r\n
  • \r\n Contact data: e-mail and telephone contact;\r\n
  • \r\n
  • \r\n Professional data: company and corporate tax number.\r\n
  • \r\n
\r\n
2. Communication of data
\r\n

\r\n The personal data collected is not shared with third parties without\r\n the user's consent, with the exception of the following situations:\r\n

\r\n
    \r\n
  • \r\n Communications required by law, in compliance with a certain legal\r\n obligation;\r\n
  • \r\n
  • \r\n Suppliers providing services as Subcontractors (see point 2.1. of\r\n this Privacy Policy).\r\n
  • \r\n
\r\n
2.1 Processors
\r\n

\r\n As part of the processing of User Data, Volkswagen Autoeuropa uses\r\n or may use processors whose on its behalf, and in accordance with\r\n its instructions processes the User's Data, in accordance with the\r\n law and this Privacy Policy.\r\n

\r\n

\r\n These processors may not transmit the User Data to other entities\r\n without the prior written authorization.\r\n

\r\n

\r\n Volkswagen Autoeuropa undertakes to only subcontract the processors\r\n that have implemented the appropriate technical and organizational\r\n measures, to guarantee the defense of the User's rights. All\r\n entities sub-contracted by Volkswagen Autoeuropa shall be bound by\r\n Volkswagen Autoeuropa by means of a written agreement which covers:\r\n the object and duration of the processing, the nature and purpose of\r\n the processing, the type of personal data, the categories of data\r\n subjects and the rights and obligations of the parties.\r\n

\r\n
\r\n 3. General principles applicable to the processing of user data\r\n
\r\n

\r\n In terms of general principles regarding the processing of personal\r\n data, Volkswagen Autoeuropa undertakes to ensure that the User Data\r\n processed by it is:\r\n

\r\n
    \r\n
  • \r\n Subject to processing in accordance with the law, as well as being\r\n fair and transparent in relation to the User;\r\n
  • \r\n
  • \r\n Collected for specific purposes that are objective and legitimate,\r\n not being processed subsequently in any way that runs contrary to\r\n these purposes;\r\n
  • \r\n
  • \r\n Appropriate, justified and limited to what is necessary in\r\n relation to the purposes for which these data are processed;\r\n
  • \r\n
  • \r\n Accurate and updated whenever necessary with all necessary\r\n measures being taken to ensure that inaccurate data, considering\r\n the purposes for which they are processed, are erased, or\r\n corrected without delay;\r\n
  • \r\n
  • \r\n Kept in a manner that allows the identification of the User only\r\n for the period necessary for the purposes for which the data are\r\n to be processed;\r\n
  • \r\n
  • \r\n Handled in a manner that ensures data security, including\r\n protection against their unauthorized or illegal treatment and\r\n against their loss, destruction, or unforeseen damage, with\r\n appropriate technical or organizational measures being taken.\r\n
  • \r\n
\r\n
\r\n 4. Lawfulness for processing personal data\r\n
\r\n

\r\n Data processing carried out by Volkswagen Autoeuropa is permitted\r\n and legitimate when at least one of the following situations occurs:\r\n

\r\n
    \r\n
  • \r\n The User has given his/her free, positive, explicit and\r\n unequivocal consent to the processing of his/her for one or more\r\n specific purposes;\r\n
  • \r\n
  • \r\n The processing is necessary for the implementation of a contract\r\n in which the User is a party, or for pre-contractual procedures at\r\n the request of the User;\r\n
  • \r\n
  • \r\n The processing is necessary for the fulfillment of a legal\r\n obligation to which Volkswagen Autoeuropa is subject;\r\n
  • \r\n
  • \r\n Processing is necessary for the defense of the vital interests of\r\n the User or another individual;\r\n
  • \r\n
  • \r\n The processing is necessary for legitimate interests pursued by\r\n Volkswagen Autoeuropa or by third parties (unless the interests or\r\n fundamental rights and freedoms of the User requiring the\r\n protection of personal data prevail).\r\n
  • \r\n
\r\n

\r\n Volkswagen Autoeuropa undertakes to ensure that the processing of\r\n User Data is only done under the conditions cited above and\r\n respecting the principles mentioned above.\r\n

\r\n

\r\n When the processing of the User Data is performed by Volkswagen\r\n Autoeuropa is based on the User's consent, the User has the right to\r\n withdraw his consent at any time. Such withdrawal of the consent,\r\n however, does not jeopardize the legality of the processing carried\r\n out by Volkswagen Autoeuropa, based on the consent previously given\r\n by the User.\r\n

\r\n
5. Data retention
\r\n

\r\n The length of time during which the data is filed and stored varies\r\n according to the purpose for which the information is being\r\n processed, being stored only for the necessary time for the\r\n fulfillment of the purposes for which they are processed. There are\r\n legal requirements that require the data to be preserved for a\r\n minimum period. Thus, and where there is no specific legal\r\n obligation, the data will be stored and kept only for the minimum\r\n period necessary for the purposes that led to their collection or\r\n subsequent processing, which at the end of the period will be\r\n eliminated.\r\n

\r\n
\r\n 6. Purposes of processing personal data\r\n
\r\n

\r\n In general, Volkswagen Autoeuropa uses the User Data for the\r\n following purposes:\r\n

\r\n
    \r\n
  • \r\n Management of partnerships with current and potential suppliers;\r\n
  • \r\n
  • \r\n Management of consignment stocks in Volkswagen Autoeuropa\r\n warehouses;\r\n
  • \r\n
  • \r\n User management (login and password creation).\r\n
  • \r\n
\r\n
\r\n 7. Technical, organizational and security measures implemented\r\n
\r\n

\r\n In order to guarantee the security of the User Data and maximum\r\n confidentiality, Volkswagen Autoeuropa processes the information you\r\n provided to us in an absolutely confidential manner, in accordance\r\n with its internal security, and confidentiality policies and\r\n procedures, which are updated periodically as required, as well as\r\n the terms and conditions legally set out.\r\n

\r\n

\r\n As a function of the nature, scope, context and purpose of data\r\n processing, as well as the risks arising from the treatment of the\r\n rights and freedoms of the User, Volkswagen Autoeuropa undertakes to\r\n apply, both when defining the method and timing of handling the\r\n data, the technical and organizational measures necessary and\r\n appropriate for the protection of User Data and compliance with\r\n legal requirements.\r\n

\r\n

\r\n It also undertakes to ensure that, by default, only data that are\r\n necessary for each specific handling purpose are processed and that\r\n such data are not made available without human intervention to an\r\n indeterminate number of people.\r\n

\r\n

\r\n In general terms, Volkswagen Autoeuropa adopts the following:\r\n

\r\n
    \r\n
  • \r\n Regular audits to identify the effectiveness of the technical and\r\n organizational measures implemented;\r\n
  • \r\n
  • \r\n Training of personnel involved in data processing operations;\r\n
  • \r\n
  • \r\n Pseudonymization and coding of personal data;\r\n
  • \r\n
  • \r\n Mechanisms capable of ensuring the permanent confidentiality,\r\n availability and resilience of information systems;\r\n
  • \r\n
  • \r\n Mechanisms to ensure the restoration of information systems and\r\n access to personal data in a timely manner in the event of a\r\n physical or technical incident.\r\n
  • \r\n
\r\n
\r\n 8. Transfer of data outside the European Union\r\n
\r\n

\r\n The personal data collected and used by Volkswagen Autoeuropa are\r\n not made available to third parties established outside the European\r\n Union. If, in the future, such a transfer takes place for the\r\n above-mentioned reasons, Volkswagen Autoeuropa undertakes to ensure\r\n that the transfer complies with the applicable legal provisions, in\r\n particular as regards determining the suitability of such country\r\n with regard to data protection and the requirements applicable to\r\n such transfers.\r\n

\r\n
\r\n
B. User Data Protection rights
\r\n
9. Right of access
\r\n
\r\n

\r\n Volkswagen Autoeuropa guarantees the means that allow the user to\r\n consult his or her Personal Data. The User has the right to obtain\r\n confirmation from Volkswagen Autoeuropa that personal data\r\n concerning him or her are processed and, if applicable, the right to\r\n access his/her personal data. On request Volkswagen Autoeuropa will\r\n provide you, free of charge, with a copy of your data being\r\n processed. The provision of further copies upon request by you may\r\n incur administrative costs.\r\n

\r\n
\r\n 10. Right to rectification\r\n
\r\n

\r\n The User has the right to request, at any time, correction of his or\r\n her Personal Data, as well as the right to have incomplete personal\r\n data completed, including by means of an additional declaration.\r\n

\r\n

\r\n In the event of limitation of processing of data, Volkswagen\r\n Autoeuropa shall inform each recipient/entity to whom the data has\r\n been transmitted of the limitation, unless such communication proves\r\n impossible or involves a disproportionate effort on behalf of\r\n Volkswagen Autoeuropa.\r\n

\r\n
\r\n 11. Right to erasure (\"right to be forgotten\")\r\n
\r\n

\r\n You have the right to obtain, on the part of Volkswagen Autoeuropa,\r\n deletion of your data when one of the following reasons apply:\r\n

\r\n
    \r\n
  • \r\n The User Data is no longer required for the purpose for which it\r\n was collected or processed;\r\n
  • \r\n
  • \r\n The User withdraws the consent on which the data processing is\r\n based and there is no other legal basis for such processing;\r\n
  • \r\n
  • \r\n The User opposes the treatment under the right of opposition and\r\n there are no prevailing legitimate interests justifying the\r\n processing;\r\n
  • \r\n
  • \r\n If User Data is processed illegally;\r\n
  • \r\n
  • \r\n If User Data must be deleted in order to comply with a legal\r\n obligation to which Volkswagen Autoeuropa is subject.\r\n
  • \r\n
\r\n

\r\n Under the applicable legal terms, Volkswagen Autoeuropa is under no\r\n obligation to delete User Data to the extent that the processing\r\n proves necessary to fulfill a legal obligation to which Volkswagen\r\n Autoeuropa is subject or for the purposes of declaring, exercising\r\n or defending Volkswagen Autoeuropa 's rights in judicial\r\n proceedings.\r\n

\r\n

\r\n In the event of the data being deleted, Volkswagen Autoeuropa shall\r\n inform each recipient/entity to whom the data has been transmitted\r\n of the deletion, unless such communication proves impossible or\r\n involves a disproportionate effort on behalf of\r\n Volkswagen Autoeuropa.\r\n

\r\n

\r\n When Volkswagen Autoeuropa has made the User Data public and is\r\n obliged to delete it under the right of such deletion,\r\n Volkswagen Autoeuropa undertakes to ensure reasonable measures,\r\n including of a technical nature, taking into account available\r\n technology and costs of its application to inform those responsible\r\n for the effective processing of personal data for which the User has\r\n requested deletion of the links to such personal data, as well as\r\n copies or reproductions thereof.\r\n

\r\n
\r\n 12. Right to restriction of processing\r\n
\r\n

\r\n The data subject shall have the right to obtain from the controller\r\n restriction of processing where one of the following applies:\r\n

\r\n
    \r\n
  • \r\n If the accuracy of personal data is challenged, for a period that\r\n allows Volkswagen Autoeuropa to verify its accuracy;\r\n
  • \r\n
  • \r\n If the processing is unlawful and the User opposes the deletion of\r\n the data, requesting, instead, a limitation on its use;\r\n
  • \r\n
  • \r\n If Volkswagen Autoeuropa no longer requires the User Data for\r\n processing purposes, but such data is required by the User for the\r\n purposes of declaring, exercising or defending their rights in\r\n judicial proceedings;\r\n
  • \r\n
  • \r\n In the event of the User objecting to the processing, until it is\r\n verified that Volkswagen Autoeuropa 's legitimate reasons prevail\r\n over those of the User.\r\n
  • \r\n
\r\n

\r\n When User Data is subject to limitations, they may only, with the\r\n exception of storage, be processed with the consent of the User or\r\n for the purpose of declaring, exercising or defending a right in\r\n judicial proceedings, defending the rights of another natural or\r\n legal person, or for public interest reasons provided by law.\r\n

\r\n

\r\n The User who has obtained the limitation of the processing of their\r\n data in the above cases shall be informed by Volkswagen Autoeuropa\r\n before the limitation on processing is annulled.\r\n

\r\n

\r\n In the event of limitation of processing of data,\r\n Volkswagen Autoeuropa shall inform each recipient/entity to whom the\r\n data has been transmitted of the limitation, unless such\r\n communication proves impossible or involves a disproportionate\r\n effort on behalf of Volkswagen Autoeuropa.\r\n

\r\n
\r\n 13. Right of data portability\r\n
\r\n

\r\n The User has the right to receive personal data concerning him/her\r\n and which he/she has provided to Volkswagen Autoeuropa, in a\r\n structured, current and automated reading format, and the right to\r\n transmit such data to another person responsible for its processing,\r\n if:\r\n

\r\n
    \r\n
  • \r\n The processing is based on consent or a contract to which the User\r\n is a party; and\r\n
  • \r\n
  • \r\n The processing is performed by automated means.\r\n
  • \r\n
\r\n

\r\n The right of portability does not include inferred or derived data,\r\n i.e. personal data that are generated by Volkswagen Autoeuropa\r\n because of, or resulting from, analysis of the data being processed.\r\n Users are entitled to have their personal data transmitted directly\r\n between those responsible for the processing, whenever this is\r\n technically possible.\r\n

\r\n
14. Right to object
\r\n

\r\n Users have the right to object at any time to the processing of\r\n personal data based on the legitimate interests pursued by\r\n Volkswagen Autoeuropa or when the processing is carried out for\r\n purposes other than those for which personal data were collected,\r\n including the definition of profiles, or when personal data are\r\n processed for statistical purposes.\r\n

\r\n

\r\n Volkswagen Autoeuropa shall terminate the processing of User Data\r\n unless it can demonstrate urgent and legitimate reasons for such\r\n processing that prevail over the User's interests, rights and\r\n freedoms, or for the purposes of declaring, exercising or defending\r\n Volkswagen Autoeuropa 's rights in legal proceedings.\r\n

\r\n

\r\n When User Data is processed for the purpose of direct sales\r\n (marketing), Users have the right to oppose at any time the\r\n processing of the data that concern them for the purposes of said\r\n marketing, which includes the definition of profiles insofar as it\r\n relates to direct marketing. If Users object to the processing of\r\n their data for the purposes of direct marketing,\r\n Volkswagen Autoeuropa must cease the processing of the data for this\r\n purpose.\r\n

\r\n

\r\n Users also have the right not to be subject to any decision made\r\n solely on the basis of automated processing, including the\r\n definition of profiles, that has an effect in the legal sphere or\r\n has a significant similar effect, unless the decision:\r\n

\r\n
    \r\n
  • \r\n Is necessary for the signing or implementation of a contract\r\n between the User and Volkswagen Autoeuropa;\r\n
  • \r\n
  • \r\n Is authorized by legislation to which Volkswagen Autoeuropa is\r\n subject; or\r\n
  • \r\n
  • \r\n Is based on the explicit consent of the User.\r\n
  • \r\n
\r\n
\r\n 15. Procedures for the exercising of rights by the user\r\n
\r\n

\r\n The right of access, right to rectification, right of elimination,\r\n right to restriction, right to data portability and right to object\r\n may be all exercised by the User by contacting the Data Protection\r\n Officer of Volkswagen Autoeuropa at  \r\n \r\n dpo@volkswagen.pt\r\n \r\n  or by written communication to Quinta da Marquesa, 2954-024 Quinta\r\n do Anjo.\r\n

\r\n

\r\n Volkswagen Autoeuropa will respond in writing (including by\r\n electronic means) to the User's request within a maximum period of\r\n one month from the receipt of the request, except in particularly\r\n complex cases, for which this period may be extended up to two\r\n months.\r\n

\r\n

\r\n If the requests submitted by the User are manifestly unjustified or\r\n excessive, especially due to their repetitive nature,\r\n Volkswagen Autoeuropa reserves the right to charge administrative\r\n costs or refuse to comply with the request.\r\n

\r\n

\r\n Please note that you have also the right to lodge a complaint before\r\n the competent supervisory authority — National Data Protection\r\n Committee, with its head office at Av. D. Carlos I, 134 - 1.º\r\n 1200-651 Lisbon, with the following phone number (+351) 213928400\r\n and the following e-mail:\r\n \r\n geral@cnpd.pt\r\n \r\n .\r\n

\r\n
16. Personal data breach
\r\n

\r\n In the event of a personal data breach and insofar as such a breach\r\n is likely to entail a high risk to the User's rights and freedoms,\r\n Volkswagen Autoeuropa undertakes to inform the User, after the\r\n knowledge of such incident, without undue delay.\r\n

\r\n

\r\n Under the legislation, communication to the User is not required in\r\n the following cases:\r\n

\r\n
    \r\n
  • \r\n Where Volkswagen Autoeuropa has implemented appropriate protection\r\n measures, both technical and organisational, and those measures\r\n have been applied to the personal data affected by the personal\r\n data breach, especially measures rendering the personal data\r\n unintelligible to any person not authorised to access such data,\r\n such as encryption;\r\n
  • \r\n
  • \r\n When the personal data breach is not likely to result in a high\r\n risk to the rights and freedoms of natural persons; or\r\n
  • \r\n
  • \r\n If communication to the User implies a disproportionate effort on\r\n behalf of Volkswagen Autoeuropa. In this case, Volkswagen\r\n Autoeuropa will release a public communication or take a similar\r\n action by which the User will be informed.\r\n
  • \r\n
\r\n
\r\n
C. Final part
\r\n
17. Amendments to the privacy policy
\r\n
\r\n

\r\n Volkswagen Autoeuropa reserves the right to make changes to this\r\n Privacy Policy at any time. We advise you to read this document\r\n regularly.\r\n

\r\n
\r\n 18. Applicable law and jurisdiction\r\n
\r\n

\r\n The privacy policy, as well as the collection, processing or\r\n transmission of user data, are governed by the provisions of\r\n Regulation (EU) 2016/679, of the European Parliament and of the\r\n Council, of 27 April 2016 and by the legislation and regulations\r\n applicable in Portugal.\r\n

\r\n

\r\n Any disputes arising from the validity, interpretation or execution\r\n of the privacy policy, or which are related to the collection,\r\n processing or transmission of user data, shall be submitted\r\n exclusively to the jurisdiction of the judicial courts of the\r\n district of Setúbal, without prejudice to the applicable mandatory\r\n legal rules.\r\n

\r\n\r\n

/September 2021

\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import \"react-app-polyfill/ie11\";\nimport \"react-app-polyfill/stable\";\nimport React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./components/app/App\";\nimport { Provider } from \"react-redux\";\nimport store from \"./store\";\n\nimport LoginPage from \"./components/login/LoginPage\";\nimport Register from \"./components/register/Register\";\nimport Home from \"./components/home/Home\";\nimport Stocks from \"./components/stocks/Stocks\";\nimport Invoices from \"./components/invoices/Invoices\";\nimport Backoffice from \"./components/infos/Backoffice\";\nimport Profile from \"./components/profile/Profile\";\nimport PrivacyPolicy from \"./components/privacyPolicy/PrivacyPolicy\";\nimport { Router, Route, Switch } from \"react-router-dom\";\nimport history from \"./history\";\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n"],"sourceRoot":""}