From feb6f563968f53e59511578429b1dd61fda52008 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Bernd=20Ble=C3=9Fmann?= <bernd@kivitendo-premium.de>
Date: Wed, 26 Jan 2022 17:17:45 +0100
Subject: [PATCH] =?utf8?q?Rechnungsmaske:=20"Drucken=20und=20Buchen"=20und?=
 =?utf8?q?=20Browser-Zur=C3=BCck=20entsch=C3=A4rfen?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

Wenn nach dem "Drucken und Buchen" in der Rechnungsmaske eine andere Maske
aufgerufen wird und dann mit "Browser-Zurück" wieder zur Rechnungsmaske
zurückgegangen wird, dann wird im günstigsten Fall erneut gedruckt. Es ist
aber auch schon passiert (je nach Browser-Version?), dass eine zweite Rechnung
gebucht wurde.
Nun wird durch eine Hidden-Variable verhindert, dass der submit erneut
durchgeführt wird.

Das ist nur ein Hack. Eventuell ist es besser, das resubmit umzustellen auf:
- Druckdatei generieren
- per js zum Download anbieten und update-Triggern

Da ist aber einiges zu beachten durch die verschiedenen Ausgabetypen (media)
und $form->parse_template muss so umgestellt werden, dass es die Datei nicht
an den Browser schickt.
---
 templates/webpages/is/form_header.html | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/templates/webpages/is/form_header.html b/templates/webpages/is/form_header.html
index ec575dde0..b155850ab 100644
--- a/templates/webpages/is/form_header.html
+++ b/templates/webpages/is/form_header.html
@@ -18,6 +18,7 @@
 <input type="hidden" name="follow_up_trans_info_1" id="follow_up_trans_info_1" value="[% HTML.escape(follow_up_trans_info) %]">
 <input type="hidden" name="follow_up_rowcount" id="follow_up_rowcount" value="1">
 <input type="hidden" name="lastmtime" id="lastmtime" value="[% HTML.escape(lastmtime) %]">
+<input type="hidden" name="already_printed_flag" id="already_printed_flag" value="0">
 
 <h1>[% title %]</h1>
 
@@ -331,8 +332,11 @@
        kivi.SalesPurchase.show_print_dialog();
        kivi.SalesPurchase.print_record();
 [% ELSIF resubmit %]
-       kivi.SalesPurchase.show_print_dialog();
-       kivi.SalesPurchase.print_record();
+       if ($('#already_printed_flag').val() === "0") {
+         kivi.SalesPurchase.show_print_dialog();
+         kivi.SalesPurchase.print_record();
+         $('#already_printed_flag').val("1");
+       }
 [% ELSIF creditwarning != '' %]
        alert('[% 'Credit Limit exceeded!!!' | $T8 %]');
 [% ELSE %]
-- 
2.20.1