Bug 9416: add new order vendor note field
authorMathieu Saby <mathsabypro@gmail.com>
Mon, 17 Feb 2014 00:11:42 +0000 (01:11 +0100)
committerGalen Charlton <gmc@esilibrary.com>
Sat, 19 Apr 2014 15:55:36 +0000 (15:55 +0000)
Currently, there is a single note field in each order. It would be
useful to have 2 notes fields:

- one for the staff (ex: "catalog this book as soon as possible")
- one for the vendor (ex: "urgent", "only the 2d volume"...), which
  could later be printed in basketgroup pdf for example

This patch adds a new note made for vendor in each order. The existing
note is renamed "internal note".

The behavior of the 2 notes are the same

Changes in database structure:
- new column aqorders.order_vendornote
- column aqorders.notes renamed aqorders.order_internalnote

To test :
[1] Make a complete acquisiton process (creating the order > looking at
    the basket > looking the order > receiving); and try to use the 2
    notes (internal note / vendor note)
[2] Check the changes made on one page (eg detail of the order) are
    saved and visible on an other page (eg receipt page)

Signed-off-by: Marc Véron <veron@veron.ch>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Testing notes on last patch.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>

C4/Acquisition.pm
acqui/modordernotes.pl
acqui/orderreceive.pl
installer/data/mysql/kohastructure.sql
installer/data/mysql/updatedatabase.pl
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/addorderiso2709.tt
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/modordernotes.tt
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/orderreceive.tt
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt

