From a9365cd646c73b00f96cb74252bbbe870aac7e3b Mon Sep 17 00:00:00 2001
From: Kyle M Hall <kyle@bywatersolutions.com>
Date: Thu, 16 Jul 2015 07:55:27 -0400
Subject: [PATCH] Bug 8483 - Add checkout classes

---
 Koha/Checkout.pm      |   76 +++++++++++++++++++++++++++++++++++++++++++++++++
 Koha/Checkouts.pm     |   58 +++++++++++++++++++++++++++++++++++++
 Koha/Old/Checkout.pm  |   57 ++++++++++++++++++++++++++++++++++++
 Koha/Old/Checkouts.pm |   63 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 254 insertions(+), 0 deletions(-)
 create mode 100644 Koha/Checkout.pm
 create mode 100644 Koha/Checkouts.pm
 create mode 100644 Koha/Old/Checkout.pm
 create mode 100644 Koha/Old/Checkouts.pm

diff --git a/Koha/Checkout.pm b/Koha/Checkout.pm
new file mode 100644
index 0000000..f30f6e1
--- /dev/null
+++ b/Koha/Checkout.pm
@@ -0,0 +1,76 @@
+package Koha::Checkout;
+
+# Copyright ByWater Solutions 2015
+#
+# 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, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use Carp;
+
+use Koha::Database;
+use Koha::Items;
+use Koha::Deleted::Items;
+
+use base qw(Koha::Object);
+
+=head1 NAME
+
+Koha::Checkout - Koha Checkout Object class
+
+=head1 API
+
+=head2 Class Methods
+
+=cut
+
+=head3 item
+
+my $item = $checkout->item({ deleted => 1 });
+
+Returns the related Koha::Item for this checkout.
+
+If the parameter delete is passed and true, and the itemnumber
+is not found for current items, this method will look for a matching
+deleted item.
+
+=cut
+
+sub item {
+    my ( $self, $params ) = @_;
+
+    my $item = Koha::Items->search( { itemnumber => $self->itemnumber() } )->next();
+
+    $item ||= Koha::Deleted::Items->search( { itemnumber => $self->itemnumber() } )->next() if ( $params->{deleted} );
+
+    return $item || undef;
+}
+
+=head3 type
+
+=cut
+
+sub type {
+    return 'Issue';
+}
+
+=head1 AUTHOR
+
+Kyle M Hall <kyle@bywatersolutions.com>
+
+=cut
+
+1;
diff --git a/Koha/Checkouts.pm b/Koha/Checkouts.pm
new file mode 100644
index 0000000..9b1ddc1
--- /dev/null
+++ b/Koha/Checkouts.pm
@@ -0,0 +1,58 @@
+package Koha::Checkouts;
+
+# Copyright ByWater Solutions 2015
+#
+# 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, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use Carp;
+
+use Koha::Database;
+
+use Koha::Checkout;
+
+use base qw(Koha::Objects);
+
+=head1 NAME
+
+Koha::Checkouts - Koha Checkouts Object class
+
+=head1 API
+
+=head2 Class Methods
+
+=cut
+
+=head3 type
+
+=cut
+
+sub type {
+    return 'Issue';
+}
+
+sub object_class {
+    return 'Koha::Checkout';
+}
+
+=head1 AUTHOR
+
+Kyle M Hall <kyle@bywatersolutions.com>
+
+=cut
+
+1;
diff --git a/Koha/Old/Checkout.pm b/Koha/Old/Checkout.pm
new file mode 100644
index 0000000..27e8283
--- /dev/null
+++ b/Koha/Old/Checkout.pm
@@ -0,0 +1,57 @@
+package Koha::Old::Checkout;
+
+# Copyright ByWater Solutions 2015
+#
+# 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, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use Carp;
+
+use Koha::Database;
+
+use base qw(Koha::Checkout);
+
+=head1 NAME
+
+Koha::Old::Checkout - Koha Old Checkout Object class
+
+This class is an extension of Koha::Checkout.
+
+New methods should only be added to Koha::Checkout unless they are specifically
+and only for dealing with old checkouts.
+
+=head1 API
+
+=head2 Class Methods
+
+=cut
+
+=head3 type
+
+=cut
+
+sub type {
+    return 'OldIssue';
+}
+
+=head1 AUTHOR
+
+Kyle M Hall <kyle@bywatersolutions.com>
+
+=cut
+
+1;
diff --git a/Koha/Old/Checkouts.pm b/Koha/Old/Checkouts.pm
new file mode 100644
index 0000000..85dc15e
--- /dev/null
+++ b/Koha/Old/Checkouts.pm
@@ -0,0 +1,63 @@
+package Koha::Old::Checkouts;
+
+# Copyright ByWater Solutions 2015
+#
+# 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, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use Modern::Perl;
+
+use Carp;
+
+use Koha::Database;
+
+use Koha::Old::Checkout;
+
+use base qw(Koha::Checkouts);
+
+=head1 NAME
+
+Koha::Old::Checkouts - Koha Old Checkouts Object class
+
+This class is an extension of Koha::Checkouts.
+
+New methods should only be added to Koha::Checkouts unless they are specifically
+and only for dealing with old checkouts.
+
+=head1 API
+
+=head2 Class Methods
+
+=cut
+
+=head3 type
+
+=cut
+
+sub type {
+    return 'OldIssue';
+}
+
+sub object_class {
+    return 'Koha::Old::Checkout';
+}
+
+=head1 AUTHOR
+
+Kyle M Hall <kyle@bywatersolutions.com>
+
+=cut
+
+1;
-- 
1.7.2.5