From afcd1651a6e2aca9e2b89eb7a16624fa50e40359 Mon Sep 17 00:00:00 2001
From: Julian Maurice <julian.maurice@biblibre.com>
Date: Fri, 22 Jun 2012 17:25:54 +0200
Subject: [PATCH] Bug 8296: Add descriptive (text) published date field for
serials
Add a new field serial.publisheddatetext for displaying published date
in another format that dateformat syspref permit.
Signed-off-by: Cedric Vita <cedric.vita@dracenie.com>
---
C4/Serials.pm | 39 ++++++++++++++------
installer/data/mysql/kohastructure.sql | 1 +
installer/data/mysql/updatedatabase.pl | 13 +++++++
.../prog/en/modules/serials/serials-collection.tt | 6 +++
.../prog/en/modules/serials/serials-edit.tt | 7 ++++
.../prog/en/modules/serials/subscription-detail.tt | 4 ++
.../prog/en/modules/opac-full-serial-issues.tt | 2 +
misc/cronjobs/serialsUpdate.pl | 2 +-
serials/serials-collection.pl | 10 +++--
serials/serials-edit.pl | 4 ++
10 files changed, 72 insertions(+), 16 deletions(-)
diff --git a/C4/Serials.pm b/C4/Serials.pm
index 6d188e7..6b07aa1 100644
--- a/C4/Serials.pm
+++ b/C4/Serials.pm
@@ -368,6 +368,7 @@ sub GetFullSubscription {
serial.serialseq,
serial.planneddate,
serial.publisheddate,
+ serial.publisheddatetext,
serial.status,
serial.notes as notes,
year(IF(serial.publisheddate="00-00-0000",serial.planneddate,serial.publisheddate)) as year,
@@ -522,6 +523,7 @@ sub GetFullSubscriptionsFromBiblionumber {
serial.serialseq,
serial.planneddate,
serial.publisheddate,
+ serial.publisheddatetext,
serial.status,
serial.notes as notes,
year(IF(serial.publisheddate="00-00-0000",serial.planneddate,serial.publisheddate)) as year,
@@ -742,7 +744,8 @@ sub GetSerials {
my $counter = 0;
$count = 5 unless ($count);
my @serials;
- my $query = "SELECT serialid,serialseq, status, publisheddate, planneddate,notes, routingnotes
+ my $query = "SELECT serialid,serialseq, status, publisheddate,
+ publisheddatetext, planneddate,notes, routingnotes
FROM serial
WHERE subscriptionid = ? AND status NOT IN (2,4,5)
ORDER BY IF(publisheddate<>'0000-00-00',publisheddate,planneddate) DESC";
@@ -762,7 +765,8 @@ sub GetSerials {
}
# OK, now add the last 5 issues arrives/missing
- $query = "SELECT serialid,serialseq, status, planneddate, publisheddate,notes, routingnotes
+ $query = "SELECT serialid,serialseq, status, planneddate, publisheddate,
+ publisheddatetext, notes, routingnotes
FROM serial
WHERE subscriptionid = ?
AND (status in (2,4,5))
@@ -807,7 +811,8 @@ sub GetSerials2 {
my $dbh = C4::Context->dbh;
my $query = qq|
- SELECT serialid,serialseq, status, planneddate, publisheddate,notes, routingnotes
+ SELECT serialid,serialseq, status, planneddate, publisheddate,
+ publisheddatetext, notes, routingnotes
FROM serial
WHERE subscriptionid=$subscription AND status IN ($status)
ORDER BY publisheddate,serialid DESC
@@ -1177,7 +1182,8 @@ sub _update_receivedlist {
=head2 ModSerialStatus
-ModSerialStatus($serialid,$serialseq, $planneddate,$publisheddate,$status,$notes)
+ ModSerialStatus($serialid, $serialseq, $planneddate, $publisheddate,
+ $publisheddatetext, $status, $notes);
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
@@ -1185,7 +1191,8 @@ Note : if we change from "waited" to something else,then we will have to create
=cut
sub ModSerialStatus {
- my ( $serialid, $serialseq, $planneddate, $publisheddate, $status, $notes ) = @_;
+ my ($serialid, $serialseq, $planneddate, $publisheddate, $publisheddatetext,
+ $status, $notes) = @_;
return unless ($serialid);
@@ -1211,9 +1218,15 @@ sub ModSerialStatus {
if ( not $planneddate or $planneddate eq '0000-00-00' ) { $planneddate = C4::Dates->new()->output('iso') };
if ( not $publisheddate or $publisheddate eq '0000-00-00' ) { $publisheddate = C4::Dates->new()->output('iso') };
}
- my $query = 'UPDATE serial SET serialseq=?,publisheddate=?,planneddate=?,status=?,notes=? WHERE serialid = ?';
+ my $query = '
+ UPDATE serial
+ SET serialseq = ?, publisheddate = ?, publisheddatetext = ?,
+ planneddate = ?, status = ?, notes = ?
+ WHERE serialid = ?
+ ';
$sth = $dbh->prepare($query);
- $sth->execute( $serialseq, $publisheddate, $planneddate, $status, $notes, $serialid );
+ $sth->execute( $serialseq, $publisheddate, $publisheddatetext,
+ $planneddate, $status, $notes, $serialid );
$query = "SELECT * FROM subscription WHERE subscriptionid = ?";
$sth = $dbh->prepare($query);
$sth->execute($subscriptionid);
@@ -1600,19 +1613,21 @@ returns the serial id
=cut
sub NewIssue {
- my ( $serialseq, $subscriptionid, $biblionumber, $status, $planneddate, $publisheddate, $notes ) = @_;
+ my ( $serialseq, $subscriptionid, $biblionumber, $status, $planneddate,
+ $publisheddate, $publisheddatetext, $notes ) = @_;
### FIXME biblionumber CAN be provided by subscriptionid. So Do we STILL NEED IT ?
return unless ($subscriptionid);
my $dbh = C4::Context->dbh;
my $query = qq|
- INSERT INTO serial
- (serialseq,subscriptionid,biblionumber,status,publisheddate,planneddate,notes)
- VALUES (?,?,?,?,?,?,?)
+ INSERT INTO serial (serialseq, subscriptionid, biblionumber, status,
+ publisheddate, publisheddatetext, planneddate, notes)
+ VALUES (?,?,?,?,?,?,?,?)
|;
my $sth = $dbh->prepare($query);
- $sth->execute( $serialseq, $subscriptionid, $biblionumber, $status, $publisheddate, $planneddate, $notes );
+ $sth->execute( $serialseq, $subscriptionid, $biblionumber, $status,
+ $publisheddate, $publisheddatetext, $planneddate, $notes );
my $serialid = $dbh->{'mysql_insertid'};
$query = qq|
SELECT missinglist,recievedlist
diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql
index fefc985..6da18c1 100644
--- a/installer/data/mysql/kohastructure.sql
+++ b/installer/data/mysql/kohastructure.sql
@@ -1926,6 +1926,7 @@ CREATE TABLE `serial` (
`planneddate` date default NULL,
`notes` text,
`publisheddate` date default NULL,
+ publisheddatetext varchar(100) default NULL,
`claimdate` date default NULL,
`routingnotes` text,
PRIMARY KEY (`serialid`)
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index 6162bc5..29c2ab9 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -7743,6 +7743,19 @@ if(CheckVersion($DBversion)) {
SetVersion($DBversion);
}
+$DBversion = "XXX";
+if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
+ $dbh->do("
+ ALTER TABLE serial
+ ADD COLUMN publisheddatetext VARCHAR(100) DEFAULT NULL
+ AFTER publisheddate
+ ");
+
+ print "Upgrade to $DBversion done (Add serial.publisheddatetext)\n";
+ SetVersion($DBversion);
+}
+
+
=head1 FUNCTIONS
=head2 TableExists($table)
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-collection.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-collection.tt
index bd94f71..0310c9b 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-collection.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-collection.tt
@@ -203,6 +203,8 @@ $(document).ready(function() {
[% END %]
<th class="title-string">Date published
</th>
+ <th class="title-string">Date published (text)
+ </th>
<th class="title-string">Date received
</th>
<th>Number
@@ -243,6 +245,10 @@ $(document).ready(function() {
<span title="[% serial.publisheddate %]">[% serial.publisheddate | $KohaDates %]</span>
</td>
<td>
+ [% publisheddatetext = serial.publisheddatetext || serial.publisheddate %]
+ <span title="[% publisheddatetext %]">[% publisheddatetext | $KohaDates %]</span>
+ </td>
+ <td>
<span title="[% serial.planneddate %]">[% serial.planneddate | $KohaDates %]</span>
</td>
<td>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-edit.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-edit.tt
index 8f9ea5f..5fad438 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-edit.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-edit.tt
@@ -142,6 +142,7 @@ $(document).ready(function() {
<tr>
<th>Numbered</th>
<th>Published on</th>
+ <th>Published on (text)</th>
<th>Expected on</th>
<th>Status</th>
<th>Notes</th>
@@ -163,6 +164,9 @@ $(document).ready(function() {
<input type="text" name="publisheddate" value="[% serialslis.publisheddate %]" size="10" maxlength="15" />
</td>
<td>
+ <input type="text" name="publisheddatetext" value="[% serialslis.publisheddatetext || serialslis.publisheddate %]" size="10" maxlength="15" />
+ </td>
+ <td>
<input type="text" id="expecteddate" name="planneddate" value="[% serialslis.planneddate %]" size="10" maxlength="15" />
</td>
<td>
@@ -282,6 +286,9 @@ $(document).ready(function() {
<input type="text" name="publisheddate" value="[% newserialloo.publisheddate %]" size="10" maxlength="15" />
</td>
<td>
+ <input type="text" name="publisheddatetext" value="[% newserialloo.publisheddatetext || newserialloo.publisheddate %]" size="10" maxlength="15" />
+ </td>
+ <td>
<input type="text" name="planneddate" id="supexpecteddate" value="[% newserialloo.planneddate %]" size="10" maxlength="15" />
</td>
<td>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt
index ccac0bb..23f5023 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-detail.tt
@@ -251,6 +251,7 @@ $(document).ready(function() {
<th>Issue number</th>
<th>Planned date</th>
<th>Published date</th>
+ <th>Published date (text)</th>
<th>Status</th>
</tr>
[% FOREACH serialslis IN serialslist %]
@@ -265,6 +266,9 @@ $(document).ready(function() {
[% serialslis.publisheddate %]
</td>
<td>
+ [% serialslis.publisheddatetext || serialslis.publisheddate %]
+ </td>
+ <td>
[% IF ( serialslis.status1 ) %]Expected[% END %]
[% IF ( serialslis.status2 ) %]Arrived[% END %]
[% IF ( serialslis.status3 ) %]Late[% END %]
diff --git a/koha-tmpl/opac-tmpl/prog/en/modules/opac-full-serial-issues.tt b/koha-tmpl/opac-tmpl/prog/en/modules/opac-full-serial-issues.tt
index e0fb803..884bfb2 100644
--- a/koha-tmpl/opac-tmpl/prog/en/modules/opac-full-serial-issues.tt
+++ b/koha-tmpl/opac-tmpl/prog/en/modules/opac-full-serial-issues.tt
@@ -188,6 +188,7 @@ function showlayer(numlayer){
<thead>
<tr>
<th>Date</th>
+ <th>Date (text)</th>
<th>Library</th>
<th>Notes</th>
<th>Date received</th>
@@ -206,6 +207,7 @@ function showlayer(numlayer){
[% END %]
</td>
+ <td>[% serial.publisheddatetext || serial.publisheddate %]</td>
<td class="libraryfilterclass"> [% serial.branchcode %]
</td>
<td> [% serial.notes %]
diff --git a/misc/cronjobs/serialsUpdate.pl b/misc/cronjobs/serialsUpdate.pl
index 07d418a..36a66bc 100755
--- a/misc/cronjobs/serialsUpdate.pl
+++ b/misc/cronjobs/serialsUpdate.pl
@@ -126,7 +126,7 @@ while ( my $issue = $sth->fetchrow_hashref ) {
{
$confirm
and ModSerialStatus( $issue->{serialid}, $issue->{serialseq},
- $issue->{planneddate}, $issue->{publisheddate},
+ $issue->{planneddate}, $issue->{publisheddate}, $issue->{publisheddatetext},
3, $note );
$verbose
and print "Serial issue with id=" . $issue->{serialid} . " updated\n";
diff --git a/serials/serials-collection.pl b/serials/serials-collection.pl
index bb1967b..a362f39 100755
--- a/serials/serials-collection.pl
+++ b/serials/serials-collection.pl
@@ -55,8 +55,12 @@ my $subscriptions;
if($op eq 'gennext' && @subscriptionid){
my $subscriptionid = $subscriptionid[0];
- my $sth = $dbh->prepare("SELECT publisheddate, serialid, serialseq, planneddate
- FROM serial WHERE status = 1 AND subscriptionid = ?");
+ my $sth = $dbh->prepare("
+ SELECT publisheddate, publisheddatetext, serialid, serialseq,
+ planneddate
+ FROM serial
+ WHERE status = 1 AND subscriptionid = ?
+ ");
my $status = defined( $nbissues ) ? 2 : 3;
$nbissues ||= 1;
for ( my $i = 0; $i < $nbissues; $i++ ){
@@ -65,7 +69,7 @@ if($op eq 'gennext' && @subscriptionid){
if ( my $issue = $sth->fetchrow_hashref ) {
ModSerialStatus( $issue->{serialid}, $issue->{serialseq},
$issue->{planneddate}, $issue->{publisheddate},
- $status, "" );
+ $issue->{publisheddatetext}, $status, "" );
} else {
require C4::Serials::Numberpattern;
my $subscription = GetSubscription($subscriptionid);
diff --git a/serials/serials-edit.pl b/serials/serials-edit.pl
index 8fb2e60..c3b51f7 100755
--- a/serials/serials-edit.pl
+++ b/serials/serials-edit.pl
@@ -81,6 +81,8 @@ my @serialids = $query->param('serialid');
my @serialseqs = $query->param('serialseq');
my @planneddates = $query->param('planneddate');
my @publisheddates = $query->param('publisheddate');
+my @publisheddates = $query->param('publisheddate');
+my @publisheddatetexts = $query->param('publisheddatetext');
my @status = $query->param('status');
my @notes = $query->param('notes');
my @subscriptionids = $query->param('subscriptionid');
@@ -228,6 +230,7 @@ if ( $op and $op eq 'serialchangestatus' ) {
$status[$i],
$plan_date,
$pub_date,
+ $publisheddatetexts[$i],
$notes[$i]
);
}
@@ -238,6 +241,7 @@ if ( $op and $op eq 'serialchangestatus' ) {
$serialseqs[$i],
$plan_date,
$pub_date,
+ $publisheddatetexts[$i],
$status[$i],
$notes[$i]
);
--
1.7.10.4