From 6cd52173c8e9595bcc116e0851f704bec062828f Mon Sep 17 00:00:00 2001 From: Amit Gupta Date: Sat, 22 Jun 2013 23:18:55 +0530 Subject: [PATCH] Bug 10498 - Place Hold on Order When creating an order, to have the option to place a hold against the ordered item. Test Plan: 1) Choose Systempreference AcqCreateItem to Create an item when placing an order. 2) Create an order. 3) Click on Modify link. 4) Reserve for tab will come enter the patron cardnumber or name and click on Place hold button. 5) Page will go to the request.pl and it will check the circulation rule. 6) Click on Place hold and return to order page. 7) It will redirect to the neworderempty.pl page. Sponsored-by: Staffordshire University/Halton Borough Council/PTFS Europe --- acqui/neworderempty.pl | 21 +++++++ .../prog/en/modules/acqui/neworderempty.tt | 61 +++++++++++++++++++- .../prog/en/modules/reserve/request.tt | 12 +++- reserve/placerequest.pl | 8 ++- reserve/request.pl | 7 ++- 5 files changed, 104 insertions(+), 5 deletions(-) diff --git a/acqui/neworderempty.pl b/acqui/neworderempty.pl index ce96ff3..f282a1f 100755 --- a/acqui/neworderempty.pl +++ b/acqui/neworderempty.pl @@ -196,6 +196,15 @@ else { #modify order my $suggestion; $suggestion = GetSuggestionInfo($suggestionid) if $suggestionid; +my ( undef, $reserves ) = + C4::Reserves::GetReservesFromBiblionumber( $biblionumber, 1 ); +foreach my $res ( @{$reserves} ) { + my $reserveborrower = GetMember( borrowernumber => $res->{borrowernumber} ); + $res->{cardnumber} = $reserveborrower->{cardnumber}; + $res->{firstname} = $reserveborrower->{firstname}; + $res->{surname} = $reserveborrower->{surname}; +} + # get currencies (for change rates calcs if needed) my $active_currency = GetCurrency(); my $default_currency; @@ -357,6 +366,8 @@ my @gst_values = map { option => $_ }, split( '\|', C4::Context->preference("gist") ); +my $items = get_items_list($ordernumber); + $template->param( existing => $biblionumber, ordernumber => $ordernumber, @@ -400,6 +411,7 @@ $template->param( ean => $data->{'ean'}, seriestitle => $data->{'seriestitle'}, itemtypeloop => \@itemtypes, + itemnumber => $items, quantity => $data->{'quantity'}, quantityrec => $data->{'quantity'}, rrp => $data->{'rrp'}, @@ -414,6 +426,7 @@ $template->param( barcode_subfield => $barcode_subfield, import_batch_id => $import_batch_id, subscriptionid => $subscriptionid, + reserveloop => $reserves, acqcreate => C4::Context->preference("AcqCreateItem") eq "ordering" ? 1 : "", (uc(C4::Context->preference("marcflavour"))) => 1 ); @@ -554,3 +567,11 @@ sub Load_Duplicate { output_html_with_http_headers $input, $cookie, $template->output; } + +sub get_items_list { + my $ordernumber = shift; + my $list = []; + + @{$list} = map { GetItem($_) } GetItemnumbersFromOrder($ordernumber); + return $list; +} diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt index 87cfa8a..3e7d307 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt @@ -2,7 +2,6 @@ [% INCLUDE 'doc-head-open.inc' %] Koha › Acquisitions › Basket [% basketno %] › [% IF ( ordernumber ) %]Modify order details (line #[% ordernumber %])[% ELSE %]New order[% END %] [% INCLUDE 'doc-head-close.inc' %] - [% INCLUDE 'additem.js.inc' %] @@ -147,6 +146,32 @@ $(document).ready(function() } }); }); +[% IF (itemnumber) %] + $(document).ready(function() { + [% UNLESS ( borrowernumber || borrower_list ) %] + [% IF ( CircAutocompl ) %] + $( "#patron" ).autocomplete({ + source: "/cgi-bin/koha/circ/ysearch.pl", + minLength: 3, + select: function( event, ui ) { + $( "#patron" ).val( ui.item.cardnumber ); + $( "#holds_patronsearch" ).submit(); + return false; + } + }) + .data( "autocomplete" )._renderItem = function( ul, item ) { + return $( "
  • " ) + .data( "item.autocomplete", item ) + .append( "" + item.surname + ", " + item.firstname + + " (" + item.cardnumber + ") " + item.address + + " " + item.city + " " + item.zipcode + " " + + item.country + "" ) + .appendTo( ul ); + }; + [% END %] +[% END %] + }); +[% END %] //]]> @@ -211,7 +236,39 @@ $(document).ready(function() [% END %] - +[% IF (itemnumber) %] +
    + Reserve for +
    + + + + + +
    Enter patron card number or partial name:
    + + +
    + [% IF reserveloop %] + + + + + + + + [% FOREACH reserve IN reserveloop %] + + + + + + + [% END %] +
    PriorityCardnumberNameReserve date
    [% reserve.priority %][% reserve.cardnumber %][% reserve.firstname %] [% reserve.surname %][% reserve.reservedate | $KohaDates %]
    + [% END %] +
    +[% END %]
    diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt index 75eea4d..c2356dd 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt @@ -280,7 +280,9 @@ function checkMultiHold() { [% ELSE %] [% END %] - + + + @@ -360,8 +362,12 @@ function checkMultiHold() { [% ELSIF ( none_available ) %] [% ELSE %] + [% IF(basketno) %] + + [% ELSE %] [% END %] + [% END %] [% END %]
    [% FOREACH bibitemloo IN bibitemloop %] @@ -548,8 +554,12 @@ function checkMultiHold() { [% ELSIF ( none_available ) %] [% ELSE %] + [% IF(basketno) %] + + [% ELSE %] [% END %] + [% END %] [% END %]
    diff --git a/reserve/placerequest.pl b/reserve/placerequest.pl index 3fe459c..27f87ae 100755 --- a/reserve/placerequest.pl +++ b/reserve/placerequest.pl @@ -54,7 +54,9 @@ my $title=$input->param('title'); my $borrower=GetMember('borrowernumber'=>$borrowernumber); my $checkitem=$input->param('checkitem'); my $expirationdate = $input->param('expiration_date'); - +my $basketno = $input->param('basketno'); +my $ordernumber = $input->param('ordernumber'); +my $booksellerid = $input->param('booksellerid'); my $multi_hold = $input->param('multi_hold'); my $biblionumbers = $multi_hold ? $input->param('biblionumbers') : ($biblionumber . '/'); my $bad_bibs = $input->param('bad_bibs'); @@ -125,6 +127,10 @@ if ($type eq 'str8' && $borrower){ } } + if ($basketno) { + print $input->redirect("/cgi-bin/koha/acqui/neworderempty.pl?ordernumber=$ordernumber&booksellerid=$booksellerid&basketno=$basketno"); + } + if ($multi_hold) { if ($bad_bibs) { $biblionumbers .= $bad_bibs; diff --git a/reserve/request.pl b/reserve/request.pl index aea1ff8..7c469af 100755 --- a/reserve/request.pl +++ b/reserve/request.pl @@ -60,7 +60,9 @@ my ( $template, $borrowernumber, $cookie, $flags ) = get_template_and_user( my $multihold = $input->param('multi_hold'); $template->param(multi_hold => $multihold); my $showallitems = $input->param('showallitems'); - +my $basketno = $input->param('basketno'); +my $ordernumber = $input->param('ordernumber'); +my $booksellerid = $input->param('booksellerid'); # get Branches and Itemtypes my $branches = GetBranches(); my $itemtypes = GetItemTypes(); @@ -171,6 +173,9 @@ if ($borrowernumber_hold && !$action) { maxreserves => $maxreserves, expiry => $expiry, diffbranch => $diffbranch, + basketno => $basketno, + ordernumber => $ordernumber, + booksellerid => $booksellerid, messages => $messages, warnings => $warnings ); -- 1.7.9.5