diff --git a/app/Ninja/Repositories/ExpenseRepository.php b/app/Ninja/Repositories/ExpenseRepository.php index 442af74bd32b..8836cd65dac9 100644 --- a/app/Ninja/Repositories/ExpenseRepository.php +++ b/app/Ninja/Repositories/ExpenseRepository.php @@ -12,7 +12,7 @@ use Session; class ExpenseRepository extends BaseRepository { protected $documentRepo; - + // Expenses public function getClassName() { @@ -23,7 +23,7 @@ class ExpenseRepository extends BaseRepository { $this->documentRepo = $documentRepo; } - + public function all() { return Expense::scope() @@ -156,20 +156,23 @@ class ExpenseRepository extends BaseRepository $rate = isset($input['exchange_rate']) ? Utils::parseFloat($input['exchange_rate']) : 1; $expense->exchange_rate = round($rate, 4); $expense->amount = round(Utils::parseFloat($input['amount']), 2); - + $expense->save(); // Documents $document_ids = !empty($input['document_ids'])?array_map('intval', $input['document_ids']):array();; foreach ($document_ids as $document_id){ - $document = Document::scope($document_id)->first(); - if($document && Auth::user()->can('edit', $document)){ - $document->invoice_id = null; - $document->expense_id = $expense->id; - $document->save(); + // check document completed upload before user submitted form + if ($document_id) { + $document = Document::scope($document_id)->first(); + if($document && Auth::user()->can('edit', $document)){ + $document->invoice_id = null; + $document->expense_id = $expense->id; + $document->save(); + } } } - + if(!empty($input['documents']) && Auth::user()->can('create', ENTITY_DOCUMENT)){ // Fallback upload $doc_errors = array(); @@ -188,7 +191,7 @@ class ExpenseRepository extends BaseRepository Session::flash('error', implode('
',array_map('htmlentities',$doc_errors))); } } - + foreach ($expense->documents as $document){ if(!in_array($document->public_id, $document_ids)){ // Not checking permissions; deleting a document is just editing the invoice