Skip to content

Commit

Permalink
https://github.com/opencart/opencart/issues/11458
Browse files Browse the repository at this point in the history
  • Loading branch information
danielkerr committed May 1, 2023
1 parent 83fbad8 commit 173cbbd
Show file tree
Hide file tree
Showing 8 changed files with 92 additions and 24 deletions.
6 changes: 2 additions & 4 deletions upload/admin/language/en-gb/sale/subscription.php
Expand Up @@ -65,6 +65,8 @@

// Entry
$_['entry_customer'] = 'Customer';
$_['entry_subscription_id'] = 'Subscription ID';
$_['entry_order_id'] = 'Order ID';
$_['entry_subscription_plan'] = 'Subscription Plan';
$_['entry_trial_price'] = 'Trial Price';
$_['entry_trial_duration'] = 'Trial Duration';
Expand All @@ -84,12 +86,8 @@
$_['entry_override'] = 'Override';
$_['entry_date_from'] = 'Date From';
$_['entry_date_to'] = 'Date To';


$_['entry_subscription_status'] = 'Subscription Status';



// Help
$_['help_trial_duration'] = 'The duration is the number of times the user will make a payment.';
$_['help_trial_cycle'] = 'Subscription amounts are calculated by the frequency and cycles.';
Expand Down
11 changes: 4 additions & 7 deletions upload/admin/view/template/sale/subscription_info.twig
Expand Up @@ -326,9 +326,7 @@
</div>
</div>
</div>

<form id="form-subscription">

<div id="modal-customer" class="modal">
<div class="modal-dialog">
<div class="modal-content">
Expand All @@ -346,13 +344,12 @@
<ul id="autocomplete-customer" class="dropdown-menu"></ul>
</div>
<div class="text-end">
<button type="submit" id="button-customer" class="btn btn-primary"><i class="fa-solid fa-floppy-disk"></i> {{ button_save }}</button>
<button type="button" id="button-customer" class="btn btn-primary"><i class="fa-solid fa-floppy-disk"></i> {{ button_save }}</button>
</div>
</div>
</div>
</div>
</div>

<div id="modal-subscription-plan" class="modal">
<div class="modal-dialog">
<div class="modal-content">
Expand Down Expand Up @@ -447,7 +444,7 @@
</div>
</fieldset>
<div class="text-end">
<button type="submit" id="button-customer" class="btn btn-primary"><i class="fa-solid fa-floppy-disk"></i> {{ button_save }}</button>
<button type="button" id="button-customer" class="btn btn-primary"><i class="fa-solid fa-floppy-disk"></i> {{ button_save }}</button>
</div>
</div>
</div>
Expand All @@ -472,7 +469,7 @@
</select>
</div>
<div class="text-end">
<button type="submit" id="button-customer" class="btn btn-primary"><i class="fa-solid fa-floppy-disk"></i> {{ button_save }}</button>
<button type="button" id="button-customer" class="btn btn-primary"><i class="fa-solid fa-floppy-disk"></i> {{ button_save }}</button>
</div>
</div>
</div>
Expand All @@ -497,7 +494,7 @@
</select>
</div>
<div class="text-end">
<button type="submit" id="button-customer" class="btn btn-primary"><i class="fa-solid fa-floppy-disk"></i> {{ button_save }}</button>
<button type="button" id="button-customer" class="btn btn-primary"><i class="fa-solid fa-floppy-disk"></i> {{ button_save }}</button>
</div>
</div>
</div>
Expand Down
24 changes: 19 additions & 5 deletions upload/catalog/controller/account/subscription.php
Expand Up @@ -144,8 +144,8 @@ public function info(): void {
'href' => $this->url->link('account/subscription.info', 'language=' . $this->config->get('config_language') . '&customer_token=' . $this->session->data['customer_token'] . '&subscription_id=' . $this->request->get['subscription_id'] . $url)
];

$data['subscription_id'] = (int)$this->request->get['subscription_id'];

$data['subscription_id'] = $subscription_info['subscription_id'];
$data['order_id'] = $subscription_info['order_id'];
$data['date_added'] = date($this->language->get('date_format_short'), strtotime($subscription_info['date_added']));

$this->load->model('localisation/subscription_status');
Expand All @@ -157,6 +157,23 @@ public function info(): void {
} else {
$data['subscription_status'] = '';
}

$data['payment_method'] = $subscription_info['payment_method']['name'];

$data['name'] = $subscription_info['name'];
$data['quantity'] = $subscription_info['quantity'];

$this->load->model('catalog/subscription_plan');

$subscription_plan_info = $this->model_catalog_subscription_plan->getSubscriptionPlan($subscription_info['subscription_plan_id']);

if ($subscription_plan_info) {
$data['subscription_plan'] = $subscription_plan_info['name'];
} else {
$data['subscription_plan'] = '';
}


