From 5d5a87bc200132e4da489431c98894328fb988ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Thu, 16 Sep 2021 17:21:25 +0200 Subject: [PATCH 01/10] Fixes for invoices total amount --- app/Services/PdfMaker/Design.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Services/PdfMaker/Design.php b/app/Services/PdfMaker/Design.php index 818307c806ef..0d97d7f2db0d 100644 --- a/app/Services/PdfMaker/Design.php +++ b/app/Services/PdfMaker/Design.php @@ -382,7 +382,7 @@ class Design extends BaseDesign $outstanding = $this->invoices->sum('amount'); return [ - ['element' => 'p', 'content' => '$outstanding_label: $outstanding'], + ['element' => 'p', 'content' => '$outstanding_label: ' . Number::formatMoney($outstanding, $this->entity->client)], ]; } From 6a8175b42d4a66c451580c2c68928f685c382f61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Thu, 16 Sep 2021 17:26:58 +0200 Subject: [PATCH 02/10] Fixes for $balance / $outstanding --- app/Services/PdfMaker/Design.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Services/PdfMaker/Design.php b/app/Services/PdfMaker/Design.php index 0d97d7f2db0d..901d619a4e32 100644 --- a/app/Services/PdfMaker/Design.php +++ b/app/Services/PdfMaker/Design.php @@ -232,7 +232,7 @@ class Design extends BaseDesign ]], ['element' => 'tr', 'properties' => [], 'elements' => [ ['element' => 'th', 'properties' => [], 'content' => '$balance_due_label'], - ['element' => 'th', 'properties' => [], 'content' => '$balance_due'], + ['element' => 'th', 'properties' => [], 'content' => Number::formatMoney($this->invoices->sum('amount'), $this->entity->client)], ]], ]; } From d7266a877305de08a2844e9c6ce4852ddef6aaa6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Thu, 16 Sep 2021 18:10:12 +0200 Subject: [PATCH 03/10] Bold: Fixes for statement totals table positioning --- resources/views/pdf-designs/bold.html | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/resources/views/pdf-designs/bold.html b/resources/views/pdf-designs/bold.html index 689c6cbb06a0..6b98d8824369 100644 --- a/resources/views/pdf-designs/bold.html +++ b/resources/views/pdf-designs/bold.html @@ -257,6 +257,11 @@ max-height: 160px; } + #statement-invoice-table-totals > p { + margin-right: 2rem; + margin-top: 1rem; + } + /** Useful snippets, uncomment to enable. **/ /** Hide company logo **/ From 8b4fe612c20ee2dbbbf82f3a715cbf6922388b0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Thu, 16 Sep 2021 18:10:37 +0200 Subject: [PATCH 04/10] Update migrations file --- ...19_update_designs.php => 2021_09_16_115919_update_designs.php} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename database/migrations/{2021_09_08_115919_update_designs.php => 2021_09_16_115919_update_designs.php} (100%) diff --git a/database/migrations/2021_09_08_115919_update_designs.php b/database/migrations/2021_09_16_115919_update_designs.php similarity index 100% rename from database/migrations/2021_09_08_115919_update_designs.php rename to database/migrations/2021_09_16_115919_update_designs.php From 3c3262997784924ccff9e4f072a478902dfda5fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Thu, 16 Sep 2021 19:03:30 +0200 Subject: [PATCH 05/10] Tech: Logo improvements --- resources/views/pdf-designs/tech.html | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/resources/views/pdf-designs/tech.html b/resources/views/pdf-designs/tech.html index b6d7c479dfe2..139eb8214825 100644 --- a/resources/views/pdf-designs/tech.html +++ b/resources/views/pdf-designs/tech.html @@ -54,8 +54,12 @@ height: 120px; } - .company-logo { - height: 100%; + .company-logo-wrapper { + padding-bottom: 60px; + } + + .company-logo-wrapper { + height: 5rem; } .header-invoice-number { @@ -266,8 +270,10 @@
- + +
$payment_due_label: From 926a599e8d595cbc1a240e1ef9bd419edf9eb0b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Fri, 17 Sep 2021 19:49:40 +0200 Subject: [PATCH 06/10] Push `$amount` as last column --- app/DataMapper/CompanySettings.php | 4 ++-- app/Utils/HtmlEngine.php | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/DataMapper/CompanySettings.php b/app/DataMapper/CompanySettings.php index 288a0a60a8d0..d469603dacfd 100644 --- a/app/DataMapper/CompanySettings.php +++ b/app/DataMapper/CompanySettings.php @@ -683,13 +683,13 @@ class CompanySettings extends BaseSettings '$invoice.date', '$due_date', '$total', - '$outstanding', + '$amount', ], 'statement_payment_columns' => [ '$invoice.number', '$payment.date', '$method', - '$outstanding', + '$amount', ], ]; diff --git a/app/Utils/HtmlEngine.php b/app/Utils/HtmlEngine.php index a678ce62721e..54b73d6c7216 100644 --- a/app/Utils/HtmlEngine.php +++ b/app/Utils/HtmlEngine.php @@ -453,6 +453,8 @@ class HtmlEngine $data['$payment.date'] = ['value' => ' ', 'label' => ctrans('texts.payment_date')]; $data['$method'] = ['value' => ' ', 'label' => ctrans('texts.method')]; + $data['$amount'] = ['value' => '', 'label' => ctrans('texts.amount')]; + $arrKeysLength = array_map('strlen', array_keys($data)); array_multisort($arrKeysLength, SORT_DESC, $data); From 672c832b9b1cf0aff60966b74e4491b66b96ea92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Fri, 17 Sep 2021 20:06:41 +0200 Subject: [PATCH 07/10] Hipster: Show statement label --- app/Services/PdfMaker/PdfMaker.php | 6 ++++++ app/Utils/HtmlEngine.php | 1 + resources/views/pdf-designs/hipster.html | 6 ++++++ 3 files changed, 13 insertions(+) diff --git a/app/Services/PdfMaker/PdfMaker.php b/app/Services/PdfMaker/PdfMaker.php index aded4c4a54fe..2f50f9882ddb 100644 --- a/app/Services/PdfMaker/PdfMaker.php +++ b/app/Services/PdfMaker/PdfMaker.php @@ -82,6 +82,12 @@ class PdfMaker return $this; } + /** + * Final method to get compiled HTML. + * + * @param bool $final @deprecated + * @return mixed + */ public function getCompiledHTML($final = false) { $html = $this->document->saveHTML(); diff --git a/app/Utils/HtmlEngine.php b/app/Utils/HtmlEngine.php index 54b73d6c7216..991a0895e8e2 100644 --- a/app/Utils/HtmlEngine.php +++ b/app/Utils/HtmlEngine.php @@ -454,6 +454,7 @@ class HtmlEngine $data['$method'] = ['value' => ' ', 'label' => ctrans('texts.method')]; $data['$amount'] = ['value' => '', 'label' => ctrans('texts.amount')]; + $data['$statement'] = ['value' => '', 'label' => ctrans('texts.statement')]; $arrKeysLength = array_map('strlen', array_keys($data)); array_multisort($arrKeysLength, SORT_DESC, $data); diff --git a/resources/views/pdf-designs/hipster.html b/resources/views/pdf-designs/hipster.html index 4180fceeaf9b..a2af152de09b 100644 --- a/resources/views/pdf-designs/hipster.html +++ b/resources/views/pdf-designs/hipster.html @@ -345,6 +345,12 @@ ? document.getElementById(tableIdentifier).style.display = 'none' : ''; }); + + // If we have elements in these tables, we can change label to "Statement" & hide entity details. + if (document.querySelectorAll('#statement-payment-table > tbody, #statement-payment-table > tbody, #statement-aging-table-totals > tbody').length > 0) { + document.querySelector('.entity-label').innerText = '$statement_label'; + document.querySelector('.entity-details-wrapper').style.display = 'none'; + } });
From ed3d148e45ce8024663fd5dc9053f1bf112b91dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Mon, 20 Sep 2021 14:54:44 +0200 Subject: [PATCH 08/10] Update request body: Passing specific options --- app/Http/Controllers/ClientStatementController.php | 7 +++---- app/Http/Requests/Statements/CreateStatementRequest.php | 5 +++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/ClientStatementController.php b/app/Http/Controllers/ClientStatementController.php index 002aadd2b882..f0d2c018de57 100644 --- a/app/Http/Controllers/ClientStatementController.php +++ b/app/Http/Controllers/ClientStatementController.php @@ -110,10 +110,9 @@ class ClientStatementController extends BaseController public function statement(CreateStatementRequest $request) { - $pdf = $request->client()->service()->statement([ - 'start_date' => $request->start_date, - 'end_date' => $request->end_date, - ]); + $pdf = $request->client()->service()->statement( + $request->only(['start_date', 'end_date', 'show_payments_table', 'show_aging_table']) + ); if ($pdf) { return response()->streamDownload(function () use ($pdf) { diff --git a/app/Http/Requests/Statements/CreateStatementRequest.php b/app/Http/Requests/Statements/CreateStatementRequest.php index c4a2c31506ba..d887edfdd9e6 100644 --- a/app/Http/Requests/Statements/CreateStatementRequest.php +++ b/app/Http/Requests/Statements/CreateStatementRequest.php @@ -42,6 +42,11 @@ class CreateStatementRequest extends Request $input = $this->decodePrimaryKeys($input); $this->replace($input); + + $this->merge([ + 'show_payments_table' => $this->has('show_payments_table') ? \boolval($this->show_payments_table) : false, + 'show_aging_table' => $this->has('show_aging_table') ? \boolval($this->show_aging_table) : false, + ]); } public function client(): ?Client From a5852f61fefd4223a13da5ede778af019dccc788 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Mon, 20 Sep 2021 14:54:57 +0200 Subject: [PATCH 09/10] Order invoices & payments by number ASC --- app/Services/Client/Statement.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Services/Client/Statement.php b/app/Services/Client/Statement.php index 5d6d5a0e4376..e18f9707618a 100644 --- a/app/Services/Client/Statement.php +++ b/app/Services/Client/Statement.php @@ -221,6 +221,7 @@ class Statement ->where('client_id', $this->client->id) ->whereIn('status_id', [Invoice::STATUS_SENT, Invoice::STATUS_PARTIAL, Invoice::STATUS_PAID]) ->whereBetween('date', [$this->options['start_date'], $this->options['end_date']]) + ->orderBy('number', 'ASC') ->get(); } @@ -235,6 +236,7 @@ class Statement ->where('client_id', $this->client->id) ->whereIn('status_id', [Payment::STATUS_COMPLETED, Payment::STATUS_PARTIALLY_REFUNDED, Payment::STATUS_REFUNDED]) ->whereBetween('date', [$this->options['start_date'], $this->options['end_date']]) + ->orderBy('number', 'ASC') ->get(); } From 00e37ea6811f457bca8afe31092be8014452dff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Mon, 20 Sep 2021 14:55:16 +0200 Subject: [PATCH 10/10] Sum `balance` instead of `amount` --- app/Services/PdfMaker/Design.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/Services/PdfMaker/Design.php b/app/Services/PdfMaker/Design.php index 901d619a4e32..a8d278f4985f 100644 --- a/app/Services/PdfMaker/Design.php +++ b/app/Services/PdfMaker/Design.php @@ -232,7 +232,7 @@ class Design extends BaseDesign ]], ['element' => 'tr', 'properties' => [], 'elements' => [ ['element' => 'th', 'properties' => [], 'content' => '$balance_due_label'], - ['element' => 'th', 'properties' => [], 'content' => Number::formatMoney($this->invoices->sum('amount'), $this->entity->client)], + ['element' => 'th', 'properties' => [], 'content' => Number::formatMoney($this->invoices->sum('balance'), $this->entity->client)], ]], ]; } @@ -379,7 +379,7 @@ class Design extends BaseDesign return []; } - $outstanding = $this->invoices->sum('amount'); + $outstanding = $this->invoices->sum('balance'); return [ ['element' => 'p', 'content' => '$outstanding_label: ' . Number::formatMoney($outstanding, $this->entity->client)], @@ -424,10 +424,14 @@ class Design extends BaseDesign public function statementPaymentTableTotals(): array { - if ($this->type !== self::STATEMENT || !$this->payments->first()) { + if (is_null($this->payments) && $this->type !== self::STATEMENT) { return []; } + if (\array_key_exists('show_payments_table', $this->options) && $this->options['show_payments_table'] === false) { + return []; + } + $payment = $this->payments->first(); return [