Updates
[koha.git] / moremember.pl
index a4cd034..958e434 100755 (executable)
 # Suite 330, Boston, MA  02111-1307 USA
 
 use strict;
+use C4::Auth;
 use C4::Context;
 use C4::Output;
+use C4::Interface::CGI::Output;
+use C4::Interface::CGI::Template;
 use CGI;
 use C4::Search;
 use Date::Manip;
+use C4::Date;
 use C4::Reserves2;
 use C4::Circulation::Renewals2;
 use C4::Circulation::Circ2;
@@ -46,9 +50,14 @@ my $dbh = C4::Context->dbh;
 
 my $input = new CGI;
 
-my $theme = $input->param('theme'); # only used if allowthemeoverride is set
-my %tmpldata = pathtotemplate ( template => 'moremember.tmpl', theme => $theme );
-my $template = HTML::Template->new(filename => $tmpldata{'path'}, die_on_bad_params => 0);
+my ($template, $loggedinuser, $cookie)
+    = get_template_and_user({template_name => "members/moremember.tmpl",
+                            query => $input,
+                            type => "intranet",
+                            authnotrequired => 0,
+                            flagsrequired => {borrowers => 1},
+                            debug => 1,
+                            });
 
 my $bornum=$input->param('bornum');
 
@@ -56,20 +65,26 @@ my $bornum=$input->param('bornum');
 
 my $data=borrdata('',$bornum);
 
-$data->{'dateenrolled'} = slashifyDate($data->{'dateenrolled'});
-$data->{'expiry'} = slashifyDate($data->{'expiry'});
-$data->{'dateofbirth'} = slashifyDate($data->{'dateofbirth'});
+$template->param($data->{'categorycode'} => 1); # in template <TMPL_IF name="I"> => instutitional (A for Adult & C for children)
+
+$data->{'dateenrolled'} = format_date($data->{'dateenrolled'});
+$data->{'expiry'} = format_date($data->{'expiry'});
+$data->{'dateofbirth'} = format_date($data->{'dateofbirth'});
+$data->{'IS_ADULT'} = ($data->{'categorycode'} ne 'I');
 
 $data->{'ethnicity'} = fixEthnicity($data->{'ethnicity'});
 
+$data->{&expand_sex_into_predicate($data->{'sex'})} = 1;
+
 if ($data->{'categorycode'} eq 'C'){
-    my $data2=borrdata('',$data->{'guarantor'});
-    $data->{'streetaddress'}=$data2->{'streetaddress'};
-    $data->{'city'}=$data2->{'city'};
-    $data->{'physstreet'}=$data2->{'phystreet'};
-    $data->{'streetcity'}=$data2->{'streetcity'};
-    $data->{'phone'}=$data2->{'phone'};
-    $data->{'phoneday'}=$data2->{'phoneday'};
+       my $data2=borrdata('',$data->{'guarantor'});
+       $data->{'streetaddress'}=$data2->{'streetaddress'};
+       $data->{'city'}=$data2->{'city'};
+       $data->{'physstreet'}=$data2->{'physstreet'};
+       $data->{'streetcity'}=$data2->{'streetcity'};
+       $data->{'phone'}=$data2->{'phone'};
+       $data->{'phoneday'}=$data2->{'phoneday'};
+       $data->{'zipcode'} = $data2->{'zipcode'};
 }
 
 
