"Undefined index: document" when attaching document to expense in v2.8.0

Hello,

After updating to version 2.8.0, whenever I try to attach a document to an expense (don’t know if it will happen too when attaching documents in other items) I get the following exception. That’s the only issue I identified so far after completing the update.


in Account.php line 1871
at HandleExceptions->handleError('8', 'Undefined index: document', '/share/CACHEDEV1_DATA/Web/ninja/app/Models/Account.php', '1871', array('entityType' => 'document')) in Account.php line 1871
at Account->isModuleEnabled('document') in EntityPolicy.php line 76
at EntityPolicy::checkModuleEnabled(object(User), object(Document)) in EntityPolicy.php line 34
at EntityPolicy->edit(object(User), object(Document))
at call_user_func_array(array(object(DocumentPolicy), 'edit'), array(object(User), object(Document))) in compiled.php line 951
at Gate->Illuminate\Auth\Access\{closure}(object(User), object(Document))
at call_user_func_array(object(Closure), array(object(User), object(Document))) in compiled.php line 894
at Gate->callAuthCallback(object(User), 'edit', array(object(Document))) in compiled.php line 886
at Gate->raw('edit', object(Document)) in compiled.php line 865
at Gate->check('edit', object(Document)) in Authorizable.php line 18
at User->can('edit', object(Document)) in ExpenseRepository.php line 164
at ExpenseRepository->save(array('_method' => 'PUT', 'action' => '', 'public_id' => '67', 'invoice_id' => '', 'vendor_id' => '4', 'expense_category_id' => '1', 'expense_date' => '08.11.2016', 'expense_currency_id' => '3', 'amount' => '104.53', 'client_id' => '', 'should_be_invoiced' => '0', 'convert_currency' => '0', 'invoice_currency_id' => '3', 'apply_taxes' => '0', 'tax_select1' => '', 'tax_rate1' => '0.000', 'tax_name1' => '', 'tax_select2' => '', 'tax_rate2' => '0.000', 'tax_name2' => '', 'public_notes' => '2016.10 phone + adsl', 'private_notes' => '', 'document_ids' => array('78'), '_token' => 'wIYiu8Kc5INJ2iOHNFEYaKhnqm7a3zAm0P0Rgyjt', 'documents' => null), object(Expense)) in ExpenseService.php line 61
at ExpenseService->save(array('_method' => 'PUT', 'action' => '', 'public_id' => '67', 'invoice_id' => '', 'vendor_id' => '4', 'expense_category_id' => '1', 'expense_date' => '08.11.2016', 'expense_currency_id' => '3', 'amount' => '104.53', 'client_id' => '', 'should_be_invoiced' => '0', 'convert_currency' => '0', 'invoice_currency_id' => '3', 'apply_taxes' => '0', 'tax_select1' => '', 'tax_rate1' => '0.000', 'tax_name1' => '', 'tax_select2' => '', 'tax_rate2' => '0.000', 'tax_name2' => '', 'public_notes' => '2016.10 phone + adsl', 'private_notes' => '', 'document_ids' => array('78'), '_token' => 'wIYiu8Kc5INJ2iOHNFEYaKhnqm7a3zAm0P0Rgyjt', 'documents' => null), object(Expense)) in ExpenseController.php line 165
at ExpenseController->update(object(UpdateExpenseRequest), '67')
at call_user_func_array(array(object(ExpenseController), 'update'), array(object(UpdateExpenseRequest), 'expenses' => '67')) in compiled.php line 9482
at Controller->callAction('update', array(object(UpdateExpenseRequest), 'expenses' => '67')) in compiled.php line 9544
at ControllerDispatcher->call(object(ExpenseController), object(Route), 'update') in compiled.php line 9524
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in compiled.php line 10006
at Pipeline->then(object(Closure)) in compiled.php line 9525
at ControllerDispatcher->callWithinStack(object(ExpenseController), object(Route), object(Request), 'update') in compiled.php line 9512
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\ExpenseController', 'update') in compiled.php line 8582
at Route->runController(object(Request)) in compiled.php line 8569
at Route->run(object(Request)) in compiled.php line 8283
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Authenticate.php line 90
at Authenticate->handle(object(Request), object(Closure), 'user')
at call_user_func_array(array(object(Authenticate), 'handle'), array(object(Request), object(Closure), 'user')) in compiled.php line 10021
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in compiled.php line 10006
at Pipeline->then(object(Closure)) in compiled.php line 8284
at Router->runRouteWithinStack(object(Route), object(Request)) in compiled.php line 8275
at Router->dispatchToRoute(object(Request)) in compiled.php line 8265
at Router->dispatch(object(Request)) in compiled.php line 2419
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Debugbar.php line 49
at Debugbar->handle(object(Request), object(Closure))
at call_user_func_array(array(object(Debugbar), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10021
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartupCheck.php line 196
at StartupCheck->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartupCheck), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10021
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in QueryLogging.php line 29
at QueryLogging->handle(object(Request), object(Closure))
at call_user_func_array(array(object(QueryLogging), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10021
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in DuplicateSubmissionCheck.php line 36
at DuplicateSubmissionCheck->handle(object(Request), object(Closure))
at call_user_func_array(array(object(DuplicateSubmissionCheck), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10021
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 3225
at VerifyCsrfToken->handle(object(Request), object(Closure)) in VerifyCsrfToken.php line 54
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10021
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 13531
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10021
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 12021
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10021
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 13270
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10021
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 13207
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10021
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in compiled.php line 3286
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in compiled.php line 10021
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in compiled.php line 10006
at Pipeline->then(object(Closure)) in compiled.php line 2366
at Kernel->sendRequestThroughRouter(object(Request)) in compiled.php line 2350
at Kernel->handle(object(Request)) in index.php line 52

Thanks for letting us know, we’ll include a fix with our next dot release.

Here’s the change if you want to patch your code.

https://github.com/invoiceninja/invoiceninja/commit/a9a94df97389e1fa43c4fd81f5f488921ae7eec8

Hi Hillel,

Thanks a lot to you. The fix did the job and it works perfect again.

Best regards,
Oscar.