https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=34117 --- Comment #9 from Jonathan Druart <jonathan.druart+koha@gmail.com> --- (In reply to Emily Lamancusa from comment #8)
(In reply to Jonathan Druart from comment #7)
Sorry, I haven't seen Emily's comment!
There is something weird here as well: 105 sub get_expiry_date { 109 $date = dt_from_string( $date ) unless ref $date;
Which means get_expiry_date should deal with DateTime object correctly.
Line 109 keeps the original object if one was passed, and creates a new object if a string was passed, right? And then in the next line...
110 return $date->add( months => $self->enrolmentperiod, end_of_month => 'limit' );
According to https://metacpan.org/pod/DateTime#Math-Methods: "Like the set methods, math related methods always return the object itself, to allow for chaining"
So unless I'm misunderstanding the Perl from line 109, if get_expiry_date is passed an object, it updates and returns that same object, which memberentry.pl doesn't take into account in line 725: $data{dateexpiry} = $category->get_expiry_date( $data{dateenrolled} );
DateTime modifies the original object. For instance: use Koha::DateUtils qw( dt_from_string ); my $dt = dt_from_string; say $dt; say $dt->add( days => 2 ); say $dt; 2023-07-20T13:14:51 2023-07-22T13:14:51 2023-07-22T13:14:51 So, if a DateTime object is passed to get_expiry_date 108 $date ||= dt_from_string; => $date is still the variable passed in parameter 109 $date = dt_from_string( $date ) unless ref $date; => same 110 return $date->add( months => $self->enrolmentperiod, end_of_month => 'limit' ); => We return the object we passed (modified) -- You are receiving this mail because: You are watching all bug changes.