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( GetMarcBiblio 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::DateUtils qw( dt_from_string output_pref );
use Koha::Serial;
use Koha::Subscriptions;
use Koha::Subscription::Histories;
use Koha::SharedContent;
use Scalar::Util qw( looks_like_number );
-use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
-
# Define statuses
use constant {
EXPECTED => 1,
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
- &GetSubscriptionLength &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
);
}
#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];
WHERE subscription.subscriptionid = ?
);
- $debug and warn "query : $query\nsubsid :$subscriptionid";
my $sth = $dbh->prepare($query);
$sth->execute($subscriptionid);
my $subscription = $sth->fetchrow_hashref;
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;
}
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;
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;
}
. q|
ORDER BY publisheddate,serialid DESC
|;
- $debug and warn "GetSerials2 query: $query";
my $sth = $dbh->prepare($query);
$sth->execute( $subscription, @$statuses );
my @serials;
$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;
mana_id => $mana_id,
}
)->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");
$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=?
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',