diff --git a/app/Jobs/Company/CompanyExport.php b/app/Jobs/Company/CompanyExport.php index a8ec2da2d0bc..f523c91b34da 100644 --- a/app/Jobs/Company/CompanyExport.php +++ b/app/Jobs/Company/CompanyExport.php @@ -293,7 +293,7 @@ class CompanyExport implements ShouldQueue $this->export_data['payments'] = $this->company->payments()->orderBy('number', 'DESC')->cursor()->map(function ($payment){ $payment = $this->transformBasicEntities($payment); - $payment = $this->transformArrayOfKeys($payment, ['client_id','project_id', 'vendor_id', 'client_contact_id', 'invitation_id', 'company_gateway_id']); + $payment = $this->transformArrayOfKeys($payment, ['client_id','project_id', 'vendor_id', 'client_contact_id', 'invitation_id', 'company_gateway_id', 'transaction_id']); $payment->paymentables = $this->transformPaymentable($payment); @@ -456,7 +456,6 @@ class CompanyExport implements ShouldQueue })->all(); - $this->export_data['purchase_order_invitations'] = PurchaseOrderInvitation::where('company_id', $this->company->id)->withTrashed()->cursor()->map(function ($purchase_order){ $purchase_order = $this->transformArrayOfKeys($purchase_order, ['company_id', 'user_id', 'vendor_contact_id', 'purchase_order_id']); @@ -466,6 +465,21 @@ class CompanyExport implements ShouldQueue })->all(); + $this->export_data['bank_integrations'] = $this->company->bank_integrations()->orderBy('id', 'ASC')->cursor()->map(function ($bank_integration){ + + $bank_integration = $this->transformArrayOfKeys($bank_integration, ['account_id','company_id', 'user_id']); + + return $bank_integration->makeVisible(['id','user_id','company_id','account_id']); + + })->all(); + + $this->export_data['bank_transactions'] = $this->company->bank_transactions()->orderBy('id', 'ASC')->cursor()->map(function ($bank_transaction){ + + $bank_transaction = $this->transformArrayOfKeys($bank_transaction, ['company_id', 'user_id','bank_integration_id','expense_id','category_id','ninja_category_id','vendor_id']); + + return $bank_transaction->makeVisible(['id','user_id','company_id']); + + })->all(); //write to tmp and email to owner(); @@ -516,9 +530,6 @@ class CompanyExport implements ShouldQueue $file_name = date('Y-m-d').'_'.str_replace([" ", "/"],["_",""], $this->company->present()->name() . '_' . $this->company->company_key .'.zip'); $path = 'backups'; - - // if(!Storage::disk(config('filesystems.default'))->exists($path)) - // Storage::disk(config('filesystems.default'))->makeDirectory($path, 0775); $zip_path = public_path('storage/backups/'.$file_name); $zip = new \ZipArchive(); diff --git a/app/Jobs/Company/CompanyImport.php b/app/Jobs/Company/CompanyImport.php index 67964eefa18f..2910fb720b70 100644 --- a/app/Jobs/Company/CompanyImport.php +++ b/app/Jobs/Company/CompanyImport.php @@ -24,6 +24,8 @@ use App\Mail\Import\CompanyImportFailure; use App\Mail\Import\ImportCompleted; use App\Models\Activity; use App\Models\Backup; +use App\Models\BankIntegration; +use App\Models\BankTransaction; use App\Models\Client; use App\Models\ClientContact; use App\Models\ClientGatewayToken; @@ -142,15 +144,16 @@ class CompanyImport implements ShouldQueue 'expenses', 'tasks', 'payments', - // 'activities', - // 'backups', 'company_ledger', 'designs', 'documents', 'webhooks', 'system_logs', 'purchase_orders', - 'purchase_order_invitations' + 'purchase_order_invitations', + 'bank_integrations', + 'bank_transactions', + 'payments', ]; private $company_properties = [ @@ -527,6 +530,37 @@ class CompanyImport implements ShouldQueue } + private function import_bank_integrations() + { + $this->genericImport(BankIntegration::class, + ['assigned_user_id','account_id', 'company_id', 'id', 'hashed_id'], + [ + ['users' => 'user_id'], + ], + 'bank_integrations', + 'description'); + + return $this; + } + + private function import_bank_transactions() + { + $this->genericImport(BankTransaction::class, + ['assigned_user_id','company_id', 'id', 'hashed_id', 'user_id'], + [ + ['users' => 'user_id'], + ['expenses' => 'expense_id'], + ['vendors' => 'vendor_id'], + ['expense_categories' => 'ninja_category_id'], + ['expense_categories' => 'category_id'], + ['bank_integrations' => 'bank_integration_id'] + ], + 'bank_transactions', + null); + + return $this; + } + private function import_recurring_expenses() { //unset / transforms / object_property / match_key @@ -979,6 +1013,7 @@ class CompanyImport implements ShouldQueue ['vendors' => 'vendor_id'], ['invoice_invitations' => 'invitation_id'], ['company_gateways' => 'company_gateway_id'], + ['bank_transactions' => 'transaction_id'], ], 'payments', 'number'); @@ -1569,6 +1604,28 @@ class CompanyImport implements ShouldQueue $obj_array, ); } + elseif($class == 'App\Models\BankIntegration'){ + $new_obj = new BankIntegration(); + $new_obj->company_id = $this->company->id; + $new_obj->account_id = $this->account->id; + $new_obj->fill($obj_array); + $new_obj->save(['timestamps' => false]); + } + elseif($class == 'App\Models\BankTransaction'){ + + $new_obj = new BankTransaction(); + $new_obj->company_id = $this->company->id; + + $obj_array['invoice_ids'] = collect(explode(",",$obj_array['invoice_ids']))->map(function ($id) { + return $this->transformId('invoices', $id); + })->map(function ($encodeable){ + return $this->encodePrimaryKey($encodeable); + })->implode(","); + + + $new_obj->fill($obj_array); + $new_obj->save(['timestamps' => false]); + } else{ $new_obj = $class::withTrashed()->firstOrNew( [$match_key => $obj->{$match_key}, 'company_id' => $this->company->id], diff --git a/resources/views/pdf-designs/clean.html b/resources/views/pdf-designs/clean.html index 1f9fcebbd282..dac7dcfe60b7 100644 --- a/resources/views/pdf-designs/clean.html +++ b/resources/views/pdf-designs/clean.html @@ -257,7 +257,7 @@ overflow-wrap: break-word; } - .stamp { + .stamp { transform: rotate(12deg); color: #555; font-size: 3rem;