Fixes for expense queries for dashboard

This commit is contained in:
David Bomba 2025-01-21 20:22:00 +11:00
parent b96d69933a
commit d9d8697282
2 changed files with 74 additions and 7 deletions

View File

@ -65,7 +65,7 @@ class RouteServiceProvider extends ServiceProvider
if (Ninja::isSelfHost()) {
return Limit::none();
} else {
return Limit::perMinute(100)->by($request->ip());
return Limit::perMinute(1000)->by($request->ip());
}
});

View File

@ -26,7 +26,18 @@ trait ChartQueries
$user_filter = $this->is_admin ? '' : 'AND expenses.user_id = '.$this->user->id;
return DB::select("
SELECT sum(expenses.amount) as amount,
SELECT
SUM(CASE
WHEN expenses.uses_inclusive_taxes = 0 THEN
expenses.amount +
(COALESCE(expenses.tax_amount1, 0) + COALESCE(expenses.tax_amount2, 0) + COALESCE(expenses.tax_amount3, 0)) +
(
(expenses.amount * COALESCE(expenses.tax_rate1, 0)/100) +
(expenses.amount * COALESCE(expenses.tax_rate2, 0)/100) +
(expenses.amount * COALESCE(expenses.tax_rate3, 0)/100)
)
ELSE expenses.amount
END) as amount,
IFNULL(expenses.currency_id, :company_currency) as currency_id
FROM expenses
WHERE expenses.is_deleted = 0
@ -45,8 +56,30 @@ trait ChartQueries
SELECT
SUM(
CASE
WHEN expenses.currency_id = :company_currency THEN amount
ELSE expenses.amount * COALESCE(NULLIF(expenses.exchange_rate, 0), 1)
WHEN expenses.currency_id = :company_currency THEN
CASE
WHEN expenses.uses_inclusive_taxes = 0 THEN
expenses.amount +
(COALESCE(expenses.tax_amount1, 0) + COALESCE(expenses.tax_amount2, 0) + COALESCE(expenses.tax_amount3, 0)) +
(
(expenses.amount * COALESCE(expenses.tax_rate1, 0)/100) +
(expenses.amount * COALESCE(expenses.tax_rate2, 0)/100) +
(expenses.amount * COALESCE(expenses.tax_rate3, 0)/100)
)
ELSE expenses.amount
END
ELSE
(CASE
WHEN expenses.uses_inclusive_taxes = 0 THEN
expenses.amount +
(COALESCE(expenses.tax_amount1, 0) + COALESCE(expenses.tax_amount2, 0) + COALESCE(expenses.tax_amount3, 0)) +
(
(expenses.amount * COALESCE(expenses.tax_rate1, 0)/100) +
(expenses.amount * COALESCE(expenses.tax_rate2, 0)/100) +
(expenses.amount * COALESCE(expenses.tax_rate3, 0)/100)
)
ELSE expenses.amount
END) * COALESCE(NULLIF(expenses.exchange_rate, 0), 1)
END
) AS amount
FROM expenses
@ -66,8 +99,30 @@ trait ChartQueries
SELECT
SUM(
CASE
WHEN expenses.currency_id = :company_currency THEN amount
ELSE expenses.amount * COALESCE(NULLIF(expenses.exchange_rate, 0), 1)
WHEN expenses.currency_id = :company_currency THEN
CASE
WHEN expenses.uses_inclusive_taxes = 0 THEN
expenses.amount +
(COALESCE(expenses.tax_amount1, 0) + COALESCE(expenses.tax_amount2, 0) + COALESCE(expenses.tax_amount3, 0)) +
(
(expenses.amount * COALESCE(expenses.tax_rate1, 0)/100) +
(expenses.amount * COALESCE(expenses.tax_rate2, 0)/100) +
(expenses.amount * COALESCE(expenses.tax_rate3, 0)/100)
)
ELSE expenses.amount
END
ELSE
(CASE
WHEN expenses.uses_inclusive_taxes = 0 THEN
expenses.amount +
(COALESCE(expenses.tax_amount1, 0) + COALESCE(expenses.tax_amount2, 0) + COALESCE(expenses.tax_amount3, 0)) +
(
(expenses.amount * COALESCE(expenses.tax_rate1, 0)/100) +
(expenses.amount * COALESCE(expenses.tax_rate2, 0)/100) +
(expenses.amount * COALESCE(expenses.tax_rate3, 0)/100)
)
ELSE expenses.amount
END) * COALESCE(NULLIF(expenses.exchange_rate, 0), 1)
END
) AS total,
expenses.date
@ -93,7 +148,19 @@ trait ChartQueries
return DB::select("
SELECT
sum(expenses.amount) as total,
SUM(
CASE
WHEN expenses.uses_inclusive_taxes = 0 THEN
expenses.amount +
(COALESCE(expenses.tax_amount1, 0) + COALESCE(expenses.tax_amount2, 0) + COALESCE(expenses.tax_amount3, 0)) +
(
(expenses.amount * COALESCE(expenses.tax_rate1, 0)/100) +
(expenses.amount * COALESCE(expenses.tax_rate2, 0)/100) +
(expenses.amount * COALESCE(expenses.tax_rate3, 0)/100)
)
ELSE expenses.amount
END
) as total,
expenses.date
FROM expenses
WHERE (expenses.date BETWEEN :start_date AND :end_date)