From 92698f5c269fedb65d840208122357b25a18f639 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Wed, 5 Oct 2016 23:56:48 +0300 Subject: [PATCH] Improve expense import --- app/Ninja/Import/BaseTransformer.php | 2 +- app/Services/ImportService.php | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/Ninja/Import/BaseTransformer.php b/app/Ninja/Import/BaseTransformer.php index a9957007cf59..9c0c53ace105 100644 --- a/app/Ninja/Import/BaseTransformer.php +++ b/app/Ninja/Import/BaseTransformer.php @@ -182,7 +182,7 @@ class BaseTransformer extends TransformerAbstract * @param $name * @return null */ - protected function getVendorId($name) + public function getVendorId($name) { $name = strtolower($name); return isset($this->maps[ENTITY_VENDOR][$name]) ? $this->maps[ENTITY_VENDOR][$name] : null; diff --git a/app/Services/ImportService.php b/app/Services/ImportService.php index 18a6a7ae8951..eb03ea768db4 100644 --- a/app/Services/ImportService.php +++ b/app/Services/ImportService.php @@ -21,6 +21,7 @@ use App\Ninja\Repositories\ExpenseCategoryRepository; use App\Ninja\Serializers\ArraySerializer; use App\Models\Client; use App\Models\Invoice; +use App\Models\Vendor; use App\Models\Expense; use App\Models\ExpenseCategory; use App\Models\EntityModel; @@ -285,6 +286,13 @@ class ImportService $this->addExpenseCategoryToMaps($category); } } + if ( ! empty($row->vendor)) { + $vendorId = $transformer->getVendorId($row->vendor); + if ( ! $vendorId) { + $vendor = $this->vendorRepo->save(['name' => $row->vendor, 'vendor_contact' => []]); + $this->addVendorToMaps($vendor); + } + } } $resource = $transformer->transform($row); @@ -722,7 +730,7 @@ class ImportService $vendors = $this->vendorRepo->all(); foreach ($vendors as $vendor) { - $this->maps['vendor'][strtolower($vendor->name)] = $vendor->id; + $this->addVendorToMaps($vendor); } $expenseCaegories = $this->expenseCategoryRepo->all(); @@ -769,6 +777,11 @@ class ImportService // do nothing } + private function addVendorToMaps(Vendor $vendor) + { + $this->maps['vendor'][strtolower($vendor->name)] = $vendor->id; + } + private function addExpenseCategoryToMaps(ExpenseCategory $category) { if ($name = strtolower($category->name)) {