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>
The generate_fines() method was split back in 2010. There is some
concern about the speed of checkin (e.g. via SIP for a sorter, where we
don't care about fines), and this may have been the reason for the
split. It might also have been the fact that waiting for the storage
xact to finish was causing the circ xact to timeout.
In any case, since we are bringing them into the same xact now, reason
number 2 is invalid, and reason number 1 won't be helped by the split
anymore (since there is no longer any parallel action). Let's bring it
back together.
Ultimately, as suggested by Mike, we will probably want to refactor a
bit and return a streaming response for sorting location, then a final
response once we have the fine generation figured out.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Dan Wells [Wed, 3 Dec 2014 19:21:16 +0000 (14:21 -0500)]
LP#1198465 Allow null fields to stay null in to_fieldmapper()
In CDBI.pm, we can convert DB objects to Fieldmapper objects using
to_fieldmapper(). Part of the conversion was forcing stringification,
which does what we need for nested objects, but also converts 'nulls'
(undefineds) to 'empty' values. This causes problems when trying to
write these Fieldmapper objects back to the DB using cstore (or the
like).
This commit simply lets undefined values stay that way, which in turn
prevents NULLs from trying to become empty strings in the DB.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Generate overdue fines for lost checkins (if configured) within the main
body of the checkin transaction to avoid complications with negative
balance reconciliation.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Dan Wells <dbw2@calvin.edu>
Conflicts:
Open-ILS/src/perlmods/lib/OpenILS/Application/Circ/Circulate.pm
Ignoring introduction of bug for overdue catch-up on lost item return,
as it will be easier to restore later on.
Signed-off-by: Dan Wells <dbw2@calvin.edu> Signed-off-by: Bill Erickson <berickxx@gmail.com>
Galen Charlton [Tue, 7 Oct 2014 03:56:13 +0000 (20:56 -0700)]
LP#1378169: make context OU selector on funds page sticky
This patch uses local storage to persist the selected value of the
context OU selector on the funds page. This is meant to ease
workflows where an acquisitions administrator needs to frequently
transfer money between funds that are attached to children of
a system-level OU. Specifically, rather than defaulting to
the user's workstation OU, the selector will default to the
OU selected the last time the funds page was opened.
Steven Chan [Mon, 22 Jul 2013 19:39:48 +0000 (12:39 -0700)]
LP#1418772: Avoid internal server error on viewing full record when copy create_date is null
In the TPAC client, when it tries to show record details containing a copy
record with no create date, it shows an Internal Server Error instead.
1. The error is caused by trying to execute the parse_datetime() method
in the parse_date() function in the WWW/EGCatLoader/util.pm module with
an empty date string. The function will normally translate a datetime
string from the database to a datetime string that is formatted for TPAC
templates. The fix is to not execute parse_datetime() and just return
an empty string.
2. In the record/copy_table.tt2 template, if an empty datetime string is
the value for copy_info.create_date, the format() method of the Date
plugin will show the current datetime by default. The fix is to show '-'
in its place, replicating the same template logic as for
copy_info.due_date.
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
Conflicts:
Open-ILS/src/templates/opac/parts/record/copy_table.tt2
Chris Sharp [Mon, 9 Feb 2015 14:24:11 +0000 (09:24 -0500)]
LP#1419813 Fix default joins for config.rule_age_hold_protection.
config.rule_age_hold_protection had a "has_a" relationship
to several copy and copy-like sources when age protection
is optional. Changing those to "might_have" to allow left
joins by default.
Signed-off-by: Chris Sharp <csharp@georgialibraries.org> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Jason Boyer [Fri, 5 Sep 2014 14:16:26 +0000 (10:16 -0400)]
LP1366026: Add Active Date to Record Detail Page
Display active date in place of create date when
item circ_lib uses active date for hold age
protection calculations.
Signed-off-by: Jason Boyer <jboyer1@library.in.gov> Signed-off-by: Michele Morgan <mmorgan@noblenet.org>
Conflicts:
Open-ILS/src/templates/opac/parts/record/copy_table.tt2
Kathy Lussier [Tue, 17 Feb 2015 03:06:01 +0000 (22:06 -0500)]
lp1422555: Shorter permalink on record summary page
The record summary page will now offer a link to a shorter permalink with
most URL parameters removed. The locg and copy-depth parameters are maintained.
In the picklist / PO lineitem list view, display the number of existing
catalog copies owned at or below the PO ordering agency or Picklist org
unit whose status is not in some form of lost or missing.
Value is displayed beside the lineitem ID and is styled bold/red if the
count is greater than zero.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
When changing the name of an existing PO, if the selected name collides
w/ another PO at or below the ordering agency, a warning is shown to
the user, including a link to the matching PO, and the name change is
aborted.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Adds support for entering a PO name at PO creation time, both from the
picklist page and from the PO create page. If a name is entered which
matches the name of an existing PO at or below the ordering agency, a
link to the matching PO is shown and the user is prevented from creating
the PO until the name is changed or cleared.
Signed-off-by: Bill Erickson <berick@esilibrary.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Yamil Suarez [Tue, 17 Feb 2015 19:29:46 +0000 (14:29 -0500)]
LP#1403967: show 'subject heading thesaurus' value in Manage Authorities results
The 'subject heading thesaurus' basically defines the issuing authority
that created the authority record. For example, a value of "a" means that
it came from LoC. A value of "n" means that it is a locally created
authority. Note that within the authority MARC editor the 'Subject
Heading Thesaurus' is stored/displayed in the 'Subj' fixed field.
Signed-off-by: Yamil Suarez <yamil@yamil.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
After selecting a bib attribute to view then attempting to create an
authority record attribute, the editor would get confused and think it
was trying to update an existing attribute. This clears the "we are
editing attr X" flag so create will create instead of update.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Adds support for building and using authority match sets in vandelay for
import record matching. Match sets include MARC tag/subfield matching
and normalized authority heading + thesaurus matching.
Commit also contains various small Vandelay UI repairs related to
displaying authority queues and matches.
Signed-off-by: Bill Erickson <berickxx@gmail.com> Signed-off-by: Mike Rylander <mrylander@gmail.com>
Remington Steed [Mon, 13 Oct 2014 16:22:32 +0000 (12:22 -0400)]
LP#957466: Update editor/edit_date/source on overlay
This commit does three things.
1. It removes some declared variables that are never used in this
function.
2. It updates the bib record edit_date field (along with the editor) if
an editor is found in the MARC. If an editor is not found (or doesn't
match an Evergreen user), it seems best to leave the edit_date
unchanged so as not to imply that the previous editor is responsible for
the newest edit.
3. If a bib source is chosen in the vandelay importer UI, it updates the
bib record with the source. To access this field, the reference to table
"queued_record" is replaced by its child table "queued_bib_record".
Since the new table is a child of the other, all of the other needed
values are still available.
Mike Rylander [Tue, 10 Feb 2015 15:46:20 +0000 (10:46 -0500)]
LP#1413592: Avoid generating fines in "consider zero balance closed" mode
We will now also disable the behavior triggered by the "Lost Checkin
Generates New Overdues" org setting when the new "Do not change fines/fees
on zero-balance LOST transaction" org setting is enabled. This is to follow
the new rule that the new setting creates: a zero-balance LOST transaction is
considered handled, and should not be changed by the system.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Mike Rylander [Wed, 28 Jan 2015 13:40:20 +0000 (08:40 -0500)]
LP#1413592: Don't change lost/long-overdue fines/fees on zero-balance
The situation that has been reported as the worst offender for creating
negative balances for folks that do not want that to happen goes like this:
1) Item is lost or goes long-overdue
2) Fees/fines charged
3) Said fees/fines are paid in full
4) Item is found and returned
4a) "Void fines and fees on lost item return" settings are enabled
4b) "Reinstate overdue fines on lost item return" setting is enabled
4c) System dutifully voids the lost fines/fees
4d) System dutifully reinstates the overdue fines
So we add an YAOUS to ensure that when a lost item is returned and the
balance of the transaction is exactly $0, the lost fines and fees are not
voided EVEN IF "void fines and fees on lost/long-overdue return" settings are
enabled, and voided overdue fees are likewise not reinstated EVEN IF
"restore overdue on lost/long-overdue return" settings are enabled.
The reason for the second condition is that the point of this new setting is
to have Evergreen consider zero-balance lost/long-overdue transactions as
"handled", and that they should not automatically change.
Signed-off-by: Mike Rylander <mrylander@gmail.com> Signed-off-by: Kathy Lussier <klussier@masslnc.org>
Ben Shum [Mon, 16 Feb 2015 09:24:29 +0000 (04:24 -0500)]
LP#1410532: Follow-up to fix config option for "Show more details"
Somehow we got two entries in config.tt2 for the "Show more details". Remove
one of these so that there's no confusion over how the variable is set and
applied.
Art Rhyno [Mon, 13 Aug 2012 21:22:17 +0000 (17:22 -0400)]
LP#1410532: TPAC - Make "Show more details" in results optional
Academic sites typically handle a lot of electronic content and want to
bring most details about entries, such as availability, status, and
URLs, on a results screen to the front.
This adds a 'show_more_details.default' option in 'config.tt2' that can
have the values 'true', 'false' and 'hide'. The 'true' and 'false'
values set the default for the button to more and less respectively, and
'hide' suppresses the button from showing at all.
Signed-off-by: Art Rhyno <art632000@yahoo.ca> Signed-off-by: Dan Scott <dscott@laurentian.ca> Signed-off-by: Ben Shum <bshum@biblio.org>