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

(-)a/C4/Acquisition.pm (-15 / +31 lines)
Lines 1114-1120 sub NewOrder { Link Here
1114
1114
1115
=head3 NewOrderItem
1115
=head3 NewOrderItem
1116
1116
1117
  &NewOrderItem();
1117
  &NewOrderItem ($itemnumber, $ordernumber);
1118
1118
1119
=cut
1119
=cut
1120
1120
Lines 1579-1608 sub SearchOrders { Link Here
1579
1579
1580
=head3 DelOrder
1580
=head3 DelOrder
1581
1581
1582
  &DelOrder($ordernumber, $biblionumber);
1582
  &DelOrder($ordernumber);
1583
1583
1584
Cancel the order with the given order and biblio numbers. It does not
1584
Cancel the order with the given order, by filling the datecancellationprinted and orderstatus fields.
1585
delete any entries in the aqorders table, it merely marks them as
1585
C<$ordernumber > is mandatory
1586
cancelled.
1586
If no ordernumber is passed, the function returns undef and does not try to update database.
1587
All the items linked with that order are deleted.
1588
Other items are not deleted.
1587
1589
1588
=cut
1590
=cut
1589
1591
1590
sub DelOrder {
1592
sub DelOrder {
1591
    my ($ordernumber,$biblionumber) = @_;
1593
    my ($ordernumber) = @_;
1594
    return unless $ordernumber;
1592
    my $dbh = C4::Context->dbh;
1595
    my $dbh = C4::Context->dbh;
1593
    my $query = "
1596
    my $query = qq {
1594
        UPDATE aqorders
1597
        UPDATE aqorders
1595
        SET    datecancellationprinted=now(), orderstatus='cancelled'
1598
        SET    datecancellationprinted=now(), orderstatus='cancelled'
1596
        WHERE  ordernumber=?
1599
        WHERE  ordernumber = ?
1597
    ";
1600
    };
1598
    my $sth = $dbh->prepare($query);
1601
    my $sth = $dbh->prepare($query);
1599
    $sth->execute($ordernumber );
1602
    $sth->execute($ordernumber );
1600
    $sth->finish;
1603
# get the biblionumber (we need it to run DelItem
1601
    if ($biblionumber) {
1604
    $query = qq{
1602
        my @itemnumbers = GetItemnumbersFromOrder( $ordernumber );
1605
        SELECT biblionumber
1603
        foreach my $itemnumber (@itemnumbers){
1606
        FROM aqorders
1604
            C4::Items::DelItem( $dbh, $biblionumber, $itemnumber );
1607
        WHERE ordernumber = ?
1605
        }
1608
    };
1609
    $sth = $dbh->prepare($query);
1610
    $sth->execute($ordernumber );
1611
    my $record = $sth->fetchrow_hashref;
1612
# delete items from items and aqorders_items tables
1613
    my @itemnumbers = GetItemnumbersFromOrder( $ordernumber );
1614
    foreach my $itemnumber (@itemnumbers) {
1615
        $query = qq{
1616
            DELETE FROM aqorders_items
1617
            WHERE aqorders_items.itemnumber = ?
1618
        };
1619
        $sth = $dbh->prepare($query);
1620
        $sth->execute($itemnumber );
1621
        C4::Items::DelItem( $dbh, $record->{biblionumber}, $itemnumber )  if $record->{biblionumber};
1606
    }
1622
    }
1607
}
1623
}
1608
1624
(-)a/acqui/addorder.pl (-1 / +1 lines)
Lines 251-257 if ( $orderinfo->{quantity} ne '0' ) { Link Here
251
251
252
else { # qty=0, delete the line
252
else { # qty=0, delete the line
253
    my $biblionumber = $input->param('biblionumber');
253
    my $biblionumber = $input->param('biblionumber');
254
    DelOrder($$orderinfo{ordernumber}, $biblionumber );
254
    DelOrder($$orderinfo{ordernumber});
255
    if ($orderinfo->{delbiblio} == 1){
255
    if ($orderinfo->{delbiblio} == 1){
256
     DelBiblio($biblionumber);
256
     DelBiblio($biblionumber);
257
    }
257
    }
(-)a/t/db_dependent/Acquisition.t (-3 / +56 lines)
Lines 7-14 use Modern::Perl; Link Here
7
use POSIX qw(strftime);
7
use POSIX qw(strftime);
8
8
9
use C4::Bookseller qw( GetBookSellerFromId );
9
use C4::Bookseller qw( GetBookSellerFromId );
10
use C4::Items qw (AddItem GetItem);
11
use C4::Branch qw (ModBranch);
10
12
11
use Test::More tests => 59;
13
14
use Test::More tests => 64;
12
15
13
BEGIN {
16
BEGIN {
14
    use_ok('C4::Acquisition');
17
    use_ok('C4::Acquisition');
Lines 214-217 is($order3->{'quantityreceived'}, 2, 'Order not split up'); Link Here
214
is($order3->{'quantity'}, 2, '2 items on order');
217
is($order3->{'quantity'}, 2, '2 items on order');
215
is($order3->{'budget_id'}, $budgetid2, 'Budget has changed');
218
is($order3->{'budget_id'}, $budgetid2, 'Budget has changed');
216
219
217
$dbh->rollback;
220
#
221
# test DelOrder
222
# use:
223
# &DelOrder($ordernumber);
224
225
# create 3 items on the same record and link 2 of them to the order
226
227
# Add a branch
228
my $b1 = {
229
    add            => 1,
230
    branchcode     => 'BRA',
231
    branchname     => 'BranchA',
232
    branchaddress1 => 'adr1A',
233
    branchaddress2 => 'adr2A',
234
    branchaddress3 => 'adr3A',
235
    branchzip      => 'zipA',
236
    branchcity     => 'cityA',
237
    branchstate    => 'stateA',
238
    branchcountry  => 'countryA',
239
    branchphone    => 'phoneA',
240
    branchfax      => 'faxA',
241
    branchemail    => 'emailA',
242
    branchurl      => 'urlA',
243
    branchip       => 'ipA',
244
    branchprinter  => undef,
245
    branchnotes    => 'noteA',
246
    opac_info      => 'opacA'
247
};
248
ModBranch($b1);
249
250
my ($item_bibnum1, $item_bibitemnum1, $itemnumber1) = AddItem({ homebranch => 'BRA', holdingbranch => 'BRA' } , $biblionumber2);
251
my ($item_bibnum2, $item_bibitemnum2, $itemnumber2) = AddItem({ homebranch => 'BRA', holdingbranch => 'BRA' } , $biblionumber2);
252
my ($item_bibnum3, $item_bibitemnum3, $itemnumber3) = AddItem({ homebranch => 'BRA', holdingbranch => 'BRA' } , $biblionumber2);
253
NewOrderItem ($itemnumber1, $ordernumber3);
254
NewOrderItem ($itemnumber2, $ordernumber3);
255
256
# If no ordernumber is passed, the function returns undef and does not try to update database
257
my $return_DelOrder = DelOrder ();
258
is($return_DelOrder , undef, 'DelOrder returns undef with no param');
259
# Cancel the order with the given order, by filling the datecancellationprinted and orderstatus fields.
260
DelOrder ($ordernumber3);
261
$order3 = GetOrder( $ordernumber3 );
262
ok(($order3->{'orderstatus'} eq 'cancelled')&& (defined $order3->{'datecancellationprinted'}),'DelOrders update orderstatus and fill datecancellationprinted fields');
263
264
# All the items linked with that order are deleted.
265
is(scalar GetItemnumbersFromOrder($ordernumber3), 0, 'DelOrders delete items linked with cancelled order in aqorders_items table');
266
ok(!defined GetItem($itemnumber1) && !defined GetItem($itemnumber2),  "DelOrder deletes items linked with order in items table");
267
268
# Other items (created manually) are not deleted.
269
is(GetItem($itemnumber3)->{biblionumber},$biblionumber2, "DelOrder does not delete item created manually");
270
271
$dbh->rollback;
218
- 

Return to bug 10869