I am using opencart 3.0.3.8 with default theme.
I'm working on a modifying my opencart to deals with recurring pricing, and I've run into a roadblock that I hope someone here might be able to assist me with.
Recurring Prices: I have recurring products with various frequencies (e.g., day, week, month) and corresponding prices.
Displaying Options: I need to display these recurring options along with their prices as radio buttons on the product page.
Problem: The current code builds a recurring price string for each product, which is making it challenging to separate the prices for different recurring frequencies. I need to display individual prices , but the existing logic in controller doesn't align with this requirement.
Here's a snippet of the relevant code:
i did few changes to test so i am leaving them in code but as comment out.
Code: Select all
$recurring = '';
//$recurring_price = 0; // Initialize a variable to hold the recurring price
if ($product['recurring']) {
//$this->log->write('Recurring value: ' . print_r($product['recurring'], true));
$frequencies = array(
'day' => $this->language->get('text_day'),
'week' => $this->language->get('text_week'),
'semi_month' => $this->language->get('text_semi_month'),
'month' => $this->language->get('text_month'),
'year' => $this->language->get('text_year')
);
if ($product['recurring']['trial']) {
$recurring = sprintf($this->language->get('text_trial_description'), $this->currency->format($this->tax->calculate($product['recurring']['trial_price'] * $product['quantity'], $product['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']), $product['recurring']['trial_cycle'], $frequencies[$product['recurring']['trial_frequency']], $product['recurring']['trial_duration']) . ' ';
}
if ($product['recurring']['duration']) {
$recurring_price = $this->currency->format($this->tax->calculate($product['recurring']['price'] * $product['quantity'], $product['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); // Extracting the recurring price
//$recurring .= sprintf($this->language->get('text_payment_description'), $this->currency->format($this->tax->calculate($product['recurring']['price'] * $product['quantity'], $product['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']), $product['recurring']['cycle'], $frequencies[$product['recurring']['frequency']], $product['recurring']['duration']);
} else {
$recurring .= sprintf($this->language->get('text_payment_cancel'), $this->currency->format($this->tax->calculate($product['recurring']['price'] * $product['quantity'], $product['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']), $product['recurring']['cycle'], $frequencies[$product['recurring']['frequency']], $product['recurring']['duration']);
}
}
//$data['recurring_price'] = $recurring_price;
//$this->log->write('Recurring Price: ' . $recurring_price);
Code: Select all
{% if recurrings %}
<hr>
{#<h3>{{ text_payment_recurring }}</h3>#}
<div class="form-group required">
<label>
<input type="radio" name="recurring_id" value="0" checked="checked" />
One-time purchase: {{ price }}
</label>
<br>
{% for recurring in recurrings %}
<label>
<input type="radio" name="recurring_id" value="{{ recurring.recurring_id }}" />
{{ recurring.name }}: {{ recurring.price }}
</label>
<br>
{% endfor %}
<div class="help-block" id="recurring-description"></div>
</div>
{% endif %}
Thank you in advance for your help!