// React Imports import { useMemo, useState } from 'react' // MUI Imports import Button from '@mui/material/Button' import Divider from '@mui/material/Divider' import Drawer from '@mui/material/Drawer' import IconButton from '@mui/material/IconButton' import Typography from '@mui/material/Typography' // Third-party Imports // Type Imports // Components Imports import CustomTextField from '@core/components/mui/TextField' import { Autocomplete, CircularProgress, MenuItem } from '@mui/material' import { useDebounce } from 'use-debounce' import { useInventoriesMutation } from '../../../../../services/mutations/inventories' import { useOutlets } from '../../../../../services/queries/outlets' import { useProducts } from '../../../../../services/queries/products' import { InventoryRestockRequest, Item } from '../../../../../types/services/inventory' type Props = { open: boolean handleClose: () => void } const AdjustmentStockDrawer = (props: Props) => { // Props const { open, handleClose } = props const { restockInventory } = useInventoriesMutation() // States const [productInput, setProductInput] = useState('') const [productDebouncedInput] = useDebounce(productInput, 500) // debounce for better UX const [outletInput, setOutletInput] = useState('') const [outletDebouncedInput] = useDebounce(outletInput, 500) // debounce for better UX const [formData, setFormData] = useState({ outlet_id: '', items: [ { item_id: '', item_type: '', quantity: 0 } ], reason: '' }) const { data: outlets, isLoading: outletsLoading } = useOutlets({ search: outletDebouncedInput }) const { data: products, isLoading } = useProducts({ search: productDebouncedInput }) const outletOptions = useMemo(() => outlets?.outlets || [], [outlets]) const options = useMemo(() => products?.products || [], [products]) // Handle Form Submit const handleFormSubmit = (e: any) => { e.preventDefault() restockInventory.mutate(formData, { onSuccess: () => { handleReset() } }) } const handleInputChange = (e: any) => { setFormData({ ...formData, [e.target.name]: e.target.value }) } // Handle Form Reset const handleReset = () => { handleClose() setFormData({ outlet_id: '', items: [ { item_id: '', item_type: '', quantity: 0 } ], reason: '' }) } return (
Re Stock
option.name} value={outletOptions.find(p => p.id === formData.outlet_id) || null} onInputChange={(event, newOutlettInput) => { setOutletInput(newOutlettInput) }} onChange={(event, newValue) => { setFormData({ ...formData, outlet_id: newValue?.id || '' }) }} renderInput={params => ( {outletsLoading && } {params.InputProps.endAdornment} ) }} /> )} /> setFormData({ ...formData, items: [{ ...formData.items[0], item_type: e.target.value }] })} > Product Ingredient option.name} value={options.find(p => p.id === formData.items[0].item_id) || null} onInputChange={(event, newProductInput) => { setProductInput(newProductInput) }} onChange={(event, newValue) => { setFormData({ ...formData, items: [ { ...formData.items[0], item_id: newValue?.id || '' } ] }) }} renderInput={params => ( {isLoading && } {params.InputProps.endAdornment} ) }} /> )} /> setFormData({ ...formData, items: [ { ...formData.items[0], quantity: e.target.value } ] }) } placeholder='0' />
) } export default AdjustmentStockDrawer