@EXPORT = qw(
AddItemFromMarc
- AddItem
AddItemBatchFromMarc
ModItemFromMarc
Item2Marc
my $localitemmarc = MARC::Record->new;
$localitemmarc->append_fields( $source_item_marc->field($itemtag) );
+
+#RMME
my $item = C4::Biblio::TransformMarcToKoha( $localitemmarc, $frameworkcode, 'items' );
my $unlinked_item_subfields = _get_unlinked_item_subfields( $localitemmarc, $frameworkcode );
return AddItem( $item, $biblionumber, $dbh, $frameworkcode, $unlinked_item_subfields );
+
+ my $item_values = C4::Biblio::TransformMarcToKoha( $localitemmarc, $frameworkcode, 'items' );
+ $item_values->{biblionumber} = $biblionumber;
+ # FIXME RM my $unlinked_item_subfields = _get_unlinked_item_subfields( $localitemmarc, $frameworkcode );
+ my $item = Koha::Item->new( $item_values ); # FIXME Handle $unlinked_item_subfields
+ return ( $item->biblionumber, $item->biblioitemnumber, $item->itemnumber );
}
=head2 AddItem
my $biblionumber = shift;
my $dbh = @_ ? shift : C4::Context->dbh;
- my $frameworkcode = @_ ? shift : C4::Biblio::GetFrameworkCode($biblionumber);
my $unlinked_item_subfields;
if (@_) {
$unlinked_item_subfields = shift;
}
- # needs old biblionumber and biblioitemnumber
- $item->{'biblionumber'} = $biblionumber;
- my $sth = $dbh->prepare("SELECT biblioitemnumber FROM biblioitems WHERE biblionumber=?");
- $sth->execute( $item->{'biblionumber'} );
- ( $item->{'biblioitemnumber'} ) = $sth->fetchrow;
-
_set_defaults_for_add($item);
_set_derived_columns_for_add($item);
$item->{'more_subfields_xml'} = _get_unlinked_subfields_xml($unlinked_item_subfields);
- # FIXME - checks here
- unless ( $item->{itype} ) { # default to biblioitem.itemtype if no itype
- my $itype_sth = $dbh->prepare("SELECT itemtype FROM biblioitems WHERE biblionumber = ?");
- $itype_sth->execute( $item->{'biblionumber'} );
- ( $item->{'itype'} ) = $itype_sth->fetchrow_array;
- }
-
my ( $itemnumber, $error ) = _koha_new_item( $item, $item->{barcode} );
return if $error;
use Koha::Database;
use C4::Acquisition qw( NewBasket CloseBasket ModOrder);
use C4::Suggestions qw( ModSuggestion );
-use C4::Items qw(AddItem);
use C4::Biblio qw( AddBiblio TransformKohaToMarc GetMarcBiblio GetFrameworkCode GetMarcFromKohaField );
use Koha::Edifact::Order;
use Koha::Edifact;
my $created = 0;
while ( $created < $order_quantity ) {
- my $itemnumber;
- ( $bib->{biblionumber}, $bib->{biblioitemnumber}, $itemnumber )
- = AddItem( $item_hash, $bib->{biblionumber} );
+ $item_hash->{biblionumber} = $bib->{biblionumber};
+ my $item = Koha::Item->new( $item_hash );
+ my $itemnumber = $item->itemnumber;
$logger->trace("Added item:$itemnumber");
$schema->resultset('AqordersItem')->create(
{
$item_hash->{homebranch} = $new_item->{homebranch};
}
- my $itemnumber;
- ( undef, undef, $itemnumber ) =
- AddItem( $item_hash, $bib->{biblionumber} );
+ $item_hash->{biblionumber} = $bib->{biblionumber};
+ my $item = Koha::Item->new( $item_hash );
+ my $itemnumber = $item->itemnumber;
$logger->trace("New item $itemnumber added");
$schema->resultset('AqordersItem')->create(
{
$item->girfield( 'branch', $occurrence ),
homebranch => $item->girfield( 'branch', $occurrence ),
};
- my $itemnumber;
- ( undef, undef, $itemnumber ) =
- AddItem( $new_item, $bib->{biblionumber} );
+ $new_item->{biblionumber} = $bib->{biblionumber};
+ my $item = Koha::Item->new( $new_item );
+ my $itemnumber = $item->itemnumber;
$logger->trace("New item $itemnumber added");
$schema->resultset('AqordersItem')->create(
{
=cut
+=head3 store
+
+=cut
+
+sub store {
+ my ($self) = @_;
+
+ # We do not want to oblige callers to pass this value
+ # Dev conveniences vs performance?
+ unless ( $self->biblioitemnumber ) {
+ $self->biblioitemnumber( $self->biblio->biblioitem->biblioitemnumber );
+ }
+
+ # See related changes from C4::Items::AddItem
+ unless ( $self->itype ) {
+ $self->itype($self->biblio->biblioitem->itemtype);
+ }
+
+ unless ( $self->in_storage ) { #AddItem
+ my $today = dt_from_string;
+ unless ( $self->permanent_location ) {
+ $self->permanent_location($self->location);
+ }
+ unless ( $self->replacementpricedate ) {
+ $self->replacementpricedate($today);
+ }
+ unless ( $self->datelastseen ) {
+ $self->datelastseen($today);
+ }
+
+ }
+
+ return $self->SUPER::store;
+}
+
=head3 effective_itemtype
Returns the itemtype for the item based on whether item level itemtypes are set or not.
my @itemnumbers;
for (my $i = 0; $i < $count; $i++) {
$itemcreation = 1;
- my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({
- homebranch => $homebranches[$i],
- holdingbranch => $holdingbranches[$i],
- itemnotes_nonpublic => $nonpublic_notes[$i],
- itemnotes => $public_notes[$i],
- location => $locs[$i],
- ccode => $ccodes[$i],
- itype => $itypes[$i],
- notforloan => $notforloans[$i],
- uri => $uris[$i],
- copynumber => $copynos[$i],
- price => $itemprices[$i],
- replacementprice => $replacementprices[$i],
- itemcallnumber => $itemcallnumbers[$i],
- }, $biblionumber);
- push( @itemnumbers, $itemnumber );
+ my $item = Koha::Item->new(
+ {
+ biblionumber => $biblionumber,
+ homebranch => $homebranches[$i],
+ holdingbranch => $holdingbranches[$i],
+ itemnotes_nonpublic => $nonpublic_notes[$i],
+ itemnotes => $public_notes[$i],
+ location => $locs[$i],
+ ccode => $ccodes[$i],
+ itype => $itypes[$i],
+ notforloan => $notforloans[$i],
+ uri => $uris[$i],
+ copynumber => $copynos[$i],
+ price => $itemprices[$i],
+ replacementprice => $replacementprices[$i],
+ itemcallnumber => $itemcallnumbers[$i],
+ }
+ );
+ push( @itemnumbers, $item->itemnumber );
}
if ($itemcreation == 1) {
# Group orderlines from MarcItemFieldsToOrder
ok((not defined Koha::Biblios->find( $order4->{biblionumber} )), "biblio does not exist anymore");
my $order5 = GetOrder($ordernumbers[4]);
-C4::Items::AddItem( { barcode => '0102030405' }, $order5->{biblionumber} );
+Koha::Item->new({ barcode => '0102030405', biblionumber => $order5->{biblionumber} })->store;
$error = DelOrder($order5->{biblionumber}, $order5->{ordernumber}, 1);
$order5 = GetOrder($order5->{ordernumber});
ok((defined $order5->{datecancellationprinted}), "order is cancelled");
my $budget = C4::Budgets::GetBudget( $budgetid );
my ($biblionumber, $biblioitemnumber) = AddBiblio(MARC::Record->new, '');
-my $itemnumber = AddItem( { itype => $itemtype }, $biblionumber );
+my $itemnumber = Koha::Item->new({ itype => $itemtype, biblionumber => $biblionumber })->store->itemnumber;
my $order = Koha::Acquisition::Order->new(
{
is($order->items->count, 0, "Create items on receiving: 0 item exist after cancelling a receipt");
-my $itemnumber1 = AddItem( { itype => $itemtype }, $biblionumber );
-my $itemnumber2 = AddItem( { itype => $itemtype }, $biblionumber );
+my $itemnumber1 = Koha::Item->new({ itype => $itemtype, biblionumber => $biblionumber })->store->itemnumber;
+my $itemnumber2 = Koha::Item->new({ itype => $itemtype, biblionumber => $biblionumber })->store->itemnumber;
t::lib::Mocks::mock_preference('AcqCreateItem', 'ordering');
t::lib::Mocks::mock_preference('AcqItemSetSubfieldsWhenReceiptIsCancelled', '7=9'); # notforloan is mapped with 952$7
use Koha::DateUtils;
use Koha::Acquisition::Booksellers;
use Koha::Acquisition::Orders;
+use t::lib::TestBuilder;
use MARC::Record;
my $schema = Koha::Database->new()->schema();
my $dbh = C4::Context->dbh;
$dbh->{RaiseError} = 1;
+my $builder = t::lib::TestBuilder->new;
+
my $bookseller1 = Koha::Acquisition::Bookseller->new(
{
name => "my vendor 1",
my $budget = C4::Budgets::GetBudget( $budgetid );
-my ($biblionumber, $biblioitemnumber) = AddBiblio(MARC::Record->new, '');
-my $itemnumber = AddItem({}, $biblionumber);
+my $biblio = $builder->build_sample_biblio();
+my $item_1 = $builder->build_sample_item({ biblionumber => $biblio->biblionumber });
+my $biblionumber = $biblio->biblionumber;
my $order = Koha::Acquisition::Order->new(
{
}
)->store;
my $ordernumber = $order->ordernumber;
-$order->add_item( $itemnumber );
+$order->add_item( $item_1->itemnumber );
# Begin tests
is(scalar GetOrders($basketno1), 1, "1 order in basket1");
}
}
);
- my ( undef, undef, $item_id ) = AddItem(
- { homebranch => $library->branchcode,
+ my $item_id = Koha::Item->new(
+ {
+ biblionumber => $biblio->biblionumber,
+ homebranch => $library->branchcode,
holdingbranch => $library->branchcode,
barcode => $barcode,
replacementprice => $replacement_amount,
itype => $item_type->itemtype
},
- $biblio->biblionumber
- );
+ )->store->itemnumber;
AddIssue( $patron->unblessed, $barcode );
});
my $biblio = $builder->build_sample_biblio({ title=> $title, author => $author });
- my ( undef, undef, $item_id ) = AddItem(
+ my $item_id = Koha::Item->new(
{
+ biblionumber => $biblio->biblionumber,
homebranch => $library->id,
holdingbranch => $library->id,
barcode => $barcode,
replacementprice => 23.00,
itype => $itemtype->id
},
- $biblio->biblionumber
- );
+ )->store->itemnumber;
my $item = Koha::Items->find( $item_id );
my $context = Test::MockModule->new('C4::Context');
my ( $biblionumber, $biblioitemnumber ) = C4::Biblio::AddBiblio( $record, '' );
# item 1 has home branch and holding branch samplebranch1
-my @sampleitem1 = C4::Items::AddItem(
+my $item_id1 = Koha::Item->new(
{
+ biblionumber => $biblionumber,
barcode => 'barcode_1',
itemcallnumber => 'callnumber1',
homebranch => $samplebranch1->{branchcode},
holdingbranch => $samplebranch1->{branchcode},
itype => $no_circ_itemtype->{ itemtype }
- },
- $biblionumber
-);
-my $item_id1 = $sampleitem1[2];
+ }
+)->store->itemnumber;
# item 2 has holding branch samplebranch2
-my @sampleitem2 = C4::Items::AddItem(
+my $item_id2 = Koha::Item->new(
{
+ biblionumber => $biblionumber,
barcode => 'barcode_2',
itemcallnumber => 'callnumber2',
homebranch => $samplebranch2->{branchcode},
holdingbranch => $samplebranch1->{branchcode},
itype => $no_circ_itemtype->{ itemtype }
},
- $biblionumber
-);
-my $item_id2 = $sampleitem2[2];
+)->store->itemnumber;
# item 3 has item type sampleitemtype2 with noreturn policy
-my @sampleitem3 = C4::Items::AddItem(
+my $item_id3 = Koha::Item->new(
{
+ biblionumber => $biblionumber,
barcode => 'barcode_3',
itemcallnumber => 'callnumber3',
homebranch => $samplebranch2->{branchcode},
holdingbranch => $samplebranch2->{branchcode},
itype => $sampleitemtype2->{itemtype}
- },
- $biblionumber
-);
-my $item_id3 = $sampleitem3[2];
+ }
+)->store->itemnumber;
#Add borrower
my $borrower_id1 = Koha::Patron->new({
my ($biblionumber1) = AddBiblio(MARC::Record->new, '');
my $barcode1 = '0101';
-AddItem({ barcode => $barcode1, %item_info }, $biblionumber1);
+Koha::Item->new({ barcode => $barcode1, %item_info, biblionumber => $biblionumber1 })->store;
my ($biblionumber2) = AddBiblio(MARC::Record->new, '');
my $barcode2 = '0202';
-AddItem({ barcode => $barcode2, %item_info }, $biblionumber2);
+Koha::Item->new({ barcode => $barcode2, %item_info, biblionumber => $biblionumber2 })->store;
my $borrowernumber1 = Koha::Patron->new({categorycode => $categorycode, branchcode => $branchcode})->store->borrowernumber;
my $borrowernumber2 = Koha::Patron->new({categorycode => $categorycode, branchcode => $branchcode})->store->borrowernumber;
is( $check_valid_barcode, 0, 'CheckValidBarcode with an invalid barcode returns true' );
my ($biblionumber1) = AddBiblio(MARC::Record->new, '');
-AddItem({ barcode => $barcode1, %item_branch_infos }, $biblionumber1);
-AddItem({ barcode => $barcode2, %item_branch_infos }, $biblionumber1);
+Koha::Item->new({ barcode => $barcode1, %item_branch_infos, biblionumber => $biblionumber1})->store;
+Koha::Item->new({ barcode => $barcode2, %item_branch_infos, biblionumber => $biblionumber1})->store;
my ($biblionumber2) = AddBiblio(MARC::Record->new, '');
-AddItem({ barcode => $barcode3, %item_branch_infos }, $biblionumber2);
+Koha::Item->new({ barcode => $barcode3, %item_branch_infos, biblionumber =>$biblionumber2})->store;
$check_valid_barcode = C4::Circulation::CheckValidBarcode();
is( $check_valid_barcode, 0, 'CheckValidBarcode without barcode returns false' );
);
my ($biblionumber1) = AddBiblio(MARC::Record->new, '');
-my $itemnumber1 = AddItem({ barcode => '0101', %item_infos }, $biblionumber1);
-my $itemnumber2 = AddItem({ barcode => '0102', %item_infos }, $biblionumber1);
+my $itemnumber1 = Koha::Item->new({ barcode => '0101', %item_infos, biblionumber => $biblionumber1})->store->itemnumber;
+my $itemnumber2 = Koha::Item->new({ barcode => '0102', %item_infos, biblionumber => $biblionumber1})->store->itemnumber;
my ($biblionumber2) = AddBiblio(MARC::Record->new, '');
-my $itemnumber3 = AddItem({ barcode => '0203', %item_infos }, $biblionumber2);
+my $itemnumber3 = Koha::Item->new({ barcode => '0203', %item_infos, biblionumber => $biblionumber2})->store->itemnumber;
my $categorycode = $builder->build({ source => 'Category' })->{ categorycode };
my $borrowernumber = $builder->build(
my $onsite_checkouts = GetPendingOnSiteCheckouts;
is( scalar @$onsite_checkouts, 0, "No pending on-site checkouts" );
-my $itemnumber4 = AddItem({ barcode => '0104', %item_infos }, $biblionumber1);
+my $itemnumber4 = Koha::Item->new({ barcode => '0104', %item_infos, biblionumber => $biblionumber1})->store->itemnumber;
AddIssue( $borrower, '0104', undef, undef, undef, undef, { onsite_checkout => 1 } );
$onsite_checkouts = GetPendingOnSiteCheckouts;
is( scalar @$onsite_checkouts, 1, "There is 1 pending on-site checkout" );
t::lib::Mocks::mock_preference('item-level_itypes', '0');
my $biblionumber = create_biblio('Test 1', $itemtype);
-AddItem({
+Koha::Item->new({
+ biblionumber => $biblionumber,
barcode => 'GTI_BARCODE_001',
homebranch => $branch_1->{ branchcode },
ccode => 'GTI_CCODE',
-}, $biblionumber);
+})->store;
$biblionumber = create_biblio('Test 2', $itemtype);
-AddItem({
+Koha::Item->new({
+ biblionumber => $biblionumber,
barcode => 'GTI_BARCODE_002',
homebranch => $branch_2->{ branchcode },
-}, $biblionumber);
+})->store;
my $borrowernumber = Koha::Patron->new({
userid => 'gti.test',
use C4::Context;
use C4::Circulation qw( AddIssue AddReturn );
-use C4::Items qw( AddItem );
use C4::Biblio qw( AddBiblio );
use Koha::Database;
use Koha::DateUtils;
my $barcode = 'bc_maxsuspensiondays';
my ($biblionumber, $biblioitemnumber) = AddBiblio($record, '');
-my (undef, undef, $itemnumber) = AddItem({
+my $itemnumber = Koha::Item->new({
+ biblionumber => $biblionumber,
homebranch => $branchcode,
holdingbranch => $branchcode,
barcode => $barcode,
itype => $itemtype
- } , $biblionumber);
+ })->store->itemnumber;
# clear any holidays to avoid throwing off the suspension day
# calculations
my $barcode_1 = 'barcode_1';
my $barcode_2 = 'barcode_2';
-my @sampleitem1 = C4::Items::AddItem(
+my $item_id1 = Koha::Item->new(
{
+ biblionumber => $biblionumber,
barcode => $barcode_1,
itemcallnumber => 'callnumber1',
homebranch => $branchcode_1,
holdingbranch => $branchcode_1,
- issue => 1,
- reserve => 1,
itype => $itemtype
},
- $biblionumber
-);
-my $item_id1 = $sampleitem1[2];
-my @sampleitem2 = C4::Items::AddItem(
+)->store->itemnumber;
+my $item_id2 = Koha::Item->new(
{
+ biblionumber => $biblionumber,
barcode => $barcode_2,
itemcallnumber => 'callnumber2',
homebranch => $branchcode_2,
holdingbranch => $branchcode_2,
notforloan => 1,
- issue => 1,
itype => $itemtype
},
- $biblionumber
-);
-my $item_id2 = $sampleitem2[2];
+)->store->itemnumber;
#Add borrower
my $borrower_id1 = Koha::Patron->new({
$return = $dbh->selectrow_hashref("SELECT * FROM old_issues LIMIT 1" );
ok( $return->{returndate} eq '2014-04-01 23:42:00', "Item returned with a return date of '2014-04-01 23:42' has that return date" );
-my $itemnumber;
-($biblionumber, $biblioitemnumber, $itemnumber) = C4::Items::AddItem(
+my $itemnumber = Koha::Item->new(
{
+ biblionumber => $biblionumber,
barcode => 'barcode_3',
itemcallnumber => 'callnumber3',
homebranch => $branchcode_1,
notforloan => 1,
itype => $itemtype
},
- $biblionumber
-);
+)->store->itemnumber;
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin', q{} );
AddReturn( 'barcode_3', $branchcode_1 );
$item = Koha::Items->find( $itemnumber );
ok( $item->notforloan eq 9, q{UpdateNotForLoanStatusOnCheckin does not update notforloan value from 9 with setting "1: 9"} );
-my $itemnumber2;
-($biblionumber, $biblioitemnumber, $itemnumber2) = C4::Items::AddItem(
+my $itemnumber2 = Koha::Item->new(
{
+ biblionumber => $biblionumber,
barcode => 'barcode_4',
itemcallnumber => 'callnumber4',
homebranch => $branchcode_1,
holdingbranch => $branchcode_1,
- location => 'FIC',
+ location => 'FIC',
itype => $itemtype
- },
- $biblionumber
-);
+ }
+)->store->itemnumber;
t::lib::Mocks::mock_preference( 'UpdateItemLocationOnCheckin', q{} );
AddReturn( 'barcode_4', $branchcode_1 );
MARC::Field->new( '952', '0', '0', a => $branchcode_1 ) );
my ( $biblionumber, $biblioitemnumber ) = C4::Biblio::AddBiblio( $record, '', );
-my @sampleitem1 = C4::Items::AddItem(
- { barcode => 1,
+my $item_id1 = Koha::Item->new(
+ {
+ biblionumber => $biblionumber,
+ barcode => 1,
itemcallnumber => 'callnumber1',
homebranch => $branchcode_1,
holdingbranch => $branchcode_1,
itype => $itemtype
},
- $biblionumber
-);
-my $item_id1 = $sampleitem1[2];
-my @sampleitem2 = C4::Items::AddItem(
- { barcode => 2,
+)->store->itemnumber;
+my $item_id2 = Koha::Item->new(
+ {
+ biblionumber => $biblionumber,
+ barcode => 2,
itemcallnumber => 'callnumber2',
homebranch => $branchcode_1,
holdingbranch => $branchcode_1,
itype => $itemtype
},
- $biblionumber
-);
-my $item_id2 = $sampleitem2[2];
+)->store->itemnumber;
#Add transfers
ModItemTransfer(
use Modern::Perl;
-use Test::More tests => 27;
+use Test::More tests => 26;
use Koha::Database;
use t::lib::TestBuilder;
BEGIN {
- use_ok('C4::Items', qw(AddItem));
use_ok('C4::Biblio');
use_ok('C4::CourseReserves', qw/:all/);
use_ok('C4::Context');
# Create the a record with an item
my $record = MARC::Record->new;
my ( $biblionumber, $biblioitemnumber ) = C4::Biblio::AddBiblio($record, '');
-my ( undef, undef, $itemnumber ) = C4::Items::AddItem(
- { homebranch => $branchcode,
+my $itemnumber = Koha::Item->new(
+ {
+ biblionumber => $biblionumber,
+ homebranch => $branchcode,
holdingbranch => $branchcode,
itype => $itemtype
},
- $biblionumber
-);
+)->store->itemnumber;
my $course_id = ModCourse(
course_name => "Test Course",
my $biblio = $builder->build_sample_biblio({ itemtype => 'DUMMY' });
# Create item instance for testing.
-my ($item_bibnum, $item_bibitemnum, $itemnumber)
- = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $biblio->biblionumber);
+my $itemnumber = $builder->build_sample_item({ library => $branch_1, biblionumber => $biblio->biblionumber })->itemnumber;
# Create some borrowers
my @borrowernumbers;
ModReserve({ # call without reserve_id
rank => '3',
- biblionumber => $item_bibnum,
+ biblionumber => $biblio->biblionumber,
itemnumber => $itemnumber,
borrowernumber => $borrowernumber,
});
# IndependentBranches is OFF.
my $foreign_biblio = $builder->build_sample_biblio({ itemtype => 'DUMMY' });
-my ($foreign_item_bibnum, $foreign_item_bibitemnum, $foreign_itemnumber)
- = AddItem({ homebranch => $branch_2, holdingbranch => $branch_2 } , $foreign_biblio->biblionumber);
+my $foreign_itemnumber = $builder->build_sample_item({ library => $branch_2, biblionumber => $foreign_biblio->biblionumber })->itemnumber;
Koha::CirculationRules->set_rules(
{
categorycode => undef,
{
# Regression test for bug 11336 # Test if ModReserve correctly recalculate the priorities
$biblio = $builder->build_sample_biblio({ itemtype => 'DUMMY' });
- ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $biblio->biblionumber);
+ $itemnumber = $builder->build_sample_item({ library => $branch_1, biblionumber => $biblio->biblionumber })->itemnumber;
my $reserveid1 = AddReserve(
{
branchcode => $branch_1,
}
);
- ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $biblio->biblionumber);
+ $itemnumber = $builder->build_sample_item({ library => $branch_1, biblionumber => $biblio->biblionumber })->itemnumber;
my $reserveid2 = AddReserve(
{
branchcode => $branch_1,
}
);
- ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $biblio->biblionumber);
+ $itemnumber = $builder->build_sample_item({ library => $branch_1, biblionumber => $biblio->biblionumber })->itemnumber;
my $reserveid3 = AddReserve(
{
branchcode => $branch_1,
is( $hold3->discard_changes->priority, 1, "After ModReserve, the 3rd reserve becomes the first on the waiting list" );
}
-ModItem({ damaged => 1 }, $item_bibnum, $itemnumber);
+ModItem({ damaged => 1 }, $biblio->biblionumber, $itemnumber);
t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 1 );
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber)->{status}, 'OK', "Patron can reserve damaged item with AllowHoldsOnDamagedItems enabled" );
ok( defined( ( CheckReserves($itemnumber) )[1] ), "Hold can be trapped for damaged item with AllowHoldsOnDamagedItems enabled" );
{
borrowernumber => $borrowernumbers[0],
itemnumber => $itemnumber,
- biblionumber => $item_bibnum,
+ biblionumber => $biblio->biblionumber,
}
)->store();
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber )->{status},
# Regression test for bug 9532
$biblio = $builder->build_sample_biblio({ itemtype => 'CANNOT' });
-($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CANNOT' } , $biblio->biblionumber);
+$itemnumber = $builder->build_sample_item({ library => $branch_1, itype => 'CANNOT', biblionumber => $biblio->biblionumber})->itemnumber;
AddReserve(
{
branchcode => $branch_1,
CanItemBeReserved( $borrowernumbers[0], $itemnumber)->{status}, 'tooManyReserves',
"cannot request item if policy that matches on item-level item type forbids it"
);
-ModItem({ itype => 'CAN' }, $item_bibnum, $itemnumber);
+ModItem({ itype => 'CAN' }, $biblio->biblionumber, $itemnumber);
ok(
CanItemBeReserved( $borrowernumbers[0], $itemnumber)->{status} eq 'OK',
"can request item if policy that matches on item type allows it"
);
t::lib::Mocks::mock_preference('item-level_itypes', 0);
-ModItem({ itype => undef }, $item_bibnum, $itemnumber);
+ModItem({ itype => undef }, $biblio->biblionumber, $itemnumber);
ok(
CanItemBeReserved( $borrowernumbers[0], $itemnumber)->{status} eq 'tooManyReserves',
"cannot request item if policy that matches on bib-level item type forbids it (bug 9532)"
}
);
$biblio = $builder->build_sample_biblio({ itemtype => 'CANNOT' });
-($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem(
- { homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CANNOT' } , $biblio->biblionumber);
+$itemnumber = $builder->build_sample_item({ library => $branch_1, itype => 'CANNOT', biblionumber => $biblio->biblionumber})->itemnumber;
is(CanItemBeReserved($borrowernumbers[0], $itemnumber)->{status}, 'notReservable',
"CanItemBeReserved should return 'notReservable'");
t::lib::Mocks::mock_preference( 'ReservesControlBranch', 'PatronLibrary' );
-($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem(
- { homebranch => $branch_2, holdingbranch => $branch_1, itype => 'CAN' } , $biblio->biblionumber);
+$itemnumber = $builder->build_sample_item({ library => $branch_2, itype => 'CAN', biblionumber => $biblio->biblionumber})->itemnumber;
is(CanItemBeReserved($borrowernumbers[0], $itemnumber)->{status},
'cannotReserveFromOtherBranches',
"CanItemBeReserved should use PatronLibrary rule when ReservesControlBranch set to 'PatronLibrary'");
'OK',
"CanItemBeReserved should use item home library rule when ReservesControlBranch set to 'ItemsHomeLibrary'");
-($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem(
- { homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CAN' } , $biblio->biblionumber);
+$itemnumber = $builder->build_sample_item({ library => $branch_1, itype => 'CAN', biblionumber => $biblio->biblionumber})->itemnumber;
is(CanItemBeReserved($borrowernumbers[0], $itemnumber)->{status}, 'OK',
"CanItemBeReserved should return 'OK'");
$dbh->do('DELETE FROM biblio');
$biblio = $builder->build_sample_biblio({ itemtype => 'ONLY1' });
-( $item_bibnum, $item_bibitemnum, $itemnumber )
- = AddItem( { homebranch => $branch_1, holdingbranch => $branch_1 }, $biblio->biblionumber );
+$itemnumber = $builder->build_sample_item({ library => $branch_1, biblionumber => $biblio->biblionumber})->itemnumber;
Koha::CirculationRules->set_rules(
{
$dbh->do('DELETE FROM reserves');
$biblio = $builder->build_sample_biblio;
- ( $item_bibnum, $item_bibitemnum, $itemnumber ) =
- AddItem( { homebranch => $branch_1, holdingbranch => $branch_1 },
- $biblio->biblionumber );
+ $itemnumber = $builder->build_sample_item({ library => $branch_1, biblionumber => $biblio->biblionumber})->itemnumber;
Koha::CirculationRules->set_rules(
{
categorycode => undef,
plan tests => 4;
$biblio = $builder->build_sample_biblio({ itemtype => 'ONLY1' });
- my ( $item_bibnum, $item_bibitemnum, $itemnumber )
- = AddItem( { homebranch => $branch_1, holdingbranch => $branch_1 }, $biblio->biblionumber );
+ $itemnumber = $builder->build_sample_item({ library => $branch_1, biblionumber => $biblio->biblionumber})->itemnumber;
#Add a default rule to allow some holds
Koha::CirculationRules->set_rules(
# Create 3 biblios with items
my $biblio_1 = $builder->build_sample_biblio({ itemtype => $itemtype->itemtype });
- my ( undef, undef, $itemnumber_1 ) = AddItem(
- { homebranch => $library->branchcode,
- holdingbranch => $library->branchcode
- },
- $biblio_1->biblionumber
- );
+ my $itemnumber_1 = $builder->build_sample_item({ library => $library->branchcode, biblionumber => $biblio_1->biblionumber})->itemnumber;
my $biblio_2 = $builder->build_sample_biblio({ itemtype => $itemtype->itemtype });
- my ( undef, undef, $itemnumber_2 ) = AddItem(
- { homebranch => $library->branchcode,
- holdingbranch => $library->branchcode
- },
- $biblio_2->biblionumber
- );
+ my $itemnumber_2 = $builder->build_sample_item({ library => $library->branchcode, biblionumber => $biblio_2->biblionumber})->itemnumber;
my $biblio_3 = $builder->build_sample_biblio({ itemtype => $itemtype->itemtype });
- my ( undef, undef, $itemnumber_3 ) = AddItem(
- { homebranch => $library->branchcode,
- holdingbranch => $library->branchcode
- },
- $biblio_3->biblionumber
- );
+ my $itemnumber_3 = $builder->build_sample_item({ library => $library->branchcode, biblionumber => $biblio_3->biblionumber})->itemnumber;
Koha::CirculationRules->search->delete;
Koha::CirculationRules->set_rules(
my $borrowers_count = 5;
my $biblio = $builder->build_sample_biblio();
-my ( $item_bibnum, $item_bibitemnum, $itemnumber ) = AddItem(
- { homebranch => $library4->{branchcode},
+my $itemnumber = Koha::Item->new(
+ {
+ biblionumber => $biblio->biblionumber,
+ homebranch => $library4->{branchcode},
holdingbranch => $library3->{branchcode},
itype => $itemtype
},
- $biblio->biblionumber,
-);
+)->store->itemnumber;
my @branchcodes = ( $library1->{branchcode}, $library2->{branchcode}, $library3->{branchcode}, $library4->{branchcode}, $library3->{branchcode}, $library4->{branchcode} );
my $biblio = $builder->build_sample_biblio();
my $item_barcode = 'my_barcode';
-my ( $item_bibnum, $item_bibitemnum, $itemnumber ) = AddItem(
- { homebranch => $branchcode,
+my $itemnumber = Koha::Item->new(
+ {
+ biblionumber => $biblio->biblionumber,
+ homebranch => $branchcode,
holdingbranch => $branchcode,
barcode => $item_barcode,
itype => $itemtype
},
- $biblio->biblionumber,
-);
+)->store->itemnumber;
# Create some borrowers
my $patron_category = $builder->build({ source => 'Category' });
my $biblio = $builder->build_sample_biblio();
# Add an item.
- my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, location => $location, itype => $itemtype->{itemtype} } , $biblio->biblionumber);
- cmp_ok($item_bibnum, '==', $biblio->biblionumber, "New item is linked to correct biblionumber.");
- cmp_ok($item_bibitemnum, '==', $biblio->biblioitem->biblioitemnumber, "New item is linked to correct biblioitemnumber.");
+ my $item = $builder->build_sample_item(
+ {
+ biblionumber => $biblio->biblionumber,
+ library => $library->{branchcode},
+ location => $location,
+ itype => $itemtype->{itemtype}
+ }
+ );
+ my $itemnumber = $item->itemnumber;
+ cmp_ok($item->biblionumber, '==', $biblio->biblionumber, "New item is linked to correct biblionumber.");
+ cmp_ok($item->biblioitemnumber, '==', $biblio->biblioitem->biblioitemnumber, "New item is linked to correct biblioitemnumber.");
# Get item.
my $getitem = Koha::Items->find($itemnumber);
cmp_ok($getitem->itemnumber, '==', $itemnumber, "Retrieved item has correct itemnumber.");
- cmp_ok($getitem->biblioitemnumber, '==', $item_bibitemnum, "Retrieved item has correct biblioitemnumber.");
+ cmp_ok($getitem->biblioitemnumber, '==', $item->biblioitemnumber, "Retrieved item has correct biblioitemnumber."); # We are not testing anything useful here
is( $getitem->location, $location, "The location should not have been modified" );
is( $getitem->permanent_location, $location, "The permanent_location should have been set to the location value" );
my $getdeleted = Koha::Items->find($itemnumber);
is($getdeleted, undef, "Item deleted as expected.");
- ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, location => $location, permanent_location => 'my permanent location', itype => $itemtype->{itemtype} } , $biblio->biblionumber);
+ $itemnumber = $builder->build_sample_item(
+ {
+ biblionumber => $biblio->biblionumber,
+ library => $library->{branchcode},
+ location => $location,
+ permanent_location => 'my permanent location',
+ itype => $itemtype->{itemtype}
+ }
+ )->itemnumber;
$getitem = Koha::Items->find($itemnumber);
is( $getitem->location, $location, "The location should not have been modified" );
is( $getitem->permanent_location, 'my permanent location', "The permanent_location should not have modified" );
my $biblio = $builder->build_sample_biblio();
# Add two items
- my ( $item1_bibnum, $item1_bibitemnum, $item1_itemnumber ) = AddItem(
+ my $item1_itemnumber = $builder->build_sample_item(
{
- homebranch => $library1->{branchcode},
- holdingbranch => $library1->{branchcode},
- withdrawn => 1,
- itype => $itemtype->{itemtype},
- },
- $biblio->biblionumber
- );
- my ( $item2_bibnum, $item2_bibitemnum, $item2_itemnumber ) = AddItem(
+ biblionumber => $biblio->biblionumber,
+ library => $library1->{branchcode},
+ withdrawn => 1,
+ itype => $itemtype->{itemtype}
+ }
+ )->itemnumber;
+ my $item2_itemnumber = $builder->build_sample_item(
{
- homebranch => $library2->{branchcode},
- holdingbranch => $library2->{branchcode},
- withdrawn => 0,
- itype => $itemtype->{itemtype},
- },
- $biblio->biblionumber
- );
-
+ biblionumber => $biblio->biblionumber,
+ library => $library2->{branchcode},
+ withdrawn => 0,
+ itype => $itemtype->{itemtype}
+ }
+ )->itemnumber;
my $opachiddenitems;
my @itemnumbers = ($item1_itemnumber,$item2_itemnumber);
my @hidden;
# Add a biblio
my $biblio = $builder->build_sample_biblio();
# Add an item
- my ( $item_bibnum, $item_bibitemnum, $itemnumber ) = AddItem(
+ my $itemnumber = $builder->build_sample_item(
{
+ biblionumber => $biblio->biblionumber,
homebranch => $library1->{branchcode},
holdingbranch => $library2->{branchcode},
itype => $itemtype->{itemtype},
restricted => 1,
- },
- $biblio->biblionumber
- );
+ }
+ )->itemnumber;
my $library = Koha::Libraries->find( $library1->{branchcode} );
$library->opac_info("homebranch OPAC info");
is( $results[0]->{ has_pending_hold }, "0",
'Hold not marked as pending/unavailable if nothing in tmp_holdsqueue for item' );
- $dbh->do(q{INSERT INTO tmp_holdsqueue (biblionumber, itemnumber, surname, borrowernumber ) VALUES (?, ?, "Zorro", 42)}, undef, $item_bibnum, $itemnumber);
+ $dbh->do(q{INSERT INTO tmp_holdsqueue (biblionumber, itemnumber, surname, borrowernumber ) VALUES (?, ?, "Zorro", 42)}, undef, $biblio->biblionumber, $itemnumber);
@results = GetItemsInfo( $biblio->biblionumber );
is( $results[0]->{ has_pending_hold }, "1",
'Hold marked as pending/unavailable if tmp_holdsqueue is not empty for item' );
my (undef, $initial_items_count) = SearchItems(undef, {rows => 1});
# Add two items
- my (undef, undef, $item1_itemnumber) = AddItem({
- homebranch => $library1->{branchcode},
- holdingbranch => $library1->{branchcode},
- itype => $itemtype->{itemtype},
- }, $biblio->biblionumber);
- my (undef, undef, $item2_itemnumber) = AddItem({
- homebranch => $library2->{branchcode},
- holdingbranch => $library2->{branchcode},
- itype => $itemtype->{itemtype},
- issues => 3,
- }, $biblio->biblionumber);
+ my $item1_itemnumber = $builder->build_sample_item(
+ {
+ biblionumber => $biblio->biblionumber,
+ library => $library1->{branchcode},
+ itype => $itemtype->{itemtype}
+ }
+ )->itemnumber;
+ my $item2_itemnumber = $builder->build_sample_item(
+ {
+ biblionumber => $biblio->biblionumber,
+ library => $library2->{branchcode},
+ itype => $itemtype->{itemtype}
+ }
+ )->itemnumber;
my ($items, $total_results);
# Create a biblio and item for testing
t::lib::Mocks::mock_preference('marcflavour', 'MARC21');
- my $biblio = $builder->build_sample_biblio({title => 'Silence in the library'});
- my ( $item_bibnum, $item_bibitemnum, $itemnumber ) = AddItem(
+ my $biblio = $builder->build_sample_biblio();
+ my $itemnumber = $builder->build_sample_item(
{
+ biblionumber => $biblio->biblionumber,
homebranch => $library1->{branchcode},
holdingbranch => $library2->{branchcode},
- itype => $itemtype->{itemtype},
- },
- $biblio->biblionumber
- );
+ itype => $itemtype->{itemtype}
+ }
+ )->itemnumber;
# Get item.
my $item = Koha::Items->find( $itemnumber );
is( $holdingbranch->branchcode(), $library2->{branchcode}, "Home branch code matches holdingbranch" );
$biblio = $item->biblio();
- is( ref($biblio), 'Koha::Biblio', "Got Koha::Biblio from biblio method" );
- is( $biblio->title(), 'Silence in the library', 'Title matches biblio title' );
+ is( ref($item->biblio), 'Koha::Biblio', "Got Koha::Biblio from biblio method" );
+ is( $item->biblio->title(), $biblio->title, 'Title matches biblio title' );
$schema->storage->txn_rollback;
};
my @itemnumbers;
for my $item_info (@$item_infos) {
- my ( undef, undef, $itemnumber ) = AddItem(
+ my $itemnumber = $builder->build_sample_item(
{
+ biblionumber => $biblio->biblionumber,
homebranch => $item_info->{homebranch},
- holdingbranch => $item_info->{holdingbanch},
- itype => $itemtype->{itemtype},
- },
- $biblio->biblionumber
- );
+ holdingbranch => $item_info->{holdingbranch},
+ itype => $itemtype->{itemtype}
+ }
+ )->itemnumber;
+
push @itemnumbers, $itemnumber;
}
my $biblio = $builder->build_sample_biblio();
# Add an item.
- my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, location => $location, itype => $itemtype->{itemtype} } , $biblio->biblionumber);
+ my $itemnumber = $builder->build_sample_item(
+ {
+ biblionumber => $biblio->biblionumber,
+ library => $library->{homebranch},
+ location => $location,
+ itype => $itemtype->{itemtype}
+ }
+ )->itemnumber;
# False means no logging
$schema->resultset('ActionLog')->search()->delete();
);
my ($biblionumber, undef) = C4::Biblio::AddBiblio($record, $frameworkcode);
-my ($item_bibnum, $item_bibitemnum, $itemnumber) = C4::Items::AddItem(
+my $item = $builder->build_sample_item(
{
- homebranch => $library,
- holdingbranch => $library,
- new_status => 'new_value',
- ccode => 'FIC',
- },
- $biblionumber
+ biblionumber => $biblionumber,
+ library => $library,
+ new_status => 'new_value',
+ ccode => 'FIC',
+ }
);
-
-my $item = Koha::Items->find( $itemnumber );
+my $itemnumber = $item->itemnumber;
is ( $item->new_status, 'new_value', q|AddItem insert the 'new_status' field| );
my ( $tagfield, undef ) = GetMarcFromKohaField( 'items.itemnumber' );
my $biblio = $builder->build_sample_biblio();
-my ( $item_bibnum, $item_bibitemnum, $itemnumber );
-( $item_bibnum, $item_bibitemnum, $itemnumber ) =
- AddItem( { homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode} }, $biblio->biblionumber );
+my $itemnumber = $builder->build_sample_item(
+ {
+ biblionumber => $biblio->biblionumber,
+ library => $library->{branchcode}
+ }
+)->itemnumber;
my $deleted = DelItem( { biblionumber => $biblio->biblionumber, itemnumber => $itemnumber } );
is( $deleted, 1, "DelItem should return 1 if the item has been deleted" );
my $deleted_item = Koha::Items->find($itemnumber);
is( $deleted_item, undef, "DelItem with biblionumber parameter - the item should be deleted." );
-( $item_bibnum, $item_bibitemnum, $itemnumber ) =
- AddItem( { homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode} }, $biblio->biblionumber );
+$itemnumber = $builder->build_sample_item(
+ {
+ biblionumber => $biblio->biblionumber,
+ library => $library->{branchcode}
+ }
+)->itemnumber;
$deleted = DelItem( { biblionumber => $biblio->biblionumber, itemnumber => $itemnumber } );
is( $deleted, 1, "DelItem should return 1 if the item has been deleted" );
$deleted_item = Koha::Items->find($itemnumber);
my $biblio = $builder->build_sample_biblio();
# Add an item.
-my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, location => $location, itype => $itemtype->{itemtype} } , $biblio->biblionumber);
+$builder->build_sample_item({ biblionumber => $biblio->biblionumber });
my $rs = $schema->resultset('Biblioitem')->search({});
my $iterator = Koha::BiblioUtils::Iterator->new($rs, items => 1 );
my $library2 = $builder->build_object( { class => 'Koha::Libraries' } );
my $library3 = $builder->build_object( { class => 'Koha::Libraries' } );
my $biblio = $builder->build_sample_biblio({ itemtype => 'ONLY1' });
- my ($item_bibnum, $item_bibitemnum, $itemnumber)
- = AddItem({ homebranch => $library1->branchcode, holdingbranch => $library1->branchcode }, $biblio->biblionumber);
- my $item = Koha::Items->find($itemnumber);
+ my $item = $builder->build_sample_item(
+ {
+ biblionumber => $biblio->biblionumber,
+ library => $library1->branchcode
+ }
+ );
is(Koha::Item::Transfer::Limits->search({
fromBranch => $library1->branchcode,
is($biblio->can_be_transferred({ to => $library2 }), 1, 'Given one of the '
.'items is already located at to-library, then the transfer is possible.');
$item->holdingbranch($library1->branchcode)->store;
- my ($item_bibnum2, $item_bibitemnum2, $itemnumber2)
- = AddItem({ homebranch => $library1->branchcode, holdingbranch => $library3->branchcode }, $biblio->biblionumber);
- my $item2 = Koha::Items->find($itemnumber2);
+
+ my $item2 = $builder->build_sample_item(
+ {
+ biblionumber => $biblio->biblionumber,
+ homebranch => $library1->branchcode,
+ holdingbranch => $library3->branchcode,
+ }
+ );
is($biblio->can_be_transferred({ to => $library2 }), 1, 'Given we added '
.'another item that should have no transfer limits applying on, then '
.'the transfer is possible.');
use Modern::Perl;
-use Test::More tests => 10;
+use Test::More tests => 11;
use Test::Exception;
use C4::Circulation;
use Koha::Item::Transfer::Limits;
use Koha::Items;
use Koha::Database;
+use Koha::DateUtils qw( dt_from_string );
use t::lib::TestBuilder;
use t::lib::Mocks;
+use t::lib::Dates;
my $schema = Koha::Database->new->schema;
$schema->storage->txn_begin;
my $retrieved_item_1 = Koha::Items->find( $new_item_1->itemnumber );
is( $retrieved_item_1->barcode, $new_item_1->barcode, 'Find a item by id should return the correct item' );
+subtest 'store' => sub {
+ plan tests => 4;
+ my $biblio = $builder->build_sample_biblio;
+ my $today = dt_from_string->set( hour => 0, minute => 0, second => 0 );
+ my $item = Koha::Item->new(
+ {
+ homebranch => $library->{branchcode},
+ holdingbranch => $library->{branchcode},
+ biblionumber => $biblio->biblionumber,
+ location => 'my_loc',
+ }
+ )->store
+ ->get_from_storage;
+
+ is( t::lib::Dates::compare($item->replacementpricedate, $today), 0, 'replacementpricedate must have been set to today if not given');
+ is( t::lib::Dates::compare($item->datelastseen, $today), 0, 'datelastseen must have been set to today if not given');
+ is( $item->itype, $biblio->biblioitem->itemtype, 'items.itype must have been set to biblioitem.itemtype is not given');
+ is( $item->permanent_location, $item->location, 'permanent_location must have been set to location if not given' );
+ $item->delete;
+};
+
subtest 'get_transfer' => sub {
plan tests => 3;
my $bibnum = $builder->build_sample_biblio({ frameworkcode => $frameworkcode })->biblionumber;
+# Create a helper item instance for testing
my $item = $builder->build_sample_item(
- { library => $branch_1, itype => $itemtype, biblionumber => $bibnum, enumchron => "enum", copynumber => "copynum" } );
+ {
+ library => $branch_1,
+ itype => $itemtype,
+ biblionumber => $bibnum,
+ enumchron => "enum",
+ copynumber => "copynum"
+ }
+);
my $itemnumber = $item->itemnumber;
# Modify item; setting barcode.
);
my ($biblionumber1) = AddBiblio( MARC::Record->new, '' );
-my $itemnumber1 =
- AddItem( { barcode => '0101', %item_infos }, $biblionumber1 );
-my $itemnumber2 =
- AddItem( { barcode => '0102', %item_infos }, $biblionumber1 );
+
+# FIXME These tests will fail if the barcode exists in DB
+my $itemnumber1 = $builder->build_sample_item({ biblionumber => $biblionumber1, barcode => '0101', %item_infos })->itemnumber;
+my $itemnumber2 = $builder->build_sample_item({ biblionumber => $biblionumber1, barcode => '0102', %item_infos })->itemnumber;
my ($biblionumber2) = AddBiblio( MARC::Record->new, '' );
-my $itemnumber3 =
- AddItem( { barcode => '0203', %item_infos }, $biblionumber2 );
+my $itemnumber2 = $builder->build_sample_item({ biblionumber => $biblionumber2, barcode => '0202', %item_infos })->itemnumber;
my $borrowernumber1 =
Koha::Patron->new({ categorycode => $categorycode, branchcode => $branchcode })->store->borrowernumber;
|, {}, $quick_slip_content);
my ( $title1, $title2 ) = ( 'My title 1', 'My title 2' );
-my ( $barcode1, $barcode2 ) = ('BC0101', 'BC0202' );
+my ( $barcode1, $barcode2 ) = ('BC0101', 'BC0202' ); # FIXME Must not be hardcoded, tests could fail
my $record = MARC::Record->new;
$record->append_fields(
MARC::Field->new(
),
);
my ($biblionumber1) = AddBiblio( $record, '' );
-my $itemnumber1 =
- AddItem( { barcode => $barcode1, %item_infos }, $biblionumber1 );
+my $itemnumber1 = $builder->build_sample_item({ biblionumber => $biblionumber1, barcode => $barcode1, %item_infos })->itemnumber;
$record = MARC::Record->new;
$record->append_fields(
),
);
my ($biblionumber2) = AddBiblio( $record, '' );
-my $itemnumber2 =
- AddItem( { barcode => $barcode2, %item_infos }, $biblionumber2 );
+my $itemnumber2 = $builder->build_sample_item({ biblionumber => $biblionumber2, barcode => $barcode2, %item_infos })->itemnumber;
my $borrowernumber =
Koha::Patron->new({ categorycode => $categorycode, branchcode => $branchcode })->store->borrowernumber;
use MARC::Record;
use C4::Circulation qw( AddIssue AddReturn );
-use C4::Items qw( AddItem );
use C4::Biblio qw( AddBiblio );
use C4::Context;
# Discharge not possible with issues
my ( $biblionumber ) = AddBiblio( MARC::Record->new, '');
my $barcode = 'BARCODE42';
-my ( undef, undef, $itemnumber ) = AddItem(
- { homebranch => $library->{branchcode},
- holdingbranch => $library->{branchcode},
- barcode => $barcode,
- itype => $itemtype
- },
- $biblionumber
+$builder->build_sample_item(
+ {
+ biblionumber => $biblionumber,
+ library => $library->{branchcode},
+ barcode => $barcode,
+ itype => $itemtype
+ }
);
AddIssue( $patron, $barcode );
my $bibnum = $builder->build_sample_biblio({frameworkcode => $frameworkcode})->biblionumber;
# Create a helper item instance for testing
-my ( $item_bibnum, $item_bibitemnum, $itemnumber ) = AddItem(
- { homebranch => $branch_1,
- holdingbranch => $branch_1,
- itype => $itemtype
- },
- $bibnum
-);
+my $itemnumber = $builder->build_sample_item({ biblionumber => $bibnum, library => $branch_1, itype => $itemtype })->itemnumber;
my $biblio_with_no_item = $builder->build({
source => 'Biblio'
}
);
-my ($status, $reserve, $all_reserves) = CheckReserves($itemnumber, $barcode);
+my ($status, $reserve, $all_reserves) = CheckReserves($item->itemnumber, $barcode);
is($status, "Reserved", "CheckReserves Test 1");
ok(exists($reserve->{reserve_id}), 'CheckReserves() include reserve_id in its response');
-($status, $reserve, $all_reserves) = CheckReserves($itemnumber);
+($status, $reserve, $all_reserves) = CheckReserves($item->itemnumber);
is($status, "Reserved", "CheckReserves Test 2");
($status, $reserve, $all_reserves) = CheckReserves(undef, $barcode);
my $bibnum2 = $builder->build_sample_biblio({frameworkcode => $frameworkcode})->biblionumber;
my ($itemnum_cpl, $itemnum_fpl);
-( undef, undef, $itemnum_cpl ) = AddItem(
- { homebranch => $branch_1,
- holdingbranch => $branch_1,
- barcode => 'bug10272_CPL',
- itype => $itemtype
- },
- $bibnum2
-);
-( undef, undef, $itemnum_fpl ) = AddItem(
- { homebranch => $branch_2,
- holdingbranch => $branch_2,
- barcode => 'bug10272_FPL',
- itype => $itemtype
- },
- $bibnum2
-);
-
+$itemnum_cpl = $builder->build_sample_item(
+ {
+ biblionumber => $bibnum2,
+ library => $branch_1,
+ barcode => 'bug10272_CPL',
+ itype => $itemtype
+ }
+)->itemnumber;
+$itemnum_fpl = $builder->build_sample_item(
+ {
+ biblionumber => $bibnum2,
+ library => $branch_2,
+ barcode => 'bug10272_FPL',
+ itype => $itemtype
+ }
+)->itemnumber;
# Ensure that priorities are numbered correcly when a hold is moved to waiting
# (bug 11947)
priority => 1,
}
);
-($status)=CheckReserves($itemnumber,undef,undef);
+($status)=CheckReserves($item->itemnumber,undef,undef);
is( $status, 'Reserved', 'CheckReserves returns reserve without lookahead');
-($status)=CheckReserves($itemnumber,undef,7);
+($status)=CheckReserves($item->itemnumber,undef,7);
is( $status, 'Reserved', 'CheckReserves also returns reserve with lookahead');
# Test 9761b: Add a reserve with future date, CheckReserve should not return it
reservation_date => $resdate,
}
);
-($status)=CheckReserves($itemnumber,undef,undef);
+($status)=CheckReserves($item->itemnumber,undef,undef);
is( $status, '', 'CheckReserves returns no future reserve without lookahead');
# Test 9761c: Add a reserve with future date, CheckReserve should return it if lookahead is high enough
-($status)=CheckReserves($itemnumber,undef,3);
+($status)=CheckReserves($item->itemnumber,undef,3);
is( $status, '', 'CheckReserves returns no future reserve with insufficient lookahead');
-($status)=CheckReserves($itemnumber,undef,4);
+($status)=CheckReserves($item->itemnumber,undef,4);
is( $status, 'Reserved', 'CheckReserves returns future reserve with sufficient lookahead');
# Test 9761d: Check ResFound message of AddReturn for future hold
# test marking a hold as captured
my $hold_notice_count = count_hold_print_messages();
-ModReserveAffect($itemnumber, $requesters{$branch_1}, 0);
+ModReserveAffect($item->itemnumber, $requesters{$branch_1}, 0);
my $new_count = count_hold_print_messages();
is($new_count, $hold_notice_count + 1, 'patron notified when item set to waiting');
# test that duplicate notices aren't generated
-ModReserveAffect($itemnumber, $requesters{$branch_1}, 0);
+ModReserveAffect($item->itemnumber, $requesters{$branch_1}, 0);
$new_count = count_hold_print_messages();
is($new_count, $hold_notice_count + 1, 'patron not notified a second time (bug 11445)');
biblionumber => $bibnum,
priority => 1,
reservation_date => $resdate,
- itemnumber => $itemnumber,
+ itemnumber => $item->itemnumber,
}
); #item level hold
$future_holds = $holds->search({ reservedate => { '>' => $dtf->format_date( dt_from_string ) } } );
is( $future_holds->count, 0, 'current_holds does not return a future item level hold' );
# 9788c: current_holds returns future wait (confirmed future hold)
-ModReserveAffect( $itemnumber, $requesters{$branch_1} , 0); #confirm hold
+ModReserveAffect( $item->itemnumber, $requesters{$branch_1} , 0); #confirm hold
$future_holds = $holds->search({ reservedate => { '>' => $dtf->format_date( dt_from_string ) } } );
is( $future_holds->count, 1, 'current_holds returns a future wait (confirmed future hold)' );
# End of tests for bug 9788
borrowernumber => $requesters{$branch_1},
biblionumber => $bibnum,
priority => $p,
- itemnumber => $itemnumber,
+ itemnumber => $item->itemnumber,
}
);
$p = C4::Reserves::CalculatePriority($bibnum);
is($p, 2, 'CalculatePriority should now return priority 2');
-ModReserveAffect( $itemnumber, $requesters{$branch_1} , 0);
+ModReserveAffect( $item->itemnumber, $requesters{$branch_1} , 0);
$p = C4::Reserves::CalculatePriority($bibnum);
is($p, 1, 'CalculatePriority should now return priority 1');
#add another biblio hold, no resdate
{
branchcode => $branch_1,
borrowernumber => $requesters{$branch_1},
- biblionumber => $item_bibnum,
+ biblionumber => $bibnum,
priority => 1,
}
);
-my (undef, $canres, undef) = CheckReserves($itemnumber);
+my (undef, $canres, undef) = CheckReserves($item->itemnumber);
is( CanReserveBeCanceledFromOpac(), undef,
'CanReserveBeCanceledFromOpac should return undef if called without any parameter'
$cancancel = CanReserveBeCanceledFromOpac($canres->{reserve_id}, $requesters{$branch_2});
is($cancancel, 0, 'Other user cant cancel reserve');
-ModReserveAffect($itemnumber, $requesters{$branch_1}, 1);
+ModReserveAffect($item->itemnumber, $requesters{$branch_1}, 1);
$cancancel = CanReserveBeCanceledFromOpac($canres->{reserve_id}, $requesters{$branch_1});
is($cancancel, 0, 'Reserve in transfer status cant be canceled');
{
branchcode => $branch_1,
borrowernumber => $requesters{$branch_1},
- biblionumber => $item_bibnum,
+ biblionumber => $bibnum,
priority => 1,
}
);
-(undef, $canres, undef) = CheckReserves($itemnumber);
+(undef, $canres, undef) = CheckReserves($item->itemnumber);
-ModReserveAffect($itemnumber, $requesters{$branch_1}, 0);
+ModReserveAffect($item->itemnumber, $requesters{$branch_1}, 0);
$cancancel = CanReserveBeCanceledFromOpac($canres->{reserve_id}, $requesters{$branch_1});
is($cancancel, 0, 'Reserve in waiting status cant be canceled');
####### EO Bug 13113 <<<
####
-$item = Koha::Items->find($itemnumber);
-
ok( C4::Reserves::IsAvailableForItemLevelRequest($item, $patron), "Reserving a book on item level" );
my $pickup_branch = $builder->build({ source => 'Branch' })->{ branchcode };
{
branchcode => $branch_1,
borrowernumber => $borrowernumber,
- biblionumber => $item_bibnum,
+ biblionumber => $bibnum,
priority => 1,
}
);
-MoveReserve( $itemnumber, $borrowernumber );
-($status)=CheckReserves( $itemnumber );
+MoveReserve( $item->itemnumber, $borrowernumber );
+($status)=CheckReserves( $item->itemnumber );
is( $status, '', 'MoveReserve filled hold');
# hold from A waiting, today, no fut holds: MoveReserve should fill it
AddReserve(
{
branchcode => $branch_1,
borrowernumber => $borrowernumber,
- biblionumber => $item_bibnum,
+ biblionumber => $bibnum,
priority => 1,
found => 'W',
}
);
-MoveReserve( $itemnumber, $borrowernumber );
-($status)=CheckReserves( $itemnumber );
+MoveReserve( $item->itemnumber, $borrowernumber );
+($status)=CheckReserves( $item->itemnumber );
is( $status, '', 'MoveReserve filled waiting hold');
# hold from A pos 1, tomorrow, no fut holds: not filled
$resdate= dt_from_string();
{
branchcode => $branch_1,
borrowernumber => $borrowernumber,
- biblionumber => $item_bibnum,
+ biblionumber => $bibnum,
priority => 1,
reservation_date => $resdate,
}
);
-MoveReserve( $itemnumber, $borrowernumber );
-($status)=CheckReserves( $itemnumber, undef, 1 );
+MoveReserve( $item->itemnumber, $borrowernumber );
+($status)=CheckReserves( $item->itemnumber, undef, 1 );
is( $status, 'Reserved', 'MoveReserve did not fill future hold');
$dbh->do('DELETE FROM reserves', undef, ($bibnum));
# hold from A pos 1, tomorrow, fut holds=2: MoveReserve should fill it
{
branchcode => $branch_1,
borrowernumber => $borrowernumber,
- biblionumber => $item_bibnum,
+ biblionumber => $bibnum,
priority => 1,
reservation_date => $resdate,
}
);
-MoveReserve( $itemnumber, $borrowernumber );
-($status)=CheckReserves( $itemnumber, undef, 2 );
+MoveReserve( $item->itemnumber, $borrowernumber );
+($status)=CheckReserves( $item->itemnumber, undef, 2 );
is( $status, '', 'MoveReserve filled future hold now');
# hold from A waiting, tomorrow, fut holds=2: MoveReserve should fill it
AddReserve(
{
branchcode => $branch_1,
borrowernumber => $borrowernumber,
- biblionumber => $item_bibnum,
+ biblionumber => $bibnum,
priority => 1,
reservation_date => $resdate,
}
);
-MoveReserve( $itemnumber, $borrowernumber );
-($status)=CheckReserves( $itemnumber, undef, 2 );
+MoveReserve( $item->itemnumber, $borrowernumber );
+($status)=CheckReserves( $item->itemnumber, undef, 2 );
is( $status, '', 'MoveReserve filled future waiting hold now');
# hold from A pos 1, today+3, fut holds=2: MoveReserve should not fill it
$resdate= dt_from_string();
{
branchcode => $branch_1,
borrowernumber => $borrowernumber,
- biblionumber => $item_bibnum,
+ biblionumber => $bibnum,
priority => 1,
reservation_date => $resdate,
}
);
-MoveReserve( $itemnumber, $borrowernumber );
-($status)=CheckReserves( $itemnumber, undef, 3 );
+MoveReserve( $item->itemnumber, $borrowernumber );
+($status)=CheckReserves( $item->itemnumber, undef, 3 );
is( $status, 'Reserved', 'MoveReserve did not fill future hold of 3 days');
$dbh->do('DELETE FROM reserves', undef, ($bibnum));
use Koha::Database;
use Koha::Library;
+use t::lib::TestBuilder;
+
BEGIN {
}
$dbh->do(q|DELETE FROM branches |);
$dbh->do(q|DELETE FROM categories|);
+my $builder = t::lib::TestBuilder->new;
+
#Test CreateCollection
my $collections = GetCollections();
my $countcollection = scalar(@$collections);
)
);
my ( $biblionumber, $biblioitemnumber ) = C4::Biblio::AddBiblio( $record, '', );
-my @sampleitem1 = C4::Items::AddItem(
+my $item_id1 = $builder->build_sample_item(
{
- barcode => 1,
+ biblionumber => $biblionumber,
+ library => $samplebranch->{branchcode},
+ barcode => 1, # FIXME This must not be hardcoded!
itemcallnumber => 'callnumber1',
- homebranch => $samplebranch->{branchcode},
- holdingbranch => $samplebranch->{branchcode}
- },
- $biblionumber
-);
-my $item_id1 = $sampleitem1[2];
-my @sampleitem2 = C4::Items::AddItem(
+ }
+)->itemnumber;
+my $item_id2 = $builder->build_sample_item(
{
- barcode => 2,
+ biblionumber => $biblionumber,
+ library => $samplebranch->{branchcode},
+ barcode => 2, # FIXME This must not be hardcoded!
itemcallnumber => 'callnumber2',
- homebranch => $samplebranch->{branchcode},
- holdingbranch => $samplebranch->{branchcode}
- },
- $biblionumber
-);
-my $item_id2 = $sampleitem2[2];
+ }
+)->itemnumber;
+
is( AddItemToCollection( $collection_id1, $item_id1 ),
1, "Sampleitem1 has been added to Collection1" );
is( AddItemToCollection( $collection_id1, $item_id2 ),
my ( $biblionumber ) = C4::Biblio::AddBiblio($record, '');
for my $callnumber ( shuffle @callnumbers ) {
- my ( $biblionumber, undef, $itemnumber ) = C4::Items::AddItem({
- homebranch => $library->{branchcode},
- holdingbranch => $library->{branchcode},
- itemcallnumber => $callnumber,
- }, $biblionumber);
+ my $itemnumber = $builder->build_sample_item(
+ {
+ biblionumber => $biblionumber,
+ library => $library->{branchcode},
+ itemcallnumber => $callnumber,
+ }
+ )->itemnumber;
$cn->{$callnumber} = {
biblionumber => $biblionumber,
itemnumber => $itemnumber,
use C4::Context;
use C4::Biblio qw(AddBiblio);
-use C4::Items qw(AddItem);
use Koha::Database;
use Clone qw(clone);
my $library = delete $args->{library}
|| $self->build_object( { class => 'Koha::Libraries' } )->branchcode;
- my $itype = delete $args->{itype}
- || $self->build_object( { class => 'Koha::ItemTypes' } )->itemtype;
+ # If itype is not passed it will be picked from the biblio (see Koha::Item->store)
my $barcode = delete $args->{barcode}
|| $self->_gen_text( { info => { size => SIZE_BARCODE } } );
homebranch => $library,
holdingbranch => $library,
barcode => $barcode,
- itype => $itype,
%$args,
},
$biblionumber