1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-19 16:01:34 +02:00

Fix expense datatable on client overview

This commit is contained in:
Hillel Coren 2018-05-08 22:54:12 +03:00
parent c131d769f7
commit 7c1b451ae3
8 changed files with 45 additions and 2 deletions

View File

@ -69,6 +69,11 @@ class ExpenseController extends BaseController
return $this->expenseService->getDatatableVendor($vendorPublicId); return $this->expenseService->getDatatableVendor($vendorPublicId);
} }
public function getDatatableClient($clientPublicId = null)
{
return $this->expenseService->getDatatableClient($clientPublicId);
}
public function create(ExpenseRequest $request) public function create(ExpenseRequest $request)
{ {
if ($request->vendor_id != 0) { if ($request->vendor_id != 0) {

View File

@ -5,6 +5,7 @@ namespace App\Ninja\Repositories;
use App\Models\Document; use App\Models\Document;
use App\Models\Expense; use App\Models\Expense;
use App\Models\Vendor; use App\Models\Vendor;
use App\Models\Client;
use Auth; use Auth;
use DB; use DB;
use Utils; use Utils;
@ -42,6 +43,15 @@ class ExpenseRepository extends BaseRepository
return $query; return $query;
} }
public function findClient($clientPublicId)
{
$clientId = Client::getPrivateId($clientPublicId);
$query = $this->find()->where('expenses.client_id', '=', $clientId);
return $query;
}
public function find($filter = null) public function find($filter = null)
{ {
$accountid = \Auth::user()->account_id; $accountid = \Auth::user()->account_id;

View File

@ -96,4 +96,22 @@ class ExpenseService extends BaseService
return $this->datatableService->createDatatable($datatable, $query); return $this->datatableService->createDatatable($datatable, $query);
} }
/**
* @param $clientPublicId
*
* @return \Illuminate\Http\JsonResponse
*/
public function getDatatableClient($clientPublicId)
{
$datatable = new ExpenseDatatable(true, true);
$query = $this->expenseRepo->findClient($clientPublicId);
if (! Utils::hasPermission('view_all')) {
$query->where('expenses.user_id', '=', Auth::user()->id);
}
return $this->datatableService->createDatatable($datatable, $query);
}
} }

View File

@ -283,6 +283,7 @@
'entityType' => ENTITY_TASK, 'entityType' => ENTITY_TASK,
'datatable' => new \App\Ninja\Datatables\TaskDatatable(true, true), 'datatable' => new \App\Ninja\Datatables\TaskDatatable(true, true),
'clientId' => $client->public_id, 'clientId' => $client->public_id,
'url' => url('api/tasks/' . $client->public_id),
]) ])
</div> </div>
@endif @endif
@ -293,6 +294,7 @@
'entityType' => ENTITY_EXPENSE, 'entityType' => ENTITY_EXPENSE,
'datatable' => new \App\Ninja\Datatables\ExpenseDatatable(true, true), 'datatable' => new \App\Ninja\Datatables\ExpenseDatatable(true, true),
'clientId' => $client->public_id, 'clientId' => $client->public_id,
'url' => url('api/client_expenses/' . $client->public_id),
]) ])
</div> </div>
@endif @endif
@ -303,6 +305,7 @@
'entityType' => ENTITY_QUOTE, 'entityType' => ENTITY_QUOTE,
'datatable' => new \App\Ninja\Datatables\InvoiceDatatable(true, true, ENTITY_QUOTE), 'datatable' => new \App\Ninja\Datatables\InvoiceDatatable(true, true, ENTITY_QUOTE),
'clientId' => $client->public_id, 'clientId' => $client->public_id,
'url' => url('api/quotes/' . $client->public_id),
]) ])
</div> </div>
@endif @endif
@ -313,6 +316,7 @@
'entityType' => ENTITY_RECURRING_INVOICE, 'entityType' => ENTITY_RECURRING_INVOICE,
'datatable' => new \App\Ninja\Datatables\RecurringInvoiceDatatable(true, true), 'datatable' => new \App\Ninja\Datatables\RecurringInvoiceDatatable(true, true),
'clientId' => $client->public_id, 'clientId' => $client->public_id,
'url' => url('api/recurring_invoices/' . $client->public_id),
]) ])
</div> </div>
@endif @endif
@ -322,6 +326,7 @@
'entityType' => ENTITY_INVOICE, 'entityType' => ENTITY_INVOICE,
'datatable' => new \App\Ninja\Datatables\InvoiceDatatable(true, true), 'datatable' => new \App\Ninja\Datatables\InvoiceDatatable(true, true),
'clientId' => $client->public_id, 'clientId' => $client->public_id,
'url' => url('api/invoices/' . $client->public_id),
]) ])
</div> </div>
@ -330,6 +335,7 @@
'entityType' => ENTITY_PAYMENT, 'entityType' => ENTITY_PAYMENT,
'datatable' => new \App\Ninja\Datatables\PaymentDatatable(true, true), 'datatable' => new \App\Ninja\Datatables\PaymentDatatable(true, true),
'clientId' => $client->public_id, 'clientId' => $client->public_id,
'url' => url('api/payments/' . $client->public_id),
]) ])
</div> </div>
@ -339,6 +345,7 @@
'entityType' => ENTITY_CREDIT, 'entityType' => ENTITY_CREDIT,
'datatable' => new \App\Ninja\Datatables\CreditDatatable(true, true), 'datatable' => new \App\Ninja\Datatables\CreditDatatable(true, true),
'clientId' => $client->public_id, 'clientId' => $client->public_id,
'url' => url('api/credits/' . $client->public_id),
]) ])
</div> </div>
@endif @endif

