Bug 34117: Remove side effect from get_expiry_date
If get_expiry_date is passed a DateTime object as a parameter, it modifies and returns the original object. When memberentry.pl prefills the input fields for duplicating a patron, it passes the enrollment date object to get_expiry_date. This causes the enrollment date object to be modified with the expiry date value. This patch modifies get_expiry_date to clone the DateTime object that it receives as a parameter and return the clone, so that references to an enrollment date object can be passed in safely. To test: 1. Have or make a patron 2. Duplicate that patron 3. Before saving the new patron, scroll down to Registration Date and see that it's defaulting to a date in the future. 4. Apply patch and restart_all 5. Try duplicating a patron again 6. Registration Date should correctly set to today Signed-off-by: Andrew Fuerste-Henry <andrewfh@dubcolib.org> Signed-off-by: Lucas Gass <lucas@bywatersolutions.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
9b1bd01a42
commit
bba9feff5c
1 changed files with 1 additions and 1 deletions
|
@ -106,7 +106,7 @@ sub get_expiry_date {
|
||||||
my ($self, $date ) = @_;
|
my ($self, $date ) = @_;
|
||||||
if ( $self->enrolmentperiod ) {
|
if ( $self->enrolmentperiod ) {
|
||||||
$date ||= dt_from_string;
|
$date ||= dt_from_string;
|
||||||
$date = dt_from_string( $date ) unless ref $date;
|
$date = ref $date ? $date->clone() : dt_from_string( $date );
|
||||||
return $date->add( months => $self->enrolmentperiod, end_of_month => 'limit' );
|
return $date->add( months => $self->enrolmentperiod, end_of_month => 'limit' );
|
||||||
} else {
|
} else {
|
||||||
return $self->enrolmentperioddate;
|
return $self->enrolmentperioddate;
|
||||||
|
|
Loading…
Reference in a new issue