diff --git a/.gitignore b/.gitignore index de42f666a8b4..76a9e0437f4b 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ tests/_support/_generated/ /c3.php _ide_helper.php +storage/version.txt diff --git a/app/Http/Controllers/TaskApiController.php b/app/Http/Controllers/TaskApiController.php index 1ad8ecd6f2db..cead941fd910 100644 --- a/app/Http/Controllers/TaskApiController.php +++ b/app/Http/Controllers/TaskApiController.php @@ -45,7 +45,7 @@ class TaskApiController extends BaseAPIController { $tasks = Task::scope() ->withTrashed() - ->with('client', 'invoice', 'project') + ->with('client', 'invoice', 'project', 'task_status') ->orderBy('updated_at', 'desc'); return $this->listResponse($tasks); diff --git a/app/Models/Task.php b/app/Models/Task.php index c3ef5b141361..7caee0968b3c 100644 --- a/app/Models/Task.php +++ b/app/Models/Task.php @@ -159,7 +159,7 @@ class Task extends EntityModel $duration += max($endTime - $startTime, 0); } - return $duration; + return round($duration); } public function getTimeLog() { diff --git a/app/Ninja/Transformers/InvoiceTransformer.php b/app/Ninja/Transformers/InvoiceTransformer.php index 174ffd62920d..498b4ad4d62b 100644 --- a/app/Ninja/Transformers/InvoiceTransformer.php +++ b/app/Ninja/Transformers/InvoiceTransformer.php @@ -168,6 +168,7 @@ class InvoiceTransformer extends EntityTransformer 'is_quote' => (bool) $invoice->isType(INVOICE_TYPE_QUOTE), // Temp to support mobile app 'is_public' => (bool) $invoice->is_public, 'filename' => $invoice->getFileName(), + 'invoice_design_id' => $invoice->invoice_design_id, ]); } } diff --git a/app/Ninja/Transformers/TaskTransformer.php b/app/Ninja/Transformers/TaskTransformer.php index c5804c04461b..98b09fbbbfe9 100644 --- a/app/Ninja/Transformers/TaskTransformer.php +++ b/app/Ninja/Transformers/TaskTransformer.php @@ -75,6 +75,8 @@ class TaskTransformer extends EntityTransformer 'is_running' => (bool) $task->is_running, 'custom_value1' => $task->custom_value1 ?: '', 'custom_value2' => $task->custom_value2 ?: '', + 'task_status_id' => $task->task_status ? (int) $task->task_status->public_id : 0, + 'task_status_sort_order' => $task->task_status_sort_order, ]); } } diff --git a/app/Ninja/Transformers/UserAccountTransformer.php b/app/Ninja/Transformers/UserAccountTransformer.php index 12950f800983..92ec8a5c873f 100644 --- a/app/Ninja/Transformers/UserAccountTransformer.php +++ b/app/Ninja/Transformers/UserAccountTransformer.php @@ -164,7 +164,7 @@ class UserAccountTransformer extends EntityTransformer 'name' => $account->present()->name ?: '', 'token' => $account->getToken($user->id, $this->tokenName), 'default_url' => SITE_URL, - 'plan' => $account->company->plan ?: '', + 'plan' => $company->hasActivePlan() && $company->plan ? $company->plan : '', 'logo' => $account->logo ?: '', 'logo_url' => $account->getLogoURL() ?: '', 'currency_id' => (int) $account->currency_id, @@ -216,7 +216,13 @@ class UserAccountTransformer extends EntityTransformer 'email_template_reminder1' => $account->getEmailTemplate('reminder1'), 'email_template_reminder2' => $account->getEmailTemplate('reminder2'), 'email_template_reminder3' => $account->getEmailTemplate('reminder3'), +<<<<<<< HEAD +======= + 'has_custom_design1' => (bool) $account->custom_design1, + 'has_custom_design2' => (bool) $account->custom_design2, + 'has_custom_design3' => (bool) $account->custom_design3, +>>>>>>> cd8b764... Fixes for mobile app ]; } } diff --git a/resources/views/invoices/view_borderless.blade.php b/resources/views/invoices/view_borderless.blade.php index db565d2fa1c8..b863b175bb76 100644 --- a/resources/views/invoices/view_borderless.blade.php +++ b/resources/views/invoices/view_borderless.blade.php @@ -69,7 +69,19 @@ @endif @endif @else - refreshPDF(); + @if (request()->download) + try { + var doc = generatePDF(invoice, invoice.invoice_design.javascript, true); + var fileName = invoice.is_quote ? invoiceLabels.quote : invoiceLabels.invoice; + doc.save(fileName + '_' + invoice.invoice_number + '.pdf'); + } catch (exception) { + if (location.href.indexOf('/view/') > 0) { + location.href = location.href.replace('/view/', '/download/'); + } + } + @else + refreshPDF(); + @endif @endif });