View File

@ -131,7 +131,7 @@
{!! Datatable::table() {!! Datatable::table()
->addColumn(Utils::trans($datatable->columnFields(), $datatable->entityType)) ->addColumn(Utils::trans($datatable->columnFields(), $datatable->entityType))
->setUrl(url('api/' . Utils::pluralizeEntityType($entityType) . '/' . (isset($clientId) ? (isset($projectId) ? ($clientId . '/' . $projectId) : $clientId) : (isset($vendorId) ? $vendorId : '')))) ->setUrl(empty($url) ? url('api/' . Utils::pluralizeEntityType($entityType)) : $url)
->setCustomValues('entityType', Utils::pluralizeEntityType($entityType)) ->setCustomValues('entityType', Utils::pluralizeEntityType($entityType))
->setCustomValues('clientId', isset($clientId) && $clientId && empty($projectId)) ->setCustomValues('clientId', isset($clientId) && $clientId && empty($projectId))
->setOptions('sPaginationType', 'bootstrap') ->setOptions('sPaginationType', 'bootstrap')

View File

@ -126,6 +126,7 @@
'datatable' => new \App\Ninja\Datatables\ProjectTaskDatatable(true, true), 'datatable' => new \App\Ninja\Datatables\ProjectTaskDatatable(true, true),
'projectId' => $project->public_id, 'projectId' => $project->public_id,
'clientId' => $project->client->public_id, 'clientId' => $project->client->public_id,
'url' => url('api/tasks/' . $project->client->public_id . '/' . $project->public_id),
]) ])
</div> </div>
</div> </div>

View File

@ -190,6 +190,7 @@
'entityType' => ENTITY_EXPENSE, 'entityType' => ENTITY_EXPENSE,
'datatable' => new \App\Ninja\Datatables\ExpenseDatatable(true, true), 'datatable' => new \App\Ninja\Datatables\ExpenseDatatable(true, true),
'vendorId' => $vendor->public_id, 'vendorId' => $vendor->public_id,
'url' => url('api/vendor_expenses/' . $vendor->public_id),
]) ])
</div> </div>
</div> </div>

View File

@ -270,7 +270,8 @@ Route::group(['middleware' => ['lookup:user', 'auth:user']], function () {
Route::get('expenses/create/{vendor_id?}/{client_id?}/{category_id?}', 'ExpenseController@create'); Route::get('expenses/create/{vendor_id?}/{client_id?}/{category_id?}', 'ExpenseController@create');
Route::get('expenses/{expenses}/clone', 'ExpenseController@cloneExpense'); Route::get('expenses/{expenses}/clone', 'ExpenseController@cloneExpense');
Route::get('api/expenses', 'ExpenseController@getDatatable'); Route::get('api/expenses', 'ExpenseController@getDatatable');
Route::get('api/expenses/{id}', 'ExpenseController@getDatatableVendor'); Route::get('api/vendor_expenses/{id}', 'ExpenseController@getDatatableVendor');
Route::get('api/client_expenses/{id}', 'ExpenseController@getDatatableClient');
Route::post('expenses/bulk', 'ExpenseController@bulk'); Route::post('expenses/bulk', 'ExpenseController@bulk');
Route::get('expense_categories', 'ExpenseCategoryController@index'); Route::get('expense_categories', 'ExpenseCategoryController@index');
Route::get('api/expense_categories', 'ExpenseCategoryController@getDatatable'); Route::get('api/expense_categories', 'ExpenseCategoryController@getDatatable');