From 0eb478ece2d836e7d7ef426ad1e3156af90d4600 Mon Sep 17 00:00:00 2001 From: Srinath Date: Wed, 28 Jan 2026 19:26:46 +0530 Subject: [PATCH 01/33] Added Emplyee Access missing names --- src/routesConfig.jsx | 54 +++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/src/routesConfig.jsx b/src/routesConfig.jsx index 91f0ab9..25f6984 100644 --- a/src/routesConfig.jsx +++ b/src/routesConfig.jsx @@ -717,7 +717,7 @@ export const routesConfig = [ { path: 'counter-category-mapping', component: CounterCategoryMappingForm, - empAccess: 'Counter Category Mapping', + empAccess: 'Counter Mapping', }, { @@ -872,17 +872,17 @@ export const routesConfig = [ { path: 'code-base', component: CodeBaseList, - empAccess: 'Code Base', + empAccess: 'Code Based', }, { path: 'code-base/new', component: (props) => , - empAccess: 'Code Base', + empAccess: 'Code Based', }, { path: 'code-base/new', component: (props) => , - empAccess: 'Code Base', + empAccess: 'Code Based', }, { path: 'item-wise', component: ItemWise, empAccess: 'Item Wise Offer' }, @@ -922,17 +922,17 @@ export const routesConfig = [ path: 'loyalty-based', // component: LoyaltyBased, component: LoyaltyBasedList, - empAccess: 'Loyalty Based', + empAccess: 'Loyalty Points', }, { path: 'loyalty-based/new', component: (props) => , - empAccess: 'Loyalty Based', + empAccess: 'Loyalty Points', }, { path: 'loyalty-based/update', component: (props) => , - empAccess: 'Loyalty Based', + empAccess: 'Loyalty Points', }, { @@ -1080,11 +1080,7 @@ export const routesConfig = [ empAccess: 'Product Receipt', }, - { - path: 'purchase-order', - component: PurchaseOrderList, - empAccess: 'Purchase Order', - }, + { path: 'receive-stocks', @@ -1108,6 +1104,11 @@ export const routesConfig = [ component: gstInvoiceSetUpList, empAccess: 'Gst Invoice Setup', }, + { + path: 'purchase-order', + component: PurchaseOrderList, + empAccess: 'Purchase Order', + }, { path: 'purchase-order/new', component: (props) => , @@ -1117,7 +1118,7 @@ export const routesConfig = [ { path: 'purchase-return/list', component: PurchaseReturnget, - empAccess: 'Purchase Return', + empAccess: 'Product Return', }, { path: 'purchaseconfirm', @@ -1127,7 +1128,7 @@ export const routesConfig = [ { path: 'purchase-return', component: PurchaseReturn, - empAccess: 'Purchase Return', + empAccess: 'Product Return', }, //free Products { @@ -1185,6 +1186,11 @@ export const routesConfig = [ component: PurchaseQuotationForm, empAccess: 'Sales Quotation', }, + { + path: 'sales-quotation/list', + component: PurchaseQuotationList, + empAccess: 'Sales Quotation', + }, { path: 'sales-order', component: SalesOrder, @@ -1214,11 +1220,7 @@ export const routesConfig = [ component: DeliveryChallanToInvoiceForm, empAccess: 'DC to Invoice', }, - { - path: 'sales-quotation/list', - component: PurchaseQuotationList, - empAccess: 'Sales Quotation', - }, + { path: 'shift-master', component: ShiftMasterList, empAccess: 'Shift' }, { @@ -1323,17 +1325,17 @@ export const routesConfig = [ { path: 'combo-master', component: ComboList, - empAccess: 'Combo Product', + empAccess: 'Add Product', }, { path: 'combo-master/new', component: (props) => , - empAccess: 'Combo Product', + empAccess: 'Add Product', }, { path: 'combo-master/update', component: (props) => , - empAccess: 'Combo Product', + empAccess: 'Add Product', }, { @@ -1442,17 +1444,17 @@ export const routesConfig = [ { path: 'sales-bill-cancel', component: SalesBillCancel, - empAccess: 'Sales Bill Cancel', + empAccess: 'Sales Entry Cancel', }, { path: 'sales-bill-product-return/list', component: SalesBillProductsReturnList, - empAccess: 'Product Return', + empAccess: 'Sales Product Return', }, { path: 'sales-bill-product-return', component: SalesBillProductsReturn, - empAccess: 'Product Return', + empAccess: 'Sales Product Return', }, { path: 'booking-reschedule', @@ -1582,7 +1584,7 @@ export const routesConfig = [ { path: `barcode-qr-selection`, component: BarcodeTemplateSetup, - empAccess: 'Barcode / Qr', + empAccess: 'Barcode / QR', }, { path: 'kiosk-component', From de94e5784519837d7ab0e09b0e8e9d919123f9f1 Mon Sep 17 00:00:00 2001 From: Srinath Date: Wed, 28 Jan 2026 19:30:48 +0530 Subject: [PATCH 02/33] Added Emplyee Access missing names --- src/Pages/DeliveryChallan/Deliverychallan.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Pages/DeliveryChallan/Deliverychallan.jsx b/src/Pages/DeliveryChallan/Deliverychallan.jsx index c1bc3bc..20a8ac9 100644 --- a/src/Pages/DeliveryChallan/Deliverychallan.jsx +++ b/src/Pages/DeliveryChallan/Deliverychallan.jsx @@ -65,7 +65,7 @@ import { isMobile } from 'react-device-detect'; const DeliveryChellanForm = () => { const { SadminuserAccess } = useAuth(); let SAAccessCommonMaster = SadminuserAccess?.find( - (e) => e?.MenuName === 'Delivery challan' + (e) => e?.MenuName === 'Delivery Challan' ); const formRef = useRef(null); const transportFormRef = useRef(null); @@ -182,7 +182,7 @@ const DeliveryChellanForm = () => { }; let response = await dispatch(getEmpAccess(data)).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( - (item) => item.ConfigName === 'Purchase Quotation' + (item) => item.ConfigName === 'Delivery Challan' ); setEmpData(datas?.[0]); }; From c84c6503b01421b0ff4e382bca6b318747359f47 Mon Sep 17 00:00:00 2001 From: Srinath Date: Wed, 28 Jan 2026 19:31:14 +0530 Subject: [PATCH 03/33] Added Emplyee Access missing names --- src/Pages/PurchaseQuotation/PurchaseQuotationForm.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Pages/PurchaseQuotation/PurchaseQuotationForm.jsx b/src/Pages/PurchaseQuotation/PurchaseQuotationForm.jsx index cc0effc..6f807cd 100644 --- a/src/Pages/PurchaseQuotation/PurchaseQuotationForm.jsx +++ b/src/Pages/PurchaseQuotation/PurchaseQuotationForm.jsx @@ -612,7 +612,7 @@ const SalesQuotationForm = () => { }; let response = await dispatch(getEmpAccess(data)).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( - (item) => item.ConfigName === 'Purchase Quotation' + (item) => item.ConfigName === 'Sales Quotation' ); setEmpData(datas?.[0]); }; @@ -1653,7 +1653,7 @@ const SalesQuotationForm = () => { // Add these functions inside your component, before the return statement: // const handleEmailClick = () => { - // const subject = encodeURIComponent('Purchase Quotation'); + // const subject = encodeURIComponent('Sales Quotation'); // const body = encodeURIComponent('Please find attached the purchase quotation.'); // window.open(`mailto:?subject=${subject}&body=${body}`); // }; From 88eafa590ce001987f18f5b9ef13a38b505a6aeb Mon Sep 17 00:00:00 2001 From: Srinath Date: Wed, 28 Jan 2026 19:31:55 +0530 Subject: [PATCH 04/33] Added Emplyee Access missing names --- .../StoreKitchenFinish/KitchenFinishlist.jsx | 47 +++++++++++++++++-- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/src/Pages/StoreKitchen/StoreKitchenFinish/KitchenFinishlist.jsx b/src/Pages/StoreKitchen/StoreKitchenFinish/KitchenFinishlist.jsx index 09a8baf..4c81188 100644 --- a/src/Pages/StoreKitchen/StoreKitchenFinish/KitchenFinishlist.jsx +++ b/src/Pages/StoreKitchen/StoreKitchenFinish/KitchenFinishlist.jsx @@ -1,7 +1,7 @@ import React, { useState, useCallback, useEffect } from 'react'; import { Messages } from '../../../Components/Notifications/Messages'; import { useNavigate, useLocation } from 'react-router-dom'; -import { changeBreadCrumb } from '../../../Features/AppPage/CenterPage'; +import { changeBreadCrumb, getEmpAccess } from '../../../Features/AppPage/CenterPage'; import FormHeader from '../../PageComponents/FormHeader'; import Buttons from '../../../Components/Forms/Buttons'; import Search from '../../../Components/Forms/Search'; @@ -18,10 +18,12 @@ import { getSession } from '../../../Services/Others'; import { Table, Space } from 'antd'; import { IoEye } from 'react-icons/io5'; import { DefaultModal } from '../../../Components/Modal/DefaultModal'; +import { useAuth } from '../../../AuthContext'; const KitchenFinishlist = () => { const subDirectory = import.meta.env.ENV_BASE_URL; - + const { SadminuserAccess } = useAuth(); + let SAAccessCommonMaster = SadminuserAccess?.find((e) => e?.MenuName === "Finished Goods"); const items = [ { name: 'Home', @@ -50,6 +52,9 @@ const KitchenFinishlist = () => { const [page, setpage] = useState(1); const [AllocatedProductStocks, setAllocatedProductStocks] = useState(); const [AllocatedProductModal, setAllocatedProductModal] = useState(false); + const [empData, setEmpData] = useState(); + const UserType = getSession('UserType'); + const [addnewAccess, setaddnewAccess] = useState(true) useEffect(() => { dispatch(changeBreadCrumb({ items: items })); @@ -64,6 +69,42 @@ const KitchenFinishlist = () => { } }, []); + useEffect(() => { + if (UserType === "Employee") { + fetchApi() + } + }, [UserType]) + + useEffect(() => { + let hasAccess = false; + + if (UserType === "Admin" || UserType === "Super Admin") { + hasAccess = true; + } + else if (UserType === "Employee") { + hasAccess = empData?.AddAccess === "Y"; + } + else if (UserType === "Super Admin User") { + hasAccess = SAAccessCommonMaster?.AddAccess === "Y"; + } + + setaddnewAccess(!hasAccess); + }, [empData, SAAccessCommonMaster, UserType]); + const fetchApi = async () => { + + let data = { + 'CompId': CompId, + 'BranchId': BranchId, + 'AppId': AppId, + 'EmpId': UserId + } + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter((item) => item.ConfigName === 'Finished Goods') + setEmpData(datas?.[0]) + + } + + const onComplete = useCallback(() => { setMessageData(null); setMessageType(null); @@ -232,7 +273,7 @@ const KitchenFinishlist = () => {
handelAddButton()} color="901D77" icon={} From 43adb378b8c9ac023cf002506b13935edafcd7b5 Mon Sep 17 00:00:00 2001 From: Srinath Date: Wed, 28 Jan 2026 19:32:23 +0530 Subject: [PATCH 05/33] Added Emplyee Access missing names --- .../StoretoKitchen/StoretoKitchenlist.jsx | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/Pages/StoreKitchen/StoretoKitchen/StoretoKitchenlist.jsx b/src/Pages/StoreKitchen/StoretoKitchen/StoretoKitchenlist.jsx index df9c3b3..7f2e3ba 100644 --- a/src/Pages/StoreKitchen/StoretoKitchen/StoretoKitchenlist.jsx +++ b/src/Pages/StoreKitchen/StoretoKitchen/StoretoKitchenlist.jsx @@ -1,7 +1,7 @@ import React, { useState, useCallback, useEffect } from 'react'; import { Messages } from '../../../Components/Notifications/Messages'; import { useNavigate, useLocation } from 'react-router-dom'; -import { changeBreadCrumb } from '../../../Features/AppPage/CenterPage'; +import { changeBreadCrumb, getEmpAccess } from '../../../Features/AppPage/CenterPage'; import FormHeader from '../../PageComponents/FormHeader'; import Buttons from '../../../Components/Forms/Buttons'; import Search from '../../../Components/Forms/Search'; @@ -18,9 +18,12 @@ import { DefaultModal } from '../../../Components/Modal/DefaultModal'; import { IoEye } from 'react-icons/io5'; import { getSession } from '../../../Services/Others'; import { getStoretoProduction } from '../../../Features/StoreKitchen/StoreRecipe'; +import { useAuth } from '../../../AuthContext'; const Storekitchenlist = () => { const subDirectory = import.meta.env.ENV_BASE_URL; + const { SadminuserAccess } = useAuth(); + let SAAccessCommonMaster = SadminuserAccess?.find((e) => e?.MenuName === "Material Issue"); const location = useLocation(); const navigateTo = useNavigate(); @@ -40,6 +43,8 @@ const Storekitchenlist = () => { const [Tablelist, setTablelist] = useState(); const [AllocatedProductStocks, setAllocatedProductStocks] = useState([]); const [AllocatedProductModal, setAllocatedProductModal] = useState(false); + const [empData, setEmpData] = useState(); + const [addnewAccess, setaddnewAccess] = useState(true) useEffect(() => { dispatch(changeBreadCrumb({ items: items })); @@ -54,6 +59,41 @@ const Storekitchenlist = () => { } }, []); + useEffect(() => { + if (UserType === "Employee") { + fetchApi() + } + }, [UserType]) + + useEffect(() => { + let hasAccess = false; + + if (UserType === "Admin" || UserType === "Super Admin") { + hasAccess = true; + } + else if (UserType === "Employee") { + hasAccess = empData?.AddAccess === "Y"; + } + else if (UserType === "Super Admin User") { + hasAccess = SAAccessCommonMaster?.AddAccess === "Y"; + } + + setaddnewAccess(!hasAccess); + }, [empData, SAAccessCommonMaster, UserType]); + const fetchApi = async () => { + + let data = { + 'CompId': CompId, + 'BranchId': BranchId, + 'AppId': AppId, + 'EmpId': UserId + } + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter((item) => item.ConfigName === 'Material Issue') + setEmpData(datas?.[0]) + + } + const onComplete = useCallback(() => { setMessageData(null); setMessageType(null); @@ -292,7 +332,7 @@ const Storekitchenlist = () => {
handelAddButton()} color="901D77" icon={} From 7885feb3ec467d0e48701b149a777c104921b04d Mon Sep 17 00:00:00 2001 From: Srinath Date: Wed, 28 Jan 2026 19:32:40 +0530 Subject: [PATCH 06/33] Added Emplyee Access missing names --- .../StoreRecipe/StoreRecipelist.jsx | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/Pages/StoreKitchen/StoreRecipe/StoreRecipelist.jsx b/src/Pages/StoreKitchen/StoreRecipe/StoreRecipelist.jsx index dd70d68..86d84b1 100644 --- a/src/Pages/StoreKitchen/StoreRecipe/StoreRecipelist.jsx +++ b/src/Pages/StoreKitchen/StoreRecipe/StoreRecipelist.jsx @@ -1,7 +1,7 @@ import React, { useState, useCallback, useEffect } from 'react'; import { Messages } from '../../../Components/Notifications/Messages'; import { useNavigate, useLocation } from 'react-router-dom'; -import { changeBreadCrumb } from '../../../Features/AppPage/CenterPage'; +import { changeBreadCrumb, getEmpAccess } from '../../../Features/AppPage/CenterPage'; import FormHeader from '../../PageComponents/FormHeader'; import Buttons from '../../../Components/Forms/Buttons'; import Search from '../../../Components/Forms/Search'; @@ -21,6 +21,7 @@ import { } from '../../../Features/StoreKitchen/StoreRecipe'; import { getSession } from '../../../Services/Others'; import { DefaultModal } from '../../../Components/Modal/DefaultModal'; +import { useAuth } from '../../../AuthContext'; const StoreRecipelist = () => { const subDirectory = import.meta.env.ENV_BASE_URL; @@ -34,6 +35,8 @@ const StoreRecipelist = () => { const AppId = getSession('AppId'); const UserId = getSession('UserId'); const UserType = getSession('UserType'); + const { SadminuserAccess } = useAuth(); + let SAAccessCommonMaster = SadminuserAccess?.find((e) => e?.MenuName === "Bill Of Material"); const [messageType, setMessageType] = useState(null); const [messageData, setMessageData] = useState(null); @@ -44,6 +47,8 @@ const StoreRecipelist = () => { const [sortedInfo, setSortedInfo] = useState({}); const [CreatedProductdata, setCreatedProductdata] = useState(); const [CreatedProdModal, setCreatedProdModal] = useState(); + const [empData, setEmpData] = useState(); + const [addnewAccess, setaddnewAccess] = useState(true); useEffect(() => { dispatch(changeBreadCrumb({ items: items })); @@ -58,6 +63,41 @@ const StoreRecipelist = () => { } }, []); + useEffect(() => { + if (UserType === "Employee") { + fetchApi() + } + }, [UserType]) + + useEffect(() => { + let hasAccess = false; + + if (UserType === "Admin" || UserType === "Super Admin") { + hasAccess = true; + } + else if (UserType === "Employee") { + hasAccess = empData?.AddAccess === "Y"; + } + else if (UserType === "Super Admin User") { + hasAccess = SAAccessCommonMaster?.AddAccess === "Y"; + } + + setaddnewAccess(!hasAccess); + }, [empData, SAAccessCommonMaster, UserType]); + + const fetchApi = async () => { + + let data = { + 'CompId': CompId, + 'BranchId': BranchId, + 'AppId': AppId, + 'EmpId': UserId + } + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter((item) => item.ConfigName === 'Bill Of Material') + setEmpData(datas?.[0]) + + } const onComplete = useCallback(() => { setMessageData(null); setMessageType(null); @@ -315,7 +355,7 @@ const StoreRecipelist = () => {
handelAddButton()} color="901D77" icon={} From 2eb459a0fdc908d6792633f50d53e3b017ecf91b Mon Sep 17 00:00:00 2001 From: Srinath Date: Wed, 28 Jan 2026 19:32:57 +0530 Subject: [PATCH 07/33] Added Emplyee Access missing names --- src/Pages/CancelReschedule/ChangePaymentmode.jsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Pages/CancelReschedule/ChangePaymentmode.jsx b/src/Pages/CancelReschedule/ChangePaymentmode.jsx index 647986c..d5cd450 100644 --- a/src/Pages/CancelReschedule/ChangePaymentmode.jsx +++ b/src/Pages/CancelReschedule/ChangePaymentmode.jsx @@ -77,7 +77,7 @@ const valueStyle = { const ChangePaymentmode = () => { const { SadminuserAccess } = useAuth(); let SAAccessCommonMaster = SadminuserAccess?.find( - (e) => e?.MenuName === 'Cancel Payment Change' + (e) => e?.MenuName === 'Payment Mode Change' ); const formRef = useRef(); @@ -182,6 +182,11 @@ const ChangePaymentmode = () => { getCreditcustDetail(); }, [SelectCustId, SelectCust]); + useEffect(() => { + if (UserType === 'Employee') { + fetchApi(); + } + }, [UserType]); const fetchApi = async () => { let data = { CompId: CompId, @@ -191,7 +196,7 @@ const ChangePaymentmode = () => { }; let response = await dispatch(getEmpAccess(data)).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( - (item) => item.ConfigName === 'Cancel Payment Change' + (item) => item.ConfigName === 'Payment Mode Change' ); setEmpData(datas?.[0]); }; @@ -2119,7 +2124,7 @@ const ChangePaymentmode = () => { buttonText="SUBMIT" color="901D77" icon={} - disabled={addnewAccess ? false : isdisabled} + disabled={addnewAccess} />
From f709705062b78dac252c5260a47dafa522fec02f Mon Sep 17 00:00:00 2001 From: Srinath Date: Wed, 28 Jan 2026 19:33:19 +0530 Subject: [PATCH 08/33] Added Emplyee Access missing names --- src/Pages/SupplierMaster/SupplierMasterList.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Pages/SupplierMaster/SupplierMasterList.jsx b/src/Pages/SupplierMaster/SupplierMasterList.jsx index ea7fc72..b543361 100644 --- a/src/Pages/SupplierMaster/SupplierMasterList.jsx +++ b/src/Pages/SupplierMaster/SupplierMasterList.jsx @@ -37,7 +37,7 @@ const SupplierMaster = () => { const { SadminuserAccess } = useAuth(); let SAAccessCommonMaster = SadminuserAccess?.find( - (e) => e?.MenuName === (AppType === 'Wholesale' ? 'Seller' : 'Supplier') + (e) => e?.MenuName === (AppType === 'Wholesale' ? 'Seller' : 'Add Supplier') ); const navigate = useNavigate(); @@ -103,7 +103,7 @@ const SupplierMaster = () => { let response = await dispatch(getEmpAccess(data)).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( (item) => - item.ConfigName === (AppType === 'Wholesale' ? 'Seller' : 'Supplier') + item.ConfigName === (AppType === 'Wholesale' ? 'Seller' : 'Add Supplier') ); setEmpData(datas?.[0]); }; From 966e582fa5a453139686ab2d91154402a551b9fc Mon Sep 17 00:00:00 2001 From: Srinath Date: Wed, 28 Jan 2026 19:33:42 +0530 Subject: [PATCH 09/33] Added Emplyee Access missing names --- .../SupplierProductMapping.jsx | 49 +++++++++++++------ 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/src/Pages/SupplierProductMapping/SupplierProductMapping.jsx b/src/Pages/SupplierProductMapping/SupplierProductMapping.jsx index 1919b91..22dc242 100644 --- a/src/Pages/SupplierProductMapping/SupplierProductMapping.jsx +++ b/src/Pages/SupplierProductMapping/SupplierProductMapping.jsx @@ -5,7 +5,7 @@ import { DeleteFilled, PlusOutlined, ReloadOutlined } from '@ant-design/icons'; import { Messages } from '../../Components/Notifications/Messages'; import { Tables } from '../../Components/Tables/Table'; import { Search } from '../../Components/Forms/Search'; -import { changeBreadCrumb } from '../../Features/AppPage/CenterPage.js'; +import { changeBreadCrumb, getEmpAccess } from '../../Features/AppPage/CenterPage.js'; import Buttons from '../../Components/Forms/Buttons'; import { ExtractDateFormate, getSession } from '../../Services/Others'; import FormHeader from '../PageComponents/FormHeader.jsx'; @@ -34,7 +34,7 @@ const items = [ const SupplierProductMapping = () => { const { SadminuserAccess } = useAuth(); const SAAccessCommonMaster = SadminuserAccess?.find( - (e) => e?.MenuName === 'Supplier Product Mapping' + (e) => e?.MenuName === 'Product Mapping' ); const [page, setpage] = useState(1); @@ -132,14 +132,13 @@ const SupplierProductMapping = () => { }} onClick={ () => - // ( - // (UserType === 'Super Admin') || - // (UserType === "Super Admin User" && SAAccessCommonMaster?.DeleteAccess === "Y") || - // (UserType === 'Employee' && empData?.DeleteAccess === "Y") || - // (UserType === 'Admin')) - // ? + ((UserType === 'Super Admin') || + (UserType === "Super Admin User" && SAAccessCommonMaster?.DeleteAccess === "Y") || + (UserType === 'Employee' && empData?.DeleteAccess === "Y") || + (UserType === 'Admin')) + ? statusFormatter(record) - // : null + : null } /> ) : ( @@ -149,14 +148,13 @@ const SupplierProductMapping = () => { }} onClick={ () => - // ( - // (UserType === 'Super Admin') || - // (UserType === "Super Admin User" && SAAccessCommonMaster?.DeleteAccess === "Y") || - // (UserType === 'Employee' && empData?.DeleteAccess === "Y") || - // (UserType === 'Admin')) - // ? + ((UserType === 'Super Admin') || + (UserType === "Super Admin User" && SAAccessCommonMaster?.DeleteAccess === "Y") || + (UserType === 'Employee' && empData?.DeleteAccess === "Y") || + (UserType === 'Admin')) + ? statusFormatter(record) - // : null + : null } /> )} @@ -186,6 +184,25 @@ const SupplierProductMapping = () => { setaddnewAccess(!hasAccess); }, [empData, SAAccessCommonMaster, UserType]); + useEffect(() => { + if (UserType === "Employee") { + fetchApi() + } + }, [UserType]) + const fetchApi = async () => { + let data = { + CompId: CompId, + BranchId: BranchId, + AppId: AppId, + EmpId: UserId, + }; + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( + (item) => item.ConfigName === 'Product Mapping' + ); + setEmpData(datas?.[0]); + }; + const handleModalCancel = () => { setIsModalOpen(false); setModalSelectedSupplier(null); From effafa34ee6a46ed7ef21af80fadabf8b3316db9 Mon Sep 17 00:00:00 2001 From: Srinath Date: Wed, 28 Jan 2026 19:34:00 +0530 Subject: [PATCH 10/33] Added Emplyee Access missing names --- .../SalesRemoval/SalesBillCancelList.jsx | 46 ++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/src/Pages/SalesRemoval/SalesBillCancelList.jsx b/src/Pages/SalesRemoval/SalesBillCancelList.jsx index 2c91956..0490639 100644 --- a/src/Pages/SalesRemoval/SalesBillCancelList.jsx +++ b/src/Pages/SalesRemoval/SalesBillCancelList.jsx @@ -26,11 +26,12 @@ import { import { DefaultModal } from '../../Components/Modal/DefaultModal.jsx'; import { Form, Table, Input } from 'antd'; import { TiDelete } from 'react-icons/ti'; -import { changeBreadCrumb } from '../../Features/AppPage/CenterPage.js'; +import { changeBreadCrumb, getEmpAccess } from '../../Features/AppPage/CenterPage.js'; import { EditFilled, StopOutlined } from '@ant-design/icons'; import { ArrowRightOutlined } from '@ant-design/icons'; import { DropDowns } from '../../Components/Forms/DropDown.jsx'; import { CgCloseR } from 'react-icons/cg'; +import { useAuth } from '../../AuthContext.jsx'; const SalesRemovallist = () => { const dispatch = useDispatch(); @@ -38,8 +39,13 @@ const SalesRemovallist = () => { const BranchId = getSession('BranchId'); const AppId = getSession('AppId'); const UserId = getSession('UserId'); + const UserType = getSession('UserType'); const formRef = useRef(null); const { RangePicker } = DatePicker; + const { SadminuserAccess } = useAuth(); + const SAAccessCommonMaster = SadminuserAccess?.find( + (e) => e?.MenuName === 'Sales Entry Cancel' + ); const [messageType, setMessageType] = useState(null); const [messageData, setMessageData] = useState(null); @@ -64,6 +70,8 @@ const SalesRemovallist = () => { const [IdentifyDetails, setIdentifyDetails] = useState([]); const [Identifiersnumber, setIdentifiersnumber] = useState([]); const [Qty, setQty] = useState(); + const [empData, setEmpData] = useState(); + const [addnewAccess, setaddnewAccess] = useState(true); const subDirectory = import.meta.env.ENV_BASE_URL; @@ -79,6 +87,8 @@ const SalesRemovallist = () => { ]; + + const onComplete = useCallback(() => { setMessageData(null); setMessageType(null); @@ -107,6 +117,39 @@ const SalesRemovallist = () => { dispatch(changeBreadCrumb({ items: items })); Tabledatas(); }, []); + + useEffect(() => { + let hasAccess = false; + + if (UserType === 'Admin' || UserType === 'Super Admin') { + hasAccess = true; + } else if (UserType === 'Employee') { + hasAccess = empData?.AddAccess === 'Y'; + } else if (UserType === 'Super Admin User') { + hasAccess = SAAccessCommonMaster?.AddAccess === 'Y'; + } + + setaddnewAccess(!hasAccess); + }, [empData, SAAccessCommonMaster, UserType]); + useEffect(() => { + if (UserType === "Employee") { + fetchApi() + } + }, [UserType]) + const fetchApi = async () => { + let data = { + CompId: CompId, + BranchId: BranchId, + AppId: AppId, + EmpId: UserId, + }; + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( + (item) => item.ConfigName === 'Sales Entry Cancel' + ); + setEmpData(datas?.[0]); + }; + function safeRound(amountStr) { if (amountStr == null) return '0.00'; const cleaned = String(amountStr).replace(/[^0-9.-]+/g, ''); @@ -1252,6 +1295,7 @@ const SalesRemovallist = () => { } handleSubmit={handleSubmit} /> From 89d71c2617e2e4e80856318e96209268abbbd6d6 Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:30:27 +0530 Subject: [PATCH 11/33] Added Emplyee Access missing names --- .../SalesBillProductReturnList.jsx | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/src/Pages/CancelReschedule/SalesBillProductReturnList.jsx b/src/Pages/CancelReschedule/SalesBillProductReturnList.jsx index 0e84251..3d34668 100644 --- a/src/Pages/CancelReschedule/SalesBillProductReturnList.jsx +++ b/src/Pages/CancelReschedule/SalesBillProductReturnList.jsx @@ -6,7 +6,7 @@ import { PlusOutlined } from '@ant-design/icons'; import { Messages } from '../../Components/Notifications/Messages'; import { Tables } from '../../Components/Tables/Table'; import { Search } from '../../Components/Forms/Search'; -import { changeBreadCrumb } from '../../Features/AppPage/CenterPage.js'; +import { changeBreadCrumb, getEmpAccess } from '../../Features/AppPage/CenterPage.js'; import { BsEye } from "react-icons/bs"; import Buttons from '../../Components/Forms/Buttons'; import { getSession } from '../../Services/Others'; @@ -14,6 +14,7 @@ import FormHeader from '../PageComponents/FormHeader.jsx'; import { getSalesReturn } from '../../Features/CancelReschedule/CancelApplicableProd.js'; import '../../Styles/OverAllStyle/OverAllStyle.scss'; import { DefaultModal } from '../../Components/Modal/DefaultModal.jsx'; +import { useAuth } from '../../AuthContext.jsx'; const subDirectory = import.meta.env.ENV_BASE_URL; const items = [ @@ -33,16 +34,24 @@ const items = [ ]; const SalesBillProductReturnList = () => { + const { SadminuserAccess } = useAuth(); + const SAAccessCommonMaster = SadminuserAccess?.find( + (e) => e?.MenuName === 'Sales Product Return' + ); const [page, setpage] = useState(1); const CompId = getSession('CompId'); const BranchId = getSession('BranchId'); const AppId = getSession('AppId'); + const UserId = getSession('UserId'); + const UserType = getSession('UserType'); const navigateTo = useNavigate(); const dispatch = useDispatch(); const [tabledata, setTabledata] = useState(); const [message, setMessage] = useState({ type: null, data: null }); const [searchedText, setSearchedText] = useState(''); const [sortedInfo, setSortedInfo] = useState({}); + const [empData, setEmpData] = useState(); + const [addnewAccess, setaddnewAccess] = useState(true); const [productDetailsModel, setProductDetailsModel] = useState({ model: false, data: [] @@ -98,6 +107,38 @@ const SalesBillProductReturnList = () => { setMessage({ type: null, data: null }) }, []); + + useEffect(() => { + let hasAccess = false; + if (UserType === 'Admin' || UserType === 'Super Admin') { + hasAccess = true; + } else if (UserType === 'Employee') { + hasAccess = empData?.AddAccess === 'Y'; + } else if (UserType === 'Super Admin User') { + hasAccess = SAAccessCommonMaster?.AddAccess === 'Y'; + } + + setaddnewAccess(!hasAccess); + }, [empData, SAAccessCommonMaster, UserType]); + + useEffect(() => { + if (UserType === "Employee") { + fetchApi() + } + }, [UserType]) + const fetchApi = async () => { + let data = { + CompId: CompId, + BranchId: BranchId, + AppId: AppId, + EmpId: UserId, + }; + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( + (item) => item.ConfigName === 'Sales Product Return' + ); + setEmpData(datas?.[0]); + }; const columns = [ { title: 'Sl.No', @@ -170,6 +211,7 @@ const SalesBillProductReturnList = () => { buttonText={'Add New'} handleSubmit={() => handelAddButton()} color="901D77" + disabled={addnewAccess} icon={} > OPEN From c8bf1d22f8c317e1d21bd85222070fdb0852e67c Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:31:16 +0530 Subject: [PATCH 12/33] Added Emplyee Access missing names --- src/Pages/PurchaseReturn/PurchaseReturnGet.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Pages/PurchaseReturn/PurchaseReturnGet.jsx b/src/Pages/PurchaseReturn/PurchaseReturnGet.jsx index ec27783..2f5d7c6 100644 --- a/src/Pages/PurchaseReturn/PurchaseReturnGet.jsx +++ b/src/Pages/PurchaseReturn/PurchaseReturnGet.jsx @@ -59,7 +59,7 @@ const items = [ const PurchaseReturnGet = () => { const { SadminuserAccess } = useAuth(); let SAAccessCommonMaster = SadminuserAccess?.find( - (e) => e?.MenuName === 'Purchase Return' + (e) => e?.MenuName === 'Product Return' ); const navigate = useNavigate(); @@ -158,7 +158,7 @@ const PurchaseReturnGet = () => { }; let response = await dispatch(getEmpAccess(data)).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( - (item) => item.ConfigName === 'Purchase Return' + (item) => item.ConfigName === 'Product Return' ); setEmpData(datas?.[0]); }; From ea17ccf76bb3308b1ad8039b21561b60d585e8ea Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:31:38 +0530 Subject: [PATCH 13/33] Added Emplyee Access missing names --- src/Pages/Reports/PublicQrCode.jsx | 44 ++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/Pages/Reports/PublicQrCode.jsx b/src/Pages/Reports/PublicQrCode.jsx index 422429d..7043d6e 100644 --- a/src/Pages/Reports/PublicQrCode.jsx +++ b/src/Pages/Reports/PublicQrCode.jsx @@ -20,11 +20,12 @@ import { ApplicationPreferences, getBranchDetail, } from '../../Features/BrachLogin/BranchLogin'; -import { changeBreadCrumb } from '../../Features/AppPage/CenterPage'; +import { changeBreadCrumb, getEmpAccess } from '../../Features/AppPage/CenterPage'; import { useSelector } from 'react-redux'; import PublicQrCodeShare from './PublicQrCodeShare/PublicQrCodeShare'; import { FeatureAddon } from '../../Features/BookingScreen/BookingData/BookingData'; import { getPaymentOptionsData } from '../../Features/Payment/Paymentoptions/Paymentoptions'; +import { useAuth } from '../../AuthContext'; const subDirectory = import.meta.env.ENV_MAIN_BASE_URL; const items = [ @@ -56,6 +57,8 @@ const PublicQrCode = () => { const [Tabledata, setTabledata] = useState([]); const [CheckTabledata, setCheckTabledata] = useState([]); const [qrCodeUrl, setQrCodeUrl] = useState(''); + const [empData, setEmpData] = useState(); + const [addnewAccess, setaddnewAccess] = useState(true); const [selectedConfig, setSelectedConfig] = useState({ id: '', name: 'Both', @@ -77,6 +80,11 @@ const PublicQrCode = () => { const BranchId = getSession('BranchId'); const AppId = getSession('AppId'); const UserId = getSession('UserId'); + const UserType = getSession('UserType'); + const { SadminuserAccess } = useAuth(); + const SAAccessCommonMaster = SadminuserAccess?.find( + (e) => e?.MenuName === 'SelfBooking QR Code' + ); const allowed = ['TakeAway', CheckTabledata?.length > 0 ? 'Dine In' : '']; const bookingTypePreference = appPreferences?.find( (preference) => preference?.PreferredCatName === 'Booking Type' @@ -209,6 +217,38 @@ const PublicQrCode = () => { } }; + useEffect(() => { + let hasAccess = false; + + if (UserType === 'Admin' || UserType === 'Super Admin') { + hasAccess = true; + } else if (UserType === 'Employee') { + hasAccess = empData?.AddAccess === 'Y'; + } else if (UserType === 'Super Admin User') { + hasAccess = SAAccessCommonMaster?.AddAccess === 'Y'; + } + + setaddnewAccess(!hasAccess); + }, [empData, SAAccessCommonMaster, UserType]); + useEffect(() => { + if (UserType === "Employee") { + fetchApiEmpAccess() + } + }, [UserType]) + const fetchApiEmpAccess = async () => { + let data = { + CompId: CompId, + BranchId: BranchId, + AppId: AppId, + EmpId: UserId, + }; + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( + (item) => item.ConfigName === 'SelfBooking QR Code' + ); + setEmpData(datas?.[0]); + }; + const fetchApi = async () => { let response = await dispatch(getConfiguration({ Type: 'SA' })).unwrap(); if (response?.data?.statusCode === 1) { @@ -700,7 +740,7 @@ const PublicQrCode = () => { className="tertiary_Button" color="901D77" handleSubmit={HandleSubmit} - // disabled={addnewAccess} + disabled={addnewAccess} icon={} > GENERATE From 21498c4ee39a67ef62eaf308fcb82187352664a5 Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:31:56 +0530 Subject: [PATCH 14/33] Added Emplyee Access missing names --- .../ExchangeAndReplacement/ExchangeAndReplacementList.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Pages/ExchangeAndReplacement/ExchangeAndReplacementList.jsx b/src/Pages/ExchangeAndReplacement/ExchangeAndReplacementList.jsx index 9146c65..50d2e32 100644 --- a/src/Pages/ExchangeAndReplacement/ExchangeAndReplacementList.jsx +++ b/src/Pages/ExchangeAndReplacement/ExchangeAndReplacementList.jsx @@ -34,7 +34,7 @@ const ExchangeAndReplacementList = () => { const UserType = getSession('UserType'); const { SadminuserAccess } = useAuth(); - let SAAccessCommonMaster = SadminuserAccess?.find((e) => e?.MenuName === 'ExchangeAndReplacement'); + let SAAccessCommonMaster = SadminuserAccess?.find((e) => e?.MenuName === 'Exchange / Return'); const items = [ { @@ -87,7 +87,7 @@ const ExchangeAndReplacementList = () => { }) ).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( - (item) => item.ConfigName === 'ExchangeAndReplacement' + (item) => item.ConfigName === 'Exchange / Return' ); setEmpData(datas?.[0]); }; From 0530e749a2493a379e03da22a962db85852d22d5 Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:32:18 +0530 Subject: [PATCH 15/33] Added Emplyee Access missing names --- src/Pages/CancelReschedule/CancellationList.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Pages/CancelReschedule/CancellationList.jsx b/src/Pages/CancelReschedule/CancellationList.jsx index 9105af0..cf1f000 100644 --- a/src/Pages/CancelReschedule/CancellationList.jsx +++ b/src/Pages/CancelReschedule/CancellationList.jsx @@ -28,7 +28,7 @@ const CancellationList = () => { console.log(SadminuserAccess, 'SadminuserAccess'); let SAAccessCommonMaster = SadminuserAccess?.find( - (e) => e?.MenuName === 'Cancellation and Reschedule Rules' + (e) => e?.MenuName === 'Cancel / Reschedule' ); const navigateTo = useNavigate(); @@ -234,7 +234,7 @@ const CancellationList = () => { }; let response = await dispatch(getEmpAccess(data)).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( - (item) => item.ConfigName === 'Cancellation and Reschedule Rules' + (item) => item.ConfigName === 'Cancel / Reschedule' ); setEmpData(datas?.[0]); }; From 8959025a31b7b6df26065f884839207551605cc8 Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:32:46 +0530 Subject: [PATCH 16/33] Added Emplyee Access missing names --- .../ExchangeReturnMapList.jsx | 48 +++++++++++++++++-- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/src/Pages/ExchangeReturnMap/ExchangeReturnMapList.jsx b/src/Pages/ExchangeReturnMap/ExchangeReturnMapList.jsx index 921e715..14be4f8 100644 --- a/src/Pages/ExchangeReturnMap/ExchangeReturnMapList.jsx +++ b/src/Pages/ExchangeReturnMap/ExchangeReturnMapList.jsx @@ -4,7 +4,7 @@ import Search from '../../Components/Forms/Search'; import { Tables } from '../../Components/Tables/Table'; import FormHeader from '../PageComponents/FormHeader'; import { useNavigate } from 'react-router-dom'; -import { changeBreadCrumb } from '../../Features/AppPage/CenterPage'; +import { changeBreadCrumb, getEmpAccess } from '../../Features/AppPage/CenterPage'; import { DeleteFilled, EditFilled, @@ -26,7 +26,7 @@ import { import { Space, Table, message, Modal, Alert } from 'antd'; import { DefaultModal } from '../../Components/Modal/DefaultModal'; import { IoEye } from 'react-icons/io5'; - +import { useAuth } from '../../AuthContext'; const subDirectory = import.meta.env.BASE_URL; const items = [ { @@ -40,6 +40,11 @@ const items = [ }, ]; const ExchangeReturnMapList = () => { + + const { SadminuserAccess } = useAuth(); + const SAAccessCommonMaster = SadminuserAccess?.find( + (e) => e?.MenuName === 'Rules Mapping' + ); const dispatch = useDispatch(); const CompId = getSession('CompId'); const BranchId = getSession('BranchId'); @@ -53,7 +58,7 @@ const ExchangeReturnMapList = () => { const [messageData, setMessageData] = useState(null); // Add missing variables for access control - const [SAAccessCommonMaster, setSAAccessCommonMaster] = useState({}); + const [addnewAccess, setaddnewAccess] = useState(true); const [empData, setEmpData] = useState({}); const [sortedInfo, setSortedInfo] = useState({}); @@ -132,6 +137,38 @@ const ExchangeReturnMapList = () => { // } // }; + useEffect(() => { + let hasAccess = false; + if (UserType === 'Admin' || UserType === 'Super Admin') { + hasAccess = true; + } else if (UserType === 'Employee') { + hasAccess = empData?.AddAccess === 'Y'; + } else if (UserType === 'Super Admin User') { + hasAccess = SAAccessCommonMaster?.AddAccess === 'Y'; + } + + setaddnewAccess(!hasAccess); + }, [empData, SAAccessCommonMaster, UserType]); + useEffect(() => { + if (UserType === "Employee") { + fetchApiEmpAccess() + } + }, [UserType]) + const fetchApiEmpAccess = async () => { + let data = { + CompId: CompId, + BranchId: BranchId, + AppId: AppId, + EmpId: UserId, + }; + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( + (item) => item.ConfigName === 'Rules Mapping' + ); + setEmpData(datas?.[0]); + }; + + const statusDeactive = async (data) => { let deleteData = { PolicyId: data.PolicyId, @@ -270,7 +307,7 @@ const ExchangeReturnMapList = () => { (UserType === 'Super Admin User' && SAAccessCommonMaster?.UpdateAccess === 'Y') || (UserType === 'Employee' && - empData?.UpdateAccess === 'Y') || + addnewAccess) || UserType === 'Admin' ? actionsFormatter(record, index) : null @@ -301,7 +338,7 @@ const ExchangeReturnMapList = () => { (UserType === 'Super Admin User' && SAAccessCommonMaster?.DeleteAccess === 'Y') || (UserType === 'Employee' && - empData?.DeleteAccess === 'Y') || + addnewAccess) || UserType === 'Admin' ? statusDeactive(record) : null @@ -441,6 +478,7 @@ const ExchangeReturnMapList = () => { } color="901D77" /> From b5ced8d15a4e00f4ca86c003d62dcad3ff1e11a0 Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:33:04 +0530 Subject: [PATCH 17/33] Added Emplyee Access missing names --- src/Pages/BarcodeSetup/BarcodeTemplateSetup.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Pages/BarcodeSetup/BarcodeTemplateSetup.jsx b/src/Pages/BarcodeSetup/BarcodeTemplateSetup.jsx index 895476a..61d8c4d 100644 --- a/src/Pages/BarcodeSetup/BarcodeTemplateSetup.jsx +++ b/src/Pages/BarcodeSetup/BarcodeTemplateSetup.jsx @@ -156,7 +156,7 @@ const BarcodeTemplateSetup = () => { const { SadminuserAccess } = useAuth(); const SAAccessCommonMaster = SadminuserAccess?.find( - (e) => e?.MenuName === 'Barcode / Qr Setup' + (e) => e?.MenuName === 'Barcode / QR' ); // useDispatch const dispatch = useDispatch(); @@ -335,7 +335,7 @@ const BarcodeTemplateSetup = () => { }; let response = await dispatch(getEmpAccess(data)).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( - (item) => item.ConfigName === 'Barcode / Qr Setup' + (item) => item.ConfigName === 'Barcode / QR' ); setEmpData(datas?.[0]); }; From cfabbe81f38b58210a0693b0cac3e04a741e76b6 Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:33:27 +0530 Subject: [PATCH 18/33] Added Emplyee Access missing names --- src/Pages/Product/ProductList.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Pages/Product/ProductList.jsx b/src/Pages/Product/ProductList.jsx index fd68fd3..2370773 100644 --- a/src/Pages/Product/ProductList.jsx +++ b/src/Pages/Product/ProductList.jsx @@ -107,7 +107,7 @@ const colorText = 'Color : Red'; const ProductList = () => { const { SadminuserAccess } = useAuth(); let SAAccessCommonMaster = SadminuserAccess?.find( - (e) => e?.MenuName === 'Product' + (e) => e?.MenuName === 'Add Product' ); const formRef = useRef(); // const ref1 = useRef(null); @@ -1708,7 +1708,7 @@ const ProductList = () => { }; let response = await dispatch(getEmpAccess(data)).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( - (item) => item.ConfigName === 'Product' + (item) => item.ConfigName === 'Add Product' ); setEmpData(datas?.[0]); }; From e9678527bc22c4ffbdbc867f61605a28ec81e7fa Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:33:41 +0530 Subject: [PATCH 19/33] Added Emplyee Access missing names --- src/Pages/ComboPack/ComboMasterlist.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Pages/ComboPack/ComboMasterlist.jsx b/src/Pages/ComboPack/ComboMasterlist.jsx index 2abdab7..7cbe220 100644 --- a/src/Pages/ComboPack/ComboMasterlist.jsx +++ b/src/Pages/ComboPack/ComboMasterlist.jsx @@ -54,7 +54,7 @@ const items = [ const ComboList = () => { const { SadminuserAccess } = useAuth(); let SAAccessCommonMaster = SadminuserAccess?.find( - (e) => e?.MenuName === 'Combo Product' + (e) => e?.MenuName === 'Add Product' ); console.log(SadminuserAccess, 'SadminuserAccessSadminuserAccess'); @@ -205,7 +205,7 @@ const ComboList = () => { }; let response = await dispatch(getEmpAccess(data)).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( - (item) => item.ConfigName === 'Combo Product' + (item) => item.ConfigName === 'Add Product' ); setEmpData(datas?.[0]); }; From aa59b1dce11796757bda408104d984b45942835a Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:34:21 +0530 Subject: [PATCH 20/33] Added Emplyee Access missing names --- src/Pages/EmpMaster/EmpMasterList.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Pages/EmpMaster/EmpMasterList.jsx b/src/Pages/EmpMaster/EmpMasterList.jsx index 406f121..146dbff 100644 --- a/src/Pages/EmpMaster/EmpMasterList.jsx +++ b/src/Pages/EmpMaster/EmpMasterList.jsx @@ -44,7 +44,7 @@ const items = [ const EmployeeMaster = () => { const { SadminuserAccess } = useAuth(); let SAAccessCommonMaster = SadminuserAccess?.find( - (e) => e?.MenuName === 'Employee' + (e) => e?.MenuName === 'Add Employee' ); const navigate = useNavigate(); @@ -144,7 +144,7 @@ const EmployeeMaster = () => { }) ).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( - (item) => item.ConfigName === 'Employee' + (item) => item.ConfigName === 'Add Employee' ); setEmpData(datas?.[0]); }; From 83c9e20aae281bcb798ca721a0b8e600b6ac9c59 Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:34:37 +0530 Subject: [PATCH 21/33] Added Emplyee Access missing names --- src/Pages/Offer/Offer/OfferListNew.jsx | 140 +++++++++++++++++++++---- 1 file changed, 120 insertions(+), 20 deletions(-) diff --git a/src/Pages/Offer/Offer/OfferListNew.jsx b/src/Pages/Offer/Offer/OfferListNew.jsx index 13b2871..509c513 100644 --- a/src/Pages/Offer/Offer/OfferListNew.jsx +++ b/src/Pages/Offer/Offer/OfferListNew.jsx @@ -27,7 +27,8 @@ import { } from '../../../Features/Offer/Offernew/Offernew.js'; import { Messages } from '../../../Components/Notifications/Messages.jsx'; -import { changeBreadCrumb } from '../../../Features/AppPage/CenterPage.js'; +import { changeBreadCrumb, getEmpAccess } from '../../../Features/AppPage/CenterPage.js'; +import { useAuth } from '../../../AuthContext.jsx'; const subDirectory = import.meta.env.ENV_BASE_URL; const OfferListNew = () => { @@ -39,6 +40,8 @@ const OfferListNew = () => { const AppId = getSession('AppId'); const CompId = getSession('CompId'); const BranchId = getSession('BranchId'); + const UserType = getSession('UserType'); + const UserId = getSession('UserId'); const [messageType, setMessageType] = useState(null); const [messageData, setMessageData] = useState(null); @@ -46,6 +49,10 @@ const OfferListNew = () => { const [page, setpage] = useState(1); const [sortedInfo, setSortedInfo] = useState({}); + const { SadminuserAccess } = useAuth(); + let SAAccessCommonMaster = SadminuserAccess?.find( + (e) => e?.MenuName === 'Product Based' + ); console.log(products, 'products'); const [allOffers, setAllOffers] = useState([]); @@ -54,6 +61,8 @@ const OfferListNew = () => { offer: null, newToDate: null, }); + const [empData, setEmpData] = useState(); + const [addnewAccess, setaddnewAccess] = useState(true); const items = [ { @@ -540,6 +549,37 @@ const OfferListNew = () => { // ]) }; + useEffect(() => { + let hasAccess = false; + if (UserType === 'Admin' || UserType === 'Super Admin') { + hasAccess = true; + } else if (UserType === 'Employee') { + hasAccess = empData?.AddAccess === 'Y'; + } else if (UserType === 'Super Admin User') { + hasAccess = SAAccessCommonMaster?.AddAccess === 'Y'; + } + + setaddnewAccess(!hasAccess); + }, [empData, SAAccessCommonMaster, UserType]); + + useEffect(() => { + if (UserType === "Employee") { + fetchApi() + } + }, [UserType]) + const fetchApi = async () => { + let data = { + CompId: CompId, + BranchId: BranchId, + AppId: AppId, + EmpId: UserId, + }; + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( + (item) => item.ConfigName === 'Product Based' + ); + setEmpData(datas?.[0]); + }; function ExtractDateFormate(dateString) { if (!dateString) return ''; @@ -683,73 +723,131 @@ const OfferListNew = () => { dataIndex: 'extend', key: 'extend', align: 'center', - render: (_, record) => - record?.ActiveStatus === 'A' ? ( + render: (_, record) => { + + const canUpdate = + UserType === 'Super Admin' || + UserType === 'Admin' || + (UserType === 'Super Admin User' && + SAAccessCommonMaster?.UpdateAccess === 'Y') || + (UserType === 'Employee' && empData?.UpdateAccess === 'Y'); + + const canEdit = + record?.ActiveStatus === 'A' && canUpdate; + + return record?.ActiveStatus === 'A' ? (
- setExtendModal({ open: true, offer: record, newToDate: null }) - } + className={canEdit ? 'extend-button' : 'extendisabled'} + onClick={() => { + if (!canEdit) return; + setExtendModal({ + open: true, + offer: record, + newToDate: null, + }); + }} style={{ height: '32px', width: '100px', - padding: '1 12px', + padding: '1px 12px', display: 'flex', alignItems: 'center', justifyContent: 'center', + cursor: canEdit ? 'pointer' : 'not-allowed', + opacity: canEdit ? 1 : 0.5, }} > Extend
) : (
Extend
- ), + ); + } }, + { title: 'Actions', dataIndex: 'actions', key: 'actions', - render: (_, record, index) => ( + render: (_, record, index) => { + + const canUpdate = + UserType === 'Super Admin' || + UserType === 'Admin' || + (UserType === 'Super Admin User' && SAAccessCommonMaster?.UpdateAccess === 'Y') || + (UserType === 'Employee' && empData?.UpdateAccess === 'Y'); + + const canDelete = + UserType === 'Super Admin' || + UserType === 'Admin' || + (UserType === 'Super Admin User' && SAAccessCommonMaster?.DeleteAccess === 'Y') || + (UserType === 'Employee' && empData?.DeleteAccess === 'Y'); + + return (
{ - (e.stopPropagation(), - setOpen((prev) => !prev), - setProducts(record)); + e.stopPropagation(); + setOpen((prev) => !prev); + setProducts(record); }} /> - {record.ActiveStatus == 'A' && ( + + {/* Edit */} + {record?.ActiveStatus === 'A' && ( { - (e.stopPropagation(), actionsFormatter(record, index)); + e.stopPropagation(); + if (!canUpdate) return; + actionsFormatter(record, index); }} /> )} - {record?.ActiveStatus == 'A' ? ( + {record?.ActiveStatus === 'A' ? ( { - (e.stopPropagation(), statusFormatter(record, index)); + e.stopPropagation(); + if (!canDelete) return; + statusFormatter(record, index); }} /> ) : ( { - (e.stopPropagation(), statusFormatter(record, index)); + e.stopPropagation(); + if (!canDelete) return; + statusFormatter(record, index); }} /> )}
- ), + ); }, + } + + ]; const handleNewOffer = () => { @@ -797,7 +895,9 @@ const OfferListNew = () => {

Product Offers

-
From b3c8b45a5dab9a0b7536ef14e39a34c2020104c5 Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:34:54 +0530 Subject: [PATCH 22/33] Added Emplyee Access missing names --- src/Pages/Offer/CodeBase/CodeBaseList.jsx | 121 +++++++++++++++++++--- 1 file changed, 104 insertions(+), 17 deletions(-) diff --git a/src/Pages/Offer/CodeBase/CodeBaseList.jsx b/src/Pages/Offer/CodeBase/CodeBaseList.jsx index 2f134bf..fc47e8c 100644 --- a/src/Pages/Offer/CodeBase/CodeBaseList.jsx +++ b/src/Pages/Offer/CodeBase/CodeBaseList.jsx @@ -19,23 +19,31 @@ import { deleteOfferCodeData, getCodeBaseProductData, putOfferCodeData } from '. import { ReloadOutlined, } from '@ant-design/icons'; -import { changeBreadCrumb } from '../../../Features/AppPage/CenterPage.js'; +import { changeBreadCrumb, getEmpAccess } from '../../../Features/AppPage/CenterPage.js'; +import { useAuth } from '../../../AuthContext.jsx'; const subDirectory = import.meta.env.ENV_BASE_URL; const CodeBaseList = () => { dayjs.extend(isSameOrBefore); + const { SadminuserAccess } = useAuth(); + let SAAccessCommonMaster = SadminuserAccess?.find( + (e) => e?.MenuName === 'Code Based' + ); const navigate = useNavigate(); const dispatch = useDispatch(); const AppId = getSession("AppId") const CompId = getSession('CompId'); const BranchId = getSession('BranchId'); + const UserType = getSession('UserType'); const UserId = getSession('UserId'); const [productdata, setProductdata] = useState() const [searchText, setSearchText] = useState(""); const [messageType, setMessageType] = useState(null); const [messageData, setMessageData] = useState(null); + const [empData, setEmpData] = useState(); + const [addnewAccess, setaddnewAccess] = useState(true); const [variantModal, setVariantModal] = useState({ open: false, variants: [], @@ -68,6 +76,38 @@ const CodeBaseList = () => { dispatch(changeBreadCrumb({ items: items })); }, []); + + useEffect(() => { + let hasAccess = false; + if (UserType === 'Admin' || UserType === 'Super Admin') { + hasAccess = true; + } else if (UserType === 'Employee') { + hasAccess = empData?.AddAccess === 'Y'; + } else if (UserType === 'Super Admin User') { + hasAccess = SAAccessCommonMaster?.AddAccess === 'Y'; + } + + setaddnewAccess(!hasAccess); + }, [empData, SAAccessCommonMaster, UserType]); + + useEffect(() => { + if (UserType === "Employee") { + fetchApi() + } + }, [UserType]) + const fetchApi = async () => { + let data = { + CompId: CompId, + BranchId: BranchId, + AppId: AppId, + EmpId: UserId, + }; + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( + (item) => item.ConfigName === 'Code Based' + ); + setEmpData(datas?.[0]); + }; const onSearch = (value) => { setSearchText(value.toLowerCase()); } @@ -137,6 +177,13 @@ const CodeBaseList = () => { setMessageType(null); }, []); + const canUpdate = + UserType === 'Super Admin' || + UserType === 'Admin' || + (UserType === 'Super Admin User' && + SAAccessCommonMaster?.UpdateAccess === 'Y') || + (UserType === 'Employee' && empData?.UpdateAccess === 'Y'); + const generalColumns = [ { title: 'Sl.No', @@ -231,40 +278,63 @@ const CodeBaseList = () => { title: "Extend Date", key: "extend", align: "center", - render: (_, record) => ( + render: (_, record) => { + const canExtend = + record?.ActiveStatus === 'A' && canUpdate; + + return ( - ), + ); + }, }, { title: "Actions", key: "actions", - render: (_, record, index) => ( + render: (_, record, index) => { + const canUpdate = + UserType === "Super Admin" || + UserType === "Admin" || + (UserType === "Super Admin User" && SAAccessCommonMaster?.UpdateAccess === "Y") || + (UserType === "Employee" && empData?.UpdateAccess === "Y"); + + const canDelete = + UserType === "Super Admin" || + UserType === "Admin" || + (UserType === "Super Admin User" && SAAccessCommonMaster?.DeleteAccess === "Y") || + (UserType === "Employee" && empData?.DeleteAccess === "Y"); + + return (
{ e.stopPropagation(); setVariantModal({ open: true, - product: record, // store the selected product + product: record, variants: record?.ProdOfferDetails || [], }); }} @@ -272,9 +342,13 @@ const CodeBaseList = () => { {record.ActiveStatus === "A" && ( { e.stopPropagation(); + if (!canUpdate) return; navigate(`${subDirectory}setting/code-base/new`, { state: { formType: "edit", editOffer: record }, }); @@ -285,25 +359,37 @@ const CodeBaseList = () => { { e.stopPropagation(); + if (!canDelete) return; statusFormatter(record, "D", index); }} /> ) : ( { e.stopPropagation(); + if (!canDelete) return; statusFormatter(record, "A", index); }} /> )}
- ), + ); + }, } + ]; @@ -324,7 +410,8 @@ const CodeBaseList = () => {

Code Base Offers

-
From ec9b1ed1a63d648fad90436f38616d731477c952 Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:35:21 +0530 Subject: [PATCH 23/33] Added Emplyee Access missing names --- .../Offer/LoyaltyBased/LoyaltyBasedList.jsx | 118 +++++++++++++++--- 1 file changed, 99 insertions(+), 19 deletions(-) diff --git a/src/Pages/Offer/LoyaltyBased/LoyaltyBasedList.jsx b/src/Pages/Offer/LoyaltyBased/LoyaltyBasedList.jsx index 074e3bc..fca20ad 100644 --- a/src/Pages/Offer/LoyaltyBased/LoyaltyBasedList.jsx +++ b/src/Pages/Offer/LoyaltyBased/LoyaltyBasedList.jsx @@ -18,23 +18,31 @@ import { deleteLoyaltyData, getLoyaltiPointsProductData, putLayoltiPointsData } import { ReloadOutlined, } from '@ant-design/icons'; -import { changeBreadCrumb } from '../../../Features/AppPage/CenterPage.js'; +import { changeBreadCrumb, getEmpAccess } from '../../../Features/AppPage/CenterPage.js'; +import { useAuth } from '../../../AuthContext.jsx'; const subDirectory = import.meta.env.ENV_BASE_URL; const LoyaltyBasedList = () => { dayjs.extend(isSameOrBefore); + const { SadminuserAccess } = useAuth(); + let SAAccessCommonMaster = SadminuserAccess?.find( + (e) => e?.MenuName === 'Loyalty Points' + ); const navigate = useNavigate(); const dispatch = useDispatch(); const AppId = getSession("AppId") const CompId = getSession('CompId'); const BranchId = getSession('BranchId'); const UserId = getSession('UserId'); + const UserType = getSession('UserType'); const [productdata, setProductdata] = useState() const [searchText, setSearchText] = useState(""); const [messageType, setMessageType] = useState(null); const [messageData, setMessageData] = useState(null); + const [empData, setEmpData] = useState(); + const [addnewAccess, setaddnewAccess] = useState(true); const [variantModal, setVariantModal] = useState({ open: false, reward: null, @@ -69,6 +77,37 @@ const LoyaltyBasedList = () => { useEffect(() => { dispatch(changeBreadCrumb({ items: items })); }, []); + useEffect(() => { + let hasAccess = false; + if (UserType === 'Admin' || UserType === 'Super Admin') { + hasAccess = true; + } else if (UserType === 'Employee') { + hasAccess = empData?.AddAccess === 'Y'; + } else if (UserType === 'Super Admin User') { + hasAccess = SAAccessCommonMaster?.AddAccess === 'Y'; + } + + setaddnewAccess(!hasAccess); + }, [empData, SAAccessCommonMaster, UserType]); + + useEffect(() => { + if (UserType === "Employee") { + fetchApi() + } + }, [UserType]) + const fetchApi = async () => { + let data = { + CompId: CompId, + BranchId: BranchId, + AppId: AppId, + EmpId: UserId, + }; + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( + (item) => item.ConfigName === 'Loyalty Points' + ); + setEmpData(datas?.[0]); + }; const onSearch = (value) => { setSearchText(value.toLowerCase()); @@ -224,18 +263,31 @@ const LoyaltyBasedList = () => { { title: "Extend Days", key: "extend", - // align: "center", - render: (_, record) => ( + render: (_, record) => { + const canExtend = + record.ActiveStatus === "A" && + ( + UserType === "Super Admin" || + UserType === "Admin" || + (UserType === "Super Admin User" && SAAccessCommonMaster?.UpdateAccess === "Y") || + (UserType === "Employee" && empData?.UpdateAccess === "Y") + ); + + return ( - ), + ); + } }, { title: "Actions", key: "actions", - render: (_, record) => ( + render: (_, record) => { + // Permission checks + const canUpdate = + UserType === "Super Admin" || + UserType === "Admin" || + (UserType === "Super Admin User" && SAAccessCommonMaster?.UpdateAccess === "Y") || + (UserType === "Employee" && empData?.UpdateAccess === "Y"); + + const canDelete = + UserType === "Super Admin" || + UserType === "Admin" || + (UserType === "Super Admin User" && SAAccessCommonMaster?.DeleteAccess === "Y") || + (UserType === "Employee" && empData?.DeleteAccess === "Y"); + + return (
{/* View - only if RewardType !== Cash */} {record?.RewardType !== "Cash" && ( @@ -259,10 +326,7 @@ const LoyaltyBasedList = () => { style={{ cursor: "pointer" }} onClick={(e) => { e.stopPropagation(); - setVariantModal({ - open: true, - product: record, - }); + setVariantModal({ open: true, product: record }); }} /> )} @@ -272,9 +336,13 @@ const LoyaltyBasedList = () => { { e.stopPropagation(); + if (!canUpdate) return; navigate(`${subDirectory}setting/loyalty-based/update`, { state: { formType: "edit", editLoyalty: record }, }); @@ -287,25 +355,37 @@ const LoyaltyBasedList = () => { { e.stopPropagation(); + if (!canDelete) return; statusFormatter(record, "D"); // deactivate }} /> ) : ( { e.stopPropagation(); + if (!canDelete) return; statusFormatter(record, "A"); // reactivate }} /> )}
- ), + ); + }, } + ]; @@ -326,7 +406,7 @@ const LoyaltyBasedList = () => {

Loyalty Points

-
From 381fbbf2ff23ababb14d888389ae70212719d0a6 Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:35:38 +0530 Subject: [PATCH 24/33] Added Emplyee Access missing names --- src/Pages/StockMaster/StockList.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Pages/StockMaster/StockList.jsx b/src/Pages/StockMaster/StockList.jsx index d138732..0f3a0ee 100644 --- a/src/Pages/StockMaster/StockList.jsx +++ b/src/Pages/StockMaster/StockList.jsx @@ -57,7 +57,7 @@ const items = [ const StockList = () => { const { SadminuserAccess } = useAuth(); let SAAccessCommonMaster = SadminuserAccess?.find( - (e) => e?.MenuName === 'Purchase Entry' + (e) => e?.MenuName === 'Product Receipt' ); const navigate = useNavigate(); const location = useLocation(); @@ -140,7 +140,7 @@ const StockList = () => { }; let response = await dispatch(getEmpAccess(data)).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( - (item) => item.ConfigName === 'Purchase Entry' + (item) => item.ConfigName === 'Product Receipt' ); setEmpData(datas?.[0]); }; From f8297e970579e6b623e170102ead710d95c65cf9 Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:37:35 +0530 Subject: [PATCH 25/33] Added Emplyee Access missing names --- src/Pages/openingStock/OpeningStockList.jsx | 47 ++++++++++++++++++++- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/src/Pages/openingStock/OpeningStockList.jsx b/src/Pages/openingStock/OpeningStockList.jsx index e7d71df..6ffb30f 100644 --- a/src/Pages/openingStock/OpeningStockList.jsx +++ b/src/Pages/openingStock/OpeningStockList.jsx @@ -35,7 +35,7 @@ import { InputField } from '../../Components/Forms/InputField.jsx'; import Buttons from '../../Components/Forms/Buttons.jsx'; import { Messages } from '../../Components/Notifications/Messages.jsx'; import { DeleteFilled } from '@ant-design/icons'; -import { changeBreadCrumb } from '../../Features/AppPage/CenterPage.js'; +import { changeBreadCrumb, getEmpAccess } from '../../Features/AppPage/CenterPage.js'; import FormHeader from '../PageComponents/FormHeader.jsx'; import { DefaultModal } from '../../Components/Modal/DefaultModal.jsx'; import { getSession, validateSafeInput } from '../../Services/Others.js'; @@ -65,6 +65,7 @@ import { import { FiUploadCloud } from 'react-icons/fi'; import OpeningStockExcel from './OpeningStockExcel.jsx'; import { sendupiotp } from '../../Features/UpiDetails/UpiDetails.js'; +import { useAuth } from '../../AuthContext.jsx'; const subDirectory = import.meta.env.BASE_URL; const EditableContext = React.createContext(null); @@ -160,6 +161,10 @@ const OpeningStockList = () => { const productAddInfoRef = useRef(null); const navigateTo = useNavigate(); const dispatch = useDispatch(); + const { SadminuserAccess } = useAuth(); + let SAAccessCommonMaster = SadminuserAccess?.find( + (e) => e?.MenuName === 'Opening Stock' + ); const location = useLocation(); const [form] = Form.useForm(); @@ -171,7 +176,10 @@ const OpeningStockList = () => { const BranchId = getSession('BranchId'); const AppId = getSession('AppId'); const UserId = getSession('UserId'); + const UserType = getSession('UserType'); const MobileNo = getSession('MobileNo'); + const [empData, setEmpData] = useState(); + const [addnewAccess, setaddnewAccess] = useState(true); const [openExcel, setOpenExcel] = useState(false); const [applicationRestrictedFields, setApplicationRestrictedFields] = @@ -207,6 +215,40 @@ const OpeningStockList = () => { return () => clearTimeout(timer); } }, [timeLeft]); + useEffect(() => { + if (UserType === 'Employee') { + fetchApi(); + } + }, [UserType]); + + useEffect(() => { + let hasAccess = false; + + if (UserType === 'Admin' || UserType === 'Super Admin') { + hasAccess = true; + } else if (UserType === 'Employee') { + hasAccess = empData?.AddAccess === 'Y'; + } else if (UserType === 'Super Admin User') { + hasAccess = SAAccessCommonMaster?.AddAccess === 'Y'; + } + + setaddnewAccess(!hasAccess); + }, [empData, SAAccessCommonMaster, UserType]); + + const fetchApi = async () => { + let data = { + CompId: CompId, + BranchId: BranchId, + AppId: AppId, + EmpId: UserId, + }; + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( + (item) => item.ConfigName === 'Opening Stock' + ); + setEmpData(datas?.[0]); + }; + console.log(otpAccessMap, 'otpAccessMap'); const [Delete, setDelete] = useState(false); @@ -1209,6 +1251,7 @@ const OpeningStockList = () => { handelAddButton()} + disabled={addnewAccess} color="901D77" icon={} /> @@ -1218,7 +1261,7 @@ const OpeningStockList = () => { buttonText="Upload Excel" className="tertiary_Button" handleSubmit={openModal} - disabled={false} + disabled={addnewAccess} icon={} /> From 8f6c653f91f4945ccb3f3a231b3c0ee0cc984063 Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:38:10 +0530 Subject: [PATCH 26/33] Added Emplyee Access missing names --- src/Pages/StockAdjustment/StockAdjustment.jsx | 48 ++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/src/Pages/StockAdjustment/StockAdjustment.jsx b/src/Pages/StockAdjustment/StockAdjustment.jsx index db24fff..5fc945e 100644 --- a/src/Pages/StockAdjustment/StockAdjustment.jsx +++ b/src/Pages/StockAdjustment/StockAdjustment.jsx @@ -11,7 +11,7 @@ import { import Buttons from '../../Components/Forms/Buttons'; import './StockAdjustment.scss'; import { DropDowns } from '../../Components/Forms/DropDown'; -import { changeBreadCrumb } from '../../Features/AppPage/CenterPage'; +import { changeBreadCrumb, getEmpAccess } from '../../Features/AppPage/CenterPage'; import { useDispatch } from 'react-redux'; import { getSession } from '../../Services/Others'; import { getAllprodIName } from '../../Features/ProductPage/ProductPage'; @@ -25,17 +25,26 @@ import FormHeader from '../PageComponents/FormHeader'; import { useNavigate } from 'react-router-dom'; import { DefaultModal } from '../../Components/Modal/DefaultModal'; import { IoBagRemove } from 'react-icons/io5'; +import { useAuth } from '../../AuthContext'; const subDirectory = import.meta.env.BASE_URL; const StockAdjustment = () => { + + const { SadminuserAccess } = useAuth(); + let SAAccessCommonMaster = SadminuserAccess?.find( + (e) => e?.MenuName === 'Stock Adjustment' + ); const dispatch = useDispatch(); const navigate = useNavigate(); const CompId = getSession('CompId'); const BranchId = getSession('BranchId'); const AppId = getSession('AppId'); const UserId = getSession('UserId'); + const UserType = getSession('UserType'); const [productsData, setProductsData] = useState([]); const [stockData, setStockData] = useState([]); + const [empData, setEmpData] = useState(); + const [addnewAccess, setaddnewAccess] = useState(true); const uniqueData = useMemo(() => { return stockData.reduce((acc, current) => { @@ -164,6 +173,42 @@ const StockAdjustment = () => { // link: null, // }, ]; + + useEffect(() => { + if (UserType === 'Employee') { + fetchApi(); + } + }, [UserType]); + + useEffect(() => { + let hasAccess = false; + + if (UserType === 'Admin' || UserType === 'Super Admin') { + hasAccess = true; + } else if (UserType === 'Employee') { + hasAccess = empData?.AddAccess === 'Y'; + } else if (UserType === 'Super Admin User') { + hasAccess = SAAccessCommonMaster?.AddAccess === 'Y'; + } + + setaddnewAccess(!hasAccess); + }, [empData, SAAccessCommonMaster, UserType]); + + const fetchApi = async () => { + let data = { + CompId: CompId, + BranchId: BranchId, + AppId: AppId, + EmpId: UserId, + }; + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( + (item) => item.ConfigName === 'Stock Adjustment' + ); + setEmpData(datas?.[0]); + }; + + useEffect(() => { dispatch(changeBreadCrumb({ items: items })); getAllProduct(); @@ -318,6 +363,7 @@ const StockAdjustment = () => { } /> From eebb88a3b6f98695a486db107ca4d2920fccc75d Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:38:34 +0530 Subject: [PATCH 27/33] Added Emplyee Access missing names --- .../Components/PrintMainPage/SelectionComponent.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Pages/BookingScreen/Components/PrintMainPage/SelectionComponent.jsx b/src/Pages/BookingScreen/Components/PrintMainPage/SelectionComponent.jsx index 9ae3605..c1d674c 100644 --- a/src/Pages/BookingScreen/Components/PrintMainPage/SelectionComponent.jsx +++ b/src/Pages/BookingScreen/Components/PrintMainPage/SelectionComponent.jsx @@ -96,7 +96,7 @@ const SelectionComponent = forwardRef((props, ref) => { })); let SAAccessCommonMaster = SadminuserAccess?.find( - (e) => e?.MenuName === 'Print Setup' + (e) => e?.MenuName === 'Print Forms' ); const formRef = useRef(null); @@ -395,7 +395,7 @@ const SelectionComponent = forwardRef((props, ref) => { }; let response = await dispatch(getEmpAccess(data)).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( - (item) => item.ConfigName === 'Print Setup' + (item) => item.ConfigName === 'Print Forms' ); setEmpData(datas?.[0]); }; From f9a491ce0150e1138140b557e4a817fcac98172d Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:38:57 +0530 Subject: [PATCH 28/33] Added Emplyee Access missing names --- .../BookingScreen/Components/MainPage/SelectionComponent.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Pages/BookingScreen/Components/MainPage/SelectionComponent.jsx b/src/Pages/BookingScreen/Components/MainPage/SelectionComponent.jsx index 4ad30ed..7097f3d 100644 --- a/src/Pages/BookingScreen/Components/MainPage/SelectionComponent.jsx +++ b/src/Pages/BookingScreen/Components/MainPage/SelectionComponent.jsx @@ -127,7 +127,7 @@ const SelectionComponent = forwardRef((props, ref) => { console.log(SadminuserAccess, 'SadminuserAccess'); let SAAccessCommonMaster = SadminuserAccess?.find( - (e) => e?.MenuName === 'Sales Setup' + (e) => e?.MenuName === 'Sales Screen' ); const dispatch = useDispatch(); const formRef = useRef(null); @@ -453,7 +453,7 @@ const SelectionComponent = forwardRef((props, ref) => { }; let response = await dispatch(getEmpAccess(data)).unwrap(); let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( - (item) => item.ConfigName === 'Sales Setup' + (item) => item.ConfigName === 'Sales Screen' ); setEmpData(datas?.[0]); }; From da44ac75358b39407cc7a903f33c67229c299a4f Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:39:17 +0530 Subject: [PATCH 29/33] Added Emplyee Access missing names --- .../Components/MainPage/MainPage.jsx | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/src/Pages/BookingScreen/Components/MainPage/MainPage.jsx b/src/Pages/BookingScreen/Components/MainPage/MainPage.jsx index b4cb052..92a4d81 100644 --- a/src/Pages/BookingScreen/Components/MainPage/MainPage.jsx +++ b/src/Pages/BookingScreen/Components/MainPage/MainPage.jsx @@ -17,10 +17,15 @@ import { getSession } from '../../../../Services/Others'; import Buttons from '../../../../Components/Forms/Buttons'; import { BiSkipNext, BiSkipPrevious } from 'react-icons/bi'; import { MdOutlineDisplaySettings } from "react-icons/md"; +import { useAuth } from '../../../../AuthContext'; +import { getEmpAccess } from '../../../../Features/AppPage/CenterPage'; const BookingSelectionPage = (props) => { - + const { SadminuserAccess } = useAuth(); + let SAAccessCommonMaster = SadminuserAccess?.find( + (e) => e?.MenuName === 'Sales Screen' + ); const AppId = getSession('AppId'); const UserId = getSession('UserId'); const CompId = getSession('CompId'); @@ -42,6 +47,8 @@ const BookingSelectionPage = (props) => { console.log(SelectedTheme, "currentSlide") const [OthersCount, setOthersCount] = useState(1); const [isNext, isSetNext] = useState(true); + const [empData, setEmpData] = useState(); + const [addnewAccess, setaddnewAccess] = useState(true); const rightIsLastSlide = currentSlide === mergedThemes.length - 1; const leftIsFirstSlide = currentSlide === 0 && OthersCount > 1; const [pendingSlide, setPendingSlide] = useState(null); @@ -64,6 +71,40 @@ const BookingSelectionPage = (props) => { GetOthersTemplate() // gettemplatedetail() }, []) + useEffect(() => { + if (UserType === 'Employee') { + fetchApi(); + } + }, [UserType]); + + useEffect(() => { + let hasAccess = false; + + if (UserType === 'Admin' || UserType === 'Super Admin') { + hasAccess = true; + } else if (UserType === 'Employee') { + hasAccess = empData?.AddAccess === 'Y'; + } else if (UserType === 'Super Admin User') { + hasAccess = SAAccessCommonMaster?.AddAccess === 'Y'; + } + + setaddnewAccess(!hasAccess); + }, [empData, SAAccessCommonMaster, UserType]); + + const fetchApi = async () => { + let data = { + CompId: CompId, + BranchId: BranchId, + AppId: AppId, + EmpId: UserId, + }; + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( + (item) => item.ConfigName === 'Sales Screen' + ); + setEmpData(datas?.[0]); + }; + const gettemplatedetail = async () => { let tempdetail = await dispatch( getTemplate({ CompId: CompId, BranchId: BranchId, AppId: AppId }) @@ -305,6 +346,7 @@ const BookingSelectionPage = (props) => { } /> From 579d4f2a3a1a0a9ff8bfb67dce465e4b0661112d Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:39:40 +0530 Subject: [PATCH 30/33] Added Emplyee Access missing names --- .../ComboSalesBillTable/ComboSalesBillTable.jsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Pages/BookingScreen/Components/BSBillingTables/ComboSalesBillTable/ComboSalesBillTable.jsx b/src/Pages/BookingScreen/Components/BSBillingTables/ComboSalesBillTable/ComboSalesBillTable.jsx index 2597d03..be660bc 100644 --- a/src/Pages/BookingScreen/Components/BSBillingTables/ComboSalesBillTable/ComboSalesBillTable.jsx +++ b/src/Pages/BookingScreen/Components/BSBillingTables/ComboSalesBillTable/ComboSalesBillTable.jsx @@ -2208,7 +2208,15 @@ const ComboSalesBillTable = () => { {row?.BrandName ? ` ${row.BrandName}` : ''} {row?.Type !== 'C' && (

- {row?.ProdVariantName} {row?.Size} {row?.UomName} + {/* {row?.ProdVariantName} {row?.Size} {row?.UomName} */} + ( + {!row?.ProdVariantName?.toLowerCase()?.includes( + 'variant' + ) && {row?.ProdVariantName} } + {row?.Size} + {row?.SinglePc == 'Y' ? 'PCS' : row?.UomName} + + )

)} {row?.Type === 'C' && From 42d10ccb5a893c75ca19884a9dfef798ed93ac4c Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:40:03 +0530 Subject: [PATCH 31/33] Added Emplyee Access missing names --- src/Pages/StockTransfer/CreateTransfer.jsx | 26 +++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/Pages/StockTransfer/CreateTransfer.jsx b/src/Pages/StockTransfer/CreateTransfer.jsx index 90ff6e6..1ebd2ae 100644 --- a/src/Pages/StockTransfer/CreateTransfer.jsx +++ b/src/Pages/StockTransfer/CreateTransfer.jsx @@ -180,12 +180,20 @@ const CreateTransfer = () => { variant ? `Already added in the table` : 'This product is already Added' ); } + if (scanner) { + setTimeout(() => { + productInputRef.current?.focus(); + setProductSearchText(''); + }, 100); + } formProductRef?.current?.resetFields(); + if (!scanner) { setProductSearchText(''); + } return success; - }, []); + }, [scanner]); const focusProductInput = () => { // give React a tick to close modal/input blur before refocusing @@ -367,7 +375,13 @@ const CreateTransfer = () => { setVariantDetails([]); setSelectedProductForVariant(null); setSelectedVariants([]); - focusProductInput(); + + if (scanner) { + setTimeout(() => { + productInputRef.current?.focus(); + setProductSearchText(''); + }, 100); + } }; const handleDeleteRow = (index) => { @@ -618,7 +632,13 @@ const CreateTransfer = () => { setVariantDetails([]); setSelectedProductForVariant(null); setSelectedVariants([]); - focusProductInput(); + + if (scanner) { + setTimeout(() => { + productInputRef.current?.focus(); + setProductSearchText(''); + }, 100); + } }} onOk={handleAddSelectedVariants} okText="Add Selected Variants" From 377b9c0d87235613998d1a723ce54f3429e0769f Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:40:35 +0530 Subject: [PATCH 32/33] Added Emplyee Access missing names --- src/Pages/AppPage/AppPage.jsx | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Pages/AppPage/AppPage.jsx b/src/Pages/AppPage/AppPage.jsx index d1e2cd6..3c7802a 100644 --- a/src/Pages/AppPage/AppPage.jsx +++ b/src/Pages/AppPage/AppPage.jsx @@ -444,7 +444,7 @@ console.log(iswarehouse,'iswarehouseiswarehouseiswarehouse'); const SadminUserPurchaseMenuItem = [ getsubItem('Purchase Order', `${subDirectory}setting/purchase-order`), - getsubItem('Purchase Entry', `${subDirectory}setting/purchase-entry/new`), + getsubItem('Product Receipt', `${subDirectory}setting/purchase-entry/new`), getsubItem('Purchase Return', `${subDirectory}setting/purchase-return`), ]; @@ -498,7 +498,7 @@ console.log(iswarehouse,'iswarehouseiswarehouseiswarehouse'); ), !iswarehouse && getsubItem( - 'Counter Category Mapping', + 'Counter Mapping', `${subDirectory}setting/counter-category-mapping` ), ]; @@ -533,7 +533,7 @@ console.log(iswarehouse,'iswarehouseiswarehouseiswarehouse'); getsubItem('Print Setup', `${subDirectory}saleslayouts/print-selection`), getsubItem('Kiosk Setup', `${subDirectory}saleslayouts/kiosk-selection`), getsubItem( - 'Barcode / Qr Setup', + 'Barcode / QR', `${subDirectory}saleslayouts/barcode-qr-selection` ), ]; @@ -875,7 +875,7 @@ console.log(iswarehouse,'iswarehouseiswarehouseiswarehouse'); `${subDirectory}setting/sales-bill-cancel` ), getsubItem( - 'Product Return', + 'Sales Product Return', `${subDirectory}setting/sales-bill-product-return` ), sportsAppPreference && @@ -1047,9 +1047,9 @@ console.log(iswarehouse,'iswarehouseiswarehouseiswarehouse'); const Purchase = [ getsubItem('Automated Reorder', `${subDirectory}setting/automated-reorder`), - getsubItem('Purchase Order', `${subDirectory}setting/purchase-order/new`), - getsubItem('Product Receipt', `${subDirectory}setting/purchase-entry/new`), - getsubItem('Product Return', `${subDirectory}setting/purchase-return`), + getsubItem('Purchase Order', `${subDirectory}setting/purchase-order`), + getsubItem('Product Receipt', `${subDirectory}setting/purchase-entry`), + getsubItem('Product Return', `${subDirectory}setting/purchase-return/list`), getsubItem( 'Stock Adjustment', `${subDirectory}setting/stock-adjustment-list` @@ -1087,7 +1087,7 @@ console.log(iswarehouse,'iswarehouseiswarehouseiswarehouse'); !sportsAppPreference && getsubItem( 'DC to Invoice', - `${subDirectory}setting/delivery-challan-to-invoice` + `${subDirectory}setting/delivery-challan-to-invoice/list` ), !iswarehouse && getsubItem('Customer', `${subDirectory}setting/customer-master`), @@ -1119,8 +1119,8 @@ console.log(iswarehouse,'iswarehouseiswarehouseiswarehouse'); `${subDirectory}setting/sales-bill-cancel` ), getsubItem( - 'Product Return', - `${subDirectory}setting/sales-bill-product-return` + 'Sales Product Return', + `${subDirectory}setting/sales-bill-product-return/list` ), sportsAppPreference && getsubItem( @@ -1139,8 +1139,8 @@ console.log(iswarehouse,'iswarehouseiswarehouseiswarehouse'); const PurchaseMenuItem = [ getsubItem('Automated Reorder', `${subDirectory}setting/automated-reorder`), getsubItem('Purchase Order', `${subDirectory}setting/purchase-order`), - getsubItem('Purchase Entry', `${subDirectory}setting/purchase-entry/new`), - getsubItem('Purchase Return', `${subDirectory}setting/purchase-return`), + getsubItem('Product Receipt', `${subDirectory}setting/purchase-entry/new`), + getsubItem('Product Return', `${subDirectory}setting/purchase-return`), getsubItem( 'Stock Adjustment', `${subDirectory}setting/stock-adjustment-list` @@ -1196,7 +1196,7 @@ console.log(iswarehouse,'iswarehouseiswarehouseiswarehouse'); ) : '', getsubItem( - 'Counter Category Mapping', + 'Counter Mapping', `${subDirectory}setting/counter-category-mapping` ), getsubItem('Image Bulk Upload', `${subDirectory}setting/image-bulk-upload`), @@ -1240,7 +1240,7 @@ console.log(iswarehouse,'iswarehouseiswarehouseiswarehouse'); ), getsubItem('Sales Bill Cancel', `${subDirectory}setting/sales-bill-cancel`), getsubItem( - 'Sales Bill Product Return', + 'Sales Product Return', `${subDirectory}setting/sales-bill-product-return` ), sportsAppPreference && @@ -1845,7 +1845,7 @@ const customizedmenuitem = [] `${subDirectory}setting/sales-bill-cancel` ), getsubItem( - 'Product Return', + 'Sales Product Return', `${subDirectory}setting/sales-bill-product-return` ), sportsAppPreference && @@ -2433,7 +2433,7 @@ const customizedmenuitem = [] ), !sportsAppPreference && getsubItem( - 'Product Return', + 'Sales Product Return', `${subDirectory}setting/sales-bill-product-return` ), sportsAppPreference && From b1c7d45aed613749aede4fee1081cb0c4370abb9 Mon Sep 17 00:00:00 2001 From: Srinath Date: Thu, 29 Jan 2026 09:44:49 +0530 Subject: [PATCH 33/33] Added Emplyee Access missing names --- .../AutomatedReorderList.jsx | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/src/Pages/Automated Reorder/AutomatedReorderList.jsx b/src/Pages/Automated Reorder/AutomatedReorderList.jsx index adf7e8f..49351a7 100644 --- a/src/Pages/Automated Reorder/AutomatedReorderList.jsx +++ b/src/Pages/Automated Reorder/AutomatedReorderList.jsx @@ -1,7 +1,7 @@ import { useCallback, useEffect, useState } from "react"; import { useDispatch } from "react-redux"; import { getSession } from "../../Services/Others"; -import { changeBreadCrumb } from "../../Features/AppPage/CenterPage"; +import { changeBreadCrumb, getEmpAccess } from "../../Features/AppPage/CenterPage"; import { Messages } from "../../Components/Notifications/Messages"; import { Tables } from "../../Components/Tables/Table"; import FormHeader from "../PageComponents/FormHeader"; @@ -19,6 +19,7 @@ import { deleteAutomatedReorder, getAutomatedReorderList } from "../../Features/ import { DefaultModal } from "../../Components/Modal/DefaultModal"; import { FaRegEye } from "react-icons/fa"; import { render } from "react-dom"; +import { useAuth } from "../../AuthContext"; const subDirectory = import.meta.env.BASE_URL; @@ -40,11 +41,18 @@ const AutomatedReorderList = () => { const navigate = useNavigate(); const location = useLocation(); const state = location?.state; + const { SadminuserAccess } = useAuth(); + let SAAccessCommonMaster = SadminuserAccess?.find( + (e) => e?.MenuName === 'Product Receipt' + ); const AppId = getSession('AppId'); const CompId = getSession('CompId'); const BranchId = getSession('BranchId'); const UserId = getSession('UserId'); + const UserType = getSession('UserType'); + const [empData, setEmpData] = useState(); + const [addnewAccess, setaddnewAccess] = useState(true); const [messageType, setMessageType] = useState(null); const [messageData, setMessageData] = useState(null); @@ -176,6 +184,40 @@ const AutomatedReorderList = () => { } }, [AppId, CompId, BranchId]); + useEffect(() => { + if (UserType === 'Employee') { + fetchApi(); + } + }, [UserType]); + + useEffect(() => { + let hasAccess = false; + + if (UserType === 'Admin' || UserType === 'Super Admin') { + hasAccess = true; + } else if (UserType === 'Employee') { + hasAccess = empData?.AddAccess === 'Y'; + } else if (UserType === 'Super Admin User') { + hasAccess = SAAccessCommonMaster?.AddAccess === 'Y'; + } + + setaddnewAccess(!hasAccess); + }, [empData, SAAccessCommonMaster, UserType]); + + const fetchApi = async () => { + let data = { + CompId: CompId, + BranchId: BranchId, + AppId: AppId, + EmpId: UserId, + }; + let response = await dispatch(getEmpAccess(data)).unwrap(); + let datas = response?.data?.data?.[0]?.EmpAccessDetails?.filter( + (item) => item.ConfigName === 'Automated Reorder' + ); + setEmpData(datas?.[0]); + }; + const fetchData = async () => { try { const res = await dispatch(getAutomatedReorderList({ AppId, CompId, BranchId }))?.unwrap(); @@ -251,6 +293,7 @@ const AutomatedReorderList = () => { } />