From b0b0dcc917fedf865f3f933d615b6faf764a5a72 Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Wed, 6 Mar 2013 13:43:27 -0500 Subject: [PATCH] Bug 8956 - Split serials enumeration data into separate fields - Part 6 - Perltidy serials/subscription-add.pl --- serials/subscription-add.pl | 438 +++++++++++++++++++++++++------------------ 1 files changed, 251 insertions(+), 187 deletions(-) diff --git a/serials/subscription-add.pl b/serials/subscription-add.pl index 1959b23..6d7b44a 100755 --- a/serials/subscription-add.pl +++ b/serials/subscription-add.pl @@ -27,7 +27,7 @@ use C4::Dates qw/format_date format_date_in_iso/; use C4::Acquisition; use C4::Output; use C4::Context; -use C4::Branch; # GetBranches +use C4::Branch; # GetBranches use C4::Serials; use C4::Letters; use Carp; @@ -43,78 +43,87 @@ 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 => $permission}, - debug => 1, - }); - +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 => $permission }, + debug => 1, + } +); my $sub_on; -my @subscription_types = ( - 'issues', 'weeks', 'months' - ); +my @subscription_types = ( 'issues', 'weeks', 'months' ); my @sub_type_data; my $subs; our $firstissuedate; -if ($op eq 'modify' || $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 '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"); + 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" + ); } - $firstissuedate = $subs->{firstacquidate} || ''; # in iso format. + $firstissuedate = $subs->{firstacquidate} || ''; # in iso format. for (qw(startdate firstacquidate histstartdate enddate histenddate)) { next unless defined $subs->{$_}; - # TODO : Handle date formats properly. - if ($subs->{$_} eq '0000-00-00') { - $subs->{$_} = '' - } else { - $subs->{$_} = format_date($subs->{$_}); + + # TODO : Handle date formats properly. + if ( $subs->{$_} eq '0000-00-00' ) { + $subs->{$_} = ''; } - } - if (!defined $subs->{letter}) { - $subs->{letter}= q{}; - } - letter_loop($subs->{'letter'}, $template); + else { + $subs->{$_} = format_date( $subs->{$_} ); + } + } + if ( !defined $subs->{letter} ) { + $subs->{letter} = q{}; + } + letter_loop( $subs->{'letter'}, $template ); my $nextexpected = GetNextExpected($subscriptionid); - $nextexpected->{'isfirstissue'} = $nextexpected->{planneddate}->output('iso') eq $firstissuedate ; - $subs->{nextacquidate} = $nextexpected->{planneddate}->output() if($op eq 'modify'); - unless($op eq 'modsubscription') { + $nextexpected->{'isfirstissue'} = + $nextexpected->{planneddate}->output('iso') eq $firstissuedate; + $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}){ - $sub_length=$subs->{$length_unit}; - $sub_on=$length_unit; - last; - } - } + if ( $subs->{$length_unit} ) { + $sub_length = $subs->{$length_unit}; + $sub_on = $length_unit; + last; + } + } $template->param( %{$subs} ); - $template->param("dow".$subs->{'dow'} => 1) if defined $subs->{'dow'}; + $template->param( "dow" . $subs->{'dow'} => 1 ) + if defined $subs->{'dow'}; $template->param( - $op => 1, - "subtype_$sub_on" => 1, - sublength =>$sub_length, - history => ($op eq 'modify'), - "periodicity".$subs->{'periodicity'} => 1, - "numberpattern".$subs->{'numberpattern'} => 1, - firstacquiyear => substr($firstissuedate,0,4), - ); + $op => 1, + "subtype_$sub_on" => 1, + sublength => $sub_length, + 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 $dont_copy_fields = + C4::Context->preference('SubscriptionDuplicateDroppedInput'); my @fields_id = map { fieldid => $_ }, split '\|', $dont_copy_fields; $template->param( dont_export_field_loop => \@fields_id ); } @@ -126,80 +135,90 @@ my $onlymine=C4::Context->preference('IndependentBranches') && C4::Context->userenv->{branch}; my $branches = GetBranches($onlymine); my $branchloop; -for my $thisbranch (sort { $branches->{$a}->{branchname} cmp $branches->{$b}->{branchname} } keys %{$branches}) { +for my $thisbranch ( + sort { $branches->{$a}->{branchname} cmp $branches->{$b}->{branchname} } + keys %{$branches} ) +{ my $selected = 0; - $selected = 1 if (defined($subs) && $thisbranch eq $subs->{'branchcode'}); - push @{$branchloop}, { - value => $thisbranch, - selected => $selected, + $selected = 1 if ( defined($subs) && $thisbranch eq $subs->{'branchcode'} ); + push @{$branchloop}, + { + value => $thisbranch, + selected => $selected, branchname => $branches->{$thisbranch}->{'branchname'}, - }; + }; } -my $locations_loop = GetAuthorisedValues("LOC",$subs->{'location'}); +my $locations_loop = GetAuthorisedValues( "LOC", $subs->{'location'} ); -$template->param(branchloop => $branchloop, - locations_loop=>$locations_loop, +$template->param( + branchloop => $branchloop, + locations_loop => $locations_loop, ); + # prepare template variables common to all $op conditions: -if ($op!~/^mod/) { - letter_loop(q{}, $template); +if ( $op !~ /^mod/ ) { + letter_loop( q{}, $template ); } -if ($op eq 'addsubscription') { +if ( $op eq 'addsubscription' ) { redirect_add_subscription(); -} elsif ($op eq 'modsubscription') { +} +elsif ( $op eq 'modsubscription' ) { redirect_mod_subscription(); -} else { - while (@subscription_types) { - my $sub_type = shift @subscription_types; - my %row = ( 'name' => $sub_type ); - if ( defined $sub_on and $sub_on eq $sub_type ) { - $row{'selected'} = ' selected'; - } else { - $row{'selected'} = ''; - } - push( @sub_type_data, \%row ); +} +else { + while (@subscription_types) { + my $sub_type = shift @subscription_types; + my %row = ( 'name' => $sub_type ); + if ( defined $sub_on and $sub_on eq $sub_type ) { + $row{'selected'} = ' selected'; } - $template->param(subtype => \@sub_type_data); + else { + $row{'selected'} = ''; + } + push( @sub_type_data, \%row ); + } + $template->param( subtype => \@sub_type_data ); - letter_loop( '', $template ) if ($op ne 'modsubscription' && $op ne 'dup' && $op ne 'modify'); + 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) { + if ( defined $new_biblionumber ) { my $bib = GetBiblioData($new_biblionumber); - if (defined $bib) { - $template->param(bibnum => $new_biblionumber); - $template->param(bibliotitle => $bib->{title}); + if ( defined $bib ) { + $template->param( bibnum => $new_biblionumber ); + $template->param( bibliotitle => $bib->{title} ); } } - $template->param((uc(C4::Context->preference("marcflavour"))) => 1); - output_html_with_http_headers $query, $cookie, $template->output; + $template->param( ( uc( C4::Context->preference("marcflavour") ) ) => 1 ); + output_html_with_http_headers $query, $cookie, $template->output; } sub letter_loop { - my ($selected_letter, $templte) = @_; + my ( $selected_letter, $templte ) = @_; my $letters = GetLetters('serial'); my $letterloop; - foreach my $thisletter (keys %{$letters}) { - push @{$letterloop}, { - value => $thisletter, - selected => $thisletter eq $selected_letter, + foreach my $thisletter ( keys %{$letters} ) { + push @{$letterloop}, + { + value => $thisletter, + selected => $thisletter eq $selected_letter, lettername => $letters->{$thisletter}, - }; + }; } - $templte->param(letterloop => $letterloop); + $templte->param( letterloop => $letterloop ); return; } sub _get_sub_length { - my ($type, $length) = @_; - return - ( - $type eq 'numberlength' ? $length : 0, - $type eq 'weeklength' ? $length : 0, - $type eq 'monthlength' ? $length : 0, - ); + my ( $type, $length ) = @_; + return ( + $type eq 'numberlength' ? $length : 0, + $type eq 'weeklength' ? $length : 0, + $type eq 'monthlength' ? $length : 0, + ); } sub redirect_add_subscription { @@ -214,8 +233,8 @@ sub redirect_add_subscription { my $numberpattern = $query->param('numbering_pattern'); my $graceperiod = $query->param('graceperiod') || 0; - my ( $numberlength, $weeklength, $monthlength ) - = _get_sub_length( $query->param('subtype'), $query->param('sublength') ); + 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'); @@ -247,111 +266,156 @@ sub redirect_add_subscription { 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')); - my $recievedlist = $query->param('recievedlist'); - my $missinglist = $query->param('missinglist'); - my $opacnote = $query->param('opacnote'); - my $librariannote = $query->param('librariannote'); - my $subscriptionid = NewSubscription($auser,$branchcode,$aqbooksellerid,$cost,$aqbudgetid,$biblionumber, - $startdate,$periodicity,$dow,$numberlength,$weeklength,$monthlength, - $add1,$every1,$whenmorethan1,$setto1,$lastvalue1,$innerloop1, - $add2,$every2,$whenmorethan2,$setto2,$lastvalue2,$innerloop2, - $add3,$every3,$whenmorethan3,$setto3,$lastvalue3,$innerloop3, - $numberingmethod, $status, $notes,$letter,$firstacquidate,join(",",@irregularity), - $numberpattern, $callnumber, $hemisphere,($manualhistory?$manualhistory:0),$internalnotes, - $serialsadditems,$staffdisplaycount,$opacdisplaycount,$graceperiod,$location,$enddate - ); - ModSubscriptionHistory ($subscriptionid,$histstartdate,$histenddate,$recievedlist,$missinglist,$opacnote,$librariannote); - - print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid"); + 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') ); + my $recievedlist = $query->param('recievedlist'); + my $missinglist = $query->param('missinglist'); + my $opacnote = $query->param('opacnote'); + my $librariannote = $query->param('librariannote'); + my $subscriptionid = NewSubscription( + $auser, $branchcode, + $aqbooksellerid, $cost, + $aqbudgetid, $biblionumber, + $startdate, $periodicity, + $dow, $numberlength, + $weeklength, $monthlength, + $add1, $every1, + $whenmorethan1, $setto1, + $lastvalue1, $innerloop1, + $add2, $every2, + $whenmorethan2, $setto2, + $lastvalue2, $innerloop2, + $add3, $every3, + $whenmorethan3, $setto3, + $lastvalue3, $innerloop3, + $numberingmethod, $status, + $notes, $letter, + $firstacquidate, join( ",", @irregularity ), + $numberpattern, $callnumber, + $hemisphere, ( $manualhistory ? $manualhistory : 0 ), + $internalnotes, $serialsadditems, + $staffdisplaycount, $opacdisplaycount, + $graceperiod, $location, + $enddate + ); + ModSubscriptionHistory( + $subscriptionid, $histstartdate, $histenddate, $recievedlist, + $missinglist, $opacnote, $librariannote + ); + + print $query->redirect( +"/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid" + ); return; } sub redirect_mod_subscription { my $subscriptionid = $query->param('subscriptionid'); - my @irregularity = $query->param('irregularity_select'); - my $auser = $query->param('user'); + my @irregularity = $query->param('irregularity_select'); + my $auser = $query->param('user'); my $librarian => $query->param('librarian'), - my $branchcode = $query->param('branchcode'); - my $cost = $query->param('cost'); + my $branchcode = $query->param('branchcode'); + my $cost = $query->param('cost'); my $aqbooksellerid = $query->param('aqbooksellerid'); - my $biblionumber = $query->param('biblionumber'); - my $aqbudgetid = $query->param('aqbudgetid'); - my $startdate = format_date_in_iso($query->param('startdate')); - my $nextacquidate = $query->param('nextacquidate') ? - format_date_in_iso($query->param('nextacquidate')): - format_date_in_iso($query->param('startdate')); - my $enddate = format_date_in_iso($query->param('enddate')); + my $biblionumber = $query->param('biblionumber'); + my $aqbudgetid = $query->param('aqbudgetid'); + my $startdate = format_date_in_iso( $query->param('startdate') ); + my $nextacquidate = + $query->param('nextacquidate') + ? format_date_in_iso( $query->param('nextacquidate') ) + : format_date_in_iso( $query->param('startdate') ); + my $enddate = format_date_in_iso( $query->param('enddate') ); my $periodicity = $query->param('periodicity'); - my $dow = $query->param('dow'); - - my ($numberlength, $weeklength, $monthlength) - = _get_sub_length( $query->param('subtype'), $query->param('sublength') ); - my $numberpattern = $query->param('numbering_pattern'); - 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 $lastvalue2 = $query->param('lastvalue2'); - my $innerloop2 = $query->param('innerloop2'); - 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 $dow = $query->param('dow'); + + my ( $numberlength, $weeklength, $monthlength ) = + _get_sub_length( $query->param('subtype'), $query->param('sublength') ); + my $numberpattern = $query->param('numbering_pattern'); + 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 $lastvalue2 = $query->param('lastvalue2'); + my $innerloop2 = $query->param('innerloop2'); + 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 $callnumber = $query->param('callnumber'); - my $notes = $query->param('notes'); - my $internalnotes = $query->param('internalnotes'); - my $hemisphere = $query->param('hemisphere'); - my $letter = $query->param('letter'); - my $manualhistory = $query->param('manualhist'); + my $status = 1; + my $callnumber = $query->param('callnumber'); + my $notes = $query->param('notes'); + my $internalnotes = $query->param('internalnotes'); + my $hemisphere = $query->param('hemisphere'); + my $letter = $query->param('letter'); + my $manualhistory = $query->param('manualhist'); my $serialsadditems = $query->param('serialsadditems'); + # subscription history - my $histenddate = format_date_in_iso($query->param('histenddate')); - my $histstartdate = format_date_in_iso($query->param('histstartdate')); - my $recievedlist = $query->param('recievedlist'); - my $missinglist = $query->param('missinglist'); - my $opacnote = $query->param('opacnote'); + my $histenddate = format_date_in_iso( $query->param('histenddate') ); + my $histstartdate = format_date_in_iso( $query->param('histstartdate') ); + my $recievedlist = $query->param('recievedlist'); + my $missinglist = $query->param('missinglist'); + my $opacnote = $query->param('opacnote'); my $librariannote = $query->param('librariannote'); - my $staffdisplaycount = $query->param('staffdisplaycount'); - 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. + my $staffdisplaycount = $query->param('staffdisplaycount'); + 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')); - # if we have not received any issues yet, then we also must change the firstacquidate for the subs. - $firstissuedate = $nextacquidate if($nextexpected->{isfirstissue}); + ModNextExpected( $subscriptionid, + C4::Dates->new( $nextacquidate, 'iso' ) ); + +# if we have not received any issues yet, then we also must change the firstacquidate for the subs. + $firstissuedate = $nextacquidate if ( $nextexpected->{isfirstissue} ); } - ModSubscription( - $auser, $branchcode, $aqbooksellerid, $cost, - $aqbudgetid, $startdate, $periodicity, $firstissuedate, - $dow, join(q{,},@irregularity), $numberpattern, $numberlength, - $weeklength, $monthlength, $add1, $every1, - $whenmorethan1, $setto1, $lastvalue1, $innerloop1, - $add2, $every2, $whenmorethan2, $setto2, - $lastvalue2, $innerloop2, $add3, $every3, - $whenmorethan3, $setto3, $lastvalue3, $innerloop3, - $numberingmethod, $status, $biblionumber, $callnumber, - $notes, $letter, $hemisphere, $manualhistory,$internalnotes, - $serialsadditems, $staffdisplaycount,$opacdisplaycount,$graceperiod,$location,$enddate,$subscriptionid - ); - ModSubscriptionHistory ($subscriptionid,$histstartdate,$histenddate,$recievedlist,$missinglist,$opacnote,$librariannote); - print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid"); + ModSubscription( + $auser, $branchcode, + $aqbooksellerid, $cost, + $aqbudgetid, $startdate, + $periodicity, $firstissuedate, + $dow, join( q{,}, @irregularity ), + $numberpattern, $numberlength, + $weeklength, $monthlength, + $add1, $every1, + $whenmorethan1, $setto1, + $lastvalue1, $innerloop1, + $add2, $every2, + $whenmorethan2, $setto2, + $lastvalue2, $innerloop2, + $add3, $every3, + $whenmorethan3, $setto3, + $lastvalue3, $innerloop3, + $numberingmethod, $status, + $biblionumber, $callnumber, + $notes, $letter, + $hemisphere, $manualhistory, + $internalnotes, $serialsadditems, + $staffdisplaycount, $opacdisplaycount, + $graceperiod, $location, + $enddate, $subscriptionid + ); + ModSubscriptionHistory( + $subscriptionid, $histstartdate, $histenddate, $recievedlist, + $missinglist, $opacnote, $librariannote + ); + print $query->redirect( +"/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid" + ); return; } -- 1.7.2.5