diff --git a/app/Http/Requests/Import/ImportRequest.php b/app/Http/Requests/Import/ImportRequest.php index e09e8d2229f4..73ee49b25116 100644 --- a/app/Http/Requests/Import/ImportRequest.php +++ b/app/Http/Requests/Import/ImportRequest.php @@ -22,7 +22,10 @@ class ImportRequest extends Request */ public function authorize() : bool { - return auth()->user()->isAdmin(); + /** @var \App\Models\User $user */ + $user = auth()->user(); + + return $user->isAdmin(); } public function rules() diff --git a/app/Import/Definitions/TaskMap.php b/app/Import/Definitions/TaskMap.php index d974fa51aea2..00221bc6b27e 100644 --- a/app/Import/Definitions/TaskMap.php +++ b/app/Import/Definitions/TaskMap.php @@ -24,7 +24,7 @@ class TaskMap 4 => 'client.name', 5 => 'client.email', 6 => 'task.description', - 7 => 'task.is_billable', + 7 => 'task.billable', 8 => 'task.start_date', 9 => 'task.end_date', 10 => 'task.start_time', diff --git a/app/Import/Providers/BaseImport.php b/app/Import/Providers/BaseImport.php index 0ad36b20474a..ed84c71f0609 100644 --- a/app/Import/Providers/BaseImport.php +++ b/app/Import/Providers/BaseImport.php @@ -162,11 +162,12 @@ class BaseImport private function groupTasks($csvData, $key) { + nlog($csvData[0]); - if (! $key || count(array_column($csvData, $key)) == 0) { + if (! $key || !is_array($csvData) || count($csvData) == 0 || !isset($csvData[0]['task.number']) || empty($csvData[0]['task.number'])) { return $csvData; } - + // Group by tasks. $grouped = []; @@ -495,7 +496,7 @@ class BaseImport ]; } } -nlog($count); + return $count; } diff --git a/app/Import/Transformer/BaseTransformer.php b/app/Import/Transformer/BaseTransformer.php index c1f1d43cbdf5..843330ac87db 100644 --- a/app/Import/Transformer/BaseTransformer.php +++ b/app/Import/Transformer/BaseTransformer.php @@ -77,7 +77,7 @@ class BaseTransformer } public function getString($data, $field) - { + { return isset($data[$field]) && $data[$field] ? trim($data[$field]) : ''; } @@ -179,6 +179,7 @@ class BaseTransformer public function getClient($client_name, $client_email) { + if (! empty($client_name)) { $client_id_search = Client::query()->where('company_id', $this->company->id) ->where('is_deleted', false) diff --git a/app/Import/Transformer/Csv/TaskTransformer.php b/app/Import/Transformer/Csv/TaskTransformer.php index 9f817ab04ad4..9ebf8c6d449a 100644 --- a/app/Import/Transformer/Csv/TaskTransformer.php +++ b/app/Import/Transformer/Csv/TaskTransformer.php @@ -29,8 +29,11 @@ class TaskTransformer extends BaseTransformer { $this->stubbed_timestamp = time(); - $task_data = reset($task_items_data); - + if(count($task_items_data) == count($task_items_data, COUNT_RECURSIVE)) + $task_data = $task_items_data; + else + $task_data = reset($task_items_data); + $clientId = $this->getClient( $this->getString($task_data, 'client.name'), $this->getString($task_data, 'client.email') diff --git a/app/Jobs/Import/CSVIngest.php b/app/Jobs/Import/CSVIngest.php index 64933f75075b..ee43e5a1cece 100644 --- a/app/Jobs/Import/CSVIngest.php +++ b/app/Jobs/Import/CSVIngest.php @@ -74,7 +74,7 @@ class CSVIngest implements ShouldQueue $engine = $this->bootEngine(); - foreach (['client', 'product', 'invoice', 'payment', 'vendor', 'expense', 'quote', 'bank_transaction', 'recurring_invoice'] as $entity) { + foreach (['client', 'product', 'invoice', 'payment', 'vendor', 'expense', 'quote', 'bank_transaction', 'recurring_invoice', 'task'] as $entity) { $engine->import($entity); } diff --git a/app/Services/ClientPortal/InstantPayment.php b/app/Services/ClientPortal/InstantPayment.php index d9a75bec4a39..093d47b19e31 100644 --- a/app/Services/ClientPortal/InstantPayment.php +++ b/app/Services/ClientPortal/InstantPayment.php @@ -83,6 +83,8 @@ class InstantPayment ->with(['message' => 'No payable invoices selected.']); } + $invoices = Invoice::query()->whereIn('id', $this->transformKeys($payable_invoices->pluck('invoice_id')->toArray()))->withTrashed()->get(); + $client = $invoices->first()->client; $settings = $client->getMergedSettings();