From cbc14204314b8104324449be1799eb89ecd267cc Mon Sep 17 00:00:00 2001 From: Charles Farmer Date: Wed, 4 Mar 2020 16:04:05 -0500 Subject: [PATCH] Bug 17015: Automatically update calendar when creating or deleting a branch Signed-off-by: Michal Denar --- Koha/DiscreteCalendar.pm | 41 ++++++++++++++++++++++++++++++++++++++++ admin/branches.pl | 3 +++ 2 files changed, 44 insertions(+) diff --git a/Koha/DiscreteCalendar.pm b/Koha/DiscreteCalendar.pm index 4875e7c189..f80916305b 100644 --- a/Koha/DiscreteCalendar.pm +++ b/Koha/DiscreteCalendar.pm @@ -175,6 +175,16 @@ sub add_new_branch { branchcode => $copyBranch }); + unless ($branch_rs->count) { + $copyBranch = Koha::Libraries->next->branchcode; + $branch_rs = $schema->resultset('DiscreteCalendar')->search({ + branchcode => $copyBranch + }); + } + + $schema->{AutoCommit} = 0; + $schema->storage->txn_begin; + while (my $row = $branch_rs->next()) { $schema->resultset('DiscreteCalendar')->create({ date => $row->date(), @@ -186,8 +196,39 @@ sub add_new_branch { }); } + eval { $schema->storage->txn_commit; }; + + if ($@) { + $schema->storage->rollback; + } + + $schema->{AutoCommit} = 1; } +=head2 delete_branch + + Koha::DiscreteCalendar->delete_branch($branchcode) + +This method will delete every discrete_calendar entry for a given branch +C<$branchcode> is the code of the branch we want to remove from the table + +=cut + +sub delete_branch { + my ( $classname, $branchcode ) = @_; + + my $schema = Koha::Database->new->schema; + + my $branch_rs = $schema->resultset('DiscreteCalendar')->search({ + branchcode => $branchcode + }); + + if ($branch_rs->count) { + $branch_rs->delete; + } +} + + =head2 get_date_info my $date = $calendar->get_date_info; diff --git a/admin/branches.pl b/admin/branches.pl index 134321a2bd..201f6efe0e 100755 --- a/admin/branches.pl +++ b/admin/branches.pl @@ -153,6 +153,8 @@ if ( $op eq 'add_form' ) { } } + Koha::DiscreteCalendar->add_new_branch(undef, $branchcode); + push @messages, { type => 'message', code => 'success_on_insert' }; } ); @@ -198,6 +200,7 @@ if ( $op eq 'add_form' ) { if ( $@ or not $deleted ) { push @messages, { type => 'alert', code => 'error_on_delete' }; } else { + Koha::DiscreteCalendar->delete_branch($branchcode); push @messages, { type => 'message', code => 'success_on_delete' }; } $op = 'list'; -- 2.25.1