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

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

Return to bug 13244