{"version":3,"sources":["environments/environment.js","services/Api.js","services/Auth.js","services/Clients.js","services/ClientsGroups.js","store/actions/getClients.js","services/Products.js","services/ProductsGroups.js","services/ProductsLines.js","store/actions/getProducts.js","services/Exchange.js","store/actions/getExchanges.js","services/Sellers.js","store/actions/getSellers.js","components/sidenav/components/Header.js","components/sidenav/components/FeaturesList.js","constants/constants.js","pages/main/forecast/components/YearCard.js","components/sidenav/Sidenav.js","components/PageHeader/PageHeader.js","pages/main/clients/components/Filter.js","pages/main/clients/components/ClientsList.js","pages/main/clients/components/NewClient.js","pages/main/loading/LoadingPage.js","pages/main/clients/ClientsPage.js","pages/main/products/components/Filter.js","pages/main/products/components/ProductsList.js","pages/main/products/components/NewProduct.js","pages/main/products/ProductsPage.js","components/Currency/index.js","pages/main/exchange/components/MonthExchangeCard.js","pages/main/exchange/components/NewMonthExchange.js","pages/main/exchange/ExchangePage.js","pages/main/sellers/components/Filter.js","pages/main/sellers/components/SellersList.js","pages/main/sellers/components/NewSeller.js","pages/main/sellers/SellersPage.js","services/Login.js","pages/main/result-state/clients/components/filter/CalendarFilter.js","pages/main/sales/components/Filter.js","services/Sales.js","pages/main/sales/components/EmptyContainer.js","pages/main/sales/components/SalesList.js","pages/main/sales/components/UploadExcelModal.js","pages/main/sales/components/NewSaleModal.js","pages/main/sales/SalesPage.js","pages/main/forecast/components/Filter.js","services/Forecast.js","pages/main/forecast/components/ForecastList.js","pages/main/forecast/components/NewForecast.js","pages/main/forecast/components/UploadExcelModal.js","pages/main/forecast/ForecastPage.js","services/Graph.js","pages/main/result-state/clients/components/filter/FilterPills.js","pages/main/result-state/clients/components/filter/FilterMenu.js","pages/main/result-state/clients/components/filter/SelectClientModal.js","pages/main/result-state/clients/components/filter/ClientCard.js","pages/main/result-state/clients/components/graphs/ForecastGraph.js","pages/main/result-state/clients/components/graphs/ActualForecastSummery.js","pages/main/result-state/clients/components/graphs/RankingGraph.js","pages/main/result-state/clients/components/graphs/SalesList.js","pages/main/result-state/clients/components/graphs/RevenueList.js","pages/main/result-state/clients/components/graphs/ConsumeGraph.js","pages/main/result-state/clients/ClientsStatePage.js","pages/main/result-state/products/components/filters/FilterPills.js","pages/main/result-state/products/components/filters/FilterMenu.js","pages/main/result-state/products/components/filters/SelectProductModal.js","pages/main/result-state/products/components/filters/ProductCard.js","pages/main/result-state/products/components/graphs/ForecastGraph.js","pages/main/result-state/products/components/graphs/RankingGraph.js","pages/main/result-state/products/components/graphs/RevenueList.js","pages/main/result-state/products/components/graphs/ConsumeGraph.js","pages/main/result-state/products/ProductsStatePage.js","pages/main/result-state/sales/components/SearchFilter.js","pages/main/result-state/sales/components/Filter.js","services/Commitment.js","pages/main/result-state/sales/components/NewCommitmentModal.js","pages/main/result-state/sales/components/SalesStateList.js","pages/main/result-state/sales/SalesStatePage.js","pages/main/profile/components/Header.js","pages/main/profile/components/AccountCard.js","pages/main/profile/components/PasswordCard.js","pages/main/profile/ProfilePage.js","pages/main/clients/groups/GroupsList.js","pages/main/clients/groups/NewGroup.js","pages/main/clients/groups/GroupsPage.js","pages/main/result-state/totals/components/graphs/ForecastGraph.js","pages/main/result-state/totals/components/graphs/ActualForecastSummery.js","pages/main/result-state/totals/components/graphs/RankingProductsGraph.js","pages/main/result-state/totals/components/graphs/RankingClientsGraph.js","pages/main/result-state/totals/TotalsPage.js","pages/main/Main.js","store/actions/getUserdata.js","store/actions/campaign.js","pages/accounts/login/LoginPage.js","pages/accounts/recovery/RecoveryPage.js","components/App.js","store/reducers/campaignReducer.js","store/reducers/clientsReducer.js","store/reducers/exchangeReducer.js","store/reducers/productsReducer.js","store/reducers/sellersReducer.js","store/reducers/sidenavReducer.js","store/reducers/userdataReducer.js","store/reducers/index.js","store/store.js","index.js"],"names":["env","production","url","front_url","Api","Axios","create","baseURL","environment","authService","isAuthenticated","document","cookie","indexOf","getSelfData","get","withCredentials","updateLocale","newLocale","put","idioma","updatePassword","passwordData","post","updatePasswordOutside","recoveryPasswordPetition","emailData","ping","clientsService","year","jsonData","id","delete","clientId","campaign","associate","clientsGroupsService","groupId","getClients","dispatch","type","then","response","payload","data","catch","err","getClientsGroups","productsService","productId","getPriceFromYear","product","price","productsGroupsService","usersID","JSON","stringify","productsLinesService","getProducts","getProductsGroups","getProductsLines","exchangeService","month","getExchanges","sellersService","invite","suspend","sellerId","user_id","activate","getSellers","Header","props","React","createElement","className","src","alt","connect","state","userdata","_ref","path","useRouteMatch","pathname","useLocation","selectFeature","event","getElementsByClassName","length","classList","remove","target","closest","add","includes","onClick","Link","to","IconContext","Provider","value","BiLineChartDown","BiLineChart","BsFileText","BsPieChart","BsPersonBadge","FiUsers","GiBottledBolt","RiExchangeDollarFill","MdStackedLineChart","FiUser","MONTHS","YearCard","yearSelected","setYearSelected","GrFormPrevious","GrFormNext","Sidenav","setYear","open","FeaturesList","PageHeader","title","icon","children","size","color","Filter","filterString","setFilterString","name","placeholder","onChange","ClientListItemHeader","setOrderedList","edition","FaArrowsAltV","FiTrash","ClientListItem","_ref2","client","groups","reloadAction","setNewClient","groupData","find","g","group","faena_mensual","toLocaleString","reproductoras","visible","editionClient","editionLimited","HiOutlinePencil","deleteClient","Swal","fire","text","showCancelButton","confirmButtonColor","cancelButtonColor","cancelButtonText","confirmButtonText","showLoaderOnConfirm","preConfirm","allowOutsideClick","isLoading","result","ClientsList","_ref3","clients","activePage","setActivePage","useState","filteredList","setFilteredList","orderedList","orderby","item","desc","list","useEffect","ordered","sort","client1","client2","groupData1","groupData2","pageList","map","key","Option","Select","customStyles","overlay","position","top","left","right","bottom","backgroundColor","content","marginRight","transform","background","NewClient","handlerClose","refreshAction","loading","setLoading","newClientData","setNewClientData","Modal","isOpen","onRequestClose","style","ClientModalBody","addClient","onBeforeOpen","showLoading","res","close","setGroupCreationVisible","FiUserPlus","disabled","ev","Button","variant","LoadingPage","Spin","clients_status","clientsListFiltered","setClientsListFiltered","newClient","fullList","filter","client_group","cg","code","toUpperCase","shape","IoMdAdd","refreshGroups","ProductListItemHeader","ProductListItem","_groups$find","_lines$find","lines","setNewProduct","groupName","lineName","l","line","consume","editionProduct","deleteProduct","ProductsList","products","product1","product2","NewProduct","refreshLines","pageVisible","setPageVisible","newProductData","setNewProductData","price_2021","price_2022","price_2023","price_2024","price_2025","newGroupData","setNewGroupData","newLineData","setNewLineData","ProductModalBody","addProduct","undefined","ProductGroupModalBody","addGroup","ProductLineModalBody","addLine","AiOutlineAppstoreAdd","_ref4","products_status","productsListFiltered","setProductsListFiltered","newProduct","group_name","Currency","useSelector","LOCAL_TAG","country","MonthExchangeCard","index","openModal","monthName","Fragment","NewMonthExchange","editionMode","initialValue","newExchangeData","setNewExchangeData","Number","addExchange","exchanges_status","exchanges","_newExchangeModal$dat","_newExchangeModal$dat2","_newExchangeModal$dat3","newExchangeModal","setNewExchangeModal","openNewExchangeModal","slice","monthIndex","yearMonthExchange","ex","exchangeIndex","moment","date","Boolean","SellerListItemHeader","SellerListItem","seller","suspended","firstname","lastname","email","suspendSeller","activateSeller","BiUserCheck","SellersList","sellers","NewSeller","newSellerData","setNewSellerData","password","addSeller","sellers_status","sellersListFiltered","setSellersListFiltered","newSellerVisible","setNewSellerVisible","loginService","login","jsonCallbacks","logout","CalendarFilter","dateSelected","selectDate","prevMonth","Dropdown","menu","items","dropdownRender","CalendarMonthYearSelector","e","preventDefault","Space","nextMonth","monthYearSelected","setMonthYearSelected","fetchingSalesStatus","Math","round","sales","reduce","prev","curr","total","salesService","getForClient","getForProduct","uploadExcel","bodyFormData","FormData","append","file","forceExisting","saleId","deleteMonth","EmptyContainer","message","VscInbox","SaleListItemHeader","danger","handleDeleteAll","deleteMonthSales","SaleListItem","sale","openEditionModal","p","c","q","currency","deleteSale","SalesList","sale1","sale2","display","Pagination","itemsCountPerPage","totalItemsCount","pageRangeDisplayed","page","hideFirstLastPages","prevPageText","nextPageText","Dragger","Upload","UploadExcelModal","setFile","draggerProps","accept","multiple","showUploadList","beforeUpload","info","console","log","Object","assign","InboxOutlined","uploadFiles","success","confirmExisting","html","unknownProducts","prod","join","unknownClients","customClass","container","NewSaleModal","newSaleData","setNewSaleData","saleData","facturable","DatePicker","allowClear","showSearch","width","optionFilterProp","filterOption","input","option","toLowerCase","filterSort","optionA","optionB","localeCompare","Input","addSale","_data$saleData","products_state","clients_state","salesListFiltered","setSalesListFiltered","uploadModalVisible","setUploadModalVisible","newSaleModal","setNewSaleModal","setFetchingSalesStatus","error","refreshSales","filters","setFilters","string","Switch","checked","justProductsWithData","forecastService","forecastId","deleteYear","ForecastListItemHeader","deleteYearForecasts","ForecastListItem","forecast","product_type","client_name","product_price","_ref5","q_enero","q_febrero","q_marzo","q_abril","q_mayo","q_junio","q_julio","q_agosto","q_septiembre","q_octubre","q_noviembre","q_diciembre","calculateYearValuePrice","deleteForecast","ForecastYearQData","ForecastsList","forecasts","NewForecastModal","newForecastData","setNewForecastData","forecastData","addForecast","_data$forecastData","UploadExcelForecastModal","unknownClientsGroups","forecastListFiltered","setForecastListFiltered","newForecastModal","setNewForecastModal","uploadExcelModalVisible","setUploadExcelModalVisible","fetchingForecastStatus","setFetchingForecastStatus","stringFilter","productMatch","groupMatch","productsWithDataFilter","refreshForecast","graphService","getClientGroupGraphData","getProductGraphData","getSalesStatusData","getTotalsGraphData","FilterPills","exchange","sub_clients","FilterMenu","selectAll","paddingBottom","handleChangeClientSelector","allsubclients","Checkbox","paddingLeft","handleChangeSelector","padding","height","overflow","SelectClientModal","selectClientGroup","setStringFilter","filteredClients","setFilteredClients","clientgroup","ClientCard","setGraphFetchStatus","clientGroupSelected","graphFetchStatus","selectClientModal","setSelectClientModal","ignore_null_sales","trigger","alignItems","gap","BsSliders","ForecastGraph","fetchStatus","compare","config","setConfig","chartType","mode","filterNulls","Radio","Group","LinealGraph","FORECAST_GRAPH","BarGraph","TableChart","dataSource","dataParsed","tag","ResponsiveContainer","AreaChart","margin","x1","y1","x2","y2","offset","stopColor","stopOpacity","XAxis","dataKey","YAxis","Tooltip","Legend","Area","stroke","fillOpacity","fill","activeDot","r","on","BarChart","Bar","filteredData","partials","d","compareDataSource","compareItem","compareTotals","getTableTotals","totals","productItem","productdata","totalSales","totalForecast","Array","from","keys","i","ActualForecastSummery","monthly","percentageFull","abs","PieChart","Pie","startAngle","endAngle","innerRadius","outerRadius","paddingAngle","entry","Cell","COLORS","RADIAN","PI","renderCustomizedLabel","cx","cy","midAngle","percent","radius","x","cos","y","sin","textAnchor","dominantBaseline","toFixed","RankingGraph","setMode","RANKING_GRAPH","productSoldPrice","overSoldPrice","FaArrowUp","FaArrowDown","sold","labelLine","label","compareData","SALES_GRAPH","getTotals","totalsCompate","totalExchange","RevenueList","REVENUE_GRAPH","values","revenue","ConsumeGraph","detailView","setDetailView","CONSUME_GRAPH","pendings_data_load","MainConsumeGraph","sold_year","sold_month","max","max_year","max_month","block","DetailConsumeList","listItems","match","soldPercentage","ceil","Progress","strokeLinecap","setCompare","useParams","querySelector","onscroll","handleHomeScroll","bind","client_group_data","checkedChildren","unCheckedChildren","clientGroupId","clientData","headers","querySelectorAll","offsetY","scrollTop","forEach","header","client_groups","selectProduct","changeGroupByHandler","actualProduct","groupby","pg","pl","SelectProductModal","filteredProducts","setFilteredProducts","ProductCard","productSelected","selectProductModal","setSelectProductModal","clientItem","clientdata","FAENA","REPRODUCTORAS","productData","fStatus","SearchFilter","closestExchange","LOCAL","commitments","commitmentsService","NewCommitmentModal","ammount","clients_groups","commitmentData","setCommitmentData","startOf","format","saveCommitment","SalesStateList","setCommitmentModal","forecast1","USD","forecast2","client_group1","client_group2","sales1","sales2","commitment1","commitment2","result1","result2","totaldata","SaleStateItem","history","useHistory","commitmentsARSValue","percentage","handleClick","push","Popover","CommitmentsUsersList","users","AiOutlineEye","_commitments$userdata","strokeColor","user","CommitmentsUsersComponent","commitment","user_data","userdata_status","setDateSelected","filteredString","setFilteredString","commitmentModal","refreshData","filteredClientsGroupsIds","client_group_id","user_status","PasswordCard","actualPassword","getElementById","newPassword","confirmNewPassword","passwordActual","passwordNueva","profile","AccountCard","GroupListItemHeader","GroupListItem","setNewGroup","clients_number","deleteGroup","GroupsList","NewGroup","editionGroup","groupCreationVisible","ClientGroupModalBody","AiOutlineUsergroupAdd","setFilter","withClients","groupsListFiltered","setGroupsListFiltered","newGroup","stringMatch","clientsMatch","s","search","setSearch","setFilteredData","filtered","flex","RankingProductsGraph","RankingClientsGraph","buttonStyle","setAppElement","sidenavOpen","getUserdata","setCampaign","initialFetch","setinitialFetch","window","location","reload","Route","exact","component","ClientsPage","GroupsPage","ProductsPage","ExchangePage","SellersPage","SalesPage","ForecastPage","ClientsStatePage","ProductsStatePage","SalesStatePage","TotalsPage","ProfilePage","Redirect","LoginPage","passwordVisible","setPasswordVisible","flipped","setFlipped","t","localStorage","setItem","userData","replace","xmlns","viewBox","strokeWidth","strokeLinejoin","rx","ry","onKeyPress","enableBackground","recovery","RecoveryPage","password1","password2","passwordNueva2","PrivateRoute","rest","loggedIn","render","BrowserRouter","basename","Main","campaignReducer","arguments","action","clientssReducer","exchangesReducer","productssReducer","sellersReducer","sidenavReducer","userdataReducer","reducers","combineReducers","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","store","createStore","applyMiddleware","ReduxThunk","root","App","ReactDOM"],"mappings":"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","file":"static/js/main.b6e4711d.chunk.js","sourcesContent":["const env = {\n\n production: false,\n url: 'https://api.ventasvetanco.com/api',\n front_url: 'https://ventasvetanco.com',\n // url: 'http://localhost:8000/api',\n // front_url: 'http://localhost:3001'\n\n}\n\nexport default env\n","import Axios from 'axios';\n\nimport environment from '../environments/environment'\n\n\nconst Api = Axios.create({\n baseURL: environment.url\n});\n\nexport default Api\n","import Api from './Api';\n\nconst authService = {\n isAuthenticated: () => {\n const cookies = document.cookie\n \n return cookies.indexOf('vetanco.ventas.auth') > -1\n },\n getSelfData: ( ) => {\n\n return Api.get( '/users/self', {\n withCredentials: true\n } )\n\n },\n updateLocale: ( newLocale ) => {\n return Api.put( '/usuario', { idioma: newLocale },{\n withCredentials: true\n } )\n },\n updatePassword: ( passwordData ) => {\n return Api.post( '/usuario/password/cambio', passwordData, {\n withCredentials: true\n })\n },\n updatePasswordOutside: ( passwordData ) => {\n return Api.post( '/usuario/password/cambio/outside', passwordData)\n },\n recoveryPasswordPetition: ( emailData ) => {\n return Api.post( '/usuario/password/recuperar', emailData)\n },\n ping: () => {\n\n return Api.get('/ping', {\n withCredentials: true\n })\n\n }\n};\n\nexport default authService\n","import Api from './Api';\n\nconst clientsService = {\n\n get: ( year ) => {\n\n return Api.get( '/clients/' + year, {\n withCredentials: true\n } )\n },\n post: ( jsonData ) => {\n\n return Api.post( '/clients', jsonData, {\n withCredentials: true\n } )\n\n },\n put: ( jsonData ) => {\n\n return Api.put( '/clients/' + jsonData.id, jsonData, {\n withCredentials: true\n } )\n\n },\n delete: ( clientId, campaign ) => {\n\n return Api.delete( `/clients/${ clientId }/${ campaign }`, {\n withCredentials: true\n })\n },\n associate: ( jsonData ) => {\n\n return Api.post( '/clients/associate', jsonData, {\n withCredentials: true\n } )\n\n},\n\n}\n\nexport default clientsService\n","import Api from './Api';\n\nconst clientsGroupsService = {\n\n get: ( year ) => {\n\n return Api.get( '/groups/' + year, {\n withCredentials: true\n } )\n },\n post: ( jsonData ) => {\n\n return Api.post( '/groups', jsonData, {\n withCredentials: true\n } )\n\n },\n delete: ( groupId, year ) => {\n\n return Api.delete( `/groups/${year}/${groupId}`, {\n withCredentials: true\n })\n }\n\n}\n\nexport default clientsGroupsService\n","import clientsService from '../../services/Clients';\nimport clientsGroupsService from '../../services/ClientsGroups';\n\nexport const getClients = ( year ) => {\n\n return ( dispatch ) => {\n\n dispatch( { type: 'START_FETCH_CLIENTS' } )\n\n clientsService.get( year )\n .then( response => {\n\n dispatch({\n type: 'RECEIVE_FETCH_CLIENTS',\n payload: response.data.data\n })\n\n })\n .catch( err => {\n\n dispatch({\n type: 'FAIL_FETCH_CLIENTS'\n })\n\n })\n \n }\n\n}\n\nexport const getClientsGroups = ( year ) => {\n\n return ( dispatch ) => {\n\n dispatch( { type: 'START_FETCH_CLIENTS_GROUPS' } )\n\n clientsGroupsService.get( year )\n .then( response => {\n\n dispatch({\n type: 'RECEIVE_FETCH_CLIENTS_GROUPS',\n payload: response.data.data\n })\n\n })\n .catch( err => {\n\n dispatch({\n type: 'FAIL_FETCH_CLIENTS_GROUPS'\n })\n\n })\n\n }\n\n}\n","import Api from './Api';\n\nconst productsService = {\n\n get: ( ) => {\n\n return Api.get( '/products', {\n withCredentials: true\n } )\n },\n post: ( jsonData ) => {\n\n return Api.post( '/products', jsonData, {\n withCredentials: true\n } )\n\n },\n put: ( jsonData ) => {\n\n return Api.put( '/products/' + jsonData.id, jsonData, {\n withCredentials: true\n } )\n\n },\n delete: ( productId ) => {\n\n return Api.delete( `/products/${ productId }`, {\n withCredentials: true\n })\n },\n getPriceFromYear: ( product, year ) => {\n\n if ( product[ \"price_\" + year ] ) return product[ \"price_\" + year ]\n\n if ( year < 2021 ){\n\n return product.price\n } else {\n\n return productsService.getPriceFromYear( product, year - 1 )\n }\n\n }\n\n}\n\nexport default productsService\n","import Api from './Api';\n\nconst productsGroupsService = {\n\n get: ( ) => {\n\n return Api.get( '/products/groups', {\n withCredentials: true\n } )\n },\n post: ( jsonData ) => {\n\n return Api.post( '/products/groups', jsonData, {\n withCredentials: true\n } )\n\n },\n delete: ( usersID ) => {\n\n return Api.delete( `/products/groups/${ JSON.stringify( usersID ) }`, {\n withCredentials: true\n })\n }\n\n}\n\nexport default productsGroupsService\n","import Api from './Api';\n\nconst productsLinesService = {\n\n get: ( ) => {\n\n return Api.get( '/products/lines', {\n withCredentials: true\n } )\n },\n post: ( jsonData ) => {\n\n return Api.post( '/products/lines', jsonData, {\n withCredentials: true\n } )\n\n },\n delete: ( usersID ) => {\n\n return Api.delete( `/products/lines/${ JSON.stringify( usersID ) }`, {\n withCredentials: true\n })\n }\n\n}\n\nexport default productsLinesService\n","import productsService from '../../services/Products';\nimport productsGroupsService from '../../services/ProductsGroups';\nimport productsLinesService from '../../services/ProductsLines';\n\nexport const getProducts = () => {\n\n return ( dispatch ) => {\n\n dispatch( { type: 'START_FETCH_PRODUCTS' } )\n\n productsService.get()\n .then( response => {\n\n dispatch({\n type: 'RECEIVE_FETCH_PRODUCTS',\n payload: response.data.data\n })\n\n })\n .catch( err => {\n\n dispatch({\n type: 'FAIL_FETCH_PRODUCTS'\n })\n\n })\n }\n\n}\n\nexport const getProductsGroups = () => {\n\n return ( dispatch ) => {\n\n dispatch( { type: 'START_FETCH_PRODUCTS_GROUPS' } )\n\n productsGroupsService.get()\n .then( response => {\n\n dispatch({\n type: 'RECEIVE_FETCH_PRODUCTS_GROUPS',\n payload: response.data.data\n })\n\n })\n .catch( err => {\n\n dispatch({\n type: 'FAIL_FETCH_PRODUCTS_GROUPS'\n })\n\n })\n\n }\n\n}\n\nexport const getProductsLines = () => {\n\n return ( dispatch ) => {\n\n dispatch( { type: 'START_FETCH_PRODUCTS_LINES' } )\n\n productsLinesService.get()\n .then( response => {\n \n dispatch({\n type: 'RECEIVE_FETCH_PRODUCTS_LINES',\n payload: response.data.data\n })\n \n })\n .catch( err => {\n \n dispatch({\n type: 'FAIL_FETCH_PRODUCTS_LINES'\n })\n \n })\n \n }\n \n }","import Api from './Api';\n\nconst exchangeService = {\n\n get: ( ) => {\n\n return Api.get( '/exchange', {\n withCredentials: true\n } )\n },\n post: ( jsonData ) => {\n\n return Api.post( '/exchange', jsonData, {\n withCredentials: true\n } )\n\n },\n put: ( jsonData ) => {\n\n return Api.put( `/exchange/${ jsonData.year }/${ jsonData.month }`, jsonData, {\n withCredentials: true\n })\n }\n\n}\n\nexport default exchangeService\n","import exchangeService from '../../services/Exchange';\n\nexport const getExchanges = () => {\n\n return ( dispatch ) => {\n\n dispatch( { type: 'START_FETCH_EXCHANGES' } )\n\n exchangeService.get()\n .then( response => {\n\n dispatch({\n type: 'RECEIVE_FETCH_EXCHANGES',\n payload: response.data.data\n })\n\n } )\n .catch( err => {\n\n dispatch({\n type: 'FAIL_FETCH_EXCHANGES'\n })\n\n })\n \n }\n\n}\n","import Api from './Api';\n\nconst sellersService = {\n\n get: ( ) => {\n\n return Api.get( '/users/sellers', {\n withCredentials: true\n } )\n },\n invite: ( jsonData ) => {\n\n return Api.post( '/users/sellers/invite', jsonData, {\n withCredentials: true\n } )\n\n },\n suspend: ( sellerId ) => {\n\n return Api.post( '/users/sellers/suspend', { user_id: sellerId }, {\n withCredentials: true\n } )\n\n },\n activate: ( sellerId ) => {\n\n return Api.post( '/users/sellers/activate', { user_id: sellerId }, {\n withCredentials: true\n } )\n\n }\n\n}\n\nexport default sellersService\n","import sellersService from \"../../services/Sellers\";\n\n\nexport const getSellers = () => {\n\n return ( dispatch ) => {\n\n dispatch( { type: 'START_FETCH_SELLERS' } )\n\n sellersService.get()\n .then( response => {\n\n dispatch({\n type: 'RECEIVE_FETCH_SELLERS',\n payload: response.data.data\n })\n\n })\n .catch( err => {\n\n dispatch({\n type: 'FAIL_FETCH_SELLERS'\n })\n\n })\n\n }\n\n}\n","import React from 'react';\n\nconst Header = ( props ) => {\n\n return (\n
\n
\n \"company\"\n
\n
\n )\n}\n\nexport default Header\n","import React from 'react';\n\nimport { Link, useRouteMatch, useLocation } from \"react-router-dom\";\nimport { IconContext } from \"react-icons\";\nimport { BiLineChartDown, BiLineChart } from \"react-icons/bi\";\nimport { FiUser, FiUsers } from \"react-icons/fi\";\nimport { GiBottledBolt } from \"react-icons/gi\";\nimport { RiExchangeDollarFill } from 'react-icons/ri'\nimport { BsPersonBadge, BsFileText } from 'react-icons/bs'\nimport { MdStackedLineChart } from 'react-icons/md'\nimport { connect } from 'react-redux';\nimport { BsPieChart } from 'react-icons/bs';\n\nconst FeaturesList = ( { userdata } ) => {\n\n let { path, url } = useRouteMatch();\n let { pathname } = useLocation();\n\n const selectFeature = ( event ) => {\n\n if ( document.getElementsByClassName('featureItem selected').length ){\n document.getElementsByClassName('featureItem selected')[0].classList.remove('selected');\n }\n\n event.target.closest('.featureItem').classList.add('selected');\n }\n\n return (\n
\n
Dashboards
\n
\n \n
\n \n
\n \n
\n
\n
\n
Estado Productos
\n \n
\n
\n \n
\n \n
\n \n
\n
\n
\n
Estado Clientes
\n \n
\n
\n \n
\n \n
\n \n
\n
\n
\n
Estado General
\n \n
\n
\n \n
\n \n
\n \n
\n
\n
\n
Totales
\n \n
\n\n
Carga de datos
\n
\n \n
\n \n
\n \n
\n
\n
\n
Ventas
\n \n
\n
\n \n
\n \n
\n \n
\n
\n
\n
Clientes
\n \n
\n
\n \n
\n \n
\n \n
\n
\n
\n
Productos
\n \n
\n
\n \n
\n \n
\n \n
\n
\n
\n
Tipo de cambio
\n \n
\n
\n \n
\n \n
\n \n
\n
\n
\n
Pronostico ventas
\n \n
\n {\n userdata.data &&\n userdata.data.type === 10\n ?\n
\n \n
\n \n
\n \n
\n
\n
\n
Vendedores
\n \n
\n :\n null\n }\n
\n \n
\n \n
\n \n
\n
\n
\n
Profile
\n \n
\n
\n )\n}\n\nexport default connect( state => ({ userdata: state.userdata } ) )( FeaturesList )\n","export const MONTHS = [\n 'ENERO',\n 'FEBRERO',\n 'MARZO',\n 'ABRIL',\n 'MAYO',\n 'JUNIO',\n 'JULIO',\n 'AGOSTO',\n 'SEPTIEMBRE',\n 'OCTUBRE',\n 'NOVIEMBRE',\n 'DICIEMBRE'\n]\n\nexport const YEARS_AVAILABLES = [\n 2021,\n 2022,\n 2023,\n 2024,\n 2025,\n 2026,\n 2027,\n 2028,\n 2029,\n 2030\n]","import { Button } from 'antd'\nimport React, { useState } from 'react'\nimport { MONTHS } from '../../../../constants/constants'\nimport { GrFormPrevious, GrFormNext } from 'react-icons/gr'\nimport './yearcard.css'\n\n\nexport const YearCard = ({ yearSelected, setYearSelected }) => {\n\n return (\n
\n
{ setYearSelected( yearSelected - 1 ) } } >
\n
\n
Año
\n
{ yearSelected }
\n
\n
{ setYearSelected( yearSelected + 1 ) } } >
\n
\n )\n}\n","import React from 'react'\n\nimport Header from './components/Header';\nimport FeaturesList from './components/FeaturesList';\nimport PoweredBy from './components/PoweredBy';\n\nimport './sidenav.css';\nimport { YearCard } from '../../pages/main/forecast/components/YearCard';\n\nconst Sidenav = ( { year, setYear, open } ) => {\n\n return (\n
\n
\n \n \n {/* */}\n
\n )\n}\n\nexport default Sidenav\n","import React from 'react';\nimport { IconContext } from \"react-icons\";\n\nimport './pageHeader.css'\n\nconst PageHeader = ( { title, icon, children } ) => {\n return (\n
\n
\n
{ title }
\n
|
\n
\n \n
\n { icon }\n
\n
\n
\n
\n
\n {\n children\n }\n
\n
\n )\n}\n\nexport default PageHeader\n","import React, { useState } from 'react';\n// import NewUser from './NewUser';\n\nconst Filter = ( { filterString, setFilterString, children } ) => {\n\n // HANDLER PARA EL CAMBIO DE VALOR EN EL INPUT DE FILTRO\n const handleChange = ( event ) => {\n const value = event.target.value;\n setFilterString( value );\n\n // props.filterChangeHandler( value );\n }\n\n// const reloadUsers = () => {\n\n// setNewUserFormVisible( false );\n\n// props.reloadUsers();\n\n// }\n\n // RENDERIZADO DE COMPONENTE\n return (\n
\n
\n
\n \n
\n {/*
\n
{ setNewUserFormVisible( true ) } }> \"cliente
\n
*/}\n
\n\n {\n children\n }\n {/* { setNewUserFormVisible( false ) } } successHandler={ reloadUsers } /> */}\n
\n )\n}\n\nexport default Filter","import React, { useState, useEffect } from 'react';\nimport { FiTrash } from 'react-icons/fi';\nimport { HiOutlinePencil } from 'react-icons/hi';\nimport { FaArrowsAltV } from 'react-icons/fa';\nimport Pagination from \"react-js-pagination\";\nimport Swal from 'sweetalert2';\nimport clientsService from '../../../../services/Clients';\n\n// COMPONENTS\n\n// ITEM LIST HEADER\nconst ClientListItemHeader = ({ setOrderedList, edition }) => {\n\n return (\n
\n
Nombre
{ setOrderedList( 'NAME' ) } }>
\n
Grupo
{ setOrderedList( 'GROUP' ) } }>
\n
Faena Mensual
{ setOrderedList( 'FAENA_MENSUAL' ) } }>
\n
Reproductoras
{ setOrderedList( 'REPRODUCTORAS' ) } }>
\n { edition &&
}\n
\n )\n}\n\n// ITEM LIST DEL BODY\nconst ClientListItem = ( { client, groups, reloadAction, setNewClient, edition, campaign } ) => {\n\n const groupData = groups && groups.find( g => g.id === client.group )\n\n return (\n
\n
{ client.name }
\n
{ groupData && groupData.name || '' }
\n
{ client.faena_mensual && client.faena_mensual.toLocaleString( 'es-AR' ) }
\n
{ client.reproductoras && client.reproductoras.toLocaleString( 'es-AR' ) }
\n \n
\n
{ setNewClient( { visible: true, editionClient: client, editionLimited: !edition } ) } }>
\n { edition &&
{ deleteClient( client.id, campaign, reloadAction ) } }>
}\n
\n
\n )\n}\n\n// LISTA COMPLETA DE USUARIOS\nconst ClientsList = ( { clients, groups, reloadAction, setNewClient, edition, campaign } ) => {\n\n // VARIABLES DE ESTADO DE PAGINACION Y FILTRO\n const [ activePage, setActivePage ] = useState( 1 );\n const [ filteredList, setFilteredList ] = useState( [] );\n const [ orderedList, setOrderedList ] = useState( { orderby: { item: null, desc: false }, list: clients } )\n const pageSize = 5;\n\n // EFECTO PARA ORDENAR LISTA\n useEffect( () => {\n\n let ordered = clients\n if ( orderedList.orderby.item === 'NAME' ){\n\n ordered = clients.sort( ( client1, client2 ) => {\n\n if ( orderedList.orderby.desc ){\n\n if ( client1.name < client2.name ) {\n return 1;\n }\n if ( client1.name > client2.name ) {\n return -1;\n }\n return 0;\n\n } else {\n\n if ( client1.name > client2.name ) {\n return 1;\n }\n if ( client1.name < client2.name ) {\n return -1;\n }\n return 0;\n\n }\n\n } );\n\n } else if ( orderedList.orderby.item === 'GROUP' ){\n\n ordered = clients.sort( ( client1, client2 ) => {\n\n const groupData1 = groups && groups.find( g => g.id === client1.group )\n const groupData2 = groups && groups.find( g => g.id === client2.group )\n\n if ( orderedList.orderby.desc ){\n\n if ( ( groupData1 && groupData1.name || '' ) < ( groupData2 && groupData2.name || '' ) ) {\n return 1;\n }\n if ( ( groupData1 && groupData1.name || '' ) > ( groupData2 && groupData2.name || '' ) ) {\n return -1;\n }\n return 0;\n\n } else {\n\n if ( ( groupData1 && groupData1.name || '' ) > ( groupData2 && groupData2.name || '' ) ) {\n return 1;\n }\n if ( ( groupData1 && groupData1.name || '' ) < ( groupData2 && groupData2.name || '' ) ) {\n return -1;\n }\n return 0;\n\n }\n\n } );\n\n } else if ( orderedList.orderby.item === 'FAENA_MENSUAL' ){\n \n \n ordered = clients.sort( ( client1, client2 ) => {\n\n if ( orderedList.orderby.desc ){\n\n if ( client1.faena_mensual < client2.faena_mensual ) {\n return 1;\n }\n if ( client1.faena_mensual > client2.faena_mensual ) {\n return -1;\n }\n return 0;\n\n } else {\n\n if ( client1.faena_mensual > client2.faena_mensual ) {\n return 1;\n }\n if ( client1.faena_mensual < client2.faena_mensual ) {\n return -1;\n }\n return 0;\n\n }\n \n } );\n\n } else if ( orderedList.orderby.item === 'REPRODUCTORAS' ){\n\n \n ordered = clients.sort( ( client1, client2 ) => {\n \n if ( orderedList.orderby.desc ){\n \n if ( client1.reproductoras < client2.reproductoras ) {\n return 1;\n }\n if ( client1.reproductoras > client2.reproductoras ) {\n return -1;\n }\n return 0;\n \n } else {\n \n if ( client1.reproductoras > client2.reproductoras ) {\n return 1;\n }\n if ( client1.reproductoras < client2.reproductoras ) {\n return -1;\n }\n return 0;\n \n }\n } );\n\n }\n\n setOrderedList( {\n ...orderedList,\n list: ordered\n } )\n\n }, [ clients, orderedList.orderby ] )\n\n // RECORTO LA CANTIDAD DE REGISTRO AL TAMAÑO DE PAGINA\n const pageList = orderedList.list\n .map( client => )\n // .slice( ( activePage - 1 ) * pageSize , ( activePage - 1 ) + pageSize);\n\n // RENDERIZO LA LISTA DE ZONAS CON LA PAGINACION\n return (\n
\n
\n { setOrderedList( { ...orderedList, orderby: { item: orderby, desc: !orderedList.orderby.desc } } ) } } />\n { pageList }\n
\n {/*
\n setActivePage( page ) }\n hideFirstLastPages={ true }\n prevPageText=\"«\"\n nextPageText=\"»\"\n />\n
*/}\n
\n )\n}\n\n// FUNCTIONS\n\n// BAJA DE USUARIO\nconst deleteClient = ( clientId, campaign, reloadAction ) => {\n // DISPARO ALERT DE CONFIRMACION\n Swal.fire({\n title: 'Eliminar cliente',\n text: 'Estás seguro que deseas eliminar el cliente? Recuerda que se eliminaran todas las ventas a este cliente.',\n icon: 'question',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n cancelButtonText: 'Cancelar',\n confirmButtonText: 'Si, elimiarlo!',\n showLoaderOnConfirm: true,\n // AL CONFIRMAR LE PEGO A LA API DE DELETE /ZONES\n preConfirm: ( value ) => {\n return clientsService.delete( clientId, campaign )\n },\n allowOutsideClick: () => !Swal.isLoading()\n }).then((result) => {\n // AL FINALIZAR MUESTRO ALERT DE SUCCESS Y LE PEGO AL HANDLER DE RELOAD PAGE\n if ( result.value ) {\n Swal.fire(\n 'Eliminado!',\n 'Cliente eliminado exitosamente!',\n 'success'\n )\n\n reloadAction();\n }\n })\n}\n\nexport default ClientsList\n","import React, { useState } from 'react';\nimport Modal from 'react-modal';\nimport { Button, Select } from 'antd';\nimport { FiUserPlus } from 'react-icons/fi'\nimport { AiOutlineUsergroupAdd } from 'react-icons/ai'\nimport './NewClient.css'\nimport Swal from 'sweetalert2';\nimport clientsService from '../../../../services/Clients';\nimport clientsGroupsService from '../../../../services/ClientsGroups';\n\nconst { Option } = Select;\n\n// ESTILO DEL MODAL DE INVITACION DE USUARIO\nconst customStyles = {\n overlay: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)'\n },\n content : {\n top : '50%',\n left : '50%',\n right : 'auto',\n bottom : 'auto',\n marginRight : '-50%',\n transform : 'translate(-50%, -50%)',\n background : 'white'\n }\n};\n\nconst NewClient = ( { groups, handlerClose, refreshAction, editionClient, campaign, editionLimited } ) => {\n\n const [ loading, setLoading ] = useState( false )\n const [ newClientData, setNewClientData ] = useState( editionClient || {\n name: '',\n group: groups[ 0 ].id,\n faena_mensual: null,\n reproductoras: null\n } )\n\n const addClient = () => {\n\n if ( !newClientData.name || !newClientData.group ){\n Swal.fire({\n icon: 'warning',\n title: \"Campos incompletos\",\n text: \"Por favor complete con todos los campos para continuar\"\n })\n \n return;\n }\n \n setLoading( true )\n // ALERT DE LOADING\n Swal.fire ({\n title: \"..Creando el cliente..\",\n onBeforeOpen: () => {\n Swal.showLoading ()\n }\n })\n\n // LE PEGO A LA API Y AL FINALIZAR LLAMO AL HANDLER DE SUCCESS Y CIERRO EL ALERT\n const apiFx = !editionClient ? clientsService.post : clientsService.put\n apiFx( newClientData )\n .then( res => {\n\n if ( !editionClient || editionClient.group !== newClientData.group ){\n\n clientsService.associate({\n client: editionClient ? editionClient.id : res.data.data.id,\n group: newClientData.group,\n year: campaign\n })\n .then( res => {\n\n refreshAction();\n Swal.close();\n handlerClose();\n\n } )\n\n } else {\n\n refreshAction();\n Swal.close();\n handlerClose();\n\n }\n\n } )\n\n }\n\n return (\n
\n \n\n {\n loading\n ?\n \"loading..\"\n :\n \n }\n\n \n
\n )\n}\n\nexport default NewClient\n\n\nconst ClientModalBody = ({ editionLimited, newClientData, setNewClientData, setGroupCreationVisible, groups, addClient }) => {\n\n return (\n
\n
\n \n
\n
\n
\n
\n
\n { setNewClientData( { ...newClientData, name: ev.target.value } ) } } />\n
\n
\n
\n
\n { setNewClientData( { ...newClientData, faena_mensual: ev.target.value } ) } } />\n
\n
\n
\n
\n { setNewClientData( { ...newClientData, reproductoras: ev.target.value } ) } } />\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n )\n}","import { Spin } from 'antd'\nimport React from 'react'\nimport './loading.css'\n\nexport const LoadingPage = () => {\n return (\n
\n
\n \n
\n
\n )\n}\n","import React, { useEffect, useState } from 'react'\nimport PageHeader from '../../../components/PageHeader/PageHeader'\nimport { FiUsers } from 'react-icons/fi'\nimport Filter from './components/Filter'\nimport ClientsList from './components/ClientsList'\nimport { connect } from 'react-redux'\nimport { Button } from 'antd'\nimport { IoMdAdd } from 'react-icons/io'\nimport NewClient from './components/NewClient'\nimport { getClients, getClientsGroups } from '../../../store/actions/getClients'\nimport { LoadingPage } from '../loading/LoadingPage'\nimport { Link } from 'react-router-dom'\nimport './clients.css'\n\nconst ClientsPage = ({ clients_status, getClients, getClientsGroups, campaign, userdata }) => {\n\n const [ filterString, setFilterString ] = useState( '' );\n const [ clientsListFiltered, setClientsListFiltered ] = useState( [] )\n const [ newClient, setNewClient ] = useState( { visible: false, editionClient: null, editionLimited: null } )\n\n // HOOK PARA ACTUALIZACION DE LISTA DE USUARIOS EN FUNCION DEL FILTRO\n useEffect( () => {\n \n if ( !clients_status.list.loading && clients_status.list.data && !clients_status.groups.loading && clients_status.groups.data ){\n\n const fullList = clients_status.list.data.filter( client => {\n\n const client_group = clients_status.groups.data.find( cg => cg.id === client.group )\n\n const stringToMatch = `${ client.name } ${ client.code } ${ client_group.name }`\n \n return stringToMatch.toUpperCase().includes( filterString.toUpperCase() )\n \n } )\n \n setClientsListFiltered( fullList );\n\n }\n\n }, [ filterString, clients_status.list, clients_status.groups ] )\n\n if ( clients_status.list.loading || clients_status.groups.loading || userdata.loading ) return \n\n return (\n
\n
\n } />\n {\n userdata.data.type === 10 &&\n
\n
\n \n \n \n
\n
\n \n
\n
\n }\n
\n
\n\n \n\n { getClients( campaign ) } } />\n\n
\n { newClient.visible && { setNewClient( { visible: false, editionClient: null } ) } } \n groups={ clients_status.groups.data } \n refreshAction={ () => { getClients( campaign ) } }\n campaign={ campaign }\n refreshGroups={ () => { getClientsGroups( campaign ) } }\n editionClient={ newClient.editionClient }\n editionLimited={ newClient.editionLimited }\n /> }\n
\n )\n}\n\nexport default connect( state => ({ userdata: state.userdata, clients_status: state.clients, campaign: state.campaign } ), { getClients, getClientsGroups } )( ClientsPage )","import React, { useState } from 'react';\n// import NewUser from './NewUser';\n\nconst Filter = ( { filterString, setFilterString } ) => {\n\n // HANDLER PARA EL CAMBIO DE VALOR EN EL INPUT DE FILTRO\n const handleChange = ( event ) => {\n const value = event.target.value;\n setFilterString( value );\n }\n\n // RENDERIZADO DE COMPONENTE\n return (\n
\n
\n
\n \n
\n
\n\n
\n )\n}\n\nexport default Filter","import React, { useState, useEffect } from 'react';\nimport { FaArrowsAltV } from 'react-icons/fa';\nimport { FiTrash } from 'react-icons/fi';\nimport { HiOutlinePencil } from 'react-icons/hi';\nimport Swal from 'sweetalert2';\nimport productsService from '../../../../services/Products';\n\n// COMPONENTS\n\n// ITEM LIST HEADER\nconst ProductListItemHeader = ({ setOrderedList, edition }) => {\n\n return (\n
\n
Nombre
{ setOrderedList( 'NAME' ) } }>
\n
Precio
{ setOrderedList( 'PRICE' ) } }>
\n
Grupo
{ setOrderedList( 'GROUP' ) } }>
\n
Linea
{ setOrderedList( 'LINE' ) } }>
\n
Consumo x Ave
{ setOrderedList( 'CONSUME' ) } }>
\n { edition &&
}\n
\n )\n}\n\n// ITEM LIST DEL BODY\nconst ProductListItem = ( { product, groups, lines, reloadAction, setNewProduct, edition, campaign } ) => {\n\n const groupName = groups && groups.find( g => g.id === product.group )?.name || ''\n const lineName = lines && lines.find( l => l.id === product.line )?.name || ''\n const price = productsService.getPriceFromYear( product, campaign )\n\n return (\n
\n
{ product.name }
\n
{ price } { price &&
USD
}
\n
{ groupName }
\n
{ lineName }
\n
{ product.consume }
\n {\n edition &&\n
\n
{ setNewProduct( { visible: true, editionProduct: product } ) } }>
\n
{ deleteProduct( product.id, reloadAction ) } }>
\n
\n }\n
\n )\n}\n\n// LISTA COMPLETA DE USUARIOS\nconst ProductsList = ( { products, groups, lines, reloadAction, setNewProduct, edition, campaign } ) => {\n\n // VARIABLES DE ESTADO DE PAGINACION Y FILTRO\n const [ orderedList, setOrderedList ] = useState( { orderby: { item: null, desc: false }, list: products } )\n\n // EFECTO PARA ORDENAR LISTA\n useEffect( () => {\n\n let ordered = products\n if ( orderedList.orderby.item === 'NAME' ){\n\n ordered = products.sort( ( product1, product2 ) => {\n\n if ( orderedList.orderby.desc ){\n\n if ( product1.name < product2.name ) {\n return 1;\n }\n if ( product1.name > product2.name ) {\n return -1;\n }\n return 0;\n\n } else {\n\n if ( product1.name > product2.name ) {\n return 1;\n }\n if ( product1.name < product2.name ) {\n return -1;\n }\n return 0;\n\n }\n\n } );\n\n } else if ( orderedList.orderby.item === 'GROUP' ){\n\n ordered = products.sort( ( product1, product2 ) => {\n\n const groupData1 = groups && groups.find( g => g.id === product1.group )\n const groupData2 = groups && groups.find( g => g.id === product2.group )\n\n if ( orderedList.orderby.desc ){\n\n if ( ( groupData1 && groupData1.name || '' ) < ( groupData2 && groupData2.name || '' ) ) {\n return 1;\n }\n if ( ( groupData1 && groupData1.name || '' ) > ( groupData2 && groupData2.name || '' ) ) {\n return -1;\n }\n return 0;\n\n } else {\n\n if ( ( groupData1 && groupData1.name || '' ) > ( groupData2 && groupData2.name || '' ) ) {\n return 1;\n }\n if ( ( groupData1 && groupData1.name || '' ) < ( groupData2 && groupData2.name || '' ) ) {\n return -1;\n }\n return 0;\n\n }\n\n } );\n\n } else if ( orderedList.orderby.item === 'LINE' ){\n \n ordered = products.sort( ( product1, product2 ) => {\n\n const groupData1 = lines && lines.find( g => g.id === product1.line )\n const groupData2 = lines && lines.find( g => g.id === product2.line )\n\n if ( orderedList.orderby.desc ){\n\n if ( ( groupData1 && groupData1.name || '' ) < ( groupData2 && groupData2.name || '' ) ) {\n return 1;\n }\n if ( ( groupData1 && groupData1.name || '' ) > ( groupData2 && groupData2.name || '' ) ) {\n return -1;\n }\n return 0;\n\n } else {\n\n if ( ( groupData1 && groupData1.name || '' ) > ( groupData2 && groupData2.name || '' ) ) {\n return 1;\n }\n if ( ( groupData1 && groupData1.name || '' ) < ( groupData2 && groupData2.name || '' ) ) {\n return -1;\n }\n return 0;\n\n }\n\n } );\n\n } else if ( orderedList.orderby.item === 'PRICE' ){\n \n ordered = products.sort( ( product1, product2 ) => {\n \n if ( orderedList.orderby.desc ){\n \n if ( product1.price < product2.price ) {\n return 1;\n }\n if ( product1.price > product2.price ) {\n return -1;\n }\n return 0;\n \n } else {\n \n if ( product1.price > product2.price ) {\n return 1;\n }\n if ( product1.price < product2.price ) {\n return -1;\n }\n return 0;\n \n }\n } );\n\n } else if ( orderedList.orderby.item === 'CONSUME' ){\n \n ordered = products.sort( ( product1, product2 ) => {\n \n if ( orderedList.orderby.desc ){\n \n if ( product1.consume < product2.consume ) {\n return 1;\n }\n if ( product1.consume > product2.consume ) {\n return -1;\n }\n return 0;\n \n } else {\n \n if ( product1.consume > product2.consume ) {\n return 1;\n }\n if ( product1.consume < product2.consume ) {\n return -1;\n }\n return 0;\n \n }\n } );\n\n }\n\n setOrderedList( {\n ...orderedList,\n list: ordered\n } )\n\n }, [ products, orderedList.orderby ] )\n\n // RECORTO LA CANTIDAD DE REGISTRO AL TAMAÑO DE PAGINA\n const pageList = orderedList.list\n .map( product => )\n // .slice( ( activePage - 1 ) * pageSize , ( activePage - 1 ) + pageSize);\n\n // RENDERIZO LA LISTA DE ZONAS CON LA PAGINACION\n return (\n
\n
\n { setOrderedList( { ...orderedList, orderby: { item: orderby, desc: !orderedList.orderby.desc } } ) } } />\n { pageList }\n
\n
\n )\n}\n\n// FUNCTIONS\n\n// BAJA DE USUARIO\nconst deleteProduct = ( productId, reloadAction ) => {\n // DISPARO ALERT DE CONFIRMACION\n Swal.fire({\n title: 'Eliminar Producto',\n text: 'Estás seguro que deseas eliminar el producto?',\n icon: 'question',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n cancelButtonText: 'Cancelar',\n confirmButtonText: 'Si, eliminarlo!',\n showLoaderOnConfirm: true,\n // AL CONFIRMAR LE PEGO A LA API DE DELETE /ZONES\n preConfirm: ( value ) => {\n return productsService.delete( productId )\n },\n allowOutsideClick: () => !Swal.isLoading()\n }).then((result) => {\n // AL FINALIZAR MUESTRO ALERT DE SUCCESS Y LE PEGO AL HANDLER DE RELOAD PAGE\n if ( result.value ) {\n Swal.fire(\n 'Eliminado!',\n 'Producto eliminado exitosamente!',\n 'success'\n )\n\n reloadAction();\n }\n })\n}\n\nexport default ProductsList\n","import React, { useState } from 'react';\nimport Modal from 'react-modal';\nimport { Button, Select } from 'antd';\nimport { GiBottledBolt } from 'react-icons/gi'\nimport { AiOutlineAppstoreAdd } from 'react-icons/ai'\nimport Swal from 'sweetalert2';\nimport productsGroupsService from '../../../../services/ProductsGroups';\nimport productsService from '../../../../services/Products';\nimport productsLinesService from '../../../../services/ProductsLines';\n\nconst { Option } = Select;\n\n// ESTILO DEL MODAL DE INVITACION DE USUARIO\nconst customStyles = {\n overlay: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)'\n },\n content : {\n top : '50%',\n left : '50%',\n right : 'auto',\n bottom : 'auto',\n marginRight : '-50%',\n transform : 'translate(-50%, -50%)',\n background : 'white'\n }\n};\n\nconst NewProduct = ( { groups, lines, handlerClose, refreshAction, refreshGroups, refreshLines, editionProduct, campaign } ) => {\n\n const [ pageVisible, setPageVisible ] = useState( 'PRODUCT' )\n const [ loading, setLoading ] = useState( false )\n const [ newProductData, setNewProductData ] = useState( editionProduct ? { ...editionProduct, price: productsService.getPriceFromYear( editionProduct, campaign ) } : {\n name: '',\n price: '',\n consume: '',\n price_2021: null,\n price_2022: null,\n price_2023: null,\n price_2024: null,\n price_2025: null,\n group: groups[ 0 ].id,\n line: lines[ 0 ].id\n })\n const [ newGroupData, setNewGroupData ] = useState({\n name: ''\n })\n const [ newLineData, setNewLineData ] = useState({\n name: ''\n })\n\n const addProduct = () => {\n\n if ( !newProductData.name || !newProductData.group || !newProductData.price || !newProductData.line ){\n Swal.fire({\n icon: 'warning',\n title: \"Campos incompletos\",\n text: \"Por favor complete con todos los campos para continuar\"\n })\n \n return;\n }\n \n setLoading( true )\n // ALERT DE LOADING\n Swal.fire ({\n title: \"..Creando el producto..\",\n onBeforeOpen: () => {\n Swal.showLoading ()\n }\n })\n\n const payload = {\n ...newProductData,\n price: undefined,\n [ \"price_\" + campaign ]: newProductData.price\n }\n\n // LE PEGO A LA API Y AL FINALIZAR LLAMO AL HANDLER DE SUCCESS Y CIERRO EL ALERT\n const apiFx = !editionProduct ? productsService.post : productsService.put\n\n apiFx( payload )\n .then( res => {\n refreshAction();\n Swal.close();\n handlerClose()\n } )\n\n }\n \n const addGroup = () => {\n\n if ( !newGroupData.name ){\n Swal.fire({\n icon: 'warning',\n title: \"Campos incompletos\",\n text: \"Por favor complete con todos los campos para continuar\"\n })\n\n return;\n }\n\n setLoading( true )\n // ALERT DE LOADING\n Swal.fire ({\n title: \"..Creando el grupo de producto..\",\n onBeforeOpen: () => {\n Swal.showLoading ()\n }\n })\n\n // LE PEGO A LA API Y AL FINALIZAR LLAMO AL HANDLER DE SUCCESS Y CIERRO EL ALERT\n productsGroupsService.post( newGroupData )\n .then( res => {\n Swal.close();\n refreshGroups();\n setPageVisible( 'PRODUCT' )\n } )\n\n }\n \n const addLine = () => {\n\n if ( !newLineData.name ){\n Swal.fire({\n icon: 'warning',\n title: \"Campos incompletos\",\n text: \"Por favor complete con todos los campos para continuar\"\n })\n\n return;\n }\n\n setLoading( true )\n // ALERT DE LOADING\n Swal.fire ({\n title: \"..Creando el grupo de producto..\",\n onBeforeOpen: () => {\n Swal.showLoading ()\n }\n })\n\n // LE PEGO A LA API Y AL FINALIZAR LLAMO AL HANDLER DE SUCCESS Y CIERRO EL ALERT\n productsLinesService.post( newLineData )\n .then( res => {\n Swal.close();\n refreshLines();\n setPageVisible( 'PRODUCT' )\n } )\n\n }\n\n return (\n
\n \n\n {\n loading\n ?\n \"loading..\"\n :\n (\n pageVisible === 'PRODUCT'\n ?\n \n :\n (\n pageVisible === 'GROUP'\n ?\n \n :\n \n )\n )\n }\n\n \n
\n )\n}\n\nexport default NewProduct\n\n\nconst ProductModalBody = ({ newProductData, setNewProductData, setPageVisible, groups, lines, addProduct, campaign }) => {\n\n return (\n
\n
\n \n
\n
\n
\n
\n
\n { setNewProductData( { ...newProductData, name: ev.target.value } ) } } />\n
\n
\n
\n
\n { setNewProductData( { ...newProductData, price: ev.target.value } ) } } />\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n { setNewProductData( { ...newProductData, consume: ev.target.value } ) } } />\n
\n
\n
\n
\n \n
\n
\n
\n )\n}\n\nconst ProductGroupModalBody = ({ newGroupData, setNewGroupData, setPageVisible, addGroup }) => {\n\n return (\n
\n
\n \n
\n
\n
\n
\n
\n { setNewGroupData( { ...newGroupData, name: ev.target.value } ) } } />\n
\n
\n
\n
\n \n \n
\n
\n
\n )\n}\n\nconst ProductLineModalBody = ({ newLineData, setNewLineData, setPageVisible, addLine }) => {\n\n return (\n
\n
\n \n
\n
\n
\n
\n
\n { setNewLineData( { ...newLineData, name: ev.target.value } ) } } />\n
\n
\n
\n
\n \n \n
\n
\n
\n )\n }","import React, { useEffect, useState } from 'react'\nimport PageHeader from '../../../components/PageHeader/PageHeader'\nimport { GiBottledBolt } from 'react-icons/gi'\nimport Filter from './components/Filter'\nimport { connect } from 'react-redux'\nimport { Button } from 'antd'\nimport { IoMdAdd } from 'react-icons/io'\nimport { getProducts, getProductsGroups, getProductsLines } from '../../../store/actions/getProducts'\nimport ProductsList from './components/ProductsList'\nimport NewProduct from './components/NewProduct'\nimport { LoadingPage } from '../loading/LoadingPage'\n\nconst ProductsPage = ({ products_status, getProducts, getProductsGroups, getProductsLines, userdata, campaign }) => {\n\n const [ filterString, setFilterString ] = useState( '' );\n const [ productsListFiltered, setProductsListFiltered ] = useState( [] )\n const [ newProduct, setNewProduct ] = useState( { visible: false, editionProduct: null } )\n // HOOK PARA ACTUALIZACION DE LISTA DE USUARIOS EN FUNCION DEL FILTRO\n useEffect( () => {\n \n if ( !products_status.list.loading && products_status.list.data ){\n\n const fullList = products_status.list.data.filter( product => {\n\n const stringToMatch = `${ product.name } ${ product.code } ${ product.group_name }`\n \n return stringToMatch.toUpperCase().includes( filterString.toUpperCase() )\n \n } )\n \n setProductsListFiltered( fullList );\n\n }\n\n }, [ filterString, products_status.list ] )\n\n if ( products_status.list.loading || products_status.groups.loading || products_status.lines.loading || userdata.loading ) return \n\n return (\n
\n
\n } />\n {\n userdata.data.type === 10 &&\n
\n
\n \n
\n
\n }\n
\n
\n\n \n\n \n\n
\n { newProduct.visible && { setNewProduct( { visible: false, editionProduct: null } ) } } \n groups={ products_status.groups.data } \n lines={ products_status.lines.data } \n refreshAction={ getProducts }\n campaign={ campaign }\n editionProduct={ newProduct.editionProduct }\n refreshGroups={ getProductsGroups }\n refreshLines={ getProductsLines } /> }\n
\n )\n}\n\nexport default connect( state => ({ userdata: state.userdata, products_status: state.products, campaign: state.campaign } ), { getProducts, getProductsGroups, getProductsLines } )( ProductsPage )","import React from 'react'\nimport { useSelector } from 'react-redux'\n\nconst Currency = ({ value }) => {\n\n const { userdata } = useSelector( ({ userdata }) => ({ userdata }))\n\n if ( userdata.loading ) return null\n\n const LOCAL_TAG = userdata.data.country === 1 ? 'ARS' : 'UY'\n\n return (\n \n { value ? ( value === 'LOCAL' ? LOCAL_TAG : 'USD' ) : LOCAL_TAG }\n \n )\n\n}\n\nexport default Currency","import { Button } from 'antd'\nimport React from 'react'\nimport { MONTHS } from '../../../../constants/constants'\nimport { HiOutlinePencil } from 'react-icons/hi'\n\nimport './monthExchangeCard.css'\nimport Currency from '../../../../components/Currency'\n\nexport const MonthExchangeCard = ({ index, value, openModal, edition }) => {\n\n const monthName = MONTHS[ index ]\n\n return (\n
\n
{ monthName }
\n
\n {\n value\n ?\n <>\n
1 USD
\n
=
\n
{ value || '-' }
\n {\n edition &&\n
\n \n
\n }\n \n :\n <>\n
Sin datos
\n
\n \n }\n
\n
\n )\n}\n","import React, { useState } from 'react';\nimport Modal from 'react-modal';\nimport { Button } from 'antd';\nimport { FiUserPlus } from 'react-icons/fi'\nimport './newMonthExchange.css'\nimport Swal from 'sweetalert2';\nimport exchangeService from '../../../../services/Exchange';\nimport Currency from '../../../../components/Currency';\n\n// ESTILO DEL MODAL DE INVITACION DE USUARIO\nconst customStyles = {\n overlay: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)'\n },\n content : {\n top : '50%',\n left : '50%',\n right : 'auto',\n bottom : 'auto',\n marginRight : '-50%',\n transform : 'translate(-50%, -50%)',\n background : 'white'\n }\n};\n\nconst NewMonthExchange = ( { year, month, editionMode, initialValue, handlerClose, refreshAction } ) => {\n\n const [ loading, setLoading ] = useState( false )\n const [ newExchangeData, setNewExchangeData ] = useState({\n year: year,\n month: month + 1,\n value: initialValue || ''\n })\n\n const addExchange = () => {\n\n if ( !newExchangeData.value ){\n Swal.fire({\n icon: 'warning',\n title: \"Campos incompletos\",\n text: \"Por favor complete con todos los campos para continuar\"\n })\n \n return;\n }\n \n setLoading( true )\n // ALERT DE LOADING\n Swal.fire ({\n title: \"..Creando el tipo de cambio..\",\n onBeforeOpen: () => {\n Swal.showLoading ()\n }\n })\n\n // LE PEGO A LA API Y AL FINALIZAR LLAMO AL HANDLER DE SUCCESS Y CIERRO EL ALERT\n const ejecutarAPI = editionMode ? exchangeService.put : exchangeService.post\n ejecutarAPI( newExchangeData )\n .then( res => {\n refreshAction();\n Swal.close();\n handlerClose()\n } )\n\n }\n\n return (\n
\n \n\n
\n
\n \n
\n
\n
¿Cuánto vale 1 dolar ( USD ) en pesos?
\n
\n
\n
\n { setNewExchangeData( { ...newExchangeData, value: Number( ev.target.value ) } ) } } />\n \n
\n
\n
\n
\n \n
\n
\n
\n\n \n
\n )\n}\n\nexport default NewMonthExchange","import React, { useState } from 'react'\nimport PageHeader from '../../../components/PageHeader/PageHeader'\nimport { connect } from 'react-redux'\nimport { RiExchangeDollarFill } from 'react-icons/ri'\nimport { MONTHS } from '../../../constants/constants'\nimport { MonthExchangeCard } from './components/MonthExchangeCard'\nimport './exchangePage.css'\nimport moment from 'moment'\nimport NewMonthExchange from './components/NewMonthExchange'\nimport { getExchanges } from '../../../store/actions/getExchanges'\nimport { LoadingPage } from '../loading/LoadingPage'\n\nconst ExchangePage = ({ exchanges_status, getExchanges, yearSelected, userdata }) => {\n\n const [ newExchangeModal, setNewExchangeModal ] = useState( { visible: false, data: null } )\n\n const openNewExchangeModal = ( month, editionMode, initialValue ) => {\n\n setNewExchangeModal({\n visible: true,\n data: { month: month, year: yearSelected, editionMode: editionMode, initialValue: initialValue }\n })\n\n }\n\n if ( exchanges_status.loading || userdata.loading ) return \n\n return (\n
\n
\n } />\n
\n
\n {/* */}\n
\n
\n
\n
\n
\n
\n {\n MONTHS.slice( 0, 4 ).map( ( month, monthIndex ) => {\n\n const yearMonthExchange = exchanges_status.data && exchanges_status.data.find( ( ex, exchangeIndex ) => {\n \n return moment( ex.date ).year() === yearSelected && moment( ex.date ).month() === monthIndex\n } )\n\n return { openNewExchangeModal( monthIndex, Boolean( yearMonthExchange && yearMonthExchange.value ), yearMonthExchange && yearMonthExchange.value ) } } />\n\n } )\n }\n
\n
\n {\n MONTHS.slice( 4, 8 ).map( ( month, monthIndex ) => {\n\n const yearMonthExchange = exchanges_status.data && exchanges_status.data.find( ( ex, exchangeIndex ) => {\n \n return moment( ex.date ).year() === yearSelected && moment( ex.date ).month() === ( 4 + monthIndex )\n } )\n\n return { openNewExchangeModal( 4 + monthIndex, Boolean( yearMonthExchange && yearMonthExchange.value ), yearMonthExchange && yearMonthExchange.value ) } } />\n\n } )\n }\n
\n
\n {\n MONTHS.slice( 8, 12 ).map( ( month, monthIndex ) => {\n\n const yearMonthExchange = exchanges_status.data && exchanges_status.data.find( ( ex, exchangeIndex ) => {\n \n return moment( ex.date ).year() === yearSelected && moment( ex.date ).month() === ( 8 + monthIndex )\n } )\n\n return { openNewExchangeModal( 8 + monthIndex, Boolean( yearMonthExchange && yearMonthExchange.value ), yearMonthExchange && yearMonthExchange.value ) } } />\n\n } )\n }\n
\n
\n
\n { newExchangeModal.visible && { setNewExchangeModal( { ...newExchangeModal, visible: false } ) } } \n refreshAction={ getExchanges }\n month={ newExchangeModal.data?.month }\n year={ yearSelected }\n editionMode={ newExchangeModal.data?.editionMode }\n initialValue={ newExchangeModal.data?.initialValue }\n /> }\n
\n )\n}\n\nexport default connect( state => ({ userdata: state.userdata, exchanges_status: state.exchanges, yearSelected: state.campaign } ), { getExchanges } )( ExchangePage )","import React, { useState } from 'react';\n// import NewUser from './NewUser';\n\nconst Filter = ( { filterString, setFilterString } ) => {\n\n // HANDLER PARA EL CAMBIO DE VALOR EN EL INPUT DE FILTRO\n const handleChange = ( event ) => {\n const value = event.target.value;\n setFilterString( value );\n\n // props.filterChangeHandler( value );\n }\n\n// const reloadUsers = () => {\n\n// setNewUserFormVisible( false );\n\n// props.reloadUsers();\n\n// }\n\n // RENDERIZADO DE COMPONENTE\n return (\n
\n
\n
\n \n
\n {/*
\n
{ setNewUserFormVisible( true ) } }> \"cliente
\n
*/}\n
\n\n\n {/* { setNewUserFormVisible( false ) } } successHandler={ reloadUsers } /> */}\n
\n )\n}\n\nexport default Filter","import React, { useState, useEffect } from 'react';\nimport { FiTrash } from 'react-icons/fi';\nimport { BiUserCheck } from 'react-icons/bi';\nimport Swal from 'sweetalert2';\nimport sellersService from '../../../../services/Sellers';\n\n// COMPONENTS\n\n// ITEM LIST HEADER\nconst SellerListItemHeader = () => {\n\n return (\n
\n
Estado
\n
Nombre
\n
Apellido
\n
Email
\n
Acciones
\n
\n )\n}\n\n// ITEM LIST DEL BODY\nconst SellerListItem = ( { seller, reloadAction } ) => {\n\n return (\n
\n
\n
{ seller.firstname }
\n
{ seller.lastname }
\n
{ seller.email }
\n
\n { !seller.suspended &&
{ suspendSeller( seller.id, reloadAction ) } }>
}\n { seller.suspended &&
{ activateSeller( seller.id, reloadAction ) } }>
}\n
\n
\n )\n}\n\n// LISTA COMPLETA DE USUARIOS\nconst SellersList = ( { sellers, reloadAction } ) => {\n\n // VARIABLES DE ESTADO DE PAGINACION Y FILTRO\n const [ activePage, setActivePage ] = useState( 1 );\n const [ filteredList, setFilteredList ] = useState( [] );\n const pageSize = 5;\n\n // RECORTO LA CANTIDAD DE REGISTRO AL TAMAÑO DE PAGINA\n const pageList = sellers\n .map( seller => )\n // .slice( ( activePage - 1 ) * pageSize , ( activePage - 1 ) + pageSize);\n\n // RENDERIZO LA LISTA DE ZONAS CON LA PAGINACION\n return (\n
\n
\n \n { pageList }\n
\n
\n )\n}\n\n// FUNCTIONS\n\n// BAJA DE USUARIO\nconst suspendSeller = ( sellerId, reloadAction ) => {\n // DISPARO ALERT DE CONFIRMACION\n Swal.fire({\n title: 'Suspender vendedor',\n text: 'Estás seguro que deseas suspender el vendedor?',\n icon: 'question',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n cancelButtonText: 'Cancelar',\n confirmButtonText: 'Si, suspender!',\n showLoaderOnConfirm: true,\n // AL CONFIRMAR LE PEGO A LA API DE DELETE /ZONES\n preConfirm: ( value ) => {\n return sellersService.suspend( sellerId )\n },\n allowOutsideClick: () => !Swal.isLoading()\n }).then((result) => {\n // AL FINALIZAR MUESTRO ALERT DE SUCCESS Y LE PEGO AL HANDLER DE RELOAD PAGE\n if ( result.value ) {\n Swal.fire(\n 'Eliminado!',\n 'Vendedor eliminado exitosamente!',\n 'success'\n )\n\n reloadAction();\n }\n })\n}\n\nconst activateSeller = ( sellerId, reloadAction ) => {\n // DISPARO ALERT DE CONFIRMACION\n Swal.fire({\n title: 'Activar vendedor',\n text: 'Estás seguro que deseas activar el usuario del vendedor?',\n icon: 'question',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n cancelButtonText: 'Cancelar',\n confirmButtonText: 'Si, volver a activar!',\n showLoaderOnConfirm: true,\n // AL CONFIRMAR LE PEGO A LA API DE DELETE /ZONES\n preConfirm: ( value ) => {\n return sellersService.activate( sellerId )\n },\n allowOutsideClick: () => !Swal.isLoading()\n }).then((result) => {\n // AL FINALIZAR MUESTRO ALERT DE SUCCESS Y LE PEGO AL HANDLER DE RELOAD PAGE\n if ( result.value ) {\n Swal.fire(\n 'Activado!',\n 'Vendedor activado exitosamente!',\n 'success'\n )\n \n reloadAction();\n }\n })\n }\n\nexport default SellersList\n","import React, { useState } from 'react';\nimport Modal from 'react-modal';\nimport { Button } from 'antd';\nimport { FiUserPlus } from 'react-icons/fi'\nimport Swal from 'sweetalert2';\nimport sellersService from '../../../../services/Sellers';\n\n\n// ESTILO DEL MODAL DE INVITACION DE USUARIO\nconst customStyles = {\n overlay: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)'\n },\n content : {\n top : '50%',\n left : '50%',\n right : 'auto',\n bottom : 'auto',\n marginRight : '-50%',\n transform : 'translate(-50%, -50%)',\n background : 'white'\n }\n};\n\nconst NewSeller = ( { groups, handlerClose, refreshAction, refreshGroups } ) => {\n\n const [ loading, setLoading ] = useState( false )\n const [ newSellerData, setNewSellerData ] = useState({\n firstname: '',\n lastname: '',\n email: '',\n password: ''\n })\n\n const addSeller = () => {\n\n if ( !newSellerData.firstname || !newSellerData.email ){\n Swal.fire({\n icon: 'warning',\n title: \"Campos incompletos\",\n text: \"Por favor complete con todos los campos para continuar\"\n })\n \n return;\n }\n \n setLoading( true )\n // ALERT DE LOADING\n Swal.fire ({\n title: \"..Invitando al vendedor..\",\n onBeforeOpen: () => {\n Swal.showLoading ()\n }\n })\n\n // LE PEGO A LA API Y AL FINALIZAR LLAMO AL HANDLER DE SUCCESS Y CIERRO EL ALERT\n sellersService.invite( newSellerData )\n .then( res => {\n refreshAction();\n Swal.close();\n handlerClose()\n } )\n\n }\n\n return (\n
\n \n\n
\n
\n \n
\n
\n
\n
\n
\n { setNewSellerData( { ...newSellerData, email: ev.target.value } ) } } />\n
\n
\n
\n
\n { setNewSellerData( { ...newSellerData, firstname: ev.target.value } ) } } />\n
\n\n
\n { setNewSellerData( { ...newSellerData, lastname: ev.target.value } ) } } />\n
\n
\n
\n
\n { setNewSellerData( { ...newSellerData, password: ev.target.value } ) } } />\n
\n
\n
\n
\n \n
\n
\n
\n\n \n
\n )\n}\n\nexport default NewSeller","import React, { useEffect, useState } from 'react'\nimport PageHeader from '../../../components/PageHeader/PageHeader'\nimport { FiUsers } from 'react-icons/fi'\nimport Filter from './components/Filter'\nimport { connect } from 'react-redux'\nimport { Button } from 'antd'\nimport { IoMdAdd } from 'react-icons/io'\nimport { getSellers } from '../../../store/actions/getSellers'\nimport SellersList from './components/SellersList'\nimport NewSeller from './components/NewSeller'\nimport './sellers.css'\nimport { LoadingPage } from '../loading/LoadingPage'\n\nconst SellersPage = ({ sellers_status, getSellers }) => {\n\n const [ filterString, setFilterString ] = useState( '' );\n const [ sellersListFiltered, setSellersListFiltered ] = useState( [] )\n const [ newSellerVisible, setNewSellerVisible ] = useState( false )\n\n // HOOK PARA ACTUALIZACION DE LISTA DE USUARIOS EN FUNCION DEL FILTRO\n useEffect( () => {\n \n if ( !sellers_status.loading && sellers_status.data ){\n\n const fullList = sellers_status.data.filter( seller => {\n\n const stringToMatch = `${ seller.name } ${ seller.code } ${ seller.lastname } ${ seller.email }`\n \n return stringToMatch.toUpperCase().includes( filterString.toUpperCase() )\n \n } )\n \n setSellersListFiltered( fullList );\n\n }\n\n }, [ filterString, sellers_status ] )\n\n if ( sellers_status.loading ) return \n\n return (\n
\n
\n } />\n
\n
\n \n
\n
\n
\n
\n\n \n\n \n\n
\n { newSellerVisible && { setNewSellerVisible( false ) } } \n refreshAction={ getSellers }\n /> }\n
\n )\n}\n\nexport default connect( state => ({ sellers_status: state.sellers } ), { getSellers } )( SellersPage )","import Api from './Api';\n\nconst loginService = {\n\n login: ( jsonData, jsonCallbacks ) => {\n\n return Api.post('/login', jsonData, { withCredentials: true } )\n },\n logout: () => {\n\n return Api.post('/logout', null, { withCredentials: true } )\n\n }\n\n}\n\nexport default loginService\n","import { Dropdown, Space } from 'antd'\nimport moment from 'moment'\nimport React from 'react'\nimport { GrFormNext, GrFormPrevious } from 'react-icons/gr'\nimport { MONTHS } from '../../../../../../constants/constants'\nimport './calendar-filter.css'\n\nexport const CalendarFilter = ({ dateSelected, selectDate }) => {\n\n const prevMonth = () => {\n\n if ( dateSelected.month > 0 ){\n selectDate( { month: dateSelected.month - 1 } )\n }\n\n }\n\n const nextMonth = () => {\n\n if ( dateSelected.month < 11 ){\n selectDate( { month: dateSelected.month + 1 } )\n }\n\n }\n\n return (\n \n )\n}\n\nconst CalendarMonthYearSelector = ({ dateSelected, selectDate }) => {\n\n return (\n
\n
\n
\n
{ selectDate( { ...dateSelected, month: 0 } ) } }>ENE
\n
{ selectDate( { ...dateSelected, month: 1 } ) } }>FEB
\n
{ selectDate( { ...dateSelected, month: 2 } ) } }>MAR
\n
{ selectDate( { ...dateSelected, month: 3 } ) } }>ABR
\n
\n
\n
{ selectDate( { ...dateSelected, month: 4 } ) } }>MAY
\n
{ selectDate( { ...dateSelected, month: 5 } ) } }>JUN
\n
{ selectDate( { ...dateSelected, month: 6 } ) } }>JUL
\n
{ selectDate( { ...dateSelected, month: 7 } ) } }>AGO
\n
\n
\n
{ selectDate( { ...dateSelected, month: 8 } ) } }>SEP
\n
{ selectDate( { ...dateSelected, month: 9 } ) } }>OCT
\n
{ selectDate( { ...dateSelected, month: 10 } ) } }>NOV
\n
{ selectDate( { ...dateSelected, month: 11 } ) } }>DIC
\n
\n
\n\n
\n )\n}","import React from 'react';\nimport Currency from '../../../../components/Currency';\nimport { CalendarFilter } from '../../result-state/clients/components/filter/CalendarFilter';\n\nconst Filter = ( { filterString, setFilterString, monthYearSelected, setMonthYearSelected, fetchingSalesStatus } ) => {\n\n // HANDLER PARA EL CAMBIO DE VALOR EN EL INPUT DE FILTRO\n const handleChange = ( event ) => {\n const value = event.target.value;\n setFilterString( value );\n }\n\n // RENDERIZADO DE COMPONENTE\n return (\n
\n \n
\n
\n
\n \n
\n
\n\n
\n
\n
Total
\n
$ { fetchingSalesStatus.loading ? \"..Calculando..\" : Math.round( calculateTotal( fetchingSalesStatus.data ) ).toLocaleString() }
\n
\n
\n\n
\n )\n}\n\nexport default Filter\n\nfunction calculateTotal( sales ){\n\n return sales.reduce( ( prev, curr ) => prev + curr.total, 0 )\n \n}","import Api from './Api';\n\nconst salesService = {\n\n get: ( { year, month } ) => {\n\n return Api.get( `/sales/yearmonth/${ year }/${ month }`, {\n withCredentials: true\n } )\n },\n getForClient: ( { year, month, client } ) => {\n\n return Api.get( `/sales/yearmonth/client/${ year }/${ month }/${ client }`, {\n withCredentials: true\n } )\n },\n getForProduct: ( { year, month, product } ) => {\n\n return Api.get( `/sales/yearmonth/product/${ year }/${ month }/${ product }`, {\n withCredentials: true\n } )\n },\n post: ( jsonData ) => {\n\n return Api.post( '/sales', jsonData, {\n withCredentials: true\n } )\n\n },\n put: ( jsonData ) => {\n\n return Api.put( '/sales/' + jsonData.id, jsonData, {\n withCredentials: true\n } )\n\n },\n uploadExcel: ( jsonData ) => {\n\n var bodyFormData = new FormData();\n bodyFormData.append('file', jsonData.file);\n bodyFormData.append('forceExisting', jsonData.forceExisting);\n\n return Api.post( '/sales/excel', bodyFormData, {\n withCredentials: true\n } )\n\n },\n delete: ( saleId ) => {\n\n return Api.delete( `/sales/${ saleId }`, {\n withCredentials: true\n })\n },\n deleteMonth: ( year, month ) => {\n\n return Api.delete( `/sales/month/${ year }/${ month }`, {\n withCredentials: true\n })\n\n }\n\n}\n\nexport default salesService\n","import React from 'react'\nimport { VscInbox } from 'react-icons/vsc'\nimport './empty-container.css'\n\nexport const EmptyContainer = ({ title, message }) => {\n\n return (\n
\n
\n \n
\n
{ title }
\n
{ message }
\n
\n )\n \n }\n","import { Button } from 'antd';\nimport React, { useEffect, useState } from 'react';\nimport { FiTrash } from 'react-icons/fi';\nimport { HiOutlinePencil } from 'react-icons/hi';\nimport Pagination from 'react-js-pagination';\nimport Swal from 'sweetalert2';\nimport salesService from '../../../../services/Sales';\nimport { EmptyContainer } from './EmptyContainer';\nimport { FaArrowsAltV } from 'react-icons/fa';\nimport Currency from '../../../../components/Currency';\n\n// COMPONENTS\n\n// ITEM LIST HEADER\nconst SaleListItemHeader = ({ monthYearSelected, reloadAction, edition, setOrderedList }) => {\n\n const handleDeleteAll = () => {\n\n deleteMonthSales( monthYearSelected.year, monthYearSelected.month, reloadAction )\n\n }\n\n return (\n
\n
Fecha
{ setOrderedList( 'DATE' ) } }>
\n
Cliente
{ setOrderedList( 'CLIENT' ) } }>
\n
Producto
{ setOrderedList( 'PRODUCT' ) } }>
\n
Cantidad
{ setOrderedList( 'CANTIDAD' ) } }>
\n
Importe Total
{ setOrderedList( 'TOTAL' ) } }>
\n { edition &&
}\n
\n )\n}\n\n// ITEM LIST DEL BODY\nconst SaleListItem = ( { sale, products, clients, reloadAction, openEditionModal, edition } ) => {\n\n const product = products.list.data && products.list.data.find( p => p.id === sale.product ).name || ''\n const client = clients.list.data && clients.list.data.find( c => c.id === sale.client ).name || ''\n\n return (\n
\n
{ sale.date }
\n
{ client }
\n
{ product }
\n
{ sale.q }
\n
{ sale.total.toLocaleString( 'es-AR' ) }
\n {\n edition &&\n
\n
\n
{ deleteSale( sale.id, reloadAction ) } }>
\n
\n }\n
\n )\n}\n\n// LISTA COMPLETA DE USUARIOS\nconst SalesList = ( { sales, products, clients, reloadAction, openEditionModal, monthYearSelected, edition } ) => {\n\n const [ activePage, setActivePage ] = useState( 1 );\n const [ orderedList, setOrderedList ] = useState( { orderby: { item: null, desc: false }, list: sales } )\n const pageSize = 20;\n\n // EFECTO PARA ORDENAR LISTA\n useEffect( () => {\n\n let ordered = sales\n if ( orderedList.orderby.item === 'DATE' ){\n \n ordered = sales.sort( ( sale1, sale2 ) => {\n \n if ( orderedList.orderby.desc ){\n \n if ( sale1.date < sale2.date ) {\n return 1;\n }\n if ( sale1.date > sale2.date ) {\n return -1;\n }\n return 0;\n \n } else {\n \n if ( sale1.date > sale2.date ) {\n return 1;\n }\n if ( sale1.date < sale2.date ) {\n return -1;\n }\n return 0;\n \n }\n \n } );\n \n } else if ( orderedList.orderby.item === 'CLIENT' ){\n \n ordered = sales.sort( ( sale1, sale2 ) => {\n \n const client1 = clients.list.data && clients.list.data.find( c => c.id === sale1.client )\n const client2 = clients.list.data && clients.list.data.find( c => c.id === sale2.client )\n \n if ( orderedList.orderby.desc ){\n \n if ( ( client1 && client1.name || '' ) < ( client2 && client2.name || '' ) ) {\n return 1;\n }\n if ( ( client1 && client1.name || '' ) > ( client2 && client2.name || '' ) ) {\n return -1;\n }\n return 0;\n \n } else {\n \n if ( ( client1 && client1.name || '' ) > ( client2 && client2.name || '' ) ) {\n return 1;\n }\n if ( ( client1 && client1.name || '' ) < ( client2 && client2.name || '' ) ) {\n return -1;\n }\n return 0;\n \n }\n \n } );\n \n } else if ( orderedList.orderby.item === 'PRODUCT' ){\n \n ordered = sales.sort( ( sale1, sale2 ) => {\n \n const product1 = products.list.data && products.list.data.find( c => c.id === sale1.client )\n const product2 = products.list.data && products.list.data.find( c => c.id === sale2.client )\n \n if ( orderedList.orderby.desc ){\n \n if ( ( product1 && product1.name || '' ) < ( product2 && product2.name || '' ) ) {\n return 1;\n }\n if ( ( product1 && product1.name || '' ) > ( product2 && product2.name || '' ) ) {\n return -1;\n }\n return 0;\n \n } else {\n \n if ( ( product1 && product1.name || '' ) > ( product2 && product2.name || '' ) ) {\n return 1;\n }\n if ( ( product1 && product1.name || '' ) < ( product2 && product2.name || '' ) ) {\n return -1;\n }\n return 0;\n \n }\n \n } );\n \n } else if ( orderedList.orderby.item === 'CANTIDAD' ){\n \n ordered = sales.sort( ( sale1, sale2 ) => {\n \n if ( orderedList.orderby.desc ){\n \n if ( sale1.q < sale2.q ) {\n return 1;\n }\n if ( sale1.q > sale2.q ) {\n return -1;\n }\n return 0;\n \n } else {\n \n if ( sale1.q > sale2.q ) {\n return 1;\n }\n if ( sale1.q < sale2.q ) {\n return -1;\n }\n return 0;\n \n }\n \n } );\n \n } else if ( orderedList.orderby.item === 'TOTAL' ){\n \n ordered = sales.sort( ( sale1, sale2 ) => {\n \n if ( orderedList.orderby.desc ){\n \n if ( sale1.total < sale2.total ) {\n return 1;\n }\n if ( sale1.total > sale2.total ) {\n return -1;\n }\n return 0;\n \n } else {\n \n if ( sale1.total > sale2.total ) {\n return 1;\n }\n if ( sale1.total < sale2.total ) {\n return -1;\n }\n return 0;\n \n }\n \n } );\n \n }\n \n setOrderedList( {\n ...orderedList,\n list: ordered\n } )\n \n }, [ sales, orderedList.orderby ] )\n\n // RECORTO LA CANTIDAD DE REGISTRO AL TAMAÑO DE PAGINA\n const pageList = orderedList.list\n .map( sale => { openEditionModal( sale.id ) } }\n reloadAction={ reloadAction } /> )\n\n // RENDERIZO LA LISTA DE ZONAS CON LA PAGINACION\n return (\n
\n
\n { setOrderedList( { ...orderedList, orderby: { item: orderby, desc: !orderedList.orderby.desc } } ) } } />\n { \n orderedList.list.length\n ?\n
\n { pageList.slice( ( activePage - 1 ) * pageSize , activePage * pageSize) }\n
\n setActivePage( page ) }\n hideFirstLastPages={ true }\n prevPageText=\"«\"\n nextPageText=\"»\"\n />\n
\n
\n :\n \n }\n
\n
\n )\n}\n\n\n\n// FUNCTIONS\n\n// BAJA DE USUARIO\nconst deleteSale = ( saleId, reloadAction ) => {\n // DISPARO ALERT DE CONFIRMACION\n Swal.fire({\n title: 'Eliminar Producto',\n text: 'Estás seguro que deseas eliminar el producto?',\n icon: 'question',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n cancelButtonText: 'Cancelar',\n confirmButtonText: 'Si, eliminarlo!',\n showLoaderOnConfirm: true,\n // AL CONFIRMAR LE PEGO A LA API DE DELETE /ZONES\n preConfirm: ( value ) => {\n return salesService.delete( saleId )\n },\n allowOutsideClick: () => !Swal.isLoading()\n }).then((result) => {\n // AL FINALIZAR MUESTRO ALERT DE SUCCESS Y LE PEGO AL HANDLER DE RELOAD PAGE\n if ( result.value ) {\n Swal.fire(\n 'Eliminado!',\n 'Venta eliminada exitosamente!',\n 'success'\n )\n\n reloadAction();\n }\n })\n}\n\nconst deleteMonthSales = ( year, month, reloadAction ) => {\n\n Swal.fire({\n title: 'Eliminar Ventas del mes',\n text: 'Estás seguro que deseas eliminar todas las ventas del mes?',\n icon: 'question',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n cancelButtonText: 'Cancelar',\n confirmButtonText: 'Si, eliminarlas!',\n showLoaderOnConfirm: true,\n // AL CONFIRMAR LE PEGO A LA API DE DELETE /ZONES\n preConfirm: ( value ) => {\n return salesService.deleteMonth( year, month )\n },\n allowOutsideClick: () => !Swal.isLoading()\n }).then((result) => {\n // AL FINALIZAR MUESTRO ALERT DE SUCCESS Y LE PEGO AL HANDLER DE RELOAD PAGE\n if ( result.value ) {\n Swal.fire(\n 'Eliminadas!',\n 'Ventas eliminadas exitosamente!',\n 'success'\n )\n\n reloadAction();\n }\n })\n\n}\n\nexport default SalesList\n","import React, { useEffect, useState } from 'react';\nimport Modal from 'react-modal';\nimport { Button } from 'antd';\nimport Swal from 'sweetalert2';\nimport salesService from '../../../../services/Sales'\n\nimport { Upload } from 'antd';\nimport { InboxOutlined } from '@ant-design/icons';\n\nimport './uploadModal.css'\n\nconst { Dragger } = Upload;\n\n // ESTILO DEL MODAL DE INVITACION DE USUARIO\n const customStyles = {\n overlay: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)'\n },\n content : {\n top : '50%',\n left : '50%',\n right : 'auto',\n bottom : 'auto',\n marginRight : '-50%',\n transform : 'translate(-50%, -50%)',\n background : 'white'\n }\n };\n\nconst UploadExcelModal = ( { handlerClose, refreshAction } ) => {\n\n const [ loading, setLoading ] = useState( false )\n const [ file, setFile ] = useState( null )\n\n const draggerProps = {\n name: 'file',\n accept: \".xls, .xlsx\",\n multiple: false,\n showUploadList: false,\n beforeUpload: () => false,\n onChange(info) { \n setFile( info.file )\n }\n };\n\n\n const uploadFiles = () => {\n\n if ( !file ){\n Swal.fire({\n icon: 'warning',\n title: \"Archivo sin seleccionar\",\n text: \"Por favor seleccione el archivo para continuar\"\n })\n \n return;\n }\n \n setLoading( true )\n // ALERT DE LOADING\n Swal.fire ({\n title: \"..Subiendo excel..\",\n onBeforeOpen: () => {\n Swal.showLoading ()\n }\n })\n\n // LE PEGO A LA API Y AL FINALIZAR LLAMO AL HANDLER DE SUCCESS Y CIERRO EL ALERT\n salesService.uploadExcel( { file, forceExisting: false } )\n .then( res => {\n\n if ( !res.data.success ){\n\n if ( res.data.code === 9 ){\n\n confirmExisting( file, () => {\n refreshAction()\n handlerClose()\n }, res.data.data )\n\n }\n\n } else {\n\n refreshAction();\n Swal.close();\n handlerClose()\n\n }\n\n } )\n .catch( err => {\n\n } )\n\n }\n\n useEffect( () => {\n console.log( file )\n }, [ file ] )\n\n return (\n
\n \n\n
\n
Subir excel de ventas
\n \n