@@ -78,123 +93,91 @@ if ($data->{'ethnicity'} || $data->{'ethnotes'}) {
 }
 
 if ($data->{'categorycode'} ne 'C'){
-  $template->param(isguarantee => 1);
-  # FIXME
-  # It looks like the $i is only being returned to handle walking through
-  # the array, which is probably better done as a foreach loop.
-  #
-  my ($count,$guarantees)=findguarantees($data->{'borrowernumber'});
-  my @guaranteedata;
-  for (my $i=0;$i<$count;$i++){
-    push (@guaranteedata, {borrowernumber => $guarantees->[$i]->{'borrowernumber'},
-                          cardnumber => $guarantees->[$i]->{'cardnumber'}});
-  }
-  $template->param(guaranteeloop => \@guaranteedata);
+       $template->param(isguarantee => 1);
+       # FIXME
+       # It looks like the $i is only being returned to handle walking through
+       # the array, which is probably better done as a foreach loop.
+       #
+       my ($count,$guarantees)=findguarantees($data->{'borrowernumber'});
+       my @guaranteedata;
+       for (my $i=0;$i<$count;$i++){
+               push (@guaranteedata, {borrowernumber => $guarantees->[$i]->{'borrowernumber'},
+                                       cardnumber => $guarantees->[$i]->{'cardnumber'},
+                                       name => $guarantees->[$i]->{'firstname'} . " " . $guarantees->[$i]->{'surname'}});
+       }
+       $template->param(guaranteeloop => \@guaranteedata);
 
 } else {
-  my ($guarantor)=findguarantor($data->{'borrowernumber'});
-  unless ($guarantor->{'borrowernumber'} == 0){
-    $template->param(guarantorborrowernumber => $guarantor->{'borrowernumber'}, guarantorcardnumber => $guarantor->{'cardnumber'});
-  }
+       my ($guarantor)=findguarantor($data->{'borrowernumber'});
+       unless ($guarantor->{'borrowernumber'} == 0){
+               $template->param(guarantorborrowernumber => $guarantor->{'borrowernumber'}, guarantorcardnumber => $guarantor->{'cardnumber'});
+       }
 }
 
 my %bor;
 $bor{'borrowernumber'}=$bornum;
 
-# FIXME
-# it looks like $numaccts is a temp variable and that the
-# for (my $i;$i<$numaccts;$i++)
-# can be turned into a foreach loop instead
-#
+# Converts the branchcode to the branch name
+$data->{'branchcode'} = &getbranchname($data->{'branchcode'});
+
+# Converts the categorycode to the description
+$data->{'categorycode'} = &getborrowercategory($data->{'categorycode'});
+
 my ($numaccts,$accts,$total)=getboracctrecord('',\%bor);
