Bug 18426: Address QA issues
[koha.git] / admin / branches.pl
blobab1021cdf67ba3c58561d93b001367fee3667a08
1 #!/usr/bin/perl
3 # Copyright 2000-2002 Katipo Communications
4 # Copyright 2015 Koha Development Team
6 # This file is part of Koha.
8 # Koha is free software; you can redistribute it and/or modify it
9 # under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 3 of the License, or
11 # (at your option) any later version.
13 # Koha is distributed in the hope that it will be useful, but
14 # WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with Koha; if not, see <http://www.gnu.org/licenses>.
21 use Modern::Perl;
22 use CGI qw ( -utf8 );
23 use C4::Auth;
24 use C4::Context;
25 use C4::Output;
26 use C4::Koha;
27 use Koha::Patrons;
28 use Koha::Items;
29 use Koha::Libraries;
31 my $input = new CGI;
32 my $branchcode = $input->param('branchcode');
33 my $categorycode = $input->param('categorycode');
34 my $op = $input->param('op') || 'list';
35 my @messages;
37 my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
38 { template_name => "admin/branches.tt",
39 query => $input,
40 type => "intranet",
41 authnotrequired => 0,
42 flagsrequired => { parameters => 'parameters_remaining_permissions' },
43 debug => 1,
47 if ( $op eq 'add_form' ) {
48 my $library;
49 if ($branchcode) {
50 $library = Koha::Libraries->find($branchcode);
53 $template->param(
54 library => $library,
56 } elsif ( $op eq 'add_validate' ) {
57 my @fields = qw(
58 branchname
59 branchaddress1
60 branchaddress2
61 branchaddress3
62 branchzip
63 branchcity
64 branchstate
65 branchcountry
66 branchphone
67 branchfax
68 branchemail
69 branchreplyto
70 branchreturnpath
71 branchurl
72 issuing
73 branchip
74 branchnotes
75 opac_info
76 marcorgcode
78 my $is_a_modif = $input->param('is_a_modif');
80 if ($is_a_modif) {
81 my $library = Koha::Libraries->find($branchcode);
82 for my $field (@fields) {
83 $library->$field( scalar $input->param($field) );
85 eval { $library->store; };
86 if ($@) {
87 push @messages, { type => 'alert', code => 'error_on_update' };
88 } else {
89 push @messages, { type => 'message', code => 'success_on_update' };
91 } else {
92 $branchcode =~ s|\s||g;
93 my $library = Koha::Library->new(
94 { branchcode => $branchcode,
95 ( map { $_ => scalar $input->param($_) || undef } @fields )
98 eval { $library->store; };
99 if ($@) {
100 push @messages, { type => 'alert', code => 'error_on_insert' };
101 } else {
102 push @messages, { type => 'message', code => 'success_on_insert' };
105 $op = 'list';
106 } elsif ( $op eq 'delete_confirm' ) {
107 my $library = Koha::Libraries->find($branchcode);
108 my $items_count = Koha::Items->search(
109 { -or => {
110 holdingbranch => $branchcode,
111 homebranch => $branchcode
114 )->count;
115 my $patrons_count = Koha::Patrons->search( { branchcode => $branchcode, } )->count;
117 if ( $items_count or $patrons_count ) {
118 push @messages,
119 { type => 'alert',
120 code => 'cannot_delete_library',
121 data => {
122 items_count => $items_count,
123 patrons_count => $patrons_count,
126 $op = 'list';
127 } else {
128 $template->param(
129 library => $library,
130 items_count => $items_count,
131 patrons_count => $patrons_count,
134 } elsif ( $op eq 'delete_confirmed' ) {
135 my $library = Koha::Libraries->find($branchcode);
137 my $deleted = eval { $library->delete; };
139 if ( $@ or not $deleted ) {
140 push @messages, { type => 'alert', code => 'error_on_delete' };
141 } else {
142 push @messages, { type => 'message', code => 'success_on_delete' };
144 $op = 'list';
145 } else {
146 $op = 'list';
149 if ( $op eq 'list' ) {
150 my $libraries = Koha::Libraries->search( {}, { order_by => ['branchcode'] }, );
151 $template->param( libraries => $libraries, );
154 $template->param(
155 messages => \@messages,
156 op => $op,
159 output_html_with_http_headers $input, $cookie, $template->output;