mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-05-24 02:14:21 -04:00
Working on recurring invoices listview
This commit is contained in:
parent
e3b5f31f85
commit
a6b78fd7a6
@ -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();
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -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)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
|
@ -25,6 +25,7 @@ class SystemHealth
|
||||
'gd',
|
||||
'curl',
|
||||
'zip',
|
||||
'gmp'
|
||||
];
|
||||
|
||||
private static $php_version = 7.3;
|
||||
|
@ -169,7 +169,7 @@ $(document).ready(function() {
|
||||
|
||||
|
||||
$('#hashed_ids').val(selected);
|
||||
$('#action').val('pay');
|
||||
$('#action').val('payment');
|
||||
|
||||
$('#payment_form').submit();
|
||||
});
|
||||
|
@ -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');
|
||||
|
Loading…
x
Reference in New Issue
Block a user