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

(-)a/C4/Circulation.pm (+24 lines)
Lines 3679-3684 sub LostItem{ Link Here
3679
3679
3680
        MarkIssueReturned($borrowernumber,$itemnumber,undef,undef,$patron->privacy) if $mark_returned;
3680
        MarkIssueReturned($borrowernumber,$itemnumber,undef,undef,$patron->privacy) if $mark_returned;
3681
    }
3681
    }
3682
3683
    my $transfers = GetTransfers($itemnumber);
3684
    if ( C4::Context->preference('LostItemCancelOutstandingTransfers') && $transfers ) {
3685
         my $deletedtransfer = DeleteTransfer($itemnumber);
3686
    }
3687
3688
    my ( $restype, $res ) = C4::Reserves::CheckReserves( $itemnumber );
3689
    my $LostItemLevelHold;
3690
    my $transfers;
3691
    if ( $restype eq "Waiting" || $restype eq "Reserved" ) {
3692
        if ( $res->{originalholdtype} eq "B" ) {
3693
            #originalholdtype equalling "B" means this is a bib level hold
3694
            C4::Reserves::RevertWaitingStatus({itemnumber => $itemnumber});
3695
3696
            #If the LostBibLevelHoldsRevert syspref is enabled then revert the allocated reserve back to an unallocated bib-level hold
3697
            if ( C4::Context->preference('LostBibLevelHoldsRevert')) {
3698
                C4::Reserves::RevertItemLevelHoldToBibLevelHold({ reserveid => $res->{reserve_id} });
3699
            }
3700
        } else {
3701
            #Otherwise originalholdtype equals "I" and is an item level hold
3702
            $LostItemLevelHold = 1;
3703
        }
3704
    }
3705
    return $LostItemLevelHold;
