* added POD
* removed optional $barcode argument - in all cases,
itemnumber is known, and we should stick with
itemnumber when retrieving an existing item
* use ModItem to do the update so that indexer
will know to reindex bib - otherwise, can't
do an accurate search of items that are on
the shelving cart.
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
Allows temporary locations corresponding to 'in processing' and 'shelving'
so that newly-created items, and newly-returned items do not show
immediately as a available. Three new system preferences govern the usage
of these features.
NewItemsDefaultLocation. If system pref NewItemsDefaultLocation is set to a location code,
all newly catalogued items will be set to the location set in this preference.
Location code must be a valid LOC authorized value type.
InProcessingToShelvingCart. if the system pref InProcessingToShelvingCart is turned on,
any items run through returns.pl with a location code for 'PROC', will be modified to
have a new location code of 'CART'.
ReturnToShelvingCart. If the syspref ReturnToShelvingCart is turned on,
all items returned other than confirmed holds will have a new location code of 'CART'.
Any item issued is automatically taken of the shelving cart.
Adds a cron script shelf_to_cart.pl which should be run hourly.
Updates all items with a location of CART to the item's permanent location.
The original location code is stored in the new items column 'permanent_location'.
Original Author: PTFS Contractor <dbavousett@ptfs.com>
This work co-sponsored by
Middletown Township Public Library, Middletown, NJ USA and
East Brunswick Public Library, East Brunswick, NJ USA
Signed-off-by: Colin Campbell <colin.campbell@ptfs-europe.com>
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
If IndependantBranches is ON and user attempts to return an
item at a library other than the item's home library, bail out.
This action, which was previously just a suggestion in the code,
is now required to ensure that the item doesn't get its
holdingbranch set to the library at which the attempt to return
the item was made.
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
Prior to this patch, this was done only when returning
an item after it had been out on loan. Even if the
item had not been on loan, the fact that it was checked
in means that it is now in fact at the new holding library.
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
Make _GetCircControlBranch() default to the item's home library
in the case where it otherwise would have returned the item's
holding library but that field is null.
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
New name is _GetCircControlBranch so as not to confuse
the library that a circulation transaction is taking
place at with the library that is supposed to control
circulation policy lookup.
Also fixed formatting errors in _GetCircControlBranch.
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
This patch add the use of CircControl and HomeOrHoldingBranch for return and transfert rules.
* ItemHomeLibrary goes to item{HomeOrHoldingBranch}
* PatronLibrary goes to the borrower library
* PickupLibrary depends where the items was checked out, and the actual library.
This add a little improvment that does not re-request each time the circcontrol syspref.
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
The comparison to check the ceilingDueDate is done in the syspref format,
which isn't a good comparison. This changes to code so the comparison is done
using iso format.
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
We're returning issue information when available,
not just item information. Fixes problem where
circ/returns.pl wasn't displaying the due date
and patron when returning a loan.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Required for SIP checkin implementation, but also for internal correctness.
AddReturn had too many things going on, with no guarantee of data being
available for the later calls. At some point we started tacking on all the
branch transfer logic without testing edge cases. In particular, $borrower
is not checked to be sure it is defined, considering the item may not have been
checked out so no borrower would be associated. That means that CircControl
of "PatronLibrary" would be inaccurate, Circ Alerts will be totally confused
(untargeted), and the Fix... subs would fail.
Note that *many* errors are still present in _FixAccountForLostAndReturned, including
those where comments are added, such that it might behave strangely even with $borrower.
Renamed the internal subs with leading underscore, per convention. Changed
the arguments to be scalars when only scalars are needed, not entire objects.
Added depth to WrongBranch message that includes Rightbranch.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Updated POD for correctness.
Replaced strftime + regexp w/ C4::Dates->today.
Also removed some sth->finish statements.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Also prevents infinite-length renewals by returning undef
if passed an invalid date instead of renewing with no due date.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Code cannot rely on issueinformation being populated.
Note there is room for better efficiency to have AddReturn also provide the
itemnumber (where existing) so that GetItemnumberFromBarcode is not called
at both levels. Unfortunately there is discrepancy between this idea (for
efficiency) and the stated purpose of the $iteminformation object returned,
since $iteminformation is specifically the info from the issues table and
MUST be empty when the item was not in fact issued.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Prior to this patch, turning AllowNotForLoanOverride on
allowed the circ operator to permit the loan of an
item who's individual not-for-loan flag was set, but did
not allow the loan of an item whose item type's not-for-loan
flag was set. This patch extends the definition of the
system preference so that both cases are covered.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
When renewing a loan from the patron details page, setting
the renewal due date now works again. Broken by patch
for bug 2770.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Before this patch, we used to test for flags == 1, which was wrong when patron had all privileges.
This patch just adds a %2 to check that patron has superlibrarian privilege, and maybe something else we don't care.
I think I fixed it everywhere except in acquisition, that will be addressed by BibLibre new acquisition module.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Note to Chris Cormack: I suspect the current ability
to override most circulation conditions is sufficient,
but if HLT still needs to establish a patron category
that can ignore issuingimpossible limitations, needs
to be done in a more flexible way.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Bail out if item does not exist - otherwise
subsequent checks can fail for lack of an
item branchcode.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This patch just check the syspref and use it as base date of renew.
Signed-off-by: Henri-Damien LAURENT <henridamien.laurent@biblibre.com>
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
At the moment when you renew a document the date_due calculated is now+loanlength, but it's a bad thing, It should be
date_due+loanlength.
This patch do change Circulation.pm to use the date_due as renew base and add the loanlength to get the new date_due after
renewal.
Signed-off-by: Henri-Damien LAURENT <henridamien.laurent@biblibre.com>
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
When a borrower can't issue any book (issuingrules=0), the message should be
"this user can't issue book" and not "too many books already issued"wrong message
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This patch moves ceilingDueDate and ReturnBeforeExpiry checking into
CalcDateDue(), so the renewal due date is also calculated with those.
Also restores a check in CanBookBeIssued. If the due date isn't given
call CalcDateDue and make sure it's not in the past.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
The code was modified to change the holding branch ONLY if the return to the right branch is done. If you set IndependantBranch to on, you must return the document to the HomeBranch.
And verify the return is done before show the message that allow to transfert the document to another branch.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
If the syspref 'AllowNotForLoanOverride'(YESNO) is set to YES, the librarian is able to force a loan on an item set as "not for
loan".
If the item is not for loan and the syspref is set to YES, koha will ask to the librarian if he really want to check-out it, else
do nothing.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This adds a feature and system preference: ceilingDueDate. If this is
set to a valid ( according to dateformat syspref ) date, then calculated
due dates will be less than this date.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
The intranet item display provided by moredetail.pl
would display the original due date of the item, and
would thus be incorrect if the item had been renewed
and got a different due date.
The incorrect date was coming from items.onloan,
which AddIssue() sets to the due date. This patch
fixes the bug in two ways:
[1] AddRenewal() now updates items.onloan with the
correct due date.
[2] Two templates were updated to display the
due date from (indirectly) issues.date_due
instead of items.onloan, thus making it less
likely that the wrong value will be displayed.
This patch does *not* update items.onloan to reflect
the correct due date.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
When sending circulation alerts, use the branch that the
event happened on instead of $item->{homebranch}.
Signed-off-by: Daniel Sweeney <daniel.sweeney@liblime.com>
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
- Enqueue the messages with a to_address.
Signed-off-by: Daniel Sweeney <daniel.sweeney@liblime.com>
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
- C4::Letters:EnqueueLetter() is aware of new fields in message_queue table
- C4::Circulation::SendCirculationAlert() actually works
- C4::Category cleanup
- C4::ItemType cleanup
- C4::Message is a new module.
It presents yet another way to interact with the message_queue.
You can now take messages that have already been queued and modify
their contents before they're sent out.
Signed-off-by: Daniel Sweeney <daniel.sweeney@liblime.com>
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
- Added code to AddIssue to send an alert when appropriate.
- Added code to AddReturn to send an alert when appropriate.
- Added a sub called SendCirculationAlert() that DOESN'T ACTUALLY WORK YET.
Signed-off-by: Daniel Sweeney <daniel.sweeney@liblime.com>
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This adds holds policy creation support to smart rules and read support to
C4/Circulation.pm, and the two reservation pages. It also adds a system
preference, AllowHoldPolicyOverride, to control whether the staff can override
these policies.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Signed-off-by: Daniel Sweeney <daniel.sweeney@liblime.com>
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This patch amends the function to return barcode, in particular when
filter is not defined. It also adds an optional 2nd argument to
allow the filter to be specified by caller, enabling testing.
Non-DB-dependent test script included. Note: T-prefix style
barcode filter is not documented, and drops the first nonzero
digit after the T. This seems mistaken, but is not corrected here
to avoid any surprises.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Added syspref to updatedatabase.
Updated kohastructure.sql with the limits table.
Signed-off-by: Andrew Moore <andrew.moore@liblime.com>
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Fixes problem where if the IssuingInProcess preference is ON,
the operator is always required to confirm a checkout if
the patron has had any fine transactions at all, even if
the patron's balance is 0.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Originally by Jesse Weaver <jesse.weaver@liblime.com>
This patch creates a new system preference, AllowRenewalLimitOverride,
that, if YES, allows the renewal limit to be manually overridden. It
updates C4::Circulation and reserve/renewscript.pl to obey this.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This is a pre-requisite to continued SIP processing, dealing with some
arcana related to recursive dependencies and UNIVERSAL. The reason this
is separate from other SIP patches is that it is expected patched in other
submissions already.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
SIP actually relied on the AddIssue return that was not reliable.
AddRenew also updated to return C4::Dates object for datedue.
Please note, any running SIPServer will have to be restarted
*immediately* after applying this patch, because although Koha
C4 behaves as normal, the SIP server runs as a Net::Server with
components cached. Changes will not be applied until SIPServer
restarts, and so checkout actions may fail until then.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
Changed so that issues.issuedate is never modified
during a renewal, since that column records the original
date of the loan. Changed the name and interpretation
of the $issuedate parameter of AddRenewal() to
$lastreneweddate, allowing (e.g.) offline circulation
to set the date of the renewal without changing the
issue date.
As a result of the original bug, issues.issuedate can be
set to NULL for loans that were renewed via the OPAC,
self checkout, or the staff interface when explicitly
renewing a loan. Loans that were renewed by checking
the item out to the same patron will have the issue date
changed to the date of the last renewal.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
The loan history for a bib can be incorrect if the bib's
biblioitemnumber is not the same as its biblionumber.
This was due to a bad join in GetBiblioIssues().
Credit to Michael Hafen for patching a similar bug,
which inspired me to check for other bad joins.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
The offline circulation file processor originally used its own methods to
insert circulation data. This patch takes advantage of the updated
C4::Circulation methods that allow us to specify dates in the past.
This makes the offline circulation file processor use C4::Circulation
functions instead of its own and removes the deprecated subs.
moving from ForceIssue to AddIssue
replacing ForceRenewal with AddRenewal
moving from ForceReturn to MarkIssueReturned
removing deprecated Force* subs
fixing a few bugs in process_koc.pl
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>