@@ -76,26 +76,26 @@ export const DayManager = {
7676
7777 // Filter today's purchases
7878 const todayPurchases = ( AppState . purchaseHistory || [ ] ) . filter ( p => {
79- const date = p . date ?. toDate ? p . date . toDate ( ) : new Date ( p . date ) ;
80- return date >= today && date < tomorrow ;
79+ const date = Helpers . parseDate ( p . date ) ;
80+ return date && date >= today && date < tomorrow ;
8181 } ) ;
8282
8383 // Filter today's wholesale sales
8484 const todayWholesaleSales = ( AppState . salesHistory || [ ] ) . filter ( s => {
85- const date = s . date ?. toDate ? s . date . toDate ( ) : new Date ( s . date ) ;
86- return date >= today && date < tomorrow ;
85+ const date = Helpers . parseDate ( s . date ) ;
86+ return date && date >= today && date < tomorrow ;
8787 } ) ;
8888
8989 // Filter today's retail sales
9090 const todayRetailSales = ( AppState . retailSalesHistory || [ ] ) . filter ( s => {
91- const date = s . date ?. toDate ? s . date . toDate ( ) : new Date ( s . date ) ;
92- return date >= today && date < tomorrow ;
91+ const date = Helpers . parseDate ( s . date ) ;
92+ return date && date >= today && date < tomorrow ;
9393 } ) ;
9494
9595 // Filter today's expenses
9696 const todayExpenses = ( AppState . expensesHistory || [ ] ) . filter ( e => {
97- const date = e . date ?. toDate ? e . date . toDate ( ) : new Date ( e . date ) ;
98- return date >= today && date < tomorrow ;
97+ const date = Helpers . parseDate ( e . date ) ;
98+ return date && date >= today && date < tomorrow ;
9999 } ) ;
100100
101101 // Calculate totals
@@ -113,11 +113,18 @@ export const DayManager = {
113113 return sum + amount ;
114114 } , 0 ) ;
115115 const totalSales = totalWholesaleSales + totalRetailSales ;
116- // Expenses use 'amount' property
117- const totalExpenses = todayExpenses . reduce ( ( sum , e ) => {
118- const amount = Number ( e . amount ) || Number ( e . total ) || 0 ;
119- return sum + amount ;
116+
117+ // Expenses split by category
118+ const businessExpenses = todayExpenses . filter ( e => e . category === 'business' ) ;
119+ const personalExpenses = todayExpenses . filter ( e => e . category === 'personal' ) ;
120+
121+ const totalBusinessExpenses = businessExpenses . reduce ( ( sum , e ) => {
122+ return sum + ( Number ( e . amount ) || Number ( e . total ) || 0 ) ;
120123 } , 0 ) ;
124+ const totalPersonalExpenses = personalExpenses . reduce ( ( sum , e ) => {
125+ return sum + ( Number ( e . amount ) || Number ( e . total ) || 0 ) ;
126+ } , 0 ) ;
127+ const totalExpenses = totalBusinessExpenses + totalPersonalExpenses ;
121128
122129 // Calculate labor cost from purchases
123130 const totalLaborCost = todayPurchases . reduce ( ( sum , p ) => sum + ( p . laborCharges || p . labour || 0 ) , 0 ) ;
@@ -158,8 +165,8 @@ export const DayManager = {
158165 // Calculate due paid and due received from cash management transactions
159166 let duePaid = 0 , dueReceived = 0 ;
160167 const todayCashTransactions = ( AppState . cashManagement || [ ] ) . filter ( t => {
161- const date = t . date ?. toDate ? t . date . toDate ( ) : new Date ( t . date ) ;
162- return date >= today && date < tomorrow ;
168+ const date = Helpers . parseDate ( t . date ) ;
169+ return date && date >= today && date < tomorrow ;
163170 } ) ;
164171
165172 todayCashTransactions . forEach ( t => {
@@ -175,32 +182,40 @@ export const DayManager = {
175182 const totalCashOut = cashPaid + onlinePaid + totalExpenses + duePaid ;
176183 const totalCashFlow = totalCashIn - totalCashOut ;
177184
178- // Net cash flow (simpler view)
179- const netCashFlow = ( cashReceived + onlineReceived ) - ( cashPaid + onlinePaid + totalExpenses ) ;
185+ // Net outflow (Out - In): positive means money went out, negative means money came in
186+ const netOutflow = ( cashPaid + onlinePaid + totalExpenses ) - ( cashReceived + onlineReceived ) ;
180187
181188 // Update UI - Main Stats
182189 this . updateElement ( 'todayTotalPurchases' , formatCurrency ( totalPurchases ) ) ;
183190 this . updateElement ( 'todayPurchaseCount' , `${ todayPurchases . length } bills` ) ;
184191 this . updateElement ( 'todayTotalSales' , formatCurrency ( totalSales ) ) ;
185192 this . updateElement ( 'todaySaleCount' , `${ todayWholesaleSales . length + todayRetailSales . length } bills` ) ;
186- this . updateElement ( 'todayTotalExpenses' , formatCurrency ( totalExpenses ) ) ;
187- this . updateElement ( 'todayExpenseCount' , `${ todayExpenses . length } entries` ) ;
188193 this . updateElement ( 'todayLaborCost' , formatCurrency ( totalLaborCost ) ) ;
189194
195+ // Expenses breakdown
196+ this . updateElement ( 'todayBusinessExpenses' , formatCurrency ( totalBusinessExpenses ) ) ;
197+ this . updateElement ( 'todayBusinessExpenseCount' , `${ businessExpenses . length } entries` ) ;
198+ this . updateElement ( 'todayPersonalExpenses' , formatCurrency ( totalPersonalExpenses ) ) ;
199+ this . updateElement ( 'todayPersonalExpenseCount' , `${ personalExpenses . length } entries` ) ;
200+
190201 // Quantity metrics
191202 this . updateElement ( 'todayQtyPurchased' , `${ qtyPurchased . toFixed ( 1 ) } kg` ) ;
192203 this . updateElement ( 'todayQtySold' , `${ qtySold . toFixed ( 1 ) } kg` ) ;
193204
194- // Net cash flow with color coding
205+ // Total In and Total Out for hero card
206+ this . updateElement ( 'todayTotalIn' , formatCurrency ( cashReceived + onlineReceived ) ) ;
207+ this . updateElement ( 'todayTotalOut' , formatCurrency ( cashPaid + onlinePaid + totalExpenses ) ) ;
208+
209+ // Net outflow with color coding
195210 const cashFlowLabel = document . getElementById ( 'todayCashFlowLabel' ) ;
196211 if ( cashFlowLabel ) {
197- cashFlowLabel . textContent = netCashFlow >= 0 ? 'Net Inflow ' : 'Net Outflow ' ;
212+ cashFlowLabel . textContent = netOutflow >= 0 ? 'Net Outflow: ' : 'Net Inflow: ' ;
198213 }
199214
200215 const netCashFlowEl = document . getElementById ( 'todayNetCashFlow' ) ;
201216 if ( netCashFlowEl ) {
202- netCashFlowEl . style . color = netCashFlow >= 0 ? '#16a34a ' : '#dc2626 ' ;
203- netCashFlowEl . textContent = ( netCashFlow >= 0 ? '+' : '-' ) + formatCurrency ( Math . abs ( netCashFlow ) ) ;
217+ netCashFlowEl . style . color = netOutflow >= 0 ? 'white ' : '#a5f3fc ' ;
218+ netCashFlowEl . textContent = formatCurrency ( Math . abs ( netOutflow ) ) ;
204219 }
205220
206221 // Payment summary
0 commit comments