From f17f5f0e8cb8edd5fd8be8112a01933c3a27206a Mon Sep 17 00:00:00 2001 From: Peter Dulacka Date: Fri, 11 Feb 2022 08:40:09 +0100 Subject: [PATCH] Fix possibility to download receipts (not invoices) in CRM admin remp/helpdesk#1073 --- .../DownloadReceiptButton.php | 8 ++++++ .../ReceiptAdminButtonFactory.php | 25 +++++++++++++++++++ .../download_receipt_button.latte | 6 +++++ src/InvoicesModule.php | 2 +- src/config/config.neon | 1 + 5 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/Components/DownloadReceiptButton/ReceiptAdminButtonFactory.php diff --git a/src/Components/DownloadReceiptButton/DownloadReceiptButton.php b/src/Components/DownloadReceiptButton/DownloadReceiptButton.php index 2c9af89..8b05c41 100644 --- a/src/Components/DownloadReceiptButton/DownloadReceiptButton.php +++ b/src/Components/DownloadReceiptButton/DownloadReceiptButton.php @@ -17,6 +17,8 @@ class DownloadReceiptButton extends BaseWidget { private $templateName = 'download_receipt_button.latte'; + private bool $admin = false; + public function __construct( WidgetManager $widgetManager ) { @@ -28,6 +30,11 @@ public function identifier() return 'downloadreceiptbutton'; } + public function setAdmin() + { + $this->admin = true; + } + public function render($payment) { $isReceiptable = $payment->related('payment_meta') @@ -36,6 +43,7 @@ public function render($payment) $this->template->paymentId = $payment->id; $this->template->showButton = $isReceiptable; + $this->template->admin = $this->admin; $this->template->setFile(__DIR__ . '/' . $this->templateName); $this->template->render(); } diff --git a/src/Components/DownloadReceiptButton/ReceiptAdminButtonFactory.php b/src/Components/DownloadReceiptButton/ReceiptAdminButtonFactory.php new file mode 100644 index 0000000..7bbc10e --- /dev/null +++ b/src/Components/DownloadReceiptButton/ReceiptAdminButtonFactory.php @@ -0,0 +1,25 @@ +widgetManager = $widgetManager; + } + + public function create(): WidgetInterface + { + $receiptButton = new DownloadReceiptButton($this->widgetManager); + $receiptButton->setAdmin(); + return $receiptButton; + } +} diff --git a/src/Components/DownloadReceiptButton/download_receipt_button.latte b/src/Components/DownloadReceiptButton/download_receipt_button.latte index 7001c25..634a46f 100644 --- a/src/Components/DownloadReceiptButton/download_receipt_button.latte +++ b/src/Components/DownloadReceiptButton/download_receipt_button.latte @@ -1,5 +1,11 @@ {if $showButton} + {if $admin} + + {_invoices.frontend.invoice_button.download} + + {else} {_invoices.frontend.download_receipt} + {/if} {/if} \ No newline at end of file diff --git a/src/InvoicesModule.php b/src/InvoicesModule.php index d82893c..705f1b1 100644 --- a/src/InvoicesModule.php +++ b/src/InvoicesModule.php @@ -64,7 +64,7 @@ public function registerWidgets(WidgetManagerInterface $widgetManager) $widgetManager->registerWidgetFactory( 'admin.payments.listing.action', - $this->getInstance(\Crm\InvoicesModule\Components\DownloadReceiptButtonFactory::class), + $this->getInstance(\Crm\InvoicesModule\Components\ReceiptAdminButtonFactory::class), 500 ); diff --git a/src/config/config.neon b/src/config/config.neon index 0143b96..a107c6d 100644 --- a/src/config/config.neon +++ b/src/config/config.neon @@ -22,6 +22,7 @@ services: - Crm\InvoicesModule\Components\DownloadReceiptButton - Crm\InvoicesModule\Components\DownloadReceiptButtonFactory + - Crm\InvoicesModule\Components\ReceiptAdminButtonFactory - Crm\InvoicesModule\Components\InvoiceDetailsWidget - Crm\InvoicesModule\Components\InvoiceLabel - Crm\InvoicesModule\Components\InvoiceAdminButtonFactory