%PDF- %PDF-
Direktori : /home/opti/public_html/ezone-inventory.optisoft.com.ng/static/js/ |
Current File : /home/opti/public_html/ezone-inventory.optisoft.com.ng/static/js/main.335f64e9.chunk.js.map |
{"version":3,"sources":["Components/utils/getParams.js","Components/globalAssets/theme.js","Components/utils/getCenter.js","Components/globalAssets/fontSize.js","Components/globalComponents/styles.js","Components/images/logo.png","Components/globalComponents/DropDown.js","Components/globalComponents/TopBar.js","Components/globalComponents/SideBar.js","Components/images/bgs/upper1.png","Components/images/bgs/upper2.png","Components/images/bgs/below1.png","Components/images/bgs/below2.png","Components/images/bgs/below3.png","Components/globalComponents/TableWithPagination.js","Components/globalComponents/Buttons.js","Components/globalComponents/SelectInput.js","Components/globalComponents/ToolBar.js","Components/Inventory/styles.js","Components/utils/getBase64.js","domain.js","routes.js","services.js","Components/Inventory/Warehouse/slice.js","Components/Inventory/Items/slice.js","Components/Inventory/ItemGroups/slice.js","Components/globalComponents/Feedback.js","Components/utils/switchURL.js","Components/Dashboard/slice.js","Components/utils/convertStringToNumber.js","Components/Clients/Vendors/slice.js","Components/Inventory/Items/AddItem.js","Components/Inventory/Items/ItemDetails.js","Components/globalComponents/Modal.js","Components/globalComponents/deleteModal.js","Components/Inventory/Items/EditItem.js","Components/Inventory/Items/index.js","Components/utils/notificationAlert.js","Components/Inventory/ItemGroups/ItemGroupDetails.js","Components/Inventory/ItemGroups/index.js","Components/Inventory/Warehouse/WarehouseDetails.js","Components/Inventory/Warehouse/index.js","Components/Inventory/Adjustment/AdjustmentDetails.js","Components/Clients/Customers/slice.js","Components/Inventory/Adjustment/slice.js","Components/Inventory/Adjustment/AdjustItem.js","Components/Inventory/Adjustment/index.js","Components/Inventory/TransferOrders/slice.js","Components/Inventory/TransferOrders/AddTransferOrder.js","Components/Inventory/TransferOrders/index.js","Components/Sales/SalesOrders/AddSalesOrder.js","Components/Sales/SalesOrders/index.js","Components/Clients/Customers/index.js","Components/Sales/Invoice/slice.js","Components/Sales/Invoice/AddInvoice.js","Components/images/companyLogo.jpeg","Components/Sales/Invoice/SingleInvoice.js","Components/Sales/Invoice/index.js","Components/Sales/Receipt/AddReceipt.js","Components/images/companyLogo2.jpeg","Components/Sales/Receipt/slice.js","Components/Sales/Receipt/SingleReceipt.js","Components/Sales/Receipt/index.js","Components/Dashboard/index.js","Components/Clients/Vendors/index.js","App.js","app/store.js","serviceWorker.js","index.js"],"names":["module","exports","params","Object","keys","reduce","result","field","concat","themes","lightTheme","createTheme","white","primaryColor","primaryColor2","primaryColor3","background","foreground","subtleBlack","lightText","boldText","headerText","shadow","filter","border","highlight","faintBlue","red","grey","darkTheme","GlobalStyle","createGlobalStyle","_templateObject","_taggedTemplateLiteral","props","theme","getCenter","justifyContent","alignItems","display","flexDirection","flexWrap","arguments","length","undefined","desktop","StyledTopBar","styled","Box","StyledLogo","img","_templateObject2","StyledTable","Table","_templateObject3","StyledInputContainer","_templateObject4","StyledPrimaryButton","Button","_templateObject5","StyledCancelButton","_templateObject6","StyledTransparentButton","_templateObject7","StyledCard","_templateObject8","StyleLabel","p","_templateObject9","StyledNormalText","Typography","_templateObject10","StyledBoldText","_templateObject11","StyledModal","Modal","_templateObject12","DropDown","React","forwardRef","ref","itemList","items","map","item","index","_jsx","MenuItem","onClick","event","handleClose","children","Popper","open","anchorEl","current","role","transition","disablePortal","style","zIndex","_ref","TransitionProps","placement","Grow","transformOrigin","Paper","ClickAwayListener","onClickAway","MenuList","autoFocusItem","id","onKeyDown","handleListKeyDown","TopBar","setOpen","useState","anchorRef","useRef","useHistory","_jsxs","visibility","hidden","position","px","py","window","location","assign","src","alt","handleToggle","prevOpen","endIcon","IoMdArrowDropdown","variant","key","preventDefault","itemName","contains","target","console","log","SubMenu","Menu","inventoryLinkObj","name","link","SalesLinkObj","partiesObj","SideBar","inventoryLink","StyledSubMenuItem","Link","to","salesLink","partiesLinks","StyledSideBar","pt","StyledMainMenu","e","width","backgroundColor","color","defaultSelectedKeys","defaultOpenKeys","mode","icon","MdDashboard","StyledMenu","MdLabel","title","Item","TableWithPagination","_props$total","_Fragment","pagination","onRow","columns","dataSource","hidePagination","TablePagination","component","count","total","page","onChangePage","handleChangePage","rowsPerPage","onChangeRowsPerPage","handleChangeRowsPerPage","useStyles","makeStyles","root","wrapper","buttonProgress","PrimaryButton","top","left","marginTop","marginLeft","classes","className","disabled","loading","text","CircularProgress","size","CancelButton","TransaparentButton","Option","Select","SelectInput","showSearch","bordered","placeholder","optionFilterProp","onChange","value","onFocus","onBlur","onSearch","val","filterOption","input","option","toLowerCase","indexOf","ToolBar","showtools","createButtonText","onCreate","mt","Icon","ml","StyledImageDrop","isImage","StyledImagePreview","StyledMutedText","StyledBottomImage","isActive","getBase64","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","onerror","error","hostname","routes","createItemGroupRoute","getAllItemGroupRoute","getItemGroupsByOrgId","orgId","updateItemGroupRoute","getItemGroupNumber","getSingleItemGroup","deleteItemGroup","addWarehouse","getAllWarehouse","deleteWarehouse","updateWarehouse","getSingleWarehouse","itemsRoute","userProfileRoute","userByOrgRoute","orgid","invoiceRoute","customersRoute","paymentRoute","logoutRoute","getSingleInvoice","vendorRoute","createReceiptRoute","getAllReceiptsRoute","getSingleReceiptRoute","issueItemRoute","getAllTransfarOrderRoute","addTransfarOrderRoute","adjustmentsListRoute","addAdjustmentsRoute","mainDomain","Services","createItemGroup","payload","axios","method","url","data","headers","Authorization","localStorage","invToken","fetchItemGroupsByOrgId","getURLParams","fetchItemGroupNumber","fetchAllItemGroups","updateItemGroups","fetchSingleItemGroup","fetchSingleWarehouse","getAllItems","getSingleItem","createItem","deleteItem","updateItem","itemsRouteId","getUserProfile","getUsersByOrg","getCustomers","createCustomers","editCustomers","createVendors","getVendors","editVendors","getAllInvoice","getInvoice","createInvoice","getPaymentInfo","makePayment","logout","createReceipt","getAllReceipt","getSingleReceipt","issueItem","getAllTransfarOrder","createTransfarOrder","createAdjustment","getAllAdjustments","warehouseSlice","createSlice","initialState","warehouseList","paginationProps","totalPages","totalItems","singleWarehouse","reducers","addWarehouseList","state","addPaginationProps","_ref2","addSingleWarehouse","_ref3","actions","dispatcher","then","response","currentPage","warehouses","delFlag","catch","selectWarehouse","warehouseReducer","itemSlice","singleItem","addItemList","addSingleItem","fetchAllItems","selectItems","itemReducer","itemGroupSlice","itemGroupList","totalItemGroup","singleItemGroup","addItemGroup","addSingleItemGroup","fetchItemGroupsByOrg","item_group","selectItemGroups","itemGroupReducer","Alert","MuiAlert","elevation","Feedback","Snackbar","autoHideDuration","onClose","severity","type","sx","message","dashboardSlice","usersByOrg","userProfile","itemGroupCount","addUserProfile","addUsersByOrg","organisation","status","URL","split","replace","switchURL","selectDashboard","dashboardReducer","vendorSlice","vendorList","addVendorList","getAllVendor","totalVendors","vendors","selectVendor","vendorReducer","TextArea","Input","CheckboxWithStyle","withStyles","Checkbox","layout","labelCol","span","wrapperCol","formFields1","label","isRequired","formFields2","warehouseFields","sales","purchase","inventoryAcct","taxAcct","reorder","vendor","missingParams","accountId","wareHouseId","barcode","manufacturer","trashed","fileFormat","fileUrl","quantity","accountingNumber","itemCategoryEnum","itemTypeEnum","units","AddItem","warehouseState","setWarehouseState","openAccounting","setOpenAccounting","selectValues","setSelectValues","imageArr","setImageArr","buttonLoading","setButtonLoading","feedbackProps","setFeedbackProps","useSelector","form","Form","useForm","history","useDispatch","vendorListOption","firstName","lastName","warehouseOptions","_item$name","itemCategoryOptions","itemTypeOptions","itemGroupOption","groupName","unitsOption","handleSelectChange","selectName","prevSelectValues","firstSection","getInput","secondSection","Col","sm","warehouseStateList","salesAccountList","purchaseAccountList","inventoryAccountList","taxAccountList","reorderList","xs","vendorInputList","onFinish","async","_userProfile$organisa","selectInputValues","formattedValues","fromEntries","entries","values","_selectInputValues$ke","itemStocks","startsWith","itemStockWithWarehouse","_ref4","warehouseKey","warehouseValue","stockKey","stockValue","warehouseID","openingStock","valuesWithoutItemStockAndWarehouse","_ref5","wareHouseRequest","refineImage","productImage","imageList","_ref6","purchaseAccountId","salesAccountId","refinedValues","obj","isNaN","parseInt","toFixed","prevState","push","_error$message","Grid","ItemImageComponent","getImage","imageBase64Arr","Row","gutter","handleAddWarehouse","prevWarehouse","newWarehouse","mb","checked","Collapse","in","gutterBottom","pb","marginRight","activeImage","setActiveImage","onDrop","useCallback","acceptedFiles","newImages","slice","forEach","getRootProps","getInputProps","isDragActive","useDropzone","FiCamera","hideFooterText","inputObject","selectOptions","searchObject","onFooterClicked","rules","required","defaultValue","autoSize","minRows","StyledSelectInput","textAlign","DatePicker","cursor","FiPlus","secondaryColor","firstSegment","secondSegment","stock","inventory","tax","ItemDetails","_singleItem$itemsImag","useParams","setItem","itemsImages","useEffect","firstSeg","join","_singleItem$itemGroup","itemGroups","_singleItem$item$key","SingleItemProperty","secondSeg","_singleItem$item$key2","stockSeg","_singleItem$item$key3","salesSeg","_singleItem$item$key4","purchaseSeg","_singleItem$item$key5","inventorySeg","_singleItem$item$key6","taxSeg","_singleItem$item$key7","imagearr2","itm","itm2","fileName","SegmentTitle","marginBottom","flexShrink","flexBasis","mx","fontWeight","modal","ModalComponent","closeAfterTransition","BackdropComponent","Backdrop","BackdropProps","timeout","Slide","direction","mountOnEnter","unmountOnExit","AntFormModal","visible","okButtonProps","htmlType","cancelButtonProps","onOk","submit","okText","onCancel","initialValues","AntModal","_props$okText","DeleteModal","minWidth","padding","align","mr","onDelete","EditItem","formFields1State","setFormField1","formField2State","setFormField2","warehouseFieldsState","setWarehouseFields","salesState","setSales","purchaseState","setPurchase","inventoryAcctState","setInventoryAcct","taxAccountListState","setTaxAccountList","reorderListState","setReorderList","vendorListState","setVendorList","setFieldsValue","itemType","itemCategory","itemGroup","vendorId","find","_response$data$data$i","resetFields","prevItemState","currentItem","_currentItem$key","Items","setPage","setRowsPerPage","path","useRouteMatch","deleteModalProps","setDeleteModalProps","dataIndex","render","allData","content","Space","Popover","trigger","FiMoreVertical","Switch","Route","exact","gotoAddItem","newPage","notificationAlert","description","notification","ItemGroupDetails","itemGroupData","setItemGroupData","setItemList","Statistic","valueStyle","fontSize","prefix","precision","refinedItemGroupData","addGroupInput","ItemGroups","createGroupForm","editGroupForm","isSubmitDisabled","setSubmitButton","addGroupModalProps","setAddGroupModalProps","isVisible","editModalProps","setEditModalProps","selectedItemInput","newData","groupInputs","ModalScaffold","reload","handleFeedbackClose","reason","WarehouseDetails","warehouseData","setWarehouseData","refinedWarehouseData","addWarehouseInput","Warehouse","editWarehouseForm","allWarehouse","setAllWarehouse","userList","user","fullName","handlePopoverClick","warehouseInputs","CreateWarehouseModal","headOfWareHouseId","uuid","uuId","EditWarehouseModal","cancelAndReset","previousQuantity","adjustedBy","adjustedQuantity","AdjustmentDetails","customerSlice","customerList","addCustomerList","getAllCustomer","customers","createCustomer","selectCustomer","customerReducer","adjustmentsSlice","adjustmentsList","singleAdjustments","allAdjustments","fetchAllAdjustments","adjustments","selectAdjustments","adjustmentsReducer","addAdjustmentsInput","itemDescription","itemId","AdjustItem","itemsState","setItemsState","activeRowIndex","setActiveRowIndex","createInvoiceLoading","setCreateInvoiceLoading","basicInfoForm","userProfile2","workShift","dateString","moment","toISOString","getSelectedItem","currentItemState","newItemsState","replaceItem","selecedItem","splice","handleDeleteRow","handleItemSelect","selectedItemObj","selecteditem","handleQuantityTransfar","qty","optionList","FiTrash2","warehouseOptionList","getAdjustmentsInput","warehouseName","inventoryAdjustedDate","_error$response","_error$response$data","justify","handleTableRow","AddAdjustableRow","row","InventoryAdjustment","gotoAdjustItem","record","rowIndex","transfarOrderSlice","transfarOrderList","singleTransfarOrder","addtransfarOrderList","selectTransfarOrder","transfarOrderReducer","transferOrderInput","sku","itemSku","transferQuantity","AddTransferOrder","profile","warehouseOptionList2","getTransfarOrderInput","sourceWarehouseId","destinationWarehouseId","itemSKU","format","TransferOrder","gotoAddOrder","price","salesOrder","AddSalesOrder","salesOrderList","itemClass","unitCost","unitPrice","stockOnHand","SalesOrders","addCustomerInput","Customers","editForm","formattedInitialValues","customerInputs","CreateCustomerModal","invoiceSlice","invoiceList","singleInvoice","customer","charges","addSingleInvoice","addInvoiceList","invoices","selectInvoice","invoiceReducer","icons","historyIcon","arroweft","height","borderTop","borderBottom","borderRight","logo","totalBackground","amount","chargesFields","AddInvoice","chargesForm","otherCharges","setOtherCharges","addChargesModal","setAddChargesModal","addCustomerModalProps","setAddCustomerModalProps","formattedItemsState","sellingPrice","handleQuantityChange","Boolean","onFooterClick","customerOptionList","chargesInput","otherChargesList","OtherChargesComponent","getOtherCharges","prev","curr","getSubTotal","sales_person","customer_id","due_date","total_amount","Divider","TotalComponent","sendInvoiceFields","paymentFields","paymentMethods","accountDeposit","SingleInvoice","_singleInvoice$charge","paymentForm","paymentInfo","setPaymentInfo","paymentFieldsState","setPaymentFields","sendInvoiceModalProps","setSendInvoiceModalProps","paymentModalProps","setPaymentModalProps","paymentData","initValues","customer_name","receipt_number","paymentFieldsDefault","sendInvoiceInput","paymentMethodList","accountDepositList","paymentInput","openPaymentRecordModal","HistoryBar","companyLogo","invoice_number","invoice_date","address","notes","colon","CKEditor","editor","ClassicEditor","onReady","getData","payment_method","account_to_deposit","receipt_id","payment_date","org_key","bank_changes","SingleHistory","StyledSingleHistory","pl","pr","maxHeight","overflow","BiHistory","FaRegFilePdf","IoMdRefresh","BiPrinter","FiMail","hidePaymentButton","textTransform","Invoice","itemShipmentProps","setItemShipmentProps","invoiceId","shipmentStatus","IconButton","_error$response$data$","receiptSlice","allReceipts","singleReceipt","addAllReceipts","addSingleReceipt","fetchAllReceipt","receipts","selectReceipts","receiptReducer","initialBillInfo","ReceiptDetail","billInfo","setBillInfo","billTo","created_at","paymentMethod","billInfoList","SingleDetail","StyledImage","receiptNumber","StyledReciptBody","paymentAmount","invoiceNumber","isamount","invoiceAmount","bill_to","branch_id","invoice_amount","payment_amount","addReceiptInput","Receipt","dispatch","amount_due","receiptInputs","CreateReceiptModal","Dashboard","StyledStatContainer","SingleStat","StyledStatCard","Vendor","margin","spacing","small","large","StyledContainer","StyledUserBar","StyledInnerUserBar","StyledInnerUserBar1","StyledUserToolBar","App","loadProgressBar","isLightMood","setMood","useLocation","token","URLSearchParams","search","get","statusCode","focus","StylesProvider","injectFirst","MuiThemeProvider","ThemeProvider","CssBaseline","Container","disableGutters","maxWidth","Badge","overflowCount","offset","boxShadow","BsFillBellFill","Avatar","UserOutlined","removeItem","handleLogout","my","InventoryItems","InventoryItemGroups","InventoryWarehouse","InventoryTransferOrders","store","configureStore","reducer","match","ReactDOM","StrictMode","Provider","Router","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.335f64e9.chunk.js","sourcesContent":["/**\r\n * This is used to generate a custom URL param\r\n * @param params\r\n * @returns {string}\r\n */\r\n const getURLParams = params =>\r\n Object.keys(params).reduce((result, field) => {\r\n if (params[field]===0 || params[field] ) {\r\n result += result\r\n ? `&${field}=${params[field]}`\r\n : `?${field}=${params[field]}`;\r\n }\r\n return result;\r\n }, \"\");\r\n\r\n module.exports = getURLParams","import { createGlobalStyle } from 'styled-components';\r\nimport { createTheme } from '@material-ui/core';\r\n\r\n\r\nexport const themes = {\r\n white: '#fff',\r\n primaryColor: '#1A88E1',\r\n primaryColor2: '#1702FF',\r\n primaryColor3: '#177ACA',\r\n background: '#F0F3FA',\r\n foreground: '#FFFFFF',\r\n subtleBlack: '#B4B4B4',\r\n lightText: '#5E5D5D',\r\n boldText: '#242424',\r\n headerText: '#000000',\r\n shadow: \"0px 3px 10px #0000001A\",\r\n filter: \"drop-shadow(0px 4px 20px rgba(201, 201, 201, 0.25))\",\r\n border: '#C4C4C4',\r\n highlight: \"#F5F5F5\",\r\n faintBlue: '#F0F3FA',\r\n red: '#F44336',\r\n grey: '#A0AEC0',\r\n}\r\n\r\nexport const lightTheme = createTheme({\r\n white: '#fff',\r\n primaryColor: '#1A88E1',\r\n primaryColor2: '#1702FF',\r\n primaryColor3: '#177ACA',\r\n background: '#F0F3FA',\r\n foreground: '#FFFFFF',\r\n subtleBlack: '#B4B4B4',\r\n lightText: '#5E5D5D',\r\n boldText: '#242424',\r\n headerText: '#000000',\r\n shadow: \"0px 3px 10px #0000001A\",\r\n filter: \"drop-shadow(0px 4px 20px rgba(201, 201, 201, 0.25))\",\r\n border: '#C4C4C4',\r\n highlight: \"#F5F5F5\",\r\n faintBlue: '#F0F3FA',\r\n red: '#F44336',\r\n grey: '#A0AEC0',\r\n})\r\n\r\n\r\nexport const darkTheme = createTheme({\r\n white: '#fff',\r\n background: '#18191A',\r\n foreground: '#242526',\r\n primaryColor: '#1A88E1',\r\n primaryColor2: '#1702FF',\r\n primaryColor3: '#177ACA',\r\n border: '#C5C5C5',\r\n subtleBlack: '#fff',\r\n lightText: '#fff',\r\n boldText: '#fff',\r\n shadow: \"none\",\r\n filter: \"none\",\r\n headerText: '#fff',\r\n highlight: \"#363838\",\r\n faintBlue: '#363838',\r\n red: '#F44336',\r\n grey: '#A0AEC0',\r\n \r\n})\r\n\r\nexport const GlobalStyle = createGlobalStyle `\r\n body{\r\n background: ${props => props.theme.background};\r\n color: ${props => props.theme.boldText};\r\n transition: all 0.5s linear;\r\n }\r\n\r\n p{\r\n margin-bottom: 0px;\r\n color: ${props => props.theme.boldText};\r\n }\r\n`","export const getCenter = ({justifyContent , alignItems , display, flexDirection, flexWrap} = {}) => {\r\n return {\r\n display : display ?? 'flex',\r\n 'justify-content': justifyContent ?? 'center',\r\n 'align-items': alignItems ?? 'center',\r\n 'flex-wrap': flexWrap ?? 'wrap',\r\n 'flex-direction': flexDirection ?? 'row'\r\n }\r\n }","export const mobile = {\r\n large: '32px',\r\n medium: '18px',\r\n small: '12px',\r\n normal: '16px',\r\n}\r\n\r\nexport const desktop = {\r\n large: '2.1vw',\r\n medium: '1.4vw',\r\n normal: '1.1vw',\r\n small: '0.8vw'\r\n}","import styled from 'styled-components';\r\nimport { Box, Button, Typography } from '@material-ui/core';\r\nimport { Table, Form, Modal } from 'antd';\r\nimport { getCenter } from '../utils/getCenter';\r\nimport { desktop } from '../globalAssets/fontSize';\r\n\r\n\r\nexport const StyledTopBar = styled(Box)`\r\n background-color: ${(props) => props.theme.foreground};\r\n width: 100%;\r\n position: fixed;\r\n z-index: 100;\r\n top: 0;\r\n`;\r\n\r\nexport const StyledLogo = styled.img`\r\n width: 10%;\r\n height: auto;\r\n cursor: pointer;\r\n`;\r\n\r\nexport const StyledTable = styled(Table)`\r\n color: ${(props) => props.theme.white};\r\n & .ant-table-thead > tr > th:nth-child(odd) {\r\n background-color: ${(props) => props.theme.primaryColor};\r\n color: ${(props) => props.theme.white};\r\n }\r\n\r\n & .ant-table-thead > tr > th:nth-child(even) {\r\n background-color: ${(props) => props.theme.primaryColor3};\r\n color: ${(props) => props.theme.white};\r\n }\r\n\r\n & .ant-table-row {\r\n background-color: ${(props) => props.theme.foreground};\r\n color: ${(props) => props.theme.boldText};\r\n cursor: pointer;\r\n\r\n &:nth-child(even) {\r\n background-color: ${(props) => props.theme.faintBlue};\r\n }\r\n }\r\n\r\n & .ant-table-tbody > tr > td {\r\n border-bottom: none;\r\n }\r\n\r\n & .ant-table-tbody > tr.ant-table-row:hover > td {\r\n background-color: ${(props) => props.theme.highlight};\r\n color: ${(props) => props.theme.boldText};\r\n }\r\n`;\r\n\r\nexport const StyledInputContainer = styled(Box)`\r\n ${getCenter()}\r\n border: 1px solid ${(props) => props.theme.border};\r\n width: 100%;\r\n padding: 4px;\r\n border-radius: 5px;\r\n\r\n & p {\r\n color: ${(props) => props.theme.lightText};\r\n }\r\n`;\r\n\r\nexport const StyledPrimaryButton = styled(Button)`\r\n background-color: ${(props) => props.theme.primaryColor};\r\n color: ${(props) => props.theme.white};\r\n text-transform: capitalize;\r\n\r\n &:hover {\r\n background-color: ${(props) => props.theme.primaryColor};\r\n }\r\n`;\r\n\r\nexport const StyledCancelButton = styled(Button)`\r\n background-color: ${(props) => props.theme.red};\r\n color: ${(props) => props.theme.white};\r\n text-transform: capitalize;\r\n\r\n &:hover {\r\n background-color: ${(props) => props.theme.red};\r\n }\r\n`;\r\n\r\nexport const StyledTransparentButton = styled(Button)`\r\n color: ${(props) => props.theme.lightText};\r\n border: 1px solid ${(props) => props.theme.border};\r\n text-transform: capitalize;\r\n`;\r\n\r\nexport const StyledCard = styled(Box)`\r\n background-color: ${(props) => props.theme.foreground};\r\n width: 100%;\r\n`;\r\n\r\nexport const StyleLabel = styled.p`\r\n font-size: ${desktop.normal};\r\n font-weight: 500;\r\n color: ${(props) => props.theme.lightText};\r\n`;\r\n\r\nexport const StyledNormalText = styled(Typography)`\r\n color: ${(props) => props.theme.lightText};\r\n`;\r\n\r\nexport const StyledBoldText = styled(Typography)`\r\n color: ${(props) => props.theme.boldText};\r\n`;\r\n\r\nexport const StyledModal = styled(Modal)`\r\n background-color: transparent;\r\n border-radius: 20px;\r\n //min-width: 50vw;\r\n color: ${(props) => props.theme.boldText};\r\n text-align: center;\r\n & .ant-modal-content {\r\n border-radius: 8px;\r\n margin: 0 auto;\r\n background-color: ${(props) => props.theme.foreground};\r\n }\r\n`;\r\n","export default \"data:image/png;base64,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\"","import React from 'react'\r\nimport {\r\n Box,\r\n Avatar,\r\n Typography,\r\n Divider,\r\n Popper,\r\n Paper,\r\n MenuList,\r\n Grow,\r\n ClickAwayListener,\r\n MenuItem\r\n } from '@material-ui/core';\r\n\r\nexport const DropDown = React.forwardRef((props, ref) => {\r\n\r\n const itemList = props.items.map((item, index) => {\r\n return <MenuItem key={index} onClick={(event) => props.handleClose(event, item)}>{item}</MenuItem>\r\n })\r\n return (\r\n <Popper\r\n open={props.open}\r\n anchorEl={ref.current}\r\n role={undefined}\r\n transition\r\n disablePortal\r\n style={{ zIndex: '1000' }}\r\n >\r\n {({ TransitionProps, placement }) => (\r\n <Grow\r\n {...TransitionProps}\r\n style={{\r\n transformOrigin:\r\n placement === 'bottom' ? 'center top' : 'center bottom',\r\n }}\r\n >\r\n <Paper>\r\n <ClickAwayListener onClickAway={props.handleClose}>\r\n <MenuList autoFocusItem={props.open} id=\"menu-list-grow\" onKeyDown={props.handleListKeyDown}>\r\n {itemList}\r\n </MenuList>\r\n </ClickAwayListener>\r\n </Paper>\r\n </Grow>\r\n )}\r\n </Popper>\r\n );\r\n });","import React from \"react\";\r\nimport { StyledBoldText, StyledLogo, StyledTopBar } from \"./styles\";\r\nimport Logo from \"../images/logo.png\";\r\nimport { IconButton, Box, Button } from \"@material-ui/core\";\r\nimport { DropDown } from \"./DropDown\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { IoMdArrowDropdown } from 'react-icons/io';\r\n\r\nexport const TopBar = (props) => {\r\n const [open, setOpen] = React.useState(false);\r\n const anchorRef = React.useRef(null);\r\n const history = useHistory();\r\n\r\n function handleListKeyDown(event) {\r\n if (event.key === \"Tab\") {\r\n event.preventDefault();\r\n setOpen(false);\r\n }\r\n }\r\n\r\n const handleClose = (event, itemName) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n console.log(itemName);\r\n switch (itemName) {\r\n case \"Home\":\r\n window.location.assign(\"http://apps.ezoneerp.com/home\");\r\n break;\r\n case \"Chat\":\r\n window.location.assign(\"http://apps.ezoneerp.com/chats\");\r\n break;\r\n case \"File Management\":\r\n window.location.assign(\r\n \"http://apps.ezoneerp.com/file-manager/folders\"\r\n );\r\n break;\r\n case \"Human Resources\":\r\n window.location.assign(\"http://apps.ezoneerp.com/hr/dashboard\");\r\n break;\r\n case \"Payroll\":\r\n window.location.assign(\"http://apps.ezoneerp.com/payroll\");\r\n break;\r\n case \"Task Management\":\r\n window.location.assign(\"http://apps.ezoneerp.com/task-manager/tasks\");\r\n break;\r\n default:\r\n break;\r\n }\r\n return;\r\n }\r\n\r\n setOpen(false);\r\n };\r\n\r\n const handleToggle = () => {\r\n setOpen((prevOpen) => !prevOpen);\r\n };\r\n\r\n return (\r\n <StyledTopBar\r\n display=\"flex\"\r\n justifyContent=\"space-between\"\r\n alignItems=\"center\"\r\n style={{\r\n visibility: props.hidden ? \"hidden\" : \"visible\",\r\n position: props.hidden ? \"relative\" : \"fixed\",\r\n }}\r\n px={3}\r\n py={1}\r\n >\r\n <StyledLogo onClick={() => window.location.assign(\"http://apps.ezoneerp.com/home\")} src={Logo} alt=\"logo\" />\r\n <div ref={anchorRef}>\r\n <Button onClick={handleToggle} endIcon={<IoMdArrowDropdown />}>\r\n <StyledBoldText variant=\"subtitle2\">Applications</StyledBoldText>\r\n </Button>\r\n <DropDown\r\n items={[\r\n \"Home\",\r\n \"Chat\",\r\n \"File Management\",\r\n \"Human Resources\",\r\n \"Payroll\",\r\n \"Task Management\",\r\n ]}\r\n handleListKeyDown={handleListKeyDown}\r\n ref={anchorRef}\r\n open={open}\r\n handleClose={handleClose}\r\n />\r\n </div>\r\n </StyledTopBar>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { Menu, Select, Table } from \"antd\";\r\nimport bellow1 from \"../images/bgs/below1.png\";\r\nimport bellow2 from \"../images/bgs/below2.png\";\r\nimport bellow3 from \"../images/bgs/below3.png\";\r\nimport upper1 from \"../images/bgs/upper1.png\";\r\nimport upper2 from \"../images/bgs/upper2.png\";\r\nimport { MdDashboard, MdLabel } from \"react-icons/md\";\r\nimport { Box } from \"@material-ui/core/\";\r\nimport { StyledLogo, StyledTopBar } from \"./styles\";\r\nimport Logo from \"../images/logo.png\";\r\nimport { TopBar } from \"./TopBar\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst { SubMenu } = Menu;\r\n\r\nconst inventoryLinkObj = [\r\n { name: \"Items\", link: \"/items\" },\r\n { name: \"Item Groups\", link: \"/item-groups\" },\r\n { name: \"Warehouse\", link: \"/warehouse\" },\r\n { name: \"Transfer Orders\", link: \"/transfer-orders\" },\r\n { name: \"Adjustments\", link: \"/inventory-adjustment\" },\r\n];\r\n\r\nconst SalesLinkObj = [\r\n/* { name: \"Sales Orders\", link: \"/sales-orders\" }, */\r\n { name: \"Invoice\", link: \"/invoice\" },\r\n { name: \"Receipts\", link: \"/receipts\" },\r\n];\r\n\r\nconst partiesObj = [\r\n { name: \"Customers\", link: \"/customers\" },\r\n { name: \"Vendors\", link: \"/vendors\" },\r\n];\r\nexport const SideBar = (props) => {\r\n const handleClick = (e) => {};\r\n\r\n const inventoryLink = inventoryLinkObj.map((item, index) => {\r\n return (\r\n <StyledSubMenuItem key={`inventory-${index}`}>\r\n <Link to={item.link}>{item.name}</Link>\r\n </StyledSubMenuItem>\r\n );\r\n });\r\n\r\n const salesLink = SalesLinkObj.map((item, index) => {\r\n return (\r\n <StyledSubMenuItem key={`sales-${index}`}>\r\n <Link to={item.link}>{item.name}</Link>\r\n </StyledSubMenuItem>\r\n );\r\n });\r\n\r\n const partiesLinks = partiesObj.map((item, index) => {\r\n return (\r\n <StyledSubMenuItem key={`parties-${index}`}>\r\n <Link to={item.link}>{item.name}</Link>\r\n </StyledSubMenuItem>\r\n );\r\n });\r\n\r\n return (\r\n <StyledSideBar>\r\n <Box pt={3}>\r\n <TopBar hidden />\r\n <StyledMainMenu\r\n onClick={handleClick}\r\n style={{\r\n width: \"100%\",\r\n backgroundColor: \"transparent\",\r\n color: \"#fff\",\r\n }}\r\n defaultSelectedKeys={[\"1\"]}\r\n defaultOpenKeys={[\"sub1\"]}\r\n mode=\"inline\"\r\n >\r\n <StyledSubMenuItem icon={<MdDashboard />} key=\"1\">\r\n <Link to=\"/\">Dashboard</Link>\r\n </StyledSubMenuItem>\r\n <StyledMenu key=\"sub4\" icon={<MdLabel />} title=\"Inventory\">\r\n {inventoryLink}\r\n </StyledMenu>\r\n <StyledMenu key=\"sub5\" icon={<MdLabel />} title=\"Sales\">\r\n {salesLink}\r\n </StyledMenu>\r\n <StyledMenu key=\"sub6\" icon={<MdLabel />} title=\"Clients\">\r\n {partiesLinks}\r\n </StyledMenu>\r\n </StyledMainMenu>\r\n </Box>\r\n </StyledSideBar>\r\n );\r\n};\r\n\r\nconst StyledMenu = styled(SubMenu)`\r\n background-color: transparent;\r\n color: #fff !important;\r\n font-weight: bold;\r\n &:hover {\r\n color: #fff !important;\r\n }\r\n\r\n & .ant-menu-sub.ant-menu-inline {\r\n background-color: transparent;\r\n color: #fff !important;\r\n\r\n &:hover {\r\n color: #fff !important;\r\n }\r\n }\r\n`;\r\n\r\nconst StyledSideBar = styled(Box)`\r\n width: 17%;\r\n height: 100vh;\r\n position: fixed;\r\n background: linear-gradient(359.88deg, #250943 55.29%, #1702ff 127.12%);\r\n\r\n & > div {\r\n background-image: url(${upper1}), url(${upper2}), url(${bellow1}),\r\n url(${bellow2}), url(${bellow3});\r\n background-position: 50% -5%, 50% -5%, bottom, bottom, bottom;\r\n background-repeat: no-repeat, no-repeat, no-repeat, no-repeat, no-repeat;\r\n height: 100%;\r\n width: 100%;\r\n }\r\n`;\r\n\r\nexport const StyledSubMenuItem = styled(Menu.Item)`\r\n color: ${(props) => props.theme.white} !important;\r\n font-size: 14px !important;\r\n font-weight: bold;\r\n\r\n & a {\r\n color: ${(props) => props.theme.white};\r\n }\r\n\r\n &:hover {\r\n color: ${(props) => props.theme.white} !important;\r\n }\r\n`;\r\n\r\nconst StyledMainMenu = styled(Menu)`\r\n width: 100%;\r\n background-color: transparent;\r\n color: #fff;\r\n`;\r\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATUAAACDCAYAAADs+4zYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAcRSURBVHgB7d3LbhNXHIDx/8w4Jga1JFW5JDvoLtkl3YVFpXhXg6oKkywAiUVUqa+DhChE8ACtqm667wvQHewKO1CVEjs0tFHsOac+U3IhcXzLzPicM99vE8iFRZA/netYBAA8cX/jxmwgAOABE7RyqbxG1AA4by9oEgSTRA2A0x4361eU1ndN0MzfiRoAZz15v7LQaqn64c8RNQBO6hY0g6gBcM76u1tLsdK1bl8jagCcsr69uhy34+pJXydqAJzRL2gGUQPghEGCZhA1ANZ73Fy9qSReHOR7iRoAaz3VX022ti7e0aKvDvozRA2AlR40v54uBZXbWgezw/wcUQNgHRO0SCprnURNy5BKAgAWMfc4I/3/PU4ZASM1ANZIbgnsxtdHDZpB1ABYYdAjG/0QNQBj92hzpaZDtSQpIGoAxmaUIxv9EDUAY3GaHc5eiBqA3B19sGOaiBqAXPV6bFAaiBqA3KS5IXASogYgc6NeeRoFNwoAZCq5ISBlE7RUNwROwkgNQGayXj/rhqgBSF1y/qxxqZr1+lk3RA1AqvJcP+uGNTUAqXn4tj4XaF3Xkv75s0ExUgOQijyOawyCqAE4lXFPN49i+glgZDZMN49ipAZgaOPc3eyHqAEYim3TzaOIGoCBJYdpY1XN4ukaaSFqAPrK4mGOWSFqAHrK8tlnWSBqALqyeTOgF6IG4JhkdCa6nvajtvNA1ADsc3V0dhhRA5BweXR2GFEDCs6H0dlhRA0osOSaU9gZnTmyszkIogYUUHIrQM7ddOHc2bCIGlAw683V5Vi3r/k0OjuMqAEF4ctGQD9EDfBcMtXUZ2s6kDkpAKIGeMrsasZbl5d8nmp2Q9QADz3YqC9GE3rZ96lmN0QN8IhZN9MSVH3c1RwUUQM84PMRjWHxHgWAw0zMJK5UIwkWOkETMFIDnFTUTYBBEDXAIcSsP6IGOMBMM8vyyQIx64+oARYzu5mtWH8ZRcGCYCBEDbAQRzNGR9QAS5j1sp3GxcUolDliNjqiho+YF5bI1GR7a2JaonBSxVLp9f2hqIb5qFrxTvnzzca94LcdwVB+eP/tTNQqz7Felg6iVkBP9TdTu1tnriqlK6VQz3SmOdNaZFpEn/5KjdY7QRhtilLNWOtGaSL6Q+20mt9d+PmNYB+jsuwQNY+ZF05768JMWwWzJl5KgquphGsUJnZB+FqJehlJ8HJt6sdXUkBmrayt9HwYyCKjsmwQNY8kEdu+dKXdir+IouiK1mpWbGUi14mbDsLn5fN/vvB52krI8kXUHHYwEtPz1kesl07gwiB43vnTM19GcIRsfIiaYz5aizER8+4FoxuRlJ7tyt+/fz/1a0McYdYpdxrl+WSar/U8IRsfouaAvRdM0RaVzRpcHMevSmHw3LYR3MFmSzwbhuHc2NYqcQxRsxS7Y0d82GiIlbzojIZel85vvMlrHc4ErL19ZiZZqwzMTnHn/4ORmLWImkUI2XBM5EzsYqXeiIQNEzvz+dL5VuNe8EtzkH9j71ze7l9hJZycmDLn8szoqzM6nOxsYsxoFX9GwNxC1CxgFpU7HxZZi8lAJ3oShP8e/7yq8Lv2E1Ebk4NHyKhOyPSMAEgFUctZclFZyzXWZYBsELUcsFYG5IeoZYinlAL5I2oZME8pDVRlidPkQP6IWop4sB8wfkQtBcQMsAdROwViBtiHqI2AmAH2ImpDIGaA/YjaAIgZ4A6i1oM5mlHSZ2s6kDkB4ASi1oU5NNtqXKrqUC0JAKcQtUO4AQC4j6h98GCjvhhN6OXOr4QnmAIOK3zU2AQA/FKSgjKbABJXqkpkQUQLAD8UbqTGuhngt0JFzUw1leg662aAvwoRteS8mZy7yboZ4D/vo7beXF1mqgkUh7dRY6oJFJN3UeM2AFBsXkUtOUBb0jWmmkBxeRE1NgIA7HE+auvvbi3FsaoyOgNgOBs1RmcAunEyaozOAJzEqagxOgPQjzNRY3QGYBDWR43RGYBhWB01RmcAhmVl1BidARiVdVF7+LY+F4S6zugMwCisiRp3NgGkwYqo8UQNAGkZe9TWt1eX43ZcFQBIwdiixmYAgCyMJWpsBgDISq5RYzMAQNZyi1oy3Qwqt7UOZgUAMpJL1LgZACAvmUaN6SaAvGUWNaabAMYhk6g9eb+y0NqNrzPdBJC31KP2aHOlxnQTwLikFjWmmwBskErUuLsJwBanjlpyXEPpmgCABUaOmjmu0d66XFMSLwoAWGKkqLF+BsBWQ0ctWT/T+i7HNQDYaKiosX4GwHYDRY3rTgBc0TdqrJ8BcEmp1xfvb9yYjaRsgsb5MwBOODFq+/c3hQ0BAO7oOv3kzVAAuOpY1LiQDsBl+1FLdji3Lt7h3Z0AuCyJmtnhjKSyxoV0AK4r7e1wEjQAPiiVz36q49Y/PwkAeOA/d25fCE+qtBcAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { TablePagination } from '@material-ui/core';\r\nimport { StyledTable } from './styles';\r\n\r\nexport const TableWithPagination = (props) => {\r\n return (\r\n <>\r\n <StyledTable pagination={false} onRow={props.onRow} columns={props.columns} dataSource={props.dataSource} />\r\n {!props.hidePagination && <TablePagination\r\n component=\"div\"\r\n count={props.total ?? 100}\r\n page={props.page}\r\n onChangePage={props.handleChangePage}\r\n rowsPerPage={props.rowsPerPage}\r\n onChangeRowsPerPage={props.handleChangeRowsPerPage}\r\n />}\r\n </>\r\n );\r\n};\r\n","import {\r\n StyledPrimaryButton,\r\n StyledTransparentButton,\r\n StyledCancelButton,\r\n} from \"./styles\";\r\nimport * as React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n wrapper: {\r\n /* margin: theme.spacing(1), */\r\n position: \"relative\",\r\n },\r\n buttonProgress: {\r\n color: theme.PrimaryButton,\r\n position: \"absolute\",\r\n top: \"50%\",\r\n left: \"50%\",\r\n marginTop: -12,\r\n marginLeft: -12,\r\n },\r\n}));\r\n\r\nexport const PrimaryButton = (props) => {\r\n const classes = useStyles();\r\n return (\r\n <div className={classes.wrapper}>\r\n <StyledPrimaryButton\r\n disabled={props.loading}\r\n {...props}\r\n variant=\"contained\"\r\n >\r\n {props.text}\r\n </StyledPrimaryButton>\r\n\r\n {props.loading && (\r\n <CircularProgress size={24} className={classes.buttonProgress} />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport const CancelButton = (props) => {\r\n const classes = useStyles();\r\n return (\r\n <div className={classes.wrapper}>\r\n <StyledCancelButton\r\n disabled={props.loading}\r\n {...props}\r\n variant=\"contained\"\r\n >\r\n {props.text}\r\n </StyledCancelButton>\r\n {props.loading && (\r\n <CircularProgress size={24} className={classes.buttonProgress} />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport const TransaparentButton = (props) => {\r\n return (\r\n <StyledTransparentButton\r\n variant=\"outlined\"\r\n endIcon={props.endIcon}\r\n {...props}\r\n >\r\n {props.text}\r\n </StyledTransparentButton>\r\n );\r\n};\r\n","// @flow\r\nimport * as React from 'react';\r\nimport { Select } from 'antd';\r\nimport { StyledInputContainer } from './styles';\r\n\r\nconst { Option } = Select;\r\n\r\nexport const SelectInput = (props) => {\r\n function onChange(value) {\r\n }\r\n\r\n function onBlur() {\r\n console.log('blur');\r\n }\r\n\r\n function onFocus() {\r\n console.log('focus');\r\n }\r\n\r\n function onSearch(val) {\r\n }\r\n\r\n return (\r\n <StyledInputContainer>\r\n <Select\r\n showSearch\r\n bordered={false}\r\n style={{ width: '100%' }}\r\n placeholder=\"Select a person\"\r\n optionFilterProp=\"children\"\r\n onChange={onChange}\r\n onFocus={onFocus}\r\n onBlur={onBlur}\r\n onSearch={onSearch}\r\n filterOption={(input, option) => {\r\n return option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0;\r\n }}>\r\n <Option value=\"jack\">Jack</Option>\r\n <Option value=\"lucy\">Lucy</Option>\r\n <Option value=\"tom\">Tom</Option>\r\n </Select>\r\n </StyledInputContainer>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Typography, Box, Icon } from '@material-ui/core';\r\nimport { StyledCard } from './styles';\r\nimport { PrimaryButton, TransaparentButton } from './Buttons';\r\nimport { SelectInput } from './SelectInput';\r\n\r\nexport const ToolBar = (props) => {\r\n return (\r\n <StyledCard px={3} py={2}>\r\n <Typography variant=\"h6\">{props.title}</Typography>\r\n {props.showtools && (\r\n <>\r\n <Box display=\"flex\" justifyContent=\"flex-end\" alignItems=\"center\">\r\n <PrimaryButton text={props.createButtonText} onClick={props.onCreate} />\r\n </Box>\r\n <Box\r\n mt={2}\r\n display=\"flex\"\r\n justifyContent=\"space-between\"\r\n alignItems=\"center\">\r\n <Box style={{width: '40%'}}> \r\n <SelectInput />\r\n </Box> \r\n \r\n <Box display=\"flex\" justifyContent=\"center\" alignItems=\"center\">\r\n <TransaparentButton\r\n text=\"Import\"\r\n endIcon={<Icon>download</Icon>}\r\n />\r\n <Box ml={2}>\r\n <TransaparentButton\r\n text=\"Export\"\r\n endIcon={<Icon>upload</Icon>}\r\n />\r\n </Box>\r\n </Box>\r\n </Box>\r\n </>\r\n )}\r\n </StyledCard>\r\n );\r\n};\r\n","import styled from 'styled-components';\r\nimport { Box, Button, Typography } from '@material-ui/core';\r\nimport { Table, Form } from 'antd';\r\nimport { getCenter } from '../utils/getCenter';\r\nimport { desktop } from '../globalAssets/fontSize';\r\n\r\nexport const StyledImageDrop = styled(Box)`\r\n border: 2px ${({isImage, theme}) => \r\n isImage? theme.subtleBlack :theme.primaryColor} ${props => props.isImage? 'solid': 'dashed'};\r\n width: 100%;\r\n height: 40vh;\r\n background-color: ${props => props.theme.faintBlue};\r\n ${getCenter({ flexDirection: 'column' })};\r\n \r\n overflow: hidden;\r\n & > :first-child {\r\n font-size: ${desktop.large};\r\n color: ${(props) => props.theme.subtleBlack};\r\n }\r\n`;\r\n\r\nexport const StyledImagePreview = styled(Box)`\r\n width: 100%;\r\n overflow: hidden;\r\n & img {\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n }\r\n`;\r\n\r\nexport const StyledMutedText = styled(Typography)`\r\n color: ${(props) => props.theme.subtleBlack};\r\n`;\r\n\r\nexport const StyledBottomImage = styled(Box)`\r\n cursor: pointer;\r\n margin-left: 8px;\r\n width: 25%;\r\n border: ${(props) =>\r\n props.isActive ? `1px solid ${props.theme.primaryColor}` : 'none'};\r\n overflow: hidden;\r\n height: 10vmin;\r\n\r\n &:first-child {\r\n margin-left: 0px;\r\n }\r\n\r\n & img {\r\n height: auto;\r\n width: 100%;\r\n object-fit: cover;\r\n }\r\n`;\r\n\r\nexport const StyledTable = styled(Table)`\r\n\r\n & .ant-table-row{\r\n color: #fff;\r\n background-color: ${props => props.theme.foreground}; \r\n color: ${props => props.theme.boldText};\r\n \r\n &:nth-child(even){\r\n background-color: ${props => props.theme.faintBlue};\r\n \r\n } \r\n }\r\n\r\n & .ant-table-tbody > tr > td {\r\n border-bottom: none; \r\n }\r\n\r\n & .ant-table-tbody > tr.ant-table-row:hover > td{\r\n background-color: ${props => props.theme.highlight}; \r\n color: ${props => props.theme.boldText};\r\n }\r\n\r\n & .ant-table-thead > tr > td {\r\n border-bottom: none; \r\n\r\n }\r\n\r\n & .ant-table-thead > tr > th{\r\n background-color: ${props => props.theme.foreground}; \r\n color: ${props => props.theme.boldText};\r\n }\r\n\r\n`\r\n","export const getBase64 = file => new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = error => reject(error);\r\n});","\r\n//const hostname = \"https://apps.ezoneerp.com/gateway/inventoryserv/api/v1\";\r\nconst hostname = \"https://dev.ezoneapps.com/gateway/inventoryserv/api/v1\";\r\n\r\nexport default hostname;\r\n\r\n"," const routes = {\r\n createItemGroupRoute: \"/add_item_group\",\r\n getAllItemGroupRoute: \"/get_all_item_groups\",\r\n getItemGroupsByOrgId: (orgId) => `/get_item_group_by_orgid/${orgId}`,\r\n updateItemGroupRoute: (id) => `/update_item_group/${id}`,\r\n getItemGroupNumber: \"/get_number_of_item_groups\",\r\n getSingleItemGroup: (id) => `/get_item_group_by_id/${id}`,\r\n deleteItemGroup: (id) => `/delete_contact_group/${id}`,\r\n addWarehouse: \"/add_warehouse\",\r\n getAllWarehouse: \"/get_all_warehouses\",\r\n deleteWarehouse: (id) => `/delete_warehouse/${id}`,\r\n updateWarehouse: (id) => `/update_warehouse/${id}`,\r\n getSingleWarehouse: (id) => `/get_single_warehouse/${id}`,\r\n itemsRoute: \"/items\",\r\n userProfileRoute: \"/users/profile\",\r\n userByOrgRoute: (orgid) => `/users/get_by_orgid/${orgid}`,\r\n invoiceRoute: \"/invoices\",\r\n customersRoute: \"/customers\",\r\n paymentRoute: \"/payments/invoice_id\",\r\n logoutRoute: \"/logout\",\r\n getSingleInvoice: (id) => `invoices/${id}/single`,\r\n vendorRoute: \"/vendor\",\r\n createReceiptRoute: \"/receipts\",\r\n getAllReceiptsRoute: \"/receipts/getAllReceipts\",\r\n getSingleReceiptRoute: (id) => `/receipts/getReceipts/${id}`,\r\n issueItemRoute: `/issue-items`,\r\n getAllTransfarOrderRoute: `/get_all_transfer_orders`,\r\n addTransfarOrderRoute: `/add_transfer_orders`,\r\n adjustmentsListRoute: `/get_all_adjustments`,\r\n addAdjustmentsRoute: `/add_adjustments`\r\n };\r\n\r\nexport default routes;","import hostname from \"./domain\";\r\nimport routes from \"./routes\";\r\nimport axios from \"axios\";\r\nimport getURLParams from \"./Components/utils/getParams\";\r\nimport { PanoramaSharp } from \"@material-ui/icons\";\r\n\r\n\r\n// export const mainDomain = \"https://api.ezoneerp.com/gateway/inventoryserv/api/v1\";\r\n\r\nexport const mainDomain = \"https://dev.ezoneapps.com/gateway/inventoryserv/api/v1\";\r\n\r\n\r\n\r\nclass Services {\r\n static createItemGroup(payload) {\r\n return axios({\r\n method: \"POST\",\r\n url: `${hostname}${routes.createItemGroupRoute}`,\r\n data: payload.data,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static fetchItemGroupsByOrgId({ page, size, orgId }) {\r\n const params = getURLParams({ page, size });\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.getItemGroupsByOrgId(orgId)}${params}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static fetchItemGroupNumber() {\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.getItemGroupNumber}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static fetchAllItemGroups(payload) {\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.getAllItemGroupRoute}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async updateItemGroups(payload) {\r\n return axios({\r\n method: \"PUT\",\r\n url: `${hostname}${routes.updateItemGroupRoute(payload.id)}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n data: payload.data,\r\n });\r\n }\r\n static async deleteItemGroup(payload) {\r\n return axios({\r\n method: \"DELETE\",\r\n url: `${hostname}${routes.deleteItemGroup(payload.id)}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static fetchSingleItemGroup(payload) {\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.getSingleItemGroup(payload.id)}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async addWarehouse(payload) {\r\n return axios({\r\n method: \"POST\",\r\n url: `${hostname}${routes.addWarehouse}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n data: payload.data,\r\n });\r\n }\r\n\r\n static async getAllWarehouse(payload) {\r\n const params = getURLParams(payload);\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.getAllWarehouse}${params}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async fetchSingleWarehouse(payload) {\r\n console.log(\"...FETCH\");\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.getSingleWarehouse(payload.id)}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async updateWarehouse(payload) {\r\n return axios({\r\n method: \"PUT\",\r\n url: `${hostname}${routes.updateWarehouse(payload.id)}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n data: payload.data,\r\n });\r\n }\r\n\r\n static async deleteWarehouse(payload) {\r\n return axios({\r\n method: \"DELETE\",\r\n url: `${hostname}${routes.deleteWarehouse(payload.id)}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async getAllItems(payload) {\r\n const params = getURLParams(payload);\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.itemsRoute}${params}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async getSingleItem(payload) {\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.itemsRoute}/${payload.id}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async createItem(payload) {\r\n return axios({\r\n method: \"POST\",\r\n url: `${hostname}${routes.itemsRoute}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n data: payload.data,\r\n });\r\n }\r\n\r\n static async deleteItem(payload) {\r\n return axios({\r\n method: \"DELETE\",\r\n url: `${hostname}${routes.itemsRoute}/${payload.id}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async updateItem(payload) {\r\n return axios({\r\n method: \"PUT\",\r\n url: `${hostname}${routes.itemsRouteId}/${payload.id}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n data: payload.data,\r\n });\r\n }\r\n\r\n static async getUserProfile(payload) {\r\n return axios({\r\n method: \"GET\",\r\n url: `${mainDomain}${routes.userProfileRoute}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async getUsersByOrg(payload) {\r\n return axios({\r\n method: \"GET\",\r\n url: `${mainDomain}${routes.userByOrgRoute(\r\n payload.orgId\r\n )}?start=0&limit=10`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async getCustomers(payload) {\r\n const params = getURLParams(payload);\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.customersRoute}${params}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async createCustomers(payload) {\r\n return axios({\r\n method: \"POST\",\r\n url: `${hostname}${routes.customersRoute}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n data: payload.data,\r\n });\r\n }\r\n\r\n static async editCustomers(payload) {\r\n return axios({\r\n method: \"PUT\",\r\n url: `${hostname}${routes.customersRoute}/${payload.id}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n data: payload.data,\r\n });\r\n }\r\n\r\n static async createVendors(payload) {\r\n return axios({\r\n method: \"POST\",\r\n url: `${hostname}${routes.vendorRoute}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n data: payload.data,\r\n });\r\n }\r\n\r\n static async getVendors(payload) {\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.vendorRoute}/listAllVendors/${payload.page}/${payload.size}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async editVendors(payload) {\r\n return axios({\r\n method: \"PUT\",\r\n url: `${hostname}${routes.vendorRoute}/update/${payload.id}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n data: payload.data,\r\n });\r\n }\r\n\r\n static async getAllInvoice(payload) {\r\n const params = getURLParams(payload);\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.invoiceRoute}${params}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async getInvoice(payload) {\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.invoiceRoute}/${payload.id}`,\r\n /* url: `${hostname}/${routes.getSingleInvoice(payload.id)}`, */\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async createInvoice(payload) {\r\n return axios({\r\n method: \"POST\",\r\n url: `${hostname}${routes.invoiceRoute}/customer_id/${payload.id}/add_invoice`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n data: payload.data,\r\n });\r\n }\r\n\r\n static async getPaymentInfo(payload) {\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.paymentRoute}/${payload.id}/init_payment`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async makePayment(payload) {\r\n return axios({\r\n method: \"POST\",\r\n url: `${hostname}${routes.paymentRoute}/${payload.id}/pay`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n data: payload.data,\r\n });\r\n }\r\n\r\n static async logout() {\r\n return axios({\r\n method: \"POST\",\r\n url: `${mainDomain}${routes.logoutRoute}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n //create Receipt\r\n static async createReceipt(payload) {\r\n return axios({\r\n method: \"POST\",\r\n url: `${hostname}${routes.createReceiptRoute}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async getAllReceipt(payload) {\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.getAllReceiptsRoute}/${payload.page}/${payload.size}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async getSingleReceipt(payload) {\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.getSingleReceiptRoute(payload.id)}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n static async issueItem(payload) {\r\n return axios({\r\n method: \"POST\",\r\n url: `${hostname}${routes.issueItemRoute}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n data: payload.data,\r\n });\r\n }\r\n\r\n // get all TRANSFAR ORDER\r\n static async getAllTransfarOrder(payload) {\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.getAllTransfarOrderRoute}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n });\r\n }\r\n\r\n //create transfar order\r\n static async createTransfarOrder(payload) {\r\n return axios({\r\n method: \"POST\",\r\n url: `${hostname}${routes.addTransfarOrderRoute}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n data: payload.data,\r\n });\r\n }\r\n\r\n //add Adjustments\r\n static async createAdjustment(payload) {\r\n return axios({\r\n method: \"POST\",\r\n url: `${hostname}${routes.addAdjustmentsRoute}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken}`,\r\n },\r\n data: payload.data,\r\n });\r\n }\r\n\r\n //Adjustments List\r\n static async getAllAdjustments(payload) {\r\n return axios({\r\n method: \"GET\",\r\n url: `${hostname}${routes.adjustmentsListRoute}`,\r\n headers: {\r\n Authorization: `Bearer ${localStorage.invToken},`,\r\n },\r\n });\r\n }\r\n}\r\n\r\n\r\nexport default Services;\r\n\r\n// /api/v1/add_transfer_orders\r\n\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport Services from \"../../../services\";\r\n\r\nconst warehouseSlice = createSlice({\r\n name: \"warehouseSlice\",\r\n initialState: {\r\n warehouseList: [],\r\n paginationProps: { page: 0, totalPages: 0, totalItems: 0 },\r\n singleWarehouse: {},\r\n },\r\n\r\n reducers: {\r\n addWarehouseList: (state, { payload }) => {\r\n state.warehouseList = payload;\r\n },\r\n\r\n addPaginationProps: (state, { payload }) => {\r\n state.paginationProps = payload;\r\n },\r\n\r\n addSingleWarehouse: (state, { payload }) => {\r\n state.singleWarehouse = payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { addWarehouseList, addPaginationProps, addSingleWarehouse } =\r\n warehouseSlice.actions;\r\n\r\nexport const getAllWarehouse = (payload) => (dispatcher) => {\r\n return Services.getAllWarehouse(payload)\r\n .then((response) => {\r\n const {currentPage: page, totalPages, warehouses} = response.data.data;\r\n dispatcher(addPaginationProps({page, totalPages, totalItems: warehouses.filter(item => !item.delFlag).length}) \r\n );\r\n dispatcher(addWarehouseList(warehouses.filter(item => !item.delFlag)));\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\nexport const createWarehouse = (payload) => (dispatcher) => {\r\n return Services.addWarehouse(payload)\r\n .then((response) => {\r\n return Promise.resolve(response);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\nexport const getSingleWarehouse = (payload) => (dispatcher) => {\r\n return Services.fetchSingleWarehouse(payload)\r\n .then((response) => {\r\n // console.log(response, 'getSingleWarahouse')\r\n dispatcher(addSingleWarehouse(response.data.data));\r\n return Promise.resolve(response);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\nexport const selectWarehouse = (state) => state.warehouseReducer;\r\n\r\nexport default warehouseSlice.reducer;\r\n","import { createSlice } from '@reduxjs/toolkit';\r\nimport Services from '../../../services';\r\n\r\nconst itemSlice = createSlice({\r\n name: 'itemSlice',\r\n initialState: {\r\n itemList: [],\r\n singleItem: {},\r\n paginationProps: { page: 0, totalPages: 0, totalItems: 0 },\r\n },\r\n reducers: {\r\n addItemList: (state, {payload}) => {\r\n state.itemList = payload;\r\n },\r\n addSingleItem: (state, {payload}) => {\r\n state.singleItem = payload;\r\n },\r\n addPaginationProps: (state, {payload}) => {\r\n state.paginationProps = payload;\r\n }\r\n }\r\n})\r\n\r\nexport const { addItemList, addPaginationProps, addSingleItem } = itemSlice.actions;\r\n\r\nexport const fetchAllItems = payload => dispatcher => {\r\n return Services.getAllItems(payload).then(\r\n response => {\r\n console.log(response, 'item234')\r\n const {currentPage: page, totalPages, totalItems, items} = response.data.data;\r\n dispatcher(addPaginationProps({page, totalPages, totalItems}));\r\n dispatcher(addItemList(items.filter(item => !item.delFlag)))\r\n return Promise.resolve(response.data.data);\r\n }\r\n ).catch(error => {\r\n if(error.response){\r\n return Promise.reject(error.response.data);\r\n }\r\n })\r\n}\r\n\r\n\r\nexport const createItem = payload => dispatcher => {\r\n return Services.createItem(payload)\r\n .then((response) => {\r\n return Promise.resolve(response.data.data);\r\n }\r\n ).catch(error => {\r\n if(error.response){\r\n return Promise.reject(error.response.data);\r\n }\r\n })\r\n}\r\n\r\nexport const selectItems = state => state.itemReducer;\r\n\r\nexport default itemSlice.reducer;","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport Services from \"../../../services\";\r\n\r\nconst itemGroupSlice = createSlice({\r\n name: \"itemGroupSlice\",\r\n initialState: {\r\n itemGroupList: [],\r\n paginationProps: { page: 0, totalPages: 0, totalItemGroup: 0 },\r\n singleItemGroup: {},\r\n },\r\n reducers: {\r\n addItemGroup: (state, { payload }) => {\r\n state.itemGroupList = payload;\r\n },\r\n addPaginationProps: (state, { payload }) => {\r\n state.paginationProps = payload;\r\n },\r\n addSingleItemGroup: (state, { payload }) => {\r\n state.singleItemGroup = payload;\r\n },\r\n },\r\n});\r\n\r\nexport const {\r\n addItemGroup,\r\n addPaginationProps,\r\n addSingleItemGroup,\r\n} = itemGroupSlice.actions;\r\n\r\nexport const createItemGroup = (payload) => (dispatcher) => {\r\n return Services.createItemGroup(payload)\r\n .then((response) => { \r\n return Promise.resolve(response.data.data);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\nexport const fetchAllItemGroups = (payload) => (dispatcher) => {\r\n return Services.fetchAllItemGroups(payload)\r\n .then((response) => {\r\n dispatcher(\r\n addItemGroup(response.data.data.filter((item) => !item.delFlag))\r\n );\r\n return Promise.resolve(response.data.data);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n \r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\nexport const fetchItemGroupsByOrg = (payload) => (dispatcher) => {\r\n return Services.fetchItemGroupsByOrgId(payload)\r\n .then((response) => {\r\n const {currentPage: page, totalPages, totalItemGroup, item_group} = response.data;\r\n dispatcher(addPaginationProps({page, totalPages, totalItemGroup}));\r\n dispatcher(addItemGroup(item_group.filter((item) => !item.delFlag)));\r\n return Promise.resolve(item_group.filter(item => !item.delFlag));\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\nexport const fetchSingleItemGroup = (payload) => (dispatcher) => {\r\n return Services.fetchSingleItemGroup(payload)\r\n .then((response) => {\r\n console.log(response.data, 'singleItemGroup222')\r\n dispatcher(addSingleItemGroup(response.data));\r\n return Promise.resolve(response.data);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\nexport const selectItemGroups = (state) => state.itemGroupReducer;\r\n\r\nexport default itemGroupSlice.reducer;\r\n","import React from 'react';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport MuiAlert from '@material-ui/lab/Alert';\r\n\r\nconst Alert = React.forwardRef(function Alert(props, ref) {\r\n return <MuiAlert elevation={6} ref={ref} variant=\"filled\" {...props} />;\r\n});\r\n\r\nexport function Feedback(props) {\r\n const [open, setOpen] = React.useState(false);\r\n\r\n const handleClick = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <Snackbar open={props.open} autoHideDuration={6000} onClose={props.onClose}>\r\n <Alert onClose={props.onClose} severity={props.type} sx={{ width: '100%' }}>\r\n {props.message}\r\n </Alert>\r\n </Snackbar>\r\n \r\n );\r\n}","import Services, { mainDomain } from \"../../services\";\r\n\r\nexport const switchURL = (URL) => {\r\n return mainDomain.split(\"api\").length > 2\r\n ? URL.replace(/dev/, \"apps\")\r\n : URL.replace(/apps/, \"dev\");\r\n };","import { createSlice } from '@reduxjs/toolkit';\r\nimport Services from '../../services';\r\nimport { switchURL } from '../utils/switchURL';\r\n\r\nconst dashboardSlice = createSlice({\r\n name: 'dashboardSlice',\r\n initialState: {\r\n usersByOrg: [],\r\n userProfile:{},\r\n itemGroupCount: 0,\r\n },\r\n reducers: {\r\n addUserProfile: (state, {payload}) => {\r\n state.userProfile = payload;\r\n },\r\n addUsersByOrg: (state, { payload }) => {\r\n state.usersByOrg = payload;\r\n }\r\n }\r\n});\r\n\r\nexport const { addUserProfile, addUsersByOrg } = dashboardSlice.actions;\r\n\r\nexport const getUsersByOrg = payload => dispatcher => {\r\n return Services.getUsersByOrg(payload).then(\r\n response => {\r\n dispatcher(addUsersByOrg(response.data));\r\n }\r\n ).catch(error => {\r\n if(error.response){\r\n Promise.reject(error.response.data)\r\n }\r\n })\r\n}\r\n\r\n\r\nexport const getUserProfile = payload => dispatcher => {\r\n return Services.getUserProfile(payload).then(\r\n response => {\r\n dispatcher(addUserProfile(response.data));\r\n dispatcher(getUsersByOrg({orgId: response.data.organisation.orgId}));\r\n return Promise.resolve(response.data);\r\n }\r\n ).catch(error => {\r\n if(error.response){\r\n console.log(error.response.status);\r\n if(error.response.status === 401){\r\n window.location.assign(switchURL(\"http://apps.ezoneerp.com/login\"));\r\n }\r\n return Promise.reject(error.response.data)\r\n }\r\n })\r\n}\r\n\r\nexport const getItemGroupNumber = payload => dispatcher => {\r\n return Services.fetchItemGroupNumber().then(\r\n response => {\r\n console.log('STAT',response);\r\n }\r\n ).catch(error => {\r\n if(error.response){\r\n return Promise.reject(error.response.data)\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\nexport const selectDashboard = state => state.dashboardReducer;\r\n\r\nexport default dashboardSlice.reducer;\r\n\r\n","export const convertStringToNumber = (obj) => {\r\n return Object.fromEntries(\r\n Object.entries(obj).map((val) => {\r\n if (!isNaN(val[1] * 1)) {\r\n val[1] = parseInt(val[1]).toFixed() * 1;\r\n }\r\n return val;\r\n })\r\n );\r\n}","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport Services from \"../../../services\";\r\n\r\nconst vendorSlice = createSlice({\r\n name: \"vendorSlice\",\r\n initialState: {\r\n vendorList: [],\r\n paginationProps: { page: 0, totalPages: 0, totalItems: 0 },\r\n },\r\n\r\n reducers: {\r\n addVendorList: (state, { payload }) => {\r\n state.vendorList = payload;\r\n },\r\n\r\n addPaginationProps: (state, { payload }) => {\r\n state.paginationProps = payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { addVendorList, addPaginationProps } =\r\nvendorSlice.actions;\r\n\r\nexport const getAllVendor = (payload) => (dispatcher) => {\r\n return Services.getVendors(payload)\r\n .then((response) => {\r\n const {currentPage: page, totalPages, totalVendors: totalItems, vendors} = response.data;\r\n dispatcher(addPaginationProps({page, totalPages, totalItems}));\r\n dispatcher(addVendorList(vendors));\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n console.log(error.response.status);\r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\nexport const createVendor = (payload) => (dispatcher) => {\r\n return Services.createVendors(payload)\r\n .then((response) => {\r\n return Promise.resolve(response);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\nexport const selectVendor = (state) => state.vendorReducer;\r\n\r\nexport default vendorSlice.reducer;\r\n","import React, { useState, useCallback } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { ToolBar } from \"../../globalComponents/ToolBar\";\r\nimport { Form, Input, Select, Row, Col, Space, DatePicker } from \"antd\";\r\nimport { StyledCard } from \"../../globalComponents/styles\";\r\nimport { useHistory } from \"react-router\";\r\nimport {\r\n Box,\r\n Grid,\r\n Typography,\r\n Checkbox,\r\n withStyles,\r\n Collapse,\r\n} from \"@material-ui/core\";\r\n\r\nimport {\r\n PrimaryButton,\r\n TransaparentButton,\r\n} from \"../../globalComponents/Buttons\";\r\nimport {\r\n StyledInputContainer,\r\n StyleLabel,\r\n\r\n StyledNormalText,\r\n} from \"../../globalComponents/styles\";\r\nimport {\r\n StyledImagePreview,\r\n StyledImageDrop,\r\n StyledMutedText,\r\n StyledBottomImage,\r\n} from \"../styles\";\r\nimport { FiCamera, FiPlus } from \"react-icons/fi\";\r\nimport { useDropzone } from \"react-dropzone\";\r\nimport { getBase64 } from \"../../utils/getBase64\";\r\nimport { selectWarehouse } from \"../Warehouse/slice\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { createItem, fetchAllItems } from \"./slice\";\r\nimport { selectItemGroups } from \"../ItemGroups/slice\";\r\nimport { Feedback } from \"../../globalComponents/Feedback\";\r\nimport { selectDashboard } from \"../../Dashboard/slice\";\r\nimport { convertStringToNumber } from \"../../utils/convertStringToNumber\";\r\nimport { selectVendor } from '../../Clients/Vendors/slice';\r\nconst { TextArea } = Input;\r\nconst { Option } = Select;\r\n\r\nconst CheckboxWithStyle = withStyles((theme) => ({\r\n root: {\r\n color: theme.boldText,\r\n \"&$checked\": {\r\n color: theme.boldText,\r\n },\r\n },\r\n}))((props) => <Checkbox color=\"default\" {...props} />);\r\n\r\nconst layout = {\r\n labelCol: { span: 24 },\r\n wrapperCol: { span: 24 },\r\n};\r\n\r\nconst formFields1 = [\r\n { name: \"itemName\", label: \"Item Name\", isRequired: true, type: \"text\" },\r\n { name: \"sku\", label: \"SKU\", isRequired: false, type: \"text\" },\r\n { name: \"itemGroup\", label: \"Item Group\", isRequired: false, type: \"select\" },\r\n { name: \"itemType\", label: \"Item Type\", isRequired: false, type: \"select\" },\r\n {\r\n name: \"itemCategory\",\r\n label: \"Item Category\",\r\n isRequired: true,\r\n type: \"select\",\r\n },\r\n {\r\n name: \"description\",\r\n label: \"Description\",\r\n isRequired: false,\r\n type: \"textarea\",\r\n },\r\n];\r\n\r\nconst formFields2 = [\r\n {\r\n name: \"partNumber\",\r\n label: \"Part Number\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n {\r\n name: \"sellingPrice\",\r\n label: \"Selling Price\",\r\n isRequired: true,\r\n type: \"number\",\r\n },\r\n { name: \"costPrice\", label: \"Cost Price\", isRequired: false, type: \"number\" },\r\n {\r\n name: \"unit\",\r\n label: \"Unit\",\r\n isRequired: true,\r\n type: \"select\",\r\n },\r\n {\r\n name: \"itemDimension\",\r\n label: \"Dimension\",\r\n isRequired: false,\r\n type: \"text\",\r\n },\r\n {\r\n name: \"lastUnitCost\",\r\n label: \"Last Unit Cost\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n { name: \"itemWeight\", label: \"Weight\", isRequired: false, type: \"number\" },\r\n];\r\n\r\nconst warehouseFields = [\r\n { name: \"warehouse1\", label: \"Warehouse\", isRequired: true, type: \"select\" },\r\n {\r\n name: \"openStock1\",\r\n label: \"Opening Stock\",\r\n isRequired: true,\r\n type: \"number\",\r\n },\r\n];\r\n\r\nconst sales = [\r\n {\r\n name: \"salesAccountId\",\r\n label: \"Sales Account\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n];\r\n\r\nconst purchase = [\r\n {\r\n name: \"purchaseAccountId\",\r\n label: \"Purchase Account\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n];\r\n\r\nconst inventoryAcct = [\r\n {\r\n name: \"inventoryAccountId\",\r\n label: \"Inventory Account\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n];\r\n\r\nconst taxAcct = [\r\n {\r\n name: \"taxAccountId\",\r\n label: \"Tax Account\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n];\r\n\r\nconst reorder = [\r\n {\r\n name: \"reOrderPoint\",\r\n label: \"Reorder point\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n {\r\n name: \"reOrderQuantity\",\r\n label: \"Reorder Quantity\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n {\r\n name: \"maxInventory\",\r\n label: \"Maximum Inventory\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n];\r\n\r\nconst vendor = [\r\n {\r\n name: \"vendorId\",\r\n label: \"Preferred Vendor\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n];\r\n\r\n\r\n\r\nconst missingParams = {\r\n accountId: 5,\r\n wareHouseId: 2,\r\n barcode: \"sdfsdf\",\r\n manufacturer: \"jqjdijqefok\",\r\n trashed: false,\r\n fileFormat: \"ijqwpokwep\",\r\n fileUrl: \"sadfaijosdf\",\r\n quantity: 432,\r\n accountingNumber: 4232342,\r\n /* vendorId: 2, */\r\n};\r\n\r\n//item Category\r\nconst itemCategoryEnum = [\r\n { value: \"STOCK_ITEM\", name: \"Stock Item\" },\r\n { value: \"COMPONENT_ITEM\", name: \"Component Item\" },\r\n];\r\n\r\n//item Type\r\nconst itemTypeEnum = [\r\n { value: \"GOODS\", name: \"Goods\" },\r\n { value: \"SERVICE\", name: \"Service\" },\r\n];\r\n\r\nconst units = [\"Pieces\", \"Kg\", \"Dozen\", \"Packs\"];\r\n\r\nexport const AddItem = (props) => {\r\n const [warehouseState, setWarehouseState] = useState(warehouseFields);\r\n const [openAccounting, setOpenAccounting] = useState(false);\r\n const [selectValues, setSelectValues] = useState({});\r\n const [imageArr, setImageArr] = useState([]);\r\n const [buttonLoading, setButtonLoading] = useState(false);\r\n const [feedbackProps, setFeedbackProps] = useState({\r\n open: false,\r\n type: \"\",\r\n message: \"\",\r\n });\r\n //useSelector\r\n const { warehouseList } = useSelector(selectWarehouse);\r\n const { itemGroupList } = useSelector(selectItemGroups);\r\n const { vendorList } = useSelector(selectVendor);\r\n const { userProfile } = useSelector(selectDashboard);\r\n\r\n const [form] = Form.useForm();\r\n const history = useHistory();\r\n const dispatcher = useDispatch();\r\n\r\n //\r\n // console.log(warehouseList, 'warehouseList');\r\n // console.log(itemGroupList, 'itemGroupList');\r\n // console.log(vendorList, \"vendorList\");\r\n //vendor list\r\n const vendorListOption = vendorList.map((item, index) => {\r\n return (\r\n <Option key={index} value={item.id}>\r\n {`${item.firstName} ${item.lastName}`}\r\n </Option>\r\n );\r\n });\r\n //warehouse list\r\n const warehouseOptions = warehouseList.map((item, index) => {\r\n return (\r\n <Option key={index} value={item.id}>\r\n {item.name ?? `item${index}`}\r\n </Option>\r\n );\r\n });\r\n // Item category\r\n const itemCategoryOptions = itemCategoryEnum.map((item, index) => {\r\n return (\r\n <Option value={item.value} key={index}>\r\n {item.name}\r\n </Option>\r\n );\r\n });\r\n\r\n //Item Type\r\n const itemTypeOptions = itemTypeEnum.map((item, index) => {\r\n return (\r\n <Option value={item.value} key={index}>\r\n {item.name}\r\n </Option>\r\n );\r\n });\r\n\r\n // Item Group(useSelector)\r\n const itemGroupOption = itemGroupList.map((item, index) => {\r\n return (\r\n <Option key={index} value={item.id}>\r\n {item.groupName}\r\n </Option>\r\n );\r\n });\r\n\r\n const unitsOption = units.map((item, index) => {\r\n return (\r\n <Option value={item} key={index}>\r\n {item}\r\n </Option>\r\n );\r\n });\r\n\r\n const handleSelectChange = (selectName) => (value) => {\r\n const prevSelectValues = { ...selectValues };\r\n prevSelectValues[selectName] = value;\r\n setSelectValues(prevSelectValues);\r\n };\r\n\r\n const firstSection = formFields1.map((item, index) => {\r\n if (item.name === \"itemCategory\") {\r\n return getInput(item, handleSelectChange, itemCategoryOptions);\r\n }\r\n\r\n if (item.name === \"itemType\") {\r\n return getInput(item, handleSelectChange, itemTypeOptions);\r\n }\r\n\r\n if (item.name === \"itemGroup\") {\r\n return getInput(item, handleSelectChange, itemGroupOption);\r\n }\r\n\r\n return getInput(item);\r\n });\r\n\r\n const secondSection = formFields2.map((item, index) => {\r\n return <Col sm={12}>{getInput(item, handleSelectChange, unitsOption)}</Col>;\r\n });\r\n\r\n const warehouseStateList = [...warehouseState].map((item) => {\r\n return (\r\n <Col sm={12}>{getInput(item, handleSelectChange, warehouseOptions)}</Col>\r\n );\r\n });\r\n\r\n const salesAccountList = sales.map((item) =>\r\n getInput(item, handleSelectChange)\r\n );\r\n\r\n const purchaseAccountList = purchase.map((item) =>\r\n getInput(item, handleSelectChange)\r\n );\r\n\r\n const inventoryAccountList = inventoryAcct.map((item) =>\r\n getInput(item, handleSelectChange)\r\n );\r\n\r\n const taxAccountList = taxAcct.map((item) =>\r\n getInput(item, handleSelectChange)\r\n );\r\n\r\n const reorderList = reorder.map((item) => {\r\n return <Col xs={8}>{getInput(item, handleSelectChange)}</Col>;\r\n });\r\n\r\n const vendorInputList = vendor.map((item) => getInput(item, handleSelectChange, vendorListOption));\r\n\r\n const handleAddWarehouse = () => {\r\n const prevWarehouse = [...warehouseState];\r\n const newWarehouse = [\r\n {\r\n name: `warehouse1${prevWarehouse.length}`,\r\n label: \"Warehouse\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n {\r\n name: `openStock1${prevWarehouse.length}`,\r\n label: \"Opening Stock\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n ];\r\n\r\n setWarehouseState((prevState) => [...prevState, ...newWarehouse]);\r\n };\r\n\r\n const handleOpenAccounting = (e) => {\r\n setOpenAccounting(e.target.checked);\r\n };\r\n\r\n //come back to this for debug images\r\n const onFinish = async (values) => {\r\n try {\r\n setButtonLoading(true);\r\n\r\n const selectInputValues = { ...selectValues };\r\n\r\n const formattedValues = Object.fromEntries(\r\n Object.entries(values).map(([key, value]) => {\r\n value = selectInputValues[key] ?? value;\r\n return [key, value];\r\n })\r\n );\r\n\r\n const itemStocks = Object.entries(formattedValues).filter(\r\n ([key, value]) => key.startsWith(\"openStock\")\r\n );\r\n\r\n const itemStockWithWarehouse = Object.entries(formattedValues)\r\n .filter(([key, value]) => key.startsWith(\"warehouse\"))\r\n .map(([warehouseKey, warehouseValue], index) => {\r\n const [stockKey, stockValue] = itemStocks[index];\r\n return { warehouseID: warehouseValue, openingStock: stockValue };\r\n });\r\n\r\n let valuesWithoutItemStockAndWarehouse = Object.fromEntries(\r\n Object.entries(formattedValues).filter(\r\n ([key, value]) =>\r\n !key.startsWith(\"openStock\") && !key.startsWith(\"warehouse\")\r\n )\r\n );\r\n\r\n valuesWithoutItemStockAndWarehouse.wareHouseRequest =\r\n itemStockWithWarehouse;\r\n const refineImage = [...imageArr].map((item) => ({ productImage: item }));\r\n\r\n valuesWithoutItemStockAndWarehouse.imageList = refineImage;\r\n valuesWithoutItemStockAndWarehouse.orgId =\r\n userProfile?.organisation?.orgId;\r\n valuesWithoutItemStockAndWarehouse = Object.fromEntries(\r\n Object.entries(valuesWithoutItemStockAndWarehouse).filter(\r\n ([key, value]) => value !== undefined\r\n )\r\n );\r\n valuesWithoutItemStockAndWarehouse.purchaseAccountId = 34;\r\n valuesWithoutItemStockAndWarehouse.salesAccountId = 54;\r\n const refinedValues = convertStringToNumber(\r\n valuesWithoutItemStockAndWarehouse\r\n );\r\n // console.log({values}, 'values');\r\n await dispatcher(\r\n createItem({ data: { ...refinedValues, ...missingParams, values } })\r\n );\r\n await dispatcher(fetchAllItems({}));\r\n setButtonLoading(false);\r\n setFeedbackProps((prevState) => ({\r\n ...prevState,\r\n message: \"Item has been created\",\r\n open: true,\r\n type: \"success\",\r\n }));\r\n history.push(\"/items\");\r\n } catch (error) {\r\n console.log(error);\r\n setButtonLoading(false);\r\n setFeedbackProps((prevState) => ({\r\n ...prevState,\r\n message: error?.message ?? \"Error Occurred, please try again later\",\r\n open: true,\r\n type: \"error\",\r\n }));\r\n }\r\n };\r\n\r\n const getImage = (imageBase64Arr) => {\r\n setImageArr(imageBase64Arr);\r\n };\r\n\r\n return (\r\n <>\r\n <ToolBar title=\"Add Item\" />\r\n <Form onFinish={onFinish} {...layout} form={form}>\r\n <StyledCard mt={2} py={3} px={4} display=\"flex\">\r\n <Grid item xs={6}>\r\n <ItemImageComponent getImage={getImage} imageArr={imageArr} />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <Box px={3}>{firstSection}</Box>\r\n </Grid>\r\n </StyledCard>\r\n <StyledCard mt={2} py={3} px={4} display=\"flex\">\r\n <Grid item xs={12}>\r\n <Box px={3}>\r\n <Row gutter={16}>{secondSection}</Row>\r\n </Box>\r\n </Grid>\r\n </StyledCard>\r\n <StyledCard mt={2} py={3} px={4} display=\"flex\">\r\n <Grid item xs={12}>\r\n <Box px={3}>\r\n <Typography variant=\"subtitle1\">Warehouse</Typography>\r\n </Box>\r\n <Box px={3} mt={2}>\r\n <Row gutter={16}>{warehouseStateList}</Row>\r\n </Box>\r\n <Box px={3} mt={2}>\r\n <PrimaryButton\r\n text=\"Add Warehouse\"\r\n onClick={handleAddWarehouse}\r\n />\r\n </Box>\r\n </Grid>\r\n </StyledCard>\r\n <StyledCard mb={2} mt={2} py={3} px={4} display=\"flex\">\r\n <Grid item xs={12}>\r\n <Box display=\"flex\" px={2} alignItems=\"center\">\r\n <CheckboxWithStyle onChange={handleOpenAccounting} />\r\n <Typography variant=\"subtitle1\">Inventory Accounting</Typography>\r\n </Box>\r\n <Collapse in={openAccounting}>\r\n <Box px={3} mt={6}>\r\n <Row gutter={16}>\r\n <Col xs={12}>\r\n <Box mb={6}>\r\n <Box mb={2}>\r\n <Typography gutterBottom={true} variant=\"subtitle2\">\r\n {\" \"}\r\n Sales{\" \"}\r\n </Typography>\r\n </Box>\r\n {salesAccountList}\r\n </Box>\r\n <Box>\r\n <Box mb={2}>\r\n <Typography gutterBottom={true} variant=\"subtitle2\">\r\n {\" \"}\r\n Inventory{\" \"}\r\n </Typography>\r\n </Box>\r\n {inventoryAccountList}\r\n </Box>\r\n </Col>\r\n <Col xs={12} pt=\"2\">\r\n <Box mb={6}>\r\n <Box mb={2}>\r\n <Typography gutterBottom={true} variant=\"subtitle2\">\r\n {\" \"}\r\n Purchase{\" \"}\r\n </Typography>\r\n </Box>\r\n {purchaseAccountList}\r\n </Box>\r\n <Box mb={2}>\r\n <Typography gutterBottom={true} variant=\"subtitle2\">\r\n {\" \"}\r\n Tax{\" \"}\r\n </Typography>\r\n </Box>\r\n {taxAccountList}\r\n </Col>\r\n </Row>\r\n </Box>\r\n </Collapse>\r\n </Grid>\r\n </StyledCard>\r\n <StyledCard>\r\n <Box pt={4} px={6}>\r\n <Typography variant=\"subtitle1\">\r\n Reorder point Parameters\r\n </Typography>\r\n </Box>\r\n <Box px={6}>\r\n <Row gutter={16}>{reorderList}</Row>\r\n </Box>\r\n </StyledCard>\r\n <StyledCard>\r\n <Grid xs={6}>\r\n <Box pt={4} px={6} mt={2}>\r\n {vendorInputList}\r\n </Box>\r\n </Grid>\r\n <Grid xs={12}>\r\n <Box pb={6} mt={6} display=\"flex\" justifyContent=\"center\">\r\n <TransaparentButton\r\n style={{ width: \"30%\", marginRight: \"20px\" }}\r\n text=\"Cancel\"\r\n />\r\n <PrimaryButton\r\n style={{ width: \"30%\" }}\r\n text=\"Save\"\r\n type=\"submit\"\r\n loading={buttonLoading}\r\n />\r\n </Box>\r\n </Grid>\r\n </StyledCard>\r\n </Form>\r\n <Feedback\r\n open={feedbackProps.open}\r\n message={feedbackProps.message}\r\n type={feedbackProps.type}\r\n onClose={() =>\r\n setFeedbackProps((prevState) => ({ ...prevState, open: false }))\r\n }\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport const ItemImageComponent = (props) => {\r\n const [activeImage, setActiveImage] = useState(0);\r\n\r\n const onDrop = useCallback((acceptedFiles) => {\r\n let newImages = [];\r\n acceptedFiles.slice(0, 3).forEach(async (file, index) => {\r\n const response = await getBase64(file).catch((e) => console.log(e));\r\n newImages = [...newImages, response];\r\n\r\n if (newImages.length === acceptedFiles.slice(0, 3).length) {\r\n props.getImage(newImages);\r\n /* setImagesState(newImages); */\r\n }\r\n });\r\n }, []);\r\n\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });\r\n\r\n const imageList = [...props.imageArr].map((item, index) => {\r\n return (\r\n <StyledBottomImage\r\n key={index}\r\n onClick={() => setActiveImage(index)}\r\n isActive={activeImage === index}\r\n >\r\n <img src={props.imageArr[index]} alt=\"\" />\r\n </StyledBottomImage>\r\n );\r\n });\r\n\r\n return (\r\n <>\r\n <Box px={3} pt={2}>\r\n <StyledImageDrop isImage={props.imageArr.length} {...getRootProps()}>\r\n <input {...getInputProps()} />\r\n {isDragActive ? (\r\n <p>Drop the image(s) here ...</p>\r\n ) : !props.imageArr.length ? (\r\n <>\r\n <FiCamera />\r\n <StyledMutedText variant=\"body1\">\r\n Drag image to upload\r\n </StyledMutedText>\r\n <Box mt={2}>\r\n <PrimaryButton text=\"Choose Image\" />\r\n </Box>\r\n </>\r\n ) : (\r\n <StyledImagePreview>\r\n <img src={props.imageArr[activeImage]} alt=\"\" />\r\n </StyledImagePreview>\r\n )}\r\n </StyledImageDrop>\r\n </Box>\r\n {!props.hideFooterText && (\r\n <Box px={3}>\r\n <Typography variant=\"caption\">You can add up to 3 images</Typography>\r\n </Box>\r\n )}\r\n <Box mt={3} px={3} display=\"flex\" alignItems=\"center\">\r\n {imageList}\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport const getInput = (\r\n inputObject,\r\n onChange,\r\n selectOptions = [],\r\n searchObject = {},\r\n onFooterClicked\r\n) => {\r\n if (\r\n inputObject.type === \"text\" ||\r\n inputObject.type === \"number\" ||\r\n inputObject.type === \"phone\"\r\n ) {\r\n return (\r\n <Form.Item\r\n key={inputObject.name}\r\n name={inputObject.name}\r\n label={<StyleLabel>{inputObject.label}</StyleLabel>}\r\n rules={[{ required: inputObject.isRequired }]}\r\n >\r\n <StyledInputContainer>\r\n <Input\r\n required={inputObject.isRequired}\r\n type={inputObject.type}\r\n disabled={inputObject.disabled}\r\n defaultValue={inputObject.defaultValue}\r\n bordered={false}\r\n />\r\n </StyledInputContainer>\r\n </Form.Item>\r\n );\r\n } else if (inputObject.type === \"textarea\") {\r\n return (\r\n <Form.Item\r\n key={inputObject.name}\r\n name={inputObject.name}\r\n label={<StyleLabel>{inputObject.label}</StyleLabel>}\r\n rules={[{ required: inputObject.isRequired }]}\r\n >\r\n <StyledInputContainer>\r\n <TextArea\r\n defaultValue={inputObject.defaultValue}\r\n bordered={false}\r\n autoSize={{ minRows: 3 }}\r\n />\r\n </StyledInputContainer>\r\n </Form.Item>\r\n );\r\n } else if (inputObject.type === \"select\") {\r\n return (\r\n <Form.Item\r\n key={inputObject.name}\r\n name={inputObject.name}\r\n label={<StyleLabel>{inputObject.label}</StyleLabel>}\r\n rules={[{ required: inputObject.isRequired }]}\r\n >\r\n {/* <StyledInputContainer> */}\r\n <StyledSelectInput\r\n /* required={true} */\r\n placeholder={`Select ${inputObject.label}`}\r\n style={{ width: \"100%\", textAlign: \"left\" }}\r\n bordered={false}\r\n onChange={onChange(inputObject.name)}\r\n defaultValue={inputObject.defaultValue}\r\n >\r\n {selectOptions.length > 0 ? (\r\n selectOptions\r\n ) : (\r\n <>\r\n <Option value=\"jack\">Jack</Option>\r\n <Option value=\"lucy\">Lucy</Option>\r\n <Option value=\"disabled\" disabled>\r\n Disabled\r\n </Option>\r\n <Option value=\"Yiminghe\">yiminghe</Option>\r\n </>\r\n )}\r\n </StyledSelectInput>\r\n {/* </StyledInputContainer> */}\r\n </Form.Item>\r\n );\r\n } else if (inputObject.type === \"date\") {\r\n return (\r\n <Form.Item\r\n key={inputObject.name}\r\n name={inputObject.name}\r\n label={<StyleLabel>{inputObject.label}</StyleLabel>}\r\n rules={[{ required: inputObject.isRequired }]}\r\n >\r\n <StyledInputContainer>\r\n <DatePicker\r\n onChange={onChange(inputObject.name)}\r\n defaultValue={inputObject.defaultValue}\r\n placeholder=\"\"\r\n style={{ width: \"100%\" }}\r\n bordered={false}\r\n />\r\n </StyledInputContainer>\r\n </Form.Item>\r\n );\r\n } else if (inputObject.type === \"search\") {\r\n return (\r\n <Form.Item\r\n key={inputObject.name}\r\n name={inputObject.name}\r\n label={<StyleLabel>{inputObject.label}</StyleLabel>}\r\n rules={[{ required: inputObject.isRequired }]}\r\n >\r\n <StyledInputContainer>\r\n <Select\r\n showSearch\r\n style={{ width: \"100%\", textAlign: \"left\" }}\r\n placeholder={`Select ${inputObject.label}`}\r\n bordered={false}\r\n optionFilterProp=\"children\"\r\n onChange={onChange(inputObject.name)}\r\n onFocus={searchObject?.onFocus}\r\n onBlur={searchObject?.onBlur}\r\n onSearch={searchObject?.onSearch}\r\n filterOption={(input, option) => {\r\n return (\r\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\r\n );\r\n }}\r\n defaultValue={inputObject.defaultValue}\r\n >\r\n {selectOptions.length > 0 ? (\r\n selectOptions\r\n ) : (\r\n <>\r\n <Option value=\"jack\">Jack</Option>\r\n <Option value=\"lucy\">Lucy</Option>\r\n <Option value=\"disabled\" disabled>\r\n Disabled\r\n </Option>\r\n <Option value=\"Yiminghe\">yiminghe</Option>\r\n </>\r\n )}\r\n </Select>\r\n </StyledInputContainer>\r\n {onFooterClicked && (\r\n <Box\r\n onClick={() => onFooterClicked(inputObject.name)}\r\n style={{ cursor: \"pointer\", color: \"red\" }}\r\n mt={1}\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"flex-end\"\r\n >\r\n <FiPlus />\r\n <StyledNormalText style={{ color: \"red\" }} variant=\"caption\">\r\n Add Customer\r\n </StyledNormalText>\r\n </Box>\r\n )}\r\n </Form.Item>\r\n );\r\n }\r\n};\r\n\r\nconst StyledSelect = styled(Select)`\r\n /* border: 1px solid ${(props) => props.theme.border}; */\r\n width: 100%;\r\n padding: 4px;\r\n border-radius: 5px;\r\n & .ant-select:not(.ant-select-disabled):hover .ant-select-selector {\r\n border-color: ${(props) => props.theme.border} !important;\r\n padding: 4px !important;\r\n border-radius: 5px !important;\r\n }\r\n\r\n & .ant-form-item .ant-select, .ant-form-item .ant-cascader-picker{\r\n border-color: ${(props) => props.theme.border} !important;\r\n padding: 4px !important;\r\n border-radius: 5px !important;\r\n }\r\n & p {\r\n color: ${(props) => props.theme.lightText};\r\n }\r\n`;\r\n\r\nexport const StyledSelectInput = styled(Select)`\r\n border: 1px solid ${(props) => props.theme.border};\r\n background-color: ${props => props.theme.secondaryColor};\r\n box-shadow: none;\r\n padding: 4px;\r\n border-radius: 5px !important;\r\n\r\n &:focus, &:hover{\r\n /* border: 1px solid ${props => props.theme.primaryColor}; */\r\n /* background-color: ${props => props.theme.secondaryColor}; */\r\n outline: 0;\r\n }\r\n\r\n\r\n `\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { ToolBar } from \"../../globalComponents/ToolBar\";\r\nimport { Row, Col } from \"antd\";\r\nimport { StyledCard } from \"../../globalComponents/styles\";\r\nimport { useParams } from \"react-router\";\r\nimport { Box, Grid } from \"@material-ui/core\";\r\nimport {\r\n StyledNormalText,\r\n StyledBoldText,\r\n} from \"../../globalComponents/styles\";\r\nimport Services from \"../../../services\";\r\nimport { ItemImageComponent } from './AddItem';\r\n\r\nconst firstSegment = [\r\n {\r\n title: \"Item Name\",\r\n value: \"Mike Bamidele\",\r\n key: \"itemName\",\r\n },\r\n {\r\n title: \"Item ID\",\r\n value: \"Lucas John\",\r\n key: \"id\",\r\n },\r\n {\r\n title: \"Item Category\",\r\n value: \"Service\",\r\n key: \"itemCategory\",\r\n },\r\n { key: \"itemGroup\", title: \"Item Group\", value: \"\" },\r\n { key: \"itemType\", title: \"Item Type\", value: \"\" },\r\n {\r\n title: \"SKU/UPC\",\r\n value: \"dd/mm/yy\",\r\n key: \"sku\",\r\n },\r\n {\r\n title: \"Description\",\r\n value:\r\n \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Convallis tempor, tincidunt. Eget molestie placerat mattis sed eget hendrerit quam leo eget.\",\r\n key: \"description\",\r\n },\r\n];\r\n\r\nconst secondSegment = [\r\n {\r\n key: \"partNumber\",\r\n title: \"Part Number\",\r\n value: \"\",\r\n },\r\n {\r\n key: \"sellingPrice\",\r\n title: \"Selling Price\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n { key: \"costPrice\", title: \"Cost Price\", isRequired: false, type: \"number\" },\r\n {\r\n key: \"unit\",\r\n title: \"Unit\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n {\r\n key: \"itemDimension\",\r\n title: \"Dimension\",\r\n isRequired: false,\r\n type: \"text\",\r\n },\r\n {\r\n key: \"lastUnitCost\",\r\n title: \"Last Unit Cost\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n { key: \"itemWeight\", title: \"Weight\", isRequired: false, type: \"number\" },\r\n];\r\n\r\nconst stock = [\r\n {\r\n title: \"Quantity on Hand\",\r\n value: \"2000\",\r\n key: \"quantity\",\r\n },\r\n {\r\n title: \"Reorder Level\",\r\n value: \"20\",\r\n key: \"reOrderPoint\",\r\n },\r\n /* {\r\n title: 'Opening Stock',\r\n value: '40',\r\n key: 'openingStock'\r\n }, */\r\n];\r\n\r\nconst sales = [\r\n {\r\n title: \"Sales Account\",\r\n value: \"Income\",\r\n key: \"salesAccountId\",\r\n },\r\n \r\n];\r\n\r\nconst purchase = [\r\n {\r\n title: \"Purchase Account\",\r\n value: \"Cost of good sold\",\r\n key: \"purchaseAccountId\",\r\n },\r\n \r\n];\r\n\r\nconst inventory = [\r\n {\r\n title: \"Inventory Account\",\r\n value: \"Income\",\r\n key: \"inventoryAccountCode\",\r\n },\r\n];\r\n\r\nconst tax = [\r\n {\r\n title: \"Tax Account\",\r\n value: \"Income\",\r\n key: \"taxAccountId\",\r\n },\r\n];\r\n\r\nconst columns = [\r\n {\r\n title: \"Warehouse Name\",\r\n dataIndex: \"key\",\r\n key: \"key\",\r\n },\r\n {\r\n title: \"Quantity at Hand\",\r\n dataIndex: \"quantity\",\r\n key: \"quantity\",\r\n },\r\n];\r\n\r\nconst data = [\r\n {\r\n key: \"Ojota Zone\",\r\n quantity: 200,\r\n },\r\n {\r\n key: \"Ikeja Zone\",\r\n quantity: 200,\r\n },\r\n {\r\n key: \"Abuja Zone\",\r\n quantity: 200,\r\n },\r\n {\r\n key: \"Aba Zone\",\r\n quantity: 200,\r\n },\r\n];\r\n\r\nexport const ItemDetails = (props) => {\r\n const {id} = useParams();\r\n const [singleItem, setItem] = useState({ itemsImages: [] });\r\n\r\n useEffect(() => {\r\n (async () => {\r\n try {\r\n const response = await Services.getSingleItem({id});\r\n console.log(response, 'singleItem')\r\n setItem(response.data.data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n })();\r\n }, [id]);\r\n \r\n\r\n const firstSeg = firstSegment.map((item, index) => {\r\n if (item.key === \"itemCategory\") {\r\n item.value = singleItem[item.key]\r\n ? singleItem[item.key].split(\"_\").join(\" \")\r\n : \"No value\";\r\n } else if (item.key === \"itemGroup\") {\r\n item.value = singleItem?.itemGroups?.id;\r\n } else {\r\n item.value = singleItem[item.key] ?? \"No value\";\r\n }\r\n\r\n return (\r\n <SingleItemProperty key={index} title={item.title} value={item.value} />\r\n );\r\n });\r\n\r\n const secondSeg = secondSegment.map((item, index) => {\r\n if (item.key === \"itemType\") {\r\n item.value =\r\n singleItem[item.key] === \"1\"\r\n ? \"Goods\"\r\n : singleItem[item.key] === \"2\"\r\n ? \"Service\"\r\n : \"No value\";\r\n } else {\r\n item.value = singleItem[item.key] ?? \"No value\";\r\n }\r\n\r\n return (\r\n <Col xs={12}>\r\n <SingleItemProperty key={index} title={item.title} value={item.value} />\r\n </Col>\r\n );\r\n });\r\n\r\n const stockSeg = stock.map((item, index) => {\r\n item.value = singleItem[item.key] ?? \"No value\";\r\n return (\r\n <Col xs={12}>\r\n <SingleItemProperty key={index} title={item.title} value={item.value} />\r\n </Col>\r\n );\r\n });\r\n\r\n const salesSeg = sales.map((item, index) => {\r\n item.value = singleItem[item.key] ?? \"No value\";\r\n return (\r\n <SingleItemProperty key={index} title={item.title} value={item.value} />\r\n );\r\n });\r\n\r\n const purchaseSeg = purchase.map((item, index) => {\r\n item.value = singleItem[item.key] ?? \"No value\";\r\n return (\r\n <SingleItemProperty key={index} title={item.title} value={item.value} />\r\n );\r\n });\r\n\r\n const inventorySeg = inventory.map((item, index) => {\r\n item.value = singleItem[item.key] ?? \"No value\";\r\n return (\r\n <SingleItemProperty key={index} title={item.title} value={item.value} />\r\n );\r\n });\r\n\r\n const taxSeg = tax.map((item, index) => {\r\n item.value = singleItem[item.key] ?? \"No value\";\r\n return (\r\n <SingleItemProperty key={index} title={item.title} value={item.value} />\r\n );\r\n });\r\n\r\n\r\n const imageArr = singleItem?.itemsImages?.map((item) => {\r\n console.log(item, '888')\r\n return item.fileUrl;\r\n });\r\n // const imagearr2 = singleItem.itemGroups.items.map((itm)=>{\r\n // console.log(itm.itemsImages.map((itm2)=>{\r\n // console.log(itm2.fileUrl, \"itm2\");\r\n // }), \"111\");\r\n // });\r\n\r\n //? work in progress....\r\n const image123 = singleItem.itemGroups.items\r\n const imagearr2 = image123.map((itm) => {\r\n const image345 = itm.itemsImages;\r\n const image567 = image345.map((itm2)=>{\r\n return itm2.fileName;\r\n })\r\n return image567;\r\n \r\n });\r\n \r\n console.log(imagearr2, \"imageArr\");\r\n\r\n return (\r\n <>\r\n <ToolBar title=\"Product Name\" />\r\n <StyledCard mt={2} py={3} px={4} display=\"flex\">\r\n <Grid xs={5}>\r\n <ItemImageComponent imageArr={`data:image/jpg,base64,${imageArr}`} hideFooterText={true} />\r\n </Grid>\r\n <Grid xs={7}>\r\n <Box ml={6} mt={2}>\r\n {firstSeg}\r\n </Box>\r\n </Grid>\r\n </StyledCard>\r\n <StyledCard mt={2} px={4} pt={4}>\r\n <Row>{secondSeg}</Row>\r\n </StyledCard>\r\n <StyledCard mt={2} px={4} pt={4}>\r\n <SegmentTitle text=\"Physical Stock\" />\r\n <Row>{stockSeg}</Row>\r\n </StyledCard>\r\n <StyledCard mt={2} px={4} pt={4}>\r\n <Row style={{ marginBottom: 32 }}>\r\n <Col xs={12}>\r\n <SegmentTitle text=\"Sales\" />\r\n {salesSeg}\r\n </Col>\r\n <Col xs={12}>\r\n <SegmentTitle text=\"Purchase\" />\r\n {purchaseSeg}\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col xs={12}>\r\n <SegmentTitle text=\"Inventory\" />\r\n {inventorySeg}\r\n </Col>\r\n <Col xs={12}>\r\n <SegmentTitle text=\"Tax\" />\r\n {taxSeg}\r\n </Col>\r\n </Row>\r\n </StyledCard>\r\n {/* <StyledCard mt={2} px={4} pt={4} pb={6}>\r\n <Box mb={2} display='flex' justifyContent='space-between' alignItems='center'>\r\n <SegmentTitle text=\"Stock Locations\" />\r\n <PrimaryButton text='Add another Warehouse'/>\r\n </Box>\r\n <Box>\r\n <StyledTable columns={columns} dataSource={data}/>\r\n </Box>\r\n </StyledCard> */}\r\n </>\r\n );\r\n};\r\n\r\nexport const SingleItemProperty = ({ title, value, ...props }) => {\r\n return (\r\n <Box display=\"flex\" alignItems=\"flex-start\">\r\n <Box flexShrink={0} flexBasis=\"40%\" mb={4}>\r\n <StyledBoldText variant=\"body1\">{title}</StyledBoldText>\r\n </Box>\r\n <Box flexBasis=\"auto\" mx={2}>\r\n <StyledBoldText style={{ fontWeight: 500 }} variant=\"body1\">\r\n :\r\n </StyledBoldText>\r\n </Box>\r\n <Box flexBasis=\"auto\">\r\n <StyledNormalText variant=\"body1\">{value}</StyledNormalText>\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\n\r\nconst SegmentTitle = (props) => {\r\n return (\r\n <Box mb={3}>\r\n <StyledBoldText variant=\"subtitle2\">{props.text}</StyledBoldText>\r\n </Box>\r\n );\r\n};\r\n","import React from 'react';\r\nimport {\r\n InputAdornment,\r\n Typography,\r\n Box,\r\n Modal,\r\n Backdrop,\r\n Fade,\r\n makeStyles,\r\n Slide\r\n} from '@material-ui/core';\r\nimport { StyledModal } from './styles';\r\nimport { themes } from '../globalAssets/theme';\r\nimport { Form } from 'antd';\r\n\r\n\r\nconst layout = {\r\n labelCol: { span: 24 },\r\n wrapperCol: { span: 24 },\r\n};\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n modal: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n}))\r\n\r\nexport const ModalComponent = (props) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n <Modal\r\n aria-labelledby=\"transition-modal-title\"\r\n aria-describedby=\"transition-modal-description\"\r\n className={classes.modal}\r\n open={props.open}\r\n onClose={props.onClose}\r\n closeAfterTransition\r\n BackdropComponent={Backdrop}\r\n BackdropProps={{\r\n timeout: 500,\r\n }}>\r\n {/* <Fade in={props.open}>{props.children}</Fade> */}\r\n <Slide direction=\"up\" in={props.open} mountOnEnter unmountOnExit>\r\n {props.children}\r\n </Slide>\r\n </Modal>\r\n );\r\n};\r\n\r\n\r\nexport const AntFormModal = (props) => {\r\n const onOk = () => {\r\n props.form.submit();\r\n };\r\n\r\n return (\r\n <StyledModal\r\n title={props.title}\r\n visible={props.visible}\r\n okButtonProps={{\r\n loading: props.loading,\r\n htmlType: \"submit\",\r\n style: {\r\n backgroundColor: themes.primaryColor,\r\n border: `1px solid ${themes.primaryColor}`,\r\n },\r\n }}\r\n cancelButtonProps={{\r\n type: \"danger\",\r\n }}\r\n onOk={onOk}\r\n okText={props.okText || \"Create\"}\r\n onCancel={props.onCancel}\r\n >\r\n <Form\r\n initialValues={props.initialValues}\r\n form={props.form}\r\n {...layout}\r\n onFinish={props.onFinish}\r\n >\r\n {props.children}\r\n </Form>\r\n </StyledModal>\r\n );\r\n};\r\n\r\n\r\nexport const AntModal = (props) => {\r\n \r\n\r\n return (\r\n <StyledModal\r\n title={props.title}\r\n visible={props.visible}\r\n okButtonProps={{\r\n loading: props.loading,\r\n htmlType: \"submit\",\r\n style: {\r\n backgroundColor: themes.primaryColor,\r\n border: `1px solid ${themes.primaryColor}`,\r\n },\r\n }}\r\n cancelButtonProps={{\r\n type: \"danger\",\r\n }}\r\n onOk={props.onOk}\r\n okText={props.okText ?? \"Create\"}\r\n onCancel={props.onCancel}\r\n >\r\n {props.children}\r\n </StyledModal>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { ModalComponent } from './Modal';\r\nimport { Paper, Box } from '@material-ui/core';\r\nimport { StyledNormalText, StyledBoldText } from './styles';\r\nimport { TransaparentButton, CancelButton} from './Buttons';\r\n \r\nexport function DeleteModal(props) {\r\n return (\r\n <ModalComponent\r\n open={props.open}\r\n onClose={props.onClose}\r\n >\r\n <Paper style={{ minWidth: '30vw', padding: '16px' }}>\r\n <Box>\r\n <StyledBoldText align='center' variant='subtitle1'>{props.title}</StyledBoldText>\r\n </Box>\r\n <Box mt={3}>\r\n <StyledNormalText variant='body2' align='center'>Do you want to delete <strong>{props.itemName}</strong>?</StyledNormalText>\r\n </Box>\r\n <Box p={3} display='flex' justifyContent='flex-end'>\r\n <Box mr={2}>\r\n <TransaparentButton onClick={props.onClose} text='Cancel' />\r\n </Box>\r\n <CancelButton loading={props.loading} onClick={props.onDelete} type='submit' text='Delete' />\r\n </Box>\r\n </Paper>\r\n </ModalComponent>\r\n )\r\n}","import React, { useState, useEffect, useCallback } from \"react\";\r\nimport { ToolBar } from \"../../globalComponents/ToolBar\";\r\nimport { Form, Input, Select, Row, Col, DatePicker } from \"antd\";\r\nimport { StyledCard } from \"../../globalComponents/styles\";\r\nimport { useParams, useHistory } from \"react-router\";\r\nimport {\r\n Box,\r\n Grid,\r\n Typography,\r\n Checkbox,\r\n withStyles,\r\n Collapse,\r\n} from \"@material-ui/core\";\r\nimport {\r\n PrimaryButton,\r\n TransaparentButton,\r\n} from \"../../globalComponents/Buttons\";\r\nimport {\r\n StyledInputContainer,\r\n StyleLabel,\r\n StyledNormalText,\r\n} from \"../../globalComponents/styles\";\r\nimport {\r\n StyledImagePreview,\r\n StyledImageDrop,\r\n StyledMutedText,\r\n StyledBottomImage,\r\n} from \"../styles\";\r\nimport { FiCamera, FiPlus } from \"react-icons/fi\";\r\nimport { useDropzone } from \"react-dropzone\";\r\nimport { getBase64 } from \"../../utils/getBase64\";\r\nimport { selectWarehouse } from \"../Warehouse/slice\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { selectItemGroups } from \"../ItemGroups/slice\";\r\nimport { Feedback } from \"../../globalComponents/Feedback\";\r\nimport { selectDashboard } from \"../../Dashboard/slice\";\r\nimport Services from '../../../services';\r\nimport {fetchAllItemGroups} from '../ItemGroups/slice';\r\nimport { selectVendor } from '../../Clients/Vendors/slice';\r\n\r\nconst { TextArea } = Input;\r\nconst { Option } = Select;\r\n\r\nconst CheckboxWithStyle = withStyles((theme) => ({\r\n root: {\r\n color: theme.boldText,\r\n \"&$checked\": {\r\n color: theme.boldText,\r\n },\r\n },\r\n}))((props) => <Checkbox color=\"default\" {...props} />);\r\n\r\nconst layout = {\r\n labelCol: { span: 24 },\r\n wrapperCol: { span: 24 },\r\n};\r\n\r\nconst formFields1 = [\r\n { name: \"itemName\", label: \"Item Name\", isRequired: true, type: \"text\" },\r\n { name: \"sku\", label: \"SKU\", isRequired: true, type: \"text\" },\r\n { name: \"itemGroup\", label: \"Item Group\", isRequired: false, type: \"select\" },\r\n { name: \"itemType\", label: \"Item Type\", isRequired: false, type: \"select\" },\r\n {\r\n name: \"itemCategory\",\r\n label: \"Item Category\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n {\r\n name: \"description\",\r\n label: \"Description\",\r\n isRequired: true,\r\n type: \"textarea\",\r\n },\r\n];\r\n\r\nconst formFields2 = [\r\n {\r\n name: \"partNumber\",\r\n label: \"Part Number\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n {\r\n name: \"sellingPrice\",\r\n label: \"Selling Price\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n { name: \"costPrice\", label: \"Cost Price\", isRequired: false, type: \"number\" },\r\n {\r\n name: \"unit\",\r\n label: \"Unit\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n {\r\n name: \"itemDimension\",\r\n label: \"Dimension\",\r\n isRequired: false,\r\n type: \"text\",\r\n },\r\n {\r\n name: \"lastUnitCost\",\r\n label: \"Last Unit Cost\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n { name: \"itemWeight\", label: \"Weight\", isRequired: false, type: \"number\" },\r\n];\r\n\r\nconst warehouseFields = [\r\n { name: \"warehouse1\", label: \"Warehouse\", isRequired: false, type: \"select\" },\r\n {\r\n name: \"openStock1\",\r\n label: \"Opening Stock\",\r\n isRequired: false,\r\n type: \"number\",\r\n }\r\n];\r\n\r\nconst sales = [\r\n {\r\n name: \"salesAccountId\",\r\n label: \"Sales Account\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n];\r\n\r\nconst purchase = [\r\n {\r\n name: \"purchaseAccountId\",\r\n label: \"Purchase Account\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n];\r\n\r\nconst inventoryAcct = [\r\n {\r\n name: \"inventoryAccountId\",\r\n label: \"Inventory Account\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n];\r\n\r\nconst taxAcct = [\r\n {\r\n name: \"taxAccountId\",\r\n label: \"Tax Account\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n];\r\n\r\nconst reorder = [\r\n {\r\n name: \"reOrderPoint\",\r\n label: \"Reorder point\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n {\r\n name: \"reOrderQuantity\",\r\n label: \"Reorder Quantity\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n {\r\n name: \"maxInventory\",\r\n label: \"Maximum Inventory\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n];\r\n\r\nconst vendor = [\r\n {\r\n name: \"vendorId\",\r\n label: \"Preferred Vendor\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n];\r\n\r\n\r\nconst missingParams = {\r\n accountId: 5,\r\n wareHouseId: 2,\r\n barcode: \"sdfsdf\",\r\n manufacturer: \"jqjdijqefok\",\r\n trashed: false,\r\n fileFormat: \"ijqwpokwep\",\r\n fileUrl: \"sadfaijosdf\",\r\n quantity: 432,\r\n accountingNumber: 4232342,\r\n vendorId: 2,\r\n};\r\n\r\nconst itemCategoryEnum = [\r\n { value: \"STOCK_ITEM\", name: \"Stock Item\" },\r\n { value: \"COMPONENT_ITEM\", name: \"Component Item\" },\r\n];\r\n\r\nconst itemTypeEnum = [\r\n { value: \"GOODS\", name: \"Goods\" },\r\n { value: \"SERVICE\", name: \"Service\" },\r\n]\r\n\r\nconst units = [\r\n 'Pieces', 'Kg', 'Dozen', 'Packs',\r\n]\r\n\r\nexport const EditItem = (props) => {\r\n //useselector\r\n const { warehouseList } = useSelector(selectWarehouse);\r\n const { itemGroupList } = useSelector(selectItemGroups);\r\n const { userProfile } = useSelector(selectDashboard);\r\n const { vendorList } = useSelector(selectVendor);\r\n\r\n //console log\r\n \r\n\r\n\r\n //useState\r\n const [warehouseState, setWarehouseState] = useState(warehouseFields);\r\n const [openAccounting, setOpenAccounting] = useState(true);\r\n const [selectValues, setSelectValues] = useState({});\r\n const [imageArr, setImageArr] = useState([]);\r\n const [buttonLoading, setButtonLoading] = useState(false);\r\n const [form] = Form.useForm();\r\n const history = useHistory();\r\n const dispatcher = useDispatch();\r\n const [feedbackProps, setFeedbackProps] = useState({\r\n open: false,\r\n type: \"\",\r\n message: \"\",\r\n });\r\n const [singleItem, setItem] = useState({});\r\n /* itemsImages:[] */\r\nconst {id} = useParams();\r\nconst [formFields1State, setFormField1] = useState([]);\r\nconst [formField2State, setFormField2] = useState([]);\r\nconst [warehouseFieldsState, setWarehouseFields] = useState(warehouseFields);\r\nconst [salesState, setSales] = useState([]);\r\nconst [purchaseState, setPurchase] = useState([]);\r\nconst [inventoryAcctState, setInventoryAcct] = useState([])\r\nconst [taxAccountListState, setTaxAccountList] = useState([]);\r\nconst [reorderListState, setReorderList] = useState([])\r\nconst [vendorListState, setVendorList] = useState([]);\r\n\r\n\r\nuseEffect(() => {\r\n (async () => {\r\n try {\r\n const response = await Services.getSingleItem({id});\r\n \r\n setItem(response.data.data);\r\n form.setFieldsValue({\r\n ...response.data.data,\r\n itemType: response.data.data[\"itemType\"] === '1'? \"Goods\" : \"Service\",\r\n itemCategory: response.data.data[\"itemCategory\"] === '1'? \"Stock Item\" : \"Component Item\",\r\n itemGroup: response.data.data[\"itemGroups\"].groupName,\r\n vendorId: vendorList.find(vendor => vendor.id === response.data.data['vendorId'])\r\n });\r\n /* setFormField1(formFields1State.map(item => {\r\n item.defaultValue = response.data.data[item.name];\r\n return item;\r\n })) */\r\n\r\n const firstSection = formFields1.map((item, index) => {\r\n item.defaultValue = response.data.data[item.name]\r\n if (item.name === \"itemCategory\") {\r\n item.defaultValue = (response.data.data[item.name] * 1) === 1? \"Stock Item\" : \"Component Item\";\r\n return getInput(item, handleSelectChange, itemCategoryOptions);\r\n }\r\n \r\n if (item.name === \"itemType\") {\r\n item.defaultValue = (response.data.data[item.name] * 1) === 1? \"Goods\" : \"Service\";\r\n return getInput(item, handleSelectChange, itemTypeOptions);\r\n }\r\n \r\n if (item.name === \"itemGroup\") {\r\n const itemGroupOption = itemGroupList.map((item, index) => { \r\n return (\r\n <Option key={index} value={item.groupName}>\r\n {item.groupName}\r\n </Option>\r\n );\r\n });\r\n\r\n item.defaultValue = response.data.data[\"itemGroups\"].groupName \r\n return getInput(item, handleSelectChange, itemGroupOption);\r\n }\r\n \r\n return getInput(item);\r\n });\r\n\r\n const secondSection = formFields2.map((item, index) => {\r\n item.defaultValue = response.data.data[item.name]\r\n return (\r\n <Col sm={12}>\r\n {getInput(item, handleSelectChange, unitsOption)}\r\n </Col>\r\n );\r\n });\r\n\r\n\r\n const salesAccountList = sales.map((item) => {\r\n item.defaultValue = response.data.data[item.name]\r\n return getInput(item, handleSelectChange)\r\n });\r\n\r\n const purchaseAccountList = purchase.map((item) =>{\r\n item.defaultValue = response.data.data[item.name]\r\n return getInput(item, handleSelectChange)\r\n });\r\n\r\n\r\n const inventoryAccountList = inventoryAcct.map((item) =>{\r\n item.defaultValue = response.data.data[item.name]\r\n return getInput(item, handleSelectChange)\r\n });\r\n\r\n const taxAccountList = taxAcct.map((item) =>{\r\n item.defaultValue = response.data.data[item.name];\r\n return getInput(item, handleSelectChange)\r\n });\r\n\r\n const reorderList = reorder.map((item) => {\r\n item.defaultValue = response.data.data[item.name];\r\n return <Col xs={8}>{getInput(item, handleSelectChange)}</Col>;\r\n });\r\n\r\n const vendorInputList = vendor.map((item) => {\r\n\r\n const vendorListOption = vendorList.map((item, index) => { \r\n return (\r\n <Option key={index} value={item.id}>\r\n {`${item.firstName} ${item.lastName}`}\r\n </Option>\r\n );\r\n });\r\n\r\n item.defaultValue = response.data.data[item.name]?.id;\r\n return getInput(item, handleSelectChange, vendorListOption)\r\n });\r\n\r\n\r\n setVendorList(vendorInputList);\r\n\r\n\r\n setReorderList(reorderList)\r\n\r\n\r\n setTaxAccountList(taxAccountList)\r\n\r\n setInventoryAcct(inventoryAccountList)\r\n\r\n setPurchase(purchaseAccountList)\r\n setSales(salesAccountList)\r\n\r\n setFormField2(secondSection)\r\n\r\n setFormField1(firstSection)\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n })()\r\n }, [id, itemGroupList])\r\n\r\n\r\n useEffect(() => { \r\n/* console.log({singleItem}); */\r\n if(Object.entries(singleItem).length === 0){\r\n form.resetFields()\r\n }else{\r\n form.setFieldsValue(singleItem);\r\n }\r\n \r\n }, [singleItem])\r\n\r\n\r\n const warehouseOptions = warehouseList.map((item, index) => {\r\n return (\r\n <Option key={index} value={item.id}>\r\n {item.name ?? `item${index}`}\r\n </Option>\r\n );\r\n });\r\n\r\n const itemCategoryOptions = itemCategoryEnum.map((item, index) => {\r\n return (\r\n <Option value={item.value} key={index}>\r\n {item.name}\r\n </Option>\r\n );\r\n });\r\n\r\n const itemTypeOptions = itemTypeEnum.map((item, index) => {\r\n return (\r\n <Option value={item.value} key={index}>\r\n {item.name}\r\n </Option>\r\n );\r\n });\r\n\r\n\r\n\r\n\r\n \r\n\r\n const unitsOption = units.map((item, index) => {\r\n return (\r\n <Option value={item} key={index}>{item}</Option>\r\n )\r\n })\r\n\r\n const handleSelectChange = (selectName) => (value) => {\r\n const prevSelectValues = { ...selectValues };\r\n prevSelectValues[selectName] = value;\r\n setSelectValues(prevSelectValues);\r\n };\r\n\r\n\r\n\r\n const warehouseStateList = [...warehouseState].map((item) => {\r\n item.defaultValue = singleItem[item.name];\r\n return (\r\n <Col sm={12}>{getInput(item, handleSelectChange, warehouseOptions)}</Col>\r\n );\r\n });\r\n\r\n \r\n\r\n const handleAddWarehouse = () => {\r\n const prevWarehouse = [...warehouseState];\r\n const newWarehouse = [\r\n {\r\n name: `warehouse1${prevWarehouse.length}`,\r\n label: \"Warehouse\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n {\r\n name: `openStock1${prevWarehouse.length}`,\r\n label: \"Opening Stock\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n ];\r\n\r\n setWarehouseState((prevState) => [...prevState, ...newWarehouse]);\r\n };\r\n\r\n const handleOpenAccounting = (e) => {\r\n setOpenAccounting(e.target.checked);\r\n };\r\n\r\n\r\n const onFinish = async (values) => {\r\n try {\r\n const prevItemState = {\r\n ...singleItem,\r\n itemType: singleItem[\"itemType\"] === '1'? \"GOODS\": \"SERVICE\",\r\n itemCategory: singleItem[\"itemCategory\"] === '1'? \"STOCK_ITEM\" : \"COMPONENT_ITEM\",\r\n }\r\n \r\n const selectInputValues = { ...selectValues };\r\n \r\n values.itemType = values[\"itemType\"] === '1'? \"GOODS\" : \"SERVICE\";\r\n values.itemCategory = values[\"itemCategory\"] === '1'? \"STOCK_ITEM\" : \"COMPONENT_ITEM\";\r\n \r\n //values.itemGroup = values.itemGroups.groupName;\r\n \r\n let currentItem = Object.fromEntries(\r\n Object.entries(values).map(([key, value]) => {\r\n value = selectInputValues[key] ?? value ?? prevItemState[key];\r\n return [key, value];\r\n })\r\n );\r\n\r\n\r\n \r\n currentItem = Object.fromEntries(Object.entries(prevItemState).map(([key, value]) => {\r\n value = currentItem[key] ?? value;\r\n return [key, value];\r\n }))\r\n\r\n currentItem.itemGroup = currentItem.itemGroups.groupName;\r\n delete currentItem.itemGroups;\r\n currentItem.imageList = [{productImage: 'sdevfewferf'}];\r\n\r\n console.log(values,'valuesEdit');\r\n const response = await Services.updateItem({data:currentItem, id: currentItem.id });\r\n console.log(response, 'editItem');\r\n // console.log(Object.fromEntries(currentItem), prevItemState);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n \r\n \r\n };\r\n\r\n const getImage = (imageBase64Arr) => {\r\n setImageArr(imageBase64Arr);\r\n };\r\n\r\n return (\r\n <>\r\n <ToolBar title=\"Edit Item\" />\r\n <Form initialValues={singleItem} onFinish={onFinish} {...layout} form={form}>\r\n <StyledCard mt={2} py={3} px={4} display=\"flex\">\r\n <Grid item xs={6}>\r\n <ItemImageComponent getImage={getImage} imageArr={imageArr} />\r\n </Grid>\r\n <Grid item xs={6}>\r\n <Box px={3}>{formFields1State}</Box>\r\n </Grid>\r\n </StyledCard>\r\n <StyledCard mt={2} py={3} px={4} display=\"flex\">\r\n <Grid item xs={12}>\r\n <Box px={3}>\r\n <Row gutter={16}>{formField2State}</Row>\r\n </Box>\r\n </Grid>\r\n </StyledCard>\r\n <StyledCard mt={2} py={3} px={4} display=\"flex\">\r\n <Grid item xs={12}>\r\n <Box px={3}>\r\n <Typography variant=\"subtitle1\">Warehouse</Typography>\r\n </Box>\r\n <Box px={3} mt={2}>\r\n <Row gutter={16}>{warehouseStateList}</Row>\r\n </Box>\r\n <Box px={3} mt={2}>\r\n <PrimaryButton\r\n text=\"Add Warehouse\"\r\n onClick={handleAddWarehouse}\r\n />\r\n </Box>\r\n </Grid>\r\n </StyledCard>\r\n <StyledCard mb={2} mt={2} py={3} px={4} display=\"flex\">\r\n <Grid item xs={12}>\r\n <Box display=\"flex\" px={2} alignItems=\"center\">\r\n <CheckboxWithStyle onChange={handleOpenAccounting} />\r\n <Typography variant=\"subtitle1\">Inventory Accounting</Typography>\r\n </Box>\r\n <Collapse in={openAccounting}>\r\n <Box px={3} mt={6}>\r\n <Row gutter={16}>\r\n <Col xs={12}>\r\n <Box mb={6}>\r\n <Box mb={2}>\r\n <Typography gutterBottom={true} variant=\"subtitle2\">\r\n {\" \"}\r\n Sales{\" \"}\r\n </Typography>\r\n </Box>\r\n {salesState}\r\n </Box>\r\n <Box>\r\n <Box mb={2}>\r\n <Typography gutterBottom={true} variant=\"subtitle2\">\r\n {\" \"}\r\n Inventory{\" \"}\r\n </Typography>\r\n </Box>\r\n {inventoryAcctState}\r\n </Box>\r\n </Col>\r\n <Col xs={12} pt=\"2\">\r\n <Box mb={6}>\r\n <Box mb={2}>\r\n <Typography gutterBottom={true} variant=\"subtitle2\">\r\n {\" \"}\r\n Purchase{\" \"}\r\n </Typography>\r\n </Box>\r\n {purchaseState}\r\n </Box>\r\n <Box mb={2}>\r\n <Typography gutterBottom={true} variant=\"subtitle2\">\r\n {\" \"}\r\n Tax{\" \"}\r\n </Typography>\r\n </Box>\r\n {taxAccountListState}\r\n </Col>\r\n </Row>\r\n </Box>\r\n </Collapse>\r\n </Grid>\r\n </StyledCard>\r\n <StyledCard>\r\n <Box pt={4} px={6}>\r\n <Typography variant=\"subtitle1\">\r\n Reorder point Parameters\r\n </Typography>\r\n </Box>\r\n <Box px={6}>\r\n <Row gutter={16}>{reorderListState}</Row>\r\n </Box>\r\n </StyledCard>\r\n <StyledCard>\r\n <Grid xs={6}>\r\n <Box pt={4} px={6} mt={2}>\r\n {vendorListState}\r\n </Box>\r\n </Grid>\r\n <Grid xs={12}>\r\n <Box pb={6} mt={6} display=\"flex\" justifyContent=\"center\">\r\n <TransaparentButton\r\n style={{ width: \"30%\", marginRight: \"20px\" }}\r\n text=\"Cancel\"\r\n />\r\n <PrimaryButton\r\n style={{ width: \"30%\" }}\r\n text=\"Save\"\r\n type=\"submit\"\r\n loading={buttonLoading}\r\n />\r\n </Box>\r\n </Grid>\r\n </StyledCard>\r\n </Form>\r\n <Feedback\r\n open={feedbackProps.open}\r\n message={feedbackProps.message}\r\n type={feedbackProps.type}\r\n onClose={() =>\r\n setFeedbackProps((prevState) => ({ ...prevState, open: false }))\r\n }\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport const ItemImageComponent = (props) => {\r\n const [activeImage, setActiveImage] = useState(0);\r\n\r\n const onDrop = useCallback((acceptedFiles) => {\r\n let newImages = [];\r\n acceptedFiles.slice(0, 3).forEach(async (file, index) => {\r\n const response = await getBase64(file).catch((e) => console.log(e));\r\n newImages = [...newImages, response];\r\n\r\n if (newImages.length === acceptedFiles.slice(0, 3).length) {\r\n props.getImage(newImages);\r\n /* setImagesState(newImages); */\r\n }\r\n });\r\n }, []);\r\n\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop });\r\n\r\n const imageList = [...props.imageArr].map((item, index) => {\r\n return (\r\n <StyledBottomImage\r\n key={index}\r\n onClick={() => setActiveImage(index)}\r\n isActive={activeImage === index}\r\n >\r\n <img src={props.imageArr[index]} alt=\"\" />\r\n </StyledBottomImage>\r\n );\r\n });\r\n\r\n return (\r\n <>\r\n <Box px={3} pt={2}>\r\n <StyledImageDrop isImage={props.imageArr.length} {...getRootProps()}>\r\n <input {...getInputProps()} />\r\n {isDragActive ? (\r\n <p>Drop the image(s) here ...</p>\r\n ) : !props.imageArr.length ? (\r\n <>\r\n <FiCamera />\r\n <StyledMutedText variant=\"body1\">\r\n Drag image to upload\r\n </StyledMutedText>\r\n <Box mt={2}>\r\n <PrimaryButton text=\"Choose Image\" />\r\n </Box>\r\n </>\r\n ) : (\r\n <StyledImagePreview>\r\n <img src={props.imageArr[activeImage]} alt=\"\" />\r\n </StyledImagePreview>\r\n )}\r\n </StyledImageDrop>\r\n </Box>\r\n {!props.hideFooterText && (\r\n <Box px={3}>\r\n <Typography variant=\"caption\">You can add up to 3 images</Typography>\r\n </Box>\r\n )}\r\n <Box mt={3} px={3} display=\"flex\" alignItems=\"center\">\r\n {imageList}\r\n </Box>\r\n </>\r\n );\r\n};\r\n\r\nexport const getInput = (\r\n inputObject,\r\n onChange,\r\n selectOptions = [],\r\n searchObject = {},\r\n onFooterClicked\r\n) => {\r\n \r\n if (inputObject.type === \"text\" || inputObject.type === \"number\" || inputObject.type === \"phone\") {\r\n return (\r\n <Form.Item\r\n key={inputObject.name}\r\n name={inputObject.name}\r\n label={<StyleLabel>{inputObject.label}</StyleLabel>}\r\n rules={[{ required: inputObject.isRequired }]}\r\n >\r\n <StyledInputContainer>\r\n <Input\r\n required={inputObject.isRequired}\r\n type={inputObject.type}\r\n disabled={inputObject.disabled}\r\n defaultValue={inputObject.defaultValue}\r\n bordered={false}\r\n />\r\n </StyledInputContainer>\r\n </Form.Item>\r\n );\r\n } \r\n else if (inputObject.type === \"textarea\") {\r\n return (\r\n <Form.Item\r\n key={inputObject.name}\r\n name={inputObject.name}\r\n label={<StyleLabel>{inputObject.label}</StyleLabel>}\r\n rules={[{ required: inputObject.isRequired }]}\r\n >\r\n <StyledInputContainer>\r\n <TextArea\r\n defaultValue={inputObject.defaultValue}\r\n bordered={false}\r\n autoSize={{ minRows: 3 }}\r\n />\r\n </StyledInputContainer>\r\n </Form.Item>\r\n );\r\n } else if (inputObject.type === \"select\") {\r\n return (\r\n <Form.Item\r\n key={inputObject.name}\r\n name={inputObject.name}\r\n label={<StyleLabel>{inputObject.label}</StyleLabel>}\r\n rules={[{ required: inputObject.isRequired }]}\r\n >\r\n <StyledInputContainer>\r\n <Select\r\n placeholder={`Select ${inputObject.label}`}\r\n style={{ width: \"100%\", textAlign: \"left\" }}\r\n bordered={false}\r\n onChange={onChange(inputObject.name)}\r\n defaultValue={inputObject.defaultValue}\r\n >\r\n {selectOptions.length > 0 ? (\r\n selectOptions\r\n ) : (\r\n <>\r\n <Option value=\"jack\">Jack</Option>\r\n <Option value=\"lucy\">Lucy</Option>\r\n <Option value=\"disabled\" disabled>\r\n Disabled\r\n </Option>\r\n <Option value=\"Yiminghe\">yiminghe</Option>\r\n </>\r\n )}\r\n </Select>\r\n </StyledInputContainer>\r\n </Form.Item>\r\n );\r\n } else if (inputObject.type === \"date\") {\r\n return (\r\n <Form.Item\r\n key={inputObject.name}\r\n name={inputObject.name}\r\n label={<StyleLabel>{inputObject.label}</StyleLabel>}\r\n rules={[{ required: inputObject.isRequired }]}\r\n >\r\n <StyledInputContainer>\r\n <DatePicker\r\n onChange={onChange(inputObject.name)}\r\n defaultValue={inputObject.defaultValue}\r\n placeholder=\"\"\r\n style={{ width: \"100%\" }}\r\n bordered={false}\r\n />\r\n </StyledInputContainer>\r\n </Form.Item>\r\n );\r\n } else if (inputObject.type === \"search\") {\r\n return (\r\n <Form.Item\r\n key={inputObject.name}\r\n name={inputObject.name}\r\n label={<StyleLabel>{inputObject.label}</StyleLabel>}\r\n rules={[{ required: inputObject.isRequired }]}\r\n >\r\n <StyledInputContainer>\r\n <Select\r\n showSearch\r\n style={{ width: \"100%\", textAlign: \"left\" }}\r\n placeholder={`Select ${inputObject.label}`}\r\n bordered={false}\r\n optionFilterProp=\"children\"\r\n onChange={onChange(inputObject.name)}\r\n onFocus={searchObject?.onFocus}\r\n onBlur={searchObject?.onBlur}\r\n onSearch={searchObject?.onSearch}\r\n filterOption={(input, option) => {\r\n return (\r\n option.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\r\n );\r\n }}\r\n defaultValue={inputObject.defaultValue}\r\n >\r\n {selectOptions.length > 0 ? (\r\n selectOptions\r\n ) : (\r\n <>\r\n <Option value=\"jack\">Jack</Option>\r\n <Option value=\"lucy\">Lucy</Option>\r\n <Option value=\"disabled\" disabled>\r\n Disabled\r\n </Option>\r\n <Option value=\"Yiminghe\">yiminghe</Option>\r\n </>\r\n )}\r\n </Select>\r\n </StyledInputContainer>\r\n {onFooterClicked && (\r\n <Box\r\n onClick={() => onFooterClicked(inputObject.name)}\r\n style={{ cursor: \"pointer\", color: \"red\" }}\r\n mt={1}\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n justifyContent=\"flex-end\"\r\n >\r\n <FiPlus />\r\n <StyledNormalText style={{ color: \"red\" }} variant=\"caption\">\r\n Add Customer\r\n </StyledNormalText>\r\n </Box>\r\n )}\r\n </Form.Item>\r\n );\r\n }\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { TableWithPagination } from \"../../globalComponents/TableWithPagination\";\r\nimport { ToolBar } from \"../../globalComponents/ToolBar\";\r\nimport { Popover, Space } from \"antd\";\r\nimport { StyledCard } from \"../../globalComponents/styles\";\r\nimport { useRouteMatch, Route, Switch, useHistory } from \"react-router\";\r\nimport { AddItem } from \"./AddItem\";\r\nimport { ItemDetails } from \"./ItemDetails\";\r\nimport { selectItems, fetchAllItems } from \"./slice\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { FiMoreVertical } from \"react-icons/fi\";\r\nimport Services from \"../../../services\";\r\nimport { Feedback } from \"../../globalComponents/Feedback\";\r\nimport { DeleteModal } from \"../../globalComponents/deleteModal\";\r\nimport { EditItem } from './EditItem';\r\n\r\nexport const Items = (props) => {\r\n const [page, setPage] = React.useState(0);\r\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\r\n const { url, path } = useRouteMatch();\r\n const history = useHistory();\r\n const { itemList, paginationProps } = useSelector(selectItems);\r\n const dispatcher = useDispatch();\r\n \r\n console.log({itemList, paginationProps }, 'itemlist');\r\n\r\n\r\n const [deleteModalProps, setDeleteModalProps] = useState({\r\n visible: false,\r\n name: \"\",\r\n id: null,\r\n loading: false,\r\n });\r\n\r\n const [feedbackProps, setFeedbackProps] = useState({\r\n open: false,\r\n type: \"\",\r\n message: \"\",\r\n });\r\n\r\n const columns = [\r\n {\r\n title: \"Item\",\r\n dataIndex: \"itemName\",\r\n key: \"itemName\",\r\n },\r\n /* {\r\n title: 'Item ID',\r\n dataIndex: 'itemId',\r\n key: 'itemId',\r\n }, */\r\n {\r\n title: \"Item Class\",\r\n dataIndex: \"itemCategory\",\r\n key: \"itemCategory\",\r\n render: (data) => {\r\n return data === \"1\" ? \"Stock Item\" : \"Component Item\";\r\n },\r\n },\r\n {\r\n title: \"Unit Price\",\r\n dataIndex: \"lastUnitCost\",\r\n key: \"lastUnitCost\",\r\n },\r\n {\r\n title: \"Unit Cost\",\r\n dataIndex: \"costPrice\",\r\n key: \"costPrice\",\r\n },\r\n {\r\n title: \"Stock on hand\",\r\n dataIndex: \"quantity\",\r\n key: \"quantity\",\r\n },\r\n {\r\n title: \"Warehouse\",\r\n dataIndex: \"wareHouseName\",\r\n key: \"wareHouseName\",\r\n },\r\n {\r\n title: \"Action\",\r\n dataIndex: \"action\",\r\n key: \"action\",\r\n width: \"5%\",\r\n render: (data, allData) => {\r\n const content = (\r\n <Space direction=\"vertical\" size=\"small\">\r\n <p\r\n style={{ cursor: \"pointer\" }}\r\n onClick={() => history.push(`${url}/${allData.id}`)}\r\n >\r\n View Detail\r\n </p>\r\n <p\r\n style={{ cursor: \"pointer\" }}\r\n onClick={() => history.push(`${url}/${allData.id}/edit`)}\r\n >\r\n Edit\r\n </p>\r\n <p\r\n onClick={() =>\r\n setDeleteModalProps({\r\n name: allData.itemName,\r\n id: allData.id,\r\n visible: true,\r\n })\r\n }\r\n style={{ color: \"red\", cursor: \"pointer\" }}\r\n >\r\n Delete\r\n </p>\r\n </Space>\r\n );\r\n return (\r\n <Popover content={content} trigger=\"click\">\r\n <FiMoreVertical />\r\n </Popover>\r\n );\r\n },\r\n },\r\n ];\r\n\r\n\r\n\r\n /* useEffect(() => {\r\n getAllItems();\r\n },[]) */\r\n\r\n /* const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n setRowsPerPage(parseInt(event.target.value, 10));\r\n setPage(0);\r\n };\r\n */\r\n\r\n const handleChangePage = (event, newPage) => {\r\n (async () => {\r\n setPage(newPage);\r\n await dispatcher(fetchAllItems({ page: newPage, size: rowsPerPage }));\r\n })();\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n (async () => {\r\n setRowsPerPage(parseInt(event.target.value, 10));\r\n setPage(0);\r\n await dispatcher(\r\n fetchAllItems({ page: 0, size: parseInt(event.target.value, 10) })\r\n );\r\n })();\r\n };\r\n\r\n const gotoAddItem = () => {\r\n history.push(`${url}/add-item`);\r\n };\r\n\r\n const handleItemDelete = async () => {\r\n try {\r\n setDeleteModalProps((prevState) => ({ ...prevState, loading: true }));\r\n await Services.deleteItem({\r\n id: deleteModalProps.id,\r\n });\r\n await dispatcher(fetchAllItems({ page, size: rowsPerPage }));\r\n setFeedbackProps({\r\n type: \"success\",\r\n message: `${deleteModalProps.name} has been deleted`,\r\n open: true,\r\n });\r\n setDeleteModalProps((prevState) => ({\r\n ...prevState,\r\n loading: false,\r\n visible: false,\r\n }));\r\n } catch (error) {\r\n console.log(error);\r\n setDeleteModalProps((prevState) => ({ ...prevState, loading: false }));\r\n setFeedbackProps({\r\n type: \"error\",\r\n message: `Please try again`,\r\n open: true,\r\n });\r\n }\r\n };\r\n\r\n return (\r\n <Switch>\r\n <Route exact path={path}>\r\n <ToolBar\r\n title=\"All Items\"\r\n showtools\r\n onCreate={gotoAddItem}\r\n createButtonText=\"Create Item\"\r\n />\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n rowsPerPage={rowsPerPage}\r\n page={page}\r\n total={paginationProps.totalItems}\r\n handleChangeRowsPerPage={handleChangeRowsPerPage}\r\n handleChangePage={handleChangePage}\r\n columns={columns}\r\n dataSource={itemList}\r\n /* onRow={handleTableRow} */\r\n />\r\n </StyledCard>\r\n <DeleteModal\r\n open={deleteModalProps.visible}\r\n loading={deleteModalProps.loading}\r\n itemName={deleteModalProps.name}\r\n onClose={() =>\r\n setDeleteModalProps((prevState) => ({\r\n ...prevState,\r\n visible: false,\r\n }))\r\n }\r\n onDelete={handleItemDelete}\r\n title=\"Delete Warehouse\"\r\n />\r\n \r\n <Feedback\r\n open={feedbackProps.open}\r\n message={feedbackProps.message}\r\n type={feedbackProps.type}\r\n onClose={() =>\r\n setFeedbackProps((prevState) => ({ ...prevState, open: false }))\r\n }\r\n />\r\n </Route>\r\n <Route path={`${path}/add-item`}>\r\n <AddItem />\r\n </Route>\r\n <Route exact path={`${path}/:id`}>\r\n <ItemDetails />\r\n </Route>\r\n <Route path={`${path}/:id/edit`}>\r\n <EditItem/>\r\n </Route>\r\n </Switch>\r\n );\r\n};\r\n","import { notification } from \"antd\";\r\n\r\nexport const notificationAlert = (type, message, description, placement='topRight') => {\r\n notification[type]({\r\n message,\r\n description,\r\n placement\r\n });\r\n };","import React, { useState } from \"react\";\r\nimport { TableWithPagination } from \"../../globalComponents/TableWithPagination\";\r\nimport { ToolBar } from \"../../globalComponents/ToolBar\";\r\nimport { StyledCard } from \"../../globalComponents/styles\";\r\nimport {\r\n useParams,\r\n} from \"react-router\";\r\nimport { Row, Col, Statistic } from \"antd\";\r\nimport { SingleItemProperty } from \"../Items/ItemDetails\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { fetchSingleItemGroup } from \"./slice\";\r\n\r\n\r\n\r\nexport const ItemGroupDetails = (props) => {\r\n const { id } = useParams();\r\n const dispatcher = useDispatch();\r\n const [itemGroupData, setItemGroupData] = useState([]);\r\n const [itemList, setItemList] = useState([])\r\n\r\n\r\n const columns = [\r\n {\r\n title: \"Item\",\r\n dataIndex: \"itemName\",\r\n key: \"itemName\",\r\n },\r\n {\r\n title: \"Item Class\",\r\n dataIndex: \"itemCategory\",\r\n key: \"itemCategory\",\r\n render: (data) => {\r\n return data === \"1\" ? \"Stock Item\" : \"Component Item\";\r\n },\r\n },\r\n {\r\n title: \"Unit Price\",\r\n dataIndex: \"sellingPrice\",\r\n key: \"sellingPrice\",\r\n render: (data) => <Statistic valueStyle={{fontSize: '1vw'}} value={data} prefix='₦' precision={2} />\r\n },\r\n {\r\n title: \"Unit Cost\",\r\n dataIndex: \"lastUnitCost\",\r\n key: \"lastUnitCost\",\r\n render: (data) => <Statistic valueStyle={{fontSize: '1vw'}} value={data} prefix='₦' precision={2} />\r\n },\r\n {\r\n title: \"Stock on hand\",\r\n dataIndex: \"quantity\",\r\n key: \"quantity\",\r\n },\r\n /* {\r\n title: \"Action\",\r\n dataIndex: \"action\",\r\n key: \"action\",\r\n width: \"5%\",\r\n render: (data, allData) => {\r\n const content = (\r\n <Space direction=\"vertical\" size=\"small\">\r\n <p\r\n style={{ cursor: \"pointer\" }}\r\n onClick={() => history.push(`${url}/${allData.id}`)}\r\n >\r\n View Detail\r\n </p>\r\n <p \r\n style={{ cursor: \"pointer\" }}\r\n onClick={() => history.push(`${url}/${allData.id}/edit`)}\r\n >Edit</p>\r\n <p\r\n onClick={() =>\r\n setDeleteModalProps({\r\n name: allData.itemName,\r\n id: allData.id,\r\n visible: true,\r\n })\r\n }\r\n style={{ color: \"red\", cursor: \"pointer\" }}\r\n >\r\n Delete\r\n </p>\r\n </Space>\r\n );\r\n return (\r\n <Popover content={content} trigger=\"click\">\r\n <FiMoreVertical />\r\n </Popover>\r\n );\r\n },\r\n }, */\r\n ];\r\n\r\n React.useEffect(() => {\r\n (async () => {\r\n try {\r\n const response = await dispatcher(fetchSingleItemGroup({ id}));\r\n // console.log(response, \"singleitemGroup\");\r\n const {items, ...itemGroupData} = response;\r\n const refinedItemGroupData = Object.entries(itemGroupData).map(([key, value]) => {\r\n return ({title: key, value});\r\n }).filter(item => item.value )\r\n setItemGroupData(refinedItemGroupData);\r\n setItemList(items)\r\n // console.log({items, itemGroupData}, 'group');\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n })();\r\n }, [id]);\r\n\r\n const secondSeg = itemGroupData.map((item, index) => {\r\n return (\r\n <Col xs={12}>\r\n <SingleItemProperty key={index} title={item.title} value={item.value} />\r\n </Col>\r\n );\r\n });\r\n\r\n return (\r\n <>\r\n <ToolBar title=\"Item Group Details\" />\r\n <StyledCard mt={2} p={4}>\r\n <Row>{secondSeg}</Row>\r\n </StyledCard>\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n columns={columns}\r\n dataSource={itemList}\r\n hidePagination={true}\r\n />\r\n </StyledCard>\r\n </>\r\n );\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { TableWithPagination } from \"../../globalComponents/TableWithPagination\";\r\nimport { ToolBar } from \"../../globalComponents/ToolBar\";\r\nimport {\r\n StyledBoldText,\r\n StyledCard,\r\n StyledNormalText,\r\n StyledModal,\r\n} from \"../../globalComponents/styles\";\r\nimport { useRouteMatch, Route, Switch, useHistory } from \"react-router\";\r\nimport { FiMoreVertical } from \"react-icons/fi\";\r\nimport { ModalComponent } from \"../../globalComponents/Modal\";\r\nimport { Box, Paper } from \"@material-ui/core\";\r\nimport { getInput } from \"../Items/AddItem\";\r\nimport { Form, Popover, Space } from \"antd\";\r\nimport { Divider } from \"@material-ui/core\";\r\nimport {\r\n PrimaryButton,\r\n TransaparentButton,\r\n CancelButton,\r\n} from \"../../globalComponents/Buttons\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport { createItemGroup, fetchAllItemGroups, fetchSingleItemGroup,fetchItemGroupsByOrg, selectItemGroups } from \"./slice\";\r\nimport { Feedback } from \"../../globalComponents/Feedback\";\r\nimport Services from \"../../../services\";\r\nimport { loadProgressBar } from \"axios-progress-bar\";\r\nimport { themes } from \"../../globalAssets/theme\";\r\nimport { notificationAlert } from \"../../utils/notificationAlert\";\r\nimport { selectDashboard } from '../../Dashboard/slice';\r\nimport { ItemGroupDetails } from './ItemGroupDetails';\r\n\r\n\r\nconst addGroupInput = [\r\n {\r\n name: \"groupName\",\r\n label: \"Group Name\",\r\n isRequired: true,\r\n type: \"text\",\r\n },\r\n {\r\n name: \"groupDescription\",\r\n label: \"Description\",\r\n isRequired: true,\r\n type: \"textarea\",\r\n },\r\n];\r\n\r\nconst layout = {\r\n labelCol: { span: 24 },\r\n wrapperCol: { span: 24 },\r\n};\r\n\r\nexport const ItemGroups = (props) => {\r\n //useSelector\r\n const { userProfile } = useSelector(selectDashboard)\r\n const { itemGroupList, paginationProps } = useSelector(selectItemGroups);\r\n console.log(itemGroupList, \"itemGroupList\");\r\n \r\n\r\n //useForm & useState\r\n const [createGroupForm] = Form.useForm();\r\n const [editGroupForm] = Form.useForm();\r\n const [page, setPage] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(10);\r\n const [isSubmitDisabled, setSubmitButton] = useState(false);\r\n const [addGroupModalProps, setAddGroupModalProps] = useState({\r\n isVisible: false,\r\n });\r\n const [feedbackProps, setFeedbackProps] = useState({\r\n open: false,\r\n type: \"\",\r\n message: \"\",\r\n });\r\n const [deleteModalProps, setDeleteModalProps] = useState({\r\n visible: false,\r\n name: \"\",\r\n id: null,\r\n loading: false,\r\n });\r\n const [editModalProps, setEditModalProps] = useState({\r\n isVisible: false,\r\n selectedItemInput: [],\r\n loading: false,\r\n initialValues:{}\r\n });\r\n const { url, path } = useRouteMatch();\r\n const history = useHistory();\r\n const dispatcher = useDispatch();\r\n\r\n useEffect(() => {\r\n editGroupForm.resetFields();\r\n }, [editModalProps.isVisible]);\r\n\r\n\r\n const handleViewItemGroup = (id) => async () => {\r\n history.push(`${url}/${id}`)\r\n // try {\r\n // const response = await dispatcher(fetchSingleItemGroup({id}));\r\n // console.log(response);\r\n // } catch (error) {\r\n // console.log(error);\r\n // } \r\n }\r\n\r\n const columns = [\r\n {\r\n title: \"ID \",\r\n dataIndex: \"id\",\r\n key: \"id\",\r\n },\r\n {\r\n title: \"Name\",\r\n dataIndex: \"groupName\",\r\n key: \"groupName\",\r\n },\r\n {\r\n title: \"Description\",\r\n dataIndex: \"groupDescription\",\r\n key: \"groupDescription\",\r\n width: \"40%\",\r\n },\r\n /* {\r\n title: \"Item Count\",\r\n dataIndex: \"items\",\r\n key: \"items\",\r\n render: (data) => data.length,\r\n }, */\r\n {\r\n title: \"Action\",\r\n dataIndex: \"action\",\r\n key: \"action\",\r\n width: \"5%\",\r\n render: (data, allData) => {\r\n const content = (\r\n <Space direction=\"vertical\" size=\"small\">\r\n <p \r\n onClick={() => {\r\n const newData = addGroupInput.map((item) => {\r\n item.defaultValue = allData[item.name];\r\n return getInput(\r\n item\r\n );\r\n });\r\n setEditModalProps((prevState) => ({\r\n ...prevState,\r\n selectedItemInput: newData,\r\n isVisible: true,\r\n initialValues: allData,\r\n }));\r\n }}\r\n style={{ cursor: \"pointer\" }}>Edit</p>\r\n <p\r\n onClick={handleViewItemGroup(allData.id)}\r\n style={{ cursor: \"pointer\" }}\r\n >\r\n View Detail\r\n </p>\r\n <p\r\n onClick={() =>\r\n setDeleteModalProps({\r\n name: allData.groupName,\r\n id: allData.id,\r\n visible: true,\r\n })\r\n }\r\n style={{ color: \"red\", cursor: \"pointer\" }}\r\n >\r\n Delete\r\n </p>\r\n </Space>\r\n );\r\n return (\r\n <Popover content={content} trigger=\"click\">\r\n <FiMoreVertical />\r\n </Popover>\r\n );\r\n },\r\n },\r\n ];\r\n\r\n \r\n\r\n const handleChangePage = (event, newPage) => {\r\n (async () => {\r\n setPage(newPage);\r\n await dispatcher(fetchItemGroupsByOrg({orgId: userProfile.organisation.orgId, page: newPage, size: rowsPerPage }));\r\n })();\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n (async () => {\r\n setRowsPerPage(parseInt(event.target.value, 10));\r\n setPage(0);\r\n await dispatcher(\r\n fetchItemGroupsByOrg({ orgId: userProfile.organisation.orgId, page: 0, size: parseInt(event.target.value, 10) })\r\n );\r\n })();\r\n };\r\n\r\n const groupInputs = addGroupInput.map((item) => getInput(item));\r\n \r\n\r\n const onFinish = async (values) => {\r\n try {\r\n setSubmitButton(true);\r\n await dispatcher(createItemGroup({ data: values }));\r\n await dispatcher(fetchItemGroupsByOrg({orgId: userProfile.organisation.orgId, page, size: rowsPerPage}));\r\n \r\n await dispatcher(fetchAllItemGroups({}))\r\n setSubmitButton(false);\r\n setAddGroupModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }));\r\n setFeedbackProps({\r\n open: true,\r\n type: \"success\",\r\n message: `${values.groupName} was created`,\r\n });\r\n // window.location.href(`${url}/item-groups`);\r\n window.location.reload();\r\n // history.push(`${url}/item-groups`);\r\n } catch (error) {\r\n setSubmitButton(false);\r\n setFeedbackProps({\r\n open: true,\r\n type: \"error\",\r\n message: error.message || \"Error occurred\",\r\n });\r\n }\r\n };\r\n\r\n \r\n\r\n const handleFeedbackClose = (event, reason) => {\r\n if (reason === \"clickaway\") {\r\n return;\r\n }\r\n setFeedbackProps((prevState) => ({ ...prevState, open: false }));\r\n };\r\n\r\n const handleItemGroupDelete = async () => {\r\n try {\r\n setDeleteModalProps((prevState) => ({ ...prevState, loading: true }));\r\n const response = await Services.deleteItemGroup({\r\n id: deleteModalProps.id,\r\n });\r\n await dispatcher(fetchItemGroupsByOrg({orgId: userProfile.organisation.orgId, page, size: rowsPerPage}));\r\n setFeedbackProps({\r\n type: \"success\",\r\n message: `${deleteModalProps.name} has been deleted`,\r\n open: true,\r\n });\r\n setDeleteModalProps((prevState) => ({\r\n ...prevState,\r\n loading: false,\r\n visible: false,\r\n }));\r\n window.location.reload();\r\n\r\n } catch (error) {\r\n console.log(error);\r\n setDeleteModalProps((prevState) => ({ ...prevState, loading: false }));\r\n setFeedbackProps({\r\n type: \"error\",\r\n message: `Please try again`,\r\n open: true,\r\n });\r\n }\r\n };\r\n\r\n\r\n const onEditFinish = async (values) => {\r\n console.log(values, 'editgruop');\r\n try {\r\n setEditModalProps((prevState) => ({ ...prevState, loading: true }));\r\n await Services.updateItemGroups({data: values, id: editModalProps.initialValues.id});\r\n await dispatcher(fetchItemGroupsByOrg({orgId: userProfile.organisation.orgId, page, size: rowsPerPage}));\r\n setEditModalProps((prevState) => ({\r\n ...prevState,\r\n loading: false,\r\n isVisible: false,\r\n }));\r\n notificationAlert(\r\n \"success\",\r\n \"Item Group updated\",\r\n `${editModalProps.initialValues.groupName} has been updated`\r\n );\r\n } catch (error) {\r\n setEditModalProps((prevState) => ({ ...prevState, loading: false }));\r\n if (error.response) {\r\n notificationAlert(\r\n \"error\",\r\n \"Error Occurred\",\r\n error.response.data.message || \"Please try again later\"\r\n );\r\n } else {\r\n notificationAlert(\"error\", \"Error Occurred\", \"Please try again later\");\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <Switch>\r\n <Route exact path={path}>\r\n <ToolBar\r\n title=\"All Item Groups\"\r\n showtools\r\n onCreate={() =>\r\n setAddGroupModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: true,\r\n }))\r\n }\r\n createButtonText=\"Create Item Group\"\r\n />\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n rowsPerPage={rowsPerPage}\r\n page={page}\r\n total={paginationProps.totalPages * rowsPerPage}\r\n handleChangeRowsPerPage={handleChangeRowsPerPage}\r\n handleChangePage={handleChangePage}\r\n columns={columns}\r\n dataSource={itemGroupList}\r\n />\r\n </StyledCard>\r\n <ModalScaffold\r\n form={createGroupForm}\r\n onCancel={() =>\r\n setAddGroupModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }))\r\n }\r\n title=\"New Item Group\"\r\n visible={addGroupModalProps.isVisible}\r\n loading={isSubmitDisabled}\r\n onFinish={onFinish}\r\n >\r\n {groupInputs}\r\n </ModalScaffold>\r\n <ModalScaffold\r\n form={editGroupForm}\r\n onCancel={() =>\r\n setEditModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }))\r\n }\r\n title=\"Edit Item Group\"\r\n visible={editModalProps.isVisible}\r\n loading={editModalProps.loading}\r\n onFinish={onEditFinish}\r\n initialValues={editModalProps.initialValues}\r\n >\r\n {editModalProps.selectedItemInput}\r\n </ModalScaffold>\r\n\r\n <ModalComponent\r\n open={deleteModalProps.visible}\r\n onClose={() =>\r\n setDeleteModalProps((prevState) => ({ ...prevState, visible: false }))\r\n }\r\n >\r\n <Paper style={{ minWidth: \"30vw\", padding: \"16px\" }}>\r\n <Box>\r\n <StyledBoldText align=\"center\" variant=\"subtitle1\">\r\n Delete Item Group\r\n </StyledBoldText>\r\n </Box>\r\n <Box mt={3}>\r\n <StyledNormalText variant=\"body2\" align=\"center\">\r\n Do you want to delete <strong>{deleteModalProps.name}</strong>?\r\n </StyledNormalText>\r\n </Box>\r\n <Box p={3} display=\"flex\" justifyContent=\"flex-end\">\r\n <Box mr={2}>\r\n <TransaparentButton\r\n onClick={() =>\r\n setDeleteModalProps((prevState) => ({\r\n ...prevState,\r\n visible: false,\r\n }))\r\n }\r\n text=\"Cancel\"\r\n />\r\n </Box>\r\n <CancelButton\r\n loading={deleteModalProps.loading}\r\n onClick={handleItemGroupDelete}\r\n type=\"submit\"\r\n text=\"Delete\"\r\n />\r\n </Box>\r\n </Paper>\r\n </ModalComponent>\r\n <Feedback\r\n open={feedbackProps.open}\r\n message={feedbackProps.message}\r\n type={feedbackProps.type}\r\n onClose={handleFeedbackClose}\r\n />\r\n </Route>\r\n <Route path={`${path}/:id`}>\r\n <ItemGroupDetails/>\r\n </Route>\r\n </Switch>\r\n );\r\n};\r\n\r\nconst ModalScaffold = (props) => {\r\n \r\n const onOk = () => {\r\n props.form.submit();\r\n };\r\n\r\n return (\r\n <StyledModal\r\n title={props.title}\r\n visible={props.visible}\r\n okButtonProps={{\r\n loading: props.loading,\r\n htmlType: \"submit\",\r\n style: {\r\n backgroundColor: themes.primaryColor,\r\n border: `1px solid ${themes.primaryColor}`,\r\n },\r\n }}\r\n cancelButtonProps={{\r\n type: \"danger\",\r\n }}\r\n onOk={onOk}\r\n okText=\"Create\"\r\n onCancel={props.onCancel}\r\n >\r\n <Form\r\n initialValues={props.initialValues}\r\n form={props.form}\r\n {...layout}\r\n onFinish={props.onFinish}\r\n >\r\n {props.children}\r\n </Form>\r\n </StyledModal>\r\n );\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { TableWithPagination } from \"../../globalComponents/TableWithPagination\";\r\nimport { ToolBar } from \"../../globalComponents/ToolBar\";\r\nimport { StyledCard } from \"../../globalComponents/styles\";\r\nimport { \r\n useParams,\r\n} from \"react-router\";\r\nimport { Row, Col, Statistic} from \"antd\";\r\nimport { SingleItemProperty } from \"../Items/ItemDetails\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { getSingleWarehouse } from \"./slice\";\r\n\r\nconst columns = [\r\n {\r\n title: \"Item\",\r\n dataIndex: \"itemName\",\r\n key: \"itemName\",\r\n },\r\n {\r\n title: \"Item Class\",\r\n dataIndex: \"itemCategory\",\r\n key: \"itemCategory\",\r\n render: (data) => {\r\n return data === \"1\" ? \"Stock Item\" : \"Component Item\";\r\n },\r\n },\r\n {\r\n title: \"Unit Price\",\r\n dataIndex: \"sellingPrice\",\r\n key: \"sellingPrice\",\r\n render: (data) => <Statistic valueStyle={{fontSize: '1vw'}} value={data} prefix='₦' precision={2} />\r\n },\r\n {\r\n title: \"Unit Cost\",\r\n dataIndex: \"lastUnitCost\",\r\n key: \"lastUnitCost\",\r\n render: (data) => <Statistic valueStyle={{fontSize: '1vw'}} value={data} prefix='₦' precision={2} />\r\n },\r\n {\r\n title: \"Stock on hand\",\r\n dataIndex: \"quantity\",\r\n key: \"quantity\",\r\n },\r\n /* {\r\n title: \"Action\",\r\n dataIndex: \"action\",\r\n key: \"action\",\r\n width: \"5%\",\r\n render: (data, allData) => {\r\n const content = (\r\n <Space direction=\"vertical\" size=\"small\">\r\n <p\r\n style={{ cursor: \"pointer\" }}\r\n onClick={() => history.push(`${url}/${allData.id}`)}\r\n >\r\n View Detail\r\n </p>\r\n <p \r\n style={{ cursor: \"pointer\" }}\r\n onClick={() => history.push(`${url}/${allData.id}/edit`)}\r\n >Edit</p>\r\n <p\r\n onClick={() =>\r\n setDeleteModalProps({\r\n name: allData.itemName,\r\n id: allData.id,\r\n visible: true,\r\n })\r\n }\r\n style={{ color: \"red\", cursor: \"pointer\" }}\r\n >\r\n Delete\r\n </p>\r\n </Space>\r\n );\r\n return (\r\n <Popover content={content} trigger=\"click\">\r\n <FiMoreVertical />\r\n </Popover>\r\n );\r\n },\r\n }, */\r\n ];\r\n\r\nconst data = [\r\n {\r\n item: \"Drilling Machine\",\r\n previousQuantity: 30,\r\n adjustedBy: \"-10\",\r\n adjustedQuantity: 20,\r\n },\r\n];\r\nexport const WarehouseDetails = (props) => {\r\n const { id } = useParams();\r\n const dispatcher = useDispatch();\r\n const [warehouseData, setWarehouseData] = useState([]);\r\n const [itemList, setItemList] = useState([])\r\n\r\n React.useEffect(() => {\r\n (async () => {\r\n try {\r\n const response = await dispatcher(getSingleWarehouse({ id }));\r\n // console.log(response, 'singlewarehouse')\r\n const {items, ...warehouseData} = response.data.data;\r\n const refinedWarehouseData = Object.entries(warehouseData).map(([key, value]) => {\r\n return ({title: key, value});\r\n }).filter(item => item.value )\r\n setWarehouseData(refinedWarehouseData);\r\n setItemList(items)\r\n \r\n } catch (error) {\r\n console.log(error);\r\n }\r\n })();\r\n }, [id]);\r\n\r\n const secondSeg = warehouseData.map((item, index) => {\r\n return (\r\n <Col xs={12}>\r\n <SingleItemProperty key={index} title={item.title} value={item.value} />\r\n </Col>\r\n );\r\n });\r\n\r\n return (\r\n <>\r\n <ToolBar title=\"Warehouse Details\" />\r\n <StyledCard mt={2} p={4}>\r\n <Row>{secondSeg}</Row>\r\n </StyledCard>\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n columns={columns}\r\n dataSource={itemList}\r\n hidePagination={true}\r\n />\r\n </StyledCard>\r\n </>\r\n );\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { TableWithPagination } from \"../../globalComponents/TableWithPagination\";\r\nimport { ToolBar } from \"../../globalComponents/ToolBar\";\r\nimport {\r\n StyledBoldText,\r\n StyledCard,\r\n StyledModal,\r\n} from \"../../globalComponents/styles\";\r\nimport { useRouteMatch, Route, Switch, useHistory } from \"react-router\";\r\nimport { FiMoreVertical } from \"react-icons/fi\";\r\nimport { ModalComponent } from \"../../globalComponents/Modal\";\r\nimport { Box, Paper } from \"@material-ui/core\";\r\nimport { getInput } from \"../Items/AddItem\";\r\nimport { Form, Space, Popover, Select, notification } from \"antd\";\r\nimport { Divider } from \"@material-ui/core\";\r\nimport {\r\n PrimaryButton,\r\n TransaparentButton,\r\n} from \"../../globalComponents/Buttons\";\r\nimport Services from \"../../../services\";\r\nimport { Feedback } from \"../../globalComponents/Feedback\";\r\nimport { DeleteModal } from \"../../globalComponents/deleteModal\";\r\nimport { createWarehouse, getAllWarehouse, selectWarehouse } from \"./slice\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { selectDashboard } from \"../../Dashboard/slice\";\r\nimport { themes } from \"../../globalAssets/theme\";\r\nimport { notificationAlert } from \"../../utils/notificationAlert\";\r\nimport { getSingleWarehouse } from \"./slice\";\r\nimport { WarehouseDetails } from './WarehouseDetails'\r\n\r\nconst { Option } = Select;\r\n\r\nconst addWarehouseInput = [\r\n {\r\n name: \"name\",\r\n label: \"Warehouse Name\",\r\n isRequired: true,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"warehousePhoneNumber\",\r\n label: \"Phone\",\r\n isRequired: false,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"firstStreet\",\r\n label: \"First Street\",\r\n isRequired: false,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"secondStreet\",\r\n label: \"Second Street\",\r\n isRequired: false,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"city\",\r\n label: \"City\",\r\n isRequired: false,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"state\",\r\n label: \"State\",\r\n isRequired: false,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"zipCode\",\r\n label: \"Zip Code\",\r\n isRequired: false,\r\n type: \"number\",\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"wareHouseContactEmail\",\r\n label: \"Warehouse Email\",\r\n isRequired: false,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"headOfWareHouseId\",\r\n label: \"Head of Warehouse Name\",\r\n isRequired: false,\r\n type: \"search\",\r\n },\r\n /* {\r\n name: 'headOfWareHouseEmailAddress',\r\n label: 'Head of Warehouse Email',\r\n isRequired: false,\r\n type: 'text',\r\n defaultValue:''\r\n },\r\n {\r\n name: 'headOfWareHouseId',\r\n label: 'Head of Warehouse ID',\r\n isRequired: false,\r\n type: 'number',\r\n defaultValue:''\r\n }, */\r\n];\r\n\r\n\r\n\r\nconst layout = {\r\n labelCol: { span: 24 },\r\n wrapperCol: { span: 24 },\r\n};\r\n\r\nexport const Warehouse = (props) => {\r\n const { warehouseList, paginationProps } = useSelector(selectWarehouse);\r\n const { usersByOrg, userProfile } = useSelector(selectDashboard);\r\n\r\n // console.log({warehouseList, paginationProps}, 'warehouse')\r\n const [editWarehouseForm] = Form.useForm();\r\n const [page, setPage] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(10);\r\n const [allWarehouse, setAllWarehouse] = useState([]);\r\n const {path, url} = useRouteMatch();\r\n const history = useHistory();\r\n const [selectValues, setSelectValues] = useState({});\r\n const [addGroupModalProps, setAddGroupModalProps] = useState({\r\n isVisible: false,\r\n loading: false,\r\n });\r\n const [feedbackProps, setFeedbackProps] = useState({\r\n open: false,\r\n type: \"\",\r\n message: \"\",\r\n });\r\n const [deleteModalProps, setDeleteModalProps] = useState({\r\n visible: false,\r\n name: \"\",\r\n id: null,\r\n loading: false,\r\n });\r\n const [editModalProps, setEditModalProps] = useState({\r\n isVisible: false,\r\n selectedItemInput: [],\r\n loading: false,\r\n initialValues: {},\r\n });\r\n const dispatcher = useDispatch();\r\n\r\n useEffect(() => {\r\n editWarehouseForm.resetFields();\r\n }, [editModalProps.isVisible]);\r\n\r\n const handleSelectChange = (selectName) => (value) => {\r\n const prevSelectValues = { ...selectValues };\r\n prevSelectValues[selectName] = value;\r\n setSelectValues(prevSelectValues);\r\n };\r\n\r\n const userList = [...usersByOrg].map((user, index) => {\r\n return (\r\n <Option key={index} value={user.id}>\r\n {user.fullName !== \" \" ? user.fullName : \"Adefisayo Adeniji\"}\r\n </Option>\r\n );\r\n });\r\n\r\n const searchObject = {\r\n onSearch: (val) => {},\r\n };\r\n\r\n const handleViewDetail = (id) => async () => {\r\n /* try {\r\n const response = await dispatcher(getSingleWarehouse({id}));\r\n console.log(response);\r\n } catch (error) {\r\n console.log(error);\r\n } */\r\n\r\n history.push(`${url}/${id}`)\r\n }\r\n\r\n const columns = [\r\n // {\r\n // title: \"S/N\",\r\n // dataIndex: \"id\",\r\n // key: \"id\",\r\n // },\r\n {\r\n title: \"Name\",\r\n dataIndex: \"name\",\r\n key: \"name\",\r\n },\r\n {\r\n title: \"Email\",\r\n dataIndex: \"wareHouseContactEmail\",\r\n key: \"wareHouseContactEmail\",\r\n },\r\n {\r\n title: \"Phone Number\",\r\n dataIndex: \"warehousePhoneNumber\",\r\n key: \"warehousePhoneNumber\",\r\n },\r\n {\r\n title: \"Head of Warehouse\",\r\n dataIndex: \"headOfWarehouseName\",\r\n key: \"headOfWarehouseName\",\r\n },\r\n {\r\n title: \"City\",\r\n dataIndex: \"city\",\r\n key: \"city\",\r\n },\r\n\r\n {\r\n title: \"Action\",\r\n dataIndex: \"action\",\r\n key: \"action\",\r\n width: \"5%\",\r\n render: (data, allData) => {\r\n // console.log(allData, 'allDate')\r\n const content = (\r\n <Space direction=\"vertical\" size=\"small\">\r\n <p onClick={handleViewDetail(allData.id)} style={{ cursor: \"pointer\" }}>View Detail</p>\r\n <p\r\n onClick={() => {\r\n const newData = addWarehouseInput.map((item) => {\r\n item.defaultValue = allData[item.name];\r\n return getInput(\r\n item,\r\n handleSelectChange,\r\n userList,\r\n searchObject\r\n );\r\n });\r\n setEditModalProps((prevState) => ({\r\n ...prevState,\r\n selectedItemInput: newData,\r\n isVisible: true,\r\n initialValues: allData,\r\n }));\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n >\r\n Edit\r\n </p>\r\n <p\r\n onClick={() =>\r\n setDeleteModalProps((prevState) => ({\r\n ...prevState,\r\n visible: true,\r\n name: allData.name,\r\n id: allData.id,\r\n }))\r\n }\r\n style={{ color: \"red\", cursor: \"pointer\" }}\r\n >\r\n Delete\r\n </p>\r\n </Space>\r\n );\r\n\r\n const handlePopoverClick = () => {};\r\n return (\r\n <Popover\r\n onClick={handlePopoverClick}\r\n content={content}\r\n trigger=\"click\"\r\n >\r\n <FiMoreVertical />\r\n </Popover>\r\n );\r\n },\r\n },\r\n ];\r\n\r\n const handleChangePage = (event, newPage) => {\r\n (async () => {\r\n setPage(newPage);\r\n await dispatcher(getAllWarehouse({ page: newPage, size: rowsPerPage }));\r\n })();\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n (async () => {\r\n setRowsPerPage(parseInt(event.target.value, 10));\r\n setPage(0);\r\n await dispatcher(\r\n getAllWarehouse({ page: 0, size: parseInt(event.target.value, 10) })\r\n );\r\n })();\r\n };\r\n\r\n const warehouseInputs = addWarehouseInput.map((item) =>\r\n getInput(item, handleSelectChange, userList, searchObject)\r\n // console.log(item)\r\n );\r\n\r\n const onFinish = async (values) => {\r\n try {\r\n setAddGroupModalProps((prevState) => ({ ...prevState, loading: true }));\r\n values.headOfWareHouseId = selectValues.headOfWareHouseId;\r\n values.orgId = userProfile.orgId;\r\n values.uuid = userProfile.uuId;\r\n await dispatcher(createWarehouse({ data: values }));\r\n await dispatcher(getAllWarehouse({}));\r\n setAddGroupModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n loading: false,\r\n }));\r\n setFeedbackProps({\r\n type: \"success\",\r\n open: true,\r\n message: \"Warehouse has been added\",\r\n });\r\n } catch (error) {\r\n setAddGroupModalProps((prevState) => ({ ...prevState, loading: false }));\r\n setFeedbackProps({\r\n type: \"error\",\r\n open: true,\r\n message: \"An error occurred, please try again later\",\r\n });\r\n }\r\n };\r\n\r\n const handleFeedbackClose = (event, reason) => {\r\n if (reason === \"clickaway\") {\r\n return;\r\n }\r\n setFeedbackProps((prevState) => ({ ...prevState, open: false }));\r\n };\r\n\r\n const handleWarehouseDelete = async () => {\r\n try {\r\n setDeleteModalProps((prevState) => ({ ...prevState, loading: true }));\r\n await Services.deleteWarehouse({ id: deleteModalProps.id });\r\n await dispatcher(getAllWarehouse({}));\r\n setFeedbackProps({\r\n type: \"success\",\r\n open: true,\r\n message: \"Warehouse has been Deleted\",\r\n });\r\n setDeleteModalProps((prevState) => ({\r\n ...prevState,\r\n loading: false,\r\n visible: false,\r\n }));\r\n } catch (error) {\r\n setFeedbackProps({\r\n type: \"error\",\r\n open: true,\r\n message: \"An error occurred, please try again\",\r\n });\r\n }\r\n };\r\n\r\n const onEditFinish = async (values) => {\r\n try {\r\n setEditModalProps((prevState) => ({ ...prevState, loading: true }));\r\n await Services.updateWarehouse({\r\n data: values,\r\n id: editModalProps.initialValues.id,\r\n });\r\n await dispatcher(getAllWarehouse({ page, size: rowsPerPage }));\r\n setEditModalProps((prevState) => ({\r\n ...prevState,\r\n loading: false,\r\n isVisible: false,\r\n }));\r\n notificationAlert(\r\n \"success\",\r\n \"Warehouse updated\",\r\n `${editModalProps.initialValues.name} has been updated`\r\n );\r\n } catch (error) {\r\n setEditModalProps((prevState) => ({ ...prevState, loading: false }));\r\n if (error.response) {\r\n notificationAlert(\r\n \"error\",\r\n \"Error Occurred\",\r\n error.response.data.message || \"Please try again later\"\r\n );\r\n } else {\r\n notificationAlert(\"error\", \"Error Occurred\", \"Please try again later\");\r\n }\r\n }\r\n };\r\n\r\n return (\r\n <Switch>\r\n <Route exact path={path}>\r\n <ToolBar\r\n title=\"All Warehouses\"\r\n showtools\r\n onCreate={() =>\r\n setAddGroupModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: true,\r\n }))\r\n }\r\n createButtonText=\"Add new warehouse\"\r\n />\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n rowsPerPage={rowsPerPage}\r\n page={page}\r\n total={paginationProps.totalItems}\r\n handleChangeRowsPerPage={handleChangeRowsPerPage}\r\n handleChangePage={handleChangePage}\r\n columns={columns}\r\n dataSource={warehouseList}\r\n />\r\n </StyledCard>\r\n <CreateWarehouseModal\r\n visible={addGroupModalProps.isVisible}\r\n onCancel={() =>\r\n setAddGroupModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }))\r\n }\r\n onFinish={onFinish}\r\n loading={addGroupModalProps.loading}\r\n warehouseInputs={warehouseInputs}\r\n />\r\n <EditWarehouseModal\r\n visible={editModalProps.isVisible}\r\n onCancel={() =>\r\n setEditModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }))\r\n }\r\n onFinish={onEditFinish}\r\n loading={editModalProps.loading}\r\n warehouseInputs={editModalProps.selectedItemInput}\r\n form={editWarehouseForm}\r\n initialValues={editModalProps.initialValues}\r\n />\r\n <Feedback\r\n open={feedbackProps.open}\r\n message={feedbackProps.message}\r\n type={feedbackProps.type}\r\n onClose={handleFeedbackClose}\r\n />\r\n <DeleteModal\r\n open={deleteModalProps.visible}\r\n loading={deleteModalProps.loading}\r\n itemName={deleteModalProps.name}\r\n onClose={() =>\r\n setDeleteModalProps((prevState) => ({ ...prevState, visible: false }))\r\n }\r\n onDelete={handleWarehouseDelete}\r\n title=\"Delete Warehouse\"\r\n />\r\n </Route>\r\n <Route path={`${path}/:id`}>\r\n <WarehouseDetails/>\r\n </Route>\r\n </Switch>\r\n );\r\n};\r\n\r\nconst CreateWarehouseModal = (props) => {\r\n const [form] = Form.useForm();\r\n\r\n const onOk = () => {\r\n form.submit();\r\n };\r\n\r\n return (\r\n <StyledModal\r\n title=\" New Warehouse\"\r\n visible={props.visible}\r\n okButtonProps={{\r\n loading: props.loading,\r\n htmlType: \"submit\",\r\n style: {\r\n backgroundColor: themes.primaryColor,\r\n border: `1px solid ${themes.primaryColor}`,\r\n },\r\n }}\r\n cancelButtonProps={{\r\n type: \"danger\",\r\n }}\r\n onOk={onOk}\r\n okText=\"Create\"\r\n onCancel={props.onCancel}\r\n >\r\n <Form form={form} {...layout} onFinish={props.onFinish}>\r\n {props.warehouseInputs}\r\n </Form>\r\n </StyledModal>\r\n );\r\n};\r\n\r\nconst EditWarehouseModal = (props) => {\r\n const onOk = () => {\r\n props.form.submit();\r\n };\r\n\r\n const cancelAndReset = () => {\r\n props.onCancel();\r\n };\r\n\r\n return (\r\n <StyledModal\r\n title=\"Edit Warehouse\"\r\n visible={props.visible}\r\n okButtonProps={{\r\n loading: props.loading,\r\n htmlType: \"submit\",\r\n style: {\r\n backgroundColor: themes.primaryColor,\r\n border: `1px solid ${themes.primaryColor}`,\r\n },\r\n }}\r\n cancelButtonProps={{\r\n type: \"danger\",\r\n }}\r\n onOk={onOk}\r\n okText=\"Create\"\r\n onCancel={cancelAndReset}\r\n >\r\n <Form\r\n initialValues={props.initialValues}\r\n form={props.form}\r\n {...layout}\r\n onFinish={props.onFinish}\r\n >\r\n {props.warehouseInputs}\r\n </Form>\r\n </StyledModal>\r\n );\r\n};\r\n","import React, { useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport { TableWithPagination } from '../../globalComponents/TableWithPagination';\r\nimport { ToolBar } from '../../globalComponents/ToolBar';\r\nimport { StyledBoldText, StyledCard } from '../../globalComponents/styles';\r\nimport { useRouteMatch, Route, Switch, useHistory } from 'react-router';\r\nimport { FiMoreVertical, FiTrash2 } from 'react-icons/fi';\r\nimport { ModalComponent } from '../../globalComponents/Modal';\r\nimport { Box, Paper } from '@material-ui/core';\r\nimport { getInput } from '../Items/AddItem';\r\nimport { Form, Row, Col, Input, Select } from 'antd';\r\nimport { Divider } from '@material-ui/core';\r\nimport {\r\n PrimaryButton,\r\n TransaparentButton,\r\n} from '../../globalComponents/Buttons';\r\nimport {\r\n StyledInputContainer,\r\n StyleLabel,\r\n} from '../../globalComponents/styles';\r\nimport { SingleItemProperty } from '../Items/ItemDetails';\r\n\r\nconst secondSegment = [\r\n {\r\n title: 'Warehouse',\r\n value: 'Ojota Zone',\r\n },\r\n {\r\n title: 'Account',\r\n value: 'Mike Bamidele',\r\n },\r\n {\r\n title: 'Ref no',\r\n value: '000999000YU',\r\n },\r\n {\r\n title: 'Date',\r\n value: '3rd Jul,2020',\r\n },\r\n {\r\n title: 'Reason',\r\n value:\r\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Convallis tempor, tincidunt. Eget molestie placerat mattis sed eget hendrerit quam leo eget.',\r\n },\r\n];\r\n\r\nconst columns = [\r\n {\r\n title: 'Item',\r\n dataIndex: 'item',\r\n key: 'item',\r\n },\r\n {\r\n title: 'Previous Quantity',\r\n dataIndex: 'previousQuantity',\r\n key: 'previousQuantity',\r\n },\r\n {\r\n title: 'Adjusted By',\r\n dataIndex: 'adjustedBy',\r\n key: 'adjustedBy',\r\n },\r\n {\r\n title: 'Adjusted Quantity',\r\n dataIndex: 'adjustedQuantity',\r\n key: 'adjustedQuantity',\r\n },\r\n]\r\n\r\n\r\nconst data = [\r\n {\r\n item: 'Drilling Machine',\r\n previousQuantity: 30,\r\n adjustedBy: '-10',\r\n adjustedQuantity: 20\r\n\r\n }\r\n]\r\nexport const AdjustmentDetails = (props) => {\r\n const secondSeg = secondSegment.map((item, index) => {\r\n return (\r\n <Col xs={12}>\r\n <SingleItemProperty key={index} title={item.title} value={item.value} />\r\n </Col>\r\n );\r\n });\r\n\r\n return (\r\n <>\r\n <ToolBar title=\"New Inventory Adjustments\" />\r\n <StyledCard mt={2} p={4}>\r\n <Row>{secondSeg}</Row>\r\n </StyledCard>\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n columns={columns}\r\n dataSource={data}\r\n /* onRow={handleTableRow} */\r\n hidePagination={true}\r\n />\r\n </StyledCard>\r\n </>\r\n );\r\n};\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport Services from \"../../../services\";\r\n\r\nconst customerSlice = createSlice({\r\n name: \"customerSlice\",\r\n initialState: {\r\n customerList: [],\r\n paginationProps: { page: 0, totalPages: 0, totalItems: 0 },\r\n },\r\n\r\n reducers: {\r\n addCustomerList: (state, { payload }) => {\r\n state.customerList = payload;\r\n },\r\n\r\n addPaginationProps: (state, { payload }) => {\r\n state.paginationProps = payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { addCustomerList, addPaginationProps } =\r\ncustomerSlice.actions;\r\n\r\nexport const getAllCustomer = (payload) => (dispatcher) => {\r\n return Services.getCustomers(payload)\r\n .then((response) => {\r\n const {currentPage: page, totalPages,count, customers} = response.data.data;\r\n dispatcher(addPaginationProps({page, totalPages, totalItems: count}));\r\n dispatcher(addCustomerList(customers));\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n console.log(error.response.status);\r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\nexport const createCustomer = (payload) => (dispatcher) => {\r\n return Services.createCustomers(payload)\r\n .then((response) => {\r\n return Promise.resolve(response);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\nexport const selectCustomer = (state) => state.customerReducer;\r\n\r\nexport default customerSlice.reducer;\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport Services from \"../../../services\";\r\n\r\nconst adjustmentsSlice = createSlice({\r\n name: \"adjustmentsSlice\",\r\n initialState: {\r\n adjustmentsList: [],\r\n singleAdjustments: {},\r\n paginationProps: { page: 0, totalPages: 0, totalItems: 0 },\r\n },\r\n\r\n reducers:{\r\n allAdjustments: (state, {payload}) =>{\r\n state.adjustmentsList = payload\r\n },\r\n singleAdjustments: (state, {payload}) => {\r\n state.singleAdjustments = payload;\r\n },\r\n addPaginationProps: (state, { payload }) => {\r\n state.paginationProps = payload;\r\n },\r\n }\r\n});\r\nexport const { allAdjustments, singleAdjustments, addPaginationProps } = adjustmentsSlice.actions;\r\n\r\nexport const fetchAllAdjustments = (payload) => (dispatcher) => {\r\n return Services.getAllAdjustments(payload).then(\r\n (response) => {\r\n console.log(response, \"allAdjustment\");\r\n const {\r\n currentPage: page,\r\n totalPages,\r\n totalItems,\r\n adjustments,\r\n } = response.data;\r\n dispatcher(allAdjustments(adjustments));\r\n dispatcher(addPaginationProps({ page, totalPages, totalItems }));\r\n return Promise.resolve(adjustments);\r\n },\r\n (error) => {\r\n if (error.response) {\r\n return Promise.reject(error.response.data);\r\n }\r\n }\r\n );\r\n};\r\n\r\nexport const createAddjustments = (payload) => (dispatcher) => {\r\n return Services.createAdjustment(payload)\r\n .then((response) => {\r\n console.log(response, \"create addjustment\");\r\n return Promise.resolve(response);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\n\r\n\r\n\r\n\r\n export const selectAdjustments = (state) => state.adjustmentsReducer;\r\n\r\n export default adjustmentsSlice.reducer;\r\n\r\n","import React, { useEffect, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport { TableWithPagination } from '../../globalComponents/TableWithPagination';\r\nimport { ToolBar } from '../../globalComponents/ToolBar';\r\nimport { selectWarehouse } from \"../../Inventory/Warehouse/slice\";\r\nimport { selectItems } from \"../../Inventory/Items/slice\";\r\n// import { getInput } from \"../../Inventory/Items/AddItem\";\r\nimport { StyledBoldText, StyledCard } from '../../globalComponents/styles';\r\nimport { useRouteMatch, Route, Switch, useHistory } from 'react-router';\r\nimport { FiMoreVertical, FiTrash2 } from 'react-icons/fi';\r\nimport { ModalComponent } from '../../globalComponents/Modal';\r\nimport { Box, Paper } from '@material-ui/core';\r\nimport { getInput } from '../Items/AddItem';\r\nimport { Form, Row, Col, Input, Select } from 'antd';\r\nimport { notificationAlert } from \"../../utils/notificationAlert\";\r\nimport { Divider } from '@material-ui/core';\r\nimport { selectDashboard } from \"../../Dashboard/slice\";\r\nimport {\r\n PrimaryButton,\r\n TransaparentButton,\r\n} from '../../globalComponents/Buttons';\r\nimport {\r\n StyledInputContainer,\r\n StyleLabel,\r\n} from '../../globalComponents/styles';\r\nimport moment from \"moment\";\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { selectCustomer } from '../../Clients/Customers/slice';\r\nimport { createAddjustments, fetchAllAdjustments } from './slice';\r\n\r\nconst { Option } = Select;\r\n\r\nconst addAdjustmentsInput = [\r\n {\r\n name: \"warehouseName\",\r\n label: \"Warehouse Name\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n // {\r\n // name: \"addedBy\",\r\n // label: \"Adjusted By\",\r\n // isRequired: false,\r\n // type: \"select\",\r\n // },\r\n {\r\n name: \"referenceNumber\",\r\n label: \"Reference Number\",\r\n isRequired: false,\r\n type: \"text\",\r\n },\r\n {\r\n name: \"inventoryAdjustedDate\",\r\n label: \" Adjusted Date\",\r\n isRequired: false,\r\n type: \"date\",\r\n },\r\n {\r\n name: \"reason\",\r\n label: \"Reason\",\r\n isRequired: false,\r\n type: \"text\",\r\n },\r\n {\r\n name: \"reasonDescription\",\r\n label: \"Reason Description\",\r\n isRequired: false,\r\n type: \"textarea\",\r\n },\r\n];\r\n\r\nconst layout = {\r\n labelCol: { span: 24 },\r\n wrapperCol: { span: 24 },\r\n};\r\n\r\nconst data = [\r\n {\r\n item: [\r\n { itemName: \"Rice\", count: 20 },\r\n { itemName: \"Beans\", count: 15 },\r\n ],\r\n previousQuantity: 0,\r\n adjustedQuantity: \"\",\r\n itemDescription: \"\",\r\n itemId: \"\",\r\n itemName: \"\",\r\n orgId: \"ORG-1593451692921\",\r\n },\r\n];\r\n\r\nexport const AdjustItem = (props) => {\r\n const [itemsState, setItemsState] = useState(data);\r\n const [selectValues, setSelectValues] = useState({});\r\n const [activeRowIndex, setActiveRowIndex] = useState(null);\r\n const [createInvoiceLoading, setCreateInvoiceLoading] = useState(false);\r\n const [basicInfoForm] = Form.useForm();\r\n const dispatcher = useDispatch();\r\n\r\n\r\n\r\n\r\n const { warehouseList } = useSelector(selectWarehouse);\r\n const { itemList } = useSelector(selectItems);\r\n const { customerList } = useSelector(selectCustomer);\r\n const profile = useSelector(selectDashboard);\r\n const userProfile2 = profile.userProfile.workShift;\r\n\r\n console.log({ warehouseList, itemList, customerList }, \"selectedItem\");\r\n\r\n const handleSelectChange = (selectName) => (value, dateString) => {\r\n const prevSelectValues = { ...selectValues };\r\n if (selectName === \"inventoryAdjustedDate\") {\r\n prevSelectValues[selectName] = moment(dateString).toISOString();\r\n } else {\r\n prevSelectValues[selectName] = value;\r\n }\r\n setSelectValues(prevSelectValues);\r\n };\r\n\r\n const AdjustmentsInput = addAdjustmentsInput.map((item) => {\r\n return <Col xs={11}>{getInput(item, handleSelectChange)}</Col>;\r\n });\r\n\r\n const getSelectedItem = (currentItemState) => {\r\n return currentItemState.find((item, index) => index === activeRowIndex);\r\n };\r\n\r\n const reduceQuantity = (quantity, reduceBy) => {\r\n return quantity < reduceBy ? quantity : quantity - reduceBy;\r\n };\r\n\r\n const increaseQuantity = (quantity, increaseBy) => {\r\n return quantity + increaseBy;\r\n };\r\n\r\n useEffect(() => {\r\n const newItemsState = [...itemsState].map((itm) => {\r\n itm.item = itemList;\r\n return itm;\r\n });\r\n setItemsState(newItemsState);\r\n }, [itemList]);\r\n\r\n const replaceItem = (currentItemState, selecedItem) => {\r\n currentItemState.splice(activeRowIndex, 1, selecedItem);\r\n setItemsState(currentItemState);\r\n };\r\n const handleAdjustedBy = (e) => {\r\n const adjustedBy = parseInt(e.target.value);\r\n const currentItemState = [...itemsState];\r\n const selecedItem = getSelectedItem(currentItemState);\r\n\r\n if (e.target.value === \"\") {\r\n selecedItem.adjustedQuantity = \"\";\r\n replaceItem(currentItemState, selecedItem);\r\n return;\r\n }\r\n\r\n if (!isNaN(adjustedBy)) {\r\n const selectedItemQuantityOnHand = parseInt(selecedItem.quantityOnHand);\r\n selecedItem.adjustedQuantity =\r\n Math.sign(adjustedBy) === -1\r\n ? reduceQuantity(selectedItemQuantityOnHand, Math.abs(adjustedBy))\r\n : increaseQuantity(selectedItemQuantityOnHand, Math.abs(adjustedBy));\r\n replaceItem(currentItemState, selecedItem);\r\n return;\r\n }\r\n };\r\n\r\n const handleDeleteRow = () => {\r\n const currentItemState = [...itemsState];\r\n currentItemState.splice(activeRowIndex, 1);\r\n setItemsState(currentItemState);\r\n };\r\n\r\n // const handleItemSelect = (itemId) => {\r\n // const currentItemState = [...itemsState];\r\n // const selectedItemObj = getSelectedItem(currentItemState);\r\n // const selectedItem = selectedItemObj.item.find((itm) => itm.id === itemId);\r\n // console.log(selectedItem, 'hello')\r\n // selectedItemObj.itemId = itemId;\r\n // // selectedItemObj.itemName = selectedItem.itemName;\r\n // // selectedItemObj.previousQuantity = selectedItem.quantity;\r\n\r\n // // selectedItem.quantityOnHand = value;\r\n // replaceItem(currentItemState, selectedItem);\r\n // };\r\n\r\n const handleItemSelect = (itemId) => {\r\n const currentItemState = [...itemsState];\r\n const selectedItemObj = getSelectedItem(currentItemState);\r\n const selecteditem = selectedItemObj.item.find((itm) => itm.id === itemId);\r\n selectedItemObj.itemId = itemId;\r\n selectedItemObj.itemName = selecteditem.itemName;\r\n selectedItemObj.itemDescription = selecteditem.description;\r\n selectedItemObj.previousQuantity = selecteditem.quantity;\r\n\r\n replaceItem(currentItemState, selectedItemObj);\r\n };\r\n\r\n //*handleQuantitytransfar\r\n const handleQuantityTransfar = (e) => {\r\n const currentItemState = [...itemsState];\r\n const selectedItemObj = getSelectedItem(currentItemState);\r\n const qty = e.target.value;\r\n selectedItemObj.adjustedQuantity = qty;\r\n // selectedItemObj.itemSku = qty\r\n // selectedItemObj.amount =\r\n // parseInt(qty || 0) * parseInt(selectedItemObj.price);\r\n replaceItem(currentItemState, selectedItemObj);\r\n };\r\n\r\n const columns = [\r\n {\r\n title: \"Item\",\r\n dataIndex: \"item\",\r\n key: \"item\",\r\n render: (data) => {\r\n const optionList = data.map((item, index) => {\r\n return (\r\n <Option key={index} value={item.id}>\r\n {item.itemName}\r\n </Option>\r\n );\r\n });\r\n return (\r\n <StyledInputContainer>\r\n <Select\r\n onChange={handleItemSelect}\r\n placeholder=\"Select Item\"\r\n style={{ width: \"100%\" }}\r\n bordered={false}\r\n >\r\n {optionList}\r\n {/* { console.log(optionList, 'optionList')} */}\r\n </Select>\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n {\r\n title: \"Item Description\",\r\n dataIndex: \"itemDescription\",\r\n key: \"itemDescription\",\r\n render: (data) => {\r\n return (\r\n <StyledInputContainer>\r\n <Input bordered={false} value={data} disabled />\r\n\r\n {/* <Input\r\n type=\"text\"\r\n onChange={handleSelectChange}\r\n value={data}\r\n bordered={false}\r\n placeholder=\"type here\"\r\n /> */}\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n {\r\n title: \"Quantity on Hand\",\r\n dataIndex: \"previousQuantity\",\r\n key: \"previousQuantity\",\r\n render: (data) => {\r\n return (\r\n <StyledInputContainer>\r\n <Input bordered={false} value={data} disabled />\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n\r\n // {\r\n // title: \"Adjust By\",\r\n // dataIndex: \"adjustBy\",\r\n // key: \"adjustBy\",\r\n // render: (data) => {\r\n // return (\r\n // <StyledInputContainer>\r\n // <Input\r\n // bordered={false}\r\n // onChange={handleAdjustedBy}\r\n // placeholder=\"Eg +10. -10\"\r\n // />\r\n // </StyledInputContainer>\r\n // );\r\n // },\r\n // },\r\n {\r\n title: \"Adjusted Quantity\",\r\n dataIndex: \"adjustedQuantity\",\r\n key: \"adjustedQuantity\",\r\n render: (data) => {\r\n return (\r\n <Box display=\"flex\" alignItems=\"center\">\r\n <StyledInputContainer>\r\n {/* <Input bordered={false} value={data} disabled /> */}\r\n <Input\r\n type=\"number\"\r\n onChange={handleQuantityTransfar}\r\n value={data}\r\n bordered={false}\r\n placeholder=\"Eg +10. -10\"\r\n />\r\n </StyledInputContainer>\r\n {itemsState.length > 1 && (\r\n <FiTrash2\r\n onClick={handleDeleteRow}\r\n style={{ fontSize: \"1.4vw\", marginLeft: \"20px\" }}\r\n />\r\n )}\r\n </Box>\r\n );\r\n },\r\n },\r\n ];\r\n\r\n const handleTableRow = (data, index) => {\r\n return {\r\n onClick: (e) => {\r\n setActiveRowIndex(index);\r\n },\r\n };\r\n };\r\n\r\n // const AddAdjustableRow = () => {\r\n // const row = {\r\n // item: [\r\n // { name: \"Rice\", count: 20 },\r\n // { name: \"Beans\", count: 15 },\r\n // ],\r\n // quantityOnHand: 0,\r\n // adjustedQuantity: \"\",\r\n // };\r\n\r\n // setItemsState((prevState) => [...prevState, row]);\r\n // };\r\n const AddAdjustableRow = () => {\r\n const row = {\r\n item: itemList,\r\n previousQuantity: 0,\r\n adjustedQuantity: \"\",\r\n itemDescription: \"\",\r\n itemId: \"\",\r\n itemName: \"\",\r\n };\r\n\r\n setItemsState((prevState) => [...prevState, row]);\r\n };\r\n\r\n // const customerOptionList = customerList.map((item, index) => {\r\n // return (\r\n // <Option value={item.id} key={index}>\r\n // {`${item.firstName} ${item.lastName}`}\r\n // </Option>\r\n // );\r\n // });\r\n\r\n const warehouseOptionList = warehouseList.map((item, index) => {\r\n return (\r\n <Option value={item.id} key={index}>\r\n {item.name}\r\n </Option>\r\n );\r\n });\r\n\r\n const getAdjustmentsInput = [...addAdjustmentsInput].map((item) => {\r\n if (item.name === \"warehouseName\") {\r\n return (\r\n <Col sm={12}>\r\n {getInput(item, handleSelectChange, warehouseOptionList)}\r\n </Col>\r\n );\r\n }\r\n return <Col sm={10}>{getInput(item, handleSelectChange)}</Col>;\r\n });\r\n\r\n const handleFormSubmit = (e) => {\r\n e.preventDefault();\r\n basicInfoForm.submit();\r\n };\r\n\r\n // on finish\r\n const onFinish = async (values) => {\r\n try {\r\n setCreateInvoiceLoading(true);\r\n values.warehouseName = selectValues.warehouseName;\r\n values.inventoryAdjustedDate = selectValues.inventoryAdjustedDate;\r\n values.orgId = userProfile2.orgId;\r\n\r\n // values.referenceNumber = selectValues.referenceNumber;\r\n // values.reason = selectValues.reason;\r\n // values.reasonDescription = selectValues.reasonDescription;\r\n // values.orgId = ORG - 1593451692921;\r\n\r\n const items = itemsState.map((item) => {\r\n return {\r\n itemId: item.itemId,\r\n itemName: item.itemName,\r\n previousQuantity: item.previousQuantity,\r\n adjustedQuantity: item.adjustedQuantity,\r\n itemDescription: item.itemDescription,\r\n orgId: \"ORG-1593451692921\",\r\n };\r\n });\r\n\r\n values.items = items;\r\n console.log(values, \"values\");\r\n await dispatcher(createAddjustments({ data: values }));\r\n await dispatcher(fetchAllAdjustments({}));\r\n notificationAlert(\r\n \"success\",\r\n \"Adjustments was successfully created\"\r\n );\r\n setCreateInvoiceLoading(false);\r\n // // history.push(\"/invoice\");\r\n } catch (error) {\r\n setCreateInvoiceLoading(false);\r\n notificationAlert(\r\n \"error\",\r\n \"Failed\",\r\n error?.response?.data?.message || \"Please try again later\"\r\n );\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <ToolBar title=\"Add Inventory Adjustments\" />\r\n <StyledCard p={4} mt={2}>\r\n <Form form={basicInfoForm} onFinish={onFinish} {...layout}>\r\n <Row justify=\"space-between\">{getAdjustmentsInput}</Row>\r\n </Form>\r\n </StyledCard>\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n columns={columns}\r\n dataSource={itemsState}\r\n onRow={handleTableRow}\r\n hidePagination={true}\r\n />\r\n </StyledCard>\r\n <Box p={4}>\r\n <PrimaryButton onClick={AddAdjustableRow} text=\"Add Row\" />\r\n <Box mt={6} pb={5} display=\"flex\" justifyContent=\"flex-start\">\r\n <PrimaryButton\r\n loading={createInvoiceLoading}\r\n onClick={handleFormSubmit}\r\n text=\"Save & Submit\"\r\n />\r\n </Box>\r\n </Box>\r\n </>\r\n );\r\n};\r\n","import React, { useEffect } from 'react';\r\nimport styled from 'styled-components';\r\nimport { TableWithPagination } from '../../globalComponents/TableWithPagination';\r\nimport { ToolBar } from '../../globalComponents/ToolBar';\r\nimport { Menu } from 'antd';\r\nimport { StyledCard } from '../../globalComponents/styles';\r\nimport { useRouteMatch, Route, Switch, useHistory } from 'react-router';\r\nimport { AdjustmentDetails } from './AdjustmentDetails';\r\nimport { AdjustItem } from './AdjustItem';\r\nimport { selectAdjustments, adjustmentsList, paginationProps, fetchAllAdjustments, } from \"./slice\";\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nconst columns = [\r\n {\r\n title: \"Date\",\r\n dataIndex: \"inventoryAdjustedDate\",\r\n key: \"inventoryAdjustedDate\",\r\n },\r\n {\r\n title: \"Warehouse Name\",\r\n dataIndex: \"warehouseName\",\r\n key: \"warehouseName\",\r\n },\r\n {\r\n title: \"Status\",\r\n dataIndex: \"status\",\r\n key: \"status\",\r\n },\r\n {\r\n title: \"Reference Number\",\r\n dataIndex: \"referenceNumber\",\r\n key: \"referenceNumber\",\r\n },\r\n {\r\n title: \"Adjusted by\",\r\n dataIndex: \"addedBy\",\r\n key: \"addedBy\",\r\n },\r\n];\r\n\r\nconst data = [\r\n {\r\n date: 'July, 27 2021',\r\n warehouse: 'Ojota Zone',\r\n status: 'Pending',\r\n reference: '0900388YU',\r\n adjustedBy: 'Grace Jacobs',\r\n },\r\n {\r\n date: 'July, 27 2021',\r\n warehouse: 'Ojota Zone',\r\n status: 'Pending',\r\n reference: '0900388YU',\r\n adjustedBy: 'Grace Jacobs',\r\n },\r\n {\r\n date: 'July, 27 2021',\r\n warehouse: 'Ojota Zone',\r\n status: 'Pending',\r\n reference: '0900388YU',\r\n adjustedBy: 'Grace Jacobs',\r\n },\r\n {\r\n date: 'July, 27 2021',\r\n warehouse: 'Ojota Zone',\r\n status: 'Pending',\r\n reference: '0900388YU',\r\n adjustedBy: 'Grace Jacobs',\r\n },\r\n {\r\n date: 'July, 27 2021',\r\n warehouse: 'Ojota Zone',\r\n status: 'Pending',\r\n reference: '0900388YU',\r\n adjustedBy: 'Grace Jacobs',\r\n },\r\n]\r\n\r\nexport const InventoryAdjustment = (props) => {\r\n const { paginationProps, adjustmentsList } = useSelector(selectAdjustments);\r\n console.log(adjustmentsList, 'adjustmentsLists')\r\n const [page, setPage] = React.useState(2);\r\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\r\n const { url, path } = useRouteMatch();\r\n const history = useHistory();\r\n const dispatcher = useDispatch();\r\n\r\n\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n setRowsPerPage(parseInt(event.target.value, 10));\r\n setPage(0);\r\n };\r\n\r\n const handleClick = (e) => {\r\n };\r\n\r\n const gotoAdjustItem = () => {\r\n history.push(`${url}/adjust-item`);\r\n };\r\n\r\n const handleTableRow = (record, rowIndex) => {\r\n return {\r\n onClick: event => {\r\n history.push(`${url}/adjustmentDetails`);\r\n }, \r\n }\r\n }\r\n\r\n useEffect(() => {\r\n (async () => {\r\n await dispatcher(fetchAllAdjustments({ page: 0, size: 10 }));\r\n })();\r\n // dispatcher(getAllTransfarOrder({ page: 0, size: 10 }));\r\n }, []);\r\n \r\n return (\r\n <Switch>\r\n <Route exact path={path}>\r\n <ToolBar\r\n title=\"Inventory Adjustments\"\r\n showtools\r\n onCreate={gotoAdjustItem}\r\n createButtonText=\"New Adjustment\"\r\n />\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n rowsPerPage={rowsPerPage}\r\n page={page}\r\n handleChangeRowsPerPage={handleChangeRowsPerPage}\r\n handleChangePage={handleChangePage}\r\n columns={columns}\r\n dataSource={adjustmentsList}\r\n onRow={handleTableRow}\r\n />\r\n </StyledCard>\r\n </Route>\r\n <Route path={`${path}/adjust-item`}>\r\n <AdjustItem />\r\n </Route>\r\n <Route path={`${path}/adjustmentDetails`}>\r\n <AdjustmentDetails />\r\n </Route>\r\n </Switch>\r\n );\r\n};\r\n","//Transfar order slice\r\nimport { createSlice } from \"@reduxjs/toolkit\";\r\nimport Services from \"../../../services\";\r\n\r\nconst transfarOrderSlice = createSlice({\r\n //Slice Name\r\n name: \"transfarOrderSlice\",\r\n // InitialState\r\n initialState: {\r\n transfarOrderList: [],\r\n paginationProps: { page: 0, totalPages: 0, totalItems: 0 },\r\n singleTransfarOrder: {},\r\n },\r\n\r\n reducers: {\r\n addtransfarOrderList: (state, { payload }) => {\r\n state.transfarOrderList = payload;\r\n },\r\n\r\n addPaginationProps: (state, { payload }) => {\r\n state.paginationProps = payload;\r\n },\r\n\r\n singleTransfarOrder: (state, { payload }) => {\r\n state.singleTransfarOrder = payload;\r\n },\r\n },\r\n});\r\n\r\nexport const { addtransfarOrderList, addPaginationProps, singleTransfarOrder } =\r\n transfarOrderSlice.actions;\r\n\r\n\r\n // get all transfar orders\r\n export const getAllTransfarOrder = (payload) => (dispatcher) => {\r\n return Services.getAllTransfarOrder(payload)\r\n .then((response) => {\r\n // console.log(response, 'transfaroder234')\r\n const { data } = response.data;\r\n dispatcher(addtransfarOrderList(data.filter((item) => !item.delFlag)));\r\n return Promise.resolve(data.filter((item) => !item.delFlag));\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\n//create Transfar order\r\nexport const createTransfarOrder = (payload) => (dispatcher) => {\r\n return Services.createTransfarOrder(payload)\r\n .then((response) => {\r\n console.log(response, \"createTransfar\");\r\n return Promise.resolve(response);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\n\r\nexport const selectTransfarOrder = (state) => state.transfarOrderReducer;\r\n\r\nexport default transfarOrderSlice.reducer;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport styled from 'styled-components';\r\nimport { selectWarehouse } from \"../../Inventory/Warehouse/slice\";\r\nimport { selectItems } from \"../../Inventory/Items/slice\";\r\nimport { getInput } from \"../../Inventory/Items/AddItem\";\r\nimport { notificationAlert } from \"../../utils/notificationAlert\";\r\nimport { createTransfarOrder, getAllTransfarOrder } from \"./slice\";\r\nimport { selectDashboard } from \"../../Dashboard/slice\";\r\nimport { TableWithPagination } from '../../globalComponents/TableWithPagination';\r\nimport { ToolBar } from '../../globalComponents/ToolBar';\r\nimport { Menu } from 'antd';\r\nimport { StyledCard } from '../../globalComponents/styles';\r\nimport { useRouteMatch, Route, Switch, useHistory } from 'react-router';\r\nimport {\r\n StyledBoldText,\r\n StyledInputContainer,\r\n} from '../../globalComponents/styles';\r\nimport { Box,Grid } from '@material-ui/core';\r\nimport { Input, Select, Col, Row, Form } from \"antd\";\r\nimport {\r\n PrimaryButton,\r\n TransaparentButton,\r\n} from '../../globalComponents/Buttons';\r\nimport { FiTrash2 } from 'react-icons/fi';\r\n\r\n\r\n\r\n\r\nconst { Option } = Select;\r\n\r\nconst transferOrderInput = [\r\n {\r\n name: \"referenceNumber\",\r\n label: \"Reference Number\",\r\n isRequired: false,\r\n type: \"text\",\r\n },\r\n {\r\n name: \"sourceWarehouseId\",\r\n label: \"Source WarehouseId\",\r\n isRequired: false,\r\n type: \"search\",\r\n },\r\n {\r\n name: \"destinationWarehouseId\",\r\n label: \"Destination Warehouse\",\r\n isRequired: false,\r\n type: \"search\",\r\n },\r\n {\r\n name: \"reason\",\r\n label: \"Reason\",\r\n isRequired: false,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n },\r\n];\r\n\r\nconst layout = {\r\n labelCol: { span: 24 },\r\n wrapperCol: { span: 24 },\r\n};\r\n\r\nconst data = [\r\n {\r\n item: [\r\n { name: \"Rice\", sku: 20 },\r\n { name: \"Beans\", sku: 15 },\r\n ],\r\n itemSku: \"\",\r\n transferQuantity: 0,\r\n },\r\n];\r\n\r\nexport const AddTransferOrder = (props) => {\r\n //useselector\r\n const { warehouseList } = useSelector(selectWarehouse);\r\n const { itemList } = useSelector(selectItems);\r\n const profile = useSelector(selectDashboard);\r\n const userProfile2 = profile.userProfile.workShift;\r\n\r\n\r\n\r\n\r\n\r\n console.log(\r\n { warehouseList, itemList, profile, userProfile2 },\r\n \"selectedItem\"\r\n );\r\n\r\n //useState\r\n const [itemsState, setItemsState] = useState(data);\r\n const [activeRowIndex, setActiveRowIndex] = useState(null);\r\n const [selectValues, setSelectValues] = useState({});\r\n const [createInvoiceLoading, setCreateInvoiceLoading] = useState(false);\r\n\r\n //useForm\r\n const [basicInfoForm] = Form.useForm();\r\n const history = useHistory();\r\n const dispatcher = useDispatch();\r\n\r\n\r\n useEffect(() => {\r\n dispatcher(getAllTransfarOrder({ page: 0, size: 10 }));\r\n }, []);\r\n\r\n//get new Items\r\n useEffect(()=>{\r\n const newItemsState = [...itemsState].map(itm=>{\r\n itm.item = itemList;\r\n return itm;\r\n })\r\n setItemsState(newItemsState);\r\n },[itemList])\r\n\r\n const getSelectedItem = (currentItemState) => {\r\n return currentItemState.find((item, index) => index === activeRowIndex);\r\n };\r\n\r\n const replaceItem = (currentItemState, selecedItem) => {\r\n currentItemState.splice(activeRowIndex, 1, selecedItem);\r\n setItemsState(currentItemState);\r\n };\r\n\r\n //handle select change\r\n const handleSelectChange = (selectName) => (value) => {\r\n const prevSelectValues = { ...selectValues };\r\n prevSelectValues[selectName] = value;\r\n setSelectValues(prevSelectValues);\r\n };\r\n\r\n //handleItemSelect\r\n const handleItemSelect = (itemId) => {\r\n const currentItemState = [...itemsState];\r\n const selectedItemObj = getSelectedItem(currentItemState);\r\n const selecteditem = selectedItemObj.item.find((itm) => itm.id === itemId);\r\n selectedItemObj.itemId = itemId;\r\n selectedItemObj.itemName = selecteditem.itemName;\r\n selectedItemObj.itemSku = selecteditem.sku;\r\n\r\n replaceItem(currentItemState, selectedItemObj);\r\n };\r\n\r\n \r\n //*handleQuantitytransfar\r\n const handleQuantityTransfar = (e) => {\r\n const currentItemState = [...itemsState];\r\n const selectedItemObj = getSelectedItem(currentItemState);\r\n const qty = e.target.value;\r\n selectedItemObj.transferQuantity = qty;\r\n // selectedItemObj.itemSku = qty\r\n // selectedItemObj.amount =\r\n // parseInt(qty || 0) * parseInt(selectedItemObj.price);\r\n replaceItem(currentItemState, selectedItemObj);\r\n };\r\n\r\n\r\n const handleDeleteRow = () => {\r\n const currentItemState = [...itemsState];\r\n currentItemState.splice(activeRowIndex, 1);\r\n setItemsState(currentItemState);\r\n };\r\n\r\n const columns = [\r\n {\r\n title: 'Item',\r\n dataIndex: 'item',\r\n key: 'item',\r\n render: (data) => {\r\n const optionList = data.map((item, index) => {\r\n return (\r\n <Option key={index} value={item.id}>\r\n {item.itemName}\r\n </Option>\r\n );\r\n });\r\n return (\r\n <StyledInputContainer>\r\n <Select\r\n onChange={handleItemSelect} \r\n placeholder=\"Select Item\"\r\n style={{ width: '100%' }}\r\n bordered={false}>\r\n {optionList}\r\n </Select>\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n {\r\n title: 'Item Sku',\r\n dataIndex: 'itemSku',\r\n key: 'itemSku',\r\n render: (data) => {\r\n return (\r\n <StyledInputContainer>\r\n <Input\r\n // onChange={handleSelectChange}\r\n bordered={false}\r\n value={data}\r\n disabled\r\n />\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n\r\n {\r\n title: 'Transfer Quantity',\r\n dataIndex: 'transferQuantity',\r\n key: 'transferQuantity',\r\n render: (data) => {\r\n return (\r\n <StyledInputContainer>\r\n <Input\r\n type=\"number\"\r\n onChange={handleQuantityTransfar}\r\n value={data}\r\n bordered={false}\r\n placeholder=\"Eg +10. -10\"\r\n />\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n\r\n {\r\n title: 'Delete',\r\n dataIndex: 'delete',\r\n key: 'delete',\r\n render: (data) => {\r\n return (\r\n itemsState.length > 1 && (\r\n <FiTrash2\r\n onClick={handleDeleteRow}\r\n style={{ fontSize: '1.4vw', marginLeft: '20px', color: 'red' }}\r\n />\r\n )\r\n );\r\n },\r\n },\r\n ];\r\n\r\n const handleTableRow = (data, index) => {\r\n return {\r\n onClick: (e) => {\r\n setActiveRowIndex(index);\r\n },\r\n };\r\n };\r\n\r\n const AddAdjustableRow = () => {\r\n const row = {\r\n item: itemList,\r\n itemSKU: \"\",\r\n transferQuantity: 0,\r\n };\r\n\r\n setItemsState((prevState) => [...prevState, row]);\r\n };\r\n\r\n //get source warehouse list\r\n const warehouseOptionList = warehouseList.map((item, index) =>{\r\n return (\r\n <Option value={item.id} key={index}>\r\n {item.name}\r\n </Option>\r\n );\r\n })\r\n const warehouseOptionList2 = warehouseList.map((item, index) => {\r\n return (\r\n <Option value={item.id} key={index}>\r\n {item.name}\r\n </Option>\r\n );\r\n });\r\n \r\n\r\n const getTransfarOrderInput = [...transferOrderInput].map((item)=>{\r\n if (item.name === \"sourceWarehouseId\") {\r\n return (\r\n <Col sm={12}>\r\n {getInput(\r\n item,\r\n handleSelectChange,\r\n warehouseOptionList\r\n )}\r\n </Col>\r\n );\r\n }\r\n if (item.name === \"destinationWarehouseId\") {\r\n return (\r\n <Col sm={12}>\r\n {getInput(item, handleSelectChange, warehouseOptionList2)}\r\n </Col>\r\n );\r\n }\r\n \r\n return <Col sm={12}>{getInput(item, handleSelectChange)}</Col>;\r\n })\r\n\r\n\r\n\r\n // handle Submit\r\n const handleFormSubmit = (e) => {\r\n e.preventDefault();\r\n basicInfoForm.submit();\r\n };\r\n\r\n // on finish\r\n const onFinish = async (values) => {\r\n try {\r\n setCreateInvoiceLoading(true);\r\n values.sourceWarehouseId = selectValues.sourceWarehouseId;\r\n values.destinationWarehouseId = selectValues.destinationWarehouseId;\r\n values.orgId = userProfile2.orgId;\r\n\r\n const items = itemsState.map((item) => {\r\n return {\r\n itemId: item.itemId,\r\n itemSku: item.itemSku,\r\n transferQuantity: item.transferQuantity,\r\n };\r\n });\r\n\r\n values.items = items;\r\n\r\n console.log(values, \"values\");\r\n await dispatcher(createTransfarOrder({data: values}));\r\n await dispatcher(getAllTransfarOrder({}));\r\n notificationAlert(\r\n \"success\",\r\n \"transfar order was successfully created\"\r\n );\r\n setCreateInvoiceLoading(false);\r\n // history.push(\"/invoice\");\r\n } \r\n catch (error) {\r\n setCreateInvoiceLoading(false);\r\n notificationAlert(\r\n \"error\",\r\n \"Failed\",\r\n error?.response?.data?.message || \"Please try again later\"\r\n );\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <ToolBar title=\"New Transfer Order\" />\r\n <StyledCard mt={2} py={3} px={4} display=\"flex\">\r\n <Grid item xs={12}>\r\n {/* <Box px={3}>\r\n <StyledBoldText variant=\"subtitle1\">Warehouse</StyledBoldText>\r\n </Box> */}\r\n <Box px={3} mt={2}>\r\n <Form form={basicInfoForm} onFinish={onFinish} {...layout}>\r\n <Row gutter={16}>{getTransfarOrderInput}</Row>\r\n </Form>\r\n </Box>\r\n </Grid>\r\n </StyledCard>\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n dataSource={itemsState}\r\n onRow={handleTableRow}\r\n columns={columns}\r\n hidePagination\r\n />\r\n <Box p={4} display=\"flex\" justifyContent=\"space-between\">\r\n <PrimaryButton onClick={AddAdjustableRow} text=\"Add Row\" />\r\n <Box mt={6} pb={5} display=\"flex\" justifyContent=\"flex-start\">\r\n <Box mr={2}>\r\n <TransaparentButton text=\"Cancel\" />\r\n </Box>\r\n {/* <Box mr={2}>\r\n <PrimaryButton text=\"Save to Draft\" />\r\n </Box> */}\r\n <PrimaryButton\r\n loading={createInvoiceLoading}\r\n onClick={handleFormSubmit}\r\n text=\"Save & Submit\"\r\n />\r\n </Box>\r\n </Box>\r\n </StyledCard>\r\n </>\r\n );\r\n};\r\n","import React, {useEffect, useState} from 'react';\r\nimport styled from 'styled-components';\r\nimport moment from \"moment\";\r\nimport { TableWithPagination } from '../../globalComponents/TableWithPagination';\r\nimport { ToolBar } from '../../globalComponents/ToolBar';\r\nimport { Menu } from 'antd';\r\nimport { StyledCard } from '../../globalComponents/styles';\r\nimport { useRouteMatch, Route, Switch, useHistory } from 'react-router';\r\nimport { selectTransfarOrder, getAllTransfarOrder } from \"./slice\";\r\n\r\nimport { AddTransferOrder } from \"./AddTransferOrder\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\n\r\nconst columns = [\r\n // {\r\n // title: \"S/N\",\r\n // dataIndex: \"sn\",\r\n // key: \"sn\",\r\n // },\r\n {\r\n title: \"Transfer Date\",\r\n dataIndex: \"transferDate\",\r\n key: \"transferDate\",\r\n render: (data) => {\r\n return moment(data).format(\"dddd, MMMM Do, YYYY\");\r\n },\r\n },\r\n {\r\n title: \"transferred Quantity\",\r\n dataIndex: \"transferredQuantity\",\r\n key: \"transferredQuantity\",\r\n },\r\n {\r\n title: \"Ref No\",\r\n dataIndex: \"referenceNumber\",\r\n key: \"referenceNumber\",\r\n },\r\n {\r\n title: \"Source Warehouse\",\r\n dataIndex: \"sourceWarehouse\",\r\n key: \"sourceWarehouse\",\r\n },\r\n {\r\n title: \"Destination Warehouse\",\r\n dataIndex: \"destinationWarehouseUuid\",\r\n key: \"destinationWarehouseUuid\",\r\n },\r\n];\r\n\r\nconst data = [\r\n {\r\n item: 'Building',\r\n itemId: '00009',\r\n itemClass: 'Stock Item',\r\n unitCost: '30000',\r\n unitPrice: '15000',\r\n stockOnHand: 23000,\r\n },\r\n {\r\n item: 'Building',\r\n itemId: '00009',\r\n itemClass: 'Stock Item',\r\n unitCost: '30000',\r\n unitPrice: '15000',\r\n stockOnHand: 23000,\r\n },\r\n {\r\n item: 'Building',\r\n itemId: '00009',\r\n itemClass: 'Stock Item',\r\n unitCost: '30000',\r\n unitPrice: '15000',\r\n stockOnHand: 23000,\r\n },\r\n {\r\n item: 'Building',\r\n itemId: '00009',\r\n itemClass: 'Stock Item',\r\n unitCost: '30000',\r\n unitPrice: '15000',\r\n stockOnHand: 23000,\r\n },\r\n {\r\n item: 'Building',\r\n itemId: '00009',\r\n itemClass: 'Stock Item',\r\n unitCost: '30000',\r\n unitPrice: '15000',\r\n stockOnHand: 23000,\r\n },\r\n];\r\n\r\nexport const TransferOrder = (props) => {\r\n const dispatcher = useDispatch();\r\n\r\n //useSelector\r\n const { transfarOrderList, paginationProps } = useSelector(selectTransfarOrder);\r\n console.log({transfarOrderList, paginationProps}, 'transfarorder')\r\n\r\n const [page, setPage] = React.useState(2);\r\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\r\n const { url, path } = useRouteMatch();\r\n const history = useHistory();\r\n\r\n\r\n useEffect(() => {\r\n (async () => {\r\n await dispatcher(getAllTransfarOrder());\r\n })();\r\n // dispatcher(getAllTransfarOrder({ page: 0, size: 10 }));\r\n }, []);\r\n\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n setRowsPerPage(parseInt(event.target.value, 10));\r\n setPage(0);\r\n };\r\n\r\n\r\n const gotoAddOrder = () => {\r\n history.push(`${url}/add-order`);\r\n };\r\n\r\n const handleTableRow = (record, rowIndex) => {\r\n return {\r\n onClick: (event) => {\r\n history.push(`${url}/item-details`);\r\n },\r\n };\r\n };\r\n return (\r\n <Switch>\r\n <Route exact path={path}>\r\n <ToolBar\r\n title=\"All Transfer Orders\"\r\n showtools\r\n onCreate={gotoAddOrder}\r\n createButtonText=\"Create Transfer Order\"\r\n />\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n rowsPerPage={rowsPerPage}\r\n page={page}\r\n handleChangeRowsPerPage={handleChangeRowsPerPage}\r\n handleChangePage={handleChangePage}\r\n columns={columns}\r\n dataSource={transfarOrderList}\r\n onRow={handleTableRow}\r\n />\r\n </StyledCard>\r\n </Route>\r\n <Route path={`${path}/add-order`}>\r\n <AddTransferOrder />\r\n </Route>\r\n </Switch>\r\n );\r\n};\r\n","import React, { useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport { TableWithPagination } from '../../globalComponents/TableWithPagination';\r\nimport { ToolBar } from '../../globalComponents/ToolBar';\r\nimport { Menu } from 'antd';\r\nimport { StyledCard } from '../../globalComponents/styles';\r\nimport { useRouteMatch, Route, Switch, useHistory } from 'react-router';\r\nimport {\r\n StyledBoldText,\r\n StyledInputContainer,\r\n} from '../../globalComponents/styles';\r\nimport { Box, Grid} from '@material-ui/core';\r\nimport { Input, Select, Col, Row , Form } from 'antd';\r\nimport {\r\n PrimaryButton,\r\n TransaparentButton,\r\n} from '../../globalComponents/Buttons';\r\nimport { FiTrash2 } from 'react-icons/fi';\r\nimport { getInput } from '../../Inventory/Items/AddItem';\r\n\r\nconst { Option } = Select;\r\n\r\nconst data = [\r\n {\r\n item: [\r\n { name: 'Rice', sku: 20 },\r\n { name: 'Beans', sku: 15 },\r\n ],\r\n description: '',\r\n quantity: '',\r\n price: '',\r\n tax: [\r\n { name: 'Freet(10%)', sku: 20 },\r\n { name: 'Freet(20%)', sku: 15 },\r\n ],\r\n },\r\n];\r\n\r\n\r\nconst salesOrder = [\r\n {\r\n name: 'customer',\r\n label: 'Customer',\r\n isRequired: false,\r\n type: 'select',\r\n },\r\n {\r\n name: 'salesOrderNumber',\r\n label: 'Sales Order number',\r\n isRequired: false,\r\n type: 'text',\r\n },\r\n {\r\n name: 'salesOrderDate*',\r\n label: 'Sales Order Date',\r\n isRequired: false,\r\n type: 'date',\r\n },\r\n {\r\n name: 'dueDate',\r\n label: 'Due date',\r\n isRequired: false,\r\n type: 'date',\r\n },\r\n {\r\n name: 'warehouse',\r\n label: 'Warehouse*',\r\n isRequired: false,\r\n type: 'select',\r\n },\r\n {\r\n name: 'salesPerson',\r\n label: 'Sales person',\r\n isRequired: false,\r\n type: 'select',\r\n },\r\n {\r\n name: 'notes',\r\n label: 'Notes',\r\n isRequired: false,\r\n type: 'textarea',\r\n },\r\n ];\r\n\r\n\r\n const layout = {\r\n labelCol: { span: 24 },\r\n wrapperCol: { span: 24 },\r\n };\r\n \r\n\r\nexport const AddSalesOrder = (props) => {\r\n const [itemsState, setItemsState] = useState(data);\r\n const [activeRowIndex, setActiveRowIndex] = useState(null);\r\n\r\n const handleDeleteRow = () => {\r\n const currentItemState = [...itemsState];\r\n currentItemState.splice(activeRowIndex, 1);\r\n setItemsState(currentItemState);\r\n };\r\n\r\n const columns = [\r\n {\r\n title: 'Item',\r\n dataIndex: 'item',\r\n key: 'item',\r\n render: (data) => {\r\n const optionList = data.map((item, index) => {\r\n return (\r\n <Option key={index} value={item.sku}>\r\n {item.name}\r\n </Option>\r\n );\r\n });\r\n return (\r\n <StyledInputContainer>\r\n <Select\r\n /* onChange={handleItemSelect} */\r\n placeholder=\"Select Item\"\r\n style={{ width: '100%' }}\r\n bordered={false}>\r\n {optionList}\r\n </Select>\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n {\r\n title: 'Description',\r\n dataIndex: 'description',\r\n key: 'description',\r\n render: (data) => {\r\n return (\r\n <StyledInputContainer>\r\n <Input bordered={false} />\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n\r\n {\r\n title: 'Quantity',\r\n dataIndex: 'quantity',\r\n key: 'quantity',\r\n render: (data) => {\r\n return (\r\n <StyledInputContainer>\r\n <Input\r\n type='number'\r\n bordered={false}\r\n /* onChange={handleAdjustedBy} */\r\n placeholder=\"\"\r\n />\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n {\r\n title: 'Price',\r\n dataIndex: 'price',\r\n key: 'price',\r\n render: (data) => {\r\n return (\r\n <StyledInputContainer>\r\n <Input\r\n type='number'\r\n bordered={false}\r\n /* onChange={handleAdjustedBy} */\r\n placeholder=\"\"\r\n />\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n {\r\n title: 'Tax',\r\n dataIndex: 'tax',\r\n key: 'tax',\r\n render: (data) => {\r\n const optionList = data.map((item, index) => {\r\n return (\r\n <Option key={index} value={item.sku}>\r\n {item.name}\r\n </Option>\r\n );\r\n });\r\n return (\r\n <StyledInputContainer>\r\n <Select\r\n /* onChange={handleItemSelect} */\r\n placeholder=\"Select Item\"\r\n style={{ width: '100%' }}\r\n bordered={false}>\r\n {optionList}\r\n </Select>\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n\r\n {\r\n title: 'Delete',\r\n dataIndex: 'delete',\r\n key: 'delete',\r\n render: (data) => {\r\n return (\r\n itemsState.length > 1 && (\r\n <FiTrash2\r\n onClick={handleDeleteRow}\r\n style={{ fontSize: '1.4vw', marginLeft: '20px', color: 'red' }}\r\n />\r\n )\r\n );\r\n },\r\n },\r\n ];\r\n\r\n const handleTableRow = (data, index) => {\r\n return {\r\n onClick: (e) => {\r\n setActiveRowIndex(index);\r\n },\r\n };\r\n };\r\n\r\n const AddAdjustableRow = () => {\r\n const row = {\r\n item: [\r\n { name: 'Rice', sku: 20 },\r\n { name: 'Beans', sku: 15 },\r\n ],\r\n description: '',\r\n quantity: '',\r\n price: '',\r\n tax: [\r\n { name: 'Freet(10%)', sku: 20 },\r\n { name: 'Freet(20%)', sku: 15 },\r\n ],\r\n };\r\n\r\n setItemsState((prevState) => [...prevState, row]);\r\n };\r\n\r\n const handleSelectChange = (selectName) => values => {\r\n \r\n }\r\n\r\n const salesOrderList = [...salesOrder].map((item) => {\r\n return <Col sm={12}>{getInput(item, handleSelectChange)}</Col>;\r\n });\r\n\r\n const onFinish = (values) => {\r\n\r\n }\r\n\r\n return (\r\n <>\r\n <ToolBar title=\"New Sales Order\" />\r\n <StyledCard mt={2} py={3} px={4} display=\"flex\">\r\n <Grid item xs={12}>\r\n <Box px={3}>\r\n <StyledBoldText variant=\"subtitle1\">Warehouse</StyledBoldText>\r\n </Box>\r\n <Box px={3} mt={2}>\r\n <Form onFinish={onFinish} {...layout}>\r\n <Row gutter={16}>{salesOrderList}</Row>\r\n </Form>\r\n </Box>\r\n {/* <Box px={3} mt={2}>\r\n <PrimaryButton text=\"Add Warehouse\" onClick={handleAddWarehouse} />\r\n </Box> */}\r\n </Grid>\r\n </StyledCard>\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n dataSource={itemsState}\r\n onRow={handleTableRow}\r\n columns={columns}\r\n hidePagination\r\n />\r\n <Box p={4}>\r\n <PrimaryButton onClick={AddAdjustableRow} text=\"Add Row\" />\r\n </Box>\r\n </StyledCard>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { TableWithPagination } from '../../globalComponents/TableWithPagination';\r\nimport { ToolBar } from '../../globalComponents/ToolBar';\r\nimport { Menu, Space, Popover } from 'antd';\r\nimport { StyledCard } from '../../globalComponents/styles';\r\nimport { useRouteMatch, Route, Switch, useHistory } from 'react-router';\r\nimport { FiMoreVertical } from 'react-icons/fi';\r\nimport { AddSalesOrder } from './AddSalesOrder';\r\n\r\n\r\nconst columns = [\r\n {\r\n title: 'S/N',\r\n dataIndex: 'sn',\r\n key: 'sn',\r\n },\r\n {\r\n title: 'Name',\r\n dataIndex: 'name',\r\n key: 'name',\r\n },\r\n {\r\n title: 'SKU',\r\n dataIndex: 'barcode',\r\n key: 'barcode',\r\n },\r\n {\r\n title: 'Stock On Hand',\r\n dataIndex: 'stockOnHand',\r\n key: 'stockOnHand',\r\n },\r\n\r\n {\r\n title: 'Action',\r\n dataIndex: 'action',\r\n key: 'action',\r\n width: '5%',\r\n render: (data, allData) => {\r\n const content = (\r\n <Space direction='vertical' size='small'>\r\n <p>Edit</p>\r\n <p style={{color: 'red', cursor: 'pointer'}}>Delete</p>\r\n </Space>\r\n )\r\n return (\r\n <Popover content={content} trigger='click'>\r\n <FiMoreVertical />\r\n </Popover>\r\n )\r\n },\r\n },\r\n \r\n];\r\n\r\nconst data = [\r\n {\r\n item: 'Building',\r\n itemId: '00009',\r\n itemClass: 'Stock Item',\r\n unitCost: '30000',\r\n unitPrice: '15000',\r\n stockOnHand: 23000,\r\n },\r\n {\r\n item: 'Building',\r\n itemId: '00009',\r\n itemClass: 'Stock Item',\r\n unitCost: '30000',\r\n unitPrice: '15000',\r\n stockOnHand: 23000,\r\n },\r\n {\r\n item: 'Building',\r\n itemId: '00009',\r\n itemClass: 'Stock Item',\r\n unitCost: '30000',\r\n unitPrice: '15000',\r\n stockOnHand: 23000,\r\n },\r\n {\r\n item: 'Building',\r\n itemId: '00009',\r\n itemClass: 'Stock Item',\r\n unitCost: '30000',\r\n unitPrice: '15000',\r\n stockOnHand: 23000,\r\n },\r\n {\r\n item: 'Building',\r\n itemId: '00009',\r\n itemClass: 'Stock Item',\r\n unitCost: '30000',\r\n unitPrice: '15000',\r\n stockOnHand: 23000,\r\n },\r\n];\r\n\r\nexport const SalesOrders = (props) => {\r\n const [page, setPage] = React.useState(2);\r\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\r\n const { url, path } = useRouteMatch();\r\n const history = useHistory();\r\n\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n setRowsPerPage(parseInt(event.target.value, 10));\r\n setPage(0);\r\n };\r\n\r\n const handleClick = (e) => {\r\n console.log('click ', e);\r\n };\r\n\r\n \r\n const handleTableRow = (record, rowIndex) => {\r\n return {\r\n onClick: (event) => {\r\n history.push(`${url}/item-details`);\r\n },\r\n };\r\n };\r\n\r\n return (\r\n <Switch>\r\n <Route exact path={path}>\r\n <ToolBar\r\n title=\"Sales Orders\"\r\n showtools\r\n onCreate={() => history.push(`${url}/add-order`)}\r\n createButtonText=\"Create Sales Order\"\r\n />\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n rowsPerPage={rowsPerPage}\r\n page={page}\r\n handleChangeRowsPerPage={handleChangeRowsPerPage}\r\n handleChangePage={handleChangePage}\r\n columns={columns}\r\n dataSource={data}\r\n /* onRow={handleTableRow} */\r\n />\r\n </StyledCard>\r\n </Route>\r\n <Route path={`${path}/add-order`}>\r\n <AddSalesOrder />\r\n </Route>\r\n </Switch>\r\n );\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { TableWithPagination } from \"../../globalComponents/TableWithPagination\";\r\nimport { ToolBar } from \"../../globalComponents/ToolBar\";\r\nimport {\r\n StyledBoldText,\r\n StyledCard,\r\n StyledModal,\r\n} from \"../../globalComponents/styles\";\r\nimport { useRouteMatch, Route, Switch, useHistory } from \"react-router\";\r\nimport { FiMoreVertical } from \"react-icons/fi\";\r\nimport { AntFormModal } from \"../../globalComponents/Modal\";\r\nimport { Box, Paper } from \"@material-ui/core\";\r\nimport { getInput } from \"../../Inventory/Items/AddItem\";\r\nimport { Form, Space, Popover, Select, notification } from \"antd\";\r\nimport { Divider } from \"@material-ui/core\";\r\nimport {\r\n PrimaryButton,\r\n TransaparentButton,\r\n} from \"../../globalComponents/Buttons\";\r\nimport Services from \"../../../services\";\r\nimport { Feedback } from \"../../globalComponents/Feedback\";\r\nimport { DeleteModal } from \"../../globalComponents/deleteModal\";\r\nimport { createCustomer, getAllCustomer, selectCustomer } from \"./slice\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { selectDashboard } from \"../../Dashboard/slice\";\r\nimport { themes } from \"../../globalAssets/theme\";\r\nimport { notificationAlert } from \"../../utils/notificationAlert\";\r\n\r\nconst { Option } = Select;\r\n\r\nexport const addCustomerInput = [\r\n {\r\n name: \"first_name\",\r\n label: \"First Name\",\r\n isRequired: true,\r\n type: \"text\",\r\n id: 'firstName',\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"last_name\",\r\n label: \"Last Name\",\r\n isRequired: true,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n id: 'lastName'\r\n },\r\n {\r\n name: \"email\",\r\n label: \"Email\",\r\n isRequired: true,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n id: 'email'\r\n },\r\n {\r\n name: \"phone_number\",\r\n label: \"Phone Number\",\r\n isRequired: true,\r\n type: \"phone\",\r\n defaultValue: \"\",\r\n id: 'phoneNumber'\r\n },\r\n {\r\n name: \"address\",\r\n label: \"Address\",\r\n isRequired: true,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n id :'address'\r\n },\r\n /* {\r\n name: \"state\",\r\n label: \"State\",\r\n isRequired: false,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"zipCode\",\r\n label: \"Zip Code\",\r\n isRequired: false,\r\n type: \"number\",\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"wareHouseContactEmail\",\r\n label: \"Warehouse Email\",\r\n isRequired: false,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n }, */\r\n /*{\r\n name: \"headOfWareHouseId\",\r\n label: \"Head of Warehouse Name\",\r\n isRequired: false,\r\n type: \"search\",\r\n },\r\n {\r\n name: 'headOfWareHouseEmailAddress',\r\n label: 'Head of Warehouse Email',\r\n isRequired: false,\r\n type: 'text',\r\n defaultValue:''\r\n },\r\n {\r\n name: 'headOfWareHouseId',\r\n label: 'Head of Warehouse ID',\r\n isRequired: false,\r\n type: 'number',\r\n defaultValue:''\r\n }, */\r\n];\r\n\r\n\r\n\r\nconst layout = {\r\n labelCol: { span: 24 },\r\n wrapperCol: { span: 24 },\r\n};\r\n\r\nexport const Customers = (props) => {\r\n const [editForm] = Form.useForm();\r\n const [page, setPage] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(10);\r\n const [allWarehouse, setAllWarehouse] = useState([]);\r\n const { customerList, paginationProps } = useSelector(selectCustomer);\r\n const { usersByOrg, userProfile } = useSelector(selectDashboard);\r\n const [selectValues, setSelectValues] = useState({});\r\n const [addGroupModalProps, setAddGroupModalProps] = useState({\r\n isVisible: false,\r\n loading: false,\r\n });\r\n\r\n const [feedbackProps, setFeedbackProps] = useState({\r\n open: false,\r\n type: \"\",\r\n message: \"\",\r\n });\r\n\r\n const [editModalProps, setEditModalProps] = useState({\r\n isVisible: false,\r\n selectedItemInput: [],\r\n loading: false,\r\n initialValues: {},\r\n });\r\n \r\n /* const [deleteModalProps, setDeleteModalProps] = useState({\r\n visible: false,\r\n name: \"\",\r\n id: null,\r\n loading: false,\r\n });\r\n \r\n\r\n */\r\n const dispatcher = useDispatch();\r\n\r\n useEffect(() => {\r\n editForm.resetFields();\r\n const formattedInitialValues = Object.entries(editModalProps.initialValues).map(([key, value]) => {\r\n if(key === 'firstName') {\r\n key = 'first_name'\r\n return [key, value];\r\n }\r\n if(key === 'lastName'){\r\n key = 'last_name';\r\n return [key, value];\r\n }\r\n if(key === 'phoneNumber'){\r\n key = 'phone_number';\r\n return [key, value];\r\n }\r\n\r\n return [key, value]\r\n });\r\n\r\n editForm.setFieldsValue(Object.fromEntries(formattedInitialValues));\r\n }, [editModalProps.isVisible]);\r\n\r\n const handleSelectChange = (selectName) => (value) => {\r\n const prevSelectValues = { ...selectValues };\r\n prevSelectValues[selectName] = value;\r\n setSelectValues(prevSelectValues);\r\n };\r\n\r\n const userList = [...usersByOrg].map((user, index) => {\r\n return (\r\n <Option key={index} value={user.id}>\r\n {user.fullName !== \" \" ? user.fullName : \"Adefisayo Adeniji\"}\r\n </Option>\r\n );\r\n });\r\n\r\n const searchObject = {\r\n onSearch: (val) => {},\r\n };\r\n\r\n const columns = [\r\n {\r\n title: \"ID\",\r\n dataIndex: \"customerNumber\",\r\n key: \"customerNumber\",\r\n },\r\n {\r\n title: \"Name\",\r\n dataIndex: \"name\",\r\n key: \"name\",\r\n render: (data, allData) => {\r\n return `${allData.firstName} ${allData.lastName}`\r\n }\r\n },\r\n {\r\n title: \"Email\",\r\n dataIndex: \"email\",\r\n key: \"email\",\r\n },\r\n {\r\n title: \"Phone Number\",\r\n dataIndex: \"phoneNumber\",\r\n key: \"phoneNumber\",\r\n },\r\n {\r\n title: \"Address\",\r\n dataIndex: \"address\",\r\n key: \"address\",\r\n },\r\n\r\n {\r\n title: \"Action\",\r\n dataIndex: \"action\",\r\n key: \"action\",\r\n width: \"5%\",\r\n render: (data, allData) => {\r\n const content = (\r\n <Space direction=\"vertical\" size=\"small\">\r\n <p\r\n onClick={() => {\r\n const newData = addCustomerInput.map((item) => {\r\n item.defaultValue = allData[item.id];\r\n return getInput(\r\n item,\r\n );\r\n });\r\n setEditModalProps((prevState) => ({\r\n ...prevState,\r\n selectedItemInput: newData,\r\n isVisible: true,\r\n initialValues: allData,\r\n }));\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n >\r\n Edit\r\n </p>\r\n <p\r\n \r\n style={{ color: \"red\", cursor: \"pointer\" }}\r\n >\r\n Delete\r\n </p>\r\n </Space>\r\n );\r\n\r\n \r\n return (\r\n <Popover\r\n content={content}\r\n trigger=\"click\"\r\n >\r\n <FiMoreVertical />\r\n </Popover>\r\n );\r\n },\r\n },\r\n ];\r\n\r\n const handleChangePage = (event, newPage) => {\r\n (async () => {\r\n setPage(newPage);\r\n await dispatcher(getAllCustomer({ page: newPage, size: rowsPerPage }));\r\n })();\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n (async () => {\r\n setRowsPerPage(parseInt(event.target.value, 10));\r\n setPage(0);\r\n await dispatcher(\r\n getAllCustomer({ page: 0, size: parseInt(event.target.value, 10) })\r\n );\r\n })();\r\n };\r\n\r\n const customerInputs = addCustomerInput.map((item) =>\r\n getInput(item)\r\n );\r\n\r\n const onFinish = async (values) => {\r\n try {\r\n setAddGroupModalProps((prevState) => ({ ...prevState, loading: true }));\r\n values.headOfWareHouseId = selectValues.headOfWareHouseId;\r\n values.orgId = userProfile.orgId;\r\n await dispatcher(createCustomer({ data: values }));\r\n await dispatcher(getAllCustomer({page, size: rowsPerPage}));\r\n setAddGroupModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n loading: false,\r\n }));\r\n setFeedbackProps({\r\n type: \"success\",\r\n open: true,\r\n message: \"customer has been added\",\r\n });\r\n } catch (error) {\r\n setAddGroupModalProps((prevState) => ({ ...prevState, loading: false }));\r\n setFeedbackProps({\r\n type: \"error\",\r\n open: true,\r\n message: \"An error occurred, please try again later\",\r\n });\r\n }\r\n };\r\n\r\n const handleFeedbackClose = (event, reason) => {\r\n if (reason === \"clickaway\") {\r\n return;\r\n }\r\n setFeedbackProps((prevState) => ({ ...prevState, open: false }));\r\n };\r\n\r\n\r\n\r\n const onEditFinish = async (values) => {\r\n try {\r\n setEditModalProps((prevState) => ({ ...prevState, loading: true }));\r\n await Services.editCustomers({\r\n data: values,\r\n id: editModalProps.initialValues.id,\r\n });\r\n await dispatcher(getAllCustomer({ page, size: rowsPerPage }));\r\n setEditModalProps((prevState) => ({\r\n ...prevState,\r\n loading: false,\r\n isVisible: false,\r\n }));\r\n notificationAlert(\r\n \"success\",\r\n \"Customer updated\",\r\n `${editModalProps.initialValues.name} has been updated`\r\n );\r\n } catch (error) {\r\n setEditModalProps((prevState) => ({ ...prevState, loading: false }));\r\n if (error.response) {\r\n notificationAlert(\r\n \"error\",\r\n \"Error Occurred\",\r\n error.response.data.message || \"Please try again later\"\r\n );\r\n } else {\r\n notificationAlert(\"error\", \"Error Occurred\", \"Please try again later\");\r\n }\r\n }\r\n }; \r\n\r\n\r\n\r\n return (\r\n <>\r\n <ToolBar\r\n title=\"All Customer\"\r\n showtools\r\n onCreate={() =>\r\n setAddGroupModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: true,\r\n }))\r\n }\r\n createButtonText=\"Add new customer\"\r\n />\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n rowsPerPage={rowsPerPage}\r\n page={page}\r\n total={paginationProps.totalItems}\r\n handleChangeRowsPerPage={handleChangeRowsPerPage}\r\n handleChangePage={handleChangePage}\r\n columns={columns}\r\n dataSource={customerList}\r\n />\r\n </StyledCard>\r\n <CreateCustomerModal\r\n visible={addGroupModalProps.isVisible}\r\n onCancel={() =>\r\n setAddGroupModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }))\r\n }\r\n onFinish={onFinish}\r\n loading={addGroupModalProps.loading}\r\n warehouseInputs={customerInputs}\r\n />\r\n <AntFormModal\r\n title=\"Edit Customer\"\r\n visible={editModalProps.isVisible}\r\n onCancel={() =>\r\n setEditModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }))\r\n }\r\n form={editForm}\r\n loading={editModalProps.loading}\r\n onFinish={onEditFinish}\r\n >\r\n {editModalProps.selectedItemInput}\r\n </AntFormModal>\r\n\r\n <Feedback\r\n open={feedbackProps.open}\r\n message={feedbackProps.message}\r\n type={feedbackProps.type}\r\n onClose={handleFeedbackClose}\r\n />\r\n {/* <DeleteModal\r\n open={deleteModalProps.visible}\r\n loading={deleteModalProps.loading}\r\n itemName={deleteModalProps.name}\r\n onClose={() =>\r\n setDeleteModalProps((prevState) => ({ ...prevState, visible: false }))\r\n }\r\n onDelete={handleWarehouseDelete}\r\n title=\"Delete Warehouse\"\r\n /> */}\r\n </>\r\n );\r\n};\r\n\r\nexport const CreateCustomerModal = (props) => {\r\n const [form] = Form.useForm();\r\n\r\n const onOk = () => {\r\n form.submit();\r\n };\r\n\r\n return (\r\n <StyledModal\r\n title=\" New Customer\"\r\n visible={props.visible}\r\n okButtonProps={{\r\n loading: props.loading,\r\n htmlType: \"submit\",\r\n style: {\r\n backgroundColor: themes.primaryColor,\r\n border: `1px solid ${themes.primaryColor}`,\r\n },\r\n }}\r\n cancelButtonProps={{\r\n type: \"danger\",\r\n }}\r\n onOk={onOk}\r\n okText=\"Create\"\r\n onCancel={props.onCancel}\r\n >\r\n <Form form={form} {...layout} onFinish={props.onFinish}>\r\n {props.warehouseInputs}\r\n </Form>\r\n </StyledModal>\r\n );\r\n};\r\n\r\nconst EditWarehouseModal = (props) => {\r\n const onOk = () => {\r\n props.form.submit();\r\n };\r\n\r\n const cancelAndReset = () => {\r\n props.onCancel();\r\n };\r\n\r\n return (\r\n <StyledModal\r\n title=\"Edit Warehouse\"\r\n visible={props.visible}\r\n okButtonProps={{\r\n loading: props.loading,\r\n htmlType: \"submit\",\r\n style: {\r\n backgroundColor: themes.primaryColor,\r\n border: `1px solid ${themes.primaryColor}`,\r\n },\r\n }}\r\n cancelButtonProps={{\r\n type: \"danger\",\r\n }}\r\n onOk={onOk}\r\n okText=\"Create\"\r\n onCancel={cancelAndReset}\r\n >\r\n <Form\r\n initialValues={props.initialValues}\r\n form={props.form}\r\n {...layout}\r\n onFinish={props.onFinish}\r\n >\r\n {props.warehouseInputs}\r\n </Form>\r\n </StyledModal>\r\n );\r\n};\r\n","import { createSlice } from '@reduxjs/toolkit';\r\nimport Services from '../../../services';\r\n\r\n\r\nconst invoiceSlice = createSlice({\r\n name: 'invoiceSlice',\r\n initialState: {\r\n invoiceList: [],\r\n singleInvoice: { customer: {}, charges:[]},\r\n paginationProps: { page: 0, totalPages: 0, totalItems: 0 },\r\n },\r\n reducers: {\r\n addSingleInvoice: (state, {payload}) => {\r\n state.singleInvoice = payload;\r\n },\r\n addInvoiceList: (state, {payload}) => {\r\n state.invoiceList = payload;\r\n },\r\n addPaginationProps: (state, { payload }) => {\r\n state.paginationProps = payload;\r\n },\r\n }\r\n});\r\n\r\n\r\nexport const { addSingleInvoice, addInvoiceList, addPaginationProps} = invoiceSlice.actions;\r\n\r\n\r\nexport const getAllInvoice = payload => dispatcher => {\r\n return Services.getAllInvoice(payload).then(\r\n response => {\r\n const {currentPage: page, totalPages, totalItems, invoices} = response.data.data;\r\n dispatcher(addPaginationProps({page, totalPages, totalItems}));\r\n dispatcher(addInvoiceList(invoices));\r\n \r\n return Promise.resolve(response.data.data);\r\n }\r\n ).catch(error => {\r\n if(error.response){\r\n return Promise.reject(error.response.data);\r\n }\r\n })\r\n}\r\n\r\n\r\nexport const getInvoice = payload => dispatcher => {\r\n return Services.getInvoice(payload).then(\r\n response => {\r\n \r\n dispatcher(addSingleInvoice(response.data.data));\r\n return Promise.resolve(response.data.data);\r\n }\r\n ).catch(error => {\r\n if(error.response){\r\n return Promise.reject(error.response.data);\r\n }\r\n })\r\n}\r\n\r\n\r\n\r\n\r\nexport const selectInvoice = state => state.invoiceReducer;\r\n\r\nexport default invoiceSlice.reducer;","import React, { useEffect, useState } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { TableWithPagination } from \"../../globalComponents/TableWithPagination\";\r\nimport { ToolBar } from \"../../globalComponents/ToolBar\";\r\nimport { Menu, notification, Statistic } from \"antd\";\r\nimport { StyledCard, StyledModal } from \"../../globalComponents/styles\";\r\nimport { useRouteMatch, Route, Switch, useHistory } from \"react-router\";\r\nimport {\r\n StyledBoldText,\r\n StyledInputContainer,\r\n StyledNormalText,\r\n} from \"../../globalComponents/styles\";\r\nimport { Box, Grid, makeStyles, Divider } from \"@material-ui/core\";\r\nimport { Input, Select, Col, Row, Form } from \"antd\";\r\nimport {\r\n PrimaryButton,\r\n TransaparentButton,\r\n} from \"../../globalComponents/Buttons\";\r\nimport { FiTrash2 } from \"react-icons/fi\";\r\nimport { getInput } from \"../../Inventory/Items/AddItem\";\r\nimport { themes } from \"../../globalAssets/theme\";\r\nimport { AntFormModal } from \"../../globalComponents/Modal\";\r\nimport {\r\n CreateCustomerModal,\r\n addCustomerInput,\r\n} from \"../../Clients/Customers/index\";\r\nimport { useSelector } from 'react-redux';\r\nimport { selectItems } from '../../Inventory/Items/slice';\r\nimport { selectCustomer } from '../../Clients/Customers/slice';\r\nimport { selectDashboard } from '../../Dashboard/slice';\r\nimport moment from 'moment';\r\nimport Services from \"../../../services\";\r\nimport { notificationAlert } from \"../../utils/notificationAlert\";\r\nimport { createCustomer, getAllCustomer } from '../../Clients/Customers/slice';\r\nimport {useDispatch} from 'react-redux';\r\nimport { Feedback } from \"../../globalComponents/Feedback\";\r\nimport { getAllInvoice } from './slice';\r\n\r\n\r\n\r\nconst { Option } = Select;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n icons: {\r\n fontSize: \"1.4vw\",\r\n color: theme.grey,\r\n marginRight: \"15px\",\r\n \"&:hover\": {\r\n color: theme.primaryColor,\r\n cursor: \"pointer\",\r\n },\r\n },\r\n\r\n historyIcon: {\r\n color: theme.primaryColor,\r\n fontSize: \"1.4vw\",\r\n marginRight: \"10px\",\r\n },\r\n arroweft: {\r\n width: 0,\r\n height: 0,\r\n borderTop: \"20px solid transparent\",\r\n borderBottom: \"20px solid transparent\",\r\n\r\n borderRight: `20px solid ${theme.foreground}`,\r\n },\r\n logo: {\r\n width: \"15%\",\r\n height: \"auto\",\r\n },\r\n totalBackground: {\r\n backgroundColor: theme.background,\r\n },\r\n}));\r\n\r\nconst data = [\r\n {\r\n item: [\r\n { itemName: \"Rice\", price: 20, id: 1 },\r\n { itemName: \"Beans\", price: 15 , id: 2},\r\n ], \r\n quantity: 0,\r\n price: 0,\r\n amount: 0,\r\n itemId: '',\r\n itemName: ''\r\n },\r\n];\r\n\r\nconst salesOrder = [\r\n {\r\n name: \"customer_id\",\r\n label: \"Customer\",\r\n isRequired: false,\r\n type: \"search\",\r\n },\r\n /* {\r\n name: \"invoice\",\r\n label: \"Invoice\",\r\n isRequired: false,\r\n type: \"text\",\r\n defaultValue: \"INV/000001\",\r\n disabled: true,\r\n }, */\r\n /* {\r\n name: \"invoiceDate\",\r\n label: \"Invoice Date\",\r\n isRequired: false,\r\n type: \"date\",\r\n }, */\r\n {\r\n name: \"due_date\",\r\n label: \"Due date\",\r\n isRequired: false,\r\n type: \"date\",\r\n },\r\n /* {\r\n name: \"sopo_number\",\r\n label: \"SO/PO Number\",\r\n isRequired: false,\r\n type: \"number\",\r\n }, */\r\n {\r\n name: \"sales_person\",\r\n label: \"Sales person\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n {\r\n name: \"notes\",\r\n label: \"Notes\",\r\n isRequired: false,\r\n type: \"textarea\",\r\n },\r\n];\r\n\r\nconst chargesFields = [\r\n {\r\n name: \"name\",\r\n label: \"Name\",\r\n isRequired: true,\r\n type: \"text\",\r\n },\r\n {\r\n name: \"amount\",\r\n label: \"Amount\",\r\n isRequired: true,\r\n type: \"number\",\r\n },\r\n];\r\n\r\nconst layout = {\r\n labelCol: { span: 24 },\r\n wrapperCol: { span: 24 },\r\n};\r\n\r\nconst customerArr = [\"ade\", \"toyin\"];\r\n\r\nexport const AddInvoice = (props) => {\r\n const { usersByOrg, userProfile } = useSelector(selectDashboard);\r\n const { customerList } = useSelector(selectCustomer);\r\n const { itemList } = useSelector(selectItems);\r\n\r\n // console.log({ usersByOrg, customerList, itemList }, \"addInvoice\");\r\n\r\n\r\n const classes = useStyles();\r\n const [chargesForm] = Form.useForm();\r\n const [basicInfoForm] = Form.useForm();\r\n const [itemsState, setItemsState] = useState(data);\r\n const [activeRowIndex, setActiveRowIndex] = useState(null);\r\n const [otherCharges, setOtherCharges] = useState([]);\r\n const [selectValues, setSelectValues] = useState({});\r\n const [createInvoiceLoading, setCreateInvoiceLoading] = useState(false);\r\n const [addChargesModal, setAddChargesModal] = useState({\r\n isVisible: false,\r\n loading: false,\r\n });\r\n const [addCustomerModalProps, setAddCustomerModalProps] = useState({\r\n isVisible: false,\r\n loading: false,\r\n });\r\n const [feedbackProps, setFeedbackProps] = useState({\r\n open: false,\r\n type: \"\",\r\n message: \"\",\r\n });\r\n\r\n const history = useHistory();\r\n const dispatcher = useDispatch();\r\n\r\n\r\n useEffect(() => {\r\n const formattedItemsState = [...itemsState].map(itm => {\r\n itm.item = itemList;\r\n return itm;\r\n })\r\n setItemsState(formattedItemsState);\r\n }, [itemList])\r\n\r\n\r\n const customerInputs = addCustomerInput.map((item) => getInput(item));\r\n\r\n const handleDeleteRow = () => {\r\n const currentItemState = [...itemsState];\r\n currentItemState.splice(activeRowIndex, 1);\r\n setItemsState(currentItemState);\r\n };\r\n\r\n const getSelectedItem = (currentItemState) => {\r\n return currentItemState.find((item, index) => index === activeRowIndex);\r\n \r\n };\r\n\r\n const replaceItem = (currentItemState, selecedItem) => {\r\n currentItemState.splice(activeRowIndex, 1, selecedItem);\r\n setItemsState(currentItemState);\r\n };\r\n\r\n const handleItemSelect = (itemId) => {\r\n const currentItemState = [...itemsState];\r\n const selectedItemObj = getSelectedItem(currentItemState);\r\n const selecteditem = selectedItemObj.item.find(itm => itm.id === itemId);\r\n selectedItemObj.itemId = itemId;\r\n selectedItemObj.itemName = selecteditem.itemName\r\n selectedItemObj.price = parseInt(selecteditem.sellingPrice);\r\n replaceItem(currentItemState, selectedItemObj);\r\n }\r\n \r\n\r\n const handleQuantityChange = (e) => {\r\n const currentItemState = [...itemsState];\r\n const selectedItemObj = getSelectedItem(currentItemState);\r\n const qty = e.target.value;\r\n selectedItemObj.quantity = qty;\r\n selectedItemObj.amount = parseInt(qty || 0) * parseInt(selectedItemObj.price);\r\n replaceItem(currentItemState, selectedItemObj);\r\n }\r\n\r\n const columns = [\r\n {\r\n title: \"Item\",\r\n dataIndex: \"item\",\r\n key: \"item\",\r\n render: (data) => {\r\n const optionList = data.map((item, index) => {\r\n return (\r\n <Option key={index} value={item.id}>\r\n {item.itemName }\r\n </Option>\r\n );\r\n });\r\n return (\r\n <StyledInputContainer>\r\n <Select\r\n onChange={handleItemSelect}\r\n placeholder=\"Select Item\"\r\n style={{ width: \"100%\" }}\r\n bordered={false}\r\n >\r\n {optionList}\r\n {/* { console.log(optionList, 'optionList')} */}\r\n \r\n </Select>\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n {\r\n title: \"Quantity\",\r\n dataIndex: \"quantity\",\r\n key: \"quantity\",\r\n render: (data, allData) => {\r\n return (\r\n <StyledInputContainer>\r\n <Input\r\n type=\"number\"\r\n disabled={!Boolean(allData.price)}\r\n bordered={false}\r\n onChange={handleQuantityChange}\r\n placeholder=\"\"\r\n />\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n {\r\n title: \"Price\",\r\n dataIndex: \"price\",\r\n key: \"price\",\r\n render: (data) => {\r\n \r\n return (\r\n <StyledInputContainer>\r\n <Input\r\n type=\"number\"\r\n bordered={false}\r\n disabled={true}\r\n value={data}\r\n /* onChange={handleAdjustedBy} */\r\n placeholder=\"\"\r\n />\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n /* {\r\n title: \"Tax\",\r\n dataIndex: \"tax\",\r\n key: \"tax\",\r\n render: (data) => {\r\n const optionList = data.map((item, index) => {\r\n return (\r\n <Option key={index} value={item.sku}>\r\n {item.name}\r\n </Option>\r\n );\r\n });\r\n return (\r\n <StyledInputContainer>\r\n <Select\r\n onChange={handleItemSelect}\r\n placeholder=\"Select Item\"\r\n style={{ width: \"100%\" }}\r\n bordered={false}\r\n >\r\n {optionList}\r\n </Select>\r\n </StyledInputContainer>\r\n );\r\n },\r\n }, */\r\n {\r\n title: \"Amount\",\r\n dataIndex: \"amount\",\r\n key: \"amount\",\r\n render: (data, allData) => {\r\n return (\r\n <StyledInputContainer>\r\n <Input\r\n type=\"number\"\r\n bordered={false}\r\n value={data}\r\n placeholder=\"\"\r\n disabled={true}\r\n />\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n {\r\n title: \"Del\",\r\n dataIndex: \"delete\",\r\n key: \"delete\",\r\n width: \"1%\",\r\n render: (data) => {\r\n return (\r\n itemsState.length > 1 && (\r\n <FiTrash2\r\n onClick={handleDeleteRow}\r\n style={{ fontSize: \"1.4vw\", marginLeft: \"20px\", color: \"red\" }}\r\n />\r\n )\r\n );\r\n },\r\n },\r\n ];\r\n\r\n const handleTableRow = (data, index) => {\r\n return {\r\n onClick: (e) => {\r\n setActiveRowIndex(index);\r\n },\r\n };\r\n };\r\n\r\n const AddAdjustableRow = () => {\r\n const row = {\r\n item: itemList, \r\n quantity: 0,\r\n price: 0,\r\n amount: 0,\r\n itemId: '',\r\n itemName: ''\r\n };\r\n\r\n setItemsState((prevState) => [...prevState, row]);\r\n };\r\n\r\n const handleSelectChange = (selectName) => (value, dateString) => {\r\n const prevSelectValues = { ...selectValues };\r\n if(selectName === 'due_date'){\r\n prevSelectValues[selectName] = moment(dateString).toISOString();\r\n }else {\r\n prevSelectValues[selectName] = value;\r\n }\r\n setSelectValues(prevSelectValues);\r\n };\r\n const onFooterClick = (name) => {\r\n if (name === \"customer_id\") {\r\n setAddCustomerModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: true,\r\n }));\r\n }\r\n };\r\n\r\n const customerOptionList = customerList.map((item, index) => {\r\n return (\r\n <Option value={item.id} key={index}>\r\n {`${item.firstName} ${item.lastName}`}\r\n </Option>\r\n );\r\n });\r\n\r\n const userList = [...usersByOrg].map((user, index) => {\r\n return (\r\n <Option key={index} value={user.id}>\r\n {user.fullName !== \" \" ? user.fullName : \"Adefisayo Adeniji\"}\r\n </Option>\r\n );\r\n });\r\n\r\n const salesOrderList = [...salesOrder].map((item) => {\r\n if (item.name === \"customer_id\") {\r\n return (\r\n <Col sm={12}>\r\n {getInput(\r\n item,\r\n handleSelectChange,\r\n customerOptionList,\r\n null,\r\n onFooterClick\r\n )}\r\n </Col>\r\n );\r\n }\r\n\r\n if(item.name === 'sales_person'){\r\n return (\r\n <Col sm={12}>\r\n {getInput(\r\n item,\r\n handleSelectChange,\r\n userList,\r\n )}\r\n </Col>\r\n );\r\n }\r\n return <Col sm={12}>{getInput(item, handleSelectChange)}</Col>;\r\n });\r\n\r\n const chargesInput = [...chargesFields].map((item) => {\r\n return getInput(item);\r\n });\r\n\r\n const onAddCharges = (values) => {\r\n setOtherCharges((prevState) => [...prevState, values]);\r\n setAddChargesModal((prevState) => ({ ...prevState, isVisible: false }));\r\n };\r\n\r\n const otherChargesList = [...otherCharges].map((item, index) => {\r\n return <OtherChargesComponent data={item} key={index} />;\r\n });\r\n\r\n \r\n\r\n const getOtherCharges = () => {\r\n return otherCharges.reduce((prev, curr) => {\r\n return prev + parseInt(curr.amount);\r\n }, 0);\r\n }\r\n\r\n\r\n const getSubTotal = () => {\r\n return itemsState.reduce((prev, curr) => {\r\n return prev + parseInt(curr.amount);\r\n }, 0);\r\n }\r\n\r\n const getTotal = () => {\r\n return getSubTotal() + getOtherCharges();\r\n }\r\n\r\n const handleFormSubmit = (e) => {\r\n e.preventDefault();\r\n \r\n basicInfoForm.submit()\r\n \r\n }\r\n\r\n const onFinish = async (values) => {\r\n try {\r\n setCreateInvoiceLoading(true)\r\n values.sales_person = selectValues.sales_person;\r\n values.customer_id = selectValues.customer_id;\r\n values.due_date = selectValues.due_date;\r\n const items = itemsState.map(item => {\r\n return ({id: item.itemId, quantity: item.quantity, price: item.price, itemName: item.itemName});\r\n })\r\n \r\n values.items = items;\r\n values.total_amount = getSubTotal() + getOtherCharges();\r\n values.charges = otherCharges;\r\n\r\n console.log(values, 'values')\r\n await Services.createInvoice({data: values, id: values.customer_id});\r\n await dispatcher(getAllInvoice({page: 0, size: 10}));\r\n notificationAlert('success', 'Invoice Created', 'Invoice was successfully created');\r\n setCreateInvoiceLoading(false);\r\n history.push('/invoice');\r\n } catch (error) {\r\n setCreateInvoiceLoading(false);\r\n notificationAlert('error', 'Failed', error?.response?.data?.message || 'Please try again later');\r\n }\r\n };\r\n\r\n const handleFeedbackClose = (event, reason) => {\r\n if (reason === \"clickaway\") {\r\n return;\r\n }\r\n setFeedbackProps((prevState) => ({ ...prevState, open: false }));\r\n };\r\n\r\n\r\n const onAddCustomer = async (values) => {\r\n try {\r\n setAddCustomerModalProps((prevState) => ({ ...prevState, loading: true }));\r\n values.headOfWareHouseId = selectValues.headOfWareHouseId;\r\n values.orgId = userProfile.orgId;\r\n await dispatcher(createCustomer({ data: values }));\r\n await dispatcher(getAllCustomer({}));\r\n setAddCustomerModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n loading: false,\r\n }));\r\n setFeedbackProps({\r\n type: \"success\",\r\n open: true,\r\n message: \"customer has been added\",\r\n });\r\n } catch (error) {\r\n setAddCustomerModalProps((prevState) => ({ ...prevState, loading: false }));\r\n setFeedbackProps({\r\n type: \"error\",\r\n open: true,\r\n message: \"An error occurred, please try again later\",\r\n });\r\n }\r\n }\r\n return (\r\n <>\r\n <ToolBar title=\"New Invoice\" />\r\n <StyledCard mt={2} py={3} px={4} display=\"flex\">\r\n <Grid item xs={12}>\r\n {/* <Box px={3}>\r\n <StyledBoldText variant=\"subtitle1\">Warehouse</StyledBoldText>\r\n </Box> */}\r\n <Box px={3} mt={2}>\r\n <Form form={basicInfoForm} onFinish={onFinish} {...layout}>\r\n <Row gutter={16}>{salesOrderList}</Row>\r\n </Form>\r\n </Box>\r\n </Grid>\r\n </StyledCard>\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n dataSource={itemsState}\r\n onRow={handleTableRow}\r\n columns={columns}\r\n hidePagination\r\n // onRow={handleTableRow}\r\n />\r\n </StyledCard>\r\n <Box p={4} display=\"flex\" justifyContent=\"space-between\">\r\n <PrimaryButton onClick={AddAdjustableRow} text=\"Add Row\" />\r\n <Box flexBasis=\"40%\">\r\n <Box px={1}>{otherChargesList}</Box>\r\n\r\n <Divider />\r\n <TotalComponent title=\"Sub-total\" amount={getSubTotal()} />\r\n <TotalComponent title=\"Total\" amount={getTotal()} />\r\n <TransaparentButton\r\n onClick={() =>\r\n setAddChargesModal((prevState) => ({\r\n ...prevState,\r\n isVisible: true,\r\n }))\r\n }\r\n text=\"Add Charges\"\r\n />\r\n <Box mt={6} pb={5} display=\"flex\" justifyContent=\"flex-start\">\r\n <Box mr={2}>\r\n <TransaparentButton text=\"Cancel\" />\r\n </Box>\r\n {/* <Box mr={2}>\r\n <PrimaryButton text=\"Save to Draft\" />\r\n </Box> */}\r\n <PrimaryButton loading={createInvoiceLoading} onClick={handleFormSubmit} text=\"Save & Submit\" />\r\n </Box>\r\n </Box>\r\n </Box>\r\n\r\n <AntFormModal\r\n title=\"Add Charges\"\r\n visible={addChargesModal.isVisible}\r\n onCancel={() =>\r\n setAddChargesModal((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }))\r\n }\r\n form={chargesForm}\r\n loading={addChargesModal.loading}\r\n onFinish={onAddCharges}\r\n >\r\n {chargesInput}\r\n </AntFormModal>\r\n <CreateCustomerModal\r\n visible={addCustomerModalProps.isVisible}\r\n onCancel={() =>\r\n setAddCustomerModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }))\r\n }\r\n onFinish={onAddCustomer}\r\n loading={addCustomerModalProps.loading}\r\n warehouseInputs={customerInputs}\r\n />\r\n <Feedback\r\n open={feedbackProps.open}\r\n message={feedbackProps.message}\r\n type={feedbackProps.type}\r\n onClose={handleFeedbackClose}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport const TotalComponent = (props) => {\r\n const classes = useStyles();\r\n return (\r\n <StyledCard\r\n display=\"flex\"\r\n justifyContent=\"space-between\"\r\n alignItems=\"center\"\r\n mb={2}\r\n mt={2}\r\n p={2}\r\n >\r\n <StyledBoldText>{props.title}</StyledBoldText>\r\n <Box p={1} flexBasis=\"80%\" className={classes.totalBackground}>\r\n <Statistic valueStyle={{fontSize: '1.2vw', color: themes.boldText}} value={props.amount} prefix='₦' />\r\n </Box>\r\n </StyledCard>\r\n );\r\n};\r\n\r\nexport const OtherChargesComponent = (props) => {\r\n return (\r\n <Box\r\n display=\"flex\"\r\n justifyContent=\"space-between\"\r\n alignItems=\"center\"\r\n mb={2}\r\n >\r\n <StyledNormalText>{props.data.name}</StyledNormalText>\r\n <Statistic valueStyle={{fontSize: '1.2vw', color: themes.boldText}} value={props.data.amount} prefix='₦' />\r\n </Box>\r\n );\r\n};\r\n","export default __webpack_public_path__ + \"static/media/companyLogo.38837c7b.jpeg\";","import React, { useEffect, useState } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { TableWithPagination } from \"../../globalComponents/TableWithPagination\";\r\nimport { Menu, Statistic} from \"antd\";\r\nimport {\r\n StyledCard,\r\n StyledModal,\r\n StyledNormalText,\r\n StyledTable,\r\n} from \"../../globalComponents/styles\";\r\nimport { useRouteMatch, Route, Switch, useHistory } from \"react-router\";\r\nimport {\r\n StyledBoldText,\r\n StyledInputContainer,\r\n} from \"../../globalComponents/styles\";\r\nimport { Box, Divider, Grid, makeStyles } from \"@material-ui/core\";\r\nimport { Input, Select, Col, Row, Form, Popover } from \"antd\";\r\nimport {\r\n PrimaryButton,\r\n TransaparentButton,\r\n} from \"../../globalComponents/Buttons\";\r\nimport { FiTrash2, FiMail, FiSend } from \"react-icons/fi\";\r\nimport { getInput } from \"../../Inventory/Items/AddItem\";\r\nimport { themes } from \"../../globalAssets/theme\";\r\nimport { AntFormModal } from \"../../globalComponents/Modal\";\r\nimport { BiPrinter, BiHistory } from \"react-icons/bi\";\r\nimport { IoMdRefresh } from \"react-icons/io\";\r\nimport { FaRegFilePdf } from \"react-icons/fa\";\r\nimport companyLogo from \"../../images/companyLogo.jpeg\";\r\nimport { AntModal } from \"../../globalComponents/Modal\";\r\nimport { CKEditor } from \"@ckeditor/ckeditor5-react\";\r\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\r\nimport { getInvoice, selectInvoice, getAllInvoice} from './slice';\r\nimport { useParams } from \"react-router\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { selectItems } from '../../Inventory/Items/slice';\r\nimport { OtherChargesComponent, TotalComponent} from './AddInvoice';\r\nimport Services from \"../../../services\";\r\nimport { notificationAlert } from \"../../utils/notificationAlert\";\r\nimport moment from 'moment';\r\nimport { file } from './file';\r\n\r\n\r\nconst { Option } = Select;\r\nconst layout = {\r\n labelCol: { span: 6 },\r\n wrapperCol: { span: 18 },\r\n};\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n icons: {\r\n fontSize: \"1.4vw\",\r\n color: theme.grey,\r\n marginRight: \"15px\",\r\n \"&:hover\": {\r\n color: theme.primaryColor,\r\n cursor: \"pointer\",\r\n },\r\n },\r\n\r\n historyIcon: {\r\n color: theme.primaryColor,\r\n fontSize: \"1.4vw\",\r\n marginRight: \"10px\",\r\n },\r\n arroweft: {\r\n width: 0,\r\n height: 0,\r\n borderTop: \"20px solid transparent\",\r\n borderBottom: \"20px solid transparent\",\r\n\r\n borderRight: `20px solid ${theme.foreground}`,\r\n },\r\n logo: {\r\n width: \"15%\",\r\n height: \"auto\",\r\n },\r\n totalBackground: {\r\n backgroundColor: theme.background,\r\n },\r\n}));\r\n\r\nconst data = [\r\n {\r\n item: \"Hp laptops\",\r\n description: \"Lorem ipsum dolor\",\r\n quantity: \"2\",\r\n rate: \"$600\",\r\n amount: \"$600\",\r\n },\r\n];\r\n\r\nconst sendInvoiceFields = [\r\n {\r\n name: \"from\",\r\n label: \"From\",\r\n isRequired: false,\r\n type: \"text\",\r\n },\r\n {\r\n name: \"to\",\r\n label: \"To\",\r\n isRequired: false,\r\n type: \"text\",\r\n },\r\n {\r\n name: \"cc\",\r\n label: \"Cc\",\r\n isRequired: false,\r\n type: \"text\",\r\n },\r\n {\r\n name: \"subject\",\r\n label: \"Subject\",\r\n isRequired: false,\r\n type: \"text\",\r\n },\r\n];\r\n\r\nconst paymentFields = [\r\n {\r\n name: \"customer_name\",\r\n label: \"Customer\",\r\n isRequired: false,\r\n type: \"text\",\r\n defaultValue: '',\r\n disabled: true\r\n },\r\n {\r\n name: \"receipt_number\",\r\n label: \"Receipt Number\",\r\n isRequired: false,\r\n type: \"text\",\r\n disabled: true\r\n },\r\n {\r\n name: \"amount_received\",\r\n label: \"Amount received(NGN)\",\r\n isRequired: true,\r\n type: \"number\",\r\n },\r\n {\r\n name: \"bank_changes\",\r\n label: \"Bank Charges\",\r\n isRequired: false,\r\n type: \"number\",\r\n },\r\n/* {\r\n name: \"paymentDate\",\r\n label: \"Payment date\",\r\n isRequired: false,\r\n type: \"date\",\r\n }, */\r\n {\r\n name: \"account_to_deposit\",\r\n label: \"Account to Deposit\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n {\r\n name: \"payment_method\",\r\n label: \"Payment Method\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n {\r\n name: \"notes\",\r\n label: \"Notes\",\r\n isRequired: false,\r\n type: \"textarea\",\r\n },\r\n];\r\n\r\nconst paymentMethods = [\r\n \"DEFAULT\",\r\n \"CASH\",\r\n \"CHECK\",\r\n \"BANK_TRANSFER\",\r\n \"CREDIT_DEBIT_CARD\",\r\n \"INTERNET_BANKING\"\r\n];\r\n\r\nconst accountDeposit = [\"Cash on hand\", \"Cash in bank\"];\r\n\r\nexport const SingleInvoice = (props) => {\r\n const classes = useStyles();\r\n const [paymentForm] = Form.useForm();\r\n const [paymentInfo, setPaymentInfo] = useState({})\r\n const [paymentFieldsState, setPaymentFields] = useState(paymentFields)\r\n const [sendInvoiceModalProps, setSendInvoiceModalProps] = useState({\r\n isVisible: false,\r\n loading: false,\r\n });\r\n const [paymentModalProps, setPaymentModalProps] = useState({\r\n isVisible: false,\r\n loading: false,\r\n });\r\n const [selectValues, setSelectValues] = useState({});\r\n\r\n const { singleInvoice } = useSelector(selectInvoice);\r\n const { id } = useParams();\r\n const dispatcher = useDispatch();\r\n const { itemList } = useSelector(selectItems);\r\n\r\n \r\n\r\n useEffect(() => {\r\n (async () => {\r\n try {\r\n\r\n const invoiceInfo = await dispatcher(getInvoice({id}));\r\n const {data: {data: paymentData}} = await Services.getPaymentInfo({id});\r\n \r\n\r\n \r\n const initValues = {\r\n customer_name: `${paymentData.customer.firstName} ${paymentData.customer.lastName}`,\r\n receipt_number: paymentData.receipt_number\r\n }\r\n \r\n const paymentFieldsDefault = [...paymentFieldsState].map(item => {\r\n item.defaultValue = initValues[item.name];\r\n return item\r\n })\r\n \r\n setPaymentFields(paymentFieldsDefault);\r\n \r\n /* paymentForm.setFieldsValue({\r\n customer_name: `${paymentData.customer.firstName} ${paymentData.customer.lastName}`,\r\n receipt_number: paymentData.receipt_number\r\n }) */\r\n\r\n setPaymentInfo(paymentData);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n })()\r\n }, [])\r\n\r\n/* \r\n useEffect(() => {\r\n if(Object.entries(paymentInfo).length > 0 && paymentModalProps.isVisible){\r\n const initValues = {\r\n customer_name: `${paymentInfo.customer.firstName} ${paymentInfo.customer.lastName}`,\r\n receipt_number: paymentInfo.receipt_number\r\n }\r\n\r\n const paymentFieldsDefault = [...paymentFieldsState].map(item => {\r\n item.defaultValue = initValues[item.name];\r\n return item\r\n })\r\n\r\n setPaymentFields(paymentFieldsDefault);\r\n\r\n paymentForm.setFieldsValue({\r\n customer_name: `${paymentInfo.customer.firstName} ${paymentInfo.customer.lastName}`,\r\n receipt_number: paymentInfo.receipt_number\r\n })\r\n }\r\n \r\n }, [paymentInfo, paymentModalProps.isVisible]) */\r\n\r\n\r\n \r\nconst columns = [\r\n {\r\n title: \"ID\",\r\n dataIndex: \"id\",\r\n key: \"id\",\r\n },\r\n {\r\n title: \"Name\",\r\n dataIndex: \"itemName\",\r\n key: \"itemName\",\r\n },\r\n {\r\n title: \"Quantity\",\r\n dataIndex: \"quantity\",\r\n key: \"quantity\",\r\n },\r\n {\r\n title: \"Price\",\r\n dataIndex: \"price\",\r\n key: \"price\",\r\n },\r\n {\r\n title: \"Amount\",\r\n dataIndex: \"amount\",\r\n key: \"amount\",\r\n render: (data, allData) => parseInt(allData?.quantity) * parseInt(allData?.price)\r\n },\r\n];\r\n\r\n\r\n const sendInvoiceInput = [...sendInvoiceFields].map((item) => {\r\n return getInput(item);\r\n });\r\n\r\n const paymentMethodList = paymentMethods.map((item) => {\r\n return (\r\n <Option value={item} key={item}>\r\n {item}\r\n </Option>\r\n );\r\n });\r\n\r\n const accountDepositList = accountDeposit.map((item) => {\r\n return (\r\n <Option value={item} key={item}>\r\n {item}\r\n </Option>\r\n );\r\n });\r\n\r\n \r\n const handleSelectChange = (selectName) => (value) => {\r\n const prevSelectValues = { ...selectValues };\r\n prevSelectValues[selectName] = value;\r\n setSelectValues(prevSelectValues);\r\n };\r\n\r\n const paymentInput = [...paymentFieldsState].map((item) => {\r\n if (item.name === \"payment_method\") {\r\n return (\r\n <Col xs={11}>\r\n {getInput(item, handleSelectChange, paymentMethodList)}\r\n </Col>\r\n );\r\n }\r\n\r\n if (item.name === \"account_to_deposit\") {\r\n return (\r\n <Col xs={12}>\r\n {getInput(item, handleSelectChange, accountDepositList)}\r\n </Col>\r\n );\r\n }\r\n return <Col xs={12}>{getInput(item, handleSelectChange)}</Col>;\r\n });\r\n\r\n const openPaymentRecordModal = async() => {\r\n setPaymentModalProps((prevState) => ({ ...prevState, isVisible: true }));\r\n\r\n\r\n /* if(Object.entries(paymentInfo).length > 0){\r\n const initValues = {\r\n customer_name: `${paymentInfo.customer.firstName} ${paymentInfo.customer.lastName}`,\r\n receipt_number: paymentInfo.receipt_number\r\n }\r\n\r\n const paymentFieldsDefault = [...paymentFieldsState].map(item => {\r\n item.defaultValue = initValues[item.name];\r\n return item\r\n })\r\n\r\n setPaymentFields(paymentFieldsDefault);\r\n\r\n paymentForm.setFieldsValue({\r\n customer_name: `${paymentInfo.customer.firstName} ${paymentInfo.customer.lastName}`,\r\n receipt_number: paymentInfo.receipt_number\r\n })\r\n } */\r\n };\r\n\r\n const openSendInvoiceModal = () => {\r\n setSendInvoiceModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: true,\r\n }));\r\n };\r\n\r\n const handleToolClick = (name) => {\r\n switch (name) {\r\n case \"recordPayment\":\r\n openPaymentRecordModal();\r\n break;\r\n case \"send\":\r\n openSendInvoiceModal();\r\n break;\r\n default:\r\n return;\r\n }\r\n };\r\n\r\n const otherCharges = singleInvoice?.charges?.map((item, index) => {\r\n return <OtherChargesComponent data={item} key={index}/>\r\n });\r\n\r\n const onPaymentMade = async (values) => {\r\n try {\r\n values.payment_method = selectValues.payment_method;\r\n values.account_to_deposit = selectValues.account_to_deposit;\r\n values.receipt_id = paymentInfo.receipt_id;\r\n values.receipt_number = paymentInfo.receipt_number;\r\n values.customer_name = `${paymentInfo.customer.firstName} ${paymentInfo.customer.lastName}`;\r\n values.payment_date = moment().format('YYYY-MM-DD');\r\n values.org_key = \"\";\r\n /* values.file = file; */\r\n\r\n \r\n //values.amount_to_deposit = \"\";\r\n delete values.bank_changes;\r\n\r\n setPaymentModalProps(prevState => ({...prevState, loading: true}));\r\n await Services.makePayment({data: values, id: singleInvoice.id})\r\n await dispatcher(getAllInvoice({page: 0, size: 10}));\r\n setPaymentModalProps(prevState => ({...prevState, loading: false, isVisible: false}));\r\n notificationAlert('success', 'Payment Successful', `Payment was made`)\r\n } catch (error) {\r\n console.log(error)\r\n setPaymentModalProps(prevState => ({...prevState, loading: false}));\r\n\r\n if(error.response){\r\n notificationAlert('error', 'Payment Failed', error.response.data.message || 'Please try again');\r\n }else {\r\n notificationAlert('error', 'Payment Failed', 'Please try again');\r\n }\r\n }\r\n \r\n\r\n }\r\n\r\n\r\n return (\r\n <>\r\n <ToolBar onClick={handleToolClick} />\r\n <HistoryBar />\r\n <StyledCard mt={2}>\r\n <Box\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n style={{ backgroundColor: \"#A3B1BC\", width: \"fit-content\" }}\r\n >\r\n <Box\r\n display=\"flex\"\r\n justifyContent=\"center\"\r\n alignItems=\"center\"\r\n py={1}\r\n px={6}\r\n >\r\n <StyledBoldText style={{ color: themes.white }} variant=\"body2\">\r\n Unsent\r\n </StyledBoldText>\r\n </Box>\r\n <Box className={classes.arroweft}></Box>\r\n </Box>\r\n <Box p={3}>\r\n <img className={classes.logo} src={companyLogo} alt=\"company logo\" />\r\n <Box mt={5}>\r\n <StyledBoldText variant=\"h4\">Invoice</StyledBoldText>\r\n </Box>\r\n <Box\r\n mt={3}\r\n pb={2}\r\n display=\"flex\"\r\n justifyContent=\"space-between\"\r\n alignItems=\"center\"\r\n >\r\n <Box flexBasis=\"30%\">\r\n <Box\r\n display=\"flex\"\r\n justifyContent=\"space-between\"\r\n alignItems=\"center\"\r\n >\r\n <StyledBoldText\r\n style={{ fontWeight: \"bold\" }}\r\n variant=\"subtitle1\"\r\n >\r\n Invoice number:\r\n </StyledBoldText>\r\n <StyledBoldText\r\n align=\"left\"\r\n style={{ fontWeight: \"bold\" }}\r\n variant=\"subtitle1\"\r\n >\r\n {singleInvoice?.invoice_number}\r\n </StyledBoldText>\r\n </Box>\r\n <Box\r\n display=\"flex\"\r\n justifyContent=\"space-between\"\r\n alignItems=\"center\"\r\n >\r\n <StyledBoldText\r\n style={{ fontWeight: \"bold\" }}\r\n variant=\"subtitle1\"\r\n >\r\n Invoice Date :\r\n </StyledBoldText>\r\n <StyledNormalText align=\"left\" variant=\"subtitle1\">\r\n 8th Aug 2019\r\n </StyledNormalText>\r\n </Box>\r\n <Box\r\n display=\"flex\"\r\n justifyContent=\"space-between\"\r\n alignItems=\"center\"\r\n >\r\n <StyledBoldText\r\n style={{ fontWeight: \"bold\" }}\r\n variant=\"subtitle1\"\r\n >\r\n Due Date :\r\n </StyledBoldText>\r\n <StyledNormalText align=\"left\" variant=\"subtitle1\">\r\n {singleInvoice?.invoice_date}\r\n </StyledNormalText>\r\n </Box>\r\n </Box>\r\n <Box>\r\n <StyledBoldText\r\n style={{ fontWeight: \"bold\" }}\r\n variant=\"subtitle1\"\r\n >\r\n Bill To\r\n </StyledBoldText>\r\n <StyledNormalText align=\"left\" variant=\"subtitle1\">\r\n {`${singleInvoice?.customer.firstName} ${singleInvoice?.customer.lastName}`}\r\n </StyledNormalText>\r\n {/* <StyledNormalText align=\"left\" variant=\"subtitle1\">\r\n Holder’s Limited\r\n </StyledNormalText> */}\r\n <StyledNormalText align=\"left\" variant=\"subtitle1\">\r\n {singleInvoice?.customer.address}\r\n </StyledNormalText>\r\n </Box>\r\n </Box>\r\n <Divider />\r\n <Box py={2}>\r\n <StyledBoldText>Notes</StyledBoldText>\r\n <StyledNormalText>\r\n {singleInvoice?.notes}\r\n </StyledNormalText>\r\n </Box>\r\n <Divider />\r\n <Box mt={3}>\r\n <StyledTable\r\n columns={columns}\r\n dataSource={singleInvoice?.items}\r\n pagination={false}\r\n />\r\n </Box>\r\n <Divider />\r\n <Box\r\n mt={3}\r\n display=\"flex\"\r\n justifyContent=\"space-between\"\r\n alignItems=\"center\"\r\n >\r\n <Box>\r\n {/* <StyledBoldText>Attachment</StyledBoldText> */}\r\n <TransaparentButton text=\"attach a file\" />\r\n </Box>\r\n <Box flexBasis=\"40%\">\r\n { otherCharges }\r\n <Divider />\r\n <Box\r\n display=\"flex\"\r\n justifyContent=\"space-between\"\r\n alignItems=\"center\"\r\n mb={2}\r\n mt={2}\r\n >\r\n <StyledBoldText>Total</StyledBoldText>\r\n <Statistic valueStyle={{fontSize: '1.2vw', color: themes.boldText}} value={singleInvoice?.total_amount} prefix='₦' />\r\n {/* <StyledBoldText>{singleInvoice?.total_amount}</StyledBoldText> */}\r\n </Box>\r\n {/* <TotalComponent title='Total' amount={singleInvoice?.total_amount}/> */}\r\n {/* <Box\r\n display=\"flex\"\r\n justifyContent=\"space-between\"\r\n alignItems=\"center\"\r\n mb={2}\r\n className={classes.totalBackground}\r\n p={2}\r\n >\r\n <StyledBoldText>Amount Due</StyledBoldText>\r\n <StyledBoldText>$600</StyledBoldText>\r\n </Box> */}\r\n </Box>\r\n </Box>\r\n </Box>\r\n </StyledCard>\r\n <AntModal\r\n title=\"Send Invoice\"\r\n visible={sendInvoiceModalProps.isVisible}\r\n onCancel={() =>\r\n setSendInvoiceModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }))\r\n }\r\n >\r\n <Form\r\n colon={false}\r\n labelCol={{\r\n span: 4,\r\n }}\r\n wrapperCol={{\r\n span: 20,\r\n }}\r\n >\r\n {sendInvoiceInput}\r\n </Form>\r\n <Box mt={3}>\r\n <StyledBoldText gutterBottom={true} variant=\"body2\" align=\"left\">\r\n Message\r\n </StyledBoldText>\r\n <CKEditor\r\n editor={ClassicEditor}\r\n data=\"<p>Write Message</p>\"\r\n onReady={(editor) => {\r\n // You can store the \"editor\" and use when it is needed.\r\n // console.log(\"Editor is ready to use!\", editor);\r\n }}\r\n onChange={(event, editor) => {\r\n const data = editor.getData();\r\n \r\n }}\r\n onBlur={(event, editor) => {\r\n \r\n }}\r\n onFocus={(event, editor) => {\r\n // console.log(\"Focus.\", editor);\r\n }}\r\n />\r\n </Box>\r\n </AntModal>\r\n <AntFormModal\r\n title={singleInvoice.invoice_number}\r\n visible={paymentModalProps.isVisible}\r\n form={paymentForm}\r\n initialValues={{customer: 'Adefisayo'}}\r\n onCancel={() =>{\r\n paymentForm.resetFields();\r\n\r\n setPaymentModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }))\r\n }\r\n }\r\n onFinish={onPaymentMade}\r\n >\r\n <Row gutter={16}>{paymentInput}</Row>\r\n </AntFormModal>\r\n </>\r\n );\r\n};\r\n\r\nconst SingleHistory = (props) => {\r\n return (\r\n <StyledSingleHistory pl={4} pr={2} py={2} mb={3}>\r\n <StyledBoldText variant=\"body2\">\r\n Payment of N 300,000.00 using cash received by Essien Joy\r\n </StyledBoldText>\r\n <Box display=\"flex\" alignItems=\"center\">\r\n <StyledNormalText variant=\"overline\">3rd Jul 2019</StyledNormalText>\r\n <Box ml={2}>\r\n <StyledNormalText variant=\"overline\">3:00pm</StyledNormalText>\r\n </Box>\r\n </Box>\r\n </StyledSingleHistory>\r\n );\r\n};\r\n\r\nexport const HistoryBar = (props) => {\r\n const classes = useStyles();\r\n const content = (\r\n <Box\r\n px={6}\r\n py={2}\r\n style={{ minWidth: \"50vw\", maxHeight: \"50vh\", overflow: \"auto\" }}\r\n >\r\n <SingleHistory />\r\n <SingleHistory />\r\n <SingleHistory />\r\n <SingleHistory />\r\n <SingleHistory />\r\n <SingleHistory />\r\n <SingleHistory />\r\n </Box>\r\n );\r\n\r\n return (\r\n <StyledCard mt={2} py={3} px={3}>\r\n <Popover placement=\"bottomLeft\" content={content} trigger=\"click\">\r\n <Box\r\n style={{ cursor: \"pointer\" }}\r\n display=\"flex\"\r\n justifyContent=\"flex-start\"\r\n alignItems=\"center\"\r\n >\r\n <BiHistory className={classes.historyIcon} />\r\n <StyledBoldText\r\n style={{ color: themes.primaryColor, fontWeight: \"bold\" }}\r\n variant=\"body2\"\r\n >\r\n Activity ( Comments and History)\r\n </StyledBoldText>\r\n </Box>\r\n </Popover>\r\n </StyledCard>\r\n );\r\n};\r\n\r\nexport const ToolBar = (props) => {\r\n const classes = useStyles();\r\n return (\r\n <StyledCard\r\n display=\"flex\"\r\n justifyContent=\"flex-end\"\r\n alignItems=\"center\"\r\n py={3}\r\n px={3}\r\n >\r\n <FaRegFilePdf className={classes.icons} />\r\n <IoMdRefresh className={classes.icons} />\r\n <BiPrinter className={classes.icons} />\r\n <FiMail className={classes.icons} />\r\n <FiTrash2 className={classes.icons} />\r\n {/* <FiSend className={classes.icons} onClick={() => props.onClick(\"send\")} /> */}\r\n {!props.hidePaymentButton && <TransaparentButton\r\n style={{ textTransform: \"capitalize \" }}\r\n text=\"Record a Payment\"\r\n onClick={() => props.onClick(\"recordPayment\")}\r\n />}\r\n </StyledCard>\r\n );\r\n};\r\n\r\nconst StyledSingleHistory = styled(Box)`\r\n border: 1px solid ${themes.border};\r\n width: 100%;\r\n border-radius: 0px 20px 20px 20px;\r\n`;\r\n","import React, { useEffect, useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport { TableWithPagination } from '../../globalComponents/TableWithPagination';\r\nimport { ToolBar } from '../../globalComponents/ToolBar';\r\nimport { Space, Popover, Statistic, Table, notification } from 'antd';\r\nimport { StyledCard } from '../../globalComponents/styles';\r\nimport { useRouteMatch, Route, Switch, useHistory } from 'react-router';\r\nimport { FiMoreVertical } from 'react-icons/fi';\r\nimport { AddInvoice } from './AddInvoice';\r\nimport { SingleInvoice } from './SingleInvoice';\r\nimport { useDispatch, useSelector} from 'react-redux';\r\nimport { getAllInvoice, selectInvoice } from './slice';\r\nimport { themes } from '../../globalAssets/theme';\r\nimport { AntModal } from \"../../globalComponents/Modal\";\r\nimport {\r\n StyledBoldText,\r\n StyledInputContainer,\r\n} from \"../../globalComponents/styles\";\r\nimport { IconButton } from '@material-ui/core';\r\nimport Services from '../../../services';\r\nimport { notificationAlert } from '../../utils/notificationAlert';\r\n\r\n\r\nexport const Invoice = (props) => {\r\n const [page, setPage] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(10);\r\n const {invoiceList, paginationProps} = useSelector(selectInvoice);\r\n console.log(invoiceList, \"invoiceLis\");\r\n \r\n const [itemShipmentProps, setItemShipmentProps] = useState({\r\n visible: false,\r\n items: [],\r\n invoiceId: null,\r\n shipmentStatus: '',\r\n loading: false\r\n });\r\n const { url, path } = useRouteMatch();\r\n const history = useHistory();\r\n const dispatcher = useDispatch();\r\n\r\n\r\n\r\n useEffect(() => {\r\n (async () => {\r\n await dispatcher(getAllInvoice({page: 0, size: 10}));\r\n })()\r\n }, [])\r\n\r\nconst itemShipmentColumn = [\r\n {\r\n title: 'Item Name',\r\n dataIndex: 'itemName',\r\n key: 'itemName',\r\n },\r\n {\r\n title: 'Quantity',\r\n dataIndex: 'quantity',\r\n key: 'quantity',\r\n },\r\n]\r\n\r\n \r\nconst columns = [\r\n {\r\n title: 'Invoice Number',\r\n dataIndex: 'invoice_number',\r\n key: 'invoice_number',\r\n },\r\n {\r\n title: 'Customer',\r\n dataIndex: 'customer',\r\n key: 'customer',\r\n render: (data) => `${data.firstName} ${data.lastName}`\r\n \r\n },\r\n {\r\n title: 'Date',\r\n dataIndex: 'invoice_date',\r\n key: 'invoice_date',\r\n },\r\n {\r\n title: 'Amount',\r\n dataIndex: 'total_amount',\r\n key: 'total_amount',\r\n render: (data) => <Statistic valueStyle={{fontSize: '1.1vw', color: themes.boldText}} value={data} prefix='₦' />\r\n },\r\n {\r\n title: 'Outstanding Balance',\r\n dataIndex: 'amount_due',\r\n key: 'amount_due',\r\n render: (data, allData) => <Statistic valueStyle={{fontSize: '1.1vw', color: themes.boldText}} value={data} prefix='₦' />\r\n },\r\n {\r\n title: 'Payment Status',\r\n dataIndex: 'status',\r\n key: 'status',\r\n },\r\n {\r\n title: 'Shipment Status',\r\n dataIndex: 'shipmentStatus',\r\n key: 'shipmentStatus',\r\n },\r\n\r\n {\r\n title: 'Action',\r\n dataIndex: 'action',\r\n key: 'action',\r\n width: '5%',\r\n render: (data, allData) => {\r\n const content = (\r\n <Space direction='vertical' size='small'>\r\n <p style={{cursor: 'pointer'}} onClick={() => history.push(`${url}/${allData.id}`)}>View Details</p>\r\n <p style={{cursor: 'pointer'}} onClick={() => {\r\n setItemShipmentProps(prevState => ({...prevState, items: allData.items, invoiceId: allData.id, visible: true, shipmentStatus: allData.shipmentStatus}))\r\n }}>Issue out items</p>\r\n <p style={{color: 'red', cursor: 'pointer'}}>Delete</p>\r\n </Space>\r\n )\r\n return (\r\n <Popover content={content} trigger='click'>\r\n <IconButton>\r\n <FiMoreVertical />\r\n </IconButton>\r\n \r\n </Popover>\r\n )\r\n },\r\n },\r\n \r\n];\r\n\r\n\r\n const handleChangePage = (event, newPage) => {\r\n (async () => {\r\n setPage(newPage);\r\n await dispatcher(getAllInvoice({ page: newPage, size: rowsPerPage }));\r\n })();\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n (async () => {\r\n setRowsPerPage(parseInt(event.target.value, 10));\r\n setPage(0);\r\n await dispatcher(\r\n getAllInvoice({ page: 0, size: parseInt(event.target.value, 10) })\r\n );\r\n })();\r\n };\r\n \r\n const handleItemShipment = async () => {\r\n try {\r\n setItemShipmentProps(prevState => ({...prevState, loading: true}));\r\n\r\n if(itemShipmentProps.shipmentStatus === 'ISSUED'){\r\n notificationAlert('error', 'Action denied', 'Items was previously issued'); \r\n setItemShipmentProps(prevState => ({...prevState, loading: false, visible: false}));\r\n\r\n return;\r\n }\r\n const data = {\r\n invoiceId: itemShipmentProps.invoiceId,\r\n items: itemShipmentProps.items.map(item => ({id: item.id, quantity: item.quantity}))\r\n };\r\n const response = await Services.issueItem({data});\r\n await dispatcher(getAllInvoice({page: page, size: rowsPerPage}));\r\n \r\n notificationAlert('success', 'Item Issued', 'Item has been successfully issued');\r\n setItemShipmentProps(prevState => ({...prevState, loading: false, visible: false}));\r\n } catch (error) {\r\n setItemShipmentProps(prevState => ({...prevState, loading: false}));\r\n if(error.response){\r\n notificationAlert('error', 'Failed', error.response.data.message ?? 'Please try again later');\r\n }\r\n }\r\n \r\n }\r\n\r\n return (\r\n <Switch>\r\n <Route exact path={path}>\r\n <ToolBar\r\n title=\"Invoice\"\r\n showtools\r\n onCreate={() => history.push(`${url}/add-invoice`)}\r\n createButtonText=\"Create Invoice\"\r\n />\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n rowsPerPage={rowsPerPage}\r\n page={page}\r\n total={paginationProps.totalItems}\r\n handleChangeRowsPerPage={handleChangeRowsPerPage}\r\n handleChangePage={handleChangePage}\r\n columns={columns}\r\n dataSource={invoiceList}\r\n //onRow={handleTableRow}\r\n />\r\n </StyledCard>\r\n <AntModal\r\n visible={itemShipmentProps.visible}\r\n title='Issue out Items'\r\n okText='Confirm'\r\n loading={itemShipmentProps.loading}\r\n onOk={handleItemShipment}\r\n onCancel={() => setItemShipmentProps(prevState => ({...prevState, visible: false}))}\r\n >\r\n <StyledBoldText>Are sure of issuing out the following Items?</StyledBoldText>\r\n <Table\r\n columns={itemShipmentColumn}\r\n dataSource={itemShipmentProps.items}\r\n pagination={false}\r\n />\r\n </AntModal>\r\n </Route>\r\n <Route path={`${path}/add-invoice`}>\r\n <AddInvoice />\r\n </Route>\r\n <Route path={`${path}/:id`}>\r\n <SingleInvoice/>\r\n </Route>\r\n </Switch>\r\n );\r\n};\r\n","import React, { useState } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { TableWithPagination } from \"../../globalComponents/TableWithPagination\";\r\nimport { ToolBar } from \"../../globalComponents/ToolBar\";\r\nimport { Menu } from \"antd\";\r\nimport { StyledCard, StyledModal } from \"../../globalComponents/styles\";\r\nimport { useRouteMatch, Route, Switch, useHistory } from \"react-router\";\r\nimport {\r\n StyledBoldText,\r\n StyledInputContainer,\r\n} from \"../../globalComponents/styles\";\r\nimport { Box, Grid } from \"@material-ui/core\";\r\nimport { Input, Select, Col, Row, Form } from \"antd\";\r\nimport {\r\n PrimaryButton,\r\n TransaparentButton,\r\n} from \"../../globalComponents/Buttons\";\r\nimport { FiTrash2 } from \"react-icons/fi\";\r\nimport { getInput } from \"../../Inventory/Items/AddItem\";\r\nimport { themes } from \"../../globalAssets/theme\";\r\nimport { AntFormModal } from \"../../globalComponents/Modal\";\r\n\r\nconst { Option } = Select;\r\n\r\nconst data = [\r\n {\r\n item: [\r\n { name: \"Rice\", sku: 20 },\r\n { name: \"Beans\", sku: 15 },\r\n ],\r\n description: \"\",\r\n quantity: \"\",\r\n price: \"\",\r\n tax: [\r\n { name: \"Freet(10%)\", sku: 20 },\r\n { name: \"Freet(20%)\", sku: 15 },\r\n ],\r\n amount: \"\"\r\n },\r\n];\r\n\r\nconst salesOrder = [\r\n {\r\n name: \"customer\",\r\n label: \"Customer\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n {\r\n name: \"accountToDeposit\",\r\n label: \"Account to Deposit\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n {\r\n name: \"paymentMethod\",\r\n label: \"paymentMethod\",\r\n isRequired: false,\r\n type: \"select\",\r\n },\r\n {\r\n name: \"notes\",\r\n label: \"Notes\",\r\n isRequired: false,\r\n type: \"textarea\",\r\n },\r\n];\r\n\r\nconst chargesFields = [\r\n {\r\n name: \"title\",\r\n label: \"Title\",\r\n isRequired: true,\r\n type: \"text\",\r\n },\r\n {\r\n name: \"amount\",\r\n label: \"Amount\",\r\n isRequired: true,\r\n type: \"text\",\r\n }\r\n ];\r\n \r\n\r\nconst layout = {\r\n labelCol: { span: 24 },\r\n wrapperCol: { span: 24 },\r\n};\r\n\r\nexport const AddReceipt = (props) => {\r\n const [chargesForm] = Form.useForm();\r\n const [itemsState, setItemsState] = useState(data);\r\n const [activeRowIndex, setActiveRowIndex] = useState(null);\r\n const [addChargesModal, setAddChargesModal] = useState({\r\n isVisible: false,\r\n loading: false,\r\n });\r\n const handleDeleteRow = () => {\r\n const currentItemState = [...itemsState];\r\n currentItemState.splice(activeRowIndex, 1);\r\n setItemsState(currentItemState);\r\n };\r\n\r\n const columns = [\r\n {\r\n title: \"Invoice\",\r\n dataIndex: \"invoice\",\r\n key: \"invoice\",\r\n },\r\n {\r\n title: \"Due Date\",\r\n dataIndex: \"dueDate\",\r\n key: \"dueDate\",\r\n },\r\n {\r\n title: \"Invoice Amount\",\r\n dataIndex: \"invoiceAmount\",\r\n key: \"invoiceAmount\",\r\n },\r\n {\r\n title: \"Amount Due\",\r\n dataIndex: \"amountDue\",\r\n key: \"amountDue\",\r\n },\r\n {\r\n title: \"Payment\",\r\n dataIndex: \"payment\",\r\n key: \"payment\",\r\n render: (data) => {\r\n return (\r\n <StyledInputContainer>\r\n <Input\r\n type=\"number\"\r\n bordered={false}\r\n /* onChange={handleAdjustedBy} */\r\n placeholder=\"\"\r\n />\r\n </StyledInputContainer>\r\n );\r\n },\r\n },\r\n ];\r\n\r\n const handleTableRow = (data, index) => {\r\n return {\r\n onClick: (e) => {\r\n setActiveRowIndex(index);\r\n },\r\n };\r\n };\r\n\r\n const AddAdjustableRow = () => {\r\n const row = {\r\n item: [\r\n { name: \"Rice\", sku: 20 },\r\n { name: \"Beans\", sku: 15 },\r\n ],\r\n description: \"\",\r\n quantity: \"\",\r\n price: \"\",\r\n tax: [\r\n { name: \"Freet(10%)\", sku: 20 },\r\n { name: \"Freet(20%)\", sku: 15 },\r\n ],\r\n };\r\n\r\n setItemsState((prevState) => [...prevState, row]);\r\n };\r\n\r\n const handleSelectChange = (selectName) => (values) => {};\r\n\r\n const salesOrderList = [...salesOrder].map((item) => {\r\n return <Col sm={12}>{getInput(item, handleSelectChange)}</Col>;\r\n });\r\n\r\n const chargesInput = [...chargesFields].map((item) => {\r\n return getInput(item)\r\n })\r\n const onFinish = (values) => {};\r\n\r\n return (\r\n <>\r\n <ToolBar title=\"New Reciept\" />\r\n <StyledCard mt={2} py={3} px={4} display=\"flex\">\r\n <Grid item xs={12}>\r\n <Box px={3}>\r\n <StyledBoldText variant=\"subtitle1\">Warehouse</StyledBoldText>\r\n </Box>\r\n <Box px={3} mt={2}>\r\n <Form onFinish={onFinish} {...layout}>\r\n <Row gutter={16}>{salesOrderList}</Row>\r\n </Form>\r\n </Box>\r\n </Grid>\r\n </StyledCard>\r\n <StyledCard mt={2}>\r\n <Box pl={4} py={3}>\r\n <StyledBoldText variant='subtitle1'>All Unpaid Invoices </StyledBoldText> \r\n </Box>\r\n\r\n <TableWithPagination\r\n dataSource={itemsState}\r\n onRow={handleTableRow}\r\n columns={columns}\r\n hidePagination\r\n />\r\n <Box p={4} display=\"flex\" justifyContent=\"space-between\">\r\n <PrimaryButton onClick={AddAdjustableRow} text=\"Add Row\" />\r\n <TransaparentButton\r\n onClick={() =>\r\n setAddChargesModal((prevState) => ({\r\n ...prevState,\r\n isVisible: true,\r\n }))\r\n }\r\n text=\"Add Charges\"\r\n />\r\n \r\n </Box>\r\n </StyledCard>\r\n <AntFormModal\r\n title=\"Add Charges\"\r\n visible={addChargesModal.isVisible}\r\n onCancel={() =>\r\n setAddChargesModal((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }))\r\n }\r\n form={chargesForm}\r\n loading={addChargesModal.loading}\r\n >\r\n { chargesInput }\r\n </AntFormModal>\r\n </>\r\n );\r\n};\r\n","export default __webpack_public_path__ + \"static/media/companyLogo2.38837c7b.jpeg\";","import { createSlice } from '@reduxjs/toolkit';\r\nimport Services from '../../../services';\r\n\r\n\r\nconst receiptSlice = createSlice({\r\n name: 'receiptSlice',\r\n initialState: {\r\n allReceipts: [],\r\n singleReceipt: {},\r\n paginationProps: { page: 0, totalPages: 0, totalItems: 0 },\r\n },\r\n\r\n reducers: {\r\n addAllReceipts: (state, {payload}) => {\r\n state.allReceipts = payload;\r\n },\r\n addSingleReceipt: (state, {payload}) => {\r\n state.singleReceipt = payload;\r\n },\r\n addPaginationProps: (state, { payload }) => {\r\n state.paginationProps = payload;\r\n },\r\n }\r\n});\r\n\r\n\r\nexport const { addAllReceipts, addSingleReceipt, addPaginationProps } = receiptSlice.actions;\r\n\r\nexport const fetchAllReceipt = (payload) => (dispatcher) => {\r\n return Services.getAllReceipt(payload).then(\r\n response => {\r\n console.log(response.data, 'allReceipt22')\r\n const {currentPage: page, totalPages, totalItems, receipts} = response.data;\r\n dispatcher(addAllReceipts(receipts));\r\n dispatcher(addPaginationProps({page, totalPages, totalItems}));\r\n\r\n return Promise.resolve(receipts);\r\n },\r\n error => {\r\n if(error.response){\r\n return Promise.reject(error.response.data);\r\n }\r\n }\r\n )\r\n}\r\n\r\nexport const fetchSingleReceipt = payload => dispatcher => {\r\n return Services.getSingleReceipt(payload).then(\r\n response => {\r\n console.log(response, 'singleReceipt')\r\n dispatcher(addSingleReceipt(response.data));\r\n return Promise.resolve(response.data);\r\n },\r\n error => {\r\n if(error.response){\r\n return Promise.reject(error.response.data);\r\n }\r\n }\r\n )\r\n}\r\n\r\n//create Receipt\r\nexport const createReceipt = (payload) => (dispatcher) => {\r\n return Services.createReceipt(payload)\r\n .then((response) => {\r\n console.log(response, \"createReceipt\");\r\n return Promise.resolve(response);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n return Promise.reject(error.response.data);\r\n }\r\n });\r\n};\r\n\r\n\r\nexport const selectReceipts = state => state.receiptReducer;\r\n\r\nexport default receiptSlice.reducer;\r\n\r\n","import React, { useState, useEffect } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport {\r\n StyledCard,\r\n StyledNormalText,\r\n} from \"../../globalComponents/styles\";\r\nimport {\r\n StyledBoldText,\r\n} from \"../../globalComponents/styles\";\r\nimport { Box, Divider } from \"@material-ui/core\";\r\nimport { themes } from \"../../globalAssets/theme\";\r\nimport companyLogo from \"../../images/companyLogo2.jpeg\";\r\nimport { ToolBar, HistoryBar } from \"../Invoice/SingleInvoice\";\r\nimport { useParams } from \"react-router\";\r\nimport { useDispatch, useSelector} from 'react-redux';\r\nimport { fetchSingleReceipt, selectReceipts } from './slice';\r\nimport moment from 'moment';\r\nimport { Statistic } from 'antd';\r\n\r\nconst initialBillInfo = [\r\n {\r\n title: \"bill To\",\r\n value: \"\",\r\n },\r\n {\r\n title: \"Payment Date\",\r\n value: \"\",\r\n },\r\n {\r\n title: \"Payment Method\",\r\n value: \"\",\r\n },\r\n];\r\n\r\nexport const ReceiptDetail = (props) => {\r\n const { singleReceipt } = useSelector(selectReceipts);\r\n const [billInfo, setBillInfo] = useState(initialBillInfo)\r\n const { id } = useParams();\r\n const dispatcher = useDispatch()\r\n\r\n\r\n\r\n useEffect(() => {\r\n dispatcher(fetchSingleReceipt({id}))\r\n }, [])\r\n\r\n useEffect(() => {\r\n const billInfo = [\r\n {\r\n title: \"bill To\",\r\n value: singleReceipt.billTo,\r\n },\r\n {\r\n title: \"Payment Date\",\r\n value: moment(singleReceipt.created_at).format('Do MMM, YYYY'),\r\n },\r\n {\r\n title: \"Payment Method\",\r\n value: singleReceipt.paymentMethod,\r\n },\r\n ];\r\n setBillInfo(billInfo);\r\n }, [singleReceipt])\r\n\r\n const billInfoList = billInfo.map((item, index) => {\r\n return <SingleDetail data={item} key={index}/>\r\n })\r\n\r\n return (\r\n <>\r\n <ToolBar hidePaymentButton />\r\n <HistoryBar />\r\n <StyledCard pb={6} mt={3} px={4} py={2}>\r\n <Box mb={6} display=\"flex\" alignItems=\"flex-end\">\r\n <StyledImage src={companyLogo} alt=\"logo\" />\r\n <StyledBoldText variant=\"h5\">First Marine</StyledBoldText>\r\n </Box>\r\n <StyledBoldText gutterBottom={true} variant=\"h4\">\r\n Receipt\r\n </StyledBoldText>\r\n <Box display=\"flex\">\r\n <StyledBoldText variant=\"subtitle2\">Receipt Number:</StyledBoldText>\r\n <Box ml={3}>\r\n <StyledBoldText variant=\"subtitle2\">{singleReceipt.receiptNumber}</StyledBoldText>\r\n </Box>\r\n </Box>\r\n <StyledReciptBody>\r\n <Box display=\"flex\">\r\n <Box\r\n px={6}\r\n py={4}\r\n flexBasis=\"50%\"\r\n style={{ backgroundColor: \"#F3F6FC\" }}\r\n >\r\n {billInfoList}\r\n </Box>\r\n <Box\r\n px={6}\r\n py={4}\r\n flexBasis=\"50%\"\r\n style={{\r\n backgroundColor: themes.primaryColor,\r\n color: themes.white,\r\n }}\r\n >\r\n <StyledBoldText\r\n style={{ color: themes.white }}\r\n gutterBottom={true}\r\n align=\"center\"\r\n variant=\"body1\"\r\n >\r\n Payment Amount\r\n </StyledBoldText>\r\n\r\n <Statistic valueStyle={{color: themes.white, fontSize: '3vw', fontWeight: 'bolder', textAlign: 'center'}} value={singleReceipt.paymentAmount} prefix=\"₦\" precision={2}/>\r\n {/* <StyledBoldText\r\n style={{ color: themes.white }}\r\n align=\"center\"\r\n variant=\"h3\"\r\n >\r\n ${singleReceipt.paymentAmount}\r\n </StyledBoldText> */}\r\n </Box>\r\n </Box>\r\n <Box mt={6} py={4} px={6} style={{ backgroundColor: \"#F3F6FC\" }}>\r\n <Box display='flex' justifyContent='space-between'>\r\n <SingleDetail data={{title: 'invoice number', value: singleReceipt.invoiceNumber}}/>\r\n <SingleDetail isamount data={{title: 'Invoice Amount', value: singleReceipt.invoiceAmount}}/>\r\n </Box>\r\n {/* <Box px={6} mt={4} mb={2}>\r\n <Divider/>\r\n </Box>\r\n <Box display='flex' justifyContent='space-between'>\r\n <SingleDetail data={{title: 'invoice number', value: 'INV/0000001'}}/>\r\n <SingleDetail data={{title: 'Invoice Amount', value: 'N 300,0001'}}/>\r\n </Box> */}\r\n </Box>\r\n </StyledReciptBody>\r\n </StyledCard>\r\n </>\r\n );\r\n};\r\n\r\nconst SingleDetail = (props) => {\r\n return (\r\n <Box mt={2} display=\"flex\" alignItems=\"center\" justifyContent=\"space-between\">\r\n <StyledBoldText\r\n style={{ textTransform: \"capitalize\" }}\r\n variant=\"subtitle2\"\r\n >\r\n {props.data.title}:\r\n </StyledBoldText>\r\n <Box ml={4}>\r\n {\r\n props.isamount? \r\n <Statistic value={props.data.value} prefix=\"₦\" precision={2}/>\r\n :\r\n <StyledNormalText\r\n style={{ textTransform: \"capitalize\" }}\r\n variant=\"body2\"\r\n align='left'\r\n >\r\n {props.data.value}\r\n </StyledNormalText>\r\n}\r\n </Box>\r\n </Box>\r\n );\r\n};\r\nconst StyledReciptBody = styled(Box)`\r\n width: 90%;\r\n margin: 0 auto;\r\n margin-top: 24px;\r\n`;\r\nconst StyledImage = styled.img`\r\n width: 10%;\r\n`;\r\n","import React, {useEffect, useState} from 'react';\r\nimport { TableWithPagination } from '../../globalComponents/TableWithPagination';\r\nimport { ToolBar } from '../../globalComponents/ToolBar';\r\nimport { Space, Popover, Form, Select } from \"antd\";\r\nimport { StyledCard, StyledModal } from \"../../globalComponents/styles\";\r\nimport { themes } from \"../../globalAssets/theme\";\r\nimport { getInput } from \"../../Inventory/Items/AddItem\";\r\nimport { selectCustomer } from \"../../Clients/Customers/slice\";\r\nimport { selectInvoice } from \"../../Sales/Invoice/slice\";\r\n\r\n\r\nimport { useRouteMatch, Route, Switch, useHistory } from 'react-router';\r\nimport { FiMoreVertical } from 'react-icons/fi';\r\nimport { AddReceipt } from './AddReceipt'\r\nimport { ReceiptDetail } from './SingleReceipt';\r\nimport { fetchAllReceipt, selectReceipts } from './slice';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport moment from 'moment';\r\n\r\nconst { Option } = Select;\r\n\r\nconst data = [\r\n {\r\n bill_to: \"\",\r\n branch_id: \"\",\r\n invoice_amount: 0,\r\n invoice_date: \"2022-03-17T03:20:00.610Z\",\r\n invoice_number: \"\",\r\n notes: \"\",\r\n org_key: \"\",\r\n payment_amount: 0,\r\n payment_method: \"\",\r\n },\r\n];\r\n\r\n\r\nconst addReceiptInput = [\r\n {\r\n name: \"bill_to\",\r\n label: \"Customer Name\",\r\n isRequired: true,\r\n type: \"search\",\r\n // defaultValue: \"\",\r\n },\r\n {\r\n name: \"invoice_number\",\r\n label: \"Invoice Number\",\r\n isRequired: false,\r\n type: \"search\",\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"invoice_amount\",\r\n label: \"Invoice Amount\",\r\n isRequired: false,\r\n type: \"number\",\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"invoice_date\",\r\n label: \"Invoice Date\",\r\n isRequired: false,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"payment_amount\",\r\n label: \"Payment Amount\",\r\n isRequired: false,\r\n type: \"number\",\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"payment_method\",\r\n label: \"Payment Method\",\r\n isRequired: false,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n },\r\n \r\n {\r\n name: \"receipt_number\",\r\n // label: \"Receipt Number\",\r\n // isRequired: false,\r\n // type: \"number\",\r\n // defaultValue: \"\",\r\n },\r\n // {\r\n // name: \"wareHouseContactEmail\",\r\n // label: \"Warehouse Email\",\r\n // isRequired: false,\r\n // type: \"text\",\r\n // defaultValue: \"\",\r\n // },\r\n // {\r\n // name: \"headOfWareHouseId\",\r\n // label: \"Head of Warehouse Name\",\r\n // isRequired: false,\r\n // type: \"search\",\r\n // },\r\n];\r\n\r\n\r\nconst layout = {\r\n labelCol: { span: 24 },\r\n wrapperCol: { span: 24 },\r\n};\r\n\r\nexport const Receipt = (props) => {\r\n const [page, setPage] = useState(2);\r\n const [rowsPerPage, setRowsPerPage] = useState(10);\r\n const [selectValues, setSelectValues] = useState({});\r\n const [itemsState, setItemsState] = useState(data);\r\n\r\n const [addGroupModalProps, setAddGroupModalProps] = useState({\r\n isVisible: false,\r\n loading: false,\r\n });\r\n const { url, path } = useRouteMatch();\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n const { paginationProps, allReceipts } = useSelector(selectReceipts);\r\n const { invoiceList } = useSelector(selectInvoice);\r\n const { customerList } = useSelector(selectCustomer);\r\n console.log({ allReceipts, customerList, invoiceList }, \"allreceipcts\");\r\n\r\n useEffect(() => {\r\n dispatch(fetchAllReceipt({ page: 0, size: 10 }));\r\n }, []);\r\n\r\n // useEffect(() => {\r\n // const newItemsState = [...itemsState].map((itm) => {\r\n // console.log(itm, 'hello2')\r\n\r\n // // itm.item = invoiceList;\r\n // // return itm;\r\n // });\r\n // console.log(newItemsState);\r\n // // setItemsState(newItemsState);\r\n // }, [invoiceList]);\r\n\r\n const columns = [\r\n {\r\n title: \"Reciept Number\",\r\n dataIndex: \"receiptNumber\",\r\n key: \"receiptNumber\",\r\n },\r\n {\r\n title: \"Customer\",\r\n dataIndex: \"customer\",\r\n key: \"customer\",\r\n },\r\n {\r\n title: \"Date\",\r\n dataIndex: \"invoiceDate\",\r\n key: \"invoiceDate\",\r\n render: (data) => moment(data).format(\"Do, MMM YYYY\"),\r\n },\r\n\r\n {\r\n title: \"Invoice Number\",\r\n dataIndex: \"invoiceNumber\",\r\n key: \"invoiceNumber\",\r\n },\r\n {\r\n title: \"Payment Method\",\r\n dataIndex: \"paymentMethod\",\r\n key: \"paymentMethod\",\r\n },\r\n {\r\n title: \"Amount Paid\",\r\n dataIndex: \"paymentAmount\",\r\n key: \"paymentAmount\",\r\n },\r\n {\r\n title: \"Total Amount\",\r\n dataIndex: \"invoiceAmount\",\r\n key: \"invoiceAmount\",\r\n },\r\n /* {\r\n title: 'Balance',\r\n dataIndex: 'balance',\r\n key: 'balance',\r\n render: (data, allData) => {\r\n return (<p>{parseInt(allData.invoiceAmount) - parseInt(allData.paymentAmount)}</p>)\r\n }\r\n }, */\r\n {\r\n title: \"Action\",\r\n dataIndex: \"action\",\r\n key: \"action\",\r\n width: \"5%\",\r\n render: (data, allData) => {\r\n const content = (\r\n <Space direction=\"vertical\" size=\"small\">\r\n <p\r\n style={{ cursor: \"pointer\" }}\r\n onClick={() => history.push(`${url}/${allData.id}`)}\r\n >\r\n View Details\r\n </p>\r\n <p style={{ color: \"red\", cursor: \"pointer\" }}>Delete</p>\r\n </Space>\r\n );\r\n return (\r\n <Popover content={content} trigger=\"click\">\r\n <FiMoreVertical />\r\n </Popover>\r\n );\r\n },\r\n },\r\n ];\r\n\r\n const handleSelectChange = (selectName) => (value) => {\r\n const prevSelectValues = { ...selectValues };\r\n prevSelectValues[selectName] = value;\r\n setSelectValues(prevSelectValues);\r\n };\r\n\r\n const handleChangePage = (event, newPage) => {\r\n setPage(newPage);\r\n dispatch(fetchAllReceipt({ page: newPage, size: rowsPerPage }));\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n setRowsPerPage(parseInt(event.target.value, 10));\r\n setPage(0);\r\n dispatch(\r\n fetchAllReceipt({ page: 0, size: parseInt(event.target.value, 10) })\r\n );\r\n };\r\n\r\n //handleItemSelect\r\n const handleItemSelect = (invoiceId) => {\r\n const currentItemState = [...itemsState];\r\n const selectedItemObj = currentItemState;\r\n const selecteditem = selectedItemObj.invoiceList.find(\r\n (itm) => itm.id === invoiceId\r\n );\r\n selectedItemObj.invoiceId = selecteditem.id;\r\n selectedItemObj.bill_to = selecteditem.bill_to;\r\n selectedItemObj.invoice_number = selecteditem.invoice_number;\r\n selectedItemObj.invoice_amount = selecteditem.amount_due;\r\n selectedItemObj.invoice_date = selecteditem.invoice_date;\r\n selectedItemObj.orgId = selecteditem.orgId;\r\n\r\n // replaceItem(currentItemState, selectedItemObj);\r\n };\r\n\r\n // const receiptInputs34 = addReceiptInput.map((item) =>\r\n // // getInput(item, handleSelectChange)\r\n // console.log(item.name === \"invoice_number\")\r\n // );\r\n\r\n const customerOptionList = invoiceList.map((item, index) => {\r\n return (\r\n <Option value={item.id} key={index}>\r\n {`${item.bill_to}`}\r\n </Option>\r\n );\r\n });\r\n \r\n\r\n const receiptInputs = addReceiptInput.map(\r\n (item) =>\r\n getInput(item, handleSelectChange, customerOptionList, handleItemSelect)\r\n // console.log(item)\r\n );\r\n\r\n return (\r\n <Switch>\r\n <Route exact path={path}>\r\n <ToolBar\r\n title=\"Receipt\"\r\n showtools\r\n // onCreate={() => history.push(`${url}/add-receipt`)}\r\n // createButtonText=\"Create Receipt\"\r\n onCreate={() =>\r\n setAddGroupModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: true,\r\n }))\r\n }\r\n createButtonText=\"Create Receipt\"\r\n />\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n rowsPerPage={rowsPerPage}\r\n page={page}\r\n total={paginationProps.totalItems}\r\n handleChangeRowsPerPage={handleChangeRowsPerPage}\r\n handleChangePage={handleChangePage}\r\n columns={columns}\r\n dataSource={allReceipts}\r\n />\r\n </StyledCard>\r\n <CreateReceiptModal\r\n visible={addGroupModalProps.isVisible}\r\n onCancel={() =>\r\n setAddGroupModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }))\r\n }\r\n // onFinish={onFinish}\r\n loading={addGroupModalProps.loading}\r\n receiptInputs={receiptInputs}\r\n />\r\n ;\r\n </Route>\r\n {/* <Route path={`${path}/add-receipt`}>\r\n <AddReceipt />\r\n </Route> */}\r\n <Route path={`${path}/:id`}>\r\n <ReceiptDetail />\r\n </Route>\r\n </Switch>\r\n );\r\n};\r\n\r\nconst CreateReceiptModal = (props) => {\r\n const [form] = Form.useForm();\r\n\r\n const onOk = () => {\r\n form.submit();\r\n };\r\n\r\n return (\r\n <StyledModal\r\n title=\" New Receipt\"\r\n visible={props.visible}\r\n okButtonProps={{\r\n loading: props.loading,\r\n htmlType: \"submit\",\r\n style: {\r\n backgroundColor: themes.primaryColor,\r\n border: `1px solid ${themes.primaryColor}`,\r\n },\r\n }}\r\n cancelButtonProps={{\r\n type: \"danger\",\r\n }}\r\n onOk={onOk}\r\n okText=\"Create\"\r\n onCancel={props.onCancel}\r\n >\r\n <Form form={form} {...layout} onFinish={props.onFinish}>\r\n {props.receiptInputs}\r\n </Form>\r\n </StyledModal>\r\n );\r\n};","import React from \"react\";\r\nimport { Box } from \"@material-ui/core\";\r\nimport styled from \"styled-components\";\r\nimport { StyledNormalText, StyledCard } from \"../globalComponents/styles\";\r\nimport { Statistic } from \"antd\";\r\nimport { themes } from \"../globalAssets/theme\";\r\nimport { selectItemGroups } from \"../Inventory/ItemGroups/slice\";\r\nimport { selectItems } from \"../Inventory/Items/slice\";\r\nimport { selectWarehouse } from \"../Inventory/Warehouse/slice\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst stat = [\r\n /* { name: \"Total Items\", count: 2000 }, */\r\n /* { name: \"Total Active Items\", count: 1900 },\r\n { name: \"Total Inactive Items\", count: 100 }, */\r\n /* { name: \"Total Item Group\", count: 2000 }, */\r\n /* { name: \"Total Warehouse\", count: 2000 }, */\r\n /* { name: \"Total Warehouse\", count: 2000 }, */\r\n];\r\nexport function Dashboard(props) {\r\n const { paginationProps: totalItemGroup, itemGroupList } = useSelector(selectItemGroups);\r\n const {itemList} = useSelector(selectItems);\r\n const { warehouseList } = useSelector(selectWarehouse);\r\n\r\n\r\n return (\r\n <>\r\n <StyledStatContainer>\r\n <SingleStat count={itemList.length} name=\"Total Item\" />\r\n <SingleStat count={totalItemGroup.totalItemGroup} name=\"Total Item Group\" />\r\n <SingleStat count={warehouseList.length} name=\"Total Warehouse\" />\r\n </StyledStatContainer>\r\n </>\r\n );\r\n}\r\n\r\nconst SingleStat = (props) => {\r\n return (\r\n <StyledStatCard>\r\n <Statistic\r\n valueStyle={{\r\n color: themes.primaryColor,\r\n fontWeight: \"bold\",\r\n fontSize: \"2.5vw\",\r\n }}\r\n value={props.count}\r\n />\r\n <StyledNormalText variant=\"body2\">{props.name}</StyledNormalText>\r\n </StyledStatCard>\r\n );\r\n};\r\n\r\nconst StyledStatContainer = styled(Box)`\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n`;\r\n\r\nconst StyledStatCard = styled(StyledCard)`\r\n flex-basis: 23%;\r\n display: grid;\r\n place-items: center;\r\n padding: 20px;\r\n margin-right: 2%;\r\n margin-bottom: 15px;\r\n`;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport styled from \"styled-components\";\r\nimport { TableWithPagination } from \"../../globalComponents/TableWithPagination\";\r\nimport { ToolBar } from \"../../globalComponents/ToolBar\";\r\nimport {\r\n StyledBoldText,\r\n StyledCard,\r\n StyledModal,\r\n} from \"../../globalComponents/styles\";\r\nimport { useRouteMatch, Route, Switch, useHistory } from \"react-router\";\r\nimport { FiMoreVertical } from \"react-icons/fi\";\r\nimport { AntFormModal } from \"../../globalComponents/Modal\";\r\nimport { Box, Paper } from \"@material-ui/core\";\r\nimport { getInput } from \"../../Inventory/Items/AddItem\";\r\nimport { Form, Space, Popover, Select, notification } from \"antd\";\r\nimport { Divider } from \"@material-ui/core\";\r\nimport {\r\n PrimaryButton,\r\n TransaparentButton,\r\n} from \"../../globalComponents/Buttons\";\r\nimport Services from \"../../../services\";\r\nimport { Feedback } from \"../../globalComponents/Feedback\";\r\nimport { DeleteModal } from \"../../globalComponents/deleteModal\";\r\nimport { createVendor, getAllVendor, selectVendor } from \"./slice\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { selectDashboard } from \"../../Dashboard/slice\";\r\nimport { themes } from \"../../globalAssets/theme\";\r\nimport { notificationAlert } from \"../../utils/notificationAlert\";\r\n\r\nconst { Option } = Select;\r\n\r\nexport const addCustomerInput = [\r\n {\r\n name: \"first_name\",\r\n label: \"First Name\",\r\n isRequired: true,\r\n type: \"text\",\r\n id: 'firstName',\r\n defaultValue: \"\",\r\n },\r\n {\r\n name: \"last_name\",\r\n label: \"Last Name\",\r\n isRequired: true,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n id: 'lastName'\r\n },\r\n {\r\n name: \"other_name\",\r\n label: \"Other Name\",\r\n isRequired: false,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n id: 'otherName'\r\n },\r\n {\r\n name: \"email\",\r\n label: \"Email\",\r\n isRequired: true,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n id: 'email'\r\n },\r\n {\r\n name: \"phone_number\",\r\n label: \"Phone Number\",\r\n isRequired: true,\r\n type: \"phone\",\r\n defaultValue: \"\",\r\n id: 'phoneNumber'\r\n },\r\n {\r\n name: \"address\",\r\n label: \"Address\",\r\n isRequired: true,\r\n type: \"text\",\r\n defaultValue: \"\",\r\n id :'address',\r\n }\r\n];\r\n\r\n\r\n\r\nconst layout = {\r\n labelCol: { span: 24 },\r\n wrapperCol: { span: 24 },\r\n};\r\n\r\nexport const Vendor = (props) => {\r\n const [editForm] = Form.useForm();\r\n const [page, setPage] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(10);\r\n const { vendorList, paginationProps } = useSelector(selectVendor);\r\n const { usersByOrg, userProfile } = useSelector(selectDashboard);\r\n const [selectValues, setSelectValues] = useState({});\r\n const [addGroupModalProps, setAddGroupModalProps] = useState({\r\n isVisible: false,\r\n loading: false,\r\n });\r\n\r\n const [feedbackProps, setFeedbackProps] = useState({\r\n open: false,\r\n type: \"\",\r\n message: \"\",\r\n });\r\n\r\n const [editModalProps, setEditModalProps] = useState({\r\n isVisible: false,\r\n selectedItemInput: [],\r\n loading: false,\r\n initialValues: {},\r\n });\r\n\r\n\r\n console.log({vendorList});\r\n \r\n /* const [deleteModalProps, setDeleteModalProps] = useState({\r\n visible: false,\r\n name: \"\",\r\n id: null,\r\n loading: false,\r\n });\r\n \r\n\r\n */\r\n const dispatcher = useDispatch();\r\n\r\n useEffect(() => {\r\n editForm.resetFields();\r\n const formattedInitialValues = Object.entries(editModalProps.initialValues).map(([key, value]) => {\r\n if(key === 'firstName') {\r\n key = 'first_name'\r\n return [key, value];\r\n }\r\n if(key === 'lastName'){\r\n key = 'last_name';\r\n return [key, value];\r\n }\r\n if(key === 'phoneNumber'){\r\n key = 'phone_number';\r\n return [key, value];\r\n }\r\n\r\n return [key, value]\r\n });\r\n\r\n editForm.setFieldsValue(Object.fromEntries(formattedInitialValues));\r\n }, [editModalProps.isVisible]);\r\n\r\n const handleSelectChange = (selectName) => (value) => {\r\n const prevSelectValues = { ...selectValues };\r\n prevSelectValues[selectName] = value;\r\n setSelectValues(prevSelectValues);\r\n };\r\n\r\n const userList = [...usersByOrg].map((user, index) => {\r\n return (\r\n <Option key={index} value={user.id}>\r\n {user.fullName !== \" \" ? user.fullName : \"Adefisayo Adeniji\"}\r\n </Option>\r\n );\r\n });\r\n\r\n const searchObject = {\r\n onSearch: (val) => {},\r\n };\r\n\r\n const columns = [\r\n {\r\n title: \"ID\",\r\n dataIndex: \"id\",\r\n key: \"id\",\r\n },\r\n {\r\n title: \"Name\",\r\n dataIndex: \"name\",\r\n key: \"name\",\r\n render: (data, allData) => {\r\n return `${allData.firstName} ${allData.lastName}`\r\n }\r\n },\r\n {\r\n title: \"Email\",\r\n dataIndex: \"email\",\r\n key: \"email\",\r\n },\r\n {\r\n title: \"Phone Number\",\r\n dataIndex: \"phoneNumber\",\r\n key: \"phoneNumber\",\r\n },\r\n {\r\n title: \"Address\",\r\n dataIndex: \"address\",\r\n key: \"address\",\r\n },\r\n\r\n {\r\n title: \"Action\",\r\n dataIndex: \"action\",\r\n key: \"action\",\r\n width: \"5%\",\r\n render: (data, allData) => {\r\n const content = (\r\n <Space direction=\"vertical\" size=\"small\">\r\n <p\r\n onClick={() => {\r\n const newData = addCustomerInput.map((item) => {\r\n item.defaultValue = allData[item.id];\r\n return getInput(\r\n item,\r\n );\r\n });\r\n setEditModalProps((prevState) => ({\r\n ...prevState,\r\n selectedItemInput: newData,\r\n isVisible: true,\r\n initialValues: allData,\r\n }));\r\n }}\r\n style={{ cursor: \"pointer\" }}\r\n >\r\n Edit\r\n </p>\r\n <p\r\n \r\n style={{ color: \"red\", cursor: \"pointer\" }}\r\n >\r\n Delete\r\n </p>\r\n </Space>\r\n );\r\n\r\n \r\n return (\r\n <Popover\r\n content={content}\r\n trigger=\"click\"\r\n >\r\n <FiMoreVertical />\r\n </Popover>\r\n );\r\n },\r\n },\r\n ];\r\n\r\n const handleChangePage = (event, newPage) => {\r\n (async () => {\r\n setPage(newPage);\r\n await dispatcher(getAllVendor({ page: newPage, size: rowsPerPage }));\r\n })();\r\n };\r\n\r\n const handleChangeRowsPerPage = (event) => {\r\n (async () => {\r\n setRowsPerPage(parseInt(event.target.value, 10));\r\n setPage(0);\r\n await dispatcher(\r\n getAllVendor({ page: 0, size: parseInt(event.target.value, 10) })\r\n );\r\n })();\r\n };\r\n\r\n const customerInputs = addCustomerInput.map((item) =>\r\n getInput(item)\r\n );\r\n\r\n const onFinish = async (values) => {\r\n const data = {\r\n /* \"other_name\": \"kdfwlfjwo\", */\r\n \"vendor_image\": \"lkwfowefpowefkwpeofk\"\r\n }\r\n try {\r\n setAddGroupModalProps((prevState) => ({ ...prevState, loading: true }));\r\n values.headOfWareHouseId = selectValues.headOfWareHouseId;\r\n values.orgId = userProfile.orgId;\r\n await dispatcher(createVendor({ data: {...data, ...values} }));\r\n await dispatcher(getAllVendor({page, size: rowsPerPage}));\r\n setAddGroupModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n loading: false,\r\n }));\r\n setFeedbackProps({\r\n type: \"success\",\r\n open: true,\r\n message: \"customer has been added\",\r\n });\r\n } catch (error) {\r\n setAddGroupModalProps((prevState) => ({ ...prevState, loading: false }));\r\n setFeedbackProps({\r\n type: \"error\",\r\n open: true,\r\n message: \"An error occurred, please try again later\",\r\n });\r\n }\r\n };\r\n\r\n const handleFeedbackClose = (event, reason) => {\r\n if (reason === \"clickaway\") {\r\n return;\r\n }\r\n setFeedbackProps((prevState) => ({ ...prevState, open: false }));\r\n };\r\n\r\n\r\n\r\n const onEditFinish = async (values) => {\r\n console.log(values);\r\n try {\r\n setEditModalProps((prevState) => ({ ...prevState, loading: true }));\r\n await Services.editVendors({\r\n data: values,\r\n id: editModalProps.initialValues.id,\r\n });\r\n await dispatcher(getAllVendor({ page, size: rowsPerPage }));\r\n setEditModalProps((prevState) => ({\r\n ...prevState,\r\n loading: false,\r\n isVisible: false,\r\n }));\r\n notificationAlert(\r\n \"success\",\r\n \"Vendor updated\",\r\n `${editModalProps.initialValues.name} has been updated`\r\n );\r\n } catch (error) {\r\n setEditModalProps((prevState) => ({ ...prevState, loading: false }));\r\n if (error.response) {\r\n notificationAlert(\r\n \"error\",\r\n \"Error Occurred\",\r\n error.response.data.message || \"Please try again later\"\r\n );\r\n } else {\r\n notificationAlert(\"error\", \"Error Occurred\", \"Please try again later\");\r\n }\r\n }\r\n }; \r\n\r\nconsole.log({paginationProps});\r\n\r\n return (\r\n <>\r\n <ToolBar\r\n title=\"All Vendor\"\r\n showtools\r\n onCreate={() =>\r\n setAddGroupModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: true,\r\n }))\r\n }\r\n createButtonText=\"Add new Vendor\"\r\n />\r\n <StyledCard mt={2}>\r\n <TableWithPagination\r\n rowsPerPage={rowsPerPage}\r\n page={page}\r\n total={paginationProps.totalItems}\r\n handleChangeRowsPerPage={handleChangeRowsPerPage}\r\n handleChangePage={handleChangePage}\r\n columns={columns}\r\n dataSource={vendorList}\r\n />\r\n </StyledCard>\r\n <CreateCustomerModal\r\n visible={addGroupModalProps.isVisible}\r\n onCancel={() =>\r\n setAddGroupModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }))\r\n }\r\n onFinish={onFinish}\r\n loading={addGroupModalProps.loading}\r\n warehouseInputs={customerInputs}\r\n />\r\n <AntFormModal\r\n title=\"Edit Vendor\"\r\n visible={editModalProps.isVisible}\r\n onCancel={() =>\r\n setEditModalProps((prevState) => ({\r\n ...prevState,\r\n isVisible: false,\r\n }))\r\n }\r\n form={editForm}\r\n okText='Submit'\r\n loading={editModalProps.loading}\r\n onFinish={onEditFinish}\r\n >\r\n {editModalProps.selectedItemInput}\r\n </AntFormModal>\r\n\r\n <Feedback\r\n open={feedbackProps.open}\r\n message={feedbackProps.message}\r\n type={feedbackProps.type}\r\n onClose={handleFeedbackClose}\r\n />\r\n {/* <DeleteModal\r\n open={deleteModalProps.visible}\r\n loading={deleteModalProps.loading}\r\n itemName={deleteModalProps.name}\r\n onClose={() =>\r\n setDeleteModalProps((prevState) => ({ ...prevState, visible: false }))\r\n }\r\n onDelete={handleWarehouseDelete}\r\n title=\"Delete Warehouse\"\r\n /> */}\r\n </>\r\n );\r\n};\r\n\r\nexport const CreateCustomerModal = (props) => {\r\n const [form] = Form.useForm();\r\n\r\n const onOk = () => {\r\n form.submit();\r\n };\r\n\r\n return (\r\n <StyledModal\r\n title=\" New Vendor\"\r\n visible={props.visible}\r\n okButtonProps={{\r\n loading: props.loading,\r\n htmlType: \"submit\",\r\n style: {\r\n backgroundColor: themes.primaryColor,\r\n border: `1px solid ${themes.primaryColor}`,\r\n },\r\n }}\r\n cancelButtonProps={{\r\n type: \"danger\",\r\n }}\r\n onOk={onOk}\r\n okText=\"Create\"\r\n onCancel={props.onCancel}\r\n >\r\n <Form form={form} {...layout} onFinish={props.onFinish}>\r\n {props.warehouseInputs}\r\n </Form>\r\n </StyledModal>\r\n );\r\n};\r\n\r\nconst EditWarehouseModal = (props) => {\r\n const onOk = () => {\r\n props.form.submit();\r\n };\r\n\r\n const cancelAndReset = () => {\r\n props.onCancel();\r\n };\r\n\r\n return (\r\n <StyledModal\r\n title=\"Edit Warehouse\"\r\n visible={props.visible}\r\n okButtonProps={{\r\n loading: props.loading,\r\n htmlType: \"submit\",\r\n style: {\r\n backgroundColor: themes.primaryColor,\r\n border: `1px solid ${themes.primaryColor}`,\r\n },\r\n }}\r\n cancelButtonProps={{\r\n type: \"danger\",\r\n }}\r\n onOk={onOk}\r\n okText=\"Create\"\r\n onCancel={cancelAndReset}\r\n >\r\n <Form\r\n initialValues={props.initialValues}\r\n form={props.form}\r\n {...layout}\r\n onFinish={props.onFinish}\r\n >\r\n {props.warehouseInputs}\r\n </Form>\r\n </StyledModal>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\r\nimport {\r\n darkTheme,\r\n lightTheme,\r\n GlobalStyle,\r\n} from \"./Components/globalAssets/theme\";\r\nimport {\r\n ThemeProvider as MuiThemeProvider,\r\n makeStyles,\r\n StylesProvider,\r\n} from \"@material-ui/core/styles\";\r\nimport { ThemeProvider } from \"styled-components\";\r\n/* import { useTheme } from '@material-ui/core/styles'; */\r\nimport { Container, Box, Button } from \"@material-ui/core\";\r\nimport { TopBar } from \"./Components/globalComponents/TopBar\";\r\nimport { SideBar } from \"./Components/globalComponents/SideBar\";\r\nimport { BsFillBellFill } from \"react-icons/bs\";\r\nimport { IoMdArrowDropdown } from \"react-icons/io\";\r\nimport { DropDown } from \"./Components/globalComponents/DropDown\";\r\n\r\nimport styled from \"styled-components\";\r\n\r\nimport { Switch, Route, useLocation } from \"react-router-dom\";\r\n\r\nimport { Menu, Select, Table, Avatar, Badge } from \"antd\";\r\nimport { UserOutlined } from \"@ant-design/icons\";\r\nimport { Items as InventoryItems } from \"./Components/Inventory/Items/index\";\r\nimport { ItemGroups as InventoryItemGroups } from \"./Components/Inventory/ItemGroups/index\";\r\nimport { Warehouse as InventoryWarehouse } from \"./Components/Inventory/Warehouse/index\";\r\nimport { InventoryAdjustment } from \"./Components/Inventory/Adjustment/index\";\r\nimport { TransferOrder as InventoryTransferOrders } from \"./Components/Inventory/TransferOrders/index\";\r\nimport { SalesOrders } from \"./Components/Sales/SalesOrders/index\";\r\nimport { loadProgressBar } from \"axios-progress-bar\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useEffect } from \"react\";\r\nimport { getAllWarehouse } from \"./Components/Inventory/Warehouse/slice\";\r\nimport {\r\n fetchAllItemGroups,\r\n fetchItemGroupsByOrg,\r\n} from \"./Components/Inventory/ItemGroups/slice\";\r\nimport {\r\n getUserProfile,\r\n getUsersByOrg,\r\n selectDashboard,\r\n getItemGroupNumber,\r\n} from \"./Components/Dashboard/slice\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { Invoice } from \"./Components/Sales/Invoice/index\";\r\nimport { Receipt } from \"./Components/Sales/Receipt/index\";\r\nimport { Customers } from \"./Components/Clients/Customers/index\";\r\nimport { fetchAllItems } from \"./Components/Inventory/Items/slice\";\r\nimport { getAllCustomer } from \"./Components/Clients/Customers/slice\";\r\nimport { Dashboard } from \"./Components/Dashboard/index\";\r\nimport Services, { mainDomain } from \"./services\";\r\nimport hostname from \"./domain\";\r\nimport { Vendor } from \"./Components/Clients/Vendors\";\r\nimport { getAllVendor } from \"./Components/Clients/Vendors/slice\";\r\n\r\nconst { Option } = Select;\r\nconst { SubMenu } = Menu;\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: \"flex\",\r\n \"& > *\": {\r\n margin: theme.spacing(1),\r\n },\r\n },\r\n small: {\r\n width: theme.spacing(3),\r\n height: theme.spacing(3),\r\n fontSize: \"1.2vw\",\r\n },\r\n large: {\r\n width: theme.spacing(7),\r\n height: theme.spacing(7),\r\n },\r\n}));\r\n\r\nfunction App() {\r\n loadProgressBar();\r\n const [isLightMood, setMood] = React.useState(true);\r\n const classes = useStyles();\r\n const [open, setOpen] = React.useState(false);\r\n const anchorRef = React.useRef(null);\r\n const dispatcher = useDispatch();\r\n const { userProfile } = useSelector(selectDashboard);\r\n const location = useLocation();\r\n\r\n useEffect(() => {\r\n const params = new URLSearchParams(location.search);\r\n const token = params.get(\"token\");\r\n if (token) {\r\n localStorage.invToken = token;\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n (async () => {\r\n try{\r\n if (\r\n localStorage.invToken !== undefined &&\r\n localStorage.invToken !== null\r\n ) {\r\n dispatcher(getAllWarehouse({}));\r\n dispatcher(fetchAllItemGroups({}));\r\n dispatcher(getUserProfile({}));\r\n dispatcher(fetchAllItems({ page: 0, size: 10 }));\r\n dispatcher(getAllCustomer({ page: 0, size: 10 }));\r\n dispatcher(getAllVendor({ page: 0, size: 10 }));\r\n // dispatcher(getItemGroupNumber());\r\n }\r\n }catch(error){\r\n console.log(error.statusCode);\r\n }\r\n \r\n })();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (Object.entries(userProfile).length > 0) {\r\n dispatcher(\r\n fetchItemGroupsByOrg({\r\n orgId: userProfile.organisation.orgId,\r\n page: 0,\r\n size: 10,\r\n })\r\n );\r\n }\r\n }, [userProfile]);\r\n\r\n const handleToggle = () => {\r\n setOpen((prevOpen) => !prevOpen);\r\n };\r\n\r\n const switchURL = (URL) => {\r\n return mainDomain.split(\"api\").length > 2\r\n ? URL.replace(/dev/, \"apps\")\r\n : URL.replace(/apps/, \"dev\");\r\n };\r\n\r\n const handleLogout = async () => {\r\n try {\r\n const response = await Services.logout();\r\n console.log(response);\r\n localStorage.removeItem(\"invToken\");\r\n window.location.assign(switchURL(\"http://apps.ezoneerp.com/login\"));\r\n } catch (error) {}\r\n };\r\n\r\n const handleClose = (event, itemName) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n if (itemName === \"Logout\") {\r\n /* localStorage.removeItem('invToken');\r\n window.location.assign(\"http://apps.ezoneerp.com/login\"); */\r\n handleLogout();\r\n } else if (itemName === \"My Account\") {\r\n window.location.assign(\r\n switchURL(\"http://apps.ezoneerp.com/user-profile\")\r\n );\r\n } else if (itemName === \"Subscriptions\") {\r\n window.location.assign(\r\n switchURL(\"http://apps.ezoneerp.com/subscriptions\")\r\n );\r\n } else if (itemName === \"Help\") {\r\n window.location.assign(switchURL(\"http://apps.ezoneerp.com/help\"));\r\n }\r\n console.log(itemName);\r\n return;\r\n }\r\n\r\n setOpen(false);\r\n };\r\n\r\n function handleListKeyDown(event) {\r\n if (event.key === \"Tab\") {\r\n event.preventDefault();\r\n setOpen(false);\r\n }\r\n }\r\n\r\n // return focus to the button when we transitioned from !open -> open\r\n const prevOpen = React.useRef(open);\r\n React.useEffect(() => {\r\n if (prevOpen.current === true && open === false) {\r\n anchorRef.current.focus();\r\n }\r\n\r\n prevOpen.current = open;\r\n }, [open]);\r\n\r\n return (\r\n <StylesProvider injectFirst>\r\n <MuiThemeProvider theme={isLightMood ? lightTheme : darkTheme}>\r\n <ThemeProvider theme={isLightMood ? lightTheme : darkTheme}>\r\n <GlobalStyle />\r\n <CssBaseline />\r\n <Container disableGutters={true} maxWidth={false}>\r\n <TopBar />\r\n <SideBar />\r\n <StyledContainer>\r\n <TopBar hidden />\r\n <StyledUserBar>\r\n <StyledInnerUserBar1></StyledInnerUserBar1>\r\n <StyledInnerUserBar>\r\n <Box></Box>\r\n <Box></Box>\r\n </StyledInnerUserBar>\r\n <StyledUserToolBar ref={anchorRef} px={2}>\r\n <Badge\r\n overflowCount={10}\r\n offset={[5, 0]}\r\n style={{ border: \"none\", boxShadow: \"none\" }}\r\n size=\"small\"\r\n count={9}\r\n >\r\n <BsFillBellFill\r\n style={{ fontSize: \"1.6vw\", color: \"#CCCCCC\" }}\r\n />\r\n </Badge>\r\n <Box\r\n style={{ color: \"#fff\" }}\r\n ml={4}\r\n display=\"flex\"\r\n alignItems=\"center\"\r\n >\r\n <Box mr={2}>\r\n <Avatar size=\"small\" icon={<UserOutlined />} />\r\n </Box>\r\n <Box>\r\n <Button\r\n endIcon={<IoMdArrowDropdown />}\r\n onClick={handleToggle}\r\n style={{ color: \"#fff\" }}\r\n >\r\n {userProfile.fullName === \" \"\r\n ? `${userProfile.firstName} ${userProfile.lastName}`\r\n : userProfile.fullName}\r\n </Button>\r\n <DropDown\r\n items={[\r\n \"My Account\",\r\n \"Subscriptions\",\r\n \"Help\",\r\n \"Logout\",\r\n ]}\r\n handleListKeyDown={handleListKeyDown}\r\n ref={anchorRef}\r\n open={open}\r\n handleClose={handleClose}\r\n />\r\n </Box>\r\n </Box>\r\n </StyledUserToolBar>\r\n </StyledUserBar>\r\n <Box mx={2} my={2}>\r\n <Switch>\r\n <Route exact path=\"/\">\r\n <Dashboard />\r\n </Route>\r\n <Route path=\"/items\">\r\n <InventoryItems />\r\n </Route>\r\n <Route path=\"/item-groups\">\r\n <InventoryItemGroups />\r\n </Route>\r\n <Route path=\"/warehouse\">\r\n <InventoryWarehouse />\r\n </Route>\r\n <Route path=\"/inventory-adjustment\">\r\n <InventoryAdjustment />\r\n </Route>\r\n <Route path=\"/transfer-orders\">\r\n <InventoryTransferOrders />\r\n </Route>\r\n <Route path=\"/sales-orders\">\r\n <SalesOrders />\r\n </Route>\r\n <Route path=\"/invoice\">\r\n <Invoice />\r\n </Route>\r\n <Route path=\"/receipts\">\r\n <Receipt />\r\n </Route>\r\n <Route path=\"/customers\">\r\n <Customers />\r\n </Route>\r\n <Route path=\"/vendors\">\r\n <Vendor/>\r\n </Route>\r\n </Switch>\r\n </Box>\r\n </StyledContainer>\r\n </Container>\r\n </ThemeProvider>\r\n </MuiThemeProvider>\r\n </StylesProvider>\r\n );\r\n}\r\n\r\nconst StyledContainer = styled(Box)`\r\n width: 83%;\r\n margin-left: 17%;\r\n`;\r\n\r\nconst StyledUserBar = styled(Box)`\r\n background-color: ${(props) => props.theme.primaryColor};\r\n width: 100%;\r\n border-top-left-radius: 5vw;\r\n border-bottom-right-radius: 5vw;\r\n height: 10vh;\r\n display: flex;\r\n justify-content: flex-start;\r\n`;\r\n\r\nconst StyledInnerUserBar = styled(Box)`\r\n width: 50%;\r\n height: 100%;\r\n\r\n display: flex;\r\n\r\n & > div {\r\n width: 50%;\r\n transform: skewX(40deg);\r\n }\r\n\r\n & > div:first-child {\r\n background-color: ${(props) => props.theme.primaryColor2};\r\n opacity: 0.4;\r\n }\r\n\r\n & > div:nth-child(2) {\r\n background-color: ${(props) => props.theme.primaryColor3};\r\n }\r\n`;\r\nconst StyledInnerUserBar1 = styled(Box)`\r\n width: 25%;\r\n background-color: #200990;\r\n display: relative;\r\n z-index: -1;\r\n`;\r\n\r\nconst StyledUserToolBar = styled(Box)`\r\n display: flex;\r\n width: 25%;\r\n align-items: center;\r\n`;\r\nexport default App;\r\n","import { configureStore } from '@reduxjs/toolkit';\r\nimport itemGroupReducer from '../Components/Inventory/ItemGroups/slice';\r\nimport itemReducer from '../Components/Inventory/Items/slice';\r\nimport warehouseReducer from '../Components/Inventory/Warehouse/slice';\r\nimport dashboardReducer from '../Components/Dashboard/slice';\r\nimport invoiceReducer from '../Components/Sales/Invoice/slice';\r\nimport customerReducer from '../Components/Clients/Customers/slice';\r\nimport vendorReducer from '../Components/Clients/Vendors/slice';\r\nimport receiptReducer from '../Components/Sales/Receipt/slice';\r\nimport adjustmentsReducer from '../Components/Inventory/Adjustment/slice'\r\nimport transfarOrderReducer from \"../Components/Inventory/TransferOrders/slice\";\r\n\r\n\r\nexport const store = configureStore({\r\n reducer: {\r\n itemGroupReducer,\r\n itemReducer,\r\n warehouseReducer,\r\n dashboardReducer,\r\n invoiceReducer,\r\n customerReducer,\r\n vendorReducer,\r\n receiptReducer,\r\n adjustmentsReducer,\r\n transfarOrderReducer,\r\n },\r\n});\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport { store } from './app/store';\r\nimport { Provider } from 'react-redux';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport 'antd/dist/antd.css';\r\nimport { BrowserRouter as Router } from 'react-router-dom';\r\nimport 'axios-progress-bar/dist/nprogress.css'\r\n\r\nReactDOM.render(\r\n <React.StrictMode>\r\n <Provider store={store}>\r\n <Router>\r\n <App />\r\n </Router>\r\n </Provider>\r\n </React.StrictMode>,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}