{"version":3,"sources":["theme.ts","constants/routes.ts","components/Sidebar/SidebarItem.tsx","components/Sidebar/sidebar.config.tsx","actions/toolbar.ts","actions/sidebar.tsx","constants/ui.ts","components/Sidebar/Sidebar.tsx","components/Header/Header.tsx","utils/handleError.ts","common/AppInput/AppInput.tsx","common/AppSelect/AppSelect.tsx","common/AppButton/AppButton.tsx","services/http.ts","services/inventory.ts","constants/urls.ts","actions/inventroy.ts","components/Inventory/Inventory.tsx","common/AppTable/AppTable.tsx","components/Inventory/style.tsx","services/sales.ts","components/Inventory/ViewInventory.tsx","components/Sale/styles.tsx","components/Sale/Sale.tsx","services/customer.ts","components/Customer/style.tsx","components/Customer/Customer.tsx","components/Customer/CustomerList.tsx","services/expenses.ts","components/Expenses/AddExpenses.tsx","components/Expenses/ListExpenses.tsx","components/Home/Home.tsx","components/RootRouter.tsx","App.tsx","reducers/sidebar.ts","reducers/toolbar.ts","reducers/inventory.ts","actions/sales.ts","reducers/sales.ts","reducers/index.ts","store.ts","reportWebVitals.ts","components/ErrorBoundary/ErrorBoundary.tsx","index.tsx"],"names":["theme","createMuiTheme","palette","primary","main","custom","fountainBlue","pewterBlue","mirage","primaryGreen","grey","blue","red","ADD_INVENTORY_ITEM","VIEW_INVENTORY_ITEM","SALE","CUSTOMER","VIEW_CUSTOMER","ADD_EXPENSES","VIEW_EXPENSES","useStyles","makeStyles","root","backgroundColor","borderLeft","padding","color","fontWeight","display","justifyContent","alignItems","menuIcon","SidebarItem","depth","depthStep","sidebarItem","onClick","label","Icon","subItems","path","classes","location","useLocation","useState","isCollapsed","setIsCollapsed","sidebarClasses","classNames","pathname","ListItem","className","Array","isArray","prevValue","button","style","paddingLeft","ListItemIcon","ListItemText","expandIcon","length","renderExpandIcon","Collapse","in","timeout","unmountOnExit","List","map","subItem","index","Fragment","Divider","sidebarItems","key","StoreIcon","routes","toolbarTitle","Receipt","PersonAdd","SET_TOOLBAR_TITLE","SIDEBAR_TOGGLE","toggleSidebar","type","DRAWER_WIDTH","width","maxWidth","sidebar","height","border","overflow","drawer","boxShadow","breakpoints","up","flexShrink","drawerPaper","borderRadius","Sidebar","dispatch","useDispatch","history","useHistory","isVisible","useSelector","state","onSidebarItemClick","useCallback","payload","push","renderSidebarItems","renderSidebar","component","aria-labelledby","aria-label","Hidden","smUp","implementation","Drawer","variant","open","onClose","paper","ModalProps","keepMounted","xsDown","appBar","marginLeft","menuButton","marginRight","spacing","Header","title","toolbar","AppBar","position","Toolbar","IconButton","edge","Typography","noWrap","handleError","event","message","text","toast","error","POSITION","BOTTOM_CENTER","AppInput","fullwidth","props","inputClasses","TextField","AppSelect","Select","MenuProps","anchorOrigin","vertical","horizontal","transformOrigin","getContentAnchorEl","AppButton","children","loading","Button","CircularProgress","instance","axios","create","baseURL","postNewInventoryItem","data","http","post","fetchInventoryAPI","get","fetchCategorysAPI","fetchSubCategorysAPI","updateItem","put","addImage","productId","imagePayload","FETCH_INVENTRORY","FETCH_CATEGORYS","FETCH_SUBCATEGORYS","GET_SELECTED_ITEM","fetchCategorys","categorys","fetchSubCategorys","subcategorys","margin","row","marginBottom","container","btnSubmit","Inventory","isLoading","setIsLoading","categoryList","inventory","subcategoryList","image","setImage","useEffect","a","console","log","fetchCats","fetchSubCats","formik","useFormik","initialValues","product","brand","productName","productDescription","category","subCategory","attribute","productSize","productColor","productMinQuantity","productBarcode","purchasePrice","itemQuantity","itemLotNumber","itemExpiryDate","moment","format","price","itemSalesPrice","itemDiscountAmount","itemDiscountPercent","itemOnlinePrice","onSubmit","handleSubmit","formData","values","imageFormData","FormData","append","id","imageData","success","resetForm","Grid","item","xs","md","fullWidth","name","value","onChange","handleChange","InputLabel","labelId","MenuItem","cat","subcat","InputProps","startAdornment","InputAdornment","e","parseInt","target","setFieldValue","roundedvalue","Math","round","Number","EPSILON","handleChangeDiscountPrice","handleChangeDiscountPercent","endAdornment","filePayload","currentTarget","files","fontSize","overflowX","AppTable","checkbox","rows","columns","pageSize","checkboxSelection","onRowClick","page","flexDirection","col","flexWrap","inventoryContainer","detailContainer","flexGrow","imageContainer","paddingRight","detailHeader","detailBody","posPrice","negPrice","txnContainer","btnModalSubmit","float","btnUpdate","search","tableHeadercontainer","formContainer","top","left","transform","alignContent","form","getProductWithQty","ViewInventory","query","setQuery","isTxnLoading","setIsDetailLoading","isUpdateLoading","setIsUpdateLoading","selectedItem","transactionRows","setTransactioRows","rowId","setRowId","productList","setProductList","selectedProduct","setSelectedProduct","imageSrc","setImageSrc","brandName","quantity","fetchProducts","productResponse","salesDetails","productData","detailRows","date","createdAt","sellingPrice","totalPrice","discountAmount","url","searched","handleClose","setModalOpen","modalOpen","salesPrice","discountPercent","handleUpdate","selectAttachFile","Modal","aria-describedby","searchVal","onCancelSearch","filter","toLowerCase","indexOf","field","headerName","flex","rowData","toString","undefined","src","size","itemPurchasePrice","itemMinQuantity","minHeight","header","footer","marginTop","tableContainer","tableFooter","custbtnSubmit","productSearch","lineHeight","formLabel","Sales","isCustomerLoading","setIsCustomerLoading","invoice","setInvoice","productOptions","setProductOptions","customerId","customerName","totalDiscountAmount","totalDiscountPercent","mobile","totalTax","invoiceNumber","salesTotal","extraDiscountAmount","salesDetailInput","renderCell","params","Autocomplete","disableClearable","rowIndex","options","getOptionLabel","option","handleProductSelect","renderInput","placeholder","handleQuantityChange","sortable","handleAddItemClick","handleDeleteItemClick","products","invoiceData","inventoryId","paymentType","_","newItemVal","newSalesValue","rest","getTotalValue","netAmount","reduce","acc","current","Search","response","Error","firstName","middleName","lastName","handleCustomerSearch","reqInputs","reqItem","requestBody","priceBeforeTax","addressContainer","addressHeader","checkboxContainer","btnDelete","listStyles","Customer","addressCount","setAddressCount","customer","email","mobileNumber","phoneNumber","password","rewardsPoints","address","provience","municipality","district","ward","street","hourseNo","defaultAddress","validationSchema","yup","shape","required","matches","handleDefaultAddress","i","boolValue","checked","addresses","handleRemoveAddress","newAddressValue","FormControl","errors","touched","onBlur","handleBlur","FormHelperText","newAddress","handleAddAddressClick","from","FormControlLabel","control","Checkbox","CustomerList","setCustomerLoading","customerList","setCustomerList","customers","phone","postNewExpensesItem","AddExpenses","transactionDate","description","unitPrice","totalAmount","handleQuantity","handleUnitPrice","ListExpenses","refresh","setRefresh","expensesList","setExpensesList","expenses","expensesId","delete","mixins","content","Home","useRouteMatch","CssBaseline","Sale","RootRouter","muiTheme","App","INITIAL_STATE","items","transactionItems","SET_TXN_ITEM","salesItems","discAmount","discPercent","amount","combineReducers","action","requiredItem","find","sales","rowParams","newItem","newTransactionItem","newTxnItems","enhancers","applyMiddleware","thunk","promise","store","createStore","rootReducer","compose","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ErrorBoundary","hasError","this","React","Component","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.91bb4e9a.chunk.js","sourcesContent":["import { createMuiTheme } from '@material-ui/core/styles';\n\nexport const theme = createMuiTheme({\n palette: {\n primary: {\n main: '#222F3C',\n },\n },\n custom: {\n fountainBlue: '#61BEBD',\n pewterBlue: '#91a6bb',\n mirage: '#1c2732',\n primaryGreen: '#67D15A',\n grey: '#eceff1',\n blue: '#1e88e5',\n red: '#e53935',\n },\n});\n","export const HOME = '/';\nexport const ADD_INVENTORY_ITEM = '/add-inventory-item';\nexport const VIEW_INVENTORY_ITEM = '/view-inventory-item';\nexport const SALE = '/sale';\nexport const CUSTOMER = '/customer';\nexport const VIEW_CUSTOMER = '/viewcustomer';\nexport const ADD_EXPENSES = '/add-expenses';\nexport const VIEW_EXPENSES = '/view-expenses';\n","import React, { useState } from 'react';\nimport classNames from 'classnames';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport Collapse from '@material-ui/core/Collapse';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport { Divider } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport { ISidebarItem } from 'types';\nimport { useLocation } from 'react-router-dom';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: 'transparent',\n borderLeft: '3px solid transparent',\n padding: '8px',\n color: theme.custom.pewterBlue,\n fontWeight: 500,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n '&:hover': {\n backgroundColor: theme.custom.mirage,\n color: 'white',\n fontWeight: 600,\n },\n },\n menuIcon: {\n color: theme.custom.pewterBlue,\n },\n}));\n\ninterface ISidebarItemProps {\n depthStep?: number;\n depth?: number;\n sidebarItem: ISidebarItem;\n onClick: (item: ISidebarItem) => void;\n}\n\nconst SidebarItem: React.FC = ({\n depth = 0,\n depthStep = 10,\n sidebarItem,\n onClick,\n}) => {\n const { label, Icon, subItems, path } = sidebarItem;\n const classes = useStyles();\n const location = useLocation();\n\n const [isCollapsed, setIsCollapsed] = useState(true);\n\n const toggleIsCollapsed = () => setIsCollapsed((prevValue) => !prevValue);\n\n const sidebarClasses = classNames({\n 'sidebar-item': true,\n 'sidebar-item--active': path === location.pathname,\n });\n\n const onMenuClick = () => {\n if (Array.isArray(subItems)) {\n toggleIsCollapsed();\n }\n\n onClick(sidebarItem);\n // TODO: - Route handler\n };\n\n const renderExpandIcon = () => {\n let expandIcon = null;\n\n if (Array.isArray(subItems) && subItems.length) {\n expandIcon = !isCollapsed ? (\n \n ) : (\n \n );\n }\n\n return expandIcon;\n };\n\n return (\n <>\n \n
\n {Icon && (\n \n \n \n )}\n \n
\n {renderExpandIcon()}\n
\n \n {Array.isArray(subItems) ? (\n \n {subItems.map((subItem, index) => (\n \n {typeof subItem === 'string' ? (\n \n ) : (\n \n )}\n \n ))}\n \n ) : null}\n \n \n );\n};\n\nexport default SidebarItem;\n","import StoreIcon from '@material-ui/icons/Store';\nimport { ISidebarItem } from 'types';\nimport * as routes from 'constants/routes';\nimport { PersonAdd, Receipt } from '@material-ui/icons';\n\nexport type SIDEBAR_ITEM_DIVIDER = 'SIDEBAR_ITEM_DIVIDER';\n\nexport const sidebarItems: (ISidebarItem | SIDEBAR_ITEM_DIVIDER)[] = [\n {\n key: 'inventory',\n label: 'Inventory',\n Icon: StoreIcon,\n subItems: [\n {\n key: 'add-inventory-item',\n label: 'Add Items',\n path: routes.ADD_INVENTORY_ITEM,\n toolbarTitle: 'Add Items to Inventory',\n },\n {\n key: 'view-inventory-item',\n label: 'Items',\n path: routes.VIEW_INVENTORY_ITEM,\n toolbarTitle: 'Items',\n },\n ],\n },\n {\n key: 'sale',\n label: 'Sale',\n toolbarTitle: 'Sale',\n Icon: Receipt,\n path: routes.SALE,\n },\n {\n key: 'customer',\n label: 'Customer',\n toolbarTitle: 'Customer',\n Icon: PersonAdd,\n // path: routes.CUSTOMER,\n subItems: [\n {\n key: 'customer',\n label: 'Customer Records',\n toolbarTitle: 'Customer',\n path: routes.VIEW_CUSTOMER,\n },\n ],\n },\n\n {\n key: 'expenses',\n label: 'Expenses',\n Icon: Receipt,\n subItems: [\n {\n key: 'add-expenses',\n label: 'Add Expenses',\n path: routes.ADD_EXPENSES,\n toolbarTitle: 'Add Expenses',\n },\n {\n key: 'view-expenses',\n label: 'View Expenses',\n path: routes.VIEW_EXPENSES,\n toolbarTitle: 'View Expenses',\n },\n ],\n },\n];\n","import { IAction } from 'types';\n\nexport const SET_TOOLBAR_TITLE = 'SET_TOOLBAR_TITLE';\n\ninterface ISetToolbarTitleAction extends IAction {\n payload: string;\n}\n\nexport const setToolbarTitle = (title: string): ISetToolbarTitleAction => ({\n type: SET_TOOLBAR_TITLE,\n payload: title,\n});\n\nexport type IToolbarAction = ISetToolbarTitleAction;\n","import { IAction } from 'types';\n\nexport const SIDEBAR_TOGGLE = 'SIDEBAR_TOGGLE';\nexport interface ISidebarAction extends IAction {\n payload: null;\n}\n\nexport const toggleSidebar = () => ({\n type: SIDEBAR_TOGGLE,\n});\n","export const DRAWER_WIDTH = 240;\n","import React, { useCallback } from 'react';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Hidden from '@material-ui/core/Hidden';\nimport Drawer from '@material-ui/core/Drawer';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\n\nimport SidebarItem from './SidebarItem';\nimport { sidebarItems } from './sidebar.config';\nimport { ISidebarItem } from 'types';\nimport { RootState } from 'store';\nimport { setToolbarTitle, toggleSidebar } from 'actions';\nimport { DRAWER_WIDTH } from 'constants/ui';\n\nconst INITIAL_DEPTH = 0;\nconst INITIAL_DEPTH_STEP = 56;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n maxWidth: 360,\n backgroundColor: theme.palette.primary.main,\n padding: '10px 0px',\n },\n sidebar: {\n height: '100vh',\n border: '1px solid rgba(0,0,0,0.1)',\n overflow: 'auto',\n backgroundColor: theme.palette.primary.main,\n },\n drawer: {\n boxShadow:\n '0 2px 2px 0 rgb(0 0 0 / 14%), 0 3px 1px -2px rgb(0 0 0 / 20%), 0 1px 5px 0 rgb(0 0 0 / 12%)',\n [theme.breakpoints.up('sm')]: {\n width: DRAWER_WIDTH,\n flexShrink: 0,\n },\n },\n drawerPaper: {\n width: DRAWER_WIDTH,\n boxShadow: '6px 0px 4px -3px rgba(0, 0, 0, 0.8)',\n border: 'none',\n borderRadius: 'none',\n },\n}));\n\nconst Sidebar: React.FC = () => {\n const classes = useStyles();\n const dispatch = useDispatch();\n const history = useHistory();\n const isVisible = useSelector((state: RootState) => state.sidebar.isVisible);\n\n const onSidebarItemClick = useCallback(\n (sidebarItem: ISidebarItem) => {\n const { path, toolbarTitle } = sidebarItem;\n if (!path) {\n return;\n }\n\n if (toolbarTitle) {\n dispatch(setToolbarTitle(toolbarTitle));\n }\n history.push(path);\n },\n [history, dispatch],\n );\n\n const renderSidebarItems = useCallback(() => {\n return sidebarItems.map((sidebarItem, index) => (\n \n {typeof sidebarItem === 'string' ? (\n \n ) : (\n \n )}\n \n ));\n }, [onSidebarItemClick]);\n\n const renderSidebar = useCallback(\n () => (\n
\n \n {renderSidebarItems()}\n \n
\n ),\n [renderSidebarItems, classes.root, classes.sidebar],\n );\n\n return (\n \n );\n};\n\nexport default Sidebar;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport IconButton from '@material-ui/core/IconButton';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport Typography from '@material-ui/core/Typography';\nimport MenuIcon from '@material-ui/icons/Menu';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { toggleSidebar } from 'actions';\nimport { DRAWER_WIDTH } from 'constants/ui';\nimport { RootState } from 'store';\n\nconst useStyles = makeStyles((theme) => ({\n appBar: {\n boxShadow: 'none',\n backgroundColor: theme.custom.fountainBlue,\n color: 'white',\n [theme.breakpoints.up('sm')]: {\n width: `calc(100% - ${DRAWER_WIDTH}px)`,\n marginLeft: DRAWER_WIDTH,\n },\n },\n menuButton: {\n marginRight: theme.spacing(2),\n [theme.breakpoints.up('sm')]: {\n display: 'none',\n },\n },\n}));\n\nconst Header: React.FC = () => {\n const classes = useStyles();\n const dispatch = useDispatch();\n\n const title = useSelector((state: RootState) => state.toolbar.title);\n\n return (\n \n \n dispatch(toggleSidebar())}\n className={classes.menuButton}\n >\n \n \n \n {title}\n \n \n \n );\n};\n\nexport default Header;\n","import { toast } from 'react-toastify';\n\nconst GENERIC_ERROR_MESSAGE = 'Oops! Something went wrong';\n\n/**\n *\n * @param event Error Object or any event that triggered the error\n * @param message Optional text to display as error message\n */\nexport function handleError(event: any, message?: string) {\n const text = message || GENERIC_ERROR_MESSAGE;\n\n toast.error(text, {\n position: toast.POSITION.BOTTOM_CENTER,\n });\n}\n","import React from 'react';\nimport classNames from 'classnames';\nimport TextField, { TextFieldProps } from '@material-ui/core/TextField';\nimport { makeStyles } from '@material-ui/core';\n\ntype IAppInputProps = {\n fullwidth?: boolean;\n} & TextFieldProps;\n\n// const useStyles = makeStyles((theme) => ({\n// input: {\n// height: '2rem',\n// },\n// }));\n\nconst AppInput: React.FC = ({ fullwidth, ...props }) => {\n const inputClasses = classNames({\n 'w-100': fullwidth,\n });\n //const selectClasses = useStyles();\n return ;\n};\n\nexport default AppInput;\n","import React from 'react';\nimport classNames from 'classnames';\nimport Select, { SelectProps } from '@material-ui/core/Select';\nimport { makeStyles } from '@material-ui/core';\n\ntype IAppSelectProps = {\n fullwidth?: boolean;\n} & SelectProps;\n\n// const useStyles = makeStyles((theme) => ({\n// select: {\n// height: '2rem',\n// },\n// }));\n\nconst AppSelect: React.FC = ({ fullwidth = false, ...props }) => {\n // const selectClasses = useStyles();\n const inputClasses = classNames({\n 'w-100': fullwidth,\n });\n return (\n \n );\n};\n\nexport default AppSelect;\n","import React from 'react';\nimport Button, { ButtonProps } from '@material-ui/core/Button';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\ntype IAppButtonProps = {\n loading?: boolean;\n} & ButtonProps;\n\nconst AppButton: React.FC = ({\n children,\n loading = false,\n className,\n ...props\n}) => {\n return (\n \n );\n};\n\nexport default AppButton;\n","import axios from 'axios';\n\n// const DEV_URL = 'http://localhost:4000/api/v1';\nconst DEV_URL = 'https://blushrush-dev-api.sunai.xyz/api/v1';\nconst PROD_URL = 'https://blushrush-dev-api.sunai.xyz/api/v1';\n\nconst API_URL = process.env.NODE_ENV === 'production' ? PROD_URL : DEV_URL;\n\nconst instance = axios.create({\n baseURL: API_URL,\n});\n\nexport default instance;\n","import http from './http';\n\nimport * as urls from 'constants/urls';\nimport { IInventoryItem } from 'types';\n\nexport const postNewInventoryItem = (data: IInventoryItem) => {\n return http.post(urls.POST_NEW_INVENTORY_ITEM, data);\n};\n\nexport const fetchInventoryAPI = () => {\n return http.get(urls.GET_INVENTORY_ITEMS)\n \n}\nexport const fetchCategorysAPI = () => {\n return http.get(urls.GET_PRODUCT_CATEGORYS)\n \n}\nexport const fetchSubCategorysAPI = () => {\nreturn http.get(urls.GET_PRODUCT_SUBCATEGORYS)\n\n}\n\nexport const updateItem = (data:any) => {\n return http.put(urls.UPDATE_ITEM, data)\n}\n\nexport const addImage = (productId : number | string, imagePayload: any) => {\n return http.post(`/image/?productId=${productId}&isDefault=true`, imagePayload)\n}\n\nexport const getImage = (productId: number | string) => {\n return http.get(`/image/find/${productId}`);\n}\n\n","export const POST_NEW_INVENTORY_ITEM = '/product';\nexport const GET_INVENTORY_ITEMS = '/product';\nexport const GET_PRODUCT_CATEGORYS = '/categorys';\nexport const GET_PRODUCT_SUBCATEGORYS = '/subcategory';\nexport const POST_NEW_CUSTOMER = '/customer';\nexport const GET_CUSTOMERS = '/customer';\nexport const POST_SALES = '/sales/';\nexport const GET_SALES = '/sales';\nexport const GET_INVOICE_NUM = '/invoice';\nexport const UPDATE_ITEM = '/item/updateItem';\nexport const POST_NEW_EXPENSES_ITEM = '/expenses';\nexport const GET_NEW_EXPENSES_ITEM = '/expenses';\n","import { IAction } from \"types\";\n\nexport const FETCH_INVENTRORY = \"FETCH_INVENTORY\";\nexport const FETCH_CATEGORYS = \"FETCH_CATEORYS\";\nexport const FETCH_SUBCATEGORYS = \"FETCH_SUBCATEORYS\";\nexport const GET_SELECTED_ITEM = \"GET_SELECTED_ITEM\";\n\n\nexport interface IInventoryAction extends IAction {\n payload: any\n}\n\nexport const fetchInventory = (items: any) => ({\n type: FETCH_INVENTRORY,\n payload: items\n})\n\nexport const fetchCategorys = (categorys: any) => ({\n type: FETCH_CATEGORYS,\n payload: categorys\n})\nexport const fetchSubCategorys = (subcategorys: any) => ({\n type: FETCH_SUBCATEGORYS,\n payload: subcategorys\n})\nexport const getSelectedItem = (id: any) => ({\n type: GET_SELECTED_ITEM,\n payload: id\n})\n","import React, { useEffect, useState } from 'react';\nimport { useFormik } from 'formik';\nimport { toast } from 'react-toastify';\nimport Grid from '@material-ui/core/Grid';\nimport { InputAdornment, MenuItem } from '@material-ui/core';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport { makeStyles } from '@material-ui/core/styles';\n\nimport { handleError } from 'utils';\nimport { IInventoryItem } from 'types';\nimport AppInput from 'common/AppInput';\nimport AppSelect from 'common/AppSelect';\nimport AppButton from 'common/AppButton';\nimport {\n addImage,\n fetchCategorysAPI,\n fetchSubCategorysAPI,\n postNewInventoryItem,\n} from 'services/inventory';\nimport * as routes from 'constants/routes';\nimport { useHistory } from 'react-router';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchCategorys, fetchSubCategorys } from 'actions/inventroy';\nimport { ControlPointSharp } from '@material-ui/icons';\nimport { RootState } from 'store';\nimport moment from 'moment';\n\nconst useStyles = makeStyles((theme) => ({\n title: {\n margin: '0px 0px 4px',\n color: 'grey',\n },\n row: {\n marginBottom: '24px',\n },\n container: {\n margin: '8px',\n backgroundColor: 'white',\n padding: '30px',\n height: '100%',\n borderRadius: '4px',\n },\n btnSubmit: {\n backgroundColor: theme.custom.primaryGreen,\n marginRight: '16px',\n color: 'white',\n },\n}));\n\nconst Inventory: React.FC = () => {\n const classes = useStyles();\n const [isLoading, setIsLoading] = useState(false);\n const history = useHistory();\n const dispatch = useDispatch();\n\n const categoryList = useSelector((state: RootState) => state.inventory.categorys);\n const subcategoryList = useSelector((state: RootState) => state.inventory.subcategorys);\n const [image, setImage] = useState('');\n\n useEffect(() => {\n async function fetchCats() {\n let categorys = await fetchCategorysAPI();\n\n dispatch(fetchCategorys(categorys.data.data));\n console.log('CATEGORYS', categorys.data.data);\n }\n async function fetchSubCats() {\n let subcategorys = await fetchSubCategorysAPI();\n\n dispatch(fetchSubCategorys(subcategorys.data.data));\n console.log('SUBCATEGORYS', subcategorys.data.data);\n }\n\n fetchCats();\n fetchSubCats();\n }, [dispatch]);\n\n const handleChangeDiscountPrice = (e: any) => {\n const value = parseInt(e.target.value, 10);\n formik.setFieldValue('price.itemDiscountAmount', value);\n let { itemDiscountAmount, itemDiscountPercent, itemSalesPrice } = formik.values.price;\n\n itemDiscountPercent = (value / itemSalesPrice) * 100;\n let roundedvalue = Math.round((itemDiscountPercent + Number.EPSILON) * 100) / 100;\n\n formik.setFieldValue('price.itemDiscountPercent', roundedvalue);\n };\n const handleChangeDiscountPercent = (e: any) => {\n const value = parseInt(e.target.value, 10);\n formik.setFieldValue('price.itemDiscountPercent', value);\n let { itemDiscountAmount, itemDiscountPercent, itemSalesPrice } = formik.values.price;\n\n itemDiscountAmount = (value / 100) * itemSalesPrice;\n let roundedvalue = Math.round((itemDiscountAmount + Number.EPSILON) * 100) / 100;\n\n formik.setFieldValue('price.itemDiscountAmount', roundedvalue);\n };\n\n const formik = useFormik({\n initialValues: {\n product: {\n brand: 1,\n productName: '',\n productDescription: '',\n category: 0,\n subCategory: 0,\n },\n attribute: {\n productSize: '',\n productColor: '',\n productMinQuantity: 0,\n productBarcode: '',\n },\n inventory: {\n purchasePrice: 0,\n itemQuantity: 0,\n itemLotNumber: '',\n itemExpiryDate: moment().format('YYYY-MM-DD'),\n },\n\n price: {\n itemSalesPrice: 0,\n itemDiscountAmount: 0,\n itemDiscountPercent: 0,\n itemOnlinePrice: 1,\n },\n },\n onSubmit: () => {},\n });\n\n const handleSubmit = async () => {\n const formData = formik.values;\n console.log('Request to be sent: ', { formData });\n\n try {\n setIsLoading(true);\n const { data } = await postNewInventoryItem(formData);\n let imageFormData = new FormData();\n imageFormData.append('file', image);\n const imageData = await addImage(data.data.id, imageFormData);\n console.log(imageData.data.data);\n toast.success('Success', {\n position: toast.POSITION.BOTTOM_CENTER,\n });\n formik.resetForm();\n history.push(routes.VIEW_INVENTORY_ITEM);\n } catch (err) {\n handleError(err);\n } finally {\n setIsLoading(false);\n }\n };\n\n const selectAttachFile = (e: any) => {\n const filePayload = e.currentTarget.files[0];\n setImage(filePayload);\n };\n\n return (\n
\n

