Bugzilla – Attachment 151547 Details for
Bug 33362
Return claims can be un-resolvable if issue_id is set but no issue is found in issues or old_issues
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 33362: Allow return claims to be resolved even if the issue has since been delete from the database
Bug-33362-Allow-return-claims-to-be-resolved-even-.patch (text/plain), 4.75 KB, created by
Victor Grousset/tuxayo
on 2023-05-23 02:07:26 UTC
(
hide
)
Description:
Bug 33362: Allow return claims to be resolved even if the issue has since been delete from the database
Filename:
MIME Type:
Creator:
Victor Grousset/tuxayo
Created:
2023-05-23 02:07:26 UTC
Size:
4.75 KB
patch
obsolete
>From fddecb5b9865233ac1c3dce6ca5372ba3325bb47 Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Thu, 11 May 2023 14:43:39 +0000 >Subject: [PATCH] Bug 33362: Allow return claims to be resolved even if the > issue has since been delete from the database > >Test Plan: >1) Check out an item >2) Claim return on it, moving it to the old_issues table >3) Delete the old_issue via koha-mysql or Use cleanup_database.pl >4) Attempt to resolve the claim >5) Note the error >6) Apply this patch set >7) Restart all the things! >8) Attempt to resolve the claim >9) No errors! > >Signed-off-by: Sam Lau <samalau@gmail.com> >Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net> >--- > Koha/Checkouts/ReturnClaim.pm | 11 +--- > t/db_dependent/Koha/Checkouts/ReturnClaim.t | 68 ++++++++++++--------- > 2 files changed, 41 insertions(+), 38 deletions(-) > >diff --git a/Koha/Checkouts/ReturnClaim.pm b/Koha/Checkouts/ReturnClaim.pm >index 7dc5a2609c..d2ac4ba32b 100644 >--- a/Koha/Checkouts/ReturnClaim.pm >+++ b/Koha/Checkouts/ReturnClaim.pm >@@ -53,15 +53,10 @@ sub store { > Koha::Exceptions::Checkouts::ReturnClaims::NoCreatedBy->throw(); > } > >- unless ( !$self->issue_id >+ # if issue_id is not found in issues or old_issues, set to null >+ $self->issue_id(undef) unless ( !$self->issue_id > || Koha::Checkouts->find( $self->issue_id ) >- || Koha::Old::Checkouts->find( $self->issue_id ) ) >- { >- Koha::Exceptions::Object::FKConstraint->throw( >- error => 'Broken FK constraint', >- broken_fk => 'issue_id' >- ); >- } >+ || Koha::Old::Checkouts->find( $self->issue_id ) ); > > return $self->SUPER::store; > } >diff --git a/t/db_dependent/Koha/Checkouts/ReturnClaim.t b/t/db_dependent/Koha/Checkouts/ReturnClaim.t >index 4d12bc3751..5d5ebda400 100755 >--- a/t/db_dependent/Koha/Checkouts/ReturnClaim.t >+++ b/t/db_dependent/Koha/Checkouts/ReturnClaim.t >@@ -31,7 +31,7 @@ my $builder = t::lib::TestBuilder->new; > > subtest "store() tests" => sub { > >- plan tests => 11; >+ plan tests => 9; > > $schema->storage->txn_begin; > >@@ -109,40 +109,12 @@ subtest "store() tests" => sub { > is( ref($claim), 'Koha::Checkouts::ReturnClaim', 'Object type is correct' ); > is( Koha::Checkouts::ReturnClaims->search( { issue_id => $checkout->id } )->count, 1, 'Claim stored on the DB'); > >- { # hide useless warnings >- local *STDERR; >- open STDERR, '>', '/dev/null'; >- >- my $another_checkout = $builder->build_object({ class => 'Koha::Checkouts' }); >- my $checkout_id = $another_checkout->id; >- $another_checkout->delete; >- >- my $THE_claim; >- >- throws_ok { >- $THE_claim = Koha::Checkouts::ReturnClaim->new( >- { >- issue_id => $checkout_id, >- itemnumber => $checkout->itemnumber, >- borrowernumber => $checkout->borrowernumber, >- notes => 'Some notes', >- created_by => $librarian->borrowernumber >- } >- )->store; >- } >- 'Koha::Exceptions::Object::FKConstraint', >- 'An exception is thrown on invalid issue_id'; >- close STDERR; >- >- is( $@->broken_fk, 'issue_id', 'Exception field is correct' ); >- } >- > $schema->storage->txn_rollback; > }; > > subtest "resolve() tests" => sub { > >- plan tests => 9; >+ plan tests => 10; > > $schema->storage->txn_begin; > >@@ -257,6 +229,42 @@ subtest "resolve() tests" => sub { > $item->discard_changes; > is( $item->itemlost, $new_lost_status, 'Item lost status is updated' ); > >+ # Resolve claim for checkout that has been cleaned from the database >+ $checkout->delete; >+ $checkout = $builder->build_object( >+ { >+ class => 'Koha::Checkouts', >+ value => { >+ borrowernumber => $patron->borrowernumber, >+ itemnumber => $item->itemnumber, >+ branchcode => $patron->branchcode >+ } >+ } >+ ); >+ >+ $claim = Koha::Checkouts::ReturnClaim->new( >+ { >+ issue_id => $checkout->id, >+ itemnumber => $checkout->itemnumber, >+ borrowernumber => $checkout->borrowernumber, >+ notes => 'Some notes', >+ created_by => $librarian->borrowernumber >+ } >+ )->store; >+ >+ $checkout->delete; >+ >+ $claim->resolve( >+ { >+ resolution => "X", >+ resolved_by => $librarian->id, >+ resolved_on => $tomorrow, >+ new_lost_status => $new_lost_status, >+ } >+ )->discard_changes; >+ >+ is( $claim->issue_id, undef, "Resolved claim cleaned checkout is updated correctly" ); >+ > $schema->storage->txn_rollback; > }; > >-- >2.40.1
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 33362
:
151084
|
151085
|
151492
| 151547