No subroutine GetBorrowerIssues exists in C4::Circulation
So don't export it into users' namespace
Signed-off-by: Albert Oller <ago@bywatersolutions.com>
Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
In my haste, I overlooked circ/returns.pl's need for borrower flags. This patch
changes back the call in AddReturn from GetMember to GetMemberDetails
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Replaces all instances of GetMemberDetails with the more efficient GetMember. Since
no hash values other than the borrowers table's fields are used in this module, the
transition is safe.
To test:
1. Checkout a material; the page should load without error
2. Renew a material: the page should load without error
3. Return a material: the page should load without error
The above test plan invokes all the subroutines affected by this patch; any call to an undefined
value in a hashref should give a warning
Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Just removing use C4::Koha, as other packages are widely used.
Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Call LostItem() whenever item is lost.
LostItem() new arg - mark returned.
Disabled Lost Status on catalogue item edit.
Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
For follow up we need to explain how to hide the 952$1 (lost) from
the framework by putting it in the 'ignore' tab.
Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Adds a new system preference, RecordLocalUseOnReturn, which when active will change the statistical
entry type from "return" to "localuse" in AddReturn() if the material was not on loan when returned.
The intended use-case here is for libraries with 'open' book drops, in which patrons can put locally
used (but unissued) materials.
Adds a small message to the user interface to confirm that Local Use was recorded.
This change opens up the possibility to record more types of statistics on return; one would just need
to update the $stat_type variable accordingly.
Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Circulation restrictions work only when withdrawn reason (value 1) is selected.
If ones sets up other withdrawn reasons using authorized values, and selects
one of them (e.g. value 2), circulation restrictions don't work. This changes
fixes this problem.
Signed-off-by: Amit Gupta <amit.gupta@osslabs.biz>
Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Manager_id, the borrowernumber of the staff person doing the action, was not recorded
for payments, rental charges, or rental charges on renewals. This patch implements that.
This patch also adds the recording of itemnumber in a payment, by taking the itemnumber of
the account that it's paying off. This addresses bug 2696, though it does not make any
change to the display logic of the Payments line in the staff client.
To test:
1. Check out an item with an issuing charge
2. Renew the item
3. Pay one of the rental charges on the item
4. Verify in koha.accountlines that each of the three above operations recorded your borrowernumber
in accountlines.manager_id
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Huge thanks to Katrin Fischer for spotting what was the trouble here!
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
This squash commit takes the two patches from Srdjan and adds a minor fix to work with
template toolkit variable renames.
Squashed commit of the following:
commit 2cab669d1fd072600942e1e6fbf3378944255a68
Author: Ian Walls <ian.walls@bywatersolutions.com>
Date: Thu Jun 2 14:08:40 2011 -0400
Bug 5929: Fix advanced_notices to use new template-toolkit compatible message names
Uses 'item_due' and 'advance_notice' for advance notices names; letters do not send otherwise
commit caded04702d5eebd0f63a3b93cdddce28257f092
Author: Srdjan Jankovic <srdjan@catalyst.net.nz>
Date: Tue Mar 29 12:38:49 2011 +1300
wr77490 (bug 5929): removed debugging leftover
commit 1944de0de40f937b1d8748500f24a119390db3f0
Author: Srdjan Jankovic <srdjan@catalyst.net.nz>
Date: Tue Mar 22 19:05:23 2011 +1300
wr77490 (bug 5929): use branch email in preference for due notices
Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Punctuation should be a semi-colon not a comma
It works but is a trap for the unwary in the future
Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Fixes the main Hard Due Dates conditional to first check for the existence
of $hardduedate, then the existences of its ISO export, then finally that that
value is not '0000-00-00'
Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Enables the library to choose whether to have patrons scan their barcodes for self checkout, or login
with username and password. Uses 'checkpw' for compatibility with LDAP authentication.
Also introduces a few new system preferences to make Self Checkout more secure and manageable:
SelfCheckTimeOut: the number of seconds before the self-checkout login times out for a patron
AllowSelfCheckReturns: indicate whether or not patrons can return materials via self-checkout
SelfCheckHelpMessage: user-configurable HTML to show specific text on the Help page.
Thank you to Marlboro College in Marlboro, VT for sponsoring and testing this development!
Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
If you do not have an applicable circulation rule for a combination of branch,
item type and patron category defined in your Circulation and Fines rules,
the Hard Due Dates development prevents circulation by introducing an error:
Can't call method "output" on an undefined value at /home/magnus/kohahead/C4/Circulation.pm line 2713
This is because the $hardduedate variable is not defined. Changing the conditional
to check it, rather that it's output, fixes the issue. That's what this patch does.
Is this the longest commit message for a single line fix? Maybe.
Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
This patch addresses two problems:
Bug 6004:
If an item is returned at other than its' home library, and there is a hold for
it--at any library other than the return library--two prompts come up: one
telling the user to send the item home, and the other, to confirm and transfer
for the hold. Only the latter should be displayed.
Bug 3270:
Cancelling a hold request after transfer initiated orphans item.
Signed-off-by: Liz Rea <lrea@nekls.org>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Implements the RFC found at http://wiki.koha-community.org/wiki/Hard_Due_Dates_Circ_Rule_RFC. See squashed commits
messages below for details of implementation.
Squashed commit of the following:
commit 871b91af00871146eb1216ebf5ce673dda2c5925
Author: Ian Walls <ian.walls@bywatersolutions.com>
Date: Tue Dec 28 15:09:49 2010 -0500
Hard Due Dates dev part 3: implementing the due dates in circ
CalcDateDue now calls GetLoanLength, rather than each invocation running separately one after another. Therefore, instead of
the 'loanlength' param, CalcDateDue now takes 'itype', and uses the info to get both the issuelength and the hardduedate info (if it exists)
Global Due Date no longer populates in the sticky due date field in Circ, since it can't be determined before the item is scanned. Any specified
due date still overrides the circulation rules, if allowed.
Hard Due Dates in the past will return an error message, but can be manually specified if truly desired.
Also, a small fix to updatedatabase.pl to allow the old data to populate if possible.
commit 14d5505f3c01287a2464a759f0076c1d4b665c49
Author: Ian Walls <ian.walls@bywatersolutions.com>
Date: Mon Dec 27 18:28:11 2010 -0500
HardDueDates dev part 2: adding admin interface
Adds columns to Smart Rules page, including calendar for easy date selection.
Removes globalDueDate and ceilingDueDates from system preferences editors
commit 76e3e3d86a7a54c6ce4253e7f68278b4dc75a0bb
Author: Ian Walls <ian.walls@bywatersolutions.com>
Date: Mon Dec 27 15:58:05 2010 -0500
HardDueDates dev part 1: database changes
Adds two new columns to issuingrules, a hardduedate and a hardduedatecompare. If globalduedate is set, use that as the universal value
for all circ rules. Else, if ceilingduedate is set, use that as the universal value. Adjust the comparison accordingly (-1 before, 0
exact, 1 after). the old system preferences globalDueDate and ceilingDueDate are then removed.
Rebased onto 3.03.00.032
Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
Signed-off-by: Jared Camins-Esakov <jcamins@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Branch can be a parameter so it should be included in the rule retrieval
Need to select the most appropriate rule from those returned
(was defaulting to first returned!)
Try to make what's happening a bit less opaque
null fields are returned as undefined not 'NULL' by DBI
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
This patch adds two sysprefs to allow libraries more fine-grained control over
when fines can and can't be overridden. The two sysprefs are:
* AllFinesNeedOverride - when this syspref is set to "Require" (default) any
fine will require a staffmember to override the fine in order to check out a
book. When set to "Don't require," fines below noissuescharge will not need
any override.
* AllowFineOverride - when this syspref is set to "Allow," staff will be able to
override fines that are above noissuescharge. When set to "Don't allow"
(default), staff will not be able to check out items to patrons with fines
greater than noissuescharge.
Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Reimplements Paul Poulain's original OPAC Privacy patch, with some minor improvements and changes to wording
If the library enables the OPACPrivacy system preference along with the opacreadinghistory preference, and sets
an AnonymousPatron (must be a valid patron number in the database), the user will see a new tab upon login to
the OPAC, My Privacy. From there, the user can:
- Set their OPAC Privacy to one of three values
0 - Forever. This keeps their reading history unless they explicitly delete it; the bulk anonymiser won't touch it
1 - Default. Keep reading history until either they delete it or the library does
2 - Never. Instantly anonymises reading history upon item return
- Instantly delete their reading history
There is a warning and a popup to confirm. I've removed Paul's extra confirm checkbox, which seemed redundant
A note of which preference the patron has selected is added to the Patorn Details page in the staff client. This is read-only.
This patch also consolidates Privacy system preferences into the Privacy section of the OPAC tab.
Thank you to BibLibre for the original implmentation of this patch, and Los Gatos Public Library for funding and
testing the reimplementation.
Signed-off-by: Nicole Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
This patch improves the phrasing of several messages by
breaking the message variable into distinct parts for more
natural-sounding warnings when:
- Checking out an item on hold for another patron
- Checking out an item which is waiting for another patron
- Checking out an item which is checked out to another patron
- Checking out an item which is checked out to this patron
- Checking out to a patron who has too many checked out
I would appreciate special attention to my changes to the
TooMany function in Circulation.pm to make sure I handled
it correctly.
Signed-off-by: Nicole Engard <nengard@bywatersolutions.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
Raise warning rather than disallowing
Remove due date js validation when checking out
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Fixed small error in circulation.tmpl
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
In India a ILS product called Libsuite8 prints barcodes like b0007432. The barcode is not stored anywhere in libsuite8's database. Neither is barcode available in any of the reports generated by the software.
The barcode 'b0007432' when scanned into the libsuite8 software is de-constructed like 'b' which is the itemtype i.e. Book in this instance, and '7432' which is the 'Accession Number'. The software then takes the logged in staff's branchcode and does a join on three tables 'Location', 'Media_Type', and 'Books' to retrieve the particular record from the database.
There is no possibility of recreating the barcodes for insertion in Koha while doing a retrospective conversion, because of arbitrary length of the barcode string AND arbitrary number of zeros in the numeric part of the printed barcode AND the fact that there are no reports available from the software which contain barcodes AND the fact that the barcode is not stored in the database.
But most importantly due to the simple fact that printed barcodes are duplicated among branches.
Therefore this patch emulates the functionality of Libsuite8 software of converting the scanned barcode into one stored in Koha using the itemBarcodeInputFilter system preference.
To use this new itemBarcodeInputFilter systempreference choice called 'libsuite8', the barcodes stored in Koha must match the pattern of <branchcode>-<itemtype_code>-<accession_number>. This is easy to achieve while doing retrospective conversion from Libsuite8 to Koha.
As expected the itemBarcodeInputFilter will return unmodified barcode if presented with a barcode of pattern <branchcode>-<itemtype_code>-<accession_number>
This revision corrects the way updatedatabase.pl is changed in order to correctly update version and insert the libsuite8 option in the database. Also kohaversion.pl is changed in the recommended format of 3.0X.0X.XXX to reflect database has changed.
This revision also changes the erronorous itemBarcodeInputFilter description in koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref from 'scanned patron barcodes' to 'scanned item barcodes' there by eliminating need for a separate patch for bug 5417.
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
1) applied patch to HEAD
2) set next database number in kohaversion.pl and updatedatabase.pl
3) webinstaller kicked in, update ok
4) typed the barcodes from test cases into check-in
Barcodes used my local branch code, everything seemed ok to me.
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
this patch create a new systempreference "homeorholdingbranch"-like used only for returns.
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
An additional edit was made to circ/returns.pl by Ian Walls of ByWater Solutions to force the dialog message for the return to
use the branch specified by the new HomeOrHoldingBranchReturn system preference, rather than always Homebranch.
Signed-off-by: Ian Walls <ian.walls@bywatersolutions.com>
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
this add the function C4::Circulation::GetOpenIssue and delete \r chars when processing koc files.
Cherry picked from 3.0.x commit 5af80ab
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
This uncomment a uselessly commented function that is needed by opac-user. And fix this function that doesn't work properly.
Signed-off-by: Henri-Damien LAURENT <henridamien.laurent@biblibre.com>
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
With IndependantBranches on check that the borrower is from the same branch as
the librarian. If not then ask for confirmation. This check is skipped for
SuperLibrarians.
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
* Adopted wording suggested by Kyle Hall for the
USERBLOCKEDREMAINING and USERBLOCKEDOVERDUE circulation blocks
* Updated IsMemberBlocked so that if a patron has accrued
fine days, that will be tested for first before testing
to see if the patron has current overdue items; this solves
a problem introduced in the patch series for bug 4505 where
accrued fine days would be ignored if (a) the patron has
current overdue items but (b) the library has chosen to
set the OverduesBlockCirc syspref to noblock.
* Now correctly assigns the USERBLOCKEDREMAINING and USERBLOCKEDOVERDUE
blocks; prior to this patch, they had been swapped.
FIXME: IsMemberBlock ought to be split into two functions
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
As much as circ staff may want to block circulation to
over-rude patrons, Koha probably shouldn't be trying to make
that determination on its own. :)
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
[Documentation note by RM:
This patch adds a new system preference, OverduesBlockCirc,
that can take one of three values:
- noblock: checkouts permitted even if patrons
have overdue items (default)
- confirmation: circ operator asked to confirm checkout
- block: checkouts to patrons who have overdue
items are forbidden
]
Squashed commit of the following:
commit 6a1f66e0686a14d8a89abfc3fe5978dabd0b7af7
Author: Chris Cormack <chrisc@catalyst.net.nz>
Date: Mon Apr 26 10:27:39 2010 +1200
Tidy up ready to send patch
commit 4d1398df18dcce4fd888cf17a0e2955fdf6ee1e4
Author: Chris Cormack <chrisc@catalyst.net.nz>
Date: Mon Apr 26 10:26:15 2010 +1200
Bug 4405 - tidy up
commit 3daeb71bc6b690e18dda96aa3c767c2bb0521038
Author: Chris Cormack <chrisc@catalyst.net.nz>
Date: Mon Apr 26 10:02:04 2010 +1200
Bug 4405 - Overdues block checkout
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
In Circulation::CanBookBeRenewed categorycode and itemtype were not being checked for * wildcard
if a specific code was not given.
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
Members.pm :
Adding IsMemberBlocked
Circulation.pm :
Using IsMemberBlocked in order to implement finedays
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
Adding finedays and reservesallowed and renewalsallowed management in smart rules
Adding Clone Rules
Adding CanBookBeReserved and CanItemBeReserved in C4::Reserves
Manage Reservesallowed in opac and staff interface
Manage renewalsallowed in C4/Circulation.pm
Update Database follow
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
* 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>
When uploading an offline circulation file, some actions may need to take place
in the past. This patch adds date parameters to some C4::Circulation methods
to allow us to set dates on them
added issuedate to C4::Circulation::AddIssue
adding issuedate to C4::Circulation::AddRenewal
adding returdate to C4::Circulation::MarkIssueReturned
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
These are some documentation changes that I made to C4::Circulation as
I was writing tests for it.
moved around the docs for CanBookBeIssued. It was in the wrong spot in the file.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
AddIssue does not use the results of the lookup
of the patron whose hold request was preempted
by the issue. This patch now leaves a no-op in
the '$restype eq "Waiting"' test, but I'm not going to
refactor the hold cancellation logic now.
Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This makes C4::Circulation::AddRenewal update lastreneweddate, then has circulation.pl check today's date against issuedate or lastreneweddate. It also cl
eans up a little parenthesis spacing.
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
ILS::Patron is where most of the intelligence for SIP's representation
is lodged. Currently there is difficulty with C4::Members functions.
GetMemberDetails is required for the needed flags, but it returns
empty structure on bad barcodes, where it should be undef.
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
GetMemberDetails() returns only one hashref now,
not two. In all cases where the caller was
expecting two output values, the $flags return
was ignored anyway.
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
I've added methods to to C4::Letters to manage the database table
message_queue. This will let us keep track of messages sent
via email, sms, and rss to patrons. That way, we can show the history,
deal with failures, and reconstruct an RSS feed when needed.
misc/cronjobs/overduenotics.pl has been added. It prepares advance notices
and item due notices and stages messages to be sent in the message_queue
table.
C4::Overdues::Getoverdues now takes two optional arguments to tell it how
old of overdues to fetch.
Also, a C4::Circualtion::getUpcomingDueIssues method was added that
advance_notices.pl uses.
misc/cronjobs/process_message_queue.pl has been added. It sends the email
or SMS messages out of the message queue.
The C4::SMS module didn't work at all, and it has been rebuilt to use
an external perl module from CPAN, SMS::Send.
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
The C4::Circulation::TooMany() function, which determines
if a patron is at the maximum loan limit, has been
changed to work as follows:
1. Checks the issuing rule that would apply to the
prospective loan to see if a loan limit (maxissueqty)
has been set.
2. Counts the number of loans that the patron has
that would fall under that loan rule.
IMPORTANT: that means that if a specific loan rule
exists for the branch, patron category, and item type
in question, *only* that rule's maxissueqty will be
checked here - it will not go on to check whether
a less specific rule has a lower loan limit.
3. If adding one more loan would bring that count
over the limit, returns a "too many" error.
4. If the loan hasn't exceeded a specific limit, checks
whether a branch/patron category circ rule has
specified a loan limit, regardless of item type.
If the patron has already reached *that* limit, returns
the "too many" error.
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
This routine retrieves the branch/patron category circulation
rules for a given branch and patron category. The return
value is a hashref containing the following key:
maxissueqty - maximum number of loans across all item types
This will first check for a specific branch and
category match from branch_borrower_circ_rules.
If no rule is found, it will then check default_branch_circ_rules
(same branch, default category). If no rule is found,
it will then check default_borrower_circ_rules (default
branch, same category), then failing that, default_circ_rules
(default branch, default category).
If no rule has been found in the database, it will default to
the built in rule:
maxissueqty - undef
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
Extended help on the alternate circulation rules
form to list the order of issuingrules lookup as
follows:
same library, same patron type, same item type</li>
same library, same patron type, default item type</li>
same library, default patron type, same item type</li>
same library, default patron type, default item type</li>
default library, same patron type, same item type</li>
default library, same patron type, default item type</li>
default library, default patron type, same item type</li>
default library, default patron type, default item type</li>
This includes modifying two routines in C4::Circulation to
follow this order: GetLoanLength() and GetIssuingRule().
The reason for this change is to have Koha exhaust all issuingrules
possibilities for a branch before checking the rules for
the default branch - this is consistent with what an admin
might expect from looking at the issuingrules forms, which display
settings a branch at a time, and is more consistent with how
circulation rules should work for indepdendent branches.
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
in fact, i'm not 100% sure of this bugfix : I don't see the case where a return should be done directly to homebranch, when the check out has been done at holdingbranch
so maybe we could hardcode 'holdingbranch' instead of using HomeOrHoldingBranch
the patch as written won't break anything existing.
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
This fix should resolve in whole or in part several bugs
characterized by the error message 'Can't use string ("0")
as a HASH ref while "strict refs" in use', including
bugs 1101, 1899, and 1910.
There are some possibilities for future work:
[1] Dealing with an operator override, e.g., where
a circ operator needs to get a supervisor
to enter a login and password and escalate
the original operator's privileges for a
transaction, e.g., to forgive a fine. This
is an enhancement, of course.
[2] Creating a dummy operator to represent
batch job runs; or alternatively, give
each batch job an option to log its work
under a specified user ID.
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
The new tables have the same structure and constraints
as the tables they archive with the following exceptions:
* borrowernumber and biblionumber in old_reserves can be
NULL
* the FK constraints (e.g., for itemnumber) on old_reserves
set the child column to NULL if the parent row is deleted
instead of deleting the child row.
* there is no FK constraint on old_issues.branchcode, allowing
a branch to be deleted without changing archived requests.
Some miscellaneous cleanup was done as part of this patch:
* GetMemberIssuesAndFines (C4::Members) now uses bind variables
* fixed POD for GetMemberIssuesAndFines
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
Also implementing useDaysMode syspref 3 modes:
Calendar: every 'closed' day increments loan length by one.
Days: ignore the calendar when calculating loan length.
Datedue: increase loan length only to prevent due date from falling on 'closed' date.
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
For some reason currently unclear to me, a use 'C4::XXX' does
not seem to guarantee that the contents of C4::XXX's
@EXPORT gets imported into C4::Circulation's symbol table.
Added an INIT block to ensure that this gets done as
part of runtime initialization.
Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
* Moved exported ModItemInMarc from C4::Biblio to
C4::Items and renamed to _replace_item_field_in_biblio.
Function is now private and is not exported, as
ModItem is now the sole entry point for updating
an item record.
* Replaced calls to ModItemInMarc in C4::Circulation
with appropriate ModItem calls.
Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
Introduced C4::Items module to separate items API
from biblio API. Details on changes will be
put in later commit messages.
Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
Major bugfixes:
* Circulation status in moredetail.pl now correctly displays On loan
status and Date due
* Bugfixes on Status column in detail.pl
* Removed hard-coded English strings from status column in detail.pl
* Added missing auth values for lost and damaged statuses, sane
defaults if those auth
values don't exist
* Added missing 'On hold' status and 'Hold waiting' status
display
Medium bugfixes:
* Now correctly shows itemtype at level specified in systempreference
* Uses itemtypeimage for display, image title is full itemtype
description
* Fixed Location column concatenation between branchname location and
itemcallnumber
* broke out Location (branch), Collection (items.location)
Call Number (itemcallnumber) into their own columns
* Added auth value display for items.location
Minor fixes:
* detail.pl didn't show dates correctly
* nomenclature s/Checked out/On loan/ in opac-detail.tmpl
* s/Book/Item/ in my $desc="Item Returned
".$iteminfo->{'barcode'}; in Circulation.pm
* request.tmpl: s/date_due/onloan/ to display date due
* Fixed SimilarItems, XISBNSimilarItems
NOTE: Needs to be ported to OPAC
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
When attempting to return an item that was not actually
on loan, would crash because GetItemIssue did not return
biblionumber in hash. Add call to get biblionumber
directly.
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
Changing GanBookBeIssued to use this systempreference
Set to homebranch by default Paul and others you might want to switch this to holdingbranch to get the behaviour you are used to
Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
based on syspref 'item-level_itypes', add an itype col to items table
for 3.2 itype's type will change from varchar(10) to int to allow
circ type definitions per agency.
Note that updatedatabase doesn't populate items.itype, just creates column.
Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
Adding itemnumber to issuehistory.pl API
so that one could search for issuehistory of a specific item.
(Useful for IndependantBranches)
Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
issuing rules are working as expeced with this commit.
working on finesrules now
Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
lot of bugs to fix...
- a foreign key on patron category is stupid as we have a wildcard
- having a wildcard on itemtype is useless, removing it in template
- reindenting & removing some commented lines
- fixing some SQL bugs (insert/update lines)
Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
lot of bugs to fix...
- a foreign key on patron category is stupid as we have a wildcard
- having a wildcard on itemtype is useless, removing it in template
- reindenting & removing some commented lines
- fixing some SQL bugs (insert/update lines)
Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
The reserve was cancelled only under certain circumstances (depending on reserve status)
cancelling everytime.
Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
if dateexpiry is empty, set issuingimpossible without any calculation
Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
this is a workaround, and could hide another problem.
However, I haven't found ModReserveStatus problem or duplicate definition.
Signed-off-by: Chris Cormack <crc@liblime.com>