JBAS-2101 Lost payment forces print dialog, uses default context
authorBill Erickson <berickxx@gmail.com>
Thu, 8 Nov 2018 17:22:02 +0000 (12:22 -0500)
committerBill Erickson <berickxx@gmail.com>
Thu, 21 Mar 2019 19:46:23 +0000 (15:46 -0400)
Temporarily clear the silent print option when printing a lost/paid
reciept.  Send lost/paid receipts to the 'default' printer.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/xul/staff_client/server/patron/bill2.js

index 73831ca..915acc3 100644 (file)
@@ -938,8 +938,9 @@ function handle_printlostpaid() {
         var print = new util.print('mail');
 
         print.simple(html , {
-            no_prompt: false, // always prompt for lost payment receipts
-            content_type: 'text/html'
+            no_prompt: false,
+            content_type: 'text/html',
+            context: 'default'
         });
     }
 }
@@ -1319,11 +1320,37 @@ function print_refundable_payments_receipt(mrp_ids) {
         }
 
         var html = receipt.template_output().data();
-        JSAN.use('util.print'); var print = new util.print('mail');
+        JSAN.use('util.print'); 
+        var print = new util.print('mail');
+
+        // Temporarily override the forced silent print option for lost &
+        // paid receipts where we /always/ want to show the print dialog.
+        var prefs = Components.classes['@mozilla.org/preferences-service;1']
+            .getService(Components.interfaces['nsIPrefBranch']);
+
+        var silentPrintApplied = (
+            prefs.prefHasUserValue('print.always_print_silent')
+            && prefs.getBoolPref('print.always_print_silent')
+        );
+
+        if (silentPrintApplied) {
+            // Note setting the value to 'false' does not work.
+            prefs.clearUserPref('print.always_print_silent');
+        }
+
         print.simple(html , {
             no_prompt: false, // always prompt for lost payment receipts
-            content_type: 'text/html'
+            content_type: 'text/html',
+            context: 'default'
         });
+
+        if (silentPrintApplied) {
+            // Re-apply the silent print preference after the
+            // current thread is done.
+            setTimeout(function() {
+                prefs.setBoolPref('print.always_print_silent', true);
+            });
+        }
     }
 }