debit note CSV path configured
This commit is contained in:
parent
e00f5a4d25
commit
d3ab799898
@ -514,6 +514,10 @@ function CustomRequestDetailInner({ requestId: propRequestId, onBack, dynamicReq
|
||||
{/* Left Column: Tab content */}
|
||||
<div className={activeTab === 'worknotes' && !isForm16Request ? '' : 'lg:col-span-2'}>
|
||||
<TabsContent value="overview" className="mt-0" data-testid="overview-tab-content">
|
||||
{isForm16Request ? (
|
||||
// Form 16: dedicated overview (prevents duplicate sections below the nav bar)
|
||||
<Form16OverviewTab request={request} />
|
||||
) : (
|
||||
<CustomOverviewTab
|
||||
request={request}
|
||||
isInitiator={isInitiator}
|
||||
@ -535,27 +539,6 @@ function CustomRequestDetailInner({ requestId: propRequestId, onBack, dynamicReq
|
||||
generationFailed={generationFailed}
|
||||
maxAttemptsReached={maxAttemptsReached}
|
||||
/>
|
||||
{isForm16Request ? (
|
||||
<Form16OverviewTab request={request} />
|
||||
) : (
|
||||
<CustomOverviewTab
|
||||
request={request}
|
||||
isInitiator={isInitiator}
|
||||
needsClosure={needsClosure}
|
||||
conclusionRemark={conclusionRemark}
|
||||
setConclusionRemark={setConclusionRemark}
|
||||
conclusionLoading={conclusionLoading}
|
||||
conclusionSubmitting={conclusionSubmitting}
|
||||
aiGenerated={aiGenerated}
|
||||
handleGenerateConclusion={handleGenerateConclusion}
|
||||
handleFinalizeConclusion={handleFinalizeConclusion}
|
||||
onPause={handlePause}
|
||||
onResume={handleResume}
|
||||
onRetrigger={handleRetrigger}
|
||||
currentUserIsApprover={!!currentApprovalLevel}
|
||||
pausedByUserId={request?.pauseInfo?.pausedBy?.userId}
|
||||
currentUserId={(user as any)?.userId}
|
||||
/>
|
||||
)}
|
||||
</TabsContent>
|
||||
|
||||
|
||||
@ -48,7 +48,7 @@ function getForm16TimelineEntries(request: any): Array<{ type: string; action: s
|
||||
const validationNotes = (form16.validationNotes || '') || '';
|
||||
const displayStatus = (form16.displayStatus || '').toLowerCase();
|
||||
const hasOcr = !!(form16.ocrExtractedData && typeof form16.ocrExtractedData === 'object' && Object.keys(form16.ocrExtractedData).length > 0);
|
||||
const hasCreditNote = !!(form16.creditNoteNumber);
|
||||
const hasCreditNote = !!form16.creditNoteNumber;
|
||||
const isMismatch = displayStatus === 'balance mismatch' || (validationStatus === 'failed' && !hasCreditNote) || (validationStatus === 'failed' && /mismatch|26as|value/i.test(validationNotes));
|
||||
const isDuplicate = displayStatus === 'duplicate' || validationStatus === 'duplicate';
|
||||
|
||||
@ -84,13 +84,26 @@ function getForm16TimelineEntries(request: any): Array<{ type: string; action: s
|
||||
entries.push({
|
||||
type: 'status_change',
|
||||
action: '26AS matching',
|
||||
details: validationStatus === 'success' || form16.creditNoteNumber
|
||||
? '26AS matching completed. Credit note generated.'
|
||||
details: validationStatus === 'success' || hasCreditNote
|
||||
? '26AS matching completed.'
|
||||
: '26AS matching was performed.',
|
||||
timestamp: submittedTs,
|
||||
});
|
||||
}
|
||||
|
||||
// Explicit credit note event when generated for current submission
|
||||
if (hasCreditNote) {
|
||||
const creditNoteTs = form16.creditNoteIssueDate
|
||||
? new Date(form16.creditNoteIssueDate).toISOString()
|
||||
: submittedTs;
|
||||
entries.push({
|
||||
type: 'status_change',
|
||||
action: 'Credit note issued',
|
||||
details: `Credit note ${form16.creditNoteNumber} issued for this submission.`,
|
||||
timestamp: creditNoteTs,
|
||||
});
|
||||
}
|
||||
|
||||
return entries.sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user