@ -86,6 +86,10 @@ export function ClientDetail() {
module s.data?.find ( ( m ) = > m . id === module Id ) ? . name ? ? module Id
const docs = ledger . data ? . documents ? ? [ ]
// The ledger is oldest-first; the register + "recent" views want newest first (by date, then doc no).
const docsNewest = [ . . . docs ]
. sort ( ( a , b ) = > ( a . docDate === b . docDate ? ( b . docNo ? ? '' ) . localeCompare ( a . docNo ? ? '' ) : b . docDate . localeCompare ( a . docDate ) ) )
const recentDocs = docsNewest . slice ( 0 , 5 )
const openDocs = docs . filter ( ( d ) = > d . status === 'draft' || d . status === 'sent' || d . status === 'part_paid' )
const activeModules = ( cms . data ? ? [ ] ) . filter ( ( m ) = > m . active )
const lastInteraction = interactions . data ? . [ 0 ] ? . onDate
@ -228,8 +232,8 @@ export function ClientDetail() {
{ key : 'date' , label : 'Date' } , { key : 'payable' , label : 'Payable' , numeric : true } ,
{ key : 'status' , label : 'Status' } ,
] }
onRowClick = { ( _row , i ) = > nav ( ` /documents/ ${ d ocs[ i ] ! . id } ` ) }
rows = { docs. slice ( 0 , 5 ) . map ( ( d ) = > ( {
onRowClick = { ( _row , i ) = > nav ( ` /documents/ ${ recentD ocs[ i ] ! . id } ` ) }
rows = { recentDocs . map ( ( d ) = > ( {
no : d.docNo ? ? 'draft' ,
type : < Badge tone = { DOC_TYPE_TONE [ d . docType ] } > { DOC_TYPE_LABEL [ d . docType ] } < / Badge > ,
date : d.docDate ,
@ -359,15 +363,15 @@ export function ClientDetail() {
< >
{ ledger . error !== undefined && < ErrorState message = { ledger . error } onRetry = { ledger . reload } / > }
{ ledger . data === undefined && ledger . error === undefined ? < Skeleton / >
: docs . length === 0 ? < EmptyState > No documents yet — compose one from New Document . < / EmptyState > : (
: docs Newest . length === 0 ? < EmptyState > No documents yet — compose one from New Document . < / EmptyState > : (
< DataTable
columns = { [
{ key : 'no' , label : 'No' , mono : true } , { key : 'type' , label : 'Type' } ,
{ key : 'date' , label : 'Date' } , { key : 'payable' , label : 'Payable' , numeric : true } ,
{ key : 'status' , label : 'Status' } ,
] }
onRowClick = { ( _row , i ) = > nav ( ` /documents/ ${ docs [ i ] ! . id } ` ) }
rows = { docs . map ( ( d ) = > ( {
onRowClick = { ( _row , i ) = > nav ( ` /documents/ ${ docs Newest [ i ] ! . id } ` ) }
rows = { docs Newest . map ( ( d ) = > ( {
no : d.docNo ? ? < Badge tone = "warn" > draft < / Badge > ,
type : < Badge tone = { DOC_TYPE_TONE [ d . docType ] } > { DOC_TYPE_LABEL [ d . docType ] } < / Badge > ,
date : d.docDate ,
@ -395,7 +399,9 @@ export function ClientDetail() {
{ key : 'amount' , label : 'Amount' , numeric : true } ,
{ key : 'tds' , label : 'TDS' , numeric : true } ,
] }
rows = { ledger . data . payments . map ( ( p ) = > ( {
rows = { [ . . . ledger . data . payments ]
. sort ( ( a , b ) = > ( a . receivedOn === b . receivedOn ? ( a . id < b . id ? 1 : - 1 ) : b . receivedOn . localeCompare ( a . receivedOn ) ) )
. map ( ( p ) = > ( {
on : p.receivedOn , mode : p.mode , ref : p.reference !== '' ? p . reference : '—' ,
amount : inr ( p . amountPaise ) , tds : p.tdsPaise > 0 ? inr ( p . tdsPaise ) : '—' ,
} ) ) }