Working on recurring invoices listview

This commit is contained in:
David Bomba 2019-08-15 14:31:03 +10:00
parent e3b5f31f85
commit a6b78fd7a6
7 changed files with 119 additions and 6 deletions

View File

@ -21,6 +21,7 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Yajra\DataTables\Facades\DataTables;
use Yajra\DataTables\Html\Builder;
use Barracuda\ArchiveStream\Archive;
/**
* Class InvoiceController
@ -85,27 +86,59 @@ class InvoiceController extends Controller
*/
public function bulk()
{
Log::error(request()->input('hashed_ids'));
$transformed_ids = $this->transformKeys(explode(",",request()->input('hashed_ids')));
$invoices = Invoice::whereIn('id', $transformed_ids)
if(request()->input('action') == 'payment')
return $this->makePayment($transformed_ids);
else if(request()->input('action') == 'download')
return $this->downloadInvoicePDF($transformed_ids);
}
private function makePayment(array $ids)
{
$invoices = Invoice::whereIn('id', $ids)
->whereClientId(auth()->user()->client->id)
->get()
->filter(function ($invoice){
return $invoice->isPayable();
});
Log::error($invoices);
$data = [
'invoices' => $invoices,
];
return view('portal.default.invoices.payment', $data);
}
private function downloadInvoicePDF(array $ids)
{
$invoices = Invoice::whereIn('id', $ids)
->whereClientId(auth()->user()->client->id)
->get()
->filter(function ($invoice){
return $invoice->isPayable();
});
//generate pdf's of invoices locally
//if only 1 pdf, output to buffer for download
//if multiple pdf's, output to zip stream using Barracuda lib
/*
$zip = Archive::instance_by_useragent(date('Y-m-d') . '_' . str_replace(' ', '_', trans('texts.invoices')));
$zip->add_file($name, $document->getRaw());
$zip->finish();
*/
}
}

View File

@ -0,0 +1,77 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2019. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Http\Controllers\ClientPortal;
use App\Http\Controllers\Controller;
use App\Models\RecurringInvoice;
use App\Utils\Traits\MakesHash;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Yajra\DataTables\Facades\DataTables;
use Yajra\DataTables\Html\Builder;
/**
* Class InvoiceController
* @package App\Http\Controllers\ClientPortal\InvoiceController
*/
class RecurringInvoiceController extends Controller
{
use MakesHash;
/**
* Show the list of Invoices
*
* @param \App\Filters\InvoiceFilters $filters The filters
*
* @return \Illuminate\Http\Response
*/
public function index(InvoiceFilters $filters, Builder $builder)
{//
$invoices = Invoice::filter($filters);
if (request()->ajax()) {
return DataTables::of(Invoice::filter($filters))->addColumn('action', function ($invoice) {
return '<a href="/client/recurring_invoices/'. $invoice->hashed_id .'/edit" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-edit"></i>'.ctrans('texts.view').'</a>';
})
->editColumn('status_id', function ($invoice){
return Invoice::badgeForStatus($invoice->status);
})
->rawColumns(['checkbox', 'action', 'status_id'])
->make(true);
}
$data['html'] = $builder;
return view('portal.default.recurring_invoices.index', $data);
}
/**
* Display the specified resource.
*
* @param \App\Models\Invoice $invoice The invoice
*
* @return \Illuminate\Http\Response
*/
public function show(RecurringInvoice $invoice)
{
}
}

View File

@ -59,6 +59,7 @@ class PortalComposer
$data[] = [ 'title' => ctrans('texts.dashboard'), 'url' => 'client.dashboard', 'icon' => 'fa fa-tachometer fa-fw fa-2x'];
$data[] = [ 'title' => ctrans('texts.invoices'), 'url' => 'client.invoices.index', 'icon' => 'fa fa-file-pdf-o fa-fw fa-2x'];
$data[] = [ 'title' => ctrans('texts.recurring_invoices'), 'url' => 'client.recurring_invoices.index', 'icon' => 'fa fa-files-o fa-fw fa-2x'];
return $data;

View File

@ -25,6 +25,7 @@ class SystemHealth
'gd',
'curl',
'zip',
'gmp'
];
private static $php_version = 7.3;

View File

@ -169,7 +169,7 @@ $(document).ready(function() {
$('#hashed_ids').val(selected);
$('#action').val('pay');
$('#action').val('payment');
$('#payment_form').submit();
});

View File

@ -16,6 +16,7 @@ Route::group(['middleware' => ['auth:contact'], 'prefix' => 'client', 'as' => 'c
Route::get('dashboard', 'ClientPortal\DashboardController@index')->name('dashboard'); // name = (dashboard. index / create / show / update / destroy / edit
Route::get('invoices', 'ClientPortal\InvoiceController@index')->name('invoices.index');
Route::get('recurring_invoices', 'ClientPortal\RecurringInvoiceController@index')->name('recurring_invoices.index');
Route::post('invoices/payment', 'ClientPortal\InvoiceController@bulk')->name('invoices.bulk');
Route::get('profile/{client_contact}/edit', 'ClientPortal\ProfileController@edit')->name('profile.edit');
Route::put('profile/{client_contact}/edit', 'ClientPortal\ProfileController@update')->name('profile.update');