-#if ($numaccts > 10){
-#  $numaccts=10;
-#}
-my @accountdata;
-for (my$i=0;$i<$numaccts;$i++){
-  my $amount= $accts->[$i]{'amount'} + 0.00;
-  my $amount2= $accts->[$i]{'amountoutstanding'} + 0.00;
-  my %row = %$accts->[$i];
-  if ($amount2 != 0){
-    my $item=" &nbsp; ";
-    $row{'date'} = slashifyDate($accts->[$i]{'date'});
-
-    if ($accts->[$i]{'accounttype'} ne 'Res'){
-      #get item data
-      #$item=
-    }
-
-    # FIXME
-    # why set this variable if it's not going to be used?
-    #
-    my $env;
-    if ($accts->[$i]{'accounttype'} ne 'Res'){
-      my $iteminfo=C4::Circulation::Circ2::getiteminformation($env,$accts->[$i]->{'itemnumber'},'');
-   # FIXME, seems to me $iteminfo gets not defined
-      %row = (%row , %$iteminfo) if $iteminfo;
-    }
-  }
-  push (@accountdata, \%row);
-}
 
 my ($count,$issue)=borrissues($bornum);
 my $today=ParseDate('today');
 my @issuedata;
 for (my $i=0;$i<$count;$i++){
-  my $datedue=ParseDate($issue->[$i]{'date_due'});
-  $issue->[$i]{'date_due'} = slashifyDate($issue->[$i]{'date_due'});
-  my %row = %{$issue->[$i]};
-  if ($datedue < $today){
-    $row{'red'}=1; #print "<font color=red>";
-  }
-  #find the charge for an item
-  # FIXME - This is expecting
-  # &C4::Circulation::Renewals2::calc_charges, but it's getting
-  # &C4::Circulation::Circ2::calc_charges, which only returns one
-  # element, so itemtype isn't being set.
-  # But &C4::Circulation::Renewals2::calc_charges doesn't appear to
-  # return the correct item type either (or a properly-formatted
-  # charge, for that matter).
-  my ($charge,$itemtype)=calc_charges(undef,$dbh,$issue->[$i]{'itemnumber'},$bornum);
-  $row{'itemtype'}=$itemtype;
-  $row{'charge'}=$charge;
-
-  #check item is not reserved
-  my ($restype,$reserves)=CheckReserves($issue->[$i]{'itemnumber'});
-  if ($restype){
-    print "<TD><a href=/cgi-bin/koha/request.pl?bib=$issue->[$i]{'biblionumber'}>On Request - no renewals</a></td></tr>";
-#  } elsif ($issue->[$i]->{'renewals'} > 0) {
-#      print "<TD>Previously Renewed - no renewals</td></tr>";
-  } else {
-    $row{'norenew'}=0;
-  }
-  push (@issuedata, \%row);
+       my $datedue=ParseDate($issue->[$i]{'date_due'});
+       $issue->[$i]{'date_due'} = format_date($issue->[$i]{'date_due'});
+       my %row = %{$issue->[$i]};
+       if ($datedue < $today){
+               $row{'red'}=1; #print "<font color=red>";
+       }
+       #find the charge for an item
+       # FIXME - This is expecting
+       # &C4::Circulation::Renewals2::calc_charges, but it's getting
+       # &C4::Circulation::Circ2::calc_charges, which only returns one
+       # element, so itemtype isn't being set.
+       # But &C4::Circulation::Renewals2::calc_charges doesn't appear to
+       # return the correct item type either (or a properly-formatted
+       # charge, for that matter).
+       my ($charge,$itemtype)=calc_charges(undef,$dbh,$issue->[$i]{'itemnumber'},$bornum);
+       $row{'itemtype'}=&ItemType($itemtype);
+       $row{'charge'}=$charge;
+
+       #check item is not reserved
+       my ($restype,$reserves)=CheckReserves($issue->[$i]{'itemnumber'});
+       if ($restype){
+               print "<TD><a href=/cgi-bin/koha/request.pl?bib=$issue->[$i]{'biblionumber'}>On Request - no renewals</a></td></tr>";
+               #  } elsif ($issue->[$i]->{'renewals'} > 0) {
+               #      print "<TD>Previously Renewed - no renewals</td></tr>";
+       } else {
+               $row{'norenew'}=0;
+       }
+       push (@issuedata, \%row);
 }
 
 my ($rescount,$reserves)=FindReserves('',$bornum); #From C4::Reserves2
 
-# FIXME
-# does it make sense to turn this into a foreach my $i (0..$rescount)
-# kind of loop?
-#
 my @reservedata;
-for (my $i=0;$i<$rescount;$i++){
-  $reserves->[$i]{'reservedate2'} = slashifyDate($reserves->[$i]{'reservedate'});
-  my $restitle;
-  my %row = %$reserves->[$i];
-  if ($reserves->[$i]{'constrainttype'} eq 'o'){
-    $restitle=getreservetitle($reserves->[$i]{'biblionumber'},$reserves->[$i]{'borrowernumber'},$reserves->[$i]{'reservedate'},$reserves->[$i]{'timestamp'});
-    %row =  (%row , %$restitle);
-  }
-  push (@reservedata, \%row);
+foreach my $reserveline (@$reserves) {
+       $reserveline->{'reservedate2'} = format_date($reserveline->{'reservedate'});
+       my $restitle;
+       my %row = %$reserveline;
+       if ($reserveline->{'constrainttype'} eq 'o'){
+               $restitle=getreservetitle($reserveline->{'biblionumber'},$reserveline->{'borrowernumber'},$reserveline->{'reservedate'},$reserveline->{'rtimestamp'});
+               %row =  (%row , %$restitle) if $restitle;
+       }
+       push (@reservedata, \%row);
 }
 
 $template->param($data);
-$template->param(startmenumember => join('', startmenu('member')),
-                endmenumember   => join('', endmenu('member')),
+$template->param(
                 bornum          => $bornum,
-                accountloop     => \@accountdata,
+                totaldue =>$total,
                 issueloop       => \@issuedata,
                 reserveloop     => \@reservedata);
 
-print "Content-Type: text/html\n\n", $template->output;
+output_html_with_http_headers $input, $cookie, $template->output;