Bugzilla – Attachment 31178 Details for
Bug 12830
Move the order-related code into its own module
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 12830: Move the order-related code into Koha::Acquisition::Order
Bug-12830-Move-the-order-related-code-into-KohaAcq.patch (text/plain), 33.22 KB, created by
Jonathan Druart
on 2014-08-27 10:54:54 UTC
(
hide
)
Description:
Bug 12830: Move the order-related code into Koha::Acquisition::Order
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2014-08-27 10:54:54 UTC
Size:
33.22 KB
patch
obsolete
>From 17bd61a7ce80ecb4e4106bc6bda1ffe3b79eb5b2 Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@biblibre.com> >Date: Wed, 27 Aug 2014 12:36:04 +0200 >Subject: [PATCH] Bug 12830: Move the order-related code into > Koha::Acquisition::Order > >The C4::Acquisition module should be exploded in order to add >readability and maintainability to this part of the code. > >This patch is a POC, it introduces a new Koha::Acquisition::Order module and put in >it the code from NewOrder and NewOrderItem. > >Test plan: >1/ Create an order, modify it, receive it, cancel the receipt. >2/ Launch the prove command on all unit tests modified by this patch and >verify that all pass. >--- > C4/Acquisition.pm | 93 ++-------------------- > Koha/Acquisition/Order.pm | 89 +++++++++++++++++++++ > acqui/addorder.pl | 8 +- > acqui/addorderiso2709.pl | 6 +- > acqui/finishreceive.pl | 3 +- > t/db_dependent/Acquisition.t | 7 +- > t/db_dependent/Acquisition/CancelReceipt.t | 17 ++-- > .../Acquisition/GetBasketsInfosByBookseller.t | 16 ++-- > .../Acquisition/GetOrdersByBiblionumber.t | 19 +++-- > t/db_dependent/Acquisition/Invoices.t | 19 +++-- > t/db_dependent/Acquisition/NewOrder.t | 28 +++---- > t/db_dependent/Acquisition/OrderFromSubscription.t | 11 ++- > t/db_dependent/Acquisition/TransferOrder.t | 9 ++- > t/db_dependent/Acquisition/close_reopen_basket.t | 13 +-- > t/db_dependent/Bookseller.t | 26 +++--- > t/db_dependent/Budgets.t | 12 ++- > t/db_dependent/Letters.t | 7 +- > 17 files changed, 216 insertions(+), 167 deletions(-) > create mode 100644 Koha/Acquisition/Order.pm > >diff --git a/C4/Acquisition.pm b/C4/Acquisition.pm >index 68e772d..af76586 100644 >--- a/C4/Acquisition.pm >+++ b/C4/Acquisition.pm >@@ -31,6 +31,7 @@ use C4::Debug; > use C4::Bookseller qw(GetBookSellerFromId); > use C4::Templates qw(gettemplate); > use Koha::DateUtils qw( dt_from_string output_pref ); >+use Koha::Acquisition::Order; > > use Time::localtime; > use HTML::Entities; >@@ -56,13 +57,13 @@ BEGIN { > &ModBasketgroup &NewBasketgroup &DelBasketgroup &GetBasketgroup &CloseBasketgroup > &GetBasketgroups &ReOpenBasketgroup > >- &NewOrder &DelOrder &ModOrder &GetOrder &GetOrders &GetOrdersByBiblionumber >+ &DelOrder &ModOrder &GetOrder &GetOrders &GetOrdersByBiblionumber > &GetLateOrders &GetOrderFromItemnumber > &SearchOrders &GetHistory &GetRecentAcqui > &ModReceiveOrder &CancelReceipt > &GetCancelledOrders &TransferOrder > &GetLastOrderNotReceivedFromSubscriptionid &GetLastOrderReceivedFromSubscriptionid >- &NewOrderItem &ModItemOrder >+ &ModItemOrder > > &GetParcels &GetParcel > >@@ -1228,88 +1229,6 @@ sub GetLastOrderReceivedFromSubscriptionid { > > } > >- >-#------------------------------------------------------------# >- >-=head3 NewOrder >- >- &NewOrder(\%hashref); >- >-Adds a new order to the database. Any argument that isn't described >-below is the new value of the field with the same name in the aqorders >-table of the Koha database. >- >-=over >- >-=item $hashref->{'basketno'} is the basketno foreign key in aqorders, it is mandatory >- >-=item $hashref->{'ordernumber'} is a "minimum order number." >- >-=item $hashref->{'budgetdate'} is effectively ignored. >-If it's undef (anything false) or the string 'now', the current day is used. >-Else, the upcoming July 1st is used. >- >-=item $hashref->{'subscription'} may be either "yes", or anything else for "no". >- >-=item $hashref->{'uncertainprice'} may be 0 for "the price is known" or 1 for "the price is uncertain" >- >-=item defaults entrydate to Now >- >-The following keys are used: "biblionumber", "title", "basketno", "quantity", "order_vendornote", "order_internalnote", "rrp", "ecost", "gstrate", "unitprice", "subscription", "sort1", "sort2", "booksellerinvoicenumber", "listprice", "budgetdate", "purchaseordernumber", "branchcode", "booksellerinvoicenumber", "budget_id". >- >-=back >- >-=cut >- >-sub NewOrder { >- my $orderinfo = shift; >- >- # if these parameters are missing, we can't continue >- for my $key ( qw( basketno quantity biblionumber budget_id ) ) { >- croak "Cannot insert order: Mandatory parameter $key is missing" unless $orderinfo->{$key}; >- } >- >- $orderinfo->{quantityreceived} ||= 0; >- $orderinfo->{entrydate} ||= output_pref({ dt => dt_from_string, dateformat => 'iso'}); >- >- # get only the columns of Aqorder >- my $schema = Koha::Database->new()->schema; >- my $columns = ' '.join(' ', $schema->source('Aqorder')->columns).' '; >- my $new_order = { map { $columns =~ / $_ / ? ($_ => $orderinfo->{$_}) : () } keys(%$orderinfo) }; >- >- my $order = $schema->resultset('Aqorder')->create($new_order); >- my $ordernumber = $rs->id; >- >- unless ( $new_order->{parent_ordernumber} ) { >- $order->update({ parent_ordernumber => $ordernumber }); >- } >- >- return $ordernumber; >-} >- >- >- >- >-#------------------------------------------------------------# >- >-=head3 NewOrderItem >- >- &NewOrderItem(); >- >-=cut >- >-sub NewOrderItem { >- my ($itemnumber, $ordernumber) = @_; >- my $dbh = C4::Context->dbh; >- my $query = qq| >- INSERT INTO aqorders_items >- (itemnumber, ordernumber) >- VALUES (?,?) |; >- >- my $sth = $dbh->prepare($query); >- $sth->execute( $itemnumber, $ordernumber); >-} >- > #------------------------------------------------------------# > > =head3 ModOrder >@@ -1528,7 +1447,7 @@ q{SELECT * FROM aqorders WHERE biblionumber=? AND aqorders.ordernumber=?}, > $order->{'rrp'} = $rrp; > $order->{ecost} = $ecost; > $order->{'orderstatus'} = 'complete'; >- $new_ordernumber = NewOrder($order); >+ $new_ordernumber = Koha::Acquisition::Order->new($order)->insert->{ordernumber}; > > if ($received_items) { > foreach my $itemnumber (@$received_items) { >@@ -1904,8 +1823,8 @@ sub TransferOrder { > delete $order->{'ordernumber'}; > delete $order->{parent_ordernumber}; > $order->{'basketno'} = $basketno; >- my $newordernumber; >- $newordernumber = NewOrder($order); >+ >+ my $newordernumber = Koha::Acquisition::Order->new($order)->insert->{ordernumber}; > > $query = q{ > UPDATE aqorders_items >diff --git a/Koha/Acquisition/Order.pm b/Koha/Acquisition/Order.pm >new file mode 100644 >index 0000000..366195c >--- /dev/null >+++ b/Koha/Acquisition/Order.pm >@@ -0,0 +1,89 @@ >+package Koha::Acquisition::Order; >+ >+use Modern::Perl; >+ >+use Koha::Database; >+use Koha::DateUtils qw( dt_from_string output_pref ); >+ >+use Carp qw( croak ); >+ >+use base qw( Class::Accessor ); >+ >+# TODO fetch order from itemnumber (GetOrderFromItemnnumber) >+# TODO Move code from GetOrder >+sub fetch { >+ my ( $class, $params ) = @_; >+ my $ordernumber = $params->{ordernumber}; >+ return unless $ordernumber; >+ my $schema = Koha::Database->new->schema; >+ >+ my $rs = >+ $schema->resultset('Aqorder')->search( { ordernumber => $ordernumber }, >+ { result_class => 'DBIx::Class::ResultClass::HashRefInflator' } ); >+ >+ return $class->new( $rs->first ); >+} >+ >+sub insert { >+ my ($self) = @_; >+ >+ # if these parameters are missing, we can't continue >+ for my $key (qw( basketno quantity biblionumber budget_id )) { >+ croak "Cannot insert order: 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; >+} >+ >+sub add_item { >+ my ( $self, $itemnumber ) = @_; >+ my $schema = Koha::Database->new->schema; >+ my $rs = $schema->resultset('AqordersItem'); >+ $rs->create({ ordernumber => $self->{ordernumber}, itemnumber => $itemnumber }); >+} >+ >+# TODO Move code from ModItemOrder >+sub update_item { >+ die "not implemented yet"; >+} >+ >+sub del_item { >+ die "not implemented yet"; >+} >+ >+# TODO Move code from ModOrder >+sub update { >+ die "not implemented yet"; >+} >+ >+# TODO Move code from DelOrder >+sub delete { >+ die "not implemented yet"; >+} >+ >+# TODO Move code from TransferOrder >+sub transfer { >+ die "not implemented yet"; >+} >+ >+1; >diff --git a/acqui/addorder.pl b/acqui/addorder.pl >index da1beb0..26bd6ae 100755 >--- a/acqui/addorder.pl >+++ b/acqui/addorder.pl >@@ -123,7 +123,7 @@ use strict; > use warnings; > use CGI; > use C4::Auth; # get_template_and_user >-use C4::Acquisition; # NewOrder DelOrder ModOrder >+use C4::Acquisition; # DelOrder ModOrder > use C4::Suggestions; # ModStatus > use C4::Biblio; # AddBiblio TransformKohaToMarc > use C4::Budgets; >@@ -271,11 +271,12 @@ if ( $orderinfo->{quantity} ne '0' ) { > $orderinfo->{unitprice} = $orderinfo->{ecost} if not defined $orderinfo->{unitprice} or $orderinfo->{unitprice} eq ''; > > # if we already have $ordernumber, then it's an ordermodif >+ my $order = Koha::Acquisition::Order->new($orderinfo); > if ($$orderinfo{ordernumber}) { > ModOrder( $orderinfo); > } > else { # else, it's a new line >- $orderinfo->{ordernumber} = NewOrder($orderinfo); >+ $order->insert; > } > > # now, add items if applicable >@@ -314,8 +315,7 @@ if ( $orderinfo->{quantity} ne '0' ) { > 'ITEM'); > my $record=MARC::Record::new_from_xml($xml, 'UTF-8'); > my ($biblionumber,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$$orderinfo{biblionumber}); >- NewOrderItem($itemnumber, $$orderinfo{ordernumber}); >- >+ $order->add_item($itemnumber); > } > } > >diff --git a/acqui/addorderiso2709.pl b/acqui/addorderiso2709.pl >index 601482a..395cf0f 100755 >--- a/acqui/addorderiso2709.pl >+++ b/acqui/addorderiso2709.pl >@@ -45,6 +45,8 @@ use C4::Suggestions; # GetSuggestion > use C4::Branch; # GetBranches > use C4::Members; > >+use Koha::Acquisition::Order; >+ > my $input = new CGI; > my ($template, $loggedinuser, $cookie, $userflags) = get_template_and_user({ > template_name => "acqui/addorderiso2709.tt", >@@ -256,7 +258,7 @@ if ($op eq ""){ > > # remove uncertainprice flag if we have found a price in the MARC record > $orderinfo{uncertainprice} = 0 if $orderinfo{listprice}; >- my $ordernumber = NewOrder( \%orderinfo ); >+ my $order = Koha::Acquisition::Order->new( \%orderinfo )->insert; > > # 4th, add items if applicable > # parse the item sent by the form, and create an item just for the import_record_id we are dealing with >@@ -278,7 +280,7 @@ if ($op eq ""){ > my $record = MARC::Record::new_from_xml( $xml, 'UTF-8' ); > for (my $qtyloop=1;$qtyloop <= $c_quantity;$qtyloop++) { > my ( $biblionumber, $bibitemnum, $itemnumber ) = AddItemFromMarc( $record, $biblionumber ); >- NewOrderItem( $itemnumber, $ordernumber ); >+ $order->add_item( $itemnumber ); > } > } else { > SetImportRecordStatus( $biblio->{'import_record_id'}, 'imported' ); >diff --git a/acqui/finishreceive.pl b/acqui/finishreceive.pl >index 1723520..7f6ba88 100755 >--- a/acqui/finishreceive.pl >+++ b/acqui/finishreceive.pl >@@ -141,6 +141,7 @@ if ($quantityrec > $origquantityrec ) { > push @{$itemhash{$itemid[$i]}->{'ind_tag'}},$ind_tag[$i]; > push @{$itemhash{$itemid[$i]}->{'indicator'}},$indicator[$i]; > } >+ my $order = Koha::Acquisition::Order->fetch({ ordernumber => $new_ordernumber }); > foreach my $item (keys %itemhash){ > my $xml = TransformHtmlToXml( $itemhash{$item}->{'tags'}, > $itemhash{$item}->{'subfields'}, >@@ -149,7 +150,7 @@ if ($quantityrec > $origquantityrec ) { > $itemhash{$item}->{'indicator'},'ITEM'); > my $record=MARC::Record::new_from_xml($xml, 'UTF-8'); > my (undef,$bibitemnum,$itemnumber) = AddItemFromMarc($record,$biblionumber); >- NewOrderItem($itemnumber, $new_ordernumber); >+ $order->add_item( $itemnumber ); > } > } > } >diff --git a/t/db_dependent/Acquisition.t b/t/db_dependent/Acquisition.t >index d3e9254..2cd38b7 100755 >--- a/t/db_dependent/Acquisition.t >+++ b/t/db_dependent/Acquisition.t >@@ -8,7 +8,7 @@ use POSIX qw(strftime); > > use C4::Bookseller qw( GetBookSellerFromId ); > >-use Test::More tests => 74; >+use Test::More tests => 75; > > BEGIN { > use_ok('C4::Acquisition'); >@@ -16,6 +16,7 @@ BEGIN { > use_ok('C4::Biblio'); > use_ok('C4::Budgets'); > use_ok('C4::Bookseller'); >+ use_ok('Koha::Acquisition::Order'); > } > > # Sub used for testing C4::Acquisition subs returning order(s): >@@ -25,7 +26,7 @@ BEGIN { > # params : > # $exp_fields : arrayref whose elements are the keys we expect to find > # $original_order_content : hashref whose 2 keys str and num contains hashrefs >-# containing content fields of the order created with NewOrder >+# containing content fields of the order created with Koha::Acquisition::Order > # $order_to_check : hashref whose keys/values are the content of an order > # returned by the C4::Acquisition sub we are testing > # returns : >@@ -243,7 +244,7 @@ for ( 0 .. 4 ) { > values %{ $order_content[$_]->{num} }; > @ocontent{ keys %{ $order_content[$_]->{str} } } = > values %{ $order_content[$_]->{str} }; >- $ordernumbers[$_] = C4::Acquisition::NewOrder( \%ocontent ); >+ $ordernumbers[$_] = Koha::Acquisition::Order->new( \%ocontent )->insert->{ordernumber}; > $order_content[$_]->{str}->{ordernumber} = $ordernumbers[$_]; > } > >diff --git a/t/db_dependent/Acquisition/CancelReceipt.t b/t/db_dependent/Acquisition/CancelReceipt.t >index f00cafb..fa24356 100644 >--- a/t/db_dependent/Acquisition/CancelReceipt.t >+++ b/t/db_dependent/Acquisition/CancelReceipt.t >@@ -12,6 +12,7 @@ use C4::Budgets; > use t::lib::Mocks; > > use Koha::DateUtils; >+use Koha::Acquisition::Order; > use MARC::Record; > > my $dbh = C4::Context->dbh; >@@ -44,14 +45,15 @@ my ($biblionumber, $biblioitemnumber) = AddBiblio(MARC::Record->new, ''); > my $itemnumber = AddItem({}, $biblionumber); > > t::lib::Mocks::mock_preference('AcqCreateItem', 'receiving'); >-my $ordernumber = C4::Acquisition::NewOrder( >+my $order = Koha::Acquisition::Order->new( > { > basketno => $basketno1, > quantity => 2, > biblionumber => $biblionumber, > budget_id => $budget->{budget_id}, > } >-); >+)->insert; >+my $ordernumber = $order->{ordernumber}; > > ModReceiveOrder( > { >@@ -62,22 +64,23 @@ ModReceiveOrder( > } > ); > >-NewOrderItem($itemnumber, $ordernumber); >+$order->add_item( $itemnumber ); > > CancelReceipt($ordernumber); > >-my $order = GetOrder( $ordernumber ); >+$order = GetOrder( $ordernumber ); > is(scalar GetItemnumbersFromOrder($order->{ordernumber}), 0, "Create items on receiving: 0 item exist after cancelling a receipt"); > > t::lib::Mocks::mock_preference('AcqCreateItem', 'ordering'); >-$ordernumber = C4::Acquisition::NewOrder( >+$order = Koha::Acquisition::Order->new( > { > basketno => $basketno1, > quantity => 2, > biblionumber => $biblionumber, > budget_id => $budget->{budget_id}, > } >-); >+)->insert; >+$ordernumber = $order->{ordernumber}; > > ModReceiveOrder( > { >@@ -88,7 +91,7 @@ ModReceiveOrder( > } > ); > >-NewOrderItem($itemnumber, $ordernumber); >+$order->add_item( $itemnumber ); > > CancelReceipt($ordernumber); > >diff --git a/t/db_dependent/Acquisition/GetBasketsInfosByBookseller.t b/t/db_dependent/Acquisition/GetBasketsInfosByBookseller.t >index 1c82ced..342d431 100644 >--- a/t/db_dependent/Acquisition/GetBasketsInfosByBookseller.t >+++ b/t/db_dependent/Acquisition/GetBasketsInfosByBookseller.t >@@ -4,11 +4,14 @@ use Modern::Perl; > use Test::More tests => 18; > use Data::Dumper; > >-use C4::Acquisition qw( NewOrder NewBasket GetBasketsInfosByBookseller ); >+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::Acquisition::Order; >+ > my $dbh = C4::Context->dbh; > $dbh->{AutoCommit} = 0; > $dbh->{RaiseError} = 1; >@@ -34,28 +37,29 @@ my $budgetid = C4::Budgets::AddBudget( > ); > my $budget = C4::Budgets::GetBudget( $budgetid ); > >-my ($ordernumber1, $ordernumber2, $ordernumber3); > my ($biblionumber1, $biblioitemnumber1) = AddBiblio(MARC::Record->new, ''); > my ($biblionumber2, $biblioitemnumber2) = AddBiblio(MARC::Record->new, ''); > my ($biblionumber3, $biblioitemnumber3) = AddBiblio(MARC::Record->new, ''); > >-$ordernumber1 = C4::Acquisition::NewOrder( >+my $order1 = Koha::Acquisition::Order->new( > { > basketno => $basketno, > quantity => 2, > biblionumber => $biblionumber1, > budget_id => $budget->{budget_id}, > } >-); >+)->insert; >+my $ordernumber1 = $order1->{ordernumber}; > >-$ordernumber2 = C4::Acquisition::NewOrder( >+my $order2 = Koha::Acquisition::Order->new( > { > basketno => $basketno, > quantity => 4, > biblionumber => $biblionumber2, > budget_id => $budget->{budget_id}, > } >-); >+)->insert; >+my $ordernumber2 = $order2->{ordernumber}; > > my $baskets = C4::Acquisition::GetBasketsInfosByBookseller( $supplierid ); > is( scalar(@$baskets), 1, 'Start: 1 basket' ); >diff --git a/t/db_dependent/Acquisition/GetOrdersByBiblionumber.t b/t/db_dependent/Acquisition/GetOrdersByBiblionumber.t >index be6146d..adc11b6 100644 >--- a/t/db_dependent/Acquisition/GetOrdersByBiblionumber.t >+++ b/t/db_dependent/Acquisition/GetOrdersByBiblionumber.t >@@ -7,6 +7,9 @@ use C4::Acquisition; > use C4::Biblio; > use C4::Bookseller; > use C4::Budgets; >+ >+use Koha::Acquisition::Order; >+ > use MARC::Record; > > #Start transaction >@@ -36,35 +39,37 @@ my $budgetid = C4::Budgets::AddBudget( > > my $budget = C4::Budgets::GetBudget( $budgetid ); > >-my ($ordernumber1, $ordernumber2, $ordernumber3); > my ($biblionumber1, $biblioitemnumber1) = AddBiblio(MARC::Record->new, ''); > my ($biblionumber2, $biblioitemnumber2) = AddBiblio(MARC::Record->new, ''); >-$ordernumber1 = C4::Acquisition::NewOrder( >+my $order1 = Koha::Acquisition::Order->new( > { > basketno => $basketno, > quantity => 24, > biblionumber => $biblionumber1, > budget_id => $budget->{budget_id}, > } >-); >+)->insert; >+my $ordernumber1 = $order1->{ordernumber}; > >-$ordernumber2 = C4::Acquisition::NewOrder( >+my $order2 = Koha::Acquisition::Order->new( > { > basketno => $basketno, > quantity => 42, > biblionumber => $biblionumber2, > budget_id => $budget->{budget_id}, > } >-); >+)->insert; >+my $ordernumber2 = $order1->{ordernumber}; > >-$ordernumber3 = C4::Acquisition::NewOrder( >+my $order3 = Koha::Acquisition::Order->new( > { > basketno => $basketno, > quantity => 4, > biblionumber => $biblionumber2, > budget_id => $budget->{budget_id}, > } >-); >+)->insert; >+my $ordernumber3 = $order1->{ordernumber}; > > my @orders = GetOrdersByBiblionumber(); > is(scalar(@orders), 0, 'GetOrdersByBiblionumber : no argument, return undef'); >diff --git a/t/db_dependent/Acquisition/Invoices.t b/t/db_dependent/Acquisition/Invoices.t >index 9c6dcbc..eac6a23 100644 >--- a/t/db_dependent/Acquisition/Invoices.t >+++ b/t/db_dependent/Acquisition/Invoices.t >@@ -9,6 +9,8 @@ use warnings; > use C4::Bookseller qw( GetBookSellerFromId ); > use C4::Biblio qw( AddBiblio ); > >+use Koha::Acquisition::Order; >+ > use Test::More tests => 22; > > BEGIN { >@@ -42,7 +44,6 @@ my $budgetid = C4::Budgets::AddBudget( > ); > my $budget = C4::Budgets::GetBudget( $budgetid ); > >-my ($ordernumber1, $ordernumber2, $ordernumber3); > my $bibrec1 = MARC::Record->new(); > $bibrec1->append_fields( > MARC::Field->new('020', '', '', 'a' => '1234567890'), >@@ -53,25 +54,28 @@ $bibrec1->append_fields( > my ($biblionumber1, $biblioitemnumber1) = AddBiblio($bibrec1, ''); > my ($biblionumber2, $biblioitemnumber2) = AddBiblio(MARC::Record->new, ''); > my ($biblionumber3, $biblioitemnumber3) = AddBiblio(MARC::Record->new, ''); >-$ordernumber1 = C4::Acquisition::NewOrder( >+ >+my $order1 = Koha::Acquisition::Order->new( > { > basketno => $basketno, > quantity => 2, > biblionumber => $biblionumber1, > budget_id => $budget->{budget_id}, > } >-); >+)->insert; >+my $ordernumber1 = $order1->{ordernumber}; > >-$ordernumber2 = C4::Acquisition::NewOrder( >+my $order2 = Koha::Acquisition::Order->new( > { > basketno => $basketno, > quantity => 1, > biblionumber => $biblionumber2, > budget_id => $budget->{budget_id}, > } >-); >+)->insert; >+my $ordernumber2 = $order2->{ordernumber}; > >-$ordernumber3 = C4::Acquisition::NewOrder( >+my $order3 = Koha::Acquisition::Order->new( > { > basketno => $basketno, > quantity => 1, >@@ -80,7 +84,8 @@ $ordernumber3 = C4::Acquisition::NewOrder( > ecost => 42, > rrp => 42, > } >-); >+)->insert; >+my $ordernumber3 = $order3->{ordernumber}; > > my $invoiceid1 = AddInvoice(invoicenumber => 'invoice1', booksellerid => $booksellerid, unknown => "unknown"); > my $invoiceid2 = AddInvoice(invoicenumber => 'invoice2', booksellerid => $booksellerid, unknown => "unknown", >diff --git a/t/db_dependent/Acquisition/NewOrder.t b/t/db_dependent/Acquisition/NewOrder.t >index 7c7cd81..aa9bfed 100644 >--- a/t/db_dependent/Acquisition/NewOrder.t >+++ b/t/db_dependent/Acquisition/NewOrder.t >@@ -9,6 +9,7 @@ use C4::Bookseller; > use C4::Budgets; > use MARC::Record; > use Koha::DateUtils qw( dt_from_string output_pref ); >+use Koha::Acquisition::Order; > > my $dbh = C4::Context->dbh; > $dbh->{AutoCommit} = 0; >@@ -41,12 +42,12 @@ my ($biblionumber2, $biblioitemnumber2) = AddBiblio(MARC::Record->new, ''); > > > # returns undef and croaks if basketno, quantity, biblionumber or budget_id is missing >-my $ordernumber = eval { C4::Acquisition::NewOrder() }; >+my $order = eval { Koha::Acquisition::Order->new->insert }; > my $return_error = $@; > ok( >- ( ! defined $ordernumber ) >+ ( ! defined $order ) > && ( defined $return_error ), >- "NewOrder with no params returns undef and croaks" >+ "Inserting an order with no params returns undef and croaks" > ); > > my $mandatoryparams = { >@@ -59,28 +60,27 @@ my @mandatoryparams_keys = keys %$mandatoryparams; > foreach my $mandatoryparams_key (@mandatoryparams_keys) { > my %test_missing_mandatoryparams = %$mandatoryparams; > delete $test_missing_mandatoryparams{$mandatoryparams_key}; >- eval { >- $ordernumber = >- C4::Acquisition::NewOrder( \%test_missing_mandatoryparams ); >+ $order = eval { >+ Koha::Acquisition::Order->new( \%test_missing_mandatoryparams )->insert; > }; > $return_error = $@; > my $expected_error = "Cannot insert order: Mandatory parameter $mandatoryparams_key is missing"; > ok( >- ( !( defined $ordernumber ) ) >+ ( !( defined $order ) ) > && ( index( $return_error, $expected_error ) >= 0 ), >-"NewOrder with no $mandatoryparams_key returns undef and croaks with expected error message" >+"Inserting an order with no $mandatoryparams_key returns undef and croaks with expected error message" > ); > } > >-$ordernumber = C4::Acquisition::NewOrder( >+$order = Koha::Acquisition::Order->new( > { > basketno => $basketno, > quantity => 24, > biblionumber => $biblionumber1, > budget_id => $budget->{budget_id}, > } >-); >- >-my $order = C4::Acquisition::GetOrder( $ordernumber ); >-is( $order->{quantityreceived}, 0, 'NewOrder set quantityreceivedto 0 if undef is given' ); >-is( $order->{entrydate}, output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 }), 'NewOrder set entrydate to today' ); >+)->insert; >+my $ordernumber = $order->{ordernumber}; >+$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' ); >diff --git a/t/db_dependent/Acquisition/OrderFromSubscription.t b/t/db_dependent/Acquisition/OrderFromSubscription.t >index 2753248..22bb23c 100644 >--- a/t/db_dependent/Acquisition/OrderFromSubscription.t >+++ b/t/db_dependent/Acquisition/OrderFromSubscription.t >@@ -8,6 +8,8 @@ use_ok('C4::Biblio'); > use_ok('C4::Budgets'); > use_ok('C4::Serials'); > >+use Koha::Acquisition::Order; >+ > # Start transaction > my $dbh = C4::Context->dbh; > $dbh->{AutoCommit} = 0; >@@ -56,8 +58,8 @@ ok($basketno = NewBasket($booksellerid, 1), "NewBasket( $booksellerid , 1 ) re > > my $cost = 42.00; > my $subscription = GetSubscription( $subscriptionid ); >-my $ordernumber; >-$ordernumber = NewOrder({ >+ >+my $order = Koha::Acquisition::Order->new({ > biblionumber => $subscription->{biblionumber}, > entrydate => '01-01-2013', > quantity => 1, >@@ -71,12 +73,13 @@ $ordernumber = NewOrder({ > orderstatus => 'new', > subscriptionid => $subscription->{subscriptionid}, > budget_id => $budget_id, >-}); >+})->insert; >+my $ordernumber = $order->{ordernumber}; > > my $is_currently_on_order = subscriptionCurrentlyOnOrder( $subscription->{subscriptionid} ); > is ( $is_currently_on_order, 1, "The subscription is currently on order"); > >-my $order = GetLastOrderNotReceivedFromSubscriptionid( $subscription->{subscriptionid} ); >+$order = GetLastOrderNotReceivedFromSubscriptionid( $subscription->{subscriptionid} ); > is ( $order->{subscriptionid}, $subscription->{subscriptionid}, "test subscriptionid for the last order not received"); > ok( $order->{ecost} == $cost, "test cost for the last order not received"); > >diff --git a/t/db_dependent/Acquisition/TransferOrder.t b/t/db_dependent/Acquisition/TransferOrder.t >index dfe57ff..d868240 100644 >--- a/t/db_dependent/Acquisition/TransferOrder.t >+++ b/t/db_dependent/Acquisition/TransferOrder.t >@@ -10,6 +10,7 @@ use C4::Items; > use C4::Bookseller; > use C4::Budgets; > use Koha::DateUtils; >+use Koha::Acquisition::Order; > use MARC::Record; > > my $dbh = C4::Context->dbh; >@@ -54,18 +55,18 @@ my $budget = C4::Budgets::GetBudget( $budgetid ); > my ($biblionumber, $biblioitemnumber) = AddBiblio(MARC::Record->new, ''); > my $itemnumber = AddItem({}, $biblionumber); > >-my $ordernumber = C4::Acquisition::NewOrder( >+my $order = Koha::Acquisition::Order->new( > { > basketno => $basketno1, > quantity => 2, > biblionumber => $biblionumber, > budget_id => $budget->{budget_id}, > } >-); >-NewOrderItem($itemnumber, $ordernumber); >+)->insert; >+my $ordernumber = $order->{ordernumber}; >+$order->add_item( $itemnumber ); > > # Begin tests >-my $order; > is(scalar GetOrders($basketno1), 1, "1 order in basket1"); > ($order) = GetOrders($basketno1); > is(scalar GetItemnumbersFromOrder($order->{ordernumber}), 1, "1 item in basket1's order"); >diff --git a/t/db_dependent/Acquisition/close_reopen_basket.t b/t/db_dependent/Acquisition/close_reopen_basket.t >index d5a4789..a5ae64d 100644 >--- a/t/db_dependent/Acquisition/close_reopen_basket.t >+++ b/t/db_dependent/Acquisition/close_reopen_basket.t >@@ -9,6 +9,8 @@ use C4::Bookseller; > use C4::Budgets; > use C4::Context; > >+use Koha::Acquisition::Order; >+ > # Start transaction > my $dbh = C4::Context->dbh; > $dbh->{AutoCommit} = 0; >@@ -43,24 +45,25 @@ my $budget = C4::Budgets::GetBudget( $budgetid ); > my ($biblionumber1, $biblioitemnumber1) = AddBiblio(MARC::Record->new, ''); > my ($biblionumber2, $biblioitemnumber2) = AddBiblio(MARC::Record->new, ''); > >-my ($ordernumber1, $ordernumber2); >-$ordernumber1 = C4::Acquisition::NewOrder( >+my $order1 = Koha::Acquisition::Order->new( > { > basketno => $basketno, > quantity => 24, > biblionumber => $biblionumber1, > budget_id => $budget->{budget_id}, > } >-); >+)->insert; >+my $ordernumber1 = $order1->{ordernumber}; > >-$ordernumber2 = C4::Acquisition::NewOrder( >+my $order2 = Koha::Acquisition::Order->new( > { > basketno => $basketno, > quantity => 42, > biblionumber => $biblionumber2, > budget_id => $budget->{budget_id}, > } >-); >+)->insert; >+my $ordernumber2 = $order2->{ordernumber}; > > my $nb_biblio = C4::Acquisition::GetBiblioCountByBasketno( $basketno ); > is ( $nb_biblio, 2, "There are 2 biblio for this basket" ); >diff --git a/t/db_dependent/Bookseller.t b/t/db_dependent/Bookseller.t >index 3c713b3..023ad45 100644 >--- a/t/db_dependent/Bookseller.t >+++ b/t/db_dependent/Bookseller.t >@@ -14,6 +14,8 @@ use C4::Serials; > use C4::Budgets; > use C4::Biblio; > >+use Koha::Acquisition::Order; >+ > BEGIN { > use_ok('C4::Bookseller'); > } >@@ -350,8 +352,7 @@ is(scalar(@subscriptions), 1, 'search for subscriptions by call number'); > is(scalar(@subscriptions), 1, 'search for subscriptions by location'); > > #Add 4 orders >-my ( $ordernumber1, $ordernumber2, $ordernumber3, $ordernumber4 ); >-$ordernumber1 = C4::Acquisition::NewOrder( >+my $order1 = Koha::Acquisition::Order->new( > { > basketno => $basketno1, > quantity => 24, >@@ -368,8 +369,10 @@ $ordernumber1 = C4::Acquisition::NewOrder( > ecost => 10, > datereceived => '01-06-2013' > } >-); >-$ordernumber2 = C4::Acquisition::NewOrder( >+)->insert; >+my $ordernumber1 = $order1->{ordernumber}; >+ >+my $order2 = Koha::Acquisition::Order->new( > { > basketno => $basketno2, > quantity => 20, >@@ -384,8 +387,10 @@ $ordernumber2 = C4::Acquisition::NewOrder( > rrp => 10, > ecost => 10, > } >-); >-$ordernumber3 = C4::Acquisition::NewOrder( >+)->insert; >+my $ordernumber2 = $order2->{ordernumber}; >+ >+my $order3 = Koha::Acquisition::Order->new( > { > basketno => $basketno3, > quantity => 20, >@@ -400,8 +405,10 @@ $ordernumber3 = C4::Acquisition::NewOrder( > rrp => 11, > ecost => 11, > } >-); >-$ordernumber4 = C4::Acquisition::NewOrder( >+)->insert; >+my $ordernumber3 = $order3->{ordernumber}; >+ >+my $order4 = Koha::Acquisition::Order->new( > { > basketno => $basketno4, > quantity => 20, >@@ -417,7 +424,8 @@ $ordernumber4 = C4::Acquisition::NewOrder( > ecost => 11, > quantityreceived => 20 > } >-); >+)->insert; >+my $ordernumber4 = $order4->{ordernumber}; > > #Test cases: > # Sample datas : >diff --git a/t/db_dependent/Budgets.t b/t/db_dependent/Budgets.t >index 41bac90..7a32d0c 100755 >--- a/t/db_dependent/Budgets.t >+++ b/t/db_dependent/Budgets.t >@@ -10,6 +10,8 @@ use C4::Bookseller; > use C4::Acquisition; > use C4::Dates; > >+use Koha::Acquisition::Order; >+ > use YAML; > my $dbh = C4::Context->dbh; > $dbh->{AutoCommit} = 0; >@@ -304,7 +306,7 @@ my $item_quantity = 2; > my $number_of_orders_to_move = 0; > for my $infos (@order_infos) { > for ( 1 .. $infos->{pending_quantity} ) { >- my $ordernumber = C4::Acquisition::NewOrder( >+ my $order = Koha::Acquisition::Order->new( > { > basketno => $basketno, > biblionumber => $biblionumber, >@@ -321,12 +323,13 @@ for my $infos (@order_infos) { > uncertainprice => 0, > gstrate => 0, > } >- ); >+ )->insert; >+ my $ordernumber = $order->{ordernumber}; > push @{ $budgets{$infos->{budget_id}} }, $ordernumber; > $number_of_orders_to_move++; > } > for ( 1 .. $infos->{spent_quantity} ) { >- my $ordernumber = C4::Acquisition::NewOrder( >+ my $order = Koha::Acquisition::Order->new( > { > basketno => $basketno, > biblionumber => $biblionumber, >@@ -343,7 +346,8 @@ for my $infos (@order_infos) { > uncertainprice => 0, > gstrate => 0, > } >- ); >+ )->insert; >+ my $ordernumber = $order->{ordernumber}; > ModReceiveOrder({ > biblionumber => $biblionumber, > ordernumber => $ordernumber, >diff --git a/t/db_dependent/Letters.t b/t/db_dependent/Letters.t >index 38d4a4c..8d7991e 100644 >--- a/t/db_dependent/Letters.t >+++ b/t/db_dependent/Letters.t >@@ -43,6 +43,7 @@ use_ok('C4::Bookseller'); > use_ok('C4::Letters'); > use t::lib::Mocks; > use Koha::DateUtils qw( dt_from_string output_pref ); >+use Koha::Acquisition::Order; > > my $dbh = C4::Context->dbh; > >@@ -295,7 +296,6 @@ my $budgetid = C4::Budgets::AddBudget({ > budget_name => "budget_name_test_letters", > }); > >-my $ordernumber; > my $bib = MARC::Record->new(); > if (C4::Context->preference('marcflavour') eq 'UNIMARC') { > $bib->append_fields( >@@ -308,14 +308,15 @@ if (C4::Context->preference('marcflavour') eq 'UNIMARC') { > } > > ($biblionumber, $biblioitemnumber) = AddBiblio($bib, ''); >-( undef, $ordernumber ) = C4::Acquisition::NewOrder( >+my $order = Koha::Acquisition::Order->new( > { > basketno => $basketno, > quantity => 1, > biblionumber => $biblionumber, > budget_id => $budgetid, > } >-); >+)->insert; >+my $ordernumber = $order->{ordernumber}; > > C4::Acquisition::CloseBasket( $basketno ); > my $err; >-- >2.0.0.rc2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 12830
:
31178
|
31180
|
31237
|
31498
|
31499
|
31521
|
31522
|
31549
|
31550
|
31714
|
31715
|
31827
|
31828
|
32810
|
32811