diff --git a/app/Http/Controllers/MigrationController.php b/app/Http/Controllers/MigrationController.php index c554a657e821..92130a337468 100644 --- a/app/Http/Controllers/MigrationController.php +++ b/app/Http/Controllers/MigrationController.php @@ -21,6 +21,7 @@ use App\Mail\ExistingMigration; use App\Mail\Migration\MaxCompanies; use App\Models\Company; use App\Models\CompanyToken; +use App\Utils\Ninja; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Http\Request; use Illuminate\Support\Str; @@ -378,14 +379,15 @@ class MigrationController extends BaseController return; } - // try { - // StartMigration::dispatch(base_path("storage/app/public/$migration_file"), $user, $fresh_company)->delay(now()->addSeconds(5)); nlog("starting migration job"); nlog($migration_file); - StartMigration::dispatch($migration_file, $user, $fresh_company)->onQueue('migration'); - // } catch (\Exception $e) { - // nlog($e->getMessage()); - // } + + if(Ninja::isHosted()) + StartMigration::dispatch($migration_file, $user, $fresh_company)->onQueue('migration'); + else + StartMigration::dispatch($migration_file, $user, $fresh_company); + + } } diff --git a/app/Http/Controllers/SelfUpdateController.php b/app/Http/Controllers/SelfUpdateController.php index 4955cda39b3a..2fab7b5a1217 100644 --- a/app/Http/Controllers/SelfUpdateController.php +++ b/app/Http/Controllers/SelfUpdateController.php @@ -79,7 +79,6 @@ class SelfUpdateController extends BaseController if (file_exists($cacheServices)) { unlink ($cacheServices); } Artisan::call('clear-compiled'); - Artisan::call('cache:clear'); Artisan::call('route:clear'); Artisan::call('view:clear'); Artisan::call('config:clear'); diff --git a/app/Jobs/Util/Import.php b/app/Jobs/Util/Import.php index 66d4897a8ef9..a1fca23817c7 100644 --- a/app/Jobs/Util/Import.php +++ b/app/Jobs/Util/Import.php @@ -83,6 +83,7 @@ use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Http\UploadedFile; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; @@ -461,6 +462,8 @@ class Import implements ShouldQueue private function checkUniqueConstraint($model, $column, $value) { + $value = trim($value); + $model_query = (new $model()) ->query() ->where($column, $value) @@ -503,10 +506,10 @@ class Import implements ShouldQueue ); if(array_key_exists('created_at', $modified)) - $client->created_at = $modified['created_at']; + $client->created_at = Carbon::parse($modified['created_at']); if(array_key_exists('updated_at', $modified)) - $client->updated_at = $modified['updated_at']; + $client->updated_at = Carbon::parse($modified['updated_at']); $client->save(['timestamps' => false]); @@ -583,6 +586,12 @@ class Import implements ShouldQueue unset($modified['id']); unset($modified['contacts']); + if(array_key_exists('created_at', $modified)) + $modified['created_at'] = Carbon::parse($modified['created_at']); + + if(array_key_exists('updated_at', $modified)) + $modified['updated_at'] = Carbon::parse($modified['updated_at']); + $vendor = $vendor_repository->save( $modified, VendorFactory::create( @@ -650,6 +659,12 @@ class Import implements ShouldQueue $modified['company_id'] = $this->company->id; $modified['user_id'] = $this->processUserId($resource); + if(array_key_exists('created_at', $modified)) + $modified['created_at'] = Carbon::parse($modified['created_at']); + + if(array_key_exists('updated_at', $modified)) + $modified['updated_at'] = Carbon::parse($modified['updated_at']); + unset($modified['id']); $product_repository->save( @@ -696,6 +711,12 @@ class Import implements ShouldQueue $modified['company_id'] = $this->company->id; $modified['line_items'] = $this->cleanItems($modified['line_items']); + if(array_key_exists('created_at', $modified)) + $modified['created_at'] = Carbon::parse($modified['created_at']); + + if(array_key_exists('updated_at', $modified)) + $modified['updated_at'] = Carbon::parse($modified['updated_at']); + unset($modified['id']); if (array_key_exists('invitations', $resource)) { @@ -832,6 +853,12 @@ class Import implements ShouldQueue $modified['user_id'] = $this->processUserId($resource); $modified['company_id'] = $this->company->id; + if(array_key_exists('created_at', $modified)) + $modified['created_at'] = Carbon::parse($modified['created_at']); + + if(array_key_exists('updated_at', $modified)) + $modified['updated_at'] = Carbon::parse($modified['updated_at']); + unset($modified['id']); $credit = $credit_repository->save( @@ -891,6 +918,18 @@ class Import implements ShouldQueue $modified['company_id'] = $this->company->id; + if(array_key_exists('created_at', $modified)) + $modified['created_at'] = Carbon::parse($modified['created_at']); + + if(array_key_exists('updated_at', $modified)) + $modified['updated_at'] = Carbon::parse($modified['updated_at']); + + if(array_key_exists('tax_rate1', $modified) && is_null($modified['tax_rate1'])) + $modified['tax_rate1'] = 0; + + if(array_key_exists('tax_rate2', $modified) && is_null($modified['tax_rate2'])) + $modified['tax_rate2'] = 0; + unset($modified['id']); @@ -988,10 +1027,10 @@ class Import implements ShouldQueue ); if(array_key_exists('created_at', $modified)) - $payment->created_at = $modified['created_at']; + $payment->created_at = Carbon::parse($modified['created_at']); if(array_key_exists('updated_at', $modified)) - $payment->updated_at = $modified['updated_at']; + $payment->updated_at = Carbon::parse($modified['updated_at']); $payment->save(['timestamps' => false]); @@ -1358,10 +1397,12 @@ class Import implements ShouldQueue $task = Task::Create($modified); if(array_key_exists('created_at', $modified)) - $task->created_at = $modified['created_at']; + $task->created_at = Carbon::parse($modified['created_at']); if(array_key_exists('updated_at', $modified)) - $task->updated_at = $modified['updated_at']; + $task->updated_at = Carbon::parse($modified['updated_at']); + + $task->save(['timestamps' => false]); @@ -1446,10 +1487,12 @@ class Import implements ShouldQueue $expense = Expense::Create($modified); if(array_key_exists('created_at', $modified)) - $expense->created_at = $modified['created_at']; + $expense->created_at = Carbon::parse($modified['created_at']); if(array_key_exists('updated_at', $modified)) - $expense->updated_at = $modified['updated_at']; + $expense->updated_at = Carbon::parse($modified['updated_at']); + + $expense->save(['timestamps' => false]); diff --git a/app/Jobs/Util/SchedulerCheck.php b/app/Jobs/Util/SchedulerCheck.php index c96be09f0078..adeb4e016079 100644 --- a/app/Jobs/Util/SchedulerCheck.php +++ b/app/Jobs/Util/SchedulerCheck.php @@ -53,7 +53,6 @@ class SchedulerCheck implements ShouldQueue try { Artisan::call('clear-compiled'); - Artisan::call('cache:clear'); Artisan::call('route:clear'); Artisan::call('config:cache'); } catch (\Exception $e) { diff --git a/app/Jobs/Util/StartMigration.php b/app/Jobs/Util/StartMigration.php index e26c7462ed74..ab2e7d6cdb1b 100644 --- a/app/Jobs/Util/StartMigration.php +++ b/app/Jobs/Util/StartMigration.php @@ -91,6 +91,21 @@ class StartMigration implements ShouldQueue $archive = $zip->open(public_path("storage/{$this->filepath}")); $filename = pathinfo($this->filepath, PATHINFO_FILENAME); + if($this->company->id == $this->company->account->default_company_id) + { + $new_default_company = $this->company->account->companies->first(); + + if ($new_default_company) { + $this->company->account->default_company_id = $new_default_company->id; + $this->company->account->save(); + } + } + + $update_product_flag = $this->company->update_products; + + $this->company->update_products = false; + $this->company->save(); + try { if (! $archive) { throw new ProcessingMigrationArchiveFailed('Processing migration archive failed. Migration file is possibly corrupted.'); @@ -113,7 +128,16 @@ class StartMigration implements ShouldQueue Storage::deleteDirectory(public_path("storage/migrations/{$filename}")); - } catch (NonExistingMigrationFile | ProcessingMigrationArchiveFailed | ResourceNotAvailableForMigration | MigrationValidatorFailed | ResourceDependencyMissing $e) { + $this->company->account->default_company_id = $this->company->id; + $this->company->account->save(); + + $this->company->update_products = $update_product_flag; + $this->company->save(); + + } catch (NonExistingMigrationFile | ProcessingMigrationArchiveFailed | ResourceNotAvailableForMigration | MigrationValidatorFailed | ResourceDependencyMissing | \Exception $e) { + + $this->company->update_products = $update_product_flag; + $this->company->save(); Mail::to($this->user)->send(new MigrationFailed($e, $e->getMessage())); diff --git a/app/Repositories/BaseRepository.php b/app/Repositories/BaseRepository.php index 9cafb79bfbd6..b5062a061b40 100644 --- a/app/Repositories/BaseRepository.php +++ b/app/Repositories/BaseRepository.php @@ -302,11 +302,6 @@ class BaseRepository /* Perform model specific tasks */ if ($model instanceof Invoice) { -nlog("in base"); -nlog($state['finished_amount']); -nlog($state['starting_amount']); -nlog($model->status_id); - if (($state['finished_amount'] != $state['starting_amount']) && ($model->status_id != Invoice::STATUS_DRAFT)) { $model->service()->updateStatus()->save(); diff --git a/app/Repositories/Migration/InvoiceMigrationRepository.php b/app/Repositories/Migration/InvoiceMigrationRepository.php index ee142650f2ba..76406cdd5224 100644 --- a/app/Repositories/Migration/InvoiceMigrationRepository.php +++ b/app/Repositories/Migration/InvoiceMigrationRepository.php @@ -23,6 +23,7 @@ use App\Models\RecurringInvoiceInvitation; use App\Repositories\BaseRepository; use App\Utils\Traits\MakesHash; use App\Utils\Traits\SavesDocuments; +use Illuminate\Support\Carbon; use ReflectionClass; /** @@ -59,6 +60,12 @@ class InvoiceMigrationRepository extends BaseRepository $tmp_data = $data; + if(array_key_exists('tax_rate1', $tmp_data) && is_null($tmp_data['tax_rate1'])) + $tmp_data['tax_rate1'] = 0; + + if(array_key_exists('tax_rate2', $tmp_data) && is_null($tmp_data['tax_rate2'])) + $tmp_data['tax_rate2'] = 0; + /* We need to unset some variable as we sometimes unguard the model */ if (isset($tmp_data['invitations'])) { @@ -71,7 +78,15 @@ class InvoiceMigrationRepository extends BaseRepository $model->fill($tmp_data); $model->status_id = $tmp_data['status_id']; - $model->save(); + + if($tmp_data['created_at']) + $model->created_at = Carbon::parse($tmp_data['created_at']); + + if($tmp_data['updated_at']) + $model->updated_at = Carbon::parse($tmp_data['updated_at']); + + $model->save(['timestamps' => false]); + if (array_key_exists('documents', $data)) { $this->saveDocuments($data['documents'], $model); @@ -130,10 +145,6 @@ class InvoiceMigrationRepository extends BaseRepository $model->design_id = $this->decodePrimaryKey($client->getSetting('invoice_design_id')); } - - if ($model->company->update_products) { - //UpdateOrCreateProduct::dispatchNow($model->line_items, $model, $model->company); - } } if ($class->name == Credit::class) { diff --git a/app/Utils/Traits/AppSetup.php b/app/Utils/Traits/AppSetup.php index 4b316b3dfedf..fbe079e39f02 100644 --- a/app/Utils/Traits/AppSetup.php +++ b/app/Utils/Traits/AppSetup.php @@ -54,7 +54,7 @@ trait AppSetup $orderBy = 'id'; } $tableData = $class::orderBy($orderBy)->get(); - if ($tableData->count()) { + if ($tableData->count() > 1) { Cache::forever($name, $tableData); } }