{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/images/portrait/small/avatar-s-20.jpg","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-promotion/store-module/type.js","webpack:///./src/assets/images/icons/star.svg","webpack:///./src/@db/common.js","webpack:///./src/@core/utils/filter.js","webpack:///./src/assets/images/icons/json.png","webpack:///./src/assets/images/portrait/small/avatar-s-14.jpg","webpack:///./src/assets/images/icons/speaker.svg","webpack:///./src/store/app/type.js","webpack:///./src/views/sales/sales-returned-goods/store-module/type.js","webpack:///./src/@core/components/toastification/ToastificationContent.vue?a9a9","webpack:///src/@core/components/toastification/ToastificationContent.vue","webpack:///./src/@core/components/toastification/ToastificationContent.vue?3fc5","webpack:///./src/@core/components/toastification/ToastificationContent.vue","webpack:///./src/@core/utils/toasts/toasts.js","webpack:///./src/views/auth/printer-configuration-modal/store-module/type.js","webpack:///./themeConfig.js","webpack:///./src/@core/components/toastification/ToastificationContent.vue?c9bc","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-exchange-damaged-goods/store-module/type.js","webpack:///./src/views/sales/sales-customers/store-module/type.js","webpack:///./src/@db/customer.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-adjustment/store-module/type.js","webpack:///./src/views/sales/sales/store-module/type.js","webpack:///./src/assets/images/icons/toolbox.svg","webpack:///./src/views/dashboard/store-module/index.js","webpack:///./src/views/purchases/api-service/defaultConfig.js","webpack:///./src/views/purchases/api-service/index.js","webpack:///./src/views/purchases/store-module/index.js","webpack:///./src/views/sales/sales/api-service/defaultConfig.js","webpack:///./src/views/sales/sales/api-service/index.js","webpack:///./src/views/sales/sales/store-module/index.js","webpack:///./src/views/sales/sales-customers/api-service/defaultConfig.js","webpack:///./src/views/sales/sales-customers/api-service/index.js","webpack:///./src/views/sales/sales-customers/store-module/index.js","webpack:///./src/views/sales/sales-receipts/api-service/defaultConfig.js","webpack:///./src/views/sales/sales-receipts/api-service/index.js","webpack:///./src/views/sales/sales-receipts/store-module/index.js","webpack:///./src/views/sales/sales-red-bills/api-service/defaultConfig.js","webpack:///./src/views/sales/sales-red-bills/api-service/index.js","webpack:///./src/views/sales/sales-red-bills/store-module/index.js","webpack:///./src/views/sales/sales-returned-goods/api-service/defaultConfig.js","webpack:///./src/views/sales/sales-returned-goods/api-service/index.js","webpack:///./src/views/sales/sales-returned-goods/store-module/index.js","webpack:///./src/views/warehouses/warehouses-combo/api-service/defaultConfig.js","webpack:///./src/views/warehouses/warehouses-combo/api-service/index.js","webpack:///./src/views/warehouses/warehouses-combo/store-module/index.js","webpack:///./src/views/warehouses/warehouses-exchange-damaged-goods/api-service/defaultConfig.js","webpack:///./src/views/warehouses/warehouses-exchange-damaged-goods/api-service/index.js","webpack:///./src/views/warehouses/warehouses-exchange-damaged-goods/store-module/index.js","webpack:///./src/views/warehouses/warehouses-input/api-service/defaultConfig.js","webpack:///./src/views/warehouses/warehouses-input/api-service/index.js","webpack:///./src/views/warehouses/warehouses-input/store-module/index.js","webpack:///./src/views/warehouses/warehouses-output/api-service/defaultConfig.js","webpack:///./src/views/warehouses/warehouses-output/api-service/index.js","webpack:///./src/views/warehouses/warehouses-output/store-module/index.js","webpack:///./src/views/warehouses/warehouses-inventory/api-service/defaultConfig.js","webpack:///./src/views/warehouses/warehouses-inventory/api-service/index.js","webpack:///./src/views/warehouses/warehouses-inventory/store-module/index.js","webpack:///./src/views/reports/reports-warehouses/report-warehouses-price-difference/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-warehouses/report-warehouses-price-difference/api-service/index.js","webpack:///./src/views/reports/reports-warehouses/report-warehouses-price-difference/store-module/index.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-inventory/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-inventory/api-service/index.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-inventory/store-module/index.js","webpack:///./src/views/reports/reports-returned-goods/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-returned-goods/api-service/index.js","webpack:///./src/views/reports/reports-returned-goods/store-module/index.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-adjustment/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-adjustment/api-service/index.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-adjustment/store-module/index.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-promotion/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-promotion/api-service/index.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-promotion/store-module/index.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-input/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-input/api-service/index.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-input/store-module/index.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-output/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-output/api-service/index.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-output/store-module/index.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-input-output-inventory/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-input-output-inventory/api-service/index.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-input-output-inventory/store-module/index.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-exchange-damaged-goods/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-exchange-damaged-goods/api-service/index.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-exchange-damaged-goods/store-module/index.js","webpack:///./src/views/reports/reports-customers/reports-customers/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-customers/reports-customers/api-service/index.js","webpack:///./src/views/reports/reports-customers/reports-customers/store-module/index.js","webpack:///./src/views/reports/reports-customers/reports-customers-non-transactional/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-customers/reports-customers-non-transactional/api-service/index.js","webpack:///./src/views/reports/reports-customers/reports-customers-non-transactional/store-module/index.js","webpack:///./src/views/reports/reports-sales/reports-sales-amount-receipt-per-customers/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-sales/reports-sales-amount-receipt-per-customers/api-service/index.js","webpack:///./src/views/reports/reports-sales/reports-sales-amount-receipt-per-customers/store-module/index.js","webpack:///./src/views/reports/reports-sales/reports-sales-cat/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-sales/reports-sales-cat/api-service/index.js","webpack:///./src/views/reports/reports-sales/reports-sales-cat/store-module/index.js","webpack:///./src/views/reports/reports-sales/reports-sales/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-sales/reports-sales/api-service/index.js","webpack:///./src/views/reports/reports-sales/reports-sales/store-module/index.js","webpack:///./src/views/reports/reports-sales/reports-sales-sale-receipt-per-customer/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-sales/reports-sales-sale-receipt-per-customer/api-service/index.js","webpack:///./src/views/reports/reports-sales/reports-sales-sale-receipt-per-customer/store-module/index.js","webpack:///./src/views/reports/reports-sales/reports-sales-sale-receipt-on-delivery-type/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-sales/reports-sales-sale-receipt-on-delivery-type/api-service/index.js","webpack:///./src/views/reports/reports-sales/reports-sales-sale-receipt-on-delivery-type/store-module/index.js","webpack:///./src/views/reports/reports-purchases/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-purchases/api-service/index.js","webpack:///./src/views/reports/reports-purchases/store-module/index.js","webpack:///./src/views/reports/reports-vouchers/api-service/defaultConfig.js","webpack:///./src/views/reports/reports-vouchers/api-service/index.js","webpack:///./src/views/reports/reports-vouchers/store-module/index.js","webpack:///./src/views/auth/printer-configuration-modal/api-service/defaultConfig.js","webpack:///./src/views/auth/printer-configuration-modal/api-service/index.js","webpack:///./src/views/auth/printer-configuration-modal/store-module/index.js","webpack:///./src/store/app/index.js","webpack:///./src/store/app-config/index.js","webpack:///./src/store/vertical-menu/index.js","webpack:///./src/store/index.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/@core/components/scroll-to-top/ScrollToTop.vue?dbaf","webpack:///./src/views/sales/sales-receipts/store-module/type.js","webpack:///./src/views/warehouses/warehouses-inventory/store-module/type.js","webpack:///./src/libs/i18n/locales/vi/index.js","webpack:///./src/libs/i18n/locales/en/index.js","webpack:///./src/libs/i18n/index.js","webpack:///./src/@core/components/feather-icon/FeatherIcon.vue","webpack:///./src/App.vue?1b7e","webpack:///./src/@core/components/scroll-to-top/ScrollToTop.vue?af7a","webpack:///src/@core/components/scroll-to-top/ScrollToTop.vue","webpack:///./src/@core/components/scroll-to-top/ScrollToTop.vue?63b1","webpack:///./src/@core/components/scroll-to-top/ScrollToTop.vue","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///src/@core/components/feather-icon/FeatherIcon.vue","webpack:///./src/@core/components/feather-icon/FeatherIcon.vue?fe69","webpack:///./src/global-components.js","webpack:///./src/libs/acl/index.js","webpack:///./src/libs/portal-vue.js","webpack:///./src/libs/clipboard.js","webpack:///./src/libs/toastification.js","webpack:///./src/libs/sweet-alerts.js","webpack:///./src/libs/vue-select.js","webpack:///./src/libs/tour.js","webpack:///./src/@fake-db/mock.js","webpack:///./src/@fake-db/data/dashboard/analytics.js","webpack:///./src/@fake-db/data/dashboard/ecommerce.js","webpack:///./src/@fake-db/db.js","webpack:///./src/main.js","webpack:///./src/views/warehouses/warehouses-exchange-damaged-goods/store-module/type.js","webpack:///./src/views/reports/reports-customers/reports-customers-non-transactional/store-module/type.js","webpack:///./src/views/reports/reports-returned-goods/store-module/type.js","webpack:///./src/assets/images/icons/parachute.svg","webpack:///./src/views/warehouses/warehouses-input/store-module/type.js","webpack:///./src/views/warehouses/warehouses-output/store-module/type.js","webpack:///./src/@core/auth/jwt/jwtDefaultConfig.js","webpack:///./src/@core/auth/jwt/jwtService.js","webpack:///./src/@core/auth/jwt/useJwt.js","webpack:///./src/auth/jwt/useJwt.js","webpack:///./src/libs/axios.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-input-output-inventory/store-module/type.js","webpack:///./src/assets/images/icons/brush.svg","webpack:///./src/auth/utils.js","webpack:///./src/@core/components/feather-icon/FeatherIcon.vue?93b6","webpack:///./src/views/reports/reports-customers/reports-customers/store-module/type.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-output/store-module/type.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-input/store-module/type.js","webpack:///./src/@db/report.js","webpack:///./src/@db/warehouses.js","webpack:///./src/views/sales/sales-red-bills/store-module/type.js","webpack:///./src/libs/acl/routeProtection.js","webpack:///./src/router/routes/dashboard.js","webpack:///./src/router/routes/sales.js","webpack:///./src/router/routes/purchases.js","webpack:///./src/router/routes/warehouses.js","webpack:///./src/router/routes/reports.js","webpack:///./src/router/routes/auth.js","webpack:///./src/router/index.js","webpack:///./src/assets/images/icons/book.svg","webpack:///./src/views/reports/reports-sales/reports-sales-amount-receipt-per-customers/store-module/type.js","webpack:///./src/views/reports/reports-warehouses/report-warehouses-price-difference/store-module/type.js","webpack:///./src/views/reports/reports-sales/reports-sales-sale-receipt-on-delivery-type/store-module/type.js","webpack:///./src/assets/images/logo/kchLogo.png","webpack:///./src/assets/images/portrait/small/avatar-s-7.jpg","webpack:///./src/@core/app-config/useAppConfig.js","webpack:///./src/views/warehouses/warehouses-combo/store-module/type.js","webpack:///./src/views/reports/reports-vouchers/store-module/type.js","webpack:///./src/views/purchases/store-module/type.js","webpack:///./src/@db/sale.js","webpack:///./src/@db/system.js","webpack:///./src/@core/utils/utils.js","webpack:///./src/views/reports/reports-sales/reports-sales-sale-receipt-per-customer/store-module/type.js","webpack:///./src/libs/acl/ability.js","webpack:///./src/views/reports/reports-sales/reports-sales-cat/store-module/type.js","webpack:///./src/assets/images/icons/rocket.svg","webpack:///./src/views/reports/reports-sales/reports-sales/store-module/type.js","webpack:///./src/views/reports/reports-warehouses/reports-warehouses-inventory/store-module/type.js","webpack:///./src/views/reports/reports-purchases/store-module/type.js","webpack:///./src/@core/libs/serial.js","webpack:///./src/assets/images/portrait/small/avatar-s-8.jpg","webpack:///./src/assets/images/portrait/small/avatar-s-9.jpg","webpack:///./src/assets/images/portrait/small/avatar-s-6.jpg","webpack:///./src/libs/acl/config.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","REPORT_WAREHOUSES_PROMOTIONS","REPORT_WAREHOUSES_PROMOTIONS_GETTER","PRODUCT_CAT_GETTER","PRODUCT_GETTER","PRINT_REPORT_PROMOTION_GETTER","GET_REPORT_WAREHOUSES_PROMOTIONS_ACTIONS","GET_PRODUCT_ACTION","GET_PRODUCT_CAT_ACTION","EXPORT_REPORT_WAREHOUSES_PROMOTIONS_ACTION","PRINT_REPORT_PROMOTION_ACTION","genders","id","label","perPageSizes","pageNumber","minSearchLength","minSearchSize","minOnlineOrderLength","showStatus","invisible","enable","disable","errorAPIMessage","apiGetIpList","kFormatter","num","toFixed","avatarText","nameArray","split","map","word","charAt","toUpperCase","join","formatDateToLocale","formatting","day","month","year","Date","toLocaleDateString","formatISOtoVNI","isoTime","includeTime","includeText","date1","dateObj","getTime","getTimezoneOffset","date","getDate","getMonth","getFullYear","hours","getHours","minutes","getMinutes","seconds","getSeconds","formatVniDateToISO","arrayDate","expected","Number","current","setHours","tzoffset","toISOString","replaceDotWithComma","lastIndexOf","removedDotVal","newValue","replace","replaceCommaWithDot","formatNumberToLocale","valueFormated","toLocaleString","formatDotNumberToLocale","formatVniDateToGlobal","reverse","reverseVniDate","getTimeOfDate","hour","minute","hour12","Intl","DateTimeFormat","format","formatPrintDate","moment","locale","earlyMonth","startOf","nowDate","hostName","commonData","fetch","response","json","status","checkIpClient","ipAddress","ipAddressCurrent","toasts","jspmCheckStatus","JSPM","JSPrintManager","websocket_status","WSStatus","Open","Blocked","countDays","isoDate","monthAge","dateAge","now","yearNow","getYear","monthNow","dateNow","dateString","dateParts","dob","yearDob","monthDob","dateDob","age","ageString","yearString","monthString","dayString","yearAge","years","months","days","checkingDateInput","isValid","yearNotValid","preventDefaultWindowPrint","ctrlKey","metaKey","keyCode","preventDefault","stopImmediatePropagation","removeVietnameseTones","str","isRemove","stringRemove","trim","formatTextDisplayCustomer","text1","text2","spaceText","saleData","sizeTextDisplayCustomer","APP","LOGIN_STATUS_GETTER","UPDATE_LOGIN_STATUS_ACTIONS","RETURNEDGOODS","RETURNED_GOODS_GETTER","RETURNED_GOOD_CHOOSE_GETTER","RETURNED_GOOD_CHOOSEN_DETAIL_GETTER","REASON_RETURN_GOODS_GETTER","RETURNED_FILTERED_GOODS","RETURN_GOODS_DETAIL_GETTER","CLEAR_RETURNED_GOODS_MUTATION","GET_RETURNED_GOOD_CHOOSE_MUTATION","SET_DEFAULT_PAGE_SIZE","GET_RETURNED_GOODS_ACTION","GET_RETURNED_GOOD_CHOOSE_ACTION","GET_RETURNED_GOOD_CHOOSEN_DETAIL_ACTION","CREATE_RETURNED_GOOD_ACTION","GET_REASON_RETURN_GOODS_ACTION","GET_RETURN_GOODS_DETAIL_ACTION","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","variant","icon","class","domProps","_s","title","_e","text","isHTML","on","$event","$emit","hideClose","staticRenderFns","components","BAvatar","props","String","default","Boolean","component","success","Vue","$toast","ToastificationContent","position","warning","PRINTERCONFIG","PRINTER_CLIENT_GETTER","GET_PRINTER_CLIENT_ACTIONS","CREATE_PRINTER_CLIENT_ACTIONS","UPDATE_PRINTER_CLIENT_ACTIONS","$themeColors","$themeBreakpoints","$themeConfig","app","appName","appLogoImage","require","layout","isRTL","skin","routerTransition","contentWidth","menu","hidden","isCollapsed","navbar","backgroundColor","footer","customizer","enableScrollToTop","REPORT_EXCHANGE_DAMAGED_GOODS","REPORT_EXCHANGE_DAMAGED_GOODS_GETTER","REASON_EXCHANGE_DAMAGED_GOODS_GETTER","PRODUCT_LIST_GETTER","PRODUCT_LIST_PAGINATION_GETTER","PRODUCT_CAT_LIST_GETTER","GET_REPORT_EXCHANGE_DAMAGED_GOODS_ACTION","GET_REASON_EXCHANGE_DAMAGED_GOODS_ACTION","EXPORT_REPORT_EXCHANGE_DAMAGED_GOODS_ACTION","GET_PRODUCT_LIST_ACTION","GET_PRODUCT_CAT_LIST_ACTION","CUSTOMER","CUSTOMERS_GETTER","CUSTOMER_BY_ID_GETTER","CUSTOMER_TYPES_GETTER","CUSTOMER_TYPES_LABEL_GETTER","CUSTOMER_TYPES_UPDATE_GETTER","CUSTOMER_DEFAULT_GETTER","CREATE_CUSTOMER_GETTER","GENDERS_GETTER","SHOP_LOCATIONS_SEARCH_GETTER","SHOP_LOCATIONS_GETTER","PROVINCES_GETTER","DISTRICTS_GETTER","PRECINCTS_GETTER","CARD_TYPES_GETTER","CLOSELY_TYPES_GETTER","GET_CUSTOMERS_ACTION","GET_CUSTOMER_BY_ID_ACTION","CREATE_CUSTOMER_ACTION","UPDATE_CUSTOMER_ACTION","GET_CUSTOMER_TYPES_ACTION","GET_CUSTOMER_TYPES_UPDATE_ACTION","EXPORT_CUSTOMERS_ACTION","IMPORT_CUSTOMERS_ACTION","GET_CUSTOMER_DEFAULT_ACTION","GET_GENDERS_ACTION","EXPORT_CUSTOMERS_TEMPLATE","GET_SHOP_LOCATIONS_SEARCH_ACTION","GET_SHOP_LOCATIONS_ACTION","GET_PROVINCES_ACTION","GET_DISTRICTS_ACTION","GET_PRECINCTS_ACTION","GET_CARD_TYPES_ACTION","GET_CLOSELY_TYPES_ACTION","REPORT_WAREHOUSES_ADJUSTMENTS","REPORT_WAREHOUSES_ADJUSTMENTS_GETTER","PRINT_REPORT_WAREHOUSES_ADJUSTMENTS_GETTER","GET_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION","EXPORT_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION","PRINT_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION","SALES","VOUCHERS_GETTER","VOUCHER_BY_ID_GETTER","ONLINE_ORDERS_GETTER","ONLINE_ORDERS_PAGINATION_GETTER","ONLINE_ORDER_BY_ID_GETTER","ONLINE_ORDER_COINCIDE_ID_GETTER","GET_PRODUCTS_GETTER","GET_PRODUCT_INFOS_GETTER","GET_TOP_SALE_PRODUCTS_GETTER","GET_HOT_PRODUCTS_GETTER","GET_ALL_PRODUCT_GETTER","CREATE_SALE_ORDER_GETTER","GET_DISCOUNT_BY_CODE_GETTER","UPDATE_PRICE_TYPE_CUSTOMER_GETTER","GET_TOP_SALE_PRODUCTS_IN_MONTH_GETTER","GET_PROMOTION_FREE_ITEMS_GETTER","GET_PROMOTION_PROGRAMS_GETTER","GET_PROMOTION_CALCULATION_GETTER","GET_ITEMS_PRODUCTS_PROGRAM_GETTER","GET_VOUCHER_BY_SERIAL_GETTER","CUSTOMERS_SALE_GETTER","PRINT_SALES_GETTER","PRINT_SALES_TEMP_GETTER","GET_SALE_PAYMENT_TYPES_GETTER","GET_LIMIT_AGE_CUSTOMERS_GETTER","GET_PRODUCT_BY_BARCODE_GETTER","SALEMT_PROMOTION_OBJECT_GETTER","SALEMT_DELIVERY_TYPE_GETTER","GET_EDIT_ONLINE_PERMISSION_GETTER","GET_DEFAULT_CUSTOMER_TYPE_GETTER","GET_SCORECUMULATED_CUSTOMER_BY_ID_GETTER","GET_SINVOICE_ACCOUNT_GETTER","GET_VOUCHERS_ACTION","GET_VOUCHER_BY_ID_ACTION","GET_ONLINE_ORDERS_ACTION","GET_ONLINE_ORDER_BY_ID_ACTION","GET_ONLINE_ORDER_COINCIDE_ID_ACTION","GET_PRODUCTS_ACTION","GET_PRODUCT_INFOS_ACTION","GET_TOP_SALE_PRODUCTS_ACTION","GET_HOT_PRODUCTS_ACTION","GET_ALL_PRODUCT_ACTION","CREATE_SALE_ORDER_ACTION","GET_DISCOUNT_BY_CODE_ACTION","UPDATE_PRICE_TYPE_CUSTOMER_ACTION","GET_TOP_SALE_PRODUCTS_IN_MONTH_ACTION","GET_PROMOTION_FREE_ITEMS_ACTION","GET_PROMOTION_PROGRAMS_ACTION","GET_PROMOTION_CALCULATION_ACTION","GET_ITEMS_PRODUCTS_PROGRAM_ACTION","GET_VOUCHER_BY_SERIAL_ACTION","GET_CUSTOMERS_SALE_ACTION","PRINT_SALES_ACTION","PRINT_SALES_TEMP_ACTION","GET_SALE_PAYMENT_TYPES_ACTION","GET_LIMIT_AGE_CUSTOMERS_ACTION","GET_PRODUCT_BY_BARCODE_ACTION","GET_SALEMT_PROMOTION_OBJECT_ACTION","GET_SALEMT_DELIVERY_TYPE_ACTION","GET_EDIT_ONLINE_PERMISSION_ACTION","GET_DEFAULT_CUSTOMER_TYPE_ACTION","GET_SCORECUMULATED_CUSTOMER_BY_ID_ACTION","GET_SINVOICE_ACCOUNT_ACTION","SAVE_SINVOICE_ACCOUNT_ACTION","namespaced","state","getters","mutations","actions","COMMON","PRODUCTS","PRODUCTS_LIMIT","PO_AUTO","getProductsEndpoint","getAllProductCat","getPoListEndPoint","getPoDetailEndPoint","getApproveOrCancelPoEndPoint","getInitPOEndPoint","getCreatePOEndPoint","getExportPORequestEndPoint","getCustomerDefaultEndpoint","getCutoffValidEndpoint","poApproveWaitDelivery","getMOQ","exportPoProductTemplate","exportCurrentProductExcel","uploadProductsExcelEndpoint","generatePoXMLEndpoint","exceptionDaysEndpoint","generateAutoListExcelEndpoint","getProducts","args","axios","params","formatURLParams","getPOList","post","search","pagination","getPODetail","approveOrCancelPO","put","ids","isApproved","responseType","generatePoXML","approveWaitDeliveryPO","deliveryDate","initPOCreateData","createPo","exportPORequest","getCustomerDefault","getCutoffValid","uploadProductsExcel","formData","FormData","append","headers","getExceptionDays","exportPoAutoListExcel","productModalData","productData","poData","poDetail","poCreateData","allProductCat","customerDefault","poMOQ","cutoffValid","uploadProducts","exceptionDays","PO_PRODUCT_GETTER","PO_PRODUCT_MODAL_GETTER","PO_LIST_GETTER","PO_DETAIL_GETTER","PO_CREATE_DATA_GETTER","ALL_PRODUCT_CAT_GETTER","PO_MOQ_GETTER","CUTOFF_VALID_GETTER","UPLOAD_PRODUCT_GETTER","EXCEPTION_DAYS_GETTER","CLEAR_PO_STATE","GET_PO_PRODUCT_ACTION","val","PurchaseService","res","notificationResponseMessage","statusCode","statusValue","catch","GET_PO_PRODUCT_MODAL_ACTION","GET_PO_LIST_ACTION","GET_PO_DETAIL_ACTION","APPROVE_OR_CANCEL_ACTION","resText","JSON","parse","onSuccess","fileName","Math","floor","random","blob","Blob","GENERATE_PO_XML","match","APPROVE_WAIT_DELIVERY_ACTION","INIT_PO_CREATE_DATA_ACTION","CREATE_PO_ACTION","GET_ALL_PRODUCT_CAT_ACTION","EXPORT_PO_REQUEST_ACTION","FileSaver","saveAs","GET_MOQ_ACTION","GET_CUTOFF_VALID","EXPORT_PO_PRODUCT_TEMPLATE","EXPORT_CURRENT_PRODUCT_EXCEL","UPLOAD_PRODUCTS_EXCEL","file","productList","base64ExcelFile","bs","atob","buffer","ArrayBuffer","ba","Uint8Array","charCodeAt","errorLineNum","successLineNum","GET_EXCEPTION_DAYS","GENERATE_PO_LIST_EXCEL","PROMOTION","VOUCHERS","ONLINE_ORDERS","PRODUCT","APPARAM","getVouchersEndpoint","getVoucherByIdEndpoint","getOnlineOrdersEndpoint","getOnlineOrderByIdEndpoint","checkOnlineOrderCoincideIdEndpoint","getProductInfosEndpoint","getProductsTopSaleEndpoint","getProductsHotEndpoint","createSaleOrderEndpoint","getDiscountByCodeEndpoint","updatePriceTypeCustomerEndpoint","getProductsTopSaleMonthEndpoint","getPromotionFreeItemsEndpoint","getPromotionProgramsEndpoint","getPromotionCalculationEndpoint","getItemsProductsProgramEndpoint","getVoucherBySerialEndpoint","getCustomerToSaleEndpoint","getScorecumulatedByIdEndpoint","printSalesEndpoint","printSalesTempEndpoint","getSalesPaymentTypesEndpoint","getLimitAgeCustomerEndpoint","getProductByBarcodeEndpoint","getSalemtPromotionObjectTypeEndpoint","getSalemtDeliveryTypeEndpoint","getEditOnlinePermissionEndPoint","getDefaultCustomerTypeEndPoint","getDefaultGetSInvoiceAcountEndpoint","saveSInvoiceAccountEndpoint","getVouchers","getVoucherById","customerId","products","productIds","formId","ctrlId","getOnlineOrder","getOnlineOrderById","checkOnlineOrderCoincideId","getProductsTopSale","getProductInfos","getProductsHot","createSaleOrder","getDiscountByCode","dataGetCode","updatePriceTypeCustomer","customerTypeId","getProductsTopSaleInMonth","getPromotionFreeItems","getPromotionPrograms","invisibleLoading","getPromotionCalculation","getItemsProductsProgram","getVoucherBySerial","serial","getCustomersToSale","getScorecumulatedById","printSales","salesReceiptId","printSalesTemp","getSalesPaymentTypes","getLimitAgeCustomer","getProductByBarcode","getSalemtPromotionObjects","getSalemtDeliveryTypes","getEditOnlinePermission","getDefaultCustomerType","gettSInvoiceAccount","saveSInvoiceAccount","vouchers","voucherInfo","onlineOrders","onlineOrderProducts","onlineOrder","messageCoincide","onlineOrderPagination","productInfos","topSaleProducts","hotProducts","allProduct","discount","customerTypeProducts","productsInMonth","promotionFreeItems","promotionPrograms","promotionCalculation","itemsProductsProgram","voucherBySerial","customer","printSaleData","createSaleData","printSaleTempData","salePaymentTypes","limitAge","productByBarcode","salemtPromotions","salemtDeliveries","editOnlinePermission","defaultCustomerType","scorecumulated","topsaleProductsInfo","sInvoiceAccount","SalesServices","content","onFailure","orderSale","accountInfo","AREA","getCustomersEndpoint","getCustomerByIdEndpoint","createCustomerEndpoint","updateCustomerEndpoint","getCustomerTypesEndpoint","getCustomerTypesUpdateEndpoint","exportCustomersEndpoint","importCustomersEndpoint","exportCustomersTemplateEndpoint","getShopLocationsSearchEndpoint","getShopLocationsEndpoint","getProvincesEndpoint","getDistrictsEndpoint","getPrecinctsEndpoint","getCardTypesEndpoint","getCloselyTypesEndpoint","getGendersEndpoint","getCustomers","getCustomerById","getCustomerTypes","getCustomerTypesUpdate","createCustomer","updateCustomer","patch","exportCustomers","importCustomers","exportCustomersTemplate","getShopLocationsSearch","getShopLocations","getProvinces","getDistricts","getPrecincts","getCardTypes","getCloselyTypes","getGenders","customerData","customerById","customerCreate","shopLocationsSearch","shopLocations","customerTypes","customerTypesUpdate","provinces","districts","precincts","cardTypes","closelyTypes","customerDataFound","find","item","CustomerService","fileData","base64Excel","byteCharacters","byteNumbers","Array","byteArray","getElementById","SALE_RECEIPT","getSalesReceiptsEndpoint","getSalesReceiptsDetailEndpoint","printSalesReceipt","getSalesReceipts","formatSortUrl","sortFilterParams","getSalesReceiptsDetail","saleReceipts","saleReceiptsDetail","printSalesReceiptData","SALES_RECEIPTS_GETTER","SALES_RECEIPTS_DETAIL_GETTER","PRINT_SALES_RECEIPT_GETTER","GET_SALES_RECEIPTS_ACTION","SaleReceiptService","GET_SALES_RECEIPTS_DETAIL_ACTION","PRINT_SALES_RECEIPT_ACTION","RED_INVOICES","getRedInvoiceEndpoint","getBillOfSalesEndPoint","getBillOfSaleProductsEndPoint","getProductsEndPoint","createRedBillEndpoint","getInvoiceDetailEndpoint","deleteRedBillEndpoint","exportRedBillsEndpoint","updateRedBillsEndpoint","printRedBillsByIdEndpoint","getCustomersRedInvoiceEndpoint","getRedInvoices","getBillOfSales","getCustomersRedInvoice","getBillOfSaleProduct","createRedBill","getInvoiceDetail","deleteRedBill","delete","exportRedBills","updateRedBills","printRedBillsById","redInvoices","errorCode","customers","paging","info","billOfSales","billOfSalesPaging","productOfBills","invoiceDetail","invoiceDetailInfo","printdata","idCreateRedInvoice","customerToRedInvoice","RED_INVOICES_GETTER","GET_BILL_OF_SALES_GETTER","GET_PRODUCTS_IN_SELECTED_BILL_GETTER","PRODUCTS_GETTER","GET_INVOICE_DETAIL_GETTER","GET_INVOICE_DETAIL_INFO_GETTER","PRINT_RED_INVOICES_GETTER","ID_CREATE_RED_INVOICES_GETTER_GETTER","CUSTOMERS_TO_RED_INVOICE_GETTER","CLEAR_BILL_OF_SALE_PRODUCTS_UNCHECKED","filter","orderCode","CLEAR_ALL_BILL_OF_SALES_PRODUCTS","GET_RED_INVOICES_ACTION","RedInvoiceService","GET_BILL_OF_SALES_ACTION","totalPages","totalElements","last","numberOfElements","GET_PRODUCTS_IN_SELECTED_BILL_ACTION","CREATE_RED_BILL_ACTION","paramsCreateRedInvoice","GET_INVOICE_DETAIL_ACTION","orderCodeList","DELETE_RED_INVOICE_ACTION","EXPORT_RED_BILLS_ACTION","UPDATE_RED_BILLS_ACTION","redInvoiceRequests","PRINT_RED_INVOICES_ACTION","GET_CUSTOMERS_TO_RED_INVOICE_ACTION","sales","commons","apparams","getReturnedGoodsEndPoint","getSaleOrdersEndPoint","getSaleOrderDetailEndPoint","createReturnOrderEndPoint","getReturnGoodDetailEnpoint","getReasonReturnGoodsEndpoint","getOrderReturnedGoods","getSaleOrders","getSaleOrderDetail","createOrderReturn","getReturnGoodDetail","getReasonReturnGoods","orderReturnData","saleOders","salesOrderData","salesOrderPagination","salesFilteredOrder","pageSize","chooseProductData","productDetailData","reasonType","promotions","reasonReturn","items","cachedData","fromItem","toItem","firstSize","OderReturnService","commit","router","getWareHouseComboDetailEndPoint","getWarehousesComboEndPoint","getComboProductsEndpoint","getComboProductsDetailsEndpoint","createComboProductEndpoit","getWarehouseTypesEndpoint","getWareHouseComboDetail","getWarehousesCombo","getComboProducts","getComboProductsDetails","createComboProduct","getWarehouseTypes","wareHouseComboDetail","warehousesComboData","warehousesComboPagination","totalInfo","comboProducts","comboProductsInfo","comboProductsDetails","warehouseTypes","GET_WAREHOUSE_COMBO_DETAIL_GETTER","WAREHOUSES_COMBO_GETTER","COMBO_PRODUCTS_GETTER","COMBO_PRODUCTS_DETAILS_GETTER","COMBO_PRODUCTS_INFO_GETTER","WAREHOUSES_TYPE_GETTER","GET_WAREHOUSE_COMBO_DETAIL_ACTION","WareHouseComboService","GET_WAREHOUSES_COMBO_ACTIONS","GET_COMBO_PRODUCTS_ACTION","GET_COMBO_PRODUCTS_DETAILS_ACTION","details","CREATE_COMBO_PRODUCT_ACTION","GET_WAREHOUSES_TYPE_ACTION","EXCHANGE_DAMAGED_GOODS","getExchangeDamagedGoodsEndpoint","getExchangeDamagedGoodsReasonsEndpoint","createExchangeDamagedGoodsEndpoint","getExchangeDamagedGoodsByIdEndpoint","updateExchangeDamagedGoodsEndpoint","getDamagedGoodsByIdEndpoint","removeExchangeDamagedGoodsEndpoint","updatePriceProductEndpoint","getExchangeDamagedGoods","getExchangeDamagedGoodsReasons","createExchangeDamagedGoods","updateExchangeDamagedGoods","getExchangeDamagedGoodsById","getDamagedGoodsById","removeExchangeDamagedGoods","updatePriceProduct","exchangeDamagedGoods","exchangeDamagedGoodsReasons","exchangeDamagedGoodsById","damagedGoodsById","EXCHANGE_DAMAGED_GOODS_GETTER","EXCHANGE_DAMAGED_GOODS_REASONS_GETTER","EXCHANGE_DAMAGED_GOODS_BY_ID_GETTER","DAMAGED_GOODS_GETTER","UPDATE_PRICE_PRODUCT_GETTER","GET_EXCHANGE_DAMAGED_GOODS_ACTION","exchangeDamagedGoodsService","GET_EXCHANGE_DAMAGED_GOODS_BY_ID_ACTION","GET_EXCHANGE_DAMAGED_GOODS_REASONS_ACTION","CREATE_EXCHANGE_DAMAGED_GOODS_ACTION","damagedGoodsData","REMOVE_EXCHANGE_DAMAGED_GOODS_ACTION","UPDATE_EXCHANGE_DAMAGED_GOODS_ACTION","GET_DAMAGED_GOODS_ACTION","UPDATE_PRICE_PRODUCT_ACTION","getImportPoConfirmEndpoint","getPoConfirmEndpoint","getPoProductsEndpoint","getPoPromotionProductsEndpoint","getImportExcelEndpoint","getImportAdjustmentsEndpoint","getImportAdjustmentsDetailEndpoint","getImportBorrowingsEndpoint","getImportBorrwingsDetailEndpoint","updateNotImportEndpoint","createSaleImportEndpoint","getReceiptsEndpoint","exportReceiptsEndpoint","removeReceiptEndpoint","printWarehousesInputEndpoint","getReceiptByIdEndpoint","getProductsByIdEndpoint","updateReceiptEndpoint","getNotImportReasonsEndpoint","printOutInputOrderEndpoint","getWarehousesListEndpoint","getPoConfirm","getPoProducts","getPoPromotionProducts","getImportExcel","config","header","getImportAdjustments","getImportAdjustmentsDetail","getImportBorrowings","getImportBorrwingsDetail","updateNotImport","getReceiptImport","exportReceiptImport","createSaleImport","removeReceipt","printWarehouseInput","queryString","URLSearchParams","toString","method","getReceiptImportById","getProductsById","updateReceipt","getNotImportReasons","printOutInputOrder","transCode","getImportPoConfirm","getWarehousesList","poConfirm","poConfirmDetails","poConfirmPromoDetails","importAdjustments","importAdjustmentsDetails","importBorrowings","importBorrowingsDetails","receipts","receiptById","suggestProducts","warehousesType","notImportReasons","printOutInputOrderData","statusNotImport","warehousesList","POCONFIRM_GETTER","POCONFIRM_DETAILS_GETTER","POCONFIRM_PROMO_DETAILS_GETTER","IMPORT_ADJUSTMENTS_GETTER","IMPORT_ADJUSTMENTS_DETAILS_GETTER","IMPORT_BORROWINGS_GETTER","IMPORT_BORROWINGS_DETAILS_GETTER","RECEIPTS_GETTER","RECEIPT_BY_ID_GETTER","PRODUCTS_BY_ID_GETTER","PROMOTIONS_BY_ID_GETTER","NOT_IMPORT_REASONS_GETTER","PRINT_OUT_IN_PUT_ORDER_GETTER","STATUS_NOT_IMPORT_GETTER","WAREHOUSES_LIST_GETTER","CLEAR_STATUS_NOT_IMPORT_MUTATION","CLEAR_GRID_VIEW_MUTATION","CLEAR_ADJUST_GRID_VIEW_MUTATION","CLEAR_BORROW_GRID_VIEW_MUTATION","GET_POCONFIRMS_ACTION","ReceiptImportService","GET_PODETAIL_PRODUCTS_ACTION","GET_PODETAIL_PRODUCTS_PROMO_ACTION","GET_IMPORTEXCEL_ACTION","GET_IMPORT_ADJUSTMENTS_ACTION","GET_IMPORT_ADJUSTMENTS_DETAIL_ACTION","importAdjustmentsDetailInfo","GET_IMPORT_BORROWINGS_ACTION","GET_IMPORT_BORROWINGS_DETAIL_ACTION","UPDATE_NOT_IMPORT_ACTION","CREATE_SALE_IMPORT_ACTION","GET_RECEIPTS_ACTION","EXPORT_RECEIPTS_ACTION","GET_RECEIPT_BY_ID_ACTION","GET_PRODUCTS_BY_ID_ACTION","REMOVE_RECEIPT_ACTION","UPDATE_RECEIPT_ACTION","PRINT_WAREHOUSES_INPUT_ACTION","GET_NOT_IMPORT_REASONS_ACTION","PRINT_OUT_IN_PUT_ORDER_ACTION","GET_IMPORT_PO_CONFIRM_ACTION","GET_WAREHOUSES_LIST_ACTION","EXPORT","IMPORT","getWarehousesOutputsEndpoint","printWarehousesOutputEndpoint","getWarehousesOutputByIdEndpoint","updateWarehousesOutputEndpoint","getProductsOfWarehousesOutputEndpoint","getExportBorrowingEndpoint","getExportPoTransEndpoint","getExportAdjustmentEndpoint","getExportBorrowingDetailEndpoint","getExportPoTransDetailEndpoint","getExportAdjustmentDetailEndpoint","getWareHouseTypeEndpoint","createExportEndpoint","deleteWarehousesOutputEndpoint","getWarehouseOutputs","printWarehouseOutput","getWarehouseOutputById","getProductsOfWarehouseOutput","updateWarehouseOutput","getExportBorrowing","getExportAdjustment","getExportPoTrans","getExportPoTransDetail","getExportAdjustmentDetail","getExportBorrowingDetail","getWareHouseType","createExport","deleteWarehousesOutput","warehousesOutputs","warehousesOutput","poTrans","adjustmentTrans","borrowing","poProducts","wareHouseType","adjustmentProducts","borrowedProducts","GET_WAREHOUSES_OUTPUT_LIST_GETTER","GET_WAREHOUSES_OUTPUT_BY_ID_GETTER","GET_PRODUCTS_OF_WAREHOUSES_OUTPUT_GETTER","GET_EXPORT_ADJUSTMENTS_GETTER","GET_EXPORT_PO_TRANS_GETTER","GET_EXPORT_BORROWINGS_GETTER","GET_EXPORT_ADJUSTMENTS_DETAIL_GETTER","GET_EXPORT_BORROWINGS_DETAIL_GETTER","GET_EXPORT_PO_TRANS_DETAIL_GETTER","GET_WAREHOUSE_TYPE_GETTER","GET_WAREHOUSES_OUTPUT_LIST_ACTION","WarehousesService","PRINT_WAREHOUSES_OUTPUT_ACTION","GET_WAREHOUSES_OUTPUT_BY_ID_ACTION","GET_PRODUCTS_OF_WAREHOUSES_OUTPUT_ACTION","UPDATE_WAREHOUSES_OUTPUT_ACTION","GET_EXPORT_BORROWINGS_ACTION","GET_EXPORT_ADJUSTMENT_ACTION","GET_EXPORT_PO_TRANS_ACTION","GET_EXPORT_PO_TRANS_DETAIL_ACTION","GET_EXPORT_BORROWINGS_DETAIL_ACTION","GET_EXPORT_ADJUSTMENT_DETAIL_ACTION","GET_WAREHOUSE_TYPE_ACTION","CREATE_EXPORT_ACTION","DELETE_WAREHOUSES_ACTION","SALE","getWarehouseInventoriesEndpoint","getWarehouseInventoryStocksEndpoint","exportFilledStocksEndpoint","createWarehouseInventoryEndpoint","importFilledStocksEndpoint","checkExistedWarehouseInventoryEndpoint","getSampleImportFileEndpoint","getFailedImportFileEndpoint","getWarehouseInventoryDetailEndpoint","updateWarehouseInventoryEndpoint","getWarehouseInventories","getWarehouseInventoryStocks","exportFilledStocks","createWarehouseInventory","lstCreate","override","wareHouseTypeId","importFilledStocks","checkExistedWarehouseInventory","getSampleImportFile","getFailedImportFile","getWarehouseInventoryDetail","updateWarehouseInventory","lstUpdate","warehouseInventories","warehouseInventoryStocks","warehouseInventoryStatusCode","isExistedWarehouseInventory","warehouseInventoryData","warehouseInventoryImportData","warehouseInventoryDetail","WAREHOUSE_INVENTORIES_GETTER","WAREHOUSE_TYPES_GETTER","WAREHOUSE_INVENTORY_STOCKS_GETTER","IS_EXISTED_WAREHOUSE_INVENTORY_GETTER","WAREHOUSE_INVENTORY_DATA_GETTER","WAREHOUSE_INVENTORY_IMPORT_DATA_GETTER","WAREHOUSE_INVENTORY_DETAIL_GETTER","GET_WAREHOUSE_INVENTORIES_ACTION","WarehousesInventoryService","GET_WAREHOUSE_TYPES_ACTION","GET_WAREHOUSE_INVENTORY_STOCKS_ACTION","EXPORT_FILLED_STOCKS_ACTION","navigator","msSaveOrOpenBlob","elem","URL","createObjectURL","download","body","click","CREATE_WAREHOUSE_INVENTORY_ACTION","IMPORT_FILLED_STOCKS_ACTION","CHECK_EXISTED_WAREHOUSE_INVENTORY_ACTION","GET_SAMPLE_IMPORT_FILE_ACTION","GET_FAILED_IMPORT_FILE_ACTION","GET_WAREHOUSE_INVENTORY_DETAIL_ACTION","UPDATE_WAREHOUSE_INVENTORY_ACTION","REPORTS","SALES_PRODUCTS","getDifferencePriceEndPoint","getProductCatListsEndpoint","getProductListsEndpoint","exportDifferencePriceEndPoint","printReportDifferencePriceEndPoint","getDifferencePrice","getProductLists","getProductCatlists","exportDifferencePrice","printReportDifferencePrice","differencePrices","productCatData","printData","GET_REPORT_WAREHOUSES_DIFFERENCE_PRICE_GETTER","PRINT_REPORT_DIFFERENCE_GETTER","GET_REPORT_WAREHOUSES_DIFFERENCE_PRICE_ACTION","DifferencePriceServices","EXPORT_REPORT_WAREHOUSES_DIFFERENCE_PRICE_ACTION","PRINT_REPORT_DIFFERENCE_ACTION","getReportsWarehousesInventoryEndpoint","exportReportInventoriesEndpoint","printReportInventoryEndpoint","getReportsWarehousesInventory","exportReportInventories","printReportInventory","reportWarehousesInventory","reportWarehousesInventoryInfo","reportWarehousesInventoryPagination","productListPagination","productCatList","REPORT_WAREHOUSES_INVENTORY_GETTER","REPORT_WAREHOUSES_INVENTORY_INFO_GETTER","REPORT_WAREHOUSES_INVENTORY_PAGINATION_GETTER","PRINT_REPORT_INVENTORY_GETTER","GET_REPORT_WAREHOUSES_INVENTORY_ACTION","reportWarehousesInventoryService","EXPORT_REPORT_INVENTORIES_ACTION","PRINT_REPORT_INVENTORY_ACTION","reports","getReportsReturnedGoodsEndpoint","exportReportsReturnedGoodsEndpoint","printInputOrderDetailEndpoint","printSellsEndpoint","printReturnGoodsEndpoint","getReportsReturnedGoods","exportReportsReturnedGoods","printInputOrderDetail","printSells","printReturnGoods","reportReturnedgoodData","selectedProductRow","printInputOrderDetailData","printSellsData","printReturnGoodsData","REPORT_RETURNED_GOODS_GETTER","PRINT_INPUT_ORDER_DETIAL_GETTER","PRINT_SELLS_GETTER","PRINT_RETURN_GOODS_GETTER","CLEAR_ALL_PRODUCT_LISTS_CHECKED","GET_REPORT_RETURNED_GOODS_ACTION","ReportsService","EXPORT_REPORT_RETURNED_GOODS_ACTION","PRINT_INPUT_ORDER_DETIAL_ACTION","PRINT_SELLS_ACTION","PRINT_RETURN_GOODS_ACTION","getReportsWarehousesAdjustmentEndpoint","exportsWarehousesAdjustmentEndpoint","printWarehousesAdjustmentEndpoint","getReportsWarehousesAdjustment","exportsWarehousesAdjustment","printWarehousesAdjustment","adjustmentData","ReportService","getReportsWarehousesPromotionEndpoint","exportsWarehousesPromotionEndpoint","printReportPromotionEndpoint","getReportsWarehousesPromotion","exportsWarehousesPromotion","printReportPromotion","promotionData","getWarehousesInputEndpoint","exportExcelEndpoint","printShopImportReportEndpoint","getWarehousesInput","exportWarehouseInputs","printShopImportReport","warehousesInput","REPORT_WAREHOUSES_INPUT_GETTER","PRODUCT_LISTS_GETTER","PRODUCT_CAT_LISTS_GETTER","PRINT_SHOP_IMPORT_REPORT_GETTER","GET_REPORT_WAREHOUSES_INPUT_ACTION","ReportsWarehousesInputServices","EXPORT_REPORT_WAREHOUSES_INPUT_ACTION","GET_PRODUCT_LISTS_ACTIONS","GET_PRODUCT_CAT_LISTS_ACTIONS","PRINT_SHOP_IMPORT_REPORT_ACTION","OUTPUT_GOODS","getOutputGoodsEndpoint","exportOutputGoodsEndpoint","printOutputGoodsEndpoint","getOutputGoods","exportOutputGoods","printOutputGoods","outputGoods","OUTPUT_GOODS_GETTER","PRINT_OUTPUT_GOODS_GETTER","GET_OUTPUT_GOODS_ACTION","outputGoodsService","EXPORT_OUTPUT_GOODS_ACTION","PRINT_OUTPUT_GOODS_ACTION","INVENTORIES","getWarehousesInputOutputInventoryEndpoint","printOutInputInventoryEndpoint","getWarehousesInputOutputInventory","exportWarehousesInputOutputInventory","printOutInputInventory","printInputOutputData","REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_GETTER","PRINT_INPUT_OUTPUT_INVENTORY_GETTER","GET_REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_ACTION","ReportsWarehousesInputOutputInventoryServices","EXPORT_REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_ACTION","PRINT_INPUT_OUTPUT_INVENTORY_ACTION","getReportExchangeDamagedGoodListEndpoint","getReasonExchangeEndpoint","exportReportExchangeDamagedGoodsEndpoint","getReportExchangeDamagedGoodList","getReasonExchange","exportReportExchangeDamagedGoods","reportExchangeDamagedGoods","reportReasonExchangeDamagedGoods","reportExchangeDamagedGoodsService","REPORT","getReportsCustomersEndpoint","exportReportsCustomersEndpoint","getReportsCustomers","exportReportsCustomers","reportCustomerData","REPORT_CUSTOMERS_GETTER","GET_REPORT_CUSTOMERS_ACTION","EXPORT_REPORT_CUSTOMERS_ACTION","getReportsCustomersNonTransactionalEndpoint","exportReportsCustomersNonTransactionalEndpoint","printReportsCustomersNonTransactionalEndpoint","getReportsCustomersNonTransactional","exportReportsCustomersNonTransactional","printReportsCustomersNonTransactional","reportCustomersData","printCustomersNotTradeData","REPORT_CUSTOMERS_NON_TRANSACTIONAL_GETTER","PRINT_REPORT_CUSTOMERS_NON_TRANSACTIONAL_GETTER","GET_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION","EXPORT_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION","PRINT_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION","CUSTOMERS","getReportSalesQuantityReceiptsEndpoint","exportReportSalesQuantityReceiptsEndpoint","getReportSalesQuantityReceipts","exportReportSalesQuantityReceipts","reportSalesQuantityReceipt","reportSalesQuantityReceiptContent","reportSalesCustomerType","REPORT_SALES_CUSTOMER_TYPES_GETTER","REPORT_SALES__QUANTITY_SALE_RECEIPT_GETTER","REPORT_SALES_QUANTITY_SALE_RECEIPT_CONTENT_GETTER","GET_REPORT_SALES_QUANTITY_SALE_RECEIPTS_ACTION","reportSalesService","GET_CUSTOMERS_TYPES_ACTION","EXPORT_REPORT_SALES_QUANTITY_RECEIPT_ACTION","SALE_CAT","getReportsSalesCatEndpoint","exportReportsSalesCatEndpoint","printReportEndpoint","getReportsSalesCat","exportReportsSalesCat","printReport","printReportData","REPORT_SALES_CAT_GETTER","PRINT_REPORT_GETTER","GET_REPORT_SALES_CAT_ACTION","EXPORT_REPORT_SALES_CAT_ACTION","PRINT_REPORT_ACTION","SELLS","COMMONS","getReportSalesEndpoint","getProductCatsEndpoint","getBillCollectorsEndpoint","printReportSalesEndpoint","getSalesChannelEndpoint","getReportSales","exportReportSales","getProductCats","getBillCollectors","printReportSales","getSalesChannel","reportSales","billCollectors","printReportSalesData","salesChannel","REPORT_SALES_GETTER","PRODUCT_CATS_GETTER","BILL_COLLECTORS_GETTER","PRINT_REPORT_SALES_GETTER","SALES_CHANNEL_GETTER","CLEAR_ALL_PRODUCTS_CHECKED_MUTATION","GET_REPORT_SALES_ACTION","ReportsSalesServices","EXPORT_REPORT_SALES_ACTION","GET_PRODUCT_CATS_ACTION","GET_BILL_COLLECTORS_ACTION","PRINT_REPORT_SALES_ACTION","GET_SALES_CHANNEL_ACTION","getReportSalesAmountEndpoint","exportReportSalesExcelEndpoint","getReportSalesAmount","exportReportSalesExcel","reportSalesSaleReceipt","REPORT_SALES_SALE_RECEIPT_GETTER","GET_SALE_RECEIPTS_ACTION","EXPORT_REPORT_SALE_RECEIPT_AMOUNT_ACTION","getDeliveryTypesEndpoint","getReportSalesOnDeliveryTypeEndpoint","exportReportSalesOnDeliveryTypeEndpoint","getDeliveryTypes","getReportSalesOnDeliveryType","exportReportSalesOnDeliveryType","reportSalesSaleOnDeliveryType","reportSalesSaleOnDeliveryTypeContent","reportSalesDeliveryType","REPORT_SALES_SALE_ON_DELIVERY_TYPE_GETTER","REPORT_SALES_DELIVERY_TYPES_CONTENT_GETTER","REPORT_SALES_DELIVERY_TYPES_GETTER","GET_SALE_ON_DELIVERY_TYPE_ACTION","reportSalesSaleOnDeliveryTypeService","GET_SALES_DELIVERY_TYPES_ACTION","EXPORT_REPORT_SALE_ON_DELIVERY_TYPE_ACTION","getInputReceiptDetailsEndpoint","exportInputReceiptDetailExcelEndpoint","printInputReceiptDetailsEndpoint","getInputReceiptDetails","exportInputReceiptDetailExcel","printInputReceiptDetails","reportInputReceiptDetails","REPORT_INPUT_RECEIPT_DETAILS_GETTER","PRINT_REPORT_INPUT_RECEIPT_DETAILS_GETTER","GET_REPORT_INPUT_RECEIPT_DETAILS_ACTION","ReportsPurchasesSerivce","EXPORT_REPORT_INPUT_RECEIPT_DETAILS_ACTION","PRINT_REPORT_INPUT_RECEIPT_DETAILS_ACTION","getReportVouchersUsedEndpoint","exportVouchersExcelEndpoint","getReportVouchersUsed","reportVouchersUsed","REPORT_VOUCHERS_USED_GETTER","GET_REPORT_VOUCHERS_USED_ACTION","ReportVouchersService","EXPORT_REPORT_VOUCHERS_USED_ACTION","printer","crudPrinterClientEndpoint","getPrinterClient","clientId","createPrinterClient","updatePrinterClient","printConfigData","PrintService","isLoading","loginStatus","windowWidth","shallShowOverlay","currentBreakPoint","xl","lg","md","sm","UPDATE_IS_LOADING","localStorage","getItem","TOGGLE_RTL","documentElement","UPDATE_SKIN","setItem","classList","add","className","remove","UPDATE_ROUTER_TRANSITION","UPDATE_LAYOUT_TYPE","UPDATE_CONTENT_WIDTH","UPDATE_NAV_MENU_CONFIG","obj","assign","UPDATE_NAVBAR_CONFIG","UPDATE_FOOTER_CONFIG","isVerticalMenuCollapsed","UPDATE_VERTICAL_MENU_COLLAPSED","use","Vuex","Store","appConfig","verticalMenu","printerConfig","dashboard","purchases","salesCustomers","salesReceipts","salesRedBills","salesReturnedGoods","warehousesCombo","warehousesExchangeDamagedGoods","warehousesInventory","reportWarehousesDifferencePrice","reportsReturnedGoods","reportsWarehousesAdjustment","reportsWarehousesPromotion","reportWarehousesInput","reportsWarehousesOutput","reportWarehousesInputOutputInventory","reportWarehousesExchangeDamagedGoods","reportsCustomers","reportsCustomersNonTransactional","reportSalesSaleReceiptPerCustomer","reportSalesAmountReceiptPerCustomers","reportSalesCat","reportPurchases","reportVouchers","strict","process","DEV","webpackContext","req","webpackContextResolve","keys","SALESRECEIPTS","WAREHOUSEINVENTORY","common","loadLocaleMessages","vi","en","VueI18n","fallbackLocale","messages","silentTranslationWarn","skinClasses","y","directives","rawName","expression","modifiers","scrollToTop","Ripple","BButton","setup","rootEle","scrollTo","top","behavior","LayoutHorizontal","LayoutVertical","LayoutFull","ScrollToTop","Loading","decentralization","computed","$route","meta","contentLayoutType","$store","isLoggedIn","watch","getCustomerApiData","to","mounted","beforeCreate","methods","hideProgressBar","closeOnClick","closeButton","transition","store","functional","required","size","badge","badgeClasses","svg","h","FeatherIcon","abilitiesPlugin","ability","PortalVue","VueClipboard","Toast","VueSweetalert2","vSelect","Deselect","OpenIndicator","VueTour","mock","MockAdapter","congratulations","saleToday","subscribersGained","series","analyticsData","subscribers","ordersRecevied","orders","avgSessions","sessions","lastDays","growth","goal","users","retention","duration","salesBar","supportTracker","totalTicket","newTicket","openTicket","responseTime","supportTrackerRadialBar","timeline","step1","subtitle","img","step2","avatar","avatarName","occupation","step3","avatars","userImg","step4","salesChart","appDesign","teams","color","members","planing","onGet","reply","statisticsItems","customClass","statisticsOrder","statisticsProfit","earningsChart","revenue","price","budget","revenueReport","budgetChart","companyTable","avatarImg","avatarIcon","avatarColor","avatarTitle","viewTitle","viewsub","loss","meetup","mediaData","fullName","goalOverview","completed","inProgress","transactionData","types","avatarVariant","payment","deduction","onAny","passThrough","dotenv","BootstrapVue","BootstrapVueIcons","VueCompositionAPI","VueGoodTablePlugin","optionsVueBarcodeScanner","sensitivity","requiredAttr","controlSequenceKeys","callbackAfterTimeout","VueBarcodeScanner","$moment","$html2canvas","html2canvas","$isEmpty","isEmpty","$onlyNumberInput","onlyNumberInput","$onlyPOQuantityInput","onlyPOQuantityInput","$onlyDateInput","onlyDateInput","$getInputTypeslabel","getInputTypeslabel","$getOutputTypeslabel","getOutputTypeslabel","$getWarehousesStatuslabel","getWarehousesStatuslabel","$preventPasteSpecialChars","preventPasteSpecialChars","$quantityByConvFact","quantityByConvFact","$formatNumberToLocale","$formatISOtoVNI","$formatVniDateToISO","$formatPrintDate","$permission","permission","flatPickr","localize","Vietnamese","VueFlatPickr","TreeSelect","productionTip","silent","i18n","App","$mount","WAREHOUSES_EXCHANGE_DAMAGED_GOODS","REPORT_CUSTOMERS_NON_TRANSACTIONAL","REPORT_RETURNED_GOODS","WAREHOUSEINPUT","IMPORTED_POCONFIRM_GETTER","WAREHOUSES_OUTPUT","preLoginEndpoint","loginEndpoint","registerEndpoint","changePasswordEndpoint","refreshEndpoint","logoutEndpoint","reloadCaptchaEndpoint","tokenType","storageTokenKeyName","storageRefreshTokenKeyName","JwtService","axiosIns","jwtOverrideConfig","jwtDefaultConfig","jwtConfig","interceptors","accessToken","getToken","withCredentials","Authorization","logout","removeItem","$ability","update","initialAbility","callback","refreshToken","getRefreshToken","useJwt","jwt","baseURL","$http","REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY","isUserLoggedIn","getUserData","CryptoJS","AES","decrypt","enc","Utf8","getUserName","setWeakPasswordChanged","removeWeakPasswordChanged","getWeakPasswordChanged","getHomeRouteForLoggedInUser","userRole","REPORT_CUSTOMERS","REPORT_OUTPUT_GOODS","REPORT_WAREHOUSES_INPUT","reasonTypes","inputTypes","saleChannels","outputTypes","tradingTypes","transTypes","RED_INVOICE","canNavigate","matched","some","route","can","action","resource","path","pageTitle","breadcrumb","active","redirectIfLoggedIn","VueRouter","base","scrollBehavior","x","routes","redirect","auth","warehouses","beforeEach","_","next","userData","role","lastItemBreadcrumb","REPORT_SALES_QUANTITY_SALE_RECEIPT","REPORT_WAREHOUSES_DIFFERENCE_PRICE","REPORT_SALES_SALE_ON_DELIVERY_TYPE","usAppConfig","set","layoutType","isNavMenuHidden","navMenuType","navbarBackgroundColor","navbarType","footerType","WAREHOUSES_COMBO","REPORT_VOUCHERS","PURCHASE","synStatus","productInfoType","salemtPromotionObject","salemtDeliveryType","salePaymentType","reasonReturnGoods","promotionType","constraintType","orderType","programPromotionType","printState","pageSizeRecommendProducts","pageNumberRecommendProducts","jspmDownloadLinks","win64","win32","macOS","linux","isObject","getCustomerStatusLabel","warehousesDataFound","warehousesData","propName","getNow","time","dateTime","getCurrentTime","char","fromCharCode","test","quantity","convFact","packageNum","boxNum","quantityArray","url","sort","reduce","prev","curr","field","filtered","resizeAbleTable","thElm","startOffset","forEach","querySelectorAll","th","style","grip","innerHTML","right","bottom","width","cursor","addEventListener","offsetWidth","pageX","getJSPMDownloadInfo","platform","userAgent","macosPlatforms","windowsPlatforms","isWin64OS","indexOf","os","link","systemData","printFile","printerName","pdf","auto_reconnect","checkConnect","includes","save","cpj","ClientPrintJob","clientPrinter","InstalledPrinter","printContent","PrintFilePDF","output","FileSourceType","printAsGrayscale","files","sendToClient","autoPrint","hiddFrame","height","opacity","isSafari","contentWindow","execCommand","print","formatTextCustomerDisplay","textParam","isLeft","sendToCustomerDisplay","textData","initText","Serial","isOpen","autoConnectAndOpenPreviouslyApprovedPort","write","responseMessage","tokenExpiredMess","location","REPORT_SALES_SALE_RECEIPT","existingAbility","formCode","controlCode","form","subject","controls","control","show","disabled","Ability","REPORT_SALES_CAT","REPORT_SALES","REPORT_WAREHOUSES_INVENTORY","REPORT_PURCHASES","SerialEvents","freeze","CONNECTION_OPENED","CONNECTION_CLOSED","DATA_RECEIVED","ERROR_OCCURRED","serialPort","serialWriter","serialReader","keepReading","readableStreamClosed","writableStreamClosed","events","Map","knownEvents","Set","log","close","has","serialOptions","baudRate","getPorts","approvedPortList","connect","open","fireEvent","connectAndOpen","cancel","portFilters","existingPort","oldApprovedPortList","requestPort","textEncoder","TextEncoderStream","readable","pipeTo","writable","getWriter","textDecoder","TextDecoderStream","pipeThrough","TransformStream","LineBreakTransformer","getReader","read","done","releaseLock","chunks","controller","lines","pop","line","enqueue"],"mappings":"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","file":"app.e73fbb1a8f84403864e8time1729068238662.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \"-\" + \"e73fbb1a8f84403864e8\" + \"time1729068238662.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-02234bd8\":1,\"chunk-048f1d18\":1,\"chunk-06b5edad\":1,\"chunk-038cc8fc\":1,\"chunk-176ef6b0\":1,\"chunk-6c72ddf2\":1,\"chunk-76fd249e\":1,\"chunk-00527c98\":1,\"chunk-01b407ba\":1,\"chunk-01d56174\":1,\"chunk-0846b7c6\":1,\"chunk-0928d1bc\":1,\"chunk-2c44b5c0\":1,\"chunk-1d680ced\":1,\"chunk-2cb7bad4\":1,\"chunk-31093d18\":1,\"chunk-335783e9\":1,\"chunk-3694987a\":1,\"chunk-3d48004e\":1,\"chunk-60429382\":1,\"chunk-7221ddc3\":1,\"chunk-8bc82974\":1,\"chunk-7e1148ce\":1,\"chunk-00d2b17a\":1,\"chunk-6695914a\":1,\"chunk-11c72806\":1,\"chunk-450beb46\":1,\"chunk-544ecc19\":1,\"chunk-6e9bb02e\":1,\"chunk-704186c0\":1,\"chunk-70741252\":1,\"chunk-709b9376\":1,\"chunk-7241a610\":1,\"chunk-25454019\":1,\"chunk-68e850a8\":1,\"chunk-7e4f9a06\":1,\"chunk-7f9b4978\":1,\"chunk-a4b9a93e\":1,\"chunk-e2ba92a0\":1,\"chunk-a549fd5c\":1,\"chunk-a7858aec\":1,\"chunk-d65868d4\":1,\"chunk-eb50461c\":1,\"chunk-d901b33a\":1,\"chunk-4bb4c5d0\":1,\"chunk-8fd193d6\":1,\"chunk-1b3e10bb\":1,\"chunk-c0df7318\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + \"e73fbb1a8f84403864e8\" + \".1729068238662.css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/avatar-s-20.32972323.jpg\";","export const REPORT_WAREHOUSES_PROMOTIONS = 'reportsWarehousesPromotion'\r\n\r\n// Getters\r\nexport const REPORT_WAREHOUSES_PROMOTIONS_GETTER = 'REPORT_WAREHOUSES_PROMOTIONS_GETTER'\r\nexport const PRODUCT_CAT_GETTER = 'PRODUCT_CAT_GETTER'\r\nexport const PRODUCT_GETTER = 'PRODUCT_GETTER'\r\nexport const PRINT_REPORT_PROMOTION_GETTER = 'PRINT_REPORT_PROMOTION_GETTER'\r\n\r\n// Actions\r\nexport const GET_REPORT_WAREHOUSES_PROMOTIONS_ACTIONS = 'GET_REPORT_WAREHOUSES_PROMOTIONS_ACTIONS'\r\nexport const GET_PRODUCT_ACTION = 'GET_PRODUCT_ACTION'\r\nexport const GET_PRODUCT_CAT_ACTION = 'GET_PRODUCT_CAT_ACTION'\r\nexport const EXPORT_REPORT_WAREHOUSES_PROMOTIONS_ACTION = 'EXPORT_REPORT_WAREHOUSES_PROMOTIONS_ACTION'\r\nexport const PRINT_REPORT_PROMOTION_ACTION = 'PRINT_REPORT_PROMOTION_ACTION'\r\n","module.exports = __webpack_public_path__ + \"img/star.68dee1b7.svg\";","export default {\r\n genders: [\r\n { id: '1', label: 'Nam' },\r\n { id: '2', label: 'Nữ' },\r\n { id: '3', label: 'Khác' },\r\n ],\r\n\r\n perPageSizes: [\r\n 20,\r\n 40,\r\n 60,\r\n 80,\r\n 100,\r\n 200,\r\n 300,\r\n 500,\r\n ],\r\n pageNumber: 1,\r\n\r\n minSearchLength: 4,\r\n minSearchSize: 20,\r\n\r\n minOnlineOrderLength: 1,\r\n\r\n showStatus: {\r\n invisible: 1,\r\n enable: 2,\r\n disable: 3,\r\n },\r\n\r\n errorAPIMessage: 'Server không hoạt động, vui lòng liên hệ Quản trị.',\r\n apiGetIpList: [\r\n 'https://api.ipify.org?format=json',\r\n 'http://ip-api.com/json',\r\n 'http://www.geoplugin.net/json.gp',\r\n 'https://ipinfo.io/json',\r\n ],\r\n}\r\n","import moment from 'moment'\r\nimport JSPM from 'jsprintmanager'\r\n// eslint-disable-next-line import/no-unresolved\r\nimport html2pdf from 'html2pdf.js'\r\nimport commonData from '@/@db/common'\r\nimport saleData from '@/@db/sale'\r\nimport toasts from './toasts/toasts'\r\n\r\nexport const kFormatter = num => (num > 999 ? `${(num / 1000).toFixed(1)}k` : num)\r\n\r\nexport const title = (value, replacer = ' ') => {\r\n if (!value) return ''\r\n const str = value.toString()\r\n\r\n const arr = str.split(replacer)\r\n const capitalizedArray = []\r\n arr.forEach(word => {\r\n const capitalized = word.charAt(0).toUpperCase() + word.slice(1)\r\n capitalizedArray.push(capitalized)\r\n })\r\n return capitalizedArray.join(' ')\r\n}\r\n\r\nexport const avatarText = value => {\r\n if (!value) return ''\r\n const nameArray = value.split(' ')\r\n return nameArray.map(word => word.charAt(0).toUpperCase()).join('')\r\n}\r\n\r\n/**\r\n * Format and return date in Humanize format\r\n * Intl docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format\r\n * Intl Constructor: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat\r\n * @param {String} value date to format\r\n * @param {Object} formatting Intl object to format with\r\n */\r\nexport const formatDate = (value, formatting = { month: 'short', day: 'numeric', year: 'numeric' }) => {\r\n if (!value) return value\r\n return new Date(value).toLocaleDateString('en-US', formatting)\r\n}\r\n\r\n// Format yyyy-mm-dd|iso|timestamp to dd/mm/yyyy\r\nexport const formatDateToLocale = (value, formatting = { day: '2-digit', month: '2-digit', year: 'numeric' }) => {\r\n if (!value) return value\r\n return new Date(value).toLocaleDateString('vi-VN', formatting)\r\n}\r\n\r\nexport const formatISOtoVNI = (isoTime, includeTime, includeText) => {\r\n if (!isoTime) return isoTime\r\n\r\n if (isoTime.length === 19) {\r\n // eslint-disable-next-line no-param-reassign\r\n isoTime = `${isoTime}.000Z`\r\n } else if (isoTime.length === 23 || isoTime.length === 16) {\r\n // eslint-disable-next-line no-param-reassign\r\n isoTime = `${isoTime}Z`\r\n }\r\n\r\n const date1 = new Date(isoTime)\r\n const dateObj = new Date(date1.getTime() + (date1.getTimezoneOffset() * 60000))\r\n\r\n const date = (`0${dateObj.getDate()}`).slice(-2)\r\n const month = (`0${dateObj.getMonth() + 1}`).slice(-2)\r\n const year = dateObj.getFullYear()\r\n const hours = (`0${dateObj.getHours()}`).slice(-2)\r\n const minutes = (`0${dateObj.getMinutes()}`).slice(-2)\r\n const seconds = (`0${dateObj.getSeconds()}`).slice(-2)\r\n\r\n if (includeTime !== undefined && includeTime) {\r\n return `${date}/${month}/${year} ${hours}:${minutes}:${seconds}`\r\n }\r\n if (includeText !== undefined && includeText) {\r\n return `${date}/${month}/${year} lúc ${hours}:${minutes}`\r\n }\r\n\r\n return `${date}/${month}/${year}`\r\n}\r\n\r\n// Format dd/mm/yyyy to 2021-04-15T03:32:47.519Z\r\nexport const formatVniDateToISO = value => {\r\n if (!value) return value\r\n const arrayDate = value.split('/')\r\n const expected = new Date(Number(arrayDate[2]), Number(arrayDate[1]) - 1, Number(arrayDate[0]))\r\n\r\n let current = new Date()\r\n current.setHours(0, 0, 0, 0)\r\n\r\n if (current.getTime() === expected.getTime()) {\r\n current = new Date()\r\n } else {\r\n current = expected\r\n }\r\n const tzoffset = expected.getTimezoneOffset() * 60000 // offset in milliseconds\r\n\r\n return (new Date(current - tzoffset)).toISOString().slice(0, -1)\r\n}\r\n\r\n// Replace . with ,\r\nexport const replaceDotWithComma = value => {\r\n if (!value) return value\r\n // equals to -1 if the value is decimal\r\n if (value.lastIndexOf(',') !== -1) {\r\n // replacing all dot to comma\r\n const removedDotVal = value.split('.').join(',')\r\n const newValue = removedDotVal.replace(/,([^,]*)$/, '.$1')\r\n return newValue\r\n }\r\n return value.split('.').join(',')\r\n}\r\n// Replace , with .\r\nexport const replaceCommaWithDot = value => {\r\n if (!value) return value\r\n // equals to -1 if the value is decimal\r\n if (value.lastIndexOf('.') !== -1) {\r\n // replacing all dot to comma\r\n const removedDotVal = value.split(',').join('.')\r\n const newValue = removedDotVal.replace(/,([^,]*)$/, '.$1')\r\n return newValue\r\n }\r\n return value.split(',').join('.')\r\n}\r\n\r\n// Format number to locale\r\nexport const formatNumberToLocale = value => {\r\n if (!value) return value\r\n const valueFormated = Number(value)\r\n return replaceDotWithComma(valueFormated.toLocaleString('vi-VN'))\r\n}\r\n// Format number to locale (Dot)\r\nexport const formatDotNumberToLocale = value => {\r\n if (!value) return value\r\n const valueFormated = Number(value)\r\n return replaceCommaWithDot(valueFormated.toLocaleString('vi-VN'))\r\n}\r\n\r\n// Format from dd/mm/yyyy to yyyy-mm-dd\r\nexport const formatVniDateToGlobal = value => {\r\n if (value) {\r\n return value.split('/').reverse().join('-')\r\n }\r\n return null\r\n}\r\n\r\n// Format from dd/mm/yyyy to yyyy/mm/dd\r\nexport const reverseVniDate = value => {\r\n if (value) {\r\n return value.split('/').reverse().join('/')\r\n }\r\n return null\r\n}\r\n\r\n/**\r\n * Return short human friendly month representation of date\r\n * Can also convert date to only time if date is of today (Better UX)\r\n * @param {String} value date to format\r\n * @param {Boolean} toTimeForCurrentDay Shall convert to time if day is today/current\r\n */\r\n\r\n// Strip all the tags from markup and return plain text\r\nexport const filterTags = value => value.replace(/<\\/?[^>]+(>|$)/g, '')\r\n\r\nexport const getTimeOfDate = value => {\r\n const formatting = { hour: 'numeric', minute: 'numeric', hour12: false }\r\n\r\n return new Intl.DateTimeFormat('vi-VN', formatting).format(new Date(value))\r\n}\r\n\r\nexport const formatPrintDate = date => moment(date).locale('en').format('DD/MM/YYYY - HH:mm:ss')\r\n\r\nexport const earlyMonth = () => moment().startOf('month').format('DD/MM/YYYY')\r\n\r\nexport const nowDate = () => moment().format('DD/MM/YYYY')\r\n\r\n// call api get ip client\r\nexport const hostName = async () => {\r\n for (let i = 0; i < commonData.apiGetIpList.length; i += 1) {\r\n try {\r\n // eslint-disable-next-line no-await-in-loop\r\n const response = await fetch(commonData.apiGetIpList[i], { mode: 'cors' })\r\n // eslint-disable-next-line no-await-in-loop\r\n const data = await response.json()\r\n if (data.status && data.status !== 'success') {\r\n // eslint-disable-next-line no-continue\r\n continue\r\n } else {\r\n return data\r\n }\r\n } catch (error) {\r\n // temp\r\n }\r\n }\r\n return null\r\n}\r\nexport const checkIpClient = (ipAddress, ipAddressCurrent) => {\r\n if (ipAddressCurrent !== ipAddress) {\r\n toasts.error('Không tìm thấy máy in. Vui lòng cấu hình lại máy in!')\r\n return false\r\n }\r\n return true\r\n}\r\n// call api get ip client\r\n\r\n// check JSPM is running\r\nexport const jspmCheckStatus = () => {\r\n if (JSPM.JSPrintManager.websocket_status === JSPM.WSStatus.Open) {\r\n return true\r\n }\r\n if (JSPM.JSPrintManager.websocket_status === JSPM.WSStatus.Blocked) {\r\n toasts.error('JSPrintManager (JSPM) đã chặn trang web này!')\r\n return false\r\n }\r\n return false\r\n}\r\n// check JSPM is running\r\n\r\n// START - func print type A4\r\nexport const printActions = (data, printerName, optionsPrinter) => {\r\n const left = optionsPrinter.x ? optionsPrinter.x : 1.07\r\n const opt = {\r\n margin: optionsPrinter.margin ? optionsPrinter.margin : 1,\r\n image: { type: 'jpeg', quality: 0.9 }, // type and quality image export\r\n pagebreak: {\r\n mode: optionsPrinter.pageBreak ? optionsPrinter.pageBreak : 'avoid-all', // break new page\r\n },\r\n html2canvas: {\r\n backgroundColor: null,\r\n scale: optionsPrinter.scale ? optionsPrinter.scale : 2.5, // increase quality data print\r\n imageTimeout: 0,\r\n top: 10,\r\n bottom: 20,\r\n },\r\n jsPDF: {\r\n format: optionsPrinter.format ? optionsPrinter.format : '', // format paper convert\r\n orientation: optionsPrinter.orientation ? optionsPrinter.orientation : 'portrait', // format orientation paper\r\n hotfixes: 'px_scaling',\r\n },\r\n }\r\n data.classList.remove('d-none')\r\n const dataClone = document.createElement('div')\r\n dataClone.appendChild(data)\r\n html2pdf().set(opt).from(dataClone)\r\n .toPdf()\r\n .then(() => {\r\n data.classList.add('d-none')\r\n })\r\n .get('pdf')\r\n .then(file => {\r\n if (optionsPrinter.isPaging) {\r\n const totalPages = file.internal.getNumberOfPages()\r\n for (let i = 1; i <= totalPages; i += 1) {\r\n file.setPage(i)\r\n file.setFontSize(10)\r\n file.setTextColor('#6e6b7b')\r\n file.text(`Trang ${i} / ${totalPages}`, file.internal.pageSize.getWidth() / left, file.internal.pageSize.getHeight() - 5)\r\n }\r\n }\r\n })\r\n .output('datauristring')\r\n .then(pdf => {\r\n const cpj = new JSPM.ClientPrintJob()\r\n cpj.clientPrinter = new JSPM.InstalledPrinter(printerName) // get printer\r\n // convert data\r\n const printContent = new JSPM.PrintFilePDF(pdf, JSPM.FileSourceType.URL, `${optionsPrinter.fileName}.pdf`, 1)\r\n // rotate pager áp dụng in ngang [RT90]\r\n printContent.printRotation = JSPM.PrintRotation[optionsPrinter.rotate ? optionsPrinter.rotate : 'None']\r\n // auto fit data print\r\n printContent.pageSizing = JSPM.Sizing[optionsPrinter.pageSizing ? optionsPrinter.pageSizing : 'None']\r\n printContent.printAsGrayscale = true // Options print black/white(=true) and color(=false)\r\n cpj.files.push(printContent)\r\n cpj.sendToClient()\r\n })\r\n}\r\n\r\n// END - func print type A4\r\n\r\n// count from isoDate to now\r\nexport const countDays = isoDate => {\r\n const now = new Date()\r\n\r\n const yearNow = now.getYear()\r\n const monthNow = now.getMonth()\r\n const dateNow = now.getDate()\r\n\r\n const dateString = formatISOtoVNI(isoDate)\r\n const dateParts = dateString.split('/')\r\n const dob = new Date(+dateParts[2], dateParts[1] - 1, +dateParts[0])\r\n\r\n const yearDob = dob.getYear()\r\n const monthDob = dob.getMonth()\r\n const dateDob = dob.getDate()\r\n let age = {}\r\n let ageString = ''\r\n let yearString = ''\r\n let monthString = ''\r\n let dayString = ''\r\n\r\n let yearAge = yearNow - yearDob\r\n let monthAge\r\n let dateAge\r\n if (monthNow >= monthDob) {\r\n monthAge = monthNow - monthDob\r\n } else {\r\n yearAge -= 1\r\n monthAge = 12 + monthNow - monthDob\r\n }\r\n\r\n if (dateNow >= dateDob) {\r\n dateAge = dateNow - dateDob\r\n } else {\r\n monthAge -= 1\r\n dateAge = 31 + dateNow - dateDob\r\n\r\n if (monthAge < 0) {\r\n monthAge = 11\r\n yearAge -= 1\r\n }\r\n }\r\n\r\n age = {\r\n years: yearAge,\r\n months: monthAge,\r\n days: dateAge,\r\n }\r\n\r\n if (age.years > 0) yearString = ' năm'\r\n if (age.months > 0) monthString = ' tháng'\r\n if (age.days > 0) dayString = ' ngày'\r\n\r\n if ((age.years > 0) && (age.months > 0) && (age.days > 0)) ageString = `${age.years + yearString} ${age.months}${monthString} ${age.days}${dayString}`\r\n else if ((age.years === 0) && (age.months === 0) && (age.days > 0)) ageString = `${age.days}${dayString}`\r\n else if ((age.years > 0) && (age.months === 0) && (age.days === 0)) ageString = `${age.years + yearString}`\r\n else if ((age.years > 0) && (age.months > 0) && (age.days === 0)) ageString = `${age.years + yearString} ${age.months}${monthString}`\r\n else if ((age.years === 0) && (age.months > 0) && (age.days > 0)) ageString = `${age.months + monthString}`\r\n else if ((age.years > 0) && (age.months === 0) && (age.days > 0)) ageString = `${age.years + yearString}`\r\n else if ((age.years === 0) && (age.months > 0) && (age.days === 0)) ageString = `${age.months + monthString}`\r\n else ageString = ''\r\n\r\n return ageString\r\n}\r\n\r\nexport const checkingDateInput = date => {\r\n const isValid = moment(date, 'DD/MM/YYYY', true).isValid()\r\n const yearNotValid = date.slice(6)\r\n if (!isValid || yearNotValid === '0000') {\r\n toasts.error('Ngày tháng không tồn tại')\r\n return false\r\n }\r\n return true\r\n}\r\n\r\nexport const jsPdfPrint = (data, printerName, optionsPrinter) => {\r\n const cpj = new JSPM.ClientPrintJob()\r\n cpj.clientPrinter = new JSPM.InstalledPrinter(printerName)\r\n // convert data\r\n const printContent = new JSPM.PrintFilePDF(data, JSPM.FileSourceType.URL, `${optionsPrinter.fileName}.pdf`, 1)\r\n // rotate pager áp dụng in ngang [RT90]\r\n printContent.printRotation = JSPM.PrintRotation[optionsPrinter.rotate ? optionsPrinter.rotate : 'None']\r\n // auto fit data print\r\n printContent.pageSizing = JSPM.Sizing[optionsPrinter.pageSizing ? optionsPrinter.pageSizing : 'None']\r\n // printContent.printAsGrayscale = true // Options print black/white(=true) and color(=false)\r\n cpj.files.push(printContent)\r\n cpj.sendToClient()\r\n}\r\nexport const preventDefaultWindowPrint = event => {\r\n if ((event.ctrlKey || event.metaKey) && event.keyCode === 80) {\r\n event.preventDefault()\r\n event.stopImmediatePropagation()\r\n return true\r\n }\r\n return false\r\n}\r\n\r\nexport const removeVietnameseTones = (str, isRemove) => {\r\n let stringRemove = str\r\n if (!isRemove) {\r\n return stringRemove\r\n }\r\n stringRemove = stringRemove.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a')\r\n stringRemove = stringRemove.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, 'e')\r\n stringRemove = stringRemove.replace(/ì|í|ị|ỉ|ĩ/g, 'i')\r\n stringRemove = stringRemove.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o')\r\n stringRemove = stringRemove.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u')\r\n stringRemove = stringRemove.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y')\r\n stringRemove = stringRemove.replace(/đ/g, 'd')\r\n stringRemove = stringRemove.replace(/À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ/g, 'A')\r\n stringRemove = stringRemove.replace(/È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ/g, 'E')\r\n stringRemove = stringRemove.replace(/Ì|Í|Ị|Ỉ|Ĩ/g, 'I')\r\n stringRemove = stringRemove.replace(/Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ/g, 'O')\r\n stringRemove = stringRemove.replace(/Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ/g, 'U')\r\n stringRemove = stringRemove.replace(/Ỳ|Ý|Ỵ|Ỷ|Ỹ/g, 'Y')\r\n stringRemove = stringRemove.replace(/Đ/g, 'D')\r\n // Some system encode vietnamese combining accent as individual utf-8 characters\r\n // Một vài bộ encode coi các dấu mũ, dấu chữ như một kí tự riêng biệt nên thêm hai dòng này\r\n stringRemove = stringRemove.replace(/\\u0300|\\u0301|\\u0303|\\u0309|\\u0323/g, '') // ̀ ́ ̃ ̉ ̣ huyền, sắc, ngã, hỏi, nặng\r\n stringRemove = stringRemove.replace(/\\u02C6|\\u0306|\\u031B/g, '') // ˆ ̆ ̛ Â, Ê, Ă, Ơ, Ư\r\n // Remove extra spaces\r\n // Bỏ các khoảng trắng liền nhau\r\n stringRemove = stringRemove.replace(/ + /g, ' ')\r\n stringRemove = stringRemove.trim()\r\n // Remove punctuations\r\n // Bỏ dấu câu, kí tự đặc biệt\r\n // eslint-disable-next-line no-useless-escape\r\n // stringRemove = stringRemove.replace(/!|@|%|\\^|\\*|\\+|\\=|\\<|\\>|\\?|\\/|\\:|\\;|\\'|\\\"|\\&|\\#|\\[|\\]|~|\\$|_|`|{|}|\\||\\\\/g, '')\r\n return stringRemove\r\n}\r\n\r\nexport const formatTextDisplayCustomer = (text1, text2) => {\r\n if (text1 === '' || text1 === '0' || text2 === '' || text2 === '0') {\r\n return ' '\r\n }\r\n\r\n let spaceText = ''\r\n // eslint-disable-next-line no-plusplus\r\n for (let i = 0; i < saleData.sizeTextDisplayCustomer - (text1.length + text2.length); i++) {\r\n spaceText += ' '\r\n }\r\n return `${text1}${spaceText}${text2}`\r\n}\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAkCAMAAAAw96PuAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIaADAAQAAAABAAAAJAAAAADeoA9wAAABcVBMVEUAAAD/qlX/qlX/n2D/qlX/n1D/pUv/qkf/oUP/pk3/qkn/okb/o0f/okT/n0j/oEn/n0b/pEn/oEf/okb/oUj/o0f/n0X/oUT/o0f/oEb/pEP/okb/n0T/okT/oEb/n0T/oEX/o0b/n0P/oUP/okb/oUT/n0b/oUX/oET/oUb/n0X/oET/oUP/oEX/okT/oEP/oUX/oUP/oET/oUX/oEX/n0T/oEX/oET/oEX/n0T/oET/n0P/oEX/n0P/oUT/n0T/oEX/oUT/oET/oEP/oET/oUT/oEP/oEP/oET/oEP/oEP/oET/n0T/oET/oEP/n0T/oET/n0T/n0T/oET/n0T/n0P/oET/n0P/oET/n0T/oEP/oET/oET/n0T/n0T/oEP/oEP/n0P/oET/n0P/n0T/n0T/n0P/oEP/n0T/oEP/n0P/oET/n0T/oEP/oET/n0T/oET/oEP/n0T/oEP/oET/n0P/oEP/oET/n0T/oEP/n0NWaDR5AAAAenRSTlMAAwYICRAREhMUFRYZHiAjKCorLC4vMDEyMzU3ODw+QENFSExNT1BRU1RVVldZWltcX2Zna21zdHZ4e31+hYeIkZKTlJmam5yen6OkpaanqKmtsLG4ury9v8DBw8fIytHU1dfY2t3g5OXn6Onq6+zt7u/w8/n6+/z9/jLTlDYAAAE3SURBVDjL7dRHUwIxFMDxZ0OsIAoqtijqYhcVCxZQZO0iWLAXYC0IsqIivE/vRh2GLLs5evJ/yLyZ/CaHzCQAAAbxAZmezMBUfoPqEk2McGFpz5Zi4VPtyjllSTYXiYBKRCYpSbVwBIx/UmLlCBij5MXGETCaVYZ0G0fAMCVyO0eA80MZX+0cAQIlmVaOgAFK5rREbOq3sJ5g+hcaQvweTyOYCPjjiMf+c2XZyeP+PSsER6rW2ruNQzWDlW4ksIlVB2pxBnuIR3CCqxAjlvo3Y4nITgCRlsve8RZCxGP2NgRZ0S8gXpuc6xDFEFyRhWBdI3NGdM2wKC1tmEbSxr5dmz1H5vMdwIhw13TmTuh2JzHu6pmV0bOFl46Lv71TH0/M6P0OhTp1fphChz8Po1p81N6XVioAvgBZgp3AxW+3KgAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"img/avatar-s-14.93df8c5c.jpg\";","module.exports = __webpack_public_path__ + \"img/speaker.328aa519.svg\";","export const APP = 'app'\r\n\r\n// Getters\r\nexport const LOGIN_STATUS_GETTER = 'LOGIN_STATUS_GETTER'\r\n\r\n// Actions\r\nexport const UPDATE_LOGIN_STATUS_ACTIONS = 'UPDATE_LOGIN_STATUS_ACTIONS'\r\n","export const RETURNEDGOODS = 'salesReturnedGoods'\r\n\r\n// Getters\r\nexport const RETURNED_GOODS_GETTER = 'RETURNED_GOODS_GETTER'\r\nexport const RETURNED_GOOD_CHOOSE_GETTER = 'RETURNED_GOOD_CHOOSE_GETTER'\r\nexport const RETURNED_GOOD_CHOOSEN_DETAIL_GETTER = 'RETURNED_GOOD_CHOOSEN_DETAIL_GETTER'\r\nexport const REASON_RETURN_GOODS_GETTER = 'REASON_RETURN_GOODS_GETTER'\r\nexport const RETURNED_FILTERED_GOODS = 'RETURNED_FILTERED_GOODS'\r\n\r\n// return detail\r\nexport const RETURN_GOODS_DETAIL_GETTER = 'RETURN_GOODS_DETAIL_GETTER'\r\n\r\n// Mutations\r\nexport const CLEAR_RETURNED_GOODS_MUTATION = 'CLEAR_RETURNED_GOODS_MUTATION'\r\nexport const GET_RETURNED_GOOD_CHOOSE_MUTATION = 'GET_RETURNED_GOOD_CHOOSE_MUTATION'\r\nexport const SET_DEFAULT_PAGE_SIZE = 'SET_DEFAULT_PAGE_SIZE'\r\n\r\n// Actions\r\nexport const GET_RETURNED_GOODS_ACTION = 'GET_RETURNED_GOODS_ACTION'\r\nexport const GET_RETURNED_GOOD_CHOOSE_ACTION = 'GET_RETURNED_GOOD_CHOOSE_ACTION'\r\nexport const GET_RETURNED_GOOD_CHOOSEN_DETAIL_ACTION = 'GET_RETURNED_GOOD_CHOOSEN_DETAIL_ACTION'\r\nexport const CREATE_RETURNED_GOOD_ACTION = 'CREATE_RETURNED_GOOD_ACTION'\r\nexport const GET_REASON_RETURN_GOODS_ACTION = 'GET_REASON_RETURN_GOODS_ACTION'\r\n\r\n// return detail\r\nexport const GET_RETURN_GOODS_DETAIL_ACTION = 'GET_RETURN_GOODS_DETAIL_ACTION'\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"toastification d-print-none\"},[_c('div',{staticClass:\"d-flex align-items-start\"},[_c('b-avatar',{staticClass:\"mr-75 flex-shrink-0\",attrs:{\"variant\":_vm.variant,\"size\":\"1.8rem\"}},[_c('feather-icon',{attrs:{\"icon\":_vm.icon,\"size\":\"15\"}})],1),_c('div',{staticClass:\"d-flex flex-grow-1\"},[_c('div',[(_vm.title)?_c('h5',{staticClass:\"mb-0 font-weight-bolder toastification-title\",class:(\"text-\" + _vm.variant),domProps:{\"textContent\":_vm._s(_vm.title)}}):_vm._e(),(_vm.text && !_vm.isHTML)?_c('small',{staticClass:\"d-inline-block text-body\",domProps:{\"textContent\":_vm._s(_vm.text)}}):_vm._e(),(_vm.text && _vm.isHTML)?_c('small',{staticClass:\"d-inline-block text-body\",domProps:{\"innerHTML\":_vm._s(_vm.text)}}):_vm._e()]),_c('span',{staticClass:\"cursor-pointer toastification-close-icon ml-auto \",on:{\"click\":function($event){return _vm.$emit('close-toast')}}},[(!_vm.hideClose)?_c('feather-icon',{staticClass:\"text-body\",attrs:{\"icon\":\"XIcon\"}}):_vm._e()],1)])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastificationContent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastificationContent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ToastificationContent.vue?vue&type=template&id=683d7287&scoped=true&\"\nimport script from \"./ToastificationContent.vue?vue&type=script&lang=js&\"\nexport * from \"./ToastificationContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ToastificationContent.vue?vue&type=style&index=0&id=683d7287&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"683d7287\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\r\nimport ToastificationContent from '@core/components/toastification/ToastificationContent.vue'\r\n\r\nconst success = (text, isHTML) => {\r\n Vue.$toast({\r\n component: ToastificationContent,\r\n position: 'top-right',\r\n props: {\r\n title: 'Thông báo',\r\n icon: 'CheckIcon',\r\n variant: 'success',\r\n isHTML,\r\n text,\r\n },\r\n })\r\n}\r\n\r\nconst warning = (text, isHTML) => {\r\n Vue.$toast({\r\n component: ToastificationContent,\r\n position: 'top-right',\r\n props: {\r\n title: 'Thông báo',\r\n icon: 'AlertCircleIcon',\r\n variant: 'warning',\r\n isHTML,\r\n text,\r\n },\r\n })\r\n}\r\n\r\nconst error = (text, isHTML) => {\r\n Vue.$toast({\r\n component: ToastificationContent,\r\n position: 'top-right',\r\n props: {\r\n title: 'Thông báo',\r\n icon: 'AlertCircleIcon',\r\n variant: 'danger',\r\n isHTML,\r\n text,\r\n },\r\n })\r\n}\r\n\r\nexport default {\r\n success,\r\n warning,\r\n error,\r\n}\r\n","export const PRINTERCONFIG = 'printerConfig'\r\n\r\n// GETTERs\r\nexport const PRINTER_CLIENT_GETTER = 'PRINTER_CLIENT_GETTER'\r\n\r\n// ACTIONS\r\nexport const GET_PRINTER_CLIENT_ACTIONS = 'GET_PRINTER_CLIENT_ACTIONS'\r\nexport const CREATE_PRINTER_CLIENT_ACTIONS = 'CREATE_PRINTER_CLIENT_ACTIONS'\r\nexport const UPDATE_PRINTER_CLIENT_ACTIONS = 'UPDATE_PRINTER_CLIENT_ACTIONS'\r\n","// Theme Colors\r\n// Initially this will be blank. Later on when app is initialized we will assign bootstrap colors to this from CSS variables.\r\nexport const $themeColors = {}\r\n\r\n// App Breakpoints\r\n// Initially this will be blank. Later on when app is initialized we will assign bootstrap breakpoints to this object from CSS variables.\r\nexport const $themeBreakpoints = {}\r\n\r\n// APP CONFIG\r\nexport const $themeConfig = {\r\n app: {\r\n appName: 'Kênh Cửa Hàng', // Will update name in navigation menu (Branding)\r\n // eslint-disable-next-line global-require\r\n appLogoImage: require('@/assets/images/logo/kchLogo.png'), // Will update logo in navigation menu (Branding)\r\n },\r\n layout: {\r\n isRTL: false,\r\n skin: 'light', // light, dark, bordered, semi-dark\r\n routerTransition: 'zoom-fade', // zoom-fade, slide-fade, fade-bottom, fade, zoom-out, none\r\n type: 'horizontal', // vertical, horizontal\r\n contentWidth: 'full', // full, boxed\r\n menu: {\r\n hidden: false,\r\n isCollapsed: false,\r\n type: 'normal', // normal\r\n },\r\n navbar: {\r\n // ? For horizontal menu, navbar type will work for navMenu type\r\n type: 'sticky', // static , sticky , floating, hidden\r\n backgroundColor: '', // BS color options [primary, success, etc]\r\n },\r\n footer: {\r\n type: 'hidden', // static, sticky, hidden\r\n },\r\n customizer: false,\r\n enableScrollToTop: true,\r\n },\r\n}\r\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ToastificationContent.vue?vue&type=style&index=0&id=683d7287&lang=scss&scoped=true&\"","export const REPORT_EXCHANGE_DAMAGED_GOODS = 'reportWarehousesExchangeDamagedGoods'\r\n\r\n// GETTERS\r\nexport const REPORT_EXCHANGE_DAMAGED_GOODS_GETTER = 'REPORT_EXCHANGE_DAMAGED_GOODS_GETTER'\r\nexport const REASON_EXCHANGE_DAMAGED_GOODS_GETTER = 'REASON_EXCHANGE_DAMAGED_GOODS_GETTER'\r\nexport const PRODUCT_LIST_GETTER = 'PRODUCT_LIST_GETTER'\r\nexport const PRODUCT_LIST_PAGINATION_GETTER = 'PRODUCT_LIST_PAGINATION_GETTER'\r\nexport const PRODUCT_CAT_LIST_GETTER = 'PRODUCT_CAT_LIST_GETTER'\r\n// ACTIONS\r\nexport const GET_REPORT_EXCHANGE_DAMAGED_GOODS_ACTION = 'GET_REPORT_EXCHANGE_DAMAGED_GOODS_ACTION'\r\nexport const GET_REASON_EXCHANGE_DAMAGED_GOODS_ACTION = 'GET_REASON_EXCHANGE_DAMAGED_GOODS_ACTION'\r\nexport const EXPORT_REPORT_EXCHANGE_DAMAGED_GOODS_ACTION = 'EXPORT_REPORT_EXCHANGE_DAMAGED_GOODS_ACTION'\r\nexport const GET_PRODUCT_LIST_ACTION = 'GET_PRODUCT_LIST_ACTION'\r\nexport const GET_PRODUCT_CAT_LIST_ACTION = 'GET_PRODUCT_CAT_LIST_ACTION'\r\n","export const CUSTOMER = 'salesCustomers'\r\n\r\n// Getters\r\nexport const CUSTOMERS_GETTER = 'CUSTOMERS_GETTER'\r\nexport const CUSTOMER_BY_ID_GETTER = 'CUSTOMER_BY_ID_GETTER'\r\nexport const CUSTOMER_TYPES_GETTER = 'CUSTOMER_TYPES_GETTER'\r\nexport const CUSTOMER_TYPES_LABEL_GETTER = 'CUSTOMER_TYPES_LABEL_GETTER'\r\nexport const CUSTOMER_TYPES_UPDATE_GETTER = 'CUSTOMER_TYPES_UPDATE_GETTER'\r\nexport const CUSTOMER_DEFAULT_GETTER = 'CUSTOMER_DEFAULT_GETTER'\r\nexport const CREATE_CUSTOMER_GETTER = 'CREATE_CUSTOMER_GETTER'\r\nexport const GENDERS_GETTER = 'GENDERS_GETTER'\r\n\r\nexport const SHOP_LOCATIONS_SEARCH_GETTER = 'SHOP_LOCATIONS_SEARCH_GETTER'\r\nexport const SHOP_LOCATIONS_GETTER = 'SHOP_LOCATIONS_GETTER'\r\nexport const PROVINCES_GETTER = 'PROVINCES_GETTER'\r\nexport const DISTRICTS_GETTER = 'DISTRICTS_GETTER'\r\nexport const PRECINCTS_GETTER = 'PRECINCTS_GETTER'\r\n\r\nexport const CARD_TYPES_GETTER = 'CARD_TYPES_GETTER'\r\nexport const CLOSELY_TYPES_GETTER = 'CLOSELY_TYPES_GETTER'\r\n\r\n// Actions\r\nexport const GET_CUSTOMERS_ACTION = 'GET_CUSTOMERS_ACTION'\r\nexport const GET_CUSTOMER_BY_ID_ACTION = 'GET_CUSTOMER_BY_ID_ACTION'\r\nexport const CREATE_CUSTOMER_ACTION = 'CREATE_CUSTOMER_ACTION'\r\nexport const UPDATE_CUSTOMER_ACTION = 'UPDATE_CUSTOMER_ACTION'\r\nexport const GET_CUSTOMER_TYPES_ACTION = 'GET_CUSTOMER_TYPES_ACTION'\r\nexport const GET_CUSTOMER_TYPES_UPDATE_ACTION = 'GET_CUSTOMER_TYPES_UPDATE_ACTION'\r\nexport const EXPORT_CUSTOMERS_ACTION = 'EXPORT_CUSTOMERS_ACTION'\r\nexport const IMPORT_CUSTOMERS_ACTION = 'IMPORT_CUSTOMERS_ACTION'\r\nexport const GET_CUSTOMER_DEFAULT_ACTION = 'GET_CUSTOMER_DEFAULT_ACTION'\r\nexport const GET_GENDERS_ACTION = 'GET_GENDERS_ACTION'\r\nexport const EXPORT_CUSTOMERS_TEMPLATE = 'EXPORT_CUSTOMERS_TEMPLATE'\r\n\r\nexport const GET_SHOP_LOCATIONS_SEARCH_ACTION = 'GET_SHOP_LOCATIONS_SEARCH_ACTION'\r\nexport const GET_SHOP_LOCATIONS_ACTION = 'GET_SHOP_LOCATIONS_ACTION'\r\nexport const GET_PROVINCES_ACTION = 'GET_PROVINCES_ACTION'\r\nexport const GET_DISTRICTS_ACTION = 'GET_DISTRICTS_ACTION'\r\nexport const GET_PRECINCTS_ACTION = 'GET_PRECINCTS_ACTION'\r\n\r\nexport const GET_CARD_TYPES_ACTION = 'GET_CARD_TYPES_ACTION'\r\nexport const GET_CLOSELY_TYPES_ACTION = 'GET_CLOSELY_TYPES_ACTION'\r\n","export default {\r\n status: [\r\n { id: '1', label: 'Hoạt động' },\r\n { id: '0', label: 'Ngưng hoạt động' },\r\n ],\r\n}\r\n","export const REPORT_WAREHOUSES_ADJUSTMENTS = 'reportsWarehousesAdjustment'\r\n\r\n// Getters\r\nexport const REPORT_WAREHOUSES_ADJUSTMENTS_GETTER = 'REPORT_WAREHOUSES_ADJUSTMENTS_GETTER'\r\nexport const PRINT_REPORT_WAREHOUSES_ADJUSTMENTS_GETTER = 'PRINT_REPORT_WAREHOUSES_ADJUSTMENTS_GETTER'\r\nexport const PRODUCT_CAT_GETTER = 'PRODUCT_CAT_GETTER'\r\nexport const PRODUCT_GETTER = 'PRODUCT_GETTER'\r\n\r\n// Actions\r\nexport const GET_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION = 'GET_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION'\r\nexport const GET_PRODUCT_ACTION = 'GET_PRODUCT_ACTION'\r\nexport const GET_PRODUCT_CAT_ACTION = 'GET_PRODUCT_CAT_ACTION'\r\nexport const EXPORT_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION = 'EXPORT_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION'\r\nexport const PRINT_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION = 'PRINT_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION'\r\n","export const SALES = 'sales'\r\nexport const PRODUCTS = 'products'\r\n// Getters\r\nexport const VOUCHERS_GETTER = 'VOUCHERS_GETTER'\r\nexport const VOUCHER_BY_ID_GETTER = 'VOUCHER_BY_ID_GETTER'\r\nexport const ONLINE_ORDERS_GETTER = 'ONLINE_ORDERS_GETTER'\r\nexport const ONLINE_ORDERS_PAGINATION_GETTER = 'ONLINE_ORDERS_PAGINATION_GETTER'\r\nexport const ONLINE_ORDER_BY_ID_GETTER = 'ONLINE_ORDER_BY_ID_GETTER'\r\nexport const ONLINE_ORDER_COINCIDE_ID_GETTER = 'ONLINE_ORDER_COINCIDE_ID_GETTER'\r\nexport const GET_PRODUCTS_GETTER = 'GET_PRODUCTS_GETTER'\r\nexport const GET_PRODUCT_INFOS_GETTER = 'GET_PRODUCT_INFOS_GETTER'\r\nexport const GET_TOP_SALE_PRODUCTS_GETTER = 'GET_TOP_SALE_PRODUCTS_GETTER'\r\nexport const GET_HOT_PRODUCTS_GETTER = 'GET_HOT_PRODUCTS_GETTER'\r\nexport const GET_ALL_PRODUCT_GETTER = 'GET_ALL_PRODUCT_GETTER'\r\nexport const CREATE_SALE_ORDER_GETTER = 'CREATE_SALE_ORDER_GETTER'\r\nexport const GET_DISCOUNT_BY_CODE_GETTER = 'GET_DISCOUNT_BY_CODE_GETTER'\r\nexport const UPDATE_PRICE_TYPE_CUSTOMER_GETTER = 'UPDATE_PRICE_TYPE_CUSTOMER_GETTER'\r\nexport const GET_TOP_SALE_PRODUCTS_IN_MONTH_GETTER = 'GET_TOP_SALE_PRODUCTS_IN_MONTH_GETTER'\r\nexport const GET_PROMOTION_FREE_ITEMS_GETTER = 'GET_PROMOTION_FREE_ITEMS_GETTER'\r\nexport const GET_PROMOTION_PROGRAMS_GETTER = 'GET_PROMOTION_PROGRAMS_GETTER'\r\nexport const GET_PROMOTION_CALCULATION_GETTER = 'GET_PROMOTION_CALCULATION_GETTER'\r\nexport const GET_ITEMS_PRODUCTS_PROGRAM_GETTER = 'GET_ITEMS_PRODUCTS_PROGRAM_GETTER'\r\nexport const GET_VOUCHER_BY_SERIAL_GETTER = 'GET_VOUCHER_BY_SERIAL_GETTER'\r\nexport const CUSTOMERS_SALE_GETTER = 'CUSTOMERS_SALE_GETTER'\r\nexport const PRINT_SALES_GETTER = 'PRINT_SALES_GETTER'\r\nexport const PRINT_SALES_TEMP_GETTER = 'PRINT_SALES_TEMP_GETTER'\r\nexport const GET_SALE_PAYMENT_TYPES_GETTER = 'GET_SALE_PAYMENT_TYPES_GETTER'\r\nexport const GET_LIMIT_AGE_CUSTOMERS_GETTER = 'GET_LIMIT_AGE_CUSTOMERS_GETTER'\r\nexport const GET_PRODUCT_BY_BARCODE_GETTER = 'GET_PRODUCT_BY_BARCODE_GETTER'\r\nexport const SALEMT_PROMOTION_OBJECT_GETTER = 'SALEMT_PROMOTION_OBJECT_GETTER'\r\nexport const SALEMT_DELIVERY_TYPE_GETTER = 'SALEMT_DELIVERY_TYPE_GETTER'\r\nexport const GET_EDIT_ONLINE_PERMISSION_GETTER = 'GET_EDIT_ONLINE_PERMISSION_GETTER'\r\nexport const GET_DEFAULT_CUSTOMER_TYPE_GETTER = 'GET_DEFAULT_CUSTOMER_TYPE_GETTER'\r\nexport const GET_SCORECUMULATED_CUSTOMER_BY_ID_GETTER = 'GET_SCORECUMULATED_CUSTOMER_BY_ID_GETTER'\r\nexport const GET_SINVOICE_ACCOUNT_GETTER = 'GET_SINVOICE_ACCOUNT_GETTER'\r\n\r\n// Actions\r\nexport const GET_VOUCHERS_ACTION = 'GET_VOUCHERS_ACTION'\r\nexport const GET_VOUCHER_BY_ID_ACTION = 'GET_VOUCHER_BY_ID_ACTION'\r\nexport const GET_ONLINE_ORDERS_ACTION = 'GET_ONLINE_ORDERS_ACTION'\r\nexport const GET_ONLINE_ORDER_BY_ID_ACTION = 'GET_ONLINE_ORDER_BY_ID_ACTION'\r\nexport const GET_ONLINE_ORDER_COINCIDE_ID_ACTION = 'GET_ONLINE_ORDER_COINCIDE_ID_ACTION'\r\nexport const GET_PRODUCTS_ACTION = 'GET_PRODUCTS_ACTION'\r\nexport const GET_PRODUCT_INFOS_ACTION = 'GET_PRODUCT_INFOS_ACTION'\r\nexport const GET_TOP_SALE_PRODUCTS_ACTION = 'GET_TOP_SALE_PRODUCTS_ACTION'\r\nexport const GET_HOT_PRODUCTS_ACTION = 'GET_HOT_PRODUCTS_ACTION'\r\nexport const GET_ALL_PRODUCT_ACTION = 'GET_ALL_PRODUCT_ACTION'\r\nexport const CREATE_SALE_ORDER_ACTION = 'CREATE_SALE_ORDER_ACTION'\r\nexport const GET_DISCOUNT_BY_CODE_ACTION = 'GET_DISCOUNT_BY_CODE_ACTION'\r\nexport const UPDATE_PRICE_TYPE_CUSTOMER_ACTION = 'UPDATE_PRICE_TYPE_CUSTOMER_ACTION'\r\nexport const GET_TOP_SALE_PRODUCTS_IN_MONTH_ACTION = 'GET_TOP_SALE_PRODUCTS_IN_MONTH_ACTION'\r\nexport const GET_PROMOTION_FREE_ITEMS_ACTION = 'GET_PROMOTION_FREE_ITEMS_ACTION'\r\nexport const GET_PROMOTION_PROGRAMS_ACTION = 'GET_PROMOTION_PROGRAMS_ACTION'\r\nexport const GET_PROMOTION_CALCULATION_ACTION = 'GET_PROMOTION_CALCULATION_ACTION'\r\nexport const GET_ITEMS_PRODUCTS_PROGRAM_ACTION = 'GET_ITEMS_PRODUCTS_PROGRAM_ACTION'\r\nexport const GET_VOUCHER_BY_SERIAL_ACTION = 'GET_VOUCHER_BY_SERIAL_ACTION'\r\nexport const GET_CUSTOMERS_SALE_ACTION = 'GET_CUSTOMERS_SALE_ACTION'\r\nexport const PRINT_SALES_ACTION = 'PRINT_SALES_ACTION'\r\nexport const PRINT_SALES_TEMP_ACTION = 'PRINT_SALES_TEMP_ACTION'\r\nexport const GET_SALE_PAYMENT_TYPES_ACTION = 'GET_SALE_PAYMENT_TYPES_ACTION'\r\nexport const GET_LIMIT_AGE_CUSTOMERS_ACTION = 'GET_LIMIT_AGE_CUSTOMERS_ACTION'\r\nexport const GET_PRODUCT_BY_BARCODE_ACTION = 'GET_PRODUCT_BY_BARCODE_ACTION'\r\nexport const GET_SALEMT_PROMOTION_OBJECT_ACTION = 'GET_SALEMT_PROMOTION_OBJECT_ACTION'\r\nexport const GET_SALEMT_DELIVERY_TYPE_ACTION = 'GET_SALEMT_DELIVERY_TYPE_ACTION'\r\nexport const GET_EDIT_ONLINE_PERMISSION_ACTION = 'GET_EDIT_ONLINE_PERMISSION_ACTION'\r\nexport const GET_DEFAULT_CUSTOMER_TYPE_ACTION = 'GET_DEFAULT_CUSTOMER_TYPE_ACTION'\r\nexport const GET_SCORECUMULATED_CUSTOMER_BY_ID_ACTION = 'GET_SCORECUMULATED_CUSTOMER_BY_ID_ACTION'\r\nexport const GET_SINVOICE_ACCOUNT_ACTION = 'GET_SINVOICE_ACCOUNT_ACTION'\r\nexport const SAVE_SINVOICE_ACCOUNT_ACTION = 'SAVE_SINVOICE_ACCOUNT_ACTION'\r\n","module.exports = __webpack_public_path__ + \"img/toolbox.1c0f7f0b.svg\";","export default {\r\n namespaced: true,\r\n state: {\r\n },\r\n getters: {\r\n },\r\n mutations: {},\r\n actions: {\r\n },\r\n}\r\n","const SALES = '/sales'\r\nconst COMMON = '/commons'\r\nconst PRODUCTS = '/products'\r\nconst PRODUCTS_LIMIT = '/products/po-limit'\r\nconst PO_AUTO = '/po-auto'\r\nconst CUSTOMER = '/customers'\r\n\r\nexport const getProductsEndpoint = `${SALES}${PRODUCTS_LIMIT}`\r\nexport const getAllProductCat = `${SALES}${PRODUCTS}/all-product-cat`\r\n\r\nexport const getPoListEndPoint = `${SALES}${PO_AUTO}`\r\nexport const getPoDetailEndPoint = `${SALES}${PO_AUTO}`\r\nexport const getApproveOrCancelPoEndPoint = `${SALES}${PO_AUTO}/approve`\r\nexport const getInitPOEndPoint = `${SALES}${PO_AUTO}/init`\r\nexport const getCreatePOEndPoint = `${SALES}${PO_AUTO}/create`\r\nexport const getExportPORequestEndPoint = `${SALES}${PO_AUTO}/create/export-porequest`\r\n\r\nexport const getCustomerDefaultEndpoint = `${CUSTOMER}/default`\r\n\r\nexport const getCutoffValidEndpoint = `${SALES}${PO_AUTO}/get-cutoff-valid`\r\nexport const poApproveWaitDelivery = `${SALES}${PO_AUTO}/approve-wait-delivery`\r\nexport const getMOQ = `${SALES}${PO_AUTO}/calculate-moq`\r\nexport const exportPoProductTemplate = `${SALES}${PO_AUTO}/export-template-excel`\r\nexport const exportCurrentProductExcel = `${SALES}${PO_AUTO}/get-current-products-excel`\r\nexport const uploadProductsExcelEndpoint = `${SALES}${PO_AUTO}/upload-products-excel`\r\nexport const generatePoXMLEndpoint = `${SALES}${PO_AUTO}/generate-po-xml`\r\nexport const exceptionDaysEndpoint = `${COMMON}/exceptionday/current-shop`\r\nexport const generateAutoListExcelEndpoint = `${SALES}${PO_AUTO}/generate-po-excel`\r\n","import { formatURLParams } from '@/@core/utils/utils'\r\nimport axios from '@axios'\r\nimport {\r\n getProductsEndpoint,\r\n getInitPOEndPoint,\r\n getCreatePOEndPoint,\r\n getPoListEndPoint,\r\n getPoDetailEndPoint,\r\n getAllProductCat,\r\n getApproveOrCancelPoEndPoint,\r\n getExportPORequestEndPoint,\r\n getCustomerDefaultEndpoint,\r\n getMOQ,\r\n getCutoffValidEndpoint,\r\n poApproveWaitDelivery,\r\n exportPoProductTemplate,\r\n exportCurrentProductExcel,\r\n uploadProductsExcelEndpoint,\r\n generatePoXMLEndpoint,\r\n exceptionDaysEndpoint,\r\n generateAutoListExcelEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getProducts(args) {\r\n return axios.get(getProductsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n\r\n getPOList(args) {\r\n return axios.post(getPoListEndPoint, args.search, {\r\n params: formatURLParams(args.pagination),\r\n })\r\n },\r\n\r\n getPODetail(args) {\r\n return axios.get(`${getPoDetailEndPoint}/${args}`)\r\n },\r\n\r\n approveOrCancelPO(args) {\r\n return axios.put(getApproveOrCancelPoEndPoint, args.ids, {\r\n params: formatURLParams({ isApproved: args.isApproved }),\r\n responseType: 'blob',\r\n })\r\n },\r\n\r\n generatePoXML(args) {\r\n return axios.post(generatePoXMLEndpoint, args.ids, {\r\n responseType: 'blob',\r\n })\r\n },\r\n\r\n approveWaitDeliveryPO(args) {\r\n return axios.put(poApproveWaitDelivery, args.ids, {\r\n params: formatURLParams({ deliveryDate: args.deliveryDate }),\r\n })\r\n },\r\n\r\n initPOCreateData(args) {\r\n return axios.get(getInitPOEndPoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n\r\n createPo(args) {\r\n return axios.post(getCreatePOEndPoint, args.data)\r\n },\r\n\r\n getAllProductCat() {\r\n return axios.get(getAllProductCat)\r\n },\r\n\r\n exportPORequest(args) {\r\n return axios.post(getExportPORequestEndPoint, args, {\r\n responseType: 'blob',\r\n })\r\n },\r\n\r\n getCustomerDefault(args) {\r\n return axios.get(getCustomerDefaultEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n\r\n getMOQ(args) {\r\n return axios.post(getMOQ, args.data)\r\n },\r\n\r\n getCutoffValid() {\r\n return axios.get(getCutoffValidEndpoint)\r\n },\r\n\r\n exportPoProductTemplate() {\r\n return axios.get(exportPoProductTemplate, {\r\n responseType: 'blob',\r\n })\r\n },\r\n\r\n exportCurrentProductExcel(args) {\r\n return axios.post(exportCurrentProductExcel, args.data, {\r\n responseType: 'blob',\r\n })\r\n },\r\n\r\n uploadProductsExcel(args) {\r\n const formData = new FormData()\r\n formData.append('file', args)\r\n return axios.post(uploadProductsExcelEndpoint, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n // responseType: 'blob',\r\n })\r\n },\r\n\r\n getExceptionDays() {\r\n return axios.get(exceptionDaysEndpoint)\r\n },\r\n\r\n exportPoAutoListExcel(args) {\r\n return axios.post(generateAutoListExcelEndpoint, args.data, {\r\n responseType: 'blob',\r\n })\r\n },\r\n}\r\n","import toasts from '@/@core/utils/toasts/toasts'\r\nimport { notificationResponseMessage } from '@/@core/utils/utils'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport PurchaseService from '../api-service/index'\r\nimport {\r\n // Getter\r\n PO_PRODUCT_GETTER,\r\n PO_PRODUCT_MODAL_GETTER,\r\n PO_LIST_GETTER,\r\n PO_DETAIL_GETTER,\r\n PO_CREATE_DATA_GETTER,\r\n ALL_PRODUCT_CAT_GETTER,\r\n CUSTOMER_DEFAULT_GETTER,\r\n PO_MOQ_GETTER,\r\n CUTOFF_VALID_GETTER,\r\n UPLOAD_PRODUCT_GETTER,\r\n EXCEPTION_DAYS_GETTER,\r\n\r\n // Mutations\r\n CLEAR_PO_STATE,\r\n\r\n // Actions\r\n GET_PO_PRODUCT_ACTION,\r\n GET_PO_LIST_ACTION,\r\n GET_PO_DETAIL_ACTION,\r\n APPROVE_OR_CANCEL_ACTION,\r\n INIT_PO_CREATE_DATA_ACTION,\r\n CREATE_PO_ACTION,\r\n GET_ALL_PRODUCT_CAT_ACTION,\r\n GET_PO_PRODUCT_MODAL_ACTION,\r\n EXPORT_PO_REQUEST_ACTION,\r\n GET_CUSTOMER_DEFAULT_ACTION,\r\n GET_MOQ_ACTION,\r\n GET_CUTOFF_VALID,\r\n APPROVE_WAIT_DELIVERY_ACTION,\r\n EXPORT_PO_PRODUCT_TEMPLATE,\r\n EXPORT_CURRENT_PRODUCT_EXCEL,\r\n UPLOAD_PRODUCTS_EXCEL,\r\n GENERATE_PO_XML,\r\n GET_EXCEPTION_DAYS,\r\n GENERATE_PO_LIST_EXCEL,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n state: {\r\n productModalData: {},\r\n productData: {},\r\n poData: {},\r\n poDetail: {},\r\n poCreateData: {},\r\n allProductCat: [],\r\n customerDefault: {},\r\n poMOQ: {},\r\n cutoffValid: false,\r\n uploadProducts: {},\r\n exceptionDays: [],\r\n },\r\n\r\n getters: {\r\n [PO_PRODUCT_GETTER](state) {\r\n return state.productData\r\n },\r\n\r\n [PO_PRODUCT_MODAL_GETTER](state) {\r\n return state.productModalData\r\n },\r\n\r\n [PO_LIST_GETTER](state) {\r\n return state.poData\r\n },\r\n\r\n [PO_DETAIL_GETTER](state) {\r\n return state.poDetail\r\n },\r\n\r\n [PO_CREATE_DATA_GETTER](state) {\r\n return state.poCreateData\r\n },\r\n\r\n [ALL_PRODUCT_CAT_GETTER](state) {\r\n return state.allProductCat\r\n },\r\n\r\n [CUSTOMER_DEFAULT_GETTER](state) {\r\n return state.customerDefault\r\n },\r\n\r\n [PO_MOQ_GETTER](state) {\r\n return state.poMOQ\r\n },\r\n\r\n [CUTOFF_VALID_GETTER](state) {\r\n return state.cutoffValid\r\n },\r\n\r\n [UPLOAD_PRODUCT_GETTER](state) {\r\n return state.uploadProducts\r\n },\r\n\r\n [EXCEPTION_DAYS_GETTER](state) {\r\n return state.exceptionDays\r\n },\r\n },\r\n\r\n mutations: {\r\n [CLEAR_PO_STATE](state) {\r\n state.poData = {}\r\n state.poDetail = {}\r\n state.poCreateData = {}\r\n },\r\n },\r\n\r\n actions: {\r\n [GET_PO_PRODUCT_ACTION]({ state }, val) {\r\n PurchaseService\r\n .getProducts(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PO_PRODUCT_MODAL_ACTION]({ state }, val) {\r\n PurchaseService\r\n .getProducts(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productModalData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PO_LIST_ACTION]({ state }, val) {\r\n PurchaseService\r\n .getPOList(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.poData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PO_DETAIL_ACTION]({ state }, val) {\r\n PurchaseService\r\n .getPODetail(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.poDetail = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [APPROVE_OR_CANCEL_ACTION]({}, val) {\r\n PurchaseService\r\n .approveOrCancelPO(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n res.text().then(text => {\r\n const resText = JSON.parse(text)\r\n\r\n if (resText.success) {\r\n toasts.success(`Đã ${val.data.isApproved ? 'duyệt' : 'hủy'} thành công`)\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(resText.statusCode, resText.statusValue))\r\n }\r\n })\r\n } else {\r\n const fileName = `Exp_MT_PO_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xml`\r\n const blob = new Blob([res], { type: 'data:application/xml' })\r\n\r\n toasts.success(`Đã ${val.data.isApproved ? 'duyệt' : 'hủy'} thành công`)\r\n val.onSuccess({ fileName, blob })\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GENERATE_PO_XML]({}, val) {\r\n PurchaseService\r\n .generatePoXML(val.data)\r\n .then(response => response)\r\n .then(res => {\r\n if (res.data.type !== 'application/xml') {\r\n toasts.error('Không có dữ liệu XML')\r\n return\r\n }\r\n const fileName = res.headers['content-disposition'].match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/)[1]\r\n const blob = new Blob([res.data], { type: 'data:application/xml' })\r\n val.onSuccess({ fileName, blob })\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [APPROVE_WAIT_DELIVERY_ACTION]({}, val) {\r\n PurchaseService\r\n .approveWaitDeliveryPO(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success('Đã duyệt treo thành công')\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n val.onSuccess()\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [INIT_PO_CREATE_DATA_ACTION]({ state }, val) {\r\n PurchaseService\r\n .initPOCreateData(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.poCreateData = res.data || {}\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [CREATE_PO_ACTION]({}, val) {\r\n PurchaseService\r\n .createPo(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success('Đã tạo đơn thành công')\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_ALL_PRODUCT_CAT_ACTION]({ state }) {\r\n PurchaseService\r\n .getAllProductCat()\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.allProductCat = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [EXPORT_PO_REQUEST_ACTION]({}, val) {\r\n PurchaseService\r\n .exportPORequest(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Don_hang_de_nghi_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_CUSTOMER_DEFAULT_ACTION]({ state }, val) {\r\n PurchaseService\r\n .getCustomerDefault(val?.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.customerDefault = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_MOQ_ACTION]({ state }, val) {\r\n PurchaseService\r\n .getMOQ(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.poMOQ = res.data\r\n val.onSuccess()\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_CUTOFF_VALID]({ state }, val) {\r\n PurchaseService\r\n .getCutoffValid()\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.cutoffValid = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [EXPORT_PO_PRODUCT_TEMPLATE]() {\r\n PurchaseService\r\n .exportPoProductTemplate()\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n } else {\r\n const fileName = `File_mau_sanpham_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(error.message)\r\n })\r\n },\r\n\r\n [EXPORT_CURRENT_PRODUCT_EXCEL]({}, val) {\r\n PurchaseService\r\n .exportCurrentProductExcel(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n } else {\r\n const fileName = `File_sanpham_dang_chon_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(error.message)\r\n })\r\n },\r\n\r\n [UPLOAD_PRODUCTS_EXCEL]({ state }, val) {\r\n PurchaseService\r\n .uploadProductsExcel(val?.file)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success === true) {\r\n state.uploadProducts = res.data.productList\r\n if (res.data.base64ExcelFile !== null && res.data.base64ExcelFile !== '') {\r\n const fileName = 'File_loi_' + val.file.name\r\n const bs = atob(res.data.base64ExcelFile)\r\n const buffer = new ArrayBuffer(bs.length)\r\n const ba = new Uint8Array(buffer)\r\n for (let i = 0; i < bs.length; i += 1) {\r\n ba[i] = bs.charCodeAt(i)\r\n }\r\n const blob = new Blob([ba], { type: `data:application/${val.file.name.match(/\\.[0-9a-z]+$/i)[0].replace('.', '')}` })\r\n FileSaver.saveAs(blob, fileName)\r\n }\r\n val.onSuccess()\r\n if (res.data.errorLineNum === 0) {\r\n toasts.success('Upload file excel thành công')\r\n } else {\r\n toasts.warning(`Upload file excel với ${res.data.successLineNum} dòng thành công, ${res.data.errorLineNum} dòng lỗi`)\r\n }\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(error.message)\r\n })\r\n },\r\n\r\n [GET_EXCEPTION_DAYS]({ state }, val) {\r\n PurchaseService\r\n .getExceptionDays(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n state.exceptionDays = res.data || []\r\n val.onSuccess()\r\n })\r\n .catch(error => {\r\n toasts.error(error.message)\r\n })\r\n },\r\n\r\n [GENERATE_PO_LIST_EXCEL]({}, val) {\r\n PurchaseService\r\n .exportPoAutoListExcel(val)\r\n .then(response => response)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n } else {\r\n const fileName = res.headers['content-disposition'].match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/)[1]\r\n const blob = new Blob([res.data], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(error.message)\r\n })\r\n },\r\n },\r\n}\r\n","const PROMOTION = '/promotions'\r\nconst VOUCHERS = '/vouchers'\r\nconst SALES = '/sales'\r\nconst ONLINE_ORDERS = 'online-orders'\r\nconst PRODUCT = '/products'\r\nconst CUSTOMER = 'customers'\r\nconst APPARAM = '/apparams'\r\nconst COMMON = '/commons'\r\n\r\nexport const getVouchersEndpoint = `${PROMOTION}/${VOUCHERS}`\r\n\r\nexport const getVoucherByIdEndpoint = `${PROMOTION}/${VOUCHERS}`\r\n\r\nexport const getOnlineOrdersEndpoint = `${SALES}/${ONLINE_ORDERS}`\r\n\r\nexport const getOnlineOrderByIdEndpoint = `${SALES}/${ONLINE_ORDERS}`\r\n\r\nexport const checkOnlineOrderCoincideIdEndpoint = `${SALES}/${ONLINE_ORDERS}/order-number`\r\n\r\nexport const getProductsEndpoint = `${SALES}${PRODUCT}`\r\n\r\nexport const getProductInfosEndpoint = `${SALES}${PRODUCT}/product-infos`\r\n\r\nexport const getProductsTopSaleEndpoint = `${SALES}${PRODUCT}/top-sale`\r\n\r\nexport const getProductsHotEndpoint = `${SALES}${PRODUCT}/top-sale/customer`\r\n\r\nexport const createSaleOrderEndpoint = `${SALES}`\r\n\r\nexport const getDiscountByCodeEndpoint = `${SALES}/discount-code`\r\n\r\nexport const updatePriceTypeCustomerEndpoint = `${SALES}${PRODUCT}/change/customer-type`\r\n\r\nexport const getProductsTopSaleMonthEndpoint = `${SALES}${PRODUCT}/top-sale/month`\r\n\r\nexport const getPromotionFreeItemsEndpoint = `${SALES}/promotion-free-item`\r\n\r\nexport const getPromotionProgramsEndpoint = `${SALES}/order-promotions`\r\n\r\nexport const getPromotionCalculationEndpoint = `${SALES}/promotion-calculation`\r\n\r\nexport const getItemsProductsProgramEndpoint = `${SALES}/promotion-products`\r\n\r\nexport const getVoucherBySerialEndpoint = `${PROMOTION}${VOUCHERS}/code`\r\n\r\nexport const getCustomerToSaleEndpoint = `${CUSTOMER}/autocomplete`\r\n\r\nexport const getScorecumulatedByIdEndpoint = `${CUSTOMER}/scorecumulated`\r\n\r\nexport const printSalesEndpoint = `${SALES}/sale-orders/print-sale-order`\r\n\r\nexport const printSalesTempEndpoint = `${SALES}/printtmp`\r\n\r\nexport const getSalesPaymentTypesEndpoint = `${COMMON}${APPARAM}/type/SALEMT_PAYMENT_TYPE`\r\n\r\nexport const getLimitAgeCustomerEndpoint = `${COMMON}${APPARAM}/type/SALEMT_LIMIT_AGE_CUS`\r\n\r\nexport const getProductByBarcodeEndpoint = `${SALES}${PRODUCT}/barcode`\r\n\r\nexport const getSalemtPromotionObjectTypeEndpoint = `${COMMON}${APPARAM}/type/SALEMT_PROMOTION_OBJECT`\r\n\r\nexport const getSalemtDeliveryTypeEndpoint = `${COMMON}${APPARAM}/type/SALEMT_DELIVERY_TYPE`\r\n\r\nexport const getEditOnlinePermissionEndPoint = `${SALES}/valid/online-order`\r\n\r\nexport const getDefaultCustomerTypeEndPoint = `${CUSTOMER}/customer-types/default`\r\n\r\nexport const getDefaultGetSInvoiceAcountEndpoint = `${SALES}/sinvoice/get-account`\r\n\r\nexport const saveSInvoiceAccountEndpoint = `${SALES}/sinvoice/save-account`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getVouchersEndpoint,\r\n getVoucherByIdEndpoint,\r\n getOnlineOrdersEndpoint,\r\n getOnlineOrderByIdEndpoint,\r\n checkOnlineOrderCoincideIdEndpoint,\r\n getProductsEndpoint,\r\n getProductInfosEndpoint,\r\n getProductsTopSaleEndpoint,\r\n getProductsHotEndpoint,\r\n createSaleOrderEndpoint,\r\n getDiscountByCodeEndpoint,\r\n updatePriceTypeCustomerEndpoint,\r\n getProductsTopSaleMonthEndpoint,\r\n getPromotionFreeItemsEndpoint,\r\n getPromotionProgramsEndpoint,\r\n getPromotionCalculationEndpoint,\r\n getItemsProductsProgramEndpoint,\r\n getVoucherBySerialEndpoint,\r\n getCustomerToSaleEndpoint,\r\n getScorecumulatedByIdEndpoint,\r\n printSalesEndpoint,\r\n printSalesTempEndpoint,\r\n getSalesPaymentTypesEndpoint,\r\n getLimitAgeCustomerEndpoint,\r\n getProductByBarcodeEndpoint,\r\n getSalemtPromotionObjectTypeEndpoint,\r\n getSalemtDeliveryTypeEndpoint,\r\n getEditOnlinePermissionEndPoint,\r\n getDefaultCustomerTypeEndPoint,\r\n getDefaultGetSInvoiceAcountEndpoint,\r\n saveSInvoiceAccountEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getVouchers(args) {\r\n return axios.get(getVouchersEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n\r\n getVoucherById(args) {\r\n return axios.get(`${getVoucherByIdEndpoint}/${args}`, {\r\n params: {\r\n customerId: args.customerId,\r\n products: args.productIds,\r\n formId: args.formId,\r\n ctrlId: args.ctrlId,\r\n },\r\n })\r\n },\r\n\r\n getOnlineOrder(args) {\r\n return axios.get(getOnlineOrdersEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n\r\n getOnlineOrderById(args) {\r\n return axios.get((`${getOnlineOrderByIdEndpoint}/${args}`))\r\n },\r\n\r\n checkOnlineOrderCoincideId(args) {\r\n return axios.get((`${checkOnlineOrderCoincideIdEndpoint}/${args}`))\r\n },\r\n\r\n getProducts(args) {\r\n return axios.get(getProductsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductsTopSale(args) {\r\n return axios.get(getProductsTopSaleEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductInfos(args) {\r\n return axios.get(getProductInfosEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductsHot(args) {\r\n return axios.get(`${getProductsHotEndpoint}/${args.customerId}`)\r\n },\r\n\r\n createSaleOrder(args) {\r\n return axios.post(createSaleOrderEndpoint, args)\r\n },\r\n\r\n getDiscountByCode(args) {\r\n return axios.post(`${getDiscountByCodeEndpoint}/${args.code}`, args.dataGetCode, {\r\n params: {\r\n formId: args.formId,\r\n ctrlId: args.ctrlId,\r\n },\r\n })\r\n },\r\n\r\n updatePriceTypeCustomer(args) {\r\n return axios.post(`${updatePriceTypeCustomerEndpoint}/${args.customerTypeId}`, args.products, {\r\n params: formatURLParams(args.params),\r\n })\r\n },\r\n getProductsTopSaleInMonth(args) {\r\n return axios.get(getProductsTopSaleMonthEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getPromotionFreeItems(args) {\r\n return axios.post(getPromotionFreeItemsEndpoint, args)\r\n },\r\n getPromotionPrograms(args) {\r\n return axios.post(getPromotionProgramsEndpoint, args, {\r\n params: {\r\n invisibleLoading: args.invisibleLoading,\r\n },\r\n })\r\n },\r\n getPromotionCalculation(args) {\r\n return axios.post(getPromotionCalculationEndpoint, args)\r\n },\r\n getItemsProductsProgram(args) {\r\n return axios.get(getItemsProductsProgramEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n\r\n getVoucherBySerial(args) {\r\n return axios.post(getVoucherBySerialEndpoint, { serial: args.serial }, {\r\n params: {\r\n customerId: args.customerId,\r\n productIds: args.productIds,\r\n formId: args.formId,\r\n ctrlId: args.ctrlId,\r\n },\r\n })\r\n },\r\n\r\n getCustomersToSale(args) {\r\n return axios.get(getCustomerToSaleEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n\r\n getScorecumulatedById(args) {\r\n return axios.get((`${getScorecumulatedByIdEndpoint}/${args}`))\r\n },\r\n\r\n printSales(args) {\r\n return axios.get(`${printSalesEndpoint}/${args.salesReceiptId}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n printSalesTemp(args) {\r\n return axios.post(printSalesTempEndpoint, args)\r\n },\r\n getSalesPaymentTypes(args) {\r\n return axios.get(getSalesPaymentTypesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n // get limit age\r\n getLimitAgeCustomer(args) {\r\n return axios.get(getLimitAgeCustomerEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductByBarcode(args) {\r\n return axios.get(getProductByBarcodeEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getSalemtPromotionObjects(args) {\r\n return axios.get(getSalemtPromotionObjectTypeEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getSalemtDeliveryTypes(args) {\r\n return axios.get(getSalemtDeliveryTypeEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getEditOnlinePermission(args) {\r\n return axios.post(getEditOnlinePermissionEndPoint, args)\r\n },\r\n getDefaultCustomerType(args) {\r\n return axios.get(getDefaultCustomerTypeEndPoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n gettSInvoiceAccount(args) {\r\n return axios.get(getDefaultGetSInvoiceAcountEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n saveSInvoiceAccount(args) {\r\n return axios.post(saveSInvoiceAccountEndpoint, args)\r\n },\r\n}\r\n","import SalesServices from '@/views/sales/sales/api-service'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\nimport {\r\n // GETTERS\r\n VOUCHERS_GETTER,\r\n VOUCHER_BY_ID_GETTER,\r\n ONLINE_ORDERS_GETTER,\r\n ONLINE_ORDERS_PAGINATION_GETTER,\r\n ONLINE_ORDER_BY_ID_GETTER,\r\n ONLINE_ORDER_COINCIDE_ID_GETTER,\r\n GET_PRODUCTS_GETTER,\r\n GET_PRODUCT_INFOS_GETTER,\r\n GET_TOP_SALE_PRODUCTS_GETTER,\r\n GET_HOT_PRODUCTS_GETTER,\r\n GET_ALL_PRODUCT_GETTER,\r\n GET_DISCOUNT_BY_CODE_GETTER,\r\n UPDATE_PRICE_TYPE_CUSTOMER_GETTER,\r\n GET_TOP_SALE_PRODUCTS_IN_MONTH_GETTER,\r\n GET_PROMOTION_FREE_ITEMS_GETTER,\r\n GET_PROMOTION_PROGRAMS_GETTER,\r\n GET_PROMOTION_CALCULATION_GETTER,\r\n GET_ITEMS_PRODUCTS_PROGRAM_GETTER,\r\n GET_VOUCHER_BY_SERIAL_GETTER,\r\n CUSTOMERS_SALE_GETTER,\r\n PRINT_SALES_GETTER,\r\n CREATE_SALE_ORDER_GETTER,\r\n PRINT_SALES_TEMP_GETTER,\r\n GET_SALE_PAYMENT_TYPES_GETTER,\r\n GET_LIMIT_AGE_CUSTOMERS_GETTER,\r\n GET_PRODUCT_BY_BARCODE_GETTER,\r\n SALEMT_PROMOTION_OBJECT_GETTER,\r\n SALEMT_DELIVERY_TYPE_GETTER,\r\n GET_EDIT_ONLINE_PERMISSION_GETTER,\r\n GET_DEFAULT_CUSTOMER_TYPE_GETTER,\r\n GET_SCORECUMULATED_CUSTOMER_BY_ID_GETTER,\r\n GET_SINVOICE_ACCOUNT_GETTER,\r\n\r\n // ACTIONS\r\n GET_VOUCHERS_ACTION,\r\n GET_VOUCHER_BY_ID_ACTION,\r\n GET_ONLINE_ORDERS_ACTION,\r\n GET_ONLINE_ORDER_BY_ID_ACTION,\r\n GET_ONLINE_ORDER_COINCIDE_ID_ACTION,\r\n GET_PRODUCTS_ACTION,\r\n GET_PRODUCT_INFOS_ACTION,\r\n GET_TOP_SALE_PRODUCTS_ACTION,\r\n GET_HOT_PRODUCTS_ACTION,\r\n GET_ALL_PRODUCT_ACTION,\r\n CREATE_SALE_ORDER_ACTION,\r\n GET_DISCOUNT_BY_CODE_ACTION,\r\n UPDATE_PRICE_TYPE_CUSTOMER_ACTION,\r\n GET_TOP_SALE_PRODUCTS_IN_MONTH_ACTION,\r\n GET_PROMOTION_FREE_ITEMS_ACTION,\r\n GET_PROMOTION_PROGRAMS_ACTION,\r\n GET_PROMOTION_CALCULATION_ACTION,\r\n GET_ITEMS_PRODUCTS_PROGRAM_ACTION,\r\n GET_VOUCHER_BY_SERIAL_ACTION,\r\n GET_CUSTOMERS_SALE_ACTION,\r\n PRINT_SALES_ACTION,\r\n PRINT_SALES_TEMP_ACTION,\r\n GET_SALE_PAYMENT_TYPES_ACTION,\r\n GET_LIMIT_AGE_CUSTOMERS_ACTION,\r\n GET_PRODUCT_BY_BARCODE_ACTION,\r\n GET_SALEMT_PROMOTION_OBJECT_ACTION,\r\n GET_SALEMT_DELIVERY_TYPE_ACTION,\r\n GET_EDIT_ONLINE_PERMISSION_ACTION,\r\n GET_DEFAULT_CUSTOMER_TYPE_ACTION,\r\n GET_SCORECUMULATED_CUSTOMER_BY_ID_ACTION,\r\n GET_SINVOICE_ACCOUNT_ACTION,\r\n SAVE_SINVOICE_ACCOUNT_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n\r\n state: {\r\n vouchers: [],\r\n voucherInfo: {},\r\n onlineOrders: [],\r\n onlineOrderProducts: [],\r\n onlineOrder: {},\r\n messageCoincide: {},\r\n onlineOrderPagination: {},\r\n products: [],\r\n productInfos: [],\r\n topSaleProducts: [],\r\n hotProducts: [],\r\n allProduct: [],\r\n discount: {},\r\n customerTypeProducts: [],\r\n productsInMonth: [],\r\n promotionFreeItems: [],\r\n promotionPrograms: {},\r\n promotionCalculation: {},\r\n itemsProductsProgram: [],\r\n voucherBySerial: {},\r\n customer: {},\r\n printSaleData: {},\r\n createSaleData: {},\r\n printSaleTempData: {},\r\n salePaymentTypes: [],\r\n limitAge: [],\r\n productByBarcode: {},\r\n salemtPromotions: [],\r\n salemtDeliveries: [],\r\n editOnlinePermission: {},\r\n defaultCustomerType: {},\r\n scorecumulated: {},\r\n topsaleProductsInfo: {},\r\n sInvoiceAccount: {},\r\n },\r\n\r\n getters: {\r\n [VOUCHERS_GETTER](state) {\r\n return state.vouchers\r\n },\r\n [VOUCHER_BY_ID_GETTER](state) {\r\n return state.voucherInfo || {}\r\n },\r\n [ONLINE_ORDERS_GETTER](state) {\r\n return state.onlineOrders\r\n },\r\n [ONLINE_ORDERS_PAGINATION_GETTER](state) {\r\n return state.onlineOrderPagination\r\n },\r\n [ONLINE_ORDER_BY_ID_GETTER](state) {\r\n return state.onlineOrder\r\n },\r\n [ONLINE_ORDER_COINCIDE_ID_GETTER](state) {\r\n return state.messageCoincide\r\n },\r\n [GET_PRODUCTS_GETTER](state) {\r\n return state.products\r\n },\r\n [GET_PRODUCT_INFOS_GETTER](state) {\r\n return state.productInfos\r\n },\r\n [GET_TOP_SALE_PRODUCTS_GETTER](state) {\r\n return state.topSaleProducts || []\r\n },\r\n [GET_HOT_PRODUCTS_GETTER](state) {\r\n return state.hotProducts\r\n },\r\n [GET_ALL_PRODUCT_GETTER](state) {\r\n return state.allProduct\r\n },\r\n [GET_DISCOUNT_BY_CODE_GETTER](state) {\r\n return state.discount\r\n },\r\n [UPDATE_PRICE_TYPE_CUSTOMER_GETTER](state) {\r\n return state.customerTypeProducts\r\n },\r\n [GET_TOP_SALE_PRODUCTS_IN_MONTH_GETTER](state) {\r\n return state.productsInMonth\r\n },\r\n [GET_PROMOTION_FREE_ITEMS_GETTER](state) {\r\n return state.promotionFreeItems\r\n },\r\n [GET_PROMOTION_PROGRAMS_GETTER](state) {\r\n return state.promotionPrograms || {}\r\n },\r\n [GET_PROMOTION_CALCULATION_GETTER](state) {\r\n return state.promotionCalculation || {}\r\n },\r\n [GET_ITEMS_PRODUCTS_PROGRAM_GETTER](state) {\r\n return state.itemsProductsProgram || []\r\n },\r\n [GET_VOUCHER_BY_SERIAL_GETTER](state) {\r\n return state.voucherBySerial || {}\r\n },\r\n [CUSTOMERS_SALE_GETTER](state) {\r\n return state.customer\r\n },\r\n [PRINT_SALES_GETTER](state) {\r\n return state.printSaleData || {}\r\n },\r\n [PRINT_SALES_TEMP_GETTER](state) {\r\n return state.printSaleTempData || {}\r\n },\r\n [CREATE_SALE_ORDER_GETTER](state) {\r\n return state.createSaleData || {}\r\n },\r\n [GET_SALE_PAYMENT_TYPES_GETTER](state) {\r\n return state.salePaymentTypes || []\r\n },\r\n [GET_LIMIT_AGE_CUSTOMERS_GETTER](state) {\r\n return state.limitAge\r\n },\r\n [GET_PRODUCT_BY_BARCODE_GETTER](state) {\r\n return state.productByBarcode\r\n },\r\n [SALEMT_PROMOTION_OBJECT_GETTER](state) {\r\n return state.salemtPromotions\r\n },\r\n [SALEMT_DELIVERY_TYPE_GETTER](state) {\r\n return state.salemtDeliveries\r\n },\r\n [GET_EDIT_ONLINE_PERMISSION_GETTER](state) {\r\n return state.editOnlinePermission || {}\r\n },\r\n [GET_DEFAULT_CUSTOMER_TYPE_GETTER](state) {\r\n return state.defaultCustomerType\r\n },\r\n [GET_SCORECUMULATED_CUSTOMER_BY_ID_GETTER](state) {\r\n return state.scorecumulated\r\n },\r\n [GET_SINVOICE_ACCOUNT_GETTER](state) {\r\n return state.sInvoiceAccount\r\n },\r\n },\r\n\r\n mutations: {},\r\n\r\n actions: {\r\n [GET_VOUCHERS_ACTION]({ state }, val) {\r\n SalesServices\r\n .getVouchers(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.vouchers = res.data.content\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_VOUCHER_BY_ID_ACTION]({ state }, val) {\r\n SalesServices\r\n .getVoucherById(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.voucherInfo = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_DISCOUNT_BY_CODE_ACTION]({ state }, val) {\r\n SalesServices\r\n .getDiscountByCode(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.discount = res.data\r\n val.onSuccess()\r\n } else {\r\n val.onFailure()\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_ONLINE_ORDERS_ACTION]({ state }, val) {\r\n SalesServices\r\n .getOnlineOrder(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.onlineOrders = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_ONLINE_ORDER_BY_ID_ACTION]({ state }, val) {\r\n SalesServices\r\n .getOnlineOrderById(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n if (res.data !== null) {\r\n state.onlineOrder = res.data\r\n }\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_ONLINE_ORDER_COINCIDE_ID_ACTION]({ state }, val) {\r\n SalesServices\r\n .checkOnlineOrderCoincideId(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n if (res.data !== null) {\r\n state.messageCoincide = res\r\n }\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCTS_ACTION]({ state }, val) {\r\n SalesServices\r\n .getProducts(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.products = res.data.content || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCT_INFOS_ACTION]({ state }, val) {\r\n SalesServices\r\n .getProductInfos(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productInfos = res.data.content || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_TOP_SALE_PRODUCTS_ACTION]({ state }, val) {\r\n SalesServices\r\n .getProductsTopSale(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.topSaleProducts = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_HOT_PRODUCTS_ACTION]({ state }, val) {\r\n SalesServices\r\n .getProductsHot(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.hotProducts = res.data.content || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_ALL_PRODUCT_ACTION]({ state }, val) {\r\n SalesServices\r\n .getProducts(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.allProduct = res.data.content || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [CREATE_SALE_ORDER_ACTION]({ state }, val) {\r\n SalesServices\r\n .createSaleOrder(val.orderSale)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.createSaleData = res.data\r\n val.onSuccess()\r\n } else {\r\n val.onFailure()\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [UPDATE_PRICE_TYPE_CUSTOMER_ACTION]({ state }, val) {\r\n SalesServices\r\n .updatePriceTypeCustomer(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.customerTypeProducts = res.data.products\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_TOP_SALE_PRODUCTS_IN_MONTH_ACTION]({ state }, val) {\r\n SalesServices\r\n .getProductsTopSaleInMonth(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productsInMonth = res.data.content || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PROMOTION_FREE_ITEMS_ACTION]({ state }, val) {\r\n SalesServices\r\n .getPromotionFreeItems(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.promotionFreeItems = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PROMOTION_PROGRAMS_ACTION]({ state }, val) {\r\n SalesServices\r\n .getPromotionPrograms(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.promotionPrograms = res.data || {}\r\n val.onSuccess()\r\n } else {\r\n val.onFailure()\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PROMOTION_CALCULATION_ACTION]({ state }, val) {\r\n SalesServices\r\n .getPromotionCalculation(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.promotionCalculation = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_ITEMS_PRODUCTS_PROGRAM_ACTION]({ state }, val) {\r\n SalesServices\r\n .getItemsProductsProgram(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.itemsProductsProgram = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_VOUCHER_BY_SERIAL_ACTION]({ state }, val) {\r\n SalesServices\r\n .getVoucherBySerial(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.voucherBySerial = res.data\r\n val.onSuccess()\r\n } else {\r\n // 11008 do bên BE quy định, dùng để check cho trường hợp voucher bị khoá\r\n if (res.statusCode === 11008) {\r\n val.onFailure()\r\n }\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_CUSTOMERS_SALE_ACTION]({ state }, val) {\r\n SalesServices\r\n .getCustomersToSale(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n if (res.data !== null) {\r\n state.customer = res.data\r\n }\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_SALES_ACTION]({ state }, val) {\r\n SalesServices\r\n .printSales(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printSaleData = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_SALES_TEMP_ACTION]({}, val) {\r\n SalesServices\r\n .printSalesTemp(val.orderSale)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_SALE_PAYMENT_TYPES_ACTION]({ state }, val) {\r\n SalesServices\r\n .getSalesPaymentTypes(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.salePaymentTypes = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_SALES_TEMP_ACTION]({ state }, val) {\r\n SalesServices\r\n .printSalesTemp(val.orderSale)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printSaleTempData = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_LIMIT_AGE_CUSTOMERS_ACTION]({ state }, val) {\r\n SalesServices\r\n .getLimitAgeCustomer(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.limitAge = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCT_BY_BARCODE_ACTION]({ state }, val) {\r\n SalesServices\r\n .getProductByBarcode(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productByBarcode = res.data\r\n val.onSuccess()\r\n } else {\r\n val.onFailure()\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_SALEMT_PROMOTION_OBJECT_ACTION]({ state }, val) {\r\n SalesServices\r\n .getSalemtPromotionObjects(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.salemtPromotions = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_SALEMT_DELIVERY_TYPE_ACTION]({ state }, val) {\r\n SalesServices\r\n .getSalemtDeliveryTypes(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.salemtDeliveries = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_EDIT_ONLINE_PERMISSION_ACTION]({ state }, val) {\r\n SalesServices\r\n .getEditOnlinePermission(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.editOnlinePermission = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_DEFAULT_CUSTOMER_TYPE_ACTION]({ state }, val) {\r\n SalesServices\r\n .getDefaultCustomerType(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.defaultCustomerType = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_SCORECUMULATED_CUSTOMER_BY_ID_ACTION]({ state }, val) {\r\n SalesServices\r\n .getScorecumulatedById(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.scorecumulated = res\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_SINVOICE_ACCOUNT_ACTION]({ state }, val) {\r\n SalesServices\r\n .gettSInvoiceAccount(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.sInvoiceAccount = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [SAVE_SINVOICE_ACCOUNT_ACTION]({}, val) {\r\n SalesServices\r\n .saveSInvoiceAccount(val.accountInfo)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n val.onSuccess(res.data)\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const CUSTOMER = '/customers'\r\nconst COMMON = '/commons'\r\nconst AREA = '/areas'\r\nconst APPARAM = '/apparams'\r\n// const PROMOTION = '/promotion'\r\n// const SALE = '/sale'\r\n\r\nexport const getCustomersEndpoint = `${CUSTOMER}`\r\nexport const getCustomerByIdEndpoint = `${CUSTOMER}`\r\nexport const createCustomerEndpoint = `${CUSTOMER}/create`\r\nexport const updateCustomerEndpoint = `${CUSTOMER}/update`\r\nexport const getCustomerTypesEndpoint = `${CUSTOMER}/customer-types`\r\nexport const getCustomerTypesUpdateEndpoint = `${CUSTOMER}/customer-types/customers`\r\nexport const exportCustomersEndpoint = `${CUSTOMER}/export`\r\nexport const importCustomersEndpoint = `${CUSTOMER}/import-customers-excel`\r\nexport const exportCustomersTemplateEndpoint = `${CUSTOMER}/export-customers-template-excel`\r\nexport const getCustomerDefaultEndpoint = `${CUSTOMER}/default`\r\n\r\nexport const getShopLocationsSearchEndpoint = `${COMMON}/${AREA}/districts/index-customers`\r\nexport const getShopLocationsEndpoint = `${COMMON}/${AREA}/default`\r\nexport const getProvincesEndpoint = `${COMMON}/${AREA}/provinces`\r\nexport const getDistrictsEndpoint = `${COMMON}/${AREA}/districts`\r\nexport const getPrecinctsEndpoint = `${COMMON}/${AREA}/precincts`\r\n\r\nexport const getCardTypesEndpoint = `${COMMON}/${APPARAM}/cardtypes`\r\nexport const getCloselyTypesEndpoint = `${COMMON}/${APPARAM}/closelytypes`\r\nexport const getGendersEndpoint = `${COMMON}/categorydata/genders`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getCustomersEndpoint,\r\n getCustomerByIdEndpoint,\r\n createCustomerEndpoint,\r\n updateCustomerEndpoint,\r\n exportCustomersEndpoint,\r\n importCustomersEndpoint,\r\n getCustomerDefaultEndpoint,\r\n exportCustomersTemplateEndpoint,\r\n\r\n getShopLocationsSearchEndpoint,\r\n getShopLocationsEndpoint,\r\n getCustomerTypesEndpoint,\r\n getCustomerTypesUpdateEndpoint,\r\n getPrecinctsEndpoint,\r\n getDistrictsEndpoint,\r\n getProvincesEndpoint,\r\n\r\n getCardTypesEndpoint,\r\n getCloselyTypesEndpoint,\r\n getGendersEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getCustomers(args) {\r\n return axios.get(getCustomersEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getCustomerById(args) {\r\n return axios.get((`${getCustomerByIdEndpoint}/${args}`))\r\n },\r\n getCustomerTypes(args) {\r\n return axios.get(getCustomerTypesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getCustomerTypesUpdate(args) {\r\n return axios.get(getCustomerTypesUpdateEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getCustomerDefault(args) {\r\n return axios.get(getCustomerDefaultEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n createCustomer(args) {\r\n return axios.post(createCustomerEndpoint, args)\r\n },\r\n updateCustomer(args) {\r\n return axios.patch(`${updateCustomerEndpoint}/${args.id}`, args)\r\n },\r\n exportCustomers(args) {\r\n return axios.get(exportCustomersEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n importCustomers(args) {\r\n const formData = new FormData()\r\n formData.append('file', args)\r\n return axios.post(importCustomersEndpoint, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n },\r\n responseType: 'json',\r\n })\r\n },\r\n exportCustomersTemplate() {\r\n return axios.get(exportCustomersTemplateEndpoint, {\r\n responseType: 'blob',\r\n })\r\n },\r\n\r\n getShopLocationsSearch(args) {\r\n return axios.get(getShopLocationsSearchEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getShopLocations(args) {\r\n return axios.get(getShopLocationsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProvinces(args) {\r\n return axios.get(getProvincesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getDistricts(args) {\r\n return axios.get(getDistrictsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getPrecincts(args) {\r\n return axios.get(getPrecinctsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getCardTypes(args) {\r\n return axios.get(getCardTypesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getCloselyTypes(args) {\r\n return axios.get(getCloselyTypesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getGenders(args) {\r\n return axios.get(getGendersEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import CustomerService from '@/views/sales/sales-customers/api-service'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n CUSTOMERS_GETTER,\r\n CUSTOMER_BY_ID_GETTER,\r\n CREATE_CUSTOMER_GETTER,\r\n SHOP_LOCATIONS_SEARCH_GETTER,\r\n SHOP_LOCATIONS_GETTER,\r\n CUSTOMER_TYPES_GETTER,\r\n CUSTOMER_TYPES_LABEL_GETTER,\r\n CUSTOMER_TYPES_UPDATE_GETTER,\r\n CUSTOMER_DEFAULT_GETTER,\r\n PROVINCES_GETTER,\r\n DISTRICTS_GETTER,\r\n PRECINCTS_GETTER,\r\n CARD_TYPES_GETTER,\r\n CLOSELY_TYPES_GETTER,\r\n GENDERS_GETTER,\r\n // ACTIONS\r\n GET_CUSTOMERS_ACTION,\r\n GET_CUSTOMER_BY_ID_ACTION,\r\n CREATE_CUSTOMER_ACTION,\r\n UPDATE_CUSTOMER_ACTION,\r\n GET_CUSTOMER_TYPES_ACTION,\r\n GET_CUSTOMER_TYPES_UPDATE_ACTION,\r\n EXPORT_CUSTOMERS_ACTION,\r\n IMPORT_CUSTOMERS_ACTION,\r\n GET_CUSTOMER_DEFAULT_ACTION,\r\n EXPORT_CUSTOMERS_TEMPLATE,\r\n\r\n GET_SHOP_LOCATIONS_SEARCH_ACTION,\r\n GET_SHOP_LOCATIONS_ACTION,\r\n GET_PROVINCES_ACTION,\r\n GET_DISTRICTS_ACTION,\r\n GET_PRECINCTS_ACTION,\r\n\r\n GET_CARD_TYPES_ACTION,\r\n GET_CLOSELY_TYPES_ACTION,\r\n GET_GENDERS_ACTION,\r\n\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n // STATE\r\n state: {\r\n customerData: {},\r\n customerById: {},\r\n customerDefault: {},\r\n customerCreate: {},\r\n shopLocationsSearch: [],\r\n shopLocations: [],\r\n customerTypes: [],\r\n customerTypesUpdate: [],\r\n provinces: [],\r\n districts: [],\r\n precincts: [],\r\n cardTypes: [],\r\n closelyTypes: [],\r\n genders: [],\r\n },\r\n\r\n // GETTERS\r\n getters: {\r\n [CUSTOMERS_GETTER](state) {\r\n return state.customerData\r\n },\r\n [CREATE_CUSTOMER_GETTER](state) {\r\n return state.customerCreate\r\n },\r\n [CUSTOMER_BY_ID_GETTER](state) {\r\n return state.customerById\r\n },\r\n [CUSTOMER_TYPES_GETTER](state) {\r\n return state.customerTypes\r\n },\r\n [CUSTOMER_TYPES_LABEL_GETTER]: state => id => {\r\n if (state.customerTypes) {\r\n const customerDataFound = state.customerTypes.find(item => `${item.id}` === `${id}`)\r\n return customerDataFound ? customerDataFound.name : 'label customer types'\r\n }\r\n return id\r\n },\r\n [CUSTOMER_TYPES_UPDATE_GETTER](state) {\r\n return state.customerTypesUpdate\r\n },\r\n [CUSTOMER_DEFAULT_GETTER](state) {\r\n return state.customerDefault\r\n },\r\n [SHOP_LOCATIONS_SEARCH_GETTER](state) {\r\n return state.shopLocationsSearch\r\n },\r\n [SHOP_LOCATIONS_GETTER](state) {\r\n return state.shopLocations\r\n },\r\n [PROVINCES_GETTER](state) {\r\n return state.provinces\r\n },\r\n [DISTRICTS_GETTER](state) {\r\n return state.districts\r\n },\r\n [PRECINCTS_GETTER](state) {\r\n return state.precincts\r\n },\r\n [CARD_TYPES_GETTER](state) {\r\n return state.cardTypes\r\n },\r\n [CLOSELY_TYPES_GETTER](state) {\r\n return state.closelyTypes\r\n },\r\n\r\n [GENDERS_GETTER](state) {\r\n return state.genders\r\n },\r\n },\r\n\r\n // MUTATIONS\r\n mutations: {},\r\n\r\n // ACTIONS\r\n actions: {\r\n [GET_CUSTOMERS_ACTION]({ state }, val) {\r\n CustomerService\r\n .getCustomers(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.customerData = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_CUSTOMER_BY_ID_ACTION]({ state }, val) {\r\n CustomerService\r\n .getCustomerById(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.customerById = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [CREATE_CUSTOMER_ACTION]({ state }, val) {\r\n CustomerService\r\n .createCustomer(val.customer)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(res.statusValue)\r\n val.onSuccess()\r\n state.customerCreate = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [UPDATE_CUSTOMER_ACTION]({}, val) {\r\n CustomerService\r\n .updateCustomer(val.customer)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(res.statusValue)\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_CUSTOMER_DEFAULT_ACTION]({ state }, val) {\r\n CustomerService\r\n .getCustomerDefault(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.customerDefault = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // Dùng để load vị trí các shop cho thanh tìm kiếm\r\n [GET_SHOP_LOCATIONS_SEARCH_ACTION]({ state }, val) {\r\n CustomerService\r\n .getShopLocationsSearch(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.shopLocationsSearch = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n // Dùng để load vị trí mặc định của shop hiện tại trong form\r\n [GET_SHOP_LOCATIONS_ACTION]({ state }, val) {\r\n CustomerService\r\n .getShopLocations(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.shopLocations = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [EXPORT_CUSTOMERS_ACTION]({ }, val) {\r\n CustomerService\r\n .exportCustomers(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Danh_sach_khach_hang_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [IMPORT_CUSTOMERS_ACTION]({ }, val) {\r\n CustomerService\r\n .importCustomers(val.file)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.data.errorLineNum > 0) {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n const fileData = res.data.base64Excel\r\n // Giải mã chuỗi base64 thành mảng byte\r\n const byteCharacters = atob(fileData)\r\n const byteNumbers = new Array(byteCharacters.length)\r\n for (let i = 0; i < byteCharacters.length; i += 1) {\r\n byteNumbers[i] = byteCharacters.charCodeAt(i)\r\n }\r\n const byteArray = new Uint8Array(byteNumbers)\r\n const blob = new Blob([byteArray], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })\r\n\r\n // Sử dụng FileSaver để lưu file\r\n const fileName = `File_danh_sach_khach_hang_import_loi_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n FileSaver.saveAs(blob, fileName)\r\n } else {\r\n toasts.success(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n document.getElementById('excelFile').value = null\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_CUSTOMERS_TEMPLATE]() {\r\n CustomerService\r\n .exportCustomersTemplate()\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n } else {\r\n const fileName = `File_danh_sach_khach_hang_import_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(error.message)\r\n })\r\n },\r\n\r\n [GET_CUSTOMER_TYPES_ACTION]({ state }, val) {\r\n CustomerService\r\n .getCustomerTypes(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.customerTypes = res.data\r\n val.onSuccess(res.data)\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_CUSTOMER_TYPES_UPDATE_ACTION]({ state }, val) {\r\n CustomerService\r\n .getCustomerTypesUpdate(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.customerTypesUpdate = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PROVINCES_ACTION]({ state }, val) {\r\n CustomerService\r\n .getProvinces(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.provinces = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_DISTRICTS_ACTION]({ state }, val) {\r\n CustomerService\r\n .getDistricts(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.districts = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRECINCTS_ACTION]({ state }, val) {\r\n CustomerService\r\n .getPrecincts(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.precincts = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_CARD_TYPES_ACTION]({ state }, val) {\r\n CustomerService\r\n .getCardTypes(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.cardTypes = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_CLOSELY_TYPES_ACTION]({ state }, val) {\r\n CustomerService\r\n .getCloselyTypes(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.closelyTypes = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_GENDERS_ACTION]({ state }, val) {\r\n CustomerService\r\n .getGenders(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.genders = res.data\r\n val.onSuccess(res.data)\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const SALE_RECEIPT = '/sales'\r\n\r\nexport const getSalesReceiptsEndpoint = `${SALE_RECEIPT}/sale-orders/`\r\nexport const getSalesReceiptsDetailEndpoint = `${SALE_RECEIPT}/sale-orders/detail`\r\nexport const printSalesReceipt = `${SALE_RECEIPT}/sale-orders/print-sale-order`\r\n","import axios from '@axios'\r\nimport { formatURLParams, formatSortUrl, sortFilterParams } from '@/@core/utils/utils'\r\nimport {\r\n getSalesReceiptsEndpoint,\r\n getSalesReceiptsDetailEndpoint,\r\n printSalesReceipt,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getSalesReceipts(args) {\r\n return axios.get(`${getSalesReceiptsEndpoint}${formatSortUrl(args)}`, {\r\n params: formatURLParams(sortFilterParams(args)),\r\n })\r\n },\r\n getSalesReceiptsDetail(args) {\r\n return axios.get(getSalesReceiptsDetailEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n printSalesReceipt(args) {\r\n return axios.get(`${printSalesReceipt}/${args.salesReceiptId}`, {\r\n params: formatURLParams(args.params),\r\n })\r\n },\r\n}\r\n","import SaleReceiptService from '@/views/sales/sales-receipts/api-service/index'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n SALES_RECEIPTS_GETTER,\r\n SALES_RECEIPTS_DETAIL_GETTER,\r\n PRINT_SALES_RECEIPT_GETTER,\r\n // ACTIONS\r\n GET_SALES_RECEIPTS_DETAIL_ACTION,\r\n GET_SALES_RECEIPTS_ACTION,\r\n PRINT_SALES_RECEIPT_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n state: {\r\n saleReceipts: {},\r\n saleReceiptsDetail: {},\r\n printSalesReceiptData: {},\r\n },\r\n\r\n getters: {\r\n [SALES_RECEIPTS_GETTER](state) {\r\n return state.saleReceipts\r\n },\r\n [SALES_RECEIPTS_DETAIL_GETTER](state) {\r\n return state.saleReceiptsDetail\r\n },\r\n [PRINT_SALES_RECEIPT_GETTER](state) {\r\n return state.printSalesReceiptData\r\n },\r\n },\r\n\r\n actions: {\r\n [GET_SALES_RECEIPTS_ACTION]({ state }, val) {\r\n SaleReceiptService\r\n .getSalesReceipts(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.saleReceipts = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_SALES_RECEIPTS_DETAIL_ACTION]({ state }, val) {\r\n SaleReceiptService\r\n .getSalesReceiptsDetail(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.saleReceiptsDetail = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_SALES_RECEIPT_ACTION]({ state }, val) {\r\n SaleReceiptService\r\n .printSalesReceipt(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printSalesReceiptData = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const SALES = '/sales'\r\nconst RED_INVOICES = '/red-invoices'\r\nexport const getRedInvoiceEndpoint = `${SALES}${RED_INVOICES}`\r\nexport const getCustomersEndpoint = '/customers/customers-to-sale'\r\nexport const getBillOfSalesEndPoint = `${SALES}${RED_INVOICES}/bill-of-sale-list`\r\nexport const getBillOfSaleProductsEndPoint = `${SALES}${RED_INVOICES}/show-info-product`\r\nexport const getProductsEndPoint = `${SALES}${RED_INVOICES}/search-product`\r\nexport const createRedBillEndpoint = `${SALES}${RED_INVOICES}/create`\r\nexport const getInvoiceDetailEndpoint = `${SALES}${RED_INVOICES}/show-invoice-details`\r\nexport const deleteRedBillEndpoint = `${SALES}${RED_INVOICES}/delete`\r\nexport const exportRedBillsEndpoint = `${SALES}/excel`\r\nexport const updateRedBillsEndpoint = `${SALES}${RED_INVOICES}/update`\r\nexport const printRedBillsByIdEndpoint = `${SALES}${RED_INVOICES}/print`\r\nexport const getCustomersRedInvoiceEndpoint = '/customers/red-invoice'\r\n","import axios from '@axios'\r\nimport { formatURLParams, formatSortUrl, sortFilterParams } from '@/@core/utils/utils'\r\nimport {\r\n getRedInvoiceEndpoint,\r\n getCustomersEndpoint,\r\n getBillOfSalesEndPoint,\r\n getBillOfSaleProductsEndPoint,\r\n getProductsEndPoint,\r\n createRedBillEndpoint,\r\n getInvoiceDetailEndpoint,\r\n deleteRedBillEndpoint,\r\n exportRedBillsEndpoint,\r\n updateRedBillsEndpoint,\r\n printRedBillsByIdEndpoint,\r\n getCustomersRedInvoiceEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getRedInvoices(args) {\r\n return axios.get(`${getRedInvoiceEndpoint}${formatSortUrl(args)}`, {\r\n params: formatURLParams(sortFilterParams(args)),\r\n })\r\n },\r\n getBillOfSales(args) {\r\n return axios.get(getBillOfSalesEndPoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getCustomers(args) {\r\n return axios.get(getCustomersEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getCustomersRedInvoice(args) {\r\n return axios.get(getCustomersRedInvoiceEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getBillOfSaleProduct(args) {\r\n return axios.get(getBillOfSaleProductsEndPoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProducts(args) {\r\n return axios.get(`${getProductsEndPoint}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n createRedBill(args) {\r\n return axios.post(createRedBillEndpoint, args)\r\n },\r\n getInvoiceDetail(args) {\r\n return axios.get(`${getInvoiceDetailEndpoint}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n deleteRedBill(args) {\r\n return axios.delete(`${deleteRedBillEndpoint}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportRedBills(args) {\r\n return axios.get(exportRedBillsEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n updateRedBills(args) {\r\n return axios.put(updateRedBillsEndpoint, args)\r\n },\r\n printRedBillsById(args) {\r\n return axios.get(`${printRedBillsByIdEndpoint}/${args.id}`, {\r\n params: formatURLParams(args.params),\r\n })\r\n },\r\n}\r\n","import RedInvoiceService from '@/views/sales/sales-red-bills/api-service'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n RED_INVOICES_GETTER,\r\n CUSTOMERS_GETTER,\r\n GET_BILL_OF_SALES_GETTER,\r\n GET_PRODUCTS_IN_SELECTED_BILL_GETTER,\r\n PRODUCTS_GETTER,\r\n GET_INVOICE_DETAIL_GETTER,\r\n GET_INVOICE_DETAIL_INFO_GETTER,\r\n PRINT_RED_INVOICES_GETTER,\r\n ID_CREATE_RED_INVOICES_GETTER_GETTER,\r\n CUSTOMERS_TO_RED_INVOICE_GETTER,\r\n // ACTIONS\r\n GET_RED_INVOICES_ACTION,\r\n GET_CUSTOMERS_ACTION,\r\n GET_BILL_OF_SALES_ACTION,\r\n GET_PRODUCTS_IN_SELECTED_BILL_ACTION,\r\n CLEAR_ALL_BILL_OF_SALES_PRODUCTS,\r\n CLEAR_BILL_OF_SALE_PRODUCTS_UNCHECKED,\r\n GET_PRODUCTS_ACTION,\r\n CREATE_RED_BILL_ACTION,\r\n GET_INVOICE_DETAIL_ACTION,\r\n DELETE_RED_INVOICE_ACTION,\r\n EXPORT_RED_BILLS_ACTION,\r\n UPDATE_RED_BILLS_ACTION,\r\n PRINT_RED_INVOICES_ACTION,\r\n GET_CUSTOMERS_TO_RED_INVOICE_ACTION,\r\n\r\n} from './type'\r\nimport toasts from '../../../../@core/utils/toasts/toasts'\r\n\r\nexport default {\r\n namespaced: true,\r\n // STATE\r\n state: {\r\n redInvoices: [],\r\n errorCode: null,\r\n customers: [],\r\n paging: {},\r\n info: {},\r\n billOfSales: [],\r\n billOfSalesPaging: [],\r\n products: [],\r\n productOfBills: [],\r\n invoiceDetail: {},\r\n invoiceDetailInfo: {},\r\n printdata: [],\r\n idCreateRedInvoice: {},\r\n customerToRedInvoice: {},\r\n },\r\n\r\n // GETTERS\r\n getters: {\r\n [RED_INVOICES_GETTER](state) {\r\n return state.redInvoices\r\n },\r\n [GET_BILL_OF_SALES_GETTER](state) {\r\n return {\r\n billOfSales: state.billOfSales,\r\n billOfSalesPaging: state.billOfSalesPaging,\r\n }\r\n },\r\n [GET_PRODUCTS_IN_SELECTED_BILL_GETTER](state) {\r\n return state.productOfBills\r\n },\r\n [CUSTOMERS_GETTER](state) {\r\n return state.customers\r\n },\r\n [PRODUCTS_GETTER](state) {\r\n return state.products\r\n },\r\n [GET_INVOICE_DETAIL_GETTER](state) {\r\n return state.invoiceDetail\r\n },\r\n [GET_INVOICE_DETAIL_INFO_GETTER](state) {\r\n return state.invoiceDetailInfo\r\n },\r\n [PRINT_RED_INVOICES_GETTER](state) {\r\n return state.printdata\r\n },\r\n [ID_CREATE_RED_INVOICES_GETTER_GETTER](state) {\r\n return state.idCreateRedInvoice\r\n },\r\n [CUSTOMERS_TO_RED_INVOICE_GETTER](state) {\r\n return state.customerToRedInvoice\r\n },\r\n\r\n },\r\n\r\n // MUTATIONS\r\n mutations: {\r\n [CLEAR_BILL_OF_SALE_PRODUCTS_UNCHECKED](state, val) {\r\n state.products = state.products.filter(item => item.orderCode !== val)\r\n },\r\n [CLEAR_ALL_BILL_OF_SALES_PRODUCTS](state) {\r\n state.products = []\r\n },\r\n },\r\n\r\n // ACTIONS\r\n actions: {\r\n [GET_RED_INVOICES_ACTION]({ state }, val) {\r\n RedInvoiceService\r\n .getRedInvoices(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.redInvoices = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_BILL_OF_SALES_ACTION]({ state }, val) {\r\n RedInvoiceService\r\n .getBillOfSales(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.billOfSales = res.data.content || []\r\n state.billOfSalesPaging = {\r\n totalPages: res.data.totalPages,\r\n totalElements: res.data.totalElements,\r\n last: res.data.last,\r\n numberOfElements: res.data.numberOfElements,\r\n }\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCTS_IN_SELECTED_BILL_ACTION]({ state }, val) {\r\n RedInvoiceService\r\n .getBillOfSaleProduct(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productOfBills = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_CUSTOMERS_ACTION]({ state }, val) {\r\n RedInvoiceService\r\n .getCustomers(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.customers = res.data.content || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCTS_ACTION]({ state }, val) {\r\n RedInvoiceService\r\n .getProducts(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.products = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [CREATE_RED_BILL_ACTION]({ state }, val) {\r\n RedInvoiceService\r\n .createRedBill(val.paramsCreateRedInvoice)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(notificationResponseMessage(res.statusCode, res.statusValue))\r\n state.idCreateRedInvoice = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_INVOICE_DETAIL_ACTION]({ state }, val) {\r\n RedInvoiceService\r\n .getInvoiceDetail(val.orderCodeList)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.invoiceDetail = res.data || {}\r\n val.onSuccess(state.invoiceDetail)\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [DELETE_RED_INVOICE_ACTION]({}, val) {\r\n RedInvoiceService\r\n .deleteRedBill(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(notificationResponseMessage(res.statusCode, res.statusValue))\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_RED_BILLS_ACTION]({}, val) {\r\n RedInvoiceService\r\n .exportRedBills(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Hoa_Don_VAT_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [UPDATE_RED_BILLS_ACTION]({}, val) {\r\n RedInvoiceService\r\n .updateRedBills(val.redInvoiceRequests)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(notificationResponseMessage(res.statusCode, res.statusValue))\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_RED_INVOICES_ACTION]({ state }, val) {\r\n RedInvoiceService\r\n .printRedBillsById(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printdata = res.data || {}\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_CUSTOMERS_TO_RED_INVOICE_ACTION]({ state }, val) {\r\n RedInvoiceService\r\n .getCustomersRedInvoice(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.customerToRedInvoice = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const sales = '/sales'\r\nconst commons = '/commons'\r\nconst apparams = '/apparams'\r\n\r\nexport const getReturnedGoodsEndPoint = `${sales}/order-return`\r\nexport const getSaleOrdersEndPoint = `${sales}/order-return/choose`\r\nexport const getSaleOrderDetailEndPoint = `${sales}/order-return/chosen`\r\nexport const createReturnOrderEndPoint = `${sales}/order-return`\r\nexport const getReturnGoodDetailEnpoint = `${sales}/order-return/detail`\r\nexport const getReasonReturnGoodsEndpoint = `${commons}${apparams}/type/SALEMT_MASTER_PAY_ITEM`\r\n","import { formatURLParams, formatSortUrl, sortFilterParams } from '@/@core/utils/utils'\r\nimport axios from '@axios'\r\nimport {\r\n getReturnedGoodsEndPoint,\r\n getSaleOrdersEndPoint,\r\n getSaleOrderDetailEndPoint,\r\n createReturnOrderEndPoint,\r\n getReturnGoodDetailEnpoint,\r\n getReasonReturnGoodsEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getOrderReturnedGoods(args) {\r\n return axios.get(`${getReturnedGoodsEndPoint}${formatSortUrl(args)}`, {\r\n params: formatURLParams(sortFilterParams(args)),\r\n })\r\n },\r\n\r\n getSaleOrders(args) {\r\n return axios.get(getSaleOrdersEndPoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n\r\n getSaleOrderDetail(args) {\r\n return axios.get(`${getSaleOrderDetailEndPoint}/${args.id}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n\r\n createOrderReturn(args) {\r\n return axios.post(createReturnOrderEndPoint, args)\r\n },\r\n\r\n getReturnGoodDetail(args) {\r\n return axios.get(`${getReturnGoodDetailEnpoint}/${args.id}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getReasonReturnGoods(args) {\r\n return axios.get(getReasonReturnGoodsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import OderReturnService from '@/views/sales/sales-returned-goods/api-service/index'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport router from '@/router/index'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\nimport commonData from '@/@db/common'\r\n\r\nimport {\r\n // GETTERS\r\n RETURNED_FILTERED_GOODS,\r\n RETURNED_GOODS_GETTER,\r\n RETURNED_GOOD_CHOOSE_GETTER,\r\n RETURNED_GOOD_CHOOSEN_DETAIL_GETTER,\r\n RETURN_GOODS_DETAIL_GETTER,\r\n REASON_RETURN_GOODS_GETTER,\r\n\r\n // ACTIONS\r\n GET_RETURNED_GOODS_ACTION,\r\n GET_RETURNED_GOOD_CHOOSE_ACTION,\r\n GET_RETURNED_GOOD_CHOOSEN_DETAIL_ACTION,\r\n CREATE_RETURNED_GOOD_ACTION,\r\n GET_RETURN_GOODS_DETAIL_ACTION,\r\n GET_REASON_RETURN_GOODS_ACTION,\r\n // MUTATION\r\n SET_DEFAULT_PAGE_SIZE,\r\n CLEAR_RETURNED_GOODS_MUTATION,\r\n GET_RETURNED_GOOD_CHOOSE_MUTATION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n state: {\r\n orderReturnData: {},\r\n saleOders: [],\r\n salesOrderData: {},\r\n salesOrderPagination: {},\r\n salesFilteredOrder: [],\r\n pageSize: commonData.perPageSizes[0],\r\n chooseProductData: {},\r\n productDetailData: {},\r\n reasonType: [],\r\n },\r\n getters: {\r\n [RETURNED_GOODS_GETTER](state) {\r\n return state.orderReturnData\r\n },\r\n [RETURNED_GOOD_CHOOSE_GETTER](state) {\r\n return state.salesOrderData\r\n },\r\n [RETURNED_GOOD_CHOOSEN_DETAIL_GETTER](state) {\r\n return state.chooseProductData\r\n },\r\n // reutrn goods detail\r\n [RETURN_GOODS_DETAIL_GETTER](state) {\r\n return state.productDetailData\r\n },\r\n [REASON_RETURN_GOODS_GETTER](state) {\r\n return state.reasonType\r\n },\r\n\r\n [RETURNED_FILTERED_GOODS](state) {\r\n return state.salesFilteredOrder\r\n },\r\n },\r\n // MUTATIONS\r\n mutations: {\r\n [CLEAR_RETURNED_GOODS_MUTATION](state) {\r\n state.orderReturnData = {}\r\n state.saleOders = []\r\n state.products = []\r\n state.info = {}\r\n state.paging = {}\r\n state.promotions = []\r\n state.reasonReturn = []\r\n state.chooseProductData = {}\r\n },\r\n\r\n /**\r\n * @description Get returned good with pagination\r\n * @param {Object} state\r\n * @param {Object} pagination\r\n * @param {number} pagination.pageNumber\r\n * @param {number} pagination.pageSize\r\n */\r\n [GET_RETURNED_GOOD_CHOOSE_MUTATION](state, pagination) {\r\n const items = state.salesOrderData?.response || []\r\n if (!items.length) {\r\n state.salesFilteredOrder = []\r\n return\r\n }\r\n\r\n const { pageNumber, pageSize } = pagination\r\n state.pageSize = pageSize\r\n\r\n const key = `${pageSize}-${pageNumber}`\r\n\r\n const cachedData = state.salesOrderPagination[key]\r\n if (cachedData) {\r\n state.salesFilteredOrder = cachedData\r\n return\r\n }\r\n\r\n const fromItem = (pageNumber - 1) * pageSize\r\n const toItem = fromItem + pageSize\r\n const data = items.slice(fromItem, toItem)\r\n state.salesOrderPagination[key] = data\r\n\r\n state.salesFilteredOrder = data\r\n },\r\n\r\n [SET_DEFAULT_PAGE_SIZE](state) {\r\n const [firstSize] = commonData.perPageSizes\r\n state.pageSize = firstSize\r\n },\r\n },\r\n actions: {\r\n // START - GET RETURN GOODS\r\n [GET_RETURNED_GOODS_ACTION]({ state }, val) {\r\n OderReturnService\r\n .getOrderReturnedGoods(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.orderReturnData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END - GET RETURN GOODS\r\n\r\n // START - GET SALE ODERS\r\n [GET_RETURNED_GOOD_CHOOSE_ACTION]({ state, commit }, val) {\r\n state.salesOrderPagination = {}\r\n state.salesFilteredOrder = []\r\n\r\n OderReturnService\r\n .getSaleOrders(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.salesOrderData = res.data\r\n val.onSuccess()\r\n commit('GET_RETURNED_GOOD_CHOOSE_MUTATION', { pageNumber: 1, pageSize: state.pageSize })\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END - GET SALE ODERS\r\n\r\n // START - GET SALE ODERS DETAIL\r\n [GET_RETURNED_GOOD_CHOOSEN_DETAIL_ACTION]({ state }, val) {\r\n OderReturnService\r\n .getSaleOrderDetail(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.chooseProductData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END - GET SALE ODERS DETAIL\r\n // START - CREATE_SALE_ODER\r\n [CREATE_RETURNED_GOOD_ACTION]({ }, val) {\r\n OderReturnService\r\n .createOrderReturn(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(notificationResponseMessage(res.statusCode, res.statusValue))\r\n router.push({ name: 'sales-returned-goods' })\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END - CREATE_SALE_ODER\r\n\r\n // START - RETURN GOODS DETAIL\r\n [GET_RETURN_GOODS_DETAIL_ACTION]({ state }, val) {\r\n OderReturnService\r\n .getReturnGoodDetail(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productDetailData = res.data || {}\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_REASON_RETURN_GOODS_ACTION]({ state }, val) {\r\n OderReturnService\r\n .getReasonReturnGoods(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reasonType = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const SALES = '/sales'\r\n\r\nexport const getWareHouseComboDetailEndPoint = `${SALES}/combo-product-trans`\r\n\r\nexport const getWarehousesComboEndPoint = `${SALES}/combo-product-trans`\r\n\r\nexport const getComboProductsEndpoint = `${SALES}/combo-products`\r\nexport const getComboProductsDetailsEndpoint = `${SALES}/combo-products`\r\nexport const createComboProductEndpoit = `${SALES}/combo-product-trans`\r\nexport const getWarehouseTypesEndpoint = `${SALES}/warehouse`\r\n","import axios from '@axios'\r\nimport { formatURLParams, formatSortUrl, sortFilterParams } from '@/@core/utils/utils'\r\nimport {\r\n getWareHouseComboDetailEndPoint,\r\n getWarehousesComboEndPoint,\r\n getComboProductsEndpoint,\r\n getComboProductsDetailsEndpoint,\r\n createComboProductEndpoit,\r\n getWarehouseTypesEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getWareHouseComboDetail(args) {\r\n return axios.get(`${getWareHouseComboDetailEndPoint}/${args.id}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getWarehousesCombo(args) {\r\n return axios.get(`${getWarehousesComboEndPoint}${formatSortUrl(args)}`, {\r\n params: formatURLParams(sortFilterParams(args)),\r\n })\r\n },\r\n getComboProducts(args) {\r\n return axios.get(getComboProductsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getComboProductsDetails(args) {\r\n return axios.get(`${getComboProductsDetailsEndpoint}/${args.id}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n createComboProduct(args) {\r\n return axios.post(createComboProductEndpoit, args)\r\n },\r\n getWarehouseTypes(args) {\r\n return axios.get(getWarehouseTypesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import WareHouseComboService from '@/views/warehouses/warehouses-combo/api-service'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport router from '@/router/index'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\nimport {\r\n // getter\r\n GET_WAREHOUSE_COMBO_DETAIL_GETTER,\r\n WAREHOUSES_COMBO_GETTER,\r\n COMBO_PRODUCTS_GETTER,\r\n COMBO_PRODUCTS_DETAILS_GETTER,\r\n COMBO_PRODUCTS_INFO_GETTER,\r\n WAREHOUSES_TYPE_GETTER,\r\n\r\n // Action\r\n GET_WAREHOUSES_COMBO_ACTIONS,\r\n GET_WAREHOUSE_COMBO_DETAIL_ACTION,\r\n GET_COMBO_PRODUCTS_ACTION,\r\n GET_COMBO_PRODUCTS_DETAILS_ACTION,\r\n CREATE_COMBO_PRODUCT_ACTION,\r\n GET_WAREHOUSES_TYPE_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n state: {\r\n wareHouseComboDetail: {},\r\n warehousesComboData: [],\r\n warehousesComboPagination: {},\r\n totalInfo: {},\r\n comboProducts: [],\r\n comboProductsInfo: {},\r\n comboProductsDetails: [],\r\n warehouseTypes: [],\r\n },\r\n\r\n // getter\r\n getters: {\r\n [GET_WAREHOUSE_COMBO_DETAIL_GETTER](state) {\r\n return state.wareHouseComboDetail\r\n },\r\n [WAREHOUSES_COMBO_GETTER](state) {\r\n return state.warehousesComboData\r\n },\r\n [COMBO_PRODUCTS_GETTER](state) {\r\n return state.comboProducts\r\n },\r\n [COMBO_PRODUCTS_DETAILS_GETTER](state) {\r\n return state.comboProductsDetails\r\n },\r\n [COMBO_PRODUCTS_INFO_GETTER](state) {\r\n return state.comboProductsInfo\r\n },\r\n [WAREHOUSES_TYPE_GETTER](state) {\r\n return state.warehouseTypes\r\n },\r\n },\r\n\r\n // mutations\r\n mutations: {},\r\n\r\n // actions\r\n actions: {\r\n [GET_WAREHOUSE_COMBO_DETAIL_ACTION]({ state }, val) {\r\n WareHouseComboService\r\n .getWareHouseComboDetail(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.wareHouseComboDetail = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_WAREHOUSES_COMBO_ACTIONS]({ state }, val) {\r\n WareHouseComboService\r\n .getWarehousesCombo(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.warehousesComboData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_COMBO_PRODUCTS_ACTION]({ state }, val) {\r\n WareHouseComboService\r\n .getComboProducts(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.comboProducts = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_COMBO_PRODUCTS_DETAILS_ACTION]({ state }, val) {\r\n WareHouseComboService\r\n .getComboProductsDetails(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.comboProductsInfo = res.data\r\n state.comboProductsDetails = res.data.details\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [CREATE_COMBO_PRODUCT_ACTION]({}, val) {\r\n WareHouseComboService\r\n .createComboProduct(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(notificationResponseMessage(res.statusCode, res.statusValue))\r\n router.push({ name: 'warehouses-combo' })\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_WAREHOUSES_TYPE_ACTION]({ state }, val) {\r\n WareHouseComboService\r\n .getWarehouseTypes(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.warehouseTypes = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const EXCHANGE_DAMAGED_GOODS = 'sales/exchangetrans'\r\nconst CUSTOMER = '/customers'\r\nconst PRODUCT = '/sales/products'\r\n\r\nexport const getExchangeDamagedGoodsEndpoint = `${EXCHANGE_DAMAGED_GOODS}`\r\nexport const getExchangeDamagedGoodsReasonsEndpoint = `${EXCHANGE_DAMAGED_GOODS}/reasons`\r\nexport const createExchangeDamagedGoodsEndpoint = `${EXCHANGE_DAMAGED_GOODS}/create`\r\nexport const getExchangeDamagedGoodsByIdEndpoint = `${EXCHANGE_DAMAGED_GOODS}`\r\nexport const getCustomersEndpoint = `${CUSTOMER}/customers-to-sale`\r\nexport const getProductsEndPoint = `${PRODUCT}/find`\r\nexport const updateExchangeDamagedGoodsEndpoint = `${EXCHANGE_DAMAGED_GOODS}/update`\r\nexport const getDamagedGoodsByIdEndpoint = `${EXCHANGE_DAMAGED_GOODS}/products`\r\nexport const removeExchangeDamagedGoodsEndpoint = `${EXCHANGE_DAMAGED_GOODS}/remove`\r\nexport const updatePriceProductEndpoint = `${PRODUCT}/change/customer-type`\r\n","import axios from '@axios'\r\nimport { formatURLParams, formatSortUrl, sortFilterParams } from '@/@core/utils/utils'\r\nimport {\r\n getExchangeDamagedGoodsEndpoint,\r\n getExchangeDamagedGoodsReasonsEndpoint,\r\n createExchangeDamagedGoodsEndpoint,\r\n getExchangeDamagedGoodsByIdEndpoint,\r\n getCustomersEndpoint,\r\n getProductsEndPoint,\r\n updateExchangeDamagedGoodsEndpoint,\r\n getDamagedGoodsByIdEndpoint,\r\n removeExchangeDamagedGoodsEndpoint,\r\n updatePriceProductEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getExchangeDamagedGoods(args) {\r\n return axios.get(`${getExchangeDamagedGoodsEndpoint}${formatSortUrl(args)}`, {\r\n params: formatURLParams(sortFilterParams(args)),\r\n })\r\n },\r\n getExchangeDamagedGoodsReasons() {\r\n return axios.get(`${getExchangeDamagedGoodsReasonsEndpoint}`)\r\n },\r\n createExchangeDamagedGoods(args) {\r\n return axios.post(createExchangeDamagedGoodsEndpoint, args)\r\n },\r\n getCustomers(args) {\r\n return axios.get(getCustomersEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProducts(args) {\r\n return axios.get(getProductsEndPoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n updateExchangeDamagedGoods(args) {\r\n return axios.put(`${updateExchangeDamagedGoodsEndpoint}/${args.id}`, args)\r\n },\r\n getExchangeDamagedGoodsById(args) {\r\n return axios.get(`${getExchangeDamagedGoodsByIdEndpoint}/${args}`)\r\n },\r\n getDamagedGoodsById(args) {\r\n return axios.get(`${getDamagedGoodsByIdEndpoint}/${args}`)\r\n },\r\n removeExchangeDamagedGoods(args) {\r\n return axios.put(`${removeExchangeDamagedGoodsEndpoint}/${args}`)\r\n },\r\n updatePriceProduct(args) {\r\n return axios.post(`${updatePriceProductEndpoint}/${args.customerTypeId}`, args.products, {\r\n params: formatURLParams(args.params),\r\n })\r\n },\r\n}\r\n","import exchangeDamagedGoodsService from '@/views/warehouses/warehouses-exchange-damaged-goods/api-service/index'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n EXCHANGE_DAMAGED_GOODS_GETTER,\r\n EXCHANGE_DAMAGED_GOODS_REASONS_GETTER,\r\n EXCHANGE_DAMAGED_GOODS_BY_ID_GETTER,\r\n CUSTOMERS_GETTER,\r\n PRODUCTS_GETTER,\r\n DAMAGED_GOODS_GETTER,\r\n UPDATE_PRICE_PRODUCT_GETTER,\r\n // ACTIONS\r\n GET_EXCHANGE_DAMAGED_GOODS_ACTION,\r\n GET_EXCHANGE_DAMAGED_GOODS_REASONS_ACTION,\r\n CREATE_EXCHANGE_DAMAGED_GOODS_ACTION,\r\n GET_EXCHANGE_DAMAGED_GOODS_BY_ID_ACTION,\r\n GET_CUSTOMERS_ACTION,\r\n GET_PRODUCTS_ACTION,\r\n UPDATE_EXCHANGE_DAMAGED_GOODS_ACTION,\r\n GET_DAMAGED_GOODS_ACTION,\r\n REMOVE_EXCHANGE_DAMAGED_GOODS_ACTION,\r\n UPDATE_PRICE_PRODUCT_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n\r\n // STATE\r\n state: {\r\n exchangeDamagedGoods: [],\r\n exchangeDamagedGoodsReasons: [],\r\n exchangeDamagedGoodsById: {},\r\n damagedGoodsById: {},\r\n customers: [],\r\n products: [],\r\n customerTypeProducts: [],\r\n },\r\n // GETTERS\r\n getters: {\r\n [EXCHANGE_DAMAGED_GOODS_GETTER](state) {\r\n return state.exchangeDamagedGoods\r\n },\r\n [EXCHANGE_DAMAGED_GOODS_REASONS_GETTER](state) {\r\n return state.exchangeDamagedGoodsReasons\r\n },\r\n [EXCHANGE_DAMAGED_GOODS_BY_ID_GETTER](state) {\r\n return state.exchangeDamagedGoodsById\r\n },\r\n [CUSTOMERS_GETTER](state) {\r\n return state.customers\r\n },\r\n [PRODUCTS_GETTER](state) {\r\n return state.products\r\n },\r\n [DAMAGED_GOODS_GETTER](state) {\r\n return state.damagedGoodsById\r\n },\r\n [UPDATE_PRICE_PRODUCT_GETTER](state) {\r\n return state.customerTypeProducts\r\n },\r\n },\r\n\r\n // MUTATIONS\r\n mutations: {},\r\n // ACTIONS\r\n actions: {\r\n // GET EXCHANGE DAMAGED GOODS\r\n [GET_EXCHANGE_DAMAGED_GOODS_ACTION]({ state }, val) {\r\n exchangeDamagedGoodsService\r\n .getExchangeDamagedGoods(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.exchangeDamagedGoods = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END - GET EXCHANGE DAMAGED GOODS\r\n\r\n // GET EXCHANGE DAMAGED GOODS BY ID\r\n [GET_EXCHANGE_DAMAGED_GOODS_BY_ID_ACTION]({ state }, val) {\r\n exchangeDamagedGoodsService\r\n .getExchangeDamagedGoodsById(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.exchangeDamagedGoodsById = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END - GET EXCHANGE DAMAGED GOODS BY ID\r\n\r\n // GET EXCHANGE DAMAGED GOODS REASONS\r\n [GET_EXCHANGE_DAMAGED_GOODS_REASONS_ACTION]({ state }) {\r\n exchangeDamagedGoodsService\r\n .getExchangeDamagedGoodsReasons()\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.exchangeDamagedGoodsReasons = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END - GET EXCHANGE DAMAGED GOODS REASONS\r\n [CREATE_EXCHANGE_DAMAGED_GOODS_ACTION]({}, val) {\r\n exchangeDamagedGoodsService\r\n .createExchangeDamagedGoods(val.damagedGoodsData)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(notificationResponseMessage(res.statusCode, res.statusValue))\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n // GET CUSTOMERS\r\n [GET_CUSTOMERS_ACTION]({ state }, val) {\r\n exchangeDamagedGoodsService\r\n .getCustomers(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.customers = res.data.content || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END - GET CUSTOMERS\r\n\r\n // GET PRODUCTS\r\n [GET_PRODUCTS_ACTION]({ state }, val) {\r\n exchangeDamagedGoodsService\r\n .getProducts(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.products = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END - GET PRODUCTS\r\n\r\n // REMOVE DAMAGED GOODS BY ID\r\n [REMOVE_EXCHANGE_DAMAGED_GOODS_ACTION]({}, val) {\r\n exchangeDamagedGoodsService\r\n .removeExchangeDamagedGoods(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(notificationResponseMessage(res.statusCode, res.statusValue))\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END - REMOVE DAMAGED GOODS BY ID\r\n\r\n // START UPDATE EXCHANGE GOODS\r\n [UPDATE_EXCHANGE_DAMAGED_GOODS_ACTION]({}, val) {\r\n exchangeDamagedGoodsService\r\n .updateExchangeDamagedGoods(val.exchangeDamagedGoods)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(notificationResponseMessage(res.statusCode, res.statusValue))\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END UPDATE EXCHANGE GOODS\r\n\r\n // GET DAMAGED GOODS BY ID\r\n [GET_DAMAGED_GOODS_ACTION]({ state }, val) {\r\n exchangeDamagedGoodsService\r\n .getExchangeDamagedGoodsById(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.damagedGoodsById = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END - GET DAMAGED GOODS BY ID\r\n [UPDATE_PRICE_PRODUCT_ACTION]({ state }, val) {\r\n exchangeDamagedGoodsService\r\n .updatePriceProduct(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.customerTypeProducts = res.data.products\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n },\r\n}\r\n","const SALES = '/sales'\r\nconst COMMON = '/commons'\r\n\r\nexport const getImportPoConfirmEndpoint = `${SALES}/po-confirm/xml`\r\nexport const getPoConfirmEndpoint = `${SALES}/import/po-confirm`\r\nexport const getPoProductsEndpoint = `${SALES}/import/po-detail0`\r\nexport const getPoPromotionProductsEndpoint = `${SALES}/import/po-detail1`\r\nexport const getImportExcelEndpoint = `${SALES}/import/excel`\r\nexport const getImportAdjustmentsEndpoint = `${SALES}/import/adjustment`\r\nexport const getImportAdjustmentsDetailEndpoint = `${SALES}/import/adjustment-detail`\r\nexport const getImportBorrowingsEndpoint = `${SALES}/import/borrowing`\r\nexport const getImportBorrwingsDetailEndpoint = `${SALES}/import/borrowing-detail`\r\nexport const updateNotImportEndpoint = `${SALES}/import/not-import`\r\nexport const createSaleImportEndpoint = `${SALES}/import`\r\nexport const getReceiptsEndpoint = `${SALES}/import`\r\nexport const exportReceiptsEndpoint = `${SALES}/import/excel/`\r\nexport const removeReceiptEndpoint = `${SALES}/import/remove`\r\nexport const printWarehousesInputEndpoint = `${SALES}/report/stock/invoice`\r\nexport const getReceiptByIdEndpoint = `${SALES}/import/trans`\r\nexport const getProductsByIdEndpoint = `${SALES}/import/trans-detail`\r\nexport const getProductsEndPoint = `${SALES}/products/find`\r\nexport const updateReceiptEndpoint = `${SALES}/import/update`\r\nexport const getNotImportReasonsEndpoint = `${COMMON}/apparams/sale-mt-deny`\r\nexport const printOutInputOrderEndpoint = `${SALES}/invoices/product-trans`\r\nexport const getWarehousesListEndpoint = `${SALES}/warehouse`\r\n","import axios from '@axios'\r\nimport { formatURLParams, formatSortUrl, sortFilterParams } from '@/@core/utils/utils'\r\nimport {\r\n getPoConfirmEndpoint,\r\n getPoProductsEndpoint,\r\n getPoPromotionProductsEndpoint,\r\n getImportExcelEndpoint,\r\n getImportAdjustmentsEndpoint,\r\n getImportAdjustmentsDetailEndpoint,\r\n getImportBorrowingsEndpoint,\r\n getImportBorrwingsDetailEndpoint,\r\n updateNotImportEndpoint,\r\n getReceiptsEndpoint,\r\n exportReceiptsEndpoint,\r\n createSaleImportEndpoint,\r\n removeReceiptEndpoint,\r\n printWarehousesInputEndpoint,\r\n getReceiptByIdEndpoint,\r\n getProductsByIdEndpoint,\r\n getProductsEndPoint,\r\n updateReceiptEndpoint,\r\n getNotImportReasonsEndpoint,\r\n printOutInputOrderEndpoint,\r\n getImportPoConfirmEndpoint,\r\n getWarehousesListEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getPoConfirm(args) {\r\n return axios.get(getPoConfirmEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getPoProducts(args) {\r\n return axios.get(`${getPoProductsEndpoint}/${args.id}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getPoPromotionProducts(args) {\r\n return axios.get(`${getPoPromotionProductsEndpoint}/${args.id}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getImportExcel(args) {\r\n return axios.get(`${getImportExcelEndpoint}/${args.id}`, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n config: {\r\n header: {\r\n 'Content-Type': 'application/json',\r\n },\r\n },\r\n })\r\n },\r\n getImportAdjustments(args) {\r\n return axios.get(`${getImportAdjustmentsEndpoint}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getImportAdjustmentsDetail(args) {\r\n return axios.get(`${getImportAdjustmentsDetailEndpoint}/${args.id}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getImportBorrowings(args) {\r\n return axios.get(`${getImportBorrowingsEndpoint}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getImportBorrwingsDetail(args) {\r\n return axios.get(`${getImportBorrwingsDetailEndpoint}/${args.id}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n updateNotImport(args) {\r\n return axios.put(`${updateNotImportEndpoint}/${args.id}`, args)\r\n },\r\n getReceiptImport(args) {\r\n return axios.get(`${getReceiptsEndpoint}${formatSortUrl(args)}`, {\r\n params: formatURLParams(sortFilterParams(args)),\r\n })\r\n },\r\n exportReceiptImport(args) {\r\n return axios.get(`${exportReceiptsEndpoint}${args}`)\r\n },\r\n createSaleImport(args) {\r\n return axios.post(createSaleImportEndpoint, args)\r\n },\r\n removeReceipt(args) {\r\n return axios.patch(`${removeReceiptEndpoint}/${args.id}?type=${args.type}`)\r\n },\r\n printWarehouseInput(args) {\r\n const queryString = new URLSearchParams(args).toString()\r\n return axios(`${printWarehousesInputEndpoint}?${queryString}`, {\r\n method: 'GET',\r\n responseType: 'blob', // Force to receive data in a Blob Format\r\n })\r\n },\r\n getReceiptImportById(args) {\r\n return axios.get(`${getReceiptByIdEndpoint}/${args}`)\r\n },\r\n getProductsById(args) {\r\n return axios.get(`${getProductsByIdEndpoint}/${args}`)\r\n },\r\n getProducts(args) {\r\n return axios.get(getProductsEndPoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n updateReceipt(args) {\r\n return axios.patch(`${updateReceiptEndpoint}/${args.id}?formId=${args.formId}&ctrlId=${args.ctrlId}`, args)\r\n },\r\n getNotImportReasons(args) {\r\n return axios.get(getNotImportReasonsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n printOutInputOrder(args) {\r\n return axios.get(`${printOutInputOrderEndpoint}/${args.transCode}`, {\r\n params: formatURLParams(args.params),\r\n })\r\n },\r\n getImportPoConfirm(args) {\r\n return axios.get(getImportPoConfirmEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getWarehousesList(args) {\r\n return axios.get(getWarehousesListEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import ReceiptImportService from '@/views/warehouses/warehouses-input/api-service'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport router from '@/router/index'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n POCONFIRM_GETTER,\r\n POCONFIRM_DETAILS_GETTER,\r\n POCONFIRM_PROMO_DETAILS_GETTER,\r\n IMPORT_ADJUSTMENTS_GETTER,\r\n IMPORT_ADJUSTMENTS_DETAILS_GETTER,\r\n IMPORT_BORROWINGS_GETTER,\r\n IMPORT_BORROWINGS_DETAILS_GETTER,\r\n RECEIPTS_GETTER,\r\n RECEIPT_BY_ID_GETTER,\r\n PRODUCTS_BY_ID_GETTER,\r\n PROMOTIONS_BY_ID_GETTER,\r\n PRODUCTS_GETTER,\r\n NOT_IMPORT_REASONS_GETTER,\r\n PRINT_OUT_IN_PUT_ORDER_GETTER,\r\n STATUS_NOT_IMPORT_GETTER,\r\n WAREHOUSES_LIST_GETTER,\r\n // ACTIONS\r\n GET_RECEIPTS_ACTION,\r\n EXPORT_RECEIPTS_ACTION,\r\n GET_POCONFIRMS_ACTION,\r\n GET_PODETAIL_PRODUCTS_ACTION,\r\n GET_PODETAIL_PRODUCTS_PROMO_ACTION,\r\n GET_IMPORTEXCEL_ACTION,\r\n GET_IMPORT_ADJUSTMENTS_ACTION,\r\n GET_IMPORT_ADJUSTMENTS_DETAIL_ACTION,\r\n GET_IMPORT_BORROWINGS_ACTION,\r\n GET_IMPORT_BORROWINGS_DETAIL_ACTION,\r\n UPDATE_NOT_IMPORT_ACTION,\r\n CREATE_SALE_IMPORT_ACTION,\r\n REMOVE_RECEIPT_ACTION,\r\n GET_RECEIPT_BY_ID_ACTION,\r\n GET_PRODUCTS_BY_ID_ACTION,\r\n GET_PRODUCTS_ACTION,\r\n UPDATE_RECEIPT_ACTION,\r\n PRINT_WAREHOUSES_INPUT_ACTION,\r\n GET_NOT_IMPORT_REASONS_ACTION,\r\n PRINT_OUT_IN_PUT_ORDER_ACTION,\r\n GET_IMPORT_PO_CONFIRM_ACTION,\r\n GET_WAREHOUSES_LIST_ACTION,\r\n // mutations\r\n CLEAR_STATUS_NOT_IMPORT_MUTATION,\r\n CLEAR_GRID_VIEW_MUTATION,\r\n CLEAR_ADJUST_GRID_VIEW_MUTATION,\r\n CLEAR_BORROW_GRID_VIEW_MUTATION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n\r\n // START - STATE\r\n state: {\r\n poConfirm: [],\r\n poConfirmDetails: {},\r\n poConfirmPromoDetails: {},\r\n importAdjustments: [],\r\n importAdjustmentsDetails: {},\r\n importBorrowings: [],\r\n importBorrowingsDetails: {},\r\n receipts: [],\r\n receiptById: {},\r\n products: [],\r\n promotions: [],\r\n suggestProducts: [],\r\n warehousesType: {},\r\n notImportReasons: [],\r\n printOutInputOrderData: [],\r\n statusNotImport: {},\r\n warehousesList: [],\r\n },\r\n\r\n // START - GETTERS\r\n getters: {\r\n [POCONFIRM_GETTER](state) {\r\n return state.poConfirm\r\n },\r\n [POCONFIRM_DETAILS_GETTER](state) {\r\n return state.poConfirmDetails\r\n },\r\n [POCONFIRM_PROMO_DETAILS_GETTER](state) {\r\n return state.poConfirmPromoDetails\r\n },\r\n [IMPORT_ADJUSTMENTS_GETTER](state) {\r\n return state.importAdjustments\r\n },\r\n [IMPORT_ADJUSTMENTS_DETAILS_GETTER](state) {\r\n return state.importAdjustmentsDetails\r\n },\r\n [IMPORT_BORROWINGS_GETTER](state) {\r\n return state.importBorrowings\r\n },\r\n [IMPORT_BORROWINGS_DETAILS_GETTER](state) {\r\n return state.importBorrowingsDetails\r\n },\r\n [RECEIPTS_GETTER](state) {\r\n return state.receipts\r\n },\r\n [RECEIPT_BY_ID_GETTER](state) {\r\n return state.receiptById\r\n },\r\n [PRODUCTS_BY_ID_GETTER](state) {\r\n return state.products\r\n },\r\n [PROMOTIONS_BY_ID_GETTER](state) {\r\n return state.promotions\r\n },\r\n [PRODUCTS_GETTER](state) {\r\n return state.suggestProducts\r\n },\r\n [NOT_IMPORT_REASONS_GETTER](state) {\r\n return state.notImportReasons\r\n },\r\n [PRINT_OUT_IN_PUT_ORDER_GETTER](state) {\r\n return state.printOutInputOrderData\r\n },\r\n [STATUS_NOT_IMPORT_GETTER](state) {\r\n return state.statusNotImport\r\n },\r\n [WAREHOUSES_LIST_GETTER](state) {\r\n return state.warehousesList\r\n },\r\n },\r\n\r\n // START - MUTATIONS\r\n mutations: {\r\n [CLEAR_STATUS_NOT_IMPORT_MUTATION](state) {\r\n state.statusNotImport = {}\r\n },\r\n [CLEAR_GRID_VIEW_MUTATION](state) {\r\n state.poConfirmDetails = {}\r\n state.poConfirmPromoDetails = {}\r\n },\r\n [CLEAR_ADJUST_GRID_VIEW_MUTATION](state) {\r\n state.importAdjustmentsDetails = {}\r\n },\r\n [CLEAR_BORROW_GRID_VIEW_MUTATION](state) {\r\n state.importBorrowingsDetails = {}\r\n },\r\n },\r\n\r\n // START - ACTIONS\r\n actions: {\r\n [GET_POCONFIRMS_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .getPoConfirm(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.poConfirm = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PODETAIL_PRODUCTS_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .getPoProducts(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.poConfirmDetails = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PODETAIL_PRODUCTS_PROMO_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .getPoPromotionProducts(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.poConfirmPromoDetails = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_IMPORTEXCEL_ACTION]({}, val) {\r\n ReceiptImportService\r\n .getImportExcel(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n const fileName = `Danh_sach_san_pham_PO_nhap hang_${moment().format('YYYYMMDD')}_${moment().locale('vi').format('HHmmss')}.xlsx`\r\n const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_IMPORT_ADJUSTMENTS_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .getImportAdjustments(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.importAdjustments = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_IMPORT_ADJUSTMENTS_DETAIL_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .getImportAdjustmentsDetail(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.importAdjustmentsDetails = res.data\r\n state.importAdjustmentsDetailInfo = res.data.info || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_IMPORT_BORROWINGS_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .getImportBorrowings(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.importBorrowings = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_IMPORT_BORROWINGS_DETAIL_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .getImportBorrwingsDetail(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.importBorrowingsDetails = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [UPDATE_NOT_IMPORT_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .updateNotImport(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.statusNotImport = res.success\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [CREATE_SALE_IMPORT_ACTION]({}, val) {\r\n ReceiptImportService\r\n .createSaleImport(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(notificationResponseMessage(res.statusCode, res.statusValue))\r\n router.push({ name: 'warehouses-input' })\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // START - GET RECEIPTS\r\n [GET_RECEIPTS_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .getReceiptImport(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.receipts = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END - GET RECEIPTS\r\n\r\n // START - EXPORT RECEIPTS\r\n [EXPORT_RECEIPTS_ACTION]({}, val) {\r\n ReceiptImportService\r\n .exportReceiptImport(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(notificationResponseMessage(res.statusCode, res.statusValue))\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END - EXPORT RECEIPTS\r\n [GET_RECEIPT_BY_ID_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .getReceiptImportById(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.receiptById = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCTS_BY_ID_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .getProductsById(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.products = res.data.response\r\n state.promotions = res.data.info\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCTS_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .getProducts(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.suggestProducts = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [REMOVE_RECEIPT_ACTION]({ }, val) {\r\n ReceiptImportService\r\n .removeReceipt(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(notificationResponseMessage(res.statusCode, res.statusValue))\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [UPDATE_RECEIPT_ACTION]({}, val) {\r\n ReceiptImportService\r\n .updateReceipt(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(notificationResponseMessage(res.statusCode, res.statusValue))\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_WAREHOUSES_INPUT_ACTION]({}, val) {\r\n ReceiptImportService\r\n .printWarehouseInput(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `${val.transCode}.pdf`\r\n const blob = new Blob([res], { type: 'application/pdf' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_NOT_IMPORT_REASONS_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .getNotImportReasons(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.notImportReasons = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_OUT_IN_PUT_ORDER_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .printOutInputOrder(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printOutInputOrderData = res.data || {}\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_IMPORT_PO_CONFIRM_ACTION]({ }, val) {\r\n ReceiptImportService\r\n .getImportPoConfirm(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n val.onSuccess(res.data)\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_WAREHOUSES_LIST_ACTION]({ state }, val) {\r\n ReceiptImportService\r\n .getWarehousesList(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.warehousesList = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const SALES = '/sales'\r\nconst EXPORT = '/export'\r\nconst IMPORT = '/import'\r\n\r\nexport const getWarehousesOutputsEndpoint = `${SALES}${EXPORT}`\r\nexport const printWarehousesOutputEndpoint = `${SALES}/report/stock/invoice`\r\nexport const getWarehousesOutputByIdEndpoint = `${SALES}${IMPORT}/trans`\r\nexport const updateWarehousesOutputEndpoint = `${SALES}${EXPORT}/update`\r\nexport const getProductsOfWarehousesOutputEndpoint = `${SALES}${IMPORT}/trans-detail`\r\nexport const getExportBorrowingEndpoint = `${SALES}${EXPORT}/borrowing`\r\nexport const getExportPoTransEndpoint = `${SALES}${EXPORT}/po-trans`\r\nexport const getExportAdjustmentEndpoint = `${SALES}${EXPORT}/adjustment`\r\nexport const getExportBorrowingDetailEndpoint = `${SALES}${IMPORT}/borrowing-detail`\r\nexport const getExportPoTransDetailEndpoint = `${SALES}${IMPORT}/trans-detail`\r\nexport const getExportAdjustmentDetailEndpoint = `${SALES}${IMPORT}/adjustment-detail`\r\nexport const getWareHouseTypeEndpoint = `${SALES}${IMPORT}/warehouse-type`\r\nexport const createExportEndpoint = `${SALES}${EXPORT}`\r\nexport const deleteWarehousesOutputEndpoint = `${SALES}${EXPORT}/remove`\r\nexport const printOutInputOrderEndpoint = `${SALES}/invoices/product-trans`\r\n","import axios from '@axios'\r\nimport { formatURLParams, formatSortUrl, sortFilterParams } from '@/@core/utils/utils'\r\nimport {\r\n getWarehousesOutputsEndpoint,\r\n printWarehousesOutputEndpoint,\r\n getWarehousesOutputByIdEndpoint,\r\n updateWarehousesOutputEndpoint,\r\n getProductsOfWarehousesOutputEndpoint,\r\n getExportBorrowingEndpoint,\r\n getExportAdjustmentEndpoint,\r\n getExportPoTransEndpoint,\r\n getExportPoTransDetailEndpoint,\r\n getExportAdjustmentDetailEndpoint,\r\n getExportBorrowingDetailEndpoint,\r\n getWareHouseTypeEndpoint,\r\n createExportEndpoint,\r\n deleteWarehousesOutputEndpoint,\r\n printOutInputOrderEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getWarehouseOutputs(args) {\r\n return axios.get(`${getWarehousesOutputsEndpoint}${formatSortUrl(args)}`, {\r\n params: formatURLParams(sortFilterParams(args)),\r\n })\r\n },\r\n printWarehouseOutput(args) {\r\n const queryString = new URLSearchParams(args).toString()\r\n return axios(`${printWarehousesOutputEndpoint}?${queryString}`, {\r\n method: 'GET',\r\n responseType: 'blob', // Force to receive data in a Blob Format\r\n })\r\n },\r\n getWarehouseOutputById(args) {\r\n return axios.get(`${getWarehousesOutputByIdEndpoint}/${args.id}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductsOfWarehouseOutput(args) {\r\n return axios.get(`${getProductsOfWarehousesOutputEndpoint}/${args.id}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n updateWarehouseOutput(args) {\r\n return axios.patch(`${updateWarehousesOutputEndpoint}/${args.id}`, args)\r\n },\r\n getExportBorrowing() {\r\n return axios.get(`${getExportBorrowingEndpoint}`)\r\n },\r\n getExportAdjustment() {\r\n return axios.get(`${getExportAdjustmentEndpoint}`)\r\n },\r\n getExportPoTrans(args) {\r\n const queryString = new URLSearchParams(args).toString()\r\n return axios.get(`${getExportPoTransEndpoint}?${queryString}`)\r\n },\r\n getExportPoTransDetail(args) {\r\n return axios.get(`${getExportPoTransDetailEndpoint}/${args}?type=0`)\r\n },\r\n getExportAdjustmentDetail(args) {\r\n return axios.get(`${getExportAdjustmentDetailEndpoint}/${args}?type=0`)\r\n },\r\n getExportBorrowingDetail(args) {\r\n return axios.get(`${getExportBorrowingDetailEndpoint}/${args}?type=0`)\r\n },\r\n getWareHouseType() {\r\n return axios.get(`${getWareHouseTypeEndpoint}`)\r\n },\r\n createExport(args) {\r\n return axios.post(createExportEndpoint, args)\r\n },\r\n deleteWarehousesOutput(args) {\r\n return axios.put(`${deleteWarehousesOutputEndpoint}/${args.id}?type=${args.type}`)\r\n },\r\n printOutInputOrder(args) {\r\n return axios.get(`${printOutInputOrderEndpoint}/${args.transCode}`, {\r\n params: formatURLParams(args.params),\r\n })\r\n },\r\n}\r\n","import WarehousesService from '@/views/warehouses/warehouses-output/api-service'\r\nimport FileSaver from 'file-saver'\r\nimport router from '@/router/index'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n GET_WAREHOUSES_OUTPUT_LIST_GETTER,\r\n GET_WAREHOUSES_OUTPUT_BY_ID_GETTER,\r\n GET_PRODUCTS_OF_WAREHOUSES_OUTPUT_GETTER,\r\n GET_EXPORT_ADJUSTMENTS_GETTER,\r\n GET_EXPORT_PO_TRANS_GETTER,\r\n GET_EXPORT_BORROWINGS_GETTER,\r\n GET_EXPORT_ADJUSTMENTS_DETAIL_GETTER,\r\n GET_EXPORT_BORROWINGS_DETAIL_GETTER,\r\n GET_EXPORT_PO_TRANS_DETAIL_GETTER,\r\n GET_WAREHOUSE_TYPE_GETTER,\r\n PRINT_OUT_IN_PUT_ORDER_GETTER,\r\n // ACTIONS\r\n GET_WAREHOUSES_OUTPUT_LIST_ACTION,\r\n PRINT_WAREHOUSES_OUTPUT_ACTION,\r\n GET_WAREHOUSES_OUTPUT_BY_ID_ACTION,\r\n GET_PRODUCTS_OF_WAREHOUSES_OUTPUT_ACTION,\r\n UPDATE_WAREHOUSES_OUTPUT_ACTION,\r\n GET_EXPORT_ADJUSTMENT_ACTION,\r\n GET_EXPORT_PO_TRANS_ACTION,\r\n GET_EXPORT_BORROWINGS_ACTION,\r\n GET_EXPORT_BORROWINGS_DETAIL_ACTION,\r\n GET_EXPORT_ADJUSTMENT_DETAIL_ACTION,\r\n GET_EXPORT_PO_TRANS_DETAIL_ACTION,\r\n GET_WAREHOUSE_TYPE_ACTION,\r\n CREATE_EXPORT_ACTION,\r\n DELETE_WAREHOUSES_ACTION,\r\n PRINT_OUT_IN_PUT_ORDER_ACTION,\r\n} from './type'\r\nimport toasts from '../../../../@core/utils/toasts/toasts'\r\n\r\nexport default {\r\n namespaced: true,\r\n // STATE\r\n state: {\r\n warehousesOutputs: {},\r\n warehousesOutput: {},\r\n products: [], // list product of warehouses output\r\n poTrans: [],\r\n adjustmentTrans: [],\r\n borrowing: [],\r\n poProducts: {},\r\n wareHouseType: [],\r\n adjustmentProducts: [],\r\n borrowedProducts: [],\r\n printOutInputOrderData: [],\r\n },\r\n\r\n // GETTERS\r\n getters: {\r\n [GET_WAREHOUSES_OUTPUT_LIST_GETTER](state) {\r\n return state.warehousesOutputs\r\n },\r\n [GET_WAREHOUSES_OUTPUT_BY_ID_GETTER](state) {\r\n return state.warehousesOutput\r\n },\r\n [GET_PRODUCTS_OF_WAREHOUSES_OUTPUT_GETTER](state) {\r\n return state.products\r\n },\r\n [GET_EXPORT_ADJUSTMENTS_GETTER](state) {\r\n return state.adjustmentTrans\r\n },\r\n [GET_EXPORT_PO_TRANS_GETTER](state) {\r\n return state.poTrans || []\r\n },\r\n [GET_EXPORT_BORROWINGS_GETTER](state) {\r\n return state.borrowing\r\n },\r\n [GET_EXPORT_ADJUSTMENTS_DETAIL_GETTER](state) {\r\n return state.adjustmentProducts\r\n },\r\n [GET_EXPORT_BORROWINGS_DETAIL_GETTER](state) {\r\n return state.borrowedProducts\r\n },\r\n [GET_EXPORT_PO_TRANS_DETAIL_GETTER](state) {\r\n return state.poProducts || {}\r\n },\r\n [GET_WAREHOUSE_TYPE_GETTER](state) {\r\n return state.wareHouseType\r\n },\r\n [PRINT_OUT_IN_PUT_ORDER_GETTER](state) {\r\n return state.printOutInputOrderData\r\n },\r\n },\r\n\r\n // ACTIONS\r\n actions: {\r\n [GET_WAREHOUSES_OUTPUT_LIST_ACTION]({ state }, val) {\r\n WarehousesService\r\n .getWarehouseOutputs(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.warehousesOutputs = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_WAREHOUSES_OUTPUT_ACTION]({ }, val) {\r\n WarehousesService\r\n .printWarehouseOutput(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `${val.transCode}.pdf`\r\n const blob = new Blob([res], { type: 'application/pdf' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_WAREHOUSES_OUTPUT_BY_ID_ACTION]({ state }, val) {\r\n WarehousesService\r\n .getWarehouseOutputById(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.warehousesOutput = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCTS_OF_WAREHOUSES_OUTPUT_ACTION]({ state }, val) {\r\n WarehousesService\r\n .getProductsOfWarehouseOutput(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.products = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [UPDATE_WAREHOUSES_OUTPUT_ACTION]({ }, val) {\r\n WarehousesService\r\n .updateWarehouseOutput(val.updateWarehouseOutput)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(res.statusValue)\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_EXPORT_BORROWINGS_ACTION]({ state }, val) {\r\n WarehousesService\r\n .getExportBorrowing(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.borrowing = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_EXPORT_ADJUSTMENT_ACTION]({ state }, val) {\r\n WarehousesService\r\n .getExportAdjustment(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.adjustmentTrans = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_EXPORT_PO_TRANS_ACTION]({ state }, val) {\r\n WarehousesService\r\n .getExportPoTrans(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.poTrans = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_EXPORT_PO_TRANS_DETAIL_ACTION]({ state }, val) {\r\n WarehousesService\r\n .getExportPoTransDetail(val.id)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.poProducts = res.data\r\n val.onSuccess(state.poProducts)\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_EXPORT_BORROWINGS_DETAIL_ACTION]({ state }, val) {\r\n WarehousesService\r\n .getExportBorrowingDetail(val.id)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.borrowedProducts = res.data || []\r\n val.onSuccess(state.borrowedProducts)\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_EXPORT_ADJUSTMENT_DETAIL_ACTION]({ state }, val) {\r\n WarehousesService\r\n .getExportAdjustmentDetail(val.id)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.adjustmentProducts = res.data || []\r\n val.onSuccess(state.adjustmentProducts)\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_WAREHOUSE_TYPE_ACTION]({ state }) {\r\n WarehousesService\r\n .getWareHouseType()\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.wareHouseType = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [CREATE_EXPORT_ACTION]({ }, val) {\r\n WarehousesService\r\n .createExport(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(res.statusValue)\r\n router.push({ name: 'warehouses-output' })\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [DELETE_WAREHOUSES_ACTION]({}, val) {\r\n WarehousesService\r\n .deleteWarehousesOutput(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(res.statusValue)\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_OUT_IN_PUT_ORDER_ACTION]({ state }, val) {\r\n WarehousesService\r\n .printOutInputOrder(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printOutInputOrderData = res.data || {}\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const SALE = '/sales'\r\n\r\nexport const getWarehouseInventoriesEndpoint = `${SALE}/inventory`\r\nexport const getWarehouseTypesEndpoint = `${SALE}/warehouse`\r\nexport const getWarehouseInventoryStocksEndpoint = `${SALE}/inventories`\r\nexport const exportFilledStocksEndpoint = `${SALE}/filled-stock/export`\r\nexport const createWarehouseInventoryEndpoint = `${SALE}/inventory`\r\nexport const importFilledStocksEndpoint = `${SALE}/inventory/import-excel`\r\nexport const checkExistedWarehouseInventoryEndpoint = `${SALE}/inventory/numInDay`\r\nexport const getSampleImportFileEndpoint = `${SALE}/inventory/sample-excel`\r\nexport const getFailedImportFileEndpoint = `${SALE}/filled-stock/export-fail`\r\nexport const getWarehouseInventoryDetailEndpoint = `${SALE}/inventory`\r\nexport const updateWarehouseInventoryEndpoint = `${SALE}/inventory`\r\n","import axios from '@axios'\r\nimport { formatURLParams, formatSortUrl, sortFilterParams } from '@/@core/utils/utils'\r\nimport {\r\n getWarehouseInventoriesEndpoint,\r\n getWarehouseTypesEndpoint,\r\n getWarehouseInventoryStocksEndpoint,\r\n exportFilledStocksEndpoint,\r\n createWarehouseInventoryEndpoint,\r\n importFilledStocksEndpoint,\r\n checkExistedWarehouseInventoryEndpoint,\r\n getSampleImportFileEndpoint,\r\n getFailedImportFileEndpoint,\r\n getWarehouseInventoryDetailEndpoint,\r\n updateWarehouseInventoryEndpoint,\r\n\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getWarehouseInventories(args) {\r\n return axios.get(`${getWarehouseInventoriesEndpoint}${formatSortUrl(args)}`, {\r\n params: formatURLParams(sortFilterParams(args)),\r\n })\r\n },\r\n getWarehouseTypes(args) {\r\n return axios.get(getWarehouseTypesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getWarehouseInventoryStocks(args) {\r\n return axios.get(getWarehouseInventoryStocksEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportFilledStocks(args) {\r\n return axios.get(exportFilledStocksEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n createWarehouseInventory(args) {\r\n return axios.post(createWarehouseInventoryEndpoint, args.lstCreate, {\r\n params: {\r\n formId: args.formId,\r\n ctrlId: args.ctrlId,\r\n override: args.override,\r\n wareHouseTypeId: args.wareHouseTypeId,\r\n },\r\n })\r\n },\r\n importFilledStocks(args) {\r\n return axios.post(importFilledStocksEndpoint, args.data, {\r\n 'Content-Type': 'multipart/form-data',\r\n params: {\r\n wareHouseTypeId: args.wareHouseTypeId,\r\n },\r\n })\r\n },\r\n checkExistedWarehouseInventory(args) {\r\n return axios.get(`${checkExistedWarehouseInventoryEndpoint}/${args.wareHouseTypeId}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getSampleImportFile() {\r\n return axios.get(getSampleImportFileEndpoint, {\r\n responseType: 'blob',\r\n })\r\n },\r\n getFailedImportFile(args) {\r\n return axios.post(getFailedImportFileEndpoint, args.data, {\r\n 'Content-Type': 'multipart/form-data',\r\n responseType: 'blob',\r\n params: {\r\n wareHouseTypeId: args.wareHouseTypeId,\r\n },\r\n })\r\n },\r\n getWarehouseInventoryDetail(args) {\r\n return axios.get(`${getWarehouseInventoryDetailEndpoint}/${args.id}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n updateWarehouseInventory(args) {\r\n return axios.put(`${updateWarehouseInventoryEndpoint}/${args.id}`, args.lstUpdate, {\r\n params: {\r\n formId: args.formId,\r\n ctrlId: args.ctrlId,\r\n },\r\n })\r\n },\r\n}\r\n","import WarehousesInventoryService from '@/views/warehouses/warehouses-inventory/api-service'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n WAREHOUSE_INVENTORIES_GETTER,\r\n WAREHOUSE_TYPES_GETTER,\r\n WAREHOUSE_INVENTORY_STOCKS_GETTER,\r\n IS_EXISTED_WAREHOUSE_INVENTORY_GETTER,\r\n WAREHOUSE_INVENTORY_DATA_GETTER,\r\n WAREHOUSE_INVENTORY_IMPORT_DATA_GETTER,\r\n WAREHOUSE_INVENTORY_DETAIL_GETTER,\r\n // ACTIONS\r\n GET_WAREHOUSE_INVENTORIES_ACTION,\r\n GET_WAREHOUSE_TYPES_ACTION,\r\n GET_WAREHOUSE_INVENTORY_STOCKS_ACTION,\r\n EXPORT_FILLED_STOCKS_ACTION,\r\n CREATE_WAREHOUSE_INVENTORY_ACTION,\r\n IMPORT_FILLED_STOCKS_ACTION,\r\n CHECK_EXISTED_WAREHOUSE_INVENTORY_ACTION,\r\n GET_SAMPLE_IMPORT_FILE_ACTION,\r\n GET_FAILED_IMPORT_FILE_ACTION,\r\n GET_WAREHOUSE_INVENTORY_DETAIL_ACTION,\r\n UPDATE_WAREHOUSE_INVENTORY_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n\r\n // START - STATE\r\n state: {\r\n warehouseInventories: [],\r\n warehouseTypes: [],\r\n warehouseInventoryStocks: [],\r\n warehouseInventoryStatusCode: null,\r\n isExistedWarehouseInventory: null,\r\n warehouseInventoryData: {},\r\n warehouseInventoryImportData: {},\r\n warehouseInventoryDetail: {},\r\n },\r\n\r\n // START - GETTERS\r\n getters: {\r\n [WAREHOUSE_INVENTORIES_GETTER](state) {\r\n return state.warehouseInventories\r\n },\r\n [WAREHOUSE_TYPES_GETTER](state) {\r\n return state.warehouseTypes\r\n },\r\n [WAREHOUSE_INVENTORY_STOCKS_GETTER](state) {\r\n return state.warehouseInventoryStocks\r\n },\r\n [IS_EXISTED_WAREHOUSE_INVENTORY_GETTER](state) {\r\n return state.isExistedWarehouseInventory\r\n },\r\n [WAREHOUSE_INVENTORY_DATA_GETTER](state) {\r\n return state.warehouseInventoryData\r\n },\r\n [WAREHOUSE_INVENTORY_IMPORT_DATA_GETTER](state) {\r\n return state.warehouseInventoryImportData\r\n },\r\n [WAREHOUSE_INVENTORY_DETAIL_GETTER](state) {\r\n return state.warehouseInventoryDetail\r\n },\r\n },\r\n\r\n // START - MUTATIONS\r\n mutations: {},\r\n\r\n // START - ACTIONS\r\n actions: {\r\n [GET_WAREHOUSE_INVENTORIES_ACTION]({ state }, val) {\r\n WarehousesInventoryService\r\n .getWarehouseInventories(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.warehouseInventories = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_WAREHOUSE_TYPES_ACTION]({ state }, val) {\r\n WarehousesInventoryService\r\n .getWarehouseTypes(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.warehouseTypes = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_WAREHOUSE_INVENTORY_STOCKS_ACTION]({ state }, val) {\r\n WarehousesInventoryService\r\n .getWarehouseInventoryStocks(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.warehouseInventoryStocks = res.data\r\n state.warehouseInventoryStatusCode = res.statusCode\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_FILLED_STOCKS_ACTION]({}, val) {\r\n WarehousesInventoryService\r\n .exportFilledStocks(val)\r\n .then(res => {\r\n if (res.status === 200 && res.data != null) {\r\n const blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;' })\r\n if (window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(blob, `Kiểm kê hàng_Filled_${val.date}`)\r\n } else {\r\n const elem = window.document.createElement('a')\r\n elem.href = window.URL.createObjectURL(blob)\r\n elem.download = `Kiểm kê hàng_Filled_${val.date}`\r\n document.body.appendChild(elem)\r\n elem.click()\r\n document.body.removeChild(elem)\r\n }\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [CREATE_WAREHOUSE_INVENTORY_ACTION]({ state }, val) {\r\n WarehousesInventoryService\r\n .createWarehouseInventory(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(res.statusValue)\r\n state.warehouseInventoryStatusCode = res.statusCode\r\n state.warehouseInventoryData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [IMPORT_FILLED_STOCKS_ACTION]({ state }, val) {\r\n WarehousesInventoryService\r\n .importFilledStocks(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.warehouseInventoryImportData = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [CHECK_EXISTED_WAREHOUSE_INVENTORY_ACTION]({ state }, val) {\r\n WarehousesInventoryService\r\n .checkExistedWarehouseInventory(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.isExistedWarehouseInventory = !res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_SAMPLE_IMPORT_FILE_ACTION]({}) {\r\n WarehousesInventoryService\r\n .getSampleImportFile()\r\n .then(res => {\r\n if (res.status === 200 && res.data != null) {\r\n const blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;' })\r\n if (window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(blob, 'Mau_Import')\r\n } else {\r\n const elem = window.document.createElement('a')\r\n elem.href = window.URL.createObjectURL(blob)\r\n elem.download = 'Mau_Import'\r\n document.body.appendChild(elem)\r\n elem.click()\r\n document.body.removeChild(elem)\r\n }\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_FAILED_IMPORT_FILE_ACTION]({}, val) {\r\n WarehousesInventoryService\r\n .getFailedImportFile(val.data)\r\n .then(res => {\r\n if (res.status === 200 && res.data != null) {\r\n const blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;' })\r\n if (window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(blob, `Kiểm kê hàng_Filled_${val.date}`)\r\n } else {\r\n const elem = window.document.createElement('a')\r\n elem.href = window.URL.createObjectURL(blob)\r\n elem.download = `Kiểm kê hàng_Filled_${val.date}`\r\n document.body.appendChild(elem)\r\n elem.click()\r\n document.body.removeChild(elem)\r\n }\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_WAREHOUSE_INVENTORY_DETAIL_ACTION]({ state }, val) {\r\n WarehousesInventoryService\r\n .getWarehouseInventoryDetail(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.warehouseInventoryDetail = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [UPDATE_WAREHOUSE_INVENTORY_ACTION]({ state }, val) {\r\n WarehousesInventoryService\r\n .updateWarehouseInventory(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success(res.statusValue)\r\n state.warehouseInventoryStatusCode = res.statusCode\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const REPORTS = '/reports'\r\nconst SALES_PRODUCTS = '/sales/products'\r\n\r\nexport const getDifferencePriceEndPoint = `${REPORTS}/changePrices`\r\nexport const getProductCatListsEndpoint = `${SALES_PRODUCTS}/all-product-cat`\r\nexport const getProductListsEndpoint = `${SALES_PRODUCTS}/choose-product`\r\nexport const exportDifferencePriceEndPoint = `${REPORTS}/changePrices/excel`\r\nexport const printReportDifferencePriceEndPoint = `${REPORTS}/changePrices/pdf`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getDifferencePriceEndPoint,\r\n getProductListsEndpoint,\r\n getProductCatListsEndpoint,\r\n exportDifferencePriceEndPoint,\r\n printReportDifferencePriceEndPoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getDifferencePrice(args) {\r\n return axios.get(getDifferencePriceEndPoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductLists(args) {\r\n return axios.get(getProductListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductCatlists(args) {\r\n return axios.get(getProductCatListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportDifferencePrice(args) {\r\n return axios.get(exportDifferencePriceEndPoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n printReportDifferencePrice(args) {\r\n return axios.get(printReportDifferencePriceEndPoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import DifferencePriceServices from '@/views/reports/reports-warehouses/report-warehouses-price-difference/api-service/index'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n GET_REPORT_WAREHOUSES_DIFFERENCE_PRICE_GETTER,\r\n PRODUCT_GETTER,\r\n PRODUCT_CAT_GETTER,\r\n PRINT_REPORT_DIFFERENCE_GETTER,\r\n // ACTIONS\r\n GET_REPORT_WAREHOUSES_DIFFERENCE_PRICE_ACTION,\r\n GET_PRODUCT_ACTION,\r\n GET_PRODUCT_CAT_ACTION,\r\n EXPORT_REPORT_WAREHOUSES_DIFFERENCE_PRICE_ACTION,\r\n PRINT_REPORT_DIFFERENCE_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n\r\n state: {\r\n differencePrices: {},\r\n productData: {},\r\n productCatData: [],\r\n printData: {},\r\n },\r\n\r\n getters: {\r\n [GET_REPORT_WAREHOUSES_DIFFERENCE_PRICE_GETTER](state) {\r\n return state.differencePrices\r\n },\r\n [PRODUCT_GETTER](state) {\r\n return state.productData\r\n },\r\n [PRODUCT_CAT_GETTER](state) {\r\n return state.productCatData\r\n },\r\n [PRINT_REPORT_DIFFERENCE_GETTER](state) {\r\n return state.printData\r\n },\r\n },\r\n\r\n mutations: {},\r\n\r\n actions: {\r\n [GET_REPORT_WAREHOUSES_DIFFERENCE_PRICE_ACTION]({ state }, val) {\r\n DifferencePriceServices\r\n .getDifferencePrice(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.differencePrices = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PRODUCT_ACTION]({ state }, val) {\r\n DifferencePriceServices\r\n .getProductLists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PRODUCT_CAT_ACTION]({ state }, val) {\r\n DifferencePriceServices\r\n .getProductCatlists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productCatData = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_WAREHOUSES_DIFFERENCE_PRICE_ACTION]({ }, val) {\r\n DifferencePriceServices\r\n .exportDifferencePrice(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Chênh lệch giá Filled_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_REPORT_DIFFERENCE_ACTION]({ state }, val) {\r\n DifferencePriceServices\r\n .printReportDifferencePrice(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const REPORTS = '/reports'\r\nconst SALES = '/sales'\r\nconst PRODUCTS = '/products'\r\nexport const getReportsWarehousesInventoryEndpoint = `${REPORTS}/stock-total`\r\nexport const exportReportInventoriesEndpoint = `${REPORTS}/stock-total/excel`\r\nexport const getProductCatListsEndpoint = `${SALES}${PRODUCTS}/all-product-cat`\r\nexport const getProductListsEndpoint = `${SALES}${PRODUCTS}/choose-product`\r\nexport const printReportInventoryEndpoint = `${REPORTS}/stock-total/print`\r\nexport const getWarehouseTypesEndpoint = `${SALES}/warehouse`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getReportsWarehousesInventoryEndpoint,\r\n exportReportInventoriesEndpoint,\r\n getProductCatListsEndpoint,\r\n getProductListsEndpoint,\r\n printReportInventoryEndpoint,\r\n getWarehouseTypesEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getReportsWarehousesInventory(args) {\r\n return axios.get(getReportsWarehousesInventoryEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportReportInventories(args) {\r\n return axios.get(exportReportInventoriesEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n getProductLists(args) {\r\n return axios.get(getProductListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductCatlists(args) {\r\n return axios.get(getProductCatListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n printReportInventory(args) {\r\n return axios.get(printReportInventoryEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getWarehouseTypes(args) {\r\n return axios.get(getWarehouseTypesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import reportWarehousesInventoryService from '@/views/reports/reports-warehouses/reports-warehouses-inventory/api-service'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n REPORT_WAREHOUSES_INVENTORY_GETTER,\r\n REPORT_WAREHOUSES_INVENTORY_INFO_GETTER,\r\n REPORT_WAREHOUSES_INVENTORY_PAGINATION_GETTER,\r\n PRODUCT_LIST_GETTER,\r\n PRODUCT_LIST_PAGINATION_GETTER,\r\n PRODUCT_CAT_LIST_GETTER,\r\n PRINT_REPORT_INVENTORY_GETTER,\r\n WAREHOUSE_TYPES_GETTER,\r\n // ACTIONS\r\n GET_REPORT_WAREHOUSES_INVENTORY_ACTION,\r\n EXPORT_REPORT_INVENTORIES_ACTION,\r\n GET_PRODUCT_LIST_ACTION,\r\n GET_PRODUCT_CAT_LIST_ACTION,\r\n PRINT_REPORT_INVENTORY_ACTION,\r\n GET_WAREHOUSE_TYPES_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n\r\n // START - STATE\r\n state: {\r\n reportWarehousesInventory: [],\r\n reportWarehousesInventoryInfo: {},\r\n reportWarehousesInventoryPagination: {},\r\n productList: [],\r\n productListPagination: {},\r\n productCatList: [],\r\n printData: {},\r\n warehouseTypes: [],\r\n },\r\n\r\n // START - GETTERS\r\n getters: {\r\n [REPORT_WAREHOUSES_INVENTORY_GETTER](state) {\r\n return state.reportWarehousesInventory\r\n },\r\n [REPORT_WAREHOUSES_INVENTORY_INFO_GETTER](state) {\r\n return state.reportWarehousesInventoryInfo\r\n },\r\n [REPORT_WAREHOUSES_INVENTORY_PAGINATION_GETTER](state) {\r\n return state.reportWarehousesInventoryPagination\r\n },\r\n [PRODUCT_LIST_GETTER](state) {\r\n return state.productList\r\n },\r\n [PRODUCT_LIST_PAGINATION_GETTER](state) {\r\n return state.productListPagination\r\n },\r\n [PRODUCT_CAT_LIST_GETTER](state) {\r\n return state.productCatList\r\n },\r\n [PRINT_REPORT_INVENTORY_GETTER](state) {\r\n return state.printData\r\n },\r\n [WAREHOUSE_TYPES_GETTER](state) {\r\n return state.warehouseTypes\r\n },\r\n },\r\n\r\n // START - MUTATIONS\r\n mutations: {},\r\n\r\n // START - ACTIONS\r\n actions: {\r\n [GET_REPORT_WAREHOUSES_INVENTORY_ACTION]({ state }, val) {\r\n reportWarehousesInventoryService\r\n .getReportsWarehousesInventory(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportWarehousesInventory = res.data.response.content\r\n state.reportWarehousesInventoryInfo = res.data.info\r\n state.reportWarehousesInventoryPagination = res.data.response\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_INVENTORIES_ACTION]({ }, val) {\r\n reportWarehousesInventoryService\r\n .exportReportInventories(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Tồn kho cửa hàng_Filled_${moment().format('YYYYMMDD')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 1000)}.xlsx`\r\n const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCT_LIST_ACTION]({ state }, val) {\r\n reportWarehousesInventoryService\r\n .getProductLists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productList = res.data.content\r\n state.productListPagination = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCT_CAT_LIST_ACTION]({ state }, val) {\r\n reportWarehousesInventoryService\r\n .getProductCatlists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productCatList = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_REPORT_INVENTORY_ACTION]({ state }, val) {\r\n reportWarehousesInventoryService\r\n .printReportInventory(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printData = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_WAREHOUSE_TYPES_ACTION]({ state }, val) {\r\n reportWarehousesInventoryService\r\n .getWarehouseTypes(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.warehouseTypes = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const reports = '/reports'\r\nconst sales = '/sales'\r\nconst products = '/products'\r\nconst commons = '/commons'\r\nconst apparams = '/apparams'\r\n// Reports\r\nexport const getReportsReturnedGoodsEndpoint = `${reports}/returnGoods`\r\nexport const exportReportsReturnedGoodsEndpoint = `${reports}/returnGoods/export`\r\nexport const printInputOrderDetailEndpoint = `${reports}/returnGoods/print` // temp\r\nexport const printSellsEndpoint = `${reports}/sells/print` // temp\r\nexport const printReturnGoodsEndpoint = `${reports}/returnGoods/print`\r\nexport const getReasonReturnGoodsEndpoint = `${commons}${apparams}/type/SALEMT_MASTER_PAY_ITEM`\r\n\r\n// Sales\r\nexport const getProductCatListsEndpoint = `${sales}${products}/all-product-cat`\r\nexport const getProductListsEndpoint = `${sales}${products}/choose-product`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n // Reports\r\n getReportsReturnedGoodsEndpoint,\r\n exportReportsReturnedGoodsEndpoint,\r\n printInputOrderDetailEndpoint, // temp\r\n printSellsEndpoint, // temp\r\n printReturnGoodsEndpoint,\r\n getReasonReturnGoodsEndpoint,\r\n // Sales\r\n getProductCatListsEndpoint,\r\n getProductListsEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n // Reports\r\n getReportsReturnedGoods(args) {\r\n return axios.get(getReportsReturnedGoodsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportReportsReturnedGoods(args) {\r\n return axios.get(exportReportsReturnedGoodsEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n printInputOrderDetail(args) {\r\n return axios.get(printInputOrderDetailEndpoint, { // temp\r\n params: formatURLParams(args),\r\n })\r\n },\r\n printSells(args) {\r\n return axios.get(printSellsEndpoint, { // temp\r\n params: formatURLParams(args),\r\n })\r\n },\r\n printReturnGoods(args) {\r\n return axios.get(printReturnGoodsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n // Sales\r\n getProductLists(args) {\r\n return axios.get(getProductListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductCatlists(args) {\r\n return axios.get(getProductCatListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getReasonReturnGoods(args) {\r\n return axios.get(getReasonReturnGoodsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import ReportsService from '@/views/reports/reports-returned-goods/api-service/index'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n REPORT_RETURNED_GOODS_GETTER,\r\n PRODUCT_GETTER,\r\n PRODUCT_CAT_GETTER,\r\n PRINT_INPUT_ORDER_DETIAL_GETTER, // temp\r\n PRINT_SELLS_GETTER, // temp\r\n PRINT_RETURN_GOODS_GETTER,\r\n REASON_RETURN_GOODS_GETTER,\r\n // MUTATIONS\r\n CLEAR_ALL_PRODUCT_LISTS_CHECKED,\r\n // ACTIONS\r\n GET_REPORT_RETURNED_GOODS_ACTION,\r\n EXPORT_REPORT_RETURNED_GOODS_ACTION,\r\n GET_PRODUCT_ACTION,\r\n GET_PRODUCT_CAT_ACTION,\r\n PRINT_INPUT_ORDER_DETIAL_ACTION, // temp\r\n PRINT_SELLS_ACTION, // temp\r\n PRINT_RETURN_GOODS_ACTION,\r\n GET_REASON_RETURN_GOODS_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n // State\r\n state: {\r\n reportReturnedgoodData: {},\r\n productData: {},\r\n productCatData: [],\r\n selectedProductRow: [],\r\n printInputOrderDetailData: [], // temp\r\n printSellsData: [], // temp\r\n printReturnGoodsData: [],\r\n reasonType: [],\r\n },\r\n // Getters\r\n getters: {\r\n [REPORT_RETURNED_GOODS_GETTER](state) {\r\n return state.reportReturnedgoodData\r\n },\r\n [PRODUCT_GETTER](state) {\r\n return state.productData\r\n },\r\n [PRODUCT_CAT_GETTER](state) {\r\n return state.productCatData\r\n },\r\n [PRINT_INPUT_ORDER_DETIAL_GETTER](state) { // temp\r\n return state.printInputOrderDetailData\r\n },\r\n [PRINT_SELLS_GETTER](state) { // temp\r\n return state.printSellsData\r\n },\r\n [PRINT_RETURN_GOODS_GETTER](state) { // temp\r\n return state.printReturnGoodsData\r\n },\r\n [REASON_RETURN_GOODS_GETTER](state) {\r\n return state.reasonType\r\n },\r\n\r\n },\r\n // Mutations\r\n mutations: {\r\n [CLEAR_ALL_PRODUCT_LISTS_CHECKED](state) {\r\n state.selectedProductRow = []\r\n },\r\n },\r\n // Actions\r\n actions: {\r\n [GET_REPORT_RETURNED_GOODS_ACTION]({ state }, val) {\r\n ReportsService\r\n .getReportsReturnedGoods(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportReturnedgoodData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_RETURNED_GOODS_ACTION]({ }, val) {\r\n ReportsService\r\n .exportReportsReturnedGoods(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Bao_cao_hang_tra_lai_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_REASON_RETURN_GOODS_ACTION]({ state }, val) {\r\n ReportsService\r\n .getReasonReturnGoods(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reasonType = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PRODUCT_ACTION]({ state }, val) {\r\n ReportsService\r\n .getProductLists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PRODUCT_CAT_ACTION]({ state }, val) {\r\n ReportsService\r\n .getProductCatlists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productCatData = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_INPUT_ORDER_DETIAL_ACTION]({ state }, val) { // temp\r\n ReportsService\r\n .printInputOrderDetail(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printInputOrderDetailData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_SELLS_ACTION]({ state }, val) { // temp\r\n ReportsService\r\n .printSells(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printSellsData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_RETURN_GOODS_ACTION]({ state }, val) {\r\n ReportsService\r\n .printReturnGoods(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printReturnGoodsData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const reports = '/reports'\r\nconst sales = '/sales'\r\nconst products = '/products'\r\nexport const getReportsWarehousesAdjustmentEndpoint = `${reports}/in-out-adjustment`\r\nexport const getProductCatListsEndpoint = `${sales}${products}/all-product-cat`\r\nexport const getProductListsEndpoint = `${sales}${products}/choose-product`\r\nexport const exportsWarehousesAdjustmentEndpoint = `${reports}/in-out-adjustment/excel`\r\nexport const printWarehousesAdjustmentEndpoint = `${reports}/in-out-adjustment/prrint`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getReportsWarehousesAdjustmentEndpoint,\r\n getProductCatListsEndpoint,\r\n getProductListsEndpoint,\r\n exportsWarehousesAdjustmentEndpoint,\r\n printWarehousesAdjustmentEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getReportsWarehousesAdjustment(args) {\r\n return axios.get(getReportsWarehousesAdjustmentEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductLists(args) {\r\n return axios.get(getProductListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductCatlists(args) {\r\n return axios.get(getProductCatListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n\r\n exportsWarehousesAdjustment(args) {\r\n return axios.get(exportsWarehousesAdjustmentEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n printWarehousesAdjustment(args) {\r\n return axios.get(printWarehousesAdjustmentEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import toasts from '@/@core/utils/toasts/toasts'\r\nimport ReportService from '@/views/reports/reports-warehouses/reports-warehouses-adjustment/api-service/index'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // Getters\r\n REPORT_WAREHOUSES_ADJUSTMENTS_GETTER,\r\n PRODUCT_GETTER,\r\n PRODUCT_CAT_GETTER,\r\n PRINT_REPORT_WAREHOUSES_ADJUSTMENTS_GETTER,\r\n\r\n // Actions\r\n GET_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION,\r\n GET_PRODUCT_ACTION,\r\n GET_PRODUCT_CAT_ACTION,\r\n EXPORT_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION,\r\n PRINT_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n state: {\r\n adjustmentData: [],\r\n productData: [],\r\n productCatData: [],\r\n printData: {},\r\n },\r\n getters: {\r\n [REPORT_WAREHOUSES_ADJUSTMENTS_GETTER](state) {\r\n return state.adjustmentData\r\n },\r\n [PRODUCT_GETTER](state) {\r\n return state.productData\r\n },\r\n [PRODUCT_CAT_GETTER](state) {\r\n return state.productCatData\r\n },\r\n [PRINT_REPORT_WAREHOUSES_ADJUSTMENTS_GETTER](state) {\r\n return state.printData\r\n },\r\n },\r\n mutations: {},\r\n actions: {\r\n [GET_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION]({ state }, val) {\r\n ReportService\r\n .getReportsWarehousesAdjustment(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.adjustmentData = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PRODUCT_ACTION]({ state }, val) {\r\n ReportService\r\n .getProductLists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productData = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PRODUCT_CAT_ACTION]({ state }, val) {\r\n ReportService\r\n .getProductCatlists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productCatData = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION]({ }, val) {\r\n ReportService\r\n .exportsWarehousesAdjustment(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Bao_cao_nhap_xuat_dieu_chinh_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_REPORT_WAREHOUSES_ADJUSTMENTS_ACTION]({ state }, val) {\r\n ReportService\r\n .printWarehousesAdjustment(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printData = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const reports = '/reports'\r\nconst sales = '/sales'\r\nconst products = '/products'\r\nexport const getReportsWarehousesPromotionEndpoint = `${reports}${products}/promotions`\r\nexport const getProductCatListsEndpoint = `${sales}${products}/all-product-cat`\r\nexport const getProductListsEndpoint = `${sales}${products}/choose-product`\r\nexport const exportsWarehousesPromotionEndpoint = `${reports}${products}/promotions/excel`\r\nexport const printReportPromotionEndpoint = `${reports}/${products}/promotions/print`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getReportsWarehousesPromotionEndpoint,\r\n getProductCatListsEndpoint,\r\n getProductListsEndpoint,\r\n exportsWarehousesPromotionEndpoint,\r\n printReportPromotionEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getReportsWarehousesPromotion(args) {\r\n return axios.get(getReportsWarehousesPromotionEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductLists(args) {\r\n return axios.get(getProductListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductCatlists(args) {\r\n return axios.get(getProductCatListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportsWarehousesPromotion(args) {\r\n return axios.get(exportsWarehousesPromotionEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n printReportPromotion(args) {\r\n return axios.get(printReportPromotionEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import toasts from '@/@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport ReportService from '@/views/reports/reports-warehouses/reports-warehouses-promotion/api-service/index'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // Getters\r\n REPORT_WAREHOUSES_PROMOTIONS_GETTER,\r\n PRODUCT_GETTER,\r\n PRODUCT_CAT_GETTER,\r\n PRINT_REPORT_PROMOTION_GETTER,\r\n\r\n // Actions\r\n GET_REPORT_WAREHOUSES_PROMOTIONS_ACTIONS,\r\n GET_PRODUCT_ACTION,\r\n GET_PRODUCT_CAT_ACTION,\r\n EXPORT_REPORT_WAREHOUSES_PROMOTIONS_ACTION,\r\n PRINT_REPORT_PROMOTION_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n state: {\r\n promotionData: [],\r\n productData: [],\r\n productCatData: [],\r\n printData: {},\r\n },\r\n getters: {\r\n [REPORT_WAREHOUSES_PROMOTIONS_GETTER](state) {\r\n return state.promotionData\r\n },\r\n [PRODUCT_GETTER](state) {\r\n return state.productData\r\n },\r\n [PRODUCT_CAT_GETTER](state) {\r\n return state.productCatData\r\n },\r\n [PRINT_REPORT_PROMOTION_GETTER](state) {\r\n return state.printData\r\n },\r\n },\r\n mutations: {},\r\n actions: {\r\n [GET_REPORT_WAREHOUSES_PROMOTIONS_ACTIONS]({ state }, val) {\r\n ReportService\r\n .getReportsWarehousesPromotion(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.promotionData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PRODUCT_ACTION]({ state }, val) {\r\n ReportService\r\n .getProductLists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PRODUCT_CAT_ACTION]({ state }, val) {\r\n ReportService\r\n .getProductCatlists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productCatData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_WAREHOUSES_PROMOTIONS_ACTION]({ }, val) {\r\n ReportService\r\n .exportsWarehousesPromotion(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Bao_cao_hang_khuyen_mai_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_REPORT_PROMOTION_ACTION]({ state }, val) {\r\n ReportService\r\n .printReportPromotion(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const REPORTS = '/reports'\r\nconst SALES = '/sales'\r\nconst PRODUCTS = '/products'\r\n\r\nexport const getWarehousesInputEndpoint = `${REPORTS}/shop-import`\r\nexport const exportExcelEndpoint = `${REPORTS}/shop-import/excel`\r\nexport const getProductCatListsEndpoint = `${SALES}${PRODUCTS}/all-product-cat`\r\nexport const getProductListsEndpoint = `${SALES}${PRODUCTS}/choose-product`\r\nexport const printShopImportReportEndpoint = `${REPORTS}/shop-import/print`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getWarehousesInputEndpoint,\r\n exportExcelEndpoint,\r\n getProductCatListsEndpoint,\r\n getProductListsEndpoint,\r\n printShopImportReportEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getWarehousesInput(args) {\r\n return axios.get(getWarehousesInputEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportWarehouseInputs(args) {\r\n return axios.get(exportExcelEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n getProductLists(args) {\r\n return axios.get(getProductListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductCatlists(args) {\r\n return axios.get(getProductCatListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n printShopImportReport(args) {\r\n return axios.get(printShopImportReportEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import ReportsWarehousesInputServices from '@/views/reports/reports-warehouses/reports-warehouses-input/api-service/index'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n REPORT_WAREHOUSES_INPUT_GETTER,\r\n PRODUCT_LISTS_GETTER,\r\n PRODUCT_CAT_LISTS_GETTER,\r\n PRINT_SHOP_IMPORT_REPORT_GETTER,\r\n // MUTATIONS\r\n CLEAR_ALL_PRODUCT_LISTS_CHECKED,\r\n // ACTIONS\r\n GET_REPORT_WAREHOUSES_INPUT_ACTION,\r\n EXPORT_REPORT_WAREHOUSES_INPUT_ACTION,\r\n GET_PRODUCT_LISTS_ACTIONS,\r\n GET_PRODUCT_CAT_LISTS_ACTIONS,\r\n PRINT_SHOP_IMPORT_REPORT_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n\r\n state: {\r\n warehousesInput: {},\r\n productData: {},\r\n productCatData: [],\r\n selectedProductRow: [],\r\n printData: {},\r\n },\r\n\r\n getters: {\r\n [REPORT_WAREHOUSES_INPUT_GETTER](state) {\r\n return state.warehousesInput\r\n },\r\n [PRODUCT_LISTS_GETTER](state) {\r\n return state.productData\r\n },\r\n [PRODUCT_CAT_LISTS_GETTER](state) {\r\n return state.productCatData\r\n },\r\n [PRINT_SHOP_IMPORT_REPORT_GETTER](state) {\r\n return state.printData\r\n },\r\n },\r\n\r\n mutations: {\r\n [CLEAR_ALL_PRODUCT_LISTS_CHECKED](state) {\r\n state.selectedProductRow = []\r\n },\r\n },\r\n\r\n actions: {\r\n [GET_REPORT_WAREHOUSES_INPUT_ACTION]({ state }, val) {\r\n ReportsWarehousesInputServices\r\n .getWarehousesInput(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.warehousesInput = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_WAREHOUSES_INPUT_ACTION]({}, val) {\r\n ReportsWarehousesInputServices\r\n .exportWarehouseInputs(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Cửa hàng nhập hàng_Filled_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCT_LISTS_ACTIONS]({ state }, val) {\r\n ReportsWarehousesInputServices\r\n .getProductLists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PRODUCT_CAT_LISTS_ACTIONS]({ state }, val) {\r\n ReportsWarehousesInputServices\r\n .getProductCatlists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productCatData = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [PRINT_SHOP_IMPORT_REPORT_ACTION]({ state }, val) {\r\n ReportsWarehousesInputServices\r\n .printShopImportReport(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const OUTPUT_GOODS = 'reports/export-goods'\r\nconst products = '/products'\r\nconst sales = '/sales'\r\n\r\nexport const getOutputGoodsEndpoint = `${OUTPUT_GOODS}`\r\nexport const exportOutputGoodsEndpoint = `${OUTPUT_GOODS}/excel`\r\nexport const printOutputGoodsEndpoint = `${OUTPUT_GOODS}/print`\r\n\r\n// Sales\r\nexport const getProductCatListsEndpoint = `${sales}${products}/all-product-cat`\r\nexport const getProductListsEndpoint = `${sales}${products}/choose-product`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getOutputGoodsEndpoint,\r\n exportOutputGoodsEndpoint,\r\n printOutputGoodsEndpoint,\r\n // Sales\r\n getProductCatListsEndpoint,\r\n getProductListsEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getOutputGoods(args) {\r\n return axios.get(`${getOutputGoodsEndpoint}`, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportOutputGoods(args) {\r\n return axios.get(exportOutputGoodsEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n printOutputGoods(args) {\r\n return axios.get(printOutputGoodsEndpoint, { // temp\r\n params: formatURLParams(args),\r\n })\r\n },\r\n // Sales\r\n getProductLists(args) {\r\n return axios.get(getProductListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductCatlists(args) {\r\n return axios.get(getProductCatListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import outputGoodsService from '@/views/reports/reports-warehouses/reports-warehouses-output/api-service/index'\r\nimport toasts from '@/@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n OUTPUT_GOODS_GETTER,\r\n PRODUCT_GETTER,\r\n PRODUCT_CAT_GETTER,\r\n PRINT_OUTPUT_GOODS_GETTER,\r\n\r\n // ACTIONS\r\n GET_OUTPUT_GOODS_ACTION,\r\n GET_PRODUCT_ACTION,\r\n GET_PRODUCT_CAT_ACTION,\r\n PRINT_OUTPUT_GOODS_ACTION,\r\n EXPORT_OUTPUT_GOODS_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n\r\n // STATE\r\n state: {\r\n outputGoods: [],\r\n productData: {},\r\n productCatData: [],\r\n printData: {},\r\n },\r\n\r\n // GETTERS\r\n getters: {\r\n [OUTPUT_GOODS_GETTER](state) {\r\n return state.outputGoods\r\n },\r\n [PRODUCT_GETTER](state) {\r\n return state.productData\r\n },\r\n [PRODUCT_CAT_GETTER](state) {\r\n return state.productCatData\r\n },\r\n [PRINT_OUTPUT_GOODS_GETTER](state) {\r\n return state.printData\r\n },\r\n },\r\n\r\n // ACTIONS\r\n actions: {\r\n // GET OUTPUT GOODS\r\n [GET_OUTPUT_GOODS_ACTION]({ state }, val) {\r\n outputGoodsService\r\n .getOutputGoods(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.outputGoods = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n // END - GET OUTPUT GOODS\r\n [EXPORT_OUTPUT_GOODS_ACTION]({ }, val) {\r\n outputGoodsService\r\n .exportOutputGoods(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Cửa hàng xuất hàng_Filled_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_OUTPUT_GOODS_ACTION]({ state }, val) {\r\n outputGoodsService\r\n .printOutputGoods(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PRODUCT_ACTION]({ state }, val) {\r\n outputGoodsService\r\n .getProductLists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PRODUCT_CAT_ACTION]({ state }, val) {\r\n outputGoodsService\r\n .getProductCatlists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productCatData = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const REPORTS = '/reports'\r\nconst SALES = '/sales'\r\nconst PRODUCTS = '/products'\r\nconst INVENTORIES = '/inventories'\r\n\r\nexport const getWarehousesInputOutputInventoryEndpoint = `${REPORTS}${INVENTORIES}/import-export`\r\nexport const exportExcelEndpoint = `${REPORTS}${INVENTORIES}/import-export/excel`\r\nexport const getProductCatListsEndpoint = `${SALES}${PRODUCTS}/all-product-cat`\r\nexport const getProductListsEndpoint = `${SALES}${PRODUCTS}/choose-product`\r\nexport const printOutInputInventoryEndpoint = `${REPORTS}${INVENTORIES}/import-export/print`\r\nexport const getWarehouseTypesEndpoint = `${SALES}/warehouse`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getWarehousesInputOutputInventoryEndpoint,\r\n exportExcelEndpoint,\r\n getProductCatListsEndpoint,\r\n getProductListsEndpoint,\r\n printOutInputInventoryEndpoint,\r\n getWarehouseTypesEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getWarehousesInputOutputInventory(args) {\r\n return axios.get(getWarehousesInputOutputInventoryEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportWarehousesInputOutputInventory(args) {\r\n return axios.get(exportExcelEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n getProductLists(args) {\r\n return axios.get(getProductListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductCatlists(args) {\r\n return axios.get(getProductCatListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n printOutInputInventory(args) {\r\n return axios.get(printOutInputInventoryEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getWarehouseTypes(args) {\r\n return axios.get(getWarehouseTypesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import ReportsWarehousesInputOutputInventoryServices from '@/views/reports/reports-warehouses/reports-warehouses-input-output-inventory/api-service/index'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_GETTER,\r\n PRODUCT_LISTS_GETTER,\r\n PRODUCT_CAT_LISTS_GETTER,\r\n PRINT_INPUT_OUTPUT_INVENTORY_GETTER,\r\n WAREHOUSE_TYPES_GETTER,\r\n // MUTATIONS\r\n CLEAR_ALL_PRODUCT_LISTS_CHECKED,\r\n // ACTIONS\r\n GET_REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_ACTION,\r\n EXPORT_REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_ACTION,\r\n GET_PRODUCT_LISTS_ACTIONS,\r\n GET_PRODUCT_CAT_LISTS_ACTIONS,\r\n PRINT_INPUT_OUTPUT_INVENTORY_ACTION,\r\n GET_WAREHOUSE_TYPES_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n\r\n state: {\r\n warehousesInput: {},\r\n productData: {},\r\n productCatData: [],\r\n selectedProductRow: [],\r\n printInputOutputData: [],\r\n warehouseTypes: [],\r\n },\r\n\r\n getters: {\r\n [REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_GETTER](state) {\r\n return state.warehousesInput\r\n },\r\n [PRODUCT_LISTS_GETTER](state) {\r\n return state.productData\r\n },\r\n [PRODUCT_CAT_LISTS_GETTER](state) {\r\n return state.productCatData\r\n },\r\n [PRINT_INPUT_OUTPUT_INVENTORY_GETTER](state) {\r\n return state.printInputOutputData\r\n },\r\n [WAREHOUSE_TYPES_GETTER](state) {\r\n return state.warehouseTypes\r\n },\r\n },\r\n\r\n mutations: {\r\n [CLEAR_ALL_PRODUCT_LISTS_CHECKED](state) {\r\n state.selectedProductRow = []\r\n },\r\n },\r\n\r\n actions: {\r\n [GET_REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_ACTION]({ state }, val) {\r\n ReportsWarehousesInputOutputInventoryServices\r\n .getWarehousesInputOutputInventory(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.warehousesInput = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_ACTION]({}, val) {\r\n ReportsWarehousesInputOutputInventoryServices\r\n .exportWarehousesInputOutputInventory(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Xuất nhập tồn_Filled_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCT_LISTS_ACTIONS]({ state }, val) {\r\n ReportsWarehousesInputOutputInventoryServices\r\n .getProductLists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PRODUCT_CAT_LISTS_ACTIONS]({ state }, val) {\r\n ReportsWarehousesInputOutputInventoryServices\r\n .getProductCatlists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productCatData = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_INPUT_OUTPUT_INVENTORY_ACTION]({ state }, val) {\r\n ReportsWarehousesInputOutputInventoryServices\r\n .printOutInputInventory(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printInputOutputData = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_WAREHOUSE_TYPES_ACTION]({ state }, val) {\r\n ReportsWarehousesInputOutputInventoryServices\r\n .getWarehouseTypes(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.warehouseTypes = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const REPORTS = '/reports'\r\nconst SALES = '/sales'\r\nconst PRODUCTS = '/products'\r\nexport const getReportExchangeDamagedGoodListEndpoint = `${REPORTS}/exchange-trans`\r\nexport const getReasonExchangeEndpoint = `${REPORTS}/exchange-trans/reason-exchange`\r\nexport const exportReportExchangeDamagedGoodsEndpoint = `${REPORTS}/exchange-trans/excel`\r\nexport const getProductCatListsEndpoint = `${SALES}${PRODUCTS}/all-product-cat`\r\nexport const getProductListsEndpoint = `${SALES}${PRODUCTS}/choose-product`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getReportExchangeDamagedGoodListEndpoint,\r\n getReasonExchangeEndpoint,\r\n exportReportExchangeDamagedGoodsEndpoint,\r\n getProductCatListsEndpoint,\r\n getProductListsEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getReportExchangeDamagedGoodList(args) {\r\n return axios.get(getReportExchangeDamagedGoodListEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getReasonExchange(args) {\r\n return axios.get(getReasonExchangeEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportReportExchangeDamagedGoods(args) {\r\n return axios.get(exportReportExchangeDamagedGoodsEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n getProductLists(args) {\r\n return axios.get(getProductListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductCatlists(args) {\r\n return axios.get(getProductCatListsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n\r\n}\r\n","import reportExchangeDamagedGoodsService from '@/views/reports/reports-warehouses/reports-warehouses-exchange-damaged-goods/api-service'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n REPORT_EXCHANGE_DAMAGED_GOODS_GETTER,\r\n REASON_EXCHANGE_DAMAGED_GOODS_GETTER,\r\n PRODUCT_LIST_GETTER,\r\n PRODUCT_LIST_PAGINATION_GETTER,\r\n PRODUCT_CAT_LIST_GETTER,\r\n // ACTIONS\r\n GET_REPORT_EXCHANGE_DAMAGED_GOODS_ACTION,\r\n GET_REASON_EXCHANGE_DAMAGED_GOODS_ACTION,\r\n EXPORT_REPORT_EXCHANGE_DAMAGED_GOODS_ACTION,\r\n GET_PRODUCT_LIST_ACTION,\r\n GET_PRODUCT_CAT_LIST_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n\r\n // START - STATE\r\n state: {\r\n reportExchangeDamagedGoods: {},\r\n reportReasonExchangeDamagedGoods: [],\r\n productList: [],\r\n productListPagination: {},\r\n productCatList: [],\r\n },\r\n\r\n // START - GETTERS\r\n getters: {\r\n [REPORT_EXCHANGE_DAMAGED_GOODS_GETTER](state) {\r\n return state.reportExchangeDamagedGoods\r\n },\r\n [REASON_EXCHANGE_DAMAGED_GOODS_GETTER](state) {\r\n return state.reportReasonExchangeDamagedGoods\r\n },\r\n [PRODUCT_LIST_GETTER](state) {\r\n return state.productList\r\n },\r\n [PRODUCT_LIST_PAGINATION_GETTER](state) {\r\n return state.productListPagination\r\n },\r\n [PRODUCT_CAT_LIST_GETTER](state) {\r\n return state.productCatList\r\n },\r\n },\r\n\r\n // START - MUTATIONS\r\n mutations: {},\r\n\r\n // START - ACTIONS\r\n actions: {\r\n [GET_REPORT_EXCHANGE_DAMAGED_GOODS_ACTION]({ state }, val) {\r\n reportExchangeDamagedGoodsService\r\n .getReportExchangeDamagedGoodList(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportExchangeDamagedGoods = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_REASON_EXCHANGE_DAMAGED_GOODS_ACTION]({ state }, val) {\r\n reportExchangeDamagedGoodsService\r\n .getReasonExchange(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportReasonExchangeDamagedGoods = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_EXCHANGE_DAMAGED_GOODS_ACTION]({ }, val) {\r\n reportExchangeDamagedGoodsService\r\n .exportReportExchangeDamagedGoods(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `BC đổi hàng hỏng_Filled_${moment().format('YYYYMMDD')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 1000)}.xlsx`\r\n const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCT_LIST_ACTION]({ state }, val) {\r\n reportExchangeDamagedGoodsService\r\n .getProductLists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productList = res.data.content\r\n state.productListPagination = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCT_CAT_LIST_ACTION]({ state }, val) {\r\n reportExchangeDamagedGoodsService\r\n .getProductCatlists(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productCatList = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const REPORT = '/reports'\r\nconst CUSTOMER = '/customers'\r\nconst COMMON = '/commons'\r\nconst AREA = '/areas'\r\n\r\n// Reports\r\nexport const getReportsCustomersEndpoint = `${REPORT}${CUSTOMER}/trade`\r\nexport const exportReportsCustomersEndpoint = `${REPORT}${CUSTOMER}/trade/excel`\r\nexport const getCustomerTypesEndpoint = `${CUSTOMER}/customer-types`\r\n\r\nexport const getShopLocationsSearchEndpoint = `${COMMON}${AREA}/districts/index-customers`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n // Reports\r\n getReportsCustomersEndpoint,\r\n exportReportsCustomersEndpoint,\r\n getCustomerTypesEndpoint,\r\n getShopLocationsSearchEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n // Reports\r\n getReportsCustomers(args) {\r\n return axios.get(getReportsCustomersEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportReportsCustomers(args) {\r\n return axios.get(exportReportsCustomersEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n getCustomerTypes(args) {\r\n return axios.get(getCustomerTypesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getShopLocationsSearch(args) {\r\n return axios.get(getShopLocationsSearchEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import ReportsService from '@/views/reports/reports-customers/reports-customers/api-service/index'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n REPORT_CUSTOMERS_GETTER,\r\n CUSTOMER_TYPES_GETTER,\r\n SHOP_LOCATIONS_SEARCH_GETTER,\r\n\r\n // ACTIONS\r\n GET_REPORT_CUSTOMERS_ACTION,\r\n EXPORT_REPORT_CUSTOMERS_ACTION,\r\n GET_CUSTOMER_TYPES_ACTION,\r\n GET_SHOP_LOCATIONS_SEARCH_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n // State\r\n state: {\r\n reportCustomerData: {},\r\n customerTypes: [],\r\n shopLocationsSearch: [],\r\n },\r\n // Getters\r\n getters: {\r\n [REPORT_CUSTOMERS_GETTER](state) {\r\n return state.reportCustomerData\r\n },\r\n [CUSTOMER_TYPES_GETTER](state) {\r\n return state.customerTypes\r\n },\r\n [SHOP_LOCATIONS_SEARCH_GETTER](state) {\r\n return state.shopLocationsSearch\r\n },\r\n },\r\n // Actions\r\n actions: {\r\n [GET_REPORT_CUSTOMERS_ACTION]({ state }, val) {\r\n ReportsService\r\n .getReportsCustomers(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportCustomerData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_CUSTOMERS_ACTION]({}, val) {\r\n ReportsService\r\n .exportReportsCustomers(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Bao_cao_khach_hang_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_CUSTOMER_TYPES_ACTION]({ state }, val) {\r\n ReportsService\r\n .getCustomerTypes(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.customerTypes = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_SHOP_LOCATIONS_SEARCH_ACTION]({ state }, val) {\r\n ReportsService\r\n .getShopLocationsSearch(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.shopLocationsSearch = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const reports = '/reports'\r\nconst customers = '/customers'\r\nexport const getReportsCustomersNonTransactionalEndpoint = `${reports}${customers}/not-trade`\r\nexport const exportReportsCustomersNonTransactionalEndpoint = `${reports}${customers}/not-trade/excel`\r\nexport const printReportsCustomersNonTransactionalEndpoint = `${reports}${customers}/print`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getReportsCustomersNonTransactionalEndpoint,\r\n exportReportsCustomersNonTransactionalEndpoint,\r\n printReportsCustomersNonTransactionalEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getReportsCustomersNonTransactional(args) {\r\n return axios.get(getReportsCustomersNonTransactionalEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportReportsCustomersNonTransactional(args) {\r\n return axios.get(exportReportsCustomersNonTransactionalEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n printReportsCustomersNonTransactional(args) {\r\n return axios.get(printReportsCustomersNonTransactionalEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import toasts from '@/@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport ReportsService from '@/views/reports/reports-customers/reports-customers-non-transactional/api-service/index'\r\nimport {\r\n REPORT_CUSTOMERS_NON_TRANSACTIONAL_GETTER,\r\n PRINT_REPORT_CUSTOMERS_NON_TRANSACTIONAL_GETTER,\r\n GET_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION,\r\n EXPORT_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION,\r\n PRINT_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n // State\r\n state: {\r\n reportCustomersData: {},\r\n printCustomersNotTradeData: {},\r\n },\r\n // Getters\r\n getters: {\r\n [REPORT_CUSTOMERS_NON_TRANSACTIONAL_GETTER](state) {\r\n return state.reportCustomersData\r\n },\r\n [PRINT_REPORT_CUSTOMERS_NON_TRANSACTIONAL_GETTER](state) {\r\n return state.printCustomersNotTradeData\r\n },\r\n },\r\n // Mutations\r\n mutations: {\r\n },\r\n // Actions\r\n actions: {\r\n [GET_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION]({ state }, val) {\r\n ReportsService\r\n .getReportsCustomersNonTransactional(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportCustomersData = res.data\r\n } else {\r\n throw new Error(res.statusValue)\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(error.message)\r\n })\r\n },\r\n [EXPORT_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION]({ }, val) {\r\n ReportsService\r\n .exportReportsCustomersNonTransactional(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n const fileName = `Bao_cao_khach_hang_khong_giao_dich_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(error.message)\r\n })\r\n },\r\n [PRINT_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION]({ state }, val) {\r\n ReportsService\r\n .printReportsCustomersNonTransactional(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printCustomersNotTradeData = res.data\r\n } else {\r\n throw new Error(res.statusValue)\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(error.message)\r\n })\r\n },\r\n },\r\n}\r\n","const REPORTS = '/reports'\r\nconst CUSTOMERS = '/customers'\r\n\r\n// REPORT\r\nexport const getReportSalesQuantityReceiptsEndpoint = `${REPORTS}${CUSTOMERS}/quantity`\r\nexport const exportReportSalesQuantityReceiptsEndpoint = `${REPORTS}${CUSTOMERS}/quantity/excel`\r\n// CUSTOMER\r\nexport const getCustomerTypesEndpoint = `${CUSTOMERS}/customer-types`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getCustomerTypesEndpoint,\r\n getReportSalesQuantityReceiptsEndpoint,\r\n exportReportSalesQuantityReceiptsEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getCustomerTypes(args) {\r\n return axios.get(getCustomerTypesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getReportSalesQuantityReceipts(args) {\r\n return axios.get(getReportSalesQuantityReceiptsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportReportSalesQuantityReceipts(args) {\r\n return axios.get(exportReportSalesQuantityReceiptsEndpoint, {\r\n responseType: 'blob',\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import reportSalesService from '@/views/reports/reports-sales/reports-sales-amount-receipt-per-customers/api-service'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n REPORT_SALES__QUANTITY_SALE_RECEIPT_GETTER,\r\n REPORT_SALES_CUSTOMER_TYPES_GETTER,\r\n REPORT_SALES_QUANTITY_SALE_RECEIPT_CONTENT_GETTER,\r\n // ACTIONS\r\n GET_CUSTOMERS_TYPES_ACTION,\r\n GET_REPORT_SALES_QUANTITY_SALE_RECEIPTS_ACTION,\r\n EXPORT_REPORT_SALES_QUANTITY_RECEIPT_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n\r\n // STATE\r\n state: {\r\n reportSalesQuantityReceipt: [],\r\n reportSalesQuantityReceiptContent: [],\r\n reportSalesCustomerType: [],\r\n },\r\n\r\n // GETTERS\r\n getters: {\r\n [REPORT_SALES_CUSTOMER_TYPES_GETTER](state) {\r\n return state.reportSalesCustomerType\r\n },\r\n [REPORT_SALES__QUANTITY_SALE_RECEIPT_GETTER](state) {\r\n return state.reportSalesQuantityReceipt\r\n },\r\n [REPORT_SALES_QUANTITY_SALE_RECEIPT_CONTENT_GETTER](state) {\r\n return state.reportSalesQuantityReceiptContent\r\n },\r\n },\r\n\r\n // ACTIONS\r\n actions: {\r\n [GET_REPORT_SALES_QUANTITY_SALE_RECEIPTS_ACTION]({ state }, val) {\r\n reportSalesService\r\n .getReportSalesQuantityReceipts(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportSalesQuantityReceipt = res.data\r\n // if (res.data) {\r\n state.reportSalesQuantityReceiptContent = res.data\r\n // return\r\n // }\r\n // state.reportSalesQuantityReceiptContent = []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_CUSTOMERS_TYPES_ACTION]({ state }, val) {\r\n reportSalesService\r\n .getCustomerTypes(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportSalesCustomerType = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_SALES_QUANTITY_RECEIPT_ACTION]({ }, val) {\r\n reportSalesService\r\n .exportReportSalesQuantityReceipts(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Báo cáo bán hàng theo hóa đơn_Filled_${moment().format('YYYYMMDD')}_${moment().locale('vi').format('HHmmss')}.xlsx`\r\n const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const REPORT = '/reports'\r\nconst CUSTOMER = '/customers'\r\nconst SALE_CAT = '/sale-category'\r\n\r\n// Reports\r\nexport const getReportsSalesCatEndpoint = `${REPORT}${SALE_CAT}`\r\nexport const exportReportsSalesCatEndpoint = `${REPORT}${SALE_CAT}/excel`\r\nexport const getCustomerTypesEndpoint = `${CUSTOMER}/customer-types`\r\nexport const printReportEndpoint = `${REPORT}${SALE_CAT}/print`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n // Reports\r\n getReportsSalesCatEndpoint,\r\n exportReportsSalesCatEndpoint,\r\n getCustomerTypesEndpoint,\r\n printReportEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n // Reports\r\n getReportsSalesCat(args) {\r\n return axios.get(getReportsSalesCatEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportReportsSalesCat(args) {\r\n return axios.get(exportReportsSalesCatEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n getCustomerTypes(args) {\r\n return axios.get(getCustomerTypesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n printReport(args) {\r\n return axios.get(printReportEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import ReportsService from '@/views/reports/reports-sales/reports-sales-cat/api-service/index'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n REPORT_SALES_CAT_GETTER,\r\n CUSTOMER_TYPES_GETTER,\r\n PRINT_REPORT_GETTER,\r\n\r\n // ACTIONS\r\n GET_REPORT_SALES_CAT_ACTION,\r\n EXPORT_REPORT_SALES_CAT_ACTION,\r\n GET_CUSTOMER_TYPES_ACTION,\r\n PRINT_REPORT_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n // State\r\n state: {\r\n reportCustomerData: {},\r\n customerTypes: [],\r\n shopLocationsSearch: [],\r\n printReportData: [],\r\n },\r\n // Getters\r\n getters: {\r\n [REPORT_SALES_CAT_GETTER](state) {\r\n return state.reportCustomerData\r\n },\r\n [CUSTOMER_TYPES_GETTER](state) {\r\n return state.customerTypes\r\n },\r\n [PRINT_REPORT_GETTER](state) { // temp\r\n return state.printReportData\r\n },\r\n },\r\n // Actions\r\n actions: {\r\n [GET_REPORT_SALES_CAT_ACTION]({ state }, val) {\r\n ReportsService\r\n .getReportsSalesCat(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportCustomerData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_SALES_CAT_ACTION]({}, val) {\r\n ReportsService\r\n .exportReportsSalesCat(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Báo cáo bán hàng theo CAT_Filled_${moment().format('YYYYMMDD')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 1000)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_CUSTOMER_TYPES_ACTION]({ state }, val) {\r\n ReportsService\r\n .getCustomerTypes(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.customerTypes = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_REPORT_ACTION]({ state }, val) {\r\n ReportsService\r\n .printReport(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printReportData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const REPORTS = '/reports'\r\nconst SELLS = '/sells'\r\nconst SALES = '/sales'\r\nconst PRODUCTS = '/products'\r\nconst COMMONS = '/commons'\r\n\r\nexport const getReportSalesEndpoint = `${REPORTS}${SELLS}`\r\nexport const exportExcelEndpoint = `${REPORTS}${SELLS}/export`\r\nexport const getProductCatsEndpoint = `${SALES}${PRODUCTS}/all-product-cat`\r\nexport const getProductsEndpoint = `${SALES}${PRODUCTS}/choose-product`\r\nexport const getBillCollectorsEndpoint = `${REPORTS}${SELLS}/get-data-user`\r\nexport const printReportSalesEndpoint = `${REPORTS}${SELLS}/print`\r\nexport const getSalesChannelEndpoint = `${COMMONS}/apparams/type/SALEMT_PROMOTION_OBJECT`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getReportSalesEndpoint,\r\n exportExcelEndpoint,\r\n getProductCatsEndpoint,\r\n getProductsEndpoint,\r\n getBillCollectorsEndpoint,\r\n printReportSalesEndpoint,\r\n getSalesChannelEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getReportSales(args) {\r\n return axios.get(getReportSalesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportReportSales(args) {\r\n return axios.get(exportExcelEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n })\r\n },\r\n getProducts(args) {\r\n return axios.get(getProductsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getProductCats(args) {\r\n return axios.get(getProductCatsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getBillCollectors(args) {\r\n return axios.get(getBillCollectorsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n printReportSales(args) {\r\n return axios.get(printReportSalesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getSalesChannel(args) {\r\n return axios.get(getSalesChannelEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import ReportsSalesServices from '@/views/reports/reports-sales/reports-sales/api-service/index'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n REPORT_SALES_GETTER,\r\n PRODUCTS_GETTER,\r\n PRODUCT_CATS_GETTER,\r\n BILL_COLLECTORS_GETTER,\r\n PRINT_REPORT_SALES_GETTER,\r\n SALES_CHANNEL_GETTER,\r\n // MUTATIONS\r\n CLEAR_ALL_PRODUCTS_CHECKED_MUTATION,\r\n // ACTIONS\r\n GET_REPORT_SALES_ACTION,\r\n EXPORT_REPORT_SALES_ACTION,\r\n GET_PRODUCTS_ACTION,\r\n GET_PRODUCT_CATS_ACTION,\r\n GET_BILL_COLLECTORS_ACTION,\r\n PRINT_REPORT_SALES_ACTION,\r\n GET_SALES_CHANNEL_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n\r\n state: {\r\n reportSales: {},\r\n productData: {},\r\n productCatData: [],\r\n selectedProductRow: [],\r\n billCollectors: [],\r\n printReportSalesData: {},\r\n salesChannel: [],\r\n },\r\n\r\n getters: {\r\n [REPORT_SALES_GETTER](state) {\r\n return state.reportSales\r\n },\r\n [PRODUCTS_GETTER](state) {\r\n return state.productData\r\n },\r\n [PRODUCT_CATS_GETTER](state) {\r\n return state.productCatData\r\n },\r\n [BILL_COLLECTORS_GETTER](state) {\r\n return state.billCollectors\r\n },\r\n [PRINT_REPORT_SALES_GETTER](state) {\r\n return state.printReportSalesData\r\n },\r\n [SALES_CHANNEL_GETTER](state) {\r\n return state.salesChannel\r\n },\r\n },\r\n\r\n mutations: {\r\n [CLEAR_ALL_PRODUCTS_CHECKED_MUTATION](state) {\r\n state.selectedProductRow = []\r\n },\r\n },\r\n\r\n actions: {\r\n [GET_REPORT_SALES_ACTION]({ state }, val) {\r\n ReportsSalesServices\r\n .getReportSales(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportSales = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_SALES_ACTION]({}, val) {\r\n ReportsSalesServices\r\n .exportReportSales(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Báo cáo bán hàng_Filled_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 900 + 100)}.xlsx`\r\n const blob = new Blob([res], { type: 'data:application/xlsx' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_PRODUCTS_ACTION]({ state }, val) {\r\n ReportsSalesServices\r\n .getProducts(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productData = res.data || {}\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_PRODUCT_CATS_ACTION]({ state }, val) {\r\n ReportsSalesServices\r\n .getProductCats(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.productCatData = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [GET_BILL_COLLECTORS_ACTION]({ state }, val) {\r\n ReportsSalesServices\r\n .getBillCollectors(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.billCollectors = res.data || []\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [PRINT_REPORT_SALES_ACTION]({ state }, val) {\r\n ReportsSalesServices\r\n .printReportSales(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printReportSalesData = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_SALES_CHANNEL_ACTION]({ state }, val) {\r\n ReportsSalesServices\r\n .getSalesChannel(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.salesChannel = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const REPORTS = '/reports'\r\nconst CUSTOMERS = '/customers'\r\n\r\n// REPORT\r\nexport const getReportSalesAmountEndpoint = `${REPORTS}/${CUSTOMERS}/sales/amount`\r\nexport const exportReportSalesExcelEndpoint = `${REPORTS}/${CUSTOMERS}/sales/amount/excel`\r\n// CUSTOMER\r\nexport const getCustomerTypesEndpoint = `${CUSTOMERS}/customer-types`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getCustomerTypesEndpoint,\r\n getReportSalesAmountEndpoint,\r\n exportReportSalesExcelEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getCustomerTypes(args) {\r\n return axios.get(getCustomerTypesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getReportSalesAmount(args) {\r\n return axios.get(getReportSalesAmountEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportReportSalesExcel(args) {\r\n return axios.get(exportReportSalesExcelEndpoint, {\r\n responseType: 'blob',\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import reportSalesService from '@/views/reports/reports-sales/reports-sales-sale-receipt-per-customer/api-service'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n REPORT_SALES_SALE_RECEIPT_GETTER,\r\n REPORT_SALES_CUSTOMER_TYPES_GETTER,\r\n // ACTIONS\r\n GET_CUSTOMERS_TYPES_ACTION,\r\n GET_SALE_RECEIPTS_ACTION,\r\n EXPORT_REPORT_SALE_RECEIPT_AMOUNT_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n\r\n // STATE\r\n state: {\r\n reportSalesSaleReceipt: [],\r\n reportSalesCustomerType: [],\r\n },\r\n\r\n // GETTERS\r\n getters: {\r\n [REPORT_SALES_CUSTOMER_TYPES_GETTER](state) {\r\n return state.reportSalesCustomerType\r\n },\r\n [REPORT_SALES_SALE_RECEIPT_GETTER](state) {\r\n return state.reportSalesSaleReceipt\r\n },\r\n\r\n },\r\n\r\n // ACTIONS\r\n actions: {\r\n [GET_SALE_RECEIPTS_ACTION]({ state }, val) {\r\n reportSalesService\r\n .getReportSalesAmount(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportSalesSaleReceipt = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_CUSTOMERS_TYPES_ACTION]({ state }, val) {\r\n reportSalesService\r\n .getCustomerTypes(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportSalesCustomerType = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_SALE_RECEIPT_AMOUNT_ACTION]({ }, val) {\r\n reportSalesService\r\n .exportReportSalesExcel(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Bao_cao_doanh_so_theo_hoa_don_Filled_${moment().format('YYYYMMDD')}_${moment().locale('vi').format('HHmmss')}.xlsx`\r\n const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const REPORTS = '/reports'\r\n\r\n// REPORT\r\nexport const getDeliveryTypesEndpoint = `${REPORTS}/delivery-type/type`\r\nexport const getReportSalesOnDeliveryTypeEndpoint = `${REPORTS}/delivery-type`\r\nexport const exportReportSalesOnDeliveryTypeEndpoint = `${REPORTS}/delivery-type/excel`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getDeliveryTypesEndpoint,\r\n getReportSalesOnDeliveryTypeEndpoint,\r\n exportReportSalesOnDeliveryTypeEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getDeliveryTypes(args) {\r\n return axios.get(getDeliveryTypesEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n getReportSalesOnDeliveryType(args) {\r\n return axios.get(getReportSalesOnDeliveryTypeEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportReportSalesOnDeliveryType(args) {\r\n return axios.get(exportReportSalesOnDeliveryTypeEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n config: {\r\n header: {\r\n 'Content-Type': 'application/json',\r\n },\r\n },\r\n })\r\n },\r\n}\r\n","import reportSalesSaleOnDeliveryTypeService from '@/views/reports/reports-sales/reports-sales-sale-receipt-on-delivery-type/api-service'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n REPORT_SALES_SALE_ON_DELIVERY_TYPE_GETTER,\r\n REPORT_SALES_DELIVERY_TYPES_CONTENT_GETTER,\r\n REPORT_SALES_DELIVERY_TYPES_GETTER,\r\n // ACTIONS\r\n GET_SALE_ON_DELIVERY_TYPE_ACTION,\r\n GET_SALES_DELIVERY_TYPES_ACTION,\r\n EXPORT_REPORT_SALE_ON_DELIVERY_TYPE_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n\r\n // STATE\r\n state: {\r\n reportSalesSaleOnDeliveryType: [],\r\n reportSalesSaleOnDeliveryTypeContent: [],\r\n reportSalesDeliveryType: [],\r\n },\r\n\r\n // GETTERS\r\n getters: {\r\n [REPORT_SALES_SALE_ON_DELIVERY_TYPE_GETTER](state) {\r\n return state.reportSalesSaleOnDeliveryType\r\n },\r\n [REPORT_SALES_DELIVERY_TYPES_CONTENT_GETTER](state) {\r\n return state.reportSalesSaleOnDeliveryTypeContent\r\n },\r\n [REPORT_SALES_DELIVERY_TYPES_GETTER](state) {\r\n return state.reportSalesDeliveryType\r\n },\r\n },\r\n\r\n // ACTIONS\r\n actions: {\r\n [GET_SALE_ON_DELIVERY_TYPE_ACTION]({ state }, val) {\r\n reportSalesSaleOnDeliveryTypeService\r\n .getReportSalesOnDeliveryType(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportSalesSaleOnDeliveryType = res.data\r\n state.reportSalesSaleOnDeliveryTypeContent = res.data.response.content\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [GET_SALES_DELIVERY_TYPES_ACTION]({ state }, val) {\r\n reportSalesSaleOnDeliveryTypeService\r\n .getDeliveryTypes(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportSalesDeliveryType = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_SALE_ON_DELIVERY_TYPE_ACTION]({ }, val) {\r\n reportSalesSaleOnDeliveryTypeService\r\n .exportReportSalesOnDeliveryType(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Bao_cao_doanh_so_theo_loai_giao_hang_${moment().format('YYYYMMDD')}_${moment().locale('vi').format('HHmmss')}.xlsx`\r\n const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const REPORTS = '/reports'\r\n\r\nexport const getInputReceiptDetailsEndpoint = `${REPORTS}/entryMenuDetails`\r\nexport const exportInputReceiptDetailExcelEndpoint = `${REPORTS}/entryMenuDetails/export`\r\nexport const printInputReceiptDetailsEndpoint = `${REPORTS}/entryMenuDetails/print`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getInputReceiptDetailsEndpoint,\r\n exportInputReceiptDetailExcelEndpoint,\r\n printInputReceiptDetailsEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getInputReceiptDetails(args) {\r\n return axios.get(getInputReceiptDetailsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportInputReceiptDetailExcel(args) {\r\n return axios.get(exportInputReceiptDetailExcelEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n config: {\r\n header: {\r\n 'Content-Type': 'application/json',\r\n },\r\n },\r\n })\r\n },\r\n printInputReceiptDetails(args) {\r\n return axios.get(printInputReceiptDetailsEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n}\r\n","import ReportsPurchasesSerivce from '@/views/reports/reports-purchases/api-service'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n REPORT_INPUT_RECEIPT_DETAILS_GETTER,\r\n PRINT_REPORT_INPUT_RECEIPT_DETAILS_GETTER,\r\n // ACTIONS\r\n GET_REPORT_INPUT_RECEIPT_DETAILS_ACTION,\r\n EXPORT_REPORT_INPUT_RECEIPT_DETAILS_ACTION,\r\n PRINT_REPORT_INPUT_RECEIPT_DETAILS_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n // State\r\n state: {\r\n reportInputReceiptDetails: {},\r\n printInputReceiptDetails: [],\r\n },\r\n // Getters\r\n getters: {\r\n [REPORT_INPUT_RECEIPT_DETAILS_GETTER](state) {\r\n return state.reportInputReceiptDetails || {}\r\n },\r\n [PRINT_REPORT_INPUT_RECEIPT_DETAILS_GETTER](state) {\r\n return state.printInputReceiptDetails || []\r\n },\r\n },\r\n\r\n // Actions\r\n actions: {\r\n [GET_REPORT_INPUT_RECEIPT_DETAILS_ACTION]({ state }, val) {\r\n ReportsPurchasesSerivce\r\n .getInputReceiptDetails(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportInputReceiptDetails = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_INPUT_RECEIPT_DETAILS_ACTION]({ }, val) {\r\n ReportsPurchasesSerivce\r\n .exportInputReceiptDetailExcel(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Bảng kê chi tiết hóa đơn nhập hàng_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 1000)}.xlsx`\r\n const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [PRINT_REPORT_INPUT_RECEIPT_DETAILS_ACTION]({ state }, val) {\r\n ReportsPurchasesSerivce\r\n .printInputReceiptDetails(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printInputReceiptDetails = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const REPORTS = '/reports'\r\n\r\nexport const getReportVouchersUsedEndpoint = `${REPORTS}/vouchers`\r\nexport const exportVouchersExcelEndpoint = `${REPORTS}/vouchers/excel`\r\n","import axios from '@axios'\r\nimport { formatURLParams } from '@/@core/utils/utils'\r\nimport {\r\n getReportVouchersUsedEndpoint,\r\n exportVouchersExcelEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n getReportVouchersUsed(args) {\r\n return axios.get(getReportVouchersUsedEndpoint, {\r\n params: formatURLParams(args),\r\n })\r\n },\r\n exportVouchersExcelEndpoint(args) {\r\n return axios.get(exportVouchersExcelEndpoint, {\r\n params: formatURLParams(args),\r\n responseType: 'blob',\r\n config: {\r\n header: {\r\n 'Content-Type': 'application/json',\r\n },\r\n },\r\n })\r\n },\r\n}\r\n","import ReportVouchersService from '@/views/reports/reports-vouchers/api-service'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport FileSaver from 'file-saver'\r\nimport moment from 'moment'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n // GETTERS\r\n REPORT_VOUCHERS_USED_GETTER,\r\n // ACTIONS\r\n GET_REPORT_VOUCHERS_USED_ACTION,\r\n EXPORT_REPORT_VOUCHERS_USED_ACTION,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n // State\r\n state: {\r\n reportVouchersUsed: {},\r\n },\r\n // Getters\r\n getters: {\r\n [REPORT_VOUCHERS_USED_GETTER](state) {\r\n return state.reportVouchersUsed || {}\r\n },\r\n },\r\n\r\n // Actions\r\n actions: {\r\n [GET_REPORT_VOUCHERS_USED_ACTION]({ state }, val) {\r\n ReportVouchersService\r\n .getReportVouchersUsed(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.reportVouchersUsed = res.data\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n [EXPORT_REPORT_VOUCHERS_USED_ACTION]({ }, val) {\r\n ReportVouchersService\r\n .exportVouchersExcelEndpoint(val)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.type === 'application/json') {\r\n throw new Error('Không có dữ liệu xuất')\r\n }\r\n\r\n const fileName = `Báo cáo danh sách voucher_${moment().format('DDMMYYYY')}_${moment().locale('vi').format('HHmmss')}_${Math.floor(Math.random() * 1000)}.xlsx`\r\n const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' })\r\n FileSaver.saveAs(blob, fileName)\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","const commons = '/commons'\r\nconst printer = '/printer-client'\r\nexport const crudPrinterClientEndpoint = `${commons}${printer}`\r\n","import axios from '@axios'\r\nimport {\r\n crudPrinterClientEndpoint,\r\n} from './defaultConfig'\r\n\r\nexport default {\r\n\r\n getPrinterClient(args) {\r\n return axios.get(`${crudPrinterClientEndpoint}/${args.clientId}`, args)\r\n },\r\n\r\n createPrinterClient(args) {\r\n return axios.post(crudPrinterClientEndpoint, args)\r\n },\r\n\r\n updatePrinterClient(args) {\r\n return axios.put(`${crudPrinterClientEndpoint}/${args.id}`, args)\r\n },\r\n}\r\n","import PrintService from '@/views/auth/printer-configuration-modal/api-service'\r\nimport toasts from '@core/utils/toasts/toasts'\r\nimport { notificationResponseMessage } from '@core/utils/utils'\r\n\r\nimport {\r\n PRINTER_CLIENT_GETTER,\r\n GET_PRINTER_CLIENT_ACTIONS,\r\n CREATE_PRINTER_CLIENT_ACTIONS,\r\n UPDATE_PRINTER_CLIENT_ACTIONS,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n // STATE\r\n state: {\r\n printConfigData: [],\r\n },\r\n getters: {\r\n [PRINTER_CLIENT_GETTER](state) {\r\n return state.printConfigData\r\n },\r\n },\r\n // ACTIONS\r\n actions: {\r\n [GET_PRINTER_CLIENT_ACTIONS]({ state }, val) {\r\n PrintService\r\n .getPrinterClient(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n state.printConfigData = res.data\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [CREATE_PRINTER_CLIENT_ACTIONS]({}, val) {\r\n PrintService\r\n .createPrinterClient(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success('Lưu cấu hình in thành công')\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n\r\n [UPDATE_PRINTER_CLIENT_ACTIONS]({}, val) {\r\n PrintService\r\n .updatePrinterClient(val.data)\r\n .then(response => response.data)\r\n .then(res => {\r\n if (res.success) {\r\n toasts.success('Cập nhật cấu hình in thành công')\r\n val.onSuccess()\r\n } else {\r\n toasts.error(notificationResponseMessage(res.statusCode, res.statusValue))\r\n }\r\n })\r\n .catch(error => {\r\n toasts.error(notificationResponseMessage(null, error.message))\r\n })\r\n },\r\n },\r\n}\r\n","import { $themeBreakpoints } from '@themeConfig'\r\nimport {\r\n // GETTERS\r\n LOGIN_STATUS_GETTER,\r\n // ACTIONS\r\n UPDATE_LOGIN_STATUS_ACTIONS,\r\n} from './type'\r\n\r\nexport default {\r\n namespaced: true,\r\n state: {\r\n isLoading: false,\r\n loginStatus: false,\r\n windowWidth: 0,\r\n shallShowOverlay: false,\r\n },\r\n getters: {\r\n currentBreakPoint: state => {\r\n const { windowWidth } = state\r\n if (windowWidth >= $themeBreakpoints.xl) return 'xl'\r\n if (windowWidth >= $themeBreakpoints.lg) return 'lg'\r\n if (windowWidth >= $themeBreakpoints.md) return 'md'\r\n if (windowWidth >= $themeBreakpoints.sm) return 'sm'\r\n return 'xs'\r\n },\r\n [LOGIN_STATUS_GETTER](state) {\r\n return state.loginStatus\r\n },\r\n },\r\n mutations: {\r\n UPDATE_IS_LOADING(state, val) {\r\n state.isLoading = val\r\n },\r\n [UPDATE_LOGIN_STATUS_ACTIONS](state, val) {\r\n state.loginStatus = val\r\n },\r\n UPDATE_WINDOW_WIDTH(state, val) {\r\n state.windowWidth = val\r\n },\r\n TOGGLE_OVERLAY(state, val) {\r\n state.shallShowOverlay = val !== undefined ? val : !state.shallShowOverlay\r\n },\r\n },\r\n actions: {},\r\n}\r\n","import { $themeConfig } from '@themeConfig'\r\n\r\nexport default {\r\n namespaced: true,\r\n state: {\r\n layout: {\r\n isRTL: $themeConfig.layout.isRTL,\r\n skin: localStorage.getItem('vuexy-skin') || $themeConfig.layout.skin,\r\n routerTransition: $themeConfig.layout.routerTransition,\r\n type: $themeConfig.layout.type,\r\n contentWidth: $themeConfig.layout.contentWidth,\r\n menu: {\r\n hidden: $themeConfig.layout.menu.hidden,\r\n type: $themeConfig.layout.menu.type,\r\n },\r\n navbar: {\r\n type: $themeConfig.layout.navbar.type,\r\n backgroundColor: $themeConfig.layout.navbar.backgroundColor,\r\n },\r\n footer: {\r\n type: $themeConfig.layout.footer.type,\r\n },\r\n },\r\n },\r\n getters: {},\r\n mutations: {\r\n TOGGLE_RTL(state) {\r\n state.layout.isRTL = !state.layout.isRTL\r\n document.documentElement.setAttribute('dir', state.layout.isRTL ? 'rtl' : 'ltr')\r\n },\r\n UPDATE_SKIN(state, skin) {\r\n state.layout.skin = skin\r\n\r\n // Update value in localStorage\r\n localStorage.setItem('vuexy-skin', skin)\r\n\r\n // Update DOM for dark-layout\r\n if (skin === 'dark') document.body.classList.add('dark-layout')\r\n else if (document.body.className.match('dark-layout')) document.body.classList.remove('dark-layout')\r\n },\r\n UPDATE_ROUTER_TRANSITION(state, val) {\r\n state.layout.routerTransition = val\r\n },\r\n UPDATE_LAYOUT_TYPE(state, val) {\r\n state.layout.type = val\r\n },\r\n UPDATE_CONTENT_WIDTH(state, val) {\r\n state.layout.contentWidth = val\r\n },\r\n UPDATE_NAV_MENU_CONFIG(state, obj) {\r\n Object.assign(state.layout.menu, obj)\r\n },\r\n UPDATE_NAVBAR_CONFIG(state, obj) {\r\n Object.assign(state.layout.navbar, obj)\r\n },\r\n UPDATE_FOOTER_CONFIG(state, obj) {\r\n Object.assign(state.layout.footer, obj)\r\n },\r\n },\r\n actions: {},\r\n}\r\n","import { $themeConfig } from '@themeConfig'\r\n\r\nexport default {\r\n namespaced: true,\r\n state: {\r\n isVerticalMenuCollapsed: $themeConfig.layout.menu.isCollapsed,\r\n },\r\n getters: {},\r\n mutations: {\r\n UPDATE_VERTICAL_MENU_COLLAPSED(state, val) {\r\n state.isVerticalMenuCollapsed = val\r\n },\r\n },\r\n actions: {},\r\n}\r\n","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\n\r\n// Home\r\nimport dashboard from '@/views/dashboard/store-module'\r\n// Purchases\r\nimport purchases from '@/views/purchases/store-module'\r\n// Sales\r\nimport sales from '@/views/sales/sales/store-module'\r\nimport salesCustomers from '@/views/sales/sales-customers/store-module'\r\nimport salesReceipts from '@/views/sales/sales-receipts/store-module'\r\nimport salesRedBills from '@/views/sales/sales-red-bills/store-module'\r\nimport salesReturnedGoods from '@/views/sales/sales-returned-goods/store-module'\r\n// Warehouses\r\nimport warehousesCombo from '@/views/warehouses/warehouses-combo/store-module'\r\nimport warehousesExchangeDamagedGoods from '@/views/warehouses/warehouses-exchange-damaged-goods/store-module'\r\nimport warehousesInput from '@/views/warehouses/warehouses-input/store-module'\r\nimport warehousesOutput from '@/views/warehouses/warehouses-output/store-module'\r\nimport warehousesInventory from '@/views/warehouses/warehouses-inventory/store-module'\r\n// Reports\r\nimport reportWarehousesDifferencePrice from '@/views/reports/reports-warehouses/report-warehouses-price-difference/store-module'\r\nimport reportWarehousesInventory from '@/views/reports/reports-warehouses/reports-warehouses-inventory/store-module'\r\nimport reportsReturnedGoods from '@/views/reports/reports-returned-goods/store-module'\r\nimport reportsWarehousesAdjustment from '@/views/reports/reports-warehouses/reports-warehouses-adjustment/store-module'\r\nimport reportsWarehousesPromotion from '@/views/reports/reports-warehouses/reports-warehouses-promotion/store-module'\r\nimport reportWarehousesInput from '@/views/reports/reports-warehouses/reports-warehouses-input/store-module'\r\nimport reportsWarehousesOutput from '@/views/reports/reports-warehouses/reports-warehouses-output/store-module'\r\nimport reportWarehousesInputOutputInventory from '@/views/reports/reports-warehouses/reports-warehouses-input-output-inventory/store-module'\r\nimport reportWarehousesExchangeDamagedGoods from '@/views/reports/reports-warehouses/reports-warehouses-exchange-damaged-goods/store-module'\r\nimport reportsCustomers from '@/views/reports/reports-customers/reports-customers/store-module'\r\nimport reportsCustomersNonTransactional from '@/views/reports/reports-customers/reports-customers-non-transactional/store-module'\r\nimport reportSalesAmountReceiptPerCustomers from '@/views/reports/reports-sales/reports-sales-amount-receipt-per-customers/store-module'\r\nimport reportSalesCat from '@/views/reports/reports-sales/reports-sales-cat/store-module'\r\nimport reportSales from '@/views/reports/reports-sales/reports-sales/store-module'\r\n\r\nimport reportSalesSaleReceiptPerCustomer from '@/views/reports/reports-sales/reports-sales-sale-receipt-per-customer/store-module'\r\nimport reportSalesSaleOnDeliveryType from '@/views/reports/reports-sales/reports-sales-sale-receipt-on-delivery-type/store-module'\r\nimport reportPurchases from '@/views/reports/reports-purchases/store-module'\r\nimport reportVouchers from '@/views/reports/reports-vouchers/store-module'\r\n// Systems\r\nimport printerConfig from '@/views/auth/printer-configuration-modal/store-module'\r\nimport app from './app'\r\nimport appConfig from './app-config'\r\nimport verticalMenu from './vertical-menu'\r\n\r\nVue.use(Vuex)\r\n\r\nexport default new Vuex.Store({\r\n modules: {\r\n // System\r\n app,\r\n appConfig,\r\n verticalMenu,\r\n printerConfig,\r\n // Home\r\n dashboard,\r\n // Purchases\r\n purchases,\r\n // Sales\r\n sales,\r\n salesCustomers,\r\n salesReceipts,\r\n salesRedBills,\r\n salesReturnedGoods,\r\n // Warehouses\r\n warehousesCombo,\r\n warehousesExchangeDamagedGoods,\r\n warehousesInput,\r\n warehousesOutput,\r\n warehousesInventory,\r\n // Reports\r\n reportWarehousesDifferencePrice,\r\n reportWarehousesInventory,\r\n reportsReturnedGoods,\r\n reportsWarehousesAdjustment,\r\n reportsWarehousesPromotion,\r\n reportWarehousesInput,\r\n reportsWarehousesOutput,\r\n reportWarehousesInputOutputInventory,\r\n reportWarehousesExchangeDamagedGoods,\r\n reportsCustomers,\r\n reportsCustomersNonTransactional,\r\n reportSalesSaleReceiptPerCustomer,\r\n reportSalesAmountReceiptPerCustomers,\r\n reportSalesCat,\r\n reportSales,\r\n reportSalesSaleOnDeliveryType,\r\n reportPurchases,\r\n reportVouchers,\r\n },\r\n strict: process.env.DEV,\r\n})\r\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc10\",\n\t\"./be.js\": \"1fc10\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf755\",\n\t\"./tlh.js\": \"cf755\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollToTop.vue?vue&type=style&index=0&id=7b80e4a0&lang=scss&scoped=true&\"","export const SALESRECEIPTS = 'salesReceipts'\r\n\r\n// GETTER\r\nexport const SALES_RECEIPTS_GETTER = 'SALES_RECEIPTS_GETTER'\r\nexport const SALES_RECEIPTS_DETAIL_GETTER = 'SALES_RECEIPTS_DETAIL_GETTER'\r\nexport const PRINT_SALES_RECEIPT_GETTER = 'PRINT_SALES_RECEIPT_GETTER'\r\n// ACTION\r\nexport const GET_SALES_RECEIPTS_ACTION = 'GET_SALES_RECEIPTS_ACTION'\r\nexport const GET_SALES_RECEIPTS_DETAIL_ACTION = 'GET_SALES_RECEIPTS_DETAIL_ACTION'\r\nexport const PRINT_SALES_RECEIPT_ACTION = 'PRINT_SALES_RECEIPT_ACTION'\r\n","export const WAREHOUSEINVENTORY = 'warehousesInventory'\r\n\r\nexport const WAREHOUSE_INVENTORIES_GETTER = 'WAREHOUSE_INVENTORIES_GETTER'\r\nexport const WAREHOUSE_TYPES_GETTER = 'WAREHOUSE_TYPES_GETTER'\r\nexport const WAREHOUSE_INVENTORY_STOCKS_GETTER = 'WAREHOUSE_INVENTORY_STOCKS_GETTER'\r\nexport const IS_EXISTED_WAREHOUSE_INVENTORY_GETTER = 'IS_EXISTED_WAREHOUSE_INVENTORY_GETTER'\r\nexport const WAREHOUSE_INVENTORY_DATA_GETTER = 'WAREHOUSE_INVENTORY_DATA_GETTER'\r\nexport const WAREHOUSE_INVENTORY_IMPORT_DATA_GETTER = 'WAREHOUSE_INVENTORY_IMPORT_DATA_GETTER'\r\nexport const WAREHOUSE_INVENTORY_DETAIL_GETTER = 'WAREHOUSE_INVENTORY_DETAIL_GETTER'\r\n\r\nexport const GET_WAREHOUSE_INVENTORIES_ACTION = 'GET_WAREHOUSE_INVENTORIES_ACTION'\r\nexport const GET_WAREHOUSE_TYPES_ACTION = 'GET_WAREHOUSE_TYPES_ACTION'\r\nexport const GET_WAREHOUSE_INVENTORY_STOCKS_ACTION = 'GET_WAREHOUSE_INVENTORY_STOCKS_ACTION'\r\nexport const EXPORT_FILLED_STOCKS_ACTION = 'EXPORT_FILLED_STOCKS_ACTION'\r\nexport const CREATE_WAREHOUSE_INVENTORY_ACTION = 'CREATE_WAREHOUSE_INVENTORY_ACTION'\r\nexport const IMPORT_FILLED_STOCKS_ACTION = 'IMPORT_FILLED_STOCKS_ACTION'\r\nexport const CHECK_EXISTED_WAREHOUSE_INVENTORY_ACTION = 'CHECK_EXISTED_WAREHOUSE_INVENTORY_ACTION'\r\nexport const GET_SAMPLE_IMPORT_FILE_ACTION = 'GET_SAMPLE_IMPORT_FILE_ACTION'\r\nexport const GET_FAILED_IMPORT_FILE_ACTION = 'GET_FAILED_IMPORT_FILE_ACTION'\r\nexport const GET_WAREHOUSE_INVENTORY_DETAIL_ACTION = 'GET_WAREHOUSE_INVENTORY_DETAIL_ACTION'\r\nexport const UPDATE_WAREHOUSE_INVENTORY_ACTION = 'UPDATE_WAREHOUSE_INVENTORY_ACTION'\r\n","import common from './common.json'\r\nimport customer from './customer.json'\r\nimport layout from './layout.json'\r\n\r\nexport default {\r\n common,\r\n customer,\r\n layout,\r\n}\r\n","import common from './common.json'\r\nimport customer from './customer.json'\r\nimport layout from './layout.json'\r\n\r\nexport default {\r\n common,\r\n customer,\r\n layout,\r\n}\r\n","import Vue from 'vue'\r\nimport VueI18n from 'vue-i18n'\r\nimport vi from './locales/vi/index'\r\nimport en from './locales/en/index'\r\n\r\nVue.use(VueI18n)\r\nfunction loadLocaleMessages() {\r\n return {\r\n vi,\r\n en,\r\n }\r\n}\r\nexport default new VueI18n({\r\n locale: 'vi',\r\n fallbackLocale: 'vi',\r\n messages: loadLocaleMessages(),\r\n silentTranslationWarn: true,\r\n})\r\n","var render, staticRenderFns\nimport script from \"./FeatherIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./FeatherIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./FeatherIcon.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"h-100\",class:[_vm.skinClasses],attrs:{\"id\":\"app\"}},[_c(_vm.layout,{tag:\"component\"},[_c('router-view')],1),(_vm.enableScrollToTop)?_c('scroll-to-top'):_vm._e(),_c('loading',{staticClass:\"d-print-none\",attrs:{\"active\":_vm.isLoading,\"can-cancel\":false,\"is-full-page\":true,\"loader\":\"spinner\",\"color\":\"#315899\",\"opacity\":\"0\"},on:{\"update:active\":function($event){_vm.isLoading=$event}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"btn-scroll-to-top d-print-none\",class:{'show': _vm.y > 1}},[_c('b-button',{directives:[{name:\"ripple\",rawName:\"v-ripple.400\",value:('rgba(255, 255, 255, 0.15)'),expression:\"'rgba(255, 255, 255, 0.15)'\",modifiers:{\"400\":true}}],staticClass:\"btn-icon bg-brand-1\",attrs:{\"variant\":\"someThing\"},on:{\"click\":_vm.scrollToTop}},[_c('feather-icon',{staticClass:\"text-white\",attrs:{\"icon\":\"ArrowUpIcon\",\"size\":\"16\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollToTop.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollToTop.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ScrollToTop.vue?vue&type=template&id=7b80e4a0&scoped=true&\"\nimport script from \"./ScrollToTop.vue?vue&type=script&lang=js&\"\nexport * from \"./ScrollToTop.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ScrollToTop.vue?vue&type=style&index=0&id=7b80e4a0&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7b80e4a0\",\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=23550210&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FeatherIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FeatherIcon.vue?vue&type=script&lang=js&\"","import Vue from 'vue'\r\nimport FeatherIcon from '@core/components/feather-icon/FeatherIcon.vue'\r\n\r\nVue.component(FeatherIcon.name, FeatherIcon)\r\n","import Vue from 'vue'\r\nimport { abilitiesPlugin } from '@casl/vue'\r\nimport ability from './ability'\r\n\r\nVue.use(abilitiesPlugin, ability)\r\n","import Vue from 'vue'\r\nimport PortalVue from 'portal-vue'\r\n\r\nVue.use(PortalVue)\r\n","import Vue from 'vue'\r\nimport VueClipboard from 'vue-clipboard2'\r\n\r\n// clipboard\r\nVue.use(VueClipboard)\r\n","import Vue from 'vue'\r\nimport Toast from 'vue-toastification'\r\n\r\n// Toast Notification Component Styles\r\nimport '@core/scss/vue/libs/toastification.scss'\r\n\r\n/**\r\n * NOTE: If you are using other transition them make sure to import it in `src/@core/scss/vue/libs/notification.scss` from it's source\r\n */\r\nVue.use(Toast, {\r\n hideProgressBar: true,\r\n closeOnClick: false,\r\n closeButton: false,\r\n icon: false,\r\n timeout: 5000,\r\n transition: 'Vue-Toastification__fade',\r\n})\r\n","import Vue from 'vue'\r\nimport VueSweetalert2 from 'vue-sweetalert2'\r\n\r\nVue.use(VueSweetalert2)\r\n","import Vue from 'vue'\r\nimport vSelect from 'vue-select'\r\n\r\n// Set the components prop default to return our fresh components\r\nvSelect.props.components.default = () => ({\r\n Deselect: {\r\n render: h => h('feather-icon', { props: { size: '14', icon: 'XIcon' } }),\r\n },\r\n OpenIndicator: {\r\n render: h => h('feather-icon', { props: { size: '15', icon: 'ChevronDownIcon' }, class: 'open-indicator' }),\r\n },\r\n})\r\n\r\nVue.component(vSelect)\r\n","import Vue from 'vue'\r\nimport VueTour from 'vue-tour'\r\n\r\nVue.use(VueTour)\r\n","import axios from '@axios'\r\nimport MockAdapter from 'axios-mock-adapter'\r\n\r\n// This sets the mock adapter on the axios instance\r\nconst mock = new MockAdapter(axios)\r\n\r\nexport default mock\r\n","import mock from '@/@fake-db/mock'\r\n/* eslint-disable global-require */\r\nconst data = {\r\n congratulations: {\r\n name: 'John',\r\n saleToday: '57.6',\r\n },\r\n subscribersGained: {\r\n series: [\r\n {\r\n name: 'Subscribers',\r\n data: [28, 40, 36, 52, 38, 60, 55],\r\n },\r\n ],\r\n analyticsData: {\r\n subscribers: 92600,\r\n },\r\n },\r\n ordersRecevied: {\r\n series: [\r\n {\r\n name: 'Orders',\r\n data: [10, 15, 8, 15, 7, 12, 8],\r\n },\r\n ],\r\n analyticsData: {\r\n orders: 38400,\r\n },\r\n },\r\n avgSessions: {\r\n sessions: 2700,\r\n lastDays: ['Last 28 Days', 'Last Month', 'Last Year'],\r\n growth: '+5.2%',\r\n goal: 100000,\r\n users: 100000,\r\n retention: 90,\r\n duration: 1,\r\n salesBar: {\r\n series: [\r\n {\r\n name: 'Sessions',\r\n data: [75, 125, 225, 175, 125, 75, 25],\r\n },\r\n ],\r\n },\r\n },\r\n supportTracker: {\r\n title: 'Support Tracker',\r\n lastDays: ['Last 28 Days', 'Last Month', 'Last Year'],\r\n totalTicket: 163,\r\n newTicket: 29,\r\n openTicket: 63,\r\n responseTime: 1,\r\n supportTrackerRadialBar: {\r\n series: [83],\r\n },\r\n },\r\n timeline: {\r\n step1: {\r\n title: '12 Invoices have been paid',\r\n subtitle: 'Invoices have been paid to the company.',\r\n img: require('@/assets/images/icons/json.png'),\r\n fileName: 'data.json',\r\n duration: '12 min ago',\r\n },\r\n step2: {\r\n title: 'Client Meeting',\r\n subtitle: 'Project meeting with john @10:15am',\r\n avatar: require('@/assets/images/portrait/small/avatar-s-9.jpg'),\r\n avatarName: 'John Doe (Client)',\r\n occupation: 'CEO of Infibeam',\r\n duration: '45 min ago',\r\n },\r\n step3: {\r\n title: 'Create a new project for client',\r\n subtitle: 'Add files to new design folder',\r\n duration: '2 day ago',\r\n avatars: [\r\n { userImg: require('@/assets/images/portrait/small/avatar-s-9.jpg'), name: 'Billy Hopkins' },\r\n { userImg: require('@/assets/images/portrait/small/avatar-s-6.jpg'), name: 'Amy Carson' },\r\n { userImg: require('@/assets/images/portrait/small/avatar-s-8.jpg'), name: 'Brandon Miles' },\r\n { userImg: require('@/assets/images/portrait/small/avatar-s-7.jpg'), name: 'Daisy Weber' },\r\n { userImg: require('@/assets/images/portrait/small/avatar-s-20.jpg'), name: 'Jenny Looper' },\r\n ],\r\n },\r\n step4: {\r\n title: 'Create a new project for client',\r\n duration: '5 day ago',\r\n subtitle: 'Add files to new design folder',\r\n },\r\n },\r\n salesChart: {\r\n series: [\r\n {\r\n name: 'Sales',\r\n data: [90, 50, 86, 40, 100, 20],\r\n },\r\n {\r\n name: 'Visit',\r\n data: [70, 75, 70, 76, 20, 85],\r\n },\r\n ],\r\n },\r\n appDesign: {\r\n date: '03 Sep, 20',\r\n title: 'App design',\r\n subtitle: 'You can Find Only Post and Quotes Related to IOS like ipad app design, iphone app design',\r\n teams: [\r\n { name: 'Figma', color: 'light-warning' },\r\n { name: 'Wireframe', color: 'light-primary' },\r\n ],\r\n members: [\r\n { img: require('@/assets/images/portrait/small/avatar-s-9.jpg'), color: 'primary' },\r\n { text: 'PI', color: 'light-danger' },\r\n { img: require('@/assets/images/portrait/small/avatar-s-14.jpg'), color: 'primary' },\r\n { img: require('@/assets/images/portrait/small/avatar-s-7.jpg'), color: 'primary' },\r\n { text: 'AL', color: 'light-secondary' },\r\n ],\r\n planing: [\r\n { title: 'Due Date', subtitle: '12 Apr, 21' },\r\n { title: 'Budget', subtitle: '$49251.91' },\r\n { title: 'Cost', subtitle: '$840.99' },\r\n ],\r\n },\r\n}\r\n/* eslint-disable global-require */\r\nmock.onGet('/analytics/data').reply(() => [200, data])\r\n","import mock from '@/@fake-db/mock'\r\n/* eslint-disable global-require */\r\nconst data = {\r\n congratulations: {\r\n name: 'John',\r\n saleToday: '48900',\r\n },\r\n statisticsItems: [\r\n {\r\n icon: 'TrendingUpIcon',\r\n color: 'light-primary',\r\n title: '230k',\r\n subtitle: 'Sales',\r\n customClass: 'mb-2 mb-xl-0',\r\n },\r\n {\r\n icon: 'UserIcon',\r\n color: 'light-info',\r\n title: '8.549k',\r\n subtitle: 'Customers',\r\n customClass: 'mb-2 mb-xl-0',\r\n },\r\n {\r\n icon: 'BoxIcon',\r\n color: 'light-danger',\r\n title: '1.423k',\r\n subtitle: 'Products',\r\n customClass: 'mb-2 mb-sm-0',\r\n },\r\n {\r\n icon: 'DollarSignIcon',\r\n color: 'light-success',\r\n title: '$9745',\r\n subtitle: 'Revenue',\r\n customClass: '',\r\n },\r\n ],\r\n statisticsOrder: {\r\n series: [\r\n {\r\n name: '2020',\r\n data: [45, 85, 65, 45, 65],\r\n },\r\n ],\r\n },\r\n statisticsProfit: {\r\n series: [\r\n {\r\n data: [0, 20, 5, 30, 15, 45],\r\n },\r\n ],\r\n },\r\n earningsChart: {\r\n series: [53, 16, 31],\r\n },\r\n revenue: {\r\n years: ['2020', '2019', '2018'],\r\n price: '25,852',\r\n budget: '56,800',\r\n revenueReport: {\r\n series: [\r\n {\r\n name: 'Earning',\r\n data: [95, 177, 284, 256, 105, 63, 168, 218, 72],\r\n },\r\n {\r\n name: 'Expense',\r\n data: [-145, -80, -60, -180, -100, -60, -85, -75, -100],\r\n },\r\n ],\r\n },\r\n budgetChart: {\r\n series: [\r\n {\r\n data: [61, 48, 69, 52, 60, 40, 79, 60, 59, 43, 62],\r\n },\r\n {\r\n data: [20, 10, 30, 15, 23, 0, 25, 15, 20, 5, 27],\r\n },\r\n ],\r\n },\r\n },\r\n companyTable: [\r\n {\r\n avatarImg: require('@/assets/images/icons/toolbox.svg'),\r\n title: 'Dixons',\r\n subtitle: 'meguc@ruj.io',\r\n avatarIcon: 'MonitorIcon',\r\n avatarColor: 'light-primary',\r\n avatarTitle: 'Technology',\r\n viewTitle: '23.4k',\r\n viewsub: 'in 24 hours',\r\n revenue: '891.2',\r\n sales: '68',\r\n loss: true,\r\n },\r\n {\r\n avatarImg: require('@/assets/images/icons/parachute.svg'),\r\n title: 'Motels',\r\n subtitle: 'vecav@hodzi.co.uk',\r\n avatarIcon: 'CoffeeIcon',\r\n avatarColor: 'light-success',\r\n avatarTitle: 'Grocery',\r\n viewTitle: '78k',\r\n viewsub: 'in 2 days',\r\n revenue: '668.51',\r\n sales: '97',\r\n loss: false,\r\n },\r\n {\r\n avatarImg: require('@/assets/images/icons/brush.svg'),\r\n title: 'Zipcar',\r\n subtitle: 'davcilse@is.gov',\r\n avatarIcon: 'WatchIcon',\r\n avatarColor: 'light-warning',\r\n avatarTitle: 'Fashion',\r\n viewTitle: '162',\r\n viewsub: 'in 5 days',\r\n revenue: '522.29',\r\n sales: '62',\r\n loss: false,\r\n },\r\n {\r\n avatarImg: require('@/assets/images/icons/star.svg'),\r\n title: 'Owning',\r\n subtitle: 'us@cuhil.gov',\r\n avatarIcon: 'MonitorIcon',\r\n avatarColor: 'light-primary',\r\n avatarTitle: 'Technology',\r\n viewTitle: '214',\r\n viewsub: 'in 24 hours',\r\n revenue: '291.01',\r\n sales: '88',\r\n loss: false,\r\n },\r\n {\r\n avatarImg: require('@/assets/images/icons/book.svg'),\r\n title: 'Cafés',\r\n subtitle: 'pudais@jife.com',\r\n avatarIcon: 'CoffeeIcon',\r\n avatarColor: 'light-success',\r\n avatarTitle: 'Grocery',\r\n viewTitle: '208',\r\n viewsub: 'in 1 week',\r\n revenue: '783.93',\r\n sales: '16',\r\n loss: true,\r\n },\r\n {\r\n avatarImg: require('@/assets/images/icons/rocket.svg'),\r\n title: 'Kmart',\r\n subtitle: 'bipri@cawiw.com',\r\n avatarIcon: 'WatchIcon',\r\n avatarColor: 'light-warning',\r\n avatarTitle: 'Fashion',\r\n viewTitle: '990',\r\n viewsub: 'in 1 month',\r\n revenue: '780.05',\r\n sales: '78',\r\n loss: false,\r\n },\r\n {\r\n avatarImg: require('@/assets/images/icons/speaker.svg'),\r\n title: 'Payers',\r\n subtitle: 'luk@izug.io',\r\n avatarIcon: 'WatchIcon',\r\n avatarColor: 'light-warning',\r\n avatarTitle: 'Fashion',\r\n viewTitle: '12.9k',\r\n viewsub: 'in 12 hours',\r\n revenue: '531.49',\r\n sales: '42',\r\n loss: false,\r\n },\r\n ],\r\n meetup: {\r\n mediaData: [\r\n { avatar: 'CalendarIcon', title: 'Sat, May 25, 2020', subtitle: '10:AM to 6:PM' },\r\n { avatar: 'MapPinIcon', title: 'Central Park', subtitle: 'Manhattan, New york City' },\r\n ],\r\n avatars: [\r\n { avatar: require('@/assets/images/portrait/small/avatar-s-9.jpg'), fullName: 'Billy Hopkins' },\r\n { avatar: require('@/assets/images/portrait/small/avatar-s-6.jpg'), fullName: 'Amy Carson' },\r\n { avatar: require('@/assets/images/portrait/small/avatar-s-8.jpg'), fullName: 'Brandon Miles' },\r\n { avatar: require('@/assets/images/portrait/small/avatar-s-7.jpg'), fullName: 'Daisy Weber' },\r\n { avatar: require('@/assets/images/portrait/small/avatar-s-20.jpg'), fullName: 'Jenny Looper' },\r\n ],\r\n },\r\n goalOverview: {\r\n completed: '786,617',\r\n inProgress: '13,561',\r\n series: [83],\r\n },\r\n transactionData: [\r\n {\r\n mode: 'Wallet',\r\n types: 'Starbucks',\r\n avatar: 'PocketIcon',\r\n avatarVariant: 'light-primary',\r\n payment: '-$74',\r\n deduction: true,\r\n },\r\n {\r\n mode: 'Bank Transfer',\r\n types: 'Add Money',\r\n avatar: 'CheckIcon',\r\n avatarVariant: 'light-success',\r\n payment: '+$480',\r\n deduction: false,\r\n },\r\n {\r\n mode: 'Paypal',\r\n types: 'Add Money',\r\n avatar: 'DollarSignIcon',\r\n avatarVariant: 'light-danger',\r\n payment: '+$480',\r\n deduction: false,\r\n },\r\n {\r\n mode: 'Mastercard',\r\n types: 'Ordered Food',\r\n avatar: 'CreditCardIcon',\r\n avatarVariant: 'light-warning',\r\n payment: '-$23',\r\n deduction: true,\r\n },\r\n {\r\n mode: 'Transfer',\r\n types: 'Refund',\r\n avatar: 'TrendingUpIcon',\r\n avatarVariant: 'light-info',\r\n payment: '+$98',\r\n deduction: false,\r\n },\r\n ],\r\n}\r\n/* eslint-disable global-require */\r\nmock.onGet('/ecommerce/data').reply(() => [200, data])\r\n","import mock from './mock'\r\n\r\n// dashboard\r\nimport './data/dashboard/analytics'\r\nimport './data/dashboard/ecommerce'\r\n\r\n/* eslint-enable import/extensions */\r\n\r\nmock.onAny().passThrough() // forwards the matched request over network\r\n","import Vue from 'vue'\r\nimport {\r\n BootstrapVue,\r\n BootstrapVueIcons,\r\n} from 'bootstrap-vue'\r\nimport VueCompositionAPI from '@vue/composition-api'\r\nimport {\r\n isEmpty,\r\n onlyNumberInput,\r\n onlyPOQuantityInput,\r\n onlyDateInput,\r\n preventPasteSpecialChars,\r\n // labels\r\n getInputTypeslabel,\r\n getWarehousesStatuslabel,\r\n getOutputTypeslabel,\r\n // Calculations\r\n quantityByConvFact,\r\n} from '@core/utils/utils'\r\nimport {\r\n formatNumberToLocale,\r\n formatISOtoVNI,\r\n formatVniDateToISO,\r\n formatPrintDate,\r\n} from '@/@core/utils/filter'\r\nimport { permission } from '@/libs/acl/ability'\r\nimport VueBarcodeScanner from 'vue-barcode-scanner'\r\n\r\nimport i18n from '@/libs/i18n'\r\nimport VueGoodTablePlugin from 'vue-good-table'\r\nimport moment from 'moment'\r\nimport html2canvas from 'html2canvas'\r\nimport VueFlatPickr from 'vue-flatpickr-component'\r\nimport flatPickr from 'flatpickr'\r\nimport { Vietnamese } from 'flatpickr/dist/l10n/vn'\r\nimport TreeSelect from '@riophae/vue-treeselect'\r\nimport dotenv from 'dotenv'\r\n\r\nimport router from './router'\r\nimport store from './store'\r\nimport App from './App.vue'\r\n\r\n// Global Components\r\nimport './global-components'\r\n\r\n// 3rd party plugins\r\nimport '@axios'\r\nimport '@/libs/acl'\r\nimport '@/libs/portal-vue'\r\nimport '@/libs/clipboard'\r\nimport '@/libs/toastification'\r\nimport '@/libs/sweet-alerts'\r\nimport '@/libs/vue-select'\r\nimport '@/libs/tour'\r\n\r\n// Axios Mock Adapter\r\nimport '@/@fake-db/db'\r\n\r\n// import the styles\r\nimport '@core/scss/vue/libs/vue-good-table.scss'\r\nimport '@core/scss/vue/libs/vue-flatpicker.scss'\r\nimport '@core/scss/vue/libs/vue-select.scss'\r\nimport 'vue-loading-overlay/dist/vue-loading.css'\r\nimport '@core/scss/vue/libs/vue-treeselect.scss'\r\nimport '@core/scss/vue/libs/vue-autosuggest.scss'\r\n\r\ndotenv.config()\r\n\r\n// BSV Plugin Registration\r\nVue.use(BootstrapVue)\r\nVue.use(BootstrapVueIcons)\r\n\r\n// Composition API\r\nVue.use(VueCompositionAPI)\r\n\r\n// vue-good-table\r\nVue.use(VueGoodTablePlugin)\r\n\r\n// inject vue barcode scanner\r\nconst optionsVueBarcodeScanner = {\r\n sensitivity: 10, // default is 100\r\n // *requiredAttr: set to \"true\" you need to specific some input field with \"data-barcode\" and then only this input response to scanner\r\n requiredAttr: true, // default is false\r\n // *controlSequenceKeys: when a control key in this list is encountered in a scan sequence, it will be replaced with tags for easy string replacement\r\n controlSequenceKeys: ['NumLock', 'Clear'], // default is null\r\n // *callbackAfterTimeout: this will fire the callback defined in the component once sensitivity ms has elapsed, following the last character in the barcode sequence.\r\n // *This is useful for scanners that don't end their sequences with ENTER and is backwards compatible with scanners that do.\r\n callbackAfterTimeout: true, // default is false\r\n}\r\nVue.use(VueBarcodeScanner, optionsVueBarcodeScanner)\r\n// moment\r\nVue.prototype.$moment = moment\r\nmoment.locale('vi')\r\nVue.prototype.$html2canvas = html2canvas\r\n\r\n// Ultils\r\nVue.prototype.$isEmpty = isEmpty\r\nVue.prototype.$onlyNumberInput = onlyNumberInput\r\nVue.prototype.$onlyPOQuantityInput = onlyPOQuantityInput\r\nVue.prototype.$onlyDateInput = onlyDateInput\r\nVue.prototype.$getInputTypeslabel = getInputTypeslabel\r\nVue.prototype.$getOutputTypeslabel = getOutputTypeslabel\r\nVue.prototype.$getWarehousesStatuslabel = getWarehousesStatuslabel\r\nVue.prototype.$preventPasteSpecialChars = preventPasteSpecialChars\r\n\r\n// Calculations\r\nVue.prototype.$quantityByConvFact = quantityByConvFact\r\n\r\n// filter\r\nVue.prototype.$formatNumberToLocale = formatNumberToLocale\r\nVue.prototype.$formatISOtoVNI = formatISOtoVNI\r\nVue.prototype.$formatVniDateToISO = formatVniDateToISO\r\nVue.prototype.$formatPrintDate = formatPrintDate\r\n\r\nVue.prototype.$permission = permission\r\n\r\n// flatPickr\r\nflatPickr.localize(Vietnamese)\r\nVue.component('vue-flat-pickr', VueFlatPickr)\r\n\r\n// vue-select\r\nVue.component('tree-select', TreeSelect)\r\n\r\n// Feather font icon - For form-wizard\r\n// * Shall remove it if not using font-icons of feather-icons - For form-wizard\r\nrequire('@core/assets/fonts/feather/iconfont.css') // For form-wizard\r\n\r\n// import core styles\r\nrequire('@core/scss/core.scss')\r\n\r\n// import assets styles\r\nrequire('@/assets/scss/style.scss')\r\n\r\nVue.config.productionTip = false\r\nVue.config.silent = true\r\n\r\nnew Vue({\r\n router,\r\n store,\r\n i18n,\r\n render: h => h(App),\r\n}).$mount('#app')\r\n","export const WAREHOUSES_EXCHANGE_DAMAGED_GOODS = 'warehousesExchangeDamagedGoods'\r\n\r\n// Getters\r\nexport const EXCHANGE_DAMAGED_GOODS_GETTER = 'EXCHANGE_DAMAGED_GOODS_GETTER'\r\nexport const EXCHANGE_DAMAGED_GOODS_REASONS_GETTER = 'EXCHANGE_DAMAGED_GOODS_REASONS_GETTER'\r\nexport const EXCHANGE_DAMAGED_GOODS_BY_ID_GETTER = 'EXCHANGE_DAMAGED_GOODS_BY_ID_GETTER'\r\nexport const CUSTOMERS_GETTER = 'CUSTOMERS_GETTER'\r\nexport const PRODUCTS_GETTER = 'PRODUCTS_GETTER'\r\nexport const DAMAGED_GOODS_GETTER = 'DAMAGED_GOODS_GETTER'\r\nexport const UPDATE_PRICE_PRODUCT_GETTER = 'UPDATE_PRICE_PRODUCT_GETTER'\r\n\r\n// Actions\r\nexport const GET_EXCHANGE_DAMAGED_GOODS_ACTION = 'GET_EXCHANGE_DAMAGED_GOODS_ACTION'\r\nexport const GET_EXCHANGE_DAMAGED_GOODS_REASONS_ACTION = 'GET_EXCHANGE_DAMAGED_GOODS_REASONS_ACTION'\r\nexport const CREATE_EXCHANGE_DAMAGED_GOODS_ACTION = 'CREATE_EXCHANGE_DAMAGED_GOODS_ACTION'\r\nexport const GET_EXCHANGE_DAMAGED_GOODS_BY_ID_ACTION = 'GET_EXCHANGE_DAMAGED_GOODS_BY_ID_ACTION'\r\nexport const GET_CUSTOMERS_ACTION = 'GET_CUSTOMERS_ACTION'\r\nexport const GET_PRODUCTS_ACTION = 'GET_PRODUCTS_ACTION'\r\nexport const UPDATE_EXCHANGE_DAMAGED_GOODS_ACTION = 'UPDATE_EXCHANGE_DAMAGED_GOODS_ACTION'\r\nexport const GET_DAMAGED_GOODS_ACTION = 'GET_DAMAGED_GOODS_ACTION'\r\nexport const REMOVE_EXCHANGE_DAMAGED_GOODS_ACTION = 'REMOVE_EXCHANGE_DAMAGED_GOODS_ACTION'\r\nexport const UPDATE_PRICE_PRODUCT_ACTION = 'UPDATE_PRICE_PRODUCT_ACTION'\r\n","export const REPORT_CUSTOMERS_NON_TRANSACTIONAL = 'reportsCustomersNonTransactional'\r\n\r\nexport const REPORT_CUSTOMERS_NON_TRANSACTIONAL_GETTER = 'REPORT_CUSTOMERS_NON_TRANSACTIONAL_GETTER'\r\nexport const PRINT_REPORT_CUSTOMERS_NON_TRANSACTIONAL_GETTER = 'PRINT_REPORT_CUSTOMERS_NON_TRANSACTIONAL_GETTER'\r\n// actions\r\nexport const GET_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION = 'GET_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION'\r\nexport const EXPORT_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION = 'EXPORT_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION'\r\nexport const PRINT_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION = 'PRINT_REPORTS_CUSTOMERS_NON_TRANSACTIONAL_ACTION'\r\n","export const REPORT_RETURNED_GOODS = 'reportsReturnedGoods'\r\n\r\n// Getters\r\nexport const REPORT_RETURNED_GOODS_GETTER = 'REPORT_RETURNED_GOODS_GETTER'\r\nexport const PRODUCT_CAT_GETTER = 'PRODUCT_CAT_GETTER'\r\nexport const PRODUCT_GETTER = 'PRODUCT_GETTER'\r\nexport const PRINT_INPUT_ORDER_DETIAL_GETTER = 'PRINT_INPUT_ORDER_DETIAL_GETTER' // temp\r\nexport const PRINT_SELLS_GETTER = 'PRINT_SELLS_GETTER' // temp\r\nexport const PRINT_RETURN_GOODS_GETTER = 'PRINT_RETURN_GOODS_GETTER'\r\nexport const REASON_RETURN_GOODS_GETTER = 'REASON_RETURN_GOODS_GETTER'\r\n\r\n// mutations\r\nexport const CLEAR_ALL_PRODUCT_LISTS_CHECKED = 'CLEAR_ALL_PRODUCT_LISTS_CHECKED'\r\n\r\n// Actions\r\nexport const GET_REPORT_RETURNED_GOODS_ACTION = 'GET_REPORT_RETURNED_GOODS_ACTION'\r\nexport const EXPORT_REPORT_RETURNED_GOODS_ACTION = 'EXPORT_REPORT_RETURNED_GOODS_ACTION'\r\nexport const GET_PRODUCT_ACTION = 'GET_PRODUCT_ACTION'\r\nexport const GET_PRODUCT_CAT_ACTION = 'GET_PRODUCT_CAT_ACTION'\r\nexport const PRINT_INPUT_ORDER_DETIAL_ACTION = 'PRINT_INPUT_ORDER_DETIAL_ACTION' // temp\r\nexport const PRINT_SELLS_ACTION = 'PRINT_SELLS_ACTION' // temp\r\nexport const PRINT_RETURN_GOODS_ACTION = 'PRINT_RETURN_GOODS_ACTION'\r\nexport const GET_REASON_RETURN_GOODS_ACTION = 'GET_REASON_RETURN_GOODS_ACTION'\r\n","module.exports = __webpack_public_path__ + \"img/parachute.eb6d30cc.svg\";","export const WAREHOUSEINPUT = 'warehousesInput'\r\n\r\n// Getters\r\nexport const POCONFIRM_GETTER = 'POCONFIRM_GETTER'\r\nexport const POCONFIRM_DETAILS_GETTER = 'POCONFIRM_DETAILS_GETTER'\r\nexport const POCONFIRM_PROMO_DETAILS_GETTER = 'POCONFIRM_PROMO_DETAILS_GETTER'\r\nexport const STATUS_NOT_IMPORT_GETTER = 'STATUS_NOT_IMPORT_GETTER'\r\nexport const IMPORT_ADJUSTMENTS_GETTER = 'IMPORT_ADJUSTMENTS_GETTER'\r\nexport const IMPORT_ADJUSTMENTS_DETAILS_GETTER = 'IMPORT_ADJUSTMENTS_DETAILS_GETTER'\r\nexport const IMPORT_BORROWINGS_GETTER = 'IMPORT_BORROWINGS_GETTER'\r\nexport const IMPORT_BORROWINGS_DETAILS_GETTER = 'IMPORT_BORROWINGS_DETAILS_GETTER'\r\nexport const RECEIPTS_GETTER = 'RECEIPTS_GETTER'\r\nexport const RECEIPT_BY_ID_GETTER = 'RECEIPT_BY_ID_GETTER'\r\nexport const PRODUCTS_BY_ID_GETTER = 'PRODUCTS_BY_ID_GETTER'\r\nexport const PROMOTIONS_BY_ID_GETTER = 'PROMOTIONS_BY_ID_GETTER'\r\nexport const PRODUCTS_GETTER = 'PRODUCTS_GETTER'\r\nexport const NOT_IMPORT_REASONS_GETTER = 'NOT_IMPORT_REASONS_GETTER'\r\nexport const IMPORTED_POCONFIRM_GETTER = 'IMPORTED_POCONFIRM_GETTER'\r\nexport const PRINT_OUT_IN_PUT_ORDER_GETTER = 'PRINT_OUT_IN_PUT_ORDER_GETTER'\r\nexport const WAREHOUSES_LIST_GETTER = 'WAREHOUSES_LIST_GETTER'\r\n// Mutations\r\nexport const CLEAR_STATUS_NOT_IMPORT_MUTATION = 'CLEAR_STATUS_NOT_IMPORT_MUTATION'\r\nexport const CLEAR_GRID_VIEW_MUTATION = 'CLEAR_GRID_VIEW_MUTATION'\r\nexport const CLEAR_ADJUST_GRID_VIEW_MUTATION = 'CLEAR_ADJUST_GRID_VIEW_MUTATION'\r\nexport const CLEAR_BORROW_GRID_VIEW_MUTATION = 'CLEAR_BORROW_GRID_VIEW_MUTATION'\r\n// Actions\r\nexport const GET_POCONFIRMS_ACTION = 'GET_POCONFIRMS_ACTION'\r\nexport const GET_PODETAIL_PRODUCTS_ACTION = 'GET_PODETAIL_PRODUCTS_ACTION'\r\nexport const GET_PODETAIL_PRODUCTS_PROMO_ACTION = 'GET_PODETAIL_PRODUCTS_PROMO_ACTION'\r\nexport const GET_IMPORTEXCEL_ACTION = 'GET_IMPORTEXCEL_ACTION'\r\nexport const GET_IMPORT_ADJUSTMENTS_ACTION = 'GET_IMPORT_ADJUSTMENTS_ACTION'\r\nexport const GET_IMPORT_ADJUSTMENTS_DETAIL_ACTION = 'GET_IMPORT_ADJUSTMENTS_DETAIL_ACTION'\r\nexport const GET_IMPORT_BORROWINGS_ACTION = 'GET_IMPORT_BORROWINGS_ACTION'\r\nexport const GET_IMPORT_BORROWINGS_DETAIL_ACTION = 'GET_IMPORT_BORROWINGS_DETAIL_ACTION'\r\nexport const UPDATE_NOT_IMPORT_ACTION = 'UPDATE_NOT_IMPORT_ACTION'\r\nexport const CREATE_SALE_IMPORT_ACTION = 'CREATE_SALE_IMPORT_ACTION'\r\nexport const GET_RECEIPTS_ACTION = 'GET_RECEIPTS_ACTION'\r\nexport const EXPORT_RECEIPTS_ACTION = 'EXPORT_RECEIPTS_ACTION'\r\nexport const GET_RECEIPT_BY_ID_ACTION = 'GET_RECEIPT_BY_ID_ACTION'\r\nexport const GET_PRODUCTS_BY_ID_ACTION = 'GET_PRODUCTS_BY_ID_ACTION'\r\nexport const GET_PRODUCTS_ACTION = 'GET_PRODUCTS_ACTION'\r\nexport const REMOVE_RECEIPT_ACTION = 'REMOVE_RECEIPT_ACTION'\r\nexport const PRINT_WAREHOUSES_INPUT_ACTION = 'PRINT_WAREHOUSES_INPUT_ACTION'\r\nexport const UPDATE_RECEIPT_ACTION = 'UPDATE_RECEIPT_ACTION'\r\nexport const GET_NOT_IMPORT_REASONS_ACTION = 'GET_NOT_IMPORT_REASONS_ACTION'\r\nexport const PRINT_OUT_IN_PUT_ORDER_ACTION = 'PRINT_OUT_IN_PUT_ORDER_ACTION'\r\nexport const GET_IMPORT_PO_CONFIRM_ACTION = 'GET_IMPORT_PO_CONFIRM_ACTION'\r\nexport const GET_WAREHOUSES_LIST_ACTION = 'GET_WAREHOUSES_LIST_ACTION'\r\n","export const WAREHOUSES_OUTPUT = 'warehousesOutput'\r\n\r\n// Getters\r\nexport const GET_WAREHOUSES_OUTPUT_LIST_GETTER = 'GET_WAREHOUSES_OUTPUT_LIST_GETTER'\r\nexport const GET_WAREHOUSES_OUTPUT_BY_ID_GETTER = 'GET_WAREHOUSES_OUTPUT_BY_ID_GETTER'\r\nexport const GET_PRODUCTS_OF_WAREHOUSES_OUTPUT_GETTER = 'GET_PRODUCTS_OF_WAREHOUSES_OUTPUT_GETTER'\r\nexport const GET_EXPORT_BORROWINGS_GETTER = 'GET_EXPORT_BORROWINGS_GETTER'\r\nexport const GET_EXPORT_ADJUSTMENTS_GETTER = 'GET_EXPORT_ADJUSTMENTS_GETTER'\r\nexport const GET_EXPORT_PO_TRANS_GETTER = 'GET_EXPORT_PO_TRANS_GETTER'\r\nexport const GET_EXPORT_BORROWINGS_DETAIL_GETTER = 'GET_EXPORT_BORROWINGS_DETAIL_GETTER'\r\nexport const GET_EXPORT_ADJUSTMENTS_DETAIL_GETTER = 'GET_EXPORT_ADJUSTMENTS_DETAIL_GETTER'\r\nexport const GET_EXPORT_PO_TRANS_DETAIL_GETTER = 'GET_EXPORT_PO_TRANS_DETAIL_GETTER'\r\nexport const GET_WAREHOUSE_TYPE_GETTER = 'GET_WAREHOUSE_TYPE_GETTER'\r\nexport const PRINT_OUT_IN_PUT_ORDER_GETTER = 'PRINT_OUT_IN_PUT_ORDER_GETTER'\r\n\r\n// Actions\r\nexport const GET_WAREHOUSES_OUTPUT_LIST_ACTION = 'GET_WAREHOUSES_OUTPUT_LIST_ACTION'\r\nexport const PRINT_WAREHOUSES_OUTPUT_ACTION = 'PRINT_WAREHOUSESOUTPUT_ACTION'\r\nexport const GET_WAREHOUSES_OUTPUT_BY_ID_ACTION = 'GET_WAREHOUSES_OUTPUT_BY_ID_ACTION'\r\nexport const GET_PRODUCTS_OF_WAREHOUSES_OUTPUT_ACTION = 'GET_PRODUCTS_OF_WAREHOUSES_OUTPUT_ACTION'\r\nexport const UPDATE_WAREHOUSES_OUTPUT_ACTION = 'UPDATE_WAREHOUSES_OUTPUT_ACTION'\r\nexport const GET_EXPORT_BORROWINGS_ACTION = 'GET_EXPORT_BORROWINGS_ACTION'\r\nexport const GET_EXPORT_ADJUSTMENT_ACTION = 'GET_EXPORT_ADJUSTMENT_ACTION'\r\nexport const GET_EXPORT_PO_TRANS_ACTION = 'GET_EXPORT_PO_TRANS_ACTION'\r\nexport const GET_EXPORT_BORROWINGS_DETAIL_ACTION = 'GET_EXPORT_BORROWINGS_DETAIL_ACTION'\r\nexport const GET_EXPORT_ADJUSTMENT_DETAIL_ACTION = 'GET_EXPORT_ADJUSTMENT_DETAIL_ACTION'\r\nexport const GET_EXPORT_PO_TRANS_DETAIL_ACTION = 'GET_EXPORT_PO_TRANS_DETAIL_ACTION'\r\nexport const GET_WAREHOUSE_TYPE_ACTION = 'GET_WAREHOUSE_TYPE_ACTION'\r\nexport const CREATE_EXPORT_ACTION = 'CREATE_EXPORT_ACTION'\r\nexport const DELETE_WAREHOUSES_ACTION = 'DELETE_WAREHOUSES_ACTION'\r\nexport const PRINT_OUT_IN_PUT_ORDER_ACTION = 'PRINT_OUT_IN_PUT_ORDER_ACTION'\r\n","export default {\r\n // Endpoints\r\n preLoginEndpoint: '/users/preLogin',\r\n loginEndpoint: '/users/login',\r\n registerEndpoint: '/users/register',\r\n changePasswordEndpoint: '/users/change-password',\r\n refreshEndpoint: '/users/refresh-token',\r\n logoutEndpoint: '/users/logout',\r\n reloadCaptchaEndpoint: '/users/reload-captcha',\r\n\r\n // This will be prefixed in authorization header with token\r\n // e.g. Authorization: Bearer \r\n tokenType: 'Bearer',\r\n\r\n // Value of this property will be used as key to store JWT token in storage\r\n storageTokenKeyName: 'accessToken',\r\n storageRefreshTokenKeyName: 'refreshToken',\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport store from '@/store'\r\nimport Vue from 'vue'\r\nimport { initialAbility } from '@/libs/acl/config'\r\nimport router from '@/router/index'\r\nimport jwtDefaultConfig from './jwtDefaultConfig'\r\n\r\nexport default class JwtService {\r\n // Will be used by this service for making API calls\r\n axiosIns = null\r\n\r\n // jwtConfig <= Will be used by this service\r\n jwtConfig = { ...jwtDefaultConfig }\r\n\r\n // For Refreshing Token\r\n isAlreadyFetchingAccessToken = false\r\n\r\n // For Refreshing Token\r\n subscribers = []\r\n\r\n constructor(axiosIns, jwtOverrideConfig) {\r\n this.axiosIns = axiosIns\r\n this.jwtConfig = { ...this.jwtConfig, ...jwtOverrideConfig }\r\n this.axiosIns.interceptors.request.use(\r\n config => {\r\n store.commit('app/UPDATE_IS_LOADING', !config.params || !config.params.invisibleLoading)\r\n if (config.params && config.params.invisibleLoading) {\r\n delete config.params.invisibleLoading\r\n }\r\n\r\n const accessToken = this.getToken()\r\n\r\n if (accessToken) {\r\n config.withCredentials = true\r\n config.headers.Authorization = `${this.jwtConfig.tokenType} ${accessToken}`\r\n config.params = {\r\n ...config.params,\r\n formId: 1,\r\n ctrlId: 1,\r\n }\r\n }\r\n return config\r\n },\r\n error => {\r\n store.commit('app/UPDATE_IS_LOADING', false)\r\n return Promise.reject(error)\r\n },\r\n )\r\n\r\n this.axiosIns.interceptors.response.use(\r\n response => {\r\n store.commit('app/UPDATE_IS_LOADING', false)\r\n if (response.data && response.data.statusCode === 408) {\r\n this.logout()\r\n }\r\n return response\r\n },\r\n error => {\r\n const { response } = error\r\n store.commit('app/UPDATE_IS_LOADING', false)\r\n return Promise.resolve(response || error)\r\n },\r\n )\r\n }\r\n\r\n logout() {\r\n // Remove userData from localStorage\r\n // ? You just removed token from localStorage. If you like, you can also make API call to backend to blacklist used token\r\n localStorage.removeItem(this.jwtConfig.storageTokenKeyName)\r\n localStorage.removeItem(this.jwtConfig.storageRefreshTokenKeyName)\r\n\r\n // Remove userData from localStorage\r\n localStorage.removeItem('userData')\r\n\r\n // Reset ability\r\n Vue.prototype.$ability.update(initialAbility)\r\n\r\n // Redirect to login page\r\n router.replace({ name: 'auth-login' })\r\n }\r\n\r\n onAccessTokenFetched(accessToken) {\r\n this.subscribers = this.subscribers.filter(callback => callback(accessToken))\r\n }\r\n\r\n addSubscriber(callback) {\r\n this.subscribers.push(callback)\r\n }\r\n\r\n getToken() {\r\n return localStorage.getItem(this.jwtConfig.storageTokenKeyName)\r\n }\r\n\r\n getRefreshToken() {\r\n return localStorage.getItem(this.jwtConfig.storageRefreshTokenKeyName)\r\n }\r\n\r\n setToken(value) {\r\n localStorage.setItem(this.jwtConfig.storageTokenKeyName, value)\r\n }\r\n\r\n setRefreshToken(value) {\r\n localStorage.setItem(this.jwtConfig.storageRefreshTokenKeyName, value)\r\n }\r\n\r\n preLogin(...args) {\r\n return this.axiosIns.post(this.jwtConfig.preLoginEndpoint, ...args, { withCredentials: true })\r\n }\r\n\r\n login(...args) {\r\n return this.axiosIns.post(this.jwtConfig.loginEndpoint, ...args)\r\n }\r\n\r\n register(...args) {\r\n return this.axiosIns.post(this.jwtConfig.registerEndpoint, ...args)\r\n }\r\n\r\n changePassword(...args) {\r\n return this.axiosIns.put(this.jwtConfig.changePasswordEndpoint, ...args)\r\n }\r\n\r\n reloadCaptcha(args) {\r\n return this.axiosIns.put(`${this.jwtConfig.reloadCaptchaEndpoint}/${args}`)\r\n }\r\n\r\n refreshToken() {\r\n return this.axiosIns.post(this.jwtConfig.refreshEndpoint, {\r\n refreshToken: this.getRefreshToken(),\r\n })\r\n }\r\n}\r\n","import JwtService from './jwtService'\r\n\r\nexport default function useJwt(axiosIns, jwtOverrideConfig) {\r\n const jwt = new JwtService(axiosIns, jwtOverrideConfig)\r\n\r\n return {\r\n jwt,\r\n }\r\n}\r\n","import useJwt from '@core/auth/jwt/useJwt'\r\nimport axios from '@axios'\r\n\r\nconst { jwt } = useJwt(axios, {})\r\nexport default jwt\r\n","import Vue from 'vue'\r\n\r\n// axios\r\nimport axios from 'axios'\r\n\r\nconst axiosIns = axios.create({\r\n // You can add your headers here\r\n // ================================\r\n baseURL: process.env.VUE_APP_BASE_URL,\r\n // timeout: 1000,\r\n // headers: {'X-Custom-Header': 'foobar'}\r\n})\r\n\r\nVue.prototype.$http = axiosIns\r\n\r\nexport default axiosIns\r\n","export const REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY = 'reportWarehousesInputOutputInventory'\r\n\r\n// Getters\r\nexport const REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_GETTER = 'REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_GETTER'\r\nexport const PRODUCT_CAT_LISTS_GETTER = 'PRODUCT_CAT_LISTS_GETTER'\r\nexport const PRODUCT_LISTS_GETTER = 'PRODUCT_LISTS_GETTER'\r\nexport const PRINT_INPUT_OUTPUT_INVENTORY_GETTER = 'PRINT_INPUT_OUTPUT_INVENTORY_GETTER'\r\nexport const WAREHOUSE_TYPES_GETTER = 'WAREHOUSE_TYPES_GETTER'\r\n// Mutations\r\nexport const CLEAR_ALL_PRODUCT_LISTS_CHECKED = 'CLEAR_ALL_PRODUCT_LISTS_CHECKED'\r\n// Actions\r\nexport const GET_REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_ACTION = 'GET_REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_ACTION'\r\nexport const EXPORT_REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_ACTION = 'EXPORT_REPORT_WAREHOUSES_INPUT_OUTPUT_INVENTORY_ACTION'\r\nexport const GET_PRODUCT_LISTS_ACTIONS = 'GET_PRODUCT_LISTS_ACTIONS'\r\nexport const GET_PRODUCT_CAT_LISTS_ACTIONS = 'GET_PRODUCT_CAT_LISTS_ACTIONS'\r\nexport const PRINT_INPUT_OUTPUT_INVENTORY_ACTION = 'PRINT_INPUT_OUTPUT_INVENTORY_ACTION'\r\nexport const GET_WAREHOUSE_TYPES_ACTION = 'GET_WAREHOUSE_TYPES_ACTION'\r\n","module.exports = __webpack_public_path__ + \"img/brush.275fadc8.svg\";","import useJwt from '@/auth/jwt/useJwt'\r\nimport store from '@/store'\r\nimport CryptoJS from 'crypto-js'\r\nimport {\r\n APP,\r\n // ACTIONS\r\n UPDATE_LOGIN_STATUS_ACTIONS,\r\n} from '@/store/app/type'\r\n/**\r\n * Return if user is logged in\r\n * This is completely up to you and how you want to store the token in your frontend application\r\n * e.g. If you are using cookies to store the application please update this function\r\n */\r\nexport const isUserLoggedIn = () => {\r\n if (localStorage.getItem('userData') && localStorage.getItem(useJwt.jwtConfig.storageTokenKeyName)) {\r\n store.commit(`${APP}/${UPDATE_LOGIN_STATUS_ACTIONS}`, true)\r\n return true\r\n }\r\n store.commit(`${APP}/${UPDATE_LOGIN_STATUS_ACTIONS}`, false)\r\n return false\r\n}\r\n\r\nexport const getUserData = () => {\r\n if (localStorage.getItem('userData')) {\r\n return JSON.parse(CryptoJS.AES.decrypt(localStorage.getItem('userData'), process.env.VUE_APP_AES_SECRET_KEY).toString(CryptoJS.enc.Utf8))\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport const getUserName = () => CryptoJS.AES.decrypt(localStorage.getItem('userChangePass'), process.env.VUE_APP_AES_SECRET_KEY).toString(CryptoJS.enc.Utf8)\r\n\r\nexport const setWeakPasswordChanged = () => {\r\n localStorage.setItem('weakPassChanged', 'true')\r\n}\r\n\r\nexport const removeWeakPasswordChanged = () => {\r\n localStorage.removeItem('weakPassChanged')\r\n}\r\n\r\nexport const getWeakPasswordChanged = () => localStorage.getItem('weakPassChanged')\r\n\r\n/**\r\n * This function is used for demo purpose route navigation\r\n * In real app you won't need this function because your app will navigate to same route for each users regardless of ability\r\n * Please note role field is just for showing purpose it's not used by anything in frontend\r\n * We are checking role just for ease\r\n * NOTE: If you have different pages to navigate based on user ability then this function can be useful. However, you need to update it.\r\n * @param {String} userRole Role of user\r\n */\r\nexport const getHomeRouteForLoggedInUser = userRole => {\r\n if (userRole === 'admin') return '/'\r\n return { name: 'auth-login' }\r\n}\r\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FeatherIcon.vue?vue&type=style&index=0&lang=scss&\"","export const REPORT_CUSTOMERS = 'reportsCustomers'\r\n\r\n// Getters\r\nexport const REPORT_CUSTOMERS_GETTER = 'REPORT_CUSTOMERS_GETTER'\r\nexport const CUSTOMER_TYPES_GETTER = 'CUSTOMER_TYPES_GETTER'\r\nexport const SHOP_LOCATIONS_SEARCH_GETTER = 'SHOP_LOCATIONS_SEARCH_GETTER'\r\n\r\n// Actions\r\nexport const GET_REPORT_CUSTOMERS_ACTION = 'GET_REPORT_CUSTOMERS_ACTION'\r\nexport const EXPORT_REPORT_CUSTOMERS_ACTION = 'EXPORT_REPORT_CUSTOMERS_ACTION'\r\nexport const GET_CUSTOMER_TYPES_ACTION = 'GET_CUSTOMER_TYPES_ACTION'\r\nexport const GET_SHOP_LOCATIONS_SEARCH_ACTION = 'GET_SHOP_LOCATIONS_SEARCH_ACTION'\r\n","export const REPORT_OUTPUT_GOODS = 'reportsWarehousesOutput'\r\n\r\n// Getters\r\nexport const OUTPUT_GOODS_GETTER = 'OUTPUT_GOODS_GETTER'\r\nexport const PRODUCT_CAT_GETTER = 'PRODUCT_CAT_GETTER'\r\nexport const PRODUCT_GETTER = 'PRODUCT_GETTER'\r\nexport const PRINT_OUTPUT_GOODS_GETTER = 'PRINT_OUTPUT_GOODS_GETTER'\r\n\r\n// Actions\r\nexport const GET_OUTPUT_GOODS_ACTION = 'GET_OUTPUT_GOODS_ACTION'\r\nexport const GET_PRODUCT_ACTION = 'GET_PRODUCT_ACTION'\r\nexport const GET_PRODUCT_CAT_ACTION = 'GET_PRODUCT_CAT_ACTION'\r\nexport const EXPORT_OUTPUT_GOODS_ACTION = 'EXPORT_OUTPUT_GOODS_ACTION'\r\nexport const PRINT_OUTPUT_GOODS_ACTION = 'PRINT_OUTPUT_GOODS_ACTION'\r\n","export const REPORT_WAREHOUSES_INPUT = 'reportWarehousesInput'\r\n\r\n// Getters\r\nexport const REPORT_WAREHOUSES_INPUT_GETTER = 'REPORT_WAREHOUSES_INPUT_GETTER'\r\nexport const PRODUCT_CAT_LISTS_GETTER = 'PRODUCT_CAT_LISTS_GETTER'\r\nexport const PRODUCT_LISTS_GETTER = 'PRODUCT_LISTS_GETTER'\r\nexport const PRINT_SHOP_IMPORT_REPORT_GETTER = 'PRINT_SHOP_IMPORT_REPORT_GETTER'\r\n// Mutations\r\nexport const CLEAR_ALL_PRODUCT_LISTS_CHECKED = 'CLEAR_ALL_PRODUCT_LISTS_CHECKED'\r\n// Actions\r\nexport const GET_REPORT_WAREHOUSES_INPUT_ACTION = 'GET_REPORT_WAREHOUSES_INPUT_ACTION'\r\nexport const EXPORT_REPORT_WAREHOUSES_INPUT_ACTION = 'EXPORT_REPORT_WAREHOUSES_INPUT_ACTION'\r\nexport const GET_PRODUCT_LISTS_ACTIONS = 'GET_PRODUCT_LISTS_ACTIONS'\r\nexport const GET_PRODUCT_CAT_LISTS_ACTIONS = 'GET_PRODUCT_CAT_LISTS_ACTIONS'\r\nexport const PRINT_SHOP_IMPORT_REPORT_ACTION = 'PRINT_SHOP_IMPORT_REPORT_ACTION'\r\n","export default {\r\n reasonTypes: [\r\n { id: 'BUYMORE', label: 'Mua thêm' },\r\n { id: 'CHANGEITEM', label: 'Trả hàng' },\r\n { id: 'BREAKITEM', label: 'Hàng hỏng' },\r\n ],\r\n\r\n inputTypes: [\r\n { id: '0', label: 'Nhập hàng' },\r\n { id: '1', label: 'Nhập điều chỉnh' },\r\n { id: '2', label: 'Nhập vay mượn' },\r\n ],\r\n saleChannels: [\r\n { id: '1', label: 'Offline' },\r\n { id: '2', label: 'Online' },\r\n ],\r\n\r\n outputTypes: [\r\n { id: '0', label: 'Xuất trả PO' },\r\n { id: '1', label: 'Xuất điều chỉnh' },\r\n { id: '2', label: 'Xuất vay mượn' },\r\n ],\r\n}\r\n","export default {\r\n outputTypes: [\r\n { id: '0', label: 'Xuất trả PO' },\r\n { id: '1', label: 'Xuất điều chỉnh' },\r\n { id: '2', label: 'Xuất vay mượn' },\r\n ],\r\n inputTypes: [\r\n { id: '0', label: 'Nhập hàng' },\r\n { id: '1', label: 'Nhập điều chỉnh' },\r\n { id: '2', label: 'Nhập vay mượn' },\r\n ],\r\n reasonTypes: [\r\n { id: '0', label: 'Hàng hỏng tại cửa hàng' },\r\n { id: '1', label: 'Hàng hỏng do khách hàng mua tại cửa hàng' },\r\n { id: '2', label: 'Hàng hỏng do khách hàng mua tại điểm lẻ' },\r\n ],\r\n tradingTypes: [\r\n { id: '1', label: 'Nhập chuyển đổi' },\r\n { id: '2', label: 'Xuất chuyển đổi' },\r\n ],\r\n transTypes: [\r\n { id: '1', label: 'Nhập chuyển đổi' },\r\n { id: '2', label: 'Xuất chuyển đổi' },\r\n ],\r\n warehousesType: [\r\n { id: '1', label: 'Nhập hàng' },\r\n { id: '2', label: 'Xuất hàng' },\r\n ],\r\n}\r\n","export const RED_INVOICE = 'salesRedBills'\r\n\r\n// Getters\r\nexport const RED_INVOICES_GETTER = 'RED_INVOICES_GETTER'\r\nexport const CUSTOMERS_GETTER = 'CUSTOMERS_GETTER'\r\nexport const CUSTOMERS_TO_RED_INVOICE_GETTER = 'CUSTOMERS_TO_RED_INVOICE_GETTER'\r\nexport const GET_BILL_OF_SALES_GETTER = 'GET_BILL_OF_SALES_GETTER'\r\nexport const GET_PRODUCTS_IN_SELECTED_BILL_GETTER = 'GET_PRODUCTS_IN_SELECTED_BILL_GETTER'\r\nexport const PRODUCTS_GETTER = 'PRODUCTS_GETTER'\r\nexport const GET_INVOICE_DETAIL_GETTER = 'GET_INVOICE_DETAIL_GETTER'\r\nexport const GET_INVOICE_DETAIL_INFO_GETTER = 'GET_INVOICE_DETAIL_INFO_GETTER'\r\nexport const PRINT_RED_INVOICES_GETTER = 'PRINT_RED_INVOICES_GETTER'\r\nexport const ID_CREATE_RED_INVOICES_GETTER_GETTER = 'ID_CREATE_RED_INVOICES_GETTER_GETTER'\r\n\r\n// Mutations\r\nexport const CLEAR_BILL_OF_SALE_PRODUCTS_UNCHECKED = 'CLEAR_BILL_OF_SALE_PRODUCTS_UNCHECKED'\r\nexport const CLEAR_ALL_BILL_OF_SALES_PRODUCTS = 'CLEAR_ALL_BILL_OF_SALES_PRODUCTS'\r\n\r\n// Actions\r\nexport const GET_RED_INVOICES_ACTION = 'GET_RED_INVOICES_ACTION'\r\nexport const GET_CUSTOMERS_ACTION = 'GET_CUSTOMERS_ACTION'\r\nexport const GET_BILL_OF_SALES_ACTION = 'GET_BILL_OF_SALES_ACTION'\r\nexport const GET_PRODUCTS_IN_SELECTED_BILL_ACTION = 'GET_PRODUCTS_IN_SELECTED_BILL_ACTION'\r\nexport const GET_PRODUCTS_ACTION = 'GET_PRODUCTS_ACTION'\r\nexport const CREATE_RED_BILL_ACTION = 'CREATE_RED_BILL_ACTION'\r\nexport const GET_INVOICE_DETAIL_ACTION = 'GET_INVOICE_DETAIL_ACTION'\r\nexport const DELETE_RED_INVOICE_ACTION = 'DELETE_RED_INVOICE_ACTION'\r\nexport const EXPORT_RED_BILLS_ACTION = 'EXPORT_RED_BILLS_ACTION'\r\nexport const UPDATE_RED_BILLS_ACTION = 'UPDATE_RED_BILLS_ACTION'\r\nexport const PRINT_RED_INVOICES_ACTION = 'PRINT_RED_INVOICES_ACTION'\r\nexport const GET_CUSTOMERS_TO_RED_INVOICE_ACTION = 'GET_CUSTOMERS_TO_RED_INVOICE_ACTION'\r\n","// Note: Role\r\nimport ability from './ability'\r\n\r\nexport const canNavigate = to => to.matched.some(route => ability.can(route.meta.action || 'read', route.meta.resource ? route.meta.resource.toUpperCase() : route.meta.resource))\r\n\r\nexport const _ = undefined\r\n","export default [\r\n {\r\n path: '/dashboard/ecommerce',\r\n name: 'dashboard-ecommerce',\r\n component: () => import('@/views/dashboard/ecommerce/Ecommerce.vue'),\r\n meta: {\r\n resource: 'DashboardEcommerce',\r\n },\r\n },\r\n {\r\n path: '/dashboard/analytics',\r\n name: 'dashboard-analytics',\r\n component: () => import('@/views/dashboard/analytics/Analytics.vue'),\r\n meta: {\r\n resource: 'DashboardAnalytics',\r\n },\r\n },\r\n]\r\n","export default [\r\n {\r\n path: '/sales/sales',\r\n name: 'sales-sales',\r\n component: () => import('@/views/sales/sales/sales-list/SalesList.vue'),\r\n meta: {\r\n pageTitle: 'Bán hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Bán hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'Sales',\r\n },\r\n },\r\n // Khách hàng\r\n {\r\n path: '/sales/customers',\r\n name: 'sales-customers',\r\n component: () => import('@/views/sales/sales-customers/sales-customers-list/SalesCustomersList.vue'),\r\n meta: {\r\n pageTitle: 'Khách hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách khách hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'SalesCustomers',\r\n },\r\n },\r\n {\r\n path: '/sales/customers/create',\r\n name: 'sales-customers-create',\r\n component: () => import('@/views/sales/sales-customers/sales-customers-create/SalesCustomersCreate.vue'),\r\n meta: {\r\n pageTitle: 'Khách hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách khách hàng',\r\n to: '/sales/customers',\r\n },\r\n {\r\n text: 'Thêm mới',\r\n active: true,\r\n },\r\n ],\r\n resource: 'SalesCustomersCreate',\r\n },\r\n },\r\n {\r\n path: '/sales/customers/:id/update',\r\n name: 'sales-customers-update',\r\n component: () => import('@/views/sales/sales-customers/sales-customers-update/SalesCustomersUpdate.vue'),\r\n meta: {\r\n pageTitle: 'Khách hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách khách hàng',\r\n to: '/sales/customers',\r\n },\r\n {\r\n text: 'Cập nhật',\r\n active: true,\r\n },\r\n ],\r\n resource: 'SalesCustomersUpdate',\r\n },\r\n },\r\n // Hoá đơn đỏ\r\n {\r\n path: '/sales/red-bills',\r\n name: 'sales-red-bills',\r\n component: () => import('@/views/sales/sales-red-bills/sales-red-bills-list/SalesRedBillsList.vue'),\r\n meta: {\r\n pageTitle: 'Hoá đơn đỏ',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách hoá đơn đỏ',\r\n active: true,\r\n },\r\n ],\r\n resource: 'SalesRedBills',\r\n },\r\n },\r\n {\r\n path: '/sales/red-bills/create',\r\n name: 'sales-red-bills-create',\r\n component: () => import('@/views/sales/sales-red-bills/sales-red-bills-create/SalesRedBillsCreate.vue'),\r\n meta: {\r\n pageTitle: 'Hoá đơn đỏ',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách hoá đơn đỏ',\r\n to: '/sales/red-bills',\r\n },\r\n {\r\n text: 'Tạo hoá đơn đỏ',\r\n active: true,\r\n },\r\n ],\r\n resource: 'SalesRedBillsCreate',\r\n },\r\n },\r\n // Hoá đơn bán hàng\r\n {\r\n path: '/sales/receipts',\r\n name: 'sales-receipts',\r\n component: () => import('@/views/sales/sales-receipts/sales-receipts-list/SalesReceiptsList.vue'),\r\n meta: {\r\n pageTitle: 'Hoá đơn bán hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách hoá đơn bán hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'SalesReceipts',\r\n },\r\n },\r\n // Hàng trả lại\r\n {\r\n path: '/sales/returned-goods',\r\n name: 'sales-returned-goods',\r\n component: () => import('@/views/sales/sales-returned-goods/sales-returned-goods-list/SalesReturnedGoodsList.vue'),\r\n meta: {\r\n pageTitle: 'Hàng trả lại',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách đơn trả hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'SalesReturnedGoods',\r\n },\r\n },\r\n {\r\n path: '/sales/returned-goods/create',\r\n name: 'sales-returned-goods-create',\r\n component: () => import('@/views/sales/sales-returned-goods/sales-returned-goods-create/SalesReturnedGoodsCreate.vue'),\r\n meta: {\r\n pageTitle: 'Hàng trả lại',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách đơn trả hàng',\r\n to: '/sales/returned-goods',\r\n },\r\n {\r\n text: 'Tạo đơn trả hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'SalesReturnedGoodsCreate',\r\n },\r\n },\r\n // Chi tiết đơn trả hàng\r\n {\r\n path: '/sales/returned-goods/detail/:id',\r\n name: 'sales-returned-goods-detail',\r\n component: () => import('@/views/sales/sales-returned-goods/sales-returned-goods-detail/SalesReturnedGoodsDetail.vue'),\r\n meta: {\r\n pageTitle: 'Hàng trả lại',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách đơn trả hàng',\r\n to: '/sales/returned-goods',\r\n },\r\n {\r\n text: 'Chi tiết đơn trả hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'SalesReturnedGoodsDetail',\r\n },\r\n },\r\n]\r\n","export default [\r\n {\r\n path: '/purchases',\r\n name: 'purchases',\r\n component: () => import('@/views/purchases/purchases-po-list/PurchasesPOList.vue'),\r\n meta: {\r\n pageTitle: 'Mua hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách PO',\r\n active: true,\r\n },\r\n ],\r\n resource: 'Purchases',\r\n },\r\n },\r\n {\r\n path: '/create',\r\n name: 'create',\r\n component: () => import('@/views/purchases/purchases-po-create/PurchasesPOCreate.vue'),\r\n meta: {\r\n pageTitle: 'Mua hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách PO',\r\n to: '/purchases',\r\n },\r\n {\r\n text: 'Lập đơn PO',\r\n active: true,\r\n },\r\n ],\r\n resource: 'POCreation',\r\n },\r\n },\r\n]\r\n","export default [\r\n // Nhập hàng\r\n {\r\n path: '/warehouses/input',\r\n name: 'warehouses-input',\r\n component: () => import('@/views/warehouses/warehouses-input/warehouses-input-list/WarehousesInputList.vue'),\r\n meta: {\r\n pageTitle: 'Nhập hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách nhập hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesInput',\r\n },\r\n },\r\n {\r\n path: '/warehouses/input/create',\r\n name: 'warehouses-input-create',\r\n component: () => import('@/views/warehouses/warehouses-input/warehouses-input-create/WarehousesInputCreate.vue'),\r\n meta: {\r\n pageTitle: 'Nhập hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách nhập hàng',\r\n to: '/warehouses/input',\r\n },\r\n {\r\n text: 'Thêm mới',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesInputCreate',\r\n },\r\n },\r\n {\r\n path: '/warehouses/input/:id/type/:type/po/:poId/update',\r\n name: 'warehouses-input-update',\r\n component: () => import('@/views/warehouses/warehouses-input/warehouses-input-update/WarehousesInputUpdate.vue'),\r\n meta: {\r\n pageTitle: 'Nhập hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách nhập hàng',\r\n to: '/warehouses/input',\r\n },\r\n {\r\n text: 'Cập nhật',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesInputUpdate',\r\n },\r\n },\r\n // Xuất hàng\r\n {\r\n path: '/warehouses/output',\r\n name: 'warehouses-output',\r\n component: () => import('@/views/warehouses/warehouses-output/warehouses-output-list/WarehousesOutputList.vue'),\r\n meta: {\r\n pageTitle: 'Xuất hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách xuất hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesOutput',\r\n },\r\n },\r\n {\r\n path: '/warehouses/output/create',\r\n name: 'warehouses-output-create',\r\n component: () => import('@/views/warehouses/warehouses-output/warehouses-output-create/WarehousesOutputCreate.vue'),\r\n meta: {\r\n pageTitle: 'Xuất hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách xuất hàng',\r\n to: '/warehouses/output',\r\n },\r\n {\r\n text: 'Thêm mới',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesOutputCreate',\r\n },\r\n },\r\n {\r\n path: '/warehouses/output/:id/type/:type/update',\r\n name: 'warehouses-output-update',\r\n component: () => import('@/views/warehouses/warehouses-output/warehouses-output-update/WarehousesOutputUpdate.vue'),\r\n meta: {\r\n pageTitle: 'Xuất hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách xuất hàng',\r\n to: '/warehouses/output',\r\n },\r\n {\r\n text: 'Cập nhật',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesOutputUpdate',\r\n },\r\n },\r\n // Kiểm kê\r\n {\r\n path: '/warehouses/inventory',\r\n name: 'warehouses-inventory',\r\n component: () => import('@/views/warehouses/warehouses-inventory/warehouses-inventory-list/WarehousesInventoryList.vue'),\r\n meta: {\r\n pageTitle: 'Kiểm kê',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách kiểm kê',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesInventory',\r\n },\r\n },\r\n {\r\n path: '/warehouses/inventory/create',\r\n name: 'warehouses-inventory-create',\r\n component: () => import('@/views/warehouses/warehouses-inventory/warehouses-inventory-create/WarehousesInventoryCreate.vue'),\r\n meta: {\r\n pageTitle: 'Kiểm kê',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách kiểm kê',\r\n to: '/warehouses/inventory',\r\n },\r\n {\r\n text: 'Thêm mới',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesInventoryCreate',\r\n },\r\n },\r\n {\r\n path: '/warehouses/inventory/:id/update',\r\n name: 'warehouses-inventory-update',\r\n component: () => import('@/views/warehouses/warehouses-inventory/warehouses-inventory-update/WarehousesInventoryUpdate.vue'),\r\n meta: {\r\n pageTitle: 'Kiểm kê',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách kiểm kê',\r\n to: '/warehouses/inventory',\r\n },\r\n {\r\n text: 'Cập nhật',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesInventoryUpdate',\r\n },\r\n },\r\n // Đổi hàng hỏng\r\n {\r\n path: '/warehouses/exchange-damaged-goods',\r\n name: 'warehouses-exchange-damaged-goods',\r\n component: () => import('@/views/warehouses/warehouses-exchange-damaged-goods/warehouses-exchange-damaged-goods-list/WarehousesExchangeDamagedGoodsList.vue'),\r\n meta: {\r\n pageTitle: 'Đổi hàng hỏng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách đổi hàng hỏng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesExchangeDamagedGoods',\r\n },\r\n },\r\n {\r\n path: '/warehouses/exchange-damaged-goods/create',\r\n name: 'warehouses-exchange-damaged-goods-create',\r\n component: () => import('@/views/warehouses/warehouses-exchange-damaged-goods/warehouses-exchange-damaged-goods-create/WarehousesExchangeDamagedGoodsCreate.vue'),\r\n meta: {\r\n pageTitle: 'Đổi hàng hỏng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách đổi hàng hỏng',\r\n to: '/warehouses/exchange-damaged-goods',\r\n },\r\n {\r\n text: 'Thêm mới',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesExchangeDamagedGoodsCreate',\r\n },\r\n },\r\n {\r\n path: '/warehouses/exchange-damaged-goods/update',\r\n name: 'warehouses-exchange-damaged-goods-update',\r\n component: () => import('@/views/warehouses/warehouses-exchange-damaged-goods/warehouses-exchange-damaged-goods-update/WarehousesExchangeDamagedGoodsUpdate.vue'),\r\n meta: {\r\n pageTitle: 'Đổi hàng hỏng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách đổi hàng hỏng',\r\n to: '/warehouses/exchange-damaged-goods',\r\n },\r\n {\r\n text: 'Sửa',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesExchangeDamagedGoodsUpdate',\r\n },\r\n },\r\n // Combo\r\n {\r\n path: '/warehouses/combo',\r\n name: 'warehouses-combo',\r\n component: () => import('@/views/warehouses/warehouses-combo/warehouses-combo-list/WarehousesComboList.vue'),\r\n meta: {\r\n pageTitle: 'Combo',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách combo',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesCombo',\r\n },\r\n },\r\n {\r\n path: '/warehouses/combo/create',\r\n name: 'warehouses-combo-create',\r\n component: () => import('@/views/warehouses/warehouses-combo/warehouses-combo-create/WarehousesComboCreate.vue'),\r\n meta: {\r\n pageTitle: 'Kho',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách combo',\r\n to: '/warehouses/combo',\r\n },\r\n {\r\n text: 'Thêm mới',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesComboCreate',\r\n },\r\n },\r\n {\r\n path: '/warehouses/combo/detail/:id',\r\n name: 'warehouses-combo-detail',\r\n component: () => import('@/views/warehouses/warehouses-combo/warehouses-combo-detail/WarehousesComboDetail.vue'),\r\n meta: {\r\n pageTitle: 'Kho',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách combo',\r\n to: '/warehouses/combo',\r\n },\r\n {\r\n text: 'Chi tiết nhập xuất combo',\r\n active: true,\r\n },\r\n ],\r\n resource: 'WarehousesComboDetail',\r\n },\r\n },\r\n]\r\n","export default [\r\n {\r\n path: '/reports/returned-goods',\r\n name: 'reports-returned-goods',\r\n component: () => import('@/views/reports/reports-returned-goods/reports-returned-goods-list/ReportsReturnedGoodsList.vue'),\r\n meta: {\r\n pageTitle: 'Hàng trả lại',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách đơn trả hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsReturnedGoods',\r\n },\r\n },\r\n {\r\n path: '/reports/warehouses/output',\r\n name: 'reports-warehouses-output',\r\n component: () => import('@/views/reports/reports-warehouses/reports-warehouses-output/reports-warehouses-output-list/ReportsWarehousesOutputList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo xuất hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách báo cáo xuất hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsWarehousesOutput',\r\n },\r\n },\r\n {\r\n path: '/reports/warehouses/inventory',\r\n name: 'reports-warehouses-inventory',\r\n component: () => import('@/views/reports/reports-warehouses/reports-warehouses-inventory/reports-warehouses-inventory-list/ReportsWarehousesInventoryList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo tồn kho',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách sản phẩm tồn kho',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsWarehousesInventory',\r\n },\r\n },\r\n {\r\n path: '/reports/warehouses/difference-price',\r\n name: 'reports-warehouses-difference-price',\r\n component: () => import('@/views/reports/reports-warehouses/report-warehouses-price-difference/reports-warehouses-price-difference-list/ReportsWarehousesPriceDifferenceList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo chênh lệch giá',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách sản phẩm',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsWarehousesPriceDifference',\r\n },\r\n },\r\n {\r\n path: '/reports/warehouses/promotion',\r\n name: 'reports-warehouses-promotion',\r\n component: () => import('@/views/reports/reports-warehouses/reports-warehouses-promotion/reports-warehouses-promotion-list/ReportsWarehousesPromotionList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo hàng khuyến mãi',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách sản phẩm khuyến mãi',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsWarehousesPromotions',\r\n },\r\n },\r\n {\r\n path: '/reports/warehouses/adjustment',\r\n name: 'reports-warehouses-adjustment',\r\n component: () => import('@/views/reports/reports-warehouses/reports-warehouses-adjustment/reports-warehouses-adjustment-list/ReportsWarehousesAdjustmentList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo nhập xuất điều chỉnh',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách sản phẩm nhập xuất điều chỉnh',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsWarehousesAdjustment',\r\n },\r\n },\r\n {\r\n path: '/reports/warehouses/input',\r\n name: 'reports-warehouses-input',\r\n component: () => import('@/views/reports/reports-warehouses/reports-warehouses-input/reports-warehouses-input-list/ReportsWarehousesInputList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo nhập hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách báo cáo nhập hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsWarehousesInput',\r\n },\r\n },\r\n // Báo cáo xuất nhập tồn\r\n {\r\n path: '/reports/warehouses/input-output-inventory',\r\n name: 'reports-warehouses-input-output-inventory',\r\n component: () => import('@/views/reports/reports-warehouses/reports-warehouses-input-output-inventory/reports-warehouses-input-output-inventory-list/ReportsWarehousesInputOutputInventoryList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo xuất nhập tồn',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách báo cáo xuất nhập tồn',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsWarehousesInputOutputInventory',\r\n },\r\n },\r\n // Báo cáo đổi hàng hỏng\r\n {\r\n path: '/reports/warehouses/exchange-damaged-goods',\r\n name: 'reports-warehouses-exchange-damaged-goods',\r\n component: () => import('@/views/reports/reports-warehouses/reports-warehouses-exchange-damaged-goods/exchange-damaged-goods-list/ExchangeDamagedGoodsList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo đổi hàng hỏng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách báo cáo đổi hàng hỏng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsWarehousesExchangeDamagedGoods',\r\n },\r\n },\r\n // Báo cáo doanh số hóa đơn theo KH\r\n {\r\n path: '/reports/sales/sale-per-customer',\r\n name: 'reports-sales-sale-per-customer',\r\n component: () => import('@/views/reports/reports-sales/reports-sales-sale-receipt-per-customer/sale-receipt-list/SaleReceiptList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo doanh số hóa đơn theo khách hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Báo cáo doanh số hóa đơn theo khách hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsSalesSaleReceiptPerCustomer',\r\n },\r\n },\r\n // báo cáo khách hàng\r\n {\r\n path: '/reports/customers/customers',\r\n name: 'reports-customers',\r\n component: () => import('@/views/reports/reports-customers/reports-customers/reports-customers-list/ReportsCustomersList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo khách hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách báo cáo khách hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsCustomers',\r\n },\r\n },\r\n // báo cáo khách hàng không giao dịch\r\n {\r\n path: '/reports/customers/customers-non-transactional',\r\n name: 'reports-customers-non-transactional',\r\n component: () => import('@/views/reports/reports-customers/reports-customers-non-transactional/reports-customers-non-transactional-list/ReportsCustomersNonTransactionalList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo khách hàng không giao dịch',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách báo cáo khách hàng không giao dịch',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsCustomersNonTransactional',\r\n },\r\n },\r\n // báo cáo hóa đơn theo loại giao hàng\r\n {\r\n path: '/reports/sales/receipt-on-delivery-type',\r\n name: 'reports-sales-receipt-on-delivery-type',\r\n component: () => import('@/views/reports/reports-sales/reports-sales-sale-receipt-on-delivery-type/sale-receipt-on-delivery-list/SaleReceiptOnDeliveryTypeList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo hóa đơn theo loại giao hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách báo cáo hóa đơn theo loại giao hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsSalesReceiptOnDeliveryType',\r\n },\r\n },\r\n // báo cáo bảng kê chi tiết đơn nhập hàng\r\n {\r\n path: '/reports/input-details',\r\n name: 'reports-input-details',\r\n component: () => import('@/views/reports/reports-purchases/reports-purchases-list/ReportsPuchasesList.vue'),\r\n meta: {\r\n pageTitle: 'Bảng kê chi tiết đơn nhập hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Bảng kê chi tiết đơn nhập hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsWarehouseInputDetails',\r\n },\r\n },\r\n // báo cáo bán hàng\r\n {\r\n path: '/reports/sales',\r\n name: 'reports-sales',\r\n component: () => import('@/views/reports/reports-sales/reports-sales/reports-sales-list/ReportsSalesList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo bán hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách báo cáo bán hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsSales',\r\n },\r\n },\r\n // báo cáo doanh số CAT\r\n {\r\n path: '/reports/sales/cat-sale',\r\n name: 'reports-sales-cat-sale',\r\n component: () => import('@/views/reports/reports-sales/reports-sales-cat/reports-sales-cat-list/ReportsSalesCatList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo doanh số CAT',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách báo cáo doanh số CAT',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsSalesCatSale',\r\n },\r\n },\r\n // báo cáo số lượng hóa đơn theo khách hàng\r\n {\r\n path: '/reports/sales/amount-per-customer',\r\n name: 'reports-sales-amount-per-customer',\r\n component: () => import('@/views/reports/reports-sales/reports-sales-amount-receipt-per-customers/reports-sales-amount-receipt-per-customers-list/ReportsSalesAmountReceiptPerCustomersList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo số lượng hóa đơn theo khách hàng',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách số lượng hóa đơn theo khách hàng',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsSalesAmountReceiptPerCustomer',\r\n },\r\n },\r\n // báo cáo danh sách voucher\r\n {\r\n path: '/reports/vouchers',\r\n name: 'reports-vouchers',\r\n component: () => import('@/views/reports/reports-vouchers/reports-vouchers-list/ReportsVouchersList.vue'),\r\n meta: {\r\n pageTitle: 'Báo cáo danh sách voucher',\r\n breadcrumb: [\r\n {\r\n text: 'Danh sách voucher',\r\n active: true,\r\n },\r\n ],\r\n resource: 'ReportsVouchers',\r\n },\r\n },\r\n]\r\n","export default [\r\n {\r\n path: '/login',\r\n name: 'auth-login',\r\n component: () => import('@/views/auth/login/Login.vue'),\r\n meta: {\r\n layout: 'full',\r\n resource: 'Auth',\r\n redirectIfLoggedIn: true,\r\n },\r\n },\r\n {\r\n path: '/reset-password',\r\n name: 'auth-reset-password',\r\n component: () => import('@/views/auth/reset-password/ResetPassword.vue'),\r\n meta: {\r\n layout: 'full',\r\n resource: 'ResetPassword',\r\n // redirectIfLoggedIn: true,\r\n },\r\n },\r\n {\r\n path: '/not-authorized',\r\n name: 'auth-not-authorized',\r\n component: () => import('@/views/auth/not-authorized/NotAuthorized.vue'),\r\n meta: {\r\n layout: 'full',\r\n resource: 'NotAuthorized',\r\n },\r\n },\r\n {\r\n path: '/error-404',\r\n name: 'error-404',\r\n component: () => import('@/views/error/Error404.vue'),\r\n meta: {\r\n layout: 'full',\r\n resource: 'Auth',\r\n action: 'read',\r\n },\r\n },\r\n]\r\n","import Vue from 'vue'\r\nimport VueRouter from 'vue-router'\r\n\r\n// Routes\r\nimport { canNavigate } from '@/libs/acl/routeProtection'\r\nimport { isUserLoggedIn, getUserData, getHomeRouteForLoggedInUser } from '@/auth/utils'\r\nimport dashboard from './routes/dashboard'\r\nimport sales from './routes/sales'\r\nimport purchases from './routes/purchases'\r\nimport warehouses from './routes/warehouses'\r\nimport reports from './routes/reports'\r\nimport auth from './routes/auth'\r\n\r\nVue.use(VueRouter)\r\n\r\nconst router = new VueRouter({\r\n mode: 'history',\r\n // base: process.env.VUE_APP_BASE_HREF,\r\n base: '',\r\n scrollBehavior() {\r\n return { x: 0, y: 0 }\r\n },\r\n routes: [\r\n { path: '/', redirect: { name: 'dashboard-ecommerce' } },\r\n ...auth, // Xác thực\r\n ...dashboard, // Trang chủ\r\n ...sales, // Bán hàng\r\n ...purchases, // Mua hàng\r\n ...warehouses, // Kho\r\n ...reports, // Báo cáo\r\n {\r\n path: '*',\r\n redirect: 'error-404',\r\n },\r\n\r\n ],\r\n})\r\n\r\nrouter.beforeEach((to, _, next) => {\r\n const isLoggedIn = isUserLoggedIn()\r\n\r\n if (to.name === 'auth-reset-password') {\r\n return next()\r\n }\r\n\r\n if (!canNavigate(to)) {\r\n // Redirect to login if not logged in\r\n if (!isLoggedIn) return next({ name: 'auth-login' })\r\n\r\n // If logged in => not authorized\r\n return next({ name: 'auth-not-authorized' })\r\n }\r\n\r\n // Redirect if logged in\r\n if (to.meta.redirectIfLoggedIn && isLoggedIn) {\r\n const userData = getUserData()\r\n next(getHomeRouteForLoggedInUser(userData ? userData.role : null))\r\n }\r\n\r\n if (to.meta.breadcrumb || to.meta.pageTitle) {\r\n const lastItemBreadcrumb = to.meta.breadcrumb.length - 1\r\n document.title = `${to.meta.pageTitle} | ${to.meta.breadcrumb[lastItemBreadcrumb].text}` || 'Kênh cửa hàng'\r\n }\r\n\r\n return next()\r\n})\r\n\r\nexport default router\r\n","module.exports = __webpack_public_path__ + \"img/book.ebc3dab5.svg\";","export const REPORT_SALES_QUANTITY_SALE_RECEIPT = 'reportSalesAmountReceiptPerCustomers'\r\n\r\n// Getters\r\nexport const REPORT_SALES__QUANTITY_SALE_RECEIPT_GETTER = 'REPORT_SALES__QUANTITY_SALE_RECEIPT_GETTER'\r\nexport const REPORT_SALES_QUANTITY_SALE_RECEIPT_CONTENT_GETTER = 'REPORT_SALES_QUANTITY_SALE_RECEIPT_CONTENT_GETTER'\r\nexport const REPORT_SALES_CUSTOMER_TYPES_GETTER = 'REPORT_SALES_CUSTOMER_TYPE_GETTER'\r\n// Actions\r\nexport const GET_CUSTOMERS_TYPES_ACTION = 'GET_CUSTOMERS_TYPES_ACTION'\r\nexport const GET_REPORT_SALES_QUANTITY_SALE_RECEIPTS_ACTION = 'GET_REPORT_SALES_QUANTITY_SALE_RECEIPTS_ACTION'\r\nexport const EXPORT_REPORT_SALES_QUANTITY_RECEIPT_ACTION = 'EXPORT_REPORT_SALES_QUANTITY_RECEIPT_ACTION'\r\n","export const REPORT_WAREHOUSES_DIFFERENCE_PRICE = 'reportWarehousesDifferencePrice'\r\n\r\n// Getters\r\nexport const GET_REPORT_WAREHOUSES_DIFFERENCE_PRICE_GETTER = 'GET_REPORT_WAREHOUSES_DIFFERENCE_PRICE_GETTER'\r\nexport const PRODUCT_CAT_GETTER = 'PRODUCT_CAT_GETTER'\r\nexport const PRODUCT_GETTER = 'PRODUCT_GETTER'\r\nexport const PRINT_REPORT_DIFFERENCE_GETTER = 'PRINT_REPORT_DIFFERENCE_GETTER'\r\n\r\n// Actions\r\nexport const GET_REPORT_WAREHOUSES_DIFFERENCE_PRICE_ACTION = 'GET_REPORT_WAREHOUSES_DIFFERENCE_PRICE_ACTION'\r\nexport const GET_PRODUCT_ACTION = 'GET_PRODUCT_ACTION'\r\nexport const GET_PRODUCT_CAT_ACTION = 'GET_PRODUCT_CAT_ACTION'\r\nexport const EXPORT_REPORT_WAREHOUSES_DIFFERENCE_PRICE_ACTION = 'EXPORT_REPORT_WAREHOUSES_DIFFERENCE_PRICE_ACTION'\r\nexport const PRINT_REPORT_DIFFERENCE_ACTION = 'PRINT_REPORT_DIFFERENCE_ACTION'\r\n","export const REPORT_SALES_SALE_ON_DELIVERY_TYPE = 'reportSalesSaleOnDeliveryType'\r\n\r\n// Getters\r\nexport const REPORT_SALES_SALE_ON_DELIVERY_TYPE_GETTER = 'REPORT_SALES_SALE_ON_DELIVERY_TYPE_GETTER'\r\nexport const REPORT_SALES_DELIVERY_TYPES_CONTENT_GETTER = 'REPORT_SALES_DELIVERY_TYPES_CONTENT_GETTER'\r\nexport const REPORT_SALES_DELIVERY_TYPES_GETTER = 'REPORT_SALES_DELIVERY_TYPES_GETTER'\r\n// Actions\r\nexport const GET_SALE_ON_DELIVERY_TYPE_ACTION = 'GET_SALE_ON_DELIVERY_TYPE_ACTION'\r\nexport const GET_SALES_DELIVERY_TYPES_ACTION = 'GET_SALES_DELIVERY_TYPES_ACTION'\r\nexport const EXPORT_REPORT_SALE_ON_DELIVERY_TYPE_ACTION = 'EXPORT_REPORT_SALE_ON_DELIVERY_TYPE_ACTION'\r\n","module.exports = __webpack_public_path__ + \"img/kchLogo.942b3f63.png\";","module.exports = __webpack_public_path__ + \"img/avatar-s-7.cb1b1e65.jpg\";","import { computed, watch } from '@vue/composition-api'\r\nimport store from '@/store'\r\n\r\nexport default function usAppConfig() {\r\n // ------------------------------------------------\r\n // isVerticalMenuCollapsed\r\n // ------------------------------------------------\r\n const isVerticalMenuCollapsed = computed({\r\n get: () => store.state.verticalMenu.isVerticalMenuCollapsed,\r\n set: val => {\r\n store.commit('verticalMenu/UPDATE_VERTICAL_MENU_COLLAPSED', val)\r\n },\r\n })\r\n\r\n // ------------------------------------------------\r\n // RTL\r\n // ------------------------------------------------\r\n const isRTL = computed({\r\n get: () => store.state.appConfig.layout.isRTL,\r\n set: val => {\r\n store.commit('appConfig/TOGGLE_RTL', val)\r\n },\r\n })\r\n\r\n // ------------------------------------------------\r\n // Skin\r\n // ------------------------------------------------\r\n const skin = computed({\r\n get: () => store.state.appConfig.layout.skin,\r\n set: val => {\r\n store.commit('appConfig/UPDATE_SKIN', val)\r\n },\r\n })\r\n\r\n const skinClasses = computed(() => {\r\n if (skin.value === 'bordered') return 'bordered-layout'\r\n if (skin.value === 'semi-dark') return 'semi-dark-layout'\r\n\r\n // Do not return any class for dark layout because dark layout updates class in body\r\n // Do not return any class for light layout as that is default layout\r\n return null\r\n })\r\n\r\n // ------------------------------------------------\r\n // routerTransition\r\n // ------------------------------------------------\r\n const routerTransition = computed({\r\n get: () => store.state.appConfig.layout.routerTransition,\r\n set: val => {\r\n store.commit('appConfig/UPDATE_ROUTER_TRANSITION', val)\r\n },\r\n })\r\n\r\n // *===============================================---*\r\n // *--------- LAYOUT ---------------------------------------*\r\n // *===============================================---*\r\n\r\n // ------------------------------------------------\r\n // layoutType\r\n // ------------------------------------------------\r\n\r\n const layoutType = computed({\r\n get: () => store.state.appConfig.layout.type,\r\n set: val => {\r\n store.commit('appConfig/UPDATE_LAYOUT_TYPE', val)\r\n },\r\n })\r\n\r\n // Reset skin if skin is semi-dark and move to horizontal layout\r\n watch(layoutType, val => {\r\n if (val === 'horizontal' && skin.value === 'semi-dark') skin.value = 'light'\r\n })\r\n\r\n // ------------------------------------------------\r\n // Content Width (Full/Boxed)\r\n // ------------------------------------------------\r\n const contentWidth = computed({\r\n get: () => store.state.appConfig.layout.contentWidth,\r\n set: val => {\r\n store.commit('appConfig/UPDATE_CONTENT_WIDTH', val)\r\n },\r\n })\r\n\r\n // ------------------------------------------------\r\n // isNavMenuHidden\r\n // ------------------------------------------------\r\n const isNavMenuHidden = computed({\r\n get: () => store.state.appConfig.layout.menu.hidden,\r\n set: val => {\r\n store.commit('appConfig/UPDATE_NAV_MENU_CONFIG', { hidden: val })\r\n },\r\n })\r\n\r\n const navMenuType = computed({\r\n get: () => store.state.appConfig.layout.menu.type,\r\n set: val => {\r\n store.commit('appConfig/UPDATE_NAV_MENU_CONFIG', { type: val })\r\n },\r\n })\r\n\r\n // *===============================================---*\r\n // *--------- NAVBAR ---------------------------------------*\r\n // *===============================================---*\r\n\r\n const navbarBackgroundColor = computed({\r\n get: () => store.state.appConfig.layout.navbar.backgroundColor,\r\n set: val => {\r\n store.commit('appConfig/UPDATE_NAVBAR_CONFIG', { backgroundColor: val })\r\n },\r\n })\r\n\r\n const navbarType = computed({\r\n get: () => store.state.appConfig.layout.navbar.type,\r\n set: val => {\r\n store.commit('appConfig/UPDATE_NAVBAR_CONFIG', { type: val })\r\n },\r\n })\r\n\r\n // *===============================================---*\r\n // *--------- FOOTER ---------------------------------------*\r\n // *===============================================---*\r\n\r\n const footerType = computed({\r\n get: () => store.state.appConfig.layout.footer.type,\r\n set: val => {\r\n store.commit('appConfig/UPDATE_FOOTER_CONFIG', { type: val })\r\n },\r\n })\r\n\r\n return {\r\n isVerticalMenuCollapsed,\r\n isRTL,\r\n skin,\r\n skinClasses,\r\n routerTransition,\r\n\r\n // Navbar\r\n navbarBackgroundColor,\r\n navbarType,\r\n\r\n // Footer\r\n footerType,\r\n\r\n // Layout\r\n layoutType,\r\n contentWidth,\r\n isNavMenuHidden,\r\n navMenuType,\r\n }\r\n}\r\n","export const WAREHOUSES_COMBO = 'warehousesCombo'\r\n\r\n// Getters\r\nexport const GET_WAREHOUSE_COMBO_DETAIL_GETTER = 'GET_WAREHOUSE_COMBO_DETAIL_GETTER'\r\nexport const WAREHOUSES_COMBO_GETTER = 'WAREHOUSES_COMBO_GETTER'\r\nexport const COMBO_PRODUCTS_GETTER = 'COMBO_PRODUCTS_GETTER'\r\nexport const COMBO_PRODUCTS_DETAILS_GETTER = 'COMBO_PRODUCTS_DETAILS_GETTER'\r\nexport const COMBO_PRODUCTS_INFO_GETTER = 'COMBO_PRODUCTS_INFO_GETTER'\r\nexport const WAREHOUSES_TYPE_GETTER = 'WAREHOUSES_TYPE_GETTER'\r\n\r\n// Actions\r\nexport const GET_WAREHOUSE_COMBO_DETAIL_ACTION = 'GET_WAREHOUSE_COMBO_DETAIL_ACTION'\r\nexport const GET_WAREHOUSES_COMBO_ACTIONS = 'GET_WAREHOUSES_COMBO_ACTIONS'\r\nexport const GET_COMBO_PRODUCTS_ACTION = 'GET_COMBO_PRODUCTS_ACTION'\r\nexport const GET_COMBO_PRODUCTS_DETAILS_ACTION = 'GET_COMBO_PRODUCTS_DETAILS_ACTION'\r\nexport const CREATE_COMBO_PRODUCT_ACTION = 'CREATE_COMBO_PRODUCT_ACTION'\r\nexport const GET_WAREHOUSES_TYPE_ACTION = 'GET_WAREHOUSES_TYPE_ACTION'\r\n","export const REPORT_VOUCHERS = 'reportVouchers'\r\n\r\n// Getters\r\nexport const REPORT_VOUCHERS_USED_GETTER = 'REPORT_VOUCHERS_USED_GETTER'\r\n// Actions\r\nexport const GET_REPORT_VOUCHERS_USED_ACTION = 'GET_REPORT_VOUCHERS_USED_ACTION'\r\nexport const EXPORT_REPORT_VOUCHERS_USED_ACTION = 'EXPORT_REPORT_VOUCHERS_USED_ACTION'\r\n","export const PURCHASE = 'purchases'\r\n\r\n// Getters\r\nexport const PO_PRODUCT_GETTER = 'PO_PRODUCT_GETTER'\r\nexport const PO_PRODUCT_MODAL_GETTER = 'PO_PRODUCT_MODAL_GETTER'\r\nexport const PO_LIST_GETTER = 'PO_LIST_GETTER'\r\nexport const PO_DETAIL_GETTER = 'PO_DETAIL_GETTER'\r\nexport const PO_CREATE_DATA_GETTER = 'PO_CREATE_DATA_GETTER'\r\nexport const ALL_PRODUCT_CAT_GETTER = 'ALL_PRODUCT_CAT_GETTER'\r\nexport const CUSTOMER_DEFAULT_GETTER = 'CUSTOMER_DEFAULT_GETTER'\r\nexport const PO_MOQ_GETTER = 'PO_MOQ_GETTER'\r\nexport const CUTOFF_VALID_GETTER = 'CUTOFF_VALID_GETTER'\r\nexport const UPLOAD_PRODUCT_GETTER = 'UPLOAD_PRODUCT_GETTER'\r\nexport const EXCEPTION_DAYS_GETTER = 'EXCEPTION_DAYS_GETTER'\r\n\r\n// Mutations\r\nexport const CLEAR_PO_STATE = 'CLEAR_PO_STATE'\r\n\r\n// Actions\r\nexport const GET_PO_PRODUCT_ACTION = 'GET_PO_PRODUCT_ACTION'\r\nexport const GET_PO_PRODUCT_MODAL_ACTION = 'GET_PO_PRODUCT_MODAL_ACTION'\r\nexport const GET_PO_LIST_ACTION = 'GET_PO_LIST_ACTION'\r\nexport const GET_PO_DETAIL_ACTION = 'GET_PO_DETAIL_ACTION'\r\nexport const APPROVE_OR_CANCEL_ACTION = 'APPROVE_OR_CANCEL_ACTION'\r\nexport const INIT_PO_CREATE_DATA_ACTION = 'INIT_PO_CREATE_DATA_ACTION'\r\nexport const CREATE_PO_ACTION = 'CREATE_PO_ACTION'\r\nexport const GET_ALL_PRODUCT_CAT_ACTION = 'GET_ALL_PRODUCT_CAT_ACTION'\r\nexport const EXPORT_PO_REQUEST_ACTION = 'EXPORT_PO_REQUEST_ACTION'\r\nexport const GET_CUSTOMER_DEFAULT_ACTION = 'GET_CUSTOMER_DEFAULT_ACTION'\r\nexport const GET_MOQ_ACTION = 'GET_MOQ_ACTION'\r\nexport const GET_CUTOFF_VALID = 'GET_CUTOFF_VALID'\r\nexport const APPROVE_WAIT_DELIVERY_ACTION = 'APPROVE_WAIT_DELIVERY_ACTION'\r\nexport const EXPORT_PO_PRODUCT_TEMPLATE = 'EXPORT_PO_PRODUCT_TEMPLATE'\r\nexport const EXPORT_CURRENT_PRODUCT_EXCEL = 'EXPORT_CURRENT_PRODUCT_EXCEL'\r\nexport const UPLOAD_PRODUCTS_EXCEL = 'UPLOAD_PRODUCTS_EXCEL'\r\nexport const GENERATE_PO_XML = 'GENERATE_PO_XML'\r\nexport const GET_EXCEPTION_DAYS = 'GET_EXCEPTION_DAYS'\r\nexport const GENERATE_PO_LIST_EXCEL = 'GENERATE_PO_LIST_EXCEL'\r\n","export default {\r\n synStatus: [\r\n { id: '0', label: 'Chưa xử lý' },\r\n { id: '1', label: 'Đã xử lý' },\r\n ],\r\n productInfoType: [\r\n { id: '1', name: 'Ngành hàng' },\r\n { id: '2', name: 'Ngành hàng con' },\r\n { id: '3', name: 'Nhãn hàng' },\r\n { id: '4', name: 'Hương vị' },\r\n { id: '5', name: 'Bao bì' },\r\n { id: '6', name: 'Group cat' },\r\n { id: '7', name: 'Ngành hàng con phụ' },\r\n ],\r\n salemtPromotionObject: [\r\n { id: '1', label: 'Offline' },\r\n { id: '2', label: 'Online' },\r\n { id: '3', label: 'Online Lazada' },\r\n ],\r\n salemtDeliveryType: [\r\n { id: '8', label: 'Giao tại cửa hàng' },\r\n { id: '9', label: 'Giao tại nhà' },\r\n ],\r\n salePaymentType: [\r\n { id: '0', label: 'Tiền mặt' },\r\n { id: '1', label: 'Chuyển khoản' },\r\n ],\r\n reasonReturnGoods: [\r\n { id: 'BUYMORE', label: 'Mua thêm' },\r\n { id: 'CHANGEITEM', label: 'Đổi hàng' },\r\n { id: 'BREAKITEM', label: 'Hàng lỗi' },\r\n { id: 'ORTHERREASON', label: 'Lý do khác' },\r\n ],\r\n promotionType: [\r\n { id: '0', label: 'Khuyến mãi tự động' },\r\n { id: '1', label: 'Khuyến mãi bằng tay' },\r\n { id: '2', label: 'Khuyến mãi thêm' },\r\n ],\r\n constraintType: [\r\n { id: '0', label: 'All free item' },\r\n { id: '1', label: 'One free item' },\r\n ],\r\n orderType: [\r\n { id: '0', label: 'Hoá đơn offline' },\r\n { id: '1', label: 'Hoá đơn online' },\r\n ],\r\n programPromotionType: [\r\n { id: '19', label: 'ZV19' },\r\n { id: '20', label: 'ZV20' },\r\n { id: '21', label: 'ZV21' },\r\n { id: '23', label: 'ZV23' },\r\n ],\r\n printState: [\r\n { id: '', label: 'Tất cả' },\r\n { id: '1', label: 'Đã in HĐĐ' },\r\n { id: '0', label: 'Chưa in HĐĐ' },\r\n ],\r\n pageSizeRecommendProducts: 8,\r\n pageNumberRecommendProducts: 0,\r\n sizeTextDisplayCustomer: 20,\r\n}\r\n","export default {\r\n jspmDownloadLinks: {\r\n win64: 'https://www.neodynamic.com/downloads/jspm/jspm-4.0.0-win64.msi',\r\n win32: 'https://www.neodynamic.com/downloads/jspm/jspm-4.0.0-win32.msi',\r\n macOS: 'https://www.neodynamic.com/downloads/jspm/jspm-4.0.0.0-macOS.pkg',\r\n linux: 'https://www.neodynamic.com/downloads/jspm/jspm-4.0.21.817-amd64.deb',\r\n },\r\n}\r\n","import router from '@/router'\r\nimport {\r\n reactive,\r\n getCurrentInstance,\r\n watch,\r\n toRefs,\r\n} from '@vue/composition-api'\r\n\r\nimport customerData from '@/@db/customer'\r\nimport commonData from '@/@db/common'\r\nimport warehousesData from '@/@db/warehouses'\r\nimport reportsData from '@/@db/report'\r\nimport salesData from '@/@db/sale'\r\nimport systemData from '@/@db/system'\r\nimport JSPM from 'jsprintmanager'\r\nimport Serial from '@core/libs/serial'\r\nimport {\r\n jspmCheckStatus,\r\n} from '@core/utils/filter'\r\nimport toasts from '@/@core/utils/toasts/toasts'\r\nimport moment from 'moment'\r\nimport useJwt from '@/auth/jwt/useJwt'\r\n\r\nexport const isObject = obj => typeof obj === 'object' && obj !== null\r\n\r\nexport const isToday = date => {\r\n const today = new Date()\r\n return (\r\n /* eslint-disable operator-linebreak */\r\n date.getDate() === today.getDate() &&\r\n date.getMonth() === today.getMonth() &&\r\n date.getFullYear() === today.getFullYear()\r\n /* eslint-enable */\r\n )\r\n}\r\n\r\nconst getRandomFromArray = array => array[Math.floor(Math.random() * array.length)]\r\n\r\n// ? Light and Dark variant is not included\r\n// prettier-ignore\r\nexport const getRandomBsVariant = () => getRandomFromArray(['primary', 'secondary', 'success', 'warning', 'danger', 'info'])\r\n\r\nexport const isDynamicRouteActive = route => {\r\n const { route: resolvedRoute } = router.resolve(route)\r\n return resolvedRoute.path === router.currentRoute.path\r\n}\r\n\r\n// Thanks: https://medium.com/better-programming/reactive-vue-routes-with-the-composition-api-18c1abd878d1\r\nexport const useRouter = () => {\r\n const vm = getCurrentInstance().proxy\r\n const state = reactive({\r\n route: vm.$route,\r\n })\r\n\r\n watch(\r\n () => vm.$route,\r\n r => {\r\n state.route = r\r\n },\r\n )\r\n\r\n return { ...toRefs(state), router: vm.$router }\r\n}\r\n\r\nexport const getGenderLabel = id => {\r\n const commonDataFound = commonData.genders.find(item => `${item.id}` === `${id}`)\r\n return commonDataFound ? commonDataFound.label : null\r\n}\r\n\r\nexport const getCustomerStatusLabel = id => {\r\n const customerDataFound = customerData.status.find(item => `${item.id}` === `${id}`)\r\n return customerDataFound ? customerDataFound.label : null\r\n}\r\n\r\nexport const getWarehousesStatuslabel = id => {\r\n const warehousesDataFound = warehousesData.transTypes.find(item => `${item.id}` === `${id}`)\r\n return warehousesDataFound ? warehousesDataFound.label : null\r\n}\r\n\r\nexport const getInputTypeslabel = id => {\r\n const warehousesDataFound = warehousesData.inputTypes.find(item => `${item.id}` === `${id}`)\r\n return warehousesDataFound ? warehousesDataFound.label : null\r\n}\r\n\r\nexport const getOutputTypeslabel = id => {\r\n const warehousesDataFound = warehousesData.outputTypes.find(item => `${item.id}` === `${id}`)\r\n return warehousesDataFound ? warehousesDataFound.label : null\r\n}\r\n\r\nexport const getReportReasonTypeslabel = id => {\r\n const reportsDataFound = reportsData.reasonTypes.find(item => `${item.id}` === `${id}`)\r\n return reportsDataFound ? reportsDataFound.label : null\r\n}\r\n\r\nexport const getSaleDeliveryTypeslabel = id => {\r\n const salesDataFound = salesData.salemtDeliveryType.find(item => `${item.id}` === `${id}`)\r\n return salesDataFound ? salesDataFound.label : null\r\n}\r\n\r\nexport const formatURLParams = obj => {\r\n // eslint-disable-next-line no-restricted-syntax\r\n for (const propName in obj) {\r\n if (obj[propName] === null || obj[propName] === undefined || obj[propName] === '') {\r\n // eslint-disable-next-line no-param-reassign\r\n delete obj[propName]\r\n }\r\n }\r\n return obj\r\n}\r\n\r\nexport const capitalizeFirstLetter = string => {\r\n if (string) {\r\n const sentence = string.toLowerCase()\r\n const titleCaseSentence = sentence.replace(/^[a-zA-Z]/, string[0].toUpperCase())\r\n return titleCaseSentence\r\n }\r\n return string\r\n}\r\n\r\nexport const getNow = () => {\r\n const date = moment().format('DD/MM/YYYY')\r\n const time = moment().format('LT')\r\n const dateTime = `${date} lúc ${time}`\r\n return dateTime\r\n}\r\n\r\nexport const getCurrentTime = () => {\r\n const date = moment().format('DD/MM/YYYY')\r\n const time = moment().format('LT')\r\n const dateTime = `${date} ${time}`\r\n return dateTime\r\n}\r\n\r\nexport const isEmpty = value => value === undefined || value === '' || value === null\r\n\r\nexport const onlyNumberInput = e => {\r\n const char = String.fromCharCode(e.keyCode)\r\n if (/[0-9]+/.test(char)) {\r\n return true\r\n }\r\n return e.preventDefault()\r\n}\r\n//\r\nexport const quantityByConvFact = (quantity, convFact, toString = true) => {\r\n if (toString) {\r\n const packageNum = Math.floor(Number(quantity) / Number(convFact))\r\n const boxNum = Number(quantity) % Number(convFact)\r\n\r\n return `${packageNum}/${boxNum}`\r\n }\r\n const quantityArray = quantity.split('/')\r\n\r\n if (quantityArray.length < 2) return Number(quantity)\r\n return (Number(quantityArray[0]) * Number(convFact)) + Number(quantityArray[1])\r\n}\r\n\r\nexport const onlyPOQuantityInput = e => {\r\n const char = String.fromCharCode(e.keyCode)\r\n if (/[0-9/]+/.test(char)) {\r\n return true\r\n }\r\n return e.preventDefault()\r\n}\r\n\r\nexport const preventPasteSpecialChars = value => value.replace(/[^0-9]/gi, '')\r\n\r\nexport const onlyDateInput = e => {\r\n const char = String.fromCharCode(e.keyCode)\r\n if (/[0-9/]+/.test(char)) {\r\n return true\r\n }\r\n return e.preventDefault()\r\n}\r\n\r\nexport const formatSortUrl = args => {\r\n let url = ''\r\n if (args.sort !== undefined && args.sort !== null && typeof (args.sort) !== 'string') {\r\n url = args.sort.reduce((prev, curr) => {\r\n if (prev.field) {\r\n return `?sort=${prev.field},${prev.type}&sort=${curr.field},${curr.type}`\r\n }\r\n return `${prev}&sort=${curr.field},${curr.type}`\r\n })\r\n }\r\n return url\r\n}\r\n\r\nexport const sortFilterParams = args => {\r\n if (args.sort !== null && typeof (args.sort) !== 'string') {\r\n const filtered = Object.keys(args)\r\n .filter(key => key !== 'sort')\r\n .reduce((obj, key) => ({\r\n ...obj,\r\n [key]: args[key],\r\n }), {})\r\n return filtered\r\n }\r\n return args\r\n}\r\n\r\nexport const resizeAbleTable = () => {\r\n let thElm\r\n let startOffset\r\n\r\n Array.prototype.forEach.call(\r\n document.querySelectorAll('table th'),\r\n th => {\r\n // eslint-disable-next-line no-param-reassign\r\n th.style.position = 'relative'\r\n\r\n const grip = document.createElement('div')\r\n grip.innerHTML = ' '\r\n grip.style.top = 0\r\n grip.style.right = 0\r\n grip.style.bottom = 0\r\n grip.style.width = '5px'\r\n grip.style.position = 'absolute'\r\n grip.style.cursor = 'col-resize'\r\n grip.addEventListener('mousedown', e => {\r\n thElm = th\r\n startOffset = th.offsetWidth - e.pageX\r\n })\r\n th.appendChild(grip)\r\n },\r\n )\r\n\r\n document.addEventListener('mousemove', e => {\r\n if (thElm) {\r\n thElm.style.width = `${startOffset + e.pageX}px`\r\n }\r\n })\r\n\r\n document.addEventListener('mouseup', () => {\r\n thElm = undefined\r\n })\r\n}\r\n\r\nexport const getJSPMDownloadInfo = () => {\r\n const { platform, userAgent } = window.navigator\r\n\r\n const macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K']\r\n const windowsPlatforms = ['Win32', 'Win64']\r\n const isWin64OS = userAgent.indexOf('WOW64') || platform === 'Win64'\r\n let os = null\r\n let link = null\r\n\r\n if (macosPlatforms.indexOf(platform) !== -1) {\r\n os = 'MacOS'\r\n link = systemData.jspmDownloadLinks.macOS\r\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\r\n os = 'Windows'\r\n\r\n if (isWin64OS) {\r\n link = systemData.jspmDownloadLinks.win64\r\n } else {\r\n link = systemData.jspmDownloadLinks.win32\r\n }\r\n } else if (!os && /Linux/.test(platform)) {\r\n os = 'Linux'\r\n link = systemData.jspmDownloadLinks.linux\r\n }\r\n\r\n return {\r\n os,\r\n link,\r\n }\r\n}\r\n\r\nexport const printFile = (fileName, printerName, pdf) => {\r\n JSPM.JSPrintManager.auto_reconnect = true\r\n let checkConnect = false\r\n for (let i = 0; i < 3; i += 1) {\r\n if ((JSPM.JSPrintManager.websocket_status === JSPM.WSStatus.Open) && (printerName !== '' && printerName !== null && printerName !== undefined)) {\r\n if (jspmCheckStatus()) {\r\n if (printerName.includes('PDF')) {\r\n pdf.save(fileName)\r\n } else {\r\n // setup printer\r\n const cpj = new JSPM.ClientPrintJob()\r\n cpj.clientPrinter = new JSPM.InstalledPrinter(printerName) // get printer\r\n const printContent = new JSPM.PrintFilePDF(pdf.output('datauristring'), JSPM.FileSourceType.URL, fileName, 1)\r\n printContent.printAsGrayscale = false // Options print black/white(=true) and color(=false)\r\n cpj.files.push(printContent)\r\n cpj.sendToClient()\r\n }\r\n checkConnect = true\r\n break\r\n }\r\n }\r\n }\r\n if (!checkConnect) {\r\n toasts.error('Bạn hãy vào cấu hình máy in trước khi in.')\r\n pdf.autoPrint()\r\n const hiddFrame = document.createElement('iframe')\r\n hiddFrame.style.position = 'fixed'\r\n // \"visibility: hidden\" would trigger safety rules in some browsers like safari,\r\n // in which the iframe display in a pretty small size instead of hidden.\r\n // here is some little hack ~\r\n hiddFrame.style.width = '1px'\r\n hiddFrame.style.height = '1px'\r\n hiddFrame.style.opacity = '0.01'\r\n const isSafari = /^((?!chrome|android).)*safari/i.test(window.navigator.userAgent)\r\n if (isSafari) {\r\n // fallback in safari\r\n hiddFrame.onload = () => {\r\n try {\r\n hiddFrame.contentWindow.document.execCommand('print', false, null)\r\n } catch (e) {\r\n hiddFrame.contentWindow.print()\r\n }\r\n }\r\n }\r\n hiddFrame.src = pdf.output('bloburl')\r\n document.body.appendChild(hiddFrame)\r\n }\r\n}\r\n\r\nexport const formatTextCustomerDisplay = (textParam, isLeft) => {\r\n let text = ' '\r\n if (isLeft) {\r\n text = textParam + text\r\n return text.slice(0, 20)\r\n }\r\n text += textParam\r\n return text.slice(text.length - 20, text.length)\r\n}\r\n\r\nlet serial = null\r\nexport const sendToCustomerDisplay = async (textData, isLeft) => {\r\n let initText = textData\r\n if (initText === '' || initText === null || initText === undefined) {\r\n initText = 'Xin kinh chao quy khach.'\r\n }\r\n initText = formatTextCustomerDisplay(initText, isLeft)\r\n if ('serial' in navigator) {\r\n if (serial === null) {\r\n serial = new Serial()\r\n }\r\n if (!serial.isOpen()) {\r\n // await serial.connectAndOpen()\r\n const checkConnect = await serial.autoConnectAndOpenPreviouslyApprovedPort()\r\n if (checkConnect) {\r\n // serial.write(initText)\r\n setTimeout(() => {\r\n serial.write(initText)\r\n }, 500)\r\n }\r\n } else { // no error\r\n serial.write(initText)\r\n }\r\n }\r\n // else {\r\n // toasts.error('Trình duyệt không hỗ trợ kết nối với máy hiển thị.')\r\n // }\r\n}\r\n\r\nexport const notificationResponseMessage = (statusCode, message) => {\r\n let responseMessage = ''\r\n let tokenExpiredMess = ''\r\n if (statusCode) {\r\n switch (statusCode) {\r\n case 200:\r\n responseMessage = 'Thao tác thành công'\r\n break\r\n case 201:\r\n responseMessage = 'Cập nhật thành công'\r\n break\r\n case 400:\r\n responseMessage = 'Yêu cầu không đúng định dạng'\r\n break\r\n case 401:\r\n responseMessage = 'Không được phép truy cập'\r\n break\r\n case 404:\r\n responseMessage = 'Không tìm thấy dữ liệu'\r\n break\r\n case 500:\r\n responseMessage = 'Không thực hiện được yêu cầu'\r\n break\r\n case 501:\r\n responseMessage = 'Không xác định được yêu cầu từ máy khách hàng'\r\n break\r\n case 504:\r\n responseMessage = 'Vượt quá thời gian yêu cầu'\r\n break\r\n case 2002:\r\n responseMessage = 'Hệ thống bị lỗi.'\r\n break\r\n case 6010:\r\n responseMessage = 'Token quên mật khẩu đã hết hạn'\r\n break\r\n case 5003:\r\n responseMessage = 'Hệ thống bị lỗi'\r\n break\r\n case 4001:\r\n responseMessage = 'Tạo đơn PO thất bại'\r\n break\r\n case 408:\r\n localStorage.removeItem(useJwt.jwtConfig.storageTokenKeyName)\r\n localStorage.removeItem(useJwt.jwtConfig.storageRefreshTokenKeyName)\r\n\r\n // Remove userData from localStorage\r\n localStorage.removeItem('userData')\r\n\r\n window.location.replace('/')\r\n responseMessage = 'Đã hết phiên đăng nhập hiện tại. Vui lòng đăng nhập lại để thực hiện thao tác trên hệ thống'\r\n tokenExpiredMess = 'Đã hết phiên đăng nhập hiện tại. Vui lòng đăng nhập lại để thực hiện thao tác trên hệ thống'\r\n localStorage.setItem('tokenExpiredMess', tokenExpiredMess)\r\n break\r\n case 1001:\r\n localStorage.removeItem(useJwt.jwtConfig.storageTokenKeyName)\r\n localStorage.removeItem(useJwt.jwtConfig.storageRefreshTokenKeyName)\r\n\r\n // Remove userData from localStorage\r\n localStorage.removeItem('userData')\r\n\r\n window.location.replace('/')\r\n responseMessage = 'Phiên đăng nhập không hợp lệ. Vui lòng đăng nhập lại để thực hiện thao tác trên hệ thống'\r\n tokenExpiredMess = 'Phiên đăng nhập không hợp lệ. Vui lòng đăng nhập lại để thực hiện thao tác trên hệ thống'\r\n localStorage.setItem('tokenExpiredMess', tokenExpiredMess)\r\n break\r\n case 7050:\r\n responseMessage = message\r\n break\r\n default:\r\n responseMessage = message\r\n }\r\n } else {\r\n responseMessage = 'Không kết nối được với server.'\r\n }\r\n\r\n return responseMessage\r\n}\r\n","export const REPORT_SALES_SALE_RECEIPT = 'reportSalesSaleReceiptPerCustomer'\r\n\r\n// Getters\r\nexport const REPORT_SALES_SALE_RECEIPT_GETTER = 'REPORT_SALES_SALE_RECEIPT_GETTER'\r\nexport const REPORT_SALES_CUSTOMER_TYPES_GETTER = 'REPORT_SALES_CUSTOMER_TYPE_GETTER'\r\n// Actions\r\nexport const GET_CUSTOMERS_TYPES_ACTION = 'GET_CUSTOMERS_TYPES_ACTION'\r\nexport const GET_SALE_RECEIPTS_ACTION = 'GET_SALE_RECEIPTS_ACTION'\r\nexport const EXPORT_REPORT_SALE_RECEIPT_AMOUNT_ACTION = 'EXPORT_REPORT_SALE_RECEIPT_AMOUNT_ACTION'\r\n","// Note: Role\r\nimport Vue from 'vue'\r\nimport { Ability } from '@casl/ability'\r\nimport commonData from '@/@db/common'\r\nimport { getUserData } from '@/auth/utils'\r\nimport { initialAbility } from './config'\r\n// Read ability from localStorage\r\n// * Handles auto fetching previous abilities if already logged in user\r\n// ? You can update this if you store user abilities to more secure place\r\n// ! Anyone can update localStorage so be careful and please update this\r\nconst userData = getUserData()\r\nconst existingAbility = userData ? userData.ability : null\r\n\r\nexport const permission = (formCode, controlCode) => {\r\n const form = Vue.prototype.$ability.j.reverse().find(item => item.subject.toUpperCase() === formCode.toUpperCase() && item.controls.length > 0)\r\n\r\n if (form) {\r\n const control = form.controls.find(item => item.controlCode.toUpperCase() === controlCode.toUpperCase())\r\n\r\n if (control) {\r\n return {\r\n show: control.showStatus !== commonData.showStatus.invisible,\r\n disabled: control.showStatus === commonData.showStatus.disable,\r\n }\r\n }\r\n }\r\n\r\n return {\r\n show: false,\r\n disabled: true,\r\n }\r\n}\r\n\r\nexport default new Ability(existingAbility || initialAbility)\r\n","export const REPORT_SALES_CAT = 'reportSalesCat'\r\n\r\n// Getters\r\nexport const REPORT_SALES_CAT_GETTER = 'REPORT_SALES_CAT_GETTER'\r\nexport const CUSTOMER_TYPES_GETTER = 'CUSTOMER_TYPES_GETTER'\r\nexport const PRINT_REPORT_GETTER = 'PRINT_REPORT_GETTER'\r\n\r\n// Actions\r\nexport const GET_REPORT_SALES_CAT_ACTION = 'GET_REPORT_SALES_CAT_ACTION'\r\nexport const EXPORT_REPORT_SALES_CAT_ACTION = 'EXPORT_REPORT_SALES_CAT_ACTION'\r\nexport const GET_CUSTOMER_TYPES_ACTION = 'GET_CUSTOMER_TYPES_ACTION'\r\nexport const PRINT_REPORT_ACTION = 'PRINT_REPORT_ACTION'\r\n","module.exports = __webpack_public_path__ + \"img/rocket.a6ddf73e.svg\";","export const REPORT_SALES = 'reportSales'\r\n\r\n// Getters\r\nexport const REPORT_SALES_GETTER = 'REPORT_SALES_GETTER'\r\nexport const PRODUCT_CATS_GETTER = 'PRODUCT_CATS_GETTER'\r\nexport const PRODUCTS_GETTER = 'PRODUCTS_GETTER'\r\nexport const BILL_COLLECTORS_GETTER = 'BILL_COLLECTORS_GETTER'\r\nexport const PRINT_REPORT_SALES_GETTER = 'PRINT_REPORT_SALES_GETTER'\r\nexport const SALES_CHANNEL_GETTER = 'SALES_CHANNEL_GETTER'\r\n// Mutations\r\nexport const CLEAR_ALL_PRODUCTS_CHECKED_MUTATION = 'CLEAR_ALL_PRODUCTS_CHECKED_MUTATION'\r\n// Actions\r\nexport const GET_REPORT_SALES_ACTION = 'GET_REPORT_SALES_ACTION'\r\nexport const EXPORT_REPORT_SALES_ACTION = 'EXPORT_REPORT_SALES_ACTION'\r\nexport const GET_PRODUCTS_ACTION = 'GET_PRODUCTS_ACTION'\r\nexport const GET_PRODUCT_CATS_ACTION = 'GET_PRODUCT_CATS_ACTION'\r\nexport const GET_BILL_COLLECTORS_ACTION = 'GET_BILL_COLLECTORS_ACTION'\r\nexport const PRINT_REPORT_SALES_ACTION = 'PRINT_REPORT_SALES_ACTION'\r\nexport const GET_SALES_CHANNEL_ACTION = 'GET_SALES_CHANNEL_ACTION'\r\n","export const REPORT_WAREHOUSES_INVENTORY = 'reportWarehousesInventory'\r\n\r\n// GETTERS\r\nexport const REPORT_WAREHOUSES_INVENTORY_GETTER = 'REPORT_WAREHOUSES_INVENTORY_GETTER'\r\nexport const REPORT_WAREHOUSES_INVENTORY_INFO_GETTER = 'REPORT_WAREHOUSES_INVENTORY_INFO_GETTER'\r\nexport const REPORT_WAREHOUSES_INVENTORY_PAGINATION_GETTER = 'REPORT_WAREHOUSES_INVENTORY_PAGINATION_GETTER'\r\nexport const PRODUCT_LIST_GETTER = 'PRODUCT_LIST_GETTER'\r\nexport const PRODUCT_LIST_PAGINATION_GETTER = 'PRODUCT_LIST_PAGINATION_GETTER'\r\nexport const PRODUCT_CAT_LIST_GETTER = 'PRODUCT_CAT_LIST_GETTER'\r\nexport const PRINT_REPORT_INVENTORY_GETTER = 'PRINT_REPORT_INVENTORY_GETTER'\r\nexport const WAREHOUSE_TYPES_GETTER = 'WAREHOUSE_TYPES_GETTER'\r\n// ACTIONS\r\nexport const GET_REPORT_WAREHOUSES_INVENTORY_ACTION = 'GET_REPORT_WAREHOUSES_INVENTORY_ACTION'\r\nexport const EXPORT_REPORT_INVENTORIES_ACTION = 'EXPORT_REPORT_INVENTORIES_ACTION'\r\nexport const GET_PRODUCT_LIST_ACTION = 'GET_PRODUCT_LIST_ACTION'\r\nexport const GET_PRODUCT_CAT_LIST_ACTION = 'GET_PRODUCT_CAT_LIST_ACTION'\r\nexport const PRINT_REPORT_INVENTORY_ACTION = 'PRINT_REPORT_INVENTORY_ACTION'\r\nexport const GET_WAREHOUSE_TYPES_ACTION = 'GET_WAREHOUSE_TYPES_ACTION'\r\n","export const REPORT_PURCHASES = 'reportPurchases'\r\n\r\n// Getters\r\nexport const REPORT_INPUT_RECEIPT_DETAILS_GETTER = 'REPORT_INPUT_RECEIPT_DETAILS_GETTER'\r\nexport const PRINT_REPORT_INPUT_RECEIPT_DETAILS_GETTER = 'PRINT_REPORT_INPUT_RECEIPT_DETAILS_GETTER'\r\n// Actions\r\nexport const GET_REPORT_INPUT_RECEIPT_DETAILS_ACTION = 'GET_REPORT_INPUT_RECEIPT_DETAILS_ACTION'\r\nexport const EXPORT_REPORT_INPUT_RECEIPT_DETAILS_ACTION = 'EXPORT_REPORT_INPUT_RECEIPT_DETAILS_ACTION'\r\nexport const PRINT_REPORT_INPUT_RECEIPT_DETAILS_ACTION = 'PRINT_REPORT_INPUT_RECEIPT_DETAILS_ACTION'\r\n","// Class to handle serial communications. Currently, only supports text input/output rather than binary data\r\n// Based on https://web.dev/serial/\r\n//\r\n// Currently, this code only works on Chrome and *only* if you enable an experimental flag:\r\n// 1. First, type chrome://flags in the address bar\r\n// 2. Then, in the search box, type \"experimental-web-platform-features\"\r\n// 3. This flag should be set to \"Enabled\"\r\n// 4. Restart your browser\r\n// \r\n// To test that this worked\r\n// 1. Open Chrome to any webpage\r\n// 2. Open the dev console (cmd-option-i on Mac or ctrl-shift-i on Windows) and type: > navigator.serial\r\n// 3. If you see something like \"Serial {onconnect:null, ondisconnect: null}\" then it worked!\r\n// If, instead, it says \"undefined\" then it didn't work. Try restarting your computer and then Chrome.\r\n//\r\n// TODOs:\r\n// - Support binary in addition to text\r\n//\r\n// By Jon E. Froehlich\r\n// http://makeabilitylab.io/\r\n\r\n\r\nconst SerialEvents = Object.freeze({\r\n CONNECTION_OPENED: Symbol(\"New connection opened\"),\r\n CONNECTION_CLOSED: Symbol(\"Connection closed\"),\r\n DATA_RECEIVED: Symbol(\"New data received\"),\r\n ERROR_OCCURRED: Symbol(\"Error occurred\"),\r\n });\r\n module.exports = class Serial {\r\n \r\n constructor() {\r\n this.serialPort = null;\r\n \r\n this.serialWriter = null;\r\n this.serialReader = null;\r\n this.keepReading = false;\r\n \r\n this.readableStreamClosed = null;\r\n this.writableStreamClosed = null;\r\n \r\n // event handling https://stackoverflow.com/a/56612753\r\n this.events = new Map();\r\n \r\n this.knownEvents = new Set(\r\n [SerialEvents.CONNECTION_OPENED,\r\n SerialEvents.CONNECTION_CLOSED,\r\n SerialEvents.DATA_RECEIVED,\r\n SerialEvents.ERROR_OCCURRED]);\r\n \r\n if (navigator.serial) {\r\n navigator.serial.addEventListener(\"connect\", (event) => {\r\n console.log(\"navigator.serial event: connected!\");\r\n });\r\n \r\n navigator.serial.addEventListener(\"disconnect\", (event) => {\r\n console.log(\"navigator.serial event: disconnected!\");\r\n this.close();\r\n });\r\n }\r\n }\r\n \r\n on(label, callback) {\r\n if (this.knownEvents.has(label)) {\r\n if (!this.events.has(label)) {\r\n this.events.set(label, []);\r\n }\r\n this.events.get(label).push(callback);\r\n } else {\r\n console.log(`Could not create event subscription for ${label}. Event unknown.`);\r\n }\r\n }\r\n \r\n fireEvent(event, data = null) {\r\n if (this.events.has(event)) {\r\n for (let callback of this.events.get(event)) {\r\n callback(this, data);\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Automatically connects and opens the previously approved port\r\n * If there are more than one, it takes the top port in the approved port list\r\n */\r\n async autoConnectAndOpenPreviouslyApprovedPort(serialOptions = { baudRate: 9600 }) {\r\n if (navigator.serial) {\r\n const approvedPortList = await navigator.serial.getPorts();\r\n // console.log(\"approvedPortList\", approvedPortList);\r\n \r\n if (approvedPortList.length > 0) {\r\n // console.log(\"Trying to auto-connect to:\", approvedPortList[0].getInfo());\r\n await this.connect(approvedPortList[0]);\r\n \r\n // console.log(\"Attempting to open port:\")\r\n this.open(serialOptions);\r\n this.fireEvent(SerialEvents.CONNECTION_OPENED);\r\n return true\r\n } else {\r\n return this.connectAndOpen(null, serialOptions) \r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Returns true if open and active\r\n */\r\n isOpen() {\r\n return this.serialPort && this.serialReader && this.serialWriter;\r\n }\r\n \r\n /**\r\n * Writes out data as text with a '\\n' appended at end\r\n * @param {*} data \r\n */\r\n async writeLine(data) {\r\n this.write(data + \"\\n\");\r\n }\r\n \r\n /**\r\n * Writes out data as text\r\n * @param {*} data \r\n */\r\n async write(data) {\r\n try {\r\n this.serialWriter.write(data);\r\n } catch (error) {\r\n this.fireEvent(SerialEvents.ERROR_OCCURRED, error)\r\n }\r\n }\r\n \r\n /**\r\n * Close and cleanup serial port\r\n * Code based on https://web.dev/serial/#close-port\r\n */\r\n async close() {\r\n //See https://reillyeon.github.io/serial/#close-method\r\n if (this.serialReader) {\r\n console.log(\"Closing this.serialReader\");\r\n \r\n // from https://reillyeon.github.io/serial/#close-method\r\n this.keepReading = false;\r\n this.serialReader.cancel();\r\n \r\n await this.readableStreamClosed.catch(() => { /* Ignore the error */ });\r\n this.serialReader = null;\r\n this.readableStreamClosed = null;\r\n }\r\n \r\n if (this.serialWriter) {\r\n console.log(\"Closing this.serialWriter\");\r\n //this.serialWriter.releaseLock();\r\n \r\n // try {\r\n // await this.serialWriter.close();\r\n // } catch (error) {\r\n // console.log(\"serialWriter.close() failed with\", error);\r\n // }\r\n await this.serialWriter.close();\r\n await this.writableStreamClosed;\r\n \r\n this.serialWriter = null;\r\n this.writableStreamClosed = null;\r\n }\r\n \r\n if (this.serialPort) {\r\n console.log(\"Closing this.serialPort\");\r\n \r\n await this.serialPort.close();\r\n this.serialPort = null;\r\n }\r\n \r\n this.fireEvent(SerialEvents.CONNECTION_CLOSED);\r\n }\r\n \r\n /**\r\n * Prompts user for approval to connect to a serial device and opens the port to\r\n * approved device \r\n * \r\n * @param {dictionary} portFilters \r\n * @param {dictionary} serialOptions \r\n */\r\n async connectAndOpen(portFilters = null, serialOptions = { baudRate: 9600 }) {\r\n await this.connect(null, portFilters);\r\n if(this.serialPort){\r\n this.open(serialOptions);\r\n return true\r\n // this.fireEvent(SerialEvents.CONNECTION_OPENED);\r\n } else {\r\n return false\r\n // this.fireEvent(SerialEvents.ERROR_OCCURRED, 'Test lỗi hệ thống');\r\n // throw 'Test lỗi hệ thống'\r\n // console.log('ABC');\r\n }\r\n }\r\n \r\n /**\r\n * Attempts to connect to the existing port (if provided). Otherwise prompts the user\r\n * to connect to a new serial device (with the portFilters, if provided)\r\n * \r\n * @param {port} existingPort \r\n * @param {dictionary} portFilters https://reillyeon.github.io/serial/#serialportfilter-dictionary\r\n */\r\n async connect(existingPort = null, portFilters = null) {\r\n try {\r\n // Prompt user to select any serial port.\r\n // The navigator.serial.requestPort() function takes an optional object literal that defines filters. \r\n // Those are used to match any serial device connected over USB with a mandatory USB vendor (usbVendorId) \r\n // and optional USB product identifiers (usbProductId). So, for example:\r\n //\r\n // // start example code\r\n // // Filter on devices with the Arduino Uno USB Vendor/Product IDs.\r\n // const filters = [\r\n // { usbVendorId: 0x2341, usbProductId: 0x0043 },\r\n // { usbVendorId: 0x2341, usbProductId: 0x0001 }\r\n // ];\r\n //\r\n // // Prompt user to select an Arduino Uno device.\r\n // const port = await navigator.serial.requestPort({ filters });\r\n //\r\n // const { usbProductId, usbVendorId } = port.getInfo();\r\n // // end example code\r\n //\r\n \r\n // Get all serial ports the user has previously granted the website access to.\r\n const oldApprovedPortList = await navigator.serial.getPorts();\r\n if (!existingPort) {\r\n // if the user does not pass in an existing port \r\n this.serialPort = await navigator.serial.requestPort(portFilters);\r\n } else if (!oldApprovedPortList.includes(existingPort)) {\r\n // if the passed in port is not actually in the approved list\r\n // console.log(\"The port\", existingPort.getInfo(), \" was not previously approved, prompting user\");\r\n this.serialPort = await navigator.serial.requestPort(portFilters);\r\n } else {\r\n // console.log(\"Attempting connection to pre-approved port: \", existingPort.getInfo());\r\n this.serialPort = existingPort;\r\n }\r\n \r\n // const newApprovedPortList = await navigator.serial.getPorts();\r\n \r\n // console.log(\"Approved ports:\");\r\n // newApprovedPortList.forEach((port, index) => console.log(index, \":\", port.getInfo()));\r\n \r\n // console.log(\"Selected port:\");\r\n // console.log(this.serialPort.getInfo());\r\n // console.log(this.serialPort);\r\n } catch (error) {\r\n this.fireEvent(SerialEvents.ERROR_OCCURRED, error);\r\n }\r\n }\r\n \r\n /**\r\n * Connects to the Web Serial port and starts listening to serial input.\r\n * Defaults to a baud rate of 9600\r\n * \r\n * @param {dictionary} serialOptions See https://reillyeon.github.io/serial/#dom-serialoptions\r\n */\r\n async open(serialOptions = { baudRate: 9600 }) {\r\n try {\r\n // Open the serial port\r\n // This function takes in a SerialOptions dictionary where baudRate is the only required member\r\n // https://reillyeon.github.io/serial/#dom-serialoptions\r\n await this.serialPort.open(serialOptions);\r\n // console.log(\"Opened serial port with settings:\", serialOptions);\r\n // Setup serial output stream as text\r\n const textEncoder = new TextEncoderStream();\r\n this.writableStreamClosed = textEncoder.readable.pipeTo(this.serialPort.writable);\r\n this.serialWriter = textEncoder.writable.getWriter();\r\n // console.log(\"Serial writer set up as:\", this.serialWriter);\r\n \r\n // We communicate with the Arduino using text for now\r\n // TODO: in future could improve this serial.js class to support binary\r\n const textDecoder = new TextDecoderStream();\r\n this.keepReading = true;\r\n this.readableStreamClosed = this.serialPort.readable.pipeTo(textDecoder.writable);\r\n this.serialReader = textDecoder.readable\r\n .pipeThrough(new TransformStream(new LineBreakTransformer()))\r\n .getReader();\r\n\r\n \r\n // And now wait for data from the serial port\r\n while (this.serialPort.readable && this.keepReading) {\r\n try {\r\n while (true) {\r\n const { value, done } = await this.serialReader.read();\r\n \r\n if (done) {\r\n // Allow the serial port to be closed later.\r\n this.serialReader.releaseLock();\r\n break;\r\n }\r\n // console.log(\"Serial received:\", value);\r\n if (value) {\r\n this.fireEvent(SerialEvents.DATA_RECEIVED, value);\r\n }\r\n }\r\n \r\n } catch (error) {\r\n // handle non-fatal error\r\n //this.fireNewErrorEvent(error);\r\n this.fireEvent(SerialEvents.ERROR_OCCURRED, error);\r\n }\r\n finally {\r\n // see https://reillyeon.github.io/serial/#close-method\r\n this.serialReader.releaseLock();\r\n }\r\n }\r\n // this.fireEvent(SerialEvents.CONNECTION_OPENED);\r\n } catch (error) {\r\n // handle non-fatal error\r\n //this.fireNewErrorEvent(error);\r\n this.fireEvent(SerialEvents.ERROR_OCCURRED, error);\r\n }\r\n }\r\n }\r\n \r\n // Class from: https://web.dev/serial/#transforming-streams\r\n class LineBreakTransformer {\r\n constructor() {\r\n // A container for holding stream data until a new line.\r\n this.chunks = \"\";\r\n }\r\n \r\n transform(chunk, controller) {\r\n // Append new chunks to existing chunks.\r\n this.chunks += chunk;\r\n // For each line breaks in chunks, send the parsed lines out.\r\n const lines = this.chunks.split(\"\\r\\n\");\r\n this.chunks = lines.pop();\r\n lines.forEach((line) => controller.enqueue(line));\r\n }\r\n \r\n flush(controller) {\r\n // When the stream is closed, flush any remaining chunks out.\r\n controller.enqueue(this.chunks);\r\n }\r\n }\r\n ","module.exports = __webpack_public_path__ + \"img/avatar-s-8.d6c23222.jpg\";","module.exports = __webpack_public_path__ + \"img/avatar-s-9.397f0acd.jpg\";","module.exports = __webpack_public_path__ + \"img/avatar-s-6.0f4533ab.jpg\";","// Note: Role\r\nexport const initialAbility = [\r\n {\r\n action: 'read',\r\n subject: 'AUTH',\r\n },\r\n]\r\n\r\nexport const _ = undefined\r\n"],"sourceRoot":""}