App\Http\Controllers\ReportController::generateInvoiceReport PHP Méthode

generateInvoiceReport() private méthode

private generateInvoiceReport ( $startDate, $endDate, $isExport ) : array
$startDate
$endDate
$isExport
Résultat array
    private function generateInvoiceReport($startDate, $endDate, $isExport)
    {
        $columns = ['client', 'invoice_number', 'invoice_date', 'amount', 'payment_date', 'paid', 'method'];
        $account = Auth::user()->account;
        $displayData = [];
        $reportTotals = [];
        $clients = Client::scope()->withTrashed()->with('contacts')->where('is_deleted', '=', false)->with(['invoices' => function ($query) use($startDate, $endDate) {
            $query->invoices()->withArchived()->where('invoice_date', '>=', $startDate)->where('invoice_date', '<=', $endDate)->with(['payments' => function ($query) {
                $query->withArchived()->excludeFailed()->with('payment_type', 'account_gateway.gateway');
            }, 'invoice_items'])->withTrashed();
        }]);
        foreach ($clients->get() as $client) {
            foreach ($client->invoices as $invoice) {
                $payments = count($invoice->payments) ? $invoice->payments : [false];
                foreach ($payments as $payment) {
                    $displayData[] = [$isExport ? $client->getDisplayName() : $client->present()->link, $isExport ? $invoice->invoice_number : $invoice->present()->link, $invoice->present()->invoice_date, $account->formatMoney($invoice->amount, $client), $payment ? $payment->present()->payment_date : '', $payment ? $account->formatMoney($payment->getCompletedAmount(), $client) : '', $payment ? $payment->present()->method : ''];
                    $reportTotals = $this->addToTotals($reportTotals, $client->currency_id, 'paid', $payment ? $payment->getCompletedAmount() : 0);
                }
                $reportTotals = $this->addToTotals($reportTotals, $client->currency_id, 'amount', $invoice->amount);
                $reportTotals = $this->addToTotals($reportTotals, $client->currency_id, 'balance', $invoice->balance);
            }
        }
        return ['columns' => $columns, 'displayData' => $displayData, 'reportTotals' => $reportTotals];
    }