Bug 5728: adding note and manager_id fields to accountlines
authorStéphane Delaune <stephane.delaune@biblibre.com>
Wed, 6 Apr 2011 13:59:53 +0000 (15:59 +0200)
committerChris Cormack <chrisc@catalyst.net.nz>
Sat, 9 Apr 2011 09:25:18 +0000 (21:25 +1200)
Biblibre bug #1874

Signed-off-by: fdurand <frederic.durand@univ-lyon2.fr>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>

C4/Accounts.pm
C4/Context.pm
installer/data/mysql/kohastructure.sql
installer/data/mysql/updatedatabase.pl
koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tmpl
koha-tmpl/intranet-tmpl/prog/en/modules/members/mancredit.tmpl
koha-tmpl/intranet-tmpl/prog/en/modules/members/maninvoice.tmpl
koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tmpl
members/mancredit.pl
members/maninvoice.pl
members/pay.pl

index c54f7f9..9540b44 100644 (file)
@@ -35,7 +35,7 @@ BEGIN {
        @ISA    = qw(Exporter);
        @EXPORT = qw(
                &recordpayment &makepayment &manualinvoice
-               &getnextacctno &reconcileaccount &getcharges &getcredits
+               &getnextacctno &reconcileaccount &getcharges &ModNote &getcredits
                &getrefunds &chargelostitem
                &ReversePayment
        ); # removed &fixaccounts
@@ -327,7 +327,7 @@ sub chargelostitem{
 =head2 manualinvoice
 
   &manualinvoice($borrowernumber, $itemnumber, $description, $type,
-                 $amount, $user);
+                 $amount, $note);
 
 C<$borrowernumber> is the patron's borrower number.
 C<$description> is a description of the transaction.
@@ -351,7 +351,8 @@ should be the empty string.
 #
 
 sub manualinvoice {
-    my ( $borrowernumber, $itemnum, $desc, $type, $amount, $user ) = @_;
+    my ( $borrowernumber, $itemnum, $desc, $type, $amount, $note ) = @_;
+    my $manager_id = C4::Context->userenv->{'number'};
     my $dbh      = C4::Context->dbh;
     my $notifyid = 0;
     my $insert;
@@ -403,16 +404,16 @@ sub manualinvoice {
         $desc .= " " . $itemnum;
         my $sth = $dbh->prepare(
             "INSERT INTO  accountlines
-                        (borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding, itemnumber,notify_id)
-        VALUES (?, ?, now(), ?,?, ?,?,?,?)");
-     $sth->execute($borrowernumber, $accountno, $amount, $desc, $type, $amountleft, $itemnum,$notifyid) || return $sth->errstr;
+                        (borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding, itemnumber,notify_id, note, manager_id)
+        VALUES (?, ?, now(), ?,?, ?,?,?,?,?,?)");
+     $sth->execute($borrowernumber, $accountno, $amount, $desc, $type, $amountleft, $itemnum,$notifyid, $note, $manager_id) || return $sth->errstr;
   } else {
     my $sth=$dbh->prepare("INSERT INTO  accountlines
-            (borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding,notify_id)
-            VALUES (?, ?, now(), ?, ?, ?, ?,?)"
+            (borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding,notify_id, note, manager_id)
+            VALUES (?, ?, now(), ?, ?, ?, ?,?,?,?)"
         );
         $sth->execute( $borrowernumber, $accountno, $amount, $desc, $type,
-            $amountleft, $notifyid );
+            $amountleft, $notifyid, $note, $manager_id );
     }
     return 0;
 }
@@ -606,6 +607,12 @@ sub getcharges {
     return (@results);
 }
 
+sub ModNote {
+    my ( $borrowernumber, $accountno, $note ) = @_;
+    my $dbh = C4::Context->dbh;
+    my $sth = $dbh->prepare('UPDATE accountlines SET note = ? WHERE borrowernumber = ? AND accountno = ?');
+    $sth->execute( $note, $borrowernumber, $accountno );
+}
 
 sub getcredits {
        my ( $date, $date2 ) = @_;
index 484d4e1..85d1c18 100644 (file)
@@ -914,7 +914,7 @@ sub userenv {
     my $var = $context->{"activeuser"};
     return $context->{"userenv"}->{$var} if (defined $var and defined $context->{"userenv"}->{$var});
     # insecure=1 management
-    if ($context->{"dbh"} && $context->preference('insecure')) {
+    if ($context->{"dbh"} && $context->preference('insecure') eq 'yes') {
         my %insecure;
         $insecure{flags} = '16382';
         $insecure{branchname} ='Insecure';
index 1122826..e3c6f42 100644 (file)
@@ -2299,6 +2299,8 @@ CREATE TABLE `accountlines` (
   `timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
   `notify_id` int(11) NOT NULL default 0,
   `notify_level` int(2) NOT NULL default 0,
+  `note` text NULL default NULL,
+  `manager_id` int(11) NULL,
   KEY `acctsborridx` (`borrowernumber`),
   KEY `timeidx` (`timestamp`),
   KEY `itemnumber` (`itemnumber`),
index 61bae05..7729a7e 100755 (executable)
@@ -4277,6 +4277,14 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
     SetVersion ($DBversion);
 }
 
+$DBversion = '3.03.00.049';
+if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
+    $dbh->do("ALTER TABLE `accountlines` ADD `note` text NULL default NULL");
+    $dbh->do("ALTER TABLE `accountlines` ADD `manager_id` int( 11 ) NULL ");
+    print "Upgrade to $DBversion done (adding note and manager_id fields in accountlines table)\n";
+    SetVersion($DBversion);
+}
+
 =head1 FUNCTIONS
 
 =head2 DropAllForeignKeys($table)
index ef59ad2..4f66ec5 100644 (file)
@@ -30,6 +30,7 @@
   <tr>
        <th>Date</th>
     <th>Description of charges</th>
+    <th>Note</th>
     <th>Amount</th>
     <th>Outstanding</th>
     <!-- TMPL_IF NAME="reverse_col" -->
@@ -44,6 +45,7 @@
    <!-- TMPL_IF NAME="__odd__" --><tr><!-- TMPL_ELSE --><tr class="highlight"><!-- /TMPL_IF -->
       <td><!-- TMPL_VAR NAME="date" --></td>
       <td><!-- TMPL_VAR NAME="description" -->&nbsp;<!-- TMPL_IF NAME="itemnumber" --><a href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->&amp;itemnumber=<!-- TMPL_VAR NAME="itemnumber" -->">View item</a>&nbsp;<!-- /TMPL_IF --><!-- TMPL_IF NAME="printtitle" --> <!-- TMPL_VAR NAME="title" escape="html" --><!-- /TMPL_IF --></td>
+      <td><!-- TMPL_VAR NAME="note" --></td>
       <!-- TMPL_IF NAME="amountcredit" --><td class="credit"><!-- TMPL_ELSE --><td class="debit"><!-- /TMPL_IF --><!-- TMPL_VAR NAME="amount" --></td>
       <!-- TMPL_IF NAME="amountoutstandingcredit" --><td class="credit"><!-- TMPL_ELSE --><td class="debit"><!-- /TMPL_IF --><!-- TMPL_VAR NAME="amountoutstanding" --></td>
     <!-- TMPL_IF NAME="reverse_col" -->
index 16f7a7b..d23cf18 100644 (file)
@@ -43,6 +43,7 @@ $(document).ready(function(){
 </select></li>
        <li><label for="barcode">Barcode: </label><input type="text" name="barcode" id="barcode" /></li>
        <li><label for="desc">Description: </label><input type="text" name="desc" size="50" id="desc" /></li>
+    <li><label for="note">Note: </label><input type="text" name="note" size="50" id="note" /></li>
        <li><label for="amount">Amount: </label><input type="text" name="amount" id="amount" /> Example: 5.00</li>
 </ol></fieldset>
 
index a7c49e8..0062bfe 100644 (file)
@@ -67,6 +67,7 @@ type_fees['<!-- TMPL_VAR NAME="authorised_value" -->'] = "<!-- TMPL_VAR NAME="li
       </li>
        <li><label for="barcode">Barcode: </label><input type="text" name="barcode" id="barcode" /></li>
        <li><label for="desc">Description: </label><input type="text" name="desc" id="desc" size="50" /></li>
+    <li><label for="note">Note: </label><input type="text" name="note" size="50" id="note" /></li>
        <li><label for="amount">Amount: </label><input type="text" name="amount" id="amount" /> Example: 5.00</li>
        </ol></fieldset>
 <fieldset class="action"><input type="submit" name="add" value="Save" /> <a class="cancel" href="/cgi-bin/koha/members/boraccount.pl?borrowernumber=<!-- TMPL_VAR NAME="borrowernumber" -->">Cancel</a></fieldset>
index 1177ba2..99fdc2a 100644 (file)
@@ -32,6 +32,7 @@
 <tr>
        <th>Fines &amp; Charges</th>
        <th>Description</th>
+    <th>Note</th>
        <th>Account Type</th>
        <th>Notify id</th>
        <th>Level</th>
        <input type="hidden" name="totals<!-- TMPL_VAR name="i" -->" value="<!-- TMPL_VAR name="totals" -->" />
        </td>
        <td><!-- TMPL_VAR name="description" --> <!-- TMPL_VAR name="title" escape="html" --></td>
+    <td>
+        <!-- TMPL_IF NAME="net_balance" -->
+        <input type="text" name="note<!-- TMPL_VAR name="i" -->" value="
+        <!-- /TMPL_IF -->
+        <!-- TMPL_VAR name="note" -->
+        <!-- TMPL_IF NAME="net_balance" -->" /><!-- /TMPL_IF -->
+    </td>
        <td><!-- TMPL_VAR name="accounttype" --></td>
        <td><!-- TMPL_VAR name="notify_id" --></td>
        <td><!-- TMPL_VAR name="notify_level" --></td>
 <!-- TMPL_IF  NAME="total"-->
 <tr>
 
-       <td colspan="6">Sub Total</td>
+       <td colspan="7">Sub Total</td>
        <td><!-- TMPL_VAR name="total" --></td>
 </tr>
 <!--/TMPL_IF-->
 <!-- /TMPL_LOOP  -->
 <tr>
-       <td colspan="6">Total Due</td>
+       <td colspan="7">Total Due</td>
        <td><!-- TMPL_VAR name="total" --></td>
 </tr>
 </table>
index 7db4bbd..7d57fa5 100755 (executable)
@@ -43,14 +43,17 @@ my $data=GetMember('borrowernumber' => $borrowernumber);
 my $add=$input->param('add');
 
 if ($add){
-    my $barcode=$input->param('barcode');
-    my $itemnum = GetItemnumberFromBarcode($barcode) if $barcode;
-    my $desc=$input->param('desc');
-    my $amount=$input->param('amount') || 0;
-    $amount = -$amount;
-    my $type=$input->param('type');
-    manualinvoice($borrowernumber,$itemnum,$desc,$type,$amount);
-    print $input->redirect("/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber");
+    if(checkauth($input)) {
+        my $barcode = $input->param('barcode');
+        my $itemnum = GetItemnumberFromBarcode($barcode) if $barcode;
+        my $desc    = $input->param('desc');
+        my $note    = $input->param('note');
+        my $amount  = $input->param('amount') || 0;
+        $amount = -$amount;
+        my $type = $input->param('type');
+        manualinvoice( $borrowernumber, $itemnum, $desc, $type, $amount, $note );
+        print $input->redirect("/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber");
+    }
 } else {
        my ($template, $loggedinuser, $cookie)
          = get_template_and_user({template_name => "members/mancredit.tmpl",
index 521989b..f804e52 100755 (executable)
@@ -42,32 +42,35 @@ my $borrowernumber=$input->param('borrowernumber');
 my $data=GetMember('borrowernumber'=>$borrowernumber);
 my $add=$input->param('add');
 if ($add){
-#  print $input->header;
-    my $barcode=$input->param('barcode');
-    my $itemnum = GetItemnumberFromBarcode($barcode) if $barcode;
-    my $desc=$input->param('desc');
-    my $amount=$input->param('amount');
-    my $type=$input->param('type');
-    my $error=manualinvoice($borrowernumber,$itemnum,$desc,$type,$amount);
-       if ($error){
-               my ($template, $loggedinuser, $cookie)
-                 = get_template_and_user({template_name => "members/maninvoice.tmpl",
-                                       query => $input,
-                                       type => "intranet",
-                                       authnotrequired => 0,
-                                       flagsrequired => {borrowers => 1},
-                                       debug => 1,
-                                       });
-               if ($error =~ /FOREIGN KEY/ && $error =~ /itemnumber/){
-                       $template->param('ITEMNUMBER' => 1);
-               }
-               $template->param('ERROR' => $error);
-        output_html_with_http_headers $input, $cookie, $template->output;
-       }
-       else {
-               print $input->redirect("/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber");
-               exit;
-       }
+    if(checkauth($input)) {
+        #  print $input->header;
+        my $barcode=$input->param('barcode');
+        my $itemnum = GetItemnumberFromBarcode($barcode) if $barcode;
+        my $desc=$input->param('desc');
+        my $amount=$input->param('amount');
+        my $type=$input->param('type');
+        my $note    = $input->param('note');
+        my $error   = manualinvoice( $borrowernumber, $itemnum, $desc, $type, $amount, $note );
+        if ($error) {
+            my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
+                {   template_name   => "members/maninvoice.tmpl",
+                    query           => $input,
+                    type            => "intranet",
+                    authnotrequired => 0,
+                    flagsrequired   => { borrowers => 1 },
+                    debug           => 1,
+                }
+            );
+            if ( $error =~ /FOREIGN KEY/ && $error =~ /itemnumber/ ) {
+                $template->param( 'ITEMNUMBER' => 1 );
+            }
+            $template->param( 'ERROR' => $error );
+            output_html_with_http_headers $input, $cookie, $template->output;
+        } else {
+            print $input->redirect("/cgi-bin/koha/members/boraccount.pl?borrowernumber=$borrowernumber");
+            exit;
+        }
+    }
 } else {
 
        my ($template, $loggedinuser, $cookie)
index 06e103d..4ecdcc9 100755 (executable)
@@ -84,7 +84,14 @@ for ( my $i = 0 ; $i < @names ; $i++ ) {
         makepayment( $borrowernumber, $accountno, $amount, $user, $branch );
         $check = 2;
     }
+    if ( $temp eq 'no'||$temp eq 'yes'||$temp eq 'wo') {
+        my $borrowernumber = $input->param( $names[ $i + 5 ] );
+        my $accountno      = $input->param( $names[ $i + 6 ] );
+        my $note     = $input->param( $names[ $i + 10 ] );
+        ModNote( $borrowernumber, $accountno, $note );
+    }
 }
+
 my $total = $input->param('total') || '';
 if ( $check == 0 ) {
     if ( $total ne '' ) {
@@ -115,6 +122,7 @@ if ( $check == 0 ) {
                 $line{borrowernumber} = $borrowernumber;
                 $line{accountno}      = $accts->[$i]{'accountno'};
                 $line{description}    = $accts->[$i]{'description'};
+                $line{note}           = $accts->[$i]{'note'};
                 $line{title}          = $accts->[$i]{'title'};
                 $line{notify_id}      = $accts->[$i]{'notify_id'};
                 $line{notify_level}   = $accts->[$i]{'notify_level'};