X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=circ%2Fcirculation.pl;h=049233063efa4777820869fed69a005509cf05c3;hb=eedb94442ee85c048fb15414941ee7c092cc36c8;hp=07aa6497442f5ea25a2e1433497b55480833971e;hpb=58d3b163d0a0396da6888cbb7e1921588deaf714;p=koha_fer diff --git a/circ/circulation.pl b/circ/circulation.pl index 07aa649744..049233063e 100755 --- a/circ/circulation.pl +++ b/circ/circulation.pl @@ -26,8 +26,8 @@ use strict; use CGI; use C4::Output; use C4::Print; -use C4::Auth; -use C4::Date; +use C4::Auth qw/:DEFAULT get_session/; +use C4::Dates qw/format_date/; use C4::Branch; # GetBranches use C4::Koha; # GetPrinter use C4::Circulation; @@ -59,7 +59,7 @@ if ($branch){ # update our session so the userenv is updated my $dbh=C4::Context->dbh; my $sessionID = $query->cookie("CGISESSID") ; - my $session = new CGI::Session("driver:MySQL", $sessionID, {Handle=>$dbh}); + my $session = get_session($sessionID); $session->param('branch',$branch); my $branchname = GetBranchName($branch); $session->param('branchname',$branchname); @@ -70,7 +70,7 @@ if ($printer){ # update our session so the userenv is updated my $dbh=C4::Context->dbh; my $sessionID = $query->cookie("CGISESSID") ; - my $session = new CGI::Session("driver:MySQL", $sessionID, {Handle=>$dbh}); + my $session = get_session($sessionID); $session->param('branchprinter',$printer); } @@ -89,6 +89,9 @@ my $branches = GetBranches(); my $printers = GetPrinters(); +my @failedrenews = $query->param('failedrenew'); +my @renew_failed; +for (@failedrenews) { $renew_failed[$_] = 1; } my $findborrower = $query->param('findborrower'); $findborrower =~ s|,| |g; @@ -108,14 +111,20 @@ $printer = C4::Context->userenv->{'branchprinter'}; } my $barcode = $query->param('barcode') || ''; + +# strip whitespace +$barcode =~ s/\s*//g; + my $year = $query->param('year'); my $month = $query->param('month'); my $day = $query->param('day'); my $stickyduedate = $query->param('stickyduedate'); +my $duedatespec = $query->param('duedatespec'); my $issueconfirmed = $query->param('issueconfirmed'); my $cancelreserve = $query->param('cancelreserve'); my $organisation = $query->param('organisations'); my $print = $query->param('print'); +my $newexpiry = $query->param('dateexpiry'); #set up cookie..... # my $branchcookie; @@ -126,8 +135,19 @@ my $print = $query->param('print'); # } # +my ($datedue,$invalidduedate); +if ($duedatespec) { + $datedue = C4::Dates->new($duedatespec); + $invalidduedate=1 unless $datedue; +} -my @datearr = localtime( time() ); +#if (defined($year)) { +# $duedatespec = "$year-$month-$day"; +#} else { +# ($year, $month, $day) = ($duedatespec) ? split /-/, $duedatespec : (0,0,0); +#} + +my @datearr = localtime(); # FIXME - Could just use POSIX::strftime("%Y%m%d", localtime); my $todaysdate = @@ -182,7 +202,6 @@ if ($findborrower) { # get the borrower information..... my $borrower; my @lines; - if ($borrowernumber) { $borrower = GetMemberDetails( $borrowernumber, 0 ); my ( $od, $issue, $fines ) = GetMemberIssuesAndFines( $borrowernumber ); @@ -197,27 +216,28 @@ if ($borrowernumber) { my ( $renew_year, $renew_month, $renew_day ) = Add_Delta_YM( $enrol_year, $enrol_month, $enrol_day, 0 , $borrower->{'enrolmentperiod'}) if ($enrol_year*$enrol_month*$enrol_day>0); - # if the expiry date is before today + # if the expiry date is before today ie they have expired if ( $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 ) ) { - - #borrowercard expired or nearly expired, warn the librarian + #borrowercard expired, no issues $template->param( - flagged => "1", - warndeparture => format_date($borrower->{dateexpiry}), + flagged => "1", + noissues => "1", + expired => format_date($borrower->{dateexpiry}), renewaldate => format_date("$renew_year-$renew_month-$renew_day") ); } # check for NotifyBorrowerDeparture - if ($warning_year*$warning_month*$warning_day==0 - || (C4::Context->preference('NotifyBorrowerDeparture') && - Date_to_Days(Add_Delta_Days($warning_year,$warning_month,$warning_day,- C4::Context->preference('NotifyBorrowerDeparture'))) < - Date_to_Days( $today_year, $today_month, $today_day )) ) - { - $template->param("warndeparture" => format_date($borrower->{dateexpiry})); - } + elsif ( C4::Context->preference('NotifyBorrowerDeparture') && + Date_to_Days(Add_Delta_Days($warning_year,$warning_month,$warning_day,- C4::Context->preference('NotifyBorrowerDeparture'))) < + Date_to_Days( $today_year, $today_month, $today_day ) ) + { + # borrower card soon to expire warn librarian + $template->param("warndeparture" => format_date($borrower->{dateexpiry}), + flagged => "1",); + } $template->param( overduecount => $od, issuecount => $issue, @@ -231,20 +251,19 @@ if ($borrowernumber) { # if ($barcode) { - $barcode = cuecatbarcodedecode($barcode); - my ( $datedue, $invalidduedate ) = fixdate( $year, $month, $day ); - if ($issueconfirmed) { + # $barcode = cuecatbarcodedecode($barcode); + + if ($issueconfirmed) { AddIssue( $borrower, $barcode, $datedue, $cancelreserve ); $inprocess = 1; } else { my ( $error, $question ) = - CanBookBeIssued( $borrower, $barcode, $year, $month, $day, - $inprocess ); + CanBookBeIssued( $borrower, $barcode, $datedue , $inprocess ); my $noerror = 1; my $noquestion = 1; # Get the item title for more information - my $getmessageiteminfo = GetBiblioFromItemNumber($barcode); + my $getmessageiteminfo = GetBiblioFromItemNumber(undef,$barcode); foreach my $impossible ( keys %$error ) { $template->param( @@ -262,9 +281,8 @@ if ($barcode) { $noquestion = 0; } $template->param( - day => $day, - month => $month, - year => $year + itemhomebranch => $getmessageiteminfo->{'homebranch'} , + duedatespec => $duedatespec, ); if ( $noerror && ( $noquestion || $issueconfirmed ) ) { AddIssue( $borrower, $barcode, $datedue ); @@ -299,7 +317,7 @@ if ($borrowernumber) { my %getreserv; my %getWaitingReserveInfo; my $getiteminfo = GetBiblioFromItemNumber( $num_res->{'itemnumber'} ); - my $itemtypeinfo = getitemtypeinfo( (C4::Context->preference('item-level_itype')) ? $getiteminfo->{'ccode'} : $getiteminfo->{'itemtype'} ); + my $itemtypeinfo = getitemtypeinfo( (C4::Context->preference('item-level_itype')) ? $getiteminfo->{'itype'} : $getiteminfo->{'itemtype'} ); my ( $transfertwhen, $transfertfrom, $transfertto ) = GetTransfers( $num_res->{'itemnumber'} ); @@ -313,6 +331,7 @@ if ($borrowernumber) { $getreserv{author} = $getiteminfo->{'author'}; $getreserv{barcodereserv} = $getiteminfo->{'barcode'}; $getreserv{itemcallnumber} = $getiteminfo->{'itemcallnumber'}; + $getreserv{biblionumber} = $getiteminfo->{'biblionumber'}; # check if we have a waiting status for reservations if ( $num_res->{'found'} eq 'W' ) { @@ -347,7 +366,7 @@ if ($borrowernumber) { # if we don't have a reserv on item, we put the biblio infos and the waiting position if ( $getiteminfo->{'title'} eq '' ) { - my $getbibinfo = GetBiblioItemData( $num_res->{'biblionumber'} ); + my $getbibinfo = GetBiblioData( $num_res->{'biblionumber'} ); my $getbibtype = getitemtypeinfo( $getbibinfo->{'itemtype'} ); # fixme - we should have item-level reserves here ? $getreserv{color} = 'inwait'; $getreserv{title} = $getbibinfo->{'title'}; @@ -356,7 +375,7 @@ if ($borrowernumber) { $getreserv{itemtype} = $getbibtype->{'description'}; $getreserv{author} = $getbibinfo->{'author'}; $getreserv{itemcallnumber} = '----------'; - + $getreserv{biblionumber} = $num_res->{'biblionumber'}; } push( @reservloop, \%getreserv ); @@ -414,7 +433,7 @@ if ($borrower) { $datedue =~ s/-//g; $it->{'od'} = ($datedue < $todaysdate) ? 1 : 0 ; ($it->{'author'} eq '') and $it->{'author'} = ' '; - + $it->{'renew_failed'} = $renew_failed[$it->{'itemnumber'}]; # ADDED BY JF: NEW ITEMTYPE COUNT DISPLAY $issued_itemtypes_count->{ $it->{'itemtype'} }++; @@ -424,11 +443,22 @@ if ($borrower) { push @previousissues, $it; } } - @todaysissues = sort { $b->{'timestamp'} <=> $a->{'timestamp'} } @todaysissues; - @previousissues = sort { $b->{'date_due' } <=> $a->{'date_due' } } @previousissues; + 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; + } + else { + @previousissues = sort { $b->{'date_due' } cmp $a->{'date_due' } } @previousissues; + } my $i = 1; foreach my $book (@todaysissues) { $book->{'togglecolor'} = (++$i % 2) ? 0 : 1 ; + warn $book->{'timestamp'}; } $i = 1; foreach my $book (@previousissues) { @@ -479,9 +509,9 @@ my $CGIselectborrower; if ($borrowerslist) { foreach ( sort { - $a->{'surname'} - . $a->{'firstname'} cmp $b->{'surname'} - . $b->{'firstname'} + lc $a->{'surname'} + . lc $a->{'firstname'} cmp lc $b->{'surname'} + . lc $b->{'firstname'} } @$borrowerslist ) { @@ -605,6 +635,10 @@ if ( C4::Context->preference("memberofinstitution") ) { $amountold = $temp[1]; +my $borrowercategory = GetBorrowercategory( $borrower->{'categorycode'} ); +my $category_type = $borrowercategory->{'category_type'}; +( $template->param( adultborrower => 1 ) ) if ( $category_type eq 'A' ); + $template->param( issued_itemtypes_count_loop => $issued_itemtypes_loop, findborrower => $findborrower, @@ -615,6 +649,7 @@ $template->param( printername => $printer, firstname => $borrower->{'firstname'}, surname => $borrower->{'surname'}, + dateexpiry => format_date($newexpiry), expiry => $borrower->{'dateexpiry'}, #format_date($borrower->{'dateexpiry'}), categorycode => $borrower->{'categorycode'}, @@ -636,17 +671,14 @@ $template->param( inprocess => $inprocess, memberofinstution => $member_of_institution, CGIorganisations => $CGIorganisations, + circview => 1, + ); # set return date if stickyduedate if ($stickyduedate) { - my $t_year = "year" . $year; - my $t_month = "month" . $month; - my $t_day = "day" . $day; $template->param( - $t_year => 1, - $t_month => 1, - $t_day => 1, + duedatespec => $duedatespec, ); } @@ -655,7 +687,8 @@ if ($stickyduedate) { #} $template->param( - SpecifyDueDate => C4::Context->preference("SpecifyDueDate") + SpecifyDueDate => C4::Context->preference("SpecifyDueDate"), + CircAutocompl => C4::Context->preference("CircAutocompl") , + DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), ); -$template->param( CircAutocompl => C4::Context->preference("CircAutocompl") ); output_html_with_http_headers $query, $cookie, $template->output;