????

Your IP : 216.73.216.152


Current Path : C:/inetpub/vhost/xaydung.gdtsolutions.vn/build/static/js/
Upload File :
Current File : C:/inetpub/vhost/xaydung.gdtsolutions.vn/build/static/js/3051.92c6abb3.chunk.js.map

{"version":3,"file":"static/js/3051.92c6abb3.chunk.js","mappings":"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","sources":["views/quan-ly-du-an/DuAn/TabThongTin/DuAnVatLieu/CardDuAnVatLieu.js","views/quan-ly-du-an/DuAn/TabThongTin/DuAnVatLieu/IndexCreateDuAnVatLieu.js","components/select/DropdownListForm.js","views/quan-ly-du-an/DuAn/TabThongTin/DuAnVatLieu/CardDanhSachVatLieu.js"],"sourcesContent":["/* eslint-disable no-unused-vars */\nimport { useState, useEffect, useCallback, Fragment, useMemo } from 'react'\nimport { Button, Card, CardBody, CardFooter, CardHeader, Table, Input } from 'reactstrap'\nimport Swal from 'sweetalert2'\nimport { formatCurrency, formatDate, formatNumber } from '../../../../../actions/util';\nimport { CHECK_WARNING } from '../../../../../components/alert/Alert';\nimport EmptyNoData from '../../../../../components/Empty/EmptyNoData';\nimport { FontAwesome } from '../../../../../components/icon';\nimport NumberFormat from '../../../../../components/numberformat/NumberFormat';\nimport PopupThanhToanAll from './ThanhToan/PopupThanhToanAll';\n\nexport default function CardDuAnVatLieu(props) {\n    const { IdDuAn, dataDonHang, onDeleted, onResetData, BatDau, Name } = props;\n\n    const [dataDH, setDataDH] = useState([]);\n    const [check, setCheck] = useState(true);\n    const [valueChecked, setValueChecked] = useState(false);\n    const [isOpenPopupThanhToan, setIsOpenPopupThanhToan] = useState(false);\n    const [dataThanhToan, setDataThanhToan] = useState([])\n\n    useEffect(() => {\n        setDataDH(dataDonHang);\n    }, [dataDonHang]);\n\n    useEffect(() => {\n        if (dataDH.length !== 0) {\n            let check = dataDH.find(f => f.isDisabledNumber || f.isDisabledNumberDG);\n            let checkTonKho = dataDH.find(f => f.isTonKho);\n            if (check || checkTonKho) { setCheck(true); }\n            else { setCheck(false); }\n        } else {\n            setCheck(true)\n        }\n    }, [dataDH])\n\n    const ConfirmContinue = useCallback((text) => {\n        return Swal.fire({\n            title: text,\n            icon: 'warning',\n            showCancelButton: true,\n            confirmButtonColor: '#3085d6',\n            cancelButtonColor: '#d33',\n            confirmButtonText: 'Đồng ý',\n            cancelButtonText: 'Hủy'\n        })\n    }, [])\n\n    const onDeletedItem = useCallback(\n        (item) => {\n            ConfirmContinue(`Bạn chắc chắn có muốn xóa vật liệu`).then(res => {\n                if (res.value) {\n                    let data = dataDonHang.filter(f => f.DMVatLieuId !== item.DMVatLieuId || f.OrganId !== item.OrganId);\n                    onDeleted(item)\n                    setDataDH([...data])\n                }\n            })\n        },\n        [ConfirmContinue, dataDonHang, onDeleted]\n    )\n\n    const onChangeSoLuong = useCallback(\n        (value, item, index) => {\n            dataDH[index].SoLuong = value;\n            dataDH[index].isTonKho = item.OrganId === '56dfff3b-a1a5-404e-937a-3b4d02ecc1db' ? parseFloat(value) > parseFloat(item.SoLuongTon) ? true : false : false;\n            dataDH[index].isDisabledNumber = value === 0 ? true : false;\n            setDataDH([...dataDH])\n        },\n        [dataDH],\n    )\n\n    const onChangeDonGia = useCallback(\n        (value, item, index) => {\n            dataDH[index].DonGia = value;\n            dataDH[index].isDisabledNumberDG = value === 0 ? true : false;\n            setDataDH([...dataDH])\n        },\n        [dataDH],\n    )\n\n    // const onChangeCheck = useCallback(\n    //     (value, item, index) => {\n    //         let itemChange = {\n    //             ...item,\n    //             checked: value\n    //         }\n    //         dataDH[index] = itemChange;\n    //         let checkAll = dataDH.find(f => !f.checked);\n    //         if (checkAll) {\n    //             setValueChecked(false)\n    //         } else {\n    //             setValueChecked(true)\n    //         }\n    //         setDataDH([...dataDH])\n    //     },\n    //     [dataDH],\n    // )\n\n    // const onChangeCheckAll = useCallback(\n    //     (value) => {\n    //         let arr = dataDH.map(item => {\n    //             return {\n    //                 ...item,\n    //                 checked: value\n    //             }\n    //         })\n    //         setDataDH([...arr])\n    //         setValueChecked(value)\n    //     },\n    //     [dataDH],\n    // )\n\n    const save = useCallback(() => {\n        // let arr = dataDH.filter(f => f.checked);\n        // if (arr.length !== 0) {\n        //     let check = dataDH.find(f => new Date(f.NgayNhap).getTime() < new Date(BatDau).getTime())\n        //     if (check) {\n        //         CHECK_WARNING('Trong đơn hàng có vật liệu thời gian nhỏ hơn ngày bắt đầu dự án')\n        //     } else {\n        //         let check = arr.find((f, i, data) => data.find(f2 => f2.NgayNhap !== f.NgayNhap))\n        //         if (check) {\n        //             CHECK_WARNING('Đơn hàng phải cùng ngày')\n        //         } else {\n        //             setIsOpenPopupThanhToan(true);\n        //             setDataThanhToan(arr)\n        //         }\n        //     }\n        // } else {\n        //     CHECK_WARNING('Vui lòng chọn vật liệu để thanh toán')\n        // }\n        let check = dataDH.find(f => new Date(f.NgayNhap).getTime() < new Date(BatDau).getTime())\n        if (check) {\n            CHECK_WARNING('Trong đơn hàng có vật liệu thời gian nhỏ hơn ngày bắt đầu dự án')\n        } else {\n            let check = dataDH.find((f, i, data) => data.find(f2 => formatDate(f2.NgayNhap) !== formatDate(f.NgayNhap)))\n            if (check) {\n                CHECK_WARNING('Đơn hàng phải cùng ngày')\n            } else {\n                setIsOpenPopupThanhToan(true);\n                setDataThanhToan(dataDH)\n            }\n        }\n    },\n        [BatDau, dataDH],\n    )\n\n    const resetData = useCallback(\n        () => {\n            setDataDH([]);\n            onResetData(dataDH);\n        },\n        [dataDH, onResetData],\n    )\n\n    const ThanhToan = useMemo(() => <PopupThanhToanAll\n        isOpen={isOpenPopupThanhToan}\n        onClose={() => setIsOpenPopupThanhToan(false)}\n        dataThanhToan={dataThanhToan}\n        IdDuAn={IdDuAn}\n        resetData={() => resetData()}\n        Name={Name}\n    />, [IdDuAn, Name, dataThanhToan, isOpenPopupThanhToan, resetData])\n\n    return (\n        <Fragment>\n            <Card>\n                <CardHeader style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>\n                    <span><b>{dataDH[0]?.Organization?.OrganName ? `Đơn hàng của ${dataDH[0]?.Organization?.OrganName}` : 'ĐƠN HÀNG'}</b></span>\n                    <span><b>Ngày nhập:</b> {dataDH[0]?.NgayNhap ? formatDate(dataDH[0]?.NgayNhap) : ''}</span>\n                </CardHeader>\n                <CardBody>\n                    <Table size=\"sm\" bordered>\n                        <thead>\n                            <tr>\n                                {/* <th>\n                                    <Input\n                                        style={{ position: 'unset', margin: 0 }}\n                                        checked={valueChecked}\n                                        type=\"checkbox\"\n                                        onChange={e => onChangeCheckAll(e.target.checked)}\n                                    />\n                                </th> */}\n                                <th>STT</th>\n                                {/* <th>Ngày nhập</th> */}\n                                {/* <th>Cửa hàng</th> */}\n                                <th>Vật liệu</th>\n                                <th style={{ width: '25%' }}>Số lượng</th>\n                                <th>Đơn giá</th>\n                                <th>Thành tiền</th>\n                                <th></th>\n                            </tr>\n                        </thead>\n                        <tbody>\n                            {\n                                dataDH.length !== 0 ? dataDH.map((item, index) => (\n                                    <tr key={index}>\n                                        {/* <td className=\"check\">\n                                            <Input\n                                                style={{ position: 'unset', margin: 0 }}\n                                                type=\"checkbox\"\n                                                checked={item.checked || false}\n                                                onChange={e => onChangeCheck(e.target.checked, item, index)}\n                                            />\n                                        </td> */}\n                                        <td>{index + 1}</td>\n                                        {/* <td className=\"date\">{formatDate(item.NgayNhap)}</td> */}\n                                        {/* <td className=\"name-cuahang\">{item.Organization.OrganName}</td> */}\n                                        <td className=\"name-vatlieu\">{item.DMVatLieu.Name} ({item.DMVatLieu.DMDonViTinh.Name})</td>\n                                        <td className=\"soLuong\">\n                                            <NumberFormat\n                                                className=\"mb-1\"\n                                                onFocus={e => e.target.select()}\n                                                thousandSeparator={'.'}\n                                                decimalSeparator={','}\n                                                value={item.SoLuong || 0}\n                                                decimalScale={8}\n                                                invalid={item.isDisabledNumber || item.isTonKho}\n                                                onValueChange={(value) => onChangeSoLuong(value.values.floatValue, item, index)}\n                                            />\n                                            <span style={{ fontSize: 9, display: (item.isDisabledNumber || item.isTonKho) ? '' : 'none', color: 'red' }}>\n                                                {item.isTonKho ? `* Số lượng trong kho chỉ còn: ${formatNumber(item.SoLuongTon)}` : '* Vui lòng nhập số lượng'}\n                                            </span>\n                                        </td>\n                                        <td className=\"money\">\n                                            <NumberFormat\n                                                className=\"mb-1\"\n                                                onFocus={e => e.target.select()}\n                                                thousandSeparator={'.'}\n                                                decimalSeparator={','}\n                                                value={item.DonGia || 0}\n                                                invalid={item.isDisabledNumberDG}\n                                                onValueChange={(value) => onChangeDonGia(value.values.floatValue, item, index)}\n                                            />\n                                            <span style={{ fontSize: 9, display: item.isDisabledNumberDG ? '' : 'none', color: 'red' }}>* Vui lòng nhập đơn giá</span>\n                                            {/* {formatCurrency(item.DonGia)} */}\n                                        </td>\n                                        <td className=\"money\">{formatCurrency(item.SoLuong * item.DonGia)}</td>\n                                        <td className=\"action\">\n                                            <Button onClick={() => onDeletedItem(item)} size=\"sm\" color=\"danger\"><FontAwesome fa=\"fas fa-times\" /></Button>\n                                        </td>\n                                    </tr>\n                                )) : <tr>\n                                    <td colSpan=\"9\"><EmptyNoData size=\"sm\" text={'Chưa có dữ liệu. Vui lòng thêm dữ liệu'} /></td>\n                                </tr>\n                            }\n                        </tbody>\n                    </Table>\n                </CardBody>\n                <CardFooter style={{ textAlign: 'right' }}>\n                    <Button className=\"mr-1\" onClick={save} color=\"success\" disabled={check}><FontAwesome fa=\"fas fa-save\" /><span style={{ marginLeft: 5 }}>Tạo đơn hàng</span></Button>\n                </CardFooter>\n            </Card>\n            {ThanhToan}\n        </Fragment>\n    )\n}\n","/* eslint-disable no-unused-vars */\nimport React, { Fragment, useRef } from 'react'\nimport { Col, Row } from 'reactstrap'\nimport CardDanhSachVatLieu from './CardDanhSachVatLieu'\nimport CardDuAnVatLieu from './CardDuAnVatLieu'\nimport './style.scss'\n\nconst IndexCreateDuAnVatLieu = React.forwardRef((props, ref) => {\n    const { IdDuAn, BatDau, Name } = props;\n    const refCardDanhSachVatLieu = useRef();\n    const [dataDonHang, setDataDonHang] = React.useState([]);\n\n    const getDataDonHang = React.useCallback(\n        (data) => {\n            setDataDonHang(data)\n        },\n        [],\n    )\n\n    const onDeleted = React.useCallback(\n        (item) => {\n            let data = dataDonHang.filter(f => f.DMVatLieuId !== item.DMVatLieuId || f.OrganId !== item.OrganId);\n            setDataDonHang([...data])\n            refCardDanhSachVatLieu.current.onDeleted(item);\n        },\n        [dataDonHang],\n    )\n\n    const onResetData = React.useCallback(\n        (dataDH) => {\n            setDataDonHang([]);\n            refCardDanhSachVatLieu.current.onResetData(dataDH);\n        },\n        [],\n    )\n\n    return (\n        <Fragment>\n            <Row className=\"row-DuAnVatLieu\">\n                <Col md=\"5\" className=\"col-CardDanhSachVatLieu\">\n                    <CardDanhSachVatLieu getDataDonHang={getDataDonHang} ref={refCardDanhSachVatLieu} IdDuAn={IdDuAn} />\n                </Col>\n                <Col md=\"7\" className=\"col-CardDuAnVatLieu\">\n                    <CardDuAnVatLieu Name={Name} BatDau={BatDau} onDeleted={onDeleted} dataDonHang={dataDonHang} IdDuAn={IdDuAn} onResetData={onResetData} />\n                </Col>\n            </Row>\n        </Fragment>\n    )\n})\nexport default IndexCreateDuAnVatLieu;\n","import React, { Component } from 'react';\nimport Select from './Select';\nimport { callApi2 } from '../../service/api';\n\nconst styles = {\n    multiValueLabel: styles => ({ ...styles, padding: '0px 0px 0px 6px', fontSize: 13 }),\n    control: styles => ({\n        ...styles,\n        backgroundColor: 'white',\n        height: '28.38px',\n        minHeight: '28.38px',\n        fontSize: '12px',\n        lineHeight: '1.5',\n        cursor: 'pointer',\n        borderRadius: '4px'\n    }),\n    option: (styles) => ({ ...styles, fontSize: '12px', cursor: 'pointer' }),\n    input: styles => ({ ...styles, position: 'unset' }),\n    placeholder: styles => ({ ...styles, marginLeft: 5, marginRight: 5 }),\n    singleValue: (styles, { data }) => ({ ...styles, transform: 'inherit', top: 'unset' }),\n    container: styles => ({ ...styles, width: '100%' }),\n    valueContainer: styles => ({ ...styles, padding: '0px 5px' }),\n    indicatorsContainer: styles => ({ ...styles, padding: '0px 5px' }),\n    indicatorContainer: styles => ({ ...styles, padding: '0px 5px !important', fontSize: '12px' }),\n};\n\nclass DropdownListForm extends Component {\n    constructor(props) {\n        super(props);\n        this.state = {\n            data: [],\n            value: null,\n            selected: null,\n            isLoading: false\n        };\n    }\n\n    componentDidMount() {\n        this.setState({ isLoading: true });\n        let { options, valueField, textField } = this.props;\n\n        if (options) {\n            let data = options.map(x => ({\n                value: x[valueField],\n                label: x[textField],\n                obj: x\n            })\n            );\n            this.setState({ data, isLoading: false });\n            this.setStateSelected(this.state.value);\n        } else {\n            this.loadDataFromApi();\n        }\n    }\n\n    loadDataFromApi = () => {\n        let { columns, odata, url, where, valueField, textField } = this.props;\n        let data = [];\n        let _url = \"\";\n        if (odata !== false) {\n            _url = `${url}`;\n\n            if (where) {\n                _url += `/?$filter=${where}&`;\n            } else {\n                _url += `/?`;\n            }\n\n            if (columns && columns.length > 0) {\n                _url += `$select=${this.props.columns.join()}`;\n            }\n        } else {\n            _url = this.props.url;\n        }\n\n        callApi2(_url, \"GET\", null, odata)\n            .then((res) => {\n                if (odata !== false) {\n                    res.value.forEach(x => {\n                        data.push({\n                            value: x[valueField],\n                            label: x[textField],\n                            obj: x\n                        })\n                    });\n                } else {\n                    data = res;\n                }\n\n                this.setState({ data, isLoading: false });\n                this.setStateSelected(this.state.value);\n            })\n    }\n\n    getSnapshotBeforeUpdate(prevProps, prevState) {\n        if (prevProps.value !== this.props.value) {\n            this.setState({ value: this.props.value });\n            this.setStateSelected(this.props.value);\n            return this.props.value || null;\n        } else\n            return null;\n    }\n\n    setStateSelected(value) {\n        if (this.props.isMulti) {\n            //console.log(\"getOptionsMulti\");\n            this.setState({ selected: this.getOptionsMulti(value) });\n        } else {\n            //console.log(\"getOptionsSingle\");\n            this.setState({ selected: this.getOptionsSingle(value) });\n        }\n    }\n\n    getOptionsSingle(value) {\n        let selected = null;\n        let { data } = this.state;\n        if (data && data.length > 0 && value) {\n            for (let i = 0; i < data.length; i++) {\n                if (data[i].value && data[i].value === value) {\n                    selected = data[i];\n                    break;\n                } else if (data[i].options) {\n                    for (let j = 0; j < data[i].options.length; j++) {\n                        if (data[i].options[j].value && data[i].options[j].value === value) {\n                            selected = data[i].options[j];\n                            break;\n                        }\n                    }\n                }\n            }\n        }\n\n        return selected;\n    }\n\n    getOptionsMulti(value) {\n        let selected = [];\n        let { data } = this.state;\n        if (data && data.length > 0 && value) {\n            for (let i = 0; i < data.length; i++) {\n                let current = data[i];\n                for (let j = 0; j < value.length; j++) {\n                    if (current.value && current.value === value[j]) {\n                        selected.push(current);\n                    }\n                }\n            }\n        }\n\n        return selected;\n    }\n\n    componentDidUpdate(prevProps, prevState, snapshot) {\n        if (this.props.where !== prevProps.where) {\n            this.loadDataFromApi();\n        }\n    }\n\n    onChange = (e, meta) => {\n        this.setState({ selected: e });\n        if (this.props.isMulti) {\n            var list = [];\n            for (let i = 0; i < e.length; i++) {\n                list.push(e[i].value);\n            }\n            this.props.onChange(list, null);\n        } else {\n            this.props.onChange(e ? e.value : null, e ? e.obj : null);\n        }\n    }\n\n    render() {\n        let { placeholder, isMulti, isDetail, value } = this.props;\n        let selected = isMulti ? this.getOptionsMulti(value) : this.getOptionsSingle(value);\n        //isMulti = isMulti && !isDetail;\n        return (\n            this.state.data.length > 0 && isDetail ?\n                <span>{selected && selected.label}</span>\n                :\n                <Select\n                    isMulti={isMulti}\n                    isLoading={this.state.isLoading}\n                    isDisabled={this.props.disabled}\n                    isClearable={true}\n                    className=\"dropdownlist\"\n                    value={selected}\n                    styles={styles}\n                    options={this.state.data}\n                    onChange={this.onChange}\n                    placeholder={placeholder}\n                />\n        )\n    }\n}\n\nexport default DropdownListForm\n","/* eslint-disable no-unused-vars */\nimport React, { useState, useEffect, useMemo, useCallback, useImperativeHandle } from 'react'\nimport { Card, CardBody, CardHeader, Table, Button, Row, Col, Input } from 'reactstrap'\nimport { formatCurrency, formatDate, formatISODate, formatDateNormal, formatNumber } from '../../../../../actions/util';\nimport EmptyNoData from '../../../../../components/Empty/EmptyNoData';\nimport DropdownListForm from '../../../../../components/select/DropdownListForm';\nimport { CuaHangVatLieusEndpoint } from '../../../../../service/GDTCores';\nimport { Skeleton } from '@material-ui/lab';\nimport NumberFormat from '../../../../../components/numberformat/NumberFormat';\nimport { Fragment } from 'react';\nimport { InputDate } from '../../../../../components/base/Input';\nimport { FontAwesome } from '../../../../../components/icon';\nimport DropdownListForm2 from '../../../../../components/select/DropdownListForm2';\nimport { _Enums_DoiTuong } from '../../../../action/defaultEnums'\nimport { CHECK_CONFIRM, CHECK_WARNING } from '../../../../../components/alert/Alert';\nimport { callApiKho } from '../../../../../service/api';\n\nexport const StatusChoose = {\n    Chon: 'Chon',\n    ChonVaThanhToan: 'ChonVaThanhToan'\n}\n\nconst CardDanhSachVatLieu = React.forwardRef((props, ref) => {\n    const { getDataDonHang } = props;\n    const [loading, setLoading] = useState(false);\n    const [date, setDate] = useState(formatDateNormal(new Date()) + 'T00:00:00+07:00');\n    const [dataDonHang, setDataDonHang] = useState([]);\n    const [IdCuaHang, setIdCuaHang] = useState(null);\n    const [dataVatLieuCuaHang, setDataVatLieuCuaHang] = useState([]);\n    const [newDataVatLieuCuaHang, setNewDataVatLieuCuaHang] = useState([]);\n    const [textSearch, setTextSearch] = useState('');\n\n    useImperativeHandle(\n        ref, () => ({\n            onDeleted: (item) => {\n                let data = dataDonHang.filter(f => f.DMVatLieuId !== item.DMVatLieuId || f.OrganId !== item.OrganId);\n                check(item, false);\n                setDataDonHang([...data])\n            },\n            onResetData: (data) => {\n                data.forEach(item => check(item, false))\n                setDataDonHang([])\n            }\n        })\n    );\n\n    const getDataCuaHangVatLieu = useCallback(\n        (IdCuaHang) => {\n            let filter = [];\n            filter.push(`OrganId eq ${IdCuaHang}`);\n            filter.push(`DMVatLieu/Status eq true`);\n            CuaHangVatLieusEndpoint.getCuaHangVatLieuByFilterAndSearch(filter, textSearch)\n                .then(res => {\n                    let arr = [];\n                    res.value.forEach(item => {\n                        let element = { ...item }\n                        let check = dataDonHang.find(f => f.DMVatLieuId === item.DMVatLieuId && f.OrganId === item.OrganId)\n                        if (check) {\n                            element.isDisabledBtn = true;\n                        }\n                        element.isDisabledNumber = true;\n                        element.NgayNhap = formatISODate(new Date());\n                        element.formatNgayNhap = formatDate(new Date())\n                        arr.push(element)\n                    })\n                    setDataVatLieuCuaHang(arr)\n                    setNewDataVatLieuCuaHang(arr)\n                }).then(() => setLoading(false))\n        },\n        [dataDonHang, textSearch],\n    )\n\n    const onChangeSoLuong = useCallback(\n        (value, item, index) => {\n            let itemChange = {\n                ...item,\n                SoLuong: value,\n                isDisabledNumber: value === 0 ? true : false,\n                isTonKho: false\n            }\n            newDataVatLieuCuaHang[index] = itemChange;\n            setNewDataVatLieuCuaHang([...newDataVatLieuCuaHang])\n        },\n        [newDataVatLieuCuaHang],\n    )\n\n    const check = useCallback(\n        async (item, isDisabledBtn) => {\n            let itemChange = dataVatLieuCuaHang.find(f => f.DMVatLieuId === item.DMVatLieuId && f.OrganId === item.OrganId)\n            let index = dataVatLieuCuaHang.findIndex(f => f.DMVatLieuId === item.DMVatLieuId && f.OrganId === item.OrganId);\n            let change = {\n                ...itemChange,\n                SoLuong: 0,\n                isDisabledBtn: isDisabledBtn\n            }\n            dataVatLieuCuaHang[index] = change;\n            setDataVatLieuCuaHang(dataVatLieuCuaHang);\n            setNewDataVatLieuCuaHang(dataVatLieuCuaHang);\n        },\n        [dataVatLieuCuaHang],\n    )\n\n    const handleClick = useCallback(\n        async (item, index) => {\n            let itemChange = {\n                ...item,\n                NgayNhap: formatISODate(new Date()),\n                formatNgayNhap: formatDate(date),\n            }\n            let arr = [...dataDonHang, itemChange];\n            let checkOrganId = dataDonHang.find(find => find.OrganId !== item.OrganId);\n            const isKho = IdCuaHang === '56dfff3b-a1a5-404e-937a-3b4d02ecc1db';\n            if (checkOrganId) {\n                CHECK_CONFIRM(`Đơn hàng hiện tại của cửa hàng ${checkOrganId.Organization.OrganName}. Nếu bạn nhấn đồng ý thì dữ liệu đơn hàng sẽ mất`, \"CẢNH BÁO\").then((res) => {\n                    if (res && res.isConfirmed) {\n                        setDataDonHang([]);\n                        getDataDonHang([]);\n                    }\n                })\n            } else {\n                if (isKho) {\n                    const { SoLuongTon } = await callApiKho(`SanPham/ThongTinSanPham?maSanPham=${item.MaSPTonKho}`, 'POST', null, false);\n                    if (parseFloat(itemChange.SoLuong) <= (SoLuongTon || 0)) {\n                        const index = arr.findIndex(f => f.DMVatLieuId === item.DMVatLieuId)\n                        arr[index].SoLuongTon = SoLuongTon;\n                        setDataDonHang(arr);\n                        getDataDonHang(arr);\n                        check(item, true);\n                    } else {\n                        CHECK_WARNING(`Số lượng tồn của sản phẩm ${item.DMVatLieu.Name}: ${formatNumber(SoLuongTon)}`, `Số lượng tồn trong kho không đủ để cung cấp!`)\n                    }\n                } else {\n                    setDataDonHang(arr);\n                    getDataDonHang(arr);\n                    check(item, true);\n                }\n            }\n            setTextSearch('');\n        },\n        [IdCuaHang, check, dataDonHang, date, getDataDonHang],\n    )\n\n    const handleClickAll = useCallback(async () => {\n        const isKho = newDataVatLieuCuaHang[0].OrganId === '56dfff3b-a1a5-404e-937a-3b4d02ecc1db';\n        let dataSP = newDataVatLieuCuaHang;\n\n        const checkCuaHang = dataDonHang.find(find => newDataVatLieuCuaHang.find(find2 => find2.OrganId !== find.OrganId));\n        if (checkCuaHang) {\n            CHECK_CONFIRM(`Đơn hàng hiện tại của cửa hàng ${checkCuaHang.Organization.OrganName}. Nếu bạn nhấn đồng ý thì dữ liệu đơn hàng sẽ mất`, \"CẢNH BÁO\").then((res) => {\n                if (res && res.isConfirmed) {\n                    setDataDonHang([]);\n                    getDataDonHang([]);\n                }\n            })\n        } else if (isKho) {\n            const dataMaSP = dataSP.filter(f => f.SoLuong).map(item => ({ Text: item.MaSPTonKho }))\n            const dataSPKho = await callApiKho(`SanPham/ThongTinSanPhamTanPhat`, 'POST', JSON.stringify(dataMaSP), false)\n            dataSP.forEach((item, index) => {\n                let check = dataSPKho.find(f => f.MaSanPham === item.MaSPTonKho);\n                if (check) {\n                    if (parseFloat(check.SoLuongTon) >= parseFloat(item.SoLuong)) {\n                        dataSP[index].isTonKho = false;\n                        dataSP[index].SoLuongTon = check.SoLuongTon || 0\n                    }\n                    else {\n                        dataSP[index].isTonKho = true;\n                        dataSP[index].SoLuongTon = check.SoLuongTon || 0\n                    }\n                } else {\n                    dataSP[index].isTonKho = false\n                }\n            });\n            setNewDataVatLieuCuaHang([...dataSP]);\n            const checkSoLuongTon = dataSP.find(f => f.isTonKho);\n            if (checkSoLuongTon) {\n                CHECK_WARNING('Có sản phẩm không đủ số lượng tồn');\n            } else {\n                let arr = dataSP.filter(f => f.SoLuong).map(m => ({ ...m, NgayNhap: date }));\n                if (arr.length > 0) {\n                    arr.forEach(item => check(item, true));\n                    setDataDonHang([...dataDonHang, ...arr]);\n                    getDataDonHang([...dataDonHang, ...arr]);\n                }\n            }\n        } else {\n            let arr = newDataVatLieuCuaHang.filter(f => f.SoLuong).map(m => ({ ...m, NgayNhap: date }));\n            if (arr.length > 0) {\n                arr.forEach(item => check(item, true));\n                setDataDonHang([...dataDonHang, ...arr]);\n                getDataDonHang([...dataDonHang, ...arr]);\n            }\n        }\n    }, [check, dataDonHang, date, getDataDonHang, newDataVatLieuCuaHang])\n\n    const handleChangeCuaHang = useCallback(\n        (value) => {\n            setIdCuaHang(value)\n            setLoading(true);\n            getDataCuaHangVatLieu(value);\n        },\n        [getDataCuaHangVatLieu],\n    )\n\n    const handleChangeVatLieu = useCallback(\n        (event) => {\n            setTextSearch(event.target.value)\n            if (event.key === 'Enter') {\n                getDataCuaHangVatLieu(IdCuaHang);\n            }\n        },\n        [IdCuaHang, getDataCuaHangVatLieu],\n    )\n\n    return (\n        <Fragment>\n            <Card>\n                <CardHeader>\n                    <Row className=\"d-flex align-items-center w-100\">\n                        <Col md=\"3\"><b>Chọn cửa hàng:</b></Col>\n                        <Col md=\"6\">\n                            <DropdownListForm2\n                                url=\"GDTCores/Organizations\"\n                                where={`Status eq true and DoiTuong eq '${_Enums_DoiTuong.CuaHang}'`}\n                                valueField='Id'\n                                textField='OrganName'\n                                placeholder=\"Chọn cửa hàng...\"\n                                value={IdCuaHang}\n                                onChange={(value) => handleChangeCuaHang(value)}\n                            />\n                        </Col>\n                    </Row>\n                </CardHeader>\n                <CardBody>\n                    <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: 5 }}>\n                        <span style={{ display: 'flex', alignItems: 'flex-end', fontSize: 15 }}>Danh sách vật liệu cửa hàng</span>\n                        <InputDate\n                            style={{ height: '2rem', width: '200px' }}\n                            className=\"date-time pay-time text-right\"\n                            value={date}\n                            onChange={date => setDate(date)}\n                        />\n                    </div>\n                    <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: 5 }}>\n                        <Input\n                            style={{ width: 300 }}\n                            placeholder=\"Nhập tên vật liệu...\"\n                            onChange={(event) => handleChangeVatLieu(event)}\n                            onKeyPress={(event) => handleChangeVatLieu(event)}\n                            value={textSearch}\n                        />\n                        <Button color=\"primary\" onClick={() => handleClickAll()}>Chọn tất cả</Button>\n                    </div>\n                    <div className=\"table-DanhSachVatLieu\">\n                        <Table size=\"sm\" bordered>\n                            <thead>\n                                <tr>\n                                    <th>STT</th>\n                                    <th>Vật liệu</th>\n                                    <th>Số lượng</th>\n                                    <th>Đơn giá</th>\n                                    <th>Thao tác</th>\n                                </tr>\n                            </thead>\n                            <tbody>\n                                {\n                                    loading ? Array.from(Array(5).keys()).map((item, index) => (\n                                        <tr key={index}>\n                                            <td colSpan=\"6\"><Skeleton key={index} /></td>\n                                        </tr>\n                                    )) : newDataVatLieuCuaHang.length !== 0 ? newDataVatLieuCuaHang.map((item, index) => (\n                                        <tr key={index}>\n                                            <td className=\"stt\">{index + 1}</td>\n                                            <td className=\"name\">{item.DMVatLieu.Name}</td>\n                                            <td className=\"soLuong\">\n                                                {\n                                                    <Fragment>\n                                                        <NumberFormat\n                                                            disabled={item.isDisabledBtn}\n                                                            className=\"mb-1\"\n                                                            onFocus={e => e.target.select()}\n                                                            thousandSeparator={'.'}\n                                                            decimalSeparator={','}\n                                                            decimalScale={8}\n                                                            value={item.SoLuong || 0}\n                                                            invalid={item.isDisabledBtn ? false : (item.isDisabledNumber || item.isTonKho)}\n                                                            onValueChange={(value) => onChangeSoLuong(value.values.floatValue, item, index)}\n                                                        />\n                                                        {!item.isDisabledBtn && <span style={{ fontSize: 9, display: item.isDisabledNumber || item.isTonKho ? '' : 'none', color: 'red' }}>\n                                                            {item.isTonKho ? `* Số lượng trong kho chỉ còn: ${item.SoLuongTon ? formatNumber(item.SoLuongTon) : 0}` : '* Vui lòng nhập số lượng'}\n                                                        </span>}\n                                                    </Fragment>\n                                                }\n                                            </td>\n                                            <td className=\"dongia\">{formatCurrency(item.DonGia)}</td>\n                                            <td className=\"action\">\n                                                <Button className=\"mr-1\" disabled={item.isDisabledBtn || item.isDisabledNumber} onClick={() => handleClick(item, index)} size=\"sm\" color=\"primary\">Chọn</Button>\n                                            </td>\n                                        </tr>\n                                    )) : <tr>\n                                        <td colSpan=\"6\">\n                                            <EmptyNoData size=\"sm\" text={'Chưa có dữ liệu. Vui lòng chọn vật liệu !'} />\n                                        </td>\n                                    </tr>\n                                }\n                            </tbody>\n                        </Table>\n                    </div>\n                </CardBody>\n            </Card>\n        </Fragment>\n    )\n})\n\nexport default CardDanhSachVatLieu;\n"],"names":["CardDuAnVatLieu","props","_dataDH$","_dataDH$$Organization","_dataDH$2","_dataDH$2$Organizatio","_dataDH$3","_dataDH$4","IdDuAn","dataDonHang","onDeleted","onResetData","BatDau","Name","dataDH","setDataDH","useState","check","setCheck","valueChecked","setValueChecked","isOpenPopupThanhToan","setIsOpenPopupThanhToan","dataThanhToan","setDataThanhToan","useEffect","length","find","f","isDisabledNumber","isDisabledNumberDG","checkTonKho","isTonKho","ConfirmContinue","useCallback","text","Swal","title","icon","showCancelButton","confirmButtonColor","cancelButtonColor","confirmButtonText","cancelButtonText","onDeletedItem","item","then","res","value","data","filter","DMVatLieuId","OrganId","onChangeSoLuong","index","SoLuong","parseFloat","SoLuongTon","onChangeDonGia","DonGia","save","Date","NgayNhap","getTime","CHECK_WARNING","i","f2","formatDate","resetData","ThanhToan","useMemo","_jsx","PopupThanhToanAll","isOpen","onClose","_jsxs","Fragment","children","Card","CardHeader","style","display","alignItems","justifyContent","Organization","OrganName","CardBody","Table","size","bordered","width","map","className","DMVatLieu","DMDonViTinh","NumberFormat","onFocus","e","target","select","thousandSeparator","decimalSeparator","decimalScale","invalid","onValueChange","values","floatValue","fontSize","color","formatNumber","formatCurrency","Button","onClick","FontAwesome","fa","colSpan","EmptyNoData","CardFooter","textAlign","disabled","marginLeft","React","ref","refCardDanhSachVatLieu","useRef","setDataDonHang","getDataDonHang","current","Row","Col","md","CardDanhSachVatLieu","Component","StatusChoose","Chon","ChonVaThanhToan","loading","setLoading","date","setDate","formatDateNormal","IdCuaHang","setIdCuaHang","dataVatLieuCuaHang","setDataVatLieuCuaHang","newDataVatLieuCuaHang","setNewDataVatLieuCuaHang","textSearch","setTextSearch","useImperativeHandle","forEach","getDataCuaHangVatLieu","push","CuaHangVatLieusEndpoint","getCuaHangVatLieuByFilterAndSearch","arr","element","isDisabledBtn","formatISODate","formatNgayNhap","itemChange","async","findIndex","change","handleClick","checkOrganId","isKho","CHECK_CONFIRM","isConfirmed","callApiKho","MaSPTonKho","handleClickAll","dataSP","checkCuaHang","find2","dataMaSP","Text","dataSPKho","JSON","stringify","MaSanPham","m","handleChangeCuaHang","handleChangeVatLieu","event","key","DropdownListForm2","url","where","_Enums_DoiTuong","CuaHang","valueField","textField","placeholder","onChange","marginBottom","InputDate","height","Input","onKeyPress","Array","from","keys","Skeleton"],"sourceRoot":""}