Brand

\n \n {/* \n \n */}\n {/* \n \n */}\n {/*
{JSON.stringify(formik.values)}
*/}\n
\n\n

Product

\n\n \n \n \n \n \n \n \n\n \n Category \n \n \n None\n \n {categoryList.map((cat: any) => (\n \n {cat?.name}\n \n ))}\n \n \n \n Sub category\n \n \n None\n \n {subcategoryList.map((subcat: any) => (\n \n {subcat.name}\n \n ))}\n \n \n \n

Item

\n \n \n \n \n\n \n Size \n \n Large\n Medium\n Small\n \n \n\n \n NRs,\n }}\n />\n \n \n NRs,\n }}\n />\n \n \n \n \n handleChangeDiscountPrice(e)}\n InputProps={{\n startAdornment: NRs,\n }}\n />\n \n\n \n handleChangeDiscountPercent(e)}\n InputProps={{\n endAdornment: %,\n }}\n />\n \n\n \n \n \n \n

Inventory

\n \n \n \n \n \n \n \n \n Expiry date \n \n \n \n \n \n \n \n\n \n \n \n \n\n
\n \n Submit\n \n formik.resetForm()}>\n Reset\n \n
\n
\n );\n};\n\nexport default Inventory;\n","import React from 'react';\nimport { DataGrid, DataGridProps } from '@material-ui/data-grid';\nimport { makeStyles } from '@material-ui/core';\n\ntype IAppTableProps = {\n checkbox?: boolean;\n onRowClick?: any;\n} & DataGridProps;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n fontSize: '14px',\n height: '90%',\n overflowX: 'hidden',\n '.window': {\n overflowX: 'hidden',\n },\n '.MuiTablePagination-root': {\n overflowX: 'hidden',\n },\n },\n}));\n\nconst AppTable: React.FC = ({ checkbox = false, ...props }) => {\n const classes = useStyles();\n return (\n \n );\n};\n\nexport default AppTable;\n","import React from 'react';\nimport { Button, Grid, InputLabel, makeStyles, MenuItem, Modal } from '@material-ui/core';\nconst useStyles = makeStyles((theme) => ({\n page: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'stretch',\n height: 'calc(100vh - 50px)',\n width: '100%',\n },\n row: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'flex-start',\n },\n col: {\n display: 'flex',\n flexDirection: 'column',\n flexWrap: 'nowrap',\n alignItems: 'stretch',\n height: '100%',\n width: '100%',\n },\n inventoryContainer: {\n margin: '8px',\n backgroundColor: 'white',\n padding: '16px',\n width: '100%',\n borderRadius: '4px',\n boxShadow: '5px 5px 5px 0px rgba(0,0,0,0.25)',\n },\n detailContainer: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n margin: '8px',\n backgroundColor: 'white',\n padding: '16px',\n flexWrap: 'nowrap',\n flexGrow: 0,\n width: '100%',\n borderRadius: '4px',\n boxShadow: '5px 5px 5px 0px rgba(0,0,0,0.25)',\n },\n imageContainer: {\n paddingRight: '8px',\n },\n detailHeader: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n marginBottom: '8px',\n },\n detailBody: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n },\n\n posPrice: {\n color: theme.custom.primaryGreen,\n padding: '0px 3px',\n },\n negPrice: {\n color: theme.custom.red,\n padding: '0px 3px',\n },\n txnContainer: {\n display: 'flex',\n flexDirection: 'column',\n margin: '8px',\n backgroundColor: 'white',\n flexWrap: 'nowrap',\n padding: '16px',\n\n width: '100%',\n flexGrow: 4,\n borderRadius: '4px',\n boxShadow: '5px 5px 5px 0px rgba(0,0,0,0.25)',\n },\n\n btnSubmit: {\n backgroundColor: theme.custom.primaryGreen,\n marginRight: '16px',\n color: 'white',\n height: '40px',\n },\n btnModalSubmit: {\n backgroundColor: theme.custom.primaryGreen,\n margin: '16px 0px',\n color: 'white',\n height: '40px',\n float: 'right',\n },\n btnUpdate: {\n backgroundColor: theme.custom.blue,\n margin: '16px opx',\n color: 'white',\n height: '40px',\n float: 'right',\n },\n\n search: {\n height: '40px',\n },\n\n tableHeadercontainer: {\n margin: '8px 4px',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n\n formContainer: {\n position: 'absolute',\n display: 'flex',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n backgroundColor: 'white',\n alignContent: 'center',\n padding: '30px',\n\n borderRadius: '4px',\n },\n form: {\n width: '100%',\n },\n}));\n\nexport default useStyles;\n","import * as urls from \"constants/urls\";\nimport { ICustomer } from \"types/ICustomer\";\nimport http from \"./http\";\n\n\nexport const getInvoiceNumber = () => {\n return http.get(urls.GET_INVOICE_NUM);\n}\nexport const postSales = (data:any) => {\n return http.post(urls.POST_SALES, data);\n}\n\nexport const getSalesDetails = (id:any) => {\n return http.get(`/sales/salesdetails/${id}`)\n}\n\nexport const getProductWithQty = (id:any) =>{\n return http.get(`/product/${id}`)\n}\n\n","import React, { useEffect } from 'react';\nimport { Grid, InputAdornment, makeStyles, MenuItem, Modal, Table } from '@material-ui/core';\nimport { useState } from 'react';\nimport { DataGrid, GridCellParams, GridColDef, GridRowParams } from '@material-ui/data-grid';\nimport AppTable from 'common/AppTable';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { fetchInventory, getSelectedItem } from 'actions/inventroy';\nimport { addImage, fetchInventoryAPI, getImage, updateItem } from 'services/inventory';\nimport AppButton from 'common/AppButton';\nimport { Add } from '@material-ui/icons';\nimport { useHistory } from 'react-router';\nimport * as routes from 'constants/routes';\nimport SearchBar from 'material-ui-search-bar';\nimport useStyles from './style';\nimport AppInput from 'common/AppInput';\nimport AppSelect from 'common/AppSelect';\nimport { RootState } from 'store';\nimport { getProductWithQty, getSalesDetails } from 'services/sales';\nimport { toast } from 'react-toastify';\nimport { handleError } from 'utils';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { useFormik } from 'formik';\nimport { CrossIcon } from 'react-select/src/components/indicators';\n\ninterface ISalesDetails {\n id?: string;\n type: string;\n date: string;\n itemQuantity: number;\n //unitPrice: number;\n // discountPercent: number;\n discountAmount: number;\n sellingPrice: number;\n totalPrice: number;\n //status: string;\n}\n\nconst ViewInventory: React.FC = () => {\n const dispatch = useDispatch();\n\n const classes = useStyles();\n const [query, setQuery] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [isTxnLoading, setIsTxnLoading] = useState(false);\n const [isDetailLoading, setIsDetailLoading] = useState(false);\n const [isUpdateLoading, setIsUpdateLoading] = useState(false);\n //const productList = useSelector((state: RootState) => state.inventory.items);\n const selectedItem = useSelector((state: RootState) => state.inventory.selectedItem);\n const [transactionRows, setTransactioRows] = useState([]);\n const [rowId, setRowId] = useState('');\n const [productList, setProductList] = useState([]);\n const [selectedProduct, setSelectedProduct] = useState({});\n const [imageSrc, setImageSrc] = useState('');\n const [image, setImage] = useState('');\n const rows = productList.map((product: any) => {\n return {\n id: product.id,\n item: `${product?.brand?.brandName} - ${product?.productName}`,\n quantity: product?.attribute[0]?.inventory[0]?.itemQuantity,\n };\n });\n\n useEffect(() => {\n async function fetchProducts() {\n let { data } = await fetchInventoryAPI();\n setProductList(data.data);\n }\n\n fetchProducts();\n }, [dispatch, rowId]);\n\n useEffect(() => {\n (async () => {\n setIsDetailLoading(true);\n const { data } = await getSalesDetails(rowId);\n const imageData = await getImage(rowId);\n console.log(imageData);\n\n const productResponse = await getProductWithQty(rowId);\n const salesDetails = data.data;\n const productData = productResponse.data.data;\n const detailRows = salesDetails.map(\n ({\n id,\n name,\n createdAt,\n sellingPrice,\n itemQuantity,\n totalPrice,\n discountAmount,\n }: any): Record => ({\n id,\n type: 'Sale',\n date: createdAt,\n sellingPrice: sellingPrice,\n itemQuantity: itemQuantity,\n totalPrice: totalPrice,\n //unitPrice: productData?.item[0].salesPrice,\n // status:\n // parseInt(productData?.item[0].itemQuantity, 10) <\n // parseInt(productData?.item[0].itemMinQuantity, 10)\n // ? 'Not Enough'\n // : 'Enough',\n // discountPercent: productData?.item[0]?.itemDiscountPercent,\n discountAmount: discountAmount,\n }),\n );\n setTransactioRows(detailRows);\n setSelectedProduct(productData);\n setImageSrc(imageData.data?.data[0]?.url);\n })();\n }, [dispatch, rowId, productList]);\n\n const [searched, setSearched] = useState('');\n\n const history = useHistory();\n\n const columns = [\n { field: 'item', headerName: 'ITEM', flex: 1 },\n { field: 'quantity', headerName: 'Quantity', flex: 1, type: 'number' },\n ];\n\n const search = (rows: any) => {\n return rows.filter((row: any) => row.item?.toLowerCase().indexOf(query.toLowerCase()) > -1);\n };\n\n const cancelSearch = () => {\n setQuery('');\n //search(searched);\n };\n\n const handleAddItem = () => {\n history.push(routes.ADD_INVENTORY_ITEM);\n };\n\n const handleModalOpen = () => {\n setModalOpen(true);\n formik.values.salesPrice = parseInt(selectedProduct?.item[0]?.itemSalesPrice, 10);\n formik.values.itemQuantity = parseInt(selectedProduct?.item[0]?.inventory?.itemQuantity, 10);\n formik.values.discountAmount = parseInt(selectedProduct?.item[0]?.itemDiscountAmount, 10);\n formik.values.discountPercent = parseInt(selectedProduct?.item[0]?.itemDiscountPercent, 10);\n };\n\n const handleClose = () => {\n setModalOpen(false);\n };\n\n const handleRowClick = (rowData: GridRowParams, event: React.MouseEvent) => {\n setRowId(rowData.id.toString());\n //dispatch(getSelectedItem(rowData.id));\n };\n\n const [modalOpen, setModalOpen] = useState(false);\n\n const txncolumns: GridColDef[] = [\n { field: 'type', headerName: 'Type', flex: 1 },\n {\n field: 'date',\n headerName: 'Date',\n flex: 1,\n },\n { field: 'itemQuantity', headerName: 'Quantity', flex: 1 },\n { field: 'sellingPrice', headerName: 'Selling Price', flex: 1 },\n { field: 'discountAmount', headerName: 'Discount Amount', flex: 1 },\n { field: 'totalPrice', headerName: 'Total Price', flex: 1 },\n ];\n\n const formik = useFormik({\n initialValues: {\n salesPrice: 0,\n itemQuantity: 0,\n discountAmount: 0,\n discountPercent: 0,\n productId: 0,\n },\n onSubmit: () => {},\n });\n\n const handleUpdate = () => {\n let { values } = formik;\n values.productId = parseInt(selectedProduct?.id, 10);\n (async () => {\n try {\n setIsUpdateLoading(true);\n let imageFormData = new FormData();\n imageFormData.append('file', image);\n await updateItem(values);\n await addImage(values.productId, imageFormData);\n toast.success('Success', {\n position: toast.POSITION.BOTTOM_CENTER,\n });\n\n let { data } = await fetchInventoryAPI();\n setProductList(data.data);\n formik.resetForm();\n handleClose();\n } catch (error) {\n handleError(error);\n } finally {\n setIsUpdateLoading(false);\n }\n })();\n };\n\n const selectAttachFile = (e: any) => {\n const filePayload = e.currentTarget.files[0];\n setImage(filePayload);\n };\n\n const renderUpdataModal = () => {\n return (\n \n \n
\n