\n \n

\n

Clickea aquí o arrastrá tu excel con ventas

\n
\n\n
\n \n
\n
\n\n \n
\n )\n}\n\nexport default UploadExcelModal\n\nconst confirmExisting = ( file, reloadAction, data ) => {\n // DISPARO ALERT DE CONFIRMACION\n Swal.fire({\n title: 'Datos desconocidos',\n html: `\n
Detectamos productos y clientes desconocidos en nuestra DB. Recuerda que al subir un excel con ventas de un mes, se sobreescribiran los datos existentes del mes correspondiente. ¿Quieres subir igualmente el resto de los registros de los que conocemos el producto y el cliente?
\n
\n
Lista de productos sin crear
\n
\n ${ data.unknownProducts.map( prod => '
' + prod + '
' ).join( ' ' ) }\n
\n
\n
\n
Lista de clientes sin crear
\n
\n ${ data.unknownClients.map( prod => '
' + prod + '
' ).join( ' ' ) }\n
\n
\n `,\n icon: 'question',\n customClass: {\n container: 'excel-container'\n }, \n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n cancelButtonText: 'Cancelar',\n confirmButtonText: 'Si, subir los conocidos!',\n showLoaderOnConfirm: true,\n // AL CONFIRMAR LE PEGO A LA API DE DELETE /ZONES\n preConfirm: ( value ) => {\n return salesService.uploadExcel( { file, forceExisting: true } )\n },\n allowOutsideClick: () => !Swal.isLoading()\n }).then((result) => {\n // AL FINALIZAR MUESTRO ALERT DE SUCCESS Y LE PEGO AL HANDLER DE RELOAD PAGE\n if ( result.value ) {\n Swal.fire(\n 'Subidos!',\n 'Ventas subidas exitosamente!',\n 'success'\n )\n \n reloadAction();\n }\n })\n }","import React, { useState } from 'react';\nimport Modal from 'react-modal';\nimport { Button, DatePicker, Input, Select } from 'antd';\nimport { FiUserPlus } from 'react-icons/fi'\nimport Swal from 'sweetalert2';\nimport salesService from '../../../../services/Sales';\nimport moment from 'moment';\n\nconst { Option } = Select;\n\n// ESTILO DEL MODAL DE INVITACION DE USUARIO\nconst customStyles = {\n overlay: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)'\n },\n content : {\n top : '50%',\n left : '50%',\n right : 'auto',\n bottom : 'auto',\n marginRight : '-50%',\n transform : 'translate(-50%, -50%)',\n background : 'white'\n }\n};\n\nconst NewSaleModal = ( { year, month, handlerClose, refreshAction, clients, products, data } ) => {\n\n const [ loading, setLoading ] = useState( false )\n const [ newSaleData, setNewSaleData ] = useState({\n date: data.editionMode ? moment( data.saleData.date ) : moment().month( month ).year( year ),\n product: data.editionMode ? data.saleData.product : null,\n client: data.editionMode ? data.saleData.client : null,\n q: data.editionMode ? data.saleData.q : '',\n currency: 'LOCAL',\n total: '',\n facturable: data.editionMode ? data.saleData.facturable : true\n })\n\n const addSale = () => {\n\n if ( !newSaleData.product || !newSaleData.client || !newSaleData.q || !newSaleData.currency ){\n Swal.fire({\n icon: 'warning',\n title: \"Campos incompletos\",\n text: \"Por favor complete con todos los campos para continuar\"\n })\n \n return;\n }\n \n setLoading( true )\n // ALERT DE LOADING\n Swal.fire ({\n title: \"..Creando la venta..\",\n onBeforeOpen: () => {\n Swal.showLoading ()\n }\n })\n\n // LE PEGO A LA API Y AL FINALIZAR LLAMO AL HANDLER DE SUCCESS Y CIERRO EL ALERT\n const addSaleAPI = data.editionMode ? salesService.put : salesService.post;\n addSaleAPI( { ...newSaleData, id: data?.saleData?.id } )\n .then( res => {\n refreshAction();\n Swal.close();\n handlerClose()\n } )\n\n }\n\n return (\n
\n \n\n
\n
\n \n
\n
\n
\n
\n { setNewSaleData( { ...newSaleData, date: date } ) } } />\n
\n
\n { setNewSaleData({ ...newSaleData, client: Number( value ) }) } }\n placeholder=\"Buscar cliente\"\n optionFilterProp=\"children\"\n filterOption={(input, option) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n filterSort={(optionA, optionB) =>\n optionA.children.toLowerCase().localeCompare(optionB.children.toLowerCase())\n }\n >\n {\n clients.list.data.map( client => )\n }\n \n
\n
\n { setNewSaleData({ ...newSaleData, product: Number( value ) }) } }\n placeholder=\"Buscar producto\"\n optionFilterProp=\"children\"\n filterOption={(input, option) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n filterSort={(optionA, optionB) =>\n optionA.children.toLowerCase().localeCompare(optionB.children.toLowerCase())\n }\n >\n {\n products.list.data.map( product => )\n }\n \n
\n
\n { setNewSaleData({ ...newSaleData, q: Number( ev.target.value ) }) } } />\n { setNewSaleData({ ...newSaleData, total: Number( ev.target.value ) }) } } />\n
\n
\n
\n \n
\n
\n
\n\n \n
\n )\n}\n\nexport default NewSaleModal","import React, { useEffect, useState } from 'react'\nimport PageHeader from '../../../components/PageHeader/PageHeader'\nimport { GiBottledBolt } from 'react-icons/gi'\nimport Filter from './components/Filter'\nimport { connect } from 'react-redux'\nimport { Button } from 'antd'\nimport { IoMdAdd } from 'react-icons/io'\nimport SalesList from './components/SalesList'\nimport salesService from '../../../services/Sales'\nimport UploadExcelModal from './components/UploadExcelModal'\nimport './sales.css'\nimport moment from 'moment'\nimport NewSaleModal from './components/NewSaleModal'\nimport { LoadingPage } from '../loading/LoadingPage'\n\nconst SalesPage = ({ products_state, clients_state, userdata, campaign }) => {\n\n const [ filterString, setFilterString ] = useState( '' );\n const [ salesListFiltered, setSalesListFiltered ] = useState( [] )\n const [ monthYearSelected, setMonthYearSelected ] = useState( { month: moment().month() } )\n const [ uploadModalVisible, setUploadModalVisible ] = useState( false )\n const [ newSaleModal, setNewSaleModal ] = useState( { visible: false, data: { editionMode: false, saleData: null } } )\n const [ fetchingSalesStatus, setFetchingSalesStatus ] = useState( { loading: true, error: null, data: null } )\n\n // HOOK PARA ACTUALIZACION DE LISTA DE USUARIOS EN FUNCION DEL FILTRO\n useEffect( () => {\n \n if ( \n fetchingSalesStatus.data &&\n products_state.list.data &&\n clients_state.list.data\n ){\n\n const fullList = fetchingSalesStatus.data\n .filter( sale => {\n\n const product = products_state.list.data.find( p => Number( sale.product ) === Number( p.id ) )\n const client = clients_state.list.data.find( c => Number( sale.client ) === Number( c.id ) )\n\n const stringToMatch = `${ product.name } ${ client.name }`\n const stringFilter = stringToMatch.toUpperCase().includes( filterString.toUpperCase() )\n \n return stringFilter\n \n } )\n \n setSalesListFiltered( fullList );\n\n }\n\n }, [ filterString, fetchingSalesStatus.data, products_state.list, clients_state.list ] )\n\n const refreshSales = () => {\n\n const { month } = monthYearSelected\n\n setFetchingSalesStatus( { loading: true, error: null, data: null } )\n salesService.get({ month, year: campaign })\n .then( res => {\n setFetchingSalesStatus( { loading: false, error: null, data: res.data.data } )\n } )\n\n }\n\n const openEditionModal = ( saleId ) => {\n\n const saleData = fetchingSalesStatus.data.find( sale => Number( sale.id ) === Number( saleId ) )\n\n setNewSaleModal({ visible: true, data: { editionMode: true, saleData: saleData } })\n\n }\n\n useEffect( () => {\n refreshSales()\n }, [ monthYearSelected.month, campaign ] )\n\n if ( \n fetchingSalesStatus.loading || \n clients_state.list.loading || \n clients_state.groups.loading || \n products_state.list.loading || \n products_state.groups.loading || \n products_state.lines.loading ||\n userdata.loading\n ) return \n\n return (\n
\n
\n } />\n {\n userdata.data.type === 10 &&\n
\n
\n \n
\n
\n \n
\n
\n }\n
\n
\n\n
\n {/* */}\n \n
\n\n \n\n
\n {\n uploadModalVisible && { setUploadModalVisible( false ) } }\n refreshAction={ refreshSales } />\n }\n {\n newSaleModal.visible && { setNewSaleModal( { ...newSaleModal, visible: false } ) } }\n products={ products_state }\n clients={ clients_state }\n month={ monthYearSelected.month }\n year={ campaign }\n data={ newSaleModal.data }\n refreshAction={ refreshSales }\n />\n }\n
\n )\n}\n\nexport default connect( state => ({ campaign: state.campaign, userdata: state.userdata, products_state: state.products, clients_state: state.clients } ) )( SalesPage )","import React from 'react';\nimport { Select, Switch } from 'antd';\n\nconst { Option } = Select;\n\nconst Filter = ( { filters, setFilters, clients, products } ) => {\n\n // HANDLER PARA EL CAMBIO DE VALOR EN EL INPUT DE FILTRO\n const handleChange = ( event ) => {\n const value = event.target.value;\n setFilters( { ...filters, string: value } )\n }\n\n // RENDERIZADO DE COMPONENTE\n return (\n
\n
\n
\n \n
\n
\n {\n products && products.list &&\n
\n { setFilters( { ...filters, product: value } ) } }\n placeholder=\"Filtrar producto\"\n optionFilterProp=\"children\"\n filterOption={(input, option) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n filterSort={(optionA, optionB) =>\n optionA.children.toLowerCase().localeCompare(optionB.children.toLowerCase())\n }\n >\n {\n products.list.data.map( product => )\n }\n \n
\n }\n {\n clients && clients.groups &&\n
\n { setFilters( { ...filters, client_group: value } ) } }\n placeholder=\"Filtrar grupo\"\n optionFilterProp=\"children\"\n filterOption={(input, option) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n filterSort={(optionA, optionB) =>\n optionA.children.toLowerCase().localeCompare(optionB.children.toLowerCase())\n }\n >\n {\n clients.groups.data.map( client_group => )\n }\n \n
\n }\n
\n
Solo pronosticados
\n
{ setFilters({ ...filters, justProductsWithData: checked }) } } />
\n
\n
\n )\n}\n\nexport default Filter","import Api from './Api';\n\nconst forecastService = {\n\n get: ( { year } ) => {\n\n return Api.get( `/forecast/year/${ year }`, {\n withCredentials: true\n } )\n },\n getForProduct: ( { year, product } ) => {\n\n return Api.get( `/forecast/year/product/${ year }/${ product }`, {\n withCredentials: true\n } )\n },\n post: ( jsonData ) => {\n\n return Api.post( '/forecast', jsonData, {\n withCredentials: true\n } )\n\n },\n put: ( jsonData ) => {\n\n return Api.put( '/forecast/' + jsonData.id, jsonData, {\n withCredentials: true\n } )\n\n },\n uploadExcel: ( jsonData ) => {\n\n var bodyFormData = new FormData();\n bodyFormData.append('file', jsonData.file);\n bodyFormData.append('year', jsonData.year);\n bodyFormData.append('forceExisting', jsonData.forceExisting);\n\n return Api.post( '/forecast/excel', bodyFormData, {\n withCredentials: true\n } )\n\n },\n delete: ( forecastId ) => {\n\n return Api.delete( `/forecast/${ forecastId }`, {\n withCredentials: true\n })\n },\n deleteYear: ( year ) => {\n\n return Api.delete( `/forecast/year/${ year }`, {\n withCredentials: true\n })\n }\n\n}\n\nexport default forecastService\n","import React, { useState } from 'react';\nimport { FiTrash } from 'react-icons/fi';\nimport Swal from 'sweetalert2';\nimport forecastService from '../../../../services/Forecast';\nimport { HiOutlinePencil } from 'react-icons/hi';\nimport { EmptyContainer } from '../../sales/components/EmptyContainer';\nimport Pagination from 'react-js-pagination';\nimport { Button } from 'antd';\n\n// COMPONENTS\n\n// ITEM LIST HEADER\nconst ForecastListItemHeader = ({ reloadAction, yearSelected, edition }) => {\n\n const handleDeleteAll = () => {\n\n deleteYearForecasts( yearSelected, reloadAction )\n\n }\n\n return (\n
\n
Grupo Economico
\n
Producto
\n
Precio unitario
\n
Total Anual
\n { edition &&
}\n
\n )\n}\n\n// ITEM LIST DEL BODY\nconst ForecastListItem = ( { forecast, products, clients, reloadAction, openEditionModal, edition } ) => {\n\n let name = ''\n if ( forecast.product_type === 1 ){\n \n const product = products.list.data && products.list.data.find( p => p.id === forecast.product )\n name = product && product.name || '' \n \n } else if ( forecast.product_type === 2 ){\n \n const group = products.groups.data && products.groups.data.find( p => p.id === forecast.product )\n name = group && group.name || '' \n\n } else if ( forecast.product_type === 3 ){\n \n const line = products.lines.data && products.lines.data.find( p => p.id === forecast.product )\n name = line && line.name || '' \n\n }\n const client_group = clients.groups.data && clients.groups.data.find( c => c.id === forecast.client_group )\n const client_name = client_group && client_group.name || ''\n \n return (\n
\n
\n
{ client_name }
\n
{ name }
\n
{ forecast.product_price }
USD
\n
{ forecast.product_price && calculateYearValuePrice( { data: forecast, product_price: forecast.product_price } ).toLocaleString( 'es-AR' ) }
USD
\n {\n edition &&\n
\n
\n
{ deleteForecast( forecast.id, reloadAction ) } }>
\n
\n }\n
\n
\n
\n \n
\n
\n )\n}\n\nconst ForecastYearQData = ({ data }) => {\n\n const {\n q_enero,\n q_febrero,\n q_marzo,\n q_abril,\n q_mayo,\n q_junio,\n q_julio,\n q_agosto,\n q_septiembre,\n q_octubre,\n q_noviembre,\n q_diciembre\n } = data\n\n const total = (\n ( q_enero || 0 ) +\n ( q_febrero || 0 ) +\n ( q_marzo || 0 ) +\n ( q_abril || 0 ) +\n ( q_mayo || 0 ) +\n ( q_junio || 0 ) +\n ( q_julio || 0 ) +\n ( q_agosto || 0 ) +\n ( q_septiembre || 0 ) +\n ( q_octubre || 0 ) +\n ( q_noviembre || 0 ) +\n ( q_diciembre || 0 )\n )\n\n return (\n
\n
\n
\n
Enero
\n
{ q_enero }
\n
\n
\n
Febrero
\n
{ q_febrero }
\n
\n
\n
Marzo
\n
{ q_marzo }
\n
\n
\n
Abril
\n
{ q_abril }
\n
\n
\n
Mayo
\n
{ q_mayo }
\n
\n
\n
Junio
\n
{ q_junio }
\n
\n
\n
Julio
\n
{ q_julio }
\n
\n
\n
Agosto
\n
{ q_agosto }
\n
\n
\n
Septiembre
\n
{ q_septiembre }
\n
\n
\n
Octubre
\n
{ q_octubre }
\n
\n
\n
Noviembre
\n
{ q_noviembre }
\n
\n
\n
Diciembre
\n
{ q_diciembre }
\n
\n
\n
Total
\n
{ total }
\n
\n
\n
\n )\n\n}\n\n// LISTA COMPLETA DE USUARIOS\nconst ForecastsList = ( { forecasts, products, clients, reloadAction, openEditionModal, yearSelected, edition } ) => {\n\n const [ activePage, setActivePage ] = useState( 1 );\n const pageSize = 20;\n\n // RECORTO LA CANTIDAD DE REGISTRO AL TAMAÑO DE PAGINA\n const pageList = forecasts\n .map( forecast => { openEditionModal( forecast.id ) } }\n reloadAction={ reloadAction } /> )\n\n // RENDERIZO LA LISTA DE ZONAS CON LA PAGINACION\n return (\n
\n
\n \n { \n pageList.length\n ?\n
\n { pageList.slice( ( activePage - 1 ) * pageSize , activePage * pageSize) }\n
\n setActivePage( page ) }\n hideFirstLastPages={ true }\n prevPageText=\"«\"\n nextPageText=\"»\"\n />\n
\n
\n :\n \n }\n
\n
\n )\n}\n\n// BAJA DE USUARIO\nconst deleteForecast = ( forecastId, reloadAction ) => {\n // DISPARO ALERT DE CONFIRMACION\n Swal.fire({\n title: 'Eliminar Producto',\n text: 'Estás seguro que deseas eliminar el producto?',\n icon: 'question',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n cancelButtonText: 'Cancelar',\n confirmButtonText: 'Si, eliminarlo!',\n showLoaderOnConfirm: true,\n // AL CONFIRMAR LE PEGO A LA API DE DELETE /ZONES\n preConfirm: ( value ) => {\n return forecastService.delete( forecastId )\n },\n allowOutsideClick: () => !Swal.isLoading()\n }).then((result) => {\n // AL FINALIZAR MUESTRO ALERT DE SUCCESS Y LE PEGO AL HANDLER DE RELOAD PAGE\n if ( result.value ) {\n Swal.fire(\n 'Eliminado!',\n 'Venta eliminada exitosamente!',\n 'success'\n )\n\n reloadAction();\n }\n })\n}\n\nfunction calculateYearValuePrice( { data, product_price } ){\n\n const {\n q_enero,\n q_febrero,\n q_marzo,\n q_abril,\n q_mayo,\n q_junio,\n q_julio,\n q_agosto,\n q_septiembre,\n q_octubre,\n q_noviembre,\n q_diciembre\n } = data\n\n return Math.round(\n ( Number( q_enero ) || 0 ) +\n ( Number( q_febrero ) || 0 ) +\n ( Number( q_marzo ) || 0 ) +\n ( Number( q_abril ) || 0 ) +\n ( Number( q_mayo ) || 0 ) +\n ( Number( q_junio ) || 0 ) +\n ( Number( q_julio ) || 0 ) +\n ( Number( q_agosto ) || 0 ) +\n ( Number( q_septiembre ) || 0 ) +\n ( Number( q_octubre ) || 0 ) +\n ( Number( q_noviembre ) || 0 ) +\n ( Number( q_diciembre ) || 0 )\n ) * product_price\n\n}\n\nexport default ForecastsList\n\n\nconst deleteYearForecasts = ( year, reloadAction ) => {\n\n Swal.fire({\n title: 'Eliminar Pronosticos del año',\n text: 'Estás seguro que deseas eliminar todos los pronósticos del año?',\n icon: 'question',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n cancelButtonText: 'Cancelar',\n confirmButtonText: 'Si, eliminarlos!',\n showLoaderOnConfirm: true,\n // AL CONFIRMAR LE PEGO A LA API DE DELETE /ZONES\n preConfirm: ( value ) => {\n return forecastService.deleteYear( year )\n },\n allowOutsideClick: () => !Swal.isLoading()\n }).then((result) => {\n // AL FINALIZAR MUESTRO ALERT DE SUCCESS Y LE PEGO AL HANDLER DE RELOAD PAGE\n if ( result.value ) {\n Swal.fire(\n 'Eliminadas!',\n 'Pronósticos eliminados exitosamente!',\n 'success'\n )\n\n reloadAction();\n }\n })\n\n}","import React, { useState } from 'react';\nimport Modal from 'react-modal';\nimport { Button, DatePicker, Input, Select } from 'antd';\nimport { FiUserPlus } from 'react-icons/fi'\nimport Swal from 'sweetalert2';\nimport salesService from '../../../../services/Sales';\nimport moment from 'moment';\nimport forecastService from '../../../../services/Forecast';\nimport { YEARS_AVAILABLES } from '../../../../constants/constants';\n\nconst { Option } = Select;\n\n// ESTILO DEL MODAL DE INVITACION DE USUARIO\nconst customStyles = {\n overlay: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)'\n },\n content : {\n top : '50%',\n left : '50%',\n right : 'auto',\n bottom : 'auto',\n marginRight : '-50%',\n transform : 'translate(-50%, -50%)',\n background : 'white'\n }\n};\n\nconst NewForecastModal = ( { year, handlerClose, refreshAction, clients, products, data } ) => {\n\n const [ loading, setLoading ] = useState( false )\n const [ newForecastData, setNewForecastData ] = useState({\n year: data.editionMode ? data.forecastData.year : year,\n product: data.editionMode ? data.forecastData.product : null,\n client_group: data.editionMode ? data.forecastData.client_group : null,\n product_type: 1,\n q_enero: data.editionMode ? data.forecastData.q_enero : null,\n q_febrero: data.editionMode ? data.forecastData.q_febrero : null,\n q_marzo: data.editionMode ? data.forecastData.q_marzo : null,\n q_abril: data.editionMode ? data.forecastData.q_abril : null,\n q_mayo: data.editionMode ? data.forecastData.q_mayo : null,\n q_junio: data.editionMode ? data.forecastData.q_junio : null,\n q_julio: data.editionMode ? data.forecastData.q_julio : null,\n q_agosto: data.editionMode ? data.forecastData.q_agosto : null,\n q_septiembre: data.editionMode ? data.forecastData.q_septiembre : null,\n q_octubre: data.editionMode ? data.forecastData.q_octubre : null,\n q_noviembre: data.editionMode ? data.forecastData.q_noviembre : null,\n q_diciembre: data.editionMode ? data.forecastData.q_diciembre : null,\n })\n\n const addForecast = () => {\n\n if ( !newForecastData.product || !newForecastData.client_group || !newForecastData.year ){\n Swal.fire({\n icon: 'warning',\n title: \"Campos incompletos\",\n text: \"Por favor complete con todos los campos para continuar\"\n })\n \n return;\n }\n \n setLoading( true )\n // ALERT DE LOADING\n Swal.fire ({\n title: \"..Creando la venta..\",\n onBeforeOpen: () => {\n Swal.showLoading ()\n }\n })\n\n // LE PEGO A LA API Y AL FINALIZAR LLAMO AL HANDLER DE SUCCESS Y CIERRO EL ALERT\n const addForecastAPI = data.editionMode ? forecastService.put : forecastService.post;\n addForecastAPI( { ...newForecastData, id: data?.forecastData?.id } )\n .then( res => {\n refreshAction();\n Swal.close();\n handlerClose()\n } )\n\n }\n\n return (\n
\n \n\n
\n
\n \n
\n
\n
\n
\n { setNewForecastData({ ...newForecastData, client_group: Number( value ) }) } }\n placeholder=\"Buscar grupo economico\"\n optionFilterProp=\"children\"\n filterOption={(input, option) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n filterSort={(optionA, optionB) =>\n optionA.children.toLowerCase().localeCompare(optionB.children.toLowerCase())\n }\n >\n {\n clients.groups.data.map( client_group => )\n }\n \n
\n
\n { setNewForecastData({ ...newForecastData, product: Number( value ) }) } }\n placeholder=\"Buscar producto\"\n optionFilterProp=\"children\"\n filterOption={(input, option) =>\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n filterSort={(optionA, optionB) =>\n optionA.children.toLowerCase().localeCompare(optionB.children.toLowerCase())\n }\n >\n {\n products.list.data.map( product => )\n }\n \n
\n
\n
\n
Enero
\n
\n { setNewForecastData({ ...newForecastData, q_enero: Number( ev.target.value ) }) } } />\n
\n
\n
\n
Febrero
\n
\n { setNewForecastData({ ...newForecastData, q_febrero: Number( ev.target.value ) }) } } />\n
\n
\n
\n
Marzo
\n
\n { setNewForecastData({ ...newForecastData, q_marzo: Number( ev.target.value ) }) } } />\n
\n
\n
\n
Abril
\n
\n { setNewForecastData({ ...newForecastData, q_abril: Number( ev.target.value ) }) } } />\n
\n
\n
\n
\n
\n
Mayo
\n
\n { setNewForecastData({ ...newForecastData, q_mayo: Number( ev.target.value ) }) } } />\n
\n
\n
\n
Junio
\n
\n { setNewForecastData({ ...newForecastData, q_junio: Number( ev.target.value ) }) } } />\n
\n
\n
\n
Julio
\n
\n { setNewForecastData({ ...newForecastData, q_julio: Number( ev.target.value ) }) } } />\n
\n
\n
\n
Agosto
\n
\n { setNewForecastData({ ...newForecastData, q_agosto: Number( ev.target.value ) }) } } />\n
\n
\n
\n
\n
\n
Septiembre
\n
\n { setNewForecastData({ ...newForecastData, q_septiembre: Number( ev.target.value ) }) } } />\n
\n
\n
\n
Octubre
\n
\n { setNewForecastData({ ...newForecastData, q_octubre: Number( ev.target.value ) }) } } />\n
\n
\n
\n
Noviembre
\n
\n { setNewForecastData({ ...newForecastData, q_noviembre: Number( ev.target.value ) }) } } />\n
\n
\n
\n
Diciembre
\n
\n { setNewForecastData({ ...newForecastData, q_diciembre: Number( ev.target.value ) }) } } />\n
\n
\n
\n
\n
\n \n
\n
\n
\n\n \n
\n )\n}\n\nexport default NewForecastModal","import React, { useEffect, useState } from 'react';\nimport Modal from 'react-modal';\nimport { Button } from 'antd';\nimport Swal from 'sweetalert2';\n\nimport { Upload } from 'antd';\nimport { InboxOutlined } from '@ant-design/icons';\n\nimport forecastService from '../../../../services/Forecast';\n\nconst { Dragger } = Upload;\n\n // ESTILO DEL MODAL DE INVITACION DE USUARIO\n const customStyles = {\n overlay: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)'\n },\n content : {\n top : '50%',\n left : '50%',\n right : 'auto',\n bottom : 'auto',\n marginRight : '-50%',\n transform : 'translate(-50%, -50%)',\n background : 'white'\n }\n };\n\nconst UploadExcelForecastModal = ( { year, handlerClose, refreshAction } ) => {\n\n const [ loading, setLoading ] = useState( false )\n const [ file, setFile ] = useState( null )\n\n const draggerProps = {\n name: 'file',\n accept: \".xls, .xlsx\",\n multiple: false,\n showUploadList: false,\n beforeUpload: () => false,\n onChange(info) { \n setFile( info.file )\n }\n };\n\n\n const uploadFiles = () => {\n\n if ( !file ){\n Swal.fire({\n icon: 'warning',\n title: \"Archivo sin seleccionar\",\n text: \"Por favor seleccione el archivo para continuar\"\n })\n \n return;\n }\n \n setLoading( true )\n // ALERT DE LOADING\n Swal.fire ({\n title: \"..Subiendo excel..\",\n onBeforeOpen: () => {\n Swal.showLoading ()\n }\n })\n\n // LE PEGO A LA API Y AL FINALIZAR LLAMO AL HANDLER DE SUCCESS Y CIERRO EL ALERT\n forecastService.uploadExcel( { year, file, forceExisting: false } )\n .then( res => {\n\n if ( !res.data.success ){\n\n if ( res.data.code === 9 ){\n\n confirmExisting( year, file, () => {\n refreshAction()\n handlerClose()\n }, res.data.data )\n\n } else if ( res.data.code === 8 ){\n\n Swal.fire({\n icon: 'error',\n title: \"Ocurrió un error\",\n text: \"No se pudo leer el excel correctamente, por favor contactese con un administrador.\"\n })\n\n }\n\n } else {\n\n refreshAction();\n Swal.close();\n handlerClose()\n\n }\n\n } )\n .catch( err => {\n\n console.log( err )\n Swal.fire({\n icon: 'error',\n title: \"Ocurrió un error\",\n text: err.code || \"No pudimos subir el excel, contactese con un administrador.\"\n })\n\n } )\n\n }\n\n return (\n
\n \n\n
\n
Subir excel de pronosticos de ventas
\n \n

\n \n

\n

Clickea aquí o arrastrá tu excel con pronosticos

\n
\n\n
\n \n
\n
\n\n \n
\n )\n}\n\nexport default UploadExcelForecastModal\n\nconst confirmExisting = ( year, file, reloadAction, data ) => {\n // DISPARO ALERT DE CONFIRMACION\n Swal.fire({\n title: 'Datos desconocidos',\n html: `\n
Detectamos productos y grupos economicos desconocidos en nuestra DB. Recuerda que al subir un excel con ventas de un mes, se sobreescribiran los datos existentes del mes correspondiente. ¿Quieres subir igualmente el resto de los registros de los que conocemos el producto y el cliente?
\n
\n
Lista de productos sin crear
\n
\n ${ data.unknownProducts.map( prod => '
' + prod + '
' ).join( ' ' ) }\n
\n
\n
\n
Lista de clientes sin crear
\n
\n ${ data.unknownClientsGroups.map( prod => '
' + prod + '
' ).join( ' ' ) }\n
\n
\n `,\n icon: 'question',\n showCancelButton: true,\n customClass: {\n container: 'excel-container'\n }, \n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n cancelButtonText: 'Cancelar',\n confirmButtonText: 'Si, subir los conocidos!',\n showLoaderOnConfirm: true,\n // AL CONFIRMAR LE PEGO A LA API DE DELETE /ZONES\n preConfirm: ( value ) => {\n return forecastService.uploadExcel( { year, file, forceExisting: true } )\n },\n allowOutsideClick: () => !Swal.isLoading()\n }).then((result) => {\n // AL FINALIZAR MUESTRO ALERT DE SUCCESS Y LE PEGO AL HANDLER DE RELOAD PAGE\n if ( result.value ) {\n Swal.fire(\n 'Subidos!',\n 'Ventas subidas exitosamente!',\n 'success'\n )\n \n reloadAction();\n }\n })\n }","import React, { useEffect, useState } from 'react'\nimport PageHeader from '../../../components/PageHeader/PageHeader'\nimport { MdStackedLineChart } from 'react-icons/md'\nimport Filter from './components/Filter'\nimport { connect } from 'react-redux'\nimport { IoMdAdd } from 'react-icons/io'\nimport ForecastsList from './components/ForecastList'\nimport forecastService from '../../../services/Forecast'\nimport './forecast.css'\nimport NewForecastModal from './components/NewForecast'\nimport { Button } from 'antd'\nimport { getProducts } from '../../../store/actions/getProducts'\nimport UploadExcelForecastModal from './components/UploadExcelModal'\nimport { LoadingPage } from '../loading/LoadingPage'\n\nconst ForecastPage = ({ products_state, clients_state, yearSelected, userdata, getProducts }) => {\n\n const [ filters, setFilters ] = useState( { string: '', client_group: null, product: null, justProductsWithData: true } );\n// const [ facturableFilter, setFacturableFilter ] = useState( 'ALL' );\n const [ forecastListFiltered, setForecastListFiltered ] = useState( [] )\n const [ newForecastModal, setNewForecastModal ] = useState( { visible: false, data: { editionMode: false, forecastId: null } } )\n const [ uploadExcelModalVisible, setUploadExcelModalVisible ] = useState( false ) \n const [ fetchingForecastStatus, setFetchingForecastStatus ] = useState( { loading: true, error: null, data: null } )\n\n // HOOK PARA ACTUALIZACION DE LISTA DE USUARIOS EN FUNCION DEL FILTRO\n useEffect( () => {\n \n if ( \n fetchingForecastStatus.data &&\n products_state.list.data &&\n clients_state.groups.data\n ){\n\n const fullList = fetchingForecastStatus.data\n .filter( forecast => {\n\n const product = products_state.list.data && products_state.list.data.find( prod => Number( forecast.product ) === Number( prod.id ) )\n const client_group = clients_state.groups.data && clients_state.groups.data.find( cg => Number( forecast.client_group ) === Number( cg.id ) )\n\n const stringToMatch = `${ product && product.name } ${ client_group && client_group.name }`\n const stringFilter = stringToMatch.toUpperCase().includes( filters.string.toUpperCase() )\n\n const productMatch = !filters.product || filters.product === forecast.product\n const groupMatch = !filters.client_group || filters.client_group === forecast.client_group\n\n const productsWithDataFilter = filters.justProductsWithData ? (\n forecast.q_enero ||\n forecast.q_febrero ||\n forecast.q_marzo ||\n forecast.q_abril ||\n forecast.q_mayo ||\n forecast.q_junio ||\n forecast.q_julio ||\n forecast.q_agosto ||\n forecast.q_septiembre ||\n forecast.q_octubre ||\n forecast.q_noviembre ||\n forecast.q_diciembre\n ) : true;\n \n return stringFilter && productMatch && groupMatch && productsWithDataFilter\n } )\n \n setForecastListFiltered( fullList );\n\n }\n\n }, [ filters, fetchingForecastStatus.data, clients_state, products_state ] )\n\n const refreshForecast = () => {\n\n setFetchingForecastStatus( { loading: true, error: null, data: null } )\n forecastService.get({ year: yearSelected })\n .then( res => {\n setFetchingForecastStatus( { loading: false, error: null, data: res.data.data } )\n getProducts()\n } )\n\n }\n\n const editForecast = forecastId => {\n\n const saleData = fetchingForecastStatus.data.find( forecast => Number( forecast.id ) === Number( forecastId ) )\n\n setNewForecastModal({ visible: true, data: { editionMode: true, forecastData: saleData } })\n\n }\n\n useEffect( () => {\n refreshForecast()\n }, [ yearSelected ] )\n\n if ( \n fetchingForecastStatus.loading || \n clients_state.list.loading || \n clients_state.groups.loading || \n products_state.list.loading || \n products_state.groups.loading || \n products_state.lines.loading ||\n userdata.loading\n ) return \n\n return (\n
\n
\n } />\n {\n userdata.data.type === 10 &&\n
\n
\n \n
\n
\n \n
\n
\n }\n
\n
\n\n
\n \n
\n\n \n\n
\n {\n uploadExcelModalVisible && { setUploadExcelModalVisible( false ) } }\n year={ yearSelected }\n refreshAction={ refreshForecast } />\n }\n {\n newForecastModal.visible && { setNewForecastModal( { ...newForecastModal, visible: false } ) } }\n products={ products_state }\n clients={ clients_state }\n year={ yearSelected }\n refreshAction={ refreshForecast }\n data={ newForecastModal.data }\n />\n }\n
\n )\n}\n\nexport default connect( state => ({ userdata: state.userdata, products_state: state.products, clients_state: state.clients, yearSelected: state.campaign } ), { getProducts } )( ForecastPage )","import Api from './Api';\n\nconst graphService = {\n\n getClientGroupGraphData: ( jsonData ) => {\n\n return Api.post( '/graph/client_groups', jsonData, {\n withCredentials: true\n } )\n\n },\n getProductGraphData: ( jsonData ) => {\n\n return Api.post( '/graph/products', jsonData, {\n withCredentials: true\n } )\n\n },\n getSalesStatusData: ( jsonData ) => {\n\n return Api.post( '/graph/month_status', jsonData, {\n withCredentials: true\n } )\n\n },\n getTotalsGraphData: ( jsonData ) => {\n\n return Api.post( '/graph/totals', jsonData, {\n withCredentials: true\n } )\n\n },\n}\n\nexport default graphService\n","import React from 'react'\nimport Currency from '../../../../../../components/Currency'\nimport { MONTHS } from '../../../../../../constants/constants'\nimport './filter-pills.css'\n\nexport const FilterPills = ({\n filters,\n products,\n clients\n}) => {\n\n return (\n
\n \n
{ MONTHS[ filters.date.month ] }
\n\n
{filters.exchange === \"LOCAL\" ? : \"USD\" }
\n\n
{ filters.sub_clients !== null && filters.sub_clients.length < clients.list.data.length ? `${ filters.sub_clients.length } clientes del grupo` : 'Todos los clientes del grupo' }
\n\n
{ filters.products.length < products.data.length ? `${ filters.products.length } productos` : 'Todos los productos' }
\n\n
\n )\n\n}","import Checkbox from 'antd/es/checkbox/Checkbox'\nimport React from 'react'\nimport Currency from '../../../../../../components/Currency'\nimport { MONTHS } from '../../../../../../constants/constants'\nimport './menu.css'\n\nexport const FilterMenu = ({\n filters,\n setFilters,\n products,\n clients\n}) => {\n\n const handleChangeSelector = productId => {\n\n setFilters( prev => {\n\n const products = prev.products.indexOf( productId ) > -1 ? prev.products.filter( p => p !== productId ) : [ ...prev.products, productId ] \n\n return {\n ...prev,\n products\n }\n })\n\n }\n\n const handleChangeClientSelector = clientId => {\n\n setFilters( prev => {\n\n const allsubclients = clients.list.data.filter( client => client.group === filters.client_group.id ).map( p => p.id )\n let sub_clients = prev.sub_clients\n if ( prev.sub_clients === null ){\n sub_clients = allsubclients.filter( c => c !== clientId )\n } else {\n if ( prev.sub_clients.indexOf( clientId ) > -1 ){\n sub_clients = prev.sub_clients.filter( c => c !== clientId )\n } else {\n sub_clients = [ ...prev.sub_clients, clientId ]\n }\n }\n\n return {\n ...prev,\n sub_clients\n }\n })\n\n }\n\n const selectAll = type => {\n\n if ( type === 'ALL' ){\n\n setFilters({ ...filters, products: products.data.map( p => p.id ) })\n\n } else if ( type === 'NONE' ){\n\n setFilters({ ...filters, products: [] })\n\n }\n\n }\n\n return (\n
\n
\n
MES
\n
\n {\n MONTHS.map( (monthName, index) => (\n
{ setFilters( { ...filters, date: { month: index } } ) } }>\n { monthName }\n
\n ) )\n }\n
\n
\n\n
\n
MONEDA
\n
\n
setFilters({ ...filters, exchange: 'LOCAL' }) }>\n \n
\n | \n
setFilters({ ...filters, exchange: 'USD' }) }>\n USD\n
\n
\n
\n\n
\n
CLIENTES
\n\n
\n
\n
setFilters( prev => ({ ...prev, sub_clients: [] }) ) }>\n Ninguno\n
\n | \n
setFilters( prev => ({ ...prev, sub_clients: null }) ) }>\n Todos\n
\n
\n
\n \n
\n {\n clients.list.data\n .filter( client => client.group === filters.client_group.id )\n .map( client => (\n
handleChangeClientSelector( client.id ) }>\n -1 } />\n { client.name } \n
\n ) )\n }\n
\n
\n\n
\n
PRODUCTOS
\n\n
\n
\n
{ selectAll( 'NONE' ) } }>\n Ninguno\n
\n | \n
{ selectAll( 'ALL' ) } }>\n Todos\n
\n
\n
\n \n
\n {\n products.data.map( product => (\n
handleChangeSelector( product.id ) }>\n -1 } />\n { product.name } \n
\n ) )\n }\n
\n
\n\n
\n )\n\n}","import React, { useEffect, useState } from 'react';\nimport Modal from 'react-modal';\nimport { Input } from 'antd';\nimport './selectClientModal.css'\n\n\n // ESTILO DEL MODAL DE INVITACION DE USUARIO\n const customStyles = {\n overlay: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)'\n },\n content : {\n top : '50%',\n left : '50%',\n right : 'auto',\n bottom : 'auto',\n marginRight : '-50%',\n transform : 'translate(-50%, -50%)',\n background : 'white',\n padding : '0',\n height : '50vh',\n width : '30vw',\n overflow : 'hidden'\n }\n };\n\nconst SelectClientModal = ( { clients, handlerClose, selectClientGroup } ) => {\n\n const [ stringFilter, setStringFilter ] = useState( '' )\n const [ filteredClients, setFilteredClients ] = useState( clients.list.data )\n\n useEffect( () => {\n\n const fullList = clients.groups.data.filter( clientgroup => {\n\n const stringToMatch = `${ clientgroup.name }`\n \n return stringToMatch.toUpperCase().includes( stringFilter.toUpperCase() )\n \n } )\n\n setFilteredClients( fullList )\n\n }, [ stringFilter, clients.list.data ] )\n\n return (\n
\n \n\n
\n \n
\n { setStringFilter( ev.target.value ) } } placeholder=\"Buscar cliente..\" />\n
\n\n
\n {\n filteredClients.map( clientgroup => {\n\n return (\n
{ selectClientGroup( clientgroup.id ); handlerClose() } }>\n
\n
{ clientgroup.name }
\n
\n {/*
{ clientGroup.name }
*/}\n
\n )\n\n } )\n }\n
\n\n
\n\n \n
\n )\n}\n\nexport default SelectClientModal\n","import { Button, Dropdown, Spin } from 'antd'\nimport React, { useState, useEffect } from 'react'\nimport './client-card.css'\nimport graphService from '../../../../../../services/Graph'\nimport { FilterPills } from './FilterPills'\nimport { BsSliders } from \"react-icons/bs\";\nimport { FilterMenu } from './FilterMenu'\nimport SelectClientModal from './SelectClientModal'\n\nexport const ClientCard = ({ \n campaign, \n setGraphFetchStatus, \n clients, \n clientGroupSelected, \n selectClientGroup, \n filters,\n setFilters, \n products, \n type, \n graphFetchStatus \n}) => {\n\n const [ selectClientModal, setSelectClientModal ] = useState( { visible: false } )\n\n // FETCH DATA\n useEffect( () => {\n\n if ( filters.client_group ){\n \n setGraphFetchStatus( { loading: true, error: null, data: null } )\n \n graphService.getClientGroupGraphData( { \n filters: {\n date: {\n month: filters.date.month, \n year: filters.date.year || campaign, \n },\n client_group: filters.client_group.id,\n sub_clients: filters.sub_clients,\n products: filters.products,\n exchange: filters.exchange,\n ignore_null_sales: false //filters.ignore_null_sales\n }\n } )\n .then( res => {\n setGraphFetchStatus( { loading: false, error: null, data: res } )\n } )\n .catch( err => {\n setGraphFetchStatus( { loading: false, error: true, data: null } )\n } )\n }\n \n }, [ \n filters.client_group, \n filters.date, \n filters.exchange, \n filters.products, \n filters.ignore_null_sales, \n filters.sub_clients, \n campaign\n ] )\n\n if ( !clientGroupSelected ) return
\n\n return (\n
\n\n
\n
\n
\n
\n
{ clientGroupSelected.name }
\n
\n \n
\n
\n
\n {\n selectClientModal.visible && \n { setSelectClientModal( { visible: false } ) } }\n selectClientGroup={ selectClientGroup }\n type={ type }\n />\n }\n
\n\n \n
\n\n
\n \n }>\n \n \n
\n\n\n
\n )\n\n}","import React, { useEffect, useState } from 'react'\nimport { YAxis } from 'recharts'\nimport { AreaChart } from 'recharts'\nimport { ResponsiveContainer } from 'recharts'\nimport { Bar } from 'recharts'\nimport { Radio, Spin, Switch } from 'antd';\nimport { BarChart } from 'recharts'\nimport { Area } from 'recharts'\nimport { XAxis } from 'recharts'\nimport { MONTHS } from '../../../../../../constants/constants'\nimport './forecast-graph.css'\nimport { Legend } from 'recharts'\nimport { Tooltip } from 'recharts'\nimport './forecast-graph.css'\nimport { EmptyContainer } from '../../../../sales/components/EmptyContainer'\nimport Currency from '../../../../../../components/Currency'\n\nexport const ForecastGraph = ({ fetchStatus, products, exchange, compare }) => {\n\n const [ config, setConfig ] = useState( { chartType: 'TABLE', mode: 'Q', filterNulls: true } )\n\n if ( !fetchStatus.data ) return
\n\n return (\n
\n \n
\n
Ventas vs Pronóstico
\n
\n
\n
\n
Ver solo items con ventas
\n
{ setConfig( { ...config, filterNulls } ) } } />
\n
\n
\n
\n setConfig({ ...config, chartType: e.target.value }) }>\n Lineal\n Barras\n Tabla\n \n
\n
\n setConfig({ ...config, mode: e.target.value }) }>\n Cantidad\n Valor\n \n
\n
\n
\n
\n\n {\n config.chartType === 'LINE'\n ?\n \n :\n (\n config.chartType === 'BAR'\n ?\n \n :\n \n )\n }\n\n
\n\n
\n )\n}\n\n\nconst LinealGraph = ({ data, mode, exchange, compare, filterNulls }) => {\n\n const dataSource = data\n .total[ mode === 'Q' ? 'q' : 'price' ]\n // .filter( d => filterNulls ? d.sales.find( item => item ) : true ) // CREO QUE NO ES CORRECTO FILTRAR EN ESTE GRAFICO\n\n const dataParsed = MONTHS.map( ( month, index ) => ({\n tag: month.slice( 0, 3 ),\n \"Ventas\": dataSource.sales[ index ],\n \"Pronóstico\": dataSource.forecast[ index ],\n \"Comparación Ventas\": compare.fetchStatus.data && compare.fetchStatus.data.data.data.FORECAST_GRAPH.total[ mode === 'Q' ? 'q' : 'price' ].sales[ index ],\n \"Comparación Pronóstico\": compare.fetchStatus.data && compare.fetchStatus.data.data.data.FORECAST_GRAPH.total[ mode === 'Q' ? 'q' : 'price' ].forecast[ index ]\n }) ) \n \n \n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n { compare.on && !compare.fetchStatus.loading && compare.fetchStatus.data && }\n { compare.on && !compare.fetchStatus.loading && compare.fetchStatus.data && }\n\n \n \n
\n )\n\n}\n\nconst BarGraph = ({ data, mode, exchange, compare, filterNulls }) => {\n\n const dataSource = data\n .total[ mode === 'Q' ? 'q' : 'price' ]\n // .filter( d => filterNulls ? d.sales.find( item => item ) : true ) // CREO QUE NO ES CORRECTO FILTRAR EN ESTE GRAFICO\n\n const dataParsed = MONTHS.map( ( month, index ) => ({\n tag: month.slice( 0, 3 ),\n \"Ventas\": dataSource.sales[ index ],\n \"Pronóstico\": dataSource.forecast[ index ],\n \"Comparación Ventas\": compare.fetchStatus.data && compare.fetchStatus.data.data.data.FORECAST_GRAPH.total[ mode === 'Q' ? 'q' : 'price' ].sales[ index ],\n \"Comparación Pronóstico\": compare.fetchStatus.data && compare.fetchStatus.data.data.data.FORECAST_GRAPH.total[ mode === 'Q' ? 'q' : 'price' ].forecast[ index ]\n }) ) \n \n return (\n
\n \n \n \n \n \n \n \n \n { compare.on && !compare.fetchStatus.loading && compare.fetchStatus.data && }\n { compare.on && !compare.fetchStatus.loading && compare.fetchStatus.data && }\n \n \n
\n )\n\n}\n\nconst TableChart = ({ data, mode, products, exchange, compare, filterNulls }) => {\n\n const filteredData = data.partials[ mode === 'Q' ? 'q' : 'price' ].filter( d => filterNulls ? d.sales.find( item => item ) : true )\n\n const compareDataSource = compare.fetchStatus.data ? compare.fetchStatus.data.data.data.FORECAST_GRAPH.partials[ mode === 'Q' ? 'q' : 'price' ].map( item => ({ ...item, compareItem: true }) ) : []\n const dataSource = [ ...filteredData, ...compareDataSource ]\n\n const compareTotals = compare.on && compareDataSource && getTableTotals( compareDataSource )\n const totals = dataSource && getTableTotals( filteredData )\n\n if ( !dataSource || !dataSource.length ){\n\n return (\n
\n \n
\n )\n }\n\n return (\n
\n
\n
\n
\n
\n
\n {\n dataSource.map( ( productItem, index ) => {\n\n const productdata = products.find( product => product.id == productItem.product )\n\n return (\n
\n { compare.on &&
}\n
{ productdata.name }
\n
\n )\n\n } )\n\n }\n
\n { compare.on &&
}\n
Total
\n
\n\n {\n compareTotals &&\n
\n { compare.on &&
}\n
Total
\n
\n }\n
\n
\n
\n
\n
ENE
\n
FEB
\n
MAR
\n
ABR
\n
MAY
\n
JUN
\n
JUL
\n
AGO
\n
SEP
\n
OCT
\n
NOV
\n
DIC
\n
Total
\n
\n
\n {\n dataSource.map( ( productItem, index ) => {\n\n const totalSales = productItem.sales.reduce( ( prev, curr ) => prev + curr, 0 )\n const totalForecast = productItem.forecast.reduce( ( prev, curr ) => prev + curr, 0 )\n\n return (\n
\n
{ Math.round( productItem.sales[ 0 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 0 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 1 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 1 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 2 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 2 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 3 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 3 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 4 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 4 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 5 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 5 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 6 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 6 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 7 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 7 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 8 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 8 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 9 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 9 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 10 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 10 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 11 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 11 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( totalSales ).toLocaleString( 'es-AR' ) }/{ Math.round( totalForecast ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
\n )\n\n } )\n\n }\n
\n
{ Math.round( totals.sales[ 0 ] ) }/{ Math.round( totals.forecast[ 0 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 1 ] ) }/{ Math.round( totals.forecast[ 1 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 2 ] ) }/{ Math.round( totals.forecast[ 2 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 3 ] ) }/{ Math.round( totals.forecast[ 3 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 4 ] ) }/{ Math.round( totals.forecast[ 4 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 5 ] ) }/{ Math.round( totals.forecast[ 5 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 6 ] ) }/{ Math.round( totals.forecast[ 6 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 7 ] ) }/{ Math.round( totals.forecast[ 7 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 8 ] ) }/{ Math.round( totals.forecast[ 8 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 9 ] ) }/{ Math.round( totals.forecast[ 9 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 10 ] ) }/{ Math.round( totals.forecast[ 10 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 11 ] ) }/{ Math.round( totals.forecast[ 11 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.totals.sales ) }/{ Math.round( totals.totals.forecast ) } { mode === 'PRICE' && }
\n
\n\n {\n compareTotals &&\n
\n
{ Math.round( compareTotals.sales[ 0 ] ) }/{ Math.round( compareTotals.forecast[ 0 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 1 ] ) }/{ Math.round( compareTotals.forecast[ 1 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 2 ] ) }/{ Math.round( compareTotals.forecast[ 2 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 3 ] ) }/{ Math.round( compareTotals.forecast[ 3 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 4 ] ) }/{ Math.round( compareTotals.forecast[ 4 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 5 ] ) }/{ Math.round( compareTotals.forecast[ 5 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 6 ] ) }/{ Math.round( compareTotals.forecast[ 6 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 7 ] ) }/{ Math.round( compareTotals.forecast[ 7 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 8 ] ) }/{ Math.round( compareTotals.forecast[ 8 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 9 ] ) }/{ Math.round( compareTotals.forecast[ 9 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 10 ] ) }/{ Math.round( compareTotals.forecast[ 10 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 11 ] ) }/{ Math.round( compareTotals.forecast[ 11 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.totals.sales ) }/{ Math.round( compareTotals.totals.forecast ) } { mode === 'PRICE' && }
\n
\n }\n
\n
\n
\n )\n\n}\n\nfunction getTableTotals( data ){\n\n const response = data\n .reduce( ( prev, curr, index ) => {\n\n const forecast = []\n const sales = []\n\n Array.from( Array(12).keys() )\n .map( ( item , i ) => {\n forecast[ i ] = prev.forecast[ i ] + curr.forecast[ i ]\n sales[ i ] = prev.sales[ i ] + curr.sales[ i ]\n } )\n\n return {\n forecast,\n sales\n }\n\n }, { \n forecast: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], \n sales: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] \n })\n\n response[ 'totals' ] = {\n forecast: response.forecast.reduce( ( prev, curr ) => prev + curr, 0 ),\n sales: response.sales.reduce( ( prev, curr ) => prev + curr, 0 )\n }\n\n return response\n\n}","import { Spin } from 'antd'\nimport React from 'react'\nimport { Cell } from 'recharts'\nimport { Pie } from 'recharts'\nimport { PieChart } from 'recharts'\nimport Currency from '../../../../../../components/Currency'\nimport { EmptyContainer } from '../../../../sales/components/EmptyContainer'\nimport './actual-forecast-summery.css'\n\nexport const ActualForecastSummery = ({ fetchStatus, dateSelected, type, compare, exchange, monthly }) => {\n\n if ( !fetchStatus.data ) return
\n\n const totalSales = monthly ? fetchStatus.data.data.data.FORECAST_GRAPH.total.price.sales[ dateSelected.month ] : fetchStatus.data.data.data.FORECAST_GRAPH.total.price.sales.reduce( ( prev, curr ) => prev + curr, 0 )\n const totalForecast = monthly ? fetchStatus.data.data.data.FORECAST_GRAPH.total.price.forecast[ dateSelected.month ] : fetchStatus.data.data.data.FORECAST_GRAPH.total.price.forecast.reduce( ( prev, curr ) => prev + curr, 0 )\n const percentageFull = totalForecast ? ( ( totalSales / totalForecast ) * 100 ) : 100\n const data = [ {\n value: percentageFull <= 100 ? percentageFull : 100,\n fill: \"#4caf50\"\n }, {\n value: 100 - ( percentageFull <= 100 ? percentageFull : 100 ),\n fill: '#ff0000'\n } ]\n\n return (\n
\n { compare.on &&
}\n
Estado de venta del { monthly ? 'mes' : 'año' }
\n {\n totalSales || totalForecast\n ?\n
\n
\n
\n
Pronosticado
\n
{ Math.round( totalForecast ).toLocaleString( 'es-AR' ) }
\n
\n
\n
Vendido
\n
{ Math.round( totalSales ).toLocaleString( 'es-AR' ) }
\n
\n
\n
\n
{ percentageFull > 100 ? 'Sobreventa' : 'Restante' }
\n
{ Math.round( Math.abs( totalForecast - totalSales ) ).toLocaleString( 'es-AR' ) }
\n
\n
\n
\n \n \n {\n data.map((entry, index) => )\n }\n \n \n
\n { Math.round( percentageFull ) } \n % \n
\n
\n
\n :\n \n }\n
\n )\n}\n","import { Radio, Spin } from 'antd'\nimport React, { useState } from 'react'\nimport { Cell } from 'recharts'\nimport { Pie } from 'recharts'\nimport { PieChart } from 'recharts'\nimport { ResponsiveContainer } from 'recharts'\nimport { EmptyContainer } from '../../../../sales/components/EmptyContainer'\nimport './ranking.css'\nimport { FaArrowDown, FaArrowUp } from 'react-icons/fa'\nimport Currency from '../../../../../../components/Currency'\n\nconst COLORS = ['#35618f', '#611115', '#446645', '#491f91', '#142a25', '#ba0951'];\n\nconst RADIAN = Math.PI / 180;\nconst renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent, index }) => {\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n\n return (\n cx ? 'start' : 'end'} dominantBaseline=\"central\">\n {`${(percent * 100).toFixed(0)}%`}\n \n );\n};\n\nexport const RankingGraph = ({ fetchStatus, products, type, exchange, compare }) => {\n\n const [ mode, setMode ] = useState( 'MONTH' )\n\n if ( !fetchStatus.data ) return
\n\n const data = fetchStatus.data.data.data.RANKING_GRAPH[ mode ]\n\n return (\n
\n { compare.on &&
}\n
\n
Ranking de productos
\n
\n setMode( e.target.value ) }>\n Mes\n Trimestre\n Semestre\n Año\n \n
\n
\n {\n data && data.length\n ?\n
\n
\n {\n data.map( ( item, index ) => {\n\n const product = products.data.find( p => p.id === Number( item.product ) )\n\n return (\n
\n
\n
{ index + 1 }.
\n
\n
{ product && product.name || 'Otros' }
\n {\n item.productSoldPrice\n ?\n
\n Precio venta: \n { item.productSoldPrice ? Math.round( item.productSoldPrice ) : '' } \n { typeof item.overSoldPrice === 'boolean' ? ( item.overSoldPrice ? : ) : null }\n
\n :\n null\n }\n
\n
{ Math.round( item.sold ).toLocaleString( 'es-AR' ) }
\n
\n )\n })\n }\n
\n
\n \n \n \n {data.map((entry, index) => (\n \n ))}\n \n \n \n
\n
\n :\n \n }\n
\n )\n}\n","import { Spin } from 'antd'\nimport React, { useEffect, useState } from 'react'\nimport { FaArrowsAltV } from 'react-icons/fa'\nimport Currency from '../../../../../../components/Currency'\nimport { EmptyContainer } from '../../../../sales/components/EmptyContainer'\nimport './sales-list.css'\n\nexport const SalesList = ({ fetchStatus, products, clients, compare, exchange }) => {\n\n const [ orderedList, setOrderedList ] = useState( { orderby: { item: null, desc: false }, list: [] } )\n\n // EFECTO PARA ORDENAR LISTA\n useEffect( () => {\n\n const compareData = compare.on && !compare.fetchStatus.loading && compare.fetchStatus.data ? compare.fetchStatus.data.data.data.SALES_GRAPH.map( item => ({ ...item, compareItem: true }) ) : []\n let ordered = [ ...fetchStatus.data.data.data.SALES_GRAPH, ...compareData ]\n\n if ( orderedList.orderby.item === 'DATE' ){\n\n ordered = ordered.sort( ( sale1, sale2 ) => {\n\n if ( orderedList.orderby.desc ){\n\n if ( sale1.date < sale2.date ) {\n return 1;\n }\n if ( sale1.date > sale2.date ) {\n return -1;\n }\n return 0;\n\n } else {\n\n if ( sale1.date > sale2.date ) {\n return 1;\n }\n if ( sale1.date < sale2.date ) {\n return -1;\n }\n return 0;\n\n }\n\n } );\n\n } else if ( orderedList.orderby.item === 'CLIENT' ){\n\n ordered = ordered.sort( ( sale1, sale2 ) => {\n\n const client1 = clients && clients.data.find( g => Number( g.id ) === Number( sale1.client ) )\n const client2 = clients && clients.data.find( g => Number( g.id ) === Number( sale2.client ) )\n\n if ( orderedList.orderby.desc ){\n\n if ( ( client1 && client1.name || '' ) < ( client2 && client2.name || '' ) ) {\n return 1;\n }\n if ( ( client1 && client1.name || '' ) > ( client2 && client2.name || '' ) ) {\n return -1;\n }\n return 0;\n\n } else {\n\n if ( ( client1 && client1.name || '' ) > ( client2 && client2.name || '' ) ) {\n return 1;\n }\n if ( ( client1 && client1.name || '' ) < ( client2 && client2.name || '' ) ) {\n return -1;\n }\n return 0;\n\n }\n\n } );\n\n } else if ( orderedList.orderby.item === 'PRODUCT' ){\n \n ordered = ordered.sort( ( sale1, sale2 ) => {\n\n const product1 = products && products.data.find( g => Number( g.id ) === Number( sale1.product ) )\n const product2 = products && products.data.find( g => Number( g.id ) === Number( sale2.product ) )\n\n if ( orderedList.orderby.desc ){\n\n if ( ( product1 && product1.name || '' ) < ( product2 && product2.name || '' ) ) {\n return 1;\n }\n if ( ( product1 && product1.name || '' ) > ( product2 && product2.name || '' ) ) {\n return -1;\n }\n return 0;\n\n } else {\n\n if ( ( product1 && product1.name || '' ) > ( product2 && product2.name || '' ) ) {\n return 1;\n }\n if ( ( product1 && product1.name || '' ) < ( product2 && product2.name || '' ) ) {\n return -1;\n }\n return 0;\n\n }\n\n } );\n\n } else if ( orderedList.orderby.item === 'Q' ){\n\n ordered = ordered.sort( ( sale1, sale2 ) => {\n\n if ( orderedList.orderby.desc ){\n\n if ( sale1.q < sale2.q ) {\n return 1;\n }\n if ( sale1.q > sale2.q ) {\n return -1;\n }\n return 0;\n\n } else {\n\n if ( sale1.q > sale2.q ) {\n return 1;\n }\n if ( sale1.q < sale2.q ) {\n return -1;\n }\n return 0;\n\n }\n\n } );\n\n } else if ( orderedList.orderby.item === 'TOTAL' ){\n\n ordered = ordered.sort( ( sale1, sale2 ) => {\n\n if ( orderedList.orderby.desc ){\n\n if ( sale1.total < sale2.total ) {\n return 1;\n }\n if ( sale1.total > sale2.total ) {\n return -1;\n }\n return 0;\n\n } else {\n\n if ( sale1.total > sale2.total ) {\n return 1;\n }\n if ( sale1.total < sale2.total ) {\n return -1;\n }\n return 0;\n\n }\n\n } );\n\n }\n\n setOrderedList( {\n ...orderedList,\n list: ordered\n } )\n\n }, [ clients, orderedList.orderby, compare ] )\n\n if ( !fetchStatus.data ) return
\n\n const totals = getTotals( fetchStatus.data.data.data.SALES_GRAPH )\n const totalsCompate = compare.on && compare.fetchStatus.data && getTotals( compare.fetchStatus.data.data.data.SALES_GRAPH )\n\n return (\n
\n
Ventas del mes
\n {\n orderedList.list && orderedList.list.length\n ?\n
\n
\n
Fecha
{ setOrderedList( { ...orderedList, orderby: { ...orderedList.orderby, item: 'DATE', desc: !orderedList.orderby.desc } } ) } }>
\n
Cliente
{ setOrderedList( { ...orderedList, orderby: { ...orderedList.orderby, item: 'CLIENT', desc: !orderedList.orderby.desc } } ) } }>
\n
Producto
{ setOrderedList( { ...orderedList, orderby: { ...orderedList.orderby, item: 'PRODUCT', desc: !orderedList.orderby.desc } } ) } }>
\n
Cantidad
{ setOrderedList( { ...orderedList, orderby: { ...orderedList.orderby, item: 'Q', desc: !orderedList.orderby.desc } } ) } }>
\n
Total
{ setOrderedList( { ...orderedList, orderby: { ...orderedList.orderby, item: 'TOTAL', desc: !orderedList.orderby.desc } } ) } }>
\n
\n
\n {\n orderedList.list.map( ( sale, index ) => {\n\n const product = products.data.find( p => p.id === Number( sale.product ) )\n const client = clients.data.find( c => c.id === Number( sale.client ) )\n\n return (\n
\n { compare.on &&
}\n
{ sale.date }
\n
{ client.name }
\n
{ product.name }
\n
{ sale.q }
\n
{ Math.round( sale.totalExchange ).toLocaleString( 'es-AR' ) }
\n
\n )\n } )\n }\n
\n { compare.on &&
}\n
Total mes
\n
\n
\n
{ totals.q }
\n
{ Math.round( totals.totalExchange ).toLocaleString( 'es-AR' ) }
\n
\n {\n totalsCompate &&\n
\n { compare.on &&
}\n
Total mes
\n
\n
\n
{ totalsCompate.q }
\n
{ Math.round( totalsCompate.totalExchange ).toLocaleString( 'es-AR' ) }
\n
\n }\n
\n
\n :\n \n }\n
\n )\n}\n\nfunction getTotals( data ){\n\n return data.reduce( ( prev, curr ) => {\n\n return {\n q: prev.q + curr.q,\n totalExchange: prev.totalExchange + curr.totalExchange\n }\n\n }, { q: 0, totalExchange: 0 })\n\n}","import { Radio, Spin } from 'antd'\nimport React, { useState } from 'react'\nimport Currency from '../../../../../../components/Currency'\nimport { EmptyContainer } from '../../../../sales/components/EmptyContainer'\nimport './revenue-list.css'\n\nexport const RevenueList = ({ fetchStatus, products, compare, exchange }) => {\n\n const [ mode, setMode ] = useState( 'REPRODUCTORAS' )\n\n if ( !fetchStatus.data ) return
\n\n const compareData = compare.on && !compare.fetchStatus.loading && compare.fetchStatus.data && compare.fetchStatus.data.data.data.REVENUE_GRAPH[ mode ] ? compare.fetchStatus.data.data.data.REVENUE_GRAPH[ mode ].map( item => ({ ...item, compareItem: true }) ) : []\n const data = [ ...( fetchStatus.data.data.data.REVENUE_GRAPH[ mode ] || [] ), ...compareData ]\n\n const totals = fetchStatus.data && getTotals( fetchStatus.data.data.data.REVENUE_GRAPH[ mode ] || [] )\n // const compareTotals = compareData && getTotals( compareData )\n\n return (\n
\n
\n
Ventas por ave
\n
\n setMode( e.target.value ) }>\n Reproductoras\n Faena\n \n
\n
\n {\n data && data.length\n ?\n
\n
\n
Producto
\n
ENE
\n
FEB
\n
MAR
\n
ABR
\n
MAY
\n
JUN
\n
JUL
\n
AGO
\n
SEP
\n
OCT
\n
NOV
\n
DIC
\n
Promedio Mes
\n
\n
\n {\n data.map( ( revenue, index ) => {\n\n const product = products.data.find( p => p.id === Number( revenue.product ) )\n\n const total = revenue.values.reduce( ( prev, curr ) => prev + curr, 0 ) / 12\n\n return (\n
\n { compare.on &&
}\n
{ product.name }
\n
{ revenue.values[ 0 ] && revenue.values[ 0 ].toFixed( 2 ) }
\n
{ revenue.values[ 1 ] && revenue.values[ 1 ].toFixed( 2 ) }
\n
{ revenue.values[ 2 ] && revenue.values[ 2 ].toFixed( 2 ) }
\n
{ revenue.values[ 3 ] && revenue.values[ 3 ].toFixed( 2 ) }
\n
{ revenue.values[ 4 ] && revenue.values[ 4 ].toFixed( 2 ) }
\n
{ revenue.values[ 5 ] && revenue.values[ 5 ].toFixed( 2 ) }
\n
{ revenue.values[ 6 ] && revenue.values[ 6 ].toFixed( 2 ) }
\n
{ revenue.values[ 7 ] && revenue.values[ 7 ].toFixed( 2 ) }
\n
{ revenue.values[ 8 ] && revenue.values[ 8 ].toFixed( 2 ) }
\n
{ revenue.values[ 9 ] && revenue.values[ 9 ].toFixed( 2 ) }
\n
{ revenue.values[ 10 ] && revenue.values[ 10 ].toFixed( 2 ) }
\n
{ revenue.values[ 11 ] && revenue.values[ 11 ].toFixed( 2 ) }
\n
{ total.toFixed( 2 ) }
\n
\n )\n } )\n }\n\n {\n totals &&\n
\n { compare.on &&
}\n
Total
\n
{ totals.values[ 0 ] && totals.values[ 0 ].toFixed( 2 ) }
\n
{ totals.values[ 1 ] && totals.values[ 1 ].toFixed( 2 ) }
\n
{ totals.values[ 2 ] && totals.values[ 2 ].toFixed( 2 ) }
\n
{ totals.values[ 3 ] && totals.values[ 3 ].toFixed( 2 ) }
\n
{ totals.values[ 4 ] && totals.values[ 4 ].toFixed( 2 ) }
\n
{ totals.values[ 5 ] && totals.values[ 5 ].toFixed( 2 ) }
\n
{ totals.values[ 6 ] && totals.values[ 6 ].toFixed( 2 ) }
\n
{ totals.values[ 7 ] && totals.values[ 7 ].toFixed( 2 ) }
\n
{ totals.values[ 8 ] && totals.values[ 8 ].toFixed( 2 ) }
\n
{ totals.values[ 9 ] && totals.values[ 9 ].toFixed( 2 ) }
\n
{ totals.values[ 10 ] && totals.values[ 10 ].toFixed( 2 ) }
\n
{ totals.values[ 11 ] && totals.values[ 11 ].toFixed( 2 ) }
\n
{ totals.total.toFixed( 2 ) }
\n
\n }\n\n {/* {\n compare.on && compareTotals &&\n
\n { compare.on &&
}\n
Total
\n
{ compareTotals[ mode ][ 0 ] && compareTotals[ mode ][ 0 ].toFixed( 2 ) } { exchange }
\n
{ compareTotals[ mode ][ 1 ] && compareTotals[ mode ][ 1 ].toFixed( 2 ) } { exchange }
\n
{ compareTotals[ mode ][ 2 ] && compareTotals[ mode ][ 2 ].toFixed( 2 ) } { exchange }
\n
{ compareTotals[ mode ][ 3 ] && compareTotals[ mode ][ 3 ].toFixed( 2 ) } { exchange }
\n
{ compareTotals[ mode ][ 4 ] && compareTotals[ mode ][ 4 ].toFixed( 2 ) } { exchange }
\n
{ compareTotals[ mode ][ 5 ] && compareTotals[ mode ][ 5 ].toFixed( 2 ) } { exchange }
\n
{ compareTotals[ mode ][ 6 ] && compareTotals[ mode ][ 6 ].toFixed( 2 ) } { exchange }
\n
{ compareTotals[ mode ][ 7 ] && compareTotals[ mode ][ 7 ].toFixed( 2 ) } { exchange }
\n
{ compareTotals[ mode ][ 8 ] && compareTotals[ mode ][ 8 ].toFixed( 2 ) } { exchange }
\n
{ compareTotals[ mode ][ 9 ] && compareTotals[ mode ][ 9 ].toFixed( 2 ) } { exchange }
\n
{ compareTotals[ mode ][ 10 ] && compareTotals[ mode ][ 10 ].toFixed( 2 ) } { exchange }
\n
{ compareTotals[ mode ][ 11 ] && compareTotals[ mode ][ 11 ].toFixed( 2 ) } { exchange }
\n
{ compareTotals.total[ mode ].toFixed( 2 ) } { exchange }
\n
\n } */} \n
\n
\n :\n \n }\n
\n )\n}\n\nfunction getTotals( data ){\n\n const response = data\n .reduce( ( prev, curr, index ) => {\n\n const values = []\n\n Array.from( Array(12).keys() )\n .map( ( item , i ) => {\n values[ i ] = prev.values[ i ] + ( curr.values ? curr.values[ i ] : 0 )\n } )\n\n return {\n values\n }\n\n }, { \n values: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]\n })\n\n \n response[ 'total' ] = response.values.reduce( ( prev, curr ) => prev + curr, 0 ) / 12\n\n return response\n\n}","import React, { useState } from 'react'\nimport './ConsumeGraph.css'\nimport { EmptyContainer } from '../../../../sales/components/EmptyContainer'\nimport { Button, Progress, Radio, Spin } from 'antd'\n\nexport const ConsumeGraph = ({\n fetchStatus,\n products,\n type,\n compare\n}) => {\n\n const [ detailView, setDetailView ] = useState( false )\n const [ mode, setMode ] = useState( \"YEAR\" )\n\n if ( fetchStatus.loading ){\n return
\n }\n \n\n const { CONSUME_GRAPH } = fetchStatus.data.data.data\n\n return (\n
\n { compare.on &&
}\n
\n
Marketshare
\n
\n setMode( e.target.value ) }>\n Mes\n Año\n \n
\n
\n {\n !CONSUME_GRAPH.total.pendings_data_load\n ?\n
\n \n\n {\n Object.keys( CONSUME_GRAPH.partials ) &&\n Object.keys( CONSUME_GRAPH.partials ).length\n ?\n \n :\n null\n }\n\n {\n detailView && {\n const match = products.data.find( product => Number( product.id ) === Number( productId ) )\n \n return {\n ...CONSUME_GRAPH.partials[ productId ],\n id: productId,\n name: match.name\n }\n } )\n } />\n }\n
\n :\n \n }\n
\n )\n\n}\n\nexport const MainConsumeGraph = ({ sold, max }) => {\n\n const soldPercentage = max ? ( sold * 100 / max ) : 100\n\n return (\n
\n
\n
potencial
\n
vendido
\n
\n
\n
\n
\n
\n
{ max.toLocaleString() } unidades
\n
\n
\n
\n
\n
\n
{ Math.ceil( soldPercentage ) } %
\n
\n
{ sold.toLocaleString() } unidades vendidas
\n
\n
\n
\n )\n\n}\n\nexport const DetailConsumeList = ({\n listItems\n}) => {\n\n return (\n
\n {\n listItems.map( item => {\n\n const { name, sold, max, id } = item\n const percent = max ? Math.ceil( sold * 100 / max ) : 100\n\n return (\n
\n
{ name }
\n \n
\n )\n } )\n }\n
\n )\n\n}","import moment from 'moment'\nimport React, { useState, useEffect } from 'react'\nimport { BiLineChartDown } from 'react-icons/bi'\nimport { connect } from 'react-redux'\nimport PageHeader from '../../../../components/PageHeader/PageHeader'\nimport { LoadingPage } from '../../loading/LoadingPage'\nimport './clients-state.css'\nimport { ClientCard } from './components/filter/ClientCard'\nimport { ForecastGraph } from './components/graphs/ForecastGraph'\nimport { ActualForecastSummery } from './components/graphs/ActualForecastSummery'\nimport { RankingGraph } from './components/graphs/RankingGraph'\nimport { SalesList } from './components/graphs/SalesList'\nimport { RevenueList } from './components/graphs/RevenueList'\nimport { Switch } from 'antd'\nimport { EmptyContainer } from '../../sales/components/EmptyContainer'\nimport { ConsumeGraph } from './components/graphs/ConsumeGraph'\nimport { useParams } from 'react-router-dom'\n\nconst ClientsStatePage = ({ clients_status, products_status, campaign }) => {\n\n const [ filters, setFilters ] = useState( { \n client_group: null,\n sub_clients: null,\n exchange: 'LOCAL', \n date: { \n month: moment().month() \n }, \n products: [], \n ignore_null_sales: true \n } )\n const [ graphFetchStatus, setGraphFetchStatus ] = useState( { loading: true, error: null, data: null } )\n const [ compare, setCompare ] = useState( { \n on: false, \n filters: { \n client_group: null, \n sub_clients: null,\n exchange: 'LOCAL', \n products: null, \n date: { \n month: moment().month() \n } \n }, \n fetchStatus: { loading: true, error: null, data: null } \n } )\n const { id } = useParams()\n\n // EFECTO PARA MANEJAR EL CSS STICKY DEL FILTRO\n useEffect( () => {\n\n const container = document.querySelector( '.pageContainer' )\n\n // When the user scrolls the page, execute myFunction\n container.onscroll = handleHomeScroll.bind( this, container )\n\n return () => { container.onscroll = null }\n\n}, [] )\n\n // EFECTO PARA SETEAR EL PRIMER FILTER Y COMPARE VALORES INICIALES DE ESTADOS\n useEffect( () => {\n\n if ( \n !clients_status.loading && \n clients_status.groups.data && \n !filters.client_group &&\n !products_status.loading &&\n products_status.list.data &&\n !filters.products.length\n ){\n\n const client_group_data = id ? clients_status.groups.data.find( cg => Number( cg.id ) === Number( id ) ) : clients_status.groups.data[ 0 ]\n\n setFilters( { ...filters, client_group: client_group_data, products: products_status.list.data.map( p => p.id ) } )\n setCompare( { ...compare, filters: { ...compare.filters, client_group: client_group_data, products: products_status.list.data.map( p => p.id ) } } )\n }\n\n }, [ clients_status, products_status, id ] )\n\n\n const selectClientGroup = ( clientGroupId ) => {\n\n const clientData = clients_status.groups.data.find( clientgroup => Number( clientgroup.id ) === Number( clientGroupId ) )\n \n setFilters( { ...filters, client_group: clientData } )\n\n }\n\n const selectClientGroupForCompare = ( clientGroupId, ) => {\n\n const clientData = clients_status.groups.data.find( clientgroup => Number( clientgroup.id ) === Number( clientGroupId ) )\n\n setCompare({ ...compare, filters: { ...compare.filters, client_group: clientData } })\n\n }\n\n if ( \n clients_status.list.loading || \n clients_status.groups.loading || \n products_status.list.loading || \n products_status.groups.loading || \n products_status.lines.loading ||\n !filters.client_group\n ) return \n\n return (\n
\n } >\n {\n !graphFetchStatus.loading && graphFetchStatus.data && ( graphFetchStatus.data.data.data.FORECAST_GRAPH.partials.q.length || graphFetchStatus.data.data.data.SALES_GRAPH.length )\n ?\n
\n { setCompare( { ...compare, on: checked } ) } } />\n
\n :\n null\n }\n
\n { setFilters( { ...filters, date } ) } }\n type=\"MAIN\"\n />\n\n {\n compare.on &&\n { setCompare( { ...compare, filters: { ...compare.filters, ...filters } } ) } }\n products={ products_status.list }\n setGraphFetchStatus={ ( fetchStatus ) => { setCompare( { ...compare, fetchStatus: { ...fetchStatus } } ) } }\n graphFetchStatus={ graphFetchStatus } \n selectDate={ ( date ) => { setCompare( { ...compare.filters, date } ) } }\n type=\"COMPARE\"\n compare={ compare }\n />\n }\n\n {\n !graphFetchStatus.loading && graphFetchStatus.data && ( graphFetchStatus.data.data.data.FORECAST_GRAPH.partials.q.length || graphFetchStatus.data.data.data.SALES_GRAPH.length )\n ?\n (\n
\n\n \n \n\n \n {\n compare.on &&\n \n }\n\n \n \n {\n compare.on &&\n \n }\n\n \n\n {\n compare.on &&\n \n }\n \n \n \n {\n compare.on &&\n \n }\n \n \n \n \n \n
\n )\n :\n \n \n }\n \n
\n )\n\n\n}\n\n\nexport default connect( state => ({ campaign: state.campaign, products_status: state.products, clients_status: state.clients } ) )( ClientsStatePage )\n\n\nfunction handleHomeScroll( container ){\n\n // Get the header\n var headers = document.querySelectorAll(\".card.client\");\n\n // Get the offset position of the navbar\n var sticky = 77;\n\n // const offsetY = document.querySelector('.page.home').scrollTop\n const offsetY = container.scrollTop\n\n headers.forEach( header => {\n if ( offsetY > sticky ) {\n header.classList.add(\"sticky\");\n } else {\n header.classList.remove(\"sticky\");\n }\n })\n\n}","import React from 'react'\nimport Currency from '../../../../../../components/Currency'\nimport { MONTHS } from '../../../../../../constants/constants'\nimport './filter-pills.css'\n\nexport const FilterPills = ({\n filters,\n client_groups\n}) => {\n\n return (\n
\n \n
{ MONTHS[ filters.date.month ] }
\n\n
{filters.exchange === \"LOCAL\" ? : \"USD\" }
\n\n
{ filters.client_groups.length < client_groups.data.length ? `${ filters.client_groups.length } grupos económicos` : 'Todos los grupos económicos' }
\n\n
\n )\n\n}","import Checkbox from 'antd/es/checkbox/Checkbox'\nimport React from 'react'\nimport Currency from '../../../../../../components/Currency'\nimport { MONTHS } from '../../../../../../constants/constants'\nimport './menu.css'\n\nexport const FilterMenu = ({\n filters,\n setFilters,\n products,\n client_groups,\n selectProduct\n}) => {\n\n const handleChangeSelector = clientGroupId => {\n\n setFilters( prev => {\n\n const client_groups = prev.client_groups.indexOf( clientGroupId ) > -1 ? prev.client_groups.filter( p => p !== clientGroupId ) : [ ...prev.client_groups, clientGroupId ] \n\n return {\n ...prev,\n client_groups\n }\n })\n\n }\n\n const changeGroupByHandler = value => {\n\n const actualProduct = filters.product\n\n if ( value === 'PRODUCT' ){\n\n if ( actualProduct.groupby === 'PRODUCT' ){\n\n return\n\n } else if ( actualProduct.groupby === 'GROUP' ){\n \n const product = products.list.data.find( p => Number( p.group ) === Number( actualProduct.data.id ) )\n selectProduct( { data: product, groupby: value } )\n\n\n } else if ( actualProduct.groupby === 'LINE' ){\n \n const product = products.list.data.find( p => Number( p.line ) === Number( actualProduct.data.id ) )\n selectProduct( { data: product, groupby: value } )\n\n }\n\n } else if ( value === 'GROUP' ){\n\n if ( actualProduct.groupby === 'PRODUCT' ){\n\n const group = products.groups.data.find( pg => Number( pg.id ) === Number( actualProduct.data.group ) )\n selectProduct( { data: group, groupby: value } )\n\n } else if ( actualProduct.groupby === 'GROUP' ){\n\n return\n \n } else if ( actualProduct.groupby === 'LINE' ){\n \n const group = products.groups.data[ 0 ]\n selectProduct( { data: group, groupby: value } )\n\n }\n\n } else if ( value === 'LINE' ){\n\n if ( actualProduct.groupby === 'PRODUCT' ){\n\n const line = products.lines.data.find( pl => Number( pl.id ) === Number( actualProduct.data.line ) )\n selectProduct( { data: line, groupby: value } )\n\n } else if ( actualProduct.groupby === 'GROUP' ){\n \n const line = products.lines.data[ 0 ]\n selectProduct( { data: line, groupby: value } )\n \n } else if ( actualProduct.groupby === 'LINE' ){\n \n return \n\n }\n\n }\n\n }\n\n const selectAll = type => {\n\n if ( type === 'ALL' ){\n\n setFilters({ ...filters, client_groups: client_groups.data.map( p => p.id ) })\n\n } else if ( type === 'NONE' ){\n\n setFilters({ ...filters, client_groups: [] })\n\n }\n\n }\n\n return (\n
\n\n
\n
AGRUPAR POR
\n
\n
changeGroupByHandler(\"PRODUCT\") }>\n PRODUCTO\n
\n
changeGroupByHandler(\"GROUP\") }>\n GRUPO\n
\n
changeGroupByHandler(\"LINE\") }>\n LINEA\n
\n
\n
\n\n
\n
MES
\n
\n {\n MONTHS.map( (monthName, index) => (\n
{ setFilters( { ...filters, date: { month: index } } ) } }>\n { monthName }\n
\n ) )\n }\n
\n
\n\n
\n
MONEDA
\n
\n
setFilters({ ...filters, exchange: 'LOCAL' }) }>\n \n
\n | \n
setFilters({ ...filters, exchange: 'USD' }) }>\n USD\n
\n
\n
\n\n
\n
Grupos económicos
\n\n
\n
\n
{ selectAll( 'NONE' ) } }>\n Ninguno\n
\n | \n
{ selectAll( 'ALL' ) } }>\n Todos\n
\n
\n
\n \n
\n {\n client_groups.data.map( client_group => (\n
handleChangeSelector( client_group.id ) }>\n -1 } />\n { client_group.name } \n
\n ) )\n }\n
\n
\n\n
\n
CLIENTES
\n
\n \n
\n
\n
\n )\n\n}","import React, { useEffect, useState } from 'react';\nimport Modal from 'react-modal';\nimport { Input } from 'antd';\nimport './selectProductModal.css'\n\n\n // ESTILO DEL MODAL DE INVITACION DE USUARIO\n const customStyles = {\n overlay: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)'\n },\n content : {\n top : '50%',\n left : '50%',\n right : 'auto',\n bottom : 'auto',\n marginRight : '-50%',\n transform : 'translate(-50%, -50%)',\n background : 'white',\n padding : '0',\n height : '50vh',\n width : '30vw',\n overflow : 'hidden'\n }\n };\n\nconst SelectProductModal = ( { products, handlerClose, selectProduct, groupby } ) => {\n\n const [ stringFilter, setStringFilter ] = useState( '' )\n const [ filteredProducts, setFilteredProducts ] = useState( products.list.data )\n\n useEffect( () => {\n\n const primaryList = groupby === 'PRODUCT' ? products.list.data : ( groupby === 'GROUP' ? products.groups.data : products.lines.data )\n\n const fullList = primaryList.filter( product => {\n\n const stringToMatch = `${ product.name }`\n \n return stringToMatch.toUpperCase().includes( stringFilter.toUpperCase() )\n \n } )\n\n setFilteredProducts( fullList )\n\n }, [ stringFilter, products.list.data, groupby ] )\n\n return (\n
\n \n\n
\n \n
\n { setStringFilter( ev.target.value ) } } placeholder=\"Buscar producto..\" />\n
\n\n
\n {\n filteredProducts.map( product => {\n\n return (\n
{ selectProduct( { groupby: groupby, data: product } ); handlerClose() } }>\n
\n
{ product.name }
\n
\n {/*
{ clientGroup.name }
*/}\n
\n )\n\n } )\n }\n
\n\n
\n\n \n
\n )\n}\n\nexport default SelectProductModal\n","import { Button, Radio, Spin, Switch } from 'antd'\nimport React, { useState, useEffect } from 'react'\nimport './product-card.css'\nimport { Select } from 'antd';\nimport graphService from '../../../../../../services/Graph'\nimport { FilterPills } from './/FilterPills';\nimport Dropdown from 'antd/es/dropdown/dropdown';\nimport { FilterMenu } from './FilterMenu';\nimport { BsSliders } from 'react-icons/bs';\nimport SelectProductModal from './SelectProductModal'\n\nconst { Option } = Select;\n\nexport const ProductCard = ({ \n campaign, \n setGraphFetchStatus, \n products, \n productSelected, \n selectProduct, \n filters, \n setFilters, \n type, \n client_groups \n}) => {\n\n const [ selectProductModal, setSelectProductModal ] = useState( { visible: false } )\n\n useEffect( () => {\n\n if ( filters.product.data ){\n \n setGraphFetchStatus( { loading: true, error: null, data: null } )\n \n graphService.getProductGraphData( { \n filters: {\n date: {\n month: filters.date.month, \n year: filters.date.year || campaign, \n },\n product: {\n groupby: filters.product.groupby,\n id: filters.product.data.id\n },\n client_groups: filters.client_groups,\n exchange: filters.exchange,\n ignore_null_sales: false // filters.ignore_null_sales\n }\n } )\n .then( res => {\n setGraphFetchStatus( { loading: false, error: null, data: res } )\n } )\n .catch( err => {\n setGraphFetchStatus( { loading: false, error: true, data: null } )\n } )\n }\n \n }, [ filters.product.groupby, filters.client_groups, filters.product.data, filters.date, filters.exchange, filters.products, filters.ignore_null_sales, campaign ] )\n\n if ( !productSelected ) return
\n\n return (\n
\n\n
\n
\n\n
\n
\n
{ productSelected.name }
\n
\n \n
\n
\n
\n {\n selectProductModal.visible && \n { setSelectProductModal( { visible: false } ) } }\n selectProduct={ selectProduct }\n groupby={ filters.product.groupby }\n type={ type }\n />\n }\n
\n\n \n
\n\n
\n \n }>\n \n \n
\n\n
\n )\n\n}","import React, { useState } from 'react'\nimport { YAxis } from 'recharts'\nimport { AreaChart } from 'recharts'\nimport { ResponsiveContainer } from 'recharts'\nimport { Bar } from 'recharts'\nimport { Radio, Spin, Switch } from 'antd';\nimport { BarChart } from 'recharts'\nimport { Area } from 'recharts'\nimport { XAxis } from 'recharts'\nimport { MONTHS } from '../../../../../../constants/constants'\nimport { Legend } from 'recharts'\nimport { Tooltip } from 'recharts'\nimport { EmptyContainer } from '../../../../sales/components/EmptyContainer'\nimport Currency from '../../../../../../components/Currency'\n\nexport const ForecastGraph = ({ fetchStatus, client_groups, exchange, compare }) => {\n\n const [ config, setConfig ] = useState( { chartType: 'TABLE', mode: 'Q', filterNulls: true } )\n\n if ( !fetchStatus.data ) return
\n\n return (\n
\n \n
\n
Ventas vs Pronóstico
\n
\n
\n
\n
Ver solo items con ventas
\n
{ setConfig( { ...config, filterNulls } ) } } />
\n
\n
\n
\n setConfig({ ...config, chartType: e.target.value }) }>\n Lineal\n Barras\n Tabla\n \n
\n
\n setConfig({ ...config, mode: e.target.value }) }>\n Cantidad\n Valor\n \n
\n
\n
\n
\n\n {\n config.chartType === 'LINE'\n ?\n \n :\n (\n config.chartType === 'BAR'\n ?\n \n :\n \n )\n }\n\n
\n\n
\n )\n}\n\n\nconst LinealGraph = ({ data, mode, exchange, compare, filterNulls }) => {\n\n const dataSource = data\n .total[ mode === 'Q' ? 'q' : 'price' ]\n // .filter( d => filterNulls ? d.sales.find( item => item ) : true ) // CREO QUE NO ES CORRECTO FILTRAR EN ESTE GRAFICO\n\n const dataParsed = MONTHS.map( ( month, index ) => ({\n tag: month.slice( 0, 3 ),\n \"Ventas\": dataSource.sales[ index ],\n \"Pronóstico\": dataSource.forecast[ index ],\n \"Comparación Ventas\": compare.fetchStatus.data && compare.fetchStatus.data.data.data.FORECAST_GRAPH.total[ mode === 'Q' ? 'q' : 'price' ].sales[ index ],\n \"Comparación Pronóstico\": compare.fetchStatus.data && compare.fetchStatus.data.data.data.FORECAST_GRAPH.total[ mode === 'Q' ? 'q' : 'price' ].forecast[ index ]\n }) ) \n \n console.log( dataParsed )\n \n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n { compare.on && !compare.fetchStatus.loading && compare.fetchStatus.data && }\n { compare.on && !compare.fetchStatus.loading && compare.fetchStatus.data && }\n\n \n \n
\n )\n\n}\n\nconst BarGraph = ({ data, mode, exchange, compare, filterNulls }) => {\n\n const dataSource = data\n .total[ mode === 'Q' ? 'q' : 'price' ]\n // .filter( d => filterNulls ? d.sales.find( item => item ) : true ) // CREO QUE NO ES CORRECTO FILTRAR EN ESTE GRAFICO\n\n const dataParsed = MONTHS.map( ( month, index ) => ({\n tag: month.slice( 0, 3 ),\n \"Ventas\": dataSource.sales[ index ],\n \"Pronóstico\": dataSource.forecast[ index ],\n \"Comparación Ventas\": compare.fetchStatus.data && compare.fetchStatus.data.data.data.FORECAST_GRAPH.total[ mode === 'Q' ? 'q' : 'price' ].sales[ index ],\n \"Comparación Pronóstico\": compare.fetchStatus.data && compare.fetchStatus.data.data.data.FORECAST_GRAPH.total[ mode === 'Q' ? 'q' : 'price' ].forecast[ index ]\n }) ) \n \n return (\n
\n \n \n \n \n \n \n \n \n { compare.on && !compare.fetchStatus.loading && compare.fetchStatus.data && }\n { compare.on && !compare.fetchStatus.loading && compare.fetchStatus.data && }\n \n \n
\n )\n\n}\n\nconst TableChart = ({ data, mode, client_groups, exchange, compare, filterNulls }) => {\n\n const filteredData = data.partials[ mode === 'Q' ? 'q' : 'price' ].filter( d => filterNulls ? d.sales.find( item => item ) : true )\n\n const compareDataSource = compare.fetchStatus.data ? compare.fetchStatus.data.data.data.FORECAST_GRAPH.partials[ mode === 'Q' ? 'q' : 'price' ].map( item => ({ ...item, compareItem: true }) ) : []\n const dataSource = [ ...filteredData, ...compareDataSource ]\n\n const compareTotals = compare.on && compareDataSource && getTableTotals( compareDataSource )\n const totals = dataSource && getTableTotals( filteredData )\n\n if ( !dataSource || !dataSource.length ){\n\n return (\n
\n \n
\n )\n }\n\n return (\n
\n
\n
\n
\n
\n
\n {\n dataSource.map( ( clientItem, index ) => {\n\n const clientdata = client_groups.find( cg => cg.id == clientItem.client_group )\n\n return (\n
\n { compare.on &&
}\n
{ clientdata && clientdata.name }
\n
\n )\n\n } )\n }\n\n
\n { compare.on &&
}\n
Total
\n
\n\n {\n compareTotals &&\n
\n { compare.on &&
}\n
Total
\n
\n }\n
\n
\n
\n
\n
ENE
\n
FEB
\n
MAR
\n
ABR
\n
MAY
\n
JUN
\n
JUL
\n
AGO
\n
SEP
\n
OCT
\n
NOV
\n
DIC
\n
Total
\n
\n
\n {\n dataSource.map( ( clientItem, index ) => {\n\n const totalSales = clientItem.sales.reduce( ( prev, curr ) => prev + curr, 0 )\n const totalForecast = clientItem.forecast.reduce( ( prev, curr ) => prev + curr, 0 )\n\n return (\n
\n
{ Math.round( clientItem.sales[ 0 ] ) }/{ Math.round( clientItem.forecast[ 0 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( clientItem.sales[ 1 ] ) }/{ Math.round( clientItem.forecast[ 1 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( clientItem.sales[ 2 ] ) }/{ Math.round( clientItem.forecast[ 2 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( clientItem.sales[ 3 ] ) }/{ Math.round( clientItem.forecast[ 3 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( clientItem.sales[ 4 ] ) }/{ Math.round( clientItem.forecast[ 4 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( clientItem.sales[ 5 ] ) }/{ Math.round( clientItem.forecast[ 5 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( clientItem.sales[ 6 ] ) }/{ Math.round( clientItem.forecast[ 6 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( clientItem.sales[ 7 ] ) }/{ Math.round( clientItem.forecast[ 7 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( clientItem.sales[ 8 ] ) }/{ Math.round( clientItem.forecast[ 8 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( clientItem.sales[ 9 ] ) }/{ Math.round( clientItem.forecast[ 9 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( clientItem.sales[ 10 ] ) }/{ Math.round( clientItem.forecast[ 10 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( clientItem.sales[ 11 ] ) }/{ Math.round( clientItem.forecast[ 11 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totalSales ) }/{ Math.round( totalForecast ) } { mode === 'PRICE' && }
\n
\n )\n\n } )\n }\n\n
\n
{ Math.round( totals.sales[ 0 ] ) }/{ Math.round( totals.forecast[ 0 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 1 ] ) }/{ Math.round( totals.forecast[ 1 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 2 ] ) }/{ Math.round( totals.forecast[ 2 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 3 ] ) }/{ Math.round( totals.forecast[ 3 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 4 ] ) }/{ Math.round( totals.forecast[ 4 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 5 ] ) }/{ Math.round( totals.forecast[ 5 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 6 ] ) }/{ Math.round( totals.forecast[ 6 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 7 ] ) }/{ Math.round( totals.forecast[ 7 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 8 ] ) }/{ Math.round( totals.forecast[ 8 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 9 ] ) }/{ Math.round( totals.forecast[ 9 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 10 ] ) }/{ Math.round( totals.forecast[ 10 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 11 ] ) }/{ Math.round( totals.forecast[ 11 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.totals.sales ) }/{ Math.round( totals.totals.forecast ) } { mode === 'PRICE' && }
\n
\n\n {\n compareTotals &&\n
\n
{ Math.round( compareTotals.sales[ 0 ] ) }/{ Math.round( compareTotals.forecast[ 0 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 1 ] ) }/{ Math.round( compareTotals.forecast[ 1 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 2 ] ) }/{ Math.round( compareTotals.forecast[ 2 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 3 ] ) }/{ Math.round( compareTotals.forecast[ 3 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 4 ] ) }/{ Math.round( compareTotals.forecast[ 4 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 5 ] ) }/{ Math.round( compareTotals.forecast[ 5 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 6 ] ) }/{ Math.round( compareTotals.forecast[ 6 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 7 ] ) }/{ Math.round( compareTotals.forecast[ 7 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 8 ] ) }/{ Math.round( compareTotals.forecast[ 8 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 9 ] ) }/{ Math.round( compareTotals.forecast[ 9 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 10 ] ) }/{ Math.round( compareTotals.forecast[ 10 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.sales[ 11 ] ) }/{ Math.round( compareTotals.forecast[ 11 ] ) } { mode === 'PRICE' && }
\n
{ Math.round( compareTotals.totals.sales ) }/{ Math.round( compareTotals.totals.forecast ) } { mode === 'PRICE' && }
\n
\n }\n
\n
\n
\n )\n\n}\n\nfunction getTableTotals( data ){\n\n const response = data\n .reduce( ( prev, curr, index ) => {\n\n const forecast = []\n const sales = []\n\n Array.from( Array(12).keys() )\n .map( ( item , i ) => {\n forecast[ i ] = prev.forecast[ i ] + curr.forecast[ i ]\n sales[ i ] = prev.sales[ i ] + curr.sales[ i ]\n } )\n\n return {\n forecast,\n sales\n }\n\n }, { \n forecast: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], \n sales: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] \n })\n\n response[ 'totals' ] = {\n forecast: response.forecast.reduce( ( prev, curr ) => prev + curr, 0 ),\n sales: response.sales.reduce( ( prev, curr ) => prev + curr, 0 )\n }\n\n return response\n\n}","import { Radio, Spin } from 'antd'\nimport React, { useState } from 'react'\nimport { Cell } from 'recharts'\nimport { Pie } from 'recharts'\nimport { PieChart } from 'recharts'\nimport { ResponsiveContainer } from 'recharts'\nimport Currency from '../../../../../../components/Currency'\nimport { EmptyContainer } from '../../../../sales/components/EmptyContainer'\nimport '../../../clients/components/graphs/ranking.css'\n\nconst COLORS = ['#35618f', '#611115', '#446645', '#491f91', '#142a25', '#ba0951'];\n\nconst RADIAN = Math.PI / 180;\nconst renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent, index }) => {\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n\n return (\n cx ? 'start' : 'end'} dominantBaseline=\"central\">\n {`${(percent * 100).toFixed(0)}%`}\n \n );\n};\n\nexport const RankingGraph = ({ fetchStatus, clients, client_groups, type, exchange, compare }) => {\n\n const [ mode, setMode ] = useState( 'MONTH' )\n\n if ( !fetchStatus.data ) return
\n\n const data = fetchStatus.data.data.data.RANKING_GRAPH[ mode ]\n\n return (\n
\n { compare.on &&
}\n
\n
Ranking de clientes
\n
\n setMode( e.target.value ) }>\n Mes\n Trimestre\n Semestre\n Año\n \n
\n
\n {\n data && data.length\n ?\n
\n
\n {\n data.map( ( item, index ) => {\n\n const client = client_groups.data.find( c => c.id === Number( item.client ) )\n\n return (\n
\n
\n
{ index + 1 }.
\n
{ client && client.name || 'Otros' }
\n
{ Math.round( item.sold ).toLocaleString() }
\n
\n )\n })\n }\n
\n
\n \n \n \n {data.map((entry, index) => (\n \n ))}\n \n \n \n
\n
\n :\n \n }\n
\n )\n}\n","import { Radio, Spin } from 'antd'\nimport React, { useState } from 'react'\nimport Currency from '../../../../../../components/Currency'\nimport '../../../clients/components/graphs/revenue-list.css'\n\nexport const RevenueList = ({ fetchStatus, clients, compare, exchange }) => {\n\n const [ mode, setMode ] = useState( 'REPRODUCTORAS' )\n\n if ( !fetchStatus.data ) return
\n\n const compareData = compare.on && !compare.fetchStatus.loading && compare.fetchStatus.data ? compare.fetchStatus.data.data.data.REVENUE_GRAPH.map( item => ({ ...item, compareItem: true }) ) : []\n const data = [ ...fetchStatus.data.data.data.REVENUE_GRAPH, ...compareData ]\n\n const totals = data && getTotals( fetchStatus.data.data.data.REVENUE_GRAPH )\n const compareTotals = compareData && getTotals( compareData )\n\n return (\n
\n
\n
Ventas por ave
\n
\n setMode( e.target.value ) }>\n Reproductoras\n Faena\n \n
\n
\n
\n
\n
Cliente
\n
ENE
\n
FEB
\n
MAR
\n
ABR
\n
MAY
\n
JUN
\n
JUL
\n
AGO
\n
SEP
\n
OCT
\n
NOV
\n
DIC
\n
Promedio Mes
\n
\n
\n {\n data.map( ( revenue, index ) => {\n\n const client = clients.data.find( c => c.id === Number( revenue.client ) )\n\n if ( !revenue[ mode ] ){\n\n return (\n
\n { compare.on &&
}\n
{ client.name }
\n
Sin datos cargados para este cliente
\n
\n )\n }\n\n const total = revenue[ mode ].reduce( ( prev, curr ) => prev + curr, 0 ) / 12\n\n return (\n
\n { compare.on &&
}\n
{ client.name }
\n
{ revenue[ mode ][ 0 ] && revenue[ mode ][ 0 ].toFixed( 2 ) }
\n
{ revenue[ mode ][ 1 ] && revenue[ mode ][ 1 ].toFixed( 2 ) }
\n
{ revenue[ mode ][ 2 ] && revenue[ mode ][ 2 ].toFixed( 2 ) }
\n
{ revenue[ mode ][ 3 ] && revenue[ mode ][ 3 ].toFixed( 2 ) }
\n
{ revenue[ mode ][ 4 ] && revenue[ mode ][ 4 ].toFixed( 2 ) }
\n
{ revenue[ mode ][ 5 ] && revenue[ mode ][ 5 ].toFixed( 2 ) }
\n
{ revenue[ mode ][ 6 ] && revenue[ mode ][ 6 ].toFixed( 2 ) }
\n
{ revenue[ mode ][ 7 ] && revenue[ mode ][ 7 ].toFixed( 2 ) }
\n
{ revenue[ mode ][ 8 ] && revenue[ mode ][ 8 ].toFixed( 2 ) }
\n
{ revenue[ mode ][ 9 ] && revenue[ mode ][ 9 ].toFixed( 2 ) }
\n
{ revenue[ mode ][ 10 ] && revenue[ mode ][ 10 ].toFixed( 2 ) }
\n
{ revenue[ mode ][ 11 ] && revenue[ mode ][ 11 ].toFixed( 2 ) }
\n
{ total.toFixed( 2 ) }
\n
\n )\n } )\n }\n\n {\n totals &&\n
\n { compare.on &&
}\n
Total
\n
{ totals[ mode ][ 0 ] && totals[ mode ][ 0 ].toFixed( 2 ) }
\n
{ totals[ mode ][ 1 ] && totals[ mode ][ 1 ].toFixed( 2 ) }
\n
{ totals[ mode ][ 2 ] && totals[ mode ][ 2 ].toFixed( 2 ) }
\n
{ totals[ mode ][ 3 ] && totals[ mode ][ 3 ].toFixed( 2 ) }
\n
{ totals[ mode ][ 4 ] && totals[ mode ][ 4 ].toFixed( 2 ) }
\n
{ totals[ mode ][ 5 ] && totals[ mode ][ 5 ].toFixed( 2 ) }
\n
{ totals[ mode ][ 6 ] && totals[ mode ][ 6 ].toFixed( 2 ) }
\n
{ totals[ mode ][ 7 ] && totals[ mode ][ 7 ].toFixed( 2 ) }
\n
{ totals[ mode ][ 8 ] && totals[ mode ][ 8 ].toFixed( 2 ) }
\n
{ totals[ mode ][ 9 ] && totals[ mode ][ 9 ].toFixed( 2 ) }
\n
{ totals[ mode ][ 10 ] && totals[ mode ][ 10 ].toFixed( 2 ) }
\n
{ totals[ mode ][ 11 ] && totals[ mode ][ 11 ].toFixed( 2 ) }
\n
{ totals.total[ mode ].toFixed( 2 ) }
\n
\n }\n\n {\n compare.on && compareTotals &&\n
\n { compare.on &&
}\n
Total
\n
{ compareTotals[ mode ][ 0 ] && compareTotals[ mode ][ 0 ].toFixed( 2 ) }
\n
{ compareTotals[ mode ][ 1 ] && compareTotals[ mode ][ 1 ].toFixed( 2 ) }
\n
{ compareTotals[ mode ][ 2 ] && compareTotals[ mode ][ 2 ].toFixed( 2 ) }
\n
{ compareTotals[ mode ][ 3 ] && compareTotals[ mode ][ 3 ].toFixed( 2 ) }
\n
{ compareTotals[ mode ][ 4 ] && compareTotals[ mode ][ 4 ].toFixed( 2 ) }
\n
{ compareTotals[ mode ][ 5 ] && compareTotals[ mode ][ 5 ].toFixed( 2 ) }
\n
{ compareTotals[ mode ][ 6 ] && compareTotals[ mode ][ 6 ].toFixed( 2 ) }
\n
{ compareTotals[ mode ][ 7 ] && compareTotals[ mode ][ 7 ].toFixed( 2 ) }
\n
{ compareTotals[ mode ][ 8 ] && compareTotals[ mode ][ 8 ].toFixed( 2 ) }
\n
{ compareTotals[ mode ][ 9 ] && compareTotals[ mode ][ 9 ].toFixed( 2 ) }
\n
{ compareTotals[ mode ][ 10 ] && compareTotals[ mode ][ 10 ].toFixed( 2 ) }
\n
{ compareTotals[ mode ][ 11 ] && compareTotals[ mode ][ 11 ].toFixed( 2 ) }
\n
{ compareTotals.total[ mode ].toFixed( 2 ) }
\n
\n }\n
\n
\n
\n )\n}\n\n\nfunction getTotals( data ){\n\n const response = data\n .reduce( ( prev, curr, index ) => {\n\n const FAENA = []\n const REPRODUCTORAS = []\n\n Array.from( Array(12).keys() )\n .map( ( item , i ) => {\n FAENA[ i ] = prev.FAENA[ i ] + ( curr.FAENA ? curr.FAENA[ i ] : 0 )\n REPRODUCTORAS[ i ] = prev.REPRODUCTORAS[ i ] + ( curr.REPRODUCTORAS ? curr.REPRODUCTORAS[ i ] : 0 )\n } )\n\n return {\n FAENA,\n REPRODUCTORAS\n }\n\n }, { \n FAENA: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], \n REPRODUCTORAS: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] \n })\n\n response[ 'total' ] = {\n FAENA: response.FAENA.reduce( ( prev, curr ) => prev + curr, 0 ) / 12,\n REPRODUCTORAS: response.REPRODUCTORAS.reduce( ( prev, curr ) => prev + curr, 0 ) / 12\n }\n\n return response\n\n}","import React, { useState } from 'react'\nimport { EmptyContainer } from '../../../../sales/components/EmptyContainer'\nimport { Button, Radio, Spin } from 'antd'\nimport { DetailConsumeList, MainConsumeGraph } from '../../../clients/components/graphs/ConsumeGraph'\n\nexport const ConsumeGraph = ({\n fetchStatus,\n clients,\n type,\n compare\n}) => {\n\n const [ detailView, setDetailView ] = useState( false )\n const [ mode, setMode ] = useState( \"YEAR\" )\n\n if ( fetchStatus.loading ){\n return
\n }\n \n\n const { CONSUME_GRAPH } = fetchStatus.data.data.data\n\n return (\n
\n { compare.on &&
}\n
\n
Marketshare
\n
\n setMode( e.target.value ) }>\n Mes\n Año\n \n
\n
\n {\n !CONSUME_GRAPH.total.pendings_data_load\n ?\n
\n \n\n {\n Object.keys( CONSUME_GRAPH.partials ) &&\n Object.keys( CONSUME_GRAPH.partials ).length\n ?\n \n :\n null\n }\n\n {\n detailView && {\n const match = clients.data.find( client => Number( client.id ) === Number( productId ) )\n \n return {\n ...CONSUME_GRAPH.partials[ productId ],\n id: productId,\n name: match.name\n }\n } )\n } />\n }\n
\n :\n \n }\n
\n )\n\n}","import moment from 'moment'\nimport React, { useState, useEffect } from 'react'\nimport { BiLineChart } from 'react-icons/bi'\nimport { connect } from 'react-redux'\nimport PageHeader from '../../../../components/PageHeader/PageHeader'\nimport { LoadingPage } from '../../loading/LoadingPage'\nimport './products-state.css'\nimport { Switch } from 'antd'\nimport { ProductCard } from './components/filters/ProductCard'\nimport { ForecastGraph } from './components/graphs/ForecastGraph'\nimport { ActualForecastSummery } from '../clients/components/graphs/ActualForecastSummery'\nimport { RankingGraph } from './components/graphs/RankingGraph'\nimport { RevenueList } from './components/graphs/RevenueList'\nimport { SalesList } from '../clients/components/graphs/SalesList'\nimport { EmptyContainer } from '../../sales/components/EmptyContainer'\nimport { ConsumeGraph } from './components/graphs/ConsumeGraph'\nimport { useParams } from 'react-router-dom/cjs/react-router-dom.min'\n\nconst ClientsStatePage = ({ clients_status, products_status, campaign }) => {\n\n const [ filters, setFilters ] = useState( { product: { groupby: 'PRODUCT', data: null }, exchange: 'LOCAL', date: { month: moment().month() }, client_groups: [], ignore_null_sales: true } )\n const [ graphFetchStatus, setGraphFetchStatus ] = useState( { loading: true, error: null, data: null } )\n const [ compare, setCompare ] = useState( { on: false, filters: { product: { groupby: 'PRODUCT', data: null }, exchange: 'LOCAL', client_groups: [], date: { month: 0 }, ignore_null_sales: true }, fetchStatus: { loading: true, error: null, data: null } } )\n const { id } = useParams()\n\n useEffect( () => {\n\n const container = document.querySelector( '.pageContainer' )\n\n // When the user scrolls the page, execute myFunction\n container.onscroll = handleHomeScroll.bind( this, container )\n\n return () => { container.onscroll = null }\n\n}, [] )\n\n useEffect( () => {\n console.log( {\n products_status,\n clients_status\n })\n\n if ( \n !products_status.list.loading && \n products_status.list.data && \n !filters.client_groups.length && \n !compare.filters.client_groups.length &&\n !clients_status.list.loading && \n clients_status.groups.data && \n !filters.product.data && \n !compare.filters.product.data\n ){\n\n const product = id ? products_status.list.data.find( product => Number( product.id ) === Number( id ) ) : { ...products_status.list.data[ 0 ] }\n\n console.log( product )\n\n setFilters({ ...filters, client_groups: clients_status.groups.data.map( p => p.id ), product: { groupby: 'PRODUCT', data: { ...product } } })\n setCompare( { ...compare, filters: { ...compare.filters, client_groups: clients_status.groups.data.map( p => p.id ), product: { groupby: 'PRODUCT', data: { ...product } } } } )\n\n }\n\n }, [ products_status, clients_status, id ] )\n\n const selectProduct = ( productData, type ) => {\n \n if ( type === 'MAIN' ){\n setFilters( { ...filters, product: productData } )\n \n } else if ( type === 'COMPARE' ){\n setCompare({ ...compare, filters: { ...compare.filters, product: productData } })\n }\n\n }\n\n if ( \n clients_status.list.loading || \n clients_status.groups.loading || \n products_status.list.loading || \n products_status.groups.loading || \n products_status.lines.loading ||\n !filters.product\n ) return \n\n return (\n
\n } >\n {\n !graphFetchStatus.loading && graphFetchStatus.data && ( graphFetchStatus.data.data.data.FORECAST_GRAPH.partials.q.length || graphFetchStatus.data.data.data.SALES_GRAPH.length )\n ?\n
\n { setCompare( { ...compare, on: checked } ) } } />\n
\n :\n null\n }\n
\n\n { selectProduct( prod, \"MAIN\" ) } }\n filters={ filters }\n campaign={ campaign }\n setFilters={ setFilters }\n client_groups={ clients_status.groups }\n setGraphFetchStatus={ setGraphFetchStatus }\n selectDate={ ( date ) => { setFilters( { ...filters, date } ) } }\n type=\"MAIN\"\n />\n\n {\n compare.on &&\n { selectProduct( prod, \"COMPARE\" ) } }\n filters={ compare.filters }\n campaign={ campaign }\n setFilters={ ( filters ) => { setCompare( { ...compare, filters: { ...compare.filters, ...filters } } ) } }\n client_groups={ clients_status.groups }\n setGraphFetchStatus={ fStatus => { setCompare( { ...compare, fetchStatus: fStatus } ) } }\n selectDate={ ( date ) => { setCompare( { ...compare, filters: { ...compare.filters, ...date } } ) } }\n type=\"COMPARE\"\n compare={ compare }\n />\n }\n\n {\n !graphFetchStatus.loading && graphFetchStatus.data && ( graphFetchStatus.data.data.data.FORECAST_GRAPH.partials.q.length || graphFetchStatus.data.data.data.SALES_GRAPH.length )\n ?\n
\n\n \n \n
\n \n {\n compare.on &&\n \n }\n\n \n {\n compare.on &&\n \n }\n\n \n \n {\n compare.on &&\n \n }\n \n \n \n {\n compare.on &&\n \n }\n
\n \n \n \n \n\n
\n :\n \n }\n \n
\n )\n}\n\n\nexport default connect( state => ({ campaign: state.campaign, products_status: state.products, clients_status: state.clients } ) )( ClientsStatePage )\n\n\nfunction handleHomeScroll( container ){\n\n // Get the header\n var headers = document.querySelectorAll(\".card.client\");\n\n // Get the offset position of the navbar\n var sticky = 77;\n\n // const offsetY = document.querySelector('.page.home').scrollTop\n const offsetY = container.scrollTop\n\n headers.forEach( header => {\n if ( offsetY > sticky ) {\n header.classList.add(\"sticky\");\n } else {\n header.classList.remove(\"sticky\");\n }\n })\n\n}","import React, { useState } from 'react';\n\nconst SearchFilter = ( { filterString, setFilterString } ) => {\n\n // HANDLER PARA EL CAMBIO DE VALOR EN EL INPUT DE FILTRO\n const handleChange = ( event ) => {\n const value = event.target.value;\n setFilterString( value );\n }\n\n // RENDERIZADO DE COMPONENTE\n return (\n
\n
\n
\n \n
\n
\n\n
\n )\n}\n\nexport default SearchFilter","import React from 'react'\nimport { CalendarFilter } from '../../clients/components/filter/CalendarFilter'\nimport SearchFilter from './SearchFilter'\n\nimport './filter.css'\nimport moment from 'moment'\nimport { MONTHS } from '../../../../../constants/constants'\nimport { Cell, Pie, PieChart } from 'recharts'\nimport Currency from '../../../../../components/Currency'\n\nexport const Filter = ({ dateSelected, selectDate, filterString, setFilterString, closestExchange, totals }) => {\n\n const date = moment( closestExchange.date )\n\n const percentageFull = totals && totals.LOCAL.forecast ? ( ( ( totals.LOCAL.sales + totals.LOCAL.commitments ) / totals.LOCAL.forecast ) * 100 ) : 100\n const data = ( percentageFull || percentageFull === 0 ) && [ {\n value: percentageFull <= 100 ? percentageFull : 100,\n fill: \"#4caf50\"\n }, {\n value: 100 - ( percentageFull <= 100 ? percentageFull : 100 ),\n fill: '#ff0000'\n } ] || null\n\n return (\n
\n \n \n\n
\n
Tipo de cambio:
\n
{ closestExchange.value }
\n
{ MONTHS[ date.month() ] } { date.year() }
\n
\n\n
\n\n \n\n {\n totals && ( ( totals.LOCAL.sales + totals.LOCAL.commitments ) || totals.LOCAL.forecast ) && \n
\n
\n
\n Total\n
\n
\n { ( totals.LOCAL.sales + totals.LOCAL.commitments ).toLocaleString() } / { totals.LOCAL.forecast.toLocaleString() } \n
\n
\n\n
\n
\n \n \n {\n data.map((entry, index) => )\n }\n \n \n
\n { Math.round( percentageFull ) } \n % \n
\n
\n
\n
\n }\n\n
\n )\n}\n","import Api from './Api';\n\nconst commitmentsService = {\n\n get: ( ) => {\n\n return Api.get( '/commitment', {\n withCredentials: true\n } )\n },\n post: ( jsonData ) => {\n\n return Api.post( '/commitment', jsonData, {\n withCredentials: true\n } )\n\n },\n delete: ( id ) => {\n\n return Api.delete( `/commitment/${ id }`, {\n withCredentials: true\n })\n }\n\n}\n\nexport default commitmentsService\n","import React, { useState } from 'react';\nimport Modal from 'react-modal';\nimport { Button } from 'antd';\nimport { FiUserPlus } from 'react-icons/fi'\nimport Swal from 'sweetalert2';\nimport moment from 'moment';\nimport { MONTHS } from '../../../../../constants/constants';\nimport commitmentsService from '../../../../../services/Commitment';\nimport Currency from '../../../../../components/Currency';\n\n// ESTILO DEL MODAL DE INVITACION DE USUARIO\nconst customStyles = {\n overlay: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)'\n },\n content : {\n top : '50%',\n left : '50%',\n right : 'auto',\n bottom : 'auto',\n marginRight : '-50%',\n transform : 'translate(-50%, -50%)',\n background : 'white'\n }\n};\n\nconst NewCommitmentModal = ( { campaign, ammount, client_group, dateSelected, handlerClose, refreshAction, clients_groups } ) => {\n\n const [ loading, setLoading ] = useState( false )\n const [ commitmentData, setCommitmentData ] = useState({\n client_group: client_group,\n ammount: ammount || 0,\n exchange: 'LOCAL',\n date: moment().year( campaign ).month( dateSelected.month ).startOf( 'month' ).format( 'YYYY-MM-DD' )\n })\n\n const saveCommitment = () => {\n\n if ( !commitmentData.ammount ){\n Swal.fire({\n icon: 'warning',\n title: \"Campos incompletos\",\n text: \"Por favor complete con todos los campos para continuar\"\n })\n \n return;\n }\n \n setLoading( true )\n // ALERT DE LOADING\n Swal.fire ({\n title: \"..Subiendo promesa de pago..\",\n onBeforeOpen: () => {\n Swal.showLoading ()\n }\n })\n\n commitmentsService.post( commitmentData )\n .then( res => {\n refreshAction();\n Swal.close();\n handlerClose()\n } )\n\n }\n\n const client_group_data = clients_groups.data.find( cg => Number( cg.id ) === Number( client_group ) )\n\n return (\n
\n \n\n
\n
\n \n
\n
\n
¿Cuanto se compromete que cobrará del cliente { client_group_data.name } en el mes { MONTHS[ dateSelected.month ] } del año { campaign }?
\n
\n
\n
\n { setCommitmentData( { ...commitmentData, ammount: Number( ev.target.value ) } ) } } />\n \n
\n
\n
\n
\n \n
\n
\n
\n\n \n
\n )\n}\n\nexport default NewCommitmentModal","import { Popover, Progress, Spin } from 'antd'\nimport React, { useEffect, useState } from 'react'\nimport { AiOutlineEye } from 'react-icons/ai'\nimport { FaArrowsAltV } from 'react-icons/fa'\nimport { HiOutlinePencil } from 'react-icons/hi'\nimport { EmptyContainer } from '../../../sales/components/EmptyContainer'\nimport './sales-state-list.css'\nimport { useHistory } from 'react-router-dom/cjs/react-router-dom.min'\nimport Currency from '../../../../../components/Currency'\n\nexport const SalesStateList = ({ graphFetchStatus, client_groups, sellers, setCommitmentModal, userdata, filteredList }) => {\n\n const [ orderedList, setOrderedList ] = useState( { orderby: { item: null, desc: false }, list: [] } )\n\n // EFECTO PARA ORDENAR LISTA\n useEffect( () => {\n\n if ( filteredList ){\n\n let ordered = filteredList\n if ( orderedList.orderby.item === 'FORECAST' ){\n \n ordered = filteredList.sort( ( client1, client2 ) => {\n \n const forecast1 = client1.forecast.USD\n const forecast2 = client2.forecast.USD\n \n if ( orderedList.orderby.desc ){\n \n if ( forecast1 < forecast2 ) {\n return 1;\n }\n if ( forecast1 > forecast2 ) {\n return -1;\n }\n return 0;\n \n } else {\n \n if ( forecast1 > forecast2 ) {\n return 1;\n }\n if ( forecast1 < forecast2 ) {\n return -1;\n }\n return 0;\n \n }\n \n } );\n \n } else if ( orderedList.orderby.item === 'GROUP' ){\n \n ordered = filteredList.sort( ( client1, client2 ) => {\n \n const client_group1 = client_groups.data.find( c => Number( c.id ) === Number( client1.id ) )\n const client_group2 = client_groups.data.find( c => Number( c.id ) === Number( client2.id ) )\n \n if ( orderedList.orderby.desc ){\n \n if ( ( client_group1 && client_group1.name || '' ) < ( client_group2 && client_group2.name || '' ) ) {\n return 1;\n }\n if ( ( client_group1 && client_group1.name || '' ) > ( client_group2 && client_group2.name || '' ) ) {\n return -1;\n }\n return 0;\n \n } else {\n \n if ( ( client_group1 && client_group1.name || '' ) > ( client_group2 && client_group2.name || '' ) ) {\n return 1;\n }\n if ( ( client_group1 && client_group1.name || '' ) < ( client_group2 && client_group2.name || '' ) ) {\n return -1;\n }\n return 0;\n \n }\n \n } );\n \n } else if ( orderedList.orderby.item === 'SALES' ){\n \n ordered = filteredList.sort( ( client1, client2 ) => {\n \n const sales1 = client1.sales.LOCAL\n const sales2 = client2.sales.LOCAL\n \n if ( orderedList.orderby.desc ){\n \n if ( sales1 < sales2 ) {\n return 1;\n }\n if ( sales1 > sales2 ) {\n return -1;\n }\n return 0;\n \n } else {\n \n if ( sales1 > sales2 ) {\n return 1;\n }\n if ( sales1 < sales2 ) {\n return -1;\n }\n return 0;\n \n }\n \n } );\n \n } else if ( orderedList.orderby.item === 'COMMITMENT' ){\n \n ordered = filteredList.sort( ( client1, client2 ) => {\n \n const commitment1 = Object.keys( client1.commitments ).length ? Object.keys( client1.commitments ).reduce( ( prev, curr ) => ( prev + client1.commitments[ curr ].LOCAL ), 0 ) : 0\n const commitment2 = Object.keys( client2.commitments ).length ? Object.keys( client2.commitments ).reduce( ( prev, curr ) => ( prev + client2.commitments[ curr ].LOCAL ), 0 ) : 0\n \n if ( orderedList.orderby.desc ){\n \n if ( commitment1 < commitment2 ) {\n return 1;\n }\n if ( commitment1 > commitment2 ) {\n return -1;\n }\n return 0;\n \n } else {\n \n if ( commitment1 > commitment2 ) {\n return 1;\n }\n if ( commitment1 < commitment2 ) {\n return -1;\n }\n return 0;\n \n }\n \n } );\n } else if ( orderedList.orderby.item === 'RESULT' ){\n \n ordered = filteredList.sort( ( client1, client2 ) => {\n \n const commitment1 = Object.keys( client1.commitments ).length ? Object.keys( client1.commitments ).reduce( ( prev, curr ) => ( prev + client1.commitments[ curr ].LOCAL ), 0 ) : 0\n const commitment2 = Object.keys( client2.commitments ).length ? Object.keys( client2.commitments ).reduce( ( prev, curr ) => ( prev + client2.commitments[ curr ].LOCAL ), 0 ) : 0\n \n const result1 = !client1.forecast.LOCAL ? 100 : Math.round( ( client1.sales.LOCAL + commitment1 ) / client1.forecast.LOCAL * 100 )\n const result2 = !client2.forecast.LOCAL ? 100 : Math.round( ( client2.sales.LOCAL + commitment2 ) / client2.forecast.LOCAL * 100 )\n \n if ( orderedList.orderby.desc ){\n \n if ( result1 < result2 ) {\n return 1;\n }\n if ( result1 > result2 ) {\n return -1;\n }\n return 0;\n \n } else {\n \n if ( result1 > result2 ) {\n return 1;\n }\n if ( result1 < result2 ) {\n return -1;\n }\n return 0;\n \n }\n \n } );\n \n }\n \n setOrderedList( {\n ...orderedList,\n list: ordered\n } )\n \n }\n\n }, [ filteredList, orderedList.orderby ] )\n\n if ( graphFetchStatus.loading ) return
\n\n const totaldata = getTotals( graphFetchStatus.data.data )\n\n return (\n
\n
\n
Cliente
{ setOrderedList( { ...orderedList, orderby: { ...orderedList.orderby, item: 'GROUP', desc: !orderedList.orderby.desc } } ) } }>
\n
Pronóstico USD
{ setOrderedList( { ...orderedList, orderby: { ...orderedList.orderby, item: 'FORECAST', desc: !orderedList.orderby.desc } } ) } }>
\n
Pronóstico
{ setOrderedList( { ...orderedList, orderby: { ...orderedList.orderby, item: 'FORECAST', desc: !orderedList.orderby.desc } } ) } }>
\n
Vendido
{ setOrderedList( { ...orderedList, orderby: { ...orderedList.orderby, item: 'SALES', desc: !orderedList.orderby.desc } } ) } }>
\n
Comprometido
{ setOrderedList( { ...orderedList, orderby: { ...orderedList.orderby, item: 'COMMITMENT', desc: !orderedList.orderby.desc } } ) } }>
\n
Estado Actual
{ setOrderedList( { ...orderedList, orderby: { ...orderedList.orderby, item: 'RESULT', desc: !orderedList.orderby.desc } } ) } }>
\n
\n
\n {\n orderedList.list.length\n ?\n <>\n {\n orderedList.list.map( ( cg, index ) => {\n\n const client_group = client_groups.data.find( c => Number( c.id ) === Number( cg.id ) )\n \n return \n } )\n }\n
\n \n
\n \n :\n \n }\n
\n
\n )\n\n}\n\nconst SaleStateItem = ({ client_group, data, sellers, userdata, setCommitmentModal }) => {\n\n const history = useHistory()\n const { id, forecast, sales, commitments } = data || {}\n\n const commitmentsARSValue = commitments && Object.keys( commitments ).length ? Object.keys( commitments ).reduce( ( prev, curr ) => ( prev + commitments[ curr ].LOCAL ), 0 ) : 0\n const percentage = !forecast.LOCAL ? 100 : Math.round( ( sales.LOCAL + commitmentsARSValue ) / forecast.LOCAL * 100 )\n\n const handleClick = () => {\n history.push( `/main/statecli/${ client_group.id }` )\n }\n\n return (\n
\n
{ client_group && client_group.name }
\n
{ Math.round( forecast.USD ).toLocaleString( 'es-AR' ) } USD
\n
{ Math.round( forecast.LOCAL ).toLocaleString( 'es-AR' ) }
\n
{ Math.round( sales.LOCAL ).toLocaleString( 'es-AR' ) }
\n
\n {\n commitmentsARSValue && commitments && sellers && userdata &&\n <>\n { commitmentsARSValue.toLocaleString( 'es-AR' ) } \n
\n {\n commitmentsARSValue\n ?\n }\n trigger=\"click\"\n >\n
\n \n :\n null\n }\n
{ setCommitmentModal( { visible: true, data: { client_group: id, ammount: commitments[ userdata.id ]?.LOCAL } } ) } }>
\n
\n \n }\n
\n
\n = 70 ? '#52c41a' : ( percentage >= 30 ? '#ff9800' : '#ff0000' ) }\n percent={ percentage > 100 ? 100 : percentage }\n format={ percent =>
{ Math.round( percentage ) }%
}\n />\n
\n
\n )\n\n}\n\nconst CommitmentsUsersList = ({ commitments, users, userdata }) => {\n\n return (\n
\n {\n Object.keys( commitments ).map( user => )\n }\n
\n )\n\n}\n\nconst CommitmentsUsersComponent = ({ commitment, users, userdata }) => {\n\n const user_data = Number( commitment.user ) === Number( userdata.id ) ? userdata : users.find( user => Number( user.id ) === Number( commitment.user ) )\n\n return (\n
\n
\n
{ commitment.LOCAL.toLocaleString( 'es-AR' ) }
\n
\n
\n {\n user_data &&\n
\n {\n user_data.firstname + \" \" + user_data.lastname\n }\n
\n }\n
\n )\n\n}\n\nfunction getTotals( data ){\n\n return Object.keys( data )\n .reduce( ( prev, curr ) => {\n \n return {\n forecast: {\n LOCAL: prev.forecast.LOCAL + data[ curr ].forecast.LOCAL,\n USD: prev.forecast.USD + data[ curr ].forecast.USD\n },\n sales: {\n LOCAL: prev.sales.LOCAL + data[ curr ].sales.LOCAL,\n USD: prev.sales.USD + data[ curr ].sales.USD\n }\n }\n\n }, { forecast: { LOCAL: 0, USD: 0 }, sales: { LOCAL: 0, USD: 0 } } )\n \n}","import moment from 'moment'\nimport React, { useEffect, useState } from 'react'\nimport { BsFileText } from 'react-icons/bs'\nimport { connect } from 'react-redux'\nimport PageHeader from '../../../../components/PageHeader/PageHeader'\nimport graphService from '../../../../services/Graph'\nimport { LoadingPage } from '../../loading/LoadingPage'\nimport { Filter } from './components/Filter'\nimport NewCommitmentModal from './components/NewCommitmentModal'\nimport { SalesStateList } from './components/SalesStateList'\n\nconst SalesStatePage = ({ clients_status, sellers_status, userdata_status, campaign }) => {\n \n const [ graphFetchStatus, setGraphFetchStatus ] = useState( { loading: true, error: null, data: null } )\n const [ dateSelected, setDateSelected ] = useState( { month: moment().month() } )\n const [ filteredString, setFilteredString ] = useState( '' )\n const [ commitmentModal, setCommitmentModal ] = useState( { visible: false, data: null } )\n const [ filteredList, setFilteredList ] = useState( null )\n\n const refreshData = () => {\n\n setGraphFetchStatus( { loading: true, error: null, data: null } )\n\n graphService.getSalesStatusData( { date: moment().year( campaign ).month( dateSelected.month ).format( 'YYYY-MM-DD' ) } )\n .then( res => {\n setGraphFetchStatus( { loading: false, error: null, data: res.data } )\n } )\n .catch( err => {\n setGraphFetchStatus( { loading: false, error: true, data: null } )\n })\n }\n\n // SETUP\n useEffect( refreshData, [ dateSelected.month, campaign ] )\n\n // EFECTO PARA APLICAR EL FILTRO SOBRE LA LISTA DE ITEMS ANCLADOS EN CADA GRUPOS DE CLIENTES\n useEffect( () => {\n\n if( clients_status.groups.data && graphFetchStatus.data ){\n\n const filteredClientsGroupsIds = Object.keys( graphFetchStatus.data.data )\n .filter( client_group_id => {\n \n const client_group = clients_status.groups.data.find( cg => Number( cg.id ) === Number( client_group_id ) )\n \n return client_group && client_group.name.toUpperCase().indexOf( filteredString.toUpperCase() ) > -1\n \n } )\n .map( client_group_id => ({ id: client_group_id, ...graphFetchStatus.data.data[ client_group_id ] }) )\n\n setFilteredList( filteredClientsGroupsIds )\n\n }\n\n }, [ filteredString, clients_status, graphFetchStatus ] )\n\n if ( \n clients_status.list.loading || \n clients_status.groups.loading ||\n sellers_status.loading ||\n userdata_status.loading ||\n !graphFetchStatus.data\n ) return \n \n\n return (\n
\n } />\n \n \n\n { \n commitmentModal.visible && \n { setCommitmentModal( { ...commitmentModal, visible: false } ) } }\n refreshAction={ refreshData }\n clients_groups={ clients_status.groups }\n />\n }\n
\n )\n}\n\nexport default connect( state => ({ campaign: state.campaign, clients_status: state.clients, sellers_status: state.sellers, userdata_status: state.userdata } ) )( SalesStatePage )","import React from 'react';\nimport { IconContext } from \"react-icons\";\nimport { FiUser } from \"react-icons/fi\";\n\nconst Header = ( props ) => {\n return (\n
\n
Mi Perfil
\n
|
\n
\n \n
\n \n
\n
\n
\n
\n )\n}\n\nexport default Header\n","import React from 'react';\nimport { useHistory } from \"react-router-dom\";\nimport { connect } from 'react-redux';\n\n\nimport loginService from '../../../../services/Login';\nimport { Button } from 'antd';\nimport { LoadingPage } from '../../loading/LoadingPage';\nimport { FiUser } from 'react-icons/fi';\n\nconst AccountCard = ( { user_status } ) => {\n\n const history = useHistory();\n\n if ( user_status.loading ) return \n\n return (\n
\n
Mi cuenta
\n
\n
\n \n
\n
\n
\n
\n
Nombre
\n
{ user_status.data.firstname }
\n
\n
\n
Apellido
\n
{ user_status.data.lastname }
\n
\n
\n
Email
\n
{ user_status.data.email }
\n
\n
\n
\n
\n
Estado
\n
Activo
\n
\n
\n
Tipo de usuario
\n
{ user_status.data.type === 1 ? 'Vendedor' : 'Administrador' }
\n
\n
\n
\n
\n
\n \n
\n
\n )\n}\n\nconst mapStateToProps = ( state ) => {\n\n return {\n user_status: state.userdata\n }\n\n}\n\nexport default connect( mapStateToProps )(AccountCard)\n","import React from 'react';\n\nimport authService from '../../../../services/Auth';\n\nimport Swal from 'sweetalert2';\nimport { Button } from 'antd';\n\nconst PasswordCard = ( props ) => {\n\n const updatePassword = () => {\n\n const actualPassword = document.getElementById( 'actualPassword' ).value;\n const newPassword = document.getElementById( 'newPassword' ).value;\n const confirmNewPassword = document.getElementById( 'confirmNewPassword' ).value;\n\n if ( !actualPassword || !newPassword || !confirmNewPassword ){\n\n Swal.fire({\n icon: 'warning',\n title: \"Campos incompletos!\",\n text: \"Por favor completa con ambas contraseñas para continuar\"\n })\n\n return;\n }\n\n if ( newPassword !== confirmNewPassword ){\n\n Swal.fire({\n icon: 'warning',\n title: \"Las contraseñas no coinciden\",\n text: \"Tu contraseña actual y la confirmación de la misma no coinciden\"\n })\n\n return;\n }\n\n if ( newPassword === actualPassword ){\n\n Swal.fire({\n icon: 'warning',\n title: \"Misma contraseña\",\n text: \"Tu nueva contraseña no debe ser igual a la actual\"\n })\n\n return;\n }\n\n\n Swal.fire ({\n title: \"..Actualizando tu contraseña..\",\n onBeforeOpen: () => {\n Swal.showLoading ()\n }\n })\n\n authService.updatePassword( {\n passwordActual: actualPassword,\n passwordNueva: newPassword\n } ).then( data => {\n Swal.fire({\n icon: 'success',\n title: \"Contraseña actualizada!\",\n text: \"Tu contraseña fue actualizada exitosamente\"\n })\n\n document.getElementById( 'actualPassword' ).value = null;\n document.getElementById( 'newPassword' ).value = null;\n document.getElementById( 'confirmNewPassword' ).value = null;\n\n }, error => {\n Swal.fire({\n icon: 'error',\n title: \"Contraseña incorrecta!\",\n text: \"Tu contraseña actual no es correcta\"\n })\n } )\n\n }\n\n return (\n
\n
Contraseña
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n )\n}\n\n\nexport default PasswordCard\n","import React, { useState, useEffect } from 'react';\nimport { connect } from 'react-redux';\n\nimport Header from './components/Header';\nimport AccountCard from './components/AccountCard';\nimport PasswordCard from './components/PasswordCard';\n\nimport './profile.css'\n\nconst ProfilePage = props => {\n\n const [ loading, setLoading ] = useState( true );\n\n useEffect( () => {\n setLoading( false );\n }, [ props.profile ])\n\n if ( loading ){\n return (\n
\n \"loading\"\n
\n )\n } else {\n return (\n
\n
\n
\n \n
\n
\n \n
\n
\n )\n }\n\n}\n\nexport default connect( state => ({ profile: state.userdata }), null )(ProfilePage)\n","import React, { useState, useEffect } from 'react';\nimport { FiTrash } from 'react-icons/fi';\nimport { HiOutlinePencil } from 'react-icons/hi';\nimport { FaArrowsAltV } from 'react-icons/fa';\nimport Swal from 'sweetalert2';\nimport clientsGroupsService from '../../../../services/ClientsGroups';\n\n// COMPONENTS\n\n// ITEM LIST HEADER\nconst GroupListItemHeader = ({ setOrderedList, edition }) => {\n\n return (\n
\n
Nombre
{ setOrderedList( 'NAME' ) } }>
\n
Cantidad de clientes
\n { edition &&
}\n
\n )\n}\n\n// ITEM LIST DEL BODY\nconst GroupListItem = ( { group, clients, reloadAction, setNewGroup, edition, campaign } ) => {\n\n return (\n
\n
{ group.name }
\n
{ group.clients_number }
\n {\n edition &&\n
\n
{ deleteGroup( group.id, reloadAction, campaign ) } }>
\n
\n }\n
\n )\n}\n\n// LISTA COMPLETA DE USUARIOS\nconst GroupsList = ( { clients, groups, reloadAction, setNewGroup, edition, campaign } ) => {\n\n // VARIABLES DE ESTADO DE PAGINACION Y FILTRO\n const [ activePage, setActivePage ] = useState( 1 );\n const [ filteredList, setFilteredList ] = useState( [] );\n const [ orderedList, setOrderedList ] = useState( { orderby: { item: 'NAME', desc: false }, list: clients } )\n const pageSize = 5;\n\n // EFECTO PARA ORDENAR LISTA\n useEffect( () => {\n\n let ordered = groups\n if ( orderedList.orderby.item === 'NAME' ){\n\n ordered = groups.sort( ( groupData1, groupData2 ) => {\n \n if ( orderedList.orderby.desc ){\n \n if ( ( groupData1 && groupData1.name || '' ) < ( groupData2 && groupData2.name || '' ) ) {\n return 1;\n }\n if ( ( groupData1 && groupData1.name || '' ) > ( groupData2 && groupData2.name || '' ) ) {\n return -1;\n }\n return 0;\n \n } else {\n \n if ( ( groupData1 && groupData1.name || '' ) > ( groupData2 && groupData2.name || '' ) ) {\n return 1;\n }\n if ( ( groupData1 && groupData1.name || '' ) < ( groupData2 && groupData2.name || '' ) ) {\n return -1;\n }\n return 0;\n \n }\n \n } );\n }\n\n setOrderedList( {\n ...orderedList,\n list: ordered\n } )\n\n }, [ groups, orderedList.orderby ] )\n\n // RECORTO LA CANTIDAD DE REGISTRO AL TAMAÑO DE PAGINA\n const pageList = orderedList.list\n .map( group => )\n // .slice( ( activePage - 1 ) * pageSize , ( activePage - 1 ) + pageSize);\n\n // RENDERIZO LA LISTA DE ZONAS CON LA PAGINACION\n return (\n
\n
\n { setOrderedList( { ...orderedList, orderby: { item: orderby, desc: !orderedList.orderby.desc } } ) } } />\n { pageList }\n
\n {/*
\n setActivePage( page ) }\n hideFirstLastPages={ true }\n prevPageText=\"«\"\n nextPageText=\"»\"\n />\n
*/}\n
\n )\n}\n\n// FUNCTIONS\n\n// BAJA DE USUARIO\nconst deleteGroup = ( groupId, reloadAction, campaign ) => {\n // DISPARO ALERT DE CONFIRMACION\n Swal.fire({\n title: 'Desasociar clientes del grupo',\n text: 'Recuerda que al desasociar los clientes de este grupo, los mismos se moveran al grupo \"OTROS\" para EL AÑO: ' + campaign ,\n icon: 'question',\n showCancelButton: true,\n confirmButtonColor: '#3085d6',\n cancelButtonColor: '#d33',\n cancelButtonText: 'Cancelar',\n confirmButtonText: 'Si, desasociar clientes!',\n showLoaderOnConfirm: true,\n // AL CONFIRMAR LE PEGO A LA API DE DELETE /ZONES\n preConfirm: ( value ) => {\n return clientsGroupsService.delete( groupId, campaign )\n },\n allowOutsideClick: () => !Swal.isLoading()\n }).then((result) => {\n // AL FINALIZAR MUESTRO ALERT DE SUCCESS Y LE PEGO AL HANDLER DE RELOAD PAGE\n if ( result.value ) {\n Swal.fire(\n 'Eliminado!',\n 'Grupo eliminado exitosamente!',\n 'success'\n )\n\n reloadAction();\n }\n })\n}\n\nexport default GroupsList\n","import React, { useState } from 'react';\nimport Modal from 'react-modal';\nimport { Button, Select } from 'antd';\nimport { AiOutlineUsergroupAdd } from 'react-icons/ai'\nimport Swal from 'sweetalert2';\nimport clientsGroupsService from '../../../../services/ClientsGroups';\n\nconst { Option } = Select;\n\n// ESTILO DEL MODAL DE INVITACION DE USUARIO\nconst customStyles = {\n overlay: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)'\n },\n content : {\n top : '50%',\n left : '50%',\n right : 'auto',\n bottom : 'auto',\n marginRight : '-50%',\n transform : 'translate(-50%, -50%)',\n background : 'white'\n }\n};\n\nconst NewGroup = ( { handlerClose, refreshGroups, editionGroup } ) => {\n\n const [ groupCreationVisible, setGroupCreationVisible ] = useState( false )\n const [ loading, setLoading ] = useState( false )\n const [ newGroupData, setNewGroupData ] = useState({\n name: ''\n })\n \n const addGroup = () => {\n\n if ( !newGroupData.name ){\n Swal.fire({\n icon: 'warning',\n title: \"Campos incompletos\",\n text: \"Por favor complete con todos los campos para continuar\"\n })\n\n return;\n }\n\n setLoading( true )\n // ALERT DE LOADING\n Swal.fire ({\n title: \"..Creando el grupo..\",\n onBeforeOpen: () => {\n Swal.showLoading ()\n }\n })\n\n // LE PEGO A LA API Y AL FINALIZAR LLAMO AL HANDLER DE SUCCESS Y CIERRO EL ALERT\n clientsGroupsService.post( newGroupData )\n .then( res => {\n Swal.close();\n refreshGroups();\n\n handlerClose();\n } )\n\n }\n\n return (\n
\n \n\n {\n loading\n ?\n \"loading..\"\n :\n \n }\n\n \n
\n )\n}\n\nexport default NewGroup\n\nconst ClientGroupModalBody = ({ newGroupData, setNewGroupData, handlerClose, addGroup }) => {\n\n return (\n
\n
\n \n
\n
\n
\n
\n
\n { setNewGroupData( { ...newGroupData, name: ev.target.value } ) } } />\n
\n
\n
\n
\n \n \n
\n
\n
\n )\n}","import React, { useEffect, useState } from 'react'\nimport { FiUsers } from 'react-icons/fi'\nimport { connect } from 'react-redux'\nimport { Button, Switch } from 'antd'\nimport { IoMdAdd } from 'react-icons/io'\nimport GroupsList from './GroupsList'\nimport NewGroup from './NewGroup'\nimport Filter from '../components/Filter'\nimport PageHeader from '../../../../components/PageHeader/PageHeader'\nimport { getClients, getClientsGroups } from '../../../../store/actions/getClients'\nimport { LoadingPage } from '../../loading/LoadingPage'\nimport { Link } from 'react-router-dom'\nimport './GroupsPage.css'\n\nconst GroupsPage = ({ clients_status, getClients, getClientsGroups, campaign, userdata }) => {\n\n const [ filter, setFilter ] = useState( { string: '', withClients: true } );\n const [ groupsListFiltered, setGroupsListFiltered ] = useState( [] )\n const [ newGroup, setNewGroup ] = useState( { visible: false, editionGroup: null } )\n\n // HOOK PARA ACTUALIZACION DE LISTA DE USUARIOS EN FUNCION DEL FILTRO\n useEffect( () => {\n \n if ( !clients_status.groups.loading && clients_status.groups.data ){\n\n const fullList = clients_status.groups.data.filter( group => {\n\n const stringMatch = group.name.toUpperCase().includes( filter.string.toUpperCase() )\n const clientsMatch = filter.withClients ? group.clients_number : true\n \n return stringMatch && clientsMatch\n \n } )\n \n setGroupsListFiltered( fullList );\n\n }\n\n }, [ filter, clients_status.groups.data ] )\n\n\n if ( clients_status.list.loading || clients_status.groups.loading || userdata.loading ) return \n\n return (\n
\n
\n } />\n
\n
\n \n \n \n
\n
\n \n
\n
\n
\n
\n\n { setFilter({ ...filter, string: s }) } }>\n
\n
Mostrar solo grupos con clientes este año
\n
{ setFilter({ ...filter, withClients: checked }) } } />
\n
\n
\n\n { getClientsGroups( campaign ); getClients( campaign ) } } />\n\n
\n { newGroup.visible && { setNewGroup( { visible: false, editionGroup: null } ) } } \n groups={ clients_status.groups.data } \n refreshAction={ () => { getClients( campaign ) } }\n refreshGroups={ () => { getClientsGroups( campaign ) } }\n editionClient={ newGroup.editionGroup }\n /> }\n
\n )\n}\n\nexport default connect( state => ({ userdata: state.userdata, clients_status: state.clients, campaign: state.campaign } ), { getClients, getClientsGroups } )( GroupsPage )","import React, { useEffect, useState } from 'react'\nimport { YAxis } from 'recharts'\nimport { AreaChart } from 'recharts'\nimport { ResponsiveContainer } from 'recharts'\nimport { Bar } from 'recharts'\nimport { Radio, Spin, Switch } from 'antd';\nimport { BarChart } from 'recharts'\nimport { Area } from 'recharts'\nimport { XAxis } from 'recharts'\nimport { MONTHS } from '../../../../../../constants/constants'\nimport './forecast-graph.css'\nimport { Legend } from 'recharts'\nimport { Tooltip } from 'recharts'\nimport './forecast-graph.css'\nimport { EmptyContainer } from '../../../../sales/components/EmptyContainer'\nimport { useHistory } from 'react-router-dom/cjs/react-router-dom.min'\nimport Currency from '../../../../../../components/Currency'\n\nexport const ForecastGraph = ({ fetchStatus, products, exchange }) => {\n\n const [ config, setConfig ] = useState( { chartType: 'BAR', mode: 'Q' } )\n\n if ( !fetchStatus.data ) return
\n\n return (\n
\n \n
\n
Ventas vs Pronóstico
\n
\n
\n setConfig({ ...config, chartType: e.target.value }) }>\n Lineal\n Barras\n Tabla\n \n
\n
\n setConfig({ ...config, mode: e.target.value }) }>\n Cantidad\n Valor\n \n
\n
\n
\n
\n\n {\n config.chartType === 'LINE'\n ?\n \n :\n (\n config.chartType === 'BAR'\n ?\n \n :\n \n )\n }\n\n
\n\n
\n )\n}\n\n\nconst LinealGraph = ({ data, mode, exchange, filterNulls }) => {\n\n const dataSource = data\n .total[ mode === 'Q' ? 'q' : 'price' ]\n // .filter( d => filterNulls ? d.sales.find( item => item ) : true ) // CREO QUE NO ES CORRECTO FILTRAR EN ESTE GRAFICO\n\n const dataParsed = MONTHS.map( ( month, index ) => ({\n tag: month.slice( 0, 3 ),\n \"Ventas\": dataSource.sales[ index ],\n \"Pronóstico\": dataSource.forecast[ index ]\n }) ) \n \n \n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n
\n )\n\n}\n\nconst BarGraph = ({ data, mode, exchange, filterNulls }) => {\n\n const dataSource = data\n .total[ mode === 'Q' ? 'q' : 'price' ]\n // .filter( d => filterNulls ? d.sales.find( item => item ) : true ) // CREO QUE NO ES CORRECTO FILTRAR EN ESTE GRAFICO\n\n const dataParsed = MONTHS.map( ( month, index ) => ({\n tag: month.slice( 0, 3 ),\n \"Ventas\": dataSource.sales[ index ],\n \"Pronóstico\": dataSource.forecast[ index ]\n }) ) \n \n return (\n
\n \n \n \n \n \n \n \n \n \n \n
\n )\n\n}\n\nconst TableChart = ({ data, mode, products, exchange }) => {\n\n const dataSource = data.partials[ mode === 'Q' ? 'q' : 'price' ]\n const [ search, setSearch ] = useState( '' )\n const [ filteredData, setFilteredData ] = useState( dataSource )\n const history = useHistory()\n\n useEffect( () => {\n\n const filtered = dataSource.filter( item => {\n\n const productdata = products.find( product => product.id == item.product )\n return productdata && productdata.name.toUpperCase().indexOf( search.toUpperCase() ) > -1\n\n } )\n\n if ( filtered.length ){\n\n setFilteredData( filtered )\n\n } else {\n\n setFilteredData( dataSource )\n\n }\n\n\n }, [ mode, search ] )\n\n const totals = dataSource && getTableTotals( dataSource )\n\n if ( !filteredData || !filteredData.length ){\n\n return (\n
\n \n
\n )\n }\n\n return (\n
\n
\n
\n
\n setSearch( ev.target.value ) } />\n
\n
\n
\n {\n filteredData.map( ( productItem, index ) => {\n\n const productdata = products.find( product => product.id == productItem.product )\n const handleClick = () => {\n\n history.push( `/main/stateprod/${ productdata.id }` )\n\n }\n\n return (\n
\n
{ productdata.name }
\n
\n )\n\n } )\n\n }\n
\n
\n
\n
\n
ENE
\n
FEB
\n
MAR
\n
ABR
\n
MAY
\n
JUN
\n
JUL
\n
AGO
\n
SEP
\n
OCT
\n
NOV
\n
DIC
\n
Total
\n
\n
\n {\n filteredData.map( ( productItem, index ) => {\n\n const totalSales = productItem.sales.reduce( ( prev, curr ) => prev + curr, 0 )\n const totalForecast = productItem.forecast.reduce( ( prev, curr ) => prev + curr, 0 )\n\n return (\n
\n
{ Math.round( productItem.sales[ 0 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 0 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 1 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 1 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 2 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 2 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 3 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 3 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 4 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 4 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 5 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 5 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 6 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 6 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 7 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 7 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 8 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 8 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 9 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 9 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 10 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 10 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( productItem.sales[ 11 ] ).toLocaleString( 'es-AR' ) }/{ Math.round( productItem.forecast[ 11 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( totalSales ).toLocaleString( 'es-AR' ) }/{ Math.round( totalForecast ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
\n )\n\n } )\n\n }\n
\n
{ Math.round( totals.sales[ 0 ].toLocaleString( 'es-AR' ) ) }/{ Math.round( totals.forecast[ 0 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 1 ].toLocaleString( 'es-AR' ) ) }/{ Math.round( totals.forecast[ 1 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 2 ].toLocaleString( 'es-AR' ) ) }/{ Math.round( totals.forecast[ 2 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 3 ].toLocaleString( 'es-AR' ) ) }/{ Math.round( totals.forecast[ 3 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 4 ].toLocaleString( 'es-AR' ) ) }/{ Math.round( totals.forecast[ 4 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 5 ].toLocaleString( 'es-AR' ) ) }/{ Math.round( totals.forecast[ 5 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 6 ].toLocaleString( 'es-AR' ) ) }/{ Math.round( totals.forecast[ 6 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 7 ].toLocaleString( 'es-AR' ) ) }/{ Math.round( totals.forecast[ 7 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 8 ].toLocaleString( 'es-AR' ) ) }/{ Math.round( totals.forecast[ 8 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 9 ].toLocaleString( 'es-AR' ) ) }/{ Math.round( totals.forecast[ 9 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 10 ].toLocaleString( 'es-AR' ) ) }/{ Math.round( totals.forecast[ 10 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.sales[ 11 ].toLocaleString( 'es-AR' ) ) }/{ Math.round( totals.forecast[ 11 ] ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
{ Math.round( totals.totals.sales ).toLocaleString( 'es-AR' ) }/{ Math.round( totals.totals.forecast ).toLocaleString( 'es-AR' ) } { mode === 'PRICE' && }
\n
\n\n
\n
\n
\n )\n\n}\n\n\nfunction getTableTotals( data ){\n\n const response = data\n .reduce( ( prev, curr, index ) => {\n\n const forecast = []\n const sales = []\n\n Array.from( Array(12).keys() )\n .map( ( item , i ) => {\n forecast[ i ] = prev.forecast[ i ] + curr.forecast[ i ]\n sales[ i ] = prev.sales[ i ] + curr.sales[ i ]\n } )\n\n return {\n forecast,\n sales\n }\n\n }, { \n forecast: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], \n sales: [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] \n })\n\n response[ 'totals' ] = {\n forecast: response.forecast.reduce( ( prev, curr ) => prev + curr, 0 ),\n sales: response.sales.reduce( ( prev, curr ) => prev + curr, 0 )\n }\n\n return response\n\n}","import { Spin } from 'antd'\nimport React from 'react'\nimport { Cell } from 'recharts'\nimport { Pie } from 'recharts'\nimport { PieChart } from 'recharts'\nimport Currency from '../../../../../../components/Currency'\nimport { EmptyContainer } from '../../../../sales/components/EmptyContainer'\nimport './actual-forecast-summery.css'\n\nexport const ActualForecastSummery = ({ fetchStatus, exchange }) => {\n\n if ( !fetchStatus.data ) return
\n\n const totalSales = fetchStatus.data.data.data.FORECAST_GRAPH.total.price.sales.reduce( ( prev, curr ) => prev + curr, 0 )\n const totalForecast = fetchStatus.data.data.data.FORECAST_GRAPH.total.price.forecast.reduce( ( prev, curr ) => prev + curr, 0 )\n const percentageFull = totalForecast ? ( ( totalSales / totalForecast ) * 100 ) : 100\n const data = [ {\n value: percentageFull <= 100 ? percentageFull : 100,\n fill: \"#4caf50\"\n }, {\n value: 100 - ( percentageFull <= 100 ? percentageFull : 100 ),\n fill: '#ff0000'\n } ]\n\n return (\n
\n
Estado de venta del año
\n {\n totalSales || totalForecast\n ?\n
\n
\n
\n
Pronosticado
\n
{ Math.round( totalForecast ).toLocaleString( 'es-AR' ) }
\n
\n
\n
Vendido
\n
{ Math.round( totalSales ).toLocaleString( 'es-AR' ) }
\n
\n
\n
\n
{ percentageFull > 100 ? 'Sobreventa' : 'Restante' }
\n
{ Math.round( Math.abs( totalForecast - totalSales ) ).toLocaleString( 'es-AR' ) }
\n
\n
\n
\n \n \n {\n data.map((entry, index) => )\n }\n \n \n
\n { Math.round( percentageFull ) } \n % \n
\n
\n
\n :\n \n }\n
\n )\n}\n","import { Radio, Spin } from 'antd'\nimport React, { useState } from 'react'\nimport { Cell } from 'recharts'\nimport { Pie } from 'recharts'\nimport { PieChart } from 'recharts'\nimport { ResponsiveContainer } from 'recharts'\nimport { EmptyContainer } from '../../../../sales/components/EmptyContainer'\nimport './ranking.css'\nimport { FaArrowDown, FaArrowUp } from 'react-icons/fa'\nimport Currency from '../../../../../../components/Currency'\n\nconst COLORS = ['#35618f', '#611115', '#446645', '#491f91', '#142a25', '#ba0951'];\n\nconst RADIAN = Math.PI / 180;\nconst renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent, index }) => {\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n\n return (\n cx ? 'start' : 'end'} dominantBaseline=\"central\">\n {`${(percent * 100).toFixed(0)}%`}\n \n );\n};\n\nexport const RankingProductsGraph = ({ fetchStatus, products, exchange }) => {\n\n if ( !fetchStatus.data ) return
\n\n const data = fetchStatus.data.data.data.RANKING_GRAPH.product\n\n return (\n
\n
\n
Ranking de productos
\n
\n {\n data && data.length\n ?\n
\n
\n {\n data.map( ( item, index ) => {\n\n const product = products.data.find( p => p.id === Number( item.product ) )\n\n return (\n
\n
\n
{ index + 1 }.
\n
\n
{ product && product.name || 'Otros' }
\n {\n item.productSoldPrice\n ?\n
\n Precio venta: \n { item.productSoldPrice ? Math.round( item.productSoldPrice ) : '' } \n {/* { typeof item.overSoldPrice === 'boolean' ? ( item.overSoldPrice ? : ) : null } */}\n
\n :\n null\n }\n
\n
{ Math.round( item.sold ).toLocaleString( 'es-AR' ) }
\n
\n )\n })\n }\n
\n
\n \n \n \n {data.map((entry, index) => (\n \n ))}\n \n \n \n
\n
\n :\n \n }\n
\n )\n}\n","import { Radio, Spin } from 'antd'\nimport React, { useState } from 'react'\nimport { Cell } from 'recharts'\nimport { Pie } from 'recharts'\nimport { PieChart } from 'recharts'\nimport { ResponsiveContainer } from 'recharts'\nimport { EmptyContainer } from '../../../../sales/components/EmptyContainer'\nimport './ranking.css'\nimport { FaArrowDown, FaArrowUp } from 'react-icons/fa'\nimport Currency from '../../../../../../components/Currency'\n\nconst COLORS = ['#35618f', '#611115', '#446645', '#491f91', '#142a25', '#ba0951'];\n\nconst RADIAN = Math.PI / 180;\nconst renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent, index }) => {\n const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\n const x = cx + radius * Math.cos(-midAngle * RADIAN);\n const y = cy + radius * Math.sin(-midAngle * RADIAN);\n\n return (\n cx ? 'start' : 'end'} dominantBaseline=\"central\">\n {`${(percent * 100).toFixed(0)}%`}\n \n );\n};\n\nexport const RankingClientsGraph = ({ fetchStatus, clients, clients_groups, exchange }) => {\n\n const [ mode, setMode ] = useState( 'CLIENT' )\n\n if ( !fetchStatus.data ) return
\n\n const data = fetchStatus.data.data.data.RANKING_GRAPH[ mode === 'CLIENT' ? 'client' : 'client_groups' ]\n\n return (\n
\n
\n
Ranking de clientes
\n
\n setMode( e.target.value ) }>\n Clientes\n Grupos Económicos\n \n
\n
\n {\n data && data.length\n ?\n
\n
\n {\n data.map( ( item, index ) => {\n\n const target = (mode === 'CLIENT' ? clients : clients_groups ).data.find( p => p.id === Number( item.client ) || p.id === Number( item.client_group ) )\n\n return (\n
\n
\n
{ index + 1 }.
\n
\n
{ target && target.name || 'Otros' }
\n {\n item.productSoldPrice\n ?\n
\n Precio venta: \n { item.productSoldPrice ? Math.round( item.productSoldPrice ) : '' } \n {/* { typeof item.overSoldPrice === 'boolean' ? ( item.overSoldPrice ? : ) : null } */}\n
\n :\n null\n }\n
\n
{ Math.round( item.sold ).toLocaleString( 'es-AR' ) }
\n
\n )\n })\n }\n
\n
\n \n \n \n {data.map((entry, index) => (\n \n ))}\n \n \n \n
\n
\n :\n \n }\n
\n )\n}\n","import moment from 'moment'\nimport React, { useState, useEffect } from 'react'\nimport { BiLineChartDown } from 'react-icons/bi'\nimport { Radio } from 'antd'\nimport { connect } from 'react-redux'\nimport PageHeader from '../../../../components/PageHeader/PageHeader'\nimport { LoadingPage } from '../../loading/LoadingPage'\nimport { ForecastGraph } from './components/graphs/ForecastGraph'\nimport { ActualForecastSummery } from './components/graphs/ActualForecastSummery'\nimport { RankingProductsGraph } from './components/graphs/RankingProductsGraph'\n// import { SalesList } from './components/graphs/SalesList'\n// import { RevenueList } from './components/graphs/RevenueList'\nimport { EmptyContainer } from '../../sales/components/EmptyContainer'\n// import { ConsumeGraph } from './components/graphs/ConsumeGraph'\nimport './totals.css'\nimport graphService from '../../../../services/Graph'\nimport { RankingClientsGraph } from './components/graphs/RankingClientsGraph'\nimport Currency from '../../../../components/Currency'\n\nconst TotalsPage = ({ clients_status, products_status, campaign }) => {\n\n const [ filters, setFilters ] = useState( { \n exchange: 'USD'\n } )\n const [ graphFetchStatus, setGraphFetchStatus ] = useState( { loading: true, error: null, data: null } )\n\n useEffect( () => {\n\n graphService.getTotalsGraphData( { \n filters: {\n date: {\n year: campaign, \n },\n exchange: filters.exchange\n }\n } )\n .then( res => {\n setGraphFetchStatus( { loading: false, error: null, data: res } )\n } )\n .catch( err => {\n setGraphFetchStatus( { loading: false, error: true, data: null } )\n } )\n\n }, [ filters, campaign ] )\n\n if ( \n clients_status.list.loading || \n clients_status.groups.loading || \n products_status.list.loading || \n products_status.groups.loading || \n products_status.lines.loading ||\n graphFetchStatus.loading\n ) return \n\n return (\n
\n } >\n
\n setFilters({ ...filters, exchange: e.target.value }) }>\n \n USD\n \n
\n
\n {\n !graphFetchStatus.loading && \n graphFetchStatus.data\n ?\n (\n
\n\n \n \n\n \n\n {/* */}\n\n \n \n\n \n\n {/* */}\n\n \n
\n )\n :\n \n \n }\n \n
\n )\n\n\n}\n\n\nexport default connect( state => ({ campaign: state.campaign, products_status: state.products, clients_status: state.clients } ) )( TotalsPage )\n","import React, { useEffect, useState } from 'react';\nimport { Route, useRouteMatch, Redirect } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\nimport authService from '../../services/Auth';\n\nimport { getClients, getClientsGroups } from '../../store/actions/getClients'\nimport { getProducts, getProductsGroups, getProductsLines } from '../../store/actions/getProducts'\nimport { getExchanges } from '../../store/actions/getExchanges';\nimport { getSellers } from '../../store/actions/getSellers';\nimport { getUserdata } from '../../store/actions/getUserdata';\nimport { setCampaign } from '../../store/actions/campaign';\n\nimport Sidenav from '../../components/sidenav/Sidenav';\n\nimport Modal from 'react-modal';\nimport ClientsPage from './clients/ClientsPage';\n\nimport './listPages.css'\nimport ProductsPage from './products/ProductsPage';\nimport ExchangePage from './exchange/ExchangePage';\nimport SellersPage from './sellers/SellersPage';\nimport loginService from '../../services/Login';\nimport SalesPage from './sales/SalesPage';\nimport ForecastPage from './forecast/ForecastPage';\nimport ClientsStatePage from './result-state/clients/ClientsStatePage';\nimport ProductsStatePage from './result-state/products/ProductsStatePage';\nimport SalesStatePage from './result-state/sales/SalesStatePage';\nimport ProfilePage from './profile/ProfilePage';\nimport GroupsPage from './clients/groups/GroupsPage';\nimport TotalsPage from './result-state/totals/TotalsPage';\n\nModal.setAppElement('#root');\n\nconst Main = ( props ) => {\n\n const [ initialFetch, setinitialFetch ] = useState( {\n loading: false,\n error: null,\n data: null\n } )\n\n useEffect( () => {\n authService.ping()\n .then( res => {\n\n props.getClients( props.campaign );\n props.getClientsGroups( props.campaign );\n props.getProducts();\n props.getProductsGroups();\n props.getProductsLines();\n props.getExchanges( props.campaign );\n props.getUserdata()\n props.getSellers()\n\n } )\n .catch( err => {\n loginService.logout( )\n .then( () => {\n window.location.reload()\n } )\n })\n }, [] )\n\n useEffect( () => {\n\n props.getClients( props.campaign );\n props.getClientsGroups( props.campaign );\n props.getExchanges( props.campaign );\n\n }, [ props.campaign ] )\n\n let { path } = useRouteMatch();\n\nif ( initialFetch.loading ) { \n return (\n
\n
\n \"loading\"\n
\n
\n )\n } else {\n\n return (\n
\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n )\n }\n}\n\nconst mapStateToProps = ( state ) => {\n\n return {\n sidenavOpen: state.sidenavOpen,\n clients: state.clients,\n campaign: state.campaign\n }\n\n}\n\nexport default connect( mapStateToProps, { \n getClients,\n getClientsGroups,\n getProducts,\n getProductsGroups,\n getProductsLines,\n getExchanges,\n getSellers,\n getUserdata,\n setCampaign\n})(Main)\n","import authService from '../../services/Auth';\n\nexport const getUserdata = () => {\n\n return ( dispatch ) => {\n\n dispatch( { type: 'START_FETCH_USERDATA' } )\n\n return authService.getSelfData()\n .then( response => {\n\n dispatch({\n type: 'RECEIVE_FETCH_USERDATA',\n payload: response.data\n })\n\n return response\n\n } )\n .catch( err => {\n\n dispatch({\n type: 'FAIL_FETCH_USERDATA'\n })\n\n })\n \n }\n\n}\n","export const setCampaign = ( year ) => {\n\n return {\n type: 'SET_CAMPAIGN',\n payload: year\n }\n \n}","import React, { useState } from 'react';\nimport Swal from 'sweetalert2'\n\nimport { useHistory, useLocation, useParams } from \"react-router-dom\";\n\nimport environment from '../../../environments/environment';\nimport loginService from '../../../services/Login';\nimport authService from '../../../services/Auth';\nimport './login.css'\nimport { Button } from 'antd';\n\nconst LoginPage = () => {\n\n const [ passwordVisible, setPasswordVisible ] = useState( false );\n const [ flipped, setFlipped ] = useState( false );\n const history = useHistory();\n const location = useLocation();\n const { t } = useParams();\n\n if ( t ){\n window.localStorage.setItem('t', t );\n window.location = environment.front_url;\n }\n\n const { from } = location.state || { from: { pathname: \"/main\" } };\n const login = () => {\n\n const userData = {\n email: document.getElementById('username').value,\n password: document.getElementById('password').value\n }\n\n loginService.login( userData )\n .then( res => {\n history.replace( from );\n } )\n .catch( err => {\n\n const errorCode = err && err.response && err.response.data && err.response.data.code\n\n if ( errorCode === 2 ){\n\n Swal.fire({\n title: 'Usuario suspendido',\n text: 'Please comuniquese con los administradores ya que su usuario fue suspendido.',\n icon: 'error',\n confirmButtonText: 'OK'\n })\n\n } else {\n Swal.fire({\n title: 'Login Error',\n text: 'Please check your email or password',\n icon: 'error',\n confirmButtonText: 'OK'\n })\n }\n\n }) \n }\n\n const recovery = () => {\n\n const email = document.getElementById('mail').value\n\n authService.recoveryPasswordPetition({\n email: email\n })\n .then( res => {\n Swal.fire({\n title: 'Email Sent',\n text: 'Please check your email to update your password',\n icon: 'success',\n confirmButtonText: 'OK'\n })\n\n setFlipped( false )\n })\n .catch( err => {\n Swal.fire({\n title: 'Update Error',\n text: 'Oups! An error ocurred!',\n icon: 'error',\n confirmButtonText: 'OK'\n })\n })\n }\n\n return (\n
\n\n
\n
\n
\n
\n
\n \"logo\n
\n
\n\n
\n \n \n
\n\n
\n \n { if ( e.key === 'Enter' ) login() } } />\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \"logo\n
\n
\n\n
\n \n \n
\n\n
\n
\n \n \n
\n
\n
\n
\n
\n\n
\n )\n}\n\nexport default LoginPage\n","import React, { useState } from 'react';\nimport authService from '../../../services/Auth';\nimport Swal from 'sweetalert2'\n\nimport { useParams } from \"react-router-dom\";\n\nimport './recovery.css'\nimport environment from '../../../environments/environment';\n\nconst RecoveryPage = () => {\n\n const [ passwordVisible, setPasswordVisible ] = useState( false );\n const { t } = useParams();\n\n const recovery = () => {\n\n const password1 = document.getElementById('password').value\n const password2 = document.getElementById('password2').value\n\n if ( password1 !== password2 ){\n Swal.fire({\n title: 'Update Error',\n text: 'Las contraseñas que ingresaste no coinciden',\n icon: 'error',\n confirmButtonText: 'Retry'\n })\n }\n\n authService.updatePasswordOutside({\n passwordNueva: password1,\n passwordNueva2: password2,\n t: t\n })\n .then( res => {\n\n Swal.fire({\n title: 'Update Successfull!',\n text: 'Tu contraseña fue actualizada correctamente!',\n icon: 'success',\n confirmButtonText: 'Enter to VIIP'\n })\n .then((result) => {\n // AL FINALIZAR MUESTRO ALERT DE SUCCESS Y LE PEGO AL HANDLER DE RELOAD PAGE\n if ( result.value ) {\n\n window.localStorage.setItem('t', t );\n\n window.location = environment.front_url;\n\n }\n })\n\n } )\n .catch( err => {\n Swal.fire({\n title: 'Update Error!',\n text: 'Tu contraseña no pudo ser actualizada!',\n icon: 'error',\n confirmButtonText: 'OK'\n })\n } )\n }\n\n return (\n
\n\n
\n
\n
\n \"logo\n
\n\n
\n
\n \n \n
\n\n
\n \n \n
\n
\n\n
\n \n
\n\n
\n
\n\n
\n )\n}\n\nexport default RecoveryPage\n","import React from 'react';\nimport { BrowserRouter, Route, Redirect, Switch } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\nimport Main from '../pages/main/Main';\n\nimport Modal from 'react-modal';\nimport authService from '../services/Auth';\nimport LoginPage from '../pages/accounts/login/LoginPage';\nimport RecoveryPage from '../pages/accounts/recovery/RecoveryPage';\n\nModal.setAppElement('#root');\n\nfunction PrivateRoute({ children, ...rest }) {\n\n const loggedIn = authService.isAuthenticated();\n\n return (\n {\n\n if ( loggedIn ) {\n return children\n } else {\n return (\n \n )\n }\n } }\n />\n );\n}\n\nconst App = ( props ) => {\n\n return (\n
\n \n \n
\n \n \n \n \n \n \n \n
\n )\n}\n\nconst mapStateToProps = ( state ) => {\n\n return {\n sidenavOpen: state.sidenavOpen\n }\n\n}\n\nexport default connect( mapStateToProps )(App)\n","import moment from \"moment\"\n\nconst MIN_YEAR = 2021;\n\nconst campaignReducer = ( state = moment().year(), action ) => {\n\n if ( action.type === 'SET_CAMPAIGN' ){\n \n if ( action.payload >= MIN_YEAR ){\n\n return action.payload\n \n }\n \n }\n\n return state\n \n }\n \n export default campaignReducer\n ","const clientssReducer = ( clients = {\n list: { loading: true, error: null, data: null },\n groups: { loading: true, error: null, data: null }\n}, action ) => {\n\n // CLIENTS\n\n if ( action.type === 'START_FETCH_CLIENTS' ){\n return {\n ...clients,\n list: { loading: true, error: null, data: null }\n };\n }\n\n if ( action.type === 'FAIL_FETCH_CLIENTS' ){\n return {\n ...clients,\n list: { loading: false, error: true, data: null }\n };\n }\n\n if ( action.type === 'RECEIVE_FETCH_CLIENTS' ){\n return {\n ...clients,\n list: { loading: false, error: true, data: action.payload }\n };\n }\n\n // CLIENTS GROUPS\n\n if ( action.type === 'START_FETCH_CLIENTS_GROUPS' ){\n return {\n ...clients,\n groups: { loading: true, error: null, data: null }\n };\n }\n\n if ( action.type === 'FAIL_FETCH_CLIENTS_GROUPS' ){\n return {\n ...clients,\n groups: { loading: false, error: true, data: null }\n };\n }\n\n if ( action.type === 'RECEIVE_FETCH_CLIENTS_GROUPS' ){\n return {\n ...clients,\n groups: { loading: false, error: true, data: action.payload }\n };\n }\n \n return clients;\n \n }\n \n export default clientssReducer;\n ","const exchangesReducer = ( exchanges = { loading: true, error: null, data: null }, action ) => {\n\n if ( action.type === 'START_FETCH_EXCHANGES' ){\n return { loading: true, error: null, data: null };\n }\n \n if ( action.type === 'FAIL_FETCH_EXCHANGES' ){\n return { loading: false, error: true, data: null };\n }\n \n if ( action.type === 'RECEIVE_FETCH_EXCHANGES' ){\n return { loading: false, error: true, data: [ ...action.payload ] };\n }\n\n return exchanges;\n \n }\n \nexport default exchangesReducer;\n ","const productssReducer = ( products = {\n list: { loading: true, error: null, data: null },\n groups: { loading: true, error: null, data: null },\n lines: { loading: true, error: null, data: null }\n }, action ) => {\n\n // PRODUCTS\n if ( action.type === 'START_FETCH_PRODUCTS' ){\n return {\n ...products,\n list: { loading: true, error: null, data: null }\n };\n }\n\n if ( action.type === 'FAIL_FETCH_PRODUCTS' ){\n return {\n ...products,\n list: { loading: false, error: true, data: null }\n };\n }\n\n if ( action.type === 'RECEIVE_FETCH_PRODUCTS' ){\n return {\n ...products,\n list: { loading: false, error: true, data: action.payload }\n };\n }\n\n // groups\n if ( action.type === 'START_FETCH_PRODUCTS_GROUPS' ){\n return {\n ...products,\n groups: { loading: true, error: null, data: null }\n };\n }\n\n if ( action.type === 'FAIL_FETCH_PRODUCTS_GROUPS' ){\n return {\n ...products,\n groups: { loading: false, error: true, data: null }\n };\n }\n\n if ( action.type === 'RECEIVE_FETCH_PRODUCTS_GROUPS' ){\n return {\n ...products,\n groups: { loading: false, error: true, data: action.payload }\n };\n }\n\n // LINES\n if ( action.type === 'START_FETCH_PRODUCTS_LINES' ){\n return {\n ...products,\n lines: { loading: true, error: null, data: null }\n };\n }\n\n if ( action.type === 'FAIL_FETCH_PRODUCTS_LINES' ){\n return {\n ...products,\n lines: { loading: false, error: true, data: null }\n };\n }\n\n if ( action.type === 'RECEIVE_FETCH_PRODUCTS_LINES' ){\n return {\n ...products,\n lines: { loading: false, error: true, data: action.payload }\n };\n }\n \n return products;\n \n }\n \n export default productssReducer;\n ","const sellersReducer = ( sellers = { loading: true, error: null, data: null }, action ) => {\n \n if ( action.type === 'START_FETCH_SELLERS' ){\n return { loading: true, error: null, data: null };\n }\n\n if ( action.type === 'FAIL_FETCH_SELLERS' ){\n return { loading: false, error: true, data: null };\n }\n\n if ( action.type === 'RECEIVE_FETCH_SELLERS' ){\n return { loading: false, error: true, data: [ ...action.payload ] };\n }\n\n return sellers;\n \n }\n \nexport default sellersReducer;\n ","const sidenavReducer = ( sidenavOpen, action ) => {\n\n if ( action.type === 'CLOSE_SIDENAV' ){\n \n return false\n \n }\n \n if ( action.type === 'OPEN_SIDENAV' ){\n \n return true\n \n }\n \n return true\n \n }\n \n export default sidenavReducer\n ","const userdataReducer = ( userdata = { loading: true, error: null, data: null }, action ) => {\n\n if ( action.type === 'START_FETCH_USERDATA' ){\n return { loading: true, error: null, data: null };\n }\n\n if ( action.type === 'FAIL_FETCH_USERDATA' ){\n return { loading: false, error: true, data: null };\n }\n\n if ( action.type === 'RECEIVE_FETCH_USERDATA' ){\n return { loading: false, error: false, data: { ...action.payload } };\n }\n\n return userdata;\n \n }\n \nexport default userdataReducer;\n ","import { combineReducers } from 'redux';\nimport campaignReducer from './campaignReducer';\nimport clientssReducer from './clientsReducer';\nimport exchangesReducer from './exchangeReducer';\nimport productssReducer from './productsReducer';\nimport sellersReducer from './sellersReducer';\n\nimport sidenavReducer from './sidenavReducer';\nimport userdataReducer from './userdataReducer';\n\nconst reducers = combineReducers({\n sidenavOpen: sidenavReducer,\n clients: clientssReducer,\n products: productssReducer,\n exchanges: exchangesReducer,\n sellers: sellersReducer,\n userdata: userdataReducer,\n campaign: campaignReducer\n})\n\nexport default reducers;\n","import reducers from './reducers';\nimport { createStore, applyMiddleware, compose } from 'redux';\n\nimport ReduxThunk from 'redux-thunk';\n\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\nconst store = createStore( reducers, composeEnhancers( applyMiddleware(ReduxThunk) ) );\n\nexport default store\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './style/global.css';\n\nimport { Provider } from 'react-redux';\n\nimport App from './components/App';\n\nimport store from './store/store';\n\nconst root = (\n \n \n \n )\n\nReactDOM.render( root, document.getElementById('root') );\n"],"sourceRoot":""}