public function expenses($accountId, $userId, $viewAll)
{
$amountField = DB::getQueryGrammar()->wrap('expenses.amount', true);
$taxRate1Field = DB::getQueryGrammar()->wrap('expenses.tax_rate1', true);
$taxRate2Field = DB::getQueryGrammar()->wrap('expenses.tax_rate2', true);
$select = DB::raw("SUM({$amountField} + ({$amountField} * {$taxRate1Field} / 100) + ({$amountField} * {$taxRate2Field} / 100)) as value," . DB::getQueryGrammar()->wrap('expenses.expense_currency_id', true) . ' as currency_id');
$paidToDate = DB::table('accounts')->select($select)->leftJoin('expenses', 'accounts.id', '=', 'expenses.account_id')->where('accounts.id', '=', $accountId)->where('expenses.is_deleted', '=', false);
if (!$viewAll) {
$paidToDate = $paidToDate->where('expenses.user_id', '=', $userId);
}
return $paidToDate->groupBy('accounts.id')->groupBy('expenses.expense_currency_id')->get();
}