????
Current Path : C:/inetpub/vhost/xaydung.gdtsolutions.vn/build/static/js/ |
Current File : C:/inetpub/vhost/xaydung.gdtsolutions.vn/build/static/js/8880.94285123.chunk.js.map |
{"version":3,"file":"static/js/8880.94285123.chunk.js","mappings":"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","sources":["views/action/defaultEnums.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","components/base/Input/Radio.js","components/select/RadioList.js","components/select/CheckboxList.js","components/base/Form/FormControl.js","views/bao-cao/cua-hang/TabThongTin/ChiTietVatLieuCuaHang/ReportPending.js","components/tableOdata/OdataUtils.js","components/select/SelectYear.js","views/bao-cao/cua-hang/TabThongTin/ChiTietVatLieuCuaHang/data.js","components/export/ExcelPlugin/utils/helpers.js","components/export/ExcelExtensions/WorksheetWrapper.js","components/export/ExcelExtensions/ExcelWorkbook.js","components/export/ExcelExtensions/index.js","views/bao-cao/cua-hang/TabThongTin/ChiTietVatLieuCuaHang/ExportExcel.js","components/select/SelectAsync.js","views/bao-cao/DefaultRowGroups.js","components/spinners/SpinnerSmall.js","components/select/Select.js","components/select/SelectCustom.js","components/export/ExcelPlugin/utils/constant.js","webpack://@qlxd/frontend/./src/views/bao-cao/cua-hang/TabThongTin/ChiTietVatLieuCuaHang/style.scss?df68","views/bao-cao/cua-hang/TabThongTin/ChiTietVatLieuCuaHang/index.js"],"sourcesContent":["// Enums\nconst Enums_ThanhToan = [\n {\n value: 'all',\n label: 'Tất cả'\n },\n {\n value: '1',\n label: 'Đã thanh toán'\n },\n {\n value: '0',\n label: 'Chưa thanh toán'\n },\n\n]\nconst Enums_GioiTinh = [\n {\n value: 'Nam',\n label: 'Nam'\n },\n {\n value: 'Nu',\n label: 'Nữ'\n },\n {\n value: 'Khong',\n label: 'Chưa có thông tin'\n }\n]\nconst Enums_DoiTuong = [ // không được đụng vào nha ^^\n { value: 'CuaHang', label: 'Cửa hàng' },\n { value: 'ThueNgoai', label: 'Thuê ngoài' },\n { value: 'KhachHang', label: 'Khách hàng' },\n { value: 'NhanVien', label: 'Nhân viên' },\n { value: 'CongTy', label: 'Công ty' },\n { value: 'PhongBan', label: 'Phong ban' },\n]\n\nconst _Enums_DoiTuong = {\n CuaHang: 'CuaHang',\n ThueNgoai: 'ThueNgoai',\n KhachHang: 'KhachHang',\n NhanVien: 'NhanVien',\n CongTy: 'CongTy',\n PhongBang: 'PhongBan'\n}\n\nconst _Enums_DoiTuongNumber = {\n CuaHang: 0,\n ThueNgoai: 1,\n KhachHang: 2,\n NhanVien: 3,\n CongTy: 4,\n PhongBang: 5\n}\n\nconst Enums_PhuongThucChamCong = {\n TheoThang: 'TheoThang',\n TheoDuAn: 'TheoDuAn',\n}\n\nconst Enums_PhuongThucChamCongNumber = {\n TheoThang: 0,\n TheoDuAn: 1\n}\n\nconst Enums_CongNo = {\n NoCu: 'NoCu', // nợ cũ,\n TamUng: 'TamUng', // tạm ứng\n NoDoiTac: 'NoDoiTac', // cty nợ đối tác\n}\n\nconst Enums_LoaiNoNumber = {\n NoCu: 'NoCu',\n TamUng: 'TamUng',\n NoDoiTac: 'NoDoiTac',\n DuAnNo: 'DuAnNo',\n TraNo: 'TraNo'\n}\n\nconst Enums_LoaiNoLabel = {\n NoCu: 'Nợ cũ',\n TamUng: 'Tạm ứng',\n NoDoiTac: 'Nợ đối tác',\n DuAnNo: 'Dự án'\n}\n\n\nconst Enum_Flag = {\n view: 'view',\n add: 'add',\n edit: 'edit',\n delete: 'delete',\n}\n\nconst Enum_NhomKhoanChis = {\n LuongThoThueNgoai: '6939DC70-E008-4286-AC13-00BD4DF40BBC',\n LuongThoCTy: 'B59A4E45-B963-478F-8DD5-663607A32DAA',\n ChiPhiCuaHang: 'A6391105-7862-491B-844E-0D8874AA8B7B',\n}\n\nexport {\n Enums_GioiTinh,\n Enums_DoiTuong,\n _Enums_DoiTuong,\n Enums_PhuongThucChamCong,\n Enums_CongNo,\n Enums_PhuongThucChamCongNumber,\n _Enums_DoiTuongNumber,\n Enums_LoaiNoNumber,\n Enums_LoaiNoLabel,\n Enum_Flag,\n Enums_ThanhToan,\n Enum_NhomKhoanChis,\n}","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;","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","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","/* 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 { Enums_DoiTuong } from \"../../../../action/defaultEnums\";\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 },\n OrganId: {\n field_name: 'OrganId',\n url: 'GDTCores/Organizations',\n title: 'Cửa hàng',\n type: 'data-select-odata',\n value_field: 'Id',\n value_label: 'OrganName',\n value_type: 'uuid',\n hidden_label: true,\n placeholder: 'Chọn cửa hàng',\n required: true,\n where: [\n {\n \"field\": \"DoiTuong\",\n \"expression\": 'eq',\n \"value\": `'${Enums_DoiTuong[0].value}'`\n },\n {\n \"field\": \"Status\",\n \"expression\": 'eq',\n \"value\": `true`\n }\n ],\n getFullValue: true,\n },\n // DuAn: {\n // type: 'data-select-odata',\n // field_name: 'DuAn.Name',\n // placeholder: 'Chọn dự án',\n // value_field: 'Id',\n // value_label: 'Name',\n // value_type: 'string',\n // repuired: true,\n // }\n}","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;","/** @requires module:src/components/export */\nimport { HEADER_STYLE, CELL_STYLE, CELL_RIGHT } from '../../../../../components/export/ExcelPlugin/utils/constant';\nimport lightFormat from 'date-fns/lightFormat';\nimport ExcelWorkbook from '../../../../../components/export/ExcelExtensions';\nimport { ExportQuocHieu } from '../../../DefaultRowGroups';\nimport { formatNumber } from '../../../../../actions/util';\n<reference path=\"../../../../../components/export/ExcelPlugin/utils/types.js\" />\n\n/**\n * Export Công nợ\n * @param {ExportCongNoModel} data\n * @param {string} filename\n */\n// const INITIAL_COLOR_GROUP = { '1': '00FF7300', '2': '00e4ebcc', '3': '00FFFFFF' }\n\nexport default async function ExportChiTietVatLieu({ Nam, data }, filename) {\n\n const wb = new ExcelWorkbook();\n const totalCol = 5;\n // Tạo worksheet công nợ\n const ws = wb.addWorksheet(`Chi tiết vật liệu cửa hàng ${Nam}`);\n ws.worksheet.getColumn(1).width = 20;\n ws.worksheet.getColumn(2).width = 20;\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 ws.worksheet.getColumn(7).width = 20;\n ws.worksheet.getColumn(totalCol).width = 25;\n\n // Render thông tin chung\n ws.renderArrayRowGroup([1, 3], ExportQuocHieu(totalCol - 2));\n\n ws.renderArrayRowGroup([5, 1], {\n style: {\n font: {\n bold: true\n },\n alignment: {\n horizontal: 'center'\n }\n },\n rows: [\n [\n {\n value: `BẢNG VẬT LIỆU CỬA HÀNG CHO CÔNG TRÌNH- ${Nam} `.toUpperCase(),\n colspan: totalCol\n }\n ],\n ]\n });\n ws.renderArrayRowGroup([7, totalCol - 4], {\n style: {\n font: { italic: true },\n alignment: {\n horizontal: 'center'\n }\n },\n rows: [\n [\n {\n colspan: 7,\n value: `Bình Định, ${lightFormat(new Date(), `'ngày 'dd' tháng 'MM' năm 'yyyy`)\n }`\n }\n ]\n ]\n })\n // Render chi tiết\n ws.renderArrayRowGroup([8, 1], TableHeader({}));\n\n const arrRows = (vatLieuTheoNgay) => {\n const newArr = [];\n // const groupVatLieu = [];\n Object.keys(vatLieuTheoNgay).forEach(ngay => {\n if (ngay === 'sum') {\n newArr.push([\n { value: '' },\n { value: vatLieuTheoNgay[ngay].TenVatLieu, style: vatLieuTheoNgay[ngay].style && { font: { bold: \"true\" } } },\n { value: '' },\n { value: '', style: { ...CELL_RIGHT } },\n { value: '' },\n { value: formatNumber(vatLieuTheoNgay[ngay].ThanhTien), style: { font: { bold: \"true\" }, ...CELL_RIGHT } },\n { value: '' },\n ])\n } else {\n let rowSpanNgay = vatLieuTheoNgay[ngay].reduce((sum, curDon) =>\n sum += curDon.ListChiTietVatLieu.length, 0) + vatLieuTheoNgay[ngay].length\n vatLieuTheoNgay[ngay].forEach((donHang, i) => {\n newArr.push([{ value: ngay, rowspan: i === 0 ? rowSpanNgay : 1 }, { value: donHang.MaDonHang }, { value: '' }, { value: '' }, { value: '' }, { value: '' }, { value: '' }])\n return donHang.ListChiTietVatLieu.forEach((vatLieu) => {\n newArr.push([\n { value: '' },\n { value: vatLieu.TenVatLieu, style: vatLieu.style && { font: { bold: \"true\" } } },\n { value: vatLieu.DVT },\n { value: formatNumber(vatLieu.SoLuong, 8) },\n { value: formatNumber(vatLieu.DonGia), style: { ...CELL_RIGHT } },\n { value: formatNumber(vatLieu.ThanhTien), style: vatLieu.style ? { font: { bold: \"true\" }, ...CELL_RIGHT } : { ...CELL_RIGHT } },\n { value: '' },\n ])\n })\n })\n }\n })\n return newArr;\n }\n\n const getSizeListDon = (vatLieuTheoNgay) => {\n let rowSpanNgay = 0;\n Object.keys(vatLieuTheoNgay).forEach(ngay => {\n if (ngay === 'sum') { rowSpanNgay++ }\n else {\n rowSpanNgay += vatLieuTheoNgay[ngay].reduce((sum, curDon) => {\n return sum += curDon.ListChiTietVatLieu.length\n }, 0)\n rowSpanNgay += vatLieuTheoNgay[ngay].length;\n }\n })\n return rowSpanNgay + 1;\n }\n\n const getTop = (arr, i) => {\n if (i === 0) return 0\n const l = Array.from(new Array(i).keys()).reduce((l, e, curIndex) => l + getSizeListDon(arr[curIndex].ChiTietVatLieuTheoNgay), 1)\n return l\n }\n\n data.forEach((item, index) => {\n const paddingTop = getTop(data, index);\n ws.renderArrayRowGroup([9 + paddingTop, 1], {\n style: CELL_STYLE,\n rows: [\n [\n { value: '', style: {} },\n { value: item.Name, colspan: 5, style: { font: { bold: true, size: 12 } } },\n { value: '' },\n { value: '' },\n { value: '' },\n { value: '' },\n { value: formatNumber(item.CongNo), style: { font: { bold: true, size: 12 }, ...CELL_RIGHT } },\n ],\n ...arrRows(item.ChiTietVatLieuTheoNgay)\n ]\n })\n })\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() {\n return ({\n style: HEADER_STYLE,\n rows: [\n [\n {\n rowspan: 1,\n value: 'NGÀY NHẬP'\n },\n {\n rowspan: 1,\n value: 'TÊN VẬT LIỆU'\n },\n {\n rowspan: 1,\n value: 'ĐVT'\n },\n {\n rowspan: 1,\n value: 'SỐ LƯỢNG'\n }, {\n rowspan: 1,\n value: 'ĐƠN GIÁ'\n }, {\n rowspan: 1,\n value: 'THÀNH TIỀN'\n }, {\n rowspan: 1,\n value: 'TẠM ỨNG'\n },\n ],\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>} OrganId id cửa hàng\n * @returns {Array<ExcelRow>}\n */\n\n\n\n\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*/\n// fun\n// function TableRow({row}) {\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\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\n return Array(+ digits.join(\"\") + 1).join(\"M\") + roman_num;\n}\n\n// #endregion\n\n// #region JSDoc Types\n\n// #endregion\n","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 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","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}","// extracted by mini-css-extract-plugin\nexport default {};","import React, { forwardRef, Fragment, useCallback, useEffect, useMemo, useState, useRef } from 'react';\nimport FormControl from '../../../../../components/base/Form/FormControl';\nimport { Card, CardBody, Col, Row, Table } from 'reactstrap';\nimport { formCondition } from './data';\nimport './style.scss';\nimport ReportPending from './ReportPending';\nimport { BangKeChiTietVatLieusEndpoint } from '../../../../../service/Report';\nimport { ButtonSave } from '../../../../../components/base/Button';\n// eslint-disable-next-line no-unused-vars\nimport { CuaHangVatLieusEndpoint, DuAnEndpoint } from '../../../../../service/GDTCores';\nimport { CHECK_WARNING } from '../../../../../components/alert/Alert';\nimport ExportExcel from './ExportExcel';\nimport { formatCurrency } from '../../../../../actions/util';\nimport { formatDate } from '../../../../../actions/util';\nimport { FontAwesome } from '../../../../../components/icon';\nimport _ from 'lodash';\nimport { InputSeach } from '../../../../../components/base/Input';\nimport Fuse from 'fuse.js'\n\nconst Index = forwardRef(({ NhanVienId }, ref) => {\n // useState\n const [dataCondition, setDataCondition] = useState({ Nam: new Date().getFullYear() });\n const [dataCuaHangVL, setdataCuaHangVL] = useState({ OrganId: null, Name: '' });\n const [isPending, setIsPending] = useState(false);\n const [dataReport, setDataReport] = useState([]);\n const [dataSearch, setDataSearch] = useState(null);\n const [listNhom, setListNhom] = useState([]);\n const [isVisible, setIsVisible] = useState(false);\n const dataReportRef = useRef([]);\n // const getDataCuaHangVatLieu = useCallback(() => {\n // CuaHangVatLieusEndpoint.getAllCuaHangVatLieus().then(res => setdataCuaHangVL(res.value))\n // }, [])\n // useEffect(() => {\n // getDataCuaHangVatLieu()\n // }, [getDataCuaHangVatLieu])\n\n const toggleVisibility = () => {\n if (window.pageYOffset > 50) {\n setIsVisible(true);\n } else {\n setIsVisible(false);\n }\n };\n const scrollToTop = () => {\n window.scrollTo({\n top: 0,\n behavior: 'smooth',\n });\n };\n\n useEffect(() => {\n window.addEventListener('scroll', toggleVisibility);\n }, []);\n\n const getInitiAlData = async () => {\n const { value: DuAn } = await DuAnEndpoint.getAll('?$filter=Status eq true');\n setListNhom((pre) => ({\n ...pre,\n DuAn: DuAn,\n }));\n };\n useEffect(() => getInitiAlData(), []);\n\n useEffect(() => { dataReportRef.current = dataReport; }, [dataReport]);\n\n const handleSearchData = useCallback(() => {\n const { Nam } = dataCondition;\n const { OrganId } = dataCuaHangVL;\n if (!OrganId) {\n CHECK_WARNING('Vui lòng chọn cửa hàng');\n } else {\n setIsPending(true);\n BangKeChiTietVatLieusEndpoint.getDataBangKeChiTiet({ Nam: Nam, CuaHangId: OrganId }).then(({ ResultObj }) => {\n for (let i = 0; i < ResultObj.length; i++) {\n const duAn = ResultObj[i];\n duAn.ChiTietVatLieuTheoDon = _.mapValues(_.groupBy(duAn.ChiTietVatLieuTheoDon, 'Ngay'), (clist) =>\n clist.map((donHang) => _.omit(donHang, 'Ngay'))\n );\n const formatDateKey = {};\n Object.keys(duAn.ChiTietVatLieuTheoDon).forEach(\n (ngay) => (formatDateKey[formatDate(ngay)] = duAn.ChiTietVatLieuTheoDon[ngay])\n );\n delete duAn['ChiTietVatLieuTheoDon'];\n duAn.ChiTietVatLieuTheoNgay = formatDateKey;\n let sumDuAn = 0;\n Object.keys(duAn.ChiTietVatLieuTheoNgay).forEach((ngay) => {\n duAn.ChiTietVatLieuTheoNgay[ngay].forEach((donHang) => {\n const sumListDon = donHang.ListChiTietVatLieu.reduce(\n (previousValue, currentValue) => previousValue + currentValue.ThanhTien,\n 0\n );\n sumDuAn += sumListDon;\n });\n });\n duAn.ChiTietVatLieuTheoNgay['sum'] = { TenVatLieu: 'Tổng cộng', ThanhTien: sumDuAn, style: true };\n }\n const productListLowerCase = ResultObj.map((da) => ({\n ...da,\n name: da.Name,\n }));\n setDataReport(productListLowerCase);\n setIsPending(false);\n });\n }\n }, [dataCondition, dataCuaHangVL]);\n\n const handleExportExcel = useCallback(async () => {\n const { Nam } = dataCondition;\n const { OrganId, Name } = dataCuaHangVL;\n if (dataReport.length) {\n return ExportExcel({ Nam, OrganId, data: dataReport, listNhom }, `Chi tiết vật liệu cửa hàng ${Name}.xlsx`);\n } else {\n CHECK_WARNING('Lấy dữ liệu công nợ trước khi xuất');\n }\n }, [dataCondition, dataCuaHangVL, dataReport, listNhom]);\n\n const handleChange = useCallback((name, value) => {\n setDataCondition((pre) => ({ ...pre, [name]: value }));\n setdataCuaHangVL({ OrganId: value.Id, Name: value.OrganName });\n }, []);\n\n const RenderReport = useMemo(() => {\n const dataReal = dataSearch ? dataSearch : dataReport;\n return (\n <div className=\"CongNoTra\">\n <Table bordered size=\"sm\">\n <thead>\n <tr>\n <th>Ngày nhập</th>\n <th>Tên vật liệu</th>\n <th>ĐVT</th>\n <th>Số lượng</th>\n <th>Đơn giá</th>\n <th>Thành tiền</th>\n <th>Tạm ứng</th>\n </tr>\n </thead>\n <tbody>\n <ReportPending loading={isPending}>\n {dataReal &&\n dataReal.map((nhomDA, index) => {\n const chiTietVatLieuTheoNgay = nhomDA.ChiTietVatLieuTheoNgay;\n return (\n <Fragment>\n <tr style={{ background: '#ffd700' }}>\n <td className=\"font-weight-bold\" colSpan=\"6\">\n {nhomDA && nhomDA.Name}\n </td>\n <td style={{ textAlign: 'right' }}>{formatCurrency(nhomDA.CongNo)}</td>\n </tr>\n {Object.keys(chiTietVatLieuTheoNgay).map((ngay) => {\n let rowSpanNgay =\n ngay === 'sum'\n ? 1\n : chiTietVatLieuTheoNgay[ngay].reduce(\n (sum, curDon) => (sum += curDon.ListChiTietVatLieu.length),\n 1\n ) + chiTietVatLieuTheoNgay[ngay].length;\n return ngay !== 'sum' ? (\n <Fragment>\n <tr>\n <td rowSpan={rowSpanNgay} style={{ verticalAlign: 'middle' }}>\n {ngay}\n </td>\n </tr>\n {chiTietVatLieuTheoNgay[ngay].map((donHang, i) => {\n return (\n <Fragment>\n <tr>\n <td style={{ verticalAlign: 'middle' }}>{donHang.MaDonHang}</td>\n <td></td>\n <td></td>\n <td></td>\n <td></td>\n <td></td>\n </tr>\n {donHang.ListChiTietVatLieu.map((listVT) => {\n return (\n <tr>\n {/* {\n listVT.rowSpan !== 0 &&\n <td style={{ verticalAlign: \"middle\" }} >\n {listVT.NgayNhap && formatDate(listVT.NgayNhap)}\n </td>\n } */}\n <td\n className={listVT.style ? 'bg-light' : 'bg-green-lt'}\n style={listVT.style && { fontWeight: 'bold' }}\n >\n {listVT.TenVatLieu}\n </td>\n <td>{listVT.DVT}</td>\n <td style={{ textAlign: 'right' }}>{listVT.SoLuong}</td>\n <td style={{ textAlign: 'right' }}>{formatCurrency(listVT.DonGia)}</td>\n <td className={listVT.style ? 'bg-light' : null} style={{ textAlign: 'right' }}>\n {formatCurrency(listVT.ThanhTien)}\n </td>\n <td></td>\n </tr>\n );\n })}\n </Fragment>\n );\n })}\n </Fragment>\n ) : (\n <tr>\n <td> </td>\n <td> {chiTietVatLieuTheoNgay[ngay].TenVatLieu} </td>\n <td> </td>\n <td style={{ textAlign: 'right' }}> </td>\n <td style={{ textAlign: 'right' }}> </td>\n <td\n className={chiTietVatLieuTheoNgay[ngay].style ? 'bg-light' : null}\n style={{ textAlign: 'right' }}\n >\n {formatCurrency(chiTietVatLieuTheoNgay[ngay].ThanhTien)}\n </td>\n <td></td>\n </tr>\n );\n })}\n </Fragment>\n );\n })}{' '}\n </ReportPending>\n </tbody>\n </Table>\n </div>\n );\n }, [dataReport, dataSearch, isPending]);\n\n // eslint-disable-next-line no-unused-vars\n function searchProductByName(name, data) {\n var searchTerm = name.toLowerCase();\n var results = data.filter(function (product) {\n return product.Name.toLowerCase().indexOf(searchTerm) !== -1;\n });\n return results;\n }\n\n const onChange = useCallback((keyword) => {\n // Tạo đối tượng Fuse với các tùy chọn tìm kiếm\n const options = {\n keys: ['name'], // Trường 'name' sẽ được tìm kiếm\n includeScore: true,\n shouldSort: true,\n threshold: 0.5,\n ignoreLocation: true,\n minMatchCharLength: 2,\n useExtendedSearch: true,\n };\n const fuse = new Fuse(dataReportRef.current, options);\n // Thực hiện tìm kiếm\n const searchResults = fuse.search(keyword);\n if (keyword) {\n setDataSearch(searchResults.map(p => p.item));\n } else {\n setDataSearch(null);\n }\n }, []);\n return (\n <>\n <Card>\n <CardBody className=\"mt-1 row\">\n <Col xs=\"3\">\n <Row>\n <Col xs=\"6\">\n <FormControl\n data={formCondition.Nam}\n value={(dataCondition && dataCondition.Nam) || null}\n onChange={handleChange}\n />\n </Col>\n <Col xs=\"6\">\n <FormControl\n data={formCondition.OrganId}\n value={(dataCuaHangVL && dataCuaHangVL.OrganId) || null}\n onChange={handleChange}\n />\n </Col>\n </Row>\n </Col>\n <Col xs=\"6\" className=\"mb-4\">\n <ButtonSave onClick={handleSearchData}>Lấy dữ liệu công nợ</ButtonSave>\n <ButtonSave color=\"success\" onClick={handleExportExcel} style={{ marginLeft: '5px' }}>\n Xuất báo cáo\n </ButtonSave>\n </Col>\n <Col xs=\"3\">\n <InputSeach onReload={handleSearchData} onChange={onChange}></InputSeach>\n </Col>\n <Col xs=\"12\">{RenderReport}</Col>\n </CardBody>\n </Card>\n {isVisible && (\n <div onClick={scrollToTop}>\n <h2 style={{ position: 'fixed', right: '50', bottom: '100' }} className=\"d-1\">\n <FontAwesome fa=\"fas fa-arrow-circle-up\" style={{ float: 'right' }} />\n </h2>\n </div>\n )}\n </>\n );\n});\nexport default Index;\n"],"names":["Enums_ThanhToan","value","label","Enums_GioiTinh","Enums_DoiTuong","_Enums_DoiTuong","CuaHang","ThueNgoai","KhachHang","NhanVien","CongTy","PhongBang","_Enums_DoiTuongNumber","Enums_PhuongThucChamCong","TheoThang","TheoDuAn","Enums_PhuongThucChamCongNumber","Enums_CongNo","NoCu","TamUng","NoDoiTac","Enums_LoaiNoNumber","DuAnNo","TraNo","Enums_LoaiNoLabel","Enum_Flag","view","add","edit","delete","Enum_NhomKhoanChis","LuongThoThueNgoai","LuongThoCTy","ChiPhiCuaHang","Report","Service","constructor","path","super","getAll","param","this","SearchAllAUTH","addWithBatch","data","InsertBatch","update","ID","body","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","_ref","transform","top","container","width","valueContainer","indicatorsContainer","indicatorContainer","_ref2","options","props","setData","useState","valueSnap","setValueSnap","selected","setSelected","isLoading","setIsLoading","getOptionsMulti","useCallback","length","i","current","j","push","getOptionsSingle","setStateSelected","isMulti","loadDataFromApi","columns","odata","url","where","valueField","textField","_url","join","callApi2","then","res","forEach","x","obj","catch","error","prevProps","prevState","useEffect","map","onChange","e","meta","list","getFullValue","isDetail","disabled","isSelected","_jsx","children","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","md","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","keys","key","loading","Fragment","Array","from","cur","_","Typography","variant","Skeleton","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","formCondition","OrganId","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","async","ExportChiTietVatLieu","ExportQuocHieu","totalCol","toUpperCase","italic","lightFormat","HEADER_STYLE","arrRows","vatLieuTheoNgay","newArr","ngay","TenVatLieu","CELL_RIGHT","formatNumber","ThanhTien","rowSpanNgay","sum","curDon","ListChiTietVatLieu","donHang","MaDonHang","vatLieu","DVT","SoLuong","DonGia","getTop","curIndex","getSizeListDon","ChiTietVatLieuTheoNgay","paddingTop","CELL_STYLE","Name","size","CongNo","IntegerToRoman","intNumber","digits","String","roman_num","pop","selectProps","noOptionsMessage","loadingMessage","Index","forwardRef","ref","promiseOptions","inputValue","Promise","resolve","setTimeout","op","hanldeChange","AsyncSelect","defaultOptions","inputId","instanceId","ButtonAdd","onClick","memo","ExportDonVi","ExportParty","underline","ExportInfo","subTitle","colourStyles","menuPortal","base","zIndex","menu","marginTop","LoadingIndicator","SpinnerSmall","IndicatorsContainer","components","getStyles","display","ClearIndicator","innerProps","restInnerProps","color","transition","boxSizing","FontAwesome","fa","verticalAlign","IndicatorSeparator","alignSelf","marginBottom","DropdownIndicator","MenuList","maxHeight","overflowY","state","valueRequire","RefReactSelect","React","menuPlacement","ReactSelect","classNamePrefix","setState","menuPortalTarget","document","menuPosition","readOnly","tabIndex","autoComplete","opacity","focus","of","numFmt","family","argb","vertical","wrapText","fill","pattern","border","left","bottom","right","Title_Header","Tilte_Columns","background","CELL_CENTER","NhanVienId","dataCondition","setDataCondition","dataCuaHangVL","setdataCuaHangVL","isPending","setIsPending","dataReport","setDataReport","dataSearch","setDataSearch","listNhom","setListNhom","isVisible","setIsVisible","dataReportRef","useRef","toggleVisibility","window","pageYOffset","addEventListener","DuAn","DuAnEndpoint","pre","getInitiAlData","handleSearchData","BangKeChiTietVatLieusEndpoint","ResultObj","duAn","ChiTietVatLieuTheoDon","clist","formatDateKey","sumDuAn","sumListDon","previousValue","currentValue","productListLowerCase","da","CHECK_WARNING","handleExportExcel","ExportExcel","Id","OrganName","RenderReport","useMemo","dataReal","Table","bordered","ReportPending","nhomDA","chiTietVatLieuTheoNgay","colSpan","textAlign","formatCurrency","rowSpan","listVT","fontWeight","keyword","searchResults","Fuse","includeScore","shouldSort","threshold","ignoreLocation","minMatchCharLength","useExtendedSearch","p","_Fragment","Card","CardBody","xs","ButtonSave","InputSeach","onReload","scrollToTop","scrollTo","behavior","float"],"sourceRoot":""}