diff --git a/app/Http/Controllers/PreviewController.php b/app/Http/Controllers/PreviewController.php index 47f47ccbf9ad..27a2f9ebe820 100644 --- a/app/Http/Controllers/PreviewController.php +++ b/app/Http/Controllers/PreviewController.php @@ -14,6 +14,7 @@ namespace App\Http\Controllers; use App\DataMapper\Analytics\LivePreview; use App\Http\Requests\Preview\DesignPreviewRequest; use App\Http\Requests\Preview\PreviewInvoiceRequest; +use App\Http\Requests\Preview\ShowPreviewRequest; use App\Jobs\Util\PreviewPdf; use App\Models\Client; use App\Models\ClientContact; @@ -131,9 +132,9 @@ class PreviewController extends BaseController * Used in the Custom Designer to preview design changes * @return mixed */ - public function show() + public function show(ShowPreviewRequest $request) { - if(request()->has('template')) { + if($request->input('design.is_template')) { return $this->template(); } @@ -238,7 +239,6 @@ class PreviewController extends BaseController private function liveTemplate(array $request_data) { - nlog($request_data['entity_type']); /** @var \App\Models\User $user */ $user = auth()->user(); @@ -292,8 +292,6 @@ class PreviewController extends BaseController ->setTemplate($design_object) ->mock(); } catch(SyntaxError $e) { - - // return response()->json(['message' => 'Twig syntax is invalid.', 'errors' => new \stdClass], 422); } if (request()->query('html') == 'true') { diff --git a/app/Http/Requests/Preview/ShowPreviewRequest.php b/app/Http/Requests/Preview/ShowPreviewRequest.php new file mode 100644 index 000000000000..1a59b7242f32 --- /dev/null +++ b/app/Http/Requests/Preview/ShowPreviewRequest.php @@ -0,0 +1,45 @@ +all(); + + $this->replace($input); + } +} diff --git a/app/Services/PdfMaker/PdfMaker.php b/app/Services/PdfMaker/PdfMaker.php index 19ced3d605a0..f7b8718e80af 100644 --- a/app/Services/PdfMaker/PdfMaker.php +++ b/app/Services/PdfMaker/PdfMaker.php @@ -80,18 +80,29 @@ class PdfMaker $replacements = []; $contents = $this->document->getElementsByTagName('ninja'); - $ts = new TemplateService(); + $ts = new TemplateService(); - if(isset($this->data['template']['entity'])) { + if(isset($this->options['client'])) { + $client = $this->options['client']; try { - $entity = $this->data['template']['entity']; - $ts->setCompany($entity->company); + $ts->setCompany($client->company); + $ts->addGlobal(['currency_code' => $client->company->currency()->code]); } catch(\Exception $e) { - + nlog($e->getMessage()); + } + } + + if(isset($this->options['vendor'])) { + $vendor = $this->options['vendor']; + try { + $ts->setCompany($vendor->company); + $ts->addGlobal(['currency_code' => $vendor->company->currency()->code]); + } catch(\Exception $e) { + nlog($e->getMessage()); } } - $data = $ts->processData($this->options)->getData(); + $data = $ts->processData($this->options)->setGlobals()->getData(); $twig = $ts->twig; foreach ($contents as $content) { diff --git a/app/Services/Template/TemplateAction.php b/app/Services/Template/TemplateAction.php index f739a88bceff..3da93166112a 100644 --- a/app/Services/Template/TemplateAction.php +++ b/app/Services/Template/TemplateAction.php @@ -79,7 +79,7 @@ class TemplateAction implements ShouldQueue */ public function handle() { - // nlog("inside template action"); + nlog("inside template action"); MultiDB::setDb($this->db); @@ -108,7 +108,14 @@ class TemplateAction implements ShouldQueue ->where('company_id', $this->company->id) ->get(); - // nlog($result->toArray()); + $first_entity = $result->first(); + + if($first_entity->client) + $currency_code = $first_entity->client->currency()->code; + elseif($first_entity instanceof Client) + $currency_code = $first_entity->currency()->code; + else + $currency_code = $this->company->currency()->code; if($result->count() <= 1) { $data[$key] = collect($result); @@ -118,10 +125,9 @@ class TemplateAction implements ShouldQueue $ts = $template_service ->setCompany($this->company) + ->addGlobal(['currency_code' => $currency_code]) ->build($data); - // nlog($ts->getHtml()); - if($this->send_email) { $pdf = $ts->getPdf(); $this->sendEmail($pdf, $template); diff --git a/app/Services/Template/TemplateService.php b/app/Services/Template/TemplateService.php index d3710ba722b0..d36e464efd89 100644 --- a/app/Services/Template/TemplateService.php +++ b/app/Services/Template/TemplateService.php @@ -157,9 +157,9 @@ class TemplateService return $this; } - private function setGlobals(): self + public function setGlobals(): self { - + foreach($this->global_vars as $key => $value) { $this->twig->addGlobal($key, $value); } @@ -241,8 +241,6 @@ class TemplateService public function getPdf(): string { - // nlog($this->getHtml()); - if (config('ninja.invoiceninja_hosted_pdf_generation') || config('ninja.pdf_generator') == 'hosted_ninja') { $pdf = (new NinjaPdf())->build($this->compiled_html); } else {