diff --git a/src/QUI/Memberships/Cron.php b/src/QUI/Memberships/Cron.php index a8873e12836d3deed73513c525114bd8a56825b3..8eeb2adc8f2415efe420eb0a9abdfd13f86123d9 100644 --- a/src/QUI/Memberships/Cron.php +++ b/src/QUI/Memberships/Cron.php @@ -94,6 +94,10 @@ public static function checkMembershipUsers() } } + if ($MembershipUser->getId() == 84) { + \QUI\System\Log::writeRecursive(1); + } + // extend if membership is extended automatically if ($Membership->isAutoExtend()) { // Only extend if not extended by contract diff --git a/src/QUI/Memberships/Events.php b/src/QUI/Memberships/Events.php index a8c6976f8bcb3f6c977f01528eec3aba79bed784..6555042afb8d31a68c792f9656a4c2672e7b4e56 100644 --- a/src/QUI/Memberships/Events.php +++ b/src/QUI/Memberships/Events.php @@ -332,7 +332,13 @@ public static function onQuiqqerContractsExtend(Contract $Contract, \DateTime $E try { /** @var QUI\Memberships\Users\MembershipUser $MembershipUser */ $MembershipUser = $MembershipUsers->getChild($row['id']); - $MembershipUser->extend(); + + // Calculate new cylce begin date + $NextBeginDate = clone $EndDate; + $NextBeginDate->add(\date_interval_create_from_date_string('1 day')); + $NextBeginDate->setTime(0, 0, 0); + + $MembershipUser->extend(true, $NextBeginDate, $NewEndDate); } catch (\Exception $Exception) { QUI\System\Log::writeException($Exception); } diff --git a/src/QUI/Memberships/Users/MembershipUser.php b/src/QUI/Memberships/Users/MembershipUser.php index b67190ceb98679be08b7c7fb98d5c48bbb714b10..4a6e506ac4bf47b3b053571c509cd6b5321f5eb9 100644 --- a/src/QUI/Memberships/Users/MembershipUser.php +++ b/src/QUI/Memberships/Users/MembershipUser.php @@ -113,14 +113,21 @@ public function update() * * @param bool $auto (optional) - Used if the membership is automatically extended. * If set to false, the setting membershipusers.extendMode is used [default: true] + * @param \DateTime $NextBeginDate (optional) - New cycle begin date + * @param \DateTime $NextEndDate (optional) - New cycle end date * @return void * @throws QUI\Exception */ - public function extend($auto = true) + public function extend($auto = true, \DateTime $NextBeginDate = null, \DateTime $NextEndDate = null) { // Calculate new start and/or end time - $NextBeginDate = $this->getNextCycleBeginDate(); - $NextEndDate = $this->getNextCycleEndDate(); + if (empty($NextBeginDate)) { + $NextBeginDate = $this->getNextCycleBeginDate(); + } + + if (empty($NextEndDate)) { + $NextEndDate = $this->getNextCycleEndDate(); + } if ($auto) { $extendCounter = $this->getAttribute('extendCounter');