=head3 NewBasket
$basket = &NewBasket( $booksellerid, $authorizedby, $basketname,
- $basketnote, $basketbooksellernote, $basketcontractnumber, $deliveryplace, $billingplace, $is_standing );
+ $basketnote, $basketbooksellernote, $basketcontractnumber, $deliveryplace, $billingplace, $is_standing, $create_items );
Create a new basket in aqbasket table
sub NewBasket {
my ( $booksellerid, $authorisedby, $basketname, $basketnote,
$basketbooksellernote, $basketcontractnumber, $deliveryplace,
- $billingplace, $is_standing ) = @_;
+ $billingplace, $is_standing, $create_items ) = @_;
my $dbh = C4::Context->dbh;
my $query =
'INSERT INTO aqbasket (creationdate,booksellerid,authorisedby) '
$basketnote ||= q{};
$basketbooksellernote ||= q{};
ModBasketHeader( $basket, $basketname, $basketnote, $basketbooksellernote,
- $basketcontractnumber, $booksellerid, $deliveryplace, $billingplace, $is_standing );
+ $basketcontractnumber, $booksellerid, $deliveryplace, $billingplace, $is_standing, $create_items );
return $basket;
}
UPDATE aqorders
SET orderstatus = 'new'
WHERE basketno = ?
- AND orderstatus != 'complete'
+ AND orderstatus NOT IN ( 'complete', 'cancelled' )
}, {}, $basketno);
return;
}
=item C<$is_standing> is the "is_standing" field in the aqbasket table.
+=item C<$create_items> should be set to 'ordering', 'receiving' or 'cataloguing' (or undef, in which
+case the AcqCreateItem syspref takes precedence).
+
=back
=cut
sub ModBasketHeader {
- my ($basketno, $basketname, $note, $booksellernote, $contractnumber, $booksellerid, $deliveryplace, $billingplace, $is_standing) = @_;
+ my ($basketno, $basketname, $note, $booksellernote, $contractnumber, $booksellerid, $deliveryplace, $billingplace, $is_standing, $create_items) = @_;
+
+ $is_standing ||= 0;
my $query = qq{
UPDATE aqbasket
- SET basketname=?, note=?, booksellernote=?, booksellerid=?, deliveryplace=?, billingplace=?, is_standing=?
+ SET basketname=?, note=?, booksellernote=?, booksellerid=?, deliveryplace=?, billingplace=?, is_standing=?, create_items=?
WHERE basketno=?
};
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare($query);
- $sth->execute($basketname, $note, $booksellernote, $booksellerid, $deliveryplace, $billingplace, $is_standing, $basketno);
+ $sth->execute($basketname, $note, $booksellernote, $booksellerid, $deliveryplace, $billingplace, $is_standing, $create_items || undef, $basketno);
if ( $contractnumber ) {
my $query2 ="UPDATE aqbasket SET contractnumber=? WHERE basketno=?";
my $dbh = C4::Context->dbh;
my $query = q{
- SELECT aqbasket.*,
+ SELECT aqbasket.basketno, aqbasket.basketname, aqbasket.note, aqbasket.booksellernote, aqbasket.contractnumber, aqbasket.creationdate, aqbasket.closedate, aqbasket.booksellerid, aqbasket.authorisedby, aqbasket.booksellerinvoicenumber, aqbasket.basketgroupid, aqbasket.deliveryplace, aqbasket.billingplace, aqbasket.branch, aqbasket.is_standing, aqbasket.create_items,
SUM(aqorders.quantity) AS total_items,
SUM(
IF ( aqorders.orderstatus = 'cancelled', aqorders.quantity, 0 )
unless ( $allbaskets ) {
$query.=" AND (closedate IS NULL OR (aqorders.quantity > aqorders.quantityreceived AND datecancellationprinted IS NULL))";
}
- $query.=" GROUP BY aqbasket.basketno";
+ $query.=" GROUP BY aqbasket.basketno, aqbasket.basketname, aqbasket.note, aqbasket.booksellernote, aqbasket.contractnumber, aqbasket.creationdate, aqbasket.closedate, aqbasket.booksellerid, aqbasket.authorisedby, aqbasket.booksellerinvoicenumber, aqbasket.basketgroupid, aqbasket.deliveryplace, aqbasket.billingplace, aqbasket.branch, aqbasket.is_standing, aqbasket.create_items";
my $sth = $dbh->prepare($query);
$sth->execute($supplierid);
my $parent_ordernumber = $order->{'parent_ordernumber'};
my @itemnumbers = GetItemnumbersFromOrder( $ordernumber );
+ my $order_obj = Koha::Acquisition::Orders->find( $ordernumber ); # FIXME rewrite all this subroutine using this object
if($parent_ordernumber == $ordernumber || not $parent_ordernumber) {
# The order line has no parent, just mark it as not received
};
$sth = $dbh->prepare($query);
$sth->execute(0, undef, undef, $ordernumber);
- _cancel_items_receipt( $ordernumber );
+ _cancel_items_receipt( $order_obj );
} else {
# The order line has a parent, increase parent quantity and delete
# the order line.
WHERE ordernumber = ?
|, undef, $parent_ordernumber);
- _cancel_items_receipt( $ordernumber, $parent_ordernumber );
+ _cancel_items_receipt( $order_obj, $parent_ordernumber );
# Delete order line
$query = qq{
DELETE FROM aqorders
}
- if(C4::Context->preference('AcqCreateItem') eq 'ordering') {
+ if( $order_obj->basket->effective_create_items eq 'ordering' ) {
my @affects = split q{\|}, C4::Context->preference("AcqItemSetSubfieldsWhenReceiptIsCancelled");
if ( @affects ) {
for my $in ( @itemnumbers ) {
}
sub _cancel_items_receipt {
- my ( $ordernumber, $parent_ordernumber ) = @_;
- $parent_ordernumber ||= $ordernumber;
+ my ( $order, $parent_ordernumber ) = @_;
+ $parent_ordernumber ||= $order->ordernumber;
- my @itemnumbers = GetItemnumbersFromOrder($ordernumber);
- if(C4::Context->preference('AcqCreateItem') eq 'receiving') {
+ my @itemnumbers = GetItemnumbersFromOrder($order->ordernumber); # FIXME Must be $order->items
+ if ( $order->basket->effective_create_items eq 'receiving' ) {
# Remove items that were created at receipt
my $query = qq{
DELETE FROM items, aqorders_items
AND aqbasket.closedate IS NOT NULL
AND (aqorders.datecancellationprinted IS NULL OR aqorders.datecancellationprinted='0000-00-00')
";
- my $having = "";
if ($dbdriver eq "mysql") {
$select .= "
aqorders.quantity - COALESCE(aqorders.quantityreceived,0) AS quantity,
$from .= " AND (closedate <= DATE_SUB(CAST(now() AS date),INTERVAL ? DAY)) " ;
push @query_params, $delay;
}
- $having = "HAVING quantity <> 0";
+ $from .= " AND aqorders.quantity - COALESCE(aqorders.quantityreceived,0) <> 0";
} else {
# FIXME: account for IFNULL as above
$select .= "
$from .= " AND (closedate <= (CAST(now() AS date) -(INTERVAL ? DAY)) ";
push @query_params, $delay;
}
+ $from .= " AND aqorders.quantity <> 0";
}
if (defined $supplierid) {
$from .= ' AND aqbasket.booksellerid = ? ';
push @query_params, C4::Context->userenv->{branch};
}
$from .= " AND orderstatus <> 'cancelled' ";
- my $query = "$select $from $having\nORDER BY latesince, basketno, borrowers.branchcode, supplier";
+ my $query = "$select $from \nORDER BY latesince, basketno, borrowers.branchcode, supplier";
$debug and print STDERR "GetLateOrders query: $query\nGetLateOrders args: " . join(" ",@query_params);
my $sth = $dbh->prepare($query);
$sth->execute(@query_params);
my $total_qtyreceived = 0;
my $total_price = 0;
+ #get variation of isbn
+ my @isbn_params;
+ my @isbns;
+ if ($isbn){
+ if ( C4::Context->preference("SearchWithISBNVariations") ){
+ @isbns = C4::Koha::GetVariationsOfISBN( $isbn );
+ foreach my $isb (@isbns){
+ push @isbn_params, '?';
+ }
+ }
+ unless (@isbns){
+ push @isbns, $isbn;
+ push @isbn_params, '?';
+ }
+ }
+
my $dbh = C4::Context->dbh;
my $query ="
SELECT
push @query_params, "%$author%";
}
- if ( $isbn ) {
- $query .= " AND biblioitems.isbn LIKE ? ";
- push @query_params, "%$isbn%";
+ if ( @isbns ) {
+ $query .= " AND ( biblioitems.isbn LIKE " . join (" OR biblioitems.isbn LIKE ", @isbn_params ) . ")";
+ foreach my $isb (@isbns){
+ push @query_params, "%$isb%";
+ }
}
+
if ( $ean ) {
$query .= " AND biblioitems.ean = ? ";
push @query_params, "$ean";
$results = GetRecentAcqui($days);
-C<$results> is a ref to a table which containts hashref
+C<$results> is a ref to a table which contains hashref
=cut
my $dbh = C4::Context->dbh;
my $query = qq{
- SELECT aqinvoices.*, aqbooksellers.name AS suppliername,
+ SELECT aqinvoices.invoiceid, aqinvoices.invoicenumber, aqinvoices.booksellerid, aqinvoices.shipmentdate, aqinvoices.billingdate, aqinvoices.closedate, aqinvoices.shipmentcost, aqinvoices.shipmentcost_budgetid, aqinvoices.message_id,
+ aqbooksellers.name AS suppliername,
COUNT(
DISTINCT IF(
aqorders.datereceived IS NOT NULL,
}
$query .= " WHERE " . join(" AND ", @bind_strs) if @bind_strs;
- $query .= " GROUP BY aqinvoices.invoiceid ";
+ $query .= " GROUP BY aqinvoices.invoiceid, aqinvoices.invoicenumber, aqinvoices.booksellerid, aqinvoices.shipmentdate, aqinvoices.billingdate, aqinvoices.closedate, aqinvoices.shipmentcost, aqinvoices.shipmentcost_budgetid, aqinvoices.message_id, aqbooksellers.name";
if($args{order_by}) {
my ($column, $direction) = split / /, $args{order_by};
# ecost tax excluded = rrp tax excluded * ( 1 - discount )
$order->{ecost_tax_excluded} = $order->{rrp_tax_excluded} * ( 1 - $discount );
- # ecost tax included = rrp tax excluded * ( 1 - tax rate ) * ( 1 - discount )
+ # ecost tax included = rrp tax excluded * ( 1 + tax rate ) * ( 1 - discount )
$order->{ecost_tax_included} =
$order->{rrp_tax_excluded} *
( 1 + $order->{tax_rate_on_ordering} ) *