{selectedItem?.productName}

\n\n \n \n \n \n NRs,\n }}\n />\n \n\n \n NRs,\n }}\n />\n \n \n %,\n }}\n />\n \n\n \n \n \n\n
\n \n Submit\n \n
\n
\n
\n \n );\n };\n\n return (\n <>\n {renderUpdataModal()}\n
\n \n \n \n \n + Add Item\n \n \n \n setQuery(searchVal)}\n onCancelSearch={() => cancelSearch()}\n />\n \n \n\n \n \n
\n \n {selectedProduct && selectedProduct.item && (\n <>\n
\n
\n {imageSrc !== undefined && (\n \n \n \n )}\n
\n
\n \n

{selectedProduct?.productName}

\n {/*

{`${selectedItem?.brand?.brandName} - ${selectedItem?.productName}`}

*/}\n \n Update Item\n \n
\n\n \n
\n
\n Sale Price:{' '}\n

\n {selectedProduct?.item[0]?.itemSalesPrice}\n

{' '}\n
\n
\n Purchase Price:{' '}\n

\n {selectedProduct?.item[0]?.itemPurchasePrice}\n

{' '}\n
\n
\n
\n
\n Stock Quantity:{' '}\n \n parseInt(selectedProduct?.item[0]?.inventory?.itemMinQuantity, 10)\n ? classes.posPrice\n : classes.negPrice\n }\n >\n {selectedProduct?.item[0]?.inventory?.itemQuantity}\n

{' '}\n
\n
\n Stock value:{' '}\n

\n {selectedProduct?.item[0]?.inventory?.itemQuantity *\n selectedProduct?.item[0]?.itemSalesPrice}\n

{' '}\n
\n
\n
\n
\n
\n \n )}\n
\n\n \n

