C4::Serials - Serials Module Functions
use C4::Serials;
Functions for handling subscriptions, claims routing etc.
$supplierlist = GetSuppliersWithLateIssues()
this function get all suppliers with late issues.
return : an array_ref of suppliers each entry is a hash_ref containing id and name the array is in name order
$history = GetSubscriptionHistoryFromSubscriptionId($subscriptionid);
This function returns the subscription history as a hashref
$data = GetSerialInformation($serialid); returns a hash_ref containing : items : items marcrecord (can be an array) serial table field subscription table field + information about subscription expiration
$rows = AddItem2Serial($serialid,$itemnumber); Adds an itemnumber to Serial record returns the number of rows affected
$subs = GetSubscription($subscriptionid) this function returns the subscription which has $subscriptionid as id. return : a hashref. This hash contains subscription, subscriptionhistory, aqbooksellers.name, biblio.title
$array_ref = GetFullSubscription($subscriptionid) this function reads the serial table.
$array_ref = PrepareSerialsData($serialinfomation) where serialinformation is a hashref array
$array_ref = GetSubscriptionsFromBiblionumber($biblionumber) this function get the subscription list. it reads the subscription table. return : reference to an array of subscriptions which have the biblionumber given on input arg. each element of this array is a hashref containing startdate, histstartdate,opacnote,missinglist,recievedlist,periodicity,status & enddate
$array_ref = GetFullSubscriptionsFromBiblionumber($biblionumber) this function reads the serial table.
@results = SearchSubscriptions($args);
This function returns a list of hashrefs, one for each subscription that meets the conditions specified by the $args hashref.
The valid search fields are:
biblionumber title issn ean callnumber location publisher bookseller branch expiration_date closed routinglist
The expiration_date search field is special; it specifies the maximum subscription expiration date.
($totalissues,@serials) = GetSerials($subscriptionid); this function gets every serial not arrived for a given subscription as well as the number of issues registered in the database (all types) this number is used to see if a subscription can be deleted (=it must have only 1 issue)
FIXME: We should return \@serials.
@serials = GetSerials2($subscriptionid,$statuses); this function returns every serial waited for a given subscription as well as the number of issues registered in the database (all types) this number is used to see if a subscription can be deleted (=it must have only 1 issue)
$statuses is an arrayref of statuses and is mandatory.
\@serials = GetLatestSerials($subscriptionid,$limit) get the $limit's latest serials arrived or missing for a given subscription return : a ref to an array which contains all of the latest serials stored into a hash.
$serialid = GetPreviousSerialid($subscriptionid, $nth) get the $nth's previous serial for the given subscriptionid return : the serialid
my ( $nextseq, $newlastvalue1, $newlastvalue2, $newlastvalue3, $newinnerloop1, $newinnerloop2, $newinnerloop3 ) = GetNextSeq( $subscription, $pattern, $frequency, $planneddate, $count_forward );
$subscription is a hashref containing all the attributes of the table 'subscription'. $pattern is a hashref containing all the attributes of the table 'subscription_numberpatterns'. $frequency is a hashref containing all the attributes of the table 'subscription_frequencies' $planneddate is a date string in iso format. $count_forward is the number of issues to count forward, defaults to 1 if omitted This function get the next issue for the subscription given on input arg
$calculated = GetSeq($subscription, $pattern) $subscription is a hashref containing all the attributes of the table 'subscription' $pattern is a hashref containing all the attributes of the table 'subscription_numberpatterns' this function transforms {X},{Y},{Z} to 150,0,0 for example. return: the sequence in string format
$enddate = GetExpirationDate($subscriptionid, [$startdate])
this function return the next expiration date for a subscription given on input args.
return the enddate or undef
$subscriptionsnumber = CountSubscriptionFromBiblionumber($biblionumber) this returns a count of the subscriptions for a given biblionumber return : the number of subscriptions
ModSubscriptionHistory($subscriptionid,$histstartdate,$enddate,$recievedlist,$missinglist,$opacnote,$librariannote);
this function modifies the history of a subscription. Put your new values on input arg. returns the number of rows affected
ModSerialStatus($serialid, $serialseq, $planneddate, $publisheddate, $publisheddatetext, $status, $notes, $count_forward);
This function modify the serial status. Serial status is a number.(eg 2 is "arrived") Note : if we change from "waited" to something else,then we will have to create a new "waited" entry
$nextexpected = GetNextExpected($subscriptionid)
Get the planneddate for the current expected issue of the subscription.
returns a hashref:
$nextexepected = { serialid => int planneddate => ISO date }
ModNextExpected($subscriptionid,$date)
Update the planneddate for the current expected issue of the subscription. This will modify all future prediction results.
$date
is an ISO date.
returns 0
this function modifies a subscription. Put all new values on input args. returns the number of rows affected
$subscriptionid = &NewSubscription($auser,branchcode,$aqbooksellerid,$cost,$aqbudgetid,$biblionumber, $startdate,$periodicity,$numberlength,$weeklength,$monthlength, $lastvalue1,$innerloop1,$lastvalue2,$innerloop2,$lastvalue3,$innerloop3, $status, $notes, $letter, $firstacquidate, $irregularity, $numberpattern, $locale, $callnumber, $manualhistory, $internalnotes, $serialsadditems, $staffdisplaycount, $opacdisplaycount, $graceperiod, $location, $enddate, $skip_serialseq, $itemtype, $previousitemtype);
Create a new subscription with value given on input args.
return : the id of this new subscription
my ($numberlength, $weeklength, $monthlength) = GetSubscriptionLength( $subtype, $sublength );
This function calculates the subscription length.
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.
NewIssue($serialseq,$subscriptionid,$biblionumber,$status, $planneddate, $publisheddate, $notes, $routingnotes)
Create a new issue stored on the database. Note : we have to update the recievedlist and missinglist on subscriptionhistory for this subscription. returns the serial id
1 or 0 = HasSubscriptionStrictlyExpired($subscriptionid)
the subscription has stricly expired when today > the end subscription date
return : 1 if true, 0 if false, -1 if the expiration date is not set.
$has_expired = HasSubscriptionExpired($subscriptionid)
the subscription has expired when the next issue to arrive is out of subscription limit.
return : 0 if the subscription has not expired 1 if the subscription has expired 2 if has subscription does not have a valid expiration date set
DelSubscription($subscriptionid) this function deletes subscription which has $subscriptionid as id.
DelIssue($serialseq,$subscriptionid) this function deletes an issue which has $serialseq and $subscriptionid given on input arg.
returns the number of rows affected
@issuelist = GetLateMissingIssues($supplierid,$serialid)
this function selects missing issues on database - where serial.status = MISSING* or serial.status = LATE or planneddate<now
return : the issuelist as an array of hash refs. Each element of this array contains name,title,planneddate,serialseq,serial.subscriptionid from tables : subscription, serial & biblio
&updateClaim($serialid)
this function updates the time when a claim is issued for late/missing items
called from claims.pl file
$result = &check_routing($subscriptionid)
this function checks to see if a serial has a routing list and returns the count of routingid used to show either an 'add' or 'edit' link
addroutingmember($borrowernumber,$subscriptionid)
this function takes a borrowernumber and subscriptionid and adds the member to the routing list for that serial subscription and gives them a rank on the list of either 1 or highest current rank + 1
reorder_members($subscriptionid,$routingid,$rank)
this function is used to reorder the routing list
it takes the routingid of the member one wants to re-rank and the rank it is to move to - it gets all members on list puts their routingid's into an array - removes the one in the array that is $routingid - then reinjects $routingid at point indicated by $rank - then update the database with the routingids in the new order
delroutingmember($routingid,$subscriptionid)
this function either deletes one member from routing list if $routingid exists otherwise deletes all members from the routing list
@routinglist = getroutinglist($subscriptionid)
this gets the info from the subscriptionroutinglist for $subscriptionid
return : the routinglist as an array. Each element of the array contains a hash_ref containing routingid - a unique id, borrowernumber, ranking, and biblionumber of subscription
$result = countissuesfrom($subscriptionid,$startdate)
Returns a count of serial rows matching the given subsctiptionid with published date greater than startdate
$result = CountIssues($subscriptionid)
Returns a count of serial rows matching the given subsctiptionid
$result = HasItems($subscriptionid)
returns a count of items from serial matching the subscriptionid
$result = abouttoexpire($subscriptionid)
this function alerts you to the penultimate issue for a serial subscription
returns 1 - if this is the penultimate issue returns 0 - if not
$issueno = GetFictiveIssueNumber($subscription, $publishedate, $frequency);
Get the position of the issue published at $publisheddate, considering the first issue (at firstacquidate) is at position 1, the next is at position 2, etc... This issuenumber doesn't take into account irregularities, so, for instance, if the 3rd issue is declared as 'irregular' (will be skipped at receipt), the next issue number will be 4, not 3. It's why it is called 'fictive'. It is NOT a serial seq, and is not depending on how many rows are in serial table. The issue number calculation is based on subscription frequency, first acquisition date, and $publisheddate.
Returns undef when called for irregular frequencies.
The routine is used to skip irregularities when calculating the next issue date (in GetNextDate) or the next issue number (in GetNextSeq).
$resultdate = GetNextDate($publisheddate,$subscription,$freqdata,$updatecount)
this function it takes the publisheddate and will return the next issue's date and will skip dates if there exists an irregularity. $publisheddate has to be an ISO date $subscription is a hashref containing at least 'firstacquidate', 'irregularity', and 'countissuesperunit' $frequency is a hashref containing frequency informations $updatecount is a boolean value which, when set to true, update the 'countissuesperunit' in database - eg if periodicity is monthly and $publisheddate is 2007-02-10 but if March and April is to be skipped then the returned date will be 2007-05-10
return : $resultdate - then next date in the sequence (ISO date)
Return undef if subscription is irregular
$string = &_numeration($value,$num_type,$locale);
_numeration returns the string corresponding to $value in the num_type num_type can take : -dayname -dayabrv -monthname -monthabrv -season -seasonabrv
Close a subscription given a subscriptionid
Reopen a subscription given a subscriptionid
$bool = subscriptionCurrentlyOnOrder( $subscriptionid );
Return 1 if subscription is currently on order else 0.
$can = can_claim_subscription( $subscriptionid[, $userid] );
Return 1 if the subscription can be claimed by the current logged user (or a given $userid), else 0.
$can = can_edit_subscription( $subscriptionid[, $userid] );
Return 1 if the subscription can be edited by the current logged user (or a given $userid), else 0.
$can = can_show_subscription( $subscriptionid[, $userid] );
Return 1 if the subscription can be shown by the current logged user (or a given $userid), else 0.
@serials = findSerialsByStatus($status, $subscriptionid); Returns an array of serials matching a given status and subscription id.
Koha Development Team <http://koha-community.org/>