From ae3cd11fd3bffe46873693a02ab2d7544f159a9a Mon Sep 17 00:00:00 2001 From: s j <sj@1729.be> Date: Fri, 7 Jun 2024 12:08:01 +0000 Subject: [PATCH] imp: configurable start period for new subscriptions --- config/install/commerce_foodbox.settings.yml | 1 + src/EventSubscriber/OrderEventSubscriber.php | 9 ++++++--- src/Form/CommerceFoodboxConfigForm.php | 7 +++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/config/install/commerce_foodbox.settings.yml b/config/install/commerce_foodbox.settings.yml index baf43ff..85f6166 100644 --- a/config/install/commerce_foodbox.settings.yml +++ b/config/install/commerce_foodbox.settings.yml @@ -10,3 +10,4 @@ settlement_journal: statement_journal: invalid_periods: double_value_periods: +new_subscription_period: diff --git a/src/EventSubscriber/OrderEventSubscriber.php b/src/EventSubscriber/OrderEventSubscriber.php index ceb6ee6..9dee915 100644 --- a/src/EventSubscriber/OrderEventSubscriber.php +++ b/src/EventSubscriber/OrderEventSubscriber.php @@ -149,12 +149,15 @@ class OrderEventSubscriber implements EventSubscriberInterface { } // Determine start period for subscription. - + $orderPeriodService = \Drupal::service('commerce_order_period.default'); + $new_subscription_period = \Drupal::config('commerce_foodbox.settings')->get('new_subscription_period'); + if (! $new_subscription_period || empty($new_subscription_period)) { + $new_subscription_period = 'now'; + } $startPeriod = $orderPeriodService->getPeriodName( 1, - // Use strtotime("+4 days") for thursday -> W+2. - $orderPeriodService->getPeriodNameForDate(date('Y-m-d', strtotime('now'))) + $orderPeriodService->getPeriodNameForDate(date('Y-m-d', strtotime($new_subscription_period))) ); if ($order->hasField('field_req_start_date') && $order->get('field_req_start_date')->value) { diff --git a/src/Form/CommerceFoodboxConfigForm.php b/src/Form/CommerceFoodboxConfigForm.php index a3401d5..f2b7e21 100644 --- a/src/Form/CommerceFoodboxConfigForm.php +++ b/src/Form/CommerceFoodboxConfigForm.php @@ -88,6 +88,12 @@ class CommerceFoodboxConfigForm extends ConfigFormBase { '#required' => TRUE, ]; + $form['new_subscription_period'] = [ + '#type' => 'textfield', + '#title' => $this->t('Period start for new subscriptions in strtotime format (1 week will be added, eg "now - 2 days" or "now + 4 days").'), + '#default_value' => $config->get('new_subscription_period'), + ]; + $form['prepayment_journal'] = [ '#type' => 'entity_autocomplete', '#target_type' => 'accounting_journal', @@ -196,6 +202,7 @@ class CommerceFoodboxConfigForm extends ConfigFormBase { $this->config('commerce_foodbox.settings') ->set('subscription_producttype', $form_state->getValue('producttype')) ->set('subscription_purchasedentityfield', $form_state->getValue('purchasedentityfield')) + ->set('new_subscription_period', $form_state->getValue('new_subscription_period')) ->set('prepayment_journal', $form_state->getValue('prepayment_journal')) ->set('settlement_journal', $form_state->getValue('settlement_journal')) ->set('statement_journal', $form_state->getValue('statement_journal')) -- GitLab