Transactions

\n {isTxnLoading ? (\n <>\n \n \n ) : (\n \n )}\n
\n
\n
\n \n );\n};\n\nexport default ViewInventory;\n","import { Button, Grid, InputLabel, makeStyles, MenuItem, Modal } from '@material-ui/core';\nimport React from 'react';\n\nconst useStyles = makeStyles((theme) => ({\n container: {\n margin: '8px',\n backgroundColor: 'white',\n padding: '30px',\n minHeight: 'calc(100vh - 50px)',\n borderRadius: '4px',\n },\n formContainer: {\n position: 'absolute',\n display: 'flex',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n backgroundColor: 'white',\n alignContent: 'center',\n padding: '30px',\n maxWidth: '480px',\n borderRadius: '4px',\n },\n form: {\n width: '100%',\n },\n header: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n marginBottom: '16px',\n alignItems: 'flex-start',\n },\n footer: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n marginTop: '16px',\n },\n row: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'baseline',\n justifyContent: 'space-between',\n marginBottom: '8px',\n },\n tableContainer: {\n height: '400px',\n },\n tableFooter: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n },\n btnSubmit: {\n backgroundColor: theme.custom.primaryGreen,\n margin: '16px 0px',\n color: 'white',\n },\n custbtnSubmit: {\n backgroundColor: theme.custom.primaryGreen,\n margin: '16px 0px',\n color: 'white',\n float: 'right',\n },\n productSearch: {\n width: '100%',\n lineHeight: 'initial',\n fontSize: '14px',\n },\n formLabel: {\n fontWeight: 600,\n marginRight: '24px',\n },\n}));\n\nexport default useStyles;\n","import { useFormik } from 'formik';\nimport { toast } from 'react-toastify';\nimport { useHistory } from 'react-router';\nimport React, { useEffect, useState } from 'react';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport PersonAdd from '@material-ui/icons/PersonAdd';\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport { InputLabel, MenuItem } from '@material-ui/core';\n\nimport { handleError } from 'utils';\nimport AppInput from 'common/AppInput';\nimport AppTable from 'common/AppTable';\nimport AppButton from 'common/AppButton';\nimport AppSelect from 'common/AppSelect';\nimport * as routes from 'constants/routes';\nimport { fetchInventoryAPI } from 'services/inventory';\n\nimport useStyles from './styles';\nimport moment from 'moment';\nimport { Search } from '@material-ui/icons';\nimport { getCustomerByMobile } from 'services/customer';\nimport { getInvoiceNumber, postSales } from 'services/sales';\n\ninterface ISale {\n id?: number;\n productId: number;\n productName?: string;\n itemQuantity: number;\n salesPrice: number;\n discountAmount: number;\n discountPercent: number;\n invoiceNumber?: number;\n brand?: number;\n inventoryId?: number;\n sellingPrice?: number;\n totalPrice?: number;\n paymentType?: string;\n}\n\ninterface IFormInitialValues {\n salesDetailInput: ISale[];\n totalTax: number;\n invoiceNumber?: number;\n date: string | null;\n totalDiscountAmount: number;\n totalDiscountPercent: number;\n salesTotal?: number;\n mobile: string;\n customerId?: number;\n customerName?: string;\n extraDiscountAmount?:number;\n}\n\nconst Sales: React.FC = () => {\n const classes = useStyles();\n const history = useHistory();\n\n const [modalOpen, setModalOpen] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isCustomerLoading, setIsCustomerLoading] = useState(false);\n const [invoice, setInvoice] = useState(0);\n\n const [productOptions, setProductOptions] = useState([]);\n\n const formik = useFormik({\n initialValues: {\n customerId: 0,\n customerName: '',\n totalDiscountAmount: 0,\n totalDiscountPercent: 0,\n mobile: '',\n totalTax: 0,\n invoiceNumber: 0,\n date: moment().format('YYYY-MM-DD'),\n salesTotal: 0,\n extraDiscountAmount: 0,\n salesDetailInput: [\n {\n id: 0,\n productId: 0,\n itemQuantity: 0,\n salesPrice: 0,\n discountAmount: 0,\n discountPercent: 0,\n sellingPrice: 0,\n totalPrice: 0,\n },\n ],\n },\n onSubmit: () => {},\n });\n\n const columns = [\n {\n field: 'product',\n headerName: 'Product',\n flex: 1,\n renderCell: function renderCell(params: any) {\n return (\n option.productName}\n onChange={handleProductSelect(params.rowIndex)}\n renderInput={(params: any) => }\n />\n );\n },\n },\n {\n field: 'itemQuantity',\n headerName: 'Quantity',\n type: 'number',\n width: 120,\n renderCell: function renderCell(params: any) {\n return (\n \n );\n },\n },\n {\n field: 'salesPrice',\n headerName: 'Unit Price',\n type: 'number',\n width: 120,\n renderCell: function renderCell(params: any) {\n return {formik.values.salesDetailInput[params.rowIndex]?.salesPrice};\n },\n },\n {\n field: 'discountAmount',\n headerName: 'Discount Amount',\n width: 150,\n renderCell: function renderCell(params: any) {\n return {formik.values.salesDetailInput[params.rowIndex]?.discountAmount};\n },\n },\n {\n field: 'discountPercent',\n headerName: 'Discount %',\n width: 150,\n renderCell: function renderCell(params: any) {\n return {formik.values.salesDetailInput[params.rowIndex]?.discountPercent};\n },\n },\n { field: 'totalPrice', headerName: 'Amount', width: 100 },\n {\n field: 'add',\n headerName: 'Actions',\n flex: 1,\n sortable: false,\n renderCell: function renderCell(params: any) {\n return (\n <>\n handleAddItemClick()}>\n \n \n {formik.values.salesDetailInput.length > 1 ? (\n handleDeleteItemClick(params.rowIndex)}\n >\n \n \n ) : null}\n \n );\n },\n },\n ];\n\n useEffect(() => {\n (async () => {\n try {\n setIsLoading(true);\n const { data } = await fetchInventoryAPI();\n\n const products = data.data;\n\n const invoiceData = await getInvoiceNumber();\n const invoice = invoiceData.data.data.id;\n\n const productOptions = products.map(\n ({ id, brand, productName, attribute }: any): Record => ({\n id,\n productName: `${brand.brandName} - ${productName}`,\n productId: parseInt(id, 10),\n itemQuantity: 0,\n salesPrice: attribute[0]?.inventory[0].price.itemSalesPrice,\n discountAmount: attribute[0]?.inventory[0].price.itemDiscountAmount,\n discountPercent: attribute[0]?.inventory[0].price.itemDiscountPercent,\n brand: parseInt(brand.id, 10),\n invoiceNumber: 0,\n inventoryId: parseInt(attribute[0]?.inventory[0].id, 10),\n sellingPrice: 0,\n totalPrice: 0,\n paymentType: 'Cash',\n }),\n );\n\n setProductOptions(productOptions);\n setInvoice(invoice);\n } catch (err) {\n handleError(err);\n } finally {\n setIsLoading(false);\n }\n })();\n }, []);\n\n const handleProductSelect = (index: number) => (_: React.ChangeEvent, newItemVal: any) => {\n const newSalesValue = [...formik.values.salesDetailInput];\n let { id, ...rest } = newItemVal;\n rest.id = index;\n newSalesValue[index] = rest;\n\n formik.setFieldValue('salesDetailInput', newSalesValue);\n formik.setFieldValue('invoiceNumber', invoice);\n };\n\n const handleAddItemClick = () => {\n const newSalesValue = [...formik.values.salesDetailInput];\n newSalesValue.push({\n id: newSalesValue.length + 1,\n productId: 0,\n itemQuantity: 0,\n salesPrice: 0,\n discountAmount: 0,\n discountPercent: 0,\n });\n\n formik.setFieldValue('salesDetailInput', newSalesValue);\n };\n\n const handleDeleteItemClick = (rowIndex: number): void => {\n const newSalesValue = formik.values.salesDetailInput.filter((_, index) => index !== rowIndex);\n formik.setFieldValue('salesDetailInput', newSalesValue);\n };\n\n const handleQuantityChange = (index: number) => (event: React.ChangeEvent) => {\n const row = formik.values.salesDetailInput[index];\n const itemQuantity = parseInt(event.target.value, 10);\n\n // formik.handleChange(event);\n formik.setFieldValue(`salesDetailInput[${index}].itemQuantity`, itemQuantity);\n\n const { salesPrice, discountAmount } = row;\n\n if (!itemQuantity || !salesPrice) {\n return;\n }\n const totalPrice = itemQuantity * (salesPrice - discountAmount);\n const sellingPrice = salesPrice - discountAmount;\n\n formik.setFieldValue(`salesDetailInput[${index}].totalPrice`, totalPrice);\n formik.setFieldValue(`salesDetailInput[${index}].sellingPrice`, sellingPrice);\n };\n\n const handleModalClose = () => {\n // TODO: - Reset the customer fields\n setModalOpen(false);\n };\n\n const handleCustomerSubmit = () => {\n // TODO: - From submission\n console.log(formik.values);\n };\n\n const handleCustomerSearch = () => {\n const mobile = formik.values.mobile;\n (async () => {\n try {\n setIsCustomerLoading(true);\n let response = await getCustomerByMobile(mobile);\n if (response.data.data === null) {\n throw new Error();\n }\n formik.setFieldValue('customerId', parseInt(response.data.data.id, 10));\n formik.setFieldValue(\n 'customerName',\n `${response.data.data.firstName} ${response.data.data.middleName} ${response.data.data.lastName}`,\n );\n console.log(response);\n } catch (err) {\n handleError(err, 'Customer Not Found. Please add new customer!');\n } finally {\n setIsCustomerLoading(false);\n }\n })();\n };\n\n const handleSalesSubmit = () => {\n let { values } = formik;\n const reqInputs = values.salesDetailInput.map(({ productName, id, ...reqItem }) => {\n reqItem.invoiceNumber = formik.values.invoiceNumber;\n return reqItem;\n });\n values = { ...values, salesDetailInput: reqInputs, salesTotal: getTotalValue() };\n const { customerName, mobile, date, ...requestBody } = values;\n const priceBeforeTax = Number(requestBody.salesTotal)/(1+ 0.01*requestBody.totalTax);\n requestBody.totalTax = Number(requestBody.salesTotal)-priceBeforeTax ; \n //sending tax amount instead of tax percentage\n \n console.log(requestBody);\n (async () => {\n try {\n setIsLoading(true);\n await postSales(requestBody);\n toast.success('Success', {\n position: toast.POSITION.BOTTOM_CENTER,\n });\n formik.resetForm();\n history.push(routes.VIEW_INVENTORY_ITEM);\n } catch (err) {\n handleError(err);\n } finally {\n setIsLoading(false);\n }\n })();\n };\n\n const getTotalValue = () => {\n const { salesDetailInput, totalTax } = formik.values;\n\n if ( salesDetailInput.length <= 0) {\n return 0;\n }\n\n const totalAmount = salesDetailInput.reduce((acc, current) => {\n const amountVal = current?.totalPrice || 0;\n return acc + amountVal;\n }, 0);\n\n const netAmount = totalAmount * (1 + totalTax / 100);\n const salesTotal = Math.round((netAmount + Number.EPSILON) * 100) / 100;\n //formik.setFieldValue('salesTotal', salesTotal);\n return salesTotal;\n };\n\n return (\n <>\n
\n
\n
\n \n \n handleCustomerSearch()} />\n \n history.push(routes.CUSTOMER)}\n style={{ margin: '0px' }}\n // loading={isLoading}\n >\n \n \n
\n
\n \n Customer\n \n \n
\n\n
\n
\n \n Invoice Number\n \n \n
\n
\n \n Date\n \n \n
\n
\n
\n\n
\n \n
\n\n
\n \n Save Transaction\n \n
\n
\n Tax: \n \n 10%\n 15%\n 0%\n \n
\n
\n Total:\n {getTotalValue()}\n
\n
\n
\n
\n \n );\n};\n\nexport default Sales;\n","import * as urls from \"constants/urls\";\nimport { ICustomerInput } from \"types/ICustomer\";\nimport http from \"./http\";\n\nexport const postCustomerCreate = (data: ICustomerInput) => {\n return http.post(urls.POST_NEW_CUSTOMER, data)\n}\nexport const getCustomerByMobile = (data: string) => {\n return http.get(`/customer/${data}`);\n}\nexport const getCustomers = () => {\n return http.get(urls.GET_CUSTOMERS);\n}\n\n","import React from 'react';\nimport { Button, Grid, InputLabel, makeStyles, MenuItem, Modal } from '@material-ui/core';\nexport const useStyles = makeStyles((theme) => ({\n title: {\n margin: '0px 0px 4px',\n color: 'grey',\n },\n row: {\n marginBottom: '24px',\n },\n container: {\n margin: '8px',\n backgroundColor: 'white',\n padding: '30px',\n height: '100%',\n borderRadius: '4px',\n },\n addressContainer: {\n backgroundColor: theme.custom.grey,\n display: 'flex',\n flexDirection: 'row',\n padding: '8px 16px',\n margin: '8px',\n },\n btnSubmit: {\n backgroundColor: theme.custom.primaryGreen,\n marginRight: '16px',\n color: 'white',\n },\n addressHeader: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n formContainer: {\n position: 'relative',\n },\n checkboxContainer: {\n position: 'absolute',\n margin: '8px',\n },\n btnDelete: {\n backgroundColor: theme.custom.red,\n margin: '16px',\n color: 'white',\n },\n footer: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n margin: '8px',\n },\n}));\n\nexport const listStyles = makeStyles((theme) => ({\n container: {\n margin: '8px',\n backgroundColor: 'white',\n padding: '30px',\n minHeight: 'calc(100vh - 50px)',\n borderRadius: '4px',\n },\n formContainer: {\n position: 'absolute',\n display: 'flex',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n backgroundColor: 'white',\n alignContent: 'center',\n padding: '30px',\n maxWidth: '480px',\n borderRadius: '4px',\n },\n form: {\n width: '100%',\n },\n header: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n marginBottom: '16px',\n alignItems: 'flex-start',\n },\n footer: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n marginTop: '16px',\n },\n row: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'baseline',\n justifyContent: 'space-between',\n marginBottom: '8px',\n },\n tableContainer: {\n height: 'calc(100vh - 120px)',\n },\n tableFooter: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start',\n },\n btnSubmit: {\n backgroundColor: theme.custom.primaryGreen,\n margin: '16px 0px',\n color: 'white',\n },\n custbtnSubmit: {\n backgroundColor: theme.custom.primaryGreen,\n margin: '16px 0px',\n color: 'white',\n float: 'right',\n },\n productSearch: {\n width: '100%',\n lineHeight: 'initial',\n fontSize: '14px',\n },\n formLabel: {\n fontWeight: 600,\n marginRight: '24px',\n },\n}));\n","import {\n Checkbox,\n FormControl,\n FormControlLabel,\n FormHelperText,\n Grid,\n makeStyles,\n} from '@material-ui/core';\nimport { AddRounded, FormatLineSpacing } from '@material-ui/icons';\nimport AppButton from 'common/AppButton';\nimport AppInput from 'common/AppInput';\nimport { useFormik } from 'formik';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { toast } from 'react-toastify';\nimport { postCustomerCreate } from 'services/customer';\nimport { ICustomerInput } from 'types/ICustomer';\nimport { handleError } from 'utils';\nimport * as yup from 'yup';\n\nimport { Delete, Remove } from '@material-ui/icons';\n\nimport { useStyles } from './style';\n\nconst Customer: React.FC = () => {\n const classes = useStyles();\n const [isLoading, setIsLoading] = useState(false);\n const history = useHistory();\n const dispatch = useDispatch();\n let [addressCount, setAddressCount] = useState(1);\n const mobileRegex = /^[0-9]{10}$/g;\n\n const formik = useFormik({\n initialValues: {\n customer: {\n firstName: '',\n middleName: '',\n lastName: '',\n email: '',\n mobileNumber: '',\n phoneNumber: '',\n password: '',\n rewardsPoints: 0,\n },\n address: [\n {\n provience: '',\n municipality: '',\n district: '',\n ward: '',\n street: '',\n hourseNo: '',\n defaultAddress: false,\n },\n ],\n },\n validationSchema: yup.object().shape({\n customer: yup.object({\n firstName: yup.string().required('Required'),\n lastName: yup.string().required('Required'),\n middleName: yup.string().required('Required'),\n email: yup.string().email('Invalid email').required('Required'),\n mobileNumber: yup\n .string()\n .matches(mobileRegex, 'Please enter a valid mobile number')\n .required('Required'),\n }),\n }),\n onSubmit: () => {\n handleSubmit();\n },\n });\n\n const handleSubmit = async () => {\n const formData = formik.values;\n console.log('Request to be sent: ', { formData });\n\n try {\n setIsLoading(true);\n await postCustomerCreate(formData);\n toast.success('Success', {\n position: toast.POSITION.BOTTOM_CENTER,\n });\n formik.resetForm();\n //history.push(routes.VIEW_INVENTORY_ITEM);\n } catch (err) {\n handleError(err);\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleDefaultAddress = (i: number) => (_: React.ChangeEvent) => {\n const boolValue = _.target.checked;\n let addresses = formik.values.address;\n if (boolValue) {\n addresses.map((address) => {\n if (addresses.indexOf(address) != i) {\n address.defaultAddress = false;\n }\n });\n }\n addresses[i].defaultAddress = boolValue;\n formik.setFieldValue('address', addresses);\n //formik.values.address[i].defaultAddress = boolValue;\n console.log(formik.values.address);\n };\n\n const renderAddressContainer = () => {\n return Array.from(Array(addressCount), (e, i) => {\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 label=\"Mark as default address\"\n />\n\n {i !== 0 && (\n handleRemoveAddress(i)}\n loading={isLoading}\n >\n Remove\n \n )}\n \n \n \n );\n });\n };\n\n const handleAddAddressClick = () => {\n const newAddress = [...formik.values.address];\n newAddress.push({\n provience: '',\n municipality: '',\n district: '',\n ward: '',\n street: '',\n hourseNo: '',\n defaultAddress: false,\n });\n formik.setFieldValue('address', newAddress);\n setAddressCount(addressCount + 1);\n };\n\n const handleRemoveAddress = (rowIndex: number): void => {\n const newAddressValue = formik.values.address.filter((_, index) => index !== rowIndex);\n formik.setFieldValue('address', newAddressValue);\n setAddressCount(addressCount - 1);\n };\n\n return (\n <>\n
\n

