mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-07 20:04:29 -04:00
Fixes for chart queries
This commit is contained in:
parent
6b4435606a
commit
24ce983b6f
@ -85,9 +85,9 @@ trait ChartQueries
|
||||
payments.date,
|
||||
IFNULL(payments.currency_id, :company_currency) AS currency_id
|
||||
FROM payments
|
||||
WHERE payments.status_id IN (4,5,6)
|
||||
AND payments.company_id = :company_id
|
||||
WHERE payments.company_id = :company_id
|
||||
AND payments.is_deleted = 0
|
||||
AND payments.status_id IN (4,5,6)
|
||||
AND (payments.date BETWEEN :start_date AND :end_date)
|
||||
GROUP BY payments.date
|
||||
HAVING currency_id = :currency_id
|
||||
@ -115,9 +115,9 @@ trait ChartQueries
|
||||
on invoices.client_id = clients.id
|
||||
WHERE invoices.status_id IN (2,3)
|
||||
AND invoices.company_id = :company_id
|
||||
AND invoices.balance > 0
|
||||
AND clients.is_deleted = 0
|
||||
AND invoices.is_deleted = 0
|
||||
AND invoices.balance > 0
|
||||
AND (invoices.date BETWEEN :start_date AND :end_date)
|
||||
GROUP BY currency_id
|
||||
"), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]);
|
||||
@ -132,7 +132,26 @@ trait ChartQueries
|
||||
FROM clients
|
||||
JOIN invoices
|
||||
on invoices.client_id = clients.id
|
||||
WHERE invoices.status_id IN (3,4)
|
||||
WHERE invoices.company_id = :company_id
|
||||
AND clients.is_deleted = 0
|
||||
AND invoices.is_deleted = 0
|
||||
AND invoices.amount > 0
|
||||
AND invoices.status_id IN (3,4)
|
||||
AND (invoices.date BETWEEN :start_date AND :end_date)
|
||||
GROUP BY currency_id
|
||||
"), ['company_currency' => $this->company->settings->currency_id, 'company_id' => $this->company->id, 'start_date' => $start_date, 'end_date' => $end_date]);
|
||||
}
|
||||
|
||||
public function getInvoicesQuery($start_date, $end_date)
|
||||
{
|
||||
return DB::select(DB::raw("
|
||||
SELECT
|
||||
sum(invoices.amount) as invoiced_amount,
|
||||
IFNULL(CAST(JSON_UNQUOTE(JSON_EXTRACT( clients.settings, '$.currency_id' )) AS SIGNED), :company_currency) AS currency_id
|
||||
FROM clients
|
||||
JOIN invoices
|
||||
on invoices.client_id = clients.id
|
||||
WHERE invoices.status_id IN (2,3,4)
|
||||
AND invoices.company_id = :company_id
|
||||
AND invoices.amount > 0
|
||||
AND clients.is_deleted = 0
|
||||
@ -179,10 +198,10 @@ trait ChartQueries
|
||||
FROM clients
|
||||
JOIN invoices
|
||||
on invoices.client_id = clients.id
|
||||
WHERE invoices.status_id IN (2,3,4)
|
||||
AND invoices.company_id = :company_id
|
||||
WHERE invoices.company_id = :company_id
|
||||
AND clients.is_deleted = 0
|
||||
AND invoices.is_deleted = 0
|
||||
AND invoices.status_id IN (2,3,4)
|
||||
AND (invoices.date BETWEEN :start_date AND :end_date)
|
||||
GROUP BY invoices.date
|
||||
HAVING currency_id = :currency_id
|
||||
|
@ -94,10 +94,13 @@ class ChartService
|
||||
$data['currencies'] = $this->getCurrencyCodes();
|
||||
|
||||
foreach ($data['currencies'] as $key => $value) {
|
||||
|
||||
$revenue = $this->getRevenue($start_date, $end_date);
|
||||
$outstanding = $this->getOutstanding($start_date, $end_date);
|
||||
$expenses = $this->getExpenses($start_date, $end_date);
|
||||
$invoices = $this->getInvoices($start_date, $end_date);
|
||||
|
||||
$data[$key]['invoices'] = count($invoices) > 0 ? $invoices[array_search($key, array_column($invoices, 'currency_id'))] : new \stdClass;
|
||||
$data[$key]['revenue'] = count($revenue) > 0 ? $revenue[array_search($key, array_column($revenue, 'currency_id'))] : new \stdClass;
|
||||
$data[$key]['outstanding'] = count($outstanding) > 0 ? $outstanding[array_search($key, array_column($outstanding, 'currency_id'))] : new \stdClass;
|
||||
$data[$key]['expenses'] = count($expenses) > 0 ? $expenses[array_search($key, array_column($expenses, 'currency_id'))] : new \stdClass;
|
||||
@ -106,6 +109,14 @@ class ChartService
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function getInvoices($start_date, $end_date) :array
|
||||
{
|
||||
$revenue = $this->getInvoicesQuery($start_date, $end_date);
|
||||
$revenue = $this->addCurrencyCodes($revenue);
|
||||
|
||||
return $revenue;
|
||||
}
|
||||
|
||||
public function getRevenue($start_date, $end_date) :array
|
||||
{
|
||||
$revenue = $this->getRevenueQuery($start_date, $end_date);
|
||||
|
Loading…
x
Reference in New Issue
Block a user