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 Apr 26, 2023
1 parent 5e92237 commit 764ed15
Show file tree
Hide file tree
Showing 6 changed files with 586 additions and 123 deletions.
2 changes: 1 addition & 1 deletion upload/admin/controller/sale/order.php
Expand Up @@ -1131,7 +1131,7 @@ public function info(): void {
// Extension Order Tabs can are called here.
$this->load->model('setting/extension');

if (!empty($order_info)) {
if (!empty($order_info['payment_method']['code'])) {
$extension_info = $this->model_setting_extension->getExtensionByCode('payment', $order_info['payment_method']['code']);

if ($extension_info && $this->user->hasPermission('access', 'extension/' . $extension_info['extension'] . '/payment/' . $extension_info['code'])) {
Expand Down
199 changes: 152 additions & 47 deletions upload/admin/controller/sale/subscription.php
Expand Up @@ -415,69 +415,172 @@ public function info(): void {
$data['subscription_id'] = '';
}

// Subscription
if (!empty($subscription_info)) {
$this->load->model('sale/order');

$order_info = $this->model_sale_order->getOrder($subscription_info['order_id']);
}

if (!empty($order_info)) {
$data['order'] = $this->url->link('sale/order.info', 'user_token=' . $this->session->data['user_token'] . '&order_id=' . $order_info['order_id']);
if (!empty($subscription_info)) {
$data['order'] = $this->url->link('sale/order.info', 'user_token=' . $this->session->data['user_token'] . '&order_id=' . $subscription_info['order_id']);
} else {
$data['order'] = '';
}

if (!empty($order_info)) {
$data['order_id'] = $order_info['order_id'];
if (!empty($subscription_info)) {
$data['order_id'] = $subscription_info['order_id'];
} else {
$data['order_id'] = 0;
}

if (!empty($order_info)) {
$data['customer'] = $this->url->link('customer/customer.form', 'user_token=' . $this->session->data['user_token'] . '&customer_id=' . $order_info['customer_id']);
} else {
$data['customer'] = '';
if (!empty($subscription_info)) {
$this->load->model('customer/customer');

$customer_info = $this->model_customer_customer->getCustomer($subscription_info['customer_id']);
}

if (!empty($order_info)) {
$data['firstname'] = $order_info['firstname'];
if (!empty($customer_info)) {
$data['firstname'] = $customer_info['firstname'];
} else {
$data['firstname'] = '';
}

if (!empty($order_info)) {
$data['lastname'] = $order_info['lastname'];
if (!empty($customer_info)) {
$data['lastname'] = $customer_info['lastname'];
} else {
$data['lastname'] = '';
}

if (!empty($order_info)) {
$data['order_status'] = $order_info['order_status'];
if (!empty($customer_info)) {
$data['lastname'] = $customer_info['lastname'];
} else {
$data['order_status'] = '';
$data['lastname'] = '';
}

if (!empty($customer_info)) {
$data['customer_group_id'] = $subscription_info['customer_group_id'];
} else {
$data['customer_group_id'] = '';
}




$data['subscription_plans'] = [];

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

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

foreach ($results as $result) {
$description = '';

if ($result['trial_status']) {
$trial_price = $this->currency->format($subscription_info['trial_price'], $this->config->get('config_currency'));
$trial_cycle = $result['trial_cycle'];
$trial_frequency = $this->language->get('text_' . $result['trial_frequency']);
$trial_duration = $result['trial_duration'];

$description .= sprintf($this->language->get('text_subscription_trial'), $trial_price, $trial_cycle, $trial_frequency, $trial_duration);
}

$price = $this->currency->format($subscription_info['price'], $this->config->get('config_currency'));
$cycle = $result['cycle'];
$frequency = $this->language->get('text_' . $result['frequency']);
$duration = $result['duration'];

if (!empty($subscription_plan_info)) {
$data['subscription_plan'] = $subscription_plan_info['name'];
if ($result['duration']) {
$description .= sprintf($this->language->get('text_subscription_duration'), $price, $cycle, $frequency, $duration);
} else {
$description .= sprintf($this->language->get('text_subscription_cancel'), $price, $cycle, $frequency);
}

$data['subscription_plans'][] = [
'subscription_plan_id' => $result['subscription_plan_id'],
'name' => $result['name'],
'description' => $description
];
}

if (!empty($subscription_info)) {
$data['trial_price'] = $subscription_info['trial_price'];
} else {
$data['trial_price'] = 0;
}

$data['frequencies'] = [];

$data['frequencies'][] = [
'text' => $this->language->get('text_day'),
'value' => 'day'
];

$data['frequencies'][] = [
'text' => $this->language->get('text_week'),
'value' => 'week'
];

$data['frequencies'][] = [
'text' => $this->language->get('text_semi_month'),
'value' => 'semi_month'
];

$data['frequencies'][] = [
'text' => $this->language->get('text_month'),
'value' => 'month'
];

$data['frequencies'][] = [
'text' => $this->language->get('text_year'),
'value' => 'year'
];

if (!empty($subscription_info)) {
$data['trial_frequency'] = $subscription_info['trial_frequency'];
} else {
$data['subscription_plan'] = '';
$data['trial_frequency'] = '';
}

if (!empty($subscription_info)) {
$data['payment_method'] = $subscription_info['payment_method']['name'];
$data['trial_cycle'] = $subscription_info['trial_cycle'];
} else {
$data['payment_method'] = '';
$data['trial_cycle'] = 0;
}

if (!empty($subscription_info)) {
$data['remaining'] = $subscription_info['remaining'];
$data['trial_duration'] = $subscription_info['trial_duration'];
} else {
$data['remaining'] = 0;
$data['trial_duration'] = 0;
}

if (!empty($subscription_info)) {
$data['trial_remaining'] = $subscription_info['trial_remaining'];
} else {
$data['trial_remaining'] = 0;
}

if (!empty($subscription_info)) {
$data['trial_status'] = $subscription_info['trial_status'];
} else {
$data['trial_status'] = 0;
}

if (!empty($subscription_info)) {
$data['price'] = $subscription_info['price'];
} else {
$data['price'] = 0;
}

if (!empty($subscription_info)) {
$data['frequency'] = $subscription_info['frequency'];
} else {
$data['frequency'] = '';
}

if (!empty($subscription_info)) {
$data['cycle'] = $subscription_info['cycle'];
} else {
$data['cycle'] = 0;
}

if (!empty($subscription_info)) {
Expand All @@ -486,12 +589,29 @@ public function info(): void {
$data['duration'] = 0;
}

if (!empty($subscription_info)) {
$data['remaining'] = $subscription_info['remaining'];
} else {
$data['remaining'] = 0;
}

if (!empty($subscription_info)) {
$data['date_next'] = date($this->language->get('date_format_short'), strtotime($subscription_info['date_next']));
} else {
$data['date_next'] = '';
}






if (!empty($subscription_info)) {
$data['payment_method'] = $subscription_info['payment_method']['name'];
} else {
$data['payment_method'] = '';
}

if (!empty($order_info)) {
$data['date_added'] = date($this->language->get('date_format_short'), strtotime($order_info['date_added']));
} else {
Expand Down Expand Up @@ -542,36 +662,20 @@ public function info(): void {
}
}

$data['description'] = '';

if (!empty($subscription_info)) {
$trial_price = $this->currency->format($subscription_info['trial_price'], $this->config->get('config_currency'));
$trial_cycle = $subscription_info['trial_cycle'];
$trial_frequency = $this->language->get('text_' . $subscription_info['trial_frequency']);
$trial_duration = $subscription_info['trial_duration'];

if ($subscription_info['trial_status']) {
$data['description'] .= sprintf($this->language->get('text_subscription_trial'), $trial_price, $trial_cycle, $trial_frequency, $trial_duration);
}

$price = $this->currency->format($subscription_info['price'], $this->config->get('config_currency'));
$cycle = $subscription_info['cycle'];
$frequency = $this->language->get('text_' . $subscription_info['frequency']);
$duration = $subscription_info['duration'];

if ($subscription_info['duration']) {
$data['description'] .= sprintf($this->language->get('text_subscription_duration'), $price, $cycle, $frequency, $duration);
} else {
$data['description'] .= sprintf($this->language->get('text_subscription_cancel'), $price, $cycle, $frequency);
}
}

if (!empty($product_info)) {
$data['quantity'] = $product_info['quantity'];
} else {
$data['quantity'] = '';
}







$this->load->model('localisation/subscription_status');

$data['subscription_statuses'] = $this->model_localisation_subscription_status->getSubscriptionStatuses();
Expand All @@ -589,6 +693,7 @@ public function info(): void {
$data['tabs'] = [];

// Extension Order Tabs can are called here.
/*
$this->load->model('setting/extension');
if (!empty($order_info)) {
Expand All @@ -608,7 +713,7 @@ public function info(): void {
}
}
}

*/
$data['user_token'] = $this->session->data['user_token'];

$data['header'] = $this->load->controller('common/header');
Expand Down
59 changes: 45 additions & 14 deletions upload/admin/language/en-gb/sale/subscription.php
Expand Up @@ -8,30 +8,33 @@
$_['text_add'] = 'Add Subscription';
$_['text_edit'] = 'Subscription (#%s)';
$_['text_filter'] = 'Filter';
$_['text_subscription_id'] = 'Subscription ID';
$_['text_order_id'] = 'Order ID';
$_['text_order'] = 'Orders';
$_['text_customer'] = 'Customer';
$_['text_date_added'] = 'Date Added';
$_['text_subscription_plan'] = 'Subscription Plan';
$_['text_payment_method'] = 'Payment Method';
$_['text_remaining'] = 'Remaining Payments';
$_['text_date_next'] = 'Next Payment Date';
$_['text_order_status'] = 'Order Status';




$_['text_subscription'] = 'Subscription';
$_['text_trial'] = 'Trial';

$_['text_cancel'] = 'Until Canceled';
$_['text_product'] = 'Product Details';
$_['text_quantity'] = 'Quantity';
$_['text_amount'] = 'Amount';

$_['text_amount'] = 'Amount';
$_['text_subscription'] = 'Subscription';
$_['text_subscription_trial'] = '%s every %d %s(s) for %d payment(s) then ';
$_['text_subscription_duration'] = '%s every %d %s(s) for %d payment(s)';
$_['text_subscription_cancel'] = '%s every %d %s(s) until canceled';
$_['text_day'] = 'day';
$_['text_week'] = 'week';
$_['text_semi_month'] = 'half-month';
$_['text_month'] = 'month';
$_['text_year'] = 'year';

$_['text_day'] = 'Day';
$_['text_week'] = 'Week';
$_['text_semi_month'] = 'Half-Month';
$_['text_month'] = 'Month';
$_['text_year'] = 'Year';

$_['text_history'] = 'History';
$_['text_history_add'] = 'Add History';

Expand All @@ -55,15 +58,43 @@
$_['entry_order_id'] = 'Order ID';
$_['entry_subscription_id'] = 'Subscription ID';
$_['entry_customer'] = 'Customer';
$_['entry_subscription_status'] = 'Subscription Status';

$_['entry_subscription_plan'] = 'Subscription Plan';

$_['entry_trial_price'] = 'Trial Price';
$_['entry_trial_duration'] = 'Trial Duration';
$_['entry_trial_remaining'] = 'Trial Remaining';
$_['entry_trial_cycle'] = 'Trial Cycle';
$_['entry_trial_frequency'] = 'Trial Frequency';
$_['entry_trial_status'] = 'Trial Status';
$_['entry_price'] = 'Price';
$_['entry_duration'] = 'Duration';
$_['entry_remaining'] = 'Remaining';
$_['entry_cycle'] = 'Cycle';
$_['entry_frequency'] = 'Frequency';



$_['entry_comment'] = 'Comment';
$_['entry_description'] = 'Description';
$_['entry_amount'] = 'Amount';
$_['entry_notify'] = 'Notify Customer';
$_['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.';
$_['help_trial_frequency'] = 'If you use a frequency of "week" and a cycle of "2", then the user will be billed every 2 weeks.';
$_['help_duration'] = 'The duration is the number of times the user will make a payment, set this to 0 if you want payments until they are cancelled.';
$_['help_cycle'] = 'Subscription amounts are calculated by the frequency and cycles.';
$_['help_frequency'] = 'If you use a frequency of "week" and a cycle of "2", then the user will be billed every 2 weeks.';

// Tab
$_['tab_order'] = 'Orders';

Expand Down

0 comments on commit 764ed15

Please sign in to comment.