Add Customer

\n \n \n \n \n {formik.errors.customer?.firstName && formik.touched.customer?.firstName && (\n \n {formik.errors.customer?.firstName}\n \n )}\n \n \n \n \n \n {formik.errors.customer?.middleName && formik.touched.customer?.middleName && (\n \n {formik.errors.customer?.middleName}\n \n )}\n \n \n \n \n \n {formik.errors.customer?.lastName && formik.touched.customer?.lastName && (\n \n {formik.errors.customer?.lastName}\n \n )}\n \n \n \n \n \n \n \n {formik.errors.customer?.mobileNumber && formik.touched.customer?.mobileNumber && (\n \n {formik.errors.customer?.mobileNumber}\n \n )}\n \n \n \n \n \n {formik.errors.customer?.email && formik.touched.customer?.email && (\n \n {formik.errors.customer?.email}\n \n )}\n \n \n \n \n \n \n
\n

Address

\n handleAddAddressClick()}\n loading={isLoading}\n >\n + Add\n \n
\n {renderAddressContainer()}\n
\n \n Submit\n \n formik.resetForm()}>\n Reset\n \n
\n
\n \n );\n};\n\nexport default Customer;\n","import { PersonAdd } from '@material-ui/icons';\nimport AppButton from 'common/AppButton';\nimport AppTable from 'common/AppTable';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { getCustomers } from 'services/customer';\nimport { ICustomer } from 'types/ICustomer';\nimport { handleError } from 'utils';\nimport { listStyles } from './style';\nimport * as routes from 'constants/routes';\n\ninterface ICustomerRows {\n id: string | number;\n name: string;\n email: string;\n mobile: string;\n phone: string;\n}\n\nconst CustomerList: React.FC = () => {\n const dispatch = useDispatch();\n const [customerLoading, setCustomerLoading] = useState(false);\n const classes = listStyles();\n const [customerList, setCustomerList] = useState>([]);\n const history = useHistory();\n useEffect(() => {\n (async () => {\n try {\n setCustomerLoading(true);\n const { data } = await getCustomers();\n const customers = data.data.data.map(\n ({\n id,\n firstName,\n middleName,\n lastName,\n email,\n mobileNumber,\n phoneNumber,\n }: ICustomer): Record => ({\n id,\n name: `${firstName} ${middleName} ${lastName}`,\n email: email,\n mobile: mobileNumber,\n phone: phoneNumber,\n }),\n );\n\n setCustomerList(customers);\n } catch (err) {\n handleError(err);\n } finally {\n setCustomerLoading(false);\n }\n })();\n }, []);\n\n const columns = [\n {\n field: 'name',\n headerName: 'Name',\n flex: 1,\n },\n {\n field: 'email',\n headerName: 'Email',\n flex: 1,\n },\n {\n field: 'mobile',\n headerName: 'Mobile',\n flex: 1,\n },\n {\n field: 'phone',\n headerName: 'Phone',\n flex: 1,\n },\n ];\n\n return (\n <>\n
\n
\n history.push(routes.CUSTOMER)}\n style={{ margin: '0px' }}\n // loading={isLoading}\n >\n Add Customer\n \n
\n
\n \n
\n
\n \n );\n};\n\nexport default CustomerList;\n","import { IExpensesItem } from \"types\"\nimport http from \"./http\"\nimport * as urls from 'constants/urls';\n\nexport const postNewExpensesItem = (data:IExpensesItem)=>{\n return http.post(urls.POST_NEW_EXPENSES_ITEM, data)\n }\n\nexport const getNewExpensesItem = () => {\n return http.get(urls.GET_NEW_EXPENSES_ITEM)\n}\n\nexport const deleteExpensesItem = (expensesId:number) => {\n return http.delete(`/expenses/${expensesId}`)\n}","import { useFormik } from 'formik';\nimport moment from 'moment';\nimport React, { useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { toast } from 'react-toastify';\nimport { IExpensesItem } from 'types';\nimport * as routes from 'constants/routes';\nimport { handleError } from 'utils';\nimport { Grid, InputAdornment, InputLabel } from '@material-ui/core';\nimport AppButton from 'common/AppButton';\nimport AppInput from 'common/AppInput';\nimport { postNewExpensesItem } from 'services/expenses';\n\nconst AddExpenses: React.FC = () => {\n const [isLoading, setIsLoading] = useState(false);\n const history = useHistory();\n\n const formik = useFormik({\n initialValues: {\n id: 0,\n transactionDate: moment().format('YYYY-MM-DD'),\n description: '',\n quantity: 0,\n unitPrice: 0,\n totalAmount: 0,\n },\n onSubmit: () => {},\n });\n\n\n const handleQuantity = (e: any) => {\n const value = Number(e.target.value);\n formik.setFieldValue('quantity', value);\n let { unitPrice } = formik.values;\n\n formik.setFieldValue('totalAmount', value * unitPrice);\n };\n\n const handleUnitPrice = (e: any) => {\n const value = Number(e.target.value);\n formik.setFieldValue('unitPrice', value);\n let { quantity } = formik.values;\n\n formik.setFieldValue('totalAmount', quantity * value);\n };\n\n const handleSubmit = async () => {\n const formData = formik.values;\n console.log('Request to be sent: ', { formData });\n\n try {\n setIsLoading(true);\n const { data } = await postNewExpensesItem(formData);\n toast.success('Success', {\n position: toast.POSITION.BOTTOM_CENTER,\n });\n formik.resetForm();\n history.push(routes.VIEW_EXPENSES);\n } catch (err) {\n handleError(err);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n
\n

