Mike Rylander [Fri, 30 Jan 2015 18:05:26 +0000 (13:05 -0500)]
LP#1402797 Be explicit about which direction users are moving between groups, and provide an informational message when none are selected but should be
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Bill Erickson <berickxx@gmail.com>
This adds an interface for managing copy buckets, including
adding and removing them, adding items to a pending list and to
copy buckets by barcode, and removing items from a bucket.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Jason Stephenson [Wed, 18 Feb 2015 16:34:53 +0000 (11:34 -0500)]
LP#957466: A simpler version of set_marc_905u.
This version only adds a 905$u if none already exist in the document. It
does so by creating a new 905 tag with subfield u. It does not add on
to any possibly existing 905 tag that does not have a subfield u.
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Dan Wells <dbw2@calvin.edu>
When editing a MARC record in Vandelay or MFHD holdings in a popup XUL
WIndow, a tab is NULL error is presented to the user.
This happens because an undefined variable is being used when it should
not be. This code adds a check for that variable to ensure it exists
before using it. The variable used only matters in cases where tabs are
present, which is not the case with pop up MARC edit windows, so
ignoring the variable in these cases is fine.
Signed-off-by: Liam Whalen <liam.whalen@bc.libraries.coop> Signed-off-by: Jason Stephenson <jstephenson@mvlc.org> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Galen Charlton [Mon, 23 Feb 2015 20:25:02 +0000 (20:25 +0000)]
LP#1154579: explicitly alert if copy location failed to be deleted
This patch adds an alert if the act of deleting a copy
location in the staff interface fails -- which would
most commonly happen if there are still active items
attached to the location to be deleted.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Galen Charlton [Mon, 23 Feb 2015 21:03:41 +0000 (21:03 +0000)]
LP#1423813: adjust some queries to account for deleted copy locations
This patch adjusts some queries so that if a copy location
is deleted, any undeleted items that are attached to it
are considered deleted for the purpose of generating
OPAC item lists and seeing if items are potentially available
to fill hold request.
It should be noted that if a copy location is marked as
logically deleted, there shouldn't be any undeleted
copies associated with it. However, as this condition is not
presently enforced by a database contraint, adding additional
checks on acpl.deleted provides some additional defense.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Galen Charlton [Thu, 5 Feb 2015 16:52:36 +0000 (16:52 +0000)]
LP#904581: when calculating hold status, be more careful about fetching transits
This patch fixes a problem where if a hold meets the following
criteria, an "Invalid date format: at /usr/share/perl5/Error.pm"
error can be thrown when fetching its details:
- the hold has a captured item
- the captured item has status 8 (on hold shelf)
- there is another item that is currently in transit to fill the hold
- the pickup library (or one of its ancestors) has the
circ.hold_shelf_status_delay library setting set.
Signed-off-by: Galen Charlton <gmc@esilibrary.com> Signed-off-by: Ben Shum <bshum@biblio.org>
Kathy Lussier [Fri, 20 Feb 2015 14:03:13 +0000 (09:03 -0500)]
LP1423922: Quick staff option to place another hold
When a hold is successful in the staff client, provide a link to place another
hold on the same title. This is a time savings for staff when placing holds
for multiple patrons on a newly-added title or when doing book club requests.
Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Ben Shum <bshum@biblio.org>
Very simplistic markup for now, just the basic http://ogp.me
requirements of title, url, image, and type (and we're reusing
the schema.org type in the short term).
Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Galen Charlton [Fri, 20 Feb 2015 17:15:59 +0000 (17:15 +0000)]
LP#1410369: fix (old) thinko in A/T environment builder
If a label is set for a piece of the environment, e.g.,
[qw/foo bar/], ensure that we end up with $self->environment->{foo}{bar},
not $self->environment->{foo}{bar}{bar}
Galen Charlton [Thu, 19 Feb 2015 19:38:19 +0000 (19:38 +0000)]
LP#1410369: add a new view to restrict arbitrary editing access
The previous commit now allows owning_user in fm_IDL.xml to
specify that patrons can access their own messages, saving
the need to write some copy-and-paste middle-layer code.
However, we don't necessarily want a patron who figures
out how to use pcrud directly to change the content
of messages that are sent to them. To avoid that, this
patch adds a new view, actor.usr_message_limited, that is
allows updates of the read_date and deleted columns in
the underlying table, but nothing else.
Galen Charlton [Wed, 18 Feb 2015 23:41:10 +0000 (23:41 +0000)]
LP#1410369: AutoGrid-based staff interface for viewing patron messages
Falling as this does between the introduction of the web staff
interface and its production use, this patch implements a
quick AutoGrid interface for viewing patron messages from
the staff side.
Galen Charlton [Wed, 18 Feb 2015 22:17:46 +0000 (22:17 +0000)]
LP#1410369: update TPAC dashboard counts as needed
This factors the lookup of TPAC dashboard/"vital" stats
to a separate routine and invokes it a couple more times
as needed during patron message processing that can
affect the count of unread messages.
Galen Charlton [Wed, 18 Feb 2015 21:39:48 +0000 (21:39 +0000)]
LP#1410369: add open-ils.actor method for fetching user messages
This patches adds open-ils.actor.message.retrieve as an
authenticated, public-router visible method for fetching
patron messages belong to the authenticated user. This
method exists, at present, solely for the benefit of potential
third-party API users; TPac itself uses pcrud.
This patch adds My Account tab in TPac for
displaying and managing patron messages. In particular,
a logged in patron will be able to:
- see a list of their (undeleted) messages
- open a particular message and see it's body;
doing this automatically marks the message as
read
- delete messages from either the list or
single-message views
- mark messages as unread from the list or
single-message views
- mark messages as read from the list view
Galen Charlton [Wed, 18 Feb 2015 13:52:06 +0000 (13:52 +0000)]
LP#1410369: remove direct display of user notes from TPac
This is supplanted by the new patron message center
page; note that during schema upgrade, existing
public user notes are converted to patron messages.
Mike Rylander [Mon, 16 Feb 2015 19:07:57 +0000 (14:07 -0500)]
LP#1410369: Create user messages when configured to do so
When an A/T definition has both message_usr_path and message_template
defined, we gather the user, sending lib, template, and title and push those
into the environment. After the user-defined reactor has successfully run,
we pass the environment off to a special-purpose handler that generates
output for actor.usr_message.message and, upon success of that, we insert
the user message into the database.
This commit adds the table actor.usr_message,
a trigger to populate actor.usr_message as rows
get adding to actor.usr_note (or get updated to make
non-public notes become public), and new columns in
action.event_definition for specifying how to generate
user messages from A/T events.
It also copies over existing public user notes as
new, "read" user messages, as the current display
of the old user notes will be removed from TPac.
* The latest fine generator uses ID-based transaction lookup.
Avoid calling ->to_fieldmapper on IDs.
* Consistent with the previous fine generator code, handle each circ,
reservation, etc. within its own transaction to avoid any long-running
transactions.
* cstore expects order_by's to be delineated by object class
* CStoreEditor requires all params that are passed through to cstore to
be contained within the first parameter to a search_*, etc. calls, so
wrap the query and order_by clauses in an array.
Without these changes, the fine generator would generate duplicate
billings when voided billings were present.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Dan Wells [Tue, 17 Feb 2015 23:00:09 +0000 (18:00 -0500)]
LP#1198465 Restore skipping of lost-returned overdue generation
We need overdues generated before the conditional negative balances
code runs, so we also need to check the setting to skip handling of
lost-zero-balance earlier on.
This code also slightly refactors the "skip" checks to a single point
in the lost handling code.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Allows circulation code to generate fines within the main circulation
database transaction.
Squahed commits:
LP#1198465 Initial copy of generate_fines to CircCommon.pm
Copy over generate_fines, including the necessary 'ceil' and $parser
bits, and the seconds_to_interval_hash helper function.
LP#1198465 First pass at generate_fines cstore conversion
Broadly speaking, this commit does two things:
1) Rewrite bits of the generate_fines copy in CircCommon.pm to use
cstore in place of the DBI code bits.
2) Gut the old generate_fines in Publisher/action.pm, including helper
bits, then make it a wrapper for the CircCommon verison.
This is a rough pass, but works in basic testing.
LP#1198465 Make generate_fines() chattiness optional
The old storage generate_fines() was really chatty with it's client. We
generally won't want that, so make it optional.
Also, remove one response which I added earlier while debugging.
LP#1198465 Stop using storage wrapper for generate_fines()
With pieces now in place, let's stop using the storage wrapper for
generate_fines() and call the code directly.
Also, to avoid potential confusion, rename the calling function in
Circulate.pm from generate_fines() to handle_fines(). This function
may also be taking on more than just fine generation in the near future.
Finally, since the new generate_fines() expects one or more pre-filtered
circ objects, add the requisite stop_fines check to handle_fines().
LP#1198465 Put penalty generation in the same xact
The penalties need to "see" any fines we may have just added, so they
need to happen in the same transaction. Passing in the optional editor
makes this an easy fix.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Bill Erickson <berickxx@gmail.com>