Bugzilla – Attachment 111033 Details for
Bug 26582
Add Koha::Acquisition::Basket->close
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 26582: Add Koha::Acquisition::Basket->close
Bug-26582-Add-KohaAcquisitionBasket-close.patch (text/plain), 4.41 KB, created by
Martin Renvoize (ashimema)
on 2020-10-01 11:26:08 UTC
(
hide
)
Description:
Bug 26582: Add Koha::Acquisition::Basket->close
Filename:
MIME Type:
Creator:
Martin Renvoize (ashimema)
Created:
2020-10-01 11:26:08 UTC
Size:
4.41 KB
patch
obsolete
>From 7b8a8850d511822bc12177fee9a36f1b27bef293 Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >Date: Wed, 30 Sep 2020 14:40:54 -0300 >Subject: [PATCH] Bug 26582: Add Koha::Acquisition::Basket->close > >This patch adds two methods to Koha::Acquisition::Basket: >- 'closed': that tells if the basket is closed >- 'close': that closes the basket > >It inherits the behaviour from CloseBasket (as it actually makes sense). >It improves CloseBasket by wrapping the action inside a transaction. It >uses the $orders->update call with no_trigger as there's no trigger to >trigger and the update can be done on a single DB call. > >A new exceptions file is added for basket-related exceptions. The only >specific exception that gets added is >Koha::Exceptions::Acquisition::Basket::AlreadyClosed > >To test: >1. Apply this patches >2. Run: > $ kshell > k$ prove t/db_dependent/Koha/Acquisition/Basket.t >=> SUCCESS: Tests pass! >3. Sign off :-D > >Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> >--- > Koha/Acquisition/Basket.pm | 48 +++++++++++++++++++++++++++ > Koha/Exceptions/Acquisition/Basket.pm | 47 ++++++++++++++++++++++++++ > 2 files changed, 95 insertions(+) > create mode 100644 Koha/Exceptions/Acquisition/Basket.pm > >diff --git a/Koha/Acquisition/Basket.pm b/Koha/Acquisition/Basket.pm >index 4b89fd08f4..6cfa64c76f 100644 >--- a/Koha/Acquisition/Basket.pm >+++ b/Koha/Acquisition/Basket.pm >@@ -23,6 +23,7 @@ use Koha::Database; > use Koha::DateUtils qw( dt_from_string ); > use Koha::Acquisition::BasketGroups; > use Koha::Acquisition::Orders; >+use Koha::Exceptions::Acquisition::Basket; > use Koha::Patrons; > > use base qw( Koha::Object Koha::Object::Mixin::AdditionalFields ); >@@ -155,6 +156,53 @@ sub authorizer { > return scalar Koha::Patrons->find($self->authorisedby); > } > >+=head3 closed >+ >+ if ( $basket->closed ) { ... } >+ >+Returns a boolean value representing if the basket is closed. >+ >+=cut >+ >+sub closed { >+ my ($self) = @_; >+ >+ return ($self->closedate) ? 1 : 0; >+} >+ >+=head3 close >+ >+ $basket->close; >+ >+Close the basket and mark all open orders as ordered. >+ >+A I<Koha::Exceptions::Acquisition::Basket::AlreadyClosed> exception is thrown >+if the basket is already closed. >+ >+=cut >+ >+sub close { >+ my ($self) = @_; >+ >+ Koha::Exceptions::Acquisition::Basket::AlreadyClosed->throw >+ if $self->closed; >+ >+ $self->_result->result_source->schema->txn_do( >+ sub { >+ my $open_orders = $self->orders->search( >+ { >+ orderstatus => { not_in => [ 'complete', 'cancelled' ] } >+ } >+ ); >+ # Mark open orders as ordered >+ $open_orders->update({ orderstatus => 'ordered' }, { no_triggers => 1 }); >+ # set as closed >+ $self->set({ closedate => \'NOW()' })->store; >+ } >+ ); >+ >+ return $self; >+} > > =head3 to_api > >diff --git a/Koha/Exceptions/Acquisition/Basket.pm b/Koha/Exceptions/Acquisition/Basket.pm >new file mode 100644 >index 0000000000..94ca5cbf51 >--- /dev/null >+++ b/Koha/Exceptions/Acquisition/Basket.pm >@@ -0,0 +1,47 @@ >+package Koha::Exceptions::Acquisition::Basket; >+ >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it >+# under the terms of the GNU General Public License as published by >+# the Free Software Foundation; either version 3 of the License, or >+# (at your option) any later version. >+# >+# Koha is distributed in the hope that it will be useful, but >+# WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License >+# along with Koha; if not, see <http://www.gnu.org/licenses>. >+ >+use Modern::Perl; >+ >+use Exception::Class ( >+ >+ 'Koha::Exceptions::Acquisition::Basket' => { >+ description => 'Something went wrong!', >+ }, >+ 'Koha::Exceptions::Acquisition::Basket::AlreadyClosed' => { >+ isa => 'Koha::Exceptions::Acquisition::Basket', >+ description => 'Basket is already closed' >+ } >+); >+ >+=head1 NAME >+ >+Koha::Exceptions::Acquisition::Basket - Base class for Basket exceptions >+ >+=head1 Exceptions >+ >+=head2 Koha::Exceptions::Acquisition::Basket >+ >+Generic Nasket exception >+ >+=head2 Koha::Exceptions::Acquisition::Basket::AlreadyClosed >+ >+Exception to be used when an already closed basket is asked to be closed. >+ >+=cut >+ >+1; >-- >2.20.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 26582
:
111003
|
111004
|
111032
|
111033
|
111528
|
111529
|
111748