Expenses

\n \n \n Expiry date \n \n \n\n \n \n \n\n \n handleQuantity(e)}\n />\n \n\n \n handleUnitPrice(e)}\n InputProps={{\n startAdornment: NRs,\n }}\n />\n \n\n \n NRs,\n }}\n />\n \n \n
\n \n Submit\n \n formik.resetForm()}>\n Reset\n \n
\n
\n );\n};\nexport default AddExpenses;\n","import AppButton from 'common/AppButton';\nimport AppTable from 'common/AppTable';\nimport { listStyles } from 'components/Customer/style';\nimport React, { useEffect, useState } from 'react';\nimport { deleteExpensesItem, getNewExpensesItem } from 'services/expenses';\nimport { IExpensesItem } from 'types';\nimport { handleError } from 'utils';\nimport DeleteIcon from '@material-ui/icons/Delete';\n\nconst ListExpenses: React.FC = () => {\n const [refresh, setRefresh] = useState(false);\n const [expensesList, setExpensesList] = useState>([]);\n const classes = listStyles();\n\n useEffect(() => {\n (async () => {\n try {\n const { data } = await getNewExpensesItem();\n const expenses = data.data.map(\n ({\n id,\n transactionDate,\n description,\n quantity,\n unitPrice,\n totalAmount,\n }: IExpensesItem): Record => ({\n id,\n transactionDate,\n description,\n quantity,\n unitPrice,\n totalAmount,\n }),\n );\n\n setExpensesList(expenses);\n } catch (err) {\n handleError(err);\n }\n })();\n }, [refresh]);\n\n\n const handleDeleteItemClick = async (rowIndex: number): Promise => {\n try {\n await deleteExpensesItem(expensesList[rowIndex].id);\n setRefresh(!refresh)\n } catch (err) {\n handleError(err);\n }\n };\n\n const columns = [\n {\n field: 'transactionDate',\n headerName: 'Trnsaction Date',\n flex: 1,\n },\n {\n field: 'description',\n headerName: 'Description',\n flex: 1,\n },\n {\n field: 'unitPrice',\n headerName: 'Unit Price',\n flex: 1,\n },\n {\n field: 'quantity',\n headerName: 'Quantity',\n flex: 1,\n },\n {\n field: 'totalAmount',\n headerName: 'Total Amount',\n flex: 1,\n },\n {\n field: 'delete',\n headerName: 'Actions',\n flex: 1,\n sortable: false,\n renderCell: function renderCell(params: any) {\n return (\n <>\n handleDeleteItemClick(params.rowIndex)}\n >\n \n \n \n );\n },\n },\n ];\n\n return (\n <>\n
\n \n
\n \n );\n};\n\nexport default ListExpenses;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { CssBaseline } from '@material-ui/core';\n\nimport Sidebar from 'components/Sidebar';\nimport Header from 'components/Header';\nimport { Route, Switch, useRouteMatch } from 'react-router-dom';\n\nimport * as routes from 'constants/routes';\nimport Inventory from 'components/Inventory';\nimport ViewInventory from 'components/Inventory/ViewInventory';\nimport Sale from 'components/Sale';\nimport Customer from 'components/Customer';\nimport CustomerList from 'components/Customer/CustomerList';\nimport AddExpenses from 'components/Expenses';\nimport ListExpenses from 'components/Expenses/ListExpenses';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n backgroundColor: theme.custom.grey,\n },\n\n // necessary for content to be below app bar\n toolbar: theme.mixins.toolbar,\n\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n minHeight: 'calc(100vh - 50px)',\n },\n}));\n\nconst Home: React.FC = () => {\n const classes = useStyles();\n const { path } = useRouteMatch();\n\n return (\n
\n \n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport default Home;\n","import React from 'react';\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom';\n\nimport * as routes from 'constants/routes';\nimport Home from './Home';\n\nconst RootRouter: React.FC = () => {\n return (\n \n \n \n \n \n );\n};\n\nexport default RootRouter;\n","import React from 'react';\nimport { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles';\n\nimport { theme } from 'theme';\nimport RootRouter from 'components/RootRouter';\n\nconst muiTheme = createMuiTheme(theme);\n\nconst App: React.FC = () => {\n return (\n <>\n \n \n \n \n );\n};\n\nexport default App;\n","import { ISidebarAction, SIDEBAR_TOGGLE } from 'actions/sidebar';\n\ntype SIDEBAR_STATE = {\n isVisible: boolean;\n};\n\nconst INITIAL_STATE = {\n isVisible: false,\n};\n\nexport default (state: SIDEBAR_STATE = INITIAL_STATE, action: ISidebarAction) => {\n switch (action.type) {\n case SIDEBAR_TOGGLE:\n return { ...state, isVisible: !state.isVisible };\n default:\n return state;\n }\n};\n","import { IToolbarAction, SET_TOOLBAR_TITLE } from 'actions';\n\ntype TOOLBAR_STATE = {\n title: string;\n};\n\nconst INITIAL_STATE: TOOLBAR_STATE = {\n title: '',\n};\n\nexport default (state: TOOLBAR_STATE = INITIAL_STATE, action: IToolbarAction) => {\n switch (action.type) {\n case SET_TOOLBAR_TITLE:\n return { ...state, title: action.payload };\n default:\n return state;\n }\n};\n","import { FETCH_CATEGORYS, FETCH_INVENTRORY, FETCH_SUBCATEGORYS, GET_SELECTED_ITEM, IInventoryAction } from \"actions/inventroy\"\nimport { getProductWithQty, getSalesDetails } from \"services/sales\"\nimport { handleError } from \"utils\"\n\n\ntype INVENTORY_STATE = {\n items: Array;\n categorys: Array;\n subcategorys: Array;\n loading: boolean;\n error: string;\n selectedItem: any;\n transactionItems:Array;\n}\n\n\nconst INITIAL_STATE = {\n items: [],\n categorys:[],\n subcategorys:[],\n loading: false,\n error:\"\",\n selectedItem:null,\n // transactionItems:[{\n // id: 0,\n // product: null,\n // quantity: 0,\n // unitPrice: 0,\n // discAmount: 0,\n // discPercent: 0,\n // amount: 0,\n // }],\n transactionItems:[],\n\n}\n\nexport default (state: INVENTORY_STATE = INITIAL_STATE, action: IInventoryAction) => {\n switch (action.type) {\n case FETCH_INVENTRORY:\n return {...state, items: action.payload}\n case FETCH_CATEGORYS:\n return {...state, categorys: action.payload}\n case FETCH_SUBCATEGORYS:\n return {...state, subcategorys: action.payload}\n case GET_SELECTED_ITEM: {\n let id = action.payload;\n let items = state.items;\n let requiredItem = items.find((item) => item.id === id)\n return {...state, selectedItem: requiredItem};\n // let newState = state;\n // (async () => {\n // try{\n // let { data } = await getProductWithQty(id);\n // const productData = data.data;\n // newState = {...state, selectedItem: productData}\n // } catch (err) {\n // newState = state;\n // } \n \n // })();\n // return newState;\n \n }\n default:\n return state;\n }\n}","import { IAction } from \"types\";\nexport const SET_TXN_ITEM = \"SET_TXN_ITEM\";\n\nexport interface ISalesAction extends IAction {\n payload: any\n}\n\nexport const setTxnItem = (item: any, rowParams: any) =>({\n type: SET_TXN_ITEM,\n payload: {item, rowParams}\n})","import { ISalesAction, SET_TXN_ITEM } from \"actions/sales\"\n\n\ntype SALES_STATE = {\n salesItems: Array;\n}\n\nconst INITIAL_STATE = {\n salesItems:[{\n id:0,\n product:'',\n quantity:0,\n unitPrice:0,\n discAmount:0,\n discPercent:0,\n amount:0\n }],\n}\n\nexport default (state: SALES_STATE = INITIAL_STATE, action:ISalesAction) =>{\n switch (action.type) {\n case SET_TXN_ITEM: {\n let rowIndex = action.payload.rowParams.rowIndex\n let newItem = action.payload.item\n let newTransactionItem = {\n id: newItem?.id,\n product: `${newItem?.brand?.brandName} - ${newItem?.productName}`,\n quantity: 0,\n unitPrice: newItem?.item[0]?.itemSalesPrice,\n discAmount: newItem?.item[0]?.itemDiscountAmount,\n discPercent: newItem?.item[0]?.itemDiscountPercent,\n amount: 0\n }\n\n let newTxnItems = state.salesItems;\n\n newTxnItems[rowIndex] = newTransactionItem\n\n //let updateTransactionItems = [...state.transactionItems, newItem]\n return {...state, salesItems: newTxnItems }\n }\n default:\n return state;\n }\n}","import { combineReducers } from 'redux';\n\nimport sidebarReducer from './sidebar';\nimport toolbarReducer from './toolbar';\nimport inventoryReducer from './inventory';\nimport salesReducer from './sales';\n\nexport default combineReducers({\n sidebar: sidebarReducer,\n toolbar: toolbarReducer,\n inventory: inventoryReducer,\n sales: salesReducer\n});\n","import thunk from 'redux-thunk';\nimport promise from 'redux-promise-middleware';\nimport { compose, createStore, applyMiddleware } from 'redux';\n\nimport rootReducer from 'reducers';\n\nconst enhancers = [applyMiddleware(thunk, promise)];\n\nif (process.env.NODE_ENV === 'development' && (window as any)['__REDUX_DEVTOOLS_EXTENSION__']) {\n enhancers.push((window as any)['__REDUX_DEVTOOLS_EXTENSION__']());\n}\n\nexport const store = createStore(rootReducer, compose(...enhancers));\n\nexport type RootState = ReturnType;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\n\ninterface IErrorBoundaryState {\n hasError: boolean;\n}\n\nexport class ErrorBoundary extends React.Component<{}, IErrorBoundaryState> {\n constructor(props: any) {\n super(props);\n\n this.state = {\n hasError: false,\n };\n }\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n\n componentDidCatch() {\n // TODO: - Log error\n }\n\n render() {\n if (this.state.hasError) {\n return (\n
\n

Oops! Something went wrong

\n
\n );\n }\n\n return this.props.children;\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { ToastContainer } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\n\nimport './index.scss';\nimport App from './App';\nimport { store } from './store';\nimport reportWebVitals from './reportWebVitals';\nimport { ErrorBoundary } from 'components/ErrorBoundary';\n\nReactDOM.render(\n \n \n \n \n \n \n \n ,\n\n document.getElementById('root'),\n);\n\nreportWebVitals();\n"],"sourceRoot":""}