treat claims never checked out like claims returned for summary display and checkout... collab/phasefx/claimed_never_cko
authorJason Etheridge <jason@esilibrary.com>
Tue, 2 Aug 2011 03:43:23 +0000 (23:43 -0400)
committerJason Etheridge <jason@esilibrary.com>
Tue, 2 Aug 2011 14:10:29 +0000 (10:10 -0400)
Signed-off-by: Jason Etheridge <jason@esilibrary.com>
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm
Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/actor.pm
Open-ILS/xul/staff_client/server/patron/items.js
Open-ILS/xul/staff_client/server/patron/summary.js
Open-ILS/xul/staff_client/server/patron/summary_overlay.xul

index 7b621a9..abbd83a 100644 (file)
@@ -3111,7 +3111,7 @@ SELECT  usr,
             CASE
                 WHEN (
                     ((fine_interval >= '1 day' AND due_date >= 'today') OR (fine_interval &lt; '1 day'  AND due_date > 'now'))
-                    AND (stop_fines IS NULL OR stop_fines NOT IN ('LOST','CLAIMSRETURNED','LONGOVERDUE'))
+                    AND (stop_fines IS NULL OR stop_fines NOT IN ('LOST','CLAIMSRETURNED','CLAIMSNEVERCHECKEDOUT','LONGOVERDUE'))
                 ) THEN 1
                 ELSE 0
             END
@@ -3121,7 +3121,7 @@ SELECT  usr,
             CASE
                 WHEN (
                     ((fine_interval >= '1 day' AND due_date &lt; 'today') OR (fine_interval &lt; '1 day'  AND due_date &lt; 'now'))
-                    AND (stop_fines IS NULL OR stop_fines NOT IN ('LOST','CLAIMSRETURNED','LONGOVERDUE'))
+                    AND (stop_fines IS NULL OR stop_fines NOT IN ('LOST','CLAIMSRETURNED','CLAIMSNEVERCHECKEDOUT','LONGOVERDUE'))
                 ) THEN 1
                 ELSE 0
             END
@@ -3129,6 +3129,7 @@ SELECT  usr,
 
         SUM( CASE WHEN (xact_finish IS NULL AND stop_fines = 'LOST') THEN 1 ELSE 0 END) AS lost,
         SUM( CASE WHEN (xact_finish IS NULL AND stop_fines = 'CLAIMSRETURNED') THEN 1 ELSE 0 END) AS claims_returned,
+        SUM( CASE WHEN (xact_finish IS NULL AND stop_fines = 'CLAIMSNEVERCHECKEDOUT') THEN 1 ELSE 0 END) AS claims_never_checked_out,
         SUM( CASE WHEN (xact_finish IS NULL AND stop_fines = 'LONGOVERDUE') THEN 1 ELSE 0 END) AS long_overdue
   FROM  action.circulation
   WHERE checkin_time IS NULL
@@ -3140,6 +3141,7 @@ SELECT  usr,
             <field reporter:label="Overdue" name="overdue" reporter:datatype="text"/>
             <field reporter:label="Lost" name="lost" reporter:datatype="text"/>
             <field reporter:label="Claims Returned" name="claims_returned" reporter:datatype="text"/>
+            <field reporter:label="Claims Never Checked Out" name="claims_never_checked_out" reporter:datatype="text"/>
             <field reporter:label="Long Overdue" name="long_overdue" reporter:datatype="text"/>
         </fields>
         <links>
@@ -3153,7 +3155,7 @@ SELECT  usr,
             CASE
                 WHEN (
                     ((fine_interval >= '1 day' AND due_date >= 'today') OR (fine_interval &lt; '1 day'  AND due_date > 'now'))
-                    AND (stop_fines IS NULL OR stop_fines NOT IN ('LOST','CLAIMSRETURNED','LONGOVERDUE'))
+                    AND (stop_fines IS NULL OR stop_fines NOT IN ('LOST','CLAIMSRETURNED','CLAIMSNEVERCHECKEDOUT','LONGOVERDUE'))
                 ) THEN id
                 ELSE 0
             END
