From 5ed940b18eddca2e4cd823afce2e9558b074158d Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 16 Jul 2013 16:43:30 +0200 Subject: [PATCH] Bug 10599: add option to unselect on loan items on the batch item modification tool Sometimes when using the batch item modification tool, we would like to automatically uncheck on loan items. This patch also adds a new routine in C4::Circulation, IsItemIssued(), which, when passed an itemnumber, returns whether the item is currently on loan. Test plan: 1/ Go to tools/batchMod.pl. 2/ Enter some barcode (at least 1 should be on loan). 3/ Click on the Continue button. 4/ Click on the "Clear on loan" link. 5/ Check that on loan items are unchecked. Launch the unit test file: prove t/db_dependent/Circulation/IsItemIssued.t http://bugs.koha-community.org/show_bug.cgi?id=10572 Signed-off-by: Liz Rea Works as expected, only modifies items that are checked (still). No regression noted. Signed-off-by: Kyle M Hall Passes koha-qa.pl, works as advertised. Signed-off-by: Galen Charlton --- C4/Circulation.pm | 20 ++++++++++ .../prog/en/js/pages/batchMod.js | 8 +++- .../prog/en/modules/tools/batchMod-edit.tt | 30 ++++++++------ t/db_dependent/Circulation/IsItemIssued.t | 40 +++++++++++++++++++ tools/batchMod.pl | 2 + 5 files changed, 87 insertions(+), 13 deletions(-) create mode 100644 t/db_dependent/Circulation/IsItemIssued.t diff --git a/C4/Circulation.pm b/C4/Circulation.pm index b775b4fad5..53cd30923e 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -88,6 +88,7 @@ BEGIN { &GetOpenIssue &AnonymiseIssueHistory &CheckIfIssuedToPatron + &IsItemIssued ); # subs to deal with returns @@ -3495,6 +3496,25 @@ sub CheckIfIssuedToPatron { return; } +=head2 IsItemIssued + + IsItemIssued( $itemnumber ) + + Return 1 if the item is on loan, otherwise return 0 + +=cut + +sub IsItemIssued { + my $itemnumber = shift; + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare(q{ + SELECT COUNT(*) + FROM issues + WHERE itemnumber = ? + }); + $sth->execute($itemnumber); + return $sth->fetchrow; +} 1; diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/pages/batchMod.js b/koha-tmpl/intranet-tmpl/prog/en/js/pages/batchMod.js index 73be545212..38f971e3c7 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/js/pages/batchMod.js +++ b/koha-tmpl/intranet-tmpl/prog/en/js/pages/batchMod.js @@ -102,7 +102,7 @@ function hideAllColumns(){ "aoColumnDefs": [ { "aTargets": [ 0 ], "bSortable": false, "bSearchable": false } ], - "bPaginate": false + "bPaginate": false, })); $("#selectallbutton").click(function(){ $("#itemst").checkCheckboxes(); @@ -112,6 +112,12 @@ function hideAllColumns(){ $("#itemst").unCheckCheckboxes(); return false; }); + $("#clearonloanbutton").click(function(){ + $("#itemst input[name='itemnumber'][data-is-onloan='1']").each(function(){ + $(this).attr('checked', false); + }); + return false; + }); $("#selections input").change(function(e){ var num = $(this).attr("id"); if(num == 'showall'){ diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt index de67517fd0..8ee771c37b 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt @@ -19,16 +19,7 @@ for( x=0; x @@ -97,7 +89,11 @@ $(document).ready(function(){ [% IF ( item_loop ) %] - [% IF ( show ) %][% ELSE %][% END %] + [% IF show %] + + [% END %]

Show/hide columns: @@ -116,7 +112,17 @@ $(document).ready(function(){ - [% FOREACH item_loo IN item_loop %] [% IF ( show ) %][% IF ( item_loo.nomod ) %] Cannot Edit[% ELSE %][% END %][% ELSE %] [% END %] + [% FOREACH item_loo IN item_loop %] + + [% IF show %] + [% IF item_loo.nomod %] + Cannot Edit + [% ELSE %] + + [% END %] + [% ELSE %] +   + [% END %] [% FOREACH item_valu IN item_loo.item_value %] [% item_valu.field |html %] [% END %] diff --git a/t/db_dependent/Circulation/IsItemIssued.t b/t/db_dependent/Circulation/IsItemIssued.t new file mode 100644 index 0000000000..b02dba8e6c --- /dev/null +++ b/t/db_dependent/Circulation/IsItemIssued.t @@ -0,0 +1,40 @@ +use Modern::Perl; +use Test::More tests => 1; + +use C4::Biblio; +use C4::Circulation; +use C4::Items; +use C4::Members; +use Koha::DateUtils; + +use MARC::Record; + +*C4::Context::userenv = \&Mock_userenv; + +my $dbh = C4::Context->dbh; +$dbh->{AutoCommit} = 0; +$dbh->{RaiseError} = 1; + +my $borrowernumber = AddMember( + firstname => 'my firstname', + surname => 'my surname', + categorycode => 'S', + branchcode => 'CPL', +); + + +my $borrower = GetMember( borrowernumber => $borrowernumber ); +my $record = MARC::Record->new(); +my ( $biblionumber, $biblioitemnumber ) = AddBiblio( $record, '' ); + +my ( undef, undef, $itemnumber ) = AddItem( { homebranch => 'CPL', holdingbranch => 'CPL', barcode => 'i_dont_exist' }, $biblionumber ); +my $item = GetItem( $itemnumber ); + +is ( IsItemIssued( $item->{itemnumber} ), 1, "Item is issued" ); + +$dbh->rollback; + +# C4::Context->userenv +sub Mock_userenv { + return { branch => 'CPL' }; +} diff --git a/tools/batchMod.pl b/tools/batchMod.pl index 1a804d950e..63d641741a 100755 --- a/tools/batchMod.pl +++ b/tools/batchMod.pl @@ -545,6 +545,8 @@ sub BuildItemsData{ $row_data{title} = $row->{title}; $row_data{isbn} = $row->{isbn}; $row_data{biblionumber} = $row->{biblionumber}; + my $is_on_loan = C4::Circulation::IsItemIssued( $row->{itemnumber} ); + $row_data{onloan} = $is_on_loan ? 1 : 0; push(@item_value_loop,\%row_data); } my @header_loop=map { { header_value=> $witness{$_}} } @witnesscodessorted; -- 2.39.2