Bug 13726: Make Koha::Acq::Bookseller using Koha::Object
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 17 Feb 2015 13:37:10 +0000 (14:37 +0100)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 30 Dec 2016 11:54:32 +0000 (11:54 +0000)
This patch create a Koha::Acquisition::Booksellers module and
Koha::Acquisition::Bookseller::Contract[s] modules.

All code in the acquisition module is adapted to use the CRUD methods of
Koha::Object[s].
The former C4 routines are removed.

Test plan:
Since a lot of files are impacted by this patch, try a complete
acquisition workflow and try to catch errors.
Be focused on bookseller and bookseller' contacts data.

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

57 files changed:
C4/Acquisition.pm
C4/Bookseller.pm
C4/Bookseller/Contact.pm [deleted file]
Koha/Acquisition/Bookseller.pm
Koha/Acquisition/Bookseller/Contact.pm [new file with mode: 0644]
Koha/Acquisition/Bookseller/Contacts.pm [new file with mode: 0644]
Koha/Acquisition/Booksellers.pm [new file with mode: 0644]
Koha/Object.pm
acqui/addorderiso2709.pl
acqui/basket.pl
acqui/basketgroup.pl
acqui/basketheader.pl
acqui/booksellers.pl
acqui/finishreceive.pl
acqui/invoice.pl
acqui/invoices.pl
acqui/modordernotes.pl
acqui/neworderbiblio.pl
acqui/neworderempty.pl
acqui/newordersubscription.pl
acqui/newordersuggestion.pl
acqui/orderreceive.pl
acqui/parcel.pl
acqui/parcels.pl
acqui/pdfformat/layout2pages.pm
acqui/pdfformat/layout2pagesde.pm
acqui/pdfformat/layout3pages.pm
acqui/pdfformat/layout3pagesfr.pm
acqui/supplier.pl
acqui/transferorder.pl
acqui/uncertainprice.pl
acqui/updatesupplier.pl
acqui/z3950_search.pl
admin/aqcontract.pl
admin/currency.pl
catalogue/moredetail.pl
serials/acqui-search-result.pl
serials/subscription-detail.pl
t/Prices.t
t/db_dependent/Acquisition.t
t/db_dependent/Acquisition/CancelReceipt.t
t/db_dependent/Acquisition/GetBasketsInfosByBookseller.t
t/db_dependent/Acquisition/GetOrdersByBiblionumber.t
t/db_dependent/Acquisition/Invoices.t
t/db_dependent/Acquisition/NewOrder.t
t/db_dependent/Acquisition/OrderFromSubscription.t
t/db_dependent/Acquisition/OrderUsers.t
t/db_dependent/Acquisition/StandingOrders.t
t/db_dependent/Acquisition/TransferOrder.t
t/db_dependent/Acquisition/close_reopen_basket.t
t/db_dependent/AdditionalField.t
t/db_dependent/Bookseller.t
t/db_dependent/Budgets.t
t/db_dependent/Contract.t
t/db_dependent/Letters.t
t/db_dependent/Serials.t
t/db_dependent/Serials/Claims.t

index 6ad5ff7..c113c16 100644 (file)
@@ -29,7 +29,7 @@ use C4::Debug;
 use C4::Templates qw(gettemplate);
 use Koha::DateUtils qw( dt_from_string output_pref );
 use Koha::Acquisition::Order;
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 use Koha::Number::Price;
 use Koha::Libraries;
 
