????

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/7203.d9a9dd15.chunk.js.map

{"version":3,"file":"static/js/7203.d9a9dd15.chunk.js","mappings":"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","sources":["views/bao-cao/du-an/TabThongTin/CongNoTongHop/ReportPending.js","service/Report/Report.js","service/Report/NhomDuAnDTOsEndpoint.js","service/Report/ChiTietCongNosEndpoint.js","service/Report/BangKeChiTietVatLieusEndpoint.js","service/Report/RPDuAnsEndpoint.js","components/select/DropdownListForm2.js","components/select/SelectMonth.js","webpack://@qlxd/frontend/./src/views/bao-cao/du-an/TabThongTin/style.scss?c7b9","components/base/Input/Radio.js","components/select/RadioList.js","components/select/CheckboxList.js","components/base/Form/FormControl.js","components/tableOdata/OdataUtils.js","components/select/SelectYear.js","../.yarn/__virtual__/reactstrap-virtual-4c869ece7a/6/root/.yarn/berry/cache/reactstrap-npm-8.10.1-e3a658744a-10c0.zip/node_modules/reactstrap/es/Card.js","components/export/ExcelPlugin/utils/helpers.js","components/export/ExcelExtensions/WorksheetWrapper.js","components/export/ExcelExtensions/ExcelWorkbook.js","components/export/ExcelExtensions/index.js","components/select/SelectAsync.js","views/bao-cao/DefaultRowGroups.js","../../../../../../root/.yarn/berry/cache/date-fns-npm-2.30.0-895c790e0f-10c0.zip/node_modules/date-fns/esm/lightFormat/index.js","../.yarn/__virtual__/reactstrap-virtual-4c869ece7a/6/root/.yarn/berry/cache/reactstrap-npm-8.10.1-e3a658744a-10c0.zip/node_modules/reactstrap/es/Table.js","components/spinners/SpinnerSmall.js","components/select/Select.js","views/bao-cao/du-an/TabThongTin/CongNoTongHop/data.js","views/bao-cao/du-an/TabThongTin/CongNoTongHop/ExportExcel.js","components/select/SelectCustom.js","components/export/ExcelPlugin/utils/constant.js","../.yarn/__virtual__/@material-ui-core-virtual-ac9c9397c3/6/root/.yarn/berry/cache/@material-ui-core-npm-4.11.4-d024c4b650-10c0.zip/node_modules/@material-ui/core/esm/utils/ownerDocument.js","../.yarn/__virtual__/@material-ui-core-virtual-ac9c9397c3/6/root/.yarn/berry/cache/@material-ui-core-npm-4.11.4-d024c4b650-10c0.zip/node_modules/@material-ui/core/esm/utils/createChainedFunction.js","../.yarn/__virtual__/@material-ui-lab-virtual-61a60f9a8e/6/root/.yarn/berry/cache/@material-ui-lab-npm-4.0.0-alpha.58-05f1e9da95-10c0.zip/node_modules/@material-ui/lab/esm/Skeleton/Skeleton.js","views/bao-cao/du-an/TabThongTin/CongNoTongHop/index.js"],"sourcesContent":["import React, { Fragment } from \"react\";\nimport { Skeleton } from \"@material-ui/lab\"\nimport { Typography } from \"@material-ui/core\";\n\nfunction ReportPending({ loading, ...props }) {\n    return (\n        <Fragment>\n            {\n                loading ?\n                    <Fragment md='6'>\n                        {Array.from(Array(5).keys()).map(cur => (\n                            <tr>\n                                {Array.from(Array(5).keys()).map(_ => <td><Typography variant='caption'><Skeleton /></Typography></td>)}\n                            </tr>\n                        ))}\n                    </Fragment> : props.children\n            }\n        </Fragment>\n\n    )\n}\nexport default ReportPending","import { Service } from '../Service';\n// import { PUBLIC_API_URL, ADMIN_API_URL } from '../../actions/constants';\n\nclass Report extends Service {\n    constructor(path) {\n        super('/Reports', path);\n    }\n    // Tìm kiếm\n    // getAll = (param) => this.SearchAll(PUBLIC_API_URL + \"/category\", param, null, true);\n    getAll = (param) => this.SearchAllAUTH(param, null, null, true);\n\n    addWithBatch = (data) => this.InsertBatch(``, data)\n\n    update(ID, body) {\n        return this.edit(ID, body);\n    }\n}\n\nexport { Report };","import { Report } from \"./Report\";\n\nclass NhomDuAnDTOsEndpoint extends Report {\n  constructor() {\n    super(\"/NhomDuAnDTOs\");\n  }\n\n}\n\nexport default new NhomDuAnDTOsEndpoint();","import { Report } from \"./Report\";\n\nclass ChiTietCongNosEndpoint extends Report {\n  constructor() {\n    super(\"/ChiTietCongNos\");\n  }\n  getDataCongNoTongHop = (Nam) => this.GetAuthen('/GetCongNoTongHop?Nam=' + Nam);\n  GetCongNoVatLieuTheoDuAn = (data) => this.PostAuthen('/GetCongNoVatLieuTheoDuAn', data);\n  getDataChiTietCongNoCuaHang = (Nam, Thang, CuaHangId) => this.GetAuthen(`/ChiTietCongNoCuaHang?Nam=${Nam}&Thang=${Thang || 0}&CuaHangId=${CuaHangId}`);\n  getDataCongNoDoiThueNgoai = (DotLuongId) => this.GetAuthen('/CongNoDoiThueNgoai?DotLuongId=' + DotLuongId);\n  getDataTongHopCongNoCuaHang = (Nam) => this.GetAuthen('/TongHopCongNoCuaHang?Nam=' + Nam);\n}\n\nexport default new ChiTietCongNosEndpoint();","import { Report } from \"./Report\";\n\nclass BangKeChiTietVatLieusEndpoint extends Report {\n  constructor() {\n    super(\"/DuAnVatLieus\");\n  }\n  getDataBangKeChiTiet = (body) => this.PostAuthen(`/BangKeChiTietVatLieu`, body)\n}\n\nexport default new BangKeChiTietVatLieusEndpoint();","import { Report } from \"./Report\";\n\nclass RPDuAnsEndpoint extends Report {\n    constructor() {\n        super(\"/DuAns\");\n    }\n\n    getKinhPhiCongTrinh = (duAnId) => this.GetAuthen(`/GetKinhPhiCongTrinh?DuAnId=${duAnId}`)\n\n    getLoiNhuan = (Nam) => this.GetAuthen(`/ChotLaiAsync?key=${Nam}`);\n}\n\nexport default new RPDuAnsEndpoint();","import React, { useCallback, useEffect, useState } 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\nfunction DropdownListForm2({ options, ...props }) {\n    const [data, setData] = useState([]);\n    const [valueSnap, setValueSnap] = useState(null);\n    const [selected, setSelected] = useState(null);\n    const [isLoading, setIsLoading] = useState(false);\n\n    const getOptionsMulti = useCallback((value) => {\n        let selected = [];\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        return selected;\n    }, [data])\n\n    const getOptionsSingle = useCallback((value) => {\n        let selected = null;\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        return selected;\n    }, [data])\n\n    const setStateSelected = useCallback((value) => {\n        if (props.isMulti) {\n            setSelected(getOptionsMulti(value));\n        } else {\n            setSelected(getOptionsSingle(value));\n        }\n    }, [getOptionsMulti, getOptionsSingle, props.isMulti])\n\n    const loadDataFromApi = useCallback(() => {\n        let { columns, odata, url, where, valueField, textField } = props;\n        if (!url) return;\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=${props.columns.join()}`;\n            }\n        } else {\n            _url = 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                setData(data); setIsLoading(false);\n                setStateSelected(valueSnap);\n            })\n            .catch((error) => { })\n    }, [props, setStateSelected, valueSnap])\n\n    // eslint-disable-next-line no-unused-vars\n    const getSnapshotBeforeUpdate = useCallback((prevProps, prevState) => {\n        if (prevProps.value !== props.value) {\n            setValueSnap(props.value)\n            setStateSelected(props.value);\n            return props.value || null;\n        } else\n            return null;\n    }, [props.value, setStateSelected])\n\n    useEffect(() => {\n        setIsLoading(true)\n        let { valueField, textField } = props;\n        if (options) {\n            let data = options.map(x => ({\n                value: x[valueField],\n                label: x[textField],\n                obj: x\n            }));\n            setData(data); setIsLoading(false);\n            setStateSelected(valueSnap);\n        } else {\n            loadDataFromApi();\n            setIsLoading(false);\n        }\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, [])\n\n    // useEffect(() => {\n    //     setIsLoading(true);\n    //     setData(options);\n    //     // if (props.value) {\n    //     //     let isSelected = isMulti ? getOptionsMulti(value) : getOptionsSingle(value);\n    //     //     setSelected(isSelected)\n    //     // }\n    //     setIsLoading(false);\n    // }, [options])\n\n    // useEffect(() => {\n    //     if (props.where) loadDataFromApi();\n    // }, [loadDataFromApi, props.where])\n\n    const onChange = useCallback((e, meta) => {\n        setSelected(e);\n        if (props.isMulti) {\n            var list = [];\n            for (let i = 0; i < e.length; i++) {\n                list.push(e[i].value);\n            }\n            props.onChange(list, null);\n        } else {\n            if (props.getFullValue) {\n                props.onChange(e ? e : null, e ? e.obj : null);\n            } else {\n                props.onChange(e ? e.value : null, e ? e.obj : null);\n            }\n        }\n    }, [props])\n\n    let { placeholder, isMulti, isDetail, value, disabled } = props;\n    let isSelected = isMulti ? getOptionsMulti(value) : getOptionsSingle(value);\n    return (\n        data.length > 0 && isDetail ?\n            <span>{selected && selected.label}</span>\n            :\n            <Select\n                isMulti={isMulti}\n                isLoading={isLoading}\n                isDisabled={disabled}\n                isClearable={true}\n                className=\"dropdownlist\"\n                value={isSelected}\n                styles={styles}\n                options={data}\n                onChange={onChange}\n                placeholder={placeholder}\n            />\n    )\n}\n\nexport default DropdownListForm2\n","import React, { Component } from 'react';\nimport SelectSingle from './SelectSingle';\n\nclass SelectMonth extends Component {\n    render() {\n        const { value, onChange } = this.props;\n        const data = () => {\n            let option = [];\n            for (var i = 1; i <= 12; i++) {\n                option.push({ value: i, label: `Tháng ${i}` })\n            }\n            return option;\n        }\n        // const month = (new Date()).getMonth() + 1;\n        return (\n            <SelectSingle\n                // value={value === null ? month : value}\n                value={value}\n                onChange={onChange}\n                options={data()}\n                valueRef=\"value\"\n                labelRef=\"label\"\n                placeholder=\"Chọn tháng\"\n            />\n        );\n    }\n};\n\nSelectMonth.propTypes = {\n};\n\nSelectMonth.defaultProps = {\n    placeholder: 'Chọn...'\n};\n\nexport default SelectMonth;","// extracted by mini-css-extract-plugin\nexport default {};","import React from 'react';\nimport Input from \"./Input\";\n\nconst Radio = (props) => {\n    const { disabled, name, label, checked, type, children, ...attribute } = props;\n    return (\n        <label className=\"radio\">\n            <Input {...attribute} type=\"radio\" name={name} checked={checked} disabled={disabled}>\n                {children}\n            </Input>\n            <span className={disabled ? \"disabled\" : \"\"}>{label}</span>\n        </label>\n    );\n};\n\nRadio.propTypes = {\n\n};\n\nRadio.defaultProps = {\n\n};\n\nexport default Radio;","import React, { useEffect, useState } from 'react';\nimport { Col, Row } from 'reactstrap';\nimport Radio from '../base/Input/Radio';\n\nfunction RadioList({ value, name, disabled, data, numberCol, onChange }) {\n    const [valueData, setValueData] = useState(null);\n\n    useEffect(() => {\n        setValueData(value)\n    }, [value])\n\n    return (\n        <Row>\n            {\n                data && data.map((item, index) => {\n                    return (\n                        <Col md={numberCol}>\n                            <Radio key={index}\n                                name={name}\n                                disabled={disabled || item.disabled}\n                                value={item.value}\n                                label={item.label}\n                                checked={valueData === item.value && !item.disabled}\n                                onChange={(e) => {\n                                    if (valueData !== e.target.value) {\n                                        setValueData(e.target.value)\n                                        onChange(e.target.value);\n                                    }\n                                }}\n                            />\n                        </Col>\n                    )\n                })\n            }\n\n        </Row>\n\n    )\n}\n\nexport default RadioList\n","import React, { useCallback, useEffect, useState } from 'react';\nimport Checkbox from '../base/Input/InputBoolean';\n\nfunction CheckboxList({ value, name, disabled, data, onChange }) {\n    const [selected, setSelected] = useState([])\n\n    useEffect(() => {\n        setSelected(value);\n    }, [value])\n\n    const handleChange = useCallback((id, value) => {\n        var index = selected.indexOf(id);\n        if (index < 0) {\n            selected.push(id);\n        } else {\n            selected.splice(index, 1);\n        }\n        setSelected(selected)\n        onChange(selected);\n    }, [onChange, selected])\n\n    return (\n        data && data.map((item, index) => {\n            return (\n                <Checkbox key={index}\n                    name={name}\n                    disabled={disabled || item.disabled}\n                    value={item.value}\n                    label={item.label}\n                    checked={selected && selected.indexOf(item.value) >= 0 && !item.disabled}\n                    onChange={(val) => handleChange(item.value, val)}\n                />\n            )\n        })\n    )\n\n}\n\nexport default CheckboxList","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FormGroup, Col } from \"reactstrap\";\nimport Label from '../Label/Label';\nimport Required from '../Label/Required';\nimport InputText from '../Input/InputText';\nimport InputSelect from '../Input/InputSelect';\nimport InputDate from '../Input/InputDate';\nimport TextArea from '../Input/TextArea';\nimport DropdownListForm2 from '../../select/DropdownListForm2';\nimport RadioList from '../../select/RadioList';\nimport CheckboxList from '../../select/CheckboxList';\nimport NumberFormat from \"../../numberformat/NumberFormat\";\nimport { Password, InputBoolean, InputNumber, InputFile } from '../Input';\nimport SelectYear from '../../select/SelectYear';\nimport SelectCustom from '../../select/SelectCustom';\nimport SelectMonth from '../../select/SelectMonth';\nimport { formatDate } from '../../../actions/util';\nimport { DataSelect2, SelectMulti } from '../../select';\nimport SelectAsync from '../../select/SelectAsync';\n\nconst renderControl = (props) => {\n  let { data, onChange, value, isDetail } = props;\n  const setPlaceholder = (name) => `Nhập ${name.toLowerCase()}`;\n  let type = isDetail && data.type !== 'data-select' ? 'label' : data.type;\n  // eslint-disable-next-line default-case\n  switch (type) {\n    case \"label\":\n      return (\n        <span>\n          {data.type === 'datetime' ? formatDate(value) : data.type === 'radio-list' ? value === 2 ? value = 'Thông báo giá' : value = 'Kê khai giá' : value}\n        </span>\n      )\n    case \"textbox\":\n      return (\n        <InputText\n          disabled={data.disabled ? data.disabled : false}\n          name={data.field_name} value={value == null ? \"\" : value}\n          onChange={e => onChange && onChange(e.target.name, e.target.value)}\n          placeholder={setPlaceholder(data.title)}\n        />\n      )\n    case \"password\":\n      return (\n        <Password\n          name={data.field_name} value={value == null ? \"\" : value}\n          onChange={e => onChange && onChange(e.target.name, e.target.value)}\n          placeholder={setPlaceholder(data.title)}\n        />\n      )\n    case \"textarea\":\n      return (\n        <TextArea\n          disabled={data.disabled ? data.disabled : false}\n          name={data.field_name} value={value == null ? \"\" : value}\n          onChange={e => onChange && onChange(e.target.name, e.target.value)}\n          placeholder={setPlaceholder(data.title)}\n          style={data.style}\n        />\n      )\n    case \"checkbox\":\n      return (\n        <InputBoolean\n          disabled={data.disabled ? data.disabled : false}\n          name={data.field_name}\n          checked={value ? value : false}\n          onChange={checked => {\n            onChange && onChange(data.field_name, checked)\n          }}\n          placeholder={setPlaceholder(data.title)}\n        />\n      )\n    case \"datetime\":\n      return (\n        <InputDate\n          isClearable={data.isClearable}\n          placeholder={data.placeholder}\n          style={{ height: '2rem' }}\n          className=\"date-time\"\n          name={data.field_name} value={value}\n          onChange={date => onChange && onChange(data.field_name, date)}\n          placeholderText={setPlaceholder(data.title)}\n        />\n      )\n    case \"data-select\":\n      return (\n        data.dataSelect &&\n        <DropdownListForm2\n          isDetail={isDetail}\n          isMulti={data.dataSelect.isMulti ? data.dataSelect.isMulti : false}\n          disabled={data.disabled ? data.disabled : false}\n          url={data.dataSelect.url}\n          odata={data.dataSelect.odata}\n          where={data.dataSelect.where}\n          group_by={data.dataSelect.group_by}\n          columns={data.dataSelect.columns}\n          valueField={data.dataSelect.value_field}\n          textField={data.dataSelect.text_field}\n          options={data.dataSelect.options}\n          value={value}\n          placeholder={data.placeholder}\n          getFullValue={data.getFullValue}\n          onChange={(selectedItems, info) => {\n            onChange && onChange(data.field_name, selectedItems, info);\n          }} />\n      )\n    case \"numeric\":\n      return (\n        <InputNumber\n          name={data.field_name} value={value}\n          onChange={e => onChange && onChange(e.target.name, e.target.value)}\n          placeholder={setPlaceholder(data.title)}\n        />\n      )\n    case \"currency\":\n      return (\n        <NumberFormat\n          id={`ctl_${data.field_name}`}\n          className=\"number-format\"\n          disabled={data.disabled ? data.disabled : false}\n          value={value}\n          placeholder={\"0\"}\n          thousandSeparator={data.thousandSeparator}\n          decimalSeparator={data.decimalSeparator}\n          decimalScale={data.decimalScale}\n          onValueChange={({ values }) => {\n            onChange && onChange(data.field_name, parseFloat(values.value));\n          }}\n          onFocus={(event) => event.target.select()}\n        />\n      )\n    case \"radio-list\":\n      return (\n        <RadioList\n          name={data.field_name}\n          disabled={data.disabled ? data.disabled : false}\n          data={data.data}\n          value={value}\n          onChange={(val) => onChange && props.onChange(data.field_name, val)} />\n      )\n    case \"checkbox-list\":\n      return (\n        <CheckboxList\n          name={data.field_name}\n          disabled={data.disabled ? data.disabled : false}\n          data={data.data}\n          value={value}\n          onChange={(val) => onChange && props.onChange(data.field_name, val)} />\n      )\n    case \"select-year\":\n      //console.log(value);\n      //var val = value ? value.value : null;\n      return (\n        <SelectYear\n          disabled={data.disabled ? data.disabled : false}\n          value={value}\n          onChange={(selected) => {\n            onChange && props.onChange(data.field_name, selected && selected.value)\n          }}\n          placeholder={setPlaceholder(data.title)}\n        />\n      )\n    case \"select-custom\":\n      return (\n        <SelectCustom\n          value={value}\n          onChange={event => {\n            onChange && props.onChange(data.field_name, event && event.value)\n          }}\n          options={props.data.options}\n        />\n      )\n    case \"select-month\":\n      return (\n        <SelectMonth\n          value={value}\n          onChange={(selected) => {\n            onChange && props.onChange(data.field_name, selected && selected.value)\n          }}\n        />\n      )\n    case \"data-select-odata\":\n      return (\n        <DataSelect2\n          fields={data.fields}\n          originfield={data.originfield}\n          url={data.url}\n          name={data.field_name}\n          column={{ field: data.value_field, label: data.value_label, type: data.value_type }}\n          value={value || null}\n          onChange={e => props.onChange(data.field_name, e && data.getFullValue ? e : e.value)}\n          whereOne={data.where}\n          multiLabel={data.multiLabel}\n          eleUrl={1}\n          placeholder={data.placeholder}\n        />\n      )\n    case \"file\":\n      return (\n        <InputFile\n          name={data.field_name}\n          onChange={file => props.onChange(data.field_name, file, true)}\n          title=\"Chọn tập tin đính kèm trước khi tải lên\"\n          accept=\"application/pdf\"\n          required={data.required} />\n      )\n    case \"async-select\":\n      return (\n        <SelectAsync\n          name={data.field_name}\n          onChange={value => props.onChange(data.field_name, value)}\n          placeholder=\"Chọn khách hàng\"\n          loadData={data.loadOptions}\n          getOptionValue={data.getOptionValue}\n          getOptionLabel={data.getOptionLabel}\n          onAdd={data.onAdd}\n          value={value}\n        />\n      )\n    case \"multi-select\":\n      return (\n        <SelectMulti\n          defaultValue={data.defaultValue || []}\n          options={data.options}\n          column={data.column || { field: 'value', label: 'label', type: 'string' }}\n          onChange={value => props.onChange(data.field_name, value)}\n        />\n      )\n  }\n}\nconst FormControl = props => {\n  const { data, value, onChange, onChangeRender, inline, colLabel, colValue } = props;\n  const setPlaceholder = (name) => `Nhập ${name.toLowerCase()}`;\n  return (\n    data && data.type !== \"hidden\" &&\n    <FormGroup row className={`form-control-${data.field_name}`} >\n      {\n        data.hidden_label !== true &&\n        <Col md={colLabel ? colLabel : inline === false ? \"12\" : \"3\"}>\n          {data.required ? <Required>{data.title}</Required> : <Label>{data.title}</Label>}\n        </Col>\n      }\n      <Col md={colValue ? colValue : inline === false || data.hidden_label === true ? \"12\" : \"9\"}>\n        <div className=\"form-control-value\" style={data.width && { maxWidth: data.width }}>\n          {\n            data.render ?\n              data.render(value, onChangeRender)\n              : data.lookup ?\n                <InputSelect\n                  name={data.field_name} value={value}\n                  onChange={e => onChange && onChange(e.target.name, e.target.value)}\n                  placeholder={setPlaceholder(data.title)}\n                >\n                  {Object.keys(data.lookup).map((key, index) => (\n                    <option key={index} value={key}>{data.lookup[key]}</option>)\n                  )}\n                </InputSelect>\n                : renderControl(props)\n          }\n        </div>\n      </Col>\n    </FormGroup>\n  );\n}\n\nFormControl.propTypes = {\n  data: PropTypes.object.isRequired\n};\n\nFormControl.defaultProps = {\n\n}\n\nexport default FormControl;\n","/* eslint-disable array-callback-return */\nimport { CHECK_WARNING } from \"../alert/Alert\";\n\nexport const delimiter = \".\";\nexport const space = \"/\";\n\nexport const getDataID = (columns) => columns.filter(e => e.dataID)[0];\nexport const getPrimaryKey = (columns) => getDataID(columns).field;\n\nexport const checkDelimiter = (value) => value && value.includes(delimiter);\nexport const checkSpace = (value) => value && value.includes(space);\nexport const convertDelimiter = (value) => value.split(delimiter).join(space);\nexport const checkHasField = (hasField, column) => (hasField ? column.field : column);\n\nexport const getPrimaryURL = (url, columns, data) => {\n  const ID = getDataID(columns);\n  //const dataField = ID.type === 'numeric' ? data[ID.field] : \"'\" + data[ID.field] + \"'\";\n  //return `${url}(${ID.type === 'guid' ? 'guid' : ''}${dataField})`;\n  return `${url}(${data[ID.field]})`;\n}\n\n// CheckData\nexport const handleCheckData = (columns, newData) => {\n  let columnsValue = columns.filter(column => column.dataCheck);\n  for (var i = 0; i < columnsValue.length; i++) {\n    if (checkDelimiter(columnsValue[i].field) && columnsValue[i].dataRef) {\n      if (newData[columnsValue[i].dataRef[0]] === null || newData[columnsValue[i].dataRef[0]] === undefined) {\n        CHECK_WARNING(\"Vui lòng nhập dữ liệu cột \" + columnsValue[i].title);\n        return false;\n      }\n    } else {\n      if (newData[columnsValue[i].field] === undefined || newData[columnsValue[i].field] === null) {\n        CHECK_WARNING(\"Vui lòng nhập dữ liệu cột \" + columnsValue[i].title);\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\n\n\n// EXPAND\nexport const filterExpandURL = (list_join, hasField = true,originfield=false,multiLabel=null) => {\n  let list_join_filter_only = [];\n  let list2_join_filter_only = [];\n  let list_join_filter_only_check = [];\n  let i1 = 0;\n  let index_table = [];\n  let index_real = '';\n  let expand = '';\n\n  list_join.forEach((current, i) => {\n    list_join_filter_only_check.push(current.field);\n  });\n  let arrayOfUniques = [];\n  let index = [];\n  list_join_filter_only_check.forEach((element, i) => {\n    if (!arrayOfUniques.includes(element)) {\n      arrayOfUniques.push(element)\n    } else {\n      index.push(i)\n    }\n  });\n  index.forEach((num) => {\n    list_join.splice(num, 1);\n  })\n  //tạo 1 mãng colunm và 1 mãng field theo column\n  list_join.forEach((current, i) => {\n    let split = '';\n    if(originfield){\n      split = checkHasField(hasField, current)\n      .split(delimiter).reverse().splice(1).reverse().join(',');\n    }else{\n      split = checkHasField(hasField, current)\n      .split(delimiter).reverse().splice(1).reverse().join(space);\n    } \n    let splitField = checkHasField(hasField, current)\n      .split(delimiter).splice(1).reverse().join(space);\n    if (checkSpace(splitField)) {\n      splitField = splitField.split(space)[0];\n    }\n   \n    if (i === 0) {\n      list_join_filter_only.push(split);\n      list2_join_filter_only.push(splitField);\n      index_table[i] = split;\n    } else {\n      if (!list_join_filter_only.some(arr => arr === split)) {\n        list_join_filter_only.push(split);\n        index_table[i] = split;\n        i1 = i;\n        list2_join_filter_only[i1] = splitField;\n      }\n      else {\n        index_table.forEach((current, i2) => {\n          if (current === split) {\n            index_real = i2\n          }\n        })\n        if (list2_join_filter_only[index_real] !== splitField) {\n          list2_join_filter_only[index_real] = list2_join_filter_only[index_real] + ',' + splitField;\n        }\n      }\n    }\n  });\n  //sắp xếp thứ tự cho list2_join_filter_only\n  let list2_join_filter_only_fake = [];\n  list2_join_filter_only.forEach((curr) => {\n    list2_join_filter_only_fake.push(curr);\n  })\n  list2_join_filter_only = list2_join_filter_only_fake;\n  //create query expand and select\n  list_join_filter_only.forEach((curr, i3) => {\n    if (i3 === 0) {\n      if (checkSpace(curr)) {\n        let arr_list = curr.split(space);\n        let arr_list2 = list2_join_filter_only[i3].split(space);\n        let text = '';\n        let text1 = '';\n        let ngoac = '';\n        let ngoac_end = '';\n        arr_list.forEach((element, i4) => {\n          ngoac = (i4 === (arr_list.length - 1)) ? ngoac + ')' : '';\n          ngoac_end = ngoac_end + ')';\n          if (i4 === 0) {\n            text1 = element + '(' + ngoac;\n            text = text1;\n          } else {\n            if (i4 === (arr_list.length - 1)) {\n              text1 = '$expand=' + element + '($select=' + arr_list2[0] + ngoac_end;\n            } else {\n              text1 = '$expand=' + element + '(' + ngoac;\n            }\n            text = text + '' + text1;\n          }\n        });\n        expand = text;\n      } else {\n        if(multiLabel!==null){\n            let stringLabel ='';\n            multiLabel.map((multiLB,i) => {\n              if(checkDelimiter(multiLB.field))\n              {\n                let labelMuti = multiLB.field.split('.');\n                stringLabel += (i===0) ? labelMuti[labelMuti.length-1] : stringLabel+','+labelMuti[labelMuti.length-1];\n              }\n              return\n            })\n            expand = curr + '($select=' + list2_join_filter_only[i3]+','+stringLabel+')';\n        }else{\n          expand = curr + '($select=' + list2_join_filter_only[i3] +')';\n        }\n      }\n    } else {\n      if (checkSpace(curr)) {\n        let arr_list = curr.split(space);\n        let arr_list2 = list2_join_filter_only[i3].split(space);\n        let text = '';\n        let text1 = '';\n        let ngoac = '';\n        let ngoac_end = '';\n        arr_list.forEach((element, i4) => {\n          ngoac = (i4 === (arr_list.length - 1)) ? ngoac + ')' : '';\n          ngoac_end = ngoac_end + ')';\n          if (i4 === 0) {\n            text1 = element + '(' + ngoac;\n            text = text1;\n          } else {\n            if (i4 === (arr_list.length - 1)) {\n              text1 = '$expand=' + element + '($select=' + arr_list2[0] + ngoac_end;\n            } else {\n              text1 = '$expand=' + element + '(' + ngoac;\n            }\n            text = text + '' + text1;\n          }\n        });\n        expand = expand + ',' + text;\n      } else {\n        expand = expand + ',' + curr + '($select=' + list2_join_filter_only[i3] + ')';\n      }\n    }\n  })\n  return expand;\n}\n\n// SELECT\nexport const selectURL = (columns, selectType, hasField = true) => {\n  if (selectType) {\n    if (selectType === 'withColumns') {\n      return `${columns.reduce((accum, current, index, array) => {\n        let field = checkHasField(hasField, current);\n        let key_select = `${accum}`;\n        let arr_key_select = key_select.split(',');\n        let check_point = true;\n        if (checkDelimiter(field)) {\n          let check_connect_multi = field.split('.');\n          if (arr_key_select.indexOf(current.dataRef[0]) === -1) {\n            if (check_connect_multi.length < 3) {\n              key_select += `${current.dataRef === undefined ? '' : (current.dataRef[0] + ',')}`;\n            }\n          }\n        } else {\n          if (arr_key_select.indexOf(field) === -1) {\n            key_select += `${field}`;\n          } else {\n            check_point = false;\n          }\n        }\n        let a = `${key_select}${index === (array.length - 1) ? '' : ((checkDelimiter(field) === true) ? '' : (check_point === true) ? ',' : '')}`;\n        return a;\n      }, ``)}`;\n    }\n  } else {\n    return `${columns.filter(column => checkDelimiter(column.field))\n      .reduce((accum, current) => `${accum},${convertDelimiter(checkHasField(hasField, current))}`, `*`)}`;\n  }\n  return '';\n}\n\nexport const filterTypeField = (type, value) => {\n  if (type === 'string') {\n    return `'${value}'`;\n  }\n  if (type === 'datetime') {\n    return `datetime'${value}'`;\n  }\n  if (type === 'guid') {\n    return `${value}`;\n  }\n  return `${value}`;\n}\n\nexport const filterField = (fieldName, type, value, isSearch = false,where = null,multiLabel=null) => {\n  if (isSearch) {\n    let arr_field = fieldName.split('.')[0].split('/');\n    if (arr_field.length < 3) {\n      if(!checkDelimiter(fieldName)){\n        return where ? `contains(${fieldName},'${value}') ${where}` : `contains(${fieldName},'${value}')`;\n      }else{\n        if(multiLabel){\n          let fieldChange = fieldName.split('.').join('/')\n          let querySeachDF = `contains(${fieldChange},'${value}')` + where;\n          multiLabel.map(x=>{\n            if(x.isSearch){\n              let fieldSeach = x.field.split('.').join('/');\n            querySeachDF += ` or contains(${fieldSeach},'${value}')`+ where\n            }\n            \n          })\n          return querySeachDF;\n        }else{\n          let fieldChange = fieldName.split('.').join('/')\n          return `contains(${fieldChange},'${value}')`;\n        }\n        \n      }\n      \n    }\n  } else {\n    return `${fieldName} eq ${filterTypeField(type, value)}`;\n  }\n\n}\n\n// FILTER\nexport const filterURL = (query, columns,fieldFilter,where) => {\n  if (query.filters && query.filters.length > 0) {\n    const querys = query.filters\n      .filter(filter => filter.column.field && filter.column.type)\n      .map(filter => {\n        let key_filter = ''\n        if(fieldFilter){\n           key_filter = `${checkDelimiter(filter.column.field) ? convertDelimiter(fieldFilter) : filter.column.field}`; \n        }else{\n           key_filter = `${checkDelimiter(filter.column.field) ? filter.column.dataRef[0] : filter.column.field}`;\n        }\n        return filterField(key_filter, filter.column.type, filter.value);\n      });\n    return querys && querys.join(' and ');\n  }\n  if (query.search && query.search.length >= 1) {\n    const querys = columns\n      .filter(column => column.searchable && column.field && column.type)\n      .map(column => {\n        const key_filter = `${checkDelimiter(column.field) ? convertDelimiter(column.field) : column.field}`;\n        if (column.type === 'numeric' && !checkDelimiter(column.field)) {\n          if (!isNaN(Number(query.search))) {\n            return filterField(key_filter, column.type, query.search, false);\n          }\n        } else {\n          return filterField(key_filter, column.type, query.search, true,where ? 'and '+where : column.where);\n        }\n\n      });\n    querys.map((que, ii) => {\n      if (que === undefined) {\n        querys.splice(ii, 1);\n      }\n    });\n    let fakeQuery = querys;\n    fakeQuery.forEach((cur,index)=>{\n      if(typeof cur === \"undefined\"){\n        querys.splice(index,1)\n      }\n    })\n    // querys.splice(querys.indexOf(undefined),1);\n    return querys && querys.join(' or ');\n  }\n  return '';\n}\n\n// Paginate\nexport const generatePaginate = (page, pageSize) => {\n  return `$top=${pageSize}&$skip=${page * pageSize}&$count=true`;\n}\n\n// OrderBy\nexport const generateOrderBy = (field, orderDirection) => {\n  return `&$orderby=${checkDelimiter(field) ? convertDelimiter(field) : field} ${orderDirection}`;\n}\n\n// Expand\nexport const generateExpand = (columns, hasField = true,originfield = false,multiLabel=null) => {\n  let list_join = columns.filter(column => checkDelimiter(checkHasField(hasField, column)));\n  \n  if (list_join.length === 0) {\n    return '';\n  }\n  if(multiLabel!==null){\n    return `&$expand=${filterExpandURL(list_join, hasField,originfield,multiLabel)}`;\n  }else{\n    return `&$expand=${filterExpandURL(list_join, hasField,originfield)}`;\n  }\n  \n}\n\n// Select\nexport const generateSelect = (columns, selectType = 'withColumns', hasField = true,originfield,multiLabel = null) => {\n  const select_value = selectURL(columns, selectType, hasField);\n  if(originfield){\n    return select_value ? `&$select=${select_value}` : '';\n  }else{\n    if(multiLabel!==null){\n      var field_MultiLabel = '';\n      multiLabel.map(cur=>{\n        field_MultiLabel +=`,${cur.field}`\n        return field_MultiLabel\n      })\n      return select_value ? `&$select=${select_value} ${field_MultiLabel}` : '';\n    }else{\n      return select_value ? `&$select=${select_value}` : '';\n    }\n  }\n  \n}\n\n// EXPAND\nexport const generatedExpandSelectURL = (columns, where, hasField = true, selectType = 'withColumns', expect = null, originfield=false, multiLabel=null) => {\n  if (expect !== null) {\n    let a = `${\"&$filter=\" + expect.field + \" ne \" + expect.data}`;\n    let b = `${\" and \" + expect.field + \" ne \" + expect.data}`;\n    // let a = `${\"&$filter=\" + expect.field + \" ne \" + expect.data}`;\n    // let b = `${\" and \" + expect.field + \" ne \" + expect.data}`;\n    return `${generateExpand(columns, hasField)}${generateSelect(columns, selectType, hasField)}${where ? (\"&$filter=\" + where + b) : a}`;\n  } else {\n    if(originfield===false){\n      if(multiLabel!==undefined){\n        return `${generateExpand(columns, hasField)}${generateSelect(columns, selectType, hasField, originfield,multiLabel)}${where ? (\"&$filter=\" + where) : \"\"}`;\n      }else{\n        return `${generateExpand(columns, hasField)}${generateSelect(columns, selectType, hasField, originfield)}${where ? (\"&$filter=\" + where) : \"\"}`;\n      }\n      \n    }else{\n      return `${generateExpand(columns, hasField,originfield,multiLabel)}${where ? (\"&$filter=\" + where) : \"\"}`;\n    }\n    \n  }\n}\n","import React, { Component } from 'react';\nimport SelectSingle from './SelectSingle';\n\n\nconst getData = () => {\n  const year = (new Date()).getFullYear();\n  let option = [];\n  for (var i = year - 3; i <= year + 3; i++) {\n      option.push({ value: i, label: `Năm ${i}` })\n  }\n  return option;\n}\n\nclass SelectYear extends Component {\n    render() {\n        const { value, onChange } = this.props;\n\n        const data = getData();\n        const val = value ? value : '';\n        // var select = data.filter(item => item.value === val)\n        // console.log(select[0])\n        return (\n            <SelectSingle\n                value={val}\n                onChange={onChange}\n                options={data}\n                valueRef=\"value\"\n                labelRef=\"label\"\n                placeholder=\"Chọn năm\"\n            />\n        );\n    }\n};\n\nSelectYear.propTypes = {\n};\n\nSelectYear.defaultProps = {\n    placeholder: 'Chọn...'\n};\n\nexport default SelectYear;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"color\", \"body\", \"inverse\", \"outline\", \"tag\", \"innerRef\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n  tag: tagPropType,\n  inverse: PropTypes.bool,\n  color: PropTypes.string,\n  body: PropTypes.bool,\n  outline: PropTypes.bool,\n  className: PropTypes.string,\n  cssModule: PropTypes.object,\n  innerRef: PropTypes.oneOfType([PropTypes.object, PropTypes.string, PropTypes.func])\n};\nvar defaultProps = {\n  tag: 'div'\n};\n\nvar Card = function Card(props) {\n  var className = props.className,\n      cssModule = props.cssModule,\n      color = props.color,\n      body = props.body,\n      inverse = props.inverse,\n      outline = props.outline,\n      Tag = props.tag,\n      innerRef = props.innerRef,\n      attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n  var classes = mapToCssModules(classNames(className, 'card', inverse ? 'text-white' : false, body ? 'card-body' : false, color ? (outline ? 'border' : 'bg') + \"-\" + color : false), cssModule);\n  return /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n    className: classes,\n    ref: innerRef\n  }));\n};\n\nCard.propTypes = propTypes;\nCard.defaultProps = defaultProps;\nexport default Card;","import { ALPHABET, NUM_LETTERS, MONEY_LETTERS } from './constant';\n/** @requires ./types */\n\n/**\n * Chuyển số thứ tự cột thành chữ trong Excel\n * @param {number} n Số thứ tự cột\n * @returns {string}\n */\nexport function numToStrAddr(n) {\n    if (!n) return '';\n    n--;\n    if (n < ALPHABET.length) return ALPHABET[n];\n    const remain = n % ALPHABET.length;\n    return `${numToStrAddr(Math.floor(n / ALPHABET.length))}${ALPHABET[remain]}`\n}\n\n/**\n * Chuyển địa chỉ về dạng chuẩn\n * @param {ExcelAddress} addr\n * @returns {string}\n */\nexport function convertAddr(addr) {\n    if (typeof addr == \"string\") return addr;\n    if (Array.isArray(addr) && addr.length > 1) {\n        const [t, l, b, r] = addr;\n        if (b && r) return numToStrAddr(l) + t + \":\" + numToStrAddr(b) + r;\n        return numToStrAddr(l) + t;\n    }\n    throw new Error(\"Sai địa chỉ ô Excel\");\n}\n\n/**\n * 1. Hàm đọc số có ba chữ số;\n * @param {number} baso nhóm 3 chữ số\n */\nfunction DocSo3ChuSo(baso) {\n    var tram;\n    var chuc;\n    var donvi;\n    var KetQua = \"\";\n    tram = parseInt(baso / 100);\n    chuc = parseInt((baso % 100) / 10);\n    donvi = baso % 10;\n    if (tram === 0 && chuc === 0 && donvi === 0) return \"\";\n    if (tram !== 0) {\n        KetQua += NUM_LETTERS[tram] + \" trăm \";\n        if ((chuc === 0) && (donvi !== 0)) KetQua += \" linh \";\n    }\n    if ((chuc !== 0) && (chuc !== 1)) {\n        KetQua += NUM_LETTERS[chuc] + \" mươi\";\n        if ((chuc === 0) && (donvi !== 0)) KetQua = KetQua + \" linh \";\n    }\n    if (chuc === 1) KetQua += \" mười \";\n    switch (donvi) {\n        case 1:\n            if ((chuc !== 0) && (chuc !== 1)) {\n                KetQua += \" mốt \";\n            }\n            else {\n                KetQua += NUM_LETTERS[donvi];\n            }\n            break;\n        case 5:\n            if (chuc === 0) {\n                KetQua += NUM_LETTERS[donvi];\n            }\n            else {\n                KetQua += \" lăm \";\n            }\n            break;\n        default:\n            if (donvi !== 0) {\n                KetQua += NUM_LETTERS[donvi];\n            }\n            break;\n    }\n    return KetQua;\n}\n\n/**\n * 2. Hàm đọc số thành chữ (Sử dụng hàm đọc số có ba chữ số)\n * @param {BigInt} SoTien số tiền\n */\nexport function DocTienBangChu(SoTien) {\n    var lan = 0;\n    var i = 0;\n    var so = 0;\n    var KetQua = \"\";\n    var tmp = \"\";\n    var ViTri = [];\n    if (SoTien < 0) return \"Số tiền âm !\";\n    if (SoTien === 0) return \"Không đồng !\";\n    if (SoTien > 0) {\n        so = SoTien;\n    }\n    else {\n        so = -SoTien;\n    }\n    if (SoTien > 8999999999999999) {\n        //SoTien = 0;\n        return \"Số quá lớn!\";\n    }\n    ViTri[5] = Math.floor(so / 1000000000000000);\n    if (isNaN(ViTri[5]))\n        ViTri[5] = \"0\";\n    so = so - parseFloat(ViTri[5].toString()) * 1000000000000000;\n    ViTri[4] = Math.floor(so / 1000000000000);\n    if (isNaN(ViTri[4]))\n        ViTri[4] = \"0\";\n    so = so - parseFloat(ViTri[4].toString()) * 1000000000000;\n    ViTri[3] = Math.floor(so / 1000000000);\n    if (isNaN(ViTri[3]))\n        ViTri[3] = \"0\";\n    so = so - parseFloat(ViTri[3].toString()) * 1000000000;\n    ViTri[2] = parseInt(so / 1000000);\n    if (isNaN(ViTri[2]))\n        ViTri[2] = \"0\";\n    ViTri[1] = parseInt((so % 1000000) / 1000);\n    if (isNaN(ViTri[1]))\n        ViTri[1] = \"0\";\n    ViTri[0] = parseInt(so % 1000);\n    if (isNaN(ViTri[0]))\n        ViTri[0] = \"0\";\n    if (ViTri[5] > 0) {\n        lan = 5;\n    }\n    else if (ViTri[4] > 0) {\n        lan = 4;\n    }\n    else if (ViTri[3] > 0) {\n        lan = 3;\n    }\n    else if (ViTri[2] > 0) {\n        lan = 2;\n    }\n    else if (ViTri[1] > 0) {\n        lan = 1;\n    }\n    else {\n        lan = 0;\n    }\n    for (i = lan; i >= 0; i--) {\n        tmp = DocSo3ChuSo(ViTri[i]);\n        KetQua += tmp;\n        if (ViTri[i] > 0) KetQua += MONEY_LETTERS[i];\n        if ((i > 0) && (tmp.length > 0)) KetQua += ',';\n    }\n    if (KetQua.substring(KetQua.length - 1) === ',') {\n        KetQua = KetQua.substring(0, KetQua.length - 1);\n    }\n    KetQua = KetQua.substring(1, 2).toUpperCase() + KetQua.substring(2);\n    return KetQua.replace(/\\s+/g, \" \").replace(\"mươi một\", \"mươi mốt\").trim();\n}\n","/// <reference path=\"../ExcelPlugin/utils/types.js\"/>\n\nimport lodashMerge from 'lodash.merge';\nimport { convertAddr } from '../ExcelPlugin/utils/helpers';\nimport { DEFAULT_STYLE } from '../ExcelPlugin/utils/constant';\n/** @requires module:src/components/export */\n\nexport default class WorksheetWrapper {\n    /** @type {import('exceljs').Worksheet} */\n    #ws;\n    /** @param {import('exceljs').Worksheet} ws */\n    constructor(ws) {\n        this.#ws = ws;\n        return this;\n    }\n    get worksheet() {\n        return this.#ws;\n    }\n    /**\n     * Chuẩn hóa dữ liệu từng ô\n     * @param {ExcelCell} cell\n     * @returns {import('exceljs').CellValue}\n     */\n    #getCellValue = (cell) => {\n        if (Object.prototype.toString.call(cell) === '[object Object]'\n            && Object.prototype.hasOwnProperty.call(cell, 'value'))\n            return cell.value;\n        return cell || null;\n    }\n    //#region render array row group\n    /**\n     *\n     * @param {[number, number]} address Địa chỉ ô đầu tiên của dòng [dòng, cột]\n     * @param {ExcelRow} row Dữ liệu của dòng\n     */\n    #renderRow = ([r, c = 1], row) => {\n        const { cells, style, height } = row;\n        if (!cells) return;\n        const xr = this.#ws.getRow(r);\n        cells.forEach((ce, i) => {\n            const cell = xr.getCell(c + i);\n            if (cell.isMerged) return;\n            cell.value = this.#getCellValue(ce);\n            cell.style = lodashMerge({}, DEFAULT_STYLE, style, ce?.style);\n            if (ce?.colspan > 1 || ce?.rowspan > 1) {\n                this.#ws.mergeCells(r, c + i, r + (ce?.rowspan - 1 || 0), c + i + (ce?.colspan - 1 || 0));\n            }\n        })\n        if (height) this.#ws.getRow(r).height = height;\n    }\n    /**\n     * @param {ExcelAddress} topLeft\n     * @param {ExcelArrayRowGroupProps} rowsDef\n     * @alias export.renderArrayRowGroup\n     */\n    renderArrayRowGroup(topLeft, { rows, style }) {\n        const { col, row } = this.#ws.getCell(convertAddr(topLeft)).fullAddress;\n        const rowsData = typeof rows === 'function' ? rows() : rows;\n        rowsData.forEach((r, i) => {\n            if (r) this.#renderRow([row + i, col], {\n                r: row + i,\n                c: col,\n                style: lodashMerge({}, style, r.style),\n                cells: r.cells || r,\n                height: r.height\n            })\n        })\n    }\n    //#endregion\n\n    //#region render data row group\n    /**\n     * @template T\n     * @param {ExcelAddress} topLeft\n     * @param {ExcelGroupedData<T>} groupedDataDef\n     * @returns {number} Dòng đầu tiên của nhóm tiếp theo\n     */\n    #renderGroup = (topLeft, { keys, data, columns, style }) => {\n        const key = keys?.shift();\n        const column = columns.find(f => f.key === key);\n        let { col, row } = this.#ws.getCell(convertAddr(topLeft)).fullAddress;\n        if (key && column) {\n            const groupData = Array.from(new Set(data.map((m, i) => typeof column.render !== 'undefined' ? column.render(m, i) : m[key])));\n            for (let g of groupData) {\n                const gCell = this.#ws.getCell(row, +col, row, +col + columns.filter(f => !f.group).length);\n                gCell.value = g || null;\n                gCell.style = lodashMerge({}, DEFAULT_STYLE, style, { font: { bold: true } });\n                this.#ws.mergeCells(gCell.address);\n                row = this.#renderGroup([+row + 1, +col], {\n                    keys, columns,\n                    data: data.filter(f => f[key] === g)\n                });\n            }\n        } else {\n            columns.filter(f => !f.group).forEach((c, i) => {\n                data = typeof data === 'function' ? data() : data;\n                data.forEach((d, j) => {\n                    const cell = typeof c.render !== 'undefined' ? c.render(d, j) : d[c.key];\n                    this.#ws.getCell(+row + j, +col + i).value = this.#getCellValue(cell);\n                    this.#ws.getCell(+row + j, +col + i).style = lodashMerge({}, DEFAULT_STYLE, style, c?.style, cell?.style);\n                })\n                this.#ws.getColumn(+col + i).width = typeof c.width === 'number' ? c.width : 10;\n            })\n            row += data.length;\n        }\n        return row;\n    }\n    /**\n     * @template T\n     * @param {ExcelAddress} topLeft\n     * @param {ExcelDataRowGroupProps<T>} dataGroupDef\n     */\n    renderDataRowGroup(topLeft, { columns, data, header, totalRow, rowNum, headerStyle, cellStyle, onEndRow }) {\n        const { col, row } = this.#ws.getCell(convertAddr(topLeft)).fullAddress;\n        columns = typeof columns === 'function' ? columns() : columns;\n        if (rowNum) columns.unshift({\n            name: 'STT',\n            render: (_, idx) => idx + 1,\n            colStyle: { alignment: { horizontal: 'center' } },\n            width: 5\n        })\n        if (!header) {\n            header = [{\n                cells: columns.filter(f => !f.group).map(m => ({ value: m.name, style: lodashMerge({}, m.cellStyle) })),\n                style: headerStyle\n            }]\n        }\n        this.renderArrayRowGroup(topLeft, { rows: header, style: headerStyle });\n        const groupedCols = columns.filter(f => f.group).sort((a, b) => (+a.group) - (+b.group)).map(m => m.key);\n        const endRow = this.#renderGroup([+row + header.length, +col], { keys: groupedCols, data, columns, style: cellStyle })\n        onEndRow && onEndRow(endRow - 1);\n    }\n    //#endregion\n}","import { Workbook } from 'exceljs';\nimport { saveAs } from \"../../../actions/file-saver\";\nimport WorksheetWrapper from './WorksheetWrapper';\n\nexport default class ExcelWorkbook extends Workbook {\n    static create() {\n        // Tạo workbook\n        const wb = new Workbook();\n        wb.creator = 'GDT QLCB';\n        wb.lastModifiedBy = 'GDT QLCB';\n        wb.created = new Date();\n        wb.modified = new Date();\n        wb.lastPrinted = new Date();\n        return wb;\n    }\n\n    /**\n     * Tải về file excel\n     * @param {string} filename\n     */\n    async download(filename) {\n        const wbBuffer = await this.xlsx.writeBuffer();\n        saveAs(new Blob([wbBuffer], { type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\" }), filename)\n    }\n    /**\n     * @param {string} [name]\n     * @param {Partial<import('exceljs').AddWorksheetOptions>} [option]\n     */\n    addWorksheet(name = \"Sheet1\", option) {\n        return new WorksheetWrapper(super.addWorksheet(name, option));\n    }\n    /** @param {string | number} indexOrName */\n    getWorksheet(indexOrName) {\n        return new WorksheetWrapper(super.getWorksheet(indexOrName));\n    }\n}","import ExcelWorkbook from './ExcelWorkbook';\nexport default ExcelWorkbook;","import { FormGroup } from '@material-ui/core';\nimport React, { memo, forwardRef, useCallback, useState, useEffect } from 'react';\nimport AsyncSelect from \"react-select/async/dist/react-select.esm\";\nimport { Col, Row } from 'reactstrap';\nimport { ButtonAdd } from '../base/Button';\n\nconst selectProps = {\n    noOptionsMessage: () => \"Không có lựa chọn\",\n    placeholder: \"Nhấp để chọn\",\n    loadingMessage: () => \"Đang tìm kiếm\"\n}\nconst Index = forwardRef(({ onChange, loadData, id, name, placeholder, getOptionLabel, getOptionValue, onAdd, value, ...props }, ref) => {\n    const [selected, setSelected] = useState(null);\n    if (placeholder) selectProps['placeholder'] = placeholder;\n    const promiseOptions = useCallback(inputValue =>\n        new Promise(resolve => {\n            setTimeout(() => {\n                resolve(loadData(inputValue));\n            }, 1000);\n        }), [loadData])\n    useEffect(() => {\n        value && setSelected(value);\n    }, [value])\n    // eslint-disable-next-line no-unused-vars\n    const getDefaultValue = useCallback(async (value) => {\n        const options = await promiseOptions();\n        const [op] = options.filter(option => option[getOptionValue || 'value'] === value)\n        return op ? op : null\n    }, [getOptionValue, promiseOptions])\n    const hanldeChange = useCallback((e) => { onChange(e) }, [onChange])\n    return (\n        <FormGroup>\n            <Row className={onAdd && \"d-flex justify-content-between\"} >\n                <Col className=\"pr-0\">\n                    <AsyncSelect\n                        defaultOptions\n                        value={selected}\n                        name={name}\n                        isClearable\n                        onChange={hanldeChange}\n                        getOptionValue={option => option}\n                        inputId={name}\n                        id={id}\n                        instanceId={name}\n                        loadOptions={promiseOptions}\n                        {...selectProps} />\n                </Col>\n                {onAdd && <Col md='1' className=\"pl-0\"><ButtonAdd className=\"h-100\" onClick={onAdd}></ButtonAdd></Col>}\n            </Row>\n        </FormGroup>\n\n    )\n})\nexport default memo(Index)","/** @requires ../../components/export/ExcelPlugin/utils/types */\n\n/**\n * Dữ liệu mặc định cho nhóm dòng thông tin đơn vị\n * @param {number} colspan Tổng số dòng thông tin đơn vị\n * @returns {ExcelArrayRowGroupProps}\n */\nexport function ExportDonVi(colspan = 3) {\n    return {\n        style: { alignment: { horizontal: 'center' } },\n        rows: [\n            [{ value: 'TỈNH ỦY BÌNH ĐỊNH', colspan }],\n            [{ value: 'TRƯỜNG CHÍNH TRỊ', colspan, style: { font: { bold: true } } }],\n        ]\n    }\n}\n/**\n * Dữ liệu mặc định cho nhóm dòng quốc hiệu\n * @param {number} colspan Tổng số dòng dành cho quốc hiệu\n * @returns {ExcelArrayRowGroupProps}\n */\nexport function ExportQuocHieu(colspan = 3) {\n    return {\n        style: { alignment: { horizontal: 'center' } },\n        rows: [\n            [{ value: 'CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM', colspan, style: { font: { bold: true } } }],\n            [{ value: 'Độc lập - Tự do - Hạnh phúc', colspan, style: { font: { bold: true } } }],\n            [{ value: '-----***-----', colspan }],\n        ]\n    }\n}\n/**\n * Dữ liệu mặc định cho thông tin Đảng Cộng sản\n * @param {number} colspan Tổng số dòng thông tin đơn vị\n * @returns {ExcelArrayRowGroupProps}\n */\nexport function ExportParty(colspan = 3) {\n    return {\n        style: {\n            alignment: { horizontal: 'center' },\n            font: { bold: true, underline: 'single' }\n        },\n        rows: [\n            [{ value: 'ĐẢNG CỘNG SẢN VIỆT NAM', colspan }]\n        ]\n    }\n}\n/**\n * Lấy dữ liệu nhóm dòng tiêu đề nội dung báo cáo\n * @param {number} colspan Tổng số dòng dành cho tiêu đề\n * @returns {ExcelArrayRowGroupProps}\n */\nexport function ExportInfo(colspan, title, subTitle) {\n    if (!colspan) throw new Error(\"Tổng số cột cần merge cell phải lớn hơn 0\");\n    return {\n        style: { alignment: { horizontal: 'center' } },\n        rows: [\n            [{ value: title, colspan, style: { font: { bold: true } } }],\n            [{ value: subTitle, colspan, style: { font: { italic: true } } }],\n        ]\n    }\n}","import toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/lightFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name lightFormat\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. Unlike `format`,\n * `lightFormat` doesn't use locales and outputs date using the most popular tokens.\n *\n * > ⚠️ Please note that the `lightFormat` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   |\n * |---------------------------------|---------|-----------------------------------|\n * | AM, PM                          | a..aaa  | AM, PM                            |\n * |                                 | aaaa    | a.m., p.m.                        |\n * |                                 | aaaaa   | a, p                              |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 |\n * |                                 | yy      | 44, 01, 00, 17                    |\n * |                                 | yyy     | 044, 001, 000, 017                |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |\n * |                                 | MM      | 01, 02, ..., 12                   |\n * | Day of month                    | d       | 1, 2, ..., 31                     |\n * |                                 | dd      | 01, 02, ..., 31                   |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |\n * |                                 | hh      | 01, 02, ..., 11, 12               |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |\n * |                                 | HH      | 00, 01, 02, ..., 23               |\n * | Minute                          | m       | 0, 1, ..., 59                     |\n * |                                 | mm      | 00, 01, ..., 59                   |\n * | Second                          | s       | 0, 1, ..., 59                     |\n * |                                 | ss      | 00, 01, ..., 59                   |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |\n * |                                 | SS      | 00, 01, ..., 99                   |\n * |                                 | SSS     | 000, 001, ..., 999                |\n * |                                 | SSSS    | ...                               |\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * const result = lightFormat(new Date(2014, 1, 11), 'yyyy-MM-dd')\n * //=> '2014-02-11'\n */\n\nexport default function lightFormat(dirtyDate, formatStr) {\n  requiredArgs(2, arguments);\n  var originalDate = toDate(dirtyDate);\n  if (!isValid(originalDate)) {\n    throw new RangeError('Invalid time value');\n  }\n\n  // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n  var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n  var utcDate = subMilliseconds(originalDate, timezoneOffset);\n  var tokens = formatStr.match(formattingTokensRegExp);\n\n  // The only case when formattingTokensRegExp doesn't match the string is when it's empty\n  if (!tokens) return '';\n  var result = tokens.map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n    var firstCharacter = substring[0];\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n    var formatter = formatters[firstCharacter];\n    if (formatter) {\n      return formatter(utcDate, substring);\n    }\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n    return substring;\n  }).join('');\n  return result;\n}\nfunction cleanEscapedString(input) {\n  var matches = input.match(escapedStringRegExp);\n  if (!matches) {\n    return input;\n  }\n  return matches[1].replace(doubleQuoteRegExp, \"'\");\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"className\", \"cssModule\", \"size\", \"bordered\", \"borderless\", \"striped\", \"dark\", \"hover\", \"responsive\", \"tag\", \"responsiveTag\", \"innerRef\"];\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n  className: PropTypes.string,\n  cssModule: PropTypes.object,\n  size: PropTypes.string,\n  bordered: PropTypes.bool,\n  borderless: PropTypes.bool,\n  striped: PropTypes.bool,\n  dark: PropTypes.bool,\n  hover: PropTypes.bool,\n  responsive: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n  tag: tagPropType,\n  responsiveTag: tagPropType,\n  innerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.object])\n};\nvar defaultProps = {\n  tag: 'table',\n  responsiveTag: 'div'\n};\n\nvar Table = function Table(props) {\n  var className = props.className,\n      cssModule = props.cssModule,\n      size = props.size,\n      bordered = props.bordered,\n      borderless = props.borderless,\n      striped = props.striped,\n      dark = props.dark,\n      hover = props.hover,\n      responsive = props.responsive,\n      Tag = props.tag,\n      ResponsiveTag = props.responsiveTag,\n      innerRef = props.innerRef,\n      attributes = _objectWithoutPropertiesLoose(props, _excluded);\n\n  var classes = mapToCssModules(classNames(className, 'table', size ? 'table-' + size : false, bordered ? 'table-bordered' : false, borderless ? 'table-borderless' : false, striped ? 'table-striped' : false, dark ? 'table-dark' : false, hover ? 'table-hover' : false), cssModule);\n  var table = /*#__PURE__*/React.createElement(Tag, _extends({}, attributes, {\n    ref: innerRef,\n    className: classes\n  }));\n\n  if (responsive) {\n    var responsiveClassName = mapToCssModules(responsive === true ? 'table-responsive' : \"table-responsive-\" + responsive, cssModule);\n    return /*#__PURE__*/React.createElement(ResponsiveTag, {\n      className: responsiveClassName\n    }, table);\n  }\n\n  return table;\n};\n\nTable.propTypes = propTypes;\nTable.defaultProps = defaultProps;\nexport default Table;","import React from 'react';\n\nconst SpinnerSmall = props => (\n    <div className=\"spinner-border-sm spinner-border text-danger\" />\n)\n\nexport default SpinnerSmall;","import React, { Component, Fragment } from \"react\";\nimport ReactSelect, { components } from \"react-select\";\n// import makeAnimated from 'react-select/animated';\nimport FontAwesome from \"../icon/FontAwesome\";\nimport SpinnerSmall from \"../spinners/SpinnerSmall\";\nimport PropTypes from 'prop-types';\n\nconst colourStyles = {\n  multiValueLabel: styles => ({\n    ...styles,\n    padding: \"0px 0px 0px 6px\",\n    fontSize: 13\n  }),\n  menuPortal: base => ({ ...base, zIndex: 9999 }),\n  control: styles => ({\n    ...styles,\n    backgroundColor: \"white\",\n    minHeight: \"38px\",\n    // height: 'calc(1.5em + 0.5rem + 2px)',\n    fontSize: \"0.76563rem\",\n    lineHeight: \"1.5\",\n    cursor: \"pointer\",\n    borderRadius: \"0.2rem\"\n  }),\n  menu: styles => ({ ...styles, zIndex: 2300 }),\n  option: styles => ({ ...styles, fontSize: \"0.76563rem\", cursor: \"pointer\" }),\n  input: styles => ({ ...styles, position: \"unset\" }),\n  placeholder: styles => ({ ...styles, marginLeft: 5, marginRight: 5 }),\n  singleValue: (styles, { data }) => ({\n    ...styles,\n    marginTop: 1,\n    transform: \"inherit\",\n    top: \"unset\"\n  }),\n  container: styles => ({ ...styles, width: \"100%\" }),\n  valueContainer: styles => ({ ...styles, padding: \"2px 8px\" })\n};\n\nconst LoadingIndicator = props => {\n  return <SpinnerSmall {...props} />;\n};\n\nconst IndicatorsContainer = props => (\n  <components.IndicatorsContainer\n    {...props}\n    getStyles={() => ({ display: \"flex\", height: \"100%\" })}\n  />\n);\n\nconst ClearIndicator = props => {\n  const {\n    innerProps: { ref, ...restInnerProps }\n  } = props;\n  return (\n    <div\n      {...restInnerProps}\n      ref={ref}\n      style={{\n        color: \"rgb(204, 204, 204)\",\n        transition: \"color 150ms ease 0s\",\n        boxSizing: \"border-box\"\n      }}\n    >\n      <FontAwesome\n        fa=\"times\"\n        style={{\n          marginTop: 2,\n          padding: \"5px 5px 5px 5px\",\n          verticalAlign: \"bottom\"\n        }}\n      />\n    </div>\n  );\n};\n\nconst IndicatorSeparator = ({ innerProps }) => (\n  <span\n    {...innerProps}\n    style={{\n      alignSelf: \"stretch\",\n      width: 1,\n      backgroundColor: \"rgb(204, 204, 204)\",\n      marginTop: 2,\n      marginBottom: 2,\n      marginRight: 5,\n      marginLeft: 5\n    }}\n  />\n);\n\nconst DropdownIndicator = props => (\n  <components.DropdownIndicator\n    {...props}\n    getStyles={() => ({ color: \"hsl(0,0%,80%)\" })}\n  >\n    <FontAwesome\n      fa=\"angle-down\"\n      style={{ marginTop: 2, padding: \"5px 9px 5px 5px\" }}\n    />\n  </components.DropdownIndicator>\n);\n\nconst MenuList = props => {\n  return (\n    <components.MenuList\n      {...props}\n      getStyles={() => ({ maxHeight: 300, zIndex: 1021, overflowY: \"auto\" })}\n    >\n      {props.children}\n    </components.MenuList>\n  );\n};\n\nclass Select extends Component {\n  constructor(props) {\n    super(props);\n    this.state = { valueRequire: null };\n    this.RefReactSelect = React.createRef();\n  }\n  render() {\n    const {\n      placeholder,\n      noOptionsMessage,\n      loadingMessage,\n      required,\n      isDisabled,\n      menuPlacement,\n      ...attribute\n    } = this.props;\n    const { valueRequire } = this.state;\n    return (\n      <Fragment>\n        <ReactSelect\n          {...attribute}\n          ref={this.RefReactSelect}\n          classNamePrefix=\"select\"\n          styles={colourStyles}\n          placeholder={placeholder}\n          noOptionsMessage={noOptionsMessage}\n          loadingMessage={loadingMessage}\n          isDisabled={isDisabled}\n          components={{\n            IndicatorsContainer,\n            ClearIndicator,\n            IndicatorSeparator,\n            DropdownIndicator,\n            LoadingIndicator,\n            MenuList\n          }}\n          onChange={(option) => {\n            this.props.onChange(option)\n            this.setState({ valueRequire: option ? option.name : null })\n          }}\n          menuPortalTarget={document.body}\n          menuPosition='absolute'\n          // menuShouldScrollIntoView={true}\n          menuPlacement={menuPlacement ? menuPlacement : 'auto'}\n        />\n        <input\n          readOnly\n          name='requireInput'\n          type='text'\n          tabIndex={1}\n          autoComplete=\"off\"\n          style={{\n            opacity: 0,\n            height: 0,\n            position: \"absolute\"\n          }}\n          value={valueRequire || ''}\n          onFocus={() => {\n            this.RefReactSelect.current && this.RefReactSelect.current.focus()\n          }}\n        />\n      </Fragment>\n    );\n  }\n}\n\nSelect.propTypes = {\n  isDisabled: PropTypes.bool.isRequired\n};\n\nSelect.defaultProps = {\n  placeholder: \"Chọn...\",\n  isDisabled: false,\n  noOptionsMessage: () => \"Không có lựa chọn\",\n  loadingMessage: () => \"Đang tải\"\n};\n\nexport default Select;\n","// eslint-disable-next-line no-unused-vars\nimport { OrganizationsEndpoint } from \"../../../../../service/GDTCores\"\n\n\nexport const dataCongNo = {\n    \"ResultObj\": [\n        {\n            \"NhomDuAnId\": \"9bb3c8e4-fb3c-4722-86f4-24b01fab8e4c\",\n            \"ListNhomKhoanThu\": [\n                {\n                    \"KhoanThuId\": \"7b31426f-6341-4807-82f5-16ec02d80f5d\",\n                    \"ListDuAn\": [\n                        {\n                            \"Name\": \"Anh Quang-Trần Văn Ơn\",\n                            \"GiaTriHD\": 100000000,\n                            \"GiaTriTC\": 50000000,\n                            \"SoTienConLai\": 500000000,\n                            \"listThanhToan\": [\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 1,\n                                    \"SoTien\": 0\n                                },\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 2,\n                                    \"SoTien\": 0\n                                },\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 3,\n                                    \"SoTien\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"Name\": \"Nhà anh Vũ - Chung cư TMS\",\n                            \"GiaTriHD\": 100000000,\n                            \"GiaTriTC\": 50000000,\n                            \"SoTienConLai\": 500000000,\n                            \"listThanhToan\": [\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 1,\n                                    \"SoTien\": 0\n                                },\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 2,\n                                    \"SoTien\": 0\n                                },\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 3,\n                                    \"SoTien\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"Name\": \"Nhà anh An - Diêu trì\",\n                            \"GiaTriHD\": 100000000,\n                            \"GiaTriTC\": 50000000,\n                            \"SoTienConLai\": 500000000,\n                            \"listThanhToan\": [\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 1,\n                                    \"SoTien\": 0\n                                },\n                            ]\n                        },\n                        {\n                            \"Name\": \"Nhà anh Tuân - An Phú\",\n                            \"GiaTriHD\": 100000000,\n                            \"GiaTriTC\": 50000000,\n                            \"SoTienConLai\": 500000000,\n                            \"listThanhToan\": [\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 1,\n                                    \"SoTien\": 0\n                                },\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 2,\n                                    \"SoTien\": 0\n                                },\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 3,\n                                    \"SoTien\": 0\n                                }\n                            ]\n                        }\n                    ],\n                    \"TongCong\": 0\n                },\n                {\n                    \"KhoanThuId\": \"bc1e1498-e54a-479b-bc43-42ea27d46444\",\n                    \"ListDuAn\": [\n                        {\n                            \"Name\": \"Nhà chị Dung- Chung cư TMS\",\n                            \"GiaTriHD\": 100000000,\n                            \"GiaTriTC\": 50000000,\n                            \"SoTienConLai\": 500000000,\n                            \"listThanhToan\": [\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 1,\n                                    \"SoTien\": 0\n                                },\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 3,\n                                    \"SoTien\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"Name\": \"Nhà anh Khá-Hoàng Văn Thụ\",\n                            \"GiaTriHD\": 100000000,\n                            \"GiaTriTC\": 50000000,\n                            \"SoTienConLai\": 500000000,\n                            \"listThanhToan\": [\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 1,\n                                    \"SoTien\": 0\n                                },\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 2,\n                                    \"SoTien\": 0\n                                },\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 3,\n                                    \"SoTien\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"Name\": \"Nội thất-Anh Kha -An Phú Thịnh\",\n                            \"GiaTriHD\": 100000000,\n                            \"GiaTriTC\": 50000000,\n                            \"SoTienConLai\": 500000000,\n                            \"listThanhToan\": [\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 1,\n                                    \"SoTien\": 0\n                                },\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 2,\n                                    \"SoTien\": 0\n                                },\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 3,\n                                    \"SoTien\": 0\n                                }\n                            ]\n                        }\n                    ],\n                    \"TongCong\": 0\n                },\n                {\n                    \"KhoanThuId\": \"8ddd85a6-61fd-4815-874a-cf4c705dec42\",\n                    \"ListDuAn\": [\n                        {\n                            \"Name\": \"Lắp bồn Inox - KS Xuân Diệu\",\n                            \"GiaTriHD\": 100000000,\n                            \"GiaTriTC\": 50000000,\n                            \"SoTienConLai\": 500000000,\n                            \"listThanhToan\": [\n                                {\n                                    \"Id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n                                    \"DotThanhToan\": 1,\n                                    \"SoTien\": 0\n                                }\n                            ]\n                        }\n                    ],\n                    \"TongCong\": 0\n                }\n            ]\n        }\n    ]\n}\n\n\n\nexport const formCondition = {\n    Nam: {\n        field_name: 'Nam',\n        title: 'Năm',\n        type: 'select-year',\n        required: true,\n        hidden_label: true,\n        placeholder: 'Thời gian kết thúc'\n    }\n}","/// <reference path=\"../../../../../components/export/ExcelPlugin/utils/types.js\" />\n/** @requires module:src/components/export */\nimport { HEADER_STYLE, CELL_STYLE } from '../../../../../components/export/ExcelPlugin/utils/constant';\nimport ExcelWorkbook from '../../../../../components/export/ExcelExtensions';\nimport { ExportQuocHieu } from '../../../DefaultRowGroups';\nimport lightFormat from 'date-fns/lightFormat';\n// eslint-disable-next-line no-unused-vars\nimport { formatNumber } from '../../../../../actions/util';\nimport { SumGroup } from './index'\n\n/**\n * Export Công nợ\n * @param {ExportCongNoModel} data\n * @param {string} filename\n */\nconst INITIAL_COLOR_GROUP = { '1': '00FF7300', '2': '00e4ebcc', '3': '00FFFFFF' }\nexport default async function ExportCongNoThu({ Nam, MaxDot, data, listNhom }, filename) {\n    const { NhomKhoanThu, NhomDuAn } = listNhom;\n    const wb = new ExcelWorkbook();\n    const totalCol = 6 + MaxDot;\n    const arrayDot = Array.from(Array(MaxDot).keys()).map(m => m);\n    // Tạo worksheet công nợ\n    const ws = wb.addWorksheet(`Công nợ thu năm ${Nam}`);\n    ws.worksheet.getColumn(2).width = 30;\n    ws.worksheet.getColumn(3).width = 20;\n    ws.worksheet.getColumn(4).width = 20;\n    ws.worksheet.getColumn(5).width = 20;\n    ws.worksheet.getColumn(6).width = 20;\n    arrayDot.sort().forEach(cur => ws.worksheet.getColumn(cur + 7).width = 20)\n    ws.worksheet.getColumn(totalCol).width = 20;\n    ws.worksheet.getColumn(totalCol + 1).width = 20;\n\n    // Render thông tin chung\n    // ws.renderArrayRowGroup([1, 1], ExportDonVi(2));\n    ws.renderArrayRowGroup([1, 3], ExportQuocHieu(totalCol - 2));\n    ws.renderArrayRowGroup([4, 1], {\n        style: {\n            font: { bold: true },\n            alignment: { horizontal: 'center' }\n        },\n        rows: [\n            [{ value: `BẢNG CÔNG NỢ TỔNG HỢP - ${Nam} `.toUpperCase(), colspan: totalCol }],\n        ]\n    });\n    ws.renderArrayRowGroup([5, totalCol - 4], {\n        style: {\n            font: { italic: true },\n            alignment: { horizontal: 'center' }\n        },\n        rows: [\n            [{ colspan: 5, value: `Bình Định, ${lightFormat(new Date(), `'ngày 'dd' tháng 'MM' năm 'yyyy`)}` }]\n        ]\n    })\n\n    // Render chi tiết\n    ws.renderArrayRowGroup([6, 1], TableHeader({ MaxDot }));\n    const tableData = TableContentGroup(data, NhomKhoanThu, NhomDuAn, arrayDot);\n    // const tableData = data.map(m => TableDetailGroup(m, arrayDots)).flat();\n    ws.renderArrayRowGroup([7, 1], { style: CELL_STYLE, rows: tableData })\n    wb.download(filename)\n}\n\n//#region Các hàm hỗ trợ xuất bảng tổng hợp công nợ\n\n/**\n * Render header của bảng export công nợ\n * @param {Omit<ExportKhenThuongModel, 'data'>} param\n * @returns {ExcelArrayRowGroupProps}\n */\nfunction TableHeader({ MaxDot }) {\n    const ARRAY_DOT = (rowspan) => Array(MaxDot).fill(null)\n        .map((_, i) => ({ rowspan, value: `Đợt ${i + 1}` }));\n    return ({\n        style: HEADER_STYLE,\n        rows: [\n            [\n                { rowspan: 1, value: 'TT' },\n                { rowspan: 1, value: 'TÊN CÔNG TRÌNH' },\n                { rowspan: 1, value: 'GIÁ TRỊ HĐ' },\n                { rowspan: 1, value: 'GHI CHÚ' },\n                { rowspan: 1, value: 'GIÁ TRỊ QUYẾT TOÁN' },\n                { rowspan: 1, value: 'GIÁ TRỊ THỰC TẾ TC(có thể thay đổi theo ngày)' },\n                ...(ARRAY_DOT(1)),\n                { rowspan: 1, value: 'Số tiền còn lại phải thu ' }],\n        ]\n    })\n}\n\n/**\n * Render chi tiết dự án \n * @param {Array<Object>} data dữ liệu chi tiết\n * @param {Array<Object>} NhomKhoanThu nhóm dự án\n * @param {Array<number>} arrayDot mảng các đợt thanh toán\n * @returns {Array<ExcelRow>}\n */\nfunction TableContentGroup(data, NhomKhoanThu, NhomDuAn, arrayDot) {\n    let content = [];\n    NhomDuAn.forEach((gr, indexGr) => {\n        const dataByGroupDuAn = data.filter(nhom => nhom.Id === gr.Id);\n        const sumNhomDuAn = new SumGroup();\n        dataByGroupDuAn.forEach(n => { // List dự án theo nhóm\n            const dataKhoanThuGroup = (data) => NhomKhoanThu && NhomKhoanThu.map((kt, indexKhoanThu) => {\n                const listDuAnKhoanThu = data.filter(cur => {\n                    if (kt.Id === '8ddd85a6-61fd-4815-874a-cf4c705dec42') {\n                        return (cur.DMKhoanThuId === kt.Id) || (cur.DMKhoanThuId === '00000000-0000-0000-0000-000000000000')\n                    } else { return cur.DMKhoanThuId === kt.Id }\n                });\n                const getArrDuAn = () => {\n                    const dataSum = { isSum: true, Name: 'Tổng cộng', QuyetToan: 0, SoTienConLai: 0, GiaTriHD: 0, GiaTriTC: 0, ListThanhToan: [] };\n                    const listDuAn = [listDuAnKhoanThu.map((da, i, arr) => {\n                        dataSum.SoTienConLai += da.SoTienConLai;\n                        dataSum.GiaTriHD += da.GiaTriHD;\n                        dataSum.QuyetToan += da.QuyetToan;\n                        dataSum.GiaTriTC += da.GiaTriTC;\n\n                        sumNhomDuAn.SoTienConLai += da.SoTienConLai;\n                        sumNhomDuAn.GiaTriHD += da.GiaTriHD;\n                        sumNhomDuAn.QuyetToan += da.QuyetToan;\n                        sumNhomDuAn.GiaTriTC += da.GiaTriTC;\n\n                        da.ListThanhToan.forEach(dataThanhToan => {\n                            let found = false;\n                            // Cập nhật dataSum\n                            for (let cur of dataSum.ListThanhToan) {\n                                if (cur.DotThanhToan === dataThanhToan.DotThanhToan) {\n                                    cur.SoTien += dataThanhToan.SoTien;\n                                    found = true;\n                                    break;\n                                }\n                            }\n                            if (!found) {\n                                dataSum.ListThanhToan.push({ ...dataThanhToan });\n                            }\n\n                            // Cập nhật sumNhomDuAn\n                            found = false;\n                            for (let cur of sumNhomDuAn.ListThanhToan) {\n                                if (cur.DotThanhToan === dataThanhToan.DotThanhToan) {\n                                    cur.SoTien += dataThanhToan.SoTien;\n                                    found = true;\n                                    break;\n                                }\n                            }\n                            if (!found) {\n                                sumNhomDuAn.ListThanhToan.push({ ...dataThanhToan });\n                            }\n                        });\n\n                        const duAnsByCode = (da.Code !== arr[i - 1]?.Code) ? arr.filter(d => d.Code === da.Code) : null;\n                        return [...TableRow({ row: da, duAnsByCode }, arrayDot, false, 3, i + 1)]\n                    })]\n                    const sumKhoan = TableRow({ row: dataSum }, arrayDot, true, 3);\n                    let sumGroupDuAn = null; // khởi tạo tổng cộng phải trả theo nhóm dự án\n                    listDuAn[0] = [...listDuAn[0], [...sumKhoan]]\n                    if (indexKhoanThu === NhomKhoanThu.length - 1) { //kiểm tra đến khoản thu cuối cùng của nhóm dự án-chèn thêm dữ liệu tổng vào dưới\n                        sumGroupDuAn = TableRow({ row: sumNhomDuAn }, arrayDot, true, 3)\n                        listDuAn[0] = [...listDuAn[0], [...sumGroupDuAn], []]\n                    };\n                    return listDuAn;\n                }\n                return [//khoản thu + list dự án\n                    TableRow({ row: kt }, arrayDot, true, 2),\n                    ...getArrDuAn(listDuAnKhoanThu).flat(1)\n                ]\n            })\n            content = [...content,\n            ...[TableRow({ row: n }, arrayDot, true, 1, indexGr, gr.Code),\n            ...dataKhoanThuGroup(n.ListDuAn).flat(1)]]\n        })\n    })\n    return content\n}\n/**\n * @param {Array<object>} arrDotThanhToan mảng các đợt thanh toán\n * @param {boolean} bold đậm cho font chữ\n * @param {intNumber} enumsGroup 1-nhóm dự án || 2-khoản thu || 3-dự án\n*/\nfunction TableRow({ row, duAnsByCode }, arrDotThanhToan, bold = false, enumsGroup = 1, index, code) {\n    const keys = ['GiaTriHD', 'GhiChu', 'QuyetToan', 'GiaTriTC', 'SoTienConLai']; // key gốc\n    // eslint-disable-next-line no-unused-vars\n    const rowSpan = duAnsByCode && duAnsByCode.length\n    enumsGroup === 3 && arrDotThanhToan.sort((a, b) => a - b).forEach((dot) => keys.splice(keys.length - 1, 0, dot + 1))\n\n    const ArrCol = (isRowData, { ListThanhToan, ...row }, boldStyle) => {\n        const keysRow = isRowData ? keys : Array(arrDotThanhToan.length + 5).fill(null);\n        return keysRow.map((k, index, arr) => {\n            if (isRowData) {\n                const dataThanhToan = ListThanhToan.find(cur => cur.DotThanhToan === k);\n                const valRow = Number.isInteger(k) ? dataThanhToan ? parseInt(dataThanhToan.SoTien) : null : row[k]\n                const sumGhiChu = (index === 1 && duAnsByCode) ? duAnsByCode.reduce((sum, cur) => sum + cur.GiaTriHD, 0) : null\n                const sumSoTienConLai = (index === keysRow.length - 1 && duAnsByCode) ? duAnsByCode.reduce((sum, cur) => sum + cur.SoTienConLai, 0) : null\n                return { value: sumGhiChu || sumSoTienConLai || valRow || null, rowspan: (((index === 1) || (index === keysRow.length - 1)) && rowSpan) || 1 }\n            }\n            switch (index) {\n                case (0):\n                    return { value: row.isSum ? row.GiaTriHD : null, style: boldStyle }\n                case (1):\n                    return { value: row.isSum ? row.GhiChu : null, style: boldStyle }\n                case (2):\n                    return { value: row.isSum ? row.QuyetToan : null, style: boldStyle }\n                case (arr.length - 1):\n                    return { value: row.isSum ? row.SoTienConLai : null, style: boldStyle }\n                default:\n                    return { value: null };\n            }\n        })\n    }\n\n    const boldStyle = { font: { bold, background: { argb: INITIAL_COLOR_GROUP[enumsGroup] } } };\n    const headLine = row && enumsGroup !== 2 ? (enumsGroup === 1) ? code : index : '';\n    return [\n        { value: headLine, style: { ...boldStyle, alignment: { horizontal: 'center' } } },\n        { value: row.Name, style: boldStyle },\n        ...ArrCol(enumsGroup === 3, row, boldStyle)\n    ]\n}\n\n/**\n * Chuyển số thành chữ số La Mã\n * @param {number} intNumber\n */\nexport function IntegerToRoman(intNumber) {\n    if (typeof intNumber !== 'number')\n        return '';\n\n    var digits = String(+intNumber).split(\"\"),\n        key = [\"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n            \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n            \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"],\n        roman_num = \"\",\n        i = 3;\n    while (i--)\n        roman_num = (key[+digits.pop() + (i * 10)] || \"\") + roman_num;\n    return Array(+digits.join(\"\") + 1).join(\"M\") + roman_num;\n}\n\n//#endregion\n\n//#region JSDoc Types\n\n//#endregion","import React, { Component } from 'react';\nimport SelectSingle from './SelectSingle';\n\nclass SelectCustom extends Component {\n  render() {\n    const { value, onChange, options } = this.props;\n        const val = value ? value : '';\n\n        var valueText = 'value'\n        var labelText = 'label'\n        return (\n            <SelectSingle\n                value={val}\n                onChange={onChange}\n                options={options}\n                valueRef={valueText}\n                labelRef={labelText}\n                placeholder=\"Chọn...\"\n            />\n        );\n  }\n}\n\nSelectCustom.propTypes = {\n};\n\nSelectCustom.defaultProps = {\n    placeholder: 'Chọn...'\n};\n\nexport default SelectCustom;\n","import lodashMerge from 'lodash.merge'\n/** Cách đọc các số */\nexport const NUM_LETTERS = Array.of(\" không \", \" một \", \" hai \", \" ba \", \" bốn \", \" năm \", \" sáu \", \" bảy \", \" tám \", \" chín \");\n/** Cách đọc phần nghìn */\nexport const MONEY_LETTERS = Array.of(\"\", \" nghìn\", \" triệu\", \" tỷ\", \" nghìn tỷ\", \" triệu tỷ\");\n/**\n * Viền xung quanh ô (dùng cho bảng)\n * @type {Partial<import('exceljs').Borders>}\n */\nconst ALL_BORDERED = {\n    top: { style: 'thin', color: { argb: 'FF808080' } },\n    left: { style: 'thin', color: { argb: 'FF808080' } },\n    bottom: { style: 'thin', color: { argb: 'FF808080' } },\n    right: { style: 'thin', color: { argb: 'FF808080' } }\n}\n/**\n * Style mặc định của Excel\n * @type {Partial<import('exceljs').Style>}\n */\nexport const DEFAULT_STYLE = {\n    numFmt: '#,##0',\n    font: {\n        name: 'Times New Roman',\n        family: 4,\n        size: 12,\n        color: { argb: 'FF000000' }\n    },\n    alignment: {\n        vertical: 'middle',\n        wrapText: true\n    },\n    fill: {\n        type: 'pattern',\n        pattern: 'none'\n    }\n}\n/**\n * Style mặc định từng ô trong Excel\n * @type {Partial<import('exceljs').Style>}\n */\nexport const CELL_STYLE = {\n    border: ALL_BORDERED\n}\n/**\n * Style mặc định tiêu đề bảng excel\n * @type {Partial<import('exceljs').Style>}\n */\nexport const HEADER_STYLE = lodashMerge({}, {\n    font: {\n        bold: true,\n        size: 12\n    },\n    alignment: {\n        horizontal: 'center',\n        wrapText: true\n    },\n    // border: ALL_BORDERED\n})\n/** Bảng chữ cái */\nexport const ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n\n/**\n * Tiêu đề\n */\nexport const Title_Header = {\n    font: {\n        bold: true,\n        size: 10\n    }\n}\n\nexport const Tilte_Columns = {\n    background: '#F2F2F2'\n}\n\nexport const CELL_CENTER = {\n    alignment: {\n        horizontal: 'center',\n        vertical: 'middle',\n        wrapText: true\n    }\n}\n\nexport const CELL_RIGHT = {\n    alignment: {\n        horizontal: 'right',\n        vertical: 'middle',\n        wrapText: true\n    }\n}","export default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}","/**\n * Safe chained function\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n *\n * @param {function} functions to chain\n * @returns {function|null}\n */\nexport default function createChainedFunction() {\n  for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n    funcs[_key] = arguments[_key];\n  }\n\n  return funcs.reduce(function (acc, func) {\n    if (func == null) {\n      return acc;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (typeof func !== 'function') {\n        console.error('Material-UI: Invalid Argument Type, must only provide functions, undefined, or null.');\n      }\n    }\n\n    return function chainedFunction() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      acc.apply(this, args);\n      func.apply(this, args);\n    };\n  }, function () {});\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { fade, withStyles } from '@material-ui/core/styles';\nexport var styles = function styles(theme) {\n  return {\n    /* Styles applied to the root element. */\n    root: {\n      display: 'block',\n      // Create a \"on paper\" color with sufficient contrast retaining the color\n      backgroundColor: fade(theme.palette.text.primary, theme.palette.type === 'light' ? 0.11 : 0.13),\n      height: '1.2em'\n    },\n\n    /* Styles applied to the root element if `variant=\"text\"`. */\n    text: {\n      marginTop: 0,\n      marginBottom: 0,\n      height: 'auto',\n      transformOrigin: '0 60%',\n      transform: 'scale(1, 0.60)',\n      borderRadius: theme.shape.borderRadius,\n      '&:empty:before': {\n        content: '\"\\\\00a0\"'\n      }\n    },\n\n    /* Styles applied to the root element if `variant=\"rect\"`. */\n    rect: {},\n\n    /* Styles applied to the root element if `variant=\"circle\"`. */\n    circle: {\n      borderRadius: '50%'\n    },\n\n    /* Styles applied to the root element if `animation=\"pulse\"`. */\n    pulse: {\n      animation: '$pulse 1.5s ease-in-out 0.5s infinite'\n    },\n    '@keyframes pulse': {\n      '0%': {\n        opacity: 1\n      },\n      '50%': {\n        opacity: 0.4\n      },\n      '100%': {\n        opacity: 1\n      }\n    },\n\n    /* Styles applied to the root element if `animation=\"wave\"`. */\n    wave: {\n      position: 'relative',\n      overflow: 'hidden',\n      '&::after': {\n        animation: '$wave 1.6s linear 0.5s infinite',\n        background: \"linear-gradient(90deg, transparent, \".concat(theme.palette.action.hover, \", transparent)\"),\n        content: '\"\"',\n        position: 'absolute',\n        transform: 'translateX(-100%)',\n        // Avoid flash during server-side hydration\n        bottom: 0,\n        left: 0,\n        right: 0,\n        top: 0\n      }\n    },\n    '@keyframes wave': {\n      '0%': {\n        transform: 'translateX(-100%)'\n      },\n      '60%': {\n        // +0.5s of delay between each loop\n        transform: 'translateX(100%)'\n      },\n      '100%': {\n        transform: 'translateX(100%)'\n      }\n    },\n\n    /* Styles applied when the component is passed children. */\n    withChildren: {\n      '& > *': {\n        visibility: 'hidden'\n      }\n    },\n\n    /* Styles applied when the component is passed children and no width. */\n    fitContent: {\n      maxWidth: 'fit-content'\n    },\n\n    /* Styles applied when the component is passed children and no height. */\n    heightAuto: {\n      height: 'auto'\n    }\n  };\n};\nvar Skeleton = /*#__PURE__*/React.forwardRef(function Skeleton(props, ref) {\n  var _props$animation = props.animation,\n      animation = _props$animation === void 0 ? 'pulse' : _props$animation,\n      classes = props.classes,\n      className = props.className,\n      _props$component = props.component,\n      Component = _props$component === void 0 ? 'span' : _props$component,\n      height = props.height,\n      _props$variant = props.variant,\n      variant = _props$variant === void 0 ? 'text' : _props$variant,\n      width = props.width,\n      other = _objectWithoutProperties(props, [\"animation\", \"classes\", \"className\", \"component\", \"height\", \"variant\", \"width\"]);\n\n  var hasChildren = Boolean(other.children);\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    ref: ref,\n    className: clsx(classes.root, classes[variant], className, hasChildren && [classes.withChildren, !width && classes.fitContent, !height && classes.heightAuto], animation !== false && classes[animation])\n  }, other, {\n    style: _extends({\n      width: width,\n      height: height\n    }, other.style)\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Skeleton.propTypes = {\n  /**\n   * The animation.\n   * If `false` the animation effect is disabled.\n   */\n  animation: PropTypes.oneOf(['pulse', 'wave', false]),\n\n  /**\n   * Optional children to infer width and height from.\n   */\n  children: PropTypes.node,\n\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object.isRequired,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes\n  /* @typescript-to-proptypes-ignore */\n  .elementType,\n\n  /**\n   * Height of the skeleton.\n   * Useful when you don't want to adapt the skeleton to a text element but for instance a card.\n   */\n  height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n  /**\n   * The type of content that will be rendered.\n   */\n  variant: PropTypes.oneOf(['text', 'rect', 'circle']),\n\n  /**\n   * Width of the skeleton.\n   * Useful when the skeleton is inside an inline element with no width of its own.\n   */\n  width: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : void 0;\nexport default withStyles(styles, {\n  name: 'MuiSkeleton'\n})(Skeleton);","import React, { forwardRef, useCallback, useImperativeHandle, useState, useMemo, useEffect, memo } from \"react\"\r\nimport { CardBody, Col, Row, Card, Table } from 'reactstrap';\r\nimport { ButtonSave } from \"../../../../../components/base/Button\";\r\nimport FormControl from \"../../../../../components/base/Form/FormControl\";\r\nimport { formCondition } from './data';\r\nimport { DMKhoanThuEndpoint, NhomDuAnEndpoint } from '../../../../../service/GDTCores'\r\nimport { ChiTietCongNosEndpoint } from \"../../../../../service/Report\";\r\nimport { Fragment } from \"react\";\r\nimport { formatNumber } from \"../../../../../actions/util\";\r\nimport '../style.scss';\r\nimport ExportExcel from './ExportExcel';\r\nimport ReportPending from './ReportPending';\r\n\r\nconst congNoProps = ['ListDuAn', 'ListThanhToan', 'DotThanhToan']\r\n/**\r\n * \r\n * @param {Array<any>} data \r\n * @param {Array<string>} props \r\n */\r\n\r\nexport class SumGroup {\r\n    constructor() {\r\n        this.GiaTriHD = 0;\r\n        this.SoTienConLai = 0;\r\n        this.QuyetToan = 0;\r\n        this.isSum = true;\r\n        this.Name = 'Tổng phải trả';\r\n        this.ListThanhToan = [];\r\n        this.GiaTriTC = 0\r\n    }\r\n}\r\nfunction getMax(data, props) {\r\n    const cloneProps = props.slice();\r\n    const p = cloneProps.shift();\r\n    if (!p) {\r\n        return typeof data === 'number' ? data : 0;\r\n    }\r\n    return Math.max(0, ...data.map(d => {\r\n        return getMax(d[p], cloneProps)\r\n    }))\r\n}\r\n\r\nconst Index = forwardRef(({ ...props }, ref) => {\r\n    const [dataCondition, setDataCondition] = useState({ Nam: new Date().getFullYear() });\r\n    const [dataReport, setDataReport] = useState([]);\r\n    const [listNhom, setListNhom] = useState([]);\r\n    const [maxDot, setMaxDot] = useState(0);\r\n    const [isPending, setIsPending] = useState(false);\r\n    useImperativeHandle(ref, () => ({\r\n        onSave: handleChange,\r\n    }));\r\n    const getInitiAlData = async () => {\r\n        const { value: NhomDuAn } = await NhomDuAnEndpoint.getAll('?$filter=Status eq true');\r\n        const { value: NhomKhoanThu } = await DMKhoanThuEndpoint.getAll();\r\n        const indexNoiThat = NhomKhoanThu.findIndex(cur => cur.DoUuTien === 2);\r\n        NhomKhoanThu.splice(indexNoiThat, 1);\r\n        setListNhom(pre => ({ ...pre, NhomDuAn: NhomDuAn, NhomKhoanThu: NhomKhoanThu }))\r\n    }\r\n    useEffect(() => getInitiAlData(), [])\r\n\r\n    const handleChange = useCallback((name, value) => {\r\n        setDataCondition((pre) => ({ ...pre, [name]: value }));\r\n    }, []);\r\n\r\n    const handleSearchData = useCallback(async () => {\r\n        setIsPending(true);\r\n        const { Nam } = dataCondition;\r\n        const { ResultObj } = await ChiTietCongNosEndpoint.getDataCongNoTongHop(Nam);\r\n        setMaxDot(getMax(ResultObj, congNoProps));\r\n        setDataReport(ResultObj)\r\n        setIsPending(false);\r\n    }, [dataCondition])\r\n\r\n    const handleExportExcel = useCallback(async () => {\r\n        const { Nam } = dataCondition;\r\n        const { ResultObj } = await ChiTietCongNosEndpoint.getDataCongNoTongHop(Nam);\r\n        const MaxDot = getMax(ResultObj, congNoProps);\r\n        return ExportExcel({ Nam, MaxDot, data: ResultObj, listNhom }, `Công nợ tổng hợp'} ${Nam}.xlsx`)\r\n    }, [dataCondition, listNhom])\r\n\r\n    const RenderRow = memo(({ data, ListThanhToan, index, duAnsByCode }) => {\r\n        data.isSum && console.log(data.Name, ListThanhToan)\r\n        const rowSpan = duAnsByCode && duAnsByCode.length;\r\n        return <tr>\r\n            <td>{!data.isSum && index + 1}</td>\r\n            <td className={data.isSum && 'font-weight-bold'}>{data.Name}</td>\r\n            <td className={data.isSum && 'font-weight-bold'}>{data.GiaTriHD && formatNumber(data.GiaTriHD)}</td>\r\n            {duAnsByCode !== 'noneNote' && <td rowSpan={rowSpan} style={{ verticalAlign: 'middle' }} className={data.isSum && 'font-weight-bold'}>\r\n                {data.GiaTriHD && formatNumber(rowSpan > 1 ? duAnsByCode.reduce((sum, cur) => sum + cur.GiaTriHD, 0) : data.GiaTriHD)}\r\n            </td>}\r\n            <td className={data.isSum && 'font-weight-bold'}>{data.QuyetToan && formatNumber(data.QuyetToan)}</td>\r\n            <td>{data.GiaTriHD && data.GiaTriTC && formatNumber(data.GiaTriTC)}</td>\r\n            {Array.from(new Array(maxDot).keys())\r\n                .map(k => {\r\n                    const money = ListThanhToan.find(dot => dot.DotThanhToan === k + 1)\r\n                    return <td>{money ? formatNumber(money.SoTien) : ''}</td>\r\n                })}\r\n            {\r\n                duAnsByCode !== 'noneNote' && <td rowSpan={rowSpan} style={{ verticalAlign: 'middle' }} className={data.isSum && 'font-weight-bold'}>\r\n                    {duAnsByCode ? formatNumber(duAnsByCode.reduce((sum, cur) => sum + cur.SoTienConLai, 0))\r\n                        : formatNumber(data.SoTienConLai)}\r\n                </td>\r\n            }\r\n        </tr>\r\n    })\r\n\r\n    const RowDataDuAn = memo(({ data, sumNhomDuAn }) => {\r\n        let dataSum = { Name: 'Tổng cộng', GiaTriHD: 0, SoTienConLai: 0, isSum: true, QuyetToan: 0, ListThanhToan: [], GiaTriTC: 0 };\r\n        if (data) return data.map((duAn, i, arr) => {\r\n            const { ListThanhToan } = duAn;\r\n            dataSum.SoTienConLai += duAn.SoTienConLai;\r\n            dataSum.GiaTriHD += duAn.GiaTriHD;\r\n            dataSum.QuyetToan += duAn.QuyetToan;\r\n            dataSum.GiaTriTC += duAn.GiaTriTC\r\n            //--sumNhom--\r\n            sumNhomDuAn.SoTienConLai += duAn.SoTienConLai;\r\n            sumNhomDuAn.GiaTriHD += duAn.GiaTriHD;\r\n            sumNhomDuAn.QuyetToan += duAn.QuyetToan;\r\n            sumNhomDuAn.GiaTriTC += duAn.GiaTriTC\r\n\r\n            ListThanhToan.forEach(dataThanhToan => {\r\n                let found = false;\r\n                // Cập nhật dataSum\r\n                for (let cur of dataSum.ListThanhToan) {\r\n                    if (cur.DotThanhToan === dataThanhToan.DotThanhToan) {\r\n                        cur.SoTien += dataThanhToan.SoTien;\r\n                        found = true;\r\n                        break;\r\n                    }\r\n                }\r\n                if (!found) {\r\n                    dataSum.ListThanhToan.push({ ...dataThanhToan });\r\n                }\r\n\r\n                // Cập nhật sumNhomDuAn\r\n                found = false;\r\n                for (let cur of sumNhomDuAn.ListThanhToan) {\r\n                    if (cur.DotThanhToan === dataThanhToan.DotThanhToan) {\r\n                        cur.SoTien += dataThanhToan.SoTien;\r\n                        found = true;\r\n                        break;\r\n                    }\r\n                }\r\n                if (!found) {\r\n                    sumNhomDuAn.ListThanhToan.push({ ...dataThanhToan });\r\n                }\r\n            });\r\n\r\n            // if (dataSum.ListThanhToan.length > 0) {\r\n            //     ListThanhToan.forEach(dataThanhToan => {\r\n            //         dataSum.ListThanhToan.forEach((cur) => {\r\n            //             if (cur.DotThanhToan === dataThanhToan.DotThanhToan) {\r\n            //                 cur.SoTien += dataThanhToan.SoTien;\r\n            //             }\r\n            //         });\r\n            //     });\r\n            // } else {\r\n            //     dataSum.ListThanhToan = JSON.parse(JSON.stringify(ListThanhToan));\r\n            // }\r\n\r\n            // if (sumNhomDuAn.ListThanhToan.length > 0) {\r\n            //     ListThanhToan.forEach(dataThanhToan => {\r\n            //         sumNhomDuAn.ListThanhToan.forEach((cur) => {\r\n            //             if (cur.DotThanhToan === dataThanhToan.DotThanhToan) {\r\n            //                 cur.SoTien += dataThanhToan.SoTien;\r\n            //             }\r\n            //         });\r\n            //     });\r\n            // } else {\r\n            //     sumNhomDuAn.ListThanhToan = JSON.parse(JSON.stringify(ListThanhToan));\r\n            // }\r\n\r\n            const duAnsByCode = (duAn.Code !== arr[i - 1]?.Code) ? arr.filter(da => da.Code === duAn.Code) : 'noneNote';\r\n            return <Fragment key={'duan' + i}>\r\n                <RenderRow data={duAn} duAnsByCode={duAnsByCode} ListThanhToan={ListThanhToan} index={i} />\r\n                {i === arr.length - 1 && <RenderRow data={dataSum} ListThanhToan={dataSum.ListThanhToan} index={i} />}\r\n            </Fragment >\r\n        })\r\n        return null;\r\n    })\r\n    const RenderReport = useMemo(() => {\r\n        const { NhomDuAn, NhomKhoanThu } = listNhom;\r\n        return <div className=\"CongNoThu\">\r\n            <Table bordered size=\"sm\">\r\n                <thead>\r\n                    <tr>\r\n                        <th>STT</th>\r\n                        <th>Tên công trình</th>\r\n                        <th>Giá trị HĐ</th>\r\n                        <th>Ghi chú</th>\r\n                        <th>Giá trị Quyết toán</th>\r\n                        <th>Giá trị thực tế TC</th>\r\n                        {Array.from(new Array(maxDot).keys()).map(k => <th>Thanh toán đợt {k + 1}</th>)}\r\n                        <th>Số tiền còn lại phải thu</th>\r\n                    </tr>\r\n                </thead>\r\n                <tbody>\r\n                    <ReportPending loading={isPending}>\r\n                        {\r\n                            NhomDuAn && NhomDuAn.length !== 0 && dataReport && NhomDuAn.map((nhomDA, i) => {\r\n                                const dataKhoanThuDA = dataReport.find(cur => cur.Id === nhomDA.Id);\r\n                                const sumNhomDuAn = new SumGroup();\r\n                                return <Fragment key={'nhomDA' + i}>\r\n                                    <tr style={{ background: '#ffd700' }}>\r\n                                        <td>{nhomDA.Code}</td>\r\n                                        <td></td>\r\n                                        <td className=\"font-weight-bold\">{nhomDA && nhomDA.Name}</td>\r\n                                        <td></td>\r\n                                        {Array.from(new Array(maxDot + 3).keys()).map(k => <td></td>)}\r\n                                    </tr>\r\n                                    {dataKhoanThuDA && NhomKhoanThu.map((nhomKT, indexKT) => {\r\n                                        const dataReportNhomKT = dataKhoanThuDA.ListDuAn.filter(cur => {\r\n                                            if (nhomKT.Id === '8ddd85a6-61fd-4815-874a-cf4c705dec42') {\r\n                                                return (cur.DMKhoanThuId === nhomKT.Id) || (cur.DMKhoanThuId === '00000000-0000-0000-0000-000000000000')\r\n                                            } else { return cur.DMKhoanThuId === nhomKT.Id }\r\n                                        });\r\n                                        return <Fragment key={'nhomKT' + i + indexKT}>\r\n                                            <tr>\r\n                                                <td></td>\r\n                                                <td></td>\r\n                                                <td className=\"font-weight-bold bg-green-lt\">{nhomKT.Name}</td>\r\n                                                <td></td>\r\n                                                {maxDot && Array.from(new Array(maxDot + 3).keys()).map(k => <td></td>)}\r\n                                            </tr>\r\n                                            {dataReportNhomKT && <RowDataDuAn sumNhomDuAn={sumNhomDuAn} data={dataReportNhomKT} />}\r\n                                        </Fragment>\r\n                                    })}\r\n                                    <RenderRow data={sumNhomDuAn} ListThanhToan={sumNhomDuAn.ListThanhToan} />\r\n                                </Fragment>\r\n                            })\r\n                        }\r\n                    </ReportPending>\r\n                </tbody>\r\n            </Table>\r\n        </div>\r\n    }, [dataReport, isPending, listNhom, maxDot])\r\n    return (\r\n        <Card>\r\n            <CardBody className=\"mt-1 row\">\r\n                <Col xs='3'>\r\n                    <Row>\r\n                        <Col xs='12'>\r\n                            <FormControl data={formCondition.Nam} value={(dataCondition && dataCondition.Nam) || null} onChange={handleChange} />\r\n                        </Col>\r\n                    </Row>\r\n                </Col>\r\n                <Col xs='6'>\r\n                    <ButtonSave onClick={handleSearchData}>Lấy dữ liệu công nợ</ButtonSave>\r\n                    <ButtonSave color=\"success\" onClick={handleExportExcel}>Xuất báo cáo</ButtonSave>\r\n                </Col>\r\n                <Col xs='12'>{RenderReport}</Col>\r\n            </CardBody>\r\n        </Card>\r\n\r\n    )\r\n})\r\nexport default Index"],"names":["_ref","loading","props","_jsx","Fragment","children","md","Array","from","keys","map","cur","_","Typography","variant","Skeleton","Report","Service","constructor","path","super","getAll","param","this","SearchAllAUTH","addWithBatch","data","InsertBatch","update","ID","body","edit","getDataCongNoTongHop","Nam","GetAuthen","GetCongNoVatLieuTheoDuAn","PostAuthen","getDataChiTietCongNoCuaHang","Thang","CuaHangId","getDataCongNoDoiThueNgoai","DotLuongId","getDataTongHopCongNoCuaHang","getDataBangKeChiTiet","getKinhPhiCongTrinh","duAnId","getLoiNhuan","styles","multiValueLabel","padding","fontSize","control","backgroundColor","height","minHeight","lineHeight","cursor","borderRadius","option","input","position","placeholder","marginLeft","marginRight","singleValue","transform","top","container","width","valueContainer","indicatorsContainer","indicatorContainer","_ref2","options","setData","useState","valueSnap","setValueSnap","selected","setSelected","isLoading","setIsLoading","getOptionsMulti","useCallback","value","length","i","current","j","push","getOptionsSingle","setStateSelected","isMulti","loadDataFromApi","columns","odata","url","where","valueField","textField","_url","join","callApi2","then","res","forEach","x","label","obj","catch","error","prevProps","prevState","useEffect","onChange","e","meta","list","getFullValue","isDetail","disabled","isSelected","Select","isDisabled","isClearable","className","SelectMonth","Component","render","SelectSingle","valueRef","labelRef","defaultProps","Radio","name","checked","type","attribute","_jsxs","Input","numberCol","valueData","setValueData","Row","item","index","Col","target","handleChange","id","indexOf","splice","Checkbox","val","renderControl","setPlaceholder","toLowerCase","formatDate","InputText","field_name","title","Password","TextArea","style","InputBoolean","InputDate","date","placeholderText","dataSelect","DropdownListForm2","group_by","value_field","text_field","selectedItems","info","InputNumber","NumberFormat","thousandSeparator","decimalSeparator","decimalScale","onValueChange","values","parseFloat","onFocus","event","select","RadioList","CheckboxList","SelectYear","SelectCustom","DataSelect2","fields","originfield","column","field","value_label","value_type","whereOne","multiLabel","eleUrl","InputFile","file","accept","required","SelectAsync","loadData","loadOptions","getOptionValue","getOptionLabel","onAdd","SelectMulti","defaultValue","FormControl","onChangeRender","inline","colLabel","colValue","FormGroup","row","hidden_label","Required","Label","maxWidth","lookup","InputSelect","Object","key","delimiter","space","getDataID","filter","dataID","getPrimaryKey","checkDelimiter","includes","checkSpace","convertDelimiter","split","checkHasField","hasField","getPrimaryURL","filterExpandURL","list_join","arguments","undefined","list_join_filter_only","list2_join_filter_only","list_join_filter_only_check","i1","index_table","index_real","expand","arrayOfUniques","element","num","reverse","splitField","some","arr","i2","list2_join_filter_only_fake","curr","i3","arr_list","arr_list2","text","text1","ngoac","ngoac_end","i4","stringLabel","multiLB","labelMuti","filterField","fieldName","filterTypeField","querySeachDF","isSearch","fieldSeach","filterURL","query","fieldFilter","filters","querys","key_filter","dataRef","search","searchable","isNaN","Number","que","ii","generatePaginate","page","pageSize","generateOrderBy","orderDirection","generateExpand","generateSelect","select_value","selectType","reduce","accum","array","key_select","arr_key_select","check_point","check_connect_multi","selectURL","field_MultiLabel","generatedExpandSelectURL","expect","a","b","getData","year","Date","getFullYear","_excluded","propTypes","tag","tagPropType","inverse","PropTypes","color","outline","cssModule","innerRef","Card","Tag","attributes","_objectWithoutPropertiesLoose","classes","mapToCssModules","classNames","React","_extends","ref","numToStrAddr","n","ALPHABET","remain","Math","floor","convertAddr","addr","isArray","t","l","r","Error","_ws","_classPrivateFieldLooseKey","_getCellValue","_renderRow","_renderGroup","WorksheetWrapper","ws","defineProperty","writable","cell","prototype","toString","call","hasOwnProperty","c","cells","xr","_classPrivateFieldLooseBase","getRow","ce","getCell","isMerged","lodashMerge","DEFAULT_STYLE","colspan","rowspan","mergeCells","topLeft","shift","find","f","col","fullAddress","groupData","Set","m","g","gCell","group","font","bold","address","d","getColumn","worksheet","renderArrayRowGroup","_ref3","rows","renderDataRowGroup","_ref4","header","totalRow","rowNum","headerStyle","cellStyle","onEndRow","unshift","idx","colStyle","alignment","horizontal","groupedCols","sort","endRow","ExcelWorkbook","Workbook","create","wb","creator","lastModifiedBy","created","modified","lastPrinted","download","filename","wbBuffer","xlsx","writeBuffer","saveAs","Blob","addWorksheet","getWorksheet","indexOrName","selectProps","noOptionsMessage","loadingMessage","Index","forwardRef","promiseOptions","inputValue","Promise","resolve","setTimeout","async","op","hanldeChange","AsyncSelect","defaultOptions","inputId","instanceId","ButtonAdd","onClick","memo","ExportDonVi","ExportQuocHieu","ExportParty","underline","ExportInfo","subTitle","italic","formattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","lightFormat","dirtyDate","formatStr","requiredArgs","originalDate","toDate","isValid","RangeError","timezoneOffset","getTimezoneOffsetInMilliseconds","utcDate","subMilliseconds","tokens","match","substring","firstCharacter","matches","replace","cleanEscapedString","formatter","formatters","size","bordered","borderless","striped","dark","hover","responsive","responsiveTag","Table","ResponsiveTag","table","responsiveClassName","colourStyles","menuPortal","base","zIndex","menu","marginTop","LoadingIndicator","SpinnerSmall","IndicatorsContainer","components","getStyles","display","ClearIndicator","innerProps","restInnerProps","transition","boxSizing","FontAwesome","fa","verticalAlign","IndicatorSeparator","alignSelf","marginBottom","DropdownIndicator","MenuList","maxHeight","overflowY","state","valueRequire","RefReactSelect","menuPlacement","ReactSelect","classNamePrefix","setState","menuPortalTarget","document","menuPosition","readOnly","tabIndex","autoComplete","opacity","focus","dataCongNo","formCondition","INITIAL_COLOR_GROUP","ExportCongNoThu","MaxDot","listNhom","NhomKhoanThu","NhomDuAn","totalCol","arrayDot","toUpperCase","ARRAY_DOT","fill","HEADER_STYLE","TableHeader","tableData","content","gr","indexGr","dataByGroupDuAn","nhom","Id","sumNhomDuAn","SumGroup","dataKhoanThuGroup","kt","indexKhoanThu","listDuAnKhoanThu","DMKhoanThuId","getArrDuAn","dataSum","isSum","Name","QuyetToan","SoTienConLai","GiaTriHD","GiaTriTC","ListThanhToan","listDuAn","da","_arr","dataThanhToan","found","DotThanhToan","SoTien","duAnsByCode","Code","TableRow","sumKhoan","sumGroupDuAn","flat","ListDuAn","TableContentGroup","CELL_STYLE","arrDotThanhToan","enumsGroup","code","rowSpan","dot","boldStyle","background","argb","ArrCol","isRowData","keysRow","k","valRow","isInteger","parseInt","sumGhiChu","sum","sumSoTienConLai","GhiChu","IntegerToRoman","intNumber","digits","String","roman_num","pop","of","numFmt","family","vertical","wrapText","pattern","border","left","bottom","right","Title_Header","Tilte_Columns","CELL_CENTER","CELL_RIGHT","ownerDocument","node","createChainedFunction","_len","funcs","_key","acc","func","_len2","args","_key2","apply","_props$animation","animation","_props$component","component","_props$variant","other","_objectWithoutProperties","hasChildren","Boolean","clsx","root","withChildren","fitContent","heightAuto","withStyles","theme","fade","palette","primary","transformOrigin","shape","rect","circle","pulse","wave","overflow","concat","action","visibility","congNoProps","getMax","cloneProps","slice","p","max","dataCondition","setDataCondition","dataReport","setDataReport","setListNhom","maxDot","setMaxDot","isPending","setIsPending","useImperativeHandle","onSave","NhomDuAnEndpoint","DMKhoanThuEndpoint","indexNoiThat","findIndex","DoUuTien","pre","getInitiAlData","handleSearchData","ResultObj","ChiTietCongNosEndpoint","handleExportExcel","ExportExcel","RenderRow","console","log","formatNumber","money","RowDataDuAn","duAn","RenderReport","useMemo","ReportPending","nhomDA","dataKhoanThuDA","nhomKT","indexKT","dataReportNhomKT","CardBody","xs","ButtonSave"],"sourceRoot":""}