require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
- &GetBasket &NewBasket &CloseBasket &DelBasket &ModBasket
+ &GetBasket &NewBasket &CloseBasket &CloseBasketgroup &ReOpenBasketgroup &DelBasket &ModBasket
&ModBasketHeader &GetBasketsByBookseller &GetBasketsByBasketgroup
&ModBasketgroup &NewBasketgroup &DelBasketgroup &GetBasketgroup
&GetBasketgroups
&GetPendingOrders &GetOrder &GetOrders
&GetOrderNumber &GetLateOrders &NewOrder &DelOrder
&SearchOrder &GetHistory &GetRecentAcqui
- &ModOrder &ModReceiveOrder &ModOrderBiblioitemNumber
+ &ModOrder &ModOrderItem &ModReceiveOrder &ModOrderBiblioitemNumber
&NewOrderItem
&GetContracts &GetContract
&GetOrderFromItemnumber
+ &GetItemnumbersFromOrder
);
}
}
+# Returns the itemnumber(s) associated with the ordernumber given in parameter
+sub GetItemnumbersFromOrder {
+ my ($ordernumber) = @_;
+ my $dbh = C4::Context->dbh;
+ my $query = "SELECT itemnumber FROM aqorders_items WHERE ordernumber=?";
+ my $sth = $dbh->prepare($query);
+ $sth->execute($ordernumber);
+ my @tab;
+
+ while (my $order = $sth->fetchrow_hashref) {
+ push @tab, $order->{'itemnumber'};
+ }
+
+ return @tab;
+
+}
#------------------------------------------------------------#
+=head3 CloseBasketgroup
+
+=over 4
+
+&CloseBasketgroup($basketgroupno);
+
+close a basketgroup
+
+=back
+
+=cut
+
+sub CloseBasketgroup {
+ my ($basketgroupno) = @_;
+ my $dbh = C4::Context->dbh;
+ my $sth = $dbh->prepare("
+ UPDATE aqbasketgroups
+ SET closed=1
+ WHERE id=?
+ ");
+ $sth->execute($basketgroupno);
+}
+
+#------------------------------------------------------------#
+
+=head3 ReOpenBaskergroup($basketgroupno)
+
+=over 4
+
+&ReOpenBaskergroup($basketgroupno);
+
+reopen a basketgroup
+
+=back
+
+=cut
+
+sub ReOpenBasketgroup {
+ my ($basketgroupno) = @_;
+ my $dbh = C4::Context->dbh;
+ my $sth = $dbh->prepare("
+ UPDATE aqbasketgroups
+ SET closed=0
+ WHERE id=?
+ ");
+ $sth->execute($basketgroupno);
+}
+
+#------------------------------------------------------------#
+
+
=head3 DelBasket
=over 4
push(@params, $basketgroupinfo->{'id'});
my $sth = $dbh->prepare($query);
$sth->execute(@params);
+
+ $sth = $dbh->prepare('UPDATE aqbasket SET basketgroupid = NULL WHERE basketgroupid = ?');
+ $sth->execute($basketgroupinfo->{'id'});
+
if($basketgroupinfo->{'basketlist'} && @{$basketgroupinfo->{'basketlist'}}){
+ $sth = $dbh->prepare("UPDATE aqbasket SET basketgroupid=? WHERE basketno=?");
foreach my $basketno (@{$basketgroupinfo->{'basketlist'}}) {
- my $query2 = "UPDATE aqbasket SET basketgroupid=? WHERE basketno=?";
- my $sth2 = $dbh->prepare($query2);
- $sth2->execute($basketgroupinfo->{'id'}, $basketno);
- $sth2->finish;
+ $sth->execute($basketgroupinfo->{'id'}, $basketno);
+ $sth->finish;
}
}
$sth->finish;
=cut
sub GetPendingOrders {
- my ($supplierid,$grouped,$owner) = @_;
+ my ($supplierid,$grouped,$owner,$basketno) = @_;
my $dbh = C4::Context->dbh;
my $strsth = "
SELECT ".($grouped?"count(*),":"")."aqbasket.basketno,
- surname,firstname,aqorders.*,biblio.*,
+ surname,firstname,aqorders.*,biblio.*,biblioitems.isbn,
aqbasket.closedate, aqbasket.creationdate, aqbasket.basketname
FROM aqorders
LEFT JOIN aqbasket ON aqbasket.basketno=aqorders.basketno
LEFT JOIN borrowers ON aqbasket.authorisedby=borrowers.borrowernumber
LEFT JOIN biblio ON biblio.biblionumber=aqorders.biblionumber
+ LEFT JOIN biblioitems ON biblioitems.biblionumber=biblio.biblionumber
WHERE booksellerid=?
AND (quantity > quantityreceived OR quantityreceived is NULL)
AND datecancellationprinted IS NULL
$strsth .= " AND aqbasket.authorisedby=? ";
push @query_params, $userenv->{'number'};
}
+ if ($basketno) {
+ $strsth .= " AND aqbasket.basketno=? ";
+ push @query_params, $basketno;
+ }
$strsth .= " group by aqbasket.basketno" if $grouped;
$strsth .= " order by aqbasket.basketno";
#------------------------------------------------------------#
+=head3 ModOrderItem
+
+=over 4
+
+&ModOrderItem(\%hashref);
+
+=over 2
+
+Modifies the itemnumber in the aqorders_items table. The input hash needs three entities:
+ - itemnumber: the old itemnumber
+ - ordernumber: the order this item is attached to
+ - newitemnumber: the new itemnumber we want to attach the line to
+
+=back
+
+=back
+
+=cut
+
+sub ModOrderItem {
+ my $orderiteminfo = shift;
+ if (! $orderiteminfo->{'ordernumber'} || ! $orderiteminfo->{'itemnumber'} || ! $orderiteminfo->{'newitemnumber'}){
+ die "Ordernumber, itemnumber and newitemnumber is required";
+ }
+
+ my $dbh = C4::Context->dbh;
+
+ my $query = "UPDATE aqorders_items set itemnumber=? where itemnumber=? and ordernumber=?";
+ my @params = ($orderiteminfo->{'newitemnumber'}, $orderiteminfo->{'itemnumber'}, $orderiteminfo->{'ordernumber'});
+ warn $query;
+ warn Data::Dumper::Dumper(@params);
+ my $sth = $dbh->prepare($query);
+ $sth->execute(@params);
+ return 0;
+}
+
+#------------------------------------------------------------#
+
+
=head3 ModOrderBibliotemNumber
=over 4
sub SearchOrder {
#### -------- SearchOrder-------------------------------
- my ($ordernumber, $search) = @_;
+ my ($ordernumber, $search, $supplierid, $basket) = @_;
- if ($ordernumber) {
- my $dbh = C4::Context->dbh;
- my $query =
- "SELECT *
- FROM aqorders
- LEFT JOIN biblio ON aqorders.biblionumber=biblio.biblionumber
- LEFT JOIN biblioitems ON biblioitems.biblionumber=biblio.biblionumber
- LEFT JOIN aqbasket ON aqorders.basketno = aqbasket.basketno
- WHERE ((datecancellationprinted is NULL)
- AND (aqorders.ordernumber=?))";
- my $sth = $dbh->prepare($query);
- $sth->execute($ordernumber);
- my $results = $sth->fetchall_arrayref({});
- $sth->finish;
- return $results;
- } else {
- my $dbh = C4::Context->dbh;
- my $query =
+ my $dbh = C4::Context->dbh;
+ my @args = ();
+ my $query =
"SELECT *
FROM aqorders
LEFT JOIN biblio ON aqorders.biblionumber=biblio.biblionumber
LEFT JOIN biblioitems ON biblioitems.biblionumber=biblio.biblionumber
LEFT JOIN aqbasket ON aqorders.basketno = aqbasket.basketno
- WHERE ((datecancellationprinted is NULL)
- AND (biblio.title like ? OR biblioitems.isbn like ?))";
- my $sth = $dbh->prepare($query);
- $sth->execute("%$search%","%$search%");
- my $results = $sth->fetchall_arrayref({});
- $sth->finish;
- return $results;
+ WHERE (datecancellationprinted is NULL)";
+
+ if($ordernumber){
+ $query .= " AND (aqorders.ordernumber=?)";
+ push @args, $ordernumber;
+ }
+ if($search){
+ $query .= " AND (biblio.title like ? OR biblio.author LIKE ? OR biblioitems.isbn like ?)";
+ push @args, ("%$search%","%$search%","%$search%");
+ }
+ if($supplierid){
+ $query .= "AND aqbasket.booksellerid = ?";
+ push @args, $supplierid;
+ }
+ if($basket){
+ $query .= "AND aqorders.basketno = ?";
+ push @args, $basket;
}
+
+ my $sth = $dbh->prepare($query);
+ $sth->execute(@args);
+ my $results = $sth->fetchall_arrayref({});
+ $sth->finish;
+ return $results;
}
#------------------------------------------------------------#