@@ -351,13 +351,13 @@ sub GetBasketGroupAsCSV {
         my $contract   = GetContract({
             contractnumber => $basket->{contractnumber}
         });
-        my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $basket->{booksellerid} });
+        my $bookseller = Koha::Acquisition::Booksellers->find( $basket->{booksellerid} );
         my $basketgroup = GetBasketgroup( $$basket{basketgroupid} );
 
         foreach my $order (@orders) {
             my $bd = GetBiblioData( $order->{'biblionumber'} );
             my $row = {
-                clientnumber => $bookseller->{accountnumber},
+                clientnumber => $bookseller->accountnumber,
                 basketname => $basket->{basketname},
                 ordernumber => $order->{ordernumber},
                 author => $bd->{author},
@@ -369,14 +369,14 @@ sub GetBasketGroupAsCSV {
                 quantity => $order->{quantity},
                 rrp_tax_included => $order->{rrp_tax_included},
                 rrp_tax_excluded => $order->{rrp_tax_excluded},
-                discount => $bookseller->{discount},
+                discount => $bookseller->discount,
                 ecost_tax_included => $order->{ecost_tax_included},
                 ecost_tax_excluded => $order->{ecost_tax_excluded},
                 notes => $order->{order_vendornote},
                 entrydate => $order->{entrydate},
-                booksellername => $bookseller->{name},
-                bookselleraddress => $bookseller->{address1},
-                booksellerpostal => $bookseller->{postal},
+                booksellername => $bookseller->name,
+                bookselleraddress => $bookseller->address1,
+                booksellerpostal => $bookseller->postal,
                 contractnumber => $contract->{contractnumber},
                 contractname => $contract->{contractname},
             };
@@ -2868,7 +2868,7 @@ sub populate_order_with_prices {
     my $booksellerid = $params->{booksellerid};
     return unless $booksellerid;
 
-    my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+    my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
 
     my $receiving = $params->{receiving};
     my $ordering  = $params->{ordering};
@@ -2877,7 +2877,7 @@ sub populate_order_with_prices {
 
     if ($ordering) {
         $order->{tax_rate_on_ordering} //= $order->{tax_rate};
-        if ( $bookseller->{listincgst} ) {
+        if ( $bookseller->listincgst ) {
             # The user entered the rrp tax included
             $order->{rrp_tax_included} = $order->{rrp};
 
@@ -2914,7 +2914,7 @@ sub populate_order_with_prices {
 
     if ($receiving) {
         $order->{tax_rate_on_receiving} //= $order->{tax_rate};
-        if ( $bookseller->{invoiceincgst} ) {
+        if ( $bookseller->invoiceincgst ) {
             # Trick for unitprice. If the unit price rounded value is the same as the ecost rounded value
             # we need to keep the exact ecost value
             if ( Koha::Number::Price->new( $order->{unitprice} )->round == Koha::Number::Price->new( $order->{ecost_tax_included} )->round ) {
index 8a5f43e..eaf486a 100644 (file)
@@ -23,13 +23,8 @@ use warnings;
 
 use base qw( Exporter );
 
-use C4::Bookseller::Contact;
-
 our @EXPORT_OK = qw(
   GetBooksellersWithLateOrders
-  ModBookseller
-  DelBookseller
-  AddBookseller
 );
 
 =head1 NAME
@@ -113,139 +108,6 @@ sub GetBooksellersWithLateOrders {
     return %supplierlist;
 }
 
-#--------------------------------------------------------------------#
-
-=head2 AddBookseller
-
-$id = &AddBookseller($bookseller);
-
-Creates a new bookseller. C<$bookseller> is a reference-to-hash whose
-keys are the fields of the aqbooksellers table in the Koha database.
-All fields must be present.
-
-Returns the ID of the newly-created bookseller.
-
-=cut
-
-sub AddBookseller {
-    my ($data, $contacts) = @_;
-    my $dbh    = C4::Context->dbh;
-    my $query = q|
-        INSERT INTO aqbooksellers
-            (
-                name,      address1,      address2,     address3, address4,
-                postal,    phone,         accountnumber,fax,      url,
-                active,    listprice,     invoiceprice, gstreg,
-                listincgst,invoiceincgst, tax_rate,      discount, notes,
-                deliverytime
-            )
-        VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) |
-      ;
-    my $sth = $dbh->prepare($query);
-    $sth->execute(
-        $data->{'name'},         $data->{'address1'},
-        $data->{'address2'},     $data->{'address3'},
-        $data->{'address4'},     $data->{'postal'},
-        $data->{'phone'},        $data->{'accountnumber'},
-        $data->{'fax'},          $data->{'url'},
-        $data->{'active'},       $data->{'listprice'},
-        $data->{'invoiceprice'}, $data->{'gstreg'},
-        $data->{'listincgst'},   $data->{'invoiceincgst'},
-        $data->{'tax_rate'},      $data->{'discount'},
-        $data->{notes},          $data->{deliverytime},
-    );
-
-    # return the id of this new supplier
-    my $id = $dbh->{'mysql_insertid'};
-    if ($id && $contacts) {
-        foreach my $contact (@$contacts) {
-            $contact = C4::Bookseller::Contact->new( $contact )
-                unless ref $contacts eq 'C4::Bookseller::Contact';
-            $contact->bookseller($id);
-            $contact->save();
-        }
-    }
-    return $id;
-}
-
-#-----------------------------------------------------------------#
-
-=head2 ModBookseller
-
-ModBookseller($bookseller);
-
-Updates the information for a given bookseller. C<$bookseller> is a
-reference-to-hash whose keys are the fields of the aqbooksellers table
-in the Koha database. It must contain entries for all of the fields.
-The entry to modify is determined by C<$bookseller-E<gt>{id}>.
-
-The easiest way to get all of the necessary fields is to look up a
-book seller with C<Koha::Acquisition::Bookseller>, modify what's necessary, then call
-C<&ModBookseller> with the result.
-
-=cut
-
-sub ModBookseller {
-    my ($data, $contacts) = @_;
-    my $dbh    = C4::Context->dbh;
-    return unless $data->{'id'};
-    my $query  = 'UPDATE aqbooksellers
-        SET name=?,address1=?,address2=?,address3=?,address4=?,
-            postal=?,phone=?,accountnumber=?,fax=?,url=?,
-            active=?,listprice=?, invoiceprice=?,
-            gstreg=?,listincgst=?,invoiceincgst=?,
-            discount=?,notes=?,tax_rate=?,deliverytime=?
-        WHERE id=?';
-    my $sth = $dbh->prepare($query);
-    my $cnt = $sth->execute(
-        $data->{'name'},         $data->{'address1'},
-        $data->{'address2'},     $data->{'address3'},
-        $data->{'address4'},     $data->{'postal'},
-        $data->{'phone'},        $data->{'accountnumber'},
-        $data->{'fax'},          $data->{'url'},
-        $data->{'active'},       $data->{'listprice'},
-        $data->{'invoiceprice'}, $data->{'gstreg'},
-        $data->{'listincgst'},   $data->{'invoiceincgst'},
-        $data->{'discount'},     $data->{'notes'},
-        $data->{'tax_rate'},      $data->{deliverytime},
-        $data->{'id'}
-    );
-    $contacts ||= $data->{'contacts'};
-    my $contactquery = "DELETE FROM aqcontacts WHERE booksellerid = ?";
-    my @contactparams = ($data->{'id'});
-    if ($contacts) {
-        foreach my $contact (@$contacts) {
-            $contact = C4::Bookseller::Contact->new( $contact )
-                unless ref $contacts eq 'C4::Bookseller::Contact';
-            $contact->bookseller($data->{'id'});
-            $contact->save();
-            push @contactparams, $contact->id if $contact->id;
-        }
-        if ($#contactparams > 0) {
-            $contactquery .= ' AND id NOT IN (' . ('?, ' x ($#contactparams - 1)) . '?);';
-        }
-    }
-    $sth = $dbh->prepare($contactquery);
-    $sth->execute(@contactparams);
-    return $cnt;
-}
-
-=head2 DelBookseller
-
-DelBookseller($booksellerid);
-
-delete the supplier record identified by $booksellerid
-This sub assumes it is called only if the supplier has no order.
-
-=cut
-
-sub DelBookseller {
-    my $id  = shift;
-    my $dbh = C4::Context->dbh;
-    my $sth = $dbh->prepare('DELETE FROM aqbooksellers WHERE id=?');
-    return $sth->execute($id);
-}
-
 1;
 
 __END__
diff --git a/C4/Bookseller/Contact.pm b/C4/Bookseller/Contact.pm
deleted file mode 100644 (file)
index a91ecda..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-package C4::Bookseller::Contact;
-
-# Copyright 2013 C & P Bibliography Services
-#
-# 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.
-
-=head1 NAME
-
-C4::Bookseller::Contact - object class for contacts associated with vendors
-
-=head1 SYNPOSIS
-
-This class provides an object-oriented interface for handling vendor contacts.
-It uses Class::Accessor to provide access to the following fields:
-
-=head1 FIELDS
-
-=over 8
-
-=item id
-
-ID of the contact. This is not used initially, since contacts are actually
-stored in the aqbooksellers table.
-
-=item name
-
-Contact name.
-
-=item position
-
-Contact's position.
-
-=item phone
-
-Contact's primary phone number.
-
-=item altphone
-
-Contact's alternate phone number.
-
-=item fax
-
-Contact's fax number.
-
-=item email
-
-Contact's e-mail address.
-
-=item notes
-
-Notes about contact.
-
-=item orderacquisition
-
-Whether the contact should receive acquisitions orders.
-
-=item claimacquisition
-
-Whether the contact should receive acquisitions claims.
-
-=item claimissues
-
-Whether the contact should receive serials claims.
-
-=item acqprimary
-
-Whether the contact is the primary contact for acquisitions.
-
-=item serialsprimary
-
-Whether the contact is the primary contact for serials.
-
-=item bookseller
-
-ID of the bookseller the contact is associated with.
-
-=back
-
-=cut
-
-use Modern::Perl;
-use C4::Context;
-
-use base qw(Class::Accessor);
-
-__PACKAGE__->mk_accessors(qw(id name position phone altphone fax email notes orderacquisition claimacquisition claimissues acqprimary serialsprimary bookseller));
-
-=head1 METHODS
-
-=head2 get_from_bookseller
-
-    my @contacts = @{C4::Bookseller::Contact->get_from_bookseller($booksellerid)};
-
-Returns a reference to an array of C4::Bookseller::Contact objects for the
-specified bookseller. This will always return at least one item, though that one
-item may be an empty contact.
-
-=cut
-
-sub get_from_bookseller {
-    my ($class, $bookseller) = @_;
-
-    return unless $bookseller;
-
-    my @contacts;
-    my $query = "SELECT * FROM aqcontacts WHERE booksellerid = ?";
-    my $dbh = C4::Context->dbh;
-    my $sth = $dbh->prepare($query);
-    $sth->execute($bookseller);
-    while (my $rec = $sth->fetchrow_hashref()) {
-        push @contacts, $class->new($rec);
-    }
-
-    push @contacts, $class->new() unless @contacts;
-
-    return \@contacts;
-}
-
-
-=head2 fetch
-
-    my $contact = C4::Bookseller::Contact->fetch($contactid);
-
-Retrieves the specified contact from the database. Currently commented out
-because there is no separate table from which contacts can be fetched.
-
-=cut
-
-sub fetch {
-    my ($class, $id) = @_;
-
-    my $rec = { };
-    if ($id) {
-        my $query = "SELECT * FROM aqcontacts WHERE id = ?";
-        my $dbh = C4::Context->dbh;
-        my $sth = $dbh->prepare($query);
-        $sth->execute($id);
-        $rec = $sth->fetchrow_hashref();
-    }
-    my $self = $class->new($rec);
-    bless $self, $class;
-    return $self;
-}
-
-=head2 save
-
-    $contact->save();
-
-Save a contact to the database.
-
-=cut
-
-sub save {
-    my ($self) = @_;
-
-    my $query;
-    my @params = (
-        $self->name,  $self->position,
-        $self->phone, $self->altphone,
-        $self->fax,   $self->email,
-        $self->notes, $self->acqprimary ? 1 : 0,
-        $self->serialsprimary ? 1 : 0,
-        $self->orderacquisition ? 1 : 0, $self->claimacquisition ? 1 : 0,
-        $self->claimissues ? 1 : 0, $self->bookseller
-    );
-    if ($self->id) {
-        $query = 'UPDATE aqcontacts SET name = ?, position = ?, phone = ?, altphone = ?, fax = ?, email = ?, notes = ?, acqprimary = ?, serialsprimary = ?, orderacquisition = ?, claimacquisition = ?, claimissues = ?, booksellerid = ? WHERE id = ?;';
-        push @params, $self->id;
-    } else {
-        $query = 'INSERT INTO aqcontacts (name, position, phone, altphone, fax, email, notes, acqprimary, serialsprimary, orderacquisition, claimacquisition, claimissues, booksellerid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);';
-    }
-    my $dbh = C4::Context->dbh;
-    my $sth = $dbh->prepare($query);
-    $sth->execute(@params);
-    $self->id($dbh->{'mysql_insertid'}) unless $self->id;
-    return $self->id;
-}
-
-sub delete {
-    my ($self) = @_;
-
-    return unless $self->id;
-
-    my $dbh = C4::Context->dbh;
-    my $sth = $dbh->prepare("DELETE FROM aqcontacts WHERE id = ?;");
-    $sth->execute($self->id);
-    return;
-}
-
-=head1 AUTHOR
-
-Jared Camins-Esakov <jcamins@cpbibliography.com>
-
-=cut
-
-1;
index 57a6113..e32b010 100644 (file)
@@ -3,120 +3,31 @@ package Koha::Acquisition::Bookseller;
 use Modern::Perl;
 
 use Koha::Database;
-use Koha::DateUtils qw( dt_from_string output_pref );
-
-use Carp qw( croak );
-
-use base qw( Class::Accessor );
-
-use C4::Bookseller::Contact;
-
-sub fetch {
-    my ( $class, $params ) = @_;
-    my $id = $params->{id};
-    return unless $id;
-    my $schema = Koha::Database->new->schema;
-
-    my $bookseller =
-      $schema->resultset('Aqbookseller')->find( { id => $id },
-        { result_class => 'DBIx::Class::ResultClass::HashRefInflator' } );
-
-    return unless $bookseller;
-
-    my $self = $class->new( $bookseller );
-    $self->contacts; # TODO: This should be generated on demand.
-    return $self;
-}
-
-sub search {
-    my ( $class, $params ) = @_;
-
-    my $schema = Koha::Database->new->schema;
-
-    my $search_params;
-    while ( my ( $field, $value ) = each %$params ) {
-        if ( $field eq 'name' ) {
-            # Use "like" if search on name
-            $search_params->{name} = { -like => "%$value%" };
-        } else {
-            $search_params->{$field} = $value;
-        }
-    }
-    my $rs = $schema->resultset('Aqbookseller')->search(
-        $search_params,
-        { order_by => 'name' }
-    );
-
-    my @booksellers;
-    while ( my $b = $rs->next ) {
-        my $t = Koha::Acquisition::Bookseller->fetch({ id => $b->id });
-        push @booksellers, $t;
-    }
-    return @booksellers;
-}
+use base qw( Koha::Object );
 
-sub basket_count {
-    my ( $self ) = @_;
-    my $schema = Koha::Database->new->schema;
+use Koha::DateUtils qw( dt_from_string output_pref );
 
-    return $schema->resultset('Aqbasket')->count( { booksellerid => $self->{id} });
-}
+use Koha::Acquisition::Bookseller::Contacts;
+use Koha::Subscriptions;
 
-sub subscription_count {
+sub baskets {
     my ( $self ) = @_;
-
-    my $schema = Koha::Database->new->schema;
-
-    return $schema->resultset('Subscription')->count( { aqbooksellerid => $self->{id} });
+    return $self->{_result}->aqbaskets;
 }
 
 sub contacts {
-    my ( $self ) = @_;
-
-    return $self->{contacts} if $self->{contacts};
-    $self->{contacts} = C4::Bookseller::Contact->get_from_bookseller($self->{id});
-    return $self->{contacts};
+    my ($self) = @_;
+    return Koha::Acquisition::Bookseller::Contacts->search( { booksellerid => $self->id } );
 }
 
-sub insert {
+sub subscriptions {
     my ($self) = @_;
 
-    # if these parameters are missing, we can't continue
-    for my $key (qw( id )) {
-        croak "Cannot insert bookseller: Mandatory parameter $key is missing"
-          unless $self->{$key};
-    }
-
-    $self->{quantityreceived} ||= 0;
-    $self->{entrydate} ||=
-      output_pref( { dt => dt_from_string, dateformat => 'iso' } );
-
-    my $schema  = Koha::Database->new->schema;
-    my @columns = $schema->source('Aqorder')->columns;
-    my $rs = $schema->resultset('Aqorder')->create(
-        {
-            map {
-                exists $self->{$_} ? ( $_ => $self->{$_} ) : ()
-            } @columns
-        }
-    );
-    $self->{ordernumber} = $rs->id;
-
-    unless ( $self->{parent_ordernumber} ) {
-        $rs->update( { parent_ordernumber => $self->{ordernumber} } );
-    }
-
-    return $self;
-}
-
-# TODO Move code from ModBookseller
-sub update {
-    die "not implemented yet";
+    return Koha::Subscriptions->search( { aqbooksellerid => $self->id } );
 }
 
-# TODO Move code from DelBookseller
-sub delete {
-    die "not implemented yet";
+sub _type {
+    return 'Aqbookseller';
 }
 
 1;
diff --git a/Koha/Acquisition/Bookseller/Contact.pm b/Koha/Acquisition/Bookseller/Contact.pm
new file mode 100644 (file)
index 0000000..61da32e
--- /dev/null
@@ -0,0 +1,13 @@
+package Koha::Acquisition::Bookseller::Contact;
+
+use Modern::Perl;
+
+use base qw( Koha::Object );
+
+use Carp qw( croak );
+
+sub _type {
+    return 'Aqcontact';
+}
+
+1;
diff --git a/Koha/Acquisition/Bookseller/Contacts.pm b/Koha/Acquisition/Bookseller/Contacts.pm
new file mode 100644 (file)
index 0000000..053e7a6
--- /dev/null
@@ -0,0 +1,19 @@
+package Koha::Acquisition::Bookseller::Contacts;
+
+use Modern::Perl;
+
+use Carp;
+
+use base qw( Koha::Objects );
+
+use Koha::Acquisition::Bookseller::Contact;
+
+sub _type {
+    return 'Aqcontact';
+}
+
+sub object_class {
+    return 'Koha::Acquisition::Bookseller::Contact';
+}
+
+1;
diff --git a/Koha/Acquisition/Booksellers.pm b/Koha/Acquisition/Booksellers.pm
new file mode 100644 (file)
index 0000000..5fa3540
--- /dev/null
@@ -0,0 +1,37 @@
+package Koha::Acquisition::Booksellers;
+
+use Modern::Perl;
+
+use Carp;
+
+use Koha::Database;
+
+use base qw( Koha::Objects );
+
+use Koha::Acquisition::Bookseller;
+
+sub search {
+    my ( $self, $params, $attributes ) = @_;
+
+
+    while ( my ( $field, $value ) = each %$params ) {
+        if ( $field eq 'name' ) {
+            # Use "like" if search on name
+            $params->{name} = { -like => "%$value%" };
+        }
+    }
+
+    $attributes->{order_by} ||= { -asc => 'name' };
+
+    return $self->SUPER::search( $params, $attributes );
+}
+
+sub _type {
+    return 'Aqbookseller';
+}
+
+sub object_class {
+    return 'Koha::Acquisition::Bookseller';
+}
+
+1;
index df98234..709d7f2 100644 (file)
@@ -221,7 +221,6 @@ sub _columns {
     return $self->{_columns};
 }
 
-
 =head3 AUTOLOAD
 
 The autoload method is used only to get and set values for an objects properties.
index 74ea8e2..b64ddad 100755 (executable)
@@ -44,7 +44,7 @@ use C4::Members;
 use Koha::Number::Price;
 use Koha::Acquisition::Currencies;
 use Koha::Acquisition::Order;
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 
 my $input = new CGI;
 my ($template, $loggedinuser, $cookie, $userflags) = get_template_and_user({
@@ -60,11 +60,11 @@ my $cgiparams = $input->Vars;
 my $op = $cgiparams->{'op'} || '';
 my $booksellerid  = $input->param('booksellerid');
 my $allmatch = $input->param('allmatch');
-my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
 
 $template->param(scriptname => "/cgi-bin/koha/acqui/addorderiso2709.pl",
                 booksellerid => $booksellerid,
-                booksellername => $bookseller->{name},
+                booksellername => $bookseller->name,
                 );
 
 if ($cgiparams->{'import_batch_id'} && $op eq ""){
@@ -218,9 +218,9 @@ if ($op eq ""){
             # in this case, the price will be x100 when unformatted ! Replace the . by a , to get a proper price calculation
             $price =~ s/\./,/ if C4::Context->preference("CurrencyFormat") eq "FR";
             $price = Koha::Number::Price->new($price)->unformat;
-            $orderinfo{tax_rate} = $bookseller->{tax_rate};
-            my $c = $c_discount ? $c_discount : $bookseller->{discount} / 100;
-            if ( $bookseller->{listincgst} ) {
+            $orderinfo{tax_rate} = $bookseller->tax_rate;
+            my $c = $c_discount ? $c_discount : $bookseller->discount / 100;
+            if ( $bookseller->listincgst ) {
                 if ( $c_discount ) {
                     $orderinfo{ecost} = $price;
                     $orderinfo{rrp}   = $orderinfo{ecost} / ( 1 - $c );
index adcc43e..31b96bb 100755 (executable)
@@ -34,6 +34,7 @@ use C4::Members qw/GetMember/;  #needed for permissions checking for changing ba
 use C4::Items;
 use C4::Suggestions;
 use Koha::Biblios;
+use Koha::Acquisition::Booksellers;
 use Koha::Libraries;
 use C4::Letters qw/SendAlerts/;
 use Date::Calc qw/Add_Delta_Days/;
@@ -87,7 +88,7 @@ my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user(
 
 my $basket = GetBasket($basketno);
 $booksellerid = $basket->{booksellerid} unless $booksellerid;
-my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
 my $schema = Koha::Database->new()->schema();
 my $rs = $schema->resultset('VendorEdiAccount')->search(
     { vendor_id => $booksellerid, } );
@@ -99,7 +100,7 @@ unless (CanUserManageBasket($loggedinuser, $basket, $userflags)) {
         basketno => $basketno,
         basketname => $basket->{basketname},
         booksellerid => $booksellerid,
-        name => $bookseller->{name}
+        name => $bookseller->name,
     );
     output_html_with_http_headers $query, $cookie, $template->output;
     exit;
@@ -294,7 +295,7 @@ if ( $op eq 'list' ) {
     my $estimateddeliverydate;
     if( $basket->{closedate} ) {
         my ($year, $month, $day) = ($basket->{closedate} =~ /(\d+)-(\d+)-(\d+)/);
-        ($year, $month, $day) = Add_Delta_Days($year, $month, $day, $bookseller->{deliverytime});
+        ($year, $month, $day) = Add_Delta_Days($year, $month, $day, $bookseller->deliverytime);
         $estimateddeliverydate = sprintf( "%04d-%02d-%02d", $year, $month, $day );
     }
 
@@ -396,9 +397,9 @@ if ( $op eq 'list' ) {
         is_standing          => $basket->{is_standing},
         deliveryplace        => $basket->{deliveryplace},
         billingplace         => $basket->{billingplace},
-        active               => $bookseller->{'active'},
-        booksellerid         => $bookseller->{'id'},
-        name                 => $bookseller->{'name'},
+        active               => $bookseller->active,
+        booksellerid         => $bookseller->id,
+        name                 => $bookseller->name,
         books_loop           => \@books_loop,
         book_foot_loop       => \@book_foot_loop,
         cancelledorders_loop => \@cancelledorders_loop,
@@ -407,7 +408,7 @@ if ( $op eq 'list' ) {
         total_tax_included   => $total_tax_included,
         total_tax_value      => $total_tax_value,
         currency             => $active_currency->currency,
-        listincgst           => $bookseller->{listincgst},
+        listincgst           => $bookseller->listincgst,
         basketgroups         => $basketgroups,
         basketgroup          => $basketgroup,
         grouped              => $basket->{basketgroupid},
@@ -493,7 +494,7 @@ sub get_order_infos {
     foreach my $key (qw(transferred_from transferred_to)) {
         if ($line{$key}) {
             my $order = GetOrder($line{$key});
-            my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $basket->{booksellerid} });
+            my $bookseller = Koha::Acquisition::Booksellers->find( $basket->{booksellerid} );
             $line{$key} = {
                 order => $order,
                 basket => $basket,
index 9ad5482..bd4c6bf 100755 (executable)
@@ -55,7 +55,7 @@ use C4::Acquisition qw/CloseBasketgroup ReOpenBasketgroup GetOrders GetBasketsBy
 use C4::Members qw/GetMember/;
 use Koha::EDI qw/create_edi_order get_edifact_ean/;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 
 our $input=new CGI;
 
@@ -75,13 +75,13 @@ sub BasketTotal {
     my @orders = GetOrders($basketno);
     for my $order (@orders){
         # FIXME The following is wrong
-        if ( $bookseller->{listincgst} ) {
+        if ( $bookseller->listincgst ) {
             $total = $total + ( $order->{ecost_tax_included} * $order->{quantity} );
         } else {
             $total = $total + ( $order->{ecost_tax_excluded} * $order->{quantity} );
         }
     }
-    $total .= " " . ($bookseller->{invoiceprice} // 0);
+    $total .= " " . ($bookseller->invoiceprice // 0);
     return $total;
 }
 
@@ -118,7 +118,7 @@ sub displaybasketgroups {
         }
     }
     $template->param(baskets => $baskets);
-    $template->param( booksellername => $bookseller ->{'name'});
+    $template->param( booksellername => $bookseller->name);
 }
 
 sub printbasketgrouppdf{
@@ -143,7 +143,7 @@ sub printbasketgrouppdf{
     }
     
     my $basketgroup = GetBasketgroup($basketgroupid);
-    my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $basketgroup->{booksellerid} });
+    my $bookseller = Koha::Acquisition::Booksellers->find( $basketgroup->{booksellerid} );
     my $baskets = GetBasketsByBasketgroup($basketgroupid);
     
     my %orders;
@@ -206,7 +206,7 @@ sub printbasketgrouppdf{
         -type       => 'application/pdf',
         -attachment => ( $basketgroup->{name} || $basketgroupid ) . '.pdf'
     );
-    my $pdf = printpdf($basketgroup, $bookseller, $baskets, \%orders, $bookseller->{tax_rate} // C4::Context->preference("gist")) || die "pdf generation failed";
+    my $pdf = printpdf($basketgroup, $bookseller, $baskets, \%orders, $bookseller->tax_rate // C4::Context->preference("gist")) || die "pdf generation failed";
     print $pdf;
 
 }
@@ -243,7 +243,7 @@ if ( $op eq "add" ) {
 # else, edit (if it is open) or display (if it is close) the basketgroup basketgroupid
 # the template will know if basketgroup must be displayed or edited, depending on the value of closed key
 #
-    my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+    my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
     my $basketgroupid = $input->param('basketgroupid');
     my $billingplace;
     my $deliveryplace;
@@ -392,7 +392,7 @@ if ( $op eq "add" ) {
 }else{
 # no param : display the list of all basketgroups for a given vendor
     my $basketgroups = &GetBasketgroups($booksellerid);
-    my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+    my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
     my $baskets = &GetBasketsByBookseller($booksellerid);
 
     displaybasketgroups($basketgroups, $bookseller, $baskets);
index c0db854..8cfde89 100755 (executable)
@@ -54,7 +54,7 @@ use C4::Output;
 use C4::Acquisition qw/GetBasket NewBasket ModBasketHeader/;
 use C4::Contract qw/GetContracts/;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 
 my $input = new CGI;
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
@@ -104,18 +104,18 @@ if ( $op eq 'add_form' ) {
         });
         push(@contractloop, @$contracts);
     }
-    my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+    my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
     my $count = scalar @contractloop;
     if ( $count > 0) {
         $template->param(contractloop => \@contractloop,
                          basketcontractnumber => $basket->{'contractnumber'});
     }
-    my @booksellers = Koha::Acquisition::Bookseller->search;
+    my @booksellers = Koha::Acquisition::Booksellers->search;
     $template->param( add_form => 1,
                     basketname => $basket->{'basketname'},
                     basketnote => $basket->{'note'},
                     basketbooksellernote => $basket->{'booksellernote'},
-                    booksellername => $bookseller->{'name'},
+                    booksellername => $bookseller->name,
                     booksellerid => $booksellerid,
                     basketno => $basketno,
                     booksellers => \@booksellers,
index b56f73e..a4d010f 100755 (executable)
@@ -63,7 +63,7 @@ use C4::Acquisition qw/ GetBasketsInfosByBookseller CanUserManageBasket /;
 use C4::Members qw/GetMember/;
 use C4::Context;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 
 my $query = CGI->new;
 my ( $template, $loggedinuser, $cookie, $userflags ) = get_template_and_user(
@@ -83,18 +83,18 @@ my $allbaskets= $query->param('allbaskets')||0;
 my @suppliers;
 
 if ($booksellerid) {
-    push @suppliers, Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+    push @suppliers, Koha::Acquisition::Booksellers->find( $booksellerid );
 } else {
-    @suppliers = Koha::Acquisition::Bookseller->search({ name => $supplier });
+    @suppliers = Koha::Acquisition::Booksellers->search({ name => $supplier });
 }
 
 my $supplier_count = @suppliers;
 if ( $supplier_count == 1 ) {
     $template->param(
-        supplier_name => $suppliers[0]->{'name'},
-        booksellerid  => $suppliers[0]->{'id'},
-        basketcount   => $suppliers[0]->{'basketcount'},
-        active        => $suppliers[0]->{active},
+        supplier_name => $suppliers[0]->name,
+        booksellerid  => $suppliers[0]->id,
+        basketcount   => $suppliers[0]->baskets->count,
+        active        => $suppliers[0]->active,
     );
 }
 
@@ -124,7 +124,7 @@ foreach my $r (@{$budgets}) {
 my $loop_suppliers = [];
 
 for my $vendor (@suppliers) {
-    my $baskets = GetBasketsInfosByBookseller( $vendor->{id}, $allbaskets );
+    my $baskets = GetBasketsInfosByBookseller( $vendor->id, $allbaskets );
 
     my $loop_basket = [];
 
@@ -150,9 +150,9 @@ for my $vendor (@suppliers) {
 
     push @{$loop_suppliers},
       { loop_basket => $loop_basket,
-        booksellerid  => $vendor->{id},
-        name        => $vendor->{name},
-        active      => $vendor->{active},
+        booksellerid  => $vendor->id,
+        name        => $vendor->name,
+        active      => $vendor->active,
       };
 
 }
index a16213a..2c6340c 100755 (executable)
@@ -28,11 +28,10 @@ use C4::Output;
 use C4::Context;
 use C4::Acquisition;
 use C4::Biblio;
-use C4::Bookseller;
 use C4::Items;
 use C4::Search;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 
 use List::MoreUtils qw/any/;
 
@@ -84,8 +83,6 @@ if ($quantityrec > $origquantityrec ) {
     $order->{tax_rate_on_receiving} = $input->param("tax_rate");
     $order->{unitprice} = $unitprice;
 
-    my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
-
     $order = C4::Acquisition::populate_order_with_prices(
         {
             order => $order,
index 66f3c58..9906341 100755 (executable)
@@ -35,7 +35,7 @@ use C4::Output;
 use C4::Acquisition;
 use C4::Budgets;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 use Koha::Acquisition::Currencies;
 use Koha::DateUtils;
 use Koha::Misc::Files;
@@ -112,7 +112,7 @@ elsif ( $op && $op eq 'delete' ) {
 
 
 my $details = GetInvoiceDetails($invoiceid);
-my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $details->{booksellerid} });
+my $bookseller = Koha::Acquisition::Booksellers->find( $details->{booksellerid} );
 my @orders_loop = ();
 my $orders = $details->{'orders'};
 my @foot_loop;
@@ -177,7 +177,7 @@ $template->param(
     total_tax_value  => $total_tax_value,
     total_tax_excluded_shipment => $total_tax_excluded + $details->{shipmentcost},
     total_tax_included_shipment => $total_tax_included + $details->{shipmentcost},
-    invoiceincgst    => $bookseller->{invoiceincgst},
+    invoiceincgst    => $bookseller->invoiceincgst,
     currency         => Koha::Acquisition::Currencies->get_active,
     budgets_loop     => \@budgets_loop,
 );
index 7f0ed5d..c060cfd 100755 (executable)
@@ -36,6 +36,7 @@ use C4::Output;
 use C4::Acquisition qw/GetInvoices/;
 use C4::Budgets;
 use Koha::DateUtils;
+use Koha::Acquisition::Booksellers;
 
 my $input = CGI->new;
 my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user(
@@ -89,7 +90,7 @@ if ( $op and $op eq 'do_search' ) {
 }
 
 # Build suppliers list
-my @suppliers      = Koha::Acquisition::Bookseller->search;
+my @suppliers      = Koha::Acquisition::Booksellers->search;
 my $suppliers_loop = [];
 my $suppliername;
 foreach (@suppliers) {
index a1008f0..d0bd672 100755 (executable)
@@ -33,7 +33,7 @@ use C4::Auth;
 use C4::Output;
 use C4::Acquisition;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 
 my $input = new CGI;
 my ($template, $loggedinuser, $cookie, $flags) = get_template_and_user( {
@@ -51,7 +51,7 @@ my $referrer = $input->param('referrer') || $input->referer();
 my $type = $input->param('type');
 my $order = GetOrder($ordernumber);
 my $basket = GetBasket($order->{basketno});
-my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $basket->{booksellerid} });
+my $bookseller = Koha::Acquisition::Booksellers->find( $basket->{booksellerid} );
 
 
 if($op and $op eq 'save') {
@@ -79,8 +79,8 @@ if($op) {
 $template->param(
     basketname           => $basket->{'basketname'},
     basketno             => $order->{basketno},
-    booksellerid         => $bookseller->{'id'},
-    booksellername       => $bookseller->{'name'},
+    booksellerid         => $bookseller->id,
+    booksellername       => $bookseller->name,
     ordernumber => $ordernumber,
     referrer => $referrer,
     type => $type,
index 01fb1e2..8c492b7 100755 (executable)
@@ -67,7 +67,7 @@ use C4::Koha;
 use C4::Members qw/ GetMember /;
 use C4::Budgets qw/ GetBudgetHierarchy /;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 use Koha::SearchEngine;
 use Koha::SearchEngine::Search;
 use Koha::SearchEngine::QueryBuilder;
@@ -83,7 +83,7 @@ my $results_per_page = $params->{'num'} || 20;
 my $booksellerid     = $params->{'booksellerid'};
 my $basketno         = $params->{'basketno'};
 my $sub              = $params->{'sub'};
-my $bookseller       = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $bookseller       = Koha::Acquisition::Booksellers->find( $booksellerid );
 
 # getting the template
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
@@ -115,8 +115,8 @@ if (defined $error) {
     $template->param(
         query_error => $error,
         basketno             => $basketno,
-        booksellerid     => $bookseller->{'id'},
-        name             => $bookseller->{'name'},
+        booksellerid     => $bookseller->id,
+        name             => $bookseller->name,
     );
     output_html_with_http_headers $input, $cookie, $template->output;
     exit;
@@ -147,8 +147,8 @@ foreach my $r (@{$budgets}) {
 $template->param(
     has_budgets          => $has_budgets,
     basketno             => $basketno,
-    booksellerid         => $bookseller->{'id'},
-    name                 => $bookseller->{'name'},
+    booksellerid         => $bookseller->id,
+    name                 => $bookseller->name,
     resultsloop          => \@results,
     total                => $total_hits,
     query                => $query,
index 57a22e4..b76b4f4 100755 (executable)
@@ -87,7 +87,7 @@ use C4::Search qw/FindDuplicate/;
 #needed for z3950 import:
 use C4::ImportBatch qw/GetImportRecordMarc SetImportRecordStatus/;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 use Koha::Acquisition::Currencies;
 use Koha::ItemTypes;
 
@@ -130,7 +130,7 @@ if(!$basketno) {
 
 our $basket = GetBasket($basketno);
 $booksellerid = $basket->{booksellerid} unless $booksellerid;
-my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
 
 my $contract = GetContract({
     contractnumber => $basket->{contractnumber}
@@ -320,20 +320,20 @@ $template->param(
     firstnamesuggestedby => $suggestion->{firstnamesuggestedby},
     biblionumber         => $biblionumber,
     uncertainprice       => $data->{'uncertainprice'},
-    discount_2dp         => sprintf( "%.2f",  $bookseller->{'discount'} ) ,   # for display
-    discount             => $bookseller->{'discount'},
+    discount_2dp         => sprintf( "%.2f",  $bookseller->discount ) ,   # for display
+    discount             => $bookseller->discount,
     orderdiscount_2dp    => sprintf( "%.2f", $data->{'discount'} || 0 ),
     orderdiscount        => $data->{'discount'},
     order_internalnote   => $data->{'order_internalnote'},
     order_vendornote     => $data->{'order_vendornote'},
-    listincgst       => $bookseller->{'listincgst'},
-    invoiceincgst    => $bookseller->{'invoiceincgst'},
-    name             => $bookseller->{'name'},
+    listincgst       => $bookseller->listincgst,
+    invoiceincgst    => $bookseller->invoiceincgst,
+    name             => $bookseller->name,
     cur_active_sym   => $active_currency->symbol,
     cur_active       => $active_currency->currency,
     currencies       => \@currencies,
     currency         => $data->{currency},
-    vendor_currency  => $bookseller->{listprice},
+    vendor_currency  => $bookseller->listprice,
     orderexists      => ( $new eq 'yes' ) ? 0 : 1,
     title            => $data->{'title'},
     author           => $data->{'author'},
@@ -348,7 +348,7 @@ $template->param(
     quantityrec      => $quantity,
     rrp              => $data->{'rrp'},
     gst_values       => \@gst_values,
-    tax_rate         => $data->{tax_rate_on_ordering} ? $data->{tax_rate_on_ordering}+0.0 : $bookseller->{tax_rate} ? $bookseller->{tax_rate}+0.0 : 0,
+    tax_rate         => $data->{tax_rate_on_ordering} ? $data->{tax_rate_on_ordering}+0.0 : $bookseller->tax_rate ? $bookseller->tax_rate+0.0 : 0,
     listprice        => sprintf( "%.2f", $data->{listprice} || $data->{price} || $listprice),
     total            => sprintf( "%.2f", ($data->{ecost} || 0) * ($data->{'quantity'} || 0) ),
     ecost            => sprintf( "%.2f", $data->{ecost} || 0),
index 81bc18d..51151af 100755 (executable)
@@ -25,7 +25,7 @@ use C4::Context;
 use C4::Output;
 use C4::Serials;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 
 my $query        = new CGI;
 my $title        = $query->param('title_filter');
@@ -52,7 +52,7 @@ my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user(
 
 my $basket = GetBasket($basketno);
 $booksellerid = $basket->{booksellerid} unless $booksellerid;
-my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
 
 my @subscriptions;
 if ($searched) {
@@ -88,6 +88,6 @@ $template->param(
     booksellerid     => $booksellerid,
     basketno         => $basket->{basketno},
     basketname       => $basket->{basketname},
-    booksellername   => $bookseller->{name},
+    booksellername   => $bookseller->name,
 );
 output_html_with_http_headers $query, $cookie, $template->output;
index a0e88e9..c182ed3 100755 (executable)
@@ -97,7 +97,7 @@ use C4::Output;
 use C4::Suggestions;
 use C4::Biblio;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 
 my $input = new CGI;
 
@@ -137,12 +137,12 @@ my $suggestions_loop = SearchSuggestion(
         STATUS        => 'ACCEPTED'
     }
 );
-my $vendor = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $vendor = Koha::Acquisition::Booksellers->find( $booksellerid );
 $template->param(
     suggestions_loop        => $suggestions_loop,
     basketno                => $basketno,
     booksellerid              => $booksellerid,
-    name                                       => $vendor->{'name'},
+    name                    => $vendor->name,
     loggedinuser            => $borrowernumber,
     "op_$op"                => 1,
 );
index 0e302bd..b8be537 100755 (executable)
@@ -73,7 +73,7 @@ use C4::Items;
 use C4::Biblio;
 use C4::Suggestions;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 use Koha::DateUtils qw( dt_from_string );
 
 my $input      = new CGI;
@@ -85,7 +85,7 @@ my $booksellerid   = $invoice->{booksellerid};
 my $freight      = $invoice->{shipmentcost};
 my $ordernumber  = $input->param('ordernumber');
 
-my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
 my $results;
 $results = SearchOrders({
     ordernumber => $ordernumber
@@ -155,7 +155,7 @@ $order->{quantityreceived} = '' if $order->{quantityreceived} == 0;
 
 my $unitprice = $order->{unitprice};
 my ( $rrp, $ecost );
-if ( $bookseller->{invoiceincgst} ) {
+if ( $bookseller->invoiceincgst ) {
     $rrp = $order->{rrp_tax_included};
     $ecost = $order->{ecost_tax_included};
     unless ( $unitprice != 0 and defined $unitprice) {
@@ -198,7 +198,7 @@ $template->param(
     subscriptionid        => $order->{subscriptionid},
     booksellerid          => $order->{'booksellerid'},
     freight               => $freight,
-    name                  => $bookseller->{'name'},
+    name                  => $bookseller->name,
     title                 => $order->{'title'},
     author                => $order->{'author'},
     copyrightdate         => $order->{'copyrightdate'},
index 32498ea..22a036f 100755 (executable)
@@ -111,7 +111,7 @@ unless( $invoiceid and $invoice->{invoiceid} ) {
 }
 
 my $booksellerid = $invoice->{booksellerid};
-my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
 
 my @orders        = @{ $invoice->{orders} };
 my $countlines    = scalar @orders;
@@ -125,7 +125,7 @@ my $subtotal_for_funds;
 for my $order ( @orders ) {
     $order->{'unitprice'} += 0;
 
-    if ( $bookseller->{invoiceincgst} ) {
+    if ( $bookseller->invoiceincgst ) {
         $order->{ecost}     = $order->{ecost_tax_included};
         $order->{unitprice} = $order->{unitprice_tax_included};
     }
@@ -223,7 +223,7 @@ unless( defined $invoice->{closedate} ) {
     for (my $i = 0 ; $i < $countpendings ; $i++) {
         my $order = $pendingorders->[$i];
 
-        if ( $bookseller->{invoiceincgst} ) {
+        if ( $bookseller->invoiceincgst ) {
             $order->{ecost} = $order->{ecost_tax_included};
         } else {
             $order->{ecost} = $order->{ecost_tax_excluded};
@@ -285,8 +285,8 @@ $template->param(
     invoice               => $invoice->{invoicenumber},
     invoiceclosedate      => $invoice->{closedate},
     datereceived          => dt_from_string,
-    name                  => $bookseller->{'name'},
-    booksellerid          => $bookseller->{id},
+    name                  => $bookseller->name,
+    booksellerid          => $bookseller->id,
     loop_received         => \@loop_received,
     loop_orders           => \@loop_orders,
     book_foot_loop        => \@book_foot_loop,
index ffcbb66..85da683 100755 (executable)
@@ -75,7 +75,7 @@ use C4::Output;
 use C4::Acquisition;
 use C4::Budgets;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 use Koha::DateUtils qw( output_pref dt_from_string );
 
 my $input          = CGI->new;
@@ -139,7 +139,7 @@ if ($op and $op eq 'confirm') {
     }
 }
 
-my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
 my @parcels = GetInvoices(
     supplierid => $booksellerid,
     invoicenumber => $code,
@@ -203,7 +203,7 @@ $template->param(
     datefrom                 => $datefrom,
     dateto                   => $dateto,
     resultsperpage           => $resultsperpage,
-    name                     => $bookseller->{'name'},
+    name                     => $bookseller->name,
     shipmentdate_today       => dt_from_string,
     booksellerid             => $booksellerid,
     GST                      => C4::Context->preference('gist'),
index d2fd2cd..7e7bc3d 100644 (file)
@@ -199,17 +199,17 @@ sub printhead {
     
     # print bookseller infos
     $text->translate(100/mm, ($height-180)/mm);
-    $text->text($bookseller->{name});
+    $text->text($bookseller->name);
     $text->translate(100/mm, ($height-185)/mm);
-    $text->text($bookseller->{postal});
+    $text->text($bookseller->postal);
     $text->translate(100/mm, ($height-190)/mm);
-    $text->text($bookseller->{address1});
+    $text->text($bookseller->address1);
     $text->translate(100/mm, ($height-195)/mm);
-    $text->text($bookseller->{address2});
+    $text->text($bookseller->address2);
     $text->translate(100/mm, ($height-200)/mm);
-    $text->text($bookseller->{address3});
+    $text->text($bookseller->address3);
     $text->translate(100/mm, ($height-205)/mm);
-    $text->text($bookseller->{accountnumber});
+    $text->text($bookseller->accountnumber);
     
     # print delivery infos
     $text->font( $pdf->corefont("Times-Bold", -encoding => "utf8"), 4/mm );
index f51599b..08924d3 100644 (file)
@@ -199,17 +199,17 @@ sub printhead {
     
     # print bookseller infos
     $text->translate(100/mm, ($height-180)/mm);
-    $text->text($bookseller->{name});
+    $text->text($bookseller->name);
     $text->translate(100/mm, ($height-185)/mm);
-    $text->text($bookseller->{postal});
+    $text->text($bookseller->postal);
     $text->translate(100/mm, ($height-190)/mm);
-    $text->text($bookseller->{address1});
+    $text->text($bookseller->address1);
     $text->translate(100/mm, ($height-195)/mm);
-    $text->text($bookseller->{address2});
+    $text->text($bookseller->address2);
     $text->translate(100/mm, ($height-200)/mm);
-    $text->text($bookseller->{address3});
+    $text->text($bookseller->address3);
     $text->translate(100/mm, ($height-205)/mm);
-    $text->text($bookseller->{accountnumber});
+    $text->text($bookseller->accountnumber);
     
     # print delivery infos
     $text->font( $pdf->corefont("Times-Bold", -encoding => "utf8"), 4/mm );
index e91d1e6..f825ed3 100644 (file)
@@ -365,17 +365,17 @@ sub printhead {
     
     # print bookseller infos
     $text->translate(100/mm,  ($height-180)/mm);
-    $text->text($bookseller->{name});
+    $text->text($bookseller->name);
     $text->translate(100/mm,  ($height-185)/mm);
-    $text->text($bookseller->{postal});
+    $text->text($bookseller->postal);
     $text->translate(100/mm,  ($height-190)/mm);
-    $text->text($bookseller->{address1});
+    $text->text($bookseller->address1);
     $text->translate(100/mm,  ($height-195)/mm);
-    $text->text($bookseller->{address2});
+    $text->text($bookseller->address2);
     $text->translate(100/mm,  ($height-200)/mm);
-    $text->text($bookseller->{address3});
+    $text->text($bookseller->address3);
     $text->translate(100/mm, ($height-205)/mm);
-    $text->text($bookseller->{accountnumber});
+    $text->text($bookseller->accountnumber);
     
     # print delivery infos
     $text->font( $pdf->corefont("Times-Bold", -encoding => "utf8"), 4/mm );
index 8b9bc20..14b0cc0 100644 (file)
@@ -365,17 +365,17 @@ sub printhead {
 
     # print bookseller infos
     $text->translate(100/mm,  ($height-180)/mm);
-    $text->text($bookseller->{name});
+    $text->text($bookseller->name);
     $text->translate(100/mm,  ($height-185)/mm);
-    $text->text($bookseller->{postal});
+    $text->text($bookseller->postal);
     $text->translate(100/mm,  ($height-190)/mm);
-    $text->text($bookseller->{address1});
+    $text->text($bookseller->address1);
     $text->translate(100/mm,  ($height-195)/mm);
-    $text->text($bookseller->{address2});
+    $text->text($bookseller->address2);
     $text->translate(100/mm,  ($height-200)/mm);
-    $text->text($bookseller->{address3});
+    $text->text($bookseller->address3);
     $text->translate(100/mm, ($height-205)/mm);
-    $text->text($bookseller->{accountnumber});
+    $text->text($bookseller->accountnumber);
 
     # print delivery infos
     $text->font( $pdf->corefont("Times-Bold", -encoding => "utf8"), 4/mm );
index d37bd72..e0addbc 100755 (executable)
@@ -48,11 +48,10 @@ use C4::Biblio;
 use C4::Output;
 use CGI qw ( -utf8 );
 
-use C4::Bookseller qw( DelBookseller );
-use C4::Bookseller::Contact;
 use C4::Budgets;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Bookseller::Contacts;
+use Koha::Acquisition::Booksellers;
 use Koha::Acquisition::Currencies;
 
 my $query    = CGI->new;
@@ -67,33 +66,36 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
     }
 );
 my $booksellerid       = $query->param('booksellerid');
-my $supplier = {};
+my $supplier;
 if ($booksellerid) {
-    $supplier = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
-    foreach ( keys %{$supplier} ) {
-        $template->{'VARS'}->{$_} = $supplier->{$_};
+    $supplier = Koha::Acquisition::Booksellers->find( $booksellerid );
+    my $supplier_hashref = $supplier->unblessed;
+    foreach ( keys %{$supplier_hashref} ) {
+        $template->{'VARS'}->{$_} = $supplier->$_;
     }
+    $template->{VARS}->{contacts} = $supplier->contacts if $supplier->contacts->count;
     $template->{'VARS'}->{'booksellerid'} = $booksellerid;
 }
-$template->{'VARS'}->{'contacts'} = C4::Bookseller::Contact->new() unless $template->{'VARS'}->{'contacts'};
+
+$template->{VARS}->{contacts} ||= Koha::Acquisition::Bookseller::Contact->new;
 
 if ( $op eq 'display' ) {
     my $contracts = GetContracts( { booksellerid => $booksellerid } );
 
     $template->param(
-        active        => $supplier->{'active'},
-        tax_rate       => $supplier->{'tax_rate'} + 0.0,
-        invoiceprice  => $supplier->{'invoiceprice'},
-        listprice     => $supplier->{'listprice'},
-        basketcount   => $supplier->{'basketcount'},
-        subscriptioncount   => $supplier->{'subscriptioncount'},
+        active        => $supplier->active,
+        tax_rate      => $supplier->tax_rate + 0.0,
+        invoiceprice  => $supplier->invoiceprice,
+        listprice     => $supplier->listprice,
+        basketcount   => $supplier->baskets->count,
+        subscriptioncount => $supplier->subscriptions->count,
         contracts     => $contracts,
     );
 } elsif ( $op eq 'delete' ) {
     # no further message needed for the user
     # the DELETE button only appears in the template if basketcount == 0
-    if ( $supplier->{'basketcount'} == 0 ) {
-        DelBookseller($booksellerid);
+    if ( $supplier->baskets->count == 0 ) {
+        Koha::Acquisition::Booksellers->find($booksellerid)->delete;
     }
     print $query->redirect('/cgi-bin/koha/acqui/acqui-home.pl');
     exit;
@@ -107,8 +109,8 @@ if ( $op eq 'display' ) {
 
     $template->param(
         # set active ON by default for supplier add (id empty for add)
-        active       => $booksellerid ? $supplier->{'active'} : 1,
-        tax_rate       => $supplier->{tax_rate} ? $supplier->{'tax_rate'}+0.0 : 0,
+        active     => $supplier ? $supplier->active         : 1,
+        tax_rate   => $supplier ? $supplier->tax_rate + 0.0 : 0,
         gst_values    => \@gst_values,
         currencies    => \@currencies,
         enter         => 1,
index 5ce3890..6cd1d2e 100755 (executable)
@@ -27,6 +27,7 @@ use C4::Output;
 use C4::Context;
 use C4::Acquisition;
 use C4::Members;
+use Koha::Acquisition::Booksellers;
 
 my $input = new CGI;
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
@@ -54,15 +55,15 @@ if($order) {
     $bookselleridfrom = $basket->{booksellerid} if $basket;
 }
 
-my $booksellerfrom = Koha::Acquisition::Bookseller->fetch({ id => $bookselleridfrom });
+my $booksellerfrom = Koha::Acquisition::Booksellers->find( $bookselleridfrom );
 my $booksellerfromname;
 if($booksellerfrom){
-    $booksellerfromname = $booksellerfrom->{name};
+    $booksellerfromname = $booksellerfrom->name;
 }
-my $booksellerto = Koha::Acquisition::Bookseller->fetch({ id => $bookselleridto });
+my $booksellerto = Koha::Acquisition::Booksellers->finf( $bookselleridto );
 my $booksellertoname;
 if($booksellerto){
-    $booksellertoname = $booksellerto->{name};
+    $booksellertoname = $booksellerto->name;
 }
 
 
@@ -70,8 +71,8 @@ if( $basketno && $ordernumber) {
     # Transfer order and exit
     my $order = GetOrder( $ordernumber );
     my $basket = GetBasket($order->{basketno});
-    my $booksellerfrom = Koha::Acquisition::Bookseller->fetch({ id => $basket->{booksellerid} });
-    my $bookselleridfrom = $booksellerfrom->{id};
+    my $booksellerfrom = Koha::Acquisition::Booksellers->find( $basket->{booksellerid} );
+    my $bookselleridfrom = $booksellerfrom->id;
 
     TransferOrder($ordernumber, $basketno);
 
@@ -80,8 +81,8 @@ if( $basketno && $ordernumber) {
     # Show open baskets for this bookseller
     my $order = GetOrder( $ordernumber );
     my $basketfrom = GetBasket( $order->{basketno} );
-    my $booksellerfrom = Koha::Acquisition::Bookseller->fetch({ id => $basketfrom->{booksellerid} });
-    $booksellerfromname = $booksellerfrom->{name};
+    my $booksellerfrom = Koha::Acquisition::Booksellers->find( $basketfrom->{booksellerid} );
+    $booksellerfromname = $booksellerfrom->name;
     my $baskets = GetBasketsByBookseller( $bookselleridto );
     my $basketscount = scalar @$baskets;
     my @basketsloop = ();
@@ -117,7 +118,7 @@ if( $basketno && $ordernumber) {
     # Search for booksellers to transfer from/to
     $op = '' unless $op;
     if( $op eq "do_search" ) {
-        my @booksellers = Koha::Acquisition::Bookseller->search({ name => $query });
+        my @booksellers = Koha::Acquisition::Booksellers->search({ name => $query });
         $template->param(
             query => $query,
             do_search => 1,
index a90c75f..34a6b25 100755 (executable)
@@ -50,11 +50,10 @@ use C4::Auth;
 use C4::Output;
 use CGI qw ( -utf8 );
 
-use C4::Bookseller::Contact;
 use C4::Acquisition qw/SearchOrders GetOrder ModOrder/;
 use C4::Biblio qw/GetBiblioData/;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 
 my $input=new CGI;
 
@@ -71,7 +70,7 @@ my $booksellerid = $input->param('booksellerid');
 my $basketno     = $input->param('basketno');
 my $op = $input->param('op');
 my $owner = $input->param('owner') || 0 ; # flag to see only "my" orders, or everyone orders
-my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
 
 #show all orders that have uncertain price for the bookseller
 my $pendingorders = SearchOrders({
@@ -106,7 +105,7 @@ if ( $op eq 'validate' ) {
         my $ordernumber = $order->{ordernumber};
         my $order_as_from_db=GetOrder($order->{ordernumber});
         $order->{'listprice'} = $input->param('price'.$ordernumber);
-        $order->{'ecost'}= $input->param('price'.$ordernumber) - (($input->param('price'.$ordernumber) /100) * $bookseller->{'discount'});
+        $order->{'ecost'}= $input->param('price'.$ordernumber) - (($input->param('price'.$ordernumber) /100) * $bookseller->discount);
         $order->{'rrp'} = $input->param('price'.$ordernumber);
         $order->{'quantity'}=$input->param('qty'.$ordernumber);
         $order->{'uncertainprice'}=$input->param('uncertainprice'.$ordernumber);
@@ -115,21 +114,21 @@ if ( $op eq 'validate' ) {
 }
 
 $template->param( uncertainpriceorders => \@orders,
-                                   booksellername => "".$bookseller->{'name'},
-                                   booksellerid => $bookseller->{'id'},
-                                   booksellerpostal =>$bookseller->{'postal'},
-                                   bookselleraddress1 => $bookseller->{'address1'},
-                                   bookselleraddress2 => $bookseller->{'address2'},
-                                   bookselleraddress3 => $bookseller->{'address3'},
-                                   bookselleraddress4 => $bookseller->{'address4'},
-                                   booksellerphone =>$bookseller->{'phone'},
-                                   booksellerfax => $bookseller->{'fax'},
-                                   booksellerurl => $bookseller->{'url'},
-                                   booksellernotes => $bookseller->{'notes'},
-                                   basketcount   => $bookseller->{'basketcount'},
-                                   subscriptioncount   => $bookseller->{'subscriptioncount'},
-                                   active => $bookseller->{active},
+                                   booksellername => "".$bookseller->name,
+                                   booksellerid => $bookseller->id,
+                                   booksellerpostal =>$bookseller->postal,
+                                   bookselleraddress1 => $bookseller->address1,
+                                   bookselleraddress2 => $bookseller->address2,
+                                   bookselleraddress3 => $bookseller->address3,
+                                   bookselleraddress4 => $bookseller->address4,
+                                   booksellerphone =>$bookseller->phone,
+                                   booksellerfax => $bookseller->fax,
+                                   booksellerurl => $bookseller->url,
+                                   booksellernotes => $bookseller->notes,
+                                   basketcount   => $bookseller->baskets->count,
+                                   subscriptioncount   => $bookseller->subscriptions->count,
+                                   active => $bookseller->active,
                                    owner => $owner,
                                    scriptname => "/cgi-bin/koha/acqui/uncertainprice.pl");
-$template->{'VARS'}->{'contacts'} = $bookseller->{'contacts'};
+$template->{'VARS'}->{'contacts'} = $bookseller->contacts;
 output_html_with_http_headers $input, $cookie, $template->output;
index 04f4b5f..822d7a0 100755 (executable)
@@ -52,10 +52,11 @@ use List::Util;
 use C4::Context;
 use C4::Auth;
 
-use C4::Bookseller qw( ModBookseller AddBookseller );
-use C4::Bookseller::Contact;
 use C4::Biblio;
 use C4::Output;
+
+use Koha::Acquisition::Bookseller::Contacts;
+use Koha::Acquisition::Booksellers;
 use CGI qw ( -utf8 );
 
 my $input=new CGI;
@@ -108,15 +109,27 @@ for my $cnt (0..scalar(@{$contact_info{'id'}})) {
         $contact{$_} = $contact_info{$_}->[$cnt];
         $real_contact = 1 if $contact{$_};
     }
-    push @contacts, C4::Bookseller::Contact->new(\%contact) if $real_contact;
+    push @contacts, \%contact if $real_contact;
 }
 
 if($data{'name'}) {
-       if ($data{'id'}){
-        ModBookseller(\%data, \@contacts);
-       } else {
-        $data{id}=AddBookseller(\%data, \@contacts);
-       }
+    if ( $data{id} ) {
+        # Update
+        my $bookseller = Koha::Acquisition::Booksellers->find( $data{id} )->set(\%data)->store;
+        # Delete existing contacts
+        $bookseller->contacts->delete;
+    } else {
+        # Insert
+        delete $data{id}; # Remove the key if exists
+        my $bookseller = Koha::Acquisition::Bookseller->new( \%data )->store;
+        $data{id} = $bookseller->id;
+    }
+    # Insert contacts
+    for my $contact ( @contacts ) {
+        $contact->{booksellerid} = $data{id};
+        Koha::Acquisition::Bookseller::Contact->new( $contact )->store
+    }
+
     #redirect to booksellers.pl
     print $input->redirect("booksellers.pl?booksellerid=".$data{id});
 } else {
index 061bd46..d7bd2ee 100755 (executable)
@@ -29,7 +29,7 @@ use C4::Context;
 use C4::Breeding;
 use C4::Koha;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 use Koha::BiblioFrameworks;
 
 my $input           = new CGI;
@@ -52,7 +52,7 @@ $page               = $input->param('goto_page') if $input->param('changepage_go
 # get framework list
 my $frameworks = Koha::BiblioFrameworks->search({}, { order_by => ['frameworktext'] });
 
-my $vendor = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $vendor = Koha::Acquisition::Booksellers->find( $booksellerid );
 
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
     {
@@ -66,7 +66,7 @@ $template->param(
         frameworks   => $frameworks,
         booksellerid => $booksellerid,
         basketno     => $basketno,
-        name         => $vendor->{'name'},
+        name         => $vendor->name,
         isbn         => $isbn,
         issn         => $issn,
         lccn         => $lccn,
index 57a9fce..e35b057 100755 (executable)
@@ -29,14 +29,14 @@ use C4::Output;
 use C4::Contract;
 use Koha::DateUtils;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 
 my $input          = new CGI;
 my $contractnumber = $input->param('contractnumber');
 my $booksellerid   = $input->param('booksellerid');
 my $op             = $input->param('op') || 'list';
 
-my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
 
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
     {   template_name   => "admin/aqcontract.tt",
@@ -51,10 +51,10 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
 $template->param(
     contractnumber => $contractnumber,
     booksellerid   => $booksellerid,
-    booksellername => $bookseller->{name},
-    basketcount   => $bookseller->{'basketcount'},
-    active         => $bookseller->{active},
-    subscriptioncount   => $bookseller->{'subscriptioncount'},
+    booksellername => $bookseller->name,
+    basketcount   => $bookseller->baskets->count,
+    active         => $bookseller->active,
+    subscriptioncount   => $bookseller->subscriptions->count,
 );
 
 #ADD_FORM: called if $op is 'add_form'. Used to create form to add or  modify a record
index 5258a2f..09b6a74 100755 (executable)
@@ -25,7 +25,7 @@ use C4::Auth;
 use C4::Context;
 use C4::Output;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 use Koha::Acquisition::Currency;
 use Koha::Acquisition::Currencies;
 
@@ -95,7 +95,7 @@ if ( $op eq 'add_form' ) {
     # TODO rewrite the following when Koha::Acquisition::Orders will use Koha::Objects
     my $schema = Koha::Database->schema;
     my $nb_of_orders = $schema->resultset('Aqorder')->search( { currency => $currency->currency } )->count;
-    my $nb_of_vendors = Koha::Acquisition::Bookseller->search( { -or => { listprice => $currency->currency, invoiceprice => $currency->currency } });
+    my $nb_of_vendors = Koha::Acquisition::Booksellers->search( { -or => { listprice => $currency->currency, invoiceprice => $currency->currency } });
     $template->param(
         currency     => $currency,
         nb_of_orders => $nb_of_orders,
index b5b13d5..125b103 100755 (executable)
@@ -34,7 +34,7 @@ use C4::Members; # to use GetMember
 use C4::Search;                # enabled_staff_search_views
 use C4::Reserves qw(GetReservesFromBiblionumber);
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 use Koha::AuthorisedValues;
 use Koha::DateUtils;
 use Koha::Items;
@@ -160,8 +160,8 @@ foreach my $item (@items){
     $item->{'orderdate'}               = $order->{'entrydate'};
     if ($item->{'basketno'}){
            my $basket = GetBasket($item->{'basketno'});
-        my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $basket->{booksellerid} });
-           $item->{'vendor'} = $bookseller->{'name'};
+        my $bookseller = Koha::Acquisition::Booksellers->find( $basket->{booksellerid} );
+        $item->{'vendor'} = $bookseller->name;
     }
     $item->{'invoiceid'}               = $order->{'invoiceid'};
     if($item->{invoiceid}) {
index 4be4d84..595b6ed 100755 (executable)
@@ -49,7 +49,7 @@ use CGI qw ( -utf8 );
 use C4::Acquisition qw( SearchOrders );
 use Koha::DateUtils;
 
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 
 my $query=new CGI;
 my ($template, $loggedinuser, $cookie)
@@ -62,7 +62,7 @@ my ($template, $loggedinuser, $cookie)
                  });
 
 my $supplier=$query->param('supplier');
-my @suppliers = Koha::Acquisition::Bookseller->search({ name => $supplier });
+my @suppliers = Koha::Acquisition::Booksellers->search({ name => $supplier });
 #my $count = scalar @suppliers;
 
 #build result page
index 1cb2f9b..b7e7c05 100755 (executable)
@@ -122,7 +122,7 @@ if ( defined $subscriptionid ) {
     my $lastOrderReceived = GetLastOrderReceivedFromSubscriptionid $subscriptionid;
     if ( defined $lastOrderNotReceived ) {
         my $basket = GetBasket $lastOrderNotReceived->{basketno};
-        my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $basket->{booksellerid} });
+        my $bookseller = Koha::Acquisition::Booksellers->find( $basket->{booksellerid} );
         ( $tmpl_infos->{value_tax_included_ordered}, $tmpl_infos->{value_tax_excluded_ordered} ) = get_value_with_gst_params ( $lastOrderNotReceived->{ecost}, $lastOrderNotReceived->{tax_rate}, $bookseller );
         $tmpl_infos->{value_tax_included_ordered} = sprintf( "%.2f", $tmpl_infos->{value_tax_included_ordered} );
         $tmpl_infos->{value_tax_excluded_ordered} = sprintf( "%.2f", $tmpl_infos->{value_tax_excluded_ordered} );
@@ -132,7 +132,7 @@ if ( defined $subscriptionid ) {
     }
     if ( defined $lastOrderReceived ) {
         my $basket = GetBasket $lastOrderReceived->{basketno};
-        my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $basket->{booksellerid} });
+        my $bookseller = Koha::Acquisition::Booksellers->find( $basket->{booksellerid} );
         ( $tmpl_infos->{value_tax_included_spent}, $tmpl_infos->{value_tax_excluded_spent} ) = get_value_with_gst_params ( $lastOrderReceived->{unitprice}, $lastOrderReceived->{tax_rate}, $bookseller );
         $tmpl_infos->{value_tax_included_spent} = sprintf( "%.2f", $tmpl_infos->{value_tax_included_spent} );
         $tmpl_infos->{value_tax_excluded_spent} = sprintf( "%.2f", $tmpl_infos->{value_tax_excluded_spent} );
@@ -193,7 +193,7 @@ sub get_value_with_gst_params {
     my $value = shift;
     my $tax_rate = shift;
     my $bookseller = shift;
-    if ( $bookseller->{listincgst} ) {
+    if ( $bookseller->listincgst ) {
         return ( $value, $value / ( 1 + $tax_rate ) );
     } else {
         return ( $value * ( 1 + $tax_rate ), $value );
@@ -204,7 +204,7 @@ sub get_tax_excluded {
     my $value = shift;
     my $tax_rate = shift;
     my $bookseller = shift;
-    if ( $bookseller->{invoiceincgst} ) {
+    if ( $bookseller->invoiceincgst ) {
         return $value / ( 1 + $tax_rate );
     } else {
         return $value;
@@ -215,7 +215,7 @@ sub get_gst {
     my $value = shift;
     my $tax_rate = shift;
     my $bookseller = shift;
-    if ( $bookseller->{invoiceincgst} ) {
+    if ( $bookseller->invoiceincgst ) {
         return $value / ( 1 + $tax_rate ) * $tax_rate;
     } else {
         return $value * ( 1 + $tax_rate ) - $value;
index d94a04c..f89c7f6 100644 (file)
@@ -8,14 +8,13 @@ use Module::Load::Conditional qw/check_install/;
 
 BEGIN {
     if ( check_install( module => 'Test::DBIx::Class' ) ) {
-        plan tests => 17;
+        plan tests => 16;
     } else {
         plan skip_all => "Need Test::DBIx::Class"
     }
 }
 
 use_ok('C4::Acquisition');
-use_ok('C4::Bookseller');
 use_ok('C4::Context');
 use_ok('Koha::Number::Price');
 
@@ -36,6 +35,13 @@ fixtures_ok [
         [ qw/ currency symbol rate active / ],
         [[ 'my_cur', '€', 1, 1, ]],
     ],
+    Aqbookseller => [
+        [ qw/ id name listincgst invoiceincgst / ],
+        [ 1, '0 0', 0, 0 ],
+        [ 2, '0 1', 0, 1 ],
+        [ 3, '1 0', 1, 0 ],
+        [ 4, '1 1', 1, 1 ],
+    ],
 ], 'add currency fixtures';
 
 my $bookseller_module = Test::MockModule->new('Koha::Acquisition::Bookseller');
@@ -48,12 +54,6 @@ for my $currency_format ( qw( US FR ) ) {
     t::lib::Mocks::mock_preference( 'CurrencyFormat', $currency_format );
     subtest 'Configuration 1: 0 0' => sub {
         plan tests => 8;
-        $bookseller_module->mock(
-            'fetch',
-            sub {
-                return { listincgst => 0, invoiceincgst => 0 };
-            }
-        );
 
         my $biblionumber_0_0 = 42;
 
@@ -74,7 +74,7 @@ for my $currency_format ( qw( US FR ) ) {
         $order_0_0 = C4::Acquisition::populate_order_with_prices(
             {
                 order        => $order_0_0,
-                booksellerid => 'just_something',
+                booksellerid => 1,
                 ordering     => 1,
             }
         );
@@ -123,7 +123,7 @@ for my $currency_format ( qw( US FR ) ) {
         $order_0_0 = C4::Acquisition::populate_order_with_prices(
             {
                 order        => $order_0_0,
-                booksellerid => 'just_something',
+                booksellerid => 1,
                 receiving    => 1,
             }
         );
@@ -156,12 +156,6 @@ for my $currency_format ( qw( US FR ) ) {
 
     subtest 'Configuration 1: 1 1' => sub {
         plan tests => 8;
-        $bookseller_module->mock(
-            'fetch',
-            sub {
-                return { listincgst => 1, invoiceincgst => 1 };
-            }
-        );
 
         my $biblionumber_1_1 = 43;
         my $order_1_1        = {
@@ -182,7 +176,7 @@ for my $currency_format ( qw( US FR ) ) {
         $order_1_1 = C4::Acquisition::populate_order_with_prices(
             {
                 order        => $order_1_1,
-                booksellerid => 'just_something',
+                booksellerid => 4,
                 ordering     => 1,
             }
         );
@@ -231,7 +225,7 @@ for my $currency_format ( qw( US FR ) ) {
         $order_1_1 = C4::Acquisition::populate_order_with_prices(
             {
                 order        => $order_1_1,
-                booksellerid => 'just_something',
+                booksellerid => 4,
                 receiving    => 1,
             }
         );
@@ -264,12 +258,6 @@ for my $currency_format ( qw( US FR ) ) {
 
     subtest 'Configuration 1: 1 0' => sub {
         plan tests => 8;
-        $bookseller_module->mock(
-            'fetch',
-            sub {
-                return { listincgst => 1, invoiceincgst => 0 };
-            }
-        );
 
         my $biblionumber_1_0 = 44;
         my $order_1_0        = {
@@ -290,7 +278,7 @@ for my $currency_format ( qw( US FR ) ) {
         $order_1_0 = C4::Acquisition::populate_order_with_prices(
             {
                 order        => $order_1_0,
-                booksellerid => 'just_something',
+                booksellerid => 3,
                 ordering     => 1,
             }
         );
@@ -339,7 +327,7 @@ for my $currency_format ( qw( US FR ) ) {
         $order_1_0 = C4::Acquisition::populate_order_with_prices(
             {
                 order        => $order_1_0,
-                booksellerid => 'just_something',
+                booksellerid => 3,
                 receiving    => 1,
             }
         );
@@ -372,12 +360,6 @@ for my $currency_format ( qw( US FR ) ) {
 
     subtest 'Configuration 1: 0 1' => sub {
         plan tests => 8;
-        $bookseller_module->mock(
-            'fetch',
-            sub {
-                return { listincgst => 0, invoiceincgst => 1 };
-            }
-        );
 
         my $biblionumber_0_1 = 45;
         my $order_0_1        = {
@@ -398,7 +380,7 @@ for my $currency_format ( qw( US FR ) ) {
         $order_0_1 = C4::Acquisition::populate_order_with_prices(
             {
                 order        => $order_0_1,
-                booksellerid => 'just_something',
+                booksellerid => 2,
                 ordering     => 1,
             }
         );
@@ -447,7 +429,7 @@ for my $currency_format ( qw( US FR ) ) {
         $order_0_1 = C4::Acquisition::populate_order_with_prices(
             {
                 order        => $order_0_1,
-                booksellerid => 'just_something',
+                booksellerid => 2,
                 receiving    => 1,
             }
         );
index 4eacccf..b51dc9c 100755 (executable)
@@ -19,17 +19,15 @@ use Modern::Perl;
 
 use POSIX qw(strftime);
 
-use Test::More tests => 65;
+use Test::More tests => 63;
 use Koha::Database;
 
 BEGIN {
     use_ok('C4::Acquisition');
-    use_ok('C4::Bookseller');
     use_ok('C4::Biblio');
     use_ok('C4::Budgets');
-    use_ok('C4::Bookseller');
     use_ok('Koha::Acquisition::Order');
-    use_ok('Koha::Acquisition::Bookseller');
+    use_ok('Koha::Acquisition::Booksellers');
 }
 
 # Sub used for testing C4::Acquisition subs returning order(s):
@@ -125,7 +123,7 @@ my $dbh = C4::Context->dbh;
 $dbh->{RaiseError} = 1;
 
 # Creating some orders
-my $booksellerid = C4::Bookseller::AddBookseller(
+my $bookseller = Koha::Acquisition::Bookseller->new(
     {
         name         => "my vendor",
         address1     => "bookseller's address",
@@ -133,11 +131,11 @@ my $booksellerid = C4::Bookseller::AddBookseller(
         active       => 1,
         deliverytime => 5,
     }
-);
-
-my $booksellerinfo = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+)->store;
+my $booksellerid = $bookseller->id;
 
-is( $booksellerinfo->{deliverytime},
+my $booksellerinfo = Koha::Acquisition::Booksellers->find( $booksellerid );
+is( $booksellerinfo->deliverytime,
     5, 'set deliverytime when creating vendor (Bug 10556)' );
 
 my ( $basket, $basketno );
index 288ff53..94aae51 100644 (file)
@@ -24,12 +24,12 @@ use C4::Context;
 use C4::Acquisition;
 use C4::Biblio;
 use C4::Items;
-use C4::Bookseller;
 use C4::Budgets;
 use t::lib::Mocks;
 
 use Koha::Database;
 use Koha::DateUtils;
+use Koha::Acquisition::Booksellers;
 use Koha::Acquisition::Order;
 use MARC::Record;
 
@@ -41,17 +41,17 @@ $dbh->{RaiseError} = 1;
 my $builder = t::lib::TestBuilder->new;
 my $itemtype = $builder->build({ source => 'Itemtype' })->{ itemtype };
 
-my $booksellerid1 = C4::Bookseller::AddBookseller(
+my $bookseller = Koha::Acquisition::Bookseller->new(
     {
         name => "my vendor 1",
         address1 => "bookseller's address",
         phone => "0123456",
         active => 1
     }
-);
+)->store;
 
 my $basketno1 = C4::Acquisition::NewBasket(
-    $booksellerid1
+    $bookseller->id
 );
 
 my $budgetid = C4::Budgets::AddBudget(
index b742ddf..c25d11b 100644 (file)
@@ -6,7 +6,6 @@ use Data::Dumper;
 
 use C4::Acquisition qw( NewBasket GetBasketsInfosByBookseller );
 use C4::Biblio qw( AddBiblio );
-use C4::Bookseller qw( AddBookseller );
 use C4::Budgets qw( AddBudget );
 use C4::Context;
 use Koha::Database;
@@ -18,7 +17,7 @@ $schema->storage->txn_begin();
 my $dbh = C4::Context->dbh;
 $dbh->{RaiseError} = 1;
 
-my $supplierid = C4::Bookseller::AddBookseller(
+my $supplier = Koha::Acquisition::Bookseller->new(
     {
         name => 'my vendor',
         address1 => 'bookseller\'s address',
@@ -26,7 +25,8 @@ my $supplierid = C4::Bookseller::AddBookseller(
         active => 1,
         deliverytime => 5,
     }
-);
+)->store;
+my $supplierid = $supplier->id;
 
 my $basketno;
 ok($basketno = NewBasket($supplierid, 1), 'NewBasket(  $supplierid , 1  ) returns $basketno');
index 3447b27..1d7b142 100644 (file)
@@ -5,7 +5,6 @@ use Modern::Perl;
 use Test::More;
 use C4::Acquisition;
 use C4::Biblio;
-use C4::Bookseller;
 use C4::Budgets;
 use Koha::Database;
 use Koha::Acquisition::Order;
@@ -18,17 +17,17 @@ $schema->storage->txn_begin();
 my $dbh = C4::Context->dbh;
 $dbh->{RaiseError} = 1;
 
-my $booksellerid = C4::Bookseller::AddBookseller(
+my $bookseller = Koha::Acquisition::Bookseller->new(
     {
         name => "my vendor",
         address1 => "bookseller's address",
         phone => "0123456",
         active => 1
     }
-);
+)->store;
 
 my $basketno = C4::Acquisition::NewBasket(
-    $booksellerid
+    $bookseller->id
 );
 
 my $budgetid = C4::Budgets::AddBudget(
index a929ff3..055b645 100644 (file)
@@ -3,10 +3,9 @@
 use Modern::Perl;
 
 use C4::Biblio qw( AddBiblio );
-use C4::Bookseller qw( AddBookseller );
 
 use Koha::Acquisition::Order;
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
 use Koha::Database;
 
 use Test::More tests => 24;
@@ -22,16 +21,17 @@ $dbh->{RaiseError} = 1;
 
 $dbh->do(q{DELETE FROM aqinvoices});
 
-my $booksellerid = C4::Bookseller::AddBookseller(
+my $bookseller = Koha::Acquisition::Bookseller->new(
     {
         name => "my vendor",
         address1 => "bookseller's address",
         phone => "0123456",
         active => 1
     }
-);
+)->store;
+my $booksellerid = $bookseller->id;
 
-my $booksellerinfo = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $booksellerinfo = Koha::Acquisition::Booksellers->find( $booksellerid );
 my $basketno = NewBasket($booksellerid, 1);
 my $basket   = GetBasket($basketno);
 
index b491075..a6deef8 100644 (file)
@@ -5,11 +5,11 @@ use Modern::Perl;
 use Test::More tests => 7;
 use C4::Acquisition;
 use C4::Biblio;
-use C4::Bookseller;
 use C4::Budgets;
 use MARC::Record;
 use Koha::Database;
 use Koha::DateUtils qw( dt_from_string output_pref );
+use Koha::Acquisition::Booksellers;
 use Koha::Acquisition::Order;
 
 my $schema = Koha::Database->new()->schema();
@@ -17,17 +17,17 @@ $schema->storage->txn_begin();
 my $dbh = C4::Context->dbh;
 $dbh->{RaiseError} = 1;
 
-my $booksellerid = C4::Bookseller::AddBookseller(
+my $bookseller = Koha::Acquisition::Bookseller->new(
     {
         name => "my vendor",
         address1 => "bookseller's address",
         phone => "0123456",
         active => 1
     }
-);
+)->store;
 
 my $basketno = C4::Acquisition::NewBasket(
-    $booksellerid
+    $bookseller->id
 );
 
 my $budgetid = C4::Budgets::AddBudget(
@@ -87,4 +87,4 @@ $order = Koha::Acquisition::Order->fetch({ ordernumber => $ordernumber });
 is( $order->{quantityreceived}, 0, 'Koha::Acquisition::Order->insert set quantityreceivedto 0 if undef is given' );
 is( $order->{entrydate}, output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 }), 'Koha::Acquisition::Order->insert set entrydate to today' );
 
-$schema->storage->txn_rollback();
\ No newline at end of file
+$schema->storage->txn_rollback();
index d0a970a..4641894 100644 (file)
@@ -1,10 +1,9 @@
 use Modern::Perl;
 
-use Test::More tests => 13;
+use Test::More tests => 12;
 
 use_ok('C4::Acquisition');
 use_ok('C4::Biblio');
-use_ok('C4::Bookseller');
 use_ok('C4::Budgets');
 use_ok('C4::Serials');
 
@@ -17,14 +16,14 @@ $schema->storage->txn_begin();
 my $dbh = C4::Context->dbh;
 $dbh->{RaiseError} = 1;
 
-my $booksellerid = C4::Bookseller::AddBookseller(
+my $bookseller = Koha::Acquisition::Bookseller->new(
     {
         name => "my vendor",
         address1 => "bookseller's address",
         phone => "0123456",
         active => 1
     }
-);
+)->store;
 
 my ($biblionumber, $biblioitemnumber) = AddBiblio(MARC::Record->new, '');
 my $budgetid;
@@ -53,7 +52,7 @@ my $subscriptionid = NewSubscription(
 die unless $subscriptionid;
 
 my ($basket, $basketno);
-ok($basketno = NewBasket($booksellerid, 1), "NewBasket(  $booksellerid , 1  ) returns $basketno");
+ok($basketno = NewBasket($bookseller->id, 1), "NewBasket(  " . $bookseller->id . ", 1  ) returns $basketno");
 
 my $cost = 42.00;
 my $subscription = GetSubscription( $subscriptionid );
@@ -83,7 +82,7 @@ is ( $order->{subscriptionid}, $subscription->{subscriptionid}, "test subscripti
 ok( $order->{ecost} == $cost, "test cost for the last order not received");
 
 $dbh->do(q{DELETE FROM aqinvoices});
-my $invoiceid = AddInvoice(invoicenumber => 'invoice1', booksellerid => $booksellerid, unknown => "unknown");
+my $invoiceid = AddInvoice(invoicenumber => 'invoice1', booksellerid => $bookseller->id, unknown => "unknown");
 
 my $invoice = GetInvoice( $invoiceid );
 $invoice->{datereceived} = '02-01-2013';
index 2d09ef5..4a50440 100644 (file)
@@ -3,10 +3,10 @@ use Test::More tests => 3;
 
 use C4::Acquisition;
 use C4::Biblio;
-use C4::Bookseller;
 use C4::Letters;
 use Koha::Database;
 use Koha::Acquisition::Order;
+use Koha::Acquisition::Booksellers;
 
 use t::lib::TestBuilder;
 
@@ -19,16 +19,16 @@ my $library = $builder->build({
 });
 
 # Creating some orders
-my $booksellerid = C4::Bookseller::AddBookseller(
+my $bookseller = Koha::Acquisition::Bookseller->new(
     {
         name         => "my vendor",
         address1     => "bookseller's address",
         phone        => "0123456",
         active       => 1,
     }
-);
+)->store;
 
-my $basketno = NewBasket( $booksellerid, 1 );
+my $basketno = NewBasket( $bookseller->id, 1 );
 
 my $budgetid = C4::Budgets::AddBudget(
     {
@@ -61,7 +61,7 @@ my $ordernumber = $order->{ordernumber};
 
 my $invoiceid = AddInvoice(
     invoicenumber => 'invoice',
-    booksellerid  => $booksellerid,
+    booksellerid  => $bookseller->id,
     unknown       => "unknown"
 );
 
index d067747..f0e7dc8 100644 (file)
@@ -7,7 +7,6 @@ use C4::Context;
 use C4::Acquisition;
 use C4::Biblio;
 use C4::Items;
-use C4::Bookseller;
 use C4::Budgets;
 use Koha::Acquisition::Order;
 use t::lib::Mocks;
index efb8e00..a25d2a2 100644 (file)
@@ -7,10 +7,10 @@ use C4::Context;
 use C4::Acquisition;
 use C4::Biblio;
 use C4::Items;
-use C4::Bookseller;
 use C4::Budgets;
 use Koha::Database;
 use Koha::DateUtils;
+use Koha::Acquisition::Booksellers;
 use Koha::Acquisition::Order;
 use MARC::Record;
 
@@ -20,30 +20,30 @@ $schema->storage->txn_begin();
 my $dbh = C4::Context->dbh;
 $dbh->{RaiseError} = 1;
 
-my $booksellerid1 = C4::Bookseller::AddBookseller(
+my $bookseller1 = Koha::Acquisition::Bookseller->new(
     {
         name => "my vendor 1",
         address1 => "bookseller's address",
         phone => "0123456",
         active => 1
     }
-);
+)->store;
 
 my $basketno1 = C4::Acquisition::NewBasket(
-    $booksellerid1
+    $bookseller1->id
 );
 
-my $booksellerid2 = C4::Bookseller::AddBookseller(
+my $bookseller2 = Koha::Acquisition::Bookseller->new(
     {
         name => "my vendor 2",
         address1 => "bookseller's address",
         phone => "0123456",
         active => 1
     }
-);
+)->store;
 
 my $basketno2 = C4::Acquisition::NewBasket(
-    $booksellerid2
+    $bookseller2->id
 );
 
 my $budgetid = C4::Budgets::AddBudget(
index ad489e7..aba4824 100644 (file)
@@ -5,10 +5,10 @@ use Modern::Perl;
 use Test::More tests => 6;
 use C4::Acquisition;
 use C4::Biblio qw( AddBiblio DelBiblio );
-use C4::Bookseller;
 use C4::Budgets;
 use C4::Context;
 use Koha::Database;
+use Koha::Acquisition::Bookseller;
 use Koha::Acquisition::Order;
 
 # Start transaction
@@ -22,17 +22,17 @@ $dbh->do(q{
     DELETE FROM aqorders;
 });
 
-my $booksellerid = C4::Bookseller::AddBookseller(
+my $bookseller = Koha::Acquisition::Bookseller->new(
     {
         name => "my vendor",
         address1 => "bookseller's address",
         phone => "0123456",
         active => 1
     }
-);
+)->store;
 
 my $basketno = C4::Acquisition::NewBasket(
-    $booksellerid
+    $bookseller->id
 );
 
 my $budgetid = C4::Budgets::AddBudget(
index 91d6cd3..0a56ce0 100644 (file)
@@ -3,7 +3,6 @@
 use Modern::Perl;
 use Test::More tests => 40;
 
-use C4::Bookseller qw( AddBookseller );
 use C4::Context;
 use Koha::AdditionalField;
 
@@ -108,15 +107,6 @@ use C4::Serials;
 use C4::Serials::Frequency;
 use C4::Serials::Numberpattern;
 
-my $booksellerid = C4::Bookseller::AddBookseller(
-    {
-        name => "my vendor",
-        address1 => "bookseller's address",
-        phone => "0123456",
-        active => 1
-    }
-);
-
 my ($biblionumber, $biblioitemnumber) = AddBiblio(MARC::Record->new, '');
 my $budgetid;
 my $bpid = AddBudgetPeriod({
index 54765bd..77cf3ef 100644 (file)
@@ -2,7 +2,7 @@
 
 use Modern::Perl;
 
-use Test::More tests => 88;
+use Test::More tests => 86;
 use Test::MockModule;
 use Test::Warn;
 
@@ -15,21 +15,19 @@ use C4::Serials;
 use C4::Budgets;
 use C4::Biblio;
 
+use Koha::Acquisition::Booksellers;
 use Koha::Acquisition::Order;
 use Koha::Database;
 
 BEGIN {
     use_ok('C4::Bookseller');
-    use_ok('Koha::Acquisition::Bookseller');
 }
 
 can_ok(
 
     'C4::Bookseller', qw(
-      AddBookseller
-      DelBookseller
       GetBooksellersWithLateOrders
-      ModBookseller )
+    )
 );
 
 #Start transaction
@@ -47,7 +45,7 @@ $dbh->do(q|DELETE FROM aqbooksellers|);
 $dbh->do(q|DELETE FROM subscription|);
 
 #Test AddBookseller
-my $count            = scalar( Koha::Acquisition::Bookseller->search() );
+my $count            = Koha::Acquisition::Booksellers->search()->count();
 my $sample_supplier1 = {
     name          => 'Name1',
     address1      => 'address1_1',
@@ -89,37 +87,39 @@ my $sample_supplier2 = {
     deliverytime  => 2
 };
 
-my $id_supplier1 = C4::Bookseller::AddBookseller($sample_supplier1);
-my $id_supplier2 = C4::Bookseller::AddBookseller($sample_supplier2);
-
-#my $id_bookseller3 = C4::Bookseller::AddBookseller();# NOTE : Doesn't work because the field name cannot be null
+my $supplier1 = Koha::Acquisition::Bookseller->new($sample_supplier1)->store;
+my $id_supplier1 = $supplier1->id;
+my $supplier2 = Koha::Acquisition::Bookseller->new($sample_supplier2)->store;
+my $id_supplier2 = $supplier2->id;
 
 like( $id_supplier1, '/^\d+$/', "AddBookseller for supplier1 return an id" );
 like( $id_supplier2, '/^\d+$/', "AddBookseller for supplier2 return an id" );
-my @b = Koha::Acquisition::Bookseller->search();
-is ( scalar(@b),
+is( Koha::Acquisition::Booksellers->search()->count,
     $count + 2, "Supplier1 and Supplier2 have been added" );
 
 #Test DelBookseller
-my $del = C4::Bookseller::DelBookseller($id_supplier1);
+my $del = $supplier1->delete;
 is( $del, 1, "DelBookseller returns 1 - 1 supplier has been deleted " );
-my $b = Koha::Acquisition::Bookseller->fetch({id => $id_supplier1});
+my $b = Koha::Acquisition::Booksellers->find( $id_supplier1 );
 is( $b,
     undef, "Supplier1  has been deleted - id_supplier1 $id_supplier1 doesnt exist anymore" );
 
 #Test get bookseller
-my @bookseller2 = Koha::Acquisition::Bookseller->search({name => $sample_supplier2->{name} });
+my @bookseller2 = Koha::Acquisition::Booksellers->search({name => $sample_supplier2->{name} });
 is( scalar(@bookseller2), 1, "Get only  Supplier2" );
-$bookseller2[0] = field_filter( $bookseller2[0] );
+for my $bookseller ( @bookseller2 ) {
+    $bookseller = field_filter( $bookseller->unblessed );
+}
 
 $sample_supplier2->{id} = $id_supplier2;
 is_deeply( $bookseller2[0], $sample_supplier2,
-    "Koha::Acquisition::Bookseller->search returns the right informations about $sample_supplier2" );
+    "Koha::Acquisition::Booksellers->search returns the right informations about supplier $sample_supplier2->{name}" );
 
-$id_supplier1 = C4::Bookseller::AddBookseller($sample_supplier1);
-my @booksellers = Koha::Acquisition::Bookseller->search(); #NOTE :without params, it returns all the booksellers
-for my $i ( 0 .. scalar(@booksellers) - 1 ) {
-    $booksellers[$i] = field_filter( $booksellers[$i] );
+$supplier1 = Koha::Acquisition::Bookseller->new($sample_supplier1)->store;
+$id_supplier1 = $supplier1->id;
+my @booksellers = Koha::Acquisition::Booksellers->search();
+for my $bookseller ( @booksellers ) {
+    $bookseller = field_filter( $bookseller->unblessed );
 }
 
 $sample_supplier1->{id} = $id_supplier1;
@@ -128,30 +128,29 @@ my @tab = ( $sample_supplier1, $sample_supplier2 );
 is_deeply( \@booksellers, \@tab,
     "Returns right fields of Supplier1 and Supplier2" );
 
-#Test basket_count
-my @bookseller1 = Koha::Acquisition::Bookseller->search({name => $sample_supplier1->{name} });
-is( $bookseller1[0]->basket_count, 0, 'Supplier1 has 0 basket' );
+#Test baskets
+my @bookseller1 = Koha::Acquisition::Booksellers->search({name => $sample_supplier1->{name} });
+is( $bookseller1[0]->baskets->count, 0, 'Supplier1 has 0 basket' );
 my $basketno1 =
   C4::Acquisition::NewBasket( $id_supplier1, 'authorisedby1', 'basketname1' );
 my $basketno2 =
   C4::Acquisition::NewBasket( $id_supplier1, 'authorisedby2', 'basketname2' );
-@bookseller1 = Koha::Acquisition::Bookseller::search({ name => $sample_supplier1->{name} });
-is( $bookseller1[0]->basket_count, 2, 'Supplier1 has 2 baskets' );
+@bookseller1 = Koha::Acquisition::Booksellers->search({ name => $sample_supplier1->{name} });
+is( $bookseller1[0]->baskets->count, 2, 'Supplier1 has 2 baskets' );
 
 #Test Koha::Acquisition::Bookseller->new using id
-my $bookseller1fromid = Koha::Acquisition::Bookseller->fetch;
+my $bookseller1fromid = Koha::Acquisition::Booksellers->find;
 is( $bookseller1fromid, undef,
-    "fetch returns undef if no id given" );
-$bookseller1fromid = Koha::Acquisition::Bookseller->fetch({ id => $id_supplier1});
-$bookseller1fromid = field_filter($bookseller1fromid);
+    "find returns undef if no id given" );
+$bookseller1fromid = Koha::Acquisition::Booksellers->find( $id_supplier1 );
+$bookseller1fromid = field_filter($bookseller1fromid->unblessed);
 is_deeply( $bookseller1fromid, $sample_supplier1,
-    "Get Supplier1 (fetch a bookseller by id)" );
+    "Get Supplier1 (find a bookseller by id)" );
 
-#Test basket_count
-$bookseller1fromid = Koha::Acquisition::Bookseller->fetch({ id => $id_supplier1});
-is( $bookseller1fromid->basket_count, 2, 'Supplier1 has 2 baskets' );
+$bookseller1fromid = Koha::Acquisition::Booksellers->find( $id_supplier1 );
+is( $bookseller1fromid->baskets->count, 2, 'Supplier1 has 2 baskets' );
 
-#Test subscription_count
+#Test subscriptions
 my $dt_today    = dt_from_string;
 my $today       = output_pref({ dt => $dt_today, dateformat => 'iso', timeformat => '24hr', dateonly => 1 });
 
@@ -178,8 +177,8 @@ $bib->append_fields(
     MARC::Field->new('500', ' ', ' ', a => 'bib notes'),
 );
 my ($biblionumber, $biblioitemnumber) = AddBiblio($bib, '');
-$bookseller1fromid = Koha::Acquisition::Bookseller->fetch({ id => $id_supplier1 });
-is( $bookseller1fromid->subscription_count,
+$bookseller1fromid = Koha::Acquisition::Booksellers->find( $id_supplier1 );
+is( $bookseller1fromid->subscriptions->count,
     0, 'Supplier1 has 0 subscription' );
 
 my $id_subscription1 = NewSubscription(
@@ -203,8 +202,8 @@ my $id_subscription2 = NewSubscription(
     undef, undef, 0,          undef,         '2013-07-31', 0
 );
 
-$bookseller1fromid = Koha::Acquisition::Bookseller->fetch({ id => $id_supplier1 });
-is( $bookseller1fromid->subscription_count,
+$bookseller1fromid = Koha::Acquisition::Booksellers->find( $id_supplier1 );
+is( $bookseller1fromid->subscriptions->count,
     2, 'Supplier1 has 2 subscriptions' );
 
 #Test ModBookseller
@@ -230,22 +229,12 @@ $sample_supplier2 = {
     deliverytime  => 2,
 };
 
-my $modif1 = C4::Bookseller::ModBookseller();
-is( $modif1, undef,
-    "ModBookseller returns undef if no params given - Nothing happened" );
-$modif1 = C4::Bookseller::ModBookseller($sample_supplier2);
-is( $modif1, 1, "ModBookseller modifies only the supplier2" );
-is( scalar( Koha::Acquisition::Bookseller->search ),
+my $modif1 = Koha::Acquisition::Booksellers->find($id_supplier2)->set($sample_supplier2)->store;
+is( ref $modif1, 'Koha::Acquisition::Bookseller', "ModBookseller has updated the bookseller" );
+is( Koha::Acquisition::Booksellers->search->count,
     $count + 2, "Supplier2 has been modified - Nothing added" );
-
-$modif1 = C4::Bookseller::ModBookseller(
-    {
-        id   => -1,
-        name => 'name3'
-    }
-);
-#is( $modif1, '0E0',
-#    "ModBookseller returns OEO if the id doesnt exist - Nothing modified" );
+$supplier2 = Koha::Acquisition::Booksellers->find($id_supplier2);
+is( $supplier2->name, 'Name2 modified', "supplier's name should have been modified" );
 
 #Test GetBooksellersWithLateOrders
 #Add 2 suppliers
@@ -288,8 +277,10 @@ my $sample_supplier4 = {
     discount      => '3.0000',
     notes         => 'notes3',
 };
-my $id_supplier3 = C4::Bookseller::AddBookseller($sample_supplier3);
-my $id_supplier4 = C4::Bookseller::AddBookseller($sample_supplier4);
+my $supplier3 = Koha::Acquisition::Bookseller->new($sample_supplier3)->store;
+my $id_supplier3 = $supplier3->id;
+my $supplier4 = Koha::Acquisition::Bookseller->new($sample_supplier4)->store;
+my $id_supplier4 = $supplier4->id;
 
 #Add 2 baskets
 my $basketno3 =
@@ -681,69 +672,83 @@ is(
     3,
     'superlibrarian can see all subscriptions with IndependentBranches on (bug 12048)'
 );
+
 #Test contact editing
-my $booksellerid = C4::Bookseller::AddBookseller(
-    {
+my $sample_supplier = {
         name     => "my vendor",
         address1 => "bookseller's address",
         phone    => "0123456",
         active   => 1
-    },
-    [
-        { name => 'John Smith',  phone => '0123456x1' },
-        { name => 'Leo Tolstoy', phone => '0123456x2' },
-    ]
-);
-
-@booksellers = Koha::Acquisition::Bookseller->search({ name => 'my vendor' });
+    };
+my $supplier = Koha::Acquisition::Bookseller->new($sample_supplier)->store;
+my $booksellerid = $supplier->id;
+my $contact1 = Koha::Acquisition::Bookseller::Contact->new({
+        name => 'John Smith',
+        phone => '0123456x1',
+        booksellerid => $booksellerid,
+})->store;
+my $contact2 = Koha::Acquisition::Bookseller::Contact->new({
+        name => 'Leo Tolstoy',
+        phone => '0123456x2',
+        booksellerid => $booksellerid,
+})->store;
+
+@booksellers = Koha::Acquisition::Booksellers->search({ name => 'my vendor' });
 ok(
-    ( grep { $_->{'id'} == $booksellerid } @booksellers ),
-    'Koha::Acquisition::Bookseller->search returns correct record when passed a name'
+    ( grep { $_->id == $booksellerid } @booksellers ),
+    'Koha::Acquisition::Booksellers->search returns correct record when passed a name'
 );
 
-my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
-is( $bookseller->{'id'}, $booksellerid, 'Retrieved desired record' );
-is( $bookseller->{'phone'}, '0123456', 'New bookseller has expected phone' );
+my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
+is( $bookseller->id, $booksellerid, 'Retrieved desired record' );
+is( $bookseller->phone, '0123456', 'New bookseller has expected phone' );
 my $contacts = $bookseller->contacts;
-is( ref $bookseller->contacts,
-    'ARRAY', 'Koha::Acquisition::Bookseller->fetch returns arrayref of contacts' );
+is( $contacts->count,
+    2, 'bookseller should have 2 contacts' );
+my $first_contact = $contacts->next;
 is(
-    ref $bookseller->{'contacts'}->[0],
-    'C4::Bookseller::Contact',
-    'First contact is a contact object'
+    ref $first_contact,
+    'Koha::Acquisition::Bookseller::Contact',
+    'First contact is a AqContact'
 );
-is( $bookseller->{'contacts'}->[0]->phone,
+is( $first_contact->phone,
     '0123456x1', 'Contact has expected phone number' );
-is( scalar @{ $bookseller->{'contacts'} }, 2, 'Saved two contacts' );
 
-pop @{ $bookseller->{'contacts'} };
-$bookseller->{'name'} = 'your vendor';
-$bookseller->{'contacts'}->[0]->phone('654321');
-C4::Bookseller::ModBookseller($bookseller);
-
-$bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+my $second_contact = $contacts->next;
+$second_contact->delete;
+$bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
+$bookseller->name('your vendor')->store;
 $contacts = $bookseller->contacts;
-is( $bookseller->{'name'}, 'your vendor',
+$first_contact = $contacts->next;
+$first_contact->phone('654321');
+$first_contact->store;
+
+$bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
+is( $bookseller->name, 'your vendor',
     'Successfully changed name of vendor' );
-is( $contacts->[0]->phone,
+$contacts = $bookseller->contacts;
+is( $contacts->count,
+    1, 'Only one contact after modification' );
+$first_contact = $contacts->next;
+is( $first_contact->phone,
     '654321',
     'Successfully changed contact phone number by modifying bookseller hash' );
-is( scalar @$contacts,
-    1, 'Only one contact after modification' );
 
-C4::Bookseller::ModBookseller( $bookseller,
-    [ { name => 'John Jacob Jingleheimer Schmidt' } ] );
+$first_contact->name( 'John Jacob Jingleheimer Schmidt' );
+$first_contact->phone(undef);
+$first_contact->store;
 
-$bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+$bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
 $contacts = $bookseller->contacts;
+$first_contact = $contacts->next;
 is(
-    $contacts->[0]->name,
+    $first_contact->name,
     'John Jacob Jingleheimer Schmidt',
     'Changed name of contact'
 );
-is( $contacts->[0]->phone,
+is( $first_contact->phone,
     undef, 'Removed phone number from contact' );
-is( scalar @$contacts,
+is( $contacts->count,
     1, 'Only one contact after modification' );
 
 #End transaction
index 5bc23cb..0611389 100755 (executable)
@@ -7,11 +7,11 @@ BEGIN {
 }
 use C4::Context;
 use C4::Biblio;
-use C4::Bookseller;
 use C4::Acquisition;
 use C4::Members qw( AddMember );
 
 use Koha::Acquisition::Order;
+use Koha::Acquisition::Booksellers;
 
 use t::lib::TestBuilder;
 
@@ -270,7 +270,7 @@ my $budget_id21 = AddBudget(
     }
 );
 
-my $booksellerid = C4::Bookseller::AddBookseller(
+my $bookseller = Koha::Acquisition::Bookseller->new(
     {
         name         => "my vendor",
         address1     => "bookseller's address",
@@ -278,7 +278,8 @@ my $booksellerid = C4::Bookseller::AddBookseller(
         active       => 1,
         deliverytime => 5,
     }
-);
+)->store;
+my $booksellerid = $bookseller->id;
 
 my $basketno = C4::Acquisition::NewBasket( $booksellerid, 1 );
 my ( $biblionumber, $biblioitemnumber ) =
index eefa047..9ca0e18 100644 (file)
@@ -20,8 +20,8 @@
 use Modern::Perl;
 
 use C4::Context;
-use C4::Bookseller;
 use Koha::DateUtils;
+use Koha::Acquisition::Booksellers;
 
 use DateTime::Duration;
 
@@ -40,9 +40,11 @@ $dbh->do(q|DELETE FROM aqcontract|);
 $dbh->do(q|DELETE FROM aqbooksellers|);
 
 
-my $bookseller_id1 = C4::Bookseller::AddBookseller( { name => 'My first bookseller' } );
+my $bookseller1 = Koha::Acquisition::Bookseller->new( { name => 'My first bookseller' } )->store;
+my $bookseller_id1 = $bookseller1->id;
 isnt( $bookseller_id1, undef, 'AddBookseller does not return undef' );
-my $bookseller_id2 = C4::Bookseller::AddBookseller( { name => 'My second bookseller' } );
+my $bookseller2 = Koha::Acquisition::Bookseller->new( { name => 'My second bookseller' } )->store;
+my $bookseller_id2 = $bookseller2->id;
 isnt( $bookseller_id2, undef, 'AddBookseller does not return undef' );
 my $contracts = GetContracts();
 is( @$contracts, 0, 'GetContracts returns the correct number of contracts' );
index 9b5c469..8219e5b 100644 (file)
@@ -18,7 +18,7 @@
 # along with Koha; if not, see <http://www.gnu.org/licenses>.
 
 use Modern::Perl;
-use Test::More tests => 80;
+use Test::More tests => 79;
 use Test::MockModule;
 use Test::Warn;
 
@@ -38,14 +38,14 @@ use_ok('C4::Context');
 use_ok('C4::Members');
 use_ok('C4::Acquisition');
 use_ok('C4::Biblio');
-use_ok('C4::Bookseller');
 use_ok('C4::Letters');
 use t::lib::Mocks;
 use t::lib::TestBuilder;
 use Koha::Database;
 use Koha::DateUtils qw( dt_from_string output_pref );
 use Koha::Acquisition::Order;
-use Koha::Acquisition::Bookseller;
+use Koha::Acquisition::Booksellers;
+use Koha::Acquisition::Bookseller::Contacts;
 use Koha::Libraries;
 my $schema = Koha::Database->schema;
 $schema->storage->txn_begin();
@@ -366,19 +366,19 @@ $dbh->do(q{INSERT INTO letter (module, code, name, title, content) VALUES ('orde
     is( $values->{dateexpiry}, '2015-12-13', "_parseletter doesn't modify its parameters" );
 }
 
-my $booksellerid = C4::Bookseller::AddBookseller(
+my $bookseller = Koha::Acquisition::Bookseller->new(
     {
         name => "my vendor",
         address1 => "bookseller's address",
         phone => "0123456",
         active => 1,
         deliverytime => 5,
-    },
-    [
-        { name => 'John Smith', acqprimary => 1, phone => '0123456x1', claimacquisition => 1, orderacquisition => 1 },
-        { name => 'Leo Tolstoy', phone => '0123456x2', claimissues => 1 },
-    ]
-);
+    }
+)->store;
+my $booksellerid = $bookseller->id;
+
+Koha::Acquisition::Bookseller::Contact->new( { name => 'John Smith',  phone => '0123456x1', claimacquisition => 1, orderacquisition => 1, booksellerid => $booksellerid } )->store;
+Koha::Acquisition::Bookseller::Contact->new( { name => 'Leo Tolstoy', phone => '0123456x2', claimissues      => 1, booksellerid => $booksellerid } )->store;
 my $basketno = NewBasket($booksellerid, 1);
 
 my $budgetid = C4::Budgets::AddBudget({
@@ -416,10 +416,8 @@ warning_like {
     "SendAlerts prints a warning";
 is($err->{'error'}, 'no_email', "Trying to send an alert when there's no e-mail results in an error");
 
-my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
-$bookseller->contacts->[0]->email('testemail@mydomain.com');
-C4::Bookseller::ModBookseller($bookseller);
-$bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid });
+$bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
+$bookseller->contacts->next->email('testemail@mydomain.com')->store;
 
 # Ensure that the preference 'LetterLog' is set to logging
 t::lib::Mocks::mock_preference( 'LetterLog', 'on' );
index e09a076..1ef0cb0 100755 (executable)
@@ -11,10 +11,10 @@ use C4::Serials;
 use C4::Serials::Frequency;
 use C4::Serials::Numberpattern;
 use C4::Debug;
-use C4::Bookseller;
 use C4::Biblio;
 use C4::Budgets;
 use Koha::DateUtils;
+use Koha::Acquisition::Booksellers;
 use t::lib::Mocks;
 use Test::More tests => 48;
 
@@ -32,7 +32,7 @@ $dbh->{RaiseError} = 1;
 my @methods = ('updateClaim');
 can_ok('C4::Serials', @methods);
 
-my $booksellerid = C4::Bookseller::AddBookseller(
+my $bookseller = Koha::Acquisition::Bookseller->new(
     {
         name => "my vendor",
         address1 => "bookseller's address",
index 80126a2..3acb2d3 100644 (file)
@@ -2,8 +2,8 @@ use Modern::Perl;
 use Test::More tests => 17;
 
 use C4::Acquisition;
-use C4::Bookseller;
 use C4::Budgets;
+use Koha::Acquisition::Booksellers;
 use_ok('C4::Serials');
 
 use Koha::DateUtils qw( dt_from_string output_pref );
@@ -74,8 +74,10 @@ my $sample_supplier2 = {
     deliverytime  => 2
 };
 
-my $supplier_id1 = C4::Bookseller::AddBookseller($sample_supplier1);
-my $supplier_id2 = C4::Bookseller::AddBookseller($sample_supplier2);
+my $supplier1 = Koha::Acquisition::Bookseller->new($sample_supplier1)->store;
+my $supplier2 = Koha::Acquisition::Bookseller->new($sample_supplier2)->store;
+my $supplier_id1 = $supplier1->id;
+my $supplier_id2 = $supplier2->id;
 
 my $supplierlist = eval { GetSuppliersWithLateIssues() };
 is( length($@), 0, "No SQL problem in GetSuppliersWithLateIssues" );