{"version":3,"sources":["helper/history.js","helper/type.js","reducer/SearchMutipleInvoice_Reducer.js","reducer/index.js","action/Dispatch.js","helper/axio.js","components/AppMenu_UserInfo.js","components/HeaderMenu.js","components/HeaderSlide.js","components/ModalOptions/ExtensionDownload.js","components/ModalOptions/InvoiceInfomation.js","components/ModalOptions/InvoiceOptions.js","components/ModalOptions/PopupKH.js","components/ModalOptions/PopupTBPH.js","components/ModalOptions/MinvoicePlugin.js","components/ModalOptions/SearchInfo.js","components/ModalOptions/GroupOptions.js","components/ExportModal.js","components/LookupEinvoice/LookupInvoiceList.js","components/ChildSearchForm/SearchByFiles.js","components/ChildSearchForm/SearchMutipleInvoice.js","components/ChildSearchForm/SearchOneInvoice.js","components/ChildSearchForm/SearchInvoiceBody.js","components/AppRoute/App_Router.js","components/SearchForm.js","components/ContentBody.js","components/FixContentBody.js","components/ContentSlider.js","components/Footers.js","App.js","index.js"],"names":["createBrowserHistory","ADD_USER","LOGOUT","BODY","user","JSON","parse","localStorage","getItem","initialState","isLoggedIn","show","allReducers","combineReducers","state","action","type","payload","Logout","ContentBody","port","baseUrl","document","location","process","toString","protocol","hostname","axios","defaults","baseURL","axiosInstance","create","connect","withRouter","props","useState","modal","oldpass","newpass","confirmpass","setState","open","toggle","setToggle","addToast","useToasts","useForm","defaultValues","register","handleSubmit","errors","React","isLoad","setisLoad","get_ref","useRef","handleLogout","removeItem","handleChange","e","target","name","value","useEffect","addEventListener","handleBodyClick","removeEventListener","event","current","contains","state_user","className","ref","id","onClick","style","backgroundImage","backgroundPosition","backgroundSize","textAlign","padding","color","cursor","username","margin","icon","faKey","size","to","pathname","faSignOutAlt","tabIndex","role","onSubmit","data","axiosConfig","headers","token","appearance","post","then","res","undefined","ok","stringify","toLocaleLowerCase","error","history","push","catch","err","response","status","message","htmlFor","onChange","defaultValue","active","spinner","styles","wrapper","width","height","HeaderMenu","href","src","alt","Component","ExtensionDownload","infomationInvoice","json","masothue","sobaomat","viewBox","fill","xmlns","d","responseType","file","Blob","fileURL","URL","createObjectURL","a","createElement","body","appendChild","download","click","window","revokeObjectURL","removeChild","title","inchuyendoi","console","log","InvoiceInfomation","InfomationData","InvoiceData","align","mau_hd","inv_invoiceSeries","inv_invoiceIssuedDate","inv_invoiceNumber","parseFloat","sum_tien","toLocaleString","InvoiceOptions","InvoiceDatas","InvoiceCus","useStyles","makeStyles","theme","form","display","flexDirection","formControl","marginTop","spacing","minWidth","formControlLabel","table","PopupKH","openKH","dataKH","onHide","classes","maxWidth","Fragment","Dialog","fullWidth","onClose","DialogTitle","DialogContent","TableContainer","component","Paper","Table","TableHead","backgroundColor","TableRow","TableCell","TableBody","length","map","row","index","ten_cty","dia_chi","ma_so_thue","cqthue_ql","cqthuecap_tinh","Moment","ngay_thanh_lap","format","nguoi_dai_dien","DialogActions","Button","PopupTBPH","date","no","dataUsing","formNo","symbol","quantity","from","providerName","providerTax","options","useDefaultPath","connection","hubConnection","hubProxy","createHubProxy","PluginMV","PluginConn","on","disconnected","setTimeout","start","done","fail","_plugin","_conn","SearchInfo","openPopup","setopenPopup","openTBPH","setopenTBPH","popupDataTBPH","setpopupDataTBPH","popupDataKH","setpopupDataKH","isLoading","setisLoading","jsonPost","SearchData","ky_hieu","kyHieu","mau_so","mauHD","closeToggle","code","toast","warn","position","autoClose","hideProgressBar","closeOnClick","pauseOnHover","draggable","progress","jsonMstInfo","msThue","key","md5","substring","toUpperCase","jsonRead","xml","ecd","alert","invoke","root","GroupOptions","InvoiceOptionsData","infoModal","setinfoModal","InvoiceSeries","setInvoiceSeries","MauSo","setMauSo","masoThue","setmasoThue","authID","setauthID","crypt","setcrypt","Ecd","setEcd","jsonInfo","inv_buyerTaxCode","inv_InvoiceAuth_id","auth_id","crypts","atob","success","appBar","marginLeft","flex","ExportModal","hide","byteData","scroll","AppBar","Toolbar","paddingRight","IconButton","edge","dividers","List","url","setLoading","isLoadingButton","setLoadingButton","tu_ngay","Date","den_ngay","mst","StateLookup","setStateLookup","pageSize","setPageSize","data_rows","setdata_rows","openModal","setOpenModal","setByteData","datepickerRef","datepickerRef2","data_Lookup","dateFormat","ma_dt","sortedObjs","sort","b","Number","i","includes","columns","field","headerName","renderHeader","identity","headerAlign","renderCell","params","valueFormatter","description","variant","data_json","ClickDownloadXML","ClickView","preventDefault","placeholderText","selected","showMonthDropdown","showYearDropdown","peekNextMonth","dropdownMode","shouldCloseOnSelect","setOpen","faCalendarCheck","opacity","startIcon","faSync","searchInvoiceList","onPageSizeChange","rowsPerPageOptions","rows","getRowId","ColumnMenuIcon","componentsProps","pagination","labelRowsPerPage","labelDisplayedRows","count","backIconButtonText","nextIconButtonText","localeText","footerRowSelected","SearchByFiles","fileInputRef","fileName","setfileName","handleFiles","typeFile","indexOf","onDragOver","onDragEnter","onDragLeave","onDrop","files","dataTransfer","multiple","currentTarget","selectedFile","formData","FormData","append","TextDecoder","decode","uploadFiles","addUser","password","newvalue","replace","state_new","setItem","userClick","autoFocus","placeholder","SearchOneInvoice","_mst","_sbm","SearchInvoiceBody","useParams","jpram","useLocation","search","jh","URLSearchParams","ms","get","mS","sbm","Click","App_Router","exact","path","LookupInvoiceList","SearchForm","typeClick","settypeClick","disable","setdisable","disabled","fontSize","fontWeight","SwiperCore","use","Autoplay","store","createStore","Navigation","App","script","async","autoDismiss","autoDismissTimeout","pageId","appId","ReactDOM","render","getElementById"],"mappings":"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","file":"static/js/main.6d3437a2.chunk.js","sourcesContent":["import { createBrowserHistory, HashHistory } from 'history';\r\n\r\nexport default createBrowserHistory();","export const ADD_USER = \"ADD_USER\"\r\nexport const LOGOUT = \"LOGOUT\"\r\nexport const BODY = \"BODY\"","\r\nimport { ADD_USER } from \"../helper/type\"\r\nimport { LOGOUT } from \"../helper/type\"\r\nimport { BODY } from \"../helper/type\"\r\n\r\nconst user = JSON.parse(localStorage.getItem(\"user\"));\r\n\r\nconst initialState = user\r\n    ? { isLoggedIn: true, user , show: true}\r\n    : { isLoggedIn: false, user: null , show: true};\r\n\r\nexport default (state = initialState, action) => {\r\n    switch (action.type) {\r\n\r\n        case ADD_USER:\r\n            return {\r\n                ...state, isLoggedIn: true, user: JSON.parse(action.payload)\r\n            }\r\n        case LOGOUT:\r\n            return {\r\n                ...state,\r\n                isLoggedIn: false,\r\n                user: null,\r\n            };\r\n        case BODY:\r\n            return {\r\n                ...state,\r\n                show :  action.payload\r\n            };\r\n        default:\r\n            return state\r\n    }\r\n}","import { combineReducers } from \"redux\"\r\nimport SearchMutipleInvoice_Reducer from \"./SearchMutipleInvoice_Reducer\"\r\n\r\nconst allReducers = combineReducers({\r\n  user: SearchMutipleInvoice_Reducer,\r\n})\r\n\r\nexport default allReducers","import { ADD_USER } from \"../helper/type\"\r\nimport { LOGOUT } from \"../helper/type\"\r\nimport { BODY } from \"../helper/type\"\r\n//dispatch\r\nexport const addUser = (user) => {\r\n  return {\r\n    type: ADD_USER,\r\n    payload: user,\r\n  }\r\n}\r\nexport const Logout = () => {\r\n  return {\r\n    type: LOGOUT,\r\n\r\n  }\r\n}\r\nexport const ContentBody = (show) => {\r\n  return {\r\n    type: BODY,\r\n    payload: show,\r\n  }\r\n}","import axios from \"axios\";\r\nvar port = \"\";\r\nvar baseUrl = \"\";\r\nif (document.location.port === \"3000\") {\r\n    baseUrl = process.env.REACT_APP_PUBLIC_URL;\r\n}\r\nelse {\r\n    if (document.location.port != 80 && document.location.port != 445) {\r\n        port = \":\" + document.location.port.toString();\r\n    }\r\n    // baseUrl = document.location.protocol + \"//\" + document.location.hostname + port + \"/api\";\r\n    baseUrl = document.location.protocol + \"//\" + document.location.hostname + port;\r\n}\r\naxios.defaults.baseURL = baseUrl;\r\n// const baseUrl = process.env.REACT_APP_PUBLIC_URL;\r\nconst axiosInstance = axios.create({\r\n    baseURL: baseUrl\r\n})\r\nexport default axiosInstance;","import React, { Component } from 'react';\r\nimport { useEffect, useState, useRef } from \"react\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport { Redirect, Link, Route } from 'react-router-dom';\r\nimport { Logout } from '../action/Dispatch';\r\nimport { ContentBody } from '../action/Dispatch';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { connect } from \"react-redux\";\r\nimport LoadingOverlay from 'react-loading-overlay';\r\n\r\nimport axiosInstance from \"../helper/axio\";\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faUserCog, faSignOutAlt, faOutdent, faExchangeAlt, faKey } from '@fortawesome/free-solid-svg-icons'\r\n//  import Imag from './LibCustom/img/1.jpg'\r\n\r\nconst AppMenu_UserInfo = (props) => {\r\n\r\n    const url = \"Account/ChangePass\";\r\n\r\n    const [state, setState] = useState({ modal: false, oldpass: \"\", newpass: \"\", confirmpass: \"\" });\r\n    const [toggle, setToggle] = useState({ open: false });\r\n    const { addToast } = useToasts();\r\n    const { register, handleSubmit, errors } = useForm({ defaultValues: {} });\r\n\r\n    const [isLoad, setisLoad] = React.useState(false); // Trạng thái mở Modal\r\n\r\n    const get_ref = useRef(null);\r\n\r\n\r\n    const handleLogout = () => {\r\n        setToggle({ open: false });\r\n        localStorage.removeItem(\"user\");\r\n        props.Logout();\r\n        props.ContentBody(true);\r\n\r\n    }\r\n\r\n    const handleChange = (e) => {\r\n        const { name, value } = e.target;\r\n        setState({ ...state, [name]: value });\r\n\r\n\r\n    }\r\n\r\n    useEffect(() => {\r\n        document.addEventListener('mousedown', handleBodyClick, true);\r\n\r\n        return () => {\r\n            document.removeEventListener('mousedown', handleBodyClick, true);\r\n        }\r\n    }, []);\r\n\r\n    const handleBodyClick = (event) => {\r\n        if (get_ref.current && !get_ref.current.contains(event.target)) {\r\n            setToggle({ open: false });\r\n        }\r\n    }\r\n\r\n    const handleToggle = () => {\r\n        setToggle({ open: !toggle.open });\r\n    }\r\n\r\n    const handleChangePassword = () => {\r\n        setState({ ...state, modal: true });\r\n\r\n    }\r\n\r\n    const submitChangePassword = (data) => {\r\n\r\n\r\n        if (props.user.isLoggedIn == true) {\r\n            const axiosConfig = {\r\n                headers: {\r\n                    'Content-Type': 'application/json;charset=UTF-8',\r\n                    'Authorization': `Bearer ${props.user.user?.token}`\r\n                }\r\n            };\r\n\r\n            if ((state.newpass == '' || state.confirmpass == '')) {\r\n                addToast('Mật khẩu mới hoặc mật khẩu xác nhận không được để trống!', { appearance: \"error\" });\r\n            }\r\n            else {\r\n                if (state.newpass !== state.confirmpass) {\r\n                    addToast('Mật khẩu mới và mật khẩu xác nhận không khớp nhau!', { appearance: \"error\" });\r\n                }\r\n                else {\r\n\r\n\r\n                    //gọi api change pass\r\n                    // const data = { sobaomat: params.row.sobaomat, masothue: StateLookup.masothue, type: \"PDF\" };\r\n                    setisLoad(true);\r\n                    axiosInstance\r\n                        .post(url, data, axiosConfig)\r\n                        .then((res) => {\r\n                            // setByteData(res.data);\r\n                            // setOpenModal(true);\r\n                            if (res.data.ok == undefined) {\r\n                                setisLoad(false);\r\n                                addToast(JSON.parse(JSON.stringify(res.data).toLocaleLowerCase()).error, { appearance: \"error\" })\r\n                            }\r\n                            else {\r\n                                setisLoad(false);\r\n                                addToast('Đổi mật khẩu thành công!', { appearance: \"success\" });\r\n                                handleLogout();\r\n\r\n                                setState({ ...state, modal: false });\r\n                                //gọi sang redux\r\n\r\n\r\n                                //về trang chủ đn lại sau khi đổi mk\r\n                                props.history.push({ pathname: '/', state: 'mutiple' });\r\n                            }\r\n\r\n                        })\r\n                        .catch((err) => {\r\n                            if (err.response.status == 401) {\r\n                                setisLoad(false);\r\n                                setToggle({ open: false });\r\n                                setState({ ...state, modal: false });\r\n\r\n                                localStorage.removeItem(\"user\");\r\n                                props.Logout();\r\n                                addToast(\"Phiên đăng nhập hết hạn vui lòng đăng nhập lại!\", { appearance: \"error\" });\r\n                                props.history.push({ pathname: '/', state: \"mutiple\" });\r\n\r\n                            }\r\n                            else {\r\n                                setisLoad(false);\r\n                                addToast(err.message, { appearance: \"error\" });\r\n                            }\r\n                            setisLoad(false);\r\n                        });\r\n\r\n\r\n\r\n                }\r\n            }\r\n            // }\r\n        }\r\n\r\n\r\n    }\r\n\r\n    const handleCancel = () => {\r\n        setState({ ...state, modal: false });\r\n\r\n    }\r\n\r\n    const state_user = props.user;\r\n\r\n    return (\r\n\r\n        state_user.user ? (<div className=\"dropdown fix_mobil\" ref={get_ref}>\r\n\r\n\r\n            {\r\n                state_user.user ? (\r\n                    <div className=\"topbar-item\" id=\"profile_user\" data-toggle=\"dropdown\" data-offset=\"0px,0px\">\r\n\r\n\r\n                        {/* <div className=\"btn btn-icon btn-hover-transparent-white d-flex align-items-center btn-lg px-md-2 w-md-auto\">\r\n                            <span className=\"opacity-70 font-weight-bold font-size-base d-none d-md-inline mr-1\">{state_user.user ? \"Hi,\" : \"\"}</span>\r\n                            <span className=\"opacity-90 font-weight-bolder font-size-base d-none d-md-inline mr-4\">{state_user.user?.username}</span>\r\n\r\n\r\n                            {/* <span className=\"symbol symbol-35\">\r\n                                <span className=\"symbol-label text-white font-size-h5 font-weight-bold bg-white-o-30\">{state_user.user?.username.charAt(0).toUpperCase()}</span>\r\n                            </span> \r\n                        </div> */}\r\n                        <button onClick={handleToggle} style={{ backgroundImage: \"url(/LibCustom/img/favicon.ico)\", backgroundPosition: 'center', backgroundSize: 'cover' }} className={\"btn_user btn btn-icon btn-hover-transparent-white p-0 ml-30 \" + (toggle.open ? \"button_click\" : \"\")} id=\"kt_header_mobile_topbar_toggle\">\r\n\r\n                            {/* <span className=\"svg-icon svg-icon-xl\">\r\n                                <FontAwesomeIcon icon={faUserCog} size=\"lg\" />\r\n                            </span> */}\r\n                        </button>\r\n\r\n                    </div>) : \"\"}\r\n            {\r\n                state_user.user ? (\r\n                    <div className={\"dropdown-menu p-0 m-0 dropdown-menu-right dropdown-menu-anim-up dropdown-menu-lg p-0 \" + (toggle.open ? \"show\" : \"\")}>\r\n                        <div className=\"row d-flex align-items-center p-8 rounded-top\">\r\n                            <div className=\"mx-auto col-12\" style={{ textAlign: 'center', padding: '10px 0' }}>\r\n                                <span style={{ color: '#2c76ff', cursor: 'pointer' }} className=\"opacity-70 font-weight-bold font-size-base mr-1\">{state_user.user ? \"Hi,\" + state_user.user.username : \"\"}</span>\r\n\r\n                            </div>\r\n\r\n                            <div className=\"mx-auto col-12\">\r\n                                <hr style={{ margin: \"unset\" }} />\r\n                                <button className=\"btn btn-bg-info btn_profile\" onClick={handleChangePassword}><FontAwesomeIcon icon={faKey} style={{ color: \"#0d6efd\" }} size=\"1x\" /> Đổi mật khẩu</button>\r\n                                <hr style={{ margin: \"unset\" }} />\r\n                                <Link to={{ pathname: \"/\", state: \"mutiple\" }} className=\"btn btn-bg-danger btn_profile\" onClick={handleLogout}> <FontAwesomeIcon icon={faSignOutAlt} style={{ color: \"red\" }} size=\"1x\" /> Đăng xuất</Link>\r\n                            </div>\r\n                        </div>\r\n                        {/* <div className=\"separator separator-solid\" /> */}\r\n                    </div>\r\n\r\n                ) : \"\"\r\n\r\n            }\r\n\r\n\r\n            {state.modal ? (\r\n                <div className=\"modal fade fadeIn\" id=\"edit\" tabIndex={-1} role=\"dialog\" aria-labelledby=\"myModalLabel\">\r\n                    <div className=\"modal-dialog config_form\" role=\"document\">\r\n                        <div className=\"modal-content\">\r\n                            <div className=\"modal-header fix-modal\">\r\n                                {/* <button type=\"button\" className=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"><span aria-hidden=\"true\">×</span></button> */}\r\n                                <h4 className=\"modal-title\" id=\"myModalLabel\">Thay đổi mật khẩu</h4>\r\n                            </div>\r\n                            {/*/.modal-header*/}\r\n                            <div className=\"modal-body\">\r\n                                <form id=\"updateForm\" onSubmit={handleSubmit(submitChangePassword)} >\r\n                                    <div className=\"form-group\" id=\"currentPass-group\">\r\n                                        <label htmlFor=\"current_pass\">Mật khẩu hiện tại :</label>\r\n                                        <input className=\"form-control\" onChange={handleChange} ref={register} defaultValue={state.oldpass} type=\"password\" name=\"oldpass\" id=\"current_pass\" />\r\n                                    </div>\r\n                                    <div className=\"form-group\">\r\n                                        <label htmlFor=\"new_pass\">Mật khẩu mới :</label>\r\n                                        <input className=\"form-control\" onChange={handleChange} ref={register} defaultValue={state.newpass} type=\"password\" name=\"newpass\" id=\"new_pass\" />\r\n                                    </div>\r\n                                    <div className=\"form-group\">\r\n                                        <label htmlFor=\"confirm_pass\">Xác nhận mật khẩu :</label>\r\n                                        <input className=\"form-control\" onChange={handleChange} ref={register} defaultValue={state.confirmpass} type=\"password\" name=\"confirmpass\" id=\"confirm_pass\" />\r\n                                    </div>\r\n                                    <div className=\"modal-footer\">\r\n                                        {/* <input type=\"submit\" name=\"submit\" class=\"btn btn-block btn-warning\" value=\"Save changes\" /> */}\r\n                                        <input type=\"submit\" name=\"submit\" className=\"btn btn-success\" id=\"submitForm\" value=\"Xác nhận\" />\r\n                                        <button type=\"button\" onClick={handleCancel} className=\"btn btn-default\" data-dismiss=\"modal\">Thoát</button>\r\n                                    </div>\r\n                                </form>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n\r\n\r\n\r\n            ) : \"\"\r\n            }\r\n            <LoadingOverlay\r\n                active={isLoad}\r\n                spinner\r\n                styles={{\r\n                    wrapper: {\r\n                        width: '0px',\r\n                        height: '0px',\r\n                    }\r\n                }}\r\n            >\r\n\r\n            </LoadingOverlay>\r\n        </div>\r\n        ) : <></>\r\n\r\n    );\r\n\r\n}\r\nconst mapStateToProps = (state) => ({\r\n    user: state.user,\r\n\r\n});\r\n\r\nexport default connect(mapStateToProps, { Logout, ContentBody })(withRouter(AppMenu_UserInfo));","import React, { Component } from \"react\";\r\nimport AppMenu_UserInfo from \"./AppMenu_UserInfo\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { FaHome, faHome } from '@fortawesome/fontawesome-free-solid';\r\n\r\nexport default class HeaderMenu extends Component {\r\n  render() {\r\n    const directLink = (e) => {\r\n      var a = document.createElement(\"a\");\r\n      document.body.appendChild(a);\r\n      a.href = \"https://einvoice32.mservice.com.vn/\";\r\n      a.target = \"_blank\";\r\n      a.click();\r\n      document.body.removeChild(a);\r\n    };\r\n    const directLink2 = (e) => {\r\n      var a = document.createElement(\"a\");\r\n      document.body.appendChild(a);\r\n      a.href = \"https://tiki.vn/\";\r\n      a.target = \"_blank\";\r\n      a.click();\r\n      document.body.removeChild(a);\r\n    };\r\n    return (\r\n      <header id=\"header\" className=\"fixed-top\">\r\n        <div className=\"container d-flex align-items-center justify-content-between\">\r\n          <h1 className=\"logo\">\r\n            <a href=\"https://hoadondientu.vacom.vn/\">\r\n              <img src=\"./LibCustom/img/TIKI.png\" alt=\"\"></img>\r\n            </a>\r\n          </h1>\r\n          <nav id=\"navbar\" className=\"navbar\">\r\n            {/* <ul>\r\n              <li>\r\n                <a className=\"nav-link scrollto\" href=\"https://tiki.vn/\" target=\"_blank\">\r\n                  <FontAwesomeIcon icon={faHome} />\r\n                </a>\r\n              </li>\r\n              <li className=\"dropdown\">\r\n                <a href=\"https://tiki.vn/\" onClick={directLink2} target=\"_blank\">\r\n                  <span>GHÉ THĂM TIKI</span>\r\n                </a>\r\n              </li>\r\n              <li>\r\n                <button className=\"btn btn-primary fix-header-button \" onClick={directLink}>\r\n                  TRA CỨU HÓA ĐƠN THEO TT32 <b>TẠI ĐÂY</b>\r\n                </button>\r\n              </li>\r\n            </ul> */}\r\n            <i className=\"bi bi-list mobile-nav-toggle\" />\r\n\r\n\r\n          </nav>\r\n          <AppMenu_UserInfo />\r\n        </div>\r\n\r\n      </header>\r\n    );\r\n  }\r\n}\r\n","import React, { Component } from 'react';\r\nimport './LookupEinvoice/LookupInvoice.css';\r\n\r\nclass HeaderSlide extends Component {\r\n    render() {\r\n        return (\r\n                <div>\r\n                    <section id=\"pricing\" className=\"pricing\">\r\n                    <div data-aos=\"fade-up\" className=\"aos-init aos-animate\">\r\n                        <div className=\"row\">\r\n                            <div className=\"card text-white bg-primary\">\r\n                            <img className=\"card-img-top imgcustom\" src=\"./LibCustom/img/minvoice-header-logo.jpg\" alt=\"\"/>\r\n                        </div></div></div>\r\n                </section>\r\n                </div>\r\n        );\r\n    }\r\n}\r\n\r\nexport default HeaderSlide;","import React from \"react\";\r\nimport axiosInstance from \"../../helper/axio\";\r\n\r\nexport default function ExtensionDownload({ infomationInvoice }) {\r\n  const url = \"Search/ExportXmlInvoice\";\r\n  const url2 = \"Search/SearchInvoice\";\r\n  const json = {\r\n    masothue: infomationInvoice.masothue,\r\n    sobaomat: infomationInvoice.sobaomat,\r\n    type: \"pdf\",\r\n  };\r\n  const pdfSave = (data) => {\r\n    axiosInstance\r\n      .post(url2, json, { responseType: \"arraybuffer\" })\r\n      .then((res) => {\r\n        const file = new Blob([res.data], {\r\n          type: \"application/pdf\",\r\n        });\r\n        const fileURL = URL.createObjectURL(file);\r\n        var a = document.createElement(\"a\");\r\n        document.body.appendChild(a);\r\n        a.href = fileURL;\r\n        a.download = \"Invoice_\" + json.masothue + \"_\" + json.sobaomat + \".pdf\";\r\n        a.click();\r\n        window.URL.revokeObjectURL(fileURL);\r\n        document.body.removeChild(a);\r\n      });\r\n  };\r\n  const xmlSave = (e) => {\r\n    json.inchuyendoi = \"1\";\r\n    axiosInstance\r\n      .post(url, json, { responseType: \"arraybuffer\" })\r\n      .then((res) => {\r\n        const file = new Blob([res.data], {\r\n          type: \"application/zip\",\r\n        });\r\n        const fileURL = URL.createObjectURL(file);\r\n        var a = document.createElement(\"a\");\r\n        document.body.appendChild(a);\r\n        a.href = fileURL;\r\n        a.download = \"Invoice_\" + json.masothue + \"_\" + json.sobaomat + \".zip\";\r\n        a.click();\r\n        window.URL.revokeObjectURL(fileURL);\r\n        document.body.removeChild(a);\r\n      })\r\n      .catch((err) => {\r\n        console.log(err);\r\n      });\r\n  };\r\n\r\n  const pluginSave = (e) => {\r\n    var a = document.createElement(\"a\");\r\n    document.body.appendChild(a);\r\n    a.href = \"https://plugin.minvoice.com.vn/MinvoicePlugin/setup.exe\";\r\n    a.click();\r\n    document.body.removeChild(a);\r\n  };\r\n\r\n  return (\r\n    <div className=\"line-fix\">\r\n      <svg width=\"20\" height=\"20\" viewBox=\"0 0 13 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n        <path d=\"M8.14941 0.0969238L12.6494 4.59692V13.5969C12.6494 13.9947 12.4914 14.3763 12.2101 14.6576C11.9288 14.9389 11.5472 15.0969 11.1494 15.0969H2.14941C1.75159 15.0969 1.37006 14.9389 1.08875 14.6576C0.807449 14.3763 0.649414 13.9947 0.649414 13.5969V1.59692C0.649414 1.1991 0.807449 0.817568 1.08875 0.536264C1.37006 0.254959 1.75159 0.0969238 2.14941 0.0969238H8.14941ZM11.1494 13.5969V5.34692H7.39941V1.59692H2.14941V13.5969H11.1494ZM6.64941 12.8469L3.64941 9.84692H5.52441V7.59692H7.77441V9.84692H9.64941L6.64941 12.8469Z\" fill=\"#27AE60\"/>\r\n      </svg>\r\n      <a onClick={pdfSave} target=\"_blank\" title=\"Tải pdf\" className=\"fix-border-bottom\">\r\n        &nbsp;&nbsp;Tải PDF\r\n      </a>\r\n      <br />\r\n      <svg width=\"20\" height=\"20\" viewBox=\"0 0 13 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n        <path d=\"M8.14941 0.0969238L12.6494 4.59692V13.5969C12.6494 13.9947 12.4914 14.3763 12.2101 14.6576C11.9288 14.9389 11.5472 15.0969 11.1494 15.0969H2.14941C1.75159 15.0969 1.37006 14.9389 1.08875 14.6576C0.807449 14.3763 0.649414 13.9947 0.649414 13.5969V1.59692C0.649414 1.1991 0.807449 0.817568 1.08875 0.536264C1.37006 0.254959 1.75159 0.0969238 2.14941 0.0969238H8.14941ZM11.1494 13.5969V5.34692H7.39941V1.59692H2.14941V13.5969H11.1494ZM6.64941 12.8469L3.64941 9.84692H5.52441V7.59692H7.77441V9.84692H9.64941L6.64941 12.8469Z\" fill=\"#27AE60\"/>\r\n      </svg>\r\n      <a onClick={xmlSave} title=\"Tải xml\" className=\"fix-border-bottom\">\r\n        &nbsp;&nbsp;Tải XML\r\n      </a>\r\n      <br />\r\n      <svg width=\"20\" height=\"20\" viewBox=\"0 0 13 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n        <path d=\"M8.14941 0.0969238L12.6494 4.59692V13.5969C12.6494 13.9947 12.4914 14.3763 12.2101 14.6576C11.9288 14.9389 11.5472 15.0969 11.1494 15.0969H2.14941C1.75159 15.0969 1.37006 14.9389 1.08875 14.6576C0.807449 14.3763 0.649414 13.9947 0.649414 13.5969V1.59692C0.649414 1.1991 0.807449 0.817568 1.08875 0.536264C1.37006 0.254959 1.75159 0.0969238 2.14941 0.0969238H8.14941ZM11.1494 13.5969V5.34692H7.39941V1.59692H2.14941V13.5969H11.1494ZM6.64941 12.8469L3.64941 9.84692H5.52441V7.59692H7.77441V9.84692H9.64941L6.64941 12.8469Z\" fill=\"#27AE60\"/>\r\n      </svg>\r\n      <a onClick={pluginSave} target=\"_blank\" title=\"Tải plugin\" className=\"fix-border-bottom\">\r\n        &nbsp;&nbsp;Tải Plugin ký\r\n      </a>\r\n    </div>\r\n  );\r\n}\r\n","import React from \"react\";\r\n\r\n\r\nexport default function InvoiceInfomation(data) {\r\n  const InfomationData = data.InvoiceData;\r\n  return InfomationData ? (\r\n    <div>\r\n      <table className=\"table table-sm\">\r\n        <tbody>\r\n          <tr>\r\n            <td>Mẫu số</td>\r\n            <td align=\"right\">{InfomationData.mau_hd}</td>\r\n          </tr>\r\n          <tr>\r\n            <td>Ký hiệu</td>\r\n            <td align=\"right\">{InfomationData.inv_invoiceSeries}</td>\r\n          </tr>\r\n          <tr>\r\n            <td>Ngày hóa đơn</td>\r\n            <td align=\"right\">{InfomationData.inv_invoiceIssuedDate}</td>\r\n          </tr>\r\n          <tr>\r\n            <td>Số hóa đơn</td>\r\n            <td align=\"right\">{InfomationData.inv_invoiceNumber}</td>\r\n          </tr>\r\n          <tr>\r\n            <td>Tổng tiền</td>\r\n            <td align=\"right\">{parseFloat(InfomationData.sum_tien).toLocaleString()}</td>\r\n          </tr>\r\n        </tbody>\r\n      </table>\r\n    </div>\r\n  ) : (\r\n    <></>\r\n  );\r\n}\r\n","import React from \"react\";\r\nimport axiosInstance from \"../../helper/axio\";\r\nimport LoadingOverlay from 'react-loading-overlay';\r\n\r\nexport default function InvoiceOptions({ InvoiceDatas }) {\r\n  const url = \"Search/SearchInvoice\";\r\n  //để dđây chờ url in cđ\r\n  const url_InvoiceCusPDF = \"Search/PrintInvoiceCusPDF\";\r\n  \r\n  const [isLoad, setisLoad] = React.useState(false); // Trạng thái mở Modal\r\n\r\n  const loadPdf = (data) => {\r\n    InvoiceDatas.inchuyendoi = \"1\";\r\n    setisLoad(true);\r\n    axiosInstance\r\n      .post(InvoiceDatas.InvoiceCus ? url_InvoiceCusPDF : url, InvoiceDatas, {\r\n        responseType: \"arraybuffer\",\r\n      })\r\n      .then((res) => {\r\n        setisLoad(false);\r\n        const file = new Blob([res.data], {\r\n          type: \"application/pdf\",\r\n        });\r\n        const fileURL = URL.createObjectURL(file);\r\n        const pdfWindow = window.open();\r\n        pdfWindow.location.href = fileURL;\r\n      })\r\n      .catch((err) => {\r\n        setisLoad(false);\r\n        console.log(err);\r\n      });\r\n  };\r\n  const directLink = (e) => {\r\n    var a = document.createElement(\"a\");\r\n    document.body.appendChild(a);\r\n    a.href = \"http://tracuuhoadon.gdt.gov.vn/tc1hd.html\";\r\n    a.target = \"_blank\";\r\n    a.click();\r\n    document.body.removeChild(a);\r\n  };\r\n\r\n  return (\r\n    <div className=\"line-fix\">\r\n      <svg\r\n        xmlns=\"http://www.w3.org/2000/svg\"\r\n        width=\"18\"\r\n        height=\"18\"\r\n        fill=\"currentColor\"\r\n        className=\"bi bi-printer\"\r\n        viewBox=\"0 0 16 16\"\r\n      >\r\n        <path d=\"M2.5 8a.5.5 0 1 0 0-1 .5.5 0 0 0 0 1z\" />\r\n        <path d=\"M5 1a2 2 0 0 0-2 2v2H2a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h1v1a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2v-1h1a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-1V3a2 2 0 0 0-2-2H5zM4 3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v2H4V3zm1 5a2 2 0 0 0-2 2v1H2a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1v-1a2 2 0 0 0-2-2H5zm7 2v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1z\" fill=\"#4B65EB\"/>\r\n      </svg>\r\n      <a onClick={loadPdf} className=\"fix-border-bottom fix-top\">&nbsp;&nbsp;In Chuyển đổi</a>\r\n      <br />\r\n      <svg\r\n        xmlns=\"http://www.w3.org/2000/svg\"\r\n        width=\"18\"\r\n        height=\"18\"\r\n        fill=\"currentColor\"\r\n        className=\"bi bi-search\"\r\n        viewBox=\"0 0 16 16\"\r\n      >\r\n        <path d=\"M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z\"fill=\"#BB6BD9\" />\r\n      </svg>\r\n      <a onClick={directLink} className=\"fix-border-bottom fix-top\">&nbsp;&nbsp;Tra cứu kê khai thuế</a>\r\n      <LoadingOverlay\r\n          active={isLoad}\r\n          spinner\r\n          styles={{\r\n            wrapper: {\r\n              width: '0px',\r\n              height: '0px',\r\n            }\r\n          }}\r\n        >\r\n       \r\n        </LoadingOverlay>\r\n    </div>\r\n  );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Moment  from 'moment';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n  form: {\r\n    display: \"flex\",\r\n    flexDirection: \"column\",\r\n    margin: \"auto\",\r\n    width: \"fit-content\",\r\n  },\r\n  formControl: {\r\n    marginTop: theme.spacing(2),\r\n    minWidth: 120,\r\n  },\r\n  formControlLabel: {\r\n    marginTop: theme.spacing(1),\r\n  },\r\n  table: {\r\n    minWidth: 650,\r\n  },\r\n}));\r\n\r\nexport default function PopupKH({ openKH, dataKH, onHide }) {\r\n  const classes = useStyles();\r\n  const [maxWidth, setMaxWidth] = React.useState(\"xl\");\r\n  return (\r\n    <React.Fragment>\r\n      <Dialog\r\n        fullWidth={true}\r\n        maxWidth={maxWidth}\r\n        open={openKH}\r\n        onClose={onHide}\r\n        aria-labelledby=\"max-width-dialog-title\"\r\n      >\r\n        <DialogTitle id=\"max-width-dialog-title\">\r\n          Thông tin khách hàng\r\n        </DialogTitle>\r\n        <br />\r\n        <DialogContent>\r\n          <TableContainer component={Paper}>\r\n            <Table\r\n              className={classes.table}\r\n              size=\"small\"\r\n              aria-label=\"a dense table\"\r\n            >\r\n              <TableHead className=\"font-weight-bold\" style={{backgroundColor : \"#ebc610\"}}>\r\n                <TableRow >\r\n                  <TableCell align=\"center\">Tên C.ty</TableCell>\r\n                  <TableCell align=\"center\">Địa chỉ</TableCell>\r\n                  <TableCell align=\"center\">Mã số thuế</TableCell>\r\n                  <TableCell align=\"center\">Cơ quan thuế Q.lý</TableCell>\r\n                  <TableCell align=\"center\">Cơ quan thuế cấp tỉnh</TableCell>\r\n                  <TableCell align=\"center\">Ngày thành lập</TableCell>\r\n                  <TableCell align=\"center\">Người đại diện</TableCell>\r\n                </TableRow>\r\n              </TableHead>\r\n              <TableBody>\r\n                {dataKH && dataKH.length > 0 && dataKH.map((row,index) => (\r\n                  <TableRow key={index}>\r\n                    <TableCell align=\"center\">{row.ten_cty}</TableCell>\r\n                    <TableCell align=\"center\">{row.dia_chi}</TableCell>\r\n                    <TableCell align=\"center\">{row.ma_so_thue}</TableCell>\r\n                    <TableCell align=\"center\">{row.cqthue_ql}</TableCell>\r\n                    <TableCell align=\"center\">{row.cqthuecap_tinh}</TableCell>\r\n                    <TableCell align=\"center\">{Moment(row.ngay_thanh_lap).format('DD/MM/YYYY')}</TableCell>\r\n                    <TableCell align=\"center\">{row.nguoi_dai_dien}</TableCell>\r\n                  </TableRow>\r\n                ))}\r\n              </TableBody>\r\n            </Table>\r\n          </TableContainer>\r\n        </DialogContent>\r\n        <DialogActions>\r\n          <Button\r\n            onClick={() => {\r\n              onHide();\r\n            }}\r\n            color=\"primary\"\r\n          >\r\n            Thoát\r\n          </Button>\r\n        </DialogActions>\r\n      </Dialog>\r\n    </React.Fragment>\r\n  );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableContainer from \"@material-ui/core/TableContainer\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Moment  from 'moment';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n  form: {\r\n    display: \"flex\",\r\n    flexDirection: \"column\",\r\n    margin: \"auto\",\r\n    width: \"fit-content\",\r\n  },\r\n  formControl: {\r\n    marginTop: theme.spacing(2),\r\n    minWidth: 120,\r\n  },\r\n  formControlLabel: {\r\n    marginTop: theme.spacing(1),\r\n  },\r\n  table: {\r\n    minWidth: 650,\r\n  },\r\n}));\r\n\r\nexport default function PopupTBPH({ open, data, onHide }) {\r\n  const classes = useStyles();\r\n  const [maxWidth, setMaxWidth] = React.useState(\"xl\");\r\n  return (\r\n    <React.Fragment>\r\n      <Dialog\r\n        fullWidth={true}\r\n        maxWidth={maxWidth}\r\n        open={open}\r\n        onClose={onHide}\r\n        aria-labelledby=\"max-width-dialog-title\"\r\n        \r\n      >\r\n        <DialogTitle id=\"max-width-dialog-title\">\r\n          Thông báo phát hành\r\n        </DialogTitle>\r\n        <br />\r\n        <DialogContent>\r\n          <TableContainer component={Paper}>\r\n            <Table\r\n              className={classes.table}\r\n              size=\"small\"\r\n              aria-label=\"a dense table\"\r\n            >\r\n              <TableHead className=\"font-weight-bold\" style={{backgroundColor : \"#ebc610\"}}>\r\n                <TableRow >\r\n                  <TableCell align=\"center\">Ngày thông báo</TableCell>\r\n                  <TableCell align=\"center\">Số thông báo</TableCell>\r\n                  <TableCell align=\"center\">Ngày bắt đầu SD</TableCell>\r\n                  <TableCell align=\"center\">Mẫu số</TableCell>\r\n                  <TableCell align=\"center\">Ký hiệu</TableCell>\r\n                  <TableCell align=\"center\">Số lượng</TableCell>\r\n                  <TableCell align=\"center\">Từ số</TableCell>\r\n                  <TableCell align=\"center\">Đến số</TableCell>\r\n                  <TableCell align=\"center\">Tại đơn vị</TableCell>\r\n                  <TableCell align=\"center\">Mst đơn vị</TableCell>\r\n                  {/* <TableCell align=\"center\">Số đặt in</TableCell>\r\n                  <TableCell align=\"center\">Ngày đặt in</TableCell> */}\r\n                </TableRow>\r\n              </TableHead>\r\n              <TableBody>\r\n                {data && data.data.length > 0 && data.data.map((row,index) => (\r\n                  <TableRow key={index}>\r\n                    <TableCell align=\"center\">{row.date}</TableCell>\r\n                    <TableCell align=\"center\">{row.no}</TableCell>\r\n                    <TableCell align=\"center\">{Moment(row.dataUsing).format('DD/MM/YYYY')}</TableCell>\r\n                    <TableCell align=\"center\">{row.formNo}</TableCell>\r\n                    <TableCell align=\"center\">{row.symbol}</TableCell>\r\n                    <TableCell align=\"center\">{row.quantity}</TableCell>\r\n                    <TableCell align=\"center\">{row.from}</TableCell>\r\n                    <TableCell align=\"center\">{row.to}</TableCell>\r\n                    <TableCell align=\"center\">{row.providerName}</TableCell>\r\n                    <TableCell align=\"center\">{row.providerTax}</TableCell>\r\n                    {/* <TableCell align=\"center\">{Moment(row.dateConvert).format('DD/MM/YYYY')}</TableCell>\r\n                    <TableCell align=\"center\">{Moment(row.dataUsingConvert).format('DD/MM/YYYY')}</TableCell> */}\r\n                  </TableRow>\r\n                ))}\r\n              </TableBody>\r\n            </Table>\r\n          </TableContainer>\r\n        </DialogContent>\r\n        <DialogActions>\r\n          <Button\r\n            onClick={() => {\r\n              onHide();\r\n            }}\r\n            color=\"primary\"\r\n          >\r\n            Thoát\r\n          </Button>\r\n        </DialogActions>\r\n      </Dialog>\r\n    </React.Fragment>\r\n  );\r\n}\r\n","import { hubConnection } from 'signalr-no-jquery';\r\n\r\nvar url = \"http://localhost:19898/signalr\";\r\nvar options = {\r\n    useDefaultPath: false\r\n}\r\nconst connection = hubConnection(url, options);\r\nconst hubProxy = connection.createHubProxy('invoiceHub', options);\r\n\r\nhubProxy.on('resCommand', function (message) {\r\n    console.log(message);\r\n});\r\nconnection.disconnected(function () {\r\n    console.log('Connection disconnected');\r\n    setTimeout(function () {\r\n        connection.start();\r\n    }, 2000);\r\n});\r\n\r\nconnection.start()\r\n    .done(function () { console.log('Now connected, connection ID=' + connection.id); })\r\n    .fail(function () { console.log('Could not connect'); });\r\n\r\n\r\nexport function PluginMV() {\r\n    return hubProxy;\r\n}\r\nexport function PluginConn(){\r\n    return connection;\r\n}\r\n","import React, { Component } from \"react\";\r\nimport PopupKH from \"./PopupKH\";\r\nimport axiosInstance from \"../../helper/axio\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport PopupTBPH from \"./PopupTBPH\";\r\nimport md5 from \"md5\";\r\nimport { PluginMV, PluginConn } from \"./MinvoicePlugin\";\r\nimport LoadingOverlay from 'react-loading-overlay';\r\n\r\nimport { ToastContainer, toast } from 'react-toastify';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\n\r\nvar _plugin = PluginMV();\r\nvar _conn = PluginConn();\r\n\r\nexport default function SearchInfo(data) {\r\n  const url = \"Search/SearchTBH\";\r\n  const url2 = \"Search/SearchThongTinNM\";\r\n  const [openPopup, setopenPopup] = React.useState(false); // Trạng thái mở Modal\r\n  const [openTBPH, setopenTBPH] = React.useState(false); // Trạng thái mở Modal\r\n  const [popupDataTBPH, setpopupDataTBPH] = React.useState(undefined); // Dữ liệu truyền sang modal TBPH\r\n  const [popupDataKH, setpopupDataKH] = React.useState(undefined); // Dữ liệu truyền sang modal KH\r\n  const { addToast } = useToasts();\r\n  const [isLoading, setisLoading] = React.useState(false); // wait form\r\n  const jsonPost = {\r\n    masothue: data.SearchData.masothue,\r\n    ky_hieu: data.kyHieu,\r\n    mau_so: data.mauHD,\r\n  };\r\n\r\n  const OpenTraCuu = () => {\r\n    setisLoading(true);\r\n    axiosInstance\r\n      .post(url, jsonPost)\r\n      .then((res) => {\r\n        if (res.data.code == \"99\") {\r\n          setisLoading(false);\r\n          // addToast(res.data.message, { appearance: \"error\" });\r\n          toast.warn(res.data.message, {\r\n            position: \"top-right\",\r\n            autoClose: 3000,\r\n            hideProgressBar: false,\r\n            closeOnClick: true,\r\n            pauseOnHover: true,\r\n            draggable: true,\r\n            progress: undefined,\r\n            });\r\n        } else {\r\n          setpopupDataTBPH(res.data.data);\r\n          setisLoading(false);\r\n          setopenTBPH(true);\r\n        }\r\n      })\r\n      .catch((err) => {\r\n        setisLoading(false);\r\n        if (err.data.code == \"99\") {\r\n          // addToast(err.data.message, { appearance: \"error\" });\r\n          toast.warn(err.data.message, {\r\n            position: \"top-right\",\r\n            autoClose: 3000,\r\n            hideProgressBar: false,\r\n            closeOnClick: true,\r\n            pauseOnHover: true,\r\n            draggable: true,\r\n            progress: undefined,\r\n            });\r\n        }\r\n      });\r\n  };\r\n\r\n  const OpenMstInfo = (e) => {\r\n    var jsonMstInfo = {};\r\n    if (data && data.msThue) {\r\n      jsonMstInfo = {\r\n        masothue: data.msThue,\r\n        key: md5(\r\n          \"DOANPV\" + \"CUONGNH1\" + data.msThue.substring(0, 2)\r\n        ).toUpperCase(),\r\n      };\r\n    }\r\n    setisLoading(true);\r\n    axiosInstance\r\n      .post(url2, jsonMstInfo)\r\n      .then((res) => {\r\n        setisLoading(false);\r\n        setopenPopup(true);\r\n        setpopupDataKH(res.data.data);\r\n      })\r\n      .catch((err) => {\r\n        setisLoading(false);\r\n        setopenPopup(false);\r\n      });\r\n  };\r\n  const closeToggle = () => {\r\n    setopenPopup(false);\r\n    setopenTBPH(false);\r\n  };\r\n\r\n  const ReadToken = () => {\r\n    var jsonRead = { xml: data.ecd, id: 'seller' };\r\n    if (_conn.state != 1) {\r\n      alert(\"Bạn chưa bật hoặc cài Plugin ký\");\r\n    } else {\r\n      _plugin.invoke(\"execCommand\", \"ShowCert2\", JSON.stringify(jsonRead))\r\n        .done(function (res) {\r\n          console.log(res);\r\n        })\r\n        .fail(function (error) {\r\n          console.log(error);\r\n        });\r\n    }\r\n  };\r\n\r\n  return data ? (\r\n    <div className=\"line-fix\">\r\n      <svg\r\n        xmlns=\"http://www.w3.org/2000/svg\"\r\n        width=\"18\"\r\n        height=\"18\"\r\n        fill=\"currentColor\"\r\n        className=\"bi bi-search\"\r\n        viewBox=\"0 0 16 16\"\r\n      >\r\n        <path d=\"M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z\" fill=\"#BB6BD9\"/>\r\n      </svg>\r\n      <a onClick={OpenTraCuu} className=\"fix-border-bottom fix-top\">\r\n        &nbsp;&nbsp;Tra cứu thông báo phát hành\r\n      </a>\r\n      <br />\r\n      <svg\r\n        xmlns=\"http://www.w3.org/2000/svg\"\r\n        width=\"18\"\r\n        height=\"18\"\r\n        fill=\"currentColor\"\r\n        className=\"bi bi-search\"\r\n        viewBox=\"0 0 16 16\"\r\n      >\r\n        <path d=\"M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z\" fill=\"#BB6BD9\"/>\r\n      </svg>\r\n      <a onClick={OpenMstInfo} className=\"fix-border-bottom fix-top\">\r\n        &nbsp;&nbsp;Tra cứu thông tin khách hàng\r\n      </a>\r\n      <br/>\r\n      <ToastContainer/>\r\n      <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" fill=\"currentColor\" className=\"bi bi-pencil-square\" viewBox=\"0 0 16 16\">\r\n        <path d=\"M15.502 1.94a.5.5 0 0 1 0 .706L14.459 3.69l-2-2L13.502.646a.5.5 0 0 1 .707 0l1.293 1.293zm-1.75 2.456-2-2L4.939 9.21a.5.5 0 0 0-.121.196l-.805 2.414a.25.25 0 0 0 .316.316l2.414-.805a.5.5 0 0 0 .196-.12l6.813-6.814z\" fill=\"#2C76FF\"/>\r\n        <path fill-rule=\"evenodd\" d=\"M1 13.5A1.5 1.5 0 0 0 2.5 15h11a1.5 1.5 0 0 0 1.5-1.5v-6a.5.5 0 0 0-1 0v6a.5.5 0 0 1-.5.5h-11a.5.5 0 0 1-.5-.5v-11a.5.5 0 0 1 .5-.5H9a.5.5 0 0 0 0-1H2.5A1.5 1.5 0 0 0 1 2.5v11z\" fill=\"#2C76FF\"/>\r\n      </svg>\r\n      <a onClick={ReadToken} className=\"fix-border-bottom fix-top\">\r\n        &nbsp;&nbsp;Đọc CKS người bán\r\n      </a>\r\n      <PopupKH openKH={openPopup} dataKH={popupDataKH} onHide={closeToggle} />\r\n      <PopupTBPH open={openTBPH} data={popupDataTBPH} onHide={closeToggle} />\r\n      {/* {isLoading && (\r\n        <div className=\"text-center\">\r\n          <CircularProgress />\r\n        </div>\r\n      )} */}\r\n      <LoadingOverlay\r\n          active={isLoading}\r\n          spinner\r\n          styles={{\r\n            wrapper: {\r\n              width: '0px',\r\n              height: '0px',\r\n            }\r\n          }}\r\n        >\r\n       \r\n        </LoadingOverlay>\r\n    </div>\r\n    \r\n  ) : (\r\n    <></>\r\n  );\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport axiosInstance from \"../../helper/axio\";\r\nimport ExtensionDownload from \"./ExtensionDownload\";\r\nimport InvoiceInfomation from \"./InvoiceInfomation\";\r\nimport InvoiceOptions from \"./InvoiceOptions\";\r\nimport SearchInfo from \"./SearchInfo\";\r\nimport Icon from \"@material-ui/core/Icon\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { PluginMV, PluginConn } from './MinvoicePlugin';\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport LoadingOverlay from 'react-loading-overlay';\r\n\r\nimport { ToastContainer, toast } from 'react-toastify';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n  root: {\r\n    \"& > .fa\": {\r\n      margin: theme.spacing(2),\r\n    },\r\n  },\r\n}));\r\nvar _plugin = PluginMV();\r\nvar _conn = PluginConn();\r\n\r\nexport default function GroupOptions(data) {\r\n  const classes = useStyles();\r\n  const { addToast } = useToasts(); // trạng thái hiển thị cảnh báo\r\n  const InvoiceOptionsData = data.data;\r\n  const url = \"invoice/GetInforInvoice\";\r\n  const [infoModal, setinfoModal] = React.useState(undefined); // Thông tin hóa đơn\r\n  const [InvoiceSeries, setInvoiceSeries] = React.useState(undefined); // Ký hiệu\r\n  const [MauSo, setMauSo] = React.useState(undefined); // Mẫu số\r\n  const [masoThue, setmasoThue] = React.useState(undefined); // Mã số thuế \r\n  const [authID, setauthID] = React.useState(undefined); // AuthID\r\n  const [crypt, setcrypt] = React.useState(undefined); // ConnectString\r\n  const [Ecd, setEcd] = React.useState(undefined); // Read Token người bán\r\n  \r\n  const [isLoad, setisLoad] = React.useState(false); // Trạng thái mở Modal\r\n  const jsonInfo = {\r\n    masothue: data.data.masothue,\r\n    sobaomat: data.data.sobaomat,\r\n  };\r\n\r\n  useEffect(() => {\r\n    setisLoad(true);\r\n    axiosInstance.post(url, jsonInfo).then((res) => {\r\n\r\n      setinfoModal(res.data.data.data[0]);\r\n      setInvoiceSeries(res.data.data.data[0].inv_invoiceSeries);\r\n      setMauSo(res.data.data.data[0].mau_hd);\r\n      setmasoThue(res.data.data.data[0].inv_buyerTaxCode);\r\n      setauthID(res.data.data.data[0].inv_InvoiceAuth_id);\r\n      // console.log(res.data.data.data[0].inv_InvoiceAuth_id);\r\n      setcrypt(res.data.data.data[0].auth_id);\r\n      setEcd(res.data.data.data[0].ecd);\r\n      setisLoad(false);\r\n    });\r\n  }, []);\r\n\r\n  const signInvoice = () => {\r\n\r\n    var crypts = atob(crypt);\r\n    // Người mua ký điiiiiiiiiiiiiiiiiiiiiiiiii\r\n    if (_conn.state != 1) {\r\n\r\n      //addToast(\"Không có hoặc chưa bật Plugin ký. Vui lòng kiểm tra lại\", { appearance: \"error\" });\r\n\r\n      toast.warn('Không có hoặc chưa bật Plugin ký. Vui lòng kiểm tra lại !', {\r\n        position: \"top-right\",\r\n        autoClose: 3000,\r\n        hideProgressBar: false,\r\n        closeOnClick: true,\r\n        pauseOnHover: true,\r\n        draggable: true,\r\n        progress: undefined,\r\n      });\r\n    }\r\n    else {\r\n      setisLoad(true);\r\n      _plugin.invoke('SignatureXML', masoThue, authID, crypts)\r\n        .done(function (res) {\r\n          //addToast(res, { appearance: \"success\" });\r\n          setisLoad(false);\r\n          toast.success(res, {\r\n            position: \"top-right\",\r\n            autoClose: 3000,\r\n            hideProgressBar: false,\r\n            closeOnClick: true,\r\n            pauseOnHover: true,\r\n            draggable: true,\r\n            progress: undefined,\r\n          });\r\n        })\r\n        .fail(function (error) {\r\n          setisLoad(false);\r\n          // addToast(error, { appearance: \"error\" });\r\n          toast.warn(error, {\r\n            position: \"top-right\",\r\n            autoClose: 3000,\r\n            hideProgressBar: false,\r\n            closeOnClick: true,\r\n            pauseOnHover: true,\r\n            draggable: true,\r\n            progress: undefined,\r\n          });\r\n        });\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div className=\"container fix-cusor \">\r\n      <form className={classes.root}>\r\n        <InvoiceInfomation InvoiceData={infoModal} />\r\n        <div align=\"right\">\r\n          <button\r\n            type=\"button\"\r\n            className=\"btn btn-primary fix-top\"\r\n            onClick={signInvoice}\r\n          >\r\n            <svg\r\n              xmlns=\"http://www.w3.org/2000/svg\"\r\n              width=\"18\"\r\n              height=\"18\"\r\n              fill=\"currentColor\"\r\n              className=\"bi bi-pencil\"\r\n              viewBox=\"0 0 16 16\"\r\n            >\r\n              <path d=\"M12.146.146a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1 0 .708l-10 10a.5.5 0 0 1-.168.11l-5 2a.5.5 0 0 1-.65-.65l2-5a.5.5 0 0 1 .11-.168l10-10zM11.207 2.5 13.5 4.793 14.793 3.5 12.5 1.207 11.207 2.5zm1.586 3L10.5 3.207 4 9.707V10h.5a.5.5 0 0 1 .5.5v.5h.5a.5.5 0 0 1 .5.5v.5h.293l6.5-6.5zm-9.761 5.175-.106.106-1.528 3.821 3.821-1.528.106-.106A.5.5 0 0 1 5 12.5V12h-.5a.5.5 0 0 1-.5-.5V11h-.5a.5.5 0 0 1-.468-.325z\" />\r\n            </svg>\r\n            &nbsp;&nbsp;&nbsp;Người mua ký hóa đơn&nbsp;\r\n          </button>\r\n        </div>\r\n        {/* <ToastContainer/> */}\r\n\r\n        <ExtensionDownload infomationInvoice={InvoiceOptionsData} />\r\n        <InvoiceOptions InvoiceDatas={InvoiceOptionsData} />\r\n        <SearchInfo\r\n          SearchData={InvoiceOptionsData}\r\n          mauHD={MauSo}\r\n          kyHieu={InvoiceSeries}\r\n          msThue={masoThue}\r\n          ecd={Ecd}\r\n        />\r\n      </form>\r\n      <LoadingOverlay\r\n          active={isLoad}\r\n          spinner\r\n          styles={{\r\n            wrapper: {\r\n              width: '0px',\r\n              height: '0px',\r\n            }\r\n          }}\r\n        >\r\n       \r\n        </LoadingOverlay>\r\n    </div>\r\n  );\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport List from \"@material-ui/core/List\";\r\nimport AppBar from \"@material-ui/core/AppBar\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport GroupOptions from \"./ModalOptions/GroupOptions\";\r\nimport { DialogContent } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n  appBar: {\r\n    position: \"relative\",\r\n  },\r\n  title: {\r\n    marginLeft: theme.spacing(2),\r\n    flex: 1,\r\n  },\r\n}));\r\n\r\nexport default function ExportModal({ hide, open, byteData, infoModal }) {\r\n  const classes = useStyles();\r\n  const [scroll, setScroll] = React.useState(\"paper\");\r\n  const file = new Blob([byteData], {\r\n    type: \"application/pdf\",\r\n  });\r\n  const [maxWidth, setMaxWidth] = React.useState(\"lg\");\r\n  const fileURL = URL.createObjectURL(file);\r\n  return (\r\n    <div className=\"container-fluid \">\r\n      <Dialog\r\n        fullWidth={true}\r\n        maxWidth={maxWidth}\r\n        open={open}\r\n        onClose={hide}\r\n        scroll={\"paper\"}\r\n        className=\" fix-dialog \"\r\n      >\r\n        <AppBar className={classes.appBar}>\r\n          <Toolbar style={{ paddingRight: \"20px,\" }}>\r\n            {\" \"}\r\n            <IconButton\r\n              edge=\"start\"\r\n              color=\"inherit\"\r\n              onClick={hide}\r\n              aria-label=\"close\"\r\n            >\r\n              <CloseIcon />\r\n            </IconButton>\r\n            &nbsp;&nbsp;Hóa đơn điện tử M-Invoice\r\n          </Toolbar>\r\n        </AppBar>\r\n        <DialogContent dividers={scroll === \"paper\"} className=\"overflow-auto\">\r\n          <List className=\"row h-100\">\r\n            <div className=\"col-2 col-sm-12 col-xs-12 col-md-3\">\r\n              <div className=\"align-items-center justify-content-between\">\r\n                <span className=\"fix-center-text line-fix\">THÔNG TIN HÓA ĐƠN</span>\r\n              </div>\r\n              <div>\r\n                <GroupOptions data={infoModal} />\r\n              </div>\r\n            </div>\r\n            <div className=\"col-10 col-sm-12 col-xs-12 col-md-9 \">\r\n              <iframe\r\n                style={{ width: \"100%\", height: \"95%\" }}\r\n                src={fileURL}\r\n              ></iframe>\r\n            </div>\r\n          </List>\r\n        </DialogContent>\r\n      </Dialog>\r\n    </div>\r\n  );\r\n}\r\n","import React, { Component } from 'react';\r\nimport { DataGrid, formatDateToLocalInputDate  } from '@material-ui/data-grid';\r\nimport { useEffect, useState } from \"react\";\r\nimport DatePicker from \"react-datepicker\";\r\nimport dateFormat from 'dateformat';\r\n// import { makeStyles } from '@material-ui/core/styles';\r\n// import { createMuiTheme, darken, lighten } from '@material-ui/core/styles';\r\n\r\n\r\n// import required css from library\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport './LookupInvoice.css';\r\n\r\nimport axiosInstance from \"../../helper/axio\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\n\r\n//redux and route\r\nimport { Logout } from '../../action/Dispatch';\r\nimport { ContentBody } from '../../action/Dispatch';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { connect } from \"react-redux\";\r\n//import icon, button\r\nimport Button from '@material-ui/core/Button';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faSync } from '@fortawesome/free-solid-svg-icons'\r\nimport { faCalendarCheck } from '@fortawesome/free-regular-svg-icons'\r\nimport LoadingOverlay from 'react-loading-overlay';\r\n\r\nimport ExportModal from \"../ExportModal\";\r\n\r\n// const useStyles = makeStyles((theme) => ({\r\n//   button: {\r\n//     // margin: theme.spacing(1),\r\n//   },\r\n// }));\r\n//  const defaultTheme = createMuiTheme();\r\n// const useStyles = makeStyles(\r\n//   (theme) => {\r\n//     const getBackgroundColor = (color) =>\r\n//       getThemePaletteMode(theme.palette) === 'dark'\r\n//         ? darken(color, 0.6)\r\n//         : lighten(color, 0.6);\r\n\r\n//     const getHoverBackgroundColor = (color) =>\r\n//       getThemePaletteMode(theme.palette) === 'dark'\r\n//         ? darken(color, 0.5)\r\n//         : lighten(color, 0.5);\r\n\r\n//     return {\r\n//       root: {\r\n//         '& .super-app-theme--Open': {\r\n//           backgroundColor: getBackgroundColor(theme.palette.info.main),\r\n//           '&:hover': {\r\n//             backgroundColor: getHoverBackgroundColor(theme.palette.info.main),\r\n//           },\r\n//         },\r\n//         '& .super-app-theme--Filled': {\r\n//           backgroundColor: getBackgroundColor(theme.palette.success.main),\r\n//           '&:hover': {\r\n//             backgroundColor: getHoverBackgroundColor(theme.palette.success.main),\r\n//           },\r\n//         },\r\n//         '& .super-app-theme--PartiallyFilled': {\r\n//           backgroundColor: getBackgroundColor(theme.palette.warning.main),\r\n//           '&:hover': {\r\n//             backgroundColor: getHoverBackgroundColor(theme.palette.warning.main),\r\n//           },\r\n//         },\r\n//         '& .super-app-theme--Rejected': {\r\n//           backgroundColor: getBackgroundColor(theme.palette.error.main),\r\n//           '&:hover': {\r\n//             backgroundColor: getHoverBackgroundColor(theme.palette.error.main),\r\n//           },\r\n//         },\r\n//       },\r\n//     };\r\n//   },\r\n//    { defaultTheme },\r\n// );\r\n\r\nconst LookupEinvoice = (props) => {\r\n\r\n  // const classes = useStyles();\r\n  // const classes = useStyles();\r\n  const url = \"invoice/SearchMultiInvoice\";\r\n  const url_printInvoice = \"Search/PrintInvoiceCusPDF\";\r\n  const url_downloadInvoice = \"Search/ExportXmlInvoice\";\r\n\r\n  const [isLoading, setLoading] = useState(false); //state loading\r\n  const [isLoadingButton, setLoadingButton] = useState(false); //state loading button\r\n\r\n  const [StateLookup, setStateLookup] = useState({ tu_ngay: new Date(\"01/01/2011\"), den_ngay: new Date(), masothue: props.user.user?.mst });\r\n  // const [ToDate, setToDate] = useState(new Date());\r\n  const { addToast } = useToasts(); //hiển thị cảnh báo\r\n  const [pageSize, setPageSize] = React.useState(30); //set page size\r\n  const [data_rows, setdata_rows] = React.useState([]); // set data from API fill in Grid\r\n\r\n  const [openModal, setOpenModal] = React.useState(false); // Trạng thái mở Modal\r\n\r\n  const [byteData, setByteData] = React.useState(undefined); // Dữ liệu truyền sang modal\r\n  const [infoModal, setinfoModal] = React.useState(undefined); // Dữ liệu truyền sang modal\r\n  const datepickerRef = React.useRef(null);\r\n  const datepickerRef2 = React.useRef(null);\r\n  useEffect(() => {\r\n    props.ContentBody(false);\r\n\r\n\r\n\r\n    //componentDidMount\r\n    if (props.user.isLoggedIn == false) {\r\n      setLoadingButton(false);\r\n      addToast(\"Bạn chưa đăng nhập!\", { appearance: \"error\" });\r\n      //đưa về trang chủ\r\n      localStorage.removeItem(\"user\");\r\n      props.ContentBody(true);\r\n      props.Logout();\r\n\r\n      props.history.push({ pathname: '/', state: \"mutiple\" });\r\n\r\n    }\r\n    else {\r\n      const axiosConfig = {\r\n        headers: {\r\n          'Content-Type': 'application/json;charset=UTF-8',\r\n          'Authorization': `Bearer ${props.user.user?.token}`\r\n        }\r\n      };\r\n      // var settungay = convertDate(StateLookup.tu_ngay);\r\n      var data_Lookup = {\r\n        tu_ngay: dateFormat(StateLookup.tu_ngay, \"yyyy-mm-dd\"),\r\n        den_ngay: dateFormat(StateLookup.den_ngay, \"yyyy-mm-dd\"),\r\n        masothue: StateLookup.masothue,\r\n        ma_dt: props.user.user.ma_dt\r\n      };\r\n\r\n      axiosInstance\r\n        .post(url, data_Lookup, axiosConfig)\r\n        .then((res) => {\r\n          if (res.data.code == '00') {\r\n            if (res.data.data != null) {\r\n              if (res.data.data.data.length > 0) {\r\n\r\n                var sortedObjs = res.data.data.data.sort((a, b) => Number(b.inv_invoiceNumber) - Number(a.inv_invoiceNumber));\r\n                for (var i = 0; i < sortedObjs.length; i++) {\r\n                  sortedObjs[i].id = i + 1;\r\n                }\r\n                setdata_rows(res.data.data.data);\r\n                setLoadingButton(false);\r\n              }\r\n              else {\r\n                setLoadingButton(false);\r\n                addToast(\"Không tìm thấy hóa đơn trong khoảng ngày này!\", { appearance: \"error\" });\r\n              }\r\n            }\r\n            else{\r\n              setLoadingButton(false);\r\n              addToast(\"Không tìm thấy hóa đơn trong khoảng ngày này!\", { appearance: \"error\" });\r\n            }\r\n          }\r\n\r\n          // setOpenModal(true);\r\n        })\r\n        .catch((err) => {\r\n          if(err.message.includes('Network')){\r\n            addToast(err.message, { appearance: \"error\" });\r\n            setLoadingButton(false);\r\n          }\r\n          else{\r\n            if (err.response.status == 401) {\r\n              setLoadingButton(false);\r\n              localStorage.removeItem(\"user\");\r\n              props.ContentBody(true);\r\n              props.Logout();\r\n              addToast(\"Phiên đăng nhập hết hạn vui lòng đăng nhập lại!\", { appearance: \"error\" });\r\n              props.history.push({ pathname: '/', state: \"mutiple\" });\r\n  \r\n            }\r\n            else {\r\n              if (JSON.stringify(err).includes('message')) {\r\n                addToast(err.message, { appearance: \"error\" });\r\n                setLoadingButton(false);\r\n              }\r\n              else { addToast(err.message, { appearance: \"error\" }); setLoadingButton(false); }\r\n            }\r\n          }\r\n          \r\n\r\n\r\n        });\r\n    }\r\n\r\n  \r\n\r\n  }, []);\r\n  // const convertDate =(date) =>{\r\n  //  return new  Intl.DateTimeFormat(\"en-US\", {\r\n  //   year: 'numeric',\r\n  //   month: '2-digit',\r\n  //   day: '2-digit'\r\n  //   }).format(date);\r\n  // }\r\n  if (props.user.isLoggedIn == false) {\r\n    props.ContentBody(true);\r\n    props.history.push('/');\r\n  }\r\n\r\n  function toggle() {\r\n    setOpenModal(!openModal);\r\n  }\r\n\r\n  const ClickDownloadXML = (params) => {\r\n\r\n    //gọi api get thông tin hđ\r\n    setLoading(true);\r\n    const data_json = { sobaomat: params.row.sobaomat, masothue: StateLookup.masothue, type: \"PDF\", inchuyendoi: \"1\" };\r\n\r\n    axiosInstance\r\n      .post(url_downloadInvoice, data_json, { responseType: \"arraybuffer\" })\r\n      .then((res) => {\r\n        const file = new Blob([res.data], {\r\n          type: \"application/zip\",\r\n        });\r\n        const fileURL = URL.createObjectURL(file);\r\n        var a = document.createElement(\"a\");\r\n        document.body.appendChild(a);\r\n        a.href = fileURL;\r\n        a.download = \"Invoice_\" + data_json.masothue + \"_\" + data_json.sobaomat +\"_\"+params.row.inv_invoiceNumber+ \".zip\";\r\n        a.click();\r\n        window.URL.revokeObjectURL(fileURL);\r\n        document.body.removeChild(a);\r\n\r\n        setLoading(false);\r\n      })\r\n      .catch((err) => {\r\n        addToast(err.message, { appearance: \"error\" });\r\n        setLoading(false);\r\n      });\r\n    // data.InvoiceCus = true;\r\n    // setinfoModal(data);\r\n  }\r\n\r\n  const ClickView = (params) => {\r\n    //gọi api get thông tin hđ\r\n    setLoading(true);\r\n    const data = { sobaomat: params.row.sobaomat, masothue: StateLookup.masothue, type: \"PDF\" };\r\n\r\n    axiosInstance\r\n      .post(url_printInvoice, data, { responseType: \"arraybuffer\" })\r\n      .then((res) => {\r\n        setByteData(res.data);\r\n        setOpenModal(true);\r\n\r\n        setLoading(false);\r\n      })\r\n      .catch((err) => {\r\n        addToast(err.message, { appearance: \"error\" });\r\n        setLoading(false);\r\n      });\r\n    data.InvoiceCus = true;\r\n    setinfoModal(data);\r\n  }\r\n\r\n  const columns = [\r\n    { field: \"id\", headerName: \"STT\", width: 130, renderHeader: () => (<strong>{'STT'}</strong>), identity: true },\r\n    { field: \"mau_hd\", headerName: \"Mẫu số\", headerAlign: \"center\", align: \"left\", width: 150, renderHeader: () => (<strong>{'Mẫu số'}</strong>) },\r\n    { field: \"inv_invoiceSeries\", headerName: \"Ký hiệu\", headerAlign: \"center\", align: \"left\", width: 140, renderHeader: () => (<strong>{'Ký hiệu'}</strong>) },\r\n    { field: \"inv_invoiceNumber\", headerName: \"Số hóa đơn\", headerAlign: \"center\", align: \"left\", type: \"number\", width: 160, renderHeader: () => (<strong>{'Số hóa đơn'}</strong>),\r\n    \r\n    renderCell: (params) => (\r\n     <span style={{color:\"#2c76ff\"}}>{params.row.inv_invoiceNumber}</span>\r\n\r\n    )\r\n  \r\n    },\r\n    {\r\n      field: \"inv_invoiceIssuedDate\", headerName: \"Ngày hóa đơn\", headerAlign: \"center\", align: \"left\", type: \"date\", width: 180, renderHeader: () => (<strong>{'Ngày hóa đơn'}</strong>),\r\n      valueFormatter: (params) => {\r\n        const valueFormatted = dateFormat(params.value, \"dd/mm/yyyy\");\r\n        return valueFormatted;\r\n\r\n      }\r\n    },\r\n    {\r\n      field: \"inv_TotalAmount\", headerName: \"Tổng tiền\", type: \"number\", headerAlign: \"center\", align: \"left\", description: \"\", width: 150, renderHeader: () => (<strong>{'Tổng tiền'}</strong>)\r\n      // sortable: false,\r\n      // width: 160,\r\n      // valueGetter: (params) =>\r\n      //   `${params.getValue(\"firstName\") || \"\"} ${\r\n      //     params.getValue(\"lastName\") || \"\"\r\n      //   }`\r\n    },\r\n    {\r\n      field: \"action\", headerName: \"Action\", headerAlign: \"center\", align: \"left\", width: 160, renderHeader: () => (<strong>{'Tải xuống'}</strong>),\r\n      renderCell: (params) => (\r\n        <>\r\n        <Button\r\n          variant=\"contained\"\r\n          color=\"primary\"\r\n          size=\"small\"\r\n          className=\"fix_buttonXML\"\r\n          onClick={() => ClickDownloadXML(params)}\r\n\r\n        >\r\n          XML\r\n        </Button>\r\n        <Button\r\n          variant=\"contained\"\r\n          color=\"primary\"\r\n          size=\"small\"\r\n          className=\"fix_buttonPDF\"\r\n          onClick={() => ClickView(params)}\r\n\r\n        >\r\n          PDF\r\n        </Button>\r\n        </>\r\n      )\r\n    }\r\n  ];\r\n\r\n\r\n\r\n\r\n  const searchInvoiceList = () => {\r\n\r\n    setLoadingButton(true);\r\n    //gọi api\r\n\r\n    if (props.user.isLoggedIn == false) {\r\n      setLoadingButton(false);\r\n      addToast(\"Bạn chưa đăng nhập!\", { appearance: \"error\" });\r\n      //đưa về trang chủ\r\n      localStorage.removeItem(\"user\");\r\n      props.ContentBody(true);\r\n      props.Logout();\r\n\r\n      props.history.push({ pathname: '/', state: \"mutiple\" });\r\n\r\n    }\r\n    else {\r\n      const axiosConfig = {\r\n        headers: {\r\n          'Content-Type': 'application/json;charset=UTF-8',\r\n          'Authorization': `Bearer ${props.user.user?.token}`\r\n        }\r\n      };\r\n      // var settungay = convertDate(StateLookup.tu_ngay);\r\n      var data_Lookup = {\r\n        tu_ngay: dateFormat(StateLookup.tu_ngay, \"yyyy-mm-dd\"),\r\n        den_ngay: dateFormat(StateLookup.den_ngay, \"yyyy-mm-dd\"),\r\n        masothue: StateLookup.masothue,\r\n        ma_dt: props.user.user.ma_dt\r\n      };\r\n\r\n      axiosInstance\r\n        .post(url, data_Lookup, axiosConfig)\r\n        .then((res) => {\r\n          if (res.data.code == '00') {\r\n            if (res.data.data != null) {\r\n              if (res.data.data.data.length > 0) {\r\n\r\n                var sortedObjs = res.data.data.data.sort((a, b) => Number(b.inv_invoiceNumber) - Number(a.inv_invoiceNumber));\r\n                for (var i = 0; i < sortedObjs.length; i++) {\r\n                  sortedObjs[i].id = i + 1;\r\n                }\r\n                setdata_rows(res.data.data.data);\r\n                setLoadingButton(false);\r\n              }\r\n              else {\r\n                setLoadingButton(false);\r\n                addToast(\"Không tìm thấy hóa đơn trong khoảng ngày này!\", { appearance: \"error\" });\r\n              }\r\n            }\r\n            else{\r\n              setLoadingButton(false);\r\n              addToast(\"Không tìm thấy hóa đơn trong khoảng ngày này!\", { appearance: \"error\" });\r\n            }\r\n          }\r\n\r\n          // setOpenModal(true);\r\n        })\r\n        .catch((err) => {\r\n          if(err.message.includes('Network')){\r\n            addToast(err.message, { appearance: \"error\" });\r\n            setLoadingButton(false);\r\n          }\r\n          else{\r\n            if (err.response.status == 401) {\r\n              setLoadingButton(false);\r\n              localStorage.removeItem(\"user\");\r\n              props.ContentBody(true);\r\n              props.Logout();\r\n              addToast(\"Phiên đăng nhập hết hạn vui lòng đăng nhập lại!\", { appearance: \"error\" });\r\n              props.history.push({ pathname: '/', state: \"mutiple\" });\r\n  \r\n            }\r\n            else {\r\n              if (JSON.stringify(err).includes('message')) {\r\n                addToast(err.message, { appearance: \"error\" });\r\n                setLoadingButton(false);\r\n              }\r\n              else { addToast(err.message, { appearance: \"error\" }); setLoadingButton(false); }\r\n            }\r\n          }\r\n          \r\n\r\n\r\n        });\r\n    }\r\n\r\n  }\r\n\r\n  const handlePageSizeChange = (params) => {\r\n    setPageSize(params.pageSize);\r\n  };\r\n\r\n  return (\r\n\r\n    <div>\r\n      {/* {isLoading ? <div className=\"modal fade fadeIn\"><div className=\"fix_trans\"> <FontAwesomeIcon className=\"spin_config\" icon={faSync} size=\"3x\" /></div> </div> : null} */}\r\n      <LoadingOverlay\r\n          active={isLoading}\r\n          spinner\r\n          styles={{\r\n            wrapper: {\r\n              width: '0px',\r\n              height: '0px',\r\n            }\r\n          }}\r\n        >\r\n       \r\n      </LoadingOverlay>\r\n      <div className=\"d-flex flex-column-fluid\">\r\n        <div className=\"container-invoice-list\">\r\n          <div className=\"card card-custom gutter-b\">\r\n            <div className=\"card-body p-0\">\r\n              <div className=\" border-0 bgr-grid\" >\r\n                <div className=\"row tilte-grid\">\r\n                  {/* <div className=\"col-lg-1 col-md-1 col-sm-2 col-xs-2 text-right\">\r\n                    <span className=\"card-label font-weight-bolder text-white\"> Thời gian</span>\r\n                  </div> */}\r\n\r\n                  <div className=\"col-lg-3 col-md-3 col-sm-4 col-xs-4 col-12 fix_tungay fix_mobe\">\r\n                    <div className=\"form-group\">\r\n                      {/* <label className=\"card-label font-weight-bolder text-white text-left\" style={{ float: 'left', width: '100%' }}>Từ ngày</label> */}\r\n                      <label onClick={e =>  e.preventDefault()} style={{ position: \"relative\", width: \"100%\" }}>\r\n                      \r\n                        <DatePicker\r\n                          ref={datepickerRef}\r\n                          placeholderText=\"Từ ngày\"\r\n                          selected={StateLookup.tu_ngay}\r\n                          onChange={date => setStateLookup({ ...StateLookup, tu_ngay: date })}\r\n                          dateFormat=\"dd/MM/yyyy\"\r\n                          showMonthDropdown\r\n                          showYearDropdown\r\n                          peekNextMonth\r\n                          dropdownMode=\"select\"\r\n                          className=\"fix-picker\"\r\n                          shouldCloseOnSelect={true}\r\n                        />\r\n                      \r\n                        <FontAwesomeIcon onClick={ ()=> datepickerRef.current.setOpen(true)} className=\"datepick_font\" icon={faCalendarCheck} size=\"1x\" />\r\n                        \r\n                      </label>\r\n                      {/* <i className=\"fa fa-calendar\" aria-hidden=\"true\"></i> */}\r\n                    </div>\r\n                  </div>\r\n                  <div className=\"col-lg-3 col-md-3 col-sm-4 col-xs-4 col-12 fix_mobe\">\r\n                    <div className=\"form-group\">\r\n                      {/* <label className=\"card-label font-weight-bolder text-white text-left\" style={{ float: 'left', width: '100%' }}>Đến ngày</label> */}\r\n                      <label onClick={e =>  e.preventDefault()} style={{ position: \"relative\",width: \"100%\" }}>\r\n                        <DatePicker\r\n                          placeholderText=\"Đến ngày\"\r\n                          selected={StateLookup.den_ngay}\r\n                          onChange={date => setStateLookup({ ...StateLookup, den_ngay: date })}\r\n                          dateFormat=\"dd/MM/yyyy\"\r\n                          showMonthDropdown\r\n                          showYearDropdown\r\n                          peekNextMonth\r\n                          dropdownMode=\"select\"\r\n                          className=\"fix-picker\"\r\n                          ref={datepickerRef2}\r\n                        />\r\n                        <FontAwesomeIcon onClick={ ()=> datepickerRef2.current.setOpen(true)} className=\"datepick_font\" icon={faCalendarCheck} size=\"1x\" />\r\n\r\n                      </label>\r\n                      {/* <i className=\"fa fa-calendar\" aria-hidden=\"true\"></i> */}\r\n                    </div>\r\n                  </div>\r\n                  <div className=\"col-lg-3 col-md-3 col-sm-4 col-xs-4 col-12 fix_search fix_mobe\">\r\n                    {isLoadingButton ?\r\n                      // <Button  variant=\"contained\" color=\"default\" className=\"\"><FontAwesomeIcon className=\"spin_config\" icon={faSync} size=\"2x\" /></Button>\r\n                      <Button\r\n                        style={{ opacity: 0.8 }}\r\n                        variant=\"contained\"\r\n                        color=\"default\"\r\n                        className=\"button_search\"\r\n                        startIcon={<FontAwesomeIcon className=\"spin_config\" icon={faSync} size=\"1x\" />}\r\n                      >\r\n                        <strong> Tìm kiếm</strong>\r\n                      </Button>\r\n                      : <Button\r\n                        onClick={() => searchInvoiceList()}\r\n                        variant=\"contained\"\r\n                        color=\"default\"\r\n                        className=\"button_search\"\r\n                        startIcon={<SearchIcon />}\r\n                      >\r\n                        <strong> Tìm kiếm</strong>\r\n                      </Button>\r\n                    }\r\n                    {/* <button name=\"\" id=\"\" onClick={() => searchInvoiceList()} className=\"btn btn-primary\" role=\"button\">Tìm kiếm</button> */}\r\n                  </div>\r\n\r\n                </div>\r\n              </div>\r\n              <div style={{ height: 400, width: '100%' }} >\r\n                <DataGrid\r\n                  \r\n                  aria-label=\"Tra cứu\"\r\n                  pageSize={pageSize}\r\n                  onPageSizeChange={handlePageSizeChange}\r\n                  rowsPerPageOptions={[5, 10, 20, 30, 50, 100]}\r\n                  rows={data_rows}\r\n                  getRowId={(row) => row.id}\r\n                  columns={columns}\r\n                  ColumnMenuIcon\r\n                  componentsProps={{\r\n                    pagination: {\r\n                      labelRowsPerPage: ('Số hóa đơn trên một trang'),\r\n                      labelDisplayedRows: ({ from, to, count }) =>\r\n                        `${from}-${to} trên ${count !== -1 ? count : ` ${to}`} hóa đơn`,\r\n                      backIconButtonText: \"Trang trước\",\r\n                      nextIconButtonText: \"Trang sau\"\r\n                    }\r\n                  }}\r\n\r\n                  localeText={{\r\n                    footerRowSelected: (count) =>\r\n                      count !== 1\r\n                        ? `${count.toLocaleString()} hóa đơn đã chọn`\r\n                        : `${count.toLocaleString()} hóa đơn đã chọn`,\r\n                  }}\r\n\r\n                  // getRowClassName={(params) =>\r\n                  //   `super-app-theme--${params.id%2 ? \"chan\" : \"le\"}`\r\n                  // }\r\n                />\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      <ExportModal\r\n        open={openModal}\r\n        hide={toggle}\r\n        byteData={byteData}\r\n        infoModal={infoModal}\r\n      />\r\n    </div>\r\n\r\n  );\r\n\r\n\r\n  // return (\r\n  //     <div>\r\n  //         <div className=\"text-center\"><span style={{ fontSize: \"40px\", color: \"#00fff3\", fontWeight: \"bold\" }}>TRA CỨU HÀNG LOẠT HÓA ĐƠN</span></div>\r\n  //         <div className=\"d-flex flex-column-fluid\">\r\n  //             <div className=\"container\">\r\n  //                 <div className=\"card card-custom gutter-b\">\r\n  //                     <div className=\"card-body p-0\">\r\n\r\n\r\n  //                     </div>\r\n  //                 </div>\r\n  //             </div>\r\n  //         </div>\r\n  //     </div>\r\n  // );\r\n\r\n}\r\nconst mapStateToProps = (state) => ({\r\n  user: state.user,\r\n\r\n});\r\n\r\nexport default connect(mapStateToProps, { Logout, ContentBody })(withRouter(LookupEinvoice));\r\n\r\n\r\n","import React, { useRef, useState, useEffect } from 'react';\r\nimport './style.css'\r\nimport { toast, ToastContainer } from 'react-toastify';\r\nimport axiosInstance from \"../../helper/axio\";\r\nimport LoadingOverlay from 'react-loading-overlay';\r\n\r\nexport const SearchByFiles = () => {\r\n    const url = 'TracuuFile/UploadInv';\r\n    const fileInputRef = useRef();\r\n    const [fileName, setfileName] = useState(undefined);\r\n    const [btnClass, setbtnClass] = useState('');\r\n\r\n    const [isLoad, setisLoad] = React.useState(false); // Trạng thái mở Modal\r\n\r\n\r\n    const preventDefault = (e) => {\r\n        e.preventDefault();\r\n        // e.stopPropagation();\r\n    }\r\n\r\n    const dragOver = (e) => {\r\n        e.preventDefault();\r\n    }\r\n\r\n    const dragEnter = (e) => {\r\n        preventDefault(e);\r\n    }\r\n\r\n    const dragLeave = (e) => {\r\n        preventDefault(e);\r\n    }\r\n\r\n    const fileDrop = (e) => {\r\n        preventDefault(e);\r\n        const files = e.dataTransfer.files;\r\n        if (files.length) {\r\n            handleFiles(files);\r\n        }\r\n    }\r\n\r\n    const filesSelected = (e) => {\r\n        let files = e.currentTarget.files\r\n        if (files.length > 1) {\r\n            const msg = 'Vui lòng chỉ chọn 1 File'\r\n            e.target.value = null\r\n            toast.warn(msg)\r\n            return false;\r\n        } else {\r\n            if (files.length > 0 && files.length < 2) {\r\n                let typeFile = e.currentTarget.files[0].type\r\n                const validTypes = ['application/x-zip-compressed'];\r\n                if (validTypes.indexOf(typeFile) === -1) {\r\n                    const msg0 = 'File không đúng định dạng'\r\n                    toast.warn(msg0)\r\n                    return false;\r\n                } else {\r\n                    let sizeFile = e.currentTarget.files[0].size\r\n                    if (sizeFile > 2097152) {\r\n                        const msg1 = 'File dung lượng quá lớn'\r\n                        toast.error(msg1)\r\n                        return false\r\n                    } else {\r\n\r\n                        setfileName(e.currentTarget.files[0].name);\r\n                        handleFiles(fileInputRef.current.files);\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                setfileName(\"\");\r\n                return true;\r\n            }\r\n        }\r\n\r\n\r\n    }\r\n\r\n    const fileInputClicked = () => {\r\n        fileInputRef.current.click();\r\n    }\r\n\r\n    const handleFiles = (e) => {\r\n        if (e.length > 1) {\r\n            const msg = 'Vui lòng chỉ chọn 1 File'\r\n            e.target.value = null\r\n            toast.warn(msg)\r\n            return false;\r\n        } else {\r\n            if (e.length > 0 && e.length < 2) {\r\n                let typeFile = e[0].type\r\n                const validTypes = ['application/x-zip-compressed'];\r\n                if (validTypes.indexOf(typeFile) === -1) {\r\n                    const msg0 = 'File không đúng định dạng'\r\n                    toast.warn(msg0)\r\n                    return false;\r\n                } else {\r\n                    let sizeFile = e[0].size\r\n                    if (sizeFile > 2097152) {\r\n                        const msg1 = 'File dung lượng quá lớn'\r\n                        toast.error(msg1)\r\n                        return false\r\n                    } else {\r\n\r\n                        setfileName(e[0].name);\r\n                        return true;\r\n                    }\r\n                }\r\n            }\r\n            else {\r\n                setfileName(\"\");\r\n                return true;\r\n            }\r\n        }\r\n    }\r\n\r\n    const uploadFiles = (data) => {\r\n        let files = fileInputRef.current.files;\r\n        if (files.length > 0) {\r\n            let selectedFile = files[0];\r\n            const formData = new FormData();\r\n            formData.append(\"\", selectedFile);\r\n            setisLoad(true);\r\n            axiosInstance\r\n                .post(url, formData, { responseType: \"arraybuffer\" })\r\n                .then((res) => {\r\n                    setisLoad(false);\r\n                    const file = new Blob([res.data], {\r\n                        type: \"application/pdf\",\r\n                    });\r\n                    const fileURL = URL.createObjectURL(file);\r\n                    window.open(fileURL)\r\n\r\n                })\r\n                .catch((err) => {\r\n                    setisLoad(false);\r\n                    toast.error(JSON.parse(new TextDecoder().decode(err.response.data)).error);\r\n                });\r\n        }\r\n\r\n\r\n    }\r\n\r\n\r\n    return (\r\n        <React.Fragment>\r\n            <div className=\"form-File\">\r\n                <ToastContainer />\r\n                <div className=\"drop-container\"\r\n                    onDragOver={dragOver}\r\n                    onDragEnter={dragEnter}\r\n                    onDragLeave={dragLeave}\r\n                    onDrop={fileDrop}\r\n                    onClick={fileInputClicked}\r\n                >\r\n                    <div className=\"drop-message\">\r\n                        <div className=\"upload-icon\"></div>\r\n                        * Nhấp chuột hoặc kéo thả tập tin hoá đơn vào đây để tải lên <br />\r\n                        <span className=\"fix-text\">\r\n                            Lưu ý: Chỉ chọn một tập tin có phần mở rộng .zip <br />\r\n                        </span>\r\n                        <span className=\"\">\r\n                            File đã tải lên : <span className=\"set-color\">{fileName}</span>\r\n                        </span>\r\n\r\n                    </div>\r\n                    <input\r\n                        ref={fileInputRef}\r\n                        className=\"file-input\"\r\n                        type=\"file\"\r\n                        multiple\r\n                        onChange={filesSelected}\r\n                    />\r\n                </div>\r\n\r\n            </div>\r\n            <div className=\"d-flex justify-content-center\">\r\n                <button\r\n                    className=\" btn btn-primary mt-4 signup align-items-center justify-content-center\"\r\n                    type=\"submit\"\r\n                    onClick={() => uploadFiles()}\r\n                >\r\n                    Tra cứu\r\n                </button>\r\n            </div>\r\n\r\n\r\n            <LoadingOverlay\r\n                active={isLoad}\r\n                spinner\r\n                styles={{\r\n                    wrapper: {\r\n                        width: '0px',\r\n                        height: '0px',\r\n                    }\r\n                }}\r\n            >\r\n\r\n            </LoadingOverlay>\r\n        </React.Fragment>\r\n    );\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { addUser } from \"../../action/Dispatch\";\r\nimport { ContentBody } from \"../../action/Dispatch\";\r\nimport { connect } from \"react-redux\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { useEffect, useState, useRef } from \"react\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport axiosInstance from \"../../helper/axio\";\r\n// import CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport LoadingOverlay from 'react-loading-overlay';\r\n\r\n//\r\n// import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n// import { faSync } from \"@fortawesome/free-solid-svg-icons\";\r\n\r\nconst SearchMutipleInvoice = (props) => {\r\n  const url = \"Account/Login\";\r\n\r\n  const [state, setState] = useState({\r\n    mst: \"\",\r\n    username: \"\",\r\n    password: \"\",\r\n    token: \"\",\r\n  });\r\n  const [isLoading, setLoading] = useState(false); //state loading\r\n  const { addToast } = useToasts();\r\n  const { register, handleSubmit, errors } = useForm({ defaultValues: {} });\r\n  const get_ref = useRef();\r\n\r\n  const handleChange = (e) => {\r\n\r\n    const { name, value } = e.target;\r\n    var newvalue = value;\r\n    if (name == 'mst') { newvalue = value.replace(/ /g, ''); }\r\n    setState({ ...state, [name]: newvalue });\r\n  };\r\n  useEffect(() => {\r\n\r\n    //props.userClick('mutiple');\r\n\r\n  }, []);\r\n\r\n  if (props.user.isLoggedIn == true) {\r\n    props.ContentBody(false);\r\n    props.history.push(\"/lookup_invoice\");\r\n  }\r\n\r\n  const onSubmit = (data) => {\r\n    setLoading(true);\r\n    if (state.mst.length == 0 || state.mst == null) {\r\n      addToast(\"Vui lòng nhập mã số thuế bên bán!\", { appearance: \"error\" });\r\n      setLoading(false);\r\n    } else {\r\n      if (state.username.length == 0 || state.username == null) {\r\n        addToast(\"Vui lòng nhập tên tài khoản!\", { appearance: \"error\" });\r\n        setLoading(false);\r\n      } else {\r\n        if (state.password.length == 0 || state.password == null) {\r\n          addToast(\"Vui lòng nhập mật khẩu!\", { appearance: \"error\" });\r\n          setLoading(false);\r\n        } else {\r\n\r\n\r\n          axiosInstance\r\n            .post(url, data)\r\n            .then((res) => {\r\n              if (res.data.token == undefined) {\r\n                addToast(\r\n                  JSON.parse(JSON.stringify(res.data).toLocaleLowerCase())\r\n                    .error,\r\n                  { appearance: \"error\" }\r\n                );\r\n                setLoading(false);\r\n              } else {\r\n                setLoading(false);\r\n                addToast(\"Đăng nhập thành công!\", { appearance: \"success\" });\r\n\r\n                const state_new = { ...state };\r\n                state_new.token = res.data.token;\r\n                state_new.password = \"\";\r\n                state_new.ma_dt = res.data.user.ma_dt;\r\n                localStorage.setItem(\"user\", JSON.stringify(state_new));\r\n                props.userClick('mutiple');\r\n                props.addUser(JSON.stringify(state_new));\r\n                props.ContentBody(false);\r\n\r\n                props.history.push(\"/lookup_invoice\");\r\n              }\r\n            })\r\n            .catch((err) => {\r\n              addToast(err.message, { appearance: \"error\" });\r\n              setLoading(false);\r\n            });\r\n        }\r\n      }\r\n    }\r\n  };\r\n  return (\r\n    <div>\r\n      <form onSubmit={handleSubmit(onSubmit)}>\r\n        <div className=\"form-input \">\r\n          <span>Mã số thuế bên bán:</span>\r\n          <input\r\n            autoFocus\r\n            className=\"form-control fix-form-input\"\r\n            placeholder=\"Mã số thuế bên bán\"\r\n            name=\"mst\"\r\n            type=\"text\"\r\n            ref={register}\r\n            value={state.mst}\r\n            onChange={(e) => handleChange(e)}\r\n          />\r\n        </div>\r\n        <div className=\"form-input\">\r\n          <span>Tài khoản:</span>\r\n          <input\r\n            className=\"form-control fix-form-input\"\r\n            name=\"username\"\r\n            type=\"text\"\r\n            placeholder=\"Tài khoản\"\r\n            value={state.username}\r\n            onChange={(e) => handleChange(e)}\r\n            ref={register}\r\n          />\r\n        </div>\r\n        <div className=\"form-input\">\r\n          <span>Mật khẩu:</span>\r\n          <input\r\n\r\n            className=\"form-control fix-form-input\"\r\n            name=\"password\"\r\n            type=\"password\"\r\n            placeholder=\"Mật khẩu\"\r\n            value={state.password}\r\n            onChange={(e) => handleChange(e)}\r\n            ref={register}\r\n          />\r\n        </div>\r\n        <div className=\"text-center\">\r\n          {/* {isLoading ? (\r\n            <button style={{ opacity: \"0.8\" }} type=\"submit\" className=\" btn btn-primary mt-4 signup align-items-center justify-content-center\">\r\n              <CircularProgress size={19} color=\"inherit\" />\r\n            </button>\r\n\r\n          ) : ( */}\r\n            <button type=\"submit\" className=\" btn btn-primary mt-4 signup align-items-center justify-content-center\">\r\n              Đăng Nhập\r\n            </button>\r\n          {/* )} */}\r\n\r\n        </div>\r\n       \r\n      </form>\r\n      <LoadingOverlay\r\n          active={isLoading}\r\n          spinner\r\n          styles={{\r\n            wrapper: {\r\n              width: '0px',\r\n              height: '0px',\r\n            }\r\n          }}\r\n        >\r\n       \r\n        </LoadingOverlay>\r\n    </div>\r\n  );\r\n\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n  user: state.user,\r\n});\r\n\r\nexport default connect(mapStateToProps, { addUser, ContentBody })(withRouter(SearchMutipleInvoice));","import React from \"react\";\r\nimport { useForm } from \"react-hook-form\";\r\nimport axiosInstance from \"../../helper/axio\";\r\nimport { useToasts } from \"react-toast-notifications\";\r\nimport ExportModal from \"../ExportModal\";\r\n// import CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport LoadingOverlay from 'react-loading-overlay';\r\n\r\nexport const SearchOneInvoice = ({ _mst, _sbm }) => {\r\n  const url = \"Search/SearchInvoice\";\r\n  const { register, handleSubmit } = useForm({\r\n    defaultValues: { masothue: _mst, sobaomat: _sbm },\r\n  });\r\n  const [openModal, setOpenModal] = React.useState(false); // Trạng thái mở Modal\r\n  const { addToast } = useToasts(); // trạng thái hiển thị cảnh báo\r\n  const [byteData, setByteData] = React.useState(undefined); // Dữ liệu truyền sang modal\r\n  const [infoModal, setinfoModal] = React.useState(undefined); // Dữ liệu truyền sang modal\r\n\r\n  const [isLoad, setisLoad] = React.useState(false); // Trạng thái mở Modal\r\n\r\n  function toggle() {\r\n    setOpenModal(!openModal);\r\n  }\r\n  const onSubmit = (data) => {\r\n    var a = data.masothue;\r\n    var b = a.replace(/\\s+/g, '');\r\n    var json = {\r\n      \"masothue\": b,\r\n      \"sobaomat\": data.sobaomat,\r\n      \"type\": \"pdf\"\r\n    }\r\n    console.log(b);\r\n    if (b.length < 10 || b === null) {\r\n      addToast(\"Vui lòng nhập hoặc kiểm tra lại mã số thuế bên bán!\", {\r\n        appearance: \"error\",\r\n      });\r\n    } else {\r\n      if (data.sobaomat.length < 3 || data.sobaomat === null) {\r\n        addToast(\"Vui lòng nhập số bảo mật!\", { appearance: \"error\" });\r\n      } else {\r\n        setinfoModal(json);\r\n        setisLoad(true);\r\n        axiosInstance\r\n          .post(url, json, { responseType: \"arraybuffer\" })\r\n          .then((res) => {\r\n            var check = res.headers[\"content-type\"];\r\n            if (check == \"application/pdf\") {\r\n              setByteData(res.data);\r\n              setisLoad(false);\r\n              setOpenModal(true);\r\n            } else {\r\n              setisLoad(false);\r\n              setOpenModal(false);\r\n              addToast(\"Không tìm thấy hóa đơn! Vui lòng kiểm tra lại thông tin\", { appearance: \"error\" });\r\n            }\r\n          })\r\n          .catch((err) => {\r\n            setisLoad(false);\r\n            setOpenModal(false);\r\n            if (err.response) {\r\n              console.log(err.response.data);\r\n              console.log(err.response.status);\r\n              console.log(err.response.headers);\r\n            }\r\n            addToast(err.message, { appearance: \"error\" });\r\n          });\r\n      }\r\n    }\r\n  };\r\n\r\n  return (\r\n    <div>\r\n      <div>\r\n        <form onSubmit={handleSubmit(onSubmit)}>\r\n          <div className=\"form-input\">\r\n            <span>Mã số thuế bên bán:</span>\r\n            <select ref={register} name=\"masothue\" className=\"form-select fix-form-input\" aria-label=\"Default select example\">\r\n              <option selected value=\"0309532909\">0309532909 - CÔNG TY TNHH TI KI</option>\r\n              <option value=\"0312388363\">0312388363 - CÔNG TY TNHH MỘT THÀNH VIÊN THƯƠNG MẠI TI KI</option>\r\n              <option value=\"0313605444\">0313605444 - CÔNG TY TNHH TICKETBOX</option>\r\n              <option value=\"0315808055\">0315808055 - CÔNG TY TNHH TIKINOW SMART LOGISTICS</option>\r\n            </select>\r\n            {/* <input\r\n              type=\"\"\r\n              name=\"masothue\"\r\n              className=\"form-control fix-form-input\"\r\n              placeholder=\"Mã số thuế bên bán:\"\r\n              ref={register}\r\n            /> */}\r\n          </div>\r\n          <div className=\"form-input\">\r\n            <span>Số bảo mật:</span>\r\n            <input\r\n              type=\"text\"\r\n              name=\"sobaomat\"\r\n              className=\"form-control fix-form-input\"\r\n              placeholder=\"Số bảo mật\"\r\n              ref={register}\r\n            />\r\n          </div>\r\n          <div className=\"text-center\">\r\n            <button\r\n              className=\" btn btn-primary mt-4 signup align-items-center justify-content-center\"\r\n              type=\"submit\"\r\n            >\r\n              XEM HÓA ĐƠN\r\n            </button>\r\n          </div>\r\n        </form>\r\n      </div>\r\n      <ExportModal\r\n        open={openModal}\r\n        hide={toggle}\r\n        byteData={byteData}\r\n        infoModal={infoModal}\r\n      />\r\n      {/* {isLoad && (\r\n        <div className=\"text-center\">\r\n          <CircularProgress />\r\n        </div>\r\n      )} */}\r\n      <LoadingOverlay\r\n        active={isLoad}\r\n        spinner\r\n        styles={{\r\n          wrapper: {\r\n            width: '0px',\r\n            height: '0px',\r\n          }\r\n        }}\r\n      >\r\n\r\n      </LoadingOverlay>\r\n    </div>\r\n  );\r\n};\r\n","import React, { useEffect, Component } from \"react\";\r\nimport { useParams, useLocation } from \"react-router-dom\";\r\n//import SearchByFile from \"./SearchByFile\";\r\nimport { SearchByFiles } from \"./SearchByFiles\";\r\n\r\nimport SearchMutipleInvoice from \"./SearchMutipleInvoice\";\r\nimport { SearchOneInvoice } from \"./SearchOneInvoice\";\r\n\r\nexport default function SearchInvoiceBody(props) {\r\n  const params = useParams();\r\n  const jpram = useLocation().search;\r\n  const jh = new URLSearchParams(jpram);\r\n  var ms = jh.get(\"mst\");\r\n  var mS = jh.get(\"MST\");\r\n  var sbm = jh.get(\"sobaomat\");\r\n  var mst = \"\";\r\n\r\n  if (ms == null) {\r\n    mst = mS;\r\n  } else {\r\n    mst = ms;\r\n  }\r\n\r\n  return (\r\n    <div className=\"justify-content-center fix-display\">\r\n      {/* {props.Click == \"sigle\" ? (\r\n        <SearchOneInvoice _mst={mst} _sbm={sbm} />\r\n      ) : (\r\n        <SearchMutipleInvoice userClick={props.userClick} />\r\n      )} */}\r\n      {props.Click == \"sigle\" ? (<SearchOneInvoice _mst={mst} _sbm={sbm} />) : (\r\n        props.Click == \"mutiple\" ? (<SearchMutipleInvoice userClick={props.userClick} />) :\r\n          (<SearchByFiles />))}\r\n    </div>\r\n  );\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { Route ,Switch} from \"react-router-dom\";\r\nimport LookupInvoiceList from \"../LookupEinvoice/LookupInvoiceList\";\r\nimport SearchInvoiceBody from \"../ChildSearchForm/SearchInvoiceBody\";\r\n\r\nclass App_Router extends Component {\r\n  render() {\r\n      \r\n    return (\r\n      <Switch>\r\n        <Route\r\n          exact\r\n          path=\"/\"\r\n          component={() => (\r\n            <SearchInvoiceBody\r\n              type={this.props.type}\r\n              userClick={this.props.userClick}\r\n              Click={this.props.Click}\r\n            />\r\n          )}\r\n        />\r\n        <Route \r\n            path=\"/lookup_invoice\" \r\n            component={LookupInvoiceList} />\r\n      </Switch>\r\n    );\r\n  }\r\n}\r\n\r\nexport default App_Router;\r\n","import React, { useEffect, useRef, Component } from \"react\";\r\n// import SearchInvoiceBody from \"./ChildSearchForm/SearchInvoiceBody\";\r\n// import SearchMutipleInvoice from \"./ChildSearchForm/SearchMutipleInvoice\";\r\n// import { SearchOneInvoice } from \"./ChildSearchForm/SearchOneInvoice\";\r\nimport App_Router from \"./AppRoute/App_Router\";\r\n\r\nexport default function SearchForm(props) {\r\n  const [typeClick, settypeClick] = React.useState(\"sigle\"); // Trạng thái mở Modal\r\n  const [disable, setdisable] = React.useState(false); // Trạng thái mở Modal\r\n  // const get_ref = useRef(null);\r\n\r\n  // const handleDisable = () => {\r\n\r\n  //   get_ref.current ;\r\n\r\n  // };\r\n\r\n  const userClick = (type) => {\r\n\r\n    if (localStorage.getItem('user') !== null) {\r\n      setdisable(true);\r\n    }\r\n    else {\r\n      setdisable(false);\r\n    }\r\n    settypeClick(type);\r\n\r\n  };\r\n  useEffect(() => {\r\n    if (localStorage.getItem('user') !== null) {\r\n      setdisable(true);\r\n    }\r\n    // if (window.location.pathname == '/lookup_invoice') {\r\n    //   debugger;\r\n    //   settypeClick(\"mutiple\");\r\n    // }\r\n\r\n  }, []);\r\n\r\n\r\n  return (\r\n    <div>\r\n      <section id=\"hero\" className=\"align-items-center\">\r\n        <div className=\"container mb-5 fix-card edit-container\">\r\n          <div className=\"d-flex align-items-center justify-content-center\">\r\n            <div className=\"col-md-12 col-12 row\">\r\n              <div className=\"col-md-3 col-12\">\r\n                <h4 className=\"h4-edit\">\r\n                  Hệ Thống tra cứu hóa đơn điện tử M-Invoice\r\n                </h4>\r\n                <p className=\"p-edit\">Kính chào anh/chị!</p>\r\n                <p className=\"p-edit\">Nhằm nâng cao chất lượng dịch vụ cung cấp, Minvoice xin gửi tới anh/chị trang web tra cứu hóa đơn điện tử liên quan đến sản phẩm hóa đơn điện tử của Minvoice. Anh/chị vui lòng nhập đầy đủ thông tin liên quan dưới đây.</p>\r\n                <p className=\"p-edit\">Minvoice rất cảm ơn sự cộng tác của anh/chị. Dữ liệu của anh/chị sẽ được đảm bảo giữ bí mật tuyệt đối</p>\r\n              </div>\r\n              <div className=\"card col-md-6 col-12\" style={{ 'paddingBottom': '30px' }}>\r\n                <h5 className=\"mt-3 text-center fix-header-search1 head-edit\">\r\n                  Mời nhập thông tin tra cứu\r\n                </h5>\r\n                <div className=\" d-flex justify-content-center\">\r\n                  <div className=\"border-btn\">\r\n                    <button\r\n                      className={`btn  font-weight-bold fix-btn ${typeClick == \"sigle\" ? \"fix-btn-active\" : \"\"\r\n                        }`}\r\n                      onClick={() => userClick(\"sigle\")}\r\n                      disabled={disable}\r\n                    >\r\n                      Tra cứu một hóa đơn\r\n                    </button>\r\n                   <button\r\n                      className={`btn  font-weight-bold fix-btn ${typeClick == \"mutiple\" ? \"fix-btn-active\" : \"\"\r\n                        }`}\r\n                      onClick={() => userClick(\"mutiple\")}\r\n                    >\r\n                      Tra cứu theo tài khoản\r\n                    </button>\r\n                    {/* <button\r\n                      className={`btn  font-weight-bold fix-btn ${typeClick == \"File\" ? \"fix-btn-active\" : \"\"\r\n                        }`}\r\n                      onClick={() => userClick(\"File\")}\r\n                      disabled={disable}\r\n                    >\r\n                      Tra cứu theo File\r\n                    </button>  */}\r\n                  </div>\r\n                </div>\r\n                \r\n                <App_Router type={props.location} userClick={(type) => userClick(type)} Click={typeClick} />\r\n\r\n              </div>\r\n\r\n              <div className=\"col-md-3 col-3\">\r\n                <img className=\"img-fluid\" src=\"../LibCustom/img/TIKI.png\" />\r\n              </div>\r\n            </div>\r\n           \r\n          </div>\r\n          <div className=\"row row-edit\">\r\n              <div className=\"gt-fix col-6\">\r\n                <div className=\"Hotline-fix\">\r\n                  <span style={{ color: '#999'}}>Hotline: </span>\r\n                  <span style={{ color: 'black', fontSize: '15px', fontWeight: 'bold' }}>1900-6035</span>\r\n                </div>\r\n                <div className=\"email-fix last-fix\">\r\n                  <span style={{ color: '#999' }}>Email: </span>\r\n                  <span style={{ color: 'black', fontSize: '15px', fontWeight: 'bold' }}>hotro@tiki.vn</span>\r\n                </div>\r\n              </div>\r\n            </div>\r\n        </div>\r\n      </section>\r\n    </div>\r\n  );\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class ContentBody extends Component {\r\n  render() {\r\n    return (\r\n      <div>\r\n        <section id=\"pricing\" className=\"pricing\">\r\n          <div className=\"container\" data-aos=\"fade-up\">\r\n            <div className=\"row\">\r\n              <div\r\n                className=\"col-lg-4 col-md-4\"\r\n                data-aos=\"zoom-im\"\r\n                data-aos-delay={100}\r\n              >\r\n                <div className=\"box\">\r\n                  <img src=\"./LibCustom/img/Flower3.png\" alt=\"\" />\r\n                  <h3>TƯ VẤN - HỖ TRỢ</h3>\r\n                  <ul>\r\n                    <li>Hỗ trợ thông báo phát hành hóa đơn</li>\r\n                    <li>Tư vấn nghiệp vụ hóa đơn trong quá trình sử dụng</li>\r\n                    <li>Giải quyết vướng mắc của khách hàng trong vòng 02 giờ</li>\r\n                  </ul>\r\n                </div>\r\n              </div>\r\n              <div className=\"col-lg-4 col-md-4 mt-4 mt-md-0\">\r\n                <div className=\"box\">\r\n                  <img src=\"./LibCustom/img/Compass.png\" alt=\"\" />\r\n                  <h3>TIẾT KIỆM - HIỆU QUẢ</h3>\r\n                  <ul>\r\n                    <li>Hệ thống chat trực tiếp với kỹ thuật</li>\r\n                    <li>Chi phí hợp lý nhiều tính năng vượt trội</li>\r\n                    <li>Hỗ trợ tra cứu hóa đơn theo Website của doanh nghiệp</li>\r\n                  </ul>\r\n                </div>\r\n              </div>\r\n              <div className=\"col-lg-4 col-md-4 mt-4 mt-md-0\">\r\n                <div className=\"box\">\r\n                  <img src=\"./LibCustom/img/Cart2.png\" alt=\"\" />\r\n                  <h3>AN TOÀN - BẢO MẬT</h3>\r\n                  <ul>\r\n                    <li>Áp dụng Quy trình ISO 27001:2013</li>\r\n                    <li>Áp dụng mã hóa bảo mật thông tin hóa đơn</li>\r\n                    <li>Hệ thống Server Backup Realtime, Chống tấn công DDOS</li>\r\n                  </ul>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </section>\r\n      </div>\r\n      \r\n    );\r\n  }\r\n}\r\n","import React, { useEffect, Component } from 'react';\r\nimport ContentBody from \"./ContentBody\";\r\n// import { Logout } from '../action/Dispatch';\r\nimport { withRouter } from 'react-router-dom';\r\nimport { connect } from \"react-redux\";\r\n\r\nconst FixContentBody = (props) => {\r\n   \r\n\r\n    const show = props.show.show;\r\n\r\n    return (\r\n        <>\r\n           { show ? <ContentBody /> : \"\"}\r\n        </>\r\n    );\r\n\r\n}\r\nconst mapStateToProps = (state) => ({\r\n    show: state.user,\r\n\r\n});\r\n\r\nexport default connect(mapStateToProps, null)(withRouter(FixContentBody));","import React from \"react\";\r\nimport { Swiper, SwiperSlide } from \"swiper/react\";\r\nimport \"swiper/swiper-bundle.css\";\r\nimport SwiperCore, { Autoplay } from \"swiper\";\r\n\r\nSwiperCore.use([Autoplay]);\r\n\r\nexport default function ContentSlider() {\r\n  var baseUrl = \"\";\r\n  if (document.location.port === \"3000\") {\r\n    baseUrl = \"http://localhost:3000\";\r\n  } else {\r\n    baseUrl = process.env.PUBLIC_URL;\r\n  }\r\n  const imgData = [\r\n    baseUrl + \"/LibCustom/img/1.jpg\",\r\n    baseUrl + \"/LibCustom/img/2.jpg\",\r\n    baseUrl + \"/LibCustom/img/3.jpg\",\r\n    baseUrl + \"/LibCustom/img/4.jpg\",\r\n    baseUrl + \"/LibCustom/img/5.jpg\",\r\n    baseUrl + \"/LibCustom/img/6.jpg\",\r\n    baseUrl + \"/LibCustom/img/7.jpg\",\r\n    baseUrl + \"/LibCustom/img/8.jpg\",\r\n    baseUrl + \"/LibCustom/img/9.jpg\",\r\n    baseUrl + \"/LibCustom/img/10.jpg\",\r\n    baseUrl + \"/LibCustom/img/11.jpg\",\r\n    baseUrl + \"/LibCustom/img/12.jpg\",\r\n  ];\r\n  return (\r\n    <React.Fragment>\r\n      <Swiper\r\n        breakpoints={{\r\n          240: {\r\n            width: 240,\r\n            slidesPerView: 1,\r\n          },\r\n          320: {\r\n            width: 320,\r\n            slidesPerView: 1,\r\n          },\r\n          480: {\r\n            width: 480,\r\n            slidesPerView: 2,\r\n          },\r\n          640: {\r\n            width: 640,\r\n            slidesPerView: 2,\r\n          },\r\n          768: {\r\n            width: 768,\r\n            slidesPerView: 3,\r\n          },\r\n          992: {\r\n            width: 992,\r\n            slidesPerView: 5,\r\n          },\r\n          1200: {\r\n            width: 1200,\r\n            slidesPerView: 7,\r\n          },\r\n        }}\r\n        id=\"main\"\r\n        width=\"480\"\r\n        spaceBetween={1}\r\n        slidesPerView={7}\r\n        loop={true}\r\n        autoplay={true}\r\n        className=\"mySwiper\"\r\n      >\r\n        {\r\n          imgData.map((s ,keys) => (\r\n            <SwiperSlide key = {keys}>\r\n              <img src = {`${s}`}></img>\r\n            </SwiperSlide>\r\n          ))\r\n        }\r\n      </Swiper>\r\n      <div id=\"bp-wrapper\"></div>\r\n    </React.Fragment>\r\n  );\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class Footers extends Component {\r\n  render() {\r\n    const demo = (e) => {\r\n      var a = document.createElement(\"a\");\r\n      document.body.appendChild(a);\r\n      a.href = \"http://demo.minvoice.com.vn/\";\r\n      a.target = \"_blank\";\r\n      a.click();\r\n      document.body.removeChild(a);\r\n    };\r\n\r\n    const _call = (e) => {\r\n      var a = document.createElement(\"a\");\r\n      document.body.appendChild(a);\r\n      a.href = \"tel:0901801816\";\r\n      a.click();\r\n      document.body.removeChild(a);\r\n    };\r\n    var d = new Date();\r\n    var n = d.getFullYear();\r\n    return (\r\n      <div>\r\n        <footer id=\"footer\">\r\n          <div className=\"footer-top\">\r\n            <div className=\"container\">\r\n              <div className=\"row\">\r\n                <div className=\"col-lg-6 col-md-6\">\r\n                  <div className=\"footer-contact\">\r\n                    <span className=\"fix-span-footer\">CÔNG TY CỔ PHẦN DI ĐỘNG TRỰC TUYẾN (M_SERVICE)</span>\r\n                    <span className=\"fix-span-footer\">Tại TP Hồ Chí Minh:</span>\r\n                    <span className=\"fix-span-footer\">Tầng M, toà nhà Petroland - 12 Tân Trào, Q7, TP HCM</span>\r\n                    <span className=\"fix-br\">Tel: +84 8 5414 7667 | Fax: +84 8 5414 7557</span>\r\n                    <span className=\"fix-span-footer\">Tại Hà Nội:</span>\r\n                    <span className=\"fix-span-footer\">Tầng 5, toà nhà HiPT Số 152 Thụy Khuê, Tây Hồ, Hà Nội</span>\r\n                    <span className=\"fix-br\">Tel: +84 4 37739898</span>\r\n                    <span className=\"fix-span-footer\">Tại Đà Nẵng:</span>\r\n                    <span className=\"fix-span-footer\">25 Nguyễn Văn Linh, Q. Hải Châu, Đà Nẵng</span>\r\n                    <span className=\"fix-br\">Tel: +84 5 113582582 | Fax: +84 5 113586685</span>\r\n                    <span className=\"fix-br\">Email: hotro@momo.vn</span>\r\n                  </div>\r\n                  \r\n                </div>\r\n             \r\n                <div className=\"col-lg-6 col-md-6 footer-contact\">\r\n                  <div className=\"footer-contact\">\r\n                    <span className=\"\">Language</span>\r\n                    <a style={{'paddingLeft':'5px'}}><img src=\"/LibCustom/img/vietnam-flag-icon-16.png\" width={25}></img></a>\r\n                    <a style={{'paddingLeft':'5px'}}><img src=\"/LibCustom/img/united-kingdom-flag-small.jpg\" width={25}></img></a>\r\n                  </div>\r\n                  <div>\r\n                    <span className=\"fix-span-footer2\">Tải ứng dụng MoMo trên điện thoại</span>\r\n                    <span className=\"text-center text-md-right pt-3 pt-md-0\">\r\n                      <a\r\n                        href=\"https://itunes.apple.com/us/app/momo-chuyen-nhan-tien/id918751511?mt=8\"\r\n                        className=\"facebook\"\r\n                        target=\"_blank\"\r\n                      >\r\n                        <img src=\"./LibCustom/img/Button-AppStore.svg\"></img>\r\n                      </a>\r\n                      <a\r\n                        href=\"https://play.google.com/store/apps/details?id=com.mservice.momotransfer&utm_medium=mobileweb&utm_source=mobile&utm_campaign=m2n\"\r\n                        className=\"youtube p-4\"\r\n                        target=\"_blank\"\r\n                      >\r\n                        <img src=\"./LibCustom/img/Button-PlayStore.svg\"></img>\r\n                      </a>\r\n                    </span>\r\n                  </div>\r\n\r\n                </div>\r\n              </div>\r\n              <div className=\"row \">\r\n                <p className=\"span-footer text-white\">\r\n                  Copyrights © {n} Phần mềm Hóa đơn điện tử <strong><span>\r\n                    M-Invoice\r\n                  </span></strong>. All Rights Reserved.\r\n\r\n                </p>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </footer>\r\n      </div>\r\n    );\r\n  }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\n\r\n//Router\r\nimport { BrowserRouter, HashRouter } from 'react-router-dom';\r\n\r\nimport history from './helper/history';\r\n// Redux\r\nimport { Provider } from \"react-redux\"\r\nimport { createStore } from \"redux\"\r\nimport allReducers from \"./reducer\"\r\n\r\nimport HeaderMenu from \"./components/HeaderMenu\";\r\n\r\nimport HeaderSlide from \"./components/HeaderSlide\";\r\nimport SearchForm from \"./components/SearchForm\";\r\nimport FixContentBody from \"./components/FixContentBody\";\r\nimport { ToastProvider } from \"react-toast-notifications\";\r\n\r\nimport ContentSlider from \"./components/ContentSlider\";\r\nimport Footers from \"./components/Footers\";\r\n\r\nimport 'swiper/swiper-bundle.css';\r\nimport SwiperCore, { Navigation } from 'swiper';\r\nimport MessengerCustomerChat from 'react-messenger-customer-chat';\r\n\r\n\r\nlet store = createStore(allReducers)\r\n\r\nSwiperCore.use([Navigation]);\r\n\r\nclass App extends Component {\r\n\r\n\r\n  componentDidMount() {\r\n    const script = document.createElement(\"script\");\r\n    script.src = process.env.PUBLIC_URL + '/LibCustom/js/main.js';\r\n    script.async = true;\r\n    document.body.appendChild(script);\r\n  }\r\n\r\n  render() {\r\n    return (\r\n      <Provider store={store}>\r\n        <BrowserRouter history={history}>\r\n          <div className=\"App\">\r\n            <ToastProvider autoDismiss={true} autoDismissTimeout=\"2000\">\r\n              <MessengerCustomerChat\r\n                pageId=\"187341811901684\"\r\n                appId=\"560238484992631\"\r\n              />\r\n              <HeaderMenu />\r\n              {/* <HeaderSlide/> */}\r\n              <SearchForm />\r\n              {/* <Footers /> */}\r\n            </ToastProvider>\r\n          </div>\r\n        </BrowserRouter>\r\n      </Provider>\r\n    );\r\n  }\r\n}\r\n\r\nexport default App;\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport App from \"./App\";\r\n\r\nReactDOM.render(<App />, document.getElementById(\"root\"));\r\n"],"sourceRoot":""}