Bugzilla – Attachment 131664 Details for
Bug 19532
Recalls for Koha
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 19532: Make recalls.status an ENUM
Bug-19532-Make-recallsstatus-an-ENUM.patch (text/plain), 46.62 KB, created by
Tomás Cohen Arazi (tcohen)
on 2022-03-14 16:16:11 UTC
(
hide
)
Description:
Bug 19532: Make recalls.status an ENUM
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi (tcohen)
Created:
2022-03-14 16:16:11 UTC
Size:
46.62 KB
patch
obsolete
>From 8b389ec8f51510b834391a1112ab741e426d948a Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >Date: Fri, 11 Mar 2022 12:20:18 -0300 >Subject: [PATCH] Bug 19532: Make recalls.status an ENUM > >This patch makes the status attribute an ENUM, setting the default value >as 'requested' as well. The chosen names are easier to read than single >letters. Also, renamed F into fulfilled (this impacts methods names as >well). This is because 'finished' or 'completed' is more a synonym for >old => 1... > >Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> >--- > C4/Circulation.pm | 4 +- > C4/Overdues.pm | 2 +- > C4/XSLT.pm | 2 +- > Koha/Item.pm | 4 +- > Koha/Recall.pm | 70 ++++---- > Koha/Recalls.pm | 24 ++- > .../bug_19532_make_status_enum.pl | 16 ++ > installer/data/mysql/kohastructure.sql | 4 +- > t/db_dependent/Circulation.t | 152 +++++++++--------- > t/db_dependent/Circulation/CalcFine.t | 3 +- > t/db_dependent/Circulation/transferbook.t | 32 ++-- > t/db_dependent/Koha/Biblio.t | 61 +++---- > t/db_dependent/Koha/Item.t | 111 +++++++------ > t/db_dependent/Koha/Patron.t | 72 ++++----- > t/db_dependent/Koha/Recall.t | 19 +-- > t/db_dependent/Koha/Recalls.t | 2 +- > t/db_dependent/XSLT.t | 1 - > 17 files changed, 299 insertions(+), 280 deletions(-) > create mode 100755 installer/data/mysql/atomicupdate/bug_19532_make_status_enum.pl > >diff --git a/C4/Circulation.pm b/C4/Circulation.pm >index 7d0317fee5..03b5580d69 100644 >--- a/C4/Circulation.pm >+++ b/C4/Circulation.pm >@@ -381,7 +381,7 @@ sub transferbook { > } > > # find recall >- my $recall = Koha::Recalls->find({ itemnumber => $itemnumber, status => 'T' }); >+ my $recall = Koha::Recalls->find({ itemnumber => $itemnumber, status => 'in_transit' }); > if ( defined $recall and C4::Context->preference('UseRecalls') ) { > # do a transfer if the recall branch is different to the item holding branch > if ( $recall->branchcode eq $fbr ) { >@@ -2354,7 +2354,7 @@ sub AddReturn { > $request->status('RET') if $request; > } > >- my $transfer_recall = Koha::Recalls->find({ itemnumber => $item->itemnumber, status => 'T' }); # all recalls that have triggered a transfer will have an allocated itemnumber >+ my $transfer_recall = Koha::Recalls->find({ itemnumber => $item->itemnumber, status => 'in_transit' }); # all recalls that have triggered a transfer will have an allocated itemnumber > if ( $transfer_recall and > $transfer_recall->branchcode eq $branch and > C4::Context->preference('UseRecalls') ) { >diff --git a/C4/Overdues.pm b/C4/Overdues.pm >index 05a6cf08e3..7d8877b303 100644 >--- a/C4/Overdues.pm >+++ b/C4/Overdues.pm >@@ -260,7 +260,7 @@ sub CalcFine { > > # check if item has been recalled. recall should have been marked Overdue by cronjob, so only look at overdue recalls > # only charge using recall_overdue_fine if there is an item-level recall for this particular item, OR a biblio-level recall >- my @recalls = Koha::Recalls->search({ biblionumber => $item->{biblionumber}, old => undef, status => 'O' })->as_list; >+ my @recalls = Koha::Recalls->search({ biblionumber => $item->{biblionumber}, old => undef, status => 'overdue' })->as_list; > my $bib_level_recall = 0; > $bib_level_recall = 1 if scalar @recalls > 0; > foreach my $recall ( @recalls ) { >diff --git a/C4/XSLT.pm b/C4/XSLT.pm >index 7a8e4a9112..747416ea7b 100644 >--- a/C4/XSLT.pm >+++ b/C4/XSLT.pm >@@ -354,7 +354,7 @@ sub buildKohaItemsNamespace { > my $status; > my $substatus = ''; > >- my $recalls = Koha::Recalls->search({ itemnumber => $item->itemnumber, status => 'W' }); >+ my $recalls = Koha::Recalls->search({ itemnumber => $item->itemnumber, status => 'waiting' }); > > if ( $recalls->count ) { > # recalls take priority over holds >diff --git a/Koha/Item.pm b/Koha/Item.pm >index 81b2c73bdd..2b5ab5c044 100644 >--- a/Koha/Item.pm >+++ b/Koha/Item.pm >@@ -1608,7 +1608,9 @@ Get the most relevant recall for this item. > sub check_recalls { > my ( $self ) = @_; > >- my @recalls = Koha::Recalls->search({ biblionumber => $self->biblionumber, itemnumber => [ $self->itemnumber, undef ], status => [ 'R','O','W','T' ] }, { order_by => { -asc => 'recalldate' } })->as_list; >+ my @recalls = >+ Koha::Recalls->search( { biblionumber => $self->biblionumber, itemnumber => [ $self->itemnumber, undef ], status => [ 'requested', 'overdue', 'waiting', 'in_transit' ] }, >+ { order_by => { -asc => 'recalldate' } } )->as_list; > > my $recall; > # iterate through relevant recalls to find the best one. >diff --git a/Koha/Recall.pm b/Koha/Recall.pm >index 0ea8c1c36d..394e74848d 100644 >--- a/Koha/Recall.pm >+++ b/Koha/Recall.pm >@@ -142,8 +142,7 @@ Return true if recall status is requested. > > sub requested { > my ( $self ) = @_; >- my $status = $self->status; >- return $status && $status eq 'R'; >+ return $self->status eq 'requested'; > } > > =head3 waiting >@@ -158,8 +157,7 @@ Return true if recall is awaiting pickup. > > sub waiting { > my ( $self ) = @_; >- my $status = $self->status; >- return $status && $status eq 'W'; >+ return $self->status eq 'waiting'; > } > > =head3 overdue >@@ -174,8 +172,7 @@ Return true if recall is overdue to be returned. > > sub overdue { > my ( $self ) = @_; >- my $status = $self->status; >- return $status && $status eq 'O'; >+ return $self->status eq 'overdue'; > } > > =head3 in_transit >@@ -190,8 +187,7 @@ Return true if recall is in transit. > > sub in_transit { > my ( $self ) = @_; >- my $status = $self->status; >- return $status && $status eq 'T'; >+ return $self->status eq 'in_transit'; > } > > =head3 expired >@@ -206,8 +202,7 @@ Return true if recall has expired. > > sub expired { > my ( $self ) = @_; >- my $status = $self->status; >- return $status && $status eq 'E'; >+ return $self->status eq 'expired'; > } > > =head3 cancelled >@@ -222,24 +217,22 @@ Return true if recall has been cancelled. > > sub cancelled { > my ( $self ) = @_; >- my $status = $self->status; >- return $status && $status eq 'C'; >+ return $self->status eq 'cancelled'; > } > >-=head3 finished >+=head3 fulfilled > >- if ( $recall->finished ) >+ if ( $recall->fulfilled ) > >- [% IF recall.finished %] >+ [% IF recall.fulfilled %] > >-Return true if recall is finished and has been fulfilled. >+Return true if the recall has been fulfilled. > > =cut > >-sub finished { >+sub fulfilled { > my ( $self ) = @_; >- my $status = $self->status; >- return $status && $status eq 'F'; >+ return $self->status eq 'fulfilled'; > } > > =head3 calc_expirationdate >@@ -292,10 +285,10 @@ sub start_transfer { > > if ( $self->item_level_recall ) { > # already has an itemnumber >- $self->update({ status => 'T' }); >+ $self->update({ status => 'in_transit' }); > } else { > my $itemnumber = $params->{item}->itemnumber; >- $self->update({ status => 'T', itemnumber => $itemnumber }); >+ $self->update({ status => 'in_transit', itemnumber => $itemnumber }); > } > > my ( $dotransfer, $messages ) = C4::Circulation::transferbook({ to_branch => $self->branchcode, from_branch => $self->item->holdingbranch, barcode => $self->item->barcode, trigger => 'Recall' }); >@@ -315,9 +308,9 @@ sub revert_transfer { > my ( $self ) = @_; > > if ( $self->item_level_recall ) { >- $self->update({ status => 'R' }); >+ $self->update({ status => 'requested' }); > } else { >- $self->update({ status => 'R', itemnumber => undef }); >+ $self->update({ status => 'requested', itemnumber => undef }); > } > > return $self; >@@ -325,10 +318,11 @@ sub revert_transfer { > > =head3 set_waiting > >- $recall->set_waiting({ >- expirationdate => $expirationdate, >- item => $item_object >- }); >+ $recall->set_waiting( >+ { expirationdate => $expirationdate, >+ item => $item_object >+ } >+ ); > > Set the recall as waiting and update expiration date. > Notify the recall requester. >@@ -341,11 +335,11 @@ sub set_waiting { > my $itemnumber; > if ( $self->item_level_recall ) { > $itemnumber = $self->itemnumber; >- $self->update({ status => 'W', waitingdate => dt_from_string, expirationdate => $params->{expirationdate} }); >+ $self->update({ status => 'waiting', waitingdate => dt_from_string, expirationdate => $params->{expirationdate} }); > } else { > # biblio-level recall with no itemnumber. need to set itemnumber > $itemnumber = $params->{item}->itemnumber; >- $self->update({ status => 'W', waitingdate => dt_from_string, expirationdate => $params->{expirationdate}, itemnumber => $itemnumber }); >+ $self->update({ status => 'waiting', waitingdate => dt_from_string, expirationdate => $params->{expirationdate}, itemnumber => $itemnumber }); > } > > # send notice to recaller to pick up item >@@ -378,9 +372,9 @@ Revert recall waiting status. > sub revert_waiting { > my ( $self ) = @_; > if ( $self->item_level_recall ){ >- $self->update({ status => 'R', waitingdate => undef }); >+ $self->update({ status => 'requested', waitingdate => undef }); > } else { >- $self->update({ status => 'R', waitingdate => undef, itemnumber => undef }); >+ $self->update({ status => 'requested', waitingdate => undef, itemnumber => undef }); > } > return $self; > } >@@ -414,7 +408,7 @@ Set a recall as overdue when the recall has been requested and the borrower who > sub set_overdue { > my ( $self, $params ) = @_; > my $interface = $params->{interface} || 'COMMANDLINE'; >- $self->update({ status => 'O' }); >+ $self->update({ status => 'overdue' }); > C4::Log::logaction( 'RECALLS', 'OVERDUE', $self->recall_id, "Recall status set to overdue", $interface ) if ( C4::Context->preference('RecallsLog') ); > return $self; > } >@@ -430,7 +424,7 @@ Set a recall as expired. This may be done manually or by a cronjob, either when > sub set_expired { > my ( $self, $params ) = @_; > my $interface = $params->{interface} || 'COMMANDLINE'; >- $self->update({ status => 'E', old => 1, expirationdate => dt_from_string }); >+ $self->update({ status => 'expired', old => 1, expirationdate => dt_from_string }); > C4::Log::logaction( 'RECALLS', 'EXPIRE', $self->recall_id, "Recall expired", $interface ) if ( C4::Context->preference('RecallsLog') ); > return $self; > } >@@ -445,22 +439,22 @@ Set a recall as cancelled. This may be done manually, either by the borrower tha > > sub set_cancelled { > my ( $self ) = @_; >- $self->update({ status => 'C', old => 1, cancellationdate => dt_from_string }); >+ $self->update({ status => 'cancelled', old => 1, cancellationdate => dt_from_string }); > C4::Log::logaction( 'RECALLS', 'CANCEL', $self->recall_id, "Recall cancelled", 'INTRANET' ) if ( C4::Context->preference('RecallsLog') ); > return $self; > } > >-=head3 set_finished >+=head3 set_fulfilled > >- $recall->set_finished; >+ $recall->set_fulfilled; > > Set a recall as finished. This should only be called when the item allocated to a recall is checked out to the borrower who requested the recall. > > =cut > >-sub set_finished { >+sub set_fulfilled { > my ( $self ) = @_; >- $self->update({ status => 'F', old => 1 }); >+ $self->update({ status => 'fulfilled', old => 1 }); > C4::Log::logaction( 'RECALLS', 'FULFILL', $self->recall_id, "Recall fulfilled", 'INTRANET' ) if ( C4::Context->preference('RecallsLog') ); > return $self; > } >diff --git a/Koha/Recalls.pm b/Koha/Recalls.pm >index be9f88e11e..b0777c3901 100644 >--- a/Koha/Recalls.pm >+++ b/Koha/Recalls.pm >@@ -33,9 +33,7 @@ Koha::Recalls - Koha Recalls Object set class > > =head1 API > >-=head2 Internal methods >- >-=cut >+=head2 Class methods > > =head3 add_recall > >@@ -79,7 +77,7 @@ sub add_recall { > recalldate => dt_from_string(), > biblionumber => $biblio->biblionumber, > branchcode => $branchcode, >- status => 'R', >+ status => 'requested', > itemnumber => defined $itemnumber ? $itemnumber : undef, > expirationdate => $expirationdate, > item_level_recall => defined $itemnumber ? 1 : 0, >@@ -149,7 +147,9 @@ sub add_recall { > borrowernumber => $borrowernumber, > }); > >-A patron is attempting to check out an item that has been recalled by another patron. If the recall is requested/overdue, they have the option of cancelling the recall. If the recall is waiting, they also have the option of reverting the waiting status. >+A patron is attempting to check out an item that has been recalled by another patron. >+If the recall is requested/overdue, they have the option of cancelling the recall. >+If the recall is waiting, they also have the option of reverting the waiting status. > > We can also fulfill the recall here if the recall is placed by this borrower. > >@@ -183,9 +183,17 @@ sub move_recall { > > if ( $message eq 'no action provided' and $item and $item->biblionumber and $borrowernumber ) { > # move_recall was not called to revert or cancel, but was called to fulfill >- my $recall = Koha::Recalls->search({ borrowernumber => $borrowernumber, biblionumber => $item->biblionumber, itemnumber => [ $item->itemnumber, undef ], old => undef }, { order_by => { -asc => 'recalldate' } })->next; >+ my $recall = Koha::Recalls->search( >+ { >+ borrowernumber => $borrowernumber, >+ biblionumber => $item->biblionumber, >+ itemnumber => [ $item->itemnumber, undef ], >+ old => undef >+ }, >+ { order_by => { -asc => 'recalldate' } } >+ )->next; > if ( $recall ) { >- $recall->set_finished; >+ $recall->set_fulfilled; > $message = 'fulfilled'; > } > } >@@ -193,6 +201,8 @@ sub move_recall { > return $message; > } > >+=head2 Internal methods >+ > =head3 _type > > =cut >diff --git a/installer/data/mysql/atomicupdate/bug_19532_make_status_enum.pl b/installer/data/mysql/atomicupdate/bug_19532_make_status_enum.pl >new file mode 100755 >index 0000000000..9935c9cbf2 >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug_19532_make_status_enum.pl >@@ -0,0 +1,16 @@ >+use Modern::Perl; >+ >+return { >+ bug_number => "19532", >+ description => "Make recalls.status an enum", >+ up => sub { >+ my ($args) = @_; >+ my ($dbh) = @$args{qw(dbh)}; >+ >+ $dbh->do(q{ >+ ALTER TABLE recalls >+ MODIFY COLUMN >+ status ENUM('requested','overdue','waiting','in_transit','cancelled','expired','fulfilled') DEFAULT 'requested' COMMENT "Request status" >+ }); >+ }, >+}; >diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql >index 6d2af4f324..b6b6f369ac 100644 >--- a/installer/data/mysql/kohastructure.sql >+++ b/installer/data/mysql/kohastructure.sql >@@ -4291,12 +4291,12 @@ CREATE TABLE recalls ( -- information related to recalls in Koha > cancellationdate datetime DEFAULT NULL, -- the date this recall was cancelled > recallnotes mediumtext, -- notes related to this recall > priority smallint(6) DEFAULT NULL, -- where in the queue the patron sits >- status varchar(1) DEFAULT NULL, -- a one letter code defining the status of the recall. R=requested, O=overdue, W=awaiting pickup, T=in transit, E=expired, C=cancelled, F=finished/completed >+ status ENUM('requested','overdue','waiting','in_transit','cancelled','expired','fulfilled') DEFAULT 'requested' COMMENT "Request status", > timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- the date and time this recall was last updated > itemnumber int(11) DEFAULT NULL, -- foreign key from the items table defining the specific item the recall request was placed on > waitingdate datetime DEFAULT NULL, -- the date the item was marked as waiting for the patron at the library > expirationdate datetime DEFAULT NULL, -- the date the recall expires >- old TINYINT(1) DEFAULT NULL, -- flag if the recall is old and no longer active, i.e. expired, cancelled or completed >+ old TINYINT(1) DEFAULT 0, -- flag if the recall is old and no longer active, i.e. expired, cancelled or completed > item_level_recall TINYINT(1) NOT NULL DEFAULT 0, -- flag if item-level recall > PRIMARY KEY (recall_id), > KEY borrowernumber (borrowernumber), >diff --git a/t/db_dependent/Circulation.t b/t/db_dependent/Circulation.t >index 5f2a567729..7cd2c0d74f 100755 >--- a/t/db_dependent/Circulation.t >+++ b/t/db_dependent/Circulation.t >@@ -1455,7 +1455,6 @@ subtest "CanBookBeRenewed tests" => sub { > borrowernumber => $recall_borrower->borrowernumber, > branchcode => $recall_borrower->branchcode, > item_level_recall => 1, >- status => 'R', > })->store; > ( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrowernumber, $recall_item1->itemnumber ); > is( $error, 'recalled', 'Cannot renew item that has been recalled' ); >@@ -1468,7 +1467,6 @@ subtest "CanBookBeRenewed tests" => sub { > borrowernumber => $recall_borrower->borrowernumber, > branchcode => $recall_borrower->branchcode, > item_level_recall => 0, >- status => 'R', > })->store; > ( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrowernumber, $recall_item1->itemnumber ); > is( $error, 'recalled', 'Cannot renew item if biblio is recalled and has no item allocated' ); >@@ -1481,7 +1479,6 @@ subtest "CanBookBeRenewed tests" => sub { > borrowernumber => $recall_borrower->borrowernumber, > branchcode => $recall_borrower->branchcode, > item_level_recall => 1, >- status => 'R', > })->store; > ( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrowernumber, $recall_item1->itemnumber ); > is( $renewokay, 1, 'Can renew item if item-level recall on biblio is not on this item' ); >@@ -1494,7 +1491,6 @@ subtest "CanBookBeRenewed tests" => sub { > borrowernumber => $recall_borrower->borrowernumber, > branchcode => $recall_borrower->branchcode, > item_level_recall => 0, >- status => 'R', > })->store; > $recall->set_waiting({ item => $recall_item1 }); > ( $renewokay, $error ) = CanBookBeRenewed( $renewing_borrowernumber, $recall_item1->itemnumber ); >@@ -1998,42 +1994,42 @@ subtest 'AddIssue | recalls' => sub { > }); > > # checking out item that they have recalled >- my $recall1 = Koha::Recall->new({ >- borrowernumber => $patron1->borrowernumber, >- biblionumber => $item->biblionumber, >- itemnumber => $item->itemnumber, >- item_level_recall => 1, >- branchcode => $patron1->branchcode, >- status => 'R', >- })->store; >+ my $recall1 = Koha::Recall->new( >+ { borrowernumber => $patron1->borrowernumber, >+ biblionumber => $item->biblionumber, >+ itemnumber => $item->itemnumber, >+ item_level_recall => 1, >+ branchcode => $patron1->branchcode, >+ } >+ )->store; > AddIssue( $patron1->unblessed, $item->barcode, undef, undef, undef, undef, { recall_id => $recall1->recall_id } ); > $recall1 = Koha::Recalls->find( $recall1->recall_id ); >- is( $recall1->finished, 1, 'Recall was fulfilled when patron checked out item' ); >+ is( $recall1->fulfilled, 1, 'Recall was fulfilled when patron checked out item' ); > AddReturn( $item->barcode, $item->homebranch ); > > # this item is has a recall request. cancel recall >- my $recall2 = Koha::Recall->new({ >- borrowernumber => $patron2->borrowernumber, >- biblionumber => $item->biblionumber, >- itemnumber => $item->itemnumber, >- item_level_recall => 1, >- branchcode => $patron2->branchcode, >- status => 'R', >- })->store; >+ my $recall2 = Koha::Recall->new( >+ { borrowernumber => $patron2->borrowernumber, >+ biblionumber => $item->biblionumber, >+ itemnumber => $item->itemnumber, >+ item_level_recall => 1, >+ branchcode => $patron2->branchcode, >+ } >+ )->store; > AddIssue( $patron1->unblessed, $item->barcode, undef, undef, undef, undef, { recall_id => $recall2->recall_id, cancel_recall => 'cancel' } ); > $recall2 = Koha::Recalls->find( $recall2->recall_id ); > is( $recall2->cancelled, 1, 'Recall was cancelled when patron checked out item' ); > AddReturn( $item->barcode, $item->homebranch ); > > # this item is waiting to fulfill a recall. revert recall >- my $recall3 = Koha::Recall->new({ >- borrowernumber => $patron2->borrowernumber, >- biblionumber => $item->biblionumber, >- itemnumber => $item->itemnumber, >- item_level_recall => 1, >- branchcode => $patron2->branchcode, >- status => 'R', >- })->store; >+ my $recall3 = Koha::Recall->new( >+ { borrowernumber => $patron2->borrowernumber, >+ biblionumber => $item->biblionumber, >+ itemnumber => $item->itemnumber, >+ item_level_recall => 1, >+ branchcode => $patron2->branchcode, >+ } >+ )->store; > $recall3->set_waiting; > AddIssue( $patron1->unblessed, $item->barcode, undef, undef, undef, undef, { recall_id => $recall3->recall_id, cancel_recall => 'revert' } ); > $recall3 = Koha::Recalls->find( $recall3->recall_id ); >@@ -3978,14 +3974,14 @@ subtest 'CanBookBeIssued | recalls' => sub { > }); > > # item-level recall >- my $recall = Koha::Recall->new({ >- borrowernumber => $patron1->borrowernumber, >- biblionumber => $item->biblionumber, >- itemnumber => $item->itemnumber, >- item_level_recall => 1, >- branchcode => $patron1->branchcode, >- status => 'R', >- })->store; >+ my $recall = Koha::Recall->new( >+ { borrowernumber => $patron1->borrowernumber, >+ biblionumber => $item->biblionumber, >+ itemnumber => $item->itemnumber, >+ item_level_recall => 1, >+ branchcode => $patron1->branchcode, >+ } >+ )->store; > > my ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron2, $item->barcode, undef, undef, undef, undef ); > is( $needsconfirmation->{RECALLED}->recall_id, $recall->recall_id, "Another patron has placed an item-level recall on this item" ); >@@ -3993,14 +3989,14 @@ subtest 'CanBookBeIssued | recalls' => sub { > $recall->set_cancelled; > > # biblio-level recall >- $recall = Koha::Recall->new({ >- borrowernumber => $patron1->borrowernumber, >- biblionumber => $item->biblionumber, >- itemnumber => undef, >- item_level_recall => 0, >- branchcode => $patron1->branchcode, >- status => 'R', >- })->store; >+ $recall = Koha::Recall->new( >+ { borrowernumber => $patron1->borrowernumber, >+ biblionumber => $item->biblionumber, >+ itemnumber => undef, >+ item_level_recall => 0, >+ branchcode => $patron1->branchcode, >+ } >+ )->store; > > ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron2, $item->barcode, undef, undef, undef, undef ); > is( $needsconfirmation->{RECALLED}->recall_id, $recall->recall_id, "Another patron has placed a biblio-level recall and this item is eligible to fill it" ); >@@ -4008,15 +4004,15 @@ subtest 'CanBookBeIssued | recalls' => sub { > $recall->set_cancelled; > > # biblio-level recall >- $recall = Koha::Recall->new({ >- borrowernumber => $patron1->borrowernumber, >- biblionumber => $item->biblionumber, >- itemnumber => undef, >- item_level_recall => 0, >- branchcode => $patron1->branchcode, >- status => 'R', >- })->store; >- $recall->set_waiting({ item => $item, expirationdate => dt_from_string() }); >+ $recall = Koha::Recall->new( >+ { borrowernumber => $patron1->borrowernumber, >+ biblionumber => $item->biblionumber, >+ itemnumber => undef, >+ item_level_recall => 0, >+ branchcode => $patron1->branchcode, >+ } >+ )->store; >+ $recall->set_waiting( { item => $item, expirationdate => dt_from_string() } ); > > my ( undef, undef, undef, $messages ) = CanBookBeIssued( $patron1, $item->barcode, undef, undef, undef, undef ); > is( $messages->{RECALLED}, $recall->recall_id, "This book can be issued by this patron and they have placed a recall" ); >@@ -4058,42 +4054,42 @@ subtest 'AddReturn | recalls' => sub { > > # this item can fill a recall with pickup at this branch > AddIssue( $patron1->unblessed, $item1->barcode ); >- my $recall1 = Koha::Recall->new({ >- borrowernumber => $patron2->borrowernumber, >- biblionumber => $item1->biblionumber, >- itemnumber => $item1->itemnumber, >- item_level_recall => 1, >- branchcode => $item1->homebranch, >- status => 'R', >- })->store; >+ my $recall1 = Koha::Recall->new( >+ { borrowernumber => $patron2->borrowernumber, >+ biblionumber => $item1->biblionumber, >+ itemnumber => $item1->itemnumber, >+ item_level_recall => 1, >+ branchcode => $item1->homebranch, >+ } >+ )->store; > my ( $doreturn, $messages, $iteminfo, $borrowerinfo ) = AddReturn( $item1->barcode, $item1->homebranch ); > is( $messages->{RecallFound}->recall_id, $recall1->recall_id, "Recall found" ); > $recall1->set_cancelled; > > # this item can fill a recall but needs transfer > AddIssue( $patron1->unblessed, $item1->barcode ); >- $recall1 = Koha::Recall->new({ >- borrowernumber => $patron2->borrowernumber, >- biblionumber => $item1->biblionumber, >- itemnumber => $item1->itemnumber, >- item_level_recall => 1, >- branchcode => $patron2->branchcode, >- status => 'R', >- })->store; >+ $recall1 = Koha::Recall->new( >+ { borrowernumber => $patron2->borrowernumber, >+ biblionumber => $item1->biblionumber, >+ itemnumber => $item1->itemnumber, >+ item_level_recall => 1, >+ branchcode => $patron2->branchcode, >+ } >+ )->store; > ( $doreturn, $messages, $iteminfo, $borrowerinfo ) = AddReturn( $item1->barcode, $item1->homebranch ); > is( $messages->{RecallNeedsTransfer}, $item1->homebranch, "Recall requiring transfer found" ); > $recall1->set_cancelled; > > # this item is already in transit, do not ask to transfer > AddIssue( $patron1->unblessed, $item1->barcode ); >- $recall1 = Koha::Recall->new({ >- borrowernumber => $patron2->borrowernumber, >- biblionumber => $item1->biblionumber, >- itemnumber => $item1->itemnumber, >- item_level_recall => 1, >- branchcode => $patron2->branchcode, >- status => 'R', >- })->store; >+ $recall1 = Koha::Recall->new( >+ { borrowernumber => $patron2->borrowernumber, >+ biblionumber => $item1->biblionumber, >+ itemnumber => $item1->itemnumber, >+ item_level_recall => 1, >+ branchcode => $patron2->branchcode, >+ } >+ )->store; > $recall1->start_transfer; > ( $doreturn, $messages, $iteminfo, $borrowerinfo ) = AddReturn( $item1->barcode, $patron2->branchcode ); > is( $messages->{TransferredRecall}->recall_id, $recall1->recall_id, "In transit recall found" ); >diff --git a/t/db_dependent/Circulation/CalcFine.t b/t/db_dependent/Circulation/CalcFine.t >index bed49a46dc..52e994155a 100755 >--- a/t/db_dependent/Circulation/CalcFine.t >+++ b/t/db_dependent/Circulation/CalcFine.t >@@ -232,7 +232,6 @@ subtest 'Recall overdue fines' => sub { > recalldate => dt_from_string, > biblionumber => $item->biblionumber, > branchcode => $branch->{branchcode}, >- status => 'R', > itemnumber => $item->itemnumber, > expirationdate => undef, > item_level_recall => 1 >@@ -242,7 +241,7 @@ subtest 'Recall overdue fines' => sub { > my ($amount) = CalcFine( $item->unblessed, $patron->{categorycode}, $branch->{branchcode}, $start_dt, $end_dt ); > is( int($amount), 25, 'Use recall fine amount specified in circulation rules' ); > >- $recall->set_finished; >+ $recall->set_fulfilled; > ($amount) = CalcFine( $item->unblessed, $patron->{categorycode}, $branch->{branchcode}, $start_dt, $end_dt ); > is( int($amount), 5, 'With no recall, use normal fine amount' ); > >diff --git a/t/db_dependent/Circulation/transferbook.t b/t/db_dependent/Circulation/transferbook.t >index c4de38e1ca..946a3024f7 100755 >--- a/t/db_dependent/Circulation/transferbook.t >+++ b/t/db_dependent/Circulation/transferbook.t >@@ -157,27 +157,27 @@ subtest 'transfer already at destination' => sub { > > # recalls > t::lib::Mocks::mock_preference('UseRecalls', 1); >- my $recall = Koha::Recall->new({ >- biblionumber => $item->biblionumber, >- itemnumber => $item->itemnumber, >- item_level_recall => 1, >- borrowernumber => $patron->borrowernumber, >- branchcode => $library->branchcode, >- status => 'R', >- })->store; >+ my $recall = Koha::Recall->new( >+ { biblionumber => $item->biblionumber, >+ itemnumber => $item->itemnumber, >+ item_level_recall => 1, >+ borrowernumber => $patron->borrowernumber, >+ branchcode => $library->branchcode, >+ } >+ )->store; > ( $recall, $dotransfer, $messages ) = $recall->start_transfer; > is( $dotransfer, 0, 'Do not transfer recalled item, it has already arrived' ); > is( $messages->{RecallPlacedAtHoldingBranch}, 1, "We found the recall"); > > my $item2 = $builder->build_object({ class => 'Koha::Items' }); # this item will have a different holding branch to the pickup branch >- $recall = Koha::Recall->new({ >- biblionumber => $item2->biblionumber, >- itemnumber => $item2->itemnumber, >- item_level_recall => 1, >- borrowernumber => $patron->borrowernumber, >- branchcode => $library->branchcode, >- status => 'R', >- })->store; >+ $recall = Koha::Recall->new( >+ { biblionumber => $item2->biblionumber, >+ itemnumber => $item2->itemnumber, >+ item_level_recall => 1, >+ borrowernumber => $patron->borrowernumber, >+ branchcode => $library->branchcode, >+ } >+ )->store; > ( $recall, $dotransfer, $messages ) = $recall->start_transfer; > is( $dotransfer, 1, 'Transfer of recalled item succeeded' ); > is( $messages->{RecallFound}->recall_id, $recall->recall_id, "We found the recall"); >diff --git a/t/db_dependent/Koha/Biblio.t b/t/db_dependent/Koha/Biblio.t >index 658f292c51..3751fdca3e 100755 >--- a/t/db_dependent/Koha/Biblio.t >+++ b/t/db_dependent/Koha/Biblio.t >@@ -888,6 +888,7 @@ subtest 'Recalls tests' => sub { > plan tests => 12; > > $schema->storage->txn_begin; >+ > my $item1 = $builder->build_sample_item; > my $biblio = $item1->biblio; > my $branchcode = $item1->holdingbranch; >@@ -897,36 +898,36 @@ subtest 'Recalls tests' => sub { > my $item2 = $builder->build_object({ class => 'Koha::Items', value => { holdingbranch => $branchcode, homebranch => $branchcode, biblionumber => $biblio->biblionumber, itype => $item1->effective_itemtype } }); > t::lib::Mocks::mock_userenv({ patron => $patron1 }); > >- my $recall1 = Koha::Recall->new({ >- borrowernumber => $patron1->borrowernumber, >- recalldate => Koha::DateUtils::dt_from_string, >- biblionumber => $biblio->biblionumber, >- branchcode => $branchcode, >- status => 'R', >- itemnumber => $item1->itemnumber, >- expirationdate => undef, >- item_level_recall => 1 >- })->store; >- my $recall2 = Koha::Recall->new({ >- borrowernumber => $patron2->borrowernumber, >- recalldate => Koha::DateUtils::dt_from_string, >- biblionumber => $biblio->biblionumber, >- branchcode => $branchcode, >- status => 'R', >- itemnumber => undef, >- expirationdate => undef, >- item_level_recall => 0 >- })->store; >- my $recall3 = Koha::Recall->new({ >- borrowernumber => $patron3->borrowernumber, >- recalldate => Koha::DateUtils::dt_from_string, >- biblionumber => $biblio->biblionumber, >- branchcode => $branchcode, >- status => 'R', >- itemnumber => $item1->itemnumber, >- expirationdate => undef, >- item_level_recall => 1 >- })->store; >+ my $recall1 = Koha::Recall->new( >+ { borrowernumber => $patron1->borrowernumber, >+ recalldate => \'NOW()', >+ biblionumber => $biblio->biblionumber, >+ branchcode => $branchcode, >+ itemnumber => $item1->itemnumber, >+ expirationdate => undef, >+ item_level_recall => 1 >+ } >+ )->store; >+ my $recall2 = Koha::Recall->new( >+ { borrowernumber => $patron2->borrowernumber, >+ recalldate => \'NOW()', >+ biblionumber => $biblio->biblionumber, >+ branchcode => $branchcode, >+ itemnumber => undef, >+ expirationdate => undef, >+ item_level_recall => 0 >+ } >+ )->store; >+ my $recall3 = Koha::Recall->new( >+ { borrowernumber => $patron3->borrowernumber, >+ recalldate => \'NOW()', >+ biblionumber => $biblio->biblionumber, >+ branchcode => $branchcode, >+ itemnumber => $item1->itemnumber, >+ expirationdate => undef, >+ item_level_recall => 1 >+ } >+ )->store; > > my $recalls_count = $biblio->recalls->count; > is( $recalls_count, 3, 'Correctly get number of active recalls for biblio' ); >diff --git a/t/db_dependent/Koha/Item.t b/t/db_dependent/Koha/Item.t >index 6b645b5b52..9db7de79e0 100755 >--- a/t/db_dependent/Koha/Item.t >+++ b/t/db_dependent/Koha/Item.t >@@ -1179,29 +1179,34 @@ subtest 'Recalls tests' => sub { > my $patron1 = $builder->build_object({ class => 'Koha::Patrons', value => { branchcode => $branchcode } }); > my $patron2 = $builder->build_object({ class => 'Koha::Patrons', value => { branchcode => $branchcode } }); > my $patron3 = $builder->build_object({ class => 'Koha::Patrons', value => { branchcode => $branchcode } }); >- my $item2 = $builder->build_object({ class => 'Koha::Items', value => { holdingbranch => $branchcode, homebranch => $branchcode, biblionumber => $biblio->biblionumber, itype => $item1->effective_itemtype } }); >- t::lib::Mocks::mock_userenv({ patron => $patron1 }); >+ my $item2 = $builder->build_object( >+ { class => 'Koha::Items', >+ value => { holdingbranch => $branchcode, homebranch => $branchcode, biblionumber => $biblio->biblionumber, itype => $item1->effective_itemtype } >+ } >+ ); > >- my $recall1 = Koha::Recall->new({ >- borrowernumber => $patron1->borrowernumber, >- recalldate => Koha::DateUtils::dt_from_string, >- biblionumber => $biblio->biblionumber, >- branchcode => $branchcode, >- status => 'R', >- itemnumber => $item1->itemnumber, >- expirationdate => undef, >- item_level_recall => 1 >- })->store; >- my $recall2 = Koha::Recall->new({ >- borrowernumber => $patron2->borrowernumber, >- recalldate => Koha::DateUtils::dt_from_string, >- biblionumber => $biblio->biblionumber, >- branchcode => $branchcode, >- status => 'R', >- itemnumber => $item1->itemnumber, >- expirationdate => undef, >- item_level_recall =>1 >- })->store; >+ t::lib::Mocks::mock_userenv( { patron => $patron1 } ); >+ >+ my $recall1 = Koha::Recall->new( >+ { borrowernumber => $patron1->borrowernumber, >+ recalldate => \'NOW()', >+ biblionumber => $biblio->biblionumber, >+ branchcode => $branchcode, >+ itemnumber => $item1->itemnumber, >+ expirationdate => undef, >+ item_level_recall => 1 >+ } >+ )->store; >+ my $recall2 = Koha::Recall->new( >+ { borrowernumber => $patron2->borrowernumber, >+ recalldate => \'NOW()', >+ biblionumber => $biblio->biblionumber, >+ branchcode => $branchcode, >+ itemnumber => $item1->itemnumber, >+ expirationdate => undef, >+ item_level_recall => 1 >+ } >+ )->store; > > is( $item1->recall->borrowernumber, $patron1->borrowernumber, 'Correctly returns most relevant recall' ); > >@@ -1274,16 +1279,16 @@ subtest 'Recalls tests' => sub { > C4::Circulation::AddIssue( $patron2->unblessed, $item1->barcode ); > is( $item1->can_be_recalled({ patron => $patron1 }), 1, "Can recall item" ); > >- $recall1 = Koha::Recall->new({ >- borrowernumber => $patron1->borrowernumber, >- recalldate => Koha::DateUtils::dt_from_string, >- biblionumber => $biblio->biblionumber, >- branchcode => $branchcode, >- status => 'R', >- itemnumber => undef, >- expirationdate => undef, >- item_level_recall => 0 >- })->store; >+ $recall1 = Koha::Recall->new( >+ { borrowernumber => $patron1->borrowernumber, >+ recalldate => \'NOW()', >+ biblionumber => $biblio->biblionumber, >+ branchcode => $branchcode, >+ itemnumber => undef, >+ expirationdate => undef, >+ item_level_recall => 0 >+ } >+ )->store; > > # Patron2 has Item1 checked out. Patron1 has placed a biblio-level recall on Biblio1, so check if Item1 can fulfill Patron1's recall. > >@@ -1313,27 +1318,27 @@ subtest 'Recalls tests' => sub { > > # check_recalls tests > >- $recall1 = Koha::Recall->new({ >- borrowernumber => $patron2->borrowernumber, >- recalldate => Koha::DateUtils::dt_from_string, >- biblionumber => $biblio->biblionumber, >- branchcode => $branchcode, >- status => 'R', >- itemnumber => $item1->itemnumber, >- expirationdate => undef, >- item_level_recall => 1 >- })->store; >- $recall2 = Koha::Recall->new({ >- borrowernumber => $patron1->borrowernumber, >- recalldate => Koha::DateUtils::dt_from_string, >- biblionumber => $biblio->biblionumber, >- branchcode => $branchcode, >- status => 'R', >- itemnumber => undef, >- expirationdate => undef, >- item_level_recall => 0 >- })->store; >- $recall2->set_waiting({ item => $item1 }); >+ $recall1 = Koha::Recall->new( >+ { borrowernumber => $patron2->borrowernumber, >+ recalldate => \'NOW()', >+ biblionumber => $biblio->biblionumber, >+ branchcode => $branchcode, >+ itemnumber => $item1->itemnumber, >+ expirationdate => undef, >+ item_level_recall => 1 >+ } >+ )->store; >+ $recall2 = Koha::Recall->new( >+ { borrowernumber => $patron1->borrowernumber, >+ recalldate => \'NOW()', >+ biblionumber => $biblio->biblionumber, >+ branchcode => $branchcode, >+ itemnumber => undef, >+ expirationdate => undef, >+ item_level_recall => 0 >+ } >+ )->store; >+ $recall2->set_waiting( { item => $item1 } ); > > # return a waiting recall > my $check_recall = $item1->check_recalls; >diff --git a/t/db_dependent/Koha/Patron.t b/t/db_dependent/Koha/Patron.t >index b95057812e..a5f56167cc 100755 >--- a/t/db_dependent/Koha/Patron.t >+++ b/t/db_dependent/Koha/Patron.t >@@ -1060,42 +1060,42 @@ subtest 'recalls() tests' => sub { > my $biblio2 = $builder->build_object({ class => 'Koha::Biblios' }); > my $item2 = $builder->build_object({ class => 'Koha::Items' }, { value => { biblionumber => $biblio2->biblionumber } }); > >- Koha::Recall->new({ >- biblionumber => $biblio1->biblionumber, >- borrowernumber => $patron->borrowernumber, >- itemnumber => $item1->itemnumber, >- branchcode => $patron->branchcode, >- recalldate => dt_from_string, >- status => 'R', >- item_level_recall => 1, >- })->store; >- Koha::Recall->new({ >- biblionumber => $biblio2->biblionumber, >- borrowernumber => $patron->borrowernumber, >- itemnumber => $item2->itemnumber, >- branchcode => $patron->branchcode, >- recalldate => dt_from_string, >- status => 'R', >- item_level_recall => 1, >- })->store; >- Koha::Recall->new({ >- biblionumber => $biblio1->biblionumber, >- borrowernumber => $patron->borrowernumber, >- itemnumber => undef, >- branchcode => $patron->branchcode, >- recalldate => dt_from_string, >- status => 'R', >- item_level_recall => 0, >- })->store; >- my $recall = Koha::Recall->new({ >- biblionumber => $biblio1->biblionumber, >- borrowernumber => $patron->borrowernumber, >- itemnumber => undef, >- branchcode => $patron->branchcode, >- recalldate => dt_from_string, >- status => 'R', >- item_level_recall => 0, >- })->store; >+ Koha::Recall->new( >+ { biblionumber => $biblio1->biblionumber, >+ borrowernumber => $patron->borrowernumber, >+ itemnumber => $item1->itemnumber, >+ branchcode => $patron->branchcode, >+ recalldate => \'NOW()', >+ item_level_recall => 1, >+ } >+ )->store; >+ Koha::Recall->new( >+ { biblionumber => $biblio2->biblionumber, >+ borrowernumber => $patron->borrowernumber, >+ itemnumber => $item2->itemnumber, >+ branchcode => $patron->branchcode, >+ recalldate => \'NOW()', >+ item_level_recall => 1, >+ } >+ )->store; >+ Koha::Recall->new( >+ { biblionumber => $biblio1->biblionumber, >+ borrowernumber => $patron->borrowernumber, >+ itemnumber => undef, >+ branchcode => $patron->branchcode, >+ recalldate => \'NOW()', >+ item_level_recall => 0, >+ } >+ )->store; >+ my $recall = Koha::Recall->new( >+ { biblionumber => $biblio1->biblionumber, >+ borrowernumber => $patron->borrowernumber, >+ itemnumber => undef, >+ branchcode => $patron->branchcode, >+ recalldate => \'NOW()', >+ item_level_recall => 0, >+ } >+ )->store; > $recall->set_cancelled; > > is( $patron->recalls->count, 3, "Correctly gets this patron's active recalls" ); >diff --git a/t/db_dependent/Koha/Recall.t b/t/db_dependent/Koha/Recall.t >index d6e43f8d2e..0805b4af79 100755 >--- a/t/db_dependent/Koha/Recall.t >+++ b/t/db_dependent/Koha/Recall.t >@@ -71,7 +71,7 @@ my $recall1 = Koha::Recall->new({ > recalldate => dt_from_string, > biblionumber => $biblio1->biblionumber, > branchcode => $branch1, >- status => 'R', >+ status => 'requested', > itemnumber => $item1->itemnumber, > expirationdate => undef, > item_level_recall => 1 >@@ -82,21 +82,20 @@ is( $recall1->item->homebranch, $item1->homebranch, "Recall item relationship co > is( $recall1->patron->categorycode, $category1, "Recall patron relationship correctly linked" ); > is( $recall1->library->branchname, Koha::Libraries->find( $branch1 )->branchname, "Recall library relationship correctly linked" ); > is( $recall1->checkout->itemnumber, $item1->itemnumber, "Recall checkout relationship correctly linked" ); >-is( $recall1->requested, 1, "Recall has been requested" ); >+ok( $recall1->requested, "Recall has been requested" ); > > is( $recall1->should_be_overdue, 1, "Correctly calculated that recall should be marked overdue" ); > $recall1->set_overdue({ interface => 'COMMANDLINE' }); >-is( $recall1->overdue, 1, "Recall is overdue" ); >+ok( $recall1->overdue, "Recall is overdue" ); > > $recall1->set_cancelled; >-is( $recall1->cancelled, 1, "Recall is cancelled" ); >+ok( $recall1->cancelled, "Recall is cancelled" ); > > my $recall2 = Koha::Recall->new({ > borrowernumber => $patron1->borrowernumber, > recalldate => dt_from_string, > biblionumber => $biblio1->biblionumber, > branchcode => $branch1, >- status => 'R', > itemnumber => $item1->itemnumber, > expirationdate => undef, > item_level_recall => 1 >@@ -143,7 +142,6 @@ my $recall3 = Koha::Recall->new({ > recalldate => dt_from_string, > biblionumber => $biblio1->biblionumber, > branchcode => $branch1, >- status => 'R', > itemnumber => $item1->itemnumber, > expirationdate => undef, > item_level_recall => 1 >@@ -151,15 +149,15 @@ my $recall3 = Koha::Recall->new({ > > # test that recall gets T status > $recall3->start_transfer; >-is( $recall3->in_transit, 1, "Recall is in transit" ); >+ok( $recall3->in_transit, "Recall is in transit" ); > > $recall3->revert_transfer; >-is( $recall3->requested, 1, "Recall transfer has been cancelled and the status reverted" ); >+ok( $recall3->requested, "Recall transfer has been cancelled and the status reverted" ); > is( $recall3->itemnumber, $item1->itemnumber, "Item persists for item-level recall" ); > > # for testing purposes, pretend the item gets checked out >-$recall3->set_finished; >-is( $recall3->finished, 1, "Recall has been fulfilled" ); >+$recall3->set_fulfilled; >+ok( $recall3->fulfilled, "Recall has been fulfilled" ); > > C4::Circulation::AddIssue( $patron2->unblessed, $item1->barcode ); > my $recall4 = Koha::Recall->new({ >@@ -167,7 +165,6 @@ my $recall4 = Koha::Recall->new({ > recalldate => dt_from_string, > biblionumber => $biblio1->biblionumber, > branchcode => $branch1, >- status => 'R', > itemnumber => undef, > expirationdate => undef, > item_level_recall => 0, >diff --git a/t/db_dependent/Koha/Recalls.t b/t/db_dependent/Koha/Recalls.t >index 02fd40b12f..4b0ac8f048 100755 >--- a/t/db_dependent/Koha/Recalls.t >+++ b/t/db_dependent/Koha/Recalls.t >@@ -170,6 +170,6 @@ ok( $recall->cancelled, "Recall cancelled with move_recall" ); > }); > $message = Koha::Recalls->move_recall({ recall_id => $recall->recall_id, item => $item2, borrowernumber => $patron1->borrowernumber }); > $recall = Koha::Recalls->find( $recall->recall_id ); >-ok( $recall->finished, "Recall fulfilled with move_recall" ); >+ok( $recall->fulfilled, "Recall fulfilled with move_recall" ); > > $schema->storage->txn_rollback(); >diff --git a/t/db_dependent/XSLT.t b/t/db_dependent/XSLT.t >index c37f95ee57..5de621f7f7 100755 >--- a/t/db_dependent/XSLT.t >+++ b/t/db_dependent/XSLT.t >@@ -147,7 +147,6 @@ subtest 'buildKohaItemsNamespace status tests' => sub { > biblionumber => $item->biblionumber, > itemnumber => $item->itemnumber, > branchcode => $item->holdingbranch, >- status => 'R', > }}); > $recall->set_waiting; > $xml = C4::XSLT::buildKohaItemsNamespace( $item->biblionumber,[]); >-- >2.32.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 19532
:
68569
|
68570
|
68571
|
68572
|
68642
|
68643
|
68644
|
68645
|
68653
|
69100
|
69102
|
69147
|
69148
|
69149
|
69170
|
69172
|
69221
|
69222
|
69223
|
69322
|
69353
|
69354
|
69405
|
69409
|
69410
|
69411
|
69841
|
69872
|
69873
|
69874
|
69875
|
69876
|
69877
|
69878
|
69879
|
69880
|
69881
|
69882
|
69883
|
69884
|
69885
|
69886
|
69887
|
69888
|
69889
|
69890
|
69986
|
70093
|
71409
|
71574
|
71575
|
71576
|
71577
|
71578
|
71579
|
71580
|
71581
|
71582
|
71583
|
71584
|
71585
|
71586
|
71587
|
71588
|
71589
|
71590
|
71591
|
71592
|
72244
|
72311
|
72312
|
72313
|
72314
|
72315
|
72316
|
72317
|
72318
|
72319
|
72320
|
72321
|
72322
|
72323
|
72324
|
72325
|
72326
|
72327
|
72328
|
72329
|
72330
|
72331
|
72332
|
72333
|
72334
|
72335
|
72336
|
72337
|
72338
|
72527
|
76817
|
76818
|
76819
|
76820
|
76821
|
76822
|
76823
|
76824
|
76825
|
76826
|
76827
|
76828
|
76829
|
76830
|
76831
|
76832
|
76833
|
76834
|
76835
|
76836
|
76837
|
76838
|
76839
|
76840
|
76841
|
76842
|
76843
|
76844
|
76845
|
76846
|
76847
|
77177
|
77178
|
77179
|
78755
|
78757
|
78759
|
78761
|
78763
|
78765
|
78766
|
78768
|
78770
|
78772
|
78773
|
78774
|
78775
|
78776
|
78777
|
78778
|
78780
|
78782
|
78785
|
78787
|
78789
|
78790
|
78792
|
78794
|
78797
|
78800
|
78801
|
78802
|
78803
|
78804
|
78805
|
78806
|
78807
|
78808
|
80763
|
80764
|
80765
|
80766
|
80767
|
80768
|
80769
|
80770
|
80771
|
80772
|
80773
|
80774
|
80775
|
80776
|
80777
|
80778
|
80779
|
80780
|
80781
|
80782
|
80783
|
80784
|
80785
|
80786
|
80787
|
80788
|
80789
|
80793
|
80878
|
81204
|
81205
|
81206
|
81207
|
81208
|
81209
|
81210
|
81211
|
81212
|
81213
|
81214
|
81215
|
81216
|
81217
|
81218
|
81219
|
81220
|
81221
|
81222
|
81223
|
81224
|
81225
|
81226
|
81227
|
81228
|
81229
|
81230
|
81231
|
81232
|
81233
|
81234
|
81235
|
81236
|
81237
|
81238
|
81239
|
81240
|
81241
|
81242
|
81243
|
81244
|
81245
|
81246
|
81247
|
81547
|
81548
|
81549
|
81550
|
81551
|
81552
|
81553
|
81554
|
81555
|
81556
|
81557
|
81558
|
81559
|
81560
|
81561
|
81562
|
81563
|
81564
|
81565
|
81566
|
81567
|
81568
|
81569
|
81583
|
81584
|
81585
|
81586
|
81587
|
81588
|
81595
|
81618
|
81652
|
81653
|
81654
|
81655
|
81656
|
81657
|
81658
|
81659
|
81660
|
81661
|
81662
|
81663
|
81664
|
81665
|
81666
|
81667
|
81668
|
81669
|
81670
|
81671
|
81672
|
81673
|
81674
|
81675
|
81676
|
81677
|
81678
|
81679
|
81680
|
81681
|
81682
|
81683
|
103887
|
103888
|
103890
|
103899
|
103900
|
103901
|
103999
|
104000
|
104001
|
104002
|
104005
|
104006
|
104007
|
104066
|
104067
|
104068
|
104069
|
104070
|
104071
|
104246
|
104247
|
104248
|
104249
|
104250
|
104322
|
104323
|
104324
|
104325
|
104326
|
104327
|
104328
|
104329
|
104330
|
104331
|
104332
|
104333
|
104334
|
104335
|
104336
|
104391
|
104392
|
104393
|
104394
|
104395
|
104396
|
104397
|
104398
|
104474
|
104475
|
104476
|
104477
|
104478
|
104479
|
104480
|
104481
|
104545
|
104546
|
104547
|
104548
|
104549
|
104550
|
104551
|
104552
|
104646
|
104647
|
104648
|
104649
|
104650
|
104651
|
104652
|
104653
|
104722
|
104723
|
104724
|
104725
|
104726
|
104727
|
104728
|
104729
|
104806
|
104807
|
104808
|
104809
|
104810
|
104811
|
104812
|
104813
|
104814
|
104815
|
104816
|
104817
|
104818
|
104819
|
104820
|
104821
|
104863
|
104864
|
104865
|
104866
|
104867
|
104868
|
104869
|
104870
|
104902
|
104903
|
104904
|
104905
|
104906
|
104907
|
104908
|
104909
|
104910
|
104913
|
104914
|
104915
|
104916
|
104917
|
104918
|
104919
|
104920
|
104988
|
104989
|
104990
|
104991
|
104992
|
106268
|
106269
|
106371
|
106372
|
106373
|
106374
|
106375
|
106376
|
106377
|
106378
|
106810
|
106811
|
106812
|
106813
|
106814
|
106815
|
106816
|
106817
|
106857
|
107198
|
107199
|
107200
|
107201
|
107202
|
107203
|
107204
|
107205
|
107807
|
107808
|
107809
|
107810
|
107811
|
107812
|
107813
|
107814
|
107918
|
107919
|
107920
|
107921
|
107922
|
107923
|
107924
|
107925
|
108222
|
108223
|
108224
|
108225
|
108226
|
108227
|
108228
|
108229
|
108980
|
108981
|
108982
|
109306
|
109307
|
109308
|
109309
|
109310
|
109311
|
109312
|
109313
|
109314
|
109315
|
109316
|
109317
|
109318
|
109463
|
109464
|
109465
|
109466
|
109467
|
109468
|
109469
|
109775
|
109776
|
109777
|
109778
|
109779
|
109780
|
109781
|
109782
|
109783
|
109784
|
109785
|
111199
|
111200
|
111201
|
111202
|
111203
|
111204
|
111205
|
111206
|
112316
|
112317
|
112321
|
112322
|
112323
|
112324
|
112325
|
112326
|
112346
|
112472
|
112491
|
112540
|
112612
|
112613
|
112614
|
112615
|
112616
|
112617
|
112618
|
112619
|
112620
|
112621
|
112622
|
113195
|
113196
|
113197
|
113198
|
113199
|
113200
|
113201
|
113202
|
113203
|
113204
|
113205
|
113286
|
113287
|
113288
|
113289
|
113290
|
113291
|
113292
|
113293
|
113294
|
113295
|
113296
|
113297
|
113298
|
113335
|
113351
|
113352
|
113353
|
113354
|
113355
|
113356
|
113357
|
113358
|
113359
|
113361
|
113362
|
113363
|
113364
|
113365
|
113430
|
113431
|
113432
|
113433
|
113434
|
113435
|
113436
|
113437
|
113438
|
113439
|
113440
|
113441
|
113442
|
113443
|
113444
|
113445
|
116121
|
116122
|
116123
|
116124
|
116125
|
116126
|
116127
|
116128
|
116129
|
116130
|
116131
|
116132
|
116133
|
116134
|
118267
|
118268
|
118269
|
118270
|
118271
|
118272
|
118273
|
118274
|
118275
|
118276
|
118277
|
118278
|
118279
|
118280
|
122993
|
122994
|
122995
|
122996
|
122997
|
122998
|
122999
|
123000
|
123001
|
123002
|
123003
|
123004
|
123005
|
126244
|
126245
|
126246
|
126247
|
126248
|
126249
|
126250
|
126251
|
126252
|
126253
|
126254
|
126255
|
126256
|
126257
|
126453
|
126454
|
126455
|
126456
|
126457
|
126458
|
126459
|
126460
|
126469
|
126470
|
126565
|
126566
|
126568
|
126569
|
126570
|
126571
|
126572
|
126573
|
126574
|
126575
|
126576
|
126577
|
126578
|
126579
|
126580
|
129305
|
129306
|
129307
|
129308
|
129309
|
129310
|
129311
|
129312
|
129313
|
129314
|
129315
|
129316
|
129317
|
129318
|
129319
|
130641
|
130642
|
130643
|
130644
|
130645
|
130646
|
130647
|
130648
|
130649
|
130650
|
130651
|
130652
|
130653
|
130654
|
130655
|
130656
|
131108
|
131156
|
131157
|
131158
|
131159
|
131160
|
131193
|
131213
|
131257
|
131260
|
131261
|
131262
|
131263
|
131264
|
131265
|
131266
|
131267
|
131268
|
131269
|
131270
|
131271
|
131272
|
131273
|
131274
|
131275
|
131276
|
131277
|
131278
|
131279
|
131280
|
131281
|
131282
|
131330
|
131629
|
131630
|
131631
| 131664 |
131665
|
131666
|
131701
|
132332