From 5479c1f9466b7be89eff6b2d971b991269e333ab Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 16 Jul 2013 16:43:30 +0200 Subject: [PATCH] Bug 10599: Clear 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. 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. --- C4/Circulation.pm | 20 ++++++++++ .../intranet-tmpl/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 c578213..7466cb0 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -88,6 +88,7 @@ BEGIN { &GetOpenIssue &AnonymiseIssueHistory &CheckIfIssuedToPatron + &IsItemIssued ); # subs to deal with returns @@ -3484,6 +3485,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 73be545..38f971e 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 de67517..8ee771c 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 0000000..b02dba8 --- /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 acb4f0b..975d6a9 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; -- 1.7.2.5