2557 lines
73 KiB
Markdown
2557 lines
73 KiB
Markdown
|
|
# POZO Retail Web to Andriod by using capcitor package
|
|||
|
|
|
|||
|
|
A short description of what the project does.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📦 Prerequisites
|
|||
|
|
|
|||
|
|
Make sure you have the following installed:
|
|||
|
|
|
|||
|
|
- Node.js (v20+ recommended)
|
|||
|
|
- npm or yarn
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🔧 Required Changes Before Running the App
|
|||
|
|
|
|||
|
|
Before running the application, make the following updates:
|
|||
|
|
|
|||
|
|
### 1️⃣ Update Vite Config
|
|||
|
|
Open the file:
|
|||
|
|
|
|||
|
|
|
|||
|
|
// this is ProtecedRoute.jsx make sure need to cmd or add some thng like this before changing react to capcitor
|
|||
|
|
import { useEffect, useState } from 'react';
|
|||
|
|
import { Routes, Route, useNavigate } from 'react-router-dom';
|
|||
|
|
import { useDispatch } from 'react-redux';
|
|||
|
|
import {
|
|||
|
|
getEmpAccesData,
|
|||
|
|
GenerateLogout,
|
|||
|
|
getSAdminUserAccesData,
|
|||
|
|
PricingAppPricingName,
|
|||
|
|
checkSession,
|
|||
|
|
getCompBranchData,
|
|||
|
|
getCommonAppPreference,
|
|||
|
|
changeWarehouse,
|
|||
|
|
} from './Features/BrachLogin/BranchLogin.js';
|
|||
|
|
import { clearSession, getSession, sessionStore } from './Services/Others';
|
|||
|
|
import {
|
|||
|
|
FeatureAddon,
|
|||
|
|
GlobalFeatAddOnData,
|
|||
|
|
} from './Features/BookingScreen/BookingData/BookingData.js';
|
|||
|
|
import { Suspense } from 'react';
|
|||
|
|
import { gettableData } from './Features/PreferenceMaster/PreferenceMaster.js';
|
|||
|
|
import { useSelector } from 'react-redux';
|
|||
|
|
import { useTemplate } from './utils/useTemplate.js';
|
|||
|
|
|
|||
|
|
const commonUrl = import.meta.env.ENV_COMMON_BASE_URL;
|
|||
|
|
const subDirectory = import.meta.env.BASE_URL;
|
|||
|
|
|
|||
|
|
const ProtectedRoutes = ({ routesConfig }) => {
|
|||
|
|
// useTemplate(
|
|||
|
|
// getSession('CompId'),
|
|||
|
|
// getSession('BranchId'),
|
|||
|
|
// getSession('AppId')
|
|||
|
|
// );
|
|||
|
|
sessionStore('AppId', 2);
|
|||
|
|
sessionStore('BranchId', 791);
|
|||
|
|
sessionStore('AppName', 'Bakery');
|
|||
|
|
sessionStore('CompId', 657);
|
|||
|
|
sessionStore('MobileNo', '8888888888');
|
|||
|
|
sessionStore('UserType', 'Admin');
|
|||
|
|
sessionStore('UserId', 286);
|
|||
|
|
sessionStore('userName', 'Karthiga');
|
|||
|
|
|
|||
|
|
sessionStore(
|
|||
|
|
'auth','eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiODg4ODg4ODg4OCIsIlBhc3N3b3JkIjoiWkB6MTIzNCIsImF1ZCI6WyJodHRwczovL2FwaS5wb3pvLmRldi9wb3pvLXJldGFpbC1hcGkiLCJodHRwczovL2FwaS5wb3pvLmRldi9wb3pvLWNvbW1vbi1hcGkiLCJodHRwczovL2FwaS5wb3pvLmRldi9wb3pvLXNtcy1lbWFpbC10ZW1wbGF0ZS1hcGkiLCJodHRwczovL2FwaS5wb3pvLmRldi9wb3pvLWNvbW1vbi1hcGkiXSwiZXhwIjoxNzc0NjM3OTA5LCJpc3MiOiJodHRwczovL2FwaS5wb3pvLmRldi9Kd3RUb2tlbiJ9.TWDS0cuHGIDW_16EH2RS4z2B-wnuuPmMNd_lre505qY'
|
|||
|
|
);
|
|||
|
|
const navigate = useNavigate();
|
|||
|
|
const dispatch = useDispatch();
|
|||
|
|
const UserType = getSession('UserType');
|
|||
|
|
const [hasRedirected, setHasRedirected] = useState(false);
|
|||
|
|
const AppId = getSession('AppId');
|
|||
|
|
const CompId = getSession('CompId');
|
|||
|
|
const BranchId = getSession('BranchId');
|
|||
|
|
const UserId = getSession('UserId');
|
|||
|
|
const sessionId = getSession('SessionId');
|
|||
|
|
const Warehouse = getSession('Warehouse');
|
|||
|
|
const [accessCheckComplete, setAccessCheckComplete] = useState(false);
|
|||
|
|
const FeatureAddonData = useSelector(GlobalFeatAddOnData);
|
|||
|
|
useTemplate(657, 791, 2);
|
|||
|
|
|
|||
|
|
useEffect(() => {
|
|||
|
|
getApplicationPreference();
|
|||
|
|
}, []);
|
|||
|
|
//sri
|
|||
|
|
// useEffect(() => {
|
|||
|
|
// if (Warehouse) {
|
|||
|
|
// dispatch(changeWarehouse(true));
|
|||
|
|
// }
|
|||
|
|
// }, [Warehouse]);
|
|||
|
|
const getApplicationPreference = async () => {
|
|||
|
|
await dispatch(getCommonAppPreference(AppId)).unwrap();
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const getEmpAccess = async () => {
|
|||
|
|
let data = {
|
|||
|
|
UserId: UserId,
|
|||
|
|
AppId: AppId,
|
|||
|
|
CompId: CompId,
|
|||
|
|
BranchId: BranchId,
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const response = await dispatch(getEmpAccesData(data)).unwrap();
|
|||
|
|
if (response?.data?.statusCode === 1) {
|
|||
|
|
return response?.data?.data?.[0]?.EmpAccessDetails;
|
|||
|
|
}
|
|||
|
|
return null;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const getSadminUserAccess = async () => {
|
|||
|
|
let data = {
|
|||
|
|
UserId: UserId,
|
|||
|
|
AppId: AppId,
|
|||
|
|
};
|
|||
|
|
const response = await dispatch(getSAdminUserAccesData(data)).unwrap();
|
|||
|
|
if (response?.data?.statusCode === 1) {
|
|||
|
|
return response?.data?.data?.[0]?.AppMenuAccessDetails;
|
|||
|
|
}
|
|||
|
|
return null;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const Dinein = async () => {
|
|||
|
|
if (AppId && CompId && BranchId) {
|
|||
|
|
let DineinData = {
|
|||
|
|
AppId: AppId,
|
|||
|
|
CompId: CompId,
|
|||
|
|
BranchId: BranchId,
|
|||
|
|
UserId: UserId,
|
|||
|
|
};
|
|||
|
|
const response = await dispatch(gettableData(DineinData)).unwrap();
|
|||
|
|
if (response?.data?.statusCode === 1) {
|
|||
|
|
const SettingValueData = response?.data?.data
|
|||
|
|
?.find((e) => e.AppId === AppId)
|
|||
|
|
?.SettingDtlDetails?.some(
|
|||
|
|
(e) => e.SettingIdName === 'DineIn' && e.SettingValue === 'Y'
|
|||
|
|
);
|
|||
|
|
const EstimateValueData = response?.data?.data
|
|||
|
|
?.find((e) => e.AppId === AppId)
|
|||
|
|
?.SettingDtlDetails?.some(
|
|||
|
|
(e) => e.SettingIdName === 'Estimation' && e.SettingValue === 'Y'
|
|||
|
|
);
|
|||
|
|
return (SettingValueData, EstimateValueData);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const checkAccess = async (empAccess) => {
|
|||
|
|
if (!empAccess) return false;
|
|||
|
|
let DineinData,
|
|||
|
|
EstimateData = await Dinein();
|
|||
|
|
switch (empAccess) {
|
|||
|
|
case 'Dine In':
|
|||
|
|
case 'KOT':
|
|||
|
|
return !!DineinData;
|
|||
|
|
case 'Estimate':
|
|||
|
|
return !!EstimateData;
|
|||
|
|
default:
|
|||
|
|
return false; // Restrict access if no valid match found
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const getPricingName = async () => {
|
|||
|
|
if (!AppId || !UserId) return;
|
|||
|
|
const data = {
|
|||
|
|
appId: AppId,
|
|||
|
|
userId: UserId,
|
|||
|
|
};
|
|||
|
|
try {
|
|||
|
|
const response = await dispatch(PricingAppPricingName(data)).unwrap();
|
|||
|
|
const responseData = response?.data;
|
|||
|
|
const pricingData = responseData?.data;
|
|||
|
|
const hasAdvance = pricingData?.some(
|
|||
|
|
(item) => item.PricingName === 'Premium'
|
|||
|
|
);
|
|||
|
|
const hasProOrAdvance =
|
|||
|
|
hasAdvance ||
|
|||
|
|
pricingData.some((item) => item.PricingName === 'Customized');
|
|||
|
|
return (hasAdvance, hasProOrAdvance);
|
|||
|
|
} catch (error) {
|
|||
|
|
console.error('Error fetching pricing name:', error);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const checkPlanAccess = async (empAccess, featureAddonData) => {
|
|||
|
|
if (!empAccess) return false;
|
|||
|
|
let Advance,
|
|||
|
|
ProORAdvance = await getPricingName();
|
|||
|
|
switch (empAccess) {
|
|||
|
|
case 'Product Catalogue':
|
|||
|
|
return (
|
|||
|
|
ProORAdvance ||
|
|||
|
|
featureAddonData?.some(
|
|||
|
|
(item) => item?.FeatureAddonName?.toLowerCase() === 'catalog'
|
|||
|
|
)
|
|||
|
|
);
|
|||
|
|
case 'Sales Setup':
|
|||
|
|
case 'Print Setup':
|
|||
|
|
return (
|
|||
|
|
Advance ||
|
|||
|
|
featureAddonData?.some(
|
|||
|
|
(item) =>
|
|||
|
|
item?.FeatureAddonName?.toLowerCase() === 'customized template'
|
|||
|
|
)
|
|||
|
|
);
|
|||
|
|
case 'Kiosk Setup':
|
|||
|
|
case 'Kiosk Sales':
|
|||
|
|
return featureAddonData?.some(
|
|||
|
|
(item) => item?.FeatureAddonName?.toLowerCase() === 'kiosk sales'
|
|||
|
|
);
|
|||
|
|
default:
|
|||
|
|
return false; // Restrict access if no valid match found
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const checkEmpAccess = async (empAccess, currentPath) => {
|
|||
|
|
if (!empAccess) return false;
|
|||
|
|
const Access = await getEmpAccess();
|
|||
|
|
let accessType;
|
|||
|
|
if (currentPath.endsWith('/new')) {
|
|||
|
|
accessType = 'AddAccess';
|
|||
|
|
} else if (currentPath.endsWith('/update')) {
|
|||
|
|
accessType = 'UpdateAccess';
|
|||
|
|
} else {
|
|||
|
|
accessType = 'ReadAccess';
|
|||
|
|
}
|
|||
|
|
// const config = Access?.find(config =>
|
|||
|
|
// config.ConfigName === empAccess && config[accessType] === 'Y'
|
|||
|
|
// );
|
|||
|
|
const config = Access?.find(
|
|||
|
|
(config) =>
|
|||
|
|
(config.ConfigName === empAccess && config[accessType] === 'Y') ||
|
|||
|
|
(currentPath.includes('supplier-master') &&
|
|||
|
|
(config.ConfigName === 'Supplier' ||
|
|||
|
|
config.ConfigName === 'Seller') &&
|
|||
|
|
config[accessType] === 'Y')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
return !!config;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const checkSuperAdminUserAccess = async (empAccess, currentPath) => {
|
|||
|
|
console.log('empAccessData1', empAccess, currentPath);
|
|||
|
|
if (!empAccess) return false;
|
|||
|
|
const Access = await getSadminUserAccess();
|
|||
|
|
let accessType;
|
|||
|
|
if (currentPath.endsWith('/new')) {
|
|||
|
|
accessType = 'AddAccess';
|
|||
|
|
} else if (currentPath.endsWith('/update')) {
|
|||
|
|
accessType = 'UpdateAccess';
|
|||
|
|
} else {
|
|||
|
|
accessType = 'ReadAccess';
|
|||
|
|
}
|
|||
|
|
console.log('empAccessData2', Access, accessType);
|
|||
|
|
// const config = Access?.find(config =>
|
|||
|
|
// config.MenuName === empAccess && config[accessType] === 'Y'
|
|||
|
|
// );
|
|||
|
|
const config = Access?.find(
|
|||
|
|
(config) =>
|
|||
|
|
(config.MenuName === empAccess && config[accessType] === 'Y') ||
|
|||
|
|
(currentPath.includes('supplier-master') &&
|
|||
|
|
(config.MenuName === 'Supplier' || config.MenuName === 'Seller') &&
|
|||
|
|
config[accessType] === 'Y')
|
|||
|
|
);
|
|||
|
|
console.log('empAccessData3', config);
|
|||
|
|
|
|||
|
|
return !!config;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const getEmpAccessFromChildren = (route, currentPath) => {
|
|||
|
|
if (route.path === currentPath) {
|
|||
|
|
return route.empAccess || null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (route.children) {
|
|||
|
|
for (const child of route.children) {
|
|||
|
|
const childPath = `${route.path}/${child.path}`;
|
|||
|
|
if (childPath === currentPath) {
|
|||
|
|
return child.empAccess || null;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return null;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const getEmpAccessDataFromChildren = (route, currentPath) => {
|
|||
|
|
if (route.path === currentPath) {
|
|||
|
|
return route.access || null;
|
|||
|
|
}
|
|||
|
|
if (route.children) {
|
|||
|
|
for (const child of route.children) {
|
|||
|
|
const childPath = `${route.path}/${child.path}`;
|
|||
|
|
if (childPath === currentPath) {
|
|||
|
|
return child.access || null;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return null;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const fetchBranchData = async () => {
|
|||
|
|
const response = await dispatch(
|
|||
|
|
getCompBranchData({ CompId: CompId, AppId: AppId })
|
|||
|
|
).unwrap();
|
|||
|
|
if (response?.data?.statusCode === 1) {
|
|||
|
|
if (response?.data?.data?.length == 1) {
|
|||
|
|
navigate(`${subDirectory}`);
|
|||
|
|
} else {
|
|||
|
|
navigate(`${subDirectory}app-page/branch-login`);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
const Logout = async () => {
|
|||
|
|
const status = 'N'; // replace with your actual status
|
|||
|
|
const res = await dispatch(GenerateLogout({ UserId, status })).unwrap();
|
|||
|
|
if (res?.data?.statusCode === 1) {
|
|||
|
|
sessionStorage.clear();
|
|||
|
|
window.location.replace(`${commonUrl}`);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const renderRoutes = (routes) => {
|
|||
|
|
return routes.map(({ path, component: Component, children }) => {
|
|||
|
|
const fullPath = `${path}`;
|
|||
|
|
|
|||
|
|
if (!Component) {
|
|||
|
|
console.error(`Component not found for path: ${fullPath}`);
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (children) {
|
|||
|
|
return (
|
|||
|
|
<Route key={fullPath} path={fullPath} element={<Component />}>
|
|||
|
|
{children.map(({ path: childPath, component: ChildComponent }) => {
|
|||
|
|
if (!ChildComponent) {
|
|||
|
|
console.error(
|
|||
|
|
`Child component not found for path: ${childPath}`
|
|||
|
|
);
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
return (
|
|||
|
|
<Route
|
|||
|
|
key={childPath}
|
|||
|
|
path={childPath}
|
|||
|
|
element={<ChildComponent />}
|
|||
|
|
/>
|
|||
|
|
);
|
|||
|
|
})}
|
|||
|
|
</Route>
|
|||
|
|
);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return <Route key={fullPath} path={fullPath} element={<Component />} />;
|
|||
|
|
});
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
return (
|
|||
|
|
<Suspense fallback={<div></div>}>
|
|||
|
|
<Routes>{renderRoutes(routesConfig)}</Routes>
|
|||
|
|
</Suspense>
|
|||
|
|
);
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
export default ProtectedRoutes;
|
|||
|
|
/// Routes config
|
|||
|
|
import React from 'react';
|
|||
|
|
import { lazy } from 'react';
|
|||
|
|
const CommonMaster = lazy(
|
|||
|
|
() => import('./Pages/CommonMaster/CommonMaster.jsx')
|
|||
|
|
);
|
|||
|
|
const ConfigType = lazy(() => import('./Pages/ConfigType/ConfigTypeForm.jsx'));
|
|||
|
|
const AdminTax = lazy(() => import('./Pages/AdminTax/AdminTaxForm.jsx'));
|
|||
|
|
const ProductForm = lazy(() => import('./Pages/Product/ProductForm.jsx'));
|
|||
|
|
const Sport_ProductForm = lazy(
|
|||
|
|
() => import('./Pages/Product/SportsMaster.jsx')
|
|||
|
|
);
|
|||
|
|
const ShiftMasterList = lazy(
|
|||
|
|
() => import('./Pages/ShiftMaster/ShiftMasterList.jsx')
|
|||
|
|
);
|
|||
|
|
const ShiftMasterForm = lazy(
|
|||
|
|
() => import('./Pages/ShiftMaster/ShiftMasterForm.jsx')
|
|||
|
|
);
|
|||
|
|
const EmployeeMasterList = lazy(
|
|||
|
|
() => import('./Pages/EmpMaster/EmpMasterList.jsx')
|
|||
|
|
);
|
|||
|
|
const EmployeeMasterForm = lazy(
|
|||
|
|
() => import('./Pages/EmpMaster/EmpMasterForm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const SupplierMasterList = lazy(
|
|||
|
|
() => import('./Pages/SupplierMaster/SupplierMasterList.jsx')
|
|||
|
|
);
|
|||
|
|
const SupplierMasterForm = lazy(
|
|||
|
|
() => import('./Pages/SupplierMaster/SupplierMasterForm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ComponentMasterForm = lazy(
|
|||
|
|
() => import('./Pages/UiComponentPage/ComponentForm.jsx')
|
|||
|
|
);
|
|||
|
|
const ComponentMasterList = lazy(
|
|||
|
|
() => import('./Pages/UiComponentPage/ComponentList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const CustomerForm = lazy(
|
|||
|
|
() => import('./Pages/CustomerMaster/CustMasterForm.jsx')
|
|||
|
|
);
|
|||
|
|
const CustomerMasterList = lazy(
|
|||
|
|
() => import('./Pages/CustomerMaster/CustMasterList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const DateWiseReport = lazy(
|
|||
|
|
() => import('./Pages/Reports/DateWiseReport/DateWiseReport.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ItemWiseReport = lazy(
|
|||
|
|
() => import('./Pages/Reports/ItemWiseReport/ItemWiseReport.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const Reprint = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/BookingScreen/Components/OtherConponents/Reprint/BSReprint.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const BookingSelectionPage = lazy(
|
|||
|
|
() => import('./Pages/BookingScreen/Components/MainPage/MainPage.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PrintSelectionPage = lazy(
|
|||
|
|
() => import('./Pages/BookingScreen/Components/PrintMainPage/MainPage.jsx')
|
|||
|
|
);
|
|||
|
|
const KioskMainPage = lazy(
|
|||
|
|
() => import('./Pages/BookingScreen/Components/Kiosk/KioskMainPage.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const BookingPage = lazy(() => import('./Pages/BookingScreen/BookingPage.jsx'));
|
|||
|
|
|
|||
|
|
const StockForm = lazy(() => import('./Pages/StockMaster/StockForm.jsx'));
|
|||
|
|
|
|||
|
|
const StockList = lazy(() => import('./Pages/StockMaster/StockList.jsx'));
|
|||
|
|
|
|||
|
|
const DiningMasterList = lazy(() => import('./Pages/Dining/DiningList.jsx'));
|
|||
|
|
|
|||
|
|
const DiningMasterForm = lazy(() => import('./Pages/Dining/DiningForm.jsx'));
|
|||
|
|
|
|||
|
|
const TableBooking = lazy(
|
|||
|
|
() => import('./Pages/Tablebooking/TableBooking.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ComboMaster = lazy(() => import('./Pages/ComboPack/ComboMaster.jsx'));
|
|||
|
|
|
|||
|
|
const ComboList = lazy(() => import('./Pages/ComboPack/ComboMasterlist.jsx'));
|
|||
|
|
const EmpAccessForm = lazy(() => import('./Pages/EmpAccess/EmpAccessForm.jsx'));
|
|||
|
|
const EmpAccessList = lazy(() => import('./Pages/EmpAccess/EmpAccessList.jsx'));
|
|||
|
|
|
|||
|
|
const EmpScreenAccessList = lazy(
|
|||
|
|
() => import('./Pages/EmpScreenAccess/EmpScreenAccessList.jsx')
|
|||
|
|
);
|
|||
|
|
const EmpScreenRightsAccess = lazy(
|
|||
|
|
() => import('./Pages/EmpScreenAccess/EmpScreenRightsAccess.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PreferenceList = lazy(
|
|||
|
|
() => import('./Pages/Preference/PreferenceList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PaymentOptions = lazy(
|
|||
|
|
() => import('./Pages/Payment/PaymentOptions/PaymentOptions.jsx')
|
|||
|
|
);
|
|||
|
|
const PaymentDetails = lazy(
|
|||
|
|
() => import('./Pages/Payment/PaymentDetails/PaymentDetailsForm.jsx')
|
|||
|
|
);
|
|||
|
|
const PaymentDetailsList = lazy(
|
|||
|
|
() => import('./Pages/Payment/PaymentDetails/PaymentDetailsList.jsx')
|
|||
|
|
);
|
|||
|
|
const PaymentReceivedRetail = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/Payment/PaymentReceivedRetail/PaymentReceivedRetail.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ExtraChargesList = lazy(
|
|||
|
|
() => import('./Pages/ExtraCharges/ExtraChargesList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const BranchLogin = lazy(() => import('./Pages/BranchLogin/BranchLogin.jsx'));
|
|||
|
|
const BackToBranchLogin = lazy(
|
|||
|
|
() => import('./Pages/BranchLogin/BackToBranchLogin.jsx')
|
|||
|
|
);
|
|||
|
|
const Logout = lazy(() => import('./Pages/Logout.jsx'));
|
|||
|
|
|
|||
|
|
const BacktoLogin = lazy(() => import('./Pages/BranchLogin/BacktoLogin.jsx'));
|
|||
|
|
|
|||
|
|
const StockPriceUpdate = lazy(
|
|||
|
|
() => import('./Pages/StockPriceUpdate/StockPriceUpdate.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ProductCatalogueList = lazy(
|
|||
|
|
() => import('./Pages/ProductCatlogue/ProductcatlogueList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const KOT = lazy(() => import('./Pages/Reports/KOT/kot.jsx'));
|
|||
|
|
|
|||
|
|
const CustomerKOTDisplay = lazy(
|
|||
|
|
() => import('./Pages/Reports/KOT/CustomerKOTDisplay.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const RedirectApps = lazy(() => import('./Pages/RedirectApps.jsx'));
|
|||
|
|
|
|||
|
|
const WSTransaction = lazy(
|
|||
|
|
() => import('./Pages/WholeSaleTransaction/WSSalesTransaction.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const LedgerReport = lazy(
|
|||
|
|
() => import('./Pages/Reports/LedgerReport/LedgerReport.jsx')
|
|||
|
|
);
|
|||
|
|
const PaymentDetailsPage = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/BookingScreen/Components/BookingFunctionality/PaymentDetailsPage.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const CreditCustomerPrint = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/BookingScreen/Components/BookingFunctionality/CreditDownloadpage.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const Cancellation = lazy(
|
|||
|
|
() => import('./Pages/CancelReschedule/Cancellation.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ChangePaymentmode = lazy(
|
|||
|
|
() => import('./Pages/CancelReschedule/ChangePaymentmode.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const CancellationList = lazy(
|
|||
|
|
() => import('./Pages/CancelReschedule/CancellationList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const CancelApplicableProd = lazy(
|
|||
|
|
() => import('./Pages/CancelReschedule/CancelApplicableProd.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const CancellationListPending = lazy(
|
|||
|
|
() => import('./Pages/CancelReschedule/CancelPendingPayment.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const AndroidApp = lazy(() => import('./Pages/AndroidApp/AndroidApp.jsx'));
|
|||
|
|
|
|||
|
|
const EstimateItemWiseReport = lazy(
|
|||
|
|
() => import('./Pages/Reports/Estimate/EstimateItemWiseReport.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const EstimateDateWiseReport = lazy(
|
|||
|
|
() => import('./Pages/Reports/Estimate/EstimateDateWiseReport.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const OfferForm = lazy(() => import('./Pages/Offer/Offer/OfferFormNew.jsx'));
|
|||
|
|
|
|||
|
|
const OfferList = lazy(() => import('./Pages/Offer/Offer/OfferListNew.jsx'));
|
|||
|
|
|
|||
|
|
const ItemWise = lazy(() => import('./Pages/Offer/ItemOffer/ItemWiseForm.jsx'));
|
|||
|
|
const SalesWiseForm = lazy(
|
|||
|
|
() => import('./Pages/Offer/SalesOffer/SalesWiseForm.jsx')
|
|||
|
|
);
|
|||
|
|
const SalesWiseList = lazy(
|
|||
|
|
() => import('./Pages/Offer/SalesOffer/SalesWiseList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const QuantityWise = lazy(
|
|||
|
|
() => import('./Pages/Offer/QuantityOffer/QuantityWiseForm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const BuyOneGetOneForm = lazy(
|
|||
|
|
() => import('./Pages/Offer/BuyOneGetOneOffer/BuyOneGetOneForm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const LoyaltyPointsList = lazy(
|
|||
|
|
() => import('./Pages/Offer/LoyaltyPoints/LoyaltyPointsList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const BundleOfferForm = lazy(
|
|||
|
|
() => import('./Pages/Offer/BundleOffer/BundleOfferForm.jsx')
|
|||
|
|
);
|
|||
|
|
const BundleOfferList = lazy(
|
|||
|
|
() => import('./Pages/Offer/BundleOffer/BundleOfferList.jsx')
|
|||
|
|
);
|
|||
|
|
const CouponWiseOfferlist = lazy(
|
|||
|
|
() => import('./Pages/Offer/CouponOffer/CouponWiseOfferlist.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PromocodeList = lazy(
|
|||
|
|
() => import('./Pages/Offer/PromoCode/PromocodeList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const OfferCodeList = lazy(
|
|||
|
|
() => import('./Pages/Offer/OfferCode/OfferCodeList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PricingPage = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/BookingScreen/Components/UtillComponents/PricingPage.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PurchaseOrder = lazy(
|
|||
|
|
() => import('./Pages/PurchaseOrder/PurchaseOrder.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PurchaseOrderMail = lazy(
|
|||
|
|
() => import('./Pages/PurchaseOrder/PurchaseOrderMail.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PurchaseOrderList = lazy(
|
|||
|
|
() => import('./Pages/PurchaseOrder/PurchaseOrderList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const StockReceivedList = lazy(
|
|||
|
|
() => import('./Pages/StockTransfer/StockReceivedList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const GstInvoiceSetUpForm = lazy(
|
|||
|
|
() => import('./Pages/GstInvoiceSetup/GstInvoiceSetUpForm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const gstInvoiceSetUpList = lazy(
|
|||
|
|
() => import('./Pages/GstInvoiceSetup/GstInvoiceSetupList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const StockinHand = lazy(() => import('./Pages/StockinHand/StockinHand.jsx'));
|
|||
|
|
|
|||
|
|
const PurchaseReturn = lazy(
|
|||
|
|
() => import('./Pages/PurchaseReturn/purchaseReturn.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PurchaseReturnget = lazy(
|
|||
|
|
() => import('./Pages/PurchaseReturn/PurchaseReturnGet.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const KioskBookingPage = lazy(
|
|||
|
|
() => import('./Pages/Kiosk/KioskBookingPage.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const KioskBookingReceipt = lazy(
|
|||
|
|
() => import('./Pages/Kiosk/PaymentGateway/PaymentGatewayReceipt.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const KioskComponentList = lazy(
|
|||
|
|
() => import('./Pages/KioskComponent/KioskComponentList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const CustomerDisplay = lazy(
|
|||
|
|
() => import('./Pages/CustomerDisplay/CustomerDisplay.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PurchaseQuotationForm = lazy(
|
|||
|
|
() => import('./Pages/PurchaseQuotation/PurchaseQuotationForm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const DeliveryChallanForm = lazy(
|
|||
|
|
() => import('./Pages/DeliveryChallan/Deliverychallan.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const DeliveryChallanList = lazy(
|
|||
|
|
() => import('./Pages/DeliveryChallan/DeliverychallanList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ComboOfferMaster = lazy(
|
|||
|
|
() => import('./Pages/Offer/ComboOfferPack/ComboOfferForm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PaymentDeviceForm = lazy(
|
|||
|
|
() => import('./Pages/Payment/PaymentDevice/PaymentDeviceForm.jsx')
|
|||
|
|
);
|
|||
|
|
const PaymentFailedDetailsList = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/Payment/PaymentFailedDetails/PaymentFailedDetailsList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const CounterCategoryMappingForm = lazy(
|
|||
|
|
() => import('./Pages/CounterCategoryMapping/CounterCategoryMappingForm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ImageBulkUpload = lazy(
|
|||
|
|
() => import('./Pages/ImageBulkUpload/ImageBulkUpload.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const WholesaleBookingPage = lazy(
|
|||
|
|
() => import('./Pages/PurchaseScreen/LayoutScreen8/LayoutScreen8.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const WholeSaleProductList = lazy(
|
|||
|
|
() => import('./Pages/Wholesale/ProductList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ProductEntry = lazy(() => import('./Pages/Wholesale/ProductEntry.jsx'));
|
|||
|
|
|
|||
|
|
const ProductEntryList = lazy(
|
|||
|
|
() => import('./Pages/Wholesale/ProductEntryList.jsx')
|
|||
|
|
);
|
|||
|
|
const ItemEntry = lazy(
|
|||
|
|
() => import('./Pages/Wholesale/ItemEntry/ItemEntry.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const WsPreorder = lazy(
|
|||
|
|
() => import('./Pages/Wholesalespreorder/WholesalePreorderList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const WsPreorderForm = lazy(
|
|||
|
|
() => import('./Pages/Wholesalespreorder/WholesalePreorderForm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ExtraChrgesList = lazy(
|
|||
|
|
() => import('./Pages/Wholesale/ItemEntry/ExtraChrgesList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const SalesBillCancel = lazy(
|
|||
|
|
() => import('./Pages/SalesRemoval/SalesBillCancelList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const WholeSaleAbstract = lazy(
|
|||
|
|
() => import('./Pages/WholeSaleAbstract/WholeSaleAbstract.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const WholeSaleSellerAbstract = lazy(
|
|||
|
|
() => import('./Pages/WholeSaleAbstract/WholeSaleSellerAbstract.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PaymentReceived = lazy(
|
|||
|
|
() => import('./Pages/WholeSaleTransaction/PaymentReceived.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const WholeSaleSalesReport = lazy(
|
|||
|
|
() => import('./Pages/WholeSaleReport/WholeSalesSalesReport.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const WholeSalePurchaseReport = lazy(
|
|||
|
|
() => import('./Pages/WholeSaleReport/WholeSalePurchaseReport.jsx')
|
|||
|
|
);
|
|||
|
|
const WholeSalePaymentPurchaseReport = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/WholesalePaymentReport/WholeSalePaymentPurchaseReport.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const WholeSalePaymentSalesReport = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/WholesalePaymentReport/WholeSalePaymementSaleReport.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const SpeechLanguagesList = lazy(
|
|||
|
|
() => import('./Pages/SpeechLanguages/SpeechLanguagesList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const LegderList = lazy(
|
|||
|
|
() => import('./Pages/WholeSaleLedger/WholeSaleLedger.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const SellerMasterTran = lazy(
|
|||
|
|
() => import('./Pages/WholeSaleTransaction/SellerMasterTransaction.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const TicketForm = lazy(() => import('./Pages/Ticket/TicketForm.jsx'));
|
|||
|
|
|
|||
|
|
const ThemeCreation = lazy(
|
|||
|
|
() => import('./Pages/BookingScreen/Components/ThemeCreation/ThemeList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ThemeSelection = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/BookingScreen/Components/ThemeCreation/ThemePreview.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const BarcodeTemplateSetup = lazy(
|
|||
|
|
() => import('./Pages/BarcodeSetup/BarcodeTemplateSetup.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const BarcodeComponentList = lazy(
|
|||
|
|
() => import('./Pages/BarcodeComponent/BarcodeComponentList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const StoreRecipelist = lazy(
|
|||
|
|
() => import('./Pages/StoreKitchen/StoreRecipe/StoreRecipelist.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const StoreRecipeform = lazy(
|
|||
|
|
() => import('./Pages/StoreKitchen/StoreRecipe/StoreRecipeform.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const Storekitchenlist = lazy(
|
|||
|
|
() => import('./Pages/StoreKitchen/StoretoKitchen/StoretoKitchenlist.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const StoreKitchenform = lazy(
|
|||
|
|
() => import('./Pages/StoreKitchen/StoretoKitchen/Storetokitchenform.jsx')
|
|||
|
|
);
|
|||
|
|
import { getSession, sessionStore } from './Services/Others';
|
|||
|
|
import axios from 'axios';
|
|||
|
|
const KitchenFinishlist = lazy(
|
|||
|
|
() => import('./Pages/StoreKitchen/StoreKitchenFinish/KitchenFinishlist.jsx')
|
|||
|
|
);
|
|||
|
|
const KitechenFinishform = lazy(
|
|||
|
|
() => import('./Pages/StoreKitchen/StoreKitchenFinish/KitechenFinishform.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const FreeProductList = lazy(
|
|||
|
|
() => import('./Pages/FreeProducts/FreeProduct/FreeProductList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const FreePurchaseEnteryForm = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/FreeProducts/FreePurchase/FreePurchaseEntery/FreePurchaseEnteryForm.jsx')
|
|||
|
|
);
|
|||
|
|
const FreePurchaseEnteryList = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/FreeProducts/FreePurchase/FreePurchaseEntery/FreePurchaseEnteryList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const FreePurchaseOrderList = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/FreeProducts/FreePurchase/FreePurchaseOrder/FreePurchaseOrderList.jsx')
|
|||
|
|
);
|
|||
|
|
const FreePurchaseOrderForm = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/FreeProducts/FreePurchase/FreePurchaseOrder/FreePurchaseOrderForm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const FreePurchaseReturnList = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/FreeProducts/FreePurchase/FreePurchaseReturn/FreePurchaseReturnList.jsx')
|
|||
|
|
);
|
|||
|
|
const FreePurchaseReturnForm = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/FreeProducts/FreePurchase/FreePurchaseReturn/FreePurchaseReturnForm.jsx')
|
|||
|
|
);
|
|||
|
|
const CommonForm = lazy(
|
|||
|
|
() => import('./Pages/Offer/LoyaltyPoints/CommonForm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ReprintReasonReportList = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/Reports/ReprintReasonReport/ReprintReasonReportList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const RevenueItemWiseReport = lazy(
|
|||
|
|
() => import('./Pages/Reports/Revenue/RevenueItemWiseReport.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const LinkUrlCreate = lazy(
|
|||
|
|
() => import('./Pages/paymentpdfPage/LinkUrlCreate.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const SupplierProductMapping = lazy(
|
|||
|
|
() => import('./Pages/SupplierProductMapping/SupplierProductMapping.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const RedirectUserProfile = lazy(
|
|||
|
|
() => import('./Pages/RedirectUserProfile.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const RelieveRequestForm = lazy(
|
|||
|
|
() => import('./Pages/EmpMaster/EmpRelieve.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PurchaseQuotationList = lazy(
|
|||
|
|
() => import('./Pages/PurchaseQuotation/PurchaseQuotationList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ExchangeAndReplacementList = lazy(
|
|||
|
|
() => import('./Pages/ExchangeAndReplacement/ExchangeAndReplacementList.jsx')
|
|||
|
|
);
|
|||
|
|
const ExchangeAndReplacementForm = lazy(
|
|||
|
|
() => import('./Pages/ExchangeAndReplacement/ExchangeAndReplacementForm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ExchangeReturnMapForm = lazy(
|
|||
|
|
() => import('./Pages/ExchangeReturnMap/ExchangeReturnMapForm.jsx')
|
|||
|
|
);
|
|||
|
|
const ExchangeReturnMapList = lazy(
|
|||
|
|
() => import('./Pages/ExchangeReturnMap/ExchangeReturnMapList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const OtherServicesForm = lazy(
|
|||
|
|
() => import('./Pages/OtherServices/OtherServicesForm.jsx')
|
|||
|
|
);
|
|||
|
|
const OtherServicesList = lazy(
|
|||
|
|
() => import('./Pages/OtherServices/OtherServicesList.jsx')
|
|||
|
|
);
|
|||
|
|
const EmpCommisionOrIncentiveForm = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/EmpCommissionOrIncentive/EmpCommisionOrIncentiveForm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const EmpCommisionOrIncentiveList = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/EmpCommissionOrIncentive/EmpCommisionOrIncentiveList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const SalesBillProductsReturnList = lazy(
|
|||
|
|
() => import('./Pages/CancelReschedule/SalesBillProductReturnList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const SalesBillProductsReturn = lazy(
|
|||
|
|
() => import('./Pages/CancelReschedule/SalesBillProductsReturn.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const DeliveryChallanToInvoiceForm = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/DeliveryChallanToInvoice/DeliveryChallanToInvoiceForm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const DeliveryChallanToInvoiceList = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/DeliveryChallanToInvoice/DeliveryChallanToInvoiceList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const TipAmountSettlementList = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/Reports/TipAmountSettlement/TipAmountSettlementList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const EmployeeSettlement = lazy(
|
|||
|
|
() => import('./Pages/Reports/EmployeeSettlement/EmployeeSettlement.jsx')
|
|||
|
|
);
|
|||
|
|
const Settlement = lazy(
|
|||
|
|
() => import('./Pages/Reports/TipAmountSettlement/Settlement.jsx')
|
|||
|
|
);
|
|||
|
|
const PublicQrCode = lazy(() => import('./Pages/Reports/PublicQrCode.jsx'));
|
|||
|
|
|
|||
|
|
const TableMapping = lazy(
|
|||
|
|
() => import('./Pages/TableMapping/TableMapping.jsx')
|
|||
|
|
);
|
|||
|
|
const TableMAppingList = lazy(
|
|||
|
|
() => import('./Pages/TableMapping/TableMAppingList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PurchaseOrderReport = lazy(
|
|||
|
|
() => import('./Pages/Reports/PurchaseReport/PurchaseOrderReport.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const SalesOrder = lazy(() => import('./Pages/SalesOrder/SalesOrder.jsx'));
|
|||
|
|
|
|||
|
|
const LoyaltyBased = lazy(
|
|||
|
|
() => import('./Pages/Offer/LoyaltyBased/LoyaltyBased.jsx')
|
|||
|
|
);
|
|||
|
|
const LoyaltyBasedList = lazy(
|
|||
|
|
() => import('./Pages/Offer/LoyaltyBased/LoyaltyBasedList.jsx')
|
|||
|
|
);
|
|||
|
|
const CodeBase = lazy(() => import('./Pages/Offer/CodeBase/CodeBase.jsx'));
|
|||
|
|
const CodeBaseList = lazy(
|
|||
|
|
() => import('./Pages/Offer/CodeBase/CodeBaseList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const TurboAddForm = lazy(() => import('./Pages/Product/TurboAddForm.jsx'));
|
|||
|
|
|
|||
|
|
const ProductMaster = lazy(() => import('./Pages/Product/ProductMaster.jsx'));
|
|||
|
|
|
|||
|
|
const GatewayMasterConfiguration = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/GatewayMasterConfiguration/GatewayMasterConfiguration.jsx')
|
|||
|
|
);
|
|||
|
|
const GatewayMasterConfigurationList = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/GatewayMasterConfiguration/GatewayMasterConfigurationList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const MembershipForm = lazy(
|
|||
|
|
() => import('./Pages/Membership/MembershipForm.jsx')
|
|||
|
|
);
|
|||
|
|
const MembershipList = lazy(
|
|||
|
|
() => import('./Pages/Membership/MembershipList.jsx')
|
|||
|
|
);
|
|||
|
|
const SlotManagementForm = lazy(
|
|||
|
|
() => import('./Pages/SlotManagement/SlotManagement.jsx')
|
|||
|
|
);
|
|||
|
|
const SlotManagementList = lazy(
|
|||
|
|
() => import('./Pages/SlotManagement/SlotManagementList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const BookingReScedule = lazy(
|
|||
|
|
() => import('./Pages/CancelReschedule/BookingReScedule.jsx')
|
|||
|
|
);
|
|||
|
|
const BookingReSceduleList = lazy(
|
|||
|
|
() => import('./Pages/CancelReschedule/BookingReSceduleList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const MembershipReport = lazy(
|
|||
|
|
() => import('./Pages/Reports/Membership/MembershipReport.jsx')
|
|||
|
|
);
|
|||
|
|
const OpeningStock = lazy(
|
|||
|
|
() => import('./Pages/openingStock/openingstockForm.jsx')
|
|||
|
|
);
|
|||
|
|
const OpeningStockList = lazy(
|
|||
|
|
() => import('./Pages/openingStock/OpeningStockList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const StockAdjustment = lazy(
|
|||
|
|
() => import('./Pages/StockAdjustment/StockAdjustment.jsx')
|
|||
|
|
);
|
|||
|
|
const StockAdjustmentList = lazy(
|
|||
|
|
() => import('./Pages/StockAdjustment/StockAdjustmentList.jsx')
|
|||
|
|
);
|
|||
|
|
const TopSellingProducts = lazy(
|
|||
|
|
() => import('./Pages/DashBoard/TopSellingProductsChart.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const AutomatedReorder = lazy(
|
|||
|
|
() => import('./Pages/Automated Reorder/AutomatedReorder.jsx')
|
|||
|
|
);
|
|||
|
|
const AutomatedReorderList = lazy(
|
|||
|
|
() => import('./Pages/Automated Reorder/AutomatedReorderList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const CustomerPurchaseConfirm = lazy(
|
|||
|
|
() =>
|
|||
|
|
import('./Pages/PurchaseOrder/CustomerPurchaseConfirm/CustomerPurchaseConfirm.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const MenuQRCode = lazy(
|
|||
|
|
() => import('./Pages/Reports/MenuQRCode/MenuQRCode.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const PurchaseLink = lazy(
|
|||
|
|
() => import('./Pages/PurchaseOrder/CustomerPurchaseConfirm/PurchaseLink.jsx')
|
|||
|
|
);
|
|||
|
|
const RackForm = lazy(() => import('./Pages/Rack/RackForm.jsx'));
|
|||
|
|
const RackList = lazy(() => import('./Pages/Rack/RackList.jsx'));
|
|||
|
|
|
|||
|
|
const CreateTransfer = lazy(
|
|||
|
|
() => import('./Pages/StockTransfer/CreateTransfer.jsx')
|
|||
|
|
);
|
|||
|
|
const Dispatch = lazy(() => import('./Pages/StockTransfer/Dispatch.jsx'));
|
|||
|
|
const StockTransferList = lazy(
|
|||
|
|
() => import('./Pages/StockTransfer/TransferList.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const ComboLayout3 = lazy(
|
|||
|
|
() => import('./Pages/BookingScreen/Template/ComboLayout3/ComboLayout3.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const Productcatlogue = lazy(
|
|||
|
|
() => import('./Pages/ProductCatlogue/Productcatalogue.jsx')
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const subDirectory = import.meta.env.BASE_URL;
|
|||
|
|
const apiCommonUrl = import.meta.env.ENV_API_URL_COMMON;
|
|||
|
|
|
|||
|
|
const initSession = () => {
|
|||
|
|
sessionStore('AppId', 2);
|
|||
|
|
sessionStore('BranchId', 791);
|
|||
|
|
sessionStore('AppName', 'Bakery');
|
|||
|
|
sessionStore('CompId', 657);
|
|||
|
|
sessionStore('MobileNo', '8888888888');
|
|||
|
|
sessionStore('UserType', 'Admin');
|
|||
|
|
sessionStore('UserId', 286);
|
|||
|
|
sessionStore('userName', 'Karthiga');
|
|||
|
|
|
|||
|
|
sessionStore(
|
|||
|
|
'auth','eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiODg4ODg4ODg4OCIsIlBhc3N3b3JkIjoiWkB6MTIzNCIsImF1ZCI6WyJodHRwczovL2FwaS5wb3pvLmRldi9wb3pvLXJldGFpbC1hcGkiLCJodHRwczovL2FwaS5wb3pvLmRldi9wb3pvLWNvbW1vbi1hcGkiLCJodHRwczovL2FwaS5wb3pvLmRldi9wb3pvLXNtcy1lbWFpbC10ZW1wbGF0ZS1hcGkiLCJodHRwczovL2FwaS5wb3pvLmRldi9wb3pvLWNvbW1vbi1hcGkiXSwiZXhwIjoxNzc0NjM3OTA5LCJpc3MiOiJodHRwczovL2FwaS5wb3pvLmRldi9Kd3RUb2tlbiJ9.TWDS0cuHGIDW_16EH2RS4z2B-wnuuPmMNd_lre505qY'
|
|||
|
|
);
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const getAppType = async () => {
|
|||
|
|
// 🔥 If already stored, don't call API again
|
|||
|
|
const storedType = getSession('AppType');
|
|||
|
|
if (storedType) {
|
|||
|
|
return storedType === 'Wholesale';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const AppId = getSession('AppId');
|
|||
|
|
if (!AppId) return null;
|
|||
|
|
|
|||
|
|
const response = await axios.get(
|
|||
|
|
`${apiCommonUrl}/application?AppId=${AppId}`
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
const subCategoryName =
|
|||
|
|
response?.data?.data?.[0]?.SubCategoryName?.toLowerCase();
|
|||
|
|
|
|||
|
|
const isWholesale = subCategoryName === 'wholesale';
|
|||
|
|
|
|||
|
|
sessionStore('AppType', isWholesale ? 'Wholesale' : 'Sale');
|
|||
|
|
|
|||
|
|
return isWholesale;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const fetchComponent = async () => {
|
|||
|
|
try {
|
|||
|
|
initSession();
|
|||
|
|
|
|||
|
|
const isWholesale = await getAppType();
|
|||
|
|
if (isWholesale === null) return null;
|
|||
|
|
|
|||
|
|
return isWholesale
|
|||
|
|
? import('./Pages/AppPage/WholesaleAppPage.jsx')
|
|||
|
|
: import('./Pages/AppPage/AppPage.jsx');
|
|||
|
|
} catch (err) {
|
|||
|
|
console.error('API call failed:', err);
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
const fetchHomeComponent = async () => {
|
|||
|
|
try {
|
|||
|
|
initSession();
|
|||
|
|
|
|||
|
|
const isWholesale = await getAppType();
|
|||
|
|
if (isWholesale === null) return null;
|
|||
|
|
|
|||
|
|
return isWholesale
|
|||
|
|
? import('./Pages/DashBoard/WholesaleDashboard.jsx')
|
|||
|
|
: import('./Pages/DashBoard/RetailDashboard.jsx');
|
|||
|
|
} catch (err) {
|
|||
|
|
console.error('API call failed:', err);
|
|||
|
|
return null;
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
export const routesConfig = [
|
|||
|
|
{ path: `${subDirectory}customer-display`, component: CustomerDisplay },
|
|||
|
|
{ path: `${subDirectory}PricingPage`, component: PricingPage },
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}android-app`,
|
|||
|
|
component: AndroidApp,
|
|||
|
|
empAccess: 'Android App',
|
|||
|
|
},
|
|||
|
|
{ path: `${subDirectory}purchaseordermail`, component: PurchaseOrderMail },
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}viewbill`,
|
|||
|
|
component: LinkUrlCreate,
|
|||
|
|
empAccess: 'View Bill',
|
|||
|
|
},
|
|||
|
|
// writed b=y sree
|
|||
|
|
// {
|
|||
|
|
// path: `${subDirectory}MenuQRCode`,
|
|||
|
|
// component: CustomerMenuPage,
|
|||
|
|
// },
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}purchaseconfirm`,
|
|||
|
|
component: CustomerPurchaseConfirm,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}viewpurchaseorder`,
|
|||
|
|
component: PurchaseLink,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}combolayout3`,
|
|||
|
|
component: ComboLayout3,
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}`,
|
|||
|
|
component: React.lazy(() =>
|
|||
|
|
fetchComponent().then((module) => ({ default: module.default }))
|
|||
|
|
),
|
|||
|
|
children: [
|
|||
|
|
{
|
|||
|
|
path: '/',
|
|||
|
|
component: React.lazy(() =>
|
|||
|
|
fetchHomeComponent().then((module) => ({ default: module.default }))
|
|||
|
|
),
|
|||
|
|
},
|
|||
|
|
{ path: `relieve-request`, component: RelieveRequestForm },
|
|||
|
|
{ path: 'branch-login', component: BranchLogin },
|
|||
|
|
{ path: 'branch-all', component: BackToBranchLogin },
|
|||
|
|
{ path: 'back-to-login', component: BacktoLogin },
|
|||
|
|
{ path: 'logout', component: Logout },
|
|||
|
|
{ path: 'redirect-apps', component: RedirectApps },
|
|||
|
|
{ path: 'redirect-userprofile', component: RedirectUserProfile },
|
|||
|
|
// { path: 'transaction', component: WSTransaction }
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}qrprint`,
|
|||
|
|
component: CreditCustomerPrint,
|
|||
|
|
empAccess: 'Public',
|
|||
|
|
},
|
|||
|
|
{ path: `${subDirectory}sales`, component: BookingPage, empAccess: 'Sales' },
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}wholesales`,
|
|||
|
|
component: WholesaleBookingPage,
|
|||
|
|
empAccess: 'Whole Sales',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}kiosksales`,
|
|||
|
|
component: KioskBookingPage,
|
|||
|
|
empAccess: 'Kiosk Sales',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}kiosk-receipt`,
|
|||
|
|
component: KioskBookingReceipt,
|
|||
|
|
empAccess: 'Public',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}payment-page`,
|
|||
|
|
component: PaymentDetailsPage,
|
|||
|
|
empAccess: 'Public',
|
|||
|
|
},
|
|||
|
|
{ path: `${subDirectory}reprint`, component: Reprint },
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}transaction`,
|
|||
|
|
component: React.lazy(() =>
|
|||
|
|
fetchComponent().then((module) => ({ default: module.default }))
|
|||
|
|
),
|
|||
|
|
children: [
|
|||
|
|
{ path: 'sales', component: WSTransaction, empAccess: 'Sales' },
|
|||
|
|
{ path: 'payment-received', component: PaymentReceived },
|
|||
|
|
{ path: 'seller-payment', component: SellerMasterTran },
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}kitchen`,
|
|||
|
|
component: React.lazy(() =>
|
|||
|
|
fetchComponent().then((module) => ({ default: module.default }))
|
|||
|
|
),
|
|||
|
|
children: [
|
|||
|
|
{ path: 'kot', component: KOT, empAccess: 'KOT' },
|
|||
|
|
{
|
|||
|
|
path: 'kot-display',
|
|||
|
|
component: CustomerKOTDisplay,
|
|||
|
|
empAccess: 'KOT Display',
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}report`,
|
|||
|
|
component: React.lazy(() =>
|
|||
|
|
fetchComponent().then((module) => ({ default: module.default }))
|
|||
|
|
),
|
|||
|
|
children: [
|
|||
|
|
{
|
|||
|
|
path: 'PublicQrCode',
|
|||
|
|
component: PublicQrCode,
|
|||
|
|
empAccess: 'SelfBooking QR Code',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'MenuQRCode',
|
|||
|
|
component: MenuQRCode,
|
|||
|
|
empAccess: 'MenuQRCode',
|
|||
|
|
},
|
|||
|
|
// {
|
|||
|
|
// path: 'tipamountsettlementlist',
|
|||
|
|
// component: TipAmountSettlementList,
|
|||
|
|
// empAccess: 'Tips',
|
|||
|
|
// },
|
|||
|
|
// {
|
|||
|
|
// path: 'EmployeeSettlement',
|
|||
|
|
// component: EmployeeSettlement,
|
|||
|
|
// empAccess: 'Incentive',
|
|||
|
|
// },
|
|||
|
|
{
|
|||
|
|
path: 'Settlement',
|
|||
|
|
component: Settlement,
|
|||
|
|
empAccess: 'Settlement',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'datewisereport',
|
|||
|
|
component: DateWiseReport,
|
|||
|
|
empAccess: 'Daily Sales',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'itemwisereport',
|
|||
|
|
component: ItemWiseReport,
|
|||
|
|
empAccess: 'By Item',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'top-selling-products',
|
|||
|
|
component: TopSellingProducts,
|
|||
|
|
empAccess: 'Top Selling Products',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'estimateitemwisereport',
|
|||
|
|
component: EstimateItemWiseReport,
|
|||
|
|
empAccess: 'By Item',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'estimatedatewisereport',
|
|||
|
|
component: EstimateDateWiseReport,
|
|||
|
|
empAccess: 'Daily Sales',
|
|||
|
|
},
|
|||
|
|
{ path: 'ledgerreport', component: LedgerReport, empAccess: 'Ledger' },
|
|||
|
|
{ path: 'ledger', component: LegderList, empAccess: 'Ledger' },
|
|||
|
|
{
|
|||
|
|
path: 'stock-in-hand',
|
|||
|
|
component: StockinHand,
|
|||
|
|
empAccess: 'Stock Inhand',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'abstract',
|
|||
|
|
component: WholeSaleAbstract,
|
|||
|
|
empAccess: 'Abstract For Sales',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'sellerabstract',
|
|||
|
|
component: WholeSaleSellerAbstract,
|
|||
|
|
empAccess: 'Abstract For Purchase',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'salesreport',
|
|||
|
|
component: WholeSaleSalesReport,
|
|||
|
|
empAccess: 'Daily Sales',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'purchasereport',
|
|||
|
|
component: WholeSalePurchaseReport,
|
|||
|
|
empAccess: 'Purchase',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'paymentpurchasereport',
|
|||
|
|
component: WholeSalePaymentPurchaseReport,
|
|||
|
|
empAccess: 'Purchase Payment',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'paymentsalesreport',
|
|||
|
|
component: WholeSalePaymentSalesReport,
|
|||
|
|
empAccess: 'Sales Payment',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'reprintreasonreport',
|
|||
|
|
component: ReprintReasonReportList,
|
|||
|
|
empAccess: 'Reprint Details',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'membership',
|
|||
|
|
component: MembershipReport,
|
|||
|
|
empAccess: 'Membership Report',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'revenueitemWisereport',
|
|||
|
|
component: RevenueItemWiseReport,
|
|||
|
|
empAccess: 'Gross Margin',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'PurchaseOrderReport',
|
|||
|
|
component: PurchaseOrderReport,
|
|||
|
|
empAccess: 'Purchase',
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}setting`,
|
|||
|
|
component: React.lazy(() =>
|
|||
|
|
fetchComponent().then((module) => ({ default: module.default }))
|
|||
|
|
),
|
|||
|
|
children: [
|
|||
|
|
{
|
|||
|
|
path: 'common-master',
|
|||
|
|
component: CommonMaster,
|
|||
|
|
empAccess: 'Common Master',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'other-services',
|
|||
|
|
component: OtherServicesList,
|
|||
|
|
empAccess: 'OtherServices',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'other-services/new',
|
|||
|
|
component: (props) => <OtherServicesForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'OtherServices',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'other-services/update',
|
|||
|
|
component: (props) => <OtherServicesForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'OtherServices',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'config-type',
|
|||
|
|
component: ConfigType,
|
|||
|
|
access: 'Super Admin',
|
|||
|
|
empAccess: 'Config Type',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'languages',
|
|||
|
|
component: SpeechLanguagesList,
|
|||
|
|
access: 'Super Admin',
|
|||
|
|
empAccess: 'Languages',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'preference',
|
|||
|
|
component: PreferenceList,
|
|||
|
|
empAccess: 'Preference',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'price-change',
|
|||
|
|
component: StockPriceUpdate,
|
|||
|
|
empAccess: 'Price Change',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'extra-charges',
|
|||
|
|
component: ExtraChargesList,
|
|||
|
|
empAccess: 'Extra Charges',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'Exchange-Return-policy',
|
|||
|
|
component: ExchangeAndReplacementList,
|
|||
|
|
empAccess: 'Exchange / Return',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'Exchange-Return-policy/new',
|
|||
|
|
component: (props) => (
|
|||
|
|
<ExchangeAndReplacementForm {...props} formType="add" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Exchange / Return',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'exchange-return-mapping',
|
|||
|
|
component: ExchangeReturnMapList,
|
|||
|
|
empAccess: 'Rules Mapping',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'exchange-return-mapping/new',
|
|||
|
|
component: (props) => (
|
|||
|
|
<ExchangeReturnMapForm {...props} formType="edit" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Rules Mapping',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'product-catalogue-list',
|
|||
|
|
component: ProductCatalogueList,
|
|||
|
|
empAccess: 'Product Catalogue',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'product-catalogue',
|
|||
|
|
component: Productcatlogue,
|
|||
|
|
empAccess: 'Product Catalogue',
|
|||
|
|
},
|
|||
|
|
{ path: 'admin-tax', component: AdminTax, empAccess: 'Tax' },
|
|||
|
|
{
|
|||
|
|
path: 'create-ticket',
|
|||
|
|
component: TicketForm,
|
|||
|
|
empAccess: 'Create Ticket',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'payment-options',
|
|||
|
|
component: PaymentOptions,
|
|||
|
|
empAccess: 'Payment Options',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'payment-received-retail',
|
|||
|
|
component: PaymentReceivedRetail,
|
|||
|
|
empAccess: 'Payment Updates',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'payment-device-access',
|
|||
|
|
component: PaymentDeviceForm,
|
|||
|
|
empAccess: 'Payment Device Access',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'counter-category-mapping',
|
|||
|
|
component: CounterCategoryMappingForm,
|
|||
|
|
empAccess: 'Counter Mapping',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'wholesale-product-master',
|
|||
|
|
component: WholeSaleProductList,
|
|||
|
|
empAccess: 'Product',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'product-entry',
|
|||
|
|
component: ProductEntryList,
|
|||
|
|
empAccess: 'Product Entry',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'product',
|
|||
|
|
component: ProductMaster,
|
|||
|
|
empAccess: 'Product Entry',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'product-entry/new',
|
|||
|
|
component: (props) => <ProductEntry {...props} formType="add" />,
|
|||
|
|
empAccess: 'Product Entry',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'wholesale-extracharges/new',
|
|||
|
|
component: ItemEntry,
|
|||
|
|
empAccess: 'Extra Charges',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'wholesale-extracharges',
|
|||
|
|
component: ExtraChrgesList,
|
|||
|
|
empAccess: 'Extra Charges',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'membership-master/list',
|
|||
|
|
component: MembershipList,
|
|||
|
|
empAccess: 'Membership',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'membership-master/new',
|
|||
|
|
component: (props) => <MembershipForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Membership',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'membership-master/update',
|
|||
|
|
component: (props) => <MembershipForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Membership',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'opening-stock/new',
|
|||
|
|
component: OpeningStock,
|
|||
|
|
empAccess: 'Opening Stock',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'opening-stock',
|
|||
|
|
component: OpeningStockList,
|
|||
|
|
empAccess: 'Opening Stock',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'stock-adjustment',
|
|||
|
|
component: StockAdjustment,
|
|||
|
|
empAccess: 'Stock Adjustment',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'stock-adjustment-list',
|
|||
|
|
component: StockAdjustmentList,
|
|||
|
|
empAccess: 'Stock Adjustment',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'product-master',
|
|||
|
|
component: ProductMaster,
|
|||
|
|
empAccess: 'Add Product',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'product-master/combo',
|
|||
|
|
component: ProductMaster,
|
|||
|
|
component: (props) => <ProductMaster {...props} formType="Combo" />,
|
|||
|
|
empAccess: 'Add Product',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'product-master/new',
|
|||
|
|
component: (props) => <ProductForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Add Product',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'products-master/new',
|
|||
|
|
component: (props) => <Sport_ProductForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Add Product',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'products-master/update',
|
|||
|
|
component: (props) => <Sport_ProductForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Add Product',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'product-master/update',
|
|||
|
|
component: (props) => <ProductForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Add Product',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'product-master/turbo-add',
|
|||
|
|
component: (props) => <TurboAddForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Add Product',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'image-bulk-upload',
|
|||
|
|
component: ImageBulkUpload,
|
|||
|
|
empAccess: 'Image Upload',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'rack-master',
|
|||
|
|
component: RackList,
|
|||
|
|
empAccess: 'Add Rack',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'rack-master/new',
|
|||
|
|
component: (props) => <RackForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Add Rack',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'rack-master/update',
|
|||
|
|
component: (props) => <RackForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Add Rack',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'slot-management',
|
|||
|
|
component: (props) => <SlotManagementForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Slot Management',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'slot-management-list',
|
|||
|
|
component: (props) => <SlotManagementList />,
|
|||
|
|
empAccess: 'Slot Management',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'productBased-offer',
|
|||
|
|
component: OfferList,
|
|||
|
|
empAccess: 'Product Based',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'productBased-offer/new',
|
|||
|
|
component: (props) => <OfferForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Product Based',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'productBased-offer/update',
|
|||
|
|
component: (props) => <OfferForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Product Based',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'code-base',
|
|||
|
|
component: CodeBaseList,
|
|||
|
|
empAccess: 'Code Based',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'code-base/new',
|
|||
|
|
component: (props) => <CodeBase {...props} formType="add" />,
|
|||
|
|
empAccess: 'Code Based',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'code-base/new',
|
|||
|
|
component: (props) => <CodeBase {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Code Based',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{ path: 'item-wise', component: ItemWise, empAccess: 'Item Wise Offer' },
|
|||
|
|
{
|
|||
|
|
path: 'quantity-wise',
|
|||
|
|
component: QuantityWise,
|
|||
|
|
empAccess: 'Quantity Wise Offer',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'buyone-getone',
|
|||
|
|
component: BuyOneGetOneForm,
|
|||
|
|
empAccess: 'Buy X and Get X or Y',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'sales-wise',
|
|||
|
|
component: SalesWiseList,
|
|||
|
|
empAccess: 'Sales Wise Offer',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'sales-wise/new',
|
|||
|
|
component: (props) => <SalesWiseForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Sales Wise Offer',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'sales-wise/update',
|
|||
|
|
component: (props) => <SalesWiseForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Sales Wise Offer',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'loyalty-point',
|
|||
|
|
component: LoyaltyPointsList,
|
|||
|
|
empAccess: 'Loyalty Cards',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'loyalty-based',
|
|||
|
|
// component: LoyaltyBased,
|
|||
|
|
component: LoyaltyBasedList,
|
|||
|
|
empAccess: 'Loyalty Points',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'loyalty-based/new',
|
|||
|
|
component: (props) => <LoyaltyBased {...props} formType="add" />,
|
|||
|
|
empAccess: 'Loyalty Points',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'loyalty-based/update',
|
|||
|
|
component: (props) => <LoyaltyBased {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Loyalty Points',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'loyalty-point/new',
|
|||
|
|
component: (props) => (
|
|||
|
|
<CommonForm {...props} formType="add" masterType="Loyalty Cards" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Loyalty Cards',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'loyalty-point/update',
|
|||
|
|
component: (props) => (
|
|||
|
|
<CommonForm {...props} formType="edit" masterType="Loyalty Cards" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Loyalty Cards',
|
|||
|
|
},
|
|||
|
|
// { path: 'loyalty-point/new', component: (props) => <LoyaltyPointsForm {...props} formType="add" />, empAccess: "Loyalty Cards" },
|
|||
|
|
// { path: 'loyalty-point/update', component: (props) => <LoyaltyPointsForm {...props} formType="edit" />, empAccess: "Loyalty Cards" },
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'bundle-offer',
|
|||
|
|
component: BundleOfferList,
|
|||
|
|
empAccess: 'Bundle Offer',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'bundle-offer/new',
|
|||
|
|
component: (props) => <BundleOfferForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Bundle Offer',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'bundle-offer/update',
|
|||
|
|
component: (props) => <BundleOfferForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Bundle Offer',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'coupon',
|
|||
|
|
component: CouponWiseOfferlist,
|
|||
|
|
empAccess: 'Coupon Wise Offer',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'coupon/new',
|
|||
|
|
component: (props) => (
|
|||
|
|
<CommonForm
|
|||
|
|
{...props}
|
|||
|
|
formType="add"
|
|||
|
|
masterType="Coupon Wise Offer"
|
|||
|
|
/>
|
|||
|
|
),
|
|||
|
|
empAccess: 'Coupon Wise Offer',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'coupon/update',
|
|||
|
|
component: (props) => (
|
|||
|
|
<CommonForm
|
|||
|
|
{...props}
|
|||
|
|
formType="edit"
|
|||
|
|
masterType="Coupon Wise Offer"
|
|||
|
|
/>
|
|||
|
|
),
|
|||
|
|
empAccess: 'Coupon Wise Offer',
|
|||
|
|
},
|
|||
|
|
// { path: 'coupon/new', component: (props) => <CouponWiseOffer {...props} formType="add" />, empAccess: "Coupon Wise Offer" },
|
|||
|
|
// { path: 'coupon/update', component: (props) => <CouponWiseOffer {...props} formType="edit" />, empAccess: "Coupon Wise Offer" },
|
|||
|
|
|
|||
|
|
{ path: 'promo-code', component: PromocodeList, empAccess: 'Promo Code' },
|
|||
|
|
{
|
|||
|
|
path: 'promo-code/new',
|
|||
|
|
component: (props) => (
|
|||
|
|
<CommonForm {...props} formType="add" masterType="Promo Code" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Promo Code',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'promo-code/update',
|
|||
|
|
component: (props) => (
|
|||
|
|
<CommonForm {...props} formType="edit" masterType="Promo Code" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Promo Code',
|
|||
|
|
},
|
|||
|
|
// { path: 'promo-code/new', component: (props) => <PromocodeForm {...props} formType="add" />, empAccess: "Promo Code" },
|
|||
|
|
// { path: 'promo-code/update', component: (props) => <PromocodeForm {...props} formType="edit" />, empAccess: "Promo Code" },
|
|||
|
|
|
|||
|
|
{ path: 'offer-code', component: OfferCodeList, empAccess: 'Offer Code' },
|
|||
|
|
{
|
|||
|
|
path: 'offer-code/new',
|
|||
|
|
component: (props) => (
|
|||
|
|
<CommonForm {...props} formType="add" masterType="Offer Code" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Offer Code',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'offer-code/update',
|
|||
|
|
component: (props) => (
|
|||
|
|
<CommonForm {...props} formType="edit" masterType="Offer Code" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Offer Code',
|
|||
|
|
},
|
|||
|
|
// { path: 'offer-code/new', component: (props) => <OfferCodeForm {...props} formType="add" />, empAccess: "Offer Code" },
|
|||
|
|
// { path: 'offer-code/update', component: (props) => <OfferCodeForm {...props} formType="edit" />, empAccess: "Offer Code" },
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'customer-master',
|
|||
|
|
component: CustomerMasterList,
|
|||
|
|
empAccess: 'Customer',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'customer-master/new',
|
|||
|
|
component: (props) => <CustomerForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Customer',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'customer-master/update',
|
|||
|
|
component: (props) => <CustomerForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Customer',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'automated-reorder',
|
|||
|
|
component: AutomatedReorderList,
|
|||
|
|
empAccess: 'Automated Reorder',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'automated-reorder/new',
|
|||
|
|
component: (props) => <AutomatedReorder {...props} formType="add" />,
|
|||
|
|
empAccess: 'Automated Reorder',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'automated-reorder/update',
|
|||
|
|
component: (props) => <AutomatedReorder {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Automated Reorder',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'purchase-entry',
|
|||
|
|
component: StockList,
|
|||
|
|
empAccess: 'Product Receipt',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'purchase-entry/new',
|
|||
|
|
component: (props) => <StockForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Product Receipt',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'purchase-entry/update',
|
|||
|
|
component: (props) => <StockForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Product Receipt',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'receive-stocks',
|
|||
|
|
component: StockReceivedList,
|
|||
|
|
empAccess: 'Purchase Order',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'gst-invoice-setup/new',
|
|||
|
|
component: (props) => <GstInvoiceSetUpForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Gst Invoice Setup',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'gst-invoice-setup/update',
|
|||
|
|
component: (props) => (
|
|||
|
|
<GstInvoiceSetUpForm {...props} formType="edit" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Gst Invoice Setup',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'gst-invoice-setup',
|
|||
|
|
component: gstInvoiceSetUpList,
|
|||
|
|
empAccess: 'Gst Invoice Setup',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'purchase-order',
|
|||
|
|
component: PurchaseOrderList,
|
|||
|
|
empAccess: 'Purchase Order',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'purchase-order/new',
|
|||
|
|
component: (props) => <PurchaseOrder {...props} formType="add" />,
|
|||
|
|
empAccess: 'Purchase Order',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'purchase-return/list',
|
|||
|
|
component: PurchaseReturnget,
|
|||
|
|
empAccess: 'Product Return',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'purchaseconfirm',
|
|||
|
|
component: CustomerPurchaseConfirm,
|
|||
|
|
// empAccess: 'View Bill',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'purchase-return',
|
|||
|
|
component: PurchaseReturn,
|
|||
|
|
empAccess: 'Product Return',
|
|||
|
|
},
|
|||
|
|
//free Products
|
|||
|
|
{
|
|||
|
|
path: 'free-product-master',
|
|||
|
|
component: FreeProductList,
|
|||
|
|
empAccess: 'Add Product',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'free-purchase-entry',
|
|||
|
|
component: FreePurchaseEnteryList,
|
|||
|
|
empAccess: 'Purchase Entry',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'free-purchase-entry/new',
|
|||
|
|
component: (props) => (
|
|||
|
|
<FreePurchaseEnteryForm {...props} formType="add" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Purchase Entry',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'free-purchase-entry/update',
|
|||
|
|
component: (props) => (
|
|||
|
|
<FreePurchaseEnteryForm {...props} formType="edit" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Purchase Entry',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'free-purchase-order',
|
|||
|
|
component: FreePurchaseOrderList,
|
|||
|
|
empAccess: 'Purchase Order',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'free-purchase-order/new',
|
|||
|
|
component: (props) => (
|
|||
|
|
<FreePurchaseOrderForm {...props} formType="add" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Purchase Order',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'free-purchase-return',
|
|||
|
|
component: FreePurchaseReturnList,
|
|||
|
|
empAccess: 'Purchase Return',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'free-purchase-return/new',
|
|||
|
|
component: FreePurchaseReturnForm,
|
|||
|
|
empAccess: 'Purchase Return',
|
|||
|
|
},
|
|||
|
|
//free Products
|
|||
|
|
{
|
|||
|
|
path: 'sales-quotation',
|
|||
|
|
component: PurchaseQuotationForm,
|
|||
|
|
empAccess: 'Sales Quotation',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'sales-quotation/list',
|
|||
|
|
component: PurchaseQuotationList,
|
|||
|
|
empAccess: 'Sales Quotation',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'sales-order',
|
|||
|
|
component: SalesOrder,
|
|||
|
|
empAccess: 'Sales Order',
|
|||
|
|
},
|
|||
|
|
// { path: 'delivery-challan',
|
|||
|
|
// component: DeliveryChallanList,
|
|||
|
|
// empAccess: 'Delivery Challan'
|
|||
|
|
// },
|
|||
|
|
{
|
|||
|
|
path: 'delivery-challan/list',
|
|||
|
|
component: DeliveryChallanList,
|
|||
|
|
empAccess: 'Delivery Challan',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'delivery-challan',
|
|||
|
|
component: DeliveryChallanForm,
|
|||
|
|
empAccess: 'Delivery Challan',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'delivery-challan-to-invoice/list',
|
|||
|
|
component: DeliveryChallanToInvoiceList,
|
|||
|
|
empAccess: 'DC to Invoice',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'delivery-challan-to-invoice',
|
|||
|
|
component: DeliveryChallanToInvoiceForm,
|
|||
|
|
empAccess: 'DC to Invoice',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{ path: 'shift-master', component: ShiftMasterList, empAccess: 'Shift' },
|
|||
|
|
{
|
|||
|
|
path: 'shift-master/new',
|
|||
|
|
component: (props) => <ShiftMasterForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Shift',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'shift-master/update',
|
|||
|
|
component: (props) => <ShiftMasterForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Shift',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'employee-master',
|
|||
|
|
component: EmployeeMasterList,
|
|||
|
|
empAccess: 'Add Employee',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'employee-master/new',
|
|||
|
|
component: (props) => <EmployeeMasterForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Add Employee',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'employee-master/update',
|
|||
|
|
component: (props) => <EmployeeMasterForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Add Employee',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'commission-or-incentive-master',
|
|||
|
|
component: EmpCommisionOrIncentiveList,
|
|||
|
|
empAccess: 'Incentive',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'commission-or-incentive-master/new',
|
|||
|
|
component: (props) => (
|
|||
|
|
<EmpCommisionOrIncentiveForm {...props} formType="add" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Incentive',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'commission-or-incentive-master/update',
|
|||
|
|
component: (props) => (
|
|||
|
|
<EmpCommisionOrIncentiveForm {...props} formType="edit" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Incentive',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'supplier-master',
|
|||
|
|
component: SupplierMasterList,
|
|||
|
|
empAccess: 'Add Supplier',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'supplier-master/new',
|
|||
|
|
component: (props) => <SupplierMasterForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Add Supplier',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'supplier-master/update',
|
|||
|
|
component: (props) => <SupplierMasterForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Add Supplier',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'stock-transfer',
|
|||
|
|
component: CreateTransfer,
|
|||
|
|
empAccess: 'Create Transfer',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'stock-dispatch',
|
|||
|
|
component: Dispatch,
|
|||
|
|
empAccess: 'Dispatch',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'stock-transferlist',
|
|||
|
|
component: StockTransferList,
|
|||
|
|
empAccess: 'Create Transfer',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'supplierproductmapping-master',
|
|||
|
|
component: SupplierProductMapping,
|
|||
|
|
empAccess: 'Product Mapping',
|
|||
|
|
},
|
|||
|
|
// { path: 'supplier-master/new', component: (props) => <SupplierMasterForm {...props} formType="add" />, empAccess: "Supplier" },
|
|||
|
|
// { path: 'supplier-master/update', component: (props) => <SupplierMasterForm {...props} formType="edit" />, empAccess: "Supplier" },
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'dinein-master',
|
|||
|
|
component: DiningMasterList,
|
|||
|
|
empAccess: 'Dine In',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'dinein-master/new',
|
|||
|
|
component: (props) => <DiningMasterForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Dine In',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'dinein-master/edit',
|
|||
|
|
component: (props) => <DiningMasterForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Dine In',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'combo-master',
|
|||
|
|
component: ComboList,
|
|||
|
|
empAccess: 'Add Product',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'combo-master/new',
|
|||
|
|
component: (props) => <ComboMaster {...props} formType="add" />,
|
|||
|
|
empAccess: 'Add Product',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'combo-master/update',
|
|||
|
|
component: (props) => <ComboMaster {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Add Product',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'combo-offer-master',
|
|||
|
|
component: ComboOfferMaster,
|
|||
|
|
empAccess: 'Combo Price',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'payment-details',
|
|||
|
|
component: PaymentDetailsList,
|
|||
|
|
empAccess: 'Payment Details',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'payment-details/new',
|
|||
|
|
component: (props) => <PaymentDetails {...props} formType="add" />,
|
|||
|
|
empAccess: 'Payment Details',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'payment-details/update',
|
|||
|
|
component: (props) => <PaymentDetails {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Payment Details',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'payment-failed-details',
|
|||
|
|
component: PaymentFailedDetailsList,
|
|||
|
|
empAccess: 'Payment Failed Details',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'TableMapping/update',
|
|||
|
|
component: (props) => <TableMapping {...props} formType="add" />,
|
|||
|
|
empAccess: 'Table Mapping',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'TableMapping',
|
|||
|
|
component: TableMAppingList,
|
|||
|
|
empAccess: 'Table Mapping',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'employee-access',
|
|||
|
|
component: EmpAccessList,
|
|||
|
|
empAccess: 'Employee Access',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'employee-access/new',
|
|||
|
|
component: (props) => <EmpAccessForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Employee Access',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'employee-access/update',
|
|||
|
|
component: (props) => <EmpAccessForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Employee Access',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'employee-screenrights',
|
|||
|
|
component: EmpScreenAccessList,
|
|||
|
|
empAccess: 'Employee Screen Rights',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'employee-screenrights/new',
|
|||
|
|
component: (props) => (
|
|||
|
|
<EmpScreenRightsAccess {...props} formType="add" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Employee Screen Rights',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'employee-screenrights/update',
|
|||
|
|
component: (props) => (
|
|||
|
|
<EmpScreenRightsAccess {...props} formType="edit" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Employee Screen Rights',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'cancel-reschedule-rules',
|
|||
|
|
component: CancellationList,
|
|||
|
|
empAccess: 'Cancel / Reschedule',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'cancel-reschedule-rules/new',
|
|||
|
|
component: (props) => <Cancellation {...props} formType="add" />,
|
|||
|
|
empAccess: 'Cancel / Reschedule',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'cancel-reschedule-rules/update',
|
|||
|
|
component: (props) => <Cancellation {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Cancel / Reschedule',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'cancel-applicable-product',
|
|||
|
|
component: CancelApplicableProd,
|
|||
|
|
empAccess: 'Cancel Applicable Products',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'cancel-paymentchange',
|
|||
|
|
component: ChangePaymentmode,
|
|||
|
|
empAccess: 'Payment Mode Change',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'cancel-pendingpayment',
|
|||
|
|
component: CancellationListPending,
|
|||
|
|
empAccess: 'Cancel Unpaid Order',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'sales-bill-cancel',
|
|||
|
|
component: SalesBillCancel,
|
|||
|
|
empAccess: 'Sales Entry Cancel',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'sales-bill-product-return/list',
|
|||
|
|
component: SalesBillProductsReturnList,
|
|||
|
|
empAccess: 'Sales Product Return',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'sales-bill-product-return',
|
|||
|
|
component: SalesBillProductsReturn,
|
|||
|
|
empAccess: 'Sales Product Return',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'booking-reschedule',
|
|||
|
|
component: BookingReScedule,
|
|||
|
|
empAccess: 'Booking Reschedule',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'booking-reschedule/list',
|
|||
|
|
component: BookingReSceduleList,
|
|||
|
|
empAccess: 'Booking Reschedule',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'wholesale-preorder',
|
|||
|
|
component: WsPreorder,
|
|||
|
|
empAccess: 'Preorder',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'wholesale-preorder/new',
|
|||
|
|
component: (props) => <WsPreorderForm {...props} formType="add" />,
|
|||
|
|
empAccess: 'Preorder',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'wholesale-preorder/update',
|
|||
|
|
component: (props) => <WsPreorderForm {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Preorder',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'custom-product',
|
|||
|
|
component: StoreRecipelist,
|
|||
|
|
empAccess: 'Bill Of Material',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'custom-product/new',
|
|||
|
|
component: (props) => <StoreRecipeform {...props} formType="add" />,
|
|||
|
|
empAccess: 'Bill Of Material',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'custom-product/update',
|
|||
|
|
component: (props) => <StoreRecipeform {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Bill Of Material',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'store-to-production',
|
|||
|
|
component: Storekitchenlist,
|
|||
|
|
empAccess: 'Material Issue',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'store-to-production/new',
|
|||
|
|
component: (props) => <StoreKitchenform {...props} formType="add" />,
|
|||
|
|
empAccess: 'Material Issue',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'store-to-production/update',
|
|||
|
|
component: (props) => <StoreKitchenform {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Material Issue',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'ready-for-sale',
|
|||
|
|
component: KitchenFinishlist,
|
|||
|
|
empAccess: 'Finished Goods',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'ready-for-sale/new',
|
|||
|
|
component: (props) => <KitechenFinishform {...props} formType="add" />,
|
|||
|
|
empAccess: 'Finished Goods',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'ready-for-sale/update',
|
|||
|
|
component: (props) => <KitechenFinishform {...props} formType="edit" />,
|
|||
|
|
empAccess: 'Finished Goods',
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
path: 'gateway-master-configuration/new',
|
|||
|
|
component: (props) => (
|
|||
|
|
<GatewayMasterConfiguration {...props} formType="add" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Gateway Master Configuration',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'gateway-master-configuration/update',
|
|||
|
|
component: (props) => (
|
|||
|
|
<GatewayMasterConfiguration {...props} formType="edit" />
|
|||
|
|
),
|
|||
|
|
empAccess: 'Gateway Master Configuration',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'gateway-master-configuration/list',
|
|||
|
|
component: GatewayMasterConfigurationList,
|
|||
|
|
empAccess: 'Gateway Master Configuration',
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}sales`,
|
|||
|
|
component: React.lazy(() =>
|
|||
|
|
fetchComponent().then((module) => ({ default: module.default }))
|
|||
|
|
),
|
|||
|
|
children: [{ path: 'dine-in', component: TableBooking }],
|
|||
|
|
empAccess: 'Sales Entry',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: `${subDirectory}saleslayouts`,
|
|||
|
|
component: React.lazy(() =>
|
|||
|
|
fetchComponent().then((module) => ({ default: module.default }))
|
|||
|
|
),
|
|||
|
|
children: [
|
|||
|
|
{
|
|||
|
|
path: 'sales-selection',
|
|||
|
|
component: BookingSelectionPage,
|
|||
|
|
empAccess: 'Sales Screen',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'print-selection',
|
|||
|
|
component: PrintSelectionPage,
|
|||
|
|
empAccess: 'Print Forms',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'kiosk-selection',
|
|||
|
|
component: KioskMainPage,
|
|||
|
|
empAccess: 'Kiosk Screen',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: `barcode-qr-selection`,
|
|||
|
|
component: BarcodeTemplateSetup,
|
|||
|
|
empAccess: 'Barcode / QR',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'kiosk-component',
|
|||
|
|
component: KioskComponentList,
|
|||
|
|
access: 'Super Admin',
|
|||
|
|
empAccess: 'Kiosk Component',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'component-master',
|
|||
|
|
component: ComponentMasterList,
|
|||
|
|
access: 'Super Admin',
|
|||
|
|
empAccess: 'Component Master',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'barcode-master',
|
|||
|
|
component: BarcodeComponentList,
|
|||
|
|
access: 'Super Admin',
|
|||
|
|
empAccess: 'Barcode Component',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'component-master/new',
|
|||
|
|
component: (props) => <ComponentMasterForm formType="add" {...props} />,
|
|||
|
|
access: 'Super Admin',
|
|||
|
|
empAccess: 'Component Master',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'component-master/update',
|
|||
|
|
component: (props) => (
|
|||
|
|
<ComponentMasterForm formType="edit" {...props} />
|
|||
|
|
),
|
|||
|
|
access: 'Super Admin',
|
|||
|
|
empAccess: 'Component Master',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'theme-creation',
|
|||
|
|
component: ThemeCreation,
|
|||
|
|
access: 'Super Admin',
|
|||
|
|
empAccess: 'Theme Creation',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'themeselection/new',
|
|||
|
|
component: (props) => <ThemeSelection formType="add" {...props} />,
|
|||
|
|
access: 'Super Admin',
|
|||
|
|
empAccess: 'Theme Creation',
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
path: 'themeselection/update',
|
|||
|
|
component: (props) => <ThemeSelection formType="edit" {...props} />,
|
|||
|
|
access: 'Super Admin',
|
|||
|
|
empAccess: 'Theme Creation',
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
];
|
|||
|
|
// this is vite file
|
|||
|
|
import { defineConfig } from "vite";
|
|||
|
|
import react from "@vitejs/plugin-react";
|
|||
|
|
|
|||
|
|
export default defineConfig(({ mode }) => {
|
|||
|
|
const isProd = mode === "production";
|
|||
|
|
|
|||
|
|
return {
|
|||
|
|
plugins: [react()],
|
|||
|
|
|
|||
|
|
base: isProd ? "/apps/retail/" : "/", //for capcitor base: isProd ? "/" : "/",
|
|||
|
|
|
|||
|
|
envDir: "src",
|
|||
|
|
envPrefix: "ENV_",
|
|||
|
|
|
|||
|
|
server: {
|
|||
|
|
host: true, // 🔥 auto detect your IP
|
|||
|
|
port: process.env.PORT || 3015,
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
build: {
|
|||
|
|
minify: "esbuild",
|
|||
|
|
esbuild: {
|
|||
|
|
drop: isProd ? ["console", "debugger"] : [],
|
|||
|
|
},
|
|||
|
|
},
|
|||
|
|
};
|
|||
|
|
});
|
|||
|
|
/// android xml file ;
|
|||
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|||
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|||
|
|
|
|||
|
|
<uses-permission android:name="android.permission.INTERNET" />
|
|||
|
|
|
|||
|
|
<application
|
|||
|
|
android:allowBackup="true"
|
|||
|
|
android:requestLegacyExternalStorage="true"
|
|||
|
|
android:icon="@mipmap/ic_launcher"
|
|||
|
|
android:label="@string/app_name"
|
|||
|
|
android:roundIcon="@mipmap/ic_launcher_round"
|
|||
|
|
android:supportsRtl="true"
|
|||
|
|
android:theme="@style/AppTheme">
|
|||
|
|
|
|||
|
|
<activity
|
|||
|
|
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode|navigation|density"
|
|||
|
|
android:name=".MainActivity"
|
|||
|
|
android:label="@string/title_activity_main"
|
|||
|
|
android:theme="@style/AppTheme.NoActionBarLaunch"
|
|||
|
|
android:launchMode="singleTask"
|
|||
|
|
android:exported="true">
|
|||
|
|
|
|||
|
|
<intent-filter>
|
|||
|
|
<action android:name="android.intent.action.MAIN" />
|
|||
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|||
|
|
</intent-filter>
|
|||
|
|
|
|||
|
|
</activity>
|
|||
|
|
|
|||
|
|
<provider
|
|||
|
|
android:name="androidx.core.content.FileProvider"
|
|||
|
|
android:authorities="${applicationId}.fileprovider"
|
|||
|
|
android:exported="false"
|
|||
|
|
android:grantUriPermissions="true">
|
|||
|
|
<meta-data
|
|||
|
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
|||
|
|
android:resource="@xml/file_paths" />
|
|||
|
|
</provider>
|
|||
|
|
|
|||
|
|
</application>
|
|||
|
|
|
|||
|
|
</manifest>
|
|||
|
|
|
|||
|
|
//pathfile android\app\src\main\res\xml\file_paths.xml
|
|||
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|||
|
|
<paths xmlns:android="http://schemas.android.com/apk/res/android">
|
|||
|
|
<files-path name="internal_files" path="." />
|
|||
|
|
</paths>
|
|||
|
|
|
|||
|
|
///package.json
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
"name": "retail-application",
|
|||
|
|
"private": true,
|
|||
|
|
"version": "0.0.0",
|
|||
|
|
"type": "module",
|
|||
|
|
"scripts": {
|
|||
|
|
"dev": "vite",
|
|||
|
|
"build": "node --max-old-space-size=4096 node_modules/vite/bin/vite.js build",
|
|||
|
|
"lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
|
|||
|
|
"preview": "vite preview",
|
|||
|
|
"format": "prettier --write ."
|
|||
|
|
},
|
|||
|
|
"dependencies": {
|
|||
|
|
"@ant-design/plots": "^2.6.8",
|
|||
|
|
"@capacitor-community/file-opener": "^8.0.0",
|
|||
|
|
"@capacitor-community/speech-recognition": "^7.0.1",
|
|||
|
|
"@capacitor-mlkit/barcode-scanning": "^8.0.1",
|
|||
|
|
"@capacitor/android": "^8.3.0",
|
|||
|
|
"@capacitor/app": "^8.0.1",
|
|||
|
|
"@capacitor/cli": "^8.3.0",
|
|||
|
|
"@capacitor/core": "^8.3.0",
|
|||
|
|
"@capacitor/filesystem": "^8.1.2",
|
|||
|
|
"@dnd-kit/core": "^6.3.1",
|
|||
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|||
|
|
"@emotion/react": "^11.11.4",
|
|||
|
|
"@emotion/styled": "^11.11.5",
|
|||
|
|
"@mui/material": "^5.15.18",
|
|||
|
|
"@react-google-maps/api": "^2.20.8",
|
|||
|
|
"@reduxjs/toolkit": "^1.9.5",
|
|||
|
|
"@tanstack/react-query": "^5.90.11",
|
|||
|
|
"@tanstack/react-query-devtools": "^5.91.1",
|
|||
|
|
"@tanstack/react-virtual": "^3.13.18",
|
|||
|
|
"@types/node": "^25.5.0",
|
|||
|
|
"@vitejs/plugin-legacy": "^8.0.1",
|
|||
|
|
"@zxing/library": "^0.21.3",
|
|||
|
|
"antd": "^5.17.4",
|
|||
|
|
"antd-img-crop": "^4.22.0",
|
|||
|
|
"aos": "^2.3.4",
|
|||
|
|
"apexcharts": "^5.10.4",
|
|||
|
|
"axios": "^1.13.6",
|
|||
|
|
"browser-image-compression": "^2.0.2",
|
|||
|
|
"classnames": "^2.5.1",
|
|||
|
|
"cropperjs": "^1.6.2",
|
|||
|
|
"crypto-js": "^4.1.1",
|
|||
|
|
"date-fns": "^4.1.0",
|
|||
|
|
"devtools-detect": "^4.0.2",
|
|||
|
|
"exceljs": "^4.4.0",
|
|||
|
|
"file-saver": "^2.0.5",
|
|||
|
|
"history": "^5.3.0",
|
|||
|
|
"html2canvas": "^1.4.1",
|
|||
|
|
"html2pdf": "^0.0.11",
|
|||
|
|
"html5-qrcode": "^2.3.8",
|
|||
|
|
"jquery": "^3.7.1",
|
|||
|
|
"js-cookie": "^3.0.5",
|
|||
|
|
"jsbarcode": "^3.11.6",
|
|||
|
|
"jspdf": "^4.2.1",
|
|||
|
|
"lucide": "^0.577.0",
|
|||
|
|
"lucide-react": "^0.536.0",
|
|||
|
|
"moment": "^2.30.1",
|
|||
|
|
"number-to-words": "^1.2.4",
|
|||
|
|
"pdf-lib": "^1.17.1",
|
|||
|
|
"qr-scanner": "^1.4.2",
|
|||
|
|
"qrcode": "^1.5.3",
|
|||
|
|
"qrcode.react": "^4.2.0",
|
|||
|
|
"react": "^18.3.1",
|
|||
|
|
"react-apexcharts": "^2.1.0",
|
|||
|
|
"react-beautiful-dnd": "^13.1.1",
|
|||
|
|
"react-color": "^2.19.3",
|
|||
|
|
"react-countup": "^6.5.3",
|
|||
|
|
"react-device-detect": "^2.2.3",
|
|||
|
|
"react-dom": "^18.3.1",
|
|||
|
|
"react-icons": "^4.12.0",
|
|||
|
|
"react-image-crop": "^11.0.10",
|
|||
|
|
"react-qr-code": "^2.0.13",
|
|||
|
|
"react-redux": "^8.1.2",
|
|||
|
|
"react-router-dom": "^6.23.1",
|
|||
|
|
"react-select": "^5.8.0",
|
|||
|
|
"react-signature-canvas": "^1.0.7",
|
|||
|
|
"react-speech-recognition": "^3.10.0",
|
|||
|
|
"react-timer-hook": "^3.0.7",
|
|||
|
|
"react-transition-group": "^4.4.5",
|
|||
|
|
"recharts": "^3.5.0",
|
|||
|
|
"string-similarity": "^4.0.4",
|
|||
|
|
"tesseract.js": "^6.0.0",
|
|||
|
|
"universal-cookie": "^8.0.1",
|
|||
|
|
"webfontloader": "^1.6.28",
|
|||
|
|
"zustand": "^5.0.8"
|
|||
|
|
},
|
|||
|
|
"devDependencies": {
|
|||
|
|
"@types/react": "^18.3.3",
|
|||
|
|
"@types/react-dom": "^18.3.0",
|
|||
|
|
"@vitejs/plugin-react": "^6.0.1",
|
|||
|
|
"esbuild": "^0.27.4",
|
|||
|
|
"eslint": "^8.57.0",
|
|||
|
|
"eslint-plugin-react": "^7.34.2",
|
|||
|
|
"eslint-plugin-react-hooks": "^4.6.2",
|
|||
|
|
"eslint-plugin-react-refresh": "^0.4.7",
|
|||
|
|
"prettier": "^3.5.3",
|
|||
|
|
"rollup-plugin-obfuscator": "^1.1.0",
|
|||
|
|
"sass": "^1.98.0",
|
|||
|
|
"terser": "^5.31.3",
|
|||
|
|
"vite": "^8.0.0",
|
|||
|
|
"vite-plugin-obfuscator": "^1.0.5",
|
|||
|
|
"vite-plugin-remove-console": "^2.2.0"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|