| Lines 25-31
          use strict;
      
      
        Link Here | 
        
          | 25 | use C4::Context; | 25 | use C4::Context; | 
        
          | 26 | use String::Random qw( random_string ); | 26 | use String::Random qw( random_string ); | 
        
          | 27 | use Scalar::Util qw( looks_like_number ); | 27 | use Scalar::Util qw( looks_like_number ); | 
          
            
              | 28 | use Date::Calc qw/Today Add_Delta_YM check_date Date_to_Days/; | 28 | use Date::Calc qw/Today check_date Date_to_Days/; | 
        
          | 29 | use C4::Log; # logaction | 29 | use C4::Log; # logaction | 
        
          | 30 | use C4::Overdues; | 30 | use C4::Overdues; | 
        
          | 31 | use C4::Reserves; | 31 | use C4::Reserves; | 
  
    | Lines 43-48
          use Koha::Database;
      
      
        Link Here | 
        
          | 43 | use Koha::Holds; | 43 | use Koha::Holds; | 
        
          | 44 | use Koha::List::Patron; | 44 | use Koha::List::Patron; | 
        
          | 45 | use Koha::Patrons; | 45 | use Koha::Patrons; | 
            
              |  |  | 46 | use Koha::Patron::Categories; | 
        
          | 46 |  | 47 |  | 
        
          | 47 | our (@ISA,@EXPORT,@EXPORT_OK,$debug); | 48 | our (@ISA,@EXPORT,@EXPORT_OK,$debug); | 
        
          | 48 |  | 49 |  | 
  
    | Lines 87-93
          BEGIN {
      
      
        Link Here | 
        
          | 87 |         &GetBorrowersWhoHaveNeverBorrowed | 88 |         &GetBorrowersWhoHaveNeverBorrowed | 
        
          | 88 |         &GetBorrowersWithIssuesHistoryOlderThan | 89 |         &GetBorrowersWithIssuesHistoryOlderThan | 
        
          | 89 |  | 90 |  | 
            
              | 90 |         &GetExpiryDate |  |  | 
        
          | 91 |         &GetUpcomingMembershipExpires | 91 |         &GetUpcomingMembershipExpires | 
        
          | 92 |  | 92 |  | 
        
          | 93 |         &IssueSlip | 93 |         &IssueSlip | 
  
    | Lines 657-665
          sub AddMember {
      
      
        Link Here | 
        
          | 657 |       if ( $data{'userid'} eq '' || !Check_Userid( $data{'userid'} ) ); | 657 |       if ( $data{'userid'} eq '' || !Check_Userid( $data{'userid'} ) ); | 
        
          | 658 |  | 658 |  | 
        
          | 659 |     # add expiration date if it isn't already there | 659 |     # add expiration date if it isn't already there | 
          
            
              | 660 |     unless ( $data{'dateexpiry'} ) { | 660 |     $data{dateexpiry} ||= Koha::Patron::Categories->find( $data{categorycode} )->get_expiry_date; | 
            
              | 661 |         $data{'dateexpiry'} = GetExpiryDate( $data{'categorycode'}, output_pref( { dt => dt_from_string, dateonly => 1, dateformat => 'iso' } ) ); |  |  | 
            
              | 662 |     } | 
        
          | 663 |  | 661 |  | 
        
          | 664 |     # add enrollment date if it isn't already there | 662 |     # add enrollment date if it isn't already there | 
        
          | 665 |     unless ( $data{'dateenrolled'} ) { | 663 |     unless ( $data{'dateenrolled'} ) { | 
  
    | Lines 1223-1255
          sub GetNoticeEmailAddress {
      
      
        Link Here | 
        
          | 1223 |     return $data->{'primaryemail'} || ''; | 1221 |     return $data->{'primaryemail'} || ''; | 
        
          | 1224 | } | 1222 | } | 
        
          | 1225 |  | 1223 |  | 
            
              | 1226 | =head2 GetExpiryDate  |  |  | 
            
              | 1227 |  | 
            
              | 1228 |   $expirydate = GetExpiryDate($categorycode, $dateenrolled); | 
            
              | 1229 |  | 
            
              | 1230 | Calculate expiry date given a categorycode and starting date.  Date argument must be in ISO format. | 
            
              | 1231 | Return date is also in ISO format. | 
            
              | 1232 |  | 
            
              | 1233 | =cut | 
            
              | 1234 |  | 
            
              | 1235 | sub GetExpiryDate { | 
            
              | 1236 |     my ( $categorycode, $dateenrolled ) = @_; | 
            
              | 1237 |     my $enrolments; | 
            
              | 1238 |     if ($categorycode) { | 
            
              | 1239 |         my $dbh = C4::Context->dbh; | 
            
              | 1240 |         my $sth = $dbh->prepare("SELECT enrolmentperiod,enrolmentperioddate FROM categories WHERE categorycode=?"); | 
            
              | 1241 |         $sth->execute($categorycode); | 
            
              | 1242 |         $enrolments = $sth->fetchrow_hashref; | 
            
              | 1243 |     } | 
            
              | 1244 |     # die "GetExpiryDate: for enrollmentperiod $enrolmentperiod (category '$categorycode') starting $dateenrolled.\n"; | 
            
              | 1245 |     my @date = split (/-/,$dateenrolled); | 
            
              | 1246 |     if($enrolments->{enrolmentperiod}){ | 
            
              | 1247 |         return sprintf("%04d-%02d-%02d", Add_Delta_YM(@date,0,$enrolments->{enrolmentperiod})); | 
            
              | 1248 |     }else{ | 
            
              | 1249 |         return $enrolments->{enrolmentperioddate}; | 
            
              | 1250 |     } | 
            
              | 1251 | } | 
            
              | 1252 |  | 
        
          | 1253 | =head2 GetUpcomingMembershipExpires | 1224 | =head2 GetUpcomingMembershipExpires | 
        
          | 1254 |  | 1225 |  | 
        
          | 1255 |     my $expires = GetUpcomingMembershipExpires({ | 1226 |     my $expires = GetUpcomingMembershipExpires({ | 
  
    | Lines 1624-1630
          sub ExtendMemberSubscriptionTo {
      
      
        Link Here | 
        
          | 1624 |                                         eval { output_pref( { dt => dt_from_string( $borrower->{'dateexpiry'}  ), dateonly => 1, dateformat => 'iso' } ); } | 1595 |                                         eval { output_pref( { dt => dt_from_string( $borrower->{'dateexpiry'}  ), dateonly => 1, dateformat => 'iso' } ); } | 
        
          | 1625 |                                         : | 1596 |                                         : | 
        
          | 1626 |                                         output_pref( { dt => dt_from_string, dateonly => 1, dateformat => 'iso' } ); | 1597 |                                         output_pref( { dt => dt_from_string, dateonly => 1, dateformat => 'iso' } ); | 
          
            
              | 1627 |       $date = GetExpiryDate( $borrower->{'categorycode'}, $date ); | 1598 |       $date = Koha::Patron::Categories->find( $borrower->{categorycode} )->get_expiry_date( $date ); | 
        
          | 1628 |     } | 1599 |     } | 
        
          | 1629 |     my $sth = $dbh->do(<<EOF); | 1600 |     my $sth = $dbh->do(<<EOF); | 
        
          | 1630 | UPDATE borrowers  | 1601 | UPDATE borrowers  |