dealer made to validate with common principle code
This commit is contained in:
parent
67d73878c9
commit
3769dc9dc0
@ -208,6 +208,8 @@ export function ClaimManagementWizard({ onBack, onSubmit }: ClaimManagementWizar
|
||||
city: result['re city'] || result.city || '',
|
||||
state: result['re state code'] || result.state || '',
|
||||
isLoggedIn: true, // We'll verify this in the next step
|
||||
parentCode: result.parentcode || null,
|
||||
itemGroup: result['item group'] || null,
|
||||
};
|
||||
setDealerSearchResults([mappedDealer]);
|
||||
} else {
|
||||
@ -589,11 +591,20 @@ export function ClaimManagementWizard({ onBack, onSubmit }: ClaimManagementWizar
|
||||
<SelectTrigger className="mt-2 !h-12 data-[size=default]:!h-12" id="activityType">
|
||||
<SelectValue placeholder={loadingActivityTypes ? "Loading activity types..." : "Select activity type"} />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectContent className="max-h-80">
|
||||
{activityTypes.length > 0 ? (
|
||||
activityTypes.map((type) => (
|
||||
<SelectItem key={type.activityTypeId} value={type.title}>
|
||||
<SelectItem key={type.activityTypeId} value={type.title} className="focus:bg-blue-600 focus:text-white group">
|
||||
<div className="flex flex-col py-0.5">
|
||||
<span className="font-medium text-[13px] leading-[1.1] text-gray-900 group-focus:text-white">
|
||||
{type.title}
|
||||
</span>
|
||||
<div className="flex items-center gap-1 text-[9px] text-gray-500 group-focus:text-blue-100 uppercase font-bold tracking-wider leading-none mt-0.5">
|
||||
{type.creditPostingOn && <span>{type.creditPostingOn}</span>}
|
||||
{type.creditPostingOn && type.taxationType && <span className="opacity-40 select-none">•</span>}
|
||||
{type.taxationType && <span>{type.taxationType}</span>}
|
||||
</div>
|
||||
</div>
|
||||
</SelectItem>
|
||||
))
|
||||
) : (
|
||||
@ -662,19 +673,22 @@ export function ClaimManagementWizard({ onBack, onSubmit }: ClaimManagementWizar
|
||||
<div className="font-medium text-gray-900">
|
||||
{dealer.dealerName || dealer.displayName}
|
||||
</div>
|
||||
<div className="text-xs text-gray-600">
|
||||
<div className="text-[10px] text-gray-600 mt-0.5 font-medium flex items-center gap-1.5">
|
||||
<span className="font-mono">{dealer.dealerCode}</span>
|
||||
{dealer.email && (
|
||||
<>
|
||||
<span className="mx-1">•</span>
|
||||
<span className="opacity-40">•</span>
|
||||
<span>{dealer.email}</span>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
{dealer.city && dealer.state && (
|
||||
<div className="text-xs text-gray-500">
|
||||
<div className="text-[10px] text-gray-500 mt-0.5">
|
||||
{dealer.city}, {dealer.state}
|
||||
</div>
|
||||
{dealer.itemGroup && (
|
||||
<div className="text-[9px] text-blue-600 font-bold uppercase tracking-wider mt-0.5">
|
||||
{dealer.itemGroup}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
<div className="ml-2 flex-shrink-0">
|
||||
|
||||
@ -47,6 +47,7 @@ interface CostBreakdownItem {
|
||||
amount: number;
|
||||
gstAmt?: number;
|
||||
totalAmt?: number;
|
||||
hsnCode?: string;
|
||||
}
|
||||
|
||||
interface RoleBasedVisibility {
|
||||
@ -320,12 +321,32 @@ export function ProcessDetailsCard({
|
||||
</div>
|
||||
<div className="space-y-1.5 pt-1">
|
||||
{estimatedBudgetBreakdown.map((item, index) => (
|
||||
<div key={index} className="flex justify-between items-center text-[10px] sm:text-xs">
|
||||
<div className="text-gray-700 truncate mr-2" title={item.description}>{item.description}</div>
|
||||
<span className="font-medium text-gray-900 whitespace-nowrap">
|
||||
<div key={index} className="space-y-0.5 pb-1.5 last:pb-0">
|
||||
<div className="flex justify-between items-center text-[10px] sm:text-xs">
|
||||
<div className="text-gray-700 truncate mr-2 font-medium" title={item.description}>
|
||||
{item.description}
|
||||
</div>
|
||||
<span className="font-bold text-gray-900 whitespace-nowrap">
|
||||
{formatCurrency(item.totalAmt ?? (item.amount + (item.gstAmt ?? 0)))}
|
||||
</span>
|
||||
</div>
|
||||
{(item.gstAmt ?? 0) > 0 && (
|
||||
<div className="flex justify-between items-center text-[9px] text-gray-500 pl-2 italic">
|
||||
<div className="flex gap-2">
|
||||
<span>Base: {formatCurrency(item.amount)}</span>
|
||||
<span>GST: {formatCurrency(item.gstAmt)}</span>
|
||||
</div>
|
||||
{item.hsnCode && (
|
||||
<span>HSN/SAC: {item.hsnCode}</span>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
{!(item.gstAmt ?? 0) && item.hsnCode && (
|
||||
<div className="text-[9px] text-gray-500 pl-2 italic">
|
||||
HSN/SAC: {item.hsnCode}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
<div className="pt-2 border-t border-amber-200 flex justify-between items-center">
|
||||
<span className="font-semibold text-gray-900 text-xs">Total</span>
|
||||
@ -348,12 +369,32 @@ export function ProcessDetailsCard({
|
||||
</div>
|
||||
<div className="space-y-1.5 pt-1">
|
||||
{closedExpensesBreakdown.map((item, index) => (
|
||||
<div key={index} className="flex justify-between items-center text-[10px] sm:text-xs">
|
||||
<div className="text-gray-700 truncate mr-2" title={item.description}>{item.description}</div>
|
||||
<span className="font-medium text-gray-900 whitespace-nowrap">
|
||||
<div key={index} className="space-y-0.5 pb-1.5 last:pb-0">
|
||||
<div className="flex justify-between items-center text-[10px] sm:text-xs">
|
||||
<div className="text-gray-700 truncate mr-2 font-medium" title={item.description}>
|
||||
{item.description}
|
||||
</div>
|
||||
<span className="font-bold text-gray-900 whitespace-nowrap">
|
||||
{formatCurrency(item.totalAmt ?? (item.amount + (item.gstAmt ?? 0)))}
|
||||
</span>
|
||||
</div>
|
||||
{(item.gstAmt ?? 0) > 0 && (
|
||||
<div className="flex justify-between items-center text-[9px] text-gray-500 pl-2 italic">
|
||||
<div className="flex gap-2">
|
||||
<span>Base: {formatCurrency(item.amount)}</span>
|
||||
<span>GST: {formatCurrency(item.gstAmt)}</span>
|
||||
</div>
|
||||
{item.hsnCode && (
|
||||
<span>HSN/SAC: {item.hsnCode}</span>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
{!(item.gstAmt ?? 0) && item.hsnCode && (
|
||||
<div className="text-[9px] text-gray-500 pl-2 italic">
|
||||
HSN/SAC: {item.hsnCode}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
))}
|
||||
<div className="pt-2 border-t border-indigo-200 flex justify-between items-center">
|
||||
<span className="font-semibold text-gray-900 text-xs">Total</span>
|
||||
|
||||
@ -27,6 +27,7 @@ export interface DealerInfo {
|
||||
dealerPrincipalName?: string | null;
|
||||
dealerPrincipalEmailId?: string | null;
|
||||
itemGroup?: string | null;
|
||||
parentCode?: string | null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -36,6 +36,7 @@ export interface ClaimManagementRequest {
|
||||
sgstAmt?: number;
|
||||
igstAmt?: number;
|
||||
totalAmt?: number;
|
||||
hsnCode?: string;
|
||||
}>;
|
||||
description?: string;
|
||||
};
|
||||
@ -61,6 +62,7 @@ export interface ClaimManagementRequest {
|
||||
sgstAmt?: number;
|
||||
igstAmt?: number;
|
||||
totalAmt?: number;
|
||||
hsnCode?: string;
|
||||
}>;
|
||||
totalEstimatedBudget: number;
|
||||
timelineMode?: 'date' | 'days';
|
||||
@ -184,7 +186,8 @@ export function mapToClaimManagementRequest(
|
||||
cgstAmt: exp.cgstAmt ?? exp.cgst_amt,
|
||||
sgstAmt: exp.sgstAmt ?? exp.sgst_amt,
|
||||
igstAmt: exp.igstAmt ?? exp.igst_amt,
|
||||
totalAmt: exp.totalAmt ?? exp.total_amt
|
||||
totalAmt: exp.totalAmt ?? exp.total_amt,
|
||||
hsnCode: exp.hsnCode || exp.hsn_code || exp.hsnCd || exp.hsn_cd || ''
|
||||
}))
|
||||
: (completionDetails?.closedExpenses ||
|
||||
completionDetails?.closed_expenses ||
|
||||
@ -260,7 +263,8 @@ export function mapToClaimManagementRequest(
|
||||
cgstAmt: Number(item.cgstAmt ?? item.cgst_amt ?? 0),
|
||||
sgstAmt: Number(item.sgstAmt ?? item.sgst_amt ?? 0),
|
||||
igstAmt: Number(item.igstAmt ?? item.igst_amt ?? 0),
|
||||
totalAmt: Number(item.totalAmt ?? item.total_amt ?? 0)
|
||||
totalAmt: Number(item.totalAmt ?? item.total_amt ?? 0),
|
||||
hsnCode: item.hsnCode || item.hsn_code || ''
|
||||
}))
|
||||
: Array.isArray(proposalDetails.costBreakup || proposalDetails.cost_breakup)
|
||||
? (proposalDetails.costBreakup || proposalDetails.cost_breakup).map((item: any) => ({
|
||||
@ -271,7 +275,8 @@ export function mapToClaimManagementRequest(
|
||||
cgstAmt: item.cgstAmt ?? item.cgst_amt,
|
||||
sgstAmt: item.sgstAmt ?? item.sgst_amt,
|
||||
igstAmt: item.igstAmt ?? item.igst_amt,
|
||||
totalAmt: item.totalAmt ?? item.total_amt
|
||||
totalAmt: item.totalAmt ?? item.total_amt,
|
||||
hsnCode: item.hsnCode || item.hsn_code || ''
|
||||
}))
|
||||
: [],
|
||||
totalEstimatedBudget: proposalDetails.totalEstimatedBudget || proposalDetails.total_estimated_budget || 0,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user