X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FSerials.pm;h=75c9d7f19fd845204994e440f911acf79a5acef9;hb=eded6edacc5e3bf8dd0be21ed05842c3b78aadce;hp=e6eae860ff0219936abc10706d98c293be34b550;hpb=ac423d5dcf2c7503a8ca78cbafdb94dfc43dfdb6;p=koha-ffzg.git diff --git a/C4/Serials.pm b/C4/Serials.pm index e6eae860ff..75c9d7f19f 100644 --- a/C4/Serials.pm +++ b/C4/Serials.pm @@ -20,24 +20,29 @@ package C4::Serials; use Modern::Perl; -use C4::Auth qw(haspermission); +use C4::Auth qw( haspermission ); use C4::Context; use DateTime; -use Date::Calc qw(:all); -use POSIX qw(strftime); -use C4::Biblio; -use C4::Log; # logaction -use C4::Debug; -use C4::Serials::Frequency; +use Date::Calc qw( + Add_Delta_Days + Add_Delta_YM + check_date + Delta_Days + N_Delta_YMD + Today +); +use POSIX qw( strftime ); +use C4::Biblio qw( GetMarcFromKohaField ModBiblio ); +use C4::Log qw( logaction ); # logaction +use C4::Serials::Frequency qw( GetSubscriptionFrequency ); use C4::Serials::Numberpattern; use Koha::AdditionalFieldValues; -use Koha::DateUtils; +use Koha::Biblios; use Koha::Serial; use Koha::Subscriptions; use Koha::Subscription::Histories; use Koha::SharedContent; - -use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); +use Scalar::Util qw( looks_like_number ); # Define statuses use constant { @@ -61,31 +66,39 @@ use constant MISSING_STATUSES => ( MISSING_LOST ); +our (@ISA, @EXPORT_OK); BEGIN { require Exporter; @ISA = qw(Exporter); - @EXPORT = qw( - &NewSubscription &ModSubscription &DelSubscription - &GetSubscription &CountSubscriptionFromBiblionumber &GetSubscriptionsFromBiblionumber - &SearchSubscriptions - &GetFullSubscriptionsFromBiblionumber &GetFullSubscription &ModSubscriptionHistory - &HasSubscriptionStrictlyExpired &HasSubscriptionExpired &GetExpirationDate &abouttoexpire - &GetSubscriptionHistoryFromSubscriptionId - - &GetNextSeq &GetSeq &NewIssue &GetSerials - &GetLatestSerials &ModSerialStatus &GetNextDate &GetSerials2 - &ReNewSubscription &GetLateOrMissingIssues - &GetSerialInformation &AddItem2Serial - &PrepareSerialsData &GetNextExpected &ModNextExpected - &GetPreviousSerialid - - &GetSuppliersWithLateIssues - &getroutinglist &delroutingmember &addroutingmember - &reorder_members - &check_routing &updateClaim - &CountIssues + @EXPORT_OK = qw( + NewSubscription ModSubscription DelSubscription + GetSubscription CountSubscriptionFromBiblionumber GetSubscriptionsFromBiblionumber + SearchSubscriptions + GetFullSubscriptionsFromBiblionumber GetFullSubscription ModSubscriptionHistory + HasSubscriptionStrictlyExpired HasSubscriptionExpired GetExpirationDate abouttoexpire + GetFictiveIssueNumber + GetSubscriptionHistoryFromSubscriptionId + + GetNextSeq GetSeq NewIssue GetSerials + GetLatestSerials ModSerialStatus GetNextDate + CloseSubscription ReopenSubscription + subscriptionCurrentlyOnOrder + can_claim_subscription can_edit_subscription can_show_subscription + GetSerials2 + GetSubscriptionLength ReNewSubscription GetLateOrMissingIssues + GetSerialInformation AddItem2Serial + PrepareSerialsData GetNextExpected ModNextExpected + GetSubscriptionIrregularities + GetPreviousSerialid + + GetSuppliersWithLateIssues + getroutinglist delroutingmember addroutingmember + reorder_members + check_routing updateClaim + CountIssues HasItems - &subscriptionCurrentlyOnOrder + + findSerialsByStatus ); } @@ -196,7 +209,6 @@ sub GetSerialInformation { #It is ASSUMED that GetMarcItem ALWAYS WORK... #Maybe GetMarcItem should return values on failure - $debug and warn "itemnumber :$itemnum->[0], bibnum :" . $data->{'biblionumber'}; my $itemprocessed = C4::Items::PrepareItemrecordDisplay( $data->{'biblionumber'}, $itemnum->[0], $data ); $itemprocessed->{'itemnumber'} = $itemnum->[0]; $itemprocessed->{'itemid'} = $itemnum->[0]; @@ -257,6 +269,7 @@ sub GetSubscription { subscriptionhistory.*, aqbooksellers.name AS aqbooksellername, biblio.title AS bibliotitle, + biblio.subtitle AS bibliosubtitle, subscription.biblionumber as bibnum FROM subscription LEFT JOIN subscriptionhistory ON subscription.subscriptionid=subscriptionhistory.subscriptionid @@ -265,7 +278,6 @@ sub GetSubscription { WHERE subscription.subscriptionid = ? ); - $debug and warn "query : $query\nsubsid :$subscriptionid"; my $sth = $dbh->prepare($query); $sth->execute($subscriptionid); my $subscription = $sth->fetchrow_hashref; @@ -304,7 +316,7 @@ sub GetFullSubscription { serial.publisheddatetext, serial.status, serial.notes as notes, - year(IF(serial.publisheddate="00-00-0000",serial.planneddate,serial.publisheddate)) as year, + year(IF(serial.publisheddate IS NULL,serial.planneddate,serial.publisheddate)) as year, aqbooksellers.name as aqbooksellername, biblio.title as bibliotitle, subscription.branchcode AS branchcode, @@ -316,17 +328,19 @@ sub GetFullSubscription { LEFT JOIN biblio on biblio.biblionumber=subscription.biblionumber WHERE serial.subscriptionid = ? ORDER BY year DESC, - IF(serial.publisheddate="00-00-0000",serial.planneddate,serial.publisheddate) DESC, + IF(serial.publisheddate IS NULL,serial.planneddate,serial.publisheddate) DESC, serial.subscriptionid |; - $debug and warn "GetFullSubscription query: $query"; my $sth = $dbh->prepare($query); $sth->execute($subscriptionid); my $subscriptions = $sth->fetchall_arrayref( {} ); - my $cannotedit = not can_edit_subscription( $subscriptions->[0] ) if scalar @$subscriptions; - for my $subscription ( @$subscriptions ) { - $subscription->{cannotedit} = $cannotedit; + if (scalar @$subscriptions) { + my $cannotedit = not can_edit_subscription( $subscriptions->[0] ); + for my $subscription ( @$subscriptions ) { + $subscription->{cannotedit} = $cannotedit; + } } + return $subscriptions; } @@ -346,19 +360,10 @@ sub PrepareSerialsData { my $year; my @res; my $startdate; - my $aqbooksellername; - my $bibliotitle; - my @loopissues; my $first; my $previousnote = ""; foreach my $subs (@{$lines}) { - for my $datefield ( qw(publisheddate planneddate) ) { - # handle 0000-00-00 dates - if (defined $subs->{$datefield} and $subs->{$datefield} =~ m/^00/) { - $subs->{$datefield} = undef; - } - } $subs->{ "status" . $subs->{'status'} } = 1; if ( grep { $_ == $subs->{status} } ( EXPECTED, LATE, MISSING_STATUSES, CLAIMED ) ) { $subs->{"checked"} = 1; @@ -421,25 +426,11 @@ sub GetSubscriptionsFromBiblionumber { $sth->execute($biblionumber); my @res; while ( my $subs = $sth->fetchrow_hashref ) { - $subs->{startdate} = output_pref( { dt => dt_from_string( $subs->{startdate} ), dateonly => 1 } ); - $subs->{histstartdate} = output_pref( { dt => dt_from_string( $subs->{histstartdate} ), dateonly => 1 } ); - if ( defined $subs->{histenddate} ) { - $subs->{histenddate} = output_pref( { dt => dt_from_string( $subs->{histenddate} ), dateonly => 1 } ); - } else { - $subs->{histenddate} = ""; - } - $subs->{opacnote} =~ s/\n/\/g; - $subs->{missinglist} =~ s/\n/\/g; - $subs->{recievedlist} =~ s/\n/\/g; + $subs->{opacnote} //= ""; $subs->{ "periodicity" . $subs->{periodicity} } = 1; $subs->{ "numberpattern" . $subs->{numberpattern} } = 1; $subs->{ "status" . $subs->{'status'} } = 1; - if (not defined $subs->{enddate} ) { - $subs->{enddate} = ''; - } else { - $subs->{enddate} = output_pref( { dt => dt_from_string( $subs->{enddate}), dateonly => 1 } ); - } $subs->{'abouttoexpire'} = abouttoexpire( $subs->{'subscriptionid'} ); $subs->{'subscriptionexpired'} = HasSubscriptionExpired( $subs->{'subscriptionid'} ); $subs->{cannotedit} = not can_edit_subscription( $subs ); @@ -466,10 +457,11 @@ sub GetFullSubscriptionsFromBiblionumber { serial.publisheddatetext, serial.status, serial.notes as notes, - year(IF(serial.publisheddate="00-00-0000",serial.planneddate,serial.publisheddate)) as year, + year(IF(serial.publisheddate IS NULL,serial.planneddate,serial.publisheddate)) as year, biblio.title as bibliotitle, subscription.branchcode AS branchcode, - subscription.subscriptionid AS subscriptionid + subscription.subscriptionid AS subscriptionid, + subscription.location AS location FROM serial LEFT JOIN subscription ON (serial.subscriptionid=subscription.subscriptionid) @@ -477,16 +469,19 @@ sub GetFullSubscriptionsFromBiblionumber { LEFT JOIN biblio on biblio.biblionumber=subscription.biblionumber WHERE subscription.biblionumber = ? ORDER BY year DESC, - IF(serial.publisheddate="00-00-0000",serial.planneddate,serial.publisheddate) DESC, + IF(serial.publisheddate IS NULL,serial.planneddate,serial.publisheddate) DESC, serial.subscriptionid |; my $sth = $dbh->prepare($query); $sth->execute($biblionumber); my $subscriptions = $sth->fetchall_arrayref( {} ); - my $cannotedit = not can_edit_subscription( $subscriptions->[0] ) if scalar @$subscriptions; - for my $subscription ( @$subscriptions ) { - $subscription->{cannotedit} = $cannotedit; + if (scalar @$subscriptions) { + my $cannotedit = not can_edit_subscription( $subscriptions->[0] ); + for my $subscription ( @$subscriptions ) { + $subscription->{cannotedit} = $cannotedit; + } } + return $subscriptions; } @@ -522,7 +517,7 @@ sub SearchSubscriptions { my $additional_fields = $args->{additional_fields} // []; my $matching_record_ids_for_additional_fields = []; if ( @$additional_fields ) { - my @subscriptions = Koha::Subscriptions->filter_by_additional_fields($additional_fields); + my @subscriptions = Koha::Subscriptions->filter_by_additional_fields($additional_fields)->as_list; return () unless @subscriptions; @@ -538,6 +533,7 @@ sub SearchSubscriptions { subscription.*, biblio.notes AS biblionotes, biblio.title, + biblio.subtitle, biblio.author, biblio.biblionumber, aqbooksellers.name AS vendorname, @@ -662,19 +658,12 @@ sub GetSerials { publisheddatetext, planneddate,notes, routingnotes FROM serial WHERE subscriptionid = ? AND status NOT IN ( $statuses ) - ORDER BY IF(publisheddate<>'0000-00-00',publisheddate,planneddate) DESC"; + ORDER BY IF(publisheddate IS NULL,planneddate,publisheddate) DESC"; my $sth = $dbh->prepare($query); $sth->execute($subscriptionid); while ( my $line = $sth->fetchrow_hashref ) { $line->{ "status" . $line->{status} } = 1; # fills a "statusX" value, used for template status select list - for my $datefield ( qw( planneddate publisheddate) ) { - if ($line->{$datefield} && $line->{$datefield}!~m/^00/) { - $line->{$datefield} = output_pref( { dt => dt_from_string( $line->{$datefield} ), dateonly => 1 } ); - } else { - $line->{$datefield} = q{}; - } - } push @serials, $line; } @@ -684,20 +673,13 @@ sub GetSerials { FROM serial WHERE subscriptionid = ? AND status IN ( $statuses ) - ORDER BY IF(publisheddate<>'0000-00-00',publisheddate,planneddate) DESC + ORDER BY IF(publisheddate IS NULL,planneddate,publisheddate) DESC "; $sth = $dbh->prepare($query); $sth->execute($subscriptionid); while ( ( my $line = $sth->fetchrow_hashref ) && $counter < $count ) { $counter++; $line->{ "status" . $line->{status} } = 1; # fills a "statusX" value, used for template status select list - for my $datefield ( qw( planneddate publisheddate) ) { - if ($line->{$datefield} && $line->{$datefield}!~m/^00/) { - $line->{$datefield} = output_pref( { dt => dt_from_string( $line->{$datefield} ), dateonly => 1 } ); - } else { - $line->{$datefield} = q{}; - } - } push @serials, $line; } @@ -736,22 +718,12 @@ sub GetSerials2 { . q| ORDER BY publisheddate,serialid DESC |; - $debug and warn "GetSerials2 query: $query"; my $sth = $dbh->prepare($query); $sth->execute( $subscription, @$statuses ); my @serials; while ( my $line = $sth->fetchrow_hashref ) { $line->{ "status" . $line->{status} } = 1; # fills a "statusX" value, used for template status select list - # Format dates for display - for my $datefield ( qw( planneddate publisheddate ) ) { - if (!defined($line->{$datefield}) || $line->{$datefield} =~m/^00/) { - $line->{$datefield} = q{}; - } - else { - $line->{$datefield} = output_pref( { dt => dt_from_string( $line->{$datefield} ), dateonly => 1 } ); - } - } push @serials, $line; } return @serials; @@ -1120,19 +1092,16 @@ sub ModSerialStatus { my ( $missinglist, $recievedlist ) = $sth->fetchrow; if ( $status == ARRIVED || ($oldstatus == ARRIVED && $status != ARRIVED) ) { - $recievedlist .= "; $serialseq" - if ($recievedlist !~ /(^|;)\s*$serialseq(?=;|$)/); + $recievedlist = _handle_seqno($serialseq, $recievedlist); } # in case serial has been previously marked as missing if (grep /$status/, (EXPECTED, ARRIVED, LATE, CLAIMED)) { - $missinglist=~ s/(^|;)\s*$serialseq(?=;|$)//g; + $missinglist = _handle_seqno($serialseq, $missinglist, 'REMOVE'); } - $missinglist .= "; $serialseq" - if ( ( grep { $_ == $status } ( MISSING_STATUSES ) ) && ( $missinglist !~/(^|;)\s*$serialseq(?=;|$)/ ) ); - $missinglist .= "; not issued $serialseq" - if ( $status == NOT_ISSUED && $missinglist !~ /(^|;)\s*$serialseq(?=;|$)/ ); + $missinglist = _handle_seqno($serialseq, $missinglist) if grep { $_ == $status } MISSING_STATUSES; + $missinglist .= "; not issued $serialseq" if $status == NOT_ISSUED and not _handle_seqno($serialseq, $missinglist, 'CHECK'); $query = "UPDATE subscriptionhistory SET recievedlist=?, missinglist=? WHERE subscriptionid=?"; $sth = $dbh->prepare($query); @@ -1163,7 +1132,8 @@ sub ModSerialStatus { WHERE subscriptionid = ?"; $sth = $dbh->prepare($query); $sth->execute( $newlastvalue1, $newlastvalue2, $newlastvalue3, $newinnerloop1, $newinnerloop2, $newinnerloop3, $subscriptionid ); - NewIssue( $newserialseq, $subscriptionid, $subscription->{'biblionumber'}, 1, $nextpubdate, $nextpubdate, undef, $notes, $routingnotes ); + my $newnote = C4::Context->preference('PreserveSerialNotes') ? $notes : ""; + NewIssue( $newserialseq, $subscriptionid, $subscription->{'biblionumber'}, 1, $nextpubdate, $nextpubdate, undef, $newnote, $routingnotes ); # check if an alert must be sent... (= a letter is defined & status became "arrived" if ( $subscription->{letter} && $status == ARRIVED && $oldstatus != ARRIVED ) { require C4::Letters; @@ -1174,6 +1144,24 @@ sub ModSerialStatus { return; } +sub _handle_seqno { +# Adds or removes seqno from list when needed; returns list +# Or checks and returns true when present + + my ( $seq, $list, $op ) = @_; # op = ADD | REMOVE | CHECK (default: ADD) + my $seq_r = $seq; + $seq_r =~ s/([()])/\\$1/g; # Adjust disturbing parentheses for regex, maybe extend in future + + if( !$op or $op eq 'ADD' ) { + $list .= "; $seq" if $list !~ /(^|;)\s*$seq_r(?=;|$)/; + } elsif( $op eq 'REMOVE' ) { + $list=~ s/(^|;)\s*(not issued )?$seq_r(?=;|$)//g; + } else { # CHECK + return $list =~ /(^|;)\s*$seq_r(?=;|$)/ ? 1 : q{}; + } + return $list; +} + =head2 GetNextExpected $nextexpected = GetNextExpected($subscriptionid) @@ -1218,13 +1206,8 @@ sub GetNextExpected { $nextissue = $sth->fetchrow_hashref; } foreach(qw/planneddate publisheddate/) { - if ( !defined $nextissue->{$_} ) { - # or should this default to 1st Jan ??? - $nextissue->{$_} = strftime( '%Y-%m-%d', localtime ); - } - $nextissue->{$_} = ($nextissue->{$_} ne '0000-00-00') - ? $nextissue->{$_} - : undef; + # or should this default to 1st Jan ??? + $nextissue->{$_} //= strftime( '%Y-%m-%d', localtime ); } return $nextissue; @@ -1303,40 +1286,60 @@ sub ModSubscription { $biblionumber, $callnumber, $notes, $letter, $manualhistory, $internalnotes, $serialsadditems, $staffdisplaycount, $opacdisplaycount, $graceperiod, $location, $enddate, $subscriptionid, $skip_serialseq, - $itemtype, $previousitemtype, $mana_id + $itemtype, $previousitemtype, $mana_id, $ccode ) = @_; - my $dbh = C4::Context->dbh; - my $query = "UPDATE subscription - SET librarian=?, branchcode=?, aqbooksellerid=?, cost=?, aqbudgetid=?, - startdate=?, periodicity=?, firstacquidate=?, irregularity=?, - numberpattern=?, locale=?, numberlength=?, weeklength=?, monthlength=?, - lastvalue1=?, innerloop1=?, lastvalue2=?, innerloop2=?, - lastvalue3=?, innerloop3=?, status=?, biblionumber=?, - callnumber=?, notes=?, letter=?, manualhistory=?, - internalnotes=?, serialsadditems=?, staffdisplaycount=?, - opacdisplaycount=?, graceperiod=?, location = ?, enddate=?, - skip_serialseq=?, itemtype=?, previousitemtype=?, mana_id=? - WHERE subscriptionid = ?"; - - my $sth = $dbh->prepare($query); - $sth->execute( - $auser, $branchcode, $aqbooksellerid, $cost, - $aqbudgetid, $startdate, $periodicity, $firstacquidate, - $irregularity, $numberpattern, $locale, $numberlength, - $weeklength, $monthlength, $lastvalue1, $innerloop1, - $lastvalue2, $innerloop2, $lastvalue3, $innerloop3, - $status, $biblionumber, $callnumber, $notes, - $letter, ($manualhistory ? $manualhistory : 0), - $internalnotes, $serialsadditems, $staffdisplaycount, $opacdisplaycount, - $graceperiod, $location, $enddate, $skip_serialseq, - $itemtype, $previousitemtype, $mana_id, - $subscriptionid - ); - my $rows = $sth->rows; + my $subscription = Koha::Subscriptions->find($subscriptionid); + $subscription->set( + { + librarian => $auser, + branchcode => $branchcode, + aqbooksellerid => $aqbooksellerid, + cost => $cost, + aqbudgetid => $aqbudgetid, + biblionumber => $biblionumber, + startdate => $startdate, + periodicity => $periodicity, + numberlength => $numberlength, + weeklength => $weeklength, + monthlength => $monthlength, + lastvalue1 => $lastvalue1, + innerloop1 => $innerloop1, + lastvalue2 => $lastvalue2, + innerloop2 => $innerloop2, + lastvalue3 => $lastvalue3, + innerloop3 => $innerloop3, + status => $status, + notes => $notes, + letter => $letter, + firstacquidate => $firstacquidate, + irregularity => $irregularity, + numberpattern => $numberpattern, + locale => $locale, + callnumber => $callnumber, + manualhistory => $manualhistory, + internalnotes => $internalnotes, + serialsadditems => $serialsadditems, + staffdisplaycount => $staffdisplaycount, + opacdisplaycount => $opacdisplaycount, + graceperiod => $graceperiod, + location => $location, + enddate => $enddate, + skip_serialseq => $skip_serialseq, + itemtype => $itemtype, + previousitemtype => $previousitemtype, + mana_id => $mana_id, + ccode => $ccode, + } + )->store; + # FIXME Must be $subscription->serials + # FIXME We shouldn't need serial.subscription (instead use serial->subscription->biblionumber) + Koha::Serials->search({ subscriptionid => $subscriptionid })->update({ biblionumber => $biblionumber }); logaction( "SERIAL", "MODIFY", $subscriptionid, "" ) if C4::Context->preference("SubscriptionLog"); - return $rows; + + $subscription->discard_changes; + return $subscription; } =head2 NewSubscription @@ -1364,7 +1367,7 @@ sub NewSubscription { $innerloop3, $status, $notes, $letter, $firstacquidate, $irregularity, $numberpattern, $locale, $callnumber, $manualhistory, $internalnotes, $serialsadditems, $staffdisplaycount, $opacdisplaycount, $graceperiod, - $location, $enddate, $skip_serialseq, $itemtype, $previousitemtype, $mana_id + $location, $enddate, $skip_serialseq, $itemtype, $previousitemtype, $mana_id, $ccode ) = @_; my $dbh = C4::Context->dbh; @@ -1407,6 +1410,7 @@ sub NewSubscription { itemtype => $itemtype, previousitemtype => $previousitemtype, mana_id => $mana_id, + ccode => $ccode } )->store; $subscription->discard_changes; @@ -1458,8 +1462,8 @@ sub NewSubscription { #set serial flag on biblio if not already set. my $biblio = Koha::Biblios->find( $biblionumber ); if ( $biblio and !$biblio->serial ) { - my $record = GetMarcBiblio({ biblionumber => $biblionumber }); - my ( $tag, $subf ) = GetMarcFromKohaField( 'biblio.serial', $biblio->frameworkcode ); + my $record = $biblio->metadata->record; + my ( $tag, $subf ) = GetMarcFromKohaField( 'biblio.serial' ); if ($tag) { eval { $record->field($tag)->update( $subf => 1 ); }; } @@ -1468,16 +1472,49 @@ sub NewSubscription { return $subscriptionid; } +=head2 GetSubscriptionLength + +my ($numberlength, $weeklength, $monthlength) = GetSubscriptionLength( $subtype, $sublength ); + +This function calculates the subscription length. + +=cut + +sub GetSubscriptionLength { + my ($subtype, $length) = @_; + + return unless looks_like_number($length); + + return + ( + $subtype eq 'issues' ? $length : 0, + $subtype eq 'weeks' ? $length : 0, + $subtype eq 'months' ? $length : 0, + ); +} + + =head2 ReNewSubscription -ReNewSubscription($subscriptionid,$user,$startdate,$numberlength,$weeklength,$monthlength,$note) +ReNewSubscription($params); + +$params is a hashref with the following keys: subscriptionid, user, startdate, numberlength, weeklength, monthlength, note, branchcode this function renew a subscription with values given on input args. =cut sub ReNewSubscription { - my ( $subscriptionid, $user, $startdate, $numberlength, $weeklength, $monthlength, $note ) = @_; + my ( $params ) = @_; + my $subscriptionid = $params->{subscriptionid}; + my $user = $params->{user}; + my $startdate = $params->{startdate}; + my $numberlength = $params->{numberlength}; + my $weeklength = $params->{weeklength}; + my $monthlength = $params->{monthlength}; + my $note = $params->{note}; + my $branchcode = $params->{branchcode}; + my $dbh = C4::Context->dbh; my $subscription = GetSubscription($subscriptionid); my $query = qq| @@ -1497,8 +1534,9 @@ sub ReNewSubscription { 'title' => $subscription->{bibliotitle}, 'author' => $biblio->{author}, 'publishercode' => $biblio->{publishercode}, - 'note' => $biblio->{note}, - 'biblionumber' => $subscription->{biblionumber} + 'note' => $note, + 'biblionumber' => $subscription->{biblionumber}, + 'branchcode' => $branchcode, } ); } @@ -1515,7 +1553,6 @@ sub ReNewSubscription { $sth = $dbh->prepare($query); $sth->execute( $startdate, $numberlength, $weeklength, $monthlength, $subscriptionid ); my $enddate = GetExpirationDate($subscriptionid); - $debug && warn "enddate :$enddate"; $query = qq| UPDATE subscription SET enddate=? @@ -1578,7 +1615,7 @@ sub NewIssue { ### Would use substr and index But be careful to previous presence of () $recievedlist .= "; $serialseq" unless ( index( $recievedlist, $serialseq ) > 0 ); } - if ( grep { /^$status$/ } (MISSING_STATUSES) ) { + if ( grep { $_ eq $status } (MISSING_STATUSES) ) { $missinglist .= "; $serialseq" unless ( index( $missinglist, $serialseq ) > 0 ); } @@ -1704,8 +1741,6 @@ sub DelSubscription { my ($subscriptionid) = @_; my $dbh = C4::Context->dbh; $dbh->do("DELETE FROM subscription WHERE subscriptionid=?", undef, $subscriptionid); - $dbh->do("DELETE FROM subscriptionhistory WHERE subscriptionid=?", undef, $subscriptionid); - $dbh->do("DELETE FROM serial WHERE subscriptionid=?", undef, $subscriptionid); Koha::AdditionalFieldValues->search({ 'field.tablename' => 'subscription', @@ -1797,7 +1832,7 @@ sub GetLateOrMissingIssues { serialid, aqbooksellerid, name, biblio.title, biblioitems.issn, planneddate, serialseq, serial.status, serial.subscriptionid, claimdate, claims_count, - subscription.branchcode + subscription.branchcode, serial.publisheddate FROM serial LEFT JOIN subscription ON serial.subscriptionid=subscription.subscriptionid LEFT JOIN biblio ON subscription.biblionumber=biblio.biblionumber @@ -1815,7 +1850,7 @@ sub GetLateOrMissingIssues { serialid, aqbooksellerid, name, biblio.title, planneddate, serialseq, serial.status, serial.subscriptionid, claimdate, claims_count, - subscription.branchcode + subscription.branchcode, serial.publisheddate FROM serial LEFT JOIN subscription ON serial.subscriptionid=subscription.subscriptionid LEFT JOIN biblio ON subscription.biblionumber=biblio.biblionumber @@ -1829,15 +1864,6 @@ sub GetLateOrMissingIssues { $sth->execute( EXPECTED, LATE, CLAIMED ); my @issuelist; while ( my $line = $sth->fetchrow_hashref ) { - - if ($line->{planneddate} && $line->{planneddate} !~/^0+\-/) { - $line->{planneddateISO} = $line->{planneddate}; - $line->{planneddate} = output_pref( { dt => dt_from_string( $line->{"planneddate"} ), dateonly => 1 } ); - } - if ($line->{claimdate} && $line->{claimdate} !~/^0+\-/) { - $line->{claimdateISO} = $line->{claimdate}; - $line->{claimdate} = output_pref( { dt => dt_from_string( $line->{"claimdate"} ), dateonly => 1 } ); - } $line->{"status".$line->{status}} = 1; my $subscription_object = Koha::Subscriptions->find($line->{subscriptionid}); @@ -2133,7 +2159,7 @@ sub abouttoexpire { } } - } elsif ($subscription->{numberlength}>0) { + } elsif ( $subscription->{numberlength} && $subscription->{numberlength}>0) { return (countissuesfrom($subscriptionid,$subscription->{'startdate'}) >=$subscription->{numberlength}-1); } @@ -2445,7 +2471,7 @@ sub _numeration { locale => $locale, ); $string = $num_type =~ /^monthname$/ - ? $dt->strftime("%B") + ? $dt->format_cldr( "LLLL" ) : $dt->strftime("%b"); } elsif ( $num_type =~ /^season$/ ) { my @seasons= qw( Spring Summer Fall Winter );