芝麻web文件管理V1.00
编辑当前文件:/home/pulsehostuk9/www/invoicer.pulsehost.co.uk/app/Http/Controllers/CustomerStatsController.php
authorize('view', $customer); $i = 0; $months = []; $invoiceTotals = []; $expenseTotals = []; $receiptTotals = []; $netProfits = []; $monthCounter = 0; $fiscalYear = CompanySetting::getSetting('fiscal_year', $request->header('company')); $startDate = Carbon::now(); $start = Carbon::now(); $end = Carbon::now(); $terms = explode('-', $fiscalYear); $companyStartMonth = intval($terms[0]); if ($companyStartMonth <= $start->month) { $startDate->month($companyStartMonth)->startOfMonth(); $start->month($companyStartMonth)->startOfMonth(); $end->month($companyStartMonth)->endOfMonth(); } else { $startDate->subYear()->month($companyStartMonth)->startOfMonth(); $start->subYear()->month($companyStartMonth)->startOfMonth(); $end->subYear()->month($companyStartMonth)->endOfMonth(); } if ($request->has('previous_year')) { $startDate->subYear()->startOfMonth(); $start->subYear()->startOfMonth(); $end->subYear()->endOfMonth(); } while ($monthCounter < 12) { array_push( $invoiceTotals, Invoice::whereBetween( 'invoice_date', [$start->format('Y-m-d'), $end->format('Y-m-d')] ) ->whereCompany() ->whereCustomer($customer->id) ->sum('total') ?? 0 ); array_push( $expenseTotals, Expense::whereBetween( 'expense_date', [$start->format('Y-m-d'), $end->format('Y-m-d')] ) ->whereCompany() ->whereUser($customer->id) ->sum('amount') ?? 0 ); array_push( $receiptTotals, Payment::whereBetween( 'payment_date', [$start->format('Y-m-d'), $end->format('Y-m-d')] ) ->whereCompany() ->whereCustomer($customer->id) ->sum('amount') ?? 0 ); array_push( $netProfits, ($receiptTotals[$i] - $expenseTotals[$i]) ); $i++; array_push($months, $start->translatedFormat('M')); $monthCounter++; $end->startOfMonth(); $start->addMonth()->startOfMonth(); $end->addMonth()->endOfMonth(); } $start->subMonth()->endOfMonth(); $salesTotal = Invoice::whereBetween( 'invoice_date', [$startDate->format('Y-m-d'), $start->format('Y-m-d')] ) ->whereCompany() ->whereCustomer($customer->id) ->sum('total'); $totalReceipts = Payment::whereBetween( 'payment_date', [$startDate->format('Y-m-d'), $start->format('Y-m-d')] ) ->whereCompany() ->whereCustomer($customer->id) ->sum('amount'); $totalExpenses = Expense::whereBetween( 'expense_date', [$startDate->format('Y-m-d'), $start->format('Y-m-d')] ) ->whereCompany() ->whereUser($customer->id) ->sum('amount'); $netProfit = (int) $totalReceipts - (int) $totalExpenses; $chartData = [ 'months' => $months, 'invoiceTotals' => $invoiceTotals, 'expenseTotals' => $expenseTotals, 'receiptTotals' => $receiptTotals, 'netProfit' => $netProfit, 'netProfits' => $netProfits, 'salesTotal' => $salesTotal, 'totalReceipts' => $totalReceipts, 'totalExpenses' => $totalExpenses, ]; $customer = Customer::find($customer->id); return (new CustomerResource($customer)) ->additional(['meta' => [ 'chartData' => $chartData, ]]); } }