task-g
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { auth } from '@/auth';
|
||||
import { HydrationBoundary, dehydrate } from '@tanstack/react-query';
|
||||
import PageContainer from '@/components/layout/page-container';
|
||||
import { quotationDocumentPreviewOptions } from '@/features/crm/quotations/document/queries';
|
||||
import {
|
||||
quotationAttachmentsOptions,
|
||||
quotationByIdOptions,
|
||||
@@ -85,6 +86,11 @@ export default async function QuotationDetailRoute({ params }: PageProps) {
|
||||
session.user.activePermissions.includes(PERMISSIONS.crmApprovalReturn)));
|
||||
const isOrgAdmin =
|
||||
session?.user?.systemRole === 'super_admin' || session?.user?.activeMembershipRole === 'admin';
|
||||
const canPreviewDocument =
|
||||
session?.user?.systemRole === 'super_admin' ||
|
||||
(!!session?.user?.activeOrganizationId &&
|
||||
(session.user.activeMembershipRole === 'admin' ||
|
||||
session.user.activePermissions.includes(PERMISSIONS.crmQuotationDocumentPreview)));
|
||||
const queryClient = getQueryClient();
|
||||
|
||||
if (canRead) {
|
||||
@@ -102,6 +108,9 @@ export default async function QuotationDetailRoute({ params }: PageProps) {
|
||||
limit: 20
|
||||
})
|
||||
);
|
||||
if (canPreviewDocument) {
|
||||
void queryClient.prefetchQuery(quotationDocumentPreviewOptions(id));
|
||||
}
|
||||
}
|
||||
|
||||
const referenceData =
|
||||
@@ -139,6 +148,7 @@ export default async function QuotationDetailRoute({ params }: PageProps) {
|
||||
activeBusinessRole={session?.user?.activeBusinessRole ?? null}
|
||||
isOrgAdmin={isOrgAdmin}
|
||||
currentUserId={session?.user?.id ?? ''}
|
||||
canPreviewDocument={canPreviewDocument}
|
||||
/>
|
||||
</HydrationBoundary>
|
||||
) : null}
|
||||
|
||||
@@ -1,19 +1,42 @@
|
||||
import { auth } from '@/auth';
|
||||
import { HydrationBoundary, dehydrate } from '@tanstack/react-query';
|
||||
import PageContainer from '@/components/layout/page-container';
|
||||
import { CrmProductionPlaceholder } from '@/features/foundation/components/crm-production-placeholder';
|
||||
import { TemplateSettings } from '@/features/foundation/document-template/components/template-settings';
|
||||
import { documentTemplatesQueryOptions } from '@/features/foundation/document-template/queries';
|
||||
import { PERMISSIONS } from '@/lib/auth/rbac';
|
||||
import { getQueryClient } from '@/lib/query-client';
|
||||
|
||||
export default async function TemplatesRoute() {
|
||||
const session = await auth();
|
||||
const canRead =
|
||||
session?.user?.systemRole === 'super_admin' ||
|
||||
(!!session?.user?.activeOrganizationId &&
|
||||
(session.user.activeMembershipRole === 'admin' ||
|
||||
session.user.activePermissions.includes(PERMISSIONS.crmDocumentTemplateRead)));
|
||||
const queryClient = getQueryClient();
|
||||
|
||||
if (canRead) {
|
||||
void queryClient.prefetchQuery(
|
||||
documentTemplatesQueryOptions({ documentType: 'quotation', fileType: 'pdfme' })
|
||||
);
|
||||
}
|
||||
|
||||
export default function TemplatesRoute() {
|
||||
return (
|
||||
<PageContainer
|
||||
pageTitle='Quotation Templates'
|
||||
pageDescription='Template management is not part of the production path yet and no longer depends on legacy demo services.'
|
||||
pageDescription='Template metadata, versions, and mapping counts for production quotation documents.'
|
||||
access={canRead}
|
||||
accessFallback={
|
||||
<div className='text-muted-foreground rounded-lg border border-dashed p-8 text-center'>
|
||||
You do not have access to CRM document templates.
|
||||
</div>
|
||||
}
|
||||
>
|
||||
<CrmProductionPlaceholder
|
||||
title='Template management pending'
|
||||
summary='The placeholder quotation template demo has been isolated away from the production CRM route tree.'
|
||||
foundationItems={['Master options foundation', 'Sequence foundation', 'Audit foundation']}
|
||||
nextStep='Introduce template persistence only when the production quotation/PDF flow is designed.'
|
||||
demoHref='/dashboard/crm-demo/settings/templates'
|
||||
/>
|
||||
{canRead ? (
|
||||
<HydrationBoundary state={dehydrate(queryClient)}>
|
||||
<TemplateSettings />
|
||||
</HydrationBoundary>
|
||||
) : null}
|
||||
</PageContainer>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user