3682
}
3706
}
3683
3707
3684
sub GetOfflineOperations {
3708
sub GetOfflineOperations {
(-)a/C4/Reserves.pm (-21 / +89 lines)
Lines 197-219 sub AddReserve { Link Here
197
    # Don't add itemtype limit if specific item is selected
197
    # Don't add itemtype limit if specific item is selected
198
    $itemtype = undef if $checkitem;
198
    $itemtype = undef if $checkitem;
199
199
200
    # updates take place here
200
    # Create reserves with with originalholdtype="B" if biblio level hold and "I" if item level hold
201
    my $hold = Koha::Hold->new(
201
    my $hold;
202
        {
202
    if (!($checkitem)) {
203
            borrowernumber => $borrowernumber,
203
        # updates take place here
204
            biblionumber   => $biblionumber,
204
        $hold = Koha::Hold->new(
205
            reservedate    => $resdate,
205
         {
206
            branchcode     => $branch,
206
           borrowernumber => $borrowernumber,
207
            priority       => $priority,
207
           biblionumber   => $biblionumber,
208
            reservenotes   => $notes,
208
           reservedate    => $resdate,
209
            itemnumber     => $checkitem,
209
           branchcode     => $branch,
210
            found          => $found,
210
           priority       => $priority,
211
            waitingdate    => $waitingdate,
211
           reservenotes   => $notes,
212
            expirationdate => $expdate,
212
           itemnumber     => $checkitem,
213
            itemtype       => $itemtype,
213
           found          => $found,
214
        }
214
           waitingdate    => $waitingdate,
215
    )->store();
215
           expirationdate => $expdate,
216
    $hold->set_waiting() if $found eq 'W';
216
           itemtype       => $itemtype,
217
           originalholdtype => 'B',
218
         }
219
        )->store();
220
        $hold->set_waiting() if $found eq 'W';
221
    } else {
222
        # updates take place here
223
        $hold = Koha::Hold->new(
224
         {
225
          borrowernumber => $borrowernumber,
226
          biblionumber   => $biblionumber,
227
          reservedate    => $resdate,
228
          branchcode     => $branch,
229
          priority       => $priority,
230
          reservenotes   => $notes,
231
          itemnumber     => $checkitem,
232
          found          => $found,
233
          waitingdate    => $waitingdate,
234
          expirationdate => $expdate,
235
          itemtype       => $itemtype,
236
          originalholdtype  => 'I',
237
         }
238
        )->store();
239
        $hold->set_waiting() if $found eq 'W';
240
    }
217
241
218
    logaction( 'HOLDS', 'CREATE', $hold->id, Dumper($hold->unblessed) )
242
    logaction( 'HOLDS', 'CREATE', $hold->id, Dumper($hold->unblessed) )
219
        if C4::Context->preference('HoldsLog');
243
        if C4::Context->preference('HoldsLog');
Lines 1383-1388 when _FixPriority calls itself. Link Here
1383
1407
1384
sub _FixPriority {
1408
sub _FixPriority {
1385
    my ( $params ) = @_;
1409
    my ( $params ) = @_;
1410
    warn Dumper($params);
1386
    my $reserve_id = $params->{reserve_id};
1411
    my $reserve_id = $params->{reserve_id};
1387
    my $rank = $params->{rank} // '';
1412
    my $rank = $params->{rank} // '';
1388
    my $ignoreSetLowestRank = $params->{ignoreSetLowestRank};
1413
    my $ignoreSetLowestRank = $params->{ignoreSetLowestRank};
Lines 1391-1401 sub _FixPriority { Link Here
1391
    my $dbh = C4::Context->dbh;
1416
    my $dbh = C4::Context->dbh;
1392
1417
1393
    my $hold;
1418
    my $hold;
1419
    warn $reserve_id;
1394
    if ( $reserve_id ) {
1420
    if ( $reserve_id ) {
1395
        $hold = Koha::Holds->find( $reserve_id );
1421
        $hold = Koha::Holds->find( $reserve_id );
1396
        return unless $hold;
1422
        return unless $hold;
1397
    }
1423
    }
1398
1424
    warn Dumper($hold);
1399
    unless ( $biblionumber ) { # FIXME This is a very weird API
1425
    unless ( $biblionumber ) { # FIXME This is a very weird API
1400
        $biblionumber = $hold->biblionumber;
1426
        $biblionumber = $hold->biblionumber;
1401
    }
1427
    }
Lines 1511-1517 sub _Findgroupreserve { Link Here
1511
               biblioitems.biblioitemnumber AS biblioitemnumber,
1537
               biblioitems.biblioitemnumber AS biblioitemnumber,
1512
               reserves.itemnumber          AS itemnumber,
1538
               reserves.itemnumber          AS itemnumber,
1513
               reserves.reserve_id          AS reserve_id,
1539
               reserves.reserve_id          AS reserve_id,
1514
               reserves.itemtype            AS itemtype
1540
               reserves.itemtype            AS itemtype,
1541
               reserves.originalholdtype    AS originalholdtype
1515
        FROM reserves
1542
        FROM reserves
1516
        JOIN biblioitems USING (biblionumber)
1543
        JOIN biblioitems USING (biblionumber)
1517
        JOIN hold_fill_targets USING (biblionumber, borrowernumber, itemnumber)
1544
        JOIN hold_fill_targets USING (biblionumber, borrowernumber, itemnumber)
Lines 1546-1552 sub _Findgroupreserve { Link Here
1546
               biblioitems.biblioitemnumber AS biblioitemnumber,
1573
               biblioitems.biblioitemnumber AS biblioitemnumber,
1547
               reserves.itemnumber          AS itemnumber,
1574
               reserves.itemnumber          AS itemnumber,
1548
               reserves.reserve_id          AS reserve_id,
1575
               reserves.reserve_id          AS reserve_id,
1549
               reserves.itemtype            AS itemtype
1576
               reserves.itemtype            AS itemtype,
1577
               reserves.originalholdtype    AS originalholdtype
1550
        FROM reserves
1578
        FROM reserves
1551
        JOIN biblioitems USING (biblionumber)
1579
        JOIN biblioitems USING (biblionumber)
1552
        JOIN hold_fill_targets USING (biblionumber, borrowernumber)
1580
        JOIN hold_fill_targets USING (biblionumber, borrowernumber)
Lines 1580-1586 sub _Findgroupreserve { Link Here
1580
               reserves.timestamp                  AS timestamp,
1608
               reserves.timestamp                  AS timestamp,
1581
               reserves.itemnumber                 AS itemnumber,
1609
               reserves.itemnumber                 AS itemnumber,
1582
               reserves.reserve_id                 AS reserve_id,
1610
               reserves.reserve_id                 AS reserve_id,
1583
               reserves.itemtype                   AS itemtype
1611
               reserves.itemtype                   AS itemtype,
1612
               reserves.originalholdtype           AS originalholdtype
1584
        FROM reserves
1613
        FROM reserves
1585
        WHERE reserves.biblionumber = ?
1614
        WHERE reserves.biblionumber = ?
1586
          AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?)
1615
          AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?)
Lines 1897-1905 sub RevertWaitingStatus { Link Here
1897
    ";
1926
    ";
1898
    $sth = $dbh->prepare( $query );
1927
    $sth = $dbh->prepare( $query );
1899
    $sth->execute( $reserve->{'reserve_id'} );
1928
    $sth->execute( $reserve->{'reserve_id'} );
1929
    warn $reserve->{reserve_id};
1900
    _FixPriority( { biblionumber => $reserve->{biblionumber} } );
1930
    _FixPriority( { biblionumber => $reserve->{biblionumber} } );
1901
}
1931
}
1902
1932
1933
1934
=head2 RevertItemLevelHoldToBibLevelHold
1935
1936
  RevertItemLevelHoldToBibLevelHold({ reserveid => $reserveid });
1937
1938
  Reverts a item level hold (which was originally a bib-level hold, which is determined by the value of reserves.originalholdtype) back to a bib-level hold.
1939
1940
=cut
1941
1942
sub RevertItemLevelHoldToBibLevelHold {
1943
    my ( $params ) = @_;
1944
    my $reserve_id = $params->{'reserveid'};
1945
1946
    return unless ( $reserve_id );
1947
    my $dbh = C4::Context->dbh;
1948
1949
    #Get the waiting reserve we want to revert
1950
    my $query = "
1951
        SELECT * FROM reserves
1952
        WHERE reserve_id = ?
1953
        AND itemnumber IS NOT NULL
1954
    ";
1955
     my $sth = $dbh->prepare( $query );
1956
     $sth->execute( $reserve_id );
1957
     my $reserve = $sth->fetchrow_hashref();
1958
1959
     ## Set the itemnumber to 'NULL'
1960
     $query = "
1961
         UPDATE reserves
1962
         SET
1963
         itemnumber = NULL
1964
         WHERE
1965
         reserve_id =  ?
1966
     ";
1967
     $sth = $dbh->prepare( $query );
1968
     $sth->execute( $reserve_id );
1969
}
1970
1903
=head2 ReserveSlip
1971
=head2 ReserveSlip
1904
1972
1905
ReserveSlip(
1973
ReserveSlip(
(-)a/Koha/Schema/Result/OldReserve.pm (-2 / +10 lines)
Lines 137-142 __PACKAGE__->table("old_reserves"); Link Here
137
  is_nullable: 1
137
  is_nullable: 1
138
  size: 10
138
  size: 10
139
139
140
=head2 originalholdtype
141
142
  data_type: 'varchar'
143
  is_nullable: 1
144
  size: 1
145
140
=cut
146
=cut
141
147
142
__PACKAGE__->add_columns(
148
__PACKAGE__->add_columns(
Lines 192-197 __PACKAGE__->add_columns( Link Here
192
  },
198
  },
193
  "itemtype",
199
  "itemtype",
194
  { data_type => "varchar", is_foreign_key => 1, is_nullable => 1, size => 10 },
200
  { data_type => "varchar", is_foreign_key => 1, is_nullable => 1, size => 10 },
201
  "originalholdtype",
202
  { data_type => "varchar", is_nullable => 1, size => 1 },
195
);
203
);
196
204
197
=head1 PRIMARY KEY
205
=head1 PRIMARY KEY
Lines 289-296 __PACKAGE__->belongs_to( Link Here
289
);
297
);
290
298
291
299
292
# Created by DBIx::Class::Schema::Loader v0.07042 @ 2018-02-16 17:54:54
300
# Created by DBIx::Class::Schema::Loader v0.07042 @ 2018-09-02 09:48:38
293
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:ynb6NtiTN8ZZur2YCvxlNg
301
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:cc4o9r7wLXapCJJ3WfDy4g
294
302
295
303
296
# You can replace this text with custom content, and it will be preserved on regeneration
304
# You can replace this text with custom content, and it will be preserved on regeneration
(-)a/Koha/Schema/Result/Reserve.pm (-2 / +10 lines)
Lines 141-146 __PACKAGE__->table("reserves"); Link Here
141
  is_nullable: 1
141
  is_nullable: 1
142
  size: 10
142
  size: 10
143
143
144
=head2 originalholdtype
145
146
  data_type: 'varchar'
147
  is_nullable: 1
148
  size: 1
149
144
=cut
150
=cut
145
151
146
__PACKAGE__->add_columns(
152
__PACKAGE__->add_columns(
Lines 206-211 __PACKAGE__->add_columns( Link Here
206
  },
212
  },
207
  "itemtype",
213
  "itemtype",
208
  { data_type => "varchar", is_foreign_key => 1, is_nullable => 1, size => 10 },
214
  { data_type => "varchar", is_foreign_key => 1, is_nullable => 1, size => 10 },
215
  "originalholdtype",
216
  { data_type => "varchar", is_nullable => 1, size => 1 },
209
);
217
);
210
218
211
=head1 PRIMARY KEY
219
=head1 PRIMARY KEY
Lines 313-320 __PACKAGE__->belongs_to( Link Here
313
);
321
);
314
322
315
323
316
# Created by DBIx::Class::Schema::Loader v0.07042 @ 2018-02-16 17:54:54
324
# Created by DBIx::Class::Schema::Loader v0.07042 @ 2018-08-25 12:05:26
317
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:2GCET9quFpUvzuN7MUWZNw
325
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:YIZXhPQwRJXrzYkdmVQH7Q
318
326
319
__PACKAGE__->belongs_to(
327
__PACKAGE__->belongs_to(
320
  "item",
328
  "item",
(-)a/catalogue/moredetail.pl (+7 lines)
Lines 71-76 my $itemnumber = $query->param('itemnumber'); Link Here
71
my $data = &GetBiblioData($biblionumber);
71
my $data = &GetBiblioData($biblionumber);
72
my $dewey = $data->{'dewey'};
72
my $dewey = $data->{'dewey'};
73
my $showallitems = $query->param('showallitems');
73
my $showallitems = $query->param('showallitems');
74
my $lostitemlevelhold = $query->param('LostItemLevelHold');
75
my $lostitemnumber = $query->param('lostitemnumber');
76
my $itemlost = $query->param('itemlost');
77
78
if ($lostitemlevelhold && $itemlost) {
79
    $template->param(LostItemLevelHold => $lostitemlevelhold, itemlost => $itemlost, lostitemnumber => $lostitemnumber, biblionumber => $biblionumber);
80
}
74
81
75
#coping with subscriptions
82
#coping with subscriptions
76
my $subscriptionsnumber = CountSubscriptionFromBiblionumber($biblionumber);
83
my $subscriptionsnumber = CountSubscriptionFromBiblionumber($biblionumber);
(-)a/catalogue/updateitem.pl (-2 / +21 lines)
Lines 26-31 use C4::Items; Link Here
26
use C4::Output;
26
use C4::Output;
27
use C4::Circulation;
27
use C4::Circulation;
28
use C4::Reserves;
28
use C4::Reserves;
29
use Data::Dumper;
29
30
30
my $cgi= new CGI;
31
my $cgi= new CGI;
31
32
Lines 39-44 my $itemnotes=$cgi->param('itemnotes'); Link Here
39
my $itemnotes_nonpublic=$cgi->param('itemnotes_nonpublic');
40
my $itemnotes_nonpublic=$cgi->param('itemnotes_nonpublic');
40
my $withdrawn=$cgi->param('withdrawn');
41
my $withdrawn=$cgi->param('withdrawn');
41
my $damaged=$cgi->param('damaged');
42
my $damaged=$cgi->param('damaged');
43
my $cancelhold = $cgi->param('CancelHold');
44
my $retainhold = $cgi->param('RetainHold');
42
45
43
my $confirm=$cgi->param('confirm');
46
my $confirm=$cgi->param('confirm');
44
my $dbh = C4::Context->dbh;
47
my $dbh = C4::Context->dbh;
Lines 53-60 for ($damaged,$itemlost,$withdrawn) { Link Here
53
    }
56
    }
54
}
57
}
55
58
59
if ($cancelhold) {
60
    my ($restype, $res ) = C4::Reserves::CheckReserves( $itemnumber );
61
    my $hold = Koha::Holds->find($res->{reserve_id});
62
    $hold->cancel;
63
}
64
65
#Assigning variables for use in cancelling item level holds when item marked as 'Lost'
66
my $LostItemLevelHold;
67
my $originalitemnumber = $itemnumber;
68
56
# modify MARC item if input differs from items table.
69
# modify MARC item if input differs from items table.
57
my $item_changes = {};
70
my $item_changes = {};
71
58
if (defined $itemnotes_nonpublic) { # i.e., itemnotes_nonpublic parameter passed from form
72
if (defined $itemnotes_nonpublic) { # i.e., itemnotes_nonpublic parameter passed from form
59
    checkauth($cgi, 0, {editcatalogue => 'edit_items'}, 'intranet');
73
    checkauth($cgi, 0, {editcatalogue => 'edit_items'}, 'intranet');
60
    if ((not defined  $item_data_hashref->{'itemnotes_nonpublic'}) or $itemnotes_nonpublic ne $item_data_hashref->{'itemnotes_nonpublic'}) {
74
    if ((not defined  $item_data_hashref->{'itemnotes_nonpublic'}) or $itemnotes_nonpublic ne $item_data_hashref->{'itemnotes_nonpublic'}) {
Lines 79-85 elsif (defined $itemnotes) { # i.e., itemnotes parameter passed from form Link Here
79
}
93
}
80
94
81
ModItem($item_changes, $biblionumber, $itemnumber);
95
ModItem($item_changes, $biblionumber, $itemnumber);
96
$LostItemLevelHold = LostItem($itemnumber, 'moredetail') if $itemlost;
97
98
if ( $LostItemLevelHold) {
99
    print $cgi->redirect("moredetail.pl?biblionumber=$biblionumber&LostItemLevelHold=$LostItemLevelHold&itemlost=$itemlost&lostitemnumber=$itemnumber#item$itemnumber");
100
} else {
101
    print $cgi->redirect("moredetail.pl?biblionumber=$biblionumber&itemnumber=$itemnumber#item$itemnumber");
102
}
82
103
83
LostItem($itemnumber, 'moredetail') if $itemlost;
84
104
85
print $cgi->redirect("moredetail.pl?biblionumber=$biblionumber&itemnumber=$itemnumber#item$itemnumber");
(-)a/cataloguing/additem.pl (-3 / +31 lines)
Lines 40-46 use C4::Search; Link Here
40
use Storable qw(thaw freeze);
40
use Storable qw(thaw freeze);
41
use URI::Escape;
41
use URI::Escape;
42
use C4::Members;
42
use C4::Members;
43
43
use Data::Dumper;
44
use MARC::File::XML;
44
use MARC::File::XML;
45
use URI::Escape;
45
use URI::Escape;
46
46
Lines 385-393 my $fa_barcode = $input->param('barcode'); Link Here
385
my $fa_branch             = $input->param('branch');
385
my $fa_branch             = $input->param('branch');
386
my $fa_stickyduedate      = $input->param('stickyduedate');
386
my $fa_stickyduedate      = $input->param('stickyduedate');
387
my $fa_duedatespec        = $input->param('duedatespec');
387
my $fa_duedatespec        = $input->param('duedatespec');
388
388
my $cancelhold            = $input->param('CancelHold');
389
my $retainhold            = $input->param('RetainHold');
389
my $frameworkcode = &GetFrameworkCode($biblionumber);
390
my $frameworkcode = &GetFrameworkCode($biblionumber);
390
391
392
if ($cancelhold || $retainhold) {
393
    $op ='';
394
}
395
396
#Assigning variables for use in cancelling item level holds when item marked as 'Lost'
397
my $LostItemLevelHold;
398
my $originalitemnumber = $itemnumber;
399
391
# Defining which userflag is needing according to the framework currently used
400
# Defining which userflag is needing according to the framework currently used
392
my $userflags;
401
my $userflags;
393
if (defined $input->param('frameworkcode')) {
402
if (defined $input->param('frameworkcode')) {
Lines 692-697 if ($op eq "additem") { Link Here
692
    # check that the barcode don't exist already
701
    # check that the barcode don't exist already
693
    my $addedolditem = TransformMarcToKoha($itemtosave);
702
    my $addedolditem = TransformMarcToKoha($itemtosave);
694
    my $exist_itemnumber = get_item_from_barcode($addedolditem->{'barcode'});
703
    my $exist_itemnumber = get_item_from_barcode($addedolditem->{'barcode'});
704
    my $lostitemnumber;
695
    if ($exist_itemnumber && $exist_itemnumber != $itemnumber) {
705
    if ($exist_itemnumber && $exist_itemnumber != $itemnumber) {
696
        push @errors,"barcode_not_unique";
706
        push @errors,"barcode_not_unique";
697
    } else {
707
    } else {
Lines 700-708 if ($op eq "additem") { Link Here
700
        $itemnumber = q{};
710
        $itemnumber = q{};
701
        my $olditemlost = $item->{itemlost};
711
        my $olditemlost = $item->{itemlost};
702
        my $newitemlost = $newitem->{itemlost};
712
        my $newitemlost = $newitem->{itemlost};
703
        LostItem( $item->{itemnumber}, 'additem' )
713
        $LostItemLevelHold = LostItem( $item->{itemnumber}, 'additem' )
704
            if $newitemlost && $newitemlost ge '1' && !$olditemlost;
714
            if $newitemlost && $newitemlost ge '1' && !$olditemlost;
705
    }
715
    }
716
717
    if ($LostItemLevelHold) {
718
        $lostitemnumber = $originalitemnumber;
719
    }
720
    $template->param( LostItemLevelHold  => $LostItemLevelHold, itemnumber => $originalitemnumber );
706
    $nextop="additem";
721
    $nextop="additem";
707
} elsif ($op eq "delinkitem"){
722
} elsif ($op eq "delinkitem"){
708
    my $analyticfield = '773';
723
    my $analyticfield = '773';
Lines 720-725 if ($op eq "additem") { Link Here
720
	my $modbibresult = ModBiblio($record, $biblionumber,'');
735
	my $modbibresult = ModBiblio($record, $biblionumber,'');
721
}
736
}
722
737
738
if ($cancelhold) {
739
    my ( $restype, $res ) = C4::Reserves::CheckReserves( $originalitemnumber );
740
    my $hold = Koha::Holds->find($res->{reserve_id});
741
    $hold->cancel;
742
}
743
723
#
744
#
724
#-------------------------------------------------------------------------------
745
#-------------------------------------------------------------------------------
725
# build screen with existing items. and "new" one
746
# build screen with existing items. and "new" one
Lines 905-910 foreach my $tag ( keys %{$tagslib}){ Link Here
905
926
906
my $item = Koha::Items->find($itemnumber); # We certainly want to fetch it earlier
927
my $item = Koha::Items->find($itemnumber); # We certainly want to fetch it earlier
907
928
929
#If you are trying to mark an item as lost which has an item level hold on it return $originalitemnumber
930
if ($LostItemLevelHold) {
931
    $template->param( itemnumber => $originalitemnumber);
932
} else {
933
    $template->param( itemnumber => $itemnumber );
934
}
935
908
# what's the next op ? it's what we are not in : an add if we're editing, otherwise, and edit.
936
# what's the next op ? it's what we are not in : an add if we're editing, otherwise, and edit.
909
$template->param(
937
$template->param(
910
    biblionumber => $biblionumber,
938
    biblionumber => $biblionumber,
(-)a/installer/data/mysql/atomicupdate/bug_20844-added-holdtype-field-to-reserves.sql (+3 lines)
Line 0 Link Here
1
ALTER TABLE reserves ADD originalholdtype VARCHAR(1);
2
ALTER TABLE old_reserves ADD originalholdtype VARCHAR(1);
3
INSERT INTO systempreferences (variable, value, options, explanation, type) VALUES ('LostBibLevelHoldsRevert', 1, 'Enable|Disable', 'If the item which has an allocated hold on it which was originally a bib-level hold then when the item is marked as lost revert the hold to a bib-level hold', 'YesNo');
(-)a/installer/data/mysql/atomicupdate/bug_20844-cancel_outstanding_branch_transfers_when_marked_as_lost_syspref.sql (+2 lines)
Line 0 Link Here
1
INSERT INTO systempreferences (variable, value, options, explanation, type) VALUES ('LostItemCancelOutstandingTransfers', 0, 'Enable|Disable', 'When an item marked as lost has a outstanding branch transfer, cancel the outstanding transfer', 'YesNo');
2
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref (+12 lines)
Lines 596-601 Circulation: Link Here
596
              class: integer
596
              class: integer
597
            - days.
597
            - days.
598
        -
598
        -
599
            - If the item which has an allocated hold on it which was originally a bib-level hold is marked as lost then revert the hold to a bib-level hold
600
            - pref: LostBibLevelHoldsRevert
601
              choices:
602
                  yes: "Enable"
603
                  no: "Disable"
604
        -
605
            - pref: LostItemCancelOutstandingTransfers
606
              choices:
607
                  yes: "Enable"
608
                  no: "Disable"
609
            - When an item marked as lost has a outstanding branch transfer, cancel the outstanding transfer
610
        -
599
            - pref: ExpireReservesMaxPickUpDelay
611
            - pref: ExpireReservesMaxPickUpDelay
600
              choices:
612
              choices:
601
                  yes: Allow
613
                  yes: Allow
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt (-2 / +17 lines)
Lines 42-55 Link Here
42
<a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% biblionumber | html %]&amp;showallitems=1">Show all items</a>[% END %]</li>
42
<a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% biblionumber | html %]&amp;showallitems=1">Show all items</a>[% END %]</li>
43
    </ol>
43
    </ol>
44
44
45
45
    <br clear="all" />
46
    <br clear="all" />
46
    [% IF ( ONLY_ONE ) %]
47
    [% IF ( ONLY_ONE ) %]
47
        <div class="dialog message">You are only viewing one item.  <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% biblionumber | html %]&amp;bi=[% biblioitemnumber | html %]#item[% itemnumber | html %]">View All</a></div>
48
        <div class="dialog message">You are only viewing one item.  <a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=[% biblionumber | html %]&amp;bi=[% biblioitemnumber | html %]#item[% itemnumber | html %]">View All</a></div>
48
    [% END %]
49
    [% END %]
50
49
    [% FOREACH ITEM_DAT IN ITEM_DATA %]
51
    [% FOREACH ITEM_DAT IN ITEM_DATA %]
50
    <div class="yui-g">
52
    <div class="yui-g">
51
        <h3 id="item[% ITEM_DAT.itemnumber | html %]">Barcode [% ITEM_DAT.barcode | html %]  [% IF ( ITEM_DAT.notforloantext ) %][% ITEM_DAT.notforloantext | html %] [% END %]</h3>
53
         <h3 id="item[% ITEM_DAT.itemnumber %]">Barcode [% ITEM_DAT.barcode %]  [% IF ( ITEM_DAT.notforloantext ) %][% ITEM_DAT.notforloantext %] [% END %]</h3>
52
        <div class="listgroup"><h4>Item information [% IF ( CAN_user_editcatalogue_edit_catalogue ) %][% UNLESS ( ITEM_DAT.nomod ) %]
54
        [% IF ((ITEM_DAT.itemnumber == lostitemnumber) && (LostItemLevelHold)) %]
55
        <div class="alert alert-warning">
56
            <form id="DeallocateLostItemLevelHold" method="post" action="updateitem.pl" name="DeallocateLostItemLevelHold">
57
                <input type="hidden" name="biblionumber" value="[% biblionumber %]"/>
58
                <input type="hidden" name="itemnumber" value="[% lostitemnumber %]"/>
59
                <input type="hidden" name="itemlost" value="[% itemlost %]"/>
60
                This item has an item-level hold on it:
61
                <input type="submit" name="RetainHold" value="Retain Hold"/>
62
                <input type="submit" name="CancelHold" value="Cancel Hold"/>
63
            </form>
64
        </div>
65
    [% END %]
66
67
    <div class="listgroup"><h4>Item information [% IF ( CAN_user_editcatalogue_edit_catalogue ) %][% UNLESS ( ITEM_DAT.nomod ) %]
53
         [% IF ( CAN_user_editcatalogue_edit_items ) %]
68
         [% IF ( CAN_user_editcatalogue_edit_items ) %]
54
         <a href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&amp;biblionumber=[% ITEM_DAT.biblionumber | html %]&amp;itemnumber=[% ITEM_DAT.itemnumber | html %]">[Edit Item]</a>
69
         <a href="/cgi-bin/koha/cataloguing/additem.pl?op=edititem&amp;biblionumber=[% ITEM_DAT.biblionumber | html %]&amp;itemnumber=[% ITEM_DAT.itemnumber | html %]">[Edit Item]</a>
55
         [% END %]
70
         [% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt (-1 / +14 lines)
Lines 258-263 function confirm_deletion() { Link Here
258
    [% ELSE %]
258
    [% ELSE %]
259
        <h2 id="edititem">Edit Item #[% itemnumber | html %][% IF ( barcode ) %] / Barcode [% barcode | html %][% END %]</h2>
259
        <h2 id="edititem">Edit Item #[% itemnumber | html %][% IF ( barcode ) %] / Barcode [% barcode | html %][% END %]</h2>
260
    [% END %]
260
    [% END %]
261
262
263
    [% IF (LostItemLevelHold) %]
264
        <div class="alert alert-warning">
265
            <form id="DeallocateLostItemLevelHold" method="post" action="/cgi-bin/koha/cataloguing/additem.pl" name="DeallocateLostItemLevelHold">
266
                <input type="hidden" id="itemnumber" name="itemnumber" value="[% itemnumber %]"/>
267
                This item has an item-level hold on it:
268
                <input type="submit" name="RetainHold" value="Retain Hold"/>
269
                <input type="submit" name="CancelHold" value="Cancel hold"/>
270
            </form>
271
        </div>
272
    [% END %]
273
274
261
	<fieldset class="rows">
275
	<fieldset class="rows">
262
	<ol>
276
	<ol>
263
        [% FOREACH ite IN item %]
277
        [% FOREACH ite IN item %]
264
- 

Return to bug 20844