From 406cb5a33494d076caf204e430d9944e307c57d3 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Mon, 26 Aug 2024 16:14:54 +1000 Subject: [PATCH] Fixes for tests --- app/Casts/QuickbooksSettingsCast.php | 3 +++ app/Models/Product.php | 1 + .../Import/Quickbooks/QuickbooksService.php | 8 +++--- .../Transformers/ProductTransformer.php | 1 + .../2024_08_26_055523_add_qb_product_hash.php | 26 +++++++++++++++++++ 5 files changed, 35 insertions(+), 4 deletions(-) create mode 100644 database/migrations/2024_08_26_055523_add_qb_product_hash.php diff --git a/app/Casts/QuickbooksSettingsCast.php b/app/Casts/QuickbooksSettingsCast.php index 8e0ecb211d06..a5027733f180 100644 --- a/app/Casts/QuickbooksSettingsCast.php +++ b/app/Casts/QuickbooksSettingsCast.php @@ -20,6 +20,9 @@ class QuickbooksSettingsCast implements CastsAttributes { $data = json_decode($value, true); + if(!is_array($data)) + return null; + $qb = new QuickbooksSettings(); $qb->accessTokenKey = $data['accessTokenKey']; $qb->refresh_token = $data['refresh_token']; diff --git a/app/Models/Product.php b/app/Models/Product.php index 169a7abd8865..52390a589e07 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -30,6 +30,7 @@ use League\CommonMark\CommonMarkConverter; * @property string|null $custom_value4 * @property string|null $product_key * @property string|null $notes + * @property string|null $hash * @property float $cost * @property float $price * @property float $quantity diff --git a/app/Services/Import/Quickbooks/QuickbooksService.php b/app/Services/Import/Quickbooks/QuickbooksService.php index 713e84d7062b..dd7803371eae 100644 --- a/app/Services/Import/Quickbooks/QuickbooksService.php +++ b/app/Services/Import/Quickbooks/QuickbooksService.php @@ -135,8 +135,8 @@ class QuickbooksService { match($entity){ // 'client' => $this->syncQbToNinjaClients($records), - // 'product' => $this->syncQbToNinjaProducts($records), - 'invoice' => $this->syncQbToNinjaInvoices($records), + 'product' => $this->syncQbToNinjaProducts($records), + // 'invoice' => $this->syncQbToNinjaInvoices($records), // 'vendor' => $this->syncQbToNinjaClients($records), // 'quote' => $this->syncInvoices($records), // 'purchase_order' => $this->syncInvoices($records), @@ -262,7 +262,7 @@ class QuickbooksService { $ninja_data = $product_transformer->qbToNinja($record); - if($product = $this->findProduct($ninja_data['product_key'])) + if($product = $this->findProduct($ninja_data['hash'])) { $product->fill($ninja_data); $product->save(); @@ -309,7 +309,7 @@ class QuickbooksService $search = Product::query() ->withTrashed() ->where('company_id', $this->company->id) - ->where('product_key', $key); + ->where('hash', $key); if($search->count() == 0) { //new product diff --git a/app/Services/Import/Quickbooks/Transformers/ProductTransformer.php b/app/Services/Import/Quickbooks/Transformers/ProductTransformer.php index e9c8afec30ac..2a26cec30ee0 100644 --- a/app/Services/Import/Quickbooks/Transformers/ProductTransformer.php +++ b/app/Services/Import/Quickbooks/Transformers/ProductTransformer.php @@ -32,6 +32,7 @@ class ProductTransformer extends BaseTransformer { return [ + 'hash' => data_get($data, 'ItemRef.value', null)), 'product_key' => data_get($data, 'Name', data_get($data, 'FullyQualifiedName','')), 'notes' => data_get($data, 'Description', ''), 'cost' => data_get($data, 'PurchaseCost', 0), diff --git a/database/migrations/2024_08_26_055523_add_qb_product_hash.php b/database/migrations/2024_08_26_055523_add_qb_product_hash.php new file mode 100644 index 000000000000..89177311e718 --- /dev/null +++ b/database/migrations/2024_08_26_055523_add_qb_product_hash.php @@ -0,0 +1,26 @@ +string('hash')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +};