my @invoices = GetInvoices(
invoicenumber => $invoicenumber,
+ supplierid => $supplierid,
suppliername => $suppliername,
shipmentdatefrom => $shipmentdatefrom, # ISO format
shipmentdateto => $shipmentdateto, # ISO format
FROM aqinvoices
LEFT JOIN aqbooksellers ON aqbooksellers.id = aqinvoices.booksellerid
LEFT JOIN aqorders ON aqorders.invoiceid = aqinvoices.invoiceid
+ LEFT JOIN aqbasket ON aqbasket.basketno=aqorders.basketno
+ LEFT JOIN borrowers ON aqbasket.authorisedby=borrowers.borrowernumber
LEFT JOIN biblio ON aqorders.biblionumber = biblio.biblionumber
LEFT JOIN biblioitems ON biblio.biblionumber = biblioitems.biblionumber
LEFT JOIN subscription ON biblio.biblionumber = subscription.biblionumber
push @bind_args, "%$args{suppliername}%";
}
if($args{shipmentdatefrom}) {
- push @bind_strs, " aqinvoices.shipementdate >= ? ";
+ push @bind_strs, " aqinvoices.shipmentdate >= ? ";
push @bind_args, $args{shipmentdatefrom};
}
if($args{shipmentdateto}) {
- push @bind_strs, " aqinvoices.shipementdate <= ? ";
+ push @bind_strs, " aqinvoices.shipmentdate <= ? ";
push @bind_args, $args{shipmentdateto};
}
if($args{billingdatefrom}) {
push @bind_args, $args{billingdateto};
}
if($args{isbneanissn}) {
- push @bind_strs, " (biblioitems.isbn LIKE ? OR biblioitems.ean LIKE ? OR biblioitems.issn LIKE ? ) ";
+ push @bind_strs, " (biblioitems.isbn LIKE CONCAT('%', ?, '%') OR biblioitems.ean LIKE CONCAT('%', ?, '%') OR biblioitems.issn LIKE CONCAT('%', ?, '%') ) ";
push @bind_args, $args{isbneanissn}, $args{isbneanissn}, $args{isbneanissn};
}
if($args{title}) {
- push @bind_strs, " biblio.title LIKE ? ";
+ push @bind_strs, " biblio.title LIKE CONCAT('%', ?, '%') ";
push @bind_args, $args{title};
}
if($args{author}) {
- push @bind_strs, " biblio.author LIKE ? ";
+ push @bind_strs, " biblio.author LIKE CONCAT('%', ?, '%') ";
push @bind_args, $args{author};
}
if($args{publisher}) {
- push @bind_strs, " biblioitems.publishercode LIKE ? ";
+ push @bind_strs, " biblioitems.publishercode LIKE CONCAT('%', ?, '%') ";
push @bind_args, $args{publisher};
}
if($args{publicationyear}) {
- push @bind_strs, " biblioitems.publicationyear = ? ";
- push @bind_args, $args{publicationyear};
+ push @bind_strs, " ((biblioitems.publicationyear LIKE CONCAT('%', ?, '%')) OR (biblio.copyrightdate LIKE CONCAT('%', ?, '%'))) ";
+ push @bind_args, $args{publicationyear}, $args{publicationyear};
}
if($args{branchcode}) {
- push @bind_strs, " aqorders.branchcode = ? ";
+ push @bind_strs, " borrowers.branchcode = ? ";
push @bind_args, $args{branchcode};
}
use Modern::Perl;
use C4::Context;
-use Test::More tests => 49;
+use Test::More tests => 50;
use Test::MockModule;
-use_ok('C4::Acquisition');
-
my $module = new Test::MockModule('C4::Context');
$module->mock('_new_dbh', sub {
my $dbh = DBI->connect( 'DBI:Mock:', '', '' )
my $dbh = C4::Context->dbh;
+use_ok('C4::Acquisition');
+
# We need to add a resultset to avoid DBI fail
# ("DBI bind_columns: invalid number of arguments...")
my $rs = [
);
my $history = $dbh->{mock_all_history};
-is(scalar(@$history), 1);
-my @bound_params = @{ $history->[0]->{bound_params} };
-is(scalar(@bound_params), 15);
+ok(scalar(@$history) > 0);
+my @bound_params = @{ $history->[-1]->{bound_params} };
+is(scalar(@bound_params), 16);
is($bound_params[0], 'supplierid');
is($bound_params[1], '%invoicenumber%');
is($bound_params[2], '%suppliername%');
is($bound_params[11], 'author');
is($bound_params[12], 'publisher');
is($bound_params[13], 'publicationyear');
-is($bound_params[14], 'branchcode');
+is($bound_params[14], 'publicationyear');
+is($bound_params[15], 'branchcode');
$dbh->{mock_clear_history} = 1;
$dbh->{mock_add_resultset} = $rs;
use C4::Bookseller qw( GetBookSellerFromId );
use C4::Biblio qw( AddBiblio );
-use Test::More tests => 14;
+use Test::More tests => 21;
BEGIN {
use_ok('C4::Acquisition');
$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
+$dbh->do(q{DELETE FROM aqinvoices});
+
my $booksellerid = C4::Bookseller::AddBookseller(
{
name => "my vendor",
my $budget = C4::Budgets::GetBudget( $budgetid );
my ($ordernumber1, $ordernumber2, $ordernumber3);
-my ($biblionumber1, $biblioitemnumber1) = AddBiblio(MARC::Record->new, '');
+my $bibrec1 = MARC::Record->new();
+$bibrec1->append_fields(
+ MARC::Field->new('020', '', '', 'a' => '1234567890'),
+ MARC::Field->new('100', '', '', 'a' => 'Shakespeare, Billy'),
+ MARC::Field->new('245', '', '', 'a' => 'Bug 8854'),
+ MARC::Field->new('260', '', '', 'b' => 'Scholastic Publishing', c => 'c2012'),
+);
+my ($biblionumber1, $biblioitemnumber1) = AddBiblio($bibrec1, '');
my ($biblionumber2, $biblioitemnumber2) = AddBiblio(MARC::Record->new, '');
my ($biblionumber3, $biblioitemnumber3) = AddBiblio(MARC::Record->new, '');
( undef, $ordernumber1 ) = C4::Acquisition::NewOrder(
);
my $invoiceid1 = AddInvoice(invoicenumber => 'invoice1', booksellerid => $booksellerid, unknown => "unknown");
-my $invoiceid2 = AddInvoice(invoicenumber => 'invoice2', booksellerid => $booksellerid, unknown => "unknown");
+my $invoiceid2 = AddInvoice(invoicenumber => 'invoice2', booksellerid => $booksellerid, unknown => "unknown",
+ shipmentdate => '2012-12-24',
+ );
my ($datereceived, $new_ordernumber) = ModReceiveOrder(
$biblionumber1,
@invoices = GetInvoices(invoicenumber => 'invoice2');
cmp_ok(scalar @invoices, '>=', 1, 'GetInvoices returns at least one invoice when a specific invoice is requested');
+@invoices = GetInvoices(shipmentdateto => '2012-12-24', shipmentdatefrom => '2012-12-24');
+is($invoices[0]->{invoicenumber}, 'invoice2', 'GetInvoices() to search by shipmentdate works (bug 8854)');
+@invoices = GetInvoices(title => 'Bug');
+is($invoices[0]->{invoicenumber}, 'invoice1', 'GetInvoices() to search by title works (bug 8854)');
+@invoices = GetInvoices(author => 'Billy');
+is($invoices[0]->{invoicenumber}, 'invoice1', 'GetInvoices() to search by author works (bug 8854)');
+@invoices = GetInvoices(publisher => 'Scholastic');
+is($invoices[0]->{invoicenumber}, 'invoice1', 'GetInvoices() to search by publisher works (bug 8854)');
+@invoices = GetInvoices(publicationyear => '2012');
+is($invoices[0]->{invoicenumber}, 'invoice1', 'GetInvoices() to search by publication/copyright year works (bug 8854)');
+@invoices = GetInvoices(isbneanissn => '1234567890');
+is($invoices[0]->{invoicenumber}, 'invoice1', 'GetInvoices() to search by ISBN works (bug 8854)');
+@invoices = GetInvoices(isbneanissn => '123456789');
+is($invoices[0]->{invoicenumber}, 'invoice1', 'GetInvoices() to search by partial ISBN works (bug 8854)');
+
my $invoicesummary1 = GetInvoice($invoiceid1);
is($invoicesummary1->{'invoicenumber'}, 'invoice1', 'GetInvoice retrieves correct invoice');
is($invoicesummary1->{'invoicenumber'}, $invoice1->{'invoicenumber'}, 'GetInvoice and GetInvoiceDetails retrieve same information');