lead menu

nquiry menu
This commit is contained in:
phaichayon
2026-06-19 10:39:11 +07:00
parent 0650cf6297
commit c0cc880be2
46 changed files with 5985 additions and 420 deletions

View File

@@ -54,6 +54,11 @@ export default async function EnquiryDetailRoute({ params }: PageProps) {
(!!session?.user?.activeOrganizationId &&
(session.user.activeMembershipRole === 'admin' ||
session.user.activePermissions.includes(PERMISSIONS.crmEnquiryReassign)));
const canReadQuotation =
session?.user?.systemRole === 'super_admin' ||
(!!session?.user?.activeOrganizationId &&
(session.user.activeMembershipRole === 'admin' ||
session.user.activePermissions.includes(PERMISSIONS.crmQuotationRead)));
const queryClient = getQueryClient();
if (canRead) {
@@ -67,14 +72,14 @@ export default async function EnquiryDetailRoute({ params }: PageProps) {
? await getEnquiryReferenceData(session.user.activeOrganizationId)
: null;
const relatedQuotations =
canRead && session?.user?.activeOrganizationId
canRead && canReadQuotation && session?.user?.activeOrganizationId
? await listEnquiryQuotationRelations(id, session.user.activeOrganizationId)
: [];
return (
<PageContainer
pageTitle='Enquiry Detail'
pageDescription='Opportunity context, follow-up timeline, and future quotation handoff.'
pageDescription='Lead or enquiry context, follow-up timeline, and ownership lifecycle.'
access={canRead}
accessFallback={
<div className='text-muted-foreground rounded-lg border border-dashed p-8 text-center'>
@@ -88,9 +93,11 @@ export default async function EnquiryDetailRoute({ params }: PageProps) {
enquiryId={id}
referenceData={referenceData}
relatedQuotations={relatedQuotations}
workspace='enquiry'
canUpdate={canUpdate}
canAssign={canAssign}
canReassign={canReassign}
canViewRelatedQuotations={canReadQuotation}
canManageFollowups={{
create: canFollowupCreate,
update: canFollowupUpdate,

View File

@@ -50,6 +50,7 @@ export default async function EnquiriesRoute(props: PageProps) {
session.user.activePermissions.includes(
PERMISSIONS.crmEnquiryReassign,
)));
const businessRole = session?.user?.activeBusinessRole ?? null;
searchParamsCache.parse(searchParams);
@@ -60,8 +61,8 @@ export default async function EnquiriesRoute(props: PageProps) {
return (
<PageContainer
pageTitle="Enquiries (Lead)"
pageDescription="Production opportunity registry with customer linkage, follow-up workflow, and audit-backed activity."
pageTitle="Enquiries"
pageDescription="Sales workspace for active enquiries, follow-up workflow, and quotation preparation."
access={canRead}
accessFallback={
<div className="text-muted-foreground rounded-lg border border-dashed p-8 text-center">
@@ -70,13 +71,14 @@ export default async function EnquiriesRoute(props: PageProps) {
}
pageHeaderAction={
canCreate && referenceData ? (
<EnquiryFormSheetTrigger referenceData={referenceData} />
<EnquiryFormSheetTrigger referenceData={referenceData} workspace='enquiry' />
) : null
}
>
{referenceData ? (
<EnquiryListing
referenceData={referenceData}
workspace='enquiry'
canUpdate={canUpdate}
canDelete={canDelete}
canAssign={canAssign}