From 93786c8ea69fb2eec744d136b56220914412bc37 Mon Sep 17 00:00:00 2001 From: Amit Gupta Date: Tue, 8 Oct 2013 22:13:01 +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. Signed-off-by: Amit Gupta --- 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 | 9 ++- 5 files changed, 106 insertions(+), 5 deletions(-) diff --git a/acqui/neworderempty.pl b/acqui/neworderempty.pl index 9c9eed3..995a23c 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, @@ -399,6 +410,7 @@ $template->param( ean => $data->{'ean'}, seriestitle => $data->{'seriestitle'}, itemtypeloop => \@itemtypes, + itemnumber => $items, quantity => $data->{'quantity'}, quantityrec => $data->{'quantity'}, rrp => $data->{'rrp'}, @@ -413,6 +425,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 ); @@ -553,3 +566,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 c261530..0e1310a 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' %] @@ -142,6 +141,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 %] //]]> @@ -206,7 +231,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 7f7d05f..1fccabb 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 c411ce9..0877525 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(); @@ -162,6 +164,11 @@ if ($borrowernumber_hold && !$action) { cardnumber => $borrowerinfo->{'cardnumber'}, expiry => $expiry, diffbranch => $diffbranch, + basketno => $basketno, + ordernumber => $ordernumber, + booksellerid => $booksellerid, + messages => $messages, + warnings => $warnings ); } -- 1.7.9.5