@@ -3163,7 +3165,7 @@ SELECT  usr,
             CASE
                 WHEN (
                     ((fine_interval >= '1 day' AND due_date &lt; 'today') OR (fine_interval &lt; '1 day'  AND due_date &lt; 'now'))
-                    AND (stop_fines IS NULL OR stop_fines NOT IN ('LOST','CLAIMSRETURNED','LONGOVERDUE'))
+                    AND (stop_fines IS NULL OR stop_fines NOT IN ('LOST','CLAIMSRETURNED','CLAIMSNEVERCHECKEDOUT','LONGOVERDUE'))
                 ) THEN id
                 ELSE 0
             END
@@ -3171,6 +3173,7 @@ SELECT  usr,
 
         ARRAY_TO_STRING(ARRAY_ACCUM( CASE WHEN (xact_finish IS NULL AND stop_fines = 'LOST') THEN id ELSE 0 END),',') AS lost,
         ARRAY_TO_STRING(ARRAY_ACCUM( CASE WHEN (xact_finish IS NULL AND stop_fines = 'CLAIMSRETURNED') THEN id ELSE 0 END),',') AS claims_returned,
+        ARRAY_TO_STRING(ARRAY_ACCUM( CASE WHEN (xact_finish IS NULL AND stop_fines = 'CLAIMSNEVERCHECKEDOUT') THEN id ELSE 0 END),',') AS claims_never_checked_out,
         ARRAY_TO_STRING(ARRAY_ACCUM( CASE WHEN (xact_finish IS NULL AND stop_fines = 'LONGOVERDUE') THEN id ELSE 0 END),',') AS long_overdue
   FROM  action.circulation
   WHERE checkin_time IS NULL
@@ -3182,6 +3185,7 @@ SELECT  usr,
             <field reporter:label="Overdue" name="overdue" reporter:datatype="text"/>
             <field reporter:label="Lost" name="lost" reporter:datatype="text"/>
             <field reporter:label="Claims Returned" name="claims_returned" reporter:datatype="text"/>
+            <field reporter:label="Claims Never Checked Out" name="claims_never_checked_out" reporter:datatype="text"/>
             <field reporter:label="Long Overdue" name="long_overdue" reporter:datatype="text"/>
         </fields>
         <links>
index 1f0fa93..0c3c027 100644 (file)
@@ -1913,6 +1913,7 @@ sub _checked_out {
         overdue => [],
         lost => [],
         claims_returned => [],
+        claims_never_checked_out => [],
         long_overdue => []
     );
        my $meth = 'retrieve_action_open_circ_';
@@ -1924,6 +1925,7 @@ sub _checked_out {
             overdue => 0,
             lost => 0,
             claims_returned => 0,
+            claims_never_checked_out => 0,
             long_overdue => 0
         );
     } else {
index c638e1c..7a71f93 100644 (file)
@@ -85,7 +85,7 @@ sub usr_breakdown_out {
                     AND (  (fine_interval >= '1 day' AND due_date >= 'today')
                         OR (fine_interval < '1 day'  AND due_date > 'now'   ))
                     AND (stop_fines IS NULL
-                        OR stop_fines NOT IN ('LOST','CLAIMSRETURNED','LONGOVERDUE'))
+                        OR stop_fines NOT IN ('LOST','CLAIMSRETURNED','CLAIMSNEVERCHECKEDOUT','LONGOVERDUE'))
        SQL
 
        my $out = actor::user->db_Main->selectcol_arrayref($out_sql, {}, $usr);
@@ -119,6 +119,14 @@ sub usr_breakdown_out {
 
        my $cl = actor::user->db_Main->selectcol_arrayref($cl_sql, {}, $usr);
 
+       my $cl_sql2 = <<"       SQL";
+                       SELECT  id
+                         FROM  action.circulation
+                         WHERE usr = ? AND checkin_time IS NULL AND stop_fines = 'CLAIMSNEVERCHECKEDOUT'
+       SQL
+
+       my $cl2 = actor::user->db_Main->selectcol_arrayref($cl_sql2, {}, $usr);
+
        my $lo_sql = <<"        SQL";
                        SELECT  id
                          FROM  action.circulation
@@ -135,6 +143,7 @@ sub usr_breakdown_out {
                                        overdue => scalar(@$od),
                                        lost    => scalar(@$lost),
                                        claims_returned => scalar(@$cl),
+                                       claims_never_checked_out        => scalar(@$cl2),
                                        long_overdue            => scalar(@$lo),
                };
        }
@@ -143,6 +152,7 @@ sub usr_breakdown_out {
                                overdue => $od,
                                lost    => $lost,
                                claims_returned => $cl,
+                               claims_never_checked_out => $cl2,
                                long_overdue            => $lo,
        };
 }
