Bug 6716 - Document holiday tables
[koha_gimpoz] / circ / circulation.pl
index e521e19..da4878f 100755 (executable)
@@ -42,6 +42,7 @@ use Date::Calc qw(
   Add_Delta_Days
   Date_to_Days
 );
+use List::MoreUtils qw/uniq/;
 
 
 #
@@ -229,7 +230,7 @@ if ($borrowernumber) {
             0 , $borrower->{'enrolmentperiod'});
     }
     # if the expiry date is before today ie they have expired
-    if ( $warning_year*$warning_month*$warning_day==0 
+    if ( !$borrower->{'dateexpiry'} || $warning_year*$warning_month*$warning_day==0
         || Date_to_Days($today_year,     $today_month, $today_day  ) 
          > Date_to_Days($warning_year, $warning_month, $warning_day) )
     {
@@ -237,7 +238,7 @@ if ($borrowernumber) {
         $template->param(
             flagged  => "1",
             noissues => "1",
-            expired     => format_date($borrower->{dateexpiry}),
+            expired => "1",
             renewaldate => format_date("$renew_year-$renew_month-$renew_day")
         );
     }
@@ -403,15 +404,24 @@ my $todaysissues = '';
 my $previssues   = '';
 my @todaysissues;
 my @previousissues;
+my @relissues;
+my @relprevissues;
+my $displayrelissues;
 
 my $totalprice = 0;
 
-if ($borrower) {
-# get each issue of the borrower & separate them in todayissues & previous issues
-    my ($issueslist) = GetPendingIssues($borrower->{'borrowernumber'});
+sub build_issue_data {
+    my $issueslist = shift;
+    my $relatives = shift;
+
     # split in 2 arrays for today & previous
     foreach my $it ( @$issueslist ) {
         my $itemtypeinfo = getitemtypeinfo( (C4::Context->preference('item-level_itypes')) ? $it->{'itype'} : $it->{'itemtype'} );
+
+        # Getting borrower details
+        my $memberdetails = GetMemberDetails($it->{'borrowernumber'});
+        $it->{'borrowername'} = $memberdetails->{'firstname'} . " " . $memberdetails->{'surname'};
+        $it->{'cardnumber'} = $memberdetails->{'cardnumber'};
         # set itemtype per item-level_itype syspref - FIXME this is an ugly hack
         $it->{'itemtype'} = ( C4::Context->preference( 'item-level_itypes' ) ) ? $it->{'itype'} : $it->{'itemtype'};
 
@@ -439,17 +449,38 @@ if ($borrower) {
         $it->{'renew_failed'} = $renew_failed{$it->{'itemnumber'}};
 
         if ( $todaysdate eq $it->{'issuedate'} or $todaysdate eq $it->{'lastreneweddate'} ) {
-            push @todaysissues, $it;
+            (!$relatives) ? push @todaysissues, $it : push @relissues, $it;
         } else {
-            push @previousissues, $it;
+            (!$relatives) ? push @previousissues, $it : push @relprevissues, $it;
         }
     }
+}
+
+if ($borrower) {
+
+    # Getting borrower relatives
+    my @relborrowernumbers = GetMemberRelatives($borrower->{'borrowernumber'});
+    #push @borrowernumbers, $borrower->{'borrowernumber'};
+
+    # get each issue of the borrower & separate them in todayissues & previous issues
+    my $issueslist = GetPendingIssues($borrower->{'borrowernumber'});
+    my $relissueslist = [];
+    if ( @relborrowernumbers ) {
+        $relissueslist = GetPendingIssues(@relborrowernumbers);
+    }
+
+    build_issue_data($issueslist, 0);
+    build_issue_data($relissueslist, 1);
+  
+    $displayrelissues = scalar($relissueslist);
+
     if ( C4::Context->preference( "todaysIssuesDefaultSortOrder" ) eq 'asc' ) {
         @todaysissues   = sort { $a->{'timestamp'} cmp $b->{'timestamp'} } @todaysissues;
     }
     else {
         @todaysissues   = sort { $b->{'timestamp'} cmp $a->{'timestamp'} } @todaysissues;
     }
+
     if ( C4::Context->preference( "previousIssuesDefaultSortOrder" ) eq 'asc' ){
         @previousissues = sort { $a->{'date_due'} cmp $b->{'date_due'} } @previousissues;
     }
@@ -627,6 +658,7 @@ $template->param(
     emailpro          => $borrower->{'emailpro'},
     borrowernotes     => $borrower->{'borrowernotes'},
     city              => $borrower->{'city'},
+    state              => $borrower->{'state'},
     zipcode           => $borrower->{'zipcode'},
     country           => $borrower->{'country'},
     phone             => $borrower->{'phone'} || $borrower->{'mobile'},
@@ -641,6 +673,9 @@ $template->param(
     totaldue          => sprintf('%.2f', $total),
     todayissues       => \@todaysissues,
     previssues        => \@previousissues,
+    relissues                  => \@relissues,
+    relprevissues              => \@relprevissues,
+    displayrelissues           => $displayrelissues,
     inprocess         => $inprocess,
     memberofinstution => $member_of_institution,
     CGIorganisations  => $CGIorganisations,