Bugzilla – Attachment 176452 Details for
Bug 36789
Transform a booking into checkout
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 36789: Transform a booking into checkout
Bug-36789-Transform-a-booking-into-checkout.patch (text/plain), 10.45 KB, created by
Thibaud Guillot (thibaud_g)
on 2025-01-13 15:03:56 UTC
(
hide
)
Description:
Bug 36789: Transform a booking into checkout
Filename:
MIME Type:
Creator:
Thibaud Guillot (thibaud_g)
Created:
2025-01-13 15:03:56 UTC
Size:
10.45 KB
patch
obsolete
>From 28f57de65d12e53fd5befc04507e7f79eddfc2d7 Mon Sep 17 00:00:00 2001 >From: Thibaud Guillot <thibaud.guillot@biblibre.com> >Date: Mon, 6 May 2024 12:50:01 +0200 >Subject: [PATCH] Bug 36789: Transform a booking into checkout >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >Directly from the bookings list, you can perform a checkout with booked >item. > >Test plan: > >1) Got an item booked :) >2) Click on transform to checkout >3) Normally you will be redirected to circulation.pl checkout view with > form infos from booking. >4) If issue is confirmed, the booking will be deleted. > >Sponsored by: Association de Gestion des Ã…uvres Sociales d'Inria (AGOS) > >Signed-off-by: David Nind <david@davidnind.com> >Signed-off-by: Olivier V <olivier.vezina@inLibro.com> >--- > C4/Circulation.pm | 6 ++++++ > bookings/list.pl | 10 ++++++++-- > circ/circulation.pl | 5 ++++- > .../intranet-tmpl/prog/en/modules/bookings/list.tt | 1 + > .../prog/en/modules/circ/circulation.tt | 12 ++++++++++-- > 5 files changed, 29 insertions(+), 5 deletions(-) > >diff --git a/C4/Circulation.pm b/C4/Circulation.pm >index 80cead8a96..7161415d64 100644 >--- a/C4/Circulation.pm >+++ b/C4/Circulation.pm >@@ -63,6 +63,7 @@ use Koha::Exceptions::Checkout; > use Koha::Plugins; > use Koha::Recalls; > use Koha::Library::Hours; >+use Koha::Bookings; > use Carp qw( carp ); > use List::MoreUtils qw( any ); > use Scalar::Util qw( looks_like_number blessed ); >@@ -1551,6 +1552,7 @@ sub AddIssue { > my $auto_renew = $params && $params->{auto_renew}; > my $cancel_recall = $params && $params->{cancel_recall}; > my $recall_id = $params && $params->{recall_id}; >+ my $booking_id = $params && $params->{booking_id}; > my $dbh = C4::Context->dbh; > my $barcodecheck = CheckValidBarcode($barcode); > >@@ -1732,6 +1734,10 @@ sub AddIssue { > q{DELETE tmp_holdsqueue, hold_fill_targets FROM tmp_holdsqueue LEFT JOIN hold_fill_targets USING ( itemnumber ) WHERE itemnumber = ?}, > undef, $item_object->id > ); >+ >+ if ($booking_id) { >+ Koha::Bookings->find( { booking_id => $booking_id } )->delete(); >+ } > } > $issue->discard_changes; > $patron->update_lastseen('check_out'); >diff --git a/bookings/list.pl b/bookings/list.pl >index 6333287e04..dcf12bbcfb 100755 >--- a/bookings/list.pl >+++ b/bookings/list.pl >@@ -21,8 +21,14 @@ use Modern::Perl; > > use CGI qw ( -utf8 ); > >+use Koha::Biblios; >+use Koha::Bookings; >+use Koha::Patrons; >+use Koha::Items; >+use Koha::CirculationRules; >+ > use C4::Output qw( output_html_with_http_headers ); >-use C4::Auth qw( get_template_and_user ); >+use C4::Auth qw( get_template_and_user ); > > my $input = CGI->new; > my ( $template, $borrowernumber, $cookie, $flags ) = get_template_and_user( >@@ -35,7 +41,7 @@ my ( $template, $borrowernumber, $cookie, $flags ) = get_template_and_user( > ); > > my $biblionumber = $input->param('biblionumber'); >-my $biblio = Koha::Biblios->find($biblionumber); >+my $biblio = Koha::Biblios->find( { biblionumber => $biblionumber } ); > > $template->param( > biblionumber => $biblionumber, >diff --git a/circ/circulation.pl b/circ/circulation.pl >index 968470e6f1..99f73ecf4b 100755 >--- a/circ/circulation.pl >+++ b/circ/circulation.pl >@@ -57,6 +57,7 @@ use Koha::SearchEngine; > use Koha::SearchEngine::Search; > use Koha::Patron::Modifications; > use Koha::Token; >+use Koha::Bookings; > > use List::MoreUtils qw( uniq ); > >@@ -68,6 +69,7 @@ my $query = CGI->new; > my $borrowernumber = $query->param('borrowernumber'); > my $barcodes = []; > my $barcode = $query->param('barcode'); >+my $booking_id = $query->param('booking_id'); > > # Barcode given by user could be '0' > if ( $barcode || ( defined($barcode) && $barcode eq '0' ) ) { >@@ -543,7 +545,7 @@ if ( @$barcodes && $op eq 'cud-checkout' ) { > { > onsite_checkout => $onsite_checkout, auto_renew => $session->param('auto_renew'), > switch_onsite_checkout => $switch_onsite_checkout, cancel_recall => $cancel_recall, >- recall_id => $recall_id, >+ recall_id => $recall_id, booking_id => $booking_id > } > ); > $template_params->{issue} = $issue; >@@ -787,6 +789,7 @@ $template->param( > nopermission => scalar $query->param('nopermission'), > autoswitched => $autoswitched, > logged_in_user => $logged_in_user, >+ booking_id => $booking_id || '', > ); > > output_html_with_http_headers $query, $cookie, $template->output; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/bookings/list.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/bookings/list.tt >index 6a1061403f..9a4f20a78c 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/bookings/list.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/bookings/list.tt >@@ -389,6 +389,7 @@ > if (!is_cancelled) { > result += '<button type="button" class="btn btn-default btn-xs edit-action" data-bs-toggle="modal" data-bs-target="#placeBookingModal" data-booking="%s" data-biblionumber="%s" data-itemnumber="%s" data-patron="%s" data-pickup_library="%s" data-start_date="%s" data-end_date="%s"><i class="fa fa-pencil" aria-hidden="true"></i> %s</button>'.format(row.booking_id, biblionumber, row.item_id, row.patron_id, row.pickup_library_id, row.start_date, row.end_date, _("Edit")); > result += '<button type="button" class="btn btn-default btn-xs cancel-action" data-bs-toggle="modal" data-bs-target="#cancelBookingModal" data-booking="%s"><i class="fa fa-trash" aria-hidden="true"></i> %s</button>'.format(row.booking_id, _("Cancel")); >+ result += `<form name="checkout-transform" method="post" action="/cgi-bin/koha/circ/circulation.pl?borrowernumber=${row.patron_id}"><input type="hidden" name="op" value="cud-checkout"/><input type="hidden" name="borrowernumber" value="${row.patron_id}"/><input type="hidden" name="barcode" value="${row.item.external_id}"/><input type="hidden" name="duedatespec" value="${row.end_date}"/><input type="hidden" name="booking_id" value="${row.booking_id}"/><button id="checkout_action" class="btn btn-default btn-xs" type="submit">${_("Transform to checkout")}</button></form>`; > } > [% END %] > return result; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt >index a3c9d73f1b..8c2d9aee0c 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt >@@ -9,6 +9,7 @@ > [% USE ItemTypes %] > [% USE Price %] > [% USE AuthorisedValues %] >+[% USE JSON.Escape %] > [% PROCESS 'i18n.inc' %] > [% SET footerjs = 1 %] > [% INCLUDE 'doc-head-open.inc' %] >@@ -284,6 +285,7 @@ > [% FOREACH conf IN sessionConfirmationKeys %] > <input type="hidden" name="session_confirmations" id="session_confirmations" value="[% conf | html %]" /> > [% END %] >+ <input type="hidden" name="booking_id" value="[% booking_id | html %]"/> > > [% IF (forceallow) %]<input type="hidden" name="forceallow" value="1">[% END %] > >@@ -399,6 +401,7 @@ > [% FOREACH conf IN sessionConfirmationKeys %] > <input type="hidden" name="session_confirmations" id="session_confirmations" value="[% conf | html %]" /> > [% END %] >+ <input type="hidden" name="booking_id" value="[% booking_id | html %]"/> > > [% IF (forceallow) %]<input type="hidden" name="forceallow" value="1">[% END %] > >@@ -436,7 +439,8 @@ > <input type="hidden" name="hold_borrower" value="[% resborrowernumber | html %]" /> > <input type="hidden" name="hold_itemnumber" value="[% item.itemnumber | html %]" /> > <input type="hidden" name="stickyduedate" value="[% stickyduedate | html %]" /> >- <button class="btn btn-default print" type="submit" onclick="Dopop('hold-transfer-slip.pl?reserve_id=[% reserve_id | uri %]&itemnumber=[% item.id | html %]');this.form.submit();"><i class="fa fa-print"></i> Don't check out, confirm hold, and print slip (P)</button> >+ <input type="hidden" name="booking_id" value="[% booking_id | html %]"/> >+ <button class="print" type="submit" onclick="Dopop('hold-transfer-slip.pl?reserve_id=[% reserve_id | uri %]&itemnumber=[% item.id | html %]');this.form.submit();"><i class="fa fa-print"></i> Don't check out, confirm hold, and print slip (P)</button> > </form> > [% END %] > >@@ -452,6 +456,7 @@ > <input type="hidden" name="duedatespec" value="[% duedatespec | html %]" /> > <input type="hidden" name="restoreduedatespec" /> > <input type="hidden" name="stickyduedate" value="[% stickyduedate | html %]" /> >+ <input type="hidden" name="booking_id" value="[% booking_id | html %]"/> > [% IF CAN_user_circulate_force_checkout or HIGHHOLDS or ADDITIONAL_MATERIALS %] > [% IF ( RENEW_ISSUE ) %] > <button type="submit" class="btn btn-default deny" accesskey="n"><i class="fa fa-times"></i> No, don't renew (N)</button> >@@ -1066,7 +1071,10 @@ > if ( $("#onsite_checkout").prop('checked') ) { > duedatespec_fp.setDate("[% today_due_date_and_time | $KohaDates dateformat => 'iso', with_hours => 1 %]"); > } else { >- duedatespec_fp.setDate(""); >+ var booking_id = [% booking_id.json %]; >+ if (!booking_id) { >+ duedatespec_fp.setDate(""); >+ } > } > } > } >-- >2.25.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 36789
:
166213
|
167191
|
167242
|
167246
|
167268
|
167307
|
167309
|
167311
|
167368
|
167369
|
167602
|
167906
|
167907
|
170198
|
171553
|
171554
|
171555
|
172058
|
172059
|
172060
| 176452 |
176453
|
176489