use C4::Context;
use String::Random qw( random_string );
use Scalar::Util qw( looks_like_number );
-use Date::Calc qw/Today Add_Delta_YM check_date Date_to_Days/;
+use Date::Calc qw/Today check_date Date_to_Days/;
use C4::Log; # logaction
use C4::Overdues;
use C4::Reserves;
use Koha::Holds;
use Koha::List::Patron;
use Koha::Patrons;
+use Koha::Patron::Categories;
our (@ISA,@EXPORT,@EXPORT_OK,$debug);
&GetBorrowersWhoHaveNeverBorrowed
&GetBorrowersWithIssuesHistoryOlderThan
- &GetExpiryDate
&GetUpcomingMembershipExpires
&IssueSlip
if ( $data{'userid'} eq '' || !Check_Userid( $data{'userid'} ) );
# add expiration date if it isn't already there
- unless ( $data{'dateexpiry'} ) {
- $data{'dateexpiry'} = GetExpiryDate( $data{'categorycode'}, output_pref( { dt => dt_from_string, dateonly => 1, dateformat => 'iso' } ) );
- }
+ $data{dateexpiry} ||= Koha::Patron::Categories->find( $data{categorycode} )->get_expiry_date;
# add enrollment date if it isn't already there
unless ( $data{'dateenrolled'} ) {
return $data->{'primaryemail'} || '';
}
-=head2 GetExpiryDate
-
- $expirydate = GetExpiryDate($categorycode, $dateenrolled);
-
-Calculate expiry date given a categorycode and starting date. Date argument must be in ISO format.
-Return date is also in ISO format.
-
-=cut
-
-sub GetExpiryDate {
- my ( $categorycode, $dateenrolled ) = @_;
- my $enrolments;
- if ($categorycode) {
- my $dbh = C4::Context->dbh;
- my $sth = $dbh->prepare("SELECT enrolmentperiod,enrolmentperioddate FROM categories WHERE categorycode=?");
- $sth->execute($categorycode);
- $enrolments = $sth->fetchrow_hashref;
- }
- # die "GetExpiryDate: for enrollmentperiod $enrolmentperiod (category '$categorycode') starting $dateenrolled.\n";
- my @date = split (/-/,$dateenrolled);
- if($enrolments->{enrolmentperiod}){
- return sprintf("%04d-%02d-%02d", Add_Delta_YM(@date,0,$enrolments->{enrolmentperiod}));
- }else{
- return $enrolments->{enrolmentperioddate};
- }
-}
-
=head2 GetUpcomingMembershipExpires
my $expires = GetUpcomingMembershipExpires({
eval { output_pref( { dt => dt_from_string( $borrower->{'dateexpiry'} ), dateonly => 1, dateformat => 'iso' } ); }
:
output_pref( { dt => dt_from_string, dateonly => 1, dateformat => 'iso' } );
- $date = GetExpiryDate( $borrower->{'categorycode'}, $date );
+ $date = Koha::Patron::Categories->find( $borrower->{categorycode} )->get_expiry_date( $date );
}
my $sth = $dbh->do(<<EOF);
UPDATE borrowers
if ( ($op eq 'modify' || $op eq 'insert' || $op eq 'save'|| $op eq 'duplicate') and ($step == 0 or $step == 3 )){
unless ($newdata{'dateexpiry'}){
- my $arg2 = $newdata{'dateenrolled'} || output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 });
- $newdata{'dateexpiry'} = GetExpiryDate($newdata{'categorycode'},$arg2);
+ my $patron_category = Koha::Patron::Categories->find( $newdata{categorycode} );
+ $newdata{'dateexpiry'} = $patron_category->get_expiry_date( $newdata{dateenrolled} );
}
}
}
if ( $op eq 'duplicate' ) {
$data{'dateenrolled'} = output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 });
- $data{'dateexpiry'} = GetExpiryDate( $data{'categorycode'}, $data{'dateenrolled'} );
+ my $patron_category = Koha::Patron::Categories->find( $data{categorycode} );
+ $data{dateexpiry} = $patron_category->get_expiry_date( $data{dateenrolled} );
}
if (C4::Context->preference('uppercasesurnames')) {
$data{'surname'} &&= uc( $data{'surname'} );
}
push @feedback, {feedback=>1, name=>'headerrow', value=>join(', ', @csvcolumns)};
- my $today_iso = output_pref( { dt => dt_from_string, dateonly => 1, dateformat => 'iso' });
+ my $today = output_pref;
my @criticals = qw(surname branchcode categorycode); # there probably should be others
my @bad_dates; # I've had a few.
LINE: while ( my $borrowerline = <$handle> ) {
push @missing_criticals, {key=>$_, line=>$. , lineraw=>$borrowerline, bad_date=>1};
}
}
- $borrower{dateenrolled} = $today_iso unless $borrower{dateenrolled};
- $borrower{dateexpiry} = GetExpiryDate($borrower{categorycode},$borrower{dateenrolled}) unless $borrower{dateexpiry};
+ $borrower{dateenrolled} ||= $today;
+ $borrower{dateexpiry} ||= Koha::Patron::Categories->find( $borrower{categorycode} )->get_expiry_date( $borrower{dateenrolled} );
my $borrowernumber;
my $member;
if ( ($matchpoint eq 'cardnumber') && ($borrower{'cardnumber'}) ) {