Browse Source

Bug 16911: Koha::Patron::Categories - Move GetExpiryDate to ->get_expiry_date

This patch moves the code from C4::Members::GetExpiryDate to
Koha::Patron::Categories.
Nothing much exiting, please follow test plan in next patches.

Signed-off-by: Aleisha Amohia <aleishaamohia@hotmail.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
16.11.x
Jonathan Druart 8 years ago
committed by Kyle M Hall
parent
commit
92bfc28eb0
  1. 37
      C4/Members.pm
  2. 11
      Koha/Patron/Category.pm
  3. 7
      members/memberentry.pl
  4. 6
      tools/import_borrowers.pl

37
C4/Members.pm

@ -25,7 +25,7 @@ use strict;
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;
@ -43,6 +43,7 @@ use Koha::Database;
use Koha::Holds;
use Koha::List::Patron;
use Koha::Patrons;
use Koha::Patron::Categories;
our (@ISA,@EXPORT,@EXPORT_OK,$debug);
@ -84,7 +85,6 @@ BEGIN {
&GetBorrowersWhoHaveNeverBorrowed
&GetBorrowersWithIssuesHistoryOlderThan
&GetExpiryDate
&GetUpcomingMembershipExpires
&IssueSlip
@ -654,9 +654,7 @@ sub AddMember {
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'} ) {
@ -1220,33 +1218,6 @@ sub GetNoticeEmailAddress {
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({
@ -1513,7 +1484,7 @@ sub ExtendMemberSubscriptionTo {
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

11
Koha/Patron/Category.pm

@ -22,6 +22,7 @@ use Carp;
use C4::Members::Messaging;
use Koha::Database;
use Koha::DateUtils;
use base qw(Koha::Object);
@ -184,6 +185,16 @@ sub _catb_resultset {
return $self->{_catb_resultset};
}
sub get_expiry_date {
my ($self, $date ) = @_;
if ( $self->enrolmentperiod ) {
$date ||= dt_from_string;
return $date->add( months => $self->enrolmentperiod );
} else {
return $self->enrolmentperioddate;
}
}
=head3 type
=cut

7
members/memberentry.pl

@ -371,8 +371,8 @@ if ($op eq 'save' || $op eq 'insert'){
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} );
}
}
@ -636,7 +636,8 @@ if (!defined($data{'dateenrolled'}) or $data{'dateenrolled'} eq ''){
}
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'} );

6
tools/import_borrowers.pl

@ -149,7 +149,7 @@ if ( $uploadborrowers && length($uploadborrowers) > 0 ) {
}
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> ) {
@ -225,8 +225,8 @@ if ( $uploadborrowers && length($uploadborrowers) > 0 ) {
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'}) ) {

Loading…
Cancel
Save