diff --git a/app/Libraries/Utils.php b/app/Libraries/Utils.php index 98cc00e5717f..8edc5fae9e05 100644 --- a/app/Libraries/Utils.php +++ b/app/Libraries/Utils.php @@ -489,6 +489,21 @@ class Utils return intval($value); } + public static function lookupIdInCache($name, $type) + { + $cache = Cache::get($type); + + $data = $cache->filter(function ($item) use ($name) { + return strtolower($item->name) == trim(strtolower($name)); + }); + + if ($record = $data->first()) { + return $record->id; + } else { + return null; + } + } + public static function getFromCache($id, $type) { $cache = Cache::get($type); diff --git a/app/Models/Expense.php b/app/Models/Expense.php index a71612ca5fe7..0be9a89b3eab 100644 --- a/app/Models/Expense.php +++ b/app/Models/Expense.php @@ -66,6 +66,9 @@ class Expense extends EntityModel 'private_notes', 'expense_category', 'expense_date', + 'payment_type', + 'payment_date', + 'transaction_reference', ]; } @@ -78,7 +81,10 @@ class Expense extends EntityModel 'vendor' => 'vendor', 'notes|details^private' => 'public_notes', 'notes|details^public' => 'private_notes', - 'date' => 'expense_date', + 'date^payment' => 'expense_date', + 'payment type' => 'payment_type', + 'payment date' => 'payment_date', + 'reference' => 'transaction_reference', ]; } diff --git a/app/Ninja/Import/CSV/ExpenseTransformer.php b/app/Ninja/Import/CSV/ExpenseTransformer.php index 4d1c5299f176..efb9cd274080 100644 --- a/app/Ninja/Import/CSV/ExpenseTransformer.php +++ b/app/Ninja/Import/CSV/ExpenseTransformer.php @@ -2,6 +2,7 @@ namespace App\Ninja\Import\CSV; +use Utils; use App\Ninja\Import\BaseTransformer; use League\Fractal\Resource\Item; @@ -18,14 +19,20 @@ class ExpenseTransformer extends BaseTransformer public function transform($data) { return new Item($data, function ($data) { + $clientId = isset($data->client) ? $this->getClientId($data->client) : null; + return [ 'amount' => $this->getFloat($data, 'amount'), 'vendor_id' => isset($data->vendor) ? $this->getVendorId($data->vendor) : null, - 'client_id' => isset($data->client) ? $this->getClientId($data->client) : null, + 'client_id' => $clientId, 'expense_date' => isset($data->expense_date) ? date('Y-m-d', strtotime($data->expense_date)) : null, 'public_notes' => $this->getString($data, 'public_notes'), 'private_notes' => $this->getString($data, 'private_notes'), 'expense_category_id' => isset($data->expense_category) ? $this->getExpenseCategoryId($data->expense_category) : null, + 'payment_type_id' => isset($data->payment_type) ? Utils::lookupIdInCache($data->payment_type, 'paymentTypes') : null, + 'payment_date' => isset($data->payment_date) ? date('Y-m-d', strtotime($data->payment_date)) : null, + 'transaction_reference' => $this->getString($data, 'transaction_reference'), + 'should_be_invoiced' => $clientId ? true : false, ]; }); } diff --git a/app/Ninja/Presenters/ExpensePresenter.php b/app/Ninja/Presenters/ExpensePresenter.php index c9bd71b1fabb..8adc4df6a64e 100644 --- a/app/Ninja/Presenters/ExpensePresenter.php +++ b/app/Ninja/Presenters/ExpensePresenter.php @@ -59,6 +59,15 @@ class ExpensePresenter extends EntityPresenter return $this->entity->expense_category ? $this->entity->expense_category->name : ''; } + public function payment_type() + { + if (! $this->payment_type_id) { + return ''; + } + + return Utils::getFromCache($this->payment_type_id, 'paymentTypes')->name; + } + public function calendarEvent($subColors = false) { $data = parent::calendarEvent(); diff --git a/resources/views/export/expenses.blade.php b/resources/views/export/expenses.blade.php index 6094e0a1b5eb..762a0f7450a8 100644 --- a/resources/views/export/expenses.blade.php +++ b/resources/views/export/expenses.blade.php @@ -12,6 +12,7 @@