From: erickson Date: Sun, 9 Mar 2008 01:03:32 +0000 (+0000) Subject: initial checkouts-by-circ-mods support X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=336c13e818afb81a3e844dff63d81f5ce4386d8e;p=Evergreen.git initial checkouts-by-circ-mods support git-svn-id: svn://svn.open-ils.org/ILS/trunk@8930 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/javascript/backend/circ/circ_lib.js b/Open-ILS/src/javascript/backend/circ/circ_lib.js index a39794bc6a..621e45363e 100644 --- a/Open-ILS/src/javascript/backend/circ/circ_lib.js +++ b/Open-ILS/src/javascript/backend/circ/circ_lib.js @@ -205,7 +205,12 @@ function hasCommonAncestor( org1, org2, depth ) { return false; } - +/* returns a dictionary of circmod : count for checked out items */ +function checkoutsByCircModifier(userid) { + var key = scratchKey(); + __OILS_FUNC_userCircsByCircmod(scratchPad(key), userid); + return getScratch(key); +} /* useful for testing */ function die(msg) { diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Circ/ScriptBuilder.pm b/Open-ILS/src/perlmods/OpenILS/Application/Circ/ScriptBuilder.pm index 41ab511ee0..3f8d46f3bc 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Circ/ScriptBuilder.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Circ/ScriptBuilder.pm @@ -390,6 +390,45 @@ sub insert_user_funcs { return $val; } ); + + $runner->insert(__OILS_FUNC_userCircsByCircmod => + sub { + my( $write_key, $userid ) = @_; + + # this bug ugly thing generates a count of checkouts by circ_modifier + my $query = { + "select" => { + "acp" => ["circ_modifier"] + "circ"=>[{ + "aggregate"=>1, + "transform"=>"count", + "alias"=>"count", + "column"=>"id" + }], + }, + "from"=>{"acp"=>{"circ"=>{"field"=>"target_copy","fkey"=>"id"}}}, + "where"=>{ + "+circ"=>{ + "checkin_time"=>undef, + "usr"=>$userid, + "-or"=>[ + {"stop_fines"=>["LOST","LONGOVERDUE","CLAIMSRETURNED"]}, + {"stop_fines"=>undef} + ] + } + } + }; + + my $mods = $e->json_query($query); + my $breakdown = {}; + $breakdown->{$_->{circ_modifier}} = $_->{count} for @$mods; + use OpenSRF::Utils::JSON; + $logger->info("script_runner: Loaded checkouts by circ_modifier breakdown:". + OpenSRF::Utils::JSON->perl2JSON($breakdown)); + $runner->insert($write_key, $breakdown, 1) if (keys %$breakdown); + } + ); + }