View | Details | Raw Unified | Return to bug 13244
Collapse All | Expand All

(-)a/C4/Acquisition.pm (-59 / +46 lines)
Lines 61-67 BEGIN { Link Here
61
        &GetLateOrders &GetOrderFromItemnumber
61
        &GetLateOrders &GetOrderFromItemnumber
62
        &SearchOrders &GetHistory &GetRecentAcqui
62
        &SearchOrders &GetHistory &GetRecentAcqui
63
        &ModReceiveOrder &CancelReceipt
63
        &ModReceiveOrder &CancelReceipt
64
        &GetCancelledOrders &TransferOrder
64
        &TransferOrder
65
        &GetLastOrderNotReceivedFromSubscriptionid &GetLastOrderReceivedFromSubscriptionid
65
        &GetLastOrderNotReceivedFromSubscriptionid &GetLastOrderReceivedFromSubscriptionid
66
        &ModItemOrder
66
        &ModItemOrder
67
67
Lines 1035-1077 sub GetBasketgroups { Link Here
1035
1035
1036
=head3 GetOrders
1036
=head3 GetOrders
1037
1037
1038
  @orders = &GetOrders($basketnumber, $orderby);
1038
  @orders = &GetOrders( $basketno, { orderby => 'biblio.title', cancelled => 0|1 } );
1039
1039
1040
Looks up the pending (non-cancelled) orders with the given basket
1040
Looks up the pending (non-cancelled) orders with the given basket
1041
number. If C<$booksellerID> is non-empty, only orders from that seller
1041
number.
1042
are returned.
1043
1042
1044
return :
1043
If cancelled is set, only cancelled orders will be returned.
1045
C<&basket> returns a two-element array. C<@orders> is an array of
1046
references-to-hash, whose keys are the fields from the aqorders,
1047
biblio, and biblioitems tables in the Koha database.
1048
1044
1049
=cut
1045
=cut
1050
1046
1051
sub GetOrders {
1047
sub GetOrders {
1052
    my ( $basketno, $orderby ) = @_;
1048
    my ( $basketno, $params ) = @_;
1049
1053
    return () unless $basketno;
1050
    return () unless $basketno;
1051
1052
    my $orderby = $params->{orderby};
1053
    my $cancelled = $params->{cancelled} || 0;
1054
1054
    my $dbh   = C4::Context->dbh;
1055
    my $dbh   = C4::Context->dbh;
1055
    my $query  ="
1056
    my $query = q|
1056
        SELECT biblio.*,biblioitems.*,
1057
        SELECT biblio.*,biblioitems.*,
1057
                aqorders.*,
1058
                aqorders.*,
1058
                aqbudgets.*,
1059
                aqbudgets.*,
1060
        |;
1061
    $query .= $cancelled
1062
      ? q|
1063
                aqorders_transfers.ordernumber_from AS transferred_to,
1064
                aqorders_transfers.timestamp AS transferred_to_timestamp
1065
    |
1066
      : q|
1059
                aqorders_transfers.ordernumber_from AS transferred_from,
1067
                aqorders_transfers.ordernumber_from AS transferred_from,
1060
                aqorders_transfers.timestamp AS transferred_from_timestamp
1068
                aqorders_transfers.timestamp AS transferred_from_timestamp
1069
    |;
1070
    $query .= q|
1061
        FROM    aqorders
1071
        FROM    aqorders
1062
            LEFT JOIN aqbudgets        ON aqbudgets.budget_id = aqorders.budget_id
1072
            LEFT JOIN aqbudgets        ON aqbudgets.budget_id = aqorders.budget_id
1063
            LEFT JOIN biblio           ON biblio.biblionumber = aqorders.biblionumber
1073
            LEFT JOIN biblio           ON biblio.biblionumber = aqorders.biblionumber
1064
            LEFT JOIN biblioitems      ON biblioitems.biblionumber =biblio.biblionumber
1074
            LEFT JOIN biblioitems      ON biblioitems.biblionumber =biblio.biblionumber
1075
    |;
1076
    $query .= $cancelled
1077
      ? q|
1078
            LEFT JOIN aqorders_transfers ON aqorders_transfers.ordernumber_from = aqorders.ordernumber
1079
    |
1080
      : q|
1065
            LEFT JOIN aqorders_transfers ON aqorders_transfers.ordernumber_to = aqorders.ordernumber
1081
            LEFT JOIN aqorders_transfers ON aqorders_transfers.ordernumber_to = aqorders.ordernumber
1082
1083
    |;
1084
    $query .= q|
1066
        WHERE   basketno=?
1085
        WHERE   basketno=?
1086
    |;
1087
1088
    if ($cancelled) {
1089
        $orderby ||= q|biblioitems.publishercode, biblio.title|;
1090
        $query .= q|
1091
            AND (datecancellationprinted IS NOT NULL
1092
               AND datecancellationprinted <> '0000-00-00')
1093
        |;
1094
    }
1095
    else {
1096
        $orderby ||=
1097
          q|aqorders.datecancellationprinted desc, aqorders.timestamp desc|;
1098
        $query .= q|
1067
            AND (datecancellationprinted IS NULL OR datecancellationprinted='0000-00-00')
1099
            AND (datecancellationprinted IS NULL OR datecancellationprinted='0000-00-00')
1068
    ";
1100
        |;
1101
    }
1069
1102
1070
    $orderby = "biblioitems.publishercode,biblio.title" unless $orderby;
1071
    $query .= " ORDER BY $orderby";
1103
    $query .= " ORDER BY $orderby";
1072
    my $result_set =
1104
    my $orders =
1073
      $dbh->selectall_arrayref( $query, { Slice => {} }, $basketno );
1105
      $dbh->selectall_arrayref( $query, { Slice => {} }, $basketno );
1074
    return @{$result_set};
1106
    return @{$orders};
1075
1107
1076
}
1108
}
1077
1109
Lines 1306-1356 sub ModItemOrder { Link Here
1306
1338
1307
#------------------------------------------------------------#
1339
#------------------------------------------------------------#
1308
1340
1309
=head3 GetCancelledOrders
1310
1311
  my @orders = GetCancelledOrders($basketno, $orderby);
1312
1313
Returns cancelled orders for a basket
1314
1315
=cut
1316
1317
sub GetCancelledOrders {
1318
    my ( $basketno, $orderby ) = @_;
1319
1320
    return () unless $basketno;
1321
1322
    my $dbh   = C4::Context->dbh;
1323
    my $query = "
1324
        SELECT
1325
            biblio.*,
1326
            biblioitems.*,
1327
            aqorders.*,
1328
            aqbudgets.*,
1329
            aqorders_transfers.ordernumber_to AS transferred_to,
1330
            aqorders_transfers.timestamp AS transferred_to_timestamp
1331
        FROM aqorders
1332
          LEFT JOIN aqbudgets   ON aqbudgets.budget_id = aqorders.budget_id
1333
          LEFT JOIN biblio      ON biblio.biblionumber = aqorders.biblionumber
1334
          LEFT JOIN biblioitems ON biblioitems.biblionumber = biblio.biblionumber
1335
          LEFT JOIN aqorders_transfers ON aqorders_transfers.ordernumber_from = aqorders.ordernumber
1336
        WHERE basketno = ?
1337
          AND (datecancellationprinted IS NOT NULL
1338
               AND datecancellationprinted <> '0000-00-00')
1339
    ";
1340
1341
    $orderby = "aqorders.datecancellationprinted desc, aqorders.timestamp desc"
1342
        unless $orderby;
1343
    $query .= " ORDER BY $orderby";
1344
    my $sth = $dbh->prepare($query);
1345
    $sth->execute($basketno);
1346
    my $results = $sth->fetchall_arrayref( {} );
1347
1348
    return @$results;
1349
}
1350
1351
1352
#------------------------------------------------------------#
1353
1354
=head3 ModReceiveOrder
1341
=head3 ModReceiveOrder
1355
1342
1356
  &ModReceiveOrder({
1343
  &ModReceiveOrder({
(-)a/acqui/basket.pl (-1 / +1 lines)
Lines 366-372 if ( $op eq 'delete_confirm' ) { Link Here
366
    push @book_foot_loop, map {$_} values %foot;
366
    push @book_foot_loop, map {$_} values %foot;
367
367
368
    # Get cancelled orders
368
    # Get cancelled orders
369
    @results = GetCancelledOrders($basketno);
369
    my @results = GetOrders($basketno, { cancelled => 1 });
370
    my @cancelledorders_loop;
370
    my @cancelledorders_loop;
371
    for my $order (@results) {
371
    for my $order (@results) {
372
        my $line = get_order_infos( $order, $bookseller);
372
        my $line = get_order_infos( $order, $bookseller);
(-)a/t/db_dependent/Acquisition.t (-13 / +8 lines)
Lines 19-27 use Modern::Perl; Link Here
19
19
20
use POSIX qw(strftime);
20
use POSIX qw(strftime);
21
21
22
use C4::Bookseller qw( GetBookSellerFromId );
22
use Test::More tests => 86;
23
24
use Test::More tests => 87;
25
23
26
BEGIN {
24
BEGIN {
27
    use_ok('C4::Acquisition');
25
    use_ok('C4::Acquisition');
Lines 528-541 ok( Link Here
528
);
526
);
529
527
530
#
528
#
531
# Test GetCancelledOrders
529
# Test GetOrders { cancelled => 1 }
532
#
530
#
533
531
534
@expectedfields =
532
@expectedfields =
535
  ( @base_expectedfields, ( 'transferred_to_timestamp', 'transferred_to' ) );
533
  ( @base_expectedfields, ( 'transferred_to_timestamp', 'transferred_to' ) );
536
is( GetCancelledOrders(), undef,
534
@get_orders = GetOrders($basketno, { cancelled => 1 });
537
    "GetCancelledOrders with no params returns undef" );
538
@get_orders = GetCancelledOrders($basketno);
539
(
535
(
540
    $test_missing_fields,   $test_extra_fields,
536
    $test_missing_fields,   $test_extra_fields,
541
    $test_different_fields, $test_nbr_fields
537
    $test_different_fields, $test_nbr_fields
Lines 544-564 is( GetCancelledOrders(), undef, Link Here
544
is(
540
is(
545
    $$test_nbr_fields[0],
541
    $$test_nbr_fields[0],
546
    scalar @expectedfields,
542
    scalar @expectedfields,
547
    "GetCancelledOrders gets orders with the right number of fields"
543
    "GetOrders { cancelled => 1 } gets orders with the right number of fields"
548
);
544
);
549
is( join( " ", @$test_missing_fields ),
545
is( join( " ", @$test_missing_fields ),
550
    '', "GetCancelledOrders gets orders with no missing fields" );
546
    '', "GetOrders { cancelled => 1 } gets orders with no missing fields" );
551
is( join( " ", @$test_extra_fields ),
547
is( join( " ", @$test_extra_fields ),
552
    '', "GetCancelledOrders gets orders with no unexpected fields" );
548
    '', "GetOrders { cancelled => 1 } gets orders with no unexpected fields" );
553
is( join( " ", @$test_different_fields ),
549
is( join( " ", @$test_different_fields ),
554
    '',
550
    '',
555
    "GetCancelledOrders gets orders with the right content in every fields" );
551
    "GetOrders { cancelled => 1 } gets orders with the right content in every fields" );
556
ok(
552
ok(
557
    (
553
    (
558
        ( scalar @get_orders == 1 )
554
        ( scalar @get_orders == 1 )
559
          and grep ( $_->{ordernumber} eq $ordernumbers[3], @get_orders )
555
          and grep ( $_->{ordernumber} eq $ordernumbers[3], @get_orders )
560
    ),
556
    ),
561
    "GetCancelledOrders only gets cancelled orders"
557
    "GetOrders { cancelled => 1 } only gets cancelled orders"
562
);
558
);
563
559
564
#
560
#
565
- 

Return to bug 13244