Company import/expore recurring expenses

This commit is contained in:
David Bomba 2021-10-12 23:21:17 +11:00
parent c4f09c23ba
commit feab95caa7
2 changed files with 37 additions and 1 deletions

View File

@ -336,6 +336,14 @@ class CompanyExport implements ShouldQueue
})->all(); })->all();
$this->export_data['recurring_expenses'] = $this->company->recurring_expenses->map(function ($expense){
$expense = $this->transformBasicEntities($expense);
$expense = $this->transformArrayOfKeys($expense, ['vendor_id', 'invoice_id', 'client_id', 'category_id', 'project_id']);
return $expense->makeVisible(['id']);
})->all();
$this->export_data['recurring_invoices'] = $this->company->recurring_invoices->makeVisible(['id'])->map(function ($ri){ $this->export_data['recurring_invoices'] = $this->company->recurring_invoices->makeVisible(['id'])->map(function ($ri){

View File

@ -47,6 +47,7 @@ use App\Models\Product;
use App\Models\Project; use App\Models\Project;
use App\Models\Quote; use App\Models\Quote;
use App\Models\QuoteInvitation; use App\Models\QuoteInvitation;
use App\Models\RecurringExpense;
use App\Models\RecurringInvoice; use App\Models\RecurringInvoice;
use App\Models\RecurringInvoiceInvitation; use App\Models\RecurringInvoiceInvitation;
use App\Models\Subscription; use App\Models\Subscription;
@ -76,6 +77,8 @@ use ZipArchive;
use ZipStream\Option\Archive; use ZipStream\Option\Archive;
use ZipStream\ZipStream; use ZipStream\ZipStream;
use function GuzzleHttp\json_encode;
class CompanyImport implements ShouldQueue class CompanyImport implements ShouldQueue
{ {
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, MakesHash, GeneratesCounter; use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, MakesHash, GeneratesCounter;
@ -135,6 +138,7 @@ class CompanyImport implements ShouldQueue
'quote_invitations', 'quote_invitations',
'credits', 'credits',
'credit_invitations', 'credit_invitations',
'recurring_expenses',
'expenses', 'expenses',
'tasks', 'tasks',
'payments', 'payments',
@ -452,6 +456,26 @@ class CompanyImport implements ShouldQueue
} }
private function import_recurring_expenses()
{
//unset / transforms / object_property / match_key
$this->genericImport(RecurringExpense::class,
['assigned_user_id', 'user_id', 'client_id', 'company_id', 'id', 'hashed_id', 'project_id', 'vendor_id'],
[
['users' => 'user_id'],
['users' => 'assigned_user_id'],
['clients' => 'client_id'],
['projects' => 'project_id'],
['vendors' => 'vendor_id'],
['invoices' => 'invoice_id'],
['expense_categories' => 'category_id'],
],
'expenses',
'number');
return $this;
}
private function import_payment_terms() private function import_payment_terms()
{ {
@ -795,6 +819,8 @@ class CompanyImport implements ShouldQueue
['projects' => 'project_id'], ['projects' => 'project_id'],
['vendors' => 'vendor_id'], ['vendors' => 'vendor_id'],
['invoices' => 'invoice_id'], ['invoices' => 'invoice_id'],
['recurring_expenses' => 'recurring_expense_id'],
['expense_categories' => 'category_id'],
], ],
'expenses', 'expenses',
'number'); 'number');
@ -1248,6 +1274,7 @@ class CompanyImport implements ShouldQueue
if($class == 'App\Models\Subscription'){ if($class == 'App\Models\Subscription'){
$obj_array['product_ids'] = $this->recordProductIds($obj_array['product_ids']); $obj_array['product_ids'] = $this->recordProductIds($obj_array['product_ids']);
$obj_array['recurring_product_ids'] = $this->recordProductIds($obj_array['recurring_product_ids']); $obj_array['recurring_product_ids'] = $this->recordProductIds($obj_array['recurring_product_ids']);
$obj_array['webhook_configuration'] = json_encode($obj_array['webhook_configuration']);
} }
$new_obj = $class::firstOrNew( $new_obj = $class::firstOrNew(
@ -1297,7 +1324,8 @@ class CompanyImport implements ShouldQueue
if($class == 'App\Models\Subscription'){ if($class == 'App\Models\Subscription'){
//$obj_array['product_ids'] = $this->recordProductIds($obj_array['product_ids']); //$obj_array['product_ids'] = $this->recordProductIds($obj_array['product_ids']);
//$obj_array['recurring_product_ids'] = $this->recordProductIds($obj_array['recurring_product_ids']); //$obj_array['recurring_product_ids'] = $this->recordProductIds($obj_array['recurring_product_ids']);
// // $obj_array['webhook_configuration'] = json_encode($obj_array['webhook_configuration']);
$obj_array['webhook_configuration'] = '';
$obj_array['recurring_product_ids'] = ''; $obj_array['recurring_product_ids'] = '';
$obj_array['product_ids'] = ''; $obj_array['product_ids'] = '';
} }