index 2b17eab..9000fb2 100644 (file)
@@ -310,7 +310,7 @@ sub GetBasketAsCSV {
             publicationyear => $bd->{'publicationyear'},
             publishercode => $bd->{'publishercode'},
             collectiontitle => $bd->{'collectiontitle'},
-            notes => $order->{'notes'},
+            notes => $order->{'order_internalnote'},
             quantity => $order->{'quantity'},
             rrp => $order->{'rrp'},
             deliveryplace => C4::Branch::GetBranchName( $basket->{'deliveryplace'} ),
@@ -381,7 +381,7 @@ sub GetBasketGroupAsCSV {
                 rrp => $order->{rrp},
                 discount => $bookseller->{discount},
                 ecost => $order->{ecost},
-                notes => $order->{notes},
+                notes => $order->{order_internalnote},
                 entrydate => $order->{entrydate},
                 booksellername => $bookseller->{name},
                 bookselleraddress => $bookseller->{address1},
@@ -1234,7 +1234,7 @@ Else, the upcoming July 1st is used.
 
 =item defaults entrydate to Now
 
-The following keys are used: "biblionumber", "title", "basketno", "quantity", "notes", "rrp", "ecost", "gstrate", "unitprice", "subscription", "sort1", "sort2", "booksellerinvoicenumber", "listprice", "budgetdate", "purchaseordernumber", "branchcode", "booksellerinvoicenumber", "budget_id".
+The following keys are used: "biblionumber", "title", "basketno", "quantity", "order_vendornote", "order_internalnote", "rrp", "ecost", "gstrate", "unitprice", "subscription", "sort1", "sort2", "booksellerinvoicenumber", "listprice", "budgetdate", "purchaseordernumber", "branchcode", "booksellerinvoicenumber", "budget_id".
 
 =back
 
index ffdc9f6..74ccd18 100755 (executable)
@@ -47,7 +47,7 @@ my ($template, $loggedinuser, $cookie, $flags) = get_template_and_user( {
 my $op = $input->param('op');
 my $ordernumber = $input->param('ordernumber');
 my $referrer = $input->param('referrer') || $input->referer();
-
+my $type = $input->param('type');
 my $order = GetOrder($ordernumber);
 my $basket = GetBasket($order->{basketno});
 my ($bookseller) = GetBookSellerFromId($basket->{booksellerid});
@@ -55,14 +55,20 @@ my ($bookseller) = GetBookSellerFromId($basket->{booksellerid});
 
 if($op and $op eq 'save') {
     my $ordernotes = $input->param('ordernotes');
-    $order->{'notes'} = $ordernotes;
+    if ($type eq "vendor") {
+        $order->{'order_vendornote'} = $ordernotes;
+    } else {
+        $order->{'order_internalnote'} = $ordernotes;
+    }
     ModOrder($order);
     print $input->redirect($referrer);
     exit;
 } else {
-    $template->param(
-        ordernotes => $order->{'notes'},
-    );
+    if ($type eq "vendor") {
+        $template->param(ordernotes => $order->{'order_vendornote'});
+    } else {
+        $template->param(ordernotes => $order->{'order_internalnote'});
+    }
 }
 
 if($op) {
@@ -76,6 +82,7 @@ $template->param(
     booksellername       => $bookseller->{'name'},
     ordernumber => $ordernumber,
     referrer => $referrer,
+    type => $type,
 );
 
 
index 2a21c14..50920e0 100755 (executable)
@@ -222,7 +222,8 @@ $template->param(
     invoice               => $invoice->{invoicenumber},
     datereceived          => $datereceived->output(),
     datereceived_iso      => $datereceived->output('iso'),
-    notes                 => $order->{notes},
+    order_internalnote    => $order->{order_internalnote},
+    order_vendornote      => $order->{order_vendornote},
     suggestionid          => $suggestion->{suggestionid},
     surnamesuggestedby    => $suggestion->{surnamesuggestedby},
     firstnamesuggestedby  => $suggestion->{firstnamesuggestedby},
index 57cc3b8..ea4f944 100644 (file)
@@ -2979,7 +2979,8 @@ CREATE TABLE `aqorders` ( -- information related to the basket line items
   `quantityreceived` smallint(6) NOT NULL default 0, -- the quantity that have been received so far
   `cancelledby` varchar(10) default NULL, -- not used? always NULL
   `datecancellationprinted` date default NULL, -- the date the line item was deleted
-  `notes` mediumtext, -- notes related to this order line
+  `order_internalnote` mediumtext, -- notes related to this order line, made for staff
+  `order_vendornote` mediumtext, -- notes related to this order line, made for vendor
   `supplierreference` mediumtext, -- not used? always NULL
   `purchaseordernumber` mediumtext, -- not used? always NULL
   `basketno` int(11) default NULL, -- links this order line to a specific basket (aqbasket.basketno)
index d2db8d1..263d4d9 100755 (executable)
@@ -8136,6 +8136,13 @@ if ( CheckVersion($DBversion) ) {
    print "Upgrade to $DBversion done (Bug 9448 - Add separate permission for writing off fees)\n";
    SetVersion ($DBversion);
 }
+$DBversion = "3.15.00.XXX";
+if ( CheckVersion($DBversion) ) {
+    $dbh->do("ALTER TABLE aqorders CHANGE notes order_internalnote MEDIUMTEXT;");
+    $dbh->do("ALTER TABLE aqorders ADD COLUMN order_vendornote MEDIUMTEXT AFTER order_internalnote;");
+    print "Upgrade to $DBversion done (Bug 9416 - In each order, add a new note made for the vendor)\n";
+    SetVersion($DBversion);
+}
 
 =head1 FUNCTIONS
 
index 44d2bb8..ccc8bf0 100644 (file)
                             [% END %]
                         </li>
                         <li>
-                            <label for="notes">Notes: </label>
-                            <textarea id="notes" cols="30" rows="3" name="notes"></textarea>
+                            <label for="order_internalnote">Internal note: </label>
+                            <textarea id="order_internalnote" cols="30" rows="3" name="order_internalnote"></textarea>
                         </li>
                         <li><div class="hint">The 2 following fields are available for your own usage. They can be useful for statistical purposes</div>
                             <label for="sort1">Planning value1: </label>
index cd31176..37ac2d2 100644 (file)
                                     (<a href="/cgi-bin/koha/suggestion/suggestion.pl?suggestionid=[% books_loo.suggestionid %]&amp;op=show">suggestion #[% books_loo.suggestionid %]</a>)
                                 [% END %]
                             </p>
-                                [% IF ( books_loo.notes ) %]
-                                    <p class="ordernote"><strong>Note: </strong>[% books_loo.notes|html %] [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% books_loo.ordernumber %]">Change note</a>]</p>
+                                [% IF ( books_loo.order_internalnote ) %]
+                                    <p class="ordernote"><strong>Internal note: </strong>[% books_loo.order_internalnote|html %] [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% books_loo.ordernumber %]&type=internal">Change internal note</a>]</p>
                                 [% ELSE %]
-                                    <p>[<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% books_loo.ordernumber %]">Add note</a>]</p>
+                                    [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% books_loo.ordernumber %]&type=internal">Add internal note</a>]
+                                [% END %]
+                                [% IF ( books_loo.order_vendornote ) %]
+                                    <p class="ordernote"><strong>Vendor note: </strong>[% books_loo.order_vendornote|html %] [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% books_loo.ordernumber %]&type=vendor">Change vendor note</a>]</p>
+                                [% ELSE %]
+                                    [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% books_loo.ordernumber %]&type=vendor">Add vendor note</a>]
                                 [% END %]
                             [% IF (books_loo.transferred_from) %]
                               [% basket = books_loo.transferred_from.basket %]
                         [% ELSE %]
                           <em>Deleted bibliographic record, can't find title</em><br />
                         [% END %]
-                        [% IF ( order.notes ) %] [% order.notes %][% END %]
+                        [% IF ( order.order_internalnote ) %] [% order.order_internalnote %][% END %]
                         [% IF ( order.isbn ) %] - [% order.isbn %][% END %]
                         [% IF ( order.issn ) %] - [% order.issn %][% END %]
                         [% IF ( order.publishercode ) %], [% order.publishercode %][% END %]
index 6fc4867..ee60b0e 100644 (file)
@@ -1,26 +1,27 @@
 [% INCLUDE 'doc-head-open.inc' %]
-<title>Koha &rsaquo; Acquisition &rsaquo; Change order notes</title>
+<title>Koha &rsaquo; Acquisition &rsaquo; Change order [% IF (type == "vendor") %]vendor[% ELSE %]internal[% END %] note</title>
 [% INCLUDE 'doc-head-close.inc' %]
 </head>
 
 <body>
 [% INCLUDE 'header.inc' %]
 
-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisition</a> &rsaquo; <a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% booksellerid %]">[% booksellername|html %]</a> &rsaquo; <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basketno %]">Basket [% basketname|html %] ([% basketno %])</a> &rsaquo; Change order notes</div>
+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisition</a> &rsaquo; <a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% booksellerid %]">[% booksellername|html %]</a> &rsaquo; <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basketno %]">Basket [% basketname|html %] ([% basketno %])</a> &rsaquo; Change order [% IF (type == "vendor") %]vendor[% ELSE %]internal[% END %] note</div>
 
 <div id="doc" class="yui-t7">
 
 <div id="bd">
   <div id="yui-main">
-      <h1>Change order notes (order no. [% ordernumber %])</h1>
+      <h1>Change order [% IF (type == "vendor") %]vendor[% ELSE %]internal[% END %] note (order no. [% ordernumber %])</h1>
       <form action="/cgi-bin/koha/acqui/modordernotes.pl" method="post">
         <fieldset class="brief">
-          <label for="ordernotes">Notes:</label>
+          <label for="ordernotes">Note:</label>
           <textarea id="ordernotes" name="ordernotes" rows="3" cols="30" class="focus">[% ordernotes %]</textarea>
         </fieldset>
         <input type="hidden" name="referrer" value="[% referrer %]" />
         <input type="hidden" name="ordernumber" value="[% ordernumber %]" />
         <input type="hidden" name="op" value="save" />
+        <input type="hidden" name="type" value="[% type %]" />
         <fieldset class="action">
           <input type="submit" value="Save" />
           <a class="cancel" href="[% referrer %]">Cancel</a>
index 4ce63a0..ab30ff2 100644 (file)
@@ -536,8 +536,12 @@ $(document).ready(function()
                 [% END %]
             </li>
             <li>
-                <label for="notes">Notes: </label>
-                <textarea id="notes" cols="30" rows="3" name="notes" >[% IF ( notes ) %][% notes %][% END %]</textarea>
+                <label for="order_internalnote">Internal note: </label>
+                <textarea id="order_internalnote" cols="30" rows="3" name="order_internalnote" >[% IF ( order_internalnote ) %][% order_internalnote %][% END %]</textarea>
+            </li>
+           <li>
+                <label for="order_vendornote">Vendor note: </label>
+                <textarea id="order_vendornote" cols="30" rows="3" name="order_vendornote" >[% IF ( order_vendornote ) %][% order_vendornote %][% END %]</textarea>
             </li>
             <li><div class="hint">The 2 following fields are available for your own usage. They can be useful for statistical purposes</div>
                 <label for="sort1">Statistic 1: </label>
index 3f5dc42..6d2b3fa 100644 (file)
          <input type="text" size="20" name="cost" id="cost" value="[% unitprice %]" />
         [% ELSE %]
             <input type="text" size="20" name="cost" id="cost" value="[% ecost %]" />
-        [% END %]</li></ol>
-        <label for="note">Notes: </label><textarea name="notes" width="40" rows="8" >[% notes %]</textarea>
+        [% END %]</li>
+        <li><label for="order_internalnote">Internal note: </label><textarea name="order_internalnote" width="40" rows="8" >[% order_internalnote %]</textarea></li>
+        <li><label for="order_vendornote">Vendor note: </label><textarea name="order_vendornote" width="40" rows="8" >[% order_vendornote %]</textarea></li>
+        </ol>
     </fieldset>
 
 </div>
index b537148..11bc920 100644 (file)
                   <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% loop_order.biblionumber %]">[% loop_order.title |html %]</a>
                 [% IF ( loop_order.author ) %] by [% loop_order.author %][% END %]
                 [% IF ( loop_order.isbn ) %] &ndash; [% loop_order.isbn %][% END %]
-                [% IF ( loop_order.publishercode ) %]<br />Publisher :[% loop_order.publishercode %][% END %]
+                [% IF ( loop_order.publishercode ) %]<br />Publisher:[% loop_order.publishercode %][% END %]
                 [% IF ( loop_order.suggestionid ) %]
                     <br/>
                     Suggested by: [% loop_order.surnamesuggestedby %][% IF ( loop_order.firstnamesuggestedby ) %], [% loop_order.firstnamesuggestedby %] [% END %]
                     (<a href="/cgi-bin/koha/suggestion/suggestion.pl?suggestionid=[% loop_order.suggestionid %]&amp;op=show">suggestion #[% loop_order.suggestionid %]</a>)
                 [% END %]
                 <br />
-                [% IF ( loop_order.notes ) %]
-                    <p class="ordernote"><strong>Note: </strong>[% loop_order.notes|html %] [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% loop_order.ordernumber %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid %]">Change note</a>]</p>
+                [% IF ( loop_order.order_internalnote ) %]
+                    f<p class="ordernote"><strong>Internal note: </strong>[% loop_order.order_internalnote|html %] [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% loop_order.ordernumber %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid %]&type=internal">Change internal note</a>]</p>
                 [% ELSE %]
-                    [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% loop_order.ordernumber %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid %]">Add note</a>]
+                    [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% loop_order.ordernumber %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid %]&type=internal">Add internal note</a>]
+                [% END %]
+               [% IF ( loop_order.order_vendornote ) %]
+                    <p class="ordernote"><strong>Vendor note: </strong>[% loop_order.order_vendornote|html %] [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% loop_order.ordernumber %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid %]&type=vendor">Change vendor note</a>]</p>
+                [% ELSE %]
+                    [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% loop_order.ordernumber %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid %]&type=vendor">Add vendor note</a>]
                 [% END %]
                 </td>
                 <td><a href="/cgi-bin/koha/catalogue/showmarc.pl?id=[% loop_order.biblionumber %]" title="MARC" rel="gb_page_center[600,500]">MARC</a> | <a href="/cgi-bin/koha/catalogue/showmarc.pl?viewas=card&amp;id=[% loop_order.biblionumber %]" title="MARC" rel="gb_page_center[600,500]">Card</a></td>