/*
// Orders
$this->load->model('account/order');
Expand All @@ -167,10 +184,7 @@ public function info(): void {
// $data['reference'] = $subscription_info['reference'];
// $data['product_name'] = $order_product['name'];
$data['payment_method'] = $subscription_info['payment_method'];
$data['product_quantity'] = $order_product['quantity'];
$data['description'] = $subscription_info['description'];
// Transactions
$data['transactions'] = [];
Expand Down
1 change: 0 additions & 1 deletion upload/catalog/controller/cron/subscription.php
Expand Up @@ -355,7 +355,6 @@ public function index(int $cron_id, string $code, string $cycle, string $date_ad
}
}


// Language
$order_data['language_id'] = $language_info['language_id'];
$order_data['language_code'] = $language_info['code'];
Expand Down
11 changes: 10 additions & 1 deletion upload/catalog/model/account/subscription.php
Expand Up @@ -2,9 +2,18 @@
namespace Opencart\Catalog\Model\Account;
class Subscription extends \Opencart\System\Engine\Model {
public function getSubscription(int $subscription_id): array {
$subscription_data = [];

$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "subscription` `s` WHERE `subscription_id` = '" . (int)$subscription_id . "' AND `customer_id` = '" . (int)$this->customer->getId() . "'");

return $query->row;
if ($query->num_rows) {
$subscription_data = $query->row;

$subscription_data['payment_method'] = ($query->row['payment_method'] ? json_decode($query->row['payment_method'], true) : '');
$subscription_data['shipping_method'] = ($query->row['shipping_method'] ? json_decode($query->row['shipping_method'], true) : '');
}

return $subscription_data;
}

public function getSubscriptionByOrderProductId(int $order_id, int $order_product_id): array {
Expand Down
56 changes: 56 additions & 0 deletions upload/catalog/model/catalog/subscription_plan.php
@@ -0,0 +1,56 @@
<?php
namespace Opencart\Catalog\Model\Catalog;
class SubscriptionPlan extends \Opencart\System\Engine\Model {
public function getSubscriptionPlan(int $subscription_plan_id): array {
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "subscription_plan` sp LEFT JOIN `" . DB_PREFIX . "subscription_plan_description` spd ON (sp.`subscription_plan_id` = spd.`subscription_plan_id`) WHERE sp.`subscription_plan_id` = '" . (int)$subscription_plan_id . "' AND spd.`language_id` = '" . (int)$this->config->get('config_language_id') . "'");

return $query->row;
}

public function getSubscriptionPlans(array $data = []): array {
$sql = "SELECT * FROM `" . DB_PREFIX . "subscription_plan` sp LEFT JOIN `" . DB_PREFIX . "subscription_plan_description` spd ON (sp.`subscription_plan_id` = spd.`subscription_plan_id`) WHERE spd.`language_id` = '" . (int)$this->config->get('config_language_id') . "'";

if (!empty($data['filter_name'])) {
$sql .= " AND spd.`name` LIKE '" . $this->db->escape((string)$data['filter_name'] . '%') . "'";
}

$sort_data = [
'spd.name',
'sp.sort_order'
];

if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
$sql .= " ORDER BY " . $data['sort'];
} else {
$sql .= " ORDER BY spd.`name`";
}

if (isset($data['order']) && ($data['order'] == 'DESC')) {
$sql .= " DESC";
} else {
$sql .= " ASC";
}

if (isset($data['start']) || isset($data['limit'])) {
if ($data['start'] < 0) {
$data['start'] = 0;
}

if ($data['limit'] < 1) {
$data['limit'] = 20;
}

$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
}

$query = $this->db->query($sql);

return $query->rows;
}

public function getTotalSubscriptionPlans(): int {
$query = $this->db->query("SELECT COUNT(*) AS `total` FROM `" . DB_PREFIX . "subscription_plan`");

return (int)$query->row['total'];
}
}
Expand Up @@ -21,7 +21,7 @@
<br/>
<b>{{ text_date_added }}</b> {{ date_added }}
<br/>
<b>{{ text_status }}</b> {{ status }}
<b>{{ text_status }}</b> {{ subscription_status }}
<br/>
<b>{{ text_payment_method }}</b> {{ payment_method }}</td>
<td class="text-start" style="width: 50%;"><b>{{ text_order_id }}</b> <a href="{{ order }}">#{{ order_id }}</a>
Expand Down
5 changes: 0 additions & 5 deletions upload/system/helper/db_schema.php
Expand Up @@ -6491,11 +6491,6 @@ function oc_db_schema() {
'type' => 'int(11)',
'not_null' => true
],
[
'name' => 'name',
'type' => 'varchar(255)',
'not_null' => true
],
[
'name' => 'trial_price',
'type' => 'decimal(10,4)',
Expand Down

0 comments on commit 173cbbd

Please sign in to comment.