- my @names=$input->param();
- my $sth_search = $dbh->prepare("select count(*) as total from overduerules where branchcode=? and categorycode=?");
-
- my $sth_insert = $dbh->prepare("insert into overduerules (branchcode,categorycode, delay1,letter1,debarred1, delay2,letter2,debarred2, delay3,letter3,debarred3) values (?,?,?,?,?,?,?,?,?,?,?)");
- my $sth_update=$dbh->prepare("Update overduerules set delay1=?, letter1=?, debarred1=?, delay2=?, letter2=?, debarred2=?, delay3=?, letter3=?, debarred3=? where branchcode=? and categorycode=?");
- my $sth_delete=$dbh->prepare("delete from overduerules where branchcode=? and categorycode=?");
- foreach my $key (@names){
- # ISSUES
- if ($key =~ /(.*)([1-3])-(.*)/) {
- my $type = $1; # data type
- my $num = $2; # From 1 to 3
- my $bor = $3; # borrower category
- $temphash{$bor}->{"$type$num"}=$input->param("$key") if (($input->param("$key") ne "") or ($input->param("$key")>0));
- }
- }
- foreach my $bor (keys %temphash){
- # Do some Checking here : delay1 < delay2 <delay3 all of them being numbers
- # Raise error if not true
- if ($temphash{$bor}->{delay1}=~/[^0-9]/ and $temphash{$bor}->{delay1} ne ""){
- $template->param("ERROR"=>1,"ERRORDELAY"=>"delay1","BORERR"=>$bor);
- $err=1;
- } elsif ($temphash{$bor}->{delay2}=~/[^0-9]/ and $temphash{$bor}->{delay2} ne ""){
- $template->param("ERROR"=>1,"ERRORDELAY"=>"delay2","BORERR"=>$bor);
- $err=1;
- } elsif ($temphash{$bor}->{delay3}=~/[^0-9]/ and $temphash{$bor}->{delay3} ne ""){
- $template->param("ERROR"=>1,"ERRORDELAY"=>"delay3","BORERR"=>$bor);
- $err=1;
- }elsif ($temphash{$bor}->{delay3} and ($temphash{$bor}->{delay3}<=$temphash{$bor}->{delay2}
- or $temphash{$bor}->{delay3}<=$temphash{$bor}->{delay1})
- or $temphash{$bor}->{delay2} and ($temphash{$bor}->{delay2}<=$temphash{$bor}->{delay1})){
- $template->param("ERROR"=>1,"ERRORORDER"=>1,"BORERR"=>$bor);
- $err=1;
- }
- unless ($err){
- if (($temphash{$bor}->{delay1} and ($temphash{$bor}->{"letter1"} or $temphash{$bor}->{"debarred1"}))
- or ($temphash{$bor}->{delay2} and ($temphash{$bor}->{"letter2"} or $temphash{$bor}->{"debarred2"}))
- or ($temphash{$bor}->{delay3} and ($temphash{$bor}->{"letter3"} or $temphash{$bor}->{"debarred3"}))) {
- $sth_search->execute($branch,$bor);
- my $res = $sth_search->fetchrow_hashref();
- if ($res->{'total'}>0) {
- $sth_update->execute(
- ($temphash{$bor}->{"delay1"}?$temphash{$bor}->{"delay1"}:0),
- ($temphash{$bor}->{"letter1"}?$temphash{$bor}->{"letter1"}:""),
- ($temphash{$bor}->{"debarred1"}?$temphash{$bor}->{"debarred1"}:0),
- ($temphash{$bor}->{"delay2"}?$temphash{$bor}->{"delay2"}:0),
- ($temphash{$bor}->{"letter2"}?$temphash{$bor}->{"letter2"}:""),
- ($temphash{$bor}->{"debarred2"}?$temphash{$bor}->{"debarred2"}:0),
- ($temphash{$bor}->{"delay3"}?$temphash{$bor}->{"delay3"}:0),
- ($temphash{$bor}->{"letter3"}?$temphash{$bor}->{"letter3"}:""),
- ($temphash{$bor}->{"debarred3"}?$temphash{$bor}->{"debarred3"}:0),
- $branch ,$bor
- );
- } else {
- $sth_insert->execute($branch,$bor,
- ($temphash{$bor}->{"delay1"}?$temphash{$bor}->{"delay1"}:0),
- ($temphash{$bor}->{"letter1"}?$temphash{$bor}->{"letter1"}:""),
- ($temphash{$bor}->{"debarred1"}?$temphash{$bor}->{"debarred1"}:0),
- ($temphash{$bor}->{"delay2"}?$temphash{$bor}->{"delay2"}:0),
- ($temphash{$bor}->{"letter2"}?$temphash{$bor}->{"letter2"}:""),
- ($temphash{$bor}->{"debarred2"}?$temphash{$bor}->{"debarred2"}:0),
- ($temphash{$bor}->{"delay3"}?$temphash{$bor}->{"delay3"}:0),
- ($temphash{$bor}->{"letter3"}?$temphash{$bor}->{"letter3"}:""),
- ($temphash{$bor}->{"debarred3"}?$temphash{$bor}->{"debarred3"}:0)
- );
- }
- }
- }
- }
- unless ($err) {$template->param(datasaved=>1);}
-}
-my $branches = GetBranches();
-my @branchloop;
-foreach my $thisbranch (keys %$branches) {
- my $selected = 1 if $thisbranch eq $branch;
- my %row =(value => $thisbranch,
- selected => $selected,
- branchname => $branches->{$thisbranch}->{'branchname'},
- );
- push @branchloop, \%row;
-}
+ my @names=$input->multi_param();
+ my $sth_search = $dbh->prepare("SELECT count(*) AS total FROM overduerules WHERE branchcode=? AND categorycode=?");
+
+ my $sth_insert = $dbh->prepare("INSERT INTO overduerules (branchcode,categorycode, delay1,letter1,debarred1, delay2,letter2,debarred2, delay3,letter3,debarred3) VALUES (?,?,?,?,?,?,?,?,?,?,?)");
+ my $sth_update=$dbh->prepare("UPDATE overduerules SET delay1=?, letter1=?, debarred1=?, delay2=?, letter2=?, debarred2=?, delay3=?, letter3=?, debarred3=? WHERE branchcode=? AND categorycode=?");
+ my $sth_delete=$dbh->prepare("DELETE FROM overduerules WHERE branchcode=? AND categorycode=?");
+ my $sth_insert_mtt = $dbh->prepare("
+ INSERT INTO overduerules_transport_types(
+ overduerules_id, letternumber, message_transport_type
+ ) VALUES (
+ (SELECT overduerules_id FROM overduerules WHERE branchcode = ? AND categorycode = ?), ?, ?
+ )
+ ");
+ my $sth_delete_mtt = $dbh->prepare("
+ DELETE FROM overduerules_transport_types
+ WHERE overduerules_id = (SELECT overduerules_id FROM overduerules WHERE branchcode = ? AND categorycode = ?)
+ ");
+
+ foreach my $key (@names){
+ # ISSUES
+ if ($key =~ /(delay|letter|debarred)([1-3])-(.*)/) {
+ my $type = $1; # data type
+ my $num = $2; # From 1 to 3
+ my $bor = $3; # borrower category
+ my $value = $input->param($key);
+ if ($type eq 'delay') {
+ $temphash{$bor}->{"$type$num"} = ($value =~ /^\d+$/ && int($value) > 0) ? int($value) : '';
+ } else {
+ # type is letter
+ $temphash{$bor}->{"$type$num"} = $value if $value ne '';
+ }
+ }
+ }
+
+ # figure out which rows need to be deleted
+ my @rows_to_delete = grep { blank_row($_) } @category_codes;
+
+ foreach my $bor (keys %temphash){
+ # get category name if we need it for an error message
+ my $bor_category = Koha::Patron::Categories->find($bor);
+ my $bor_category_name = $bor_category ? $bor_category->description : $bor;
+
+ # Do some Checking here : delay1 < delay2 <delay3 all of them being numbers
+ # Raise error if not true
+ if ($temphash{$bor}->{delay1}=~/[^0-9]/ and $temphash{$bor}->{delay1} ne ""){
+ $template->param("ERROR"=>1,"ERRORDELAY"=>"delay1","BORERR"=>$bor_category_name);
+ $err=1;
+ } elsif ($temphash{$bor}->{delay2}=~/[^0-9]/ and $temphash{$bor}->{delay2} ne ""){
+ $template->param("ERROR"=>1,"ERRORDELAY"=>"delay2","BORERR"=>$bor_category_name);
+ $err=1;
+ } elsif ($temphash{$bor}->{delay3}=~/[^0-9]/ and $temphash{$bor}->{delay3} ne ""){
+ $template->param("ERROR"=>1,"ERRORDELAY"=>"delay3","BORERR"=>$bor_category_name);
+ $err=1;
+ } elsif ($temphash{$bor}->{delay1} and not ($temphash{$bor}->{"letter1"} or $temphash{$bor}->{"debarred1"})) {
+ $template->param("ERROR"=>1,"ERRORUSELESSDELAY"=>"delay1","BORERR"=>$bor_category_name);
+ $err=1;
+ } elsif ($temphash{$bor}->{delay2} and not ($temphash{$bor}->{"letter2"} or $temphash{$bor}->{"debarred2"})) {
+ $template->param("ERROR"=>1,"ERRORUSELESSDELAY"=>"delay2","BORERR"=>$bor_category_name);
+ $err=1;
+ } elsif ($temphash{$bor}->{delay3} and not ($temphash{$bor}->{"letter3"} or $temphash{$bor}->{"debarred3"})) {
+ $template->param("ERROR"=>1,"ERRORUSELESSDELAY"=>"delay3","BORERR"=>$bor_category_name);
+ $err=1;
+ }elsif ($temphash{$bor}->{delay3} and
+ ($temphash{$bor}->{delay3}<=$temphash{$bor}->{delay2} or $temphash{$bor}->{delay3}<=$temphash{$bor}->{delay1})
+ or $temphash{$bor}->{delay2} and ($temphash{$bor}->{delay2}<=$temphash{$bor}->{delay1})){
+ $template->param("ERROR"=>1,"ERRORORDER"=>1,"BORERR"=>$bor_category_name);
+ $err=1;
+ }
+ unless ($err){
+ if (($temphash{$bor}->{delay1} and ($temphash{$bor}->{"letter1"} or $temphash{$bor}->{"debarred1"}))
+ or ($temphash{$bor}->{delay2} and ($temphash{$bor}->{"letter2"} or $temphash{$bor}->{"debarred2"}))
+ or ($temphash{$bor}->{delay3} and ($temphash{$bor}->{"letter3"} or $temphash{$bor}->{"debarred3"}))) {
+ $sth_search->execute($branch,$bor);
+ my $res = $sth_search->fetchrow_hashref();
+ if ($res->{'total'}>0) {
+ $sth_update->execute(
+ ($temphash{$bor}->{"delay1"}?$temphash{$bor}->{"delay1"}:undef),
+ ($temphash{$bor}->{"letter1"}?$temphash{$bor}->{"letter1"}:""),
+ ($temphash{$bor}->{"debarred1"}?$temphash{$bor}->{"debarred1"}:0),
+ ($temphash{$bor}->{"delay2"}?$temphash{$bor}->{"delay2"}:undef),
+ ($temphash{$bor}->{"letter2"}?$temphash{$bor}->{"letter2"}:""),
+ ($temphash{$bor}->{"debarred2"}?$temphash{$bor}->{"debarred2"}:0),
+ ($temphash{$bor}->{"delay3"}?$temphash{$bor}->{"delay3"}:undef),
+ ($temphash{$bor}->{"letter3"}?$temphash{$bor}->{"letter3"}:""),
+ ($temphash{$bor}->{"debarred3"}?$temphash{$bor}->{"debarred3"}:0),
+ $branch ,$bor
+ );
+ } else {
+ $sth_insert->execute($branch,$bor,
+ ($temphash{$bor}->{"delay1"}?$temphash{$bor}->{"delay1"}:0),
+ ($temphash{$bor}->{"letter1"}?$temphash{$bor}->{"letter1"}:""),
+ ($temphash{$bor}->{"debarred1"}?$temphash{$bor}->{"debarred1"}:0),
+ ($temphash{$bor}->{"delay2"}?$temphash{$bor}->{"delay2"}:0),
+ ($temphash{$bor}->{"letter2"}?$temphash{$bor}->{"letter2"}:""),
+ ($temphash{$bor}->{"debarred2"}?$temphash{$bor}->{"debarred2"}:0),
+ ($temphash{$bor}->{"delay3"}?$temphash{$bor}->{"delay3"}:0),
+ ($temphash{$bor}->{"letter3"}?$temphash{$bor}->{"letter3"}:""),
+ ($temphash{$bor}->{"debarred3"}?$temphash{$bor}->{"debarred3"}:0)
+ );
+ }