X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=serials%2Fsubscription-add.pl;h=0a33875f7db690f62ec368a2afdd4118676a8e68;hb=cfa444d583e93b880ee4eaa4311524de2c24b963;hp=143cf88d8930248bda88306305781657770e66d3;hpb=07ae6c6cd629abd6befe095cb7c9e3540d07f8df;p=koha_gimpoz diff --git a/serials/subscription-add.pl b/serials/subscription-add.pl index 143cf88d89..0a33875f7d 100755 --- a/serials/subscription-add.pl +++ b/serials/subscription-add.pl @@ -34,7 +34,7 @@ use Carp; #use Smart::Comments; -my $query = CGI->new; +our $query = CGI->new; my $op = $query->param('op') || ''; my $dbh = C4::Context->dbh; my $sub_length; @@ -43,7 +43,7 @@ my @budgets; # Permission needed if it is a modification : edit_subscription # Permission needed otherwise (nothing or dup) : create_subscription -my $permission = ($op eq "mod") ? "edit_subscription" : "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", @@ -64,14 +64,13 @@ my @sub_type_data; 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"); } @@ -89,9 +88,9 @@ if ($op eq 'mod' || $op eq 'dup' || $op eq 'modsubscription') { $subs->{letter}= q{}; } letter_loop($subs->{'letter'}, $template); - $nextexpected = GetNextExpected($subscriptionid); + my $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}){ @@ -101,18 +100,24 @@ 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), ); } + + if ( $op eq 'dup' ) { + my $dont_copy_fields = C4::Context->preference('SubscriptionDuplicateDroppedInput'); + my @fields_id = map { fieldid => $_ }, split '\|', $dont_copy_fields; + $template->param( dont_export_field_loop => \@fields_id ); + } } my $onlymine=C4::Context->preference('IndependantBranches') && @@ -130,8 +135,12 @@ 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, ); # prepare template variables common to all $op conditions: $template->param( 'dateformat_' . C4::Context->preference('dateformat') => 1 ); @@ -156,6 +165,7 @@ if ($op eq 'addsubscription') { } $template->param(subtype => \@sub_type_data); + 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) { @@ -194,52 +204,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')); @@ -321,6 +331,7 @@ sub redirect_mod_subscription { my $opacdisplaycount = $query->param('opacdisplaycount'); my $graceperiod = $query->param('graceperiod') || 0; my $location = $query->param('location'); + my $nextexpected = GetNextExpected($subscriptionid); # If it's a mod, we need to check the current 'expected' issue, and mod it in the serials table if necessary. if ( $nextacquidate ne $nextexpected->{planneddate}->output('iso') ) { ModNextExpected($subscriptionid,C4::Dates->new($nextacquidate,'iso'));