From 5118d7a67980f2ae51e2cc6d69e43ebea2b98c22 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 19 Jun 2018 21:46:57 +0300 Subject: [PATCH] Pancake import fixes --- .../Import/Pancake/InvoiceTransformer.php | 77 +++++++++++++++++-- app/Services/ImportService.php | 10 ++- 2 files changed, 78 insertions(+), 9 deletions(-) diff --git a/app/Ninja/Import/Pancake/InvoiceTransformer.php b/app/Ninja/Import/Pancake/InvoiceTransformer.php index 1be89bf36a..af7da4a58d 100644 --- a/app/Ninja/Import/Pancake/InvoiceTransformer.php +++ b/app/Ninja/Import/Pancake/InvoiceTransformer.php @@ -17,7 +17,10 @@ class InvoiceTransformer extends BaseTransformer */ public function transform($data) { - if (! $this->getClientId($data->client)) { + $clientName = trim(array_last(explode('-', $data->client))); + $clientId = $this->getClientId($data->client) ?: $this->getClientId($clientName); + + if (! $clientId) { return false; } @@ -29,9 +32,9 @@ class InvoiceTransformer extends BaseTransformer return false; } - return new Item($data, function ($data) { + return new Item($data, function ($data) use ($clientId) { return [ - 'client_id' => $this->getClientId($data->client), + 'client_id' => $clientId, 'invoice_number' => $this->getInvoiceNumber($data->invoice), 'invoice_date' => ! empty($data->date_of_creation) ? date('Y-m-d', strtotime($data->date_of_creation)) : null, 'due_date' => ! empty($data->due_date) ? date('Y-m-d', strtotime($data->due_date)) : null, @@ -42,28 +45,88 @@ class InvoiceTransformer extends BaseTransformer 'invoice_items' => [ [ 'product_key' => $data->item_1_gross_discount > 0 ? trans('texts.discount') : $data->item_1_name, - 'notes' => $data->item_1_description, + 'notes' => $data->item_1_description ?: '', 'cost' => (float) $data->item_1_gross_discount > 0 ? $data->item_1_gross_discount * -1 : $data->item_1_rate, 'qty' => $data->item_1_quantity, ], [ 'product_key' => $data->item_2_gross_discount > 0 ? trans('texts.discount') : $data->item_2_name, - 'notes' => $data->item_2_description, + 'notes' => $data->item_2_description ?: '', 'cost' => (float) $data->item_2_gross_discount > 0 ? $data->item_2_gross_discount * -1 : $data->item_2_rate, 'qty' => $data->item_2_quantity, ], [ 'product_key' => $data->item_3_gross_discount > 0 ? trans('texts.discount') : $data->item_3_name, - 'notes' => $data->item_3_description, + 'notes' => $data->item_3_description ?: '', 'cost' => (float) $data->item_3_gross_discount > 0 ? $data->item_3_gross_discount * -1 : $data->item_3_rate, 'qty' => $data->item_3_quantity, ], [ 'product_key' => $data->item_4_gross_discount > 0 ? trans('texts.discount') : $data->item_4_name, - 'notes' => $data->item_4_description, + 'notes' => $data->item_4_description ?: '', 'cost' => (float) $data->item_4_gross_discount > 0 ? $data->item_4_gross_discount * -1 : $data->item_4_rate, 'qty' => $data->item_4_quantity, ], + [ + 'product_key' => $data->item_5_gross_discount > 0 ? trans('texts.discount') : $data->item_5_name, + 'notes' => $data->item_5_description ?: '', + 'cost' => (float) $data->item_5_gross_discount > 0 ? $data->item_5_gross_discount * -1 : $data->item_5_rate, + 'qty' => $data->item_5_quantity, + ], + [ + 'product_key' => $data->item_6_gross_discount > 0 ? trans('texts.discount') : $data->item_6_name, + 'notes' => $data->item_6_description ?: '', + 'cost' => (float) $data->item_6_gross_discount > 0 ? $data->item_6_gross_discount * -1 : $data->item_6_rate, + 'qty' => $data->item_6_quantity, + ], + [ + 'product_key' => $data->item_7_gross_discount > 0 ? trans('texts.discount') : $data->item_7_name, + 'notes' => $data->item_7_description ?: '', + 'cost' => (float) $data->item_7_gross_discount > 0 ? $data->item_7_gross_discount * -1 : $data->item_7_rate, + 'qty' => $data->item_7_quantity, + ], + [ + 'product_key' => $data->item_8_gross_discount > 0 ? trans('texts.discount') : $data->item_8_name, + 'notes' => $data->item_8_description ?: '', + 'cost' => (float) $data->item_8_gross_discount > 0 ? $data->item_8_gross_discount * -1 : $data->item_8_rate, + 'qty' => $data->item_8_quantity, + ], + [ + 'product_key' => $data->item_9_gross_discount > 0 ? trans('texts.discount') : $data->item_9_name, + 'notes' => $data->item_9_description ?: '', + 'cost' => (float) $data->item_9_gross_discount > 0 ? $data->item_9_gross_discount * -1 : $data->item_9_rate, + 'qty' => $data->item_9_quantity, + ], + [ + 'product_key' => $data->item_10_gross_discount > 0 ? trans('texts.discount') : $data->item_10_name, + 'notes' => $data->item_10_description ?: '', + 'cost' => (float) $data->item_10_gross_discount > 0 ? $data->item_10_gross_discount * -1 : $data->item_10_rate, + 'qty' => $data->item_10_quantity, + ], + [ + 'product_key' => $data->item_11_gross_discount > 0 ? trans('texts.discount') : $data->item_11_name, + 'notes' => $data->item_11_description ?: '', + 'cost' => (float) $data->item_11_gross_discount > 0 ? $data->item_11_gross_discount * -1 : $data->item_11_rate, + 'qty' => $data->item_11_quantity, + ], + [ + 'product_key' => $data->item_12_gross_discount > 0 ? trans('texts.discount') : $data->item_12_name, + 'notes' => $data->item_12_description ?: '', + 'cost' => (float) $data->item_12_gross_discount > 0 ? $data->item_12_gross_discount * -1 : $data->item_12_rate, + 'qty' => $data->item_12_quantity, + ], + [ + 'product_key' => $data->item_13_gross_discount > 0 ? trans('texts.discount') : $data->item_13_name, + 'notes' => $data->item_13_description ?: '', + 'cost' => (float) $data->item_13_gross_discount > 0 ? $data->item_13_gross_discount * -1 : $data->item_13_rate, + 'qty' => $data->item_13_quantity, + ], + [ + 'product_key' => $data->item_14_gross_discount > 0 ? trans('texts.discount') : $data->item_14_name, + 'notes' => $data->item_14_description ?: '', + 'cost' => (float) $data->item_14_gross_discount > 0 ? $data->item_14_gross_discount * -1 : $data->item_14_rate, + 'qty' => $data->item_14_quantity, + ], ], ]; }); diff --git a/app/Services/ImportService.php b/app/Services/ImportService.php index a464a7e6c6..3ea3f1562f 100644 --- a/app/Services/ImportService.php +++ b/app/Services/ImportService.php @@ -961,8 +961,14 @@ class ImportService $this->maps['client'][$name] = $client->id; $this->maps['client_ids'][$client->public_id] = $client->id; } - if ($client->contacts->count() && $name = strtolower(trim($client->contacts[0]->email))) { - $this->maps['client'][$name] = $client->id; + if ($client->contacts->count()) { + $contact = $client->contacts[0]; + if ($email = strtolower(trim($contact->email))) { + $this->maps['client'][$email] = $client->id; + } + if ($name = strtolower(trim($contact->getFullName()))) { + $this->maps['client'][$name] = $client->id; + } $this->maps['client_ids'][$client->public_id] = $client->id; } }