X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=members%2Fmoremember.pl;h=e9675798c351f011de75b0572c87d60aea85e4a0;hb=4913d3a1d7a024b846bbeafe98bbd133d2798533;hp=b766f2f9f7143e1fb7ae47f34db4a7ed691ed609;hpb=49af98afd7dd0a48605a3d77dcc6b24c9b9b549c;p=koha.git diff --git a/members/moremember.pl b/members/moremember.pl index b766f2f9f7..e9675798c3 100755 --- a/members/moremember.pl +++ b/members/moremember.pl @@ -49,12 +49,15 @@ use C4::Letters; use C4::Biblio; use C4::Reserves; use C4::Branch; # GetBranchName +use C4::Overdues qw/CheckBorrowerDebarred/; use C4::Form::MessagingPreferences; -use C4::NewsChannels; #get slip news use List::MoreUtils qw/uniq/; +use C4::Members::Attributes qw(GetBorrowerAttributes); #use Smart::Comments; #use Data::Dumper; +use DateTime; +use Koha::DateUtils; use vars qw($debug); @@ -64,7 +67,7 @@ BEGIN { my $dbh = C4::Context->dbh; -my $input = new CGI; +my $input = CGI->new; $debug or $debug = $input->param('debug') || 0; my $print = $input->param('print'); my $override_limit = $input->param("override_limit") || 0; @@ -131,9 +134,6 @@ my $category_type = $data->{'category_type'}; ### $category_type -# in template => instutitional (A for Adult& C for children) -$template->param( $data->{'categorycode'} => 1 ); - $debug and printf STDERR "dates (enrolled,expiry,birthdate) raw: (%s, %s, %s)\n", map {$data->{$_}} qw(dateenrolled dateexpiry dateofbirth); foreach (qw(dateenrolled dateexpiry dateofbirth)) { my $userdate = $data->{$_}; @@ -148,21 +148,24 @@ foreach (qw(dateenrolled dateexpiry dateofbirth)) { } $data->{'IS_ADULT'} = ( $data->{'categorycode'} ne 'I' ); -for (qw(debarred gonenoaddress lost borrowernotes)) { +for (qw(gonenoaddress lost borrowernotes)) { $data->{$_} and $template->param(flagged => 1) and last; } +my $debar = CheckBorrowerDebarred($borrowernumber); +if ($debar) { + $template->param( 'userdebarred' => 1, 'flagged' => 1 ); + if ( $debar ne "9999-12-31" ) { + $template->param( 'userdebarreddate' => C4::Dates::format_date($debar) ); + $template->param( 'debarredcomment' => $data->{debarredcomment} ); + } +} + $data->{'ethnicity'} = fixEthnicity( $data->{'ethnicity'} ); $data->{ "sex_".$data->{'sex'}."_p" } = 1; my $catcode; if ( $category_type eq 'C') { - if ($data->{guarantorid} ) { - my $data2 = GetMember( 'borrowernumber' => $data->{'guarantorid'} ); - foreach (qw(address address2 city state B_address B_address2 B_city B_state phone mobile zipcode B_zipcode country B_country)) { - $data->{$_} = $data2->{$_}; - } - } my ( $catcodes, $labels ) = GetborCatFromCatType( 'A', 'WHERE category_type = ?' ); my $cnt = scalar(@$catcodes); @@ -242,90 +245,19 @@ if ( C4::Context->preference('OPACPrivacy') ) { # my @borrowernumbers = GetMemberRelatives($borrowernumber); my $issue = GetPendingIssues($borrowernumber); -my $relissue = GetPendingIssues(@borrowernumbers); -my $issuecount = scalar(@$issue); -my $relissuecount = scalar(@$relissue); +my $relissue = []; +if ( @borrowernumbers ) { + $relissue = GetPendingIssues(@borrowernumbers); +} my $roaddetails = &GetRoadTypeDetails( $data->{'streettype'} ); -my $today = POSIX::strftime("%Y-%m-%d", localtime); # iso format -my @issuedata; +my $today = DateTime->now( time_zone => C4::Context->tz); +$today->truncate(to => 'days'); my @borrowers_with_issues; my $overdues_exist = 0; my $totalprice = 0; -my @issuedata = build_issue_data($issue, $issuecount); -my @relissuedata = build_issue_data($relissue, $relissuecount); - -sub build_issue_data { - my $issue = shift; - my $issuecount = shift; - - my $localissue; - - for ( my $i = 0 ; $i < $issuecount ; $i++ ) { - # Getting borrower details - my $memberdetails = GetMemberDetails($issue->[$i]{'borrowernumber'}); - $issue->[$i]{'borrowername'} = $memberdetails->{'firstname'} . " " . $memberdetails->{'surname'}; - $issue->[$i]{'cardnumber'} = $memberdetails->{'cardnumber'}; - my $datedue = $issue->[$i]{'date_due'}; - my $issuedate = $issue->[$i]{'issuedate'}; - $issue->[$i]{'date_due'} = C4::Dates->new($issue->[$i]{'date_due'}, 'iso')->output('syspref'); - $issue->[$i]{'issuedate'} = C4::Dates->new($issue->[$i]{'issuedate'},'iso')->output('syspref'); - my $biblionumber = $issue->[$i]{'biblionumber'}; - my %row = %{ $issue->[$i] }; - $totalprice += $issue->[$i]{'replacementprice'}; - $row{'replacementprice'} = $issue->[$i]{'replacementprice'}; - # item lost, damaged loops - if ($row{'itemlost'}) { - my $fw = GetFrameworkCode($issue->[$i]{'biblionumber'}); - my $category = GetAuthValCode('items.itemlost',$fw); - my $lostdbh = C4::Context->dbh; - my $sth = $lostdbh->prepare("select lib from authorised_values where category=? and authorised_value =? "); - $sth->execute($category, $row{'itemlost'}); - my $loststat = $sth->fetchrow; - if ($loststat) { - $row{'itemlost'} = $loststat; - } - } - if ($row{'damaged'}) { - my $fw = GetFrameworkCode($issue->[$i]{'biblionumber'}); - my $category = GetAuthValCode('items.damaged',$fw); - my $damageddbh = C4::Context->dbh; - my $sth = $damageddbh->prepare("select lib from authorised_values where category=? and authorised_value =? "); - $sth->execute($category, $row{'damaged'}); - my $damagedstat = $sth->fetchrow; - if ($damagedstat) { - $row{'itemdamaged'} = $damagedstat; - } - } - # end lost, damaged - if ( $datedue lt $today ) { - $overdues_exist = 1; - $row{'red'} = 1; - } - if ( $issuedate eq $today ) { - $row{'today'} = 1; - } - - #find the charge for an item - my ( $charge, $itemtype ) = - GetIssuingCharges( $issue->[$i]{'itemnumber'}, $borrowernumber ); - - my $itemtypeinfo = getitemtypeinfo($itemtype); - $row{'itemtype_description'} = $itemtypeinfo->{description}; - $row{'itemtype_image'} = $itemtypeinfo->{imageurl}; - - $row{'charge'} = sprintf( "%.2f", $charge ); - - my ( $renewokay,$renewerror ) = CanBookBeRenewed( $borrowernumber, $issue->[$i]{'itemnumber'}, $override_limit ); - $row{'norenew'} = !$renewokay; - $row{'can_confirm'} = ( !$renewokay && $renewerror ne 'on_reserve' ); - $row{"norenew_reason_$renewerror"} = 1 if $renewerror; - $row{'renew_failed'} = $renew_failed{ $issue->[$i]{'itemnumber'} }; - $row{'return_failed'} = $return_failed{$issue->[$i]{'barcode'}}; - push( @$localissue, \%row ); - } - return $localissue; -} +my @issuedata = build_issue_data($issue); +my @relissuedata = build_issue_data($relissue); ### ############################################################################### @@ -430,8 +362,11 @@ my $branch=C4::Context->userenv->{'branch'}; $template->param(%$data); if (C4::Context->preference('ExtendedPatronAttributes')) { - $template->param(ExtendedPatronAttributes => 1); - $template->param(patron_attributes => C4::Members::Attributes::GetBorrowerAttributes($borrowernumber)); + my $attributes = GetBorrowerAttributes($borrowernumber); + $template->param( + ExtendedPatronAttributes => 1, + extendedattributes => $attributes + ); my @types = C4::Members::AttributeTypes::GetAttributeTypes(); if (scalar(@types) == 0) { $template->param(no_patron_attribute_types => 1); @@ -445,6 +380,8 @@ if (C4::Context->preference('EnhancedMessagingPreferences')) { $template->param(SMSnumber => defined $data->{'smsalertnumber'} ? $data->{'smsalertnumber'} : $data->{'mobile'}); } +# in template => instutitional (A for Adult, C for children) +$template->param( $data->{'categorycode'} => 1 ); $template->param( detailview => 1, AllowRenewalLimitOverride => C4::Context->preference("AllowRenewalLimitOverride"), @@ -452,6 +389,7 @@ $template->param( CANDELETEUSER => $candeleteuser, roaddetails => $roaddetails, borrowernumber => $borrowernumber, + othernames => $data->{'othernames'}, categoryname => $data->{'description'}, reregistration => $reregistration, branch => $branch, @@ -461,8 +399,6 @@ $template->param( totaldue_raw => $total, issueloop => @issuedata, relissueloop => @relissuedata, - issuecount => $issuecount, - relissuecount => $relissuecount, overdues_exist => $overdues_exist, error => $error, $error => 1, @@ -473,15 +409,94 @@ $template->param( "dateformat_" . (C4::Context->preference("dateformat") || '') => 1, samebranch => $samebranch, quickslip => $quickslip, + activeBorrowerRelationship => (C4::Context->preference('borrowerRelationship') ne ''), ); -#Get the slip news items -my $all_koha_news = &GetNewsToDisplay("slip"); -my $koha_news_count = scalar @$all_koha_news; +output_html_with_http_headers $input, $cookie, $template->output; + +sub build_issue_data { + my $issues = shift; -$template->param( - koha_news => $all_koha_news, - koha_news_count => $koha_news_count -); + my $localissue; -output_html_with_http_headers $input, $cookie, $template->output; + foreach my $issue ( @{$issues} ) { + + # Getting borrower details + my $memberdetails = GetMemberDetails( $issue->{borrowernumber} ); + $issue->{borrowername} = + $memberdetails->{firstname} . ' ' . $memberdetails->{surname}; + $issue->{cardnumber} = $memberdetails->{cardnumber}; + my $issuedate; + if ($issue->{issuedate} ) { + $issuedate = $issue->{issuedate}->clone(); + } + + #wtf $issue->{'date_due'} = format_date($issue->[$i]->{issuedate}); + $issue->{date_due} = output_pref( $issue->{date_due} ); + $issue->{issuedate} = output_pref( $issue->{issuedate} ) if defined $issue->{issuedate}; + my $biblionumber = $issue->{biblionumber}; + my %row = %{$issue}; + $totalprice += $issue->{replacementprice}; + + # item lost, damaged loops + if ( $row{'itemlost'} ) { + my $fw = GetFrameworkCode( $issue->{biblionumber} ); + my $category = GetAuthValCode( 'items.itemlost', $fw ); + my $lostdbh = C4::Context->dbh; + my $sth = $lostdbh->prepare( +"select lib from authorised_values where category=? and authorised_value =? " + ); + $sth->execute( $category, $row{'itemlost'} ); + my $loststat = $sth->fetchrow; + if ($loststat) { + $row{'itemlost'} = $loststat; + } + } + if ( $row{'damaged'} ) { + my $fw = GetFrameworkCode( $issue->{biblionumber} ); + my $category = GetAuthValCode( 'items.damaged', $fw ); + my $damageddbh = C4::Context->dbh; + my $sth = $damageddbh->prepare( +"select lib from authorised_values where category=? and authorised_value =? " + ); + $sth->execute( $category, $row{'damaged'} ); + my $damagedstat = $sth->fetchrow; + if ($damagedstat) { + $row{'itemdamaged'} = $damagedstat; + } + } + + # end lost, damaged + if ( $issue->{overdue} ) { + $overdues_exist = 1; + $row{red} = 1; + } + if ($issuedate) { + $issuedate->truncate( to => 'days' ); + if ( DateTime->compare( $issuedate, $today ) == 0 ) { + $row{today} = 1; + } + } + + #find the charge for an item + my ( $charge, $itemtype ) = + GetIssuingCharges( $issue->{itemnumber}, $borrowernumber ); + + my $itemtypeinfo = getitemtypeinfo($itemtype); + $row{'itemtype_description'} = $itemtypeinfo->{description}; + $row{'itemtype_image'} = $itemtypeinfo->{imageurl}; + + $row{'charge'} = sprintf( "%.2f", $charge ); + + my ( $renewokay, $renewerror ) = + CanBookBeRenewed( $borrowernumber, $issue->{itemnumber}, + $override_limit ); + $row{'norenew'} = !$renewokay; + $row{'can_confirm'} = ( !$renewokay && $renewerror ne 'on_reserve' ); + $row{"norenew_reason_$renewerror"} = 1 if $renewerror; + $row{renew_failed} = $renew_failed{ $issue->{itemnumber} }; + $row{return_failed} = $return_failed{ $issue->{barcode} }; + push( @{$localissue}, \%row ); + } + return $localissue; +}