updated reports

This commit is contained in:
denisdulici 2020-01-18 13:11:19 +03:00
parent 78ede398f2
commit ead2256589
9 changed files with 27 additions and 26 deletions

View File

@ -7,7 +7,9 @@ use App\Events\Common\ReportFilterApplying;
use App\Events\Common\ReportGroupApplying; use App\Events\Common\ReportGroupApplying;
use App\Events\Common\ReportGroupShowing; use App\Events\Common\ReportGroupShowing;
use App\Exports\Common\Reports as Export; use App\Exports\Common\Reports as Export;
use App\Models\Banking\Transaction;
use App\Models\Common\Report as Model; use App\Models\Common\Report as Model;
use App\Models\Sale\Invoice;
use App\Traits\Charts; use App\Traits\Charts;
use App\Traits\DateTime; use App\Traits\DateTime;
use App\Utilities\Chartjs; use App\Utilities\Chartjs;
@ -317,7 +319,7 @@ abstract class Report
$this->totals[$table][$date] += $amount; $this->totals[$table][$date] += $amount;
} else { } else {
$type = (($item->getTable() == 'invoices') || (($item->getTable() == 'transactions') && ($item->type == 'income'))) ? 'income' : 'expense'; $type = (($item instanceof Invoice) || (($item instanceof Transaction) && ($item->type == 'income'))) ? 'income' : 'expense';
if ($type == 'income') { if ($type == 'income') {
$this->rows[$table][$item->$id_field][$date] += $amount; $this->rows[$table][$item->$id_field][$date] += $amount;

View File

@ -19,7 +19,7 @@ class Reports extends Controller
*/ */
public function index() public function index()
{ {
$classes = $categories = []; $totals = $icons = $categories = [];
$reports = Report::all(); $reports = Report::all();
@ -30,12 +30,12 @@ class Reports extends Controller
$class = Utility::getClassInstance($report); $class = Utility::getClassInstance($report);
$classes[$report->id] = $class; $totals[$report->id] = $class->getTotal();
$icons[$report->id] = $class->getIcon();
$categories[$class->getCategory()][] = $report; $categories[$class->getCategory()][] = $report;
} }
return view('common.reports.index', compact('categories', 'classes')); return view('common.reports.index', compact('categories', 'totals', 'icons'));
} }
/** /**

View File

@ -41,11 +41,11 @@ class ExpenseSummary extends Report
default: default:
// Bills // Bills
$bills = $this->applyFilters(Bill::accrued(), ['date_field' => 'billed_at'])->get(); $bills = $this->applyFilters(Bill::accrued(), ['date_field' => 'billed_at'])->get();
Recurring::reflect($bills, 'bill', 'billed_at'); Recurring::reflect($bills, 'billed_at');
$this->setTotals($bills, 'billed_at'); $this->setTotals($bills, 'billed_at');
// Payments // Payments
Recurring::reflect($payments, 'payment', 'paid_at'); Recurring::reflect($payments, 'paid_at');
$this->setTotals($payments, 'paid_at'); $this->setTotals($payments, 'paid_at');
break; break;

View File

@ -31,11 +31,11 @@ class IncomeExpenseSummary extends Report
default: default:
// Invoices // Invoices
$invoices = $this->applyFilters(Invoice::accrued(), ['date_field' => 'invoiced_at'])->get(); $invoices = $this->applyFilters(Invoice::accrued(), ['date_field' => 'invoiced_at'])->get();
Recurring::reflect($invoices, 'invoice', 'invoiced_at'); Recurring::reflect($invoices, 'invoiced_at');
$this->setTotals($invoices, 'invoiced_at', true); $this->setTotals($invoices, 'invoiced_at', true);
// Income Transactions // Income Transactions
Recurring::reflect($income_transactions, 'transaction', 'paid_at'); Recurring::reflect($income_transactions, 'paid_at');
$this->setTotals($income_transactions, 'paid_at', true); $this->setTotals($income_transactions, 'paid_at', true);
// Bills // Bills
@ -44,7 +44,7 @@ class IncomeExpenseSummary extends Report
$this->setTotals($bills, 'billed_at', true); $this->setTotals($bills, 'billed_at', true);
// Expense Transactions // Expense Transactions
Recurring::reflect($expense_transactions, 'transaction', 'paid_at'); Recurring::reflect($expense_transactions, 'paid_at');
$this->setTotals($expense_transactions, 'paid_at', true); $this->setTotals($expense_transactions, 'paid_at', true);
break; break;

View File

@ -41,11 +41,11 @@ class IncomeSummary extends Report
default: default:
// Invoices // Invoices
$invoices = $this->applyFilters(Invoice::accrued(), ['date_field' => 'invoiced_at'])->get(); $invoices = $this->applyFilters(Invoice::accrued(), ['date_field' => 'invoiced_at'])->get();
Recurring::reflect($invoices, 'invoice', 'invoiced_at'); Recurring::reflect($invoices, 'invoiced_at');
$this->setTotals($invoices, 'invoiced_at'); $this->setTotals($invoices, 'invoiced_at');
// Transactions // Transactions
Recurring::reflect($transactions, 'transaction', 'paid_at'); Recurring::reflect($transactions, 'paid_at');
$this->setTotals($transactions, 'paid_at'); $this->setTotals($transactions, 'paid_at');
break; break;

View File

@ -79,11 +79,11 @@ class ProfitLoss extends Report
default: default:
// Invoices // Invoices
$invoices = $this->applyFilters(Invoice::accrued(), ['date_field' => 'invoiced_at'])->get(); $invoices = $this->applyFilters(Invoice::accrued(), ['date_field' => 'invoiced_at'])->get();
Recurring::reflect($invoices, 'invoice', 'invoiced_at'); Recurring::reflect($invoices, 'invoiced_at');
$this->setTotals($invoices, 'invoiced_at', true, $this->tables['income']); $this->setTotals($invoices, 'invoiced_at', true, $this->tables['income']);
// Income Transactions // Income Transactions
Recurring::reflect($income_transactions, 'transaction', 'paid_at'); Recurring::reflect($income_transactions, 'paid_at');
$this->setTotals($income_transactions, 'paid_at', true, $this->tables['income']); $this->setTotals($income_transactions, 'paid_at', true, $this->tables['income']);
// Bills // Bills
@ -92,7 +92,7 @@ class ProfitLoss extends Report
$this->setTotals($bills, 'billed_at', true, $this->tables['expense']); $this->setTotals($bills, 'billed_at', true, $this->tables['expense']);
// Expense Transactions // Expense Transactions
Recurring::reflect($expense_transactions, 'transaction', 'paid_at'); Recurring::reflect($expense_transactions, 'paid_at');
$this->setTotals($expense_transactions, 'paid_at', true, $this->tables['expense']); $this->setTotals($expense_transactions, 'paid_at', true, $this->tables['expense']);
break; break;

View File

@ -62,12 +62,12 @@ class TaxSummary extends Report
default: default:
// Invoices // Invoices
$invoices = $this->applyFilters(Invoice::accrued(), ['date_field' => 'invoiced_at'])->get(); $invoices = $this->applyFilters(Invoice::accrued(), ['date_field' => 'invoiced_at'])->get();
Recurring::reflect($invoices, 'invoice', 'invoiced_at'); Recurring::reflect($invoices, 'invoiced_at');
$this->setTotals($invoices, 'invoiced_at'); $this->setTotals($invoices, 'invoiced_at');
// Bills // Bills
$bills = $this->applyFilters(Bill::accrued(), ['date_field' => 'billed_at'])->get(); $bills = $this->applyFilters(Bill::accrued(), ['date_field' => 'billed_at'])->get();
Recurring::reflect($bills, 'bill', 'billed_at'); Recurring::reflect($bills, 'billed_at');
$this->setTotals($bills, 'billed_at'); $this->setTotals($bills, 'billed_at');
break; break;
@ -80,7 +80,7 @@ class TaxSummary extends Report
// Make groups extensible // Make groups extensible
$item = $this->applyGroups($item); $item = $this->applyGroups($item);
$db_table = $item->getTable(); $type = (($item instanceof Invoice) || (($item instanceof Transaction) && ($item->type == 'income'))) ? 'income' : 'expense';
$date = $this->getFormattedDate(Date::parse($item->$date_field)); $date = $this->getFormattedDate(Date::parse($item->$date_field));
@ -97,8 +97,6 @@ class TaxSummary extends Report
continue; continue;
} }
$type = (($db_table == 'invoices') || (($db_table == 'transactions') && ($item->type == 'income'))) ? 'income' : 'expense';
if (!isset($this->rows[$item_total->name][$type][$date]) || if (!isset($this->rows[$item_total->name][$type][$date]) ||
!isset($this->totals[$item_total->name][$date])) !isset($this->totals[$item_total->name][$date]))
{ {

View File

@ -2,12 +2,13 @@
namespace App\Utilities; namespace App\Utilities;
use App\Models\Purchase\Bill;
use App\Models\Sale\Invoice;
use Date; use Date;
class Recurring class Recurring
{ {
public static function reflect(&$items, $issued_date_field)
public static function reflect(&$items, $type, $issued_date_field)
{ {
foreach ($items as $key => $item) { foreach ($items as $key => $item) {
if (!$item->recurring || !empty($item->parent_id)) { if (!$item->recurring || !empty($item->parent_id)) {
@ -30,7 +31,7 @@ class Recurring
$start_date = Date::parse($start->format('Y-m-d')); $start_date = Date::parse($start->format('Y-m-d'));
if (($type == 'invoice') || ($type == 'bill')) { if (($item instanceof Invoice) || ($item instanceof Bill)) {
// Days between invoiced/billed and due date // Days between invoiced/billed and due date
$diff_days = Date::parse($clone->due_at)->diffInDays(Date::parse($clone->invoiced_at)); $diff_days = Date::parse($clone->due_at)->diffInDays(Date::parse($clone->invoiced_at));

View File

@ -42,13 +42,13 @@
<div class="col"> <div class="col">
<a href="{{ route('reports.show', $report->id) }}"> <a href="{{ route('reports.show', $report->id) }}">
<h5 class="card-title text-uppercase text-muted mb-0">{{ $report->name }}</h5> <h5 class="card-title text-uppercase text-muted mb-0">{{ $report->name }}</h5>
<span class="h2 font-weight-bold mb-0">{{ $classes[$report->id]->getTotal() }}</span> <span class="h2 font-weight-bold mb-0">{{ $totals[$report->id] }}</span>
</a> </a>
</div> </div>
<div class="col-auto"> <div class="col-auto">
<a href="{{ route('reports.show', $report->id) }}"> <a href="{{ route('reports.show', $report->id) }}">
<div class="icon icon-shape bg-orange text-white rounded-circle shadow"> <div class="icon icon-shape bg-orange text-white rounded-circle shadow">
<i class="{{ $classes[$report->id]->getIcon() }}"></i> <i class="{{ $icons[$report->id] }}"></i>
</div> </div>
</a> </a>
</div> </div>