MT3421: Moves subscription history in a separate page
authorMatthias Meusburger <matthias.meusburger@biblibre.com>
Wed, 28 Apr 2010 12:42:25 +0000 (14:42 +0200)
committerHenri-Damien LAURENT <henridamien.laurent@biblibre.com>
Fri, 14 May 2010 07:48:02 +0000 (09:48 +0200)
koha-tmpl/intranet-tmpl/prog/en/includes/serials-menu.inc
koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-add.tmpl
koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-history.tmpl [new file with mode: 0644]
serials/subscription-add.pl
serials/subscription-history.pl [new file with mode: 0755]

index 88e32e3..d347cb8 100644 (file)
@@ -8,6 +8,9 @@
                <li><a href="routing.pl?subscriptionid=<!-- TMPL_VAR NAME="subscriptionid" -->&amp;op=new">Create Routing List</a></li>
            <!-- /TMPL_IF -->
        <!-- /TMPL_IF -->
+       <!-- TMPL_IF NAME="manualhistory" -->
+           <li><a href="subscription-history.pl?subscriptionid=<!-- TMPL_VAR NAME="subscriptionid" -->">Subscription history</a></li>
+       <!-- /TMPL_IF -->
 </ul>
 <!-- /TMPL_IF -->
 
index 27ce4d7..46785dd 100644 (file)
@@ -1349,47 +1349,6 @@ $(document).ready(function() {
 </form>
 </div>
 
-<!--TMPL_IF Name="history"-->
-<div id="subscription_form_history">
-    <h2>Subscription history</h2>
-    <form method="post" action="/cgi-bin/koha/serials/subscription-add.pl">
-        <input type="hidden" name="op" value="modsubscription" />
-        <input type="hidden" name="subscriptionid" value="<!-- TMPL_VAR name="subscriptionid" -->" />
-        <input type="hidden" name="history_only" value="1" />
-        <p>Hint : you can update the serial history manually. This can be useful for an old subscription or to clean the existing history. Modify these fields with care, as future serial receive will continue to update them automatically.</p>
-        <fieldset class="rows">
-               <ol>
-            <li>
-            <label for="histstartdate">Subscription start date</label>
-            <input type="text" name="histstartdate" id="histstartdate" value="<!-- TMPL_VAR name="histstartdate" -->" /><div class="hint"> (start date of the 1st subscription)</div>
-            </li>
-            <li>
-            <label for="histenddate">Subscription end date</label>
-            <input type="text" name="histenddate" id="histenddate" value="<!-- TMPL_VAR name="histenddate" -->" /> <div class="hint">(if empty, subscription is still active)</div>
-            </li>
-            <li>
-                <label for="recievedlist">Received issues</label>
-            <textarea name="recievedlist" id="recievedlist" cols="60" rows="5"><!-- TMPL_VAR name="recievedlist" --></textarea>
-            </li>
-            <li>
-                <label for="missinglist">Missing issues</label>
-            <textarea name="missinglist" id="missinglist" cols="60" rows="5"><!-- TMPL_VAR name="missinglist" --></textarea>
-            </li>
-            <li>
-                <label for="opacnote">Note for OPAC</label>
-            <textarea name="opacnote" id="opacnote" cols="60" rows="5"><!-- TMPL_VAR name="opacnote" --></textarea>
-            </li>
-            <li>
-                <label for="librariannote">Note for staff</label>
-            <textarea name="librariannote" id="librariannote" cols="60" rows="5"><!-- TMPL_VAR name="librariannote" --></textarea>
-            </li>
-               </ol>
-        </fieldset>
-    <fieldset class="action"><input type="submit" value="Save subscription history"  /></fieldset>
-    </form>
-</div>
-<!--/TMPL_IF-->
-
 </div>
 
 <!-- TMPL_INCLUDE NAME="intranet-bottom.inc" -->
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-history.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/subscription-history.tmpl
new file mode 100644 (file)
index 0000000..8ab7557
--- /dev/null
@@ -0,0 +1,73 @@
+<!-- TMPL_INCLUDE NAME="doc-head-open.inc" -->
+<title>Koha &rsaquo; Serials &rsaquo; <!-- TMPL_VAR name="bibliotitle" escape="html" --> &rsaquo; Modify subscription history </title>
+<!-- TMPL_INCLUDE NAME="doc-head-close.inc" -->
+
+</head>
+<body>
+<!-- TMPL_INCLUDE NAME="header.inc" -->
+<!-- TMPL_INCLUDE NAME="serials-search.inc" -->
+
+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/serials/serials-home.pl">Serials</a> &rsaquo; <a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=<!-- TMPL_VAR NAME="subscriptionid" -->"><i><!-- TMPL_VAR NAME="bibliotitle" escape="html" --></i></a> &rsaquo; Modify subscription</div>
+
+<div id="doc3" class="yui-t2">
+   
+   <div id="bd">
+   <div id="yui-main">
+   <div class="yui-b">
+
+<!--TMPL_IF Name="history"-->
+<!-- TMPL_IF Name="success" -->
+    <!-- TMPL_IF EXPR="success == 1" -->
+       <p>The subscription history has been successfully modified.</p>
+    <!-- TMPL_ELSE -->
+       <p>The subscription history could not be modified.</p>
+    <!-- /TMPL_IF -->
+<!-- /TMPL_IF -->
+<div id="subscription_form_history">
+    <h2>Subscription history</h2>
+    <form method="post" action="/cgi-bin/koha/serials/subscription-history.pl">
+        <input type="hidden" name="modhistory" value="1" />
+        <input type="hidden" name="subscriptionid" value="<!-- TMPL_VAR name="subscriptionid" -->" />
+        <p>Hint : you can update the serial history manually. This can be useful for an old subscription or to clean the existing history. Modify these fields with care, as future serial receive will continue to update them automatically.</p>
+        <fieldset class="rows">
+               <ol>
+            <li>
+            <label for="histstartdate">Subscription start date</label>
+            <input type="text" name="histstartdate" id="histstartdate" value="<!-- TMPL_VAR name="histstartdate" -->" /><div class="hint"> (start date of the 1st subscription)</div>
+            </li>
+            <li>
+            <label for="histenddate">Subscription end date</label>
+            <input type="text" name="histenddate" id="histenddate" value="<!-- TMPL_VAR name="histenddate" -->" /> <div class="hint">(if empty, subscription is still active)</div>
+            </li>
+            <li>
+                <label for="recievedlist">Received issues</label>
+            <textarea name="recievedlist" id="recievedlist" cols="60" rows="5"><!-- TMPL_VAR name="recievedlist" --></textarea>
+            </li>
+            <li>
+                <label for="missinglist">Missing issues</label>
+            <textarea name="missinglist" id="missinglist" cols="60" rows="5"><!-- TMPL_VAR name="missinglist" --></textarea>
+            </li>
+            <li>
+                <label for="opacnote">Note for OPAC</label>
+            <textarea name="opacnote" id="opacnote" cols="60" rows="5"><!-- TMPL_VAR name="opacnote" --></textarea>
+            </li>
+            <li>
+                <label for="librariannote">Note for staff</label>
+            <textarea name="librariannote" id="librariannote" cols="60" rows="5"><!-- TMPL_VAR name="librariannote" --></textarea>
+            </li>
+               </ol>
+        </fieldset>
+    <fieldset class="action"><input type="submit" value="Save subscription history"  /></fieldset>
+    </form>
+</div>
+<!--TMPL_ELSE-->
+    <p>Manual history is not enabled for this subscription.</p>
+<!-- /TMPL_IF -->
+</div>
+</div>
+
+<div class="yui-b">
+<!-- TMPL_INCLUDE NAME="serials-menu.inc" -->
+</div>
+</div>
+<!-- TMPL_INCLUDE NAME="intranet-bottom.inc" -->
index 57902ca..d56392f 100755 (executable)
@@ -278,7 +278,6 @@ if ($op eq 'addsubscription') {
     my $missinglist = $query->param('missinglist');
     my $opacnote = $query->param('opacnote');
     my $librariannote = $query->param('librariannote');
-    my $history_only = $query->param('history_only');
        #  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'));
@@ -286,9 +285,6 @@ if ($op eq 'addsubscription') {
         $firstissuedate = $nextacquidate if($nextexpected->{isfirstissue});
     }
 
-    if ($history_only) {
-        ModSubscriptionHistory ($subscriptionid,$histstartdate,$histenddate,$recievedlist,$missinglist,$opacnote,$librariannote);
-    } else {
         &ModSubscription(
             $auser,           $branchcode,   $aqbooksellerid, $cost,
             $aqbudgetid,      $startdate,    $periodicity,    $firstissuedate,
@@ -302,7 +298,6 @@ if ($op eq 'addsubscription') {
             $notes,           $letter,       $hemisphere,     $manualhistory,$internalnotes,
             $serialsadditems, $subscriptionid,
         );
-    }
     print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
 } else {
 
diff --git a/serials/subscription-history.pl b/serials/subscription-history.pl
new file mode 100755 (executable)
index 0000000..5f3122a
--- /dev/null
@@ -0,0 +1,84 @@
+#!/usr/bin/perl
+
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA  02111-1307 USA
+
+use strict;
+use CGI;
+use Date::Calc qw(Today Day_of_Year Week_of_Year Add_Delta_Days);
+use C4::Koha;
+use C4::Biblio;
+use C4::Auth;
+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::Serials;
+use C4::Letters;
+
+#use Smart::Comments;
+
+my $query = new CGI;
+my $dbh = C4::Context->dbh;
+
+my ($template, $loggedinuser, $cookie)
+= get_template_and_user({template_name => "serials/subscription-history.tmpl",
+                               query => $query,
+                               type => "intranet",
+                               authnotrequired => 0,
+                               flagsrequired => {serials => 'edit_subscription'},
+                               debug => 1,
+                               });
+
+    my $subscriptionid = $query->param('subscriptionid');
+    my $modhistory = $query->param('modhistory');
+    my $subs = &GetSubscription($subscriptionid);
+
+## FIXME : Check rights to edit if mod. Could/Should display an error message.
+    if ($subs->{'cannotedit'}){
+      warn "Attempt to modify subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed";
+      print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid");
+    }
+
+
+  for (qw(startdate firstacquidate histstartdate enddate histenddate)) {
+        # TODO : Handle date formats properly.
+         if ($subs->{$_} eq '0000-00-00') {
+            $subs->{$_} = ''
+        } else {
+            $subs->{$_} = format_date($subs->{$_});
+        }   
+          } 
+
+
+        $template->param($subs);
+        $template->param(
+                    history => ($subs->{manualhistory} == 1 ),
+                    );
+
+
+    if ($modhistory) {
+       my $histstartdate = format_date_in_iso($query->param('histstartdate'));
+       my $histenddate = format_date_in_iso($query->param('histenddate'));
+       my $recievedlist = $query->param('recievedlist');
+       my $missinglist = $query->param('missinglist');
+       my $opacnote = $query->param('opacnote');
+       my $librariannote = $query->param('librariannote');
+       my $return = ModSubscriptionHistory ($subscriptionid,$histstartdate,$histenddate,$recievedlist,$missinglist,$opacnote,$librariannote);
+       $template->param(success => 1) if ($return == 1);
+    } 
+
+       output_html_with_http_headers $query, $cookie, $template->output;