index e640f1e..a325082 100644 (file)
@@ -874,6 +874,7 @@ patron.items.prototype = {
                 obj.checkouts = obj.checkouts.concat( robj.out );
                 obj.checkouts2 = obj.checkouts2.concat( robj.lost );
                 obj.checkouts2 = obj.checkouts2.concat( robj.claims_returned );
+                obj.checkouts2 = obj.checkouts2.concat( robj.claims_never_checked_out );
                 obj.checkouts2 = obj.checkouts2.concat( robj.long_overdue );
             }
             var robj = obj.network.simple_request(
@@ -885,6 +886,7 @@ patron.items.prototype = {
             } else {
                 obj.checkouts2 = obj.checkouts2.concat( robj.lost );
                 obj.checkouts2 = obj.checkouts2.concat( robj.claims_returned );
+                obj.checkouts2 = obj.checkouts2.concat( robj.claims_never_checked_out );
                 obj.checkouts2 = obj.checkouts2.concat( robj.long_overdue );
             }
         }
index 55ad634..a33f182 100644 (file)
@@ -369,6 +369,7 @@ patron.summary.prototype = {
                                 var e4 = document.getElementById( 'patron_long_overdue' ); if (e4) util.widgets.set_text(e4,'...');
                                 var e5 = document.getElementById( 'patron_lost' ); if (e5) util.widgets.set_text(e5,'...');
                                 var e6 = document.getElementById( 'patron_noncat' ); if (e6) util.widgets.set_text(e6,'...');
+                                var e7 = document.getElementById( 'patron_claimed_never_checked_out' ); if (e7) util.widgets.set_text(e7,'...');
                                 var under_btn; 
                                 if (xulG) {
                                     if (xulG.display_window) {
@@ -383,14 +384,17 @@ patron.summary.prototype = {
                                         try {
                                             var robj = req.getResultObject();
                                             var do_not_tally_claims_returned = String( obj.OpenILS.data.hash.aous['circ.do_not_tally_claims_returned'] ) == 'true';
+                                            // we'll include claims_never_checked_out in our consideration of this setting
                                             util.widgets.set_text(e,
                                                 robj.out
                                                 + robj.overdue
                                                 + (do_not_tally_claims_returned ? 0 : robj.claims_returned)
+                                                + (do_not_tally_claims_returned ? 0 : robj.claims_never_checked_out)
                                                 + robj.long_overdue
                                             );
                                             if (e2) util.widgets.set_text(e2, robj.overdue    );
                                             if (e3) util.widgets.set_text(e3, robj.claims_returned    );
+                                            if (e7) util.widgets.set_text(e7, robj.claims_never_checked_out    );
                                             if (e4) util.widgets.set_text(e4, robj.long_overdue    );
                                             if (e5) util.widgets.set_text(e5, robj.lost    );
                                             if (under_btn) util.widgets.set_text(under_btn, 
@@ -398,6 +402,7 @@ patron.summary.prototype = {
                                                     robj.out
                                                     + robj.overdue
                                                     + (do_not_tally_claims_returned ? 0 : robj.claims_returned)
+                                                    + (do_not_tally_claims_returned ? 0 : robj.claims_never_checked_out)
                                                     + robj.long_overdue
                                                 ) 
                                                 /* + ( robj.overdue > 0 ? '*' : '' ) */
index a0d7deb..2b7773a 100644 (file)
             <label id="PatronSummaryStatus_claimed_returned_label" value="&staff.patron.summary_overlay.claimed_returned.value;" class="copyable text_right items_long_overdue label subgroup" />
             <description id="patron_claimed_returned" class="copyable items_claimed_returned value subgroup" />
         </row>
+        <row id="pdsgr7a">
+            <label id="PatronSummaryStatus_claimed_never_checked_out_label" value="&staff.patron.summary_overlay.claimed_never_checked_out.value;" class="copyable text_right items_long_overdue label subgroup" />
+            <description id="patron_claimed_never_checked_out" class="copyable items_claimed_never_checked_out value subgroup" />
+        </row>
         <row id="pdsgr6">
             <label id="PatronSummaryStatus_lost_label" value="&staff.patron.summary_overlay.lost_label.value;" class="copyable text_left items_lost label"/>
             <description id="patron_lost" class="copyable items_lost value"/>