X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=serials%2Fsubscription-add.pl;h=9acee7b56bebe337a99b972d458444be814268a7;hb=dc18719e3a46a30111de43f8b3a510649a678a36;hp=242f7b41f1958247385f6ee1eb0c32055a1a7f90;hpb=df4b588c6e7166a50ca5724fde16e75c2c84d18c;p=koha_gimpoz diff --git a/serials/subscription-add.pl b/serials/subscription-add.pl index 242f7b41f1..9acee7b56b 100755 --- a/serials/subscription-add.pl +++ b/serials/subscription-add.pl @@ -39,12 +39,18 @@ my $op = $query->param('op') || ''; my $dbh = C4::Context->dbh; my $sub_length; +my @budgets; + +# Permission needed if it is a modification : edit_subscription +# Permission needed otherwise (nothing or dup) : create_subscription +my $permission = ($op eq "modify") ? "edit_subscription" : "create_subscription"; + my ($template, $loggedinuser, $cookie) = get_template_and_user({template_name => "serials/subscription-add.tmpl", query => $query, type => "intranet", authnotrequired => 0, - flagsrequired => {serials => 1}, + flagsrequired => {serials => $permission}, debug => 1, }); @@ -60,12 +66,12 @@ my $subs; my $firstissuedate; my $nextexpected; -if ($op eq 'mod' || $op eq 'dup' || $op eq 'modsubscription') { +if ($op eq 'modify' || $op eq 'dup' || $op eq 'modsubscription') { my $subscriptionid = $query->param('subscriptionid'); $subs = GetSubscription($subscriptionid); ## FIXME : Check rights to edit if mod. Could/Should display an error message. - if ($subs->{'cannotedit'} && $op eq 'mod'){ + if ($subs->{'cannotedit'} && $op eq 'modify'){ carp "Attempt to modify subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed"; print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid"); } @@ -79,11 +85,13 @@ if ($op eq 'mod' || $op eq 'dup' || $op eq 'modsubscription') { $subs->{$_} = format_date($subs->{$_}); } } - $subs->{'letter'}='' unless($subs->{'letter'}); + if (!defined $subs->{letter}) { + $subs->{letter}= q{}; + } letter_loop($subs->{'letter'}, $template); $nextexpected = GetNextExpected($subscriptionid); $nextexpected->{'isfirstissue'} = $nextexpected->{planneddate}->output('iso') eq $firstissuedate ; - $subs->{nextacquidate} = $nextexpected->{planneddate}->output() if($op eq 'mod'); + $subs->{nextacquidate} = $nextexpected->{planneddate}->output() if($op eq 'modify'); unless($op eq 'modsubscription') { foreach my $length_unit qw(numberlength weeklength monthlength){ if ($subs->{$length_unit}){ @@ -93,13 +101,13 @@ if ($op eq 'mod' || $op eq 'dup' || $op eq 'modsubscription') { } } - $template->param($subs); + $template->param( %{$subs} ); $template->param("dow".$subs->{'dow'} => 1) if defined $subs->{'dow'}; $template->param( $op => 1, "subtype_$sub_on" => 1, sublength =>$sub_length, - history => ($op eq 'mod'), + history => ($op eq 'modify'), "periodicity".$subs->{'periodicity'} => 1, "numberpattern".$subs->{'numberpattern'} => 1, firstacquiyear => substr($firstissuedate,0,4), @@ -115,7 +123,6 @@ my $branches = GetBranches($onlymine); my $branchloop; for my $thisbranch (sort { $branches->{$a}->{branchname} cmp $branches->{$b}->{branchname} } keys %{$branches}) { my $selected = 0; - $selected = 1 if ($thisbranch eq C4::Context->userenv->{'branch'}); $selected = 1 if (defined($subs) && $thisbranch eq $subs->{'branchcode'}); push @{$branchloop}, { value => $thisbranch, @@ -123,13 +130,18 @@ for my $thisbranch (sort { $branches->{$a}->{branchname} cmp $branches->{$b}->{b branchname => $branches->{$thisbranch}->{'branchname'}, }; } + +my $locations_loop = GetAuthorisedValues("LOC",$subs->{'location'}); + $template->param(branchloop => $branchloop, DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), + locations_loop=>$locations_loop, ); -my $count = 0; # prepare template variables common to all $op conditions: -$template->param( 'dateformat_' . C4::Context->preference('dateformat') => 1 , - ); +$template->param( 'dateformat_' . C4::Context->preference('dateformat') => 1 ); +if ($op!~/^mod/) { + letter_loop(q{}, $template); +} if ($op eq 'addsubscription') { redirect_add_subscription(); @@ -146,10 +158,9 @@ if ($op eq 'addsubscription') { } push( @sub_type_data, \%row ); } - $template->param(subtype => \@sub_type_data, - ); + $template->param(subtype => \@sub_type_data); - letter_loop('', $template); + letter_loop( '', $template ) if ($op ne 'modsubscription' && $op ne 'dup' && $op ne 'modify'); my $new_biblionumber = $query->param('biblionumber_for_new_subscription'); if (defined $new_biblionumber) { @@ -165,16 +176,15 @@ if ($op eq 'addsubscription') { sub letter_loop { my ($selected_letter, $templte) = @_; my $letters = GetLetters('serial'); - my @letterloop; - foreach my $thisletter (keys %$letters) { - my $selected = $thisletter eq $selected_letter ? 1 : 0; - push @letterloop, { + my $letterloop; + foreach my $thisletter (keys %{$letters}) { + push @{$letterloop}, { value => $thisletter, - selected => $selected, + selected => $thisletter eq $selected_letter, lettername => $letters->{$thisletter}, }; } - $templte->param(letterloop => \@letterloop) if @letterloop; + $templte->param(letterloop => $letterloop); return; } @@ -189,52 +199,52 @@ sub _get_sub_length { } sub redirect_add_subscription { - my $auser = $query->param('user'); - my $branchcode = $query->param('branchcode'); - my $aqbooksellerid = $query->param('aqbooksellerid'); - my $cost = $query->param('cost'); - my $aqbudgetid = $query->param('aqbudgetid'); - my $periodicity = $query->param('periodicity'); - my $dow = $query->param('dow'); - my @irregularity = $query->param('irregularity_select'); - my $numberpattern = $query->param('numbering_pattern'); - my $graceperiod = $query->param('graceperiod') || 0; + my $auser = $query->param('user'); + my $branchcode = $query->param('branchcode'); + my $aqbooksellerid = $query->param('aqbooksellerid'); + my $cost = $query->param('cost'); + my $aqbudgetid = $query->param('aqbudgetid'); + my $periodicity = $query->param('periodicity'); + my $dow = $query->param('dow'); + my @irregularity = $query->param('irregularity_select'); + my $numberpattern = $query->param('numbering_pattern'); + my $graceperiod = $query->param('graceperiod') || 0; - my ($numberlength, $weeklength, $monthlength) + my ( $numberlength, $weeklength, $monthlength ) = _get_sub_length( $query->param('subtype'), $query->param('sublength') ); - my $add1 = $query->param('add1'); - my $every1 = $query->param('every1'); - my $whenmorethan1 = $query->param('whenmorethan1'); - my $setto1 = $query->param('setto1'); - my $lastvalue1 = $query->param('lastvalue1'); - my $innerloop1 =$query->param('innerloop1'); - my $add2 = $query->param('add2'); - my $every2 = $query->param('every2'); - my $whenmorethan2 = $query->param('whenmorethan2'); - my $setto2 = $query->param('setto2'); - my $innerloop2 =$query->param('innerloop2'); - my $lastvalue2 = $query->param('lastvalue2'); - my $add3 = $query->param('add3'); - my $every3 = $query->param('every3'); - my $whenmorethan3 = $query->param('whenmorethan3'); - my $setto3 = $query->param('setto3'); - my $lastvalue3 = $query->param('lastvalue3'); - my $innerloop3 =$query->param('innerloop3'); - my $numberingmethod = $query->param('numberingmethod'); - my $status = 1; - my $biblionumber = $query->param('biblionumber'); - my $callnumber = $query->param('callnumber'); - my $notes = $query->param('notes'); - my $internalnotes = $query->param('internalnotes'); - my $hemisphere = $query->param('hemisphere') || 1; - my $letter = $query->param('letter'); - my $manualhistory = $query->param('manualhist'); - my $serialsadditems = $query->param('serialsadditems'); - my $staffdisplaycount = $query->param('staffdisplaycount'); - my $opacdisplaycount = $query->param('opacdisplaycount'); - my $location = $query->param('location'); - my $startdate = format_date_in_iso($query->param('startdate')); - my $enddate = format_date_in_iso($query->param('enddate')); + my $add1 = $query->param('add1'); + my $every1 = $query->param('every1'); + my $whenmorethan1 = $query->param('whenmorethan1'); + my $setto1 = $query->param('setto1'); + my $lastvalue1 = $query->param('lastvalue1'); + my $innerloop1 = $query->param('innerloop1'); + my $add2 = $query->param('add2'); + my $every2 = $query->param('every2'); + my $whenmorethan2 = $query->param('whenmorethan2'); + my $setto2 = $query->param('setto2'); + my $innerloop2 = $query->param('innerloop2'); + my $lastvalue2 = $query->param('lastvalue2'); + my $add3 = $query->param('add3'); + my $every3 = $query->param('every3'); + my $whenmorethan3 = $query->param('whenmorethan3'); + my $setto3 = $query->param('setto3'); + my $lastvalue3 = $query->param('lastvalue3'); + my $innerloop3 = $query->param('innerloop3'); + my $numberingmethod = $query->param('numberingmethod'); + my $status = 1; + my $biblionumber = $query->param('biblionumber'); + my $callnumber = $query->param('callnumber'); + my $notes = $query->param('notes'); + my $internalnotes = $query->param('internalnotes'); + my $hemisphere = $query->param('hemisphere') || 1; + my $letter = $query->param('letter'); + my $manualhistory = $query->param('manualhist'); + my $serialsadditems = $query->param('serialsadditems'); + my $staffdisplaycount = $query->param('staffdisplaycount'); + my $opacdisplaycount = $query->param('opacdisplaycount'); + my $location = $query->param('location'); + my $startdate = format_date_in_iso( $query->param('startdate') ); + my $enddate = format_date_in_iso( $query->param('enddate') ); my $firstacquidate = format_date_in_iso($query->param('firstacquidate')); my $histenddate = format_date_in_iso($query->param('histenddate')); my $histstartdate = format_date_in_iso($query->param('histstartdate'));