diff --git a/app/Abstracts/Report.php b/app/Abstracts/Report.php index 48caea891..800189f22 100644 --- a/app/Abstracts/Report.php +++ b/app/Abstracts/Report.php @@ -142,7 +142,7 @@ abstract class Report $sum += is_array($total) ? array_sum($total) : $total; } - $total = money($sum, setting('default.currency'), true); + $total = money($sum, setting('default.currency'), true)->format(); } else { $total = trans('general.na'); } diff --git a/app/Console/Commands/ReportReminder.php b/app/Console/Commands/ReportReminder.php new file mode 100644 index 000000000..ba858824d --- /dev/null +++ b/app/Console/Commands/ReportReminder.php @@ -0,0 +1,77 @@ + false]); + + // Get all companies + $companies = Company::enabled()->withCount('reports')->cursor(); + + foreach ($companies as $company) { + // Has company reports + if (!$company->reports_count) { + continue; + } + + $this->info('Calculate report reminders for ' . $company->name . ' company.'); + + // Set company + $company->makeCurrent(); + + $this->remind(); + } + + Company::forgetCurrent(); + } + + protected function remind() + { + $reports = Report::orderBy('name')->get(); + + foreach ($reports as $report) { + $class = Utility::getClassInstance($report, false); + + if (empty($class)) { + continue; + } + + $ttl = 3600 * 6; // 6 hours + + Cache::forget('reports.totals.' . $report->id); + + Cache::remember('reports.totals.' . $report->id, $ttl, function () use ($class) { + return $class->getGrandTotal(); + }); + } + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 88648f393..17d8ce4aa 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -29,6 +29,7 @@ class Kernel extends ConsoleKernel $schedule_time = config('app.schedule_time'); + $schedule->command('reminder:report')->everySixHours(); $schedule->command('reminder:invoice')->dailyAt($schedule_time); $schedule->command('reminder:bill')->dailyAt($schedule_time); $schedule->command('recurring:check')->dailyAt($schedule_time); diff --git a/app/Http/Controllers/Common/Reports.php b/app/Http/Controllers/Common/Reports.php index fb8361b01..1aa468798 100644 --- a/app/Http/Controllers/Common/Reports.php +++ b/app/Http/Controllers/Common/Reports.php @@ -24,6 +24,7 @@ class Reports extends Controller $this->middleware('permission:update-common-reports')->only('edit', 'update', 'enable', 'disable'); $this->middleware('permission:delete-common-reports')->only('destroy'); } + /** * Display a listing of the resource. * @@ -271,16 +272,17 @@ class Reports extends Controller * * @return Response */ - public function clear() + public function clear(Report $report) { - Report::all()->each(function ($report) { - if (!Utility::canShow($report->class)) { - return; - } + $data = Utility::getClassInstance($report)->getGrandTotal(); - Cache::put('reports.totals.' . $report->id, Utility::getClassInstance($report)->getGrandTotal()); - }); + Cache::put('reports.totals.' . $report->id, $data); - return redirect()->back(); + return response()->json([ + 'success' => true, + 'error' => false, + 'data' => $data, + 'message' => '', + ]); } } diff --git a/resources/assets/js/views/common/reports.js b/resources/assets/js/views/common/reports.js index bcd084f29..d515ccff2 100644 --- a/resources/assets/js/views/common/reports.js +++ b/resources/assets/js/views/common/reports.js @@ -30,9 +30,14 @@ const app = new Vue({ form: new Form('report'), bulk_action: new BulkAction('reports'), report_fields: '', + reports_total: [], } }, + created() { + this.reports_total = reports_total; + }, + methods: { onChangeClass(class_name) { axios.get(url + '/common/reports/fields', { @@ -76,6 +81,15 @@ const app = new Vue({ onChangeReportFields(event) { this.form = event; - } + }, + + onRefreshTotal(report_id) { + axios.get(url + '/common/reports/' + report_id + '/clear') + .then(response => { + this.reports_total[report_id] = response.data.data; + }) + .catch(error => { + }); + }, } }); diff --git a/resources/views/common/reports/index.blade.php b/resources/views/common/reports/index.blade.php index f891d8489..1ef67a888 100644 --- a/resources/views/common/reports/index.blade.php +++ b/resources/views/common/reports/index.blade.php @@ -6,7 +6,6 @@ @can('create-common-reports') {{ trans('general.add_new') }} @endcan - {{ trans('general.clear_cache') }} @endsection @section('content') @@ -25,14 +24,17 @@ +