From 388c0e8467932b6549b2dd72ba2967d84905ba0e Mon Sep 17 00:00:00 2001 From: David Bomba Date: Mon, 23 Nov 2020 08:25:29 +1100 Subject: [PATCH] Add withTrashed() for queries in migration --- app/Http/Controllers/MigrationController.php | 20 ++++++++- app/Jobs/Util/Import.php | 43 +++++++++++++++++++ app/Repositories/BaseRepository.php | 4 +- .../Migration/InvoiceMigrationRepository.php | 4 +- .../Migration/PaymentMigrationRepository.php | 2 +- app/Utils/Traits/CleanLineItems.php | 5 +++ 6 files changed, 72 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/MigrationController.php b/app/Http/Controllers/MigrationController.php index 9934573bd7a7..0b7ed4293bfb 100644 --- a/app/Http/Controllers/MigrationController.php +++ b/app/Http/Controllers/MigrationController.php @@ -98,6 +98,24 @@ class MigrationController extends BaseController return response()->json(['message' => 'Company purged'], 200); } + private function purgeCompanyWithForceFlag(Company $company) + { + $account = $company->account; + $company_id = $company->id; + + $company->delete(); + + /*Update the new default company if necessary*/ + if ($company_id == $account->default_company_id && $account->companies->count() >= 1) { + $new_default_company = $account->companies->first(); + + if ($new_default_company) { + $account->default_company_id = $new_default_company->id; + $account->save(); + } + } + } + /** * Purge Company but save settings. * @@ -241,7 +259,7 @@ class MigrationController extends BaseController // If there's existing company and force ** is provided ** - purge the company and migrate again. if ($checks['existing_company'] == true && $checks['force'] == true) { - $this->purgeCompany($existing_company); + $this->purgeCompanyWithForceFlag($existing_company); $account = auth()->user()->account; $fresh_company = (new ImportMigrations())->getCompany($account); diff --git a/app/Jobs/Util/Import.php b/app/Jobs/Util/Import.php index 8182653a303a..2d4afab85f4d 100644 --- a/app/Jobs/Util/Import.php +++ b/app/Jobs/Util/Import.php @@ -834,6 +834,10 @@ class Import implements ShouldQueue 'new' => $payment->id, ], ]; + + //depending on the status, we do a final action. + $payment = $this->updatePaymentForStatus($payment, $modified['status_id']); + } Payment::reguard(); @@ -843,6 +847,45 @@ class Import implements ShouldQueue $payment_repository = null; } + private function updatePaymentForStatus($payment, $status_id) :Payment + { + // define('PAYMENT_STATUS_PENDING', 1); + // define('PAYMENT_STATUS_VOIDED', 2); + // define('PAYMENT_STATUS_FAILED', 3); + // define('PAYMENT_STATUS_COMPLETED', 4); + // define('PAYMENT_STATUS_PARTIALLY_REFUNDED', 5); + // define('PAYMENT_STATUS_REFUNDED', 6); + + switch ($status_id) { + case 1: + return $payment; + break; + case 2: + return $payment->service()->deletePayment(); + break; + case 3: + return $payment->service()->deletePayment(); + break; + case 4: + return $payment; + break; + case 5: + $payment->status_id = Payment::STATUS_PARTIALLY_REFUNDED; + $payment->save(); + return $payment; + break; + case 6: + $payment->status_id = Payment::STATUS_REFUNDED; + $payment->save(); + return $payment; + break; + + default: + return $payment; + break; + } + } + private function processDocuments(array $data): void { Document::unguard(); diff --git a/app/Repositories/BaseRepository.php b/app/Repositories/BaseRepository.php index 7b0cc2987be4..1f95fbfe4914 100644 --- a/app/Repositories/BaseRepository.php +++ b/app/Repositories/BaseRepository.php @@ -162,9 +162,9 @@ class BaseRepository $class = new ReflectionClass($model); if (array_key_exists('client_id', $data)) { - $client = Client::find($data['client_id']); + $client = Client::where('id', $data['client_id'])->withTrashed()->first(); } else { - $client = Client::find($model->client_id); + $client = Client::where('id', $model->client_id)->withTrashed()->first(); } $state = []; diff --git a/app/Repositories/Migration/InvoiceMigrationRepository.php b/app/Repositories/Migration/InvoiceMigrationRepository.php index d0a0b53b4ea2..bb8254e24962 100644 --- a/app/Repositories/Migration/InvoiceMigrationRepository.php +++ b/app/Repositories/Migration/InvoiceMigrationRepository.php @@ -46,9 +46,9 @@ class InvoiceMigrationRepository extends BaseRepository $class = new ReflectionClass($model); if (array_key_exists('client_id', $data)) { - $client = Client::find($data['client_id']); + $client = Client::where('id', $data['client_id'])->withTrashed()->first(); } else { - $client = Client::find($model->client_id); + $client = Client::where('id', $model->client_id)->withTrashed()->first(); } $state = []; diff --git a/app/Repositories/Migration/PaymentMigrationRepository.php b/app/Repositories/Migration/PaymentMigrationRepository.php index 197e4eaac9ce..79e1ab1f1d4b 100644 --- a/app/Repositories/Migration/PaymentMigrationRepository.php +++ b/app/Repositories/Migration/PaymentMigrationRepository.php @@ -164,7 +164,7 @@ class PaymentMigrationRepository extends BaseRepository */ private function processExchangeRates($data, $payment) { - $client = Client::find($data['client_id']); + $client = Client::find($data['client_id'])->withTrashed(); $client_currency = $client->getSetting('currency_id'); $company_currency = $client->company->settings->currency_id; diff --git a/app/Utils/Traits/CleanLineItems.php b/app/Utils/Traits/CleanLineItems.php index eba9fd7b05d1..1744a369958e 100644 --- a/app/Utils/Traits/CleanLineItems.php +++ b/app/Utils/Traits/CleanLineItems.php @@ -28,7 +28,12 @@ trait CleanLineItems $cleaned_items = []; foreach ($items as $item) { + + if(is_array($item)) + continue; + $cleaned_items[] = $this->cleanLineItem($item); + } return $cleaned_items;