LP1904036 checkin; hold shelf slip
authorBill Erickson <berickxx@gmail.com>
Fri, 9 Apr 2021 21:29:00 +0000 (17:29 -0400)
committerGalen Charlton <gmc@equinoxOLI.org>
Fri, 28 Oct 2022 00:13:30 +0000 (20:13 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Signed-off-by: Jane Sandberg <js7389@princeton.edu>
Signed-off-by: Galen Charlton <gmc@equinoxOLI.org>
Open-ILS/src/eg2/src/app/staff/circ/checkin/checkin.component.css [new file with mode: 0644]
Open-ILS/src/eg2/src/app/staff/share/circ/route-dialog.component.ts
Open-ILS/src/sql/Pg/upgrade/XXXX.data.angular-patron.sql

diff --git a/Open-ILS/src/eg2/src/app/staff/circ/checkin/checkin.component.css b/Open-ILS/src/eg2/src/app/staff/circ/checkin/checkin.component.css
new file mode 100644 (file)
index 0000000..64d3930
--- /dev/null
@@ -0,0 +1,4 @@
+
+.badge {
+  font-size: 110%;
+}
index 9204bfc..36edfd5 100644 (file)
@@ -36,7 +36,7 @@ export class RouteDialogComponent extends DialogComponent {
         private org: OrgService,
         private circ: CircService,
         private audio: AudioService,
-        private print: PrintService,
+        private printer: PrintService,
         private serverStore: ServerStoreService) {
         super(modal);
     }
@@ -46,11 +46,9 @@ export class RouteDialogComponent extends DialogComponent {
         // But in some cases we still have to collect the data
         // for printing.
 
-console.warn('ROUTE DIALOG OPEN');
         return from(this.applySettings())
 
         .pipe(concatMap(exit => {
-console.warn('ROUTE DIALOG 2');
             if (exit) {
                 return of(exit);
             } else {
@@ -59,11 +57,9 @@ console.warn('ROUTE DIALOG 2');
         }))
 
         .pipe(concatMap(exit => {
-console.warn('ROUTE DIALOG 3');
             if (exit) {
                 return of(exit);
             } else {
-console.warn('ROUTE DIALOG 4');
                 return super.open(ops);
             }
         }));
@@ -110,7 +106,7 @@ console.warn('ROUTE DIALOG 4');
         if (this.checkin.params.auto_print_hold_transits
             || this.circ.suppressCheckinPopups) {
             // Print and exit.
-            return this.printTransit().then(_ => true); // exit
+            return this.print().then(_ => true); // exit
         }
 
         return promise.then(_ => false); // keep going
@@ -147,8 +143,17 @@ console.warn('ROUTE DIALOG 4');
         .then(_ => this.noAutoPrint[this.slip]);
     }
 
-    printTransit(): Promise<any> {
-        return null;
+    print(): Promise<any> {
+        this.printer.print({
+            templateName: this.slip,
+            contextData: {checkin: this.checkin},
+            printContext: 'default'
+        });
+
+        this.close();
+
+        // TODO printer.print() should return a promise
+        return Promise.resolve();
     }
 }
 
index 60e0512..be025b8 100644 (file)
@@ -19,7 +19,6 @@ eg.circ.patron.holds.prefetch
 eg.grid.circ.patron.holds
 
 holds_for_patron print template
-*/
 
 
 -- insert then update for easier iterative development tweaks
@@ -283,6 +282,72 @@ UPDATE config.print_template SET template = $TEMPLATE$
 
 $TEMPLATE$ WHERE name = 'patron_data';
 
+
+INSERT INTO config.print_template 
+    (name, label, owner, active, locale, content_type, template)
+VALUES ('hold_shelf_slip', 'Hold Shelf Slip', 1, TRUE, 'en-US', 'text/html', '');
+
+*/
+
+UPDATE config.print_template SET template = $TEMPLATE$
+[% 
+  USE date;
+  USE money = format('$%.2f');
+  SET copy = template_data.checkin.copy;
+  SET hold = template_data.checkin.hold;
+  SET volume = template_data.checkin.volume;
+  SET hold = template_data.checkin.hold;
+  SET record = template_data.checkin.record;
+  SET patron = template_data.checkin.patron;
+%] 
+
+<div>
+  [% IF hold.behind_desk == 't' %]
+    This item needs to be routed to the <strong>Private Holds Shelf</strong>.
+  [% ELSE %]
+    This item needs to be routed to the <strong>Public Holds Shelf</strong>.
+  [% END %]
+</div>
+<br/>
+
+<div>Barcode: [% copy.barcode %]</div>
+<div>Title: [% record.title %]</div>
+<div>Call Number: [% volume.prefix.label %] [% volume.label %] [% volume.suffix.label %]</div>
+
+<br/>
+
+<div>Hold for patron: [% patron.family_name %], 
+  [% patron.first_given_name %] [% patron.second_given_name %]</div>
+<div>Barcode: [% patron.card.barcode %]</div>
+
+[% IF hold.phone_notify %]
+  <div>Notify by phone: [% hold.phone_notify %]</div>
+[% END %]
+[% IF hold.sms_notify %]
+  <div>Notify by text: [% hold.sms_notify %]</div>
+[% END %]
+[% IF hold.email_notify %]
+  <div>Notify by email: [% patron.email %]</div>
+[% END %]
+
+[% FOR note IN hold.notes %]
+  <ul>
+  [% IF note.slip == 't' %]
+    <li><strong>[% note.title %]</strong> - [% note.body %]</li>
+  [% END %]
+  </ul>
+[% END %]
+<br/>
+
+<div>Request Date: [% 
+  date.format(helpers.format_date(hold.request_time, staff_org_timezone), '%x %r') %]</div>
+<div>Slip Date: [% date.format(date.now, '%x %r') %]</div>
+<div>Printed by [% staff.first_given_name %] at [% staff_org.shortname %]</div>
+
+</div>
+
+$TEMPLATE$ WHERE name = 'hold_shelf_slip';
 COMMIT;