/home/edulekha/crm.edulekha.com/application/views/admin/subscriptions/subscription.php
<?php defined('BASEPATH') or exit('No direct script access allowed'); ?>
<?php init_head(); ?>
<div id="wrapper">
<div class="content">
<div class="row">
<div
class="<?= isset($subscription) ? 'col-md-5' : 'col-md-6 col-md-offset-3'; ?>">
<h4 class="tw-mt-0 tw-font-bold tw-text-lg tw-text-neutral-700">
<span>
<?= e(isset($subscription) ? $subscription->name : _l('new_subscription')); ?>
</span>
</h4>
<div class="panel_s">
<div class="panel-body accounting-template">
<?php if (isset($subscription)) {
if (! empty($subscription->stripe_subscription_id)
&& $subscription->status != 'canceled' && $subscription->status != 'incomplete_expired' && $subscription->status != 'incomplete') {
?>
<div class="alert alert-success">
<b><?= _l('customer_is_subscribed_to_subscription_info'); ?></b><br />
Subscription ID:
<?= e($subscription->stripe_subscription_id); ?>
</div>
<?php } ?>
<input type="hidden" name="isedit">
<?php if (isset($subscription)) { ?>
<a href="#" class="btn btn-default" data-target="#subscription_send_to_client_modal"
data-toggle="modal">
<span class="btn-with-tooltip" data-toggle="tooltip"
data-title="<?= _l('send_to_email'); ?>"
data-placement="bottom">
<i class="fa-regular fa-envelope"></i></span>
</a>
<a href="<?= site_url('subscription/' . $subscription->hash); ?>"
class="btn btn-default" target="_blank">
<?= _l('view_subscription'); ?>
</a>
<?php } ?>
<?php if (! empty($subscription->stripe_subscription_id) && $subscription->status != 'canceled' && $subscription->status != 'incomplete_expired' && empty($subscription->ends_at)) { ?>
<?php if (staff_can('edit', 'subscriptions')) { ?>
<div class="btn-group">
<a href="#" class="btn btn-default dropdown-toggle" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false">
<?= _l('cancel'); ?>
<span class="caret"></span></a>
<ul class="dropdown-menu dropdown-menu-right">
<li><a
href="<?= admin_url('subscriptions/cancel/' . $subscription->id . '?type=immediately'); ?>">
<?= _l('cancel_immediately'); ?></a>
</li>
<li><a
href="<?= admin_url('subscriptions/cancel/' . $subscription->id . '?type=at_period_end'); ?>">
<?= _l('cancel_at_end_of_billing_period'); ?>
</a>
</ul>
</div>
<?php } ?>
<?php } ?>
<hr />
<?php } ?>
<?php $this->load->view('admin/subscriptions/form'); ?>
</div>
</div>
</div>
<?php if (isset($subscription)) { ?>
<div class="col-md-7">
<div class="panel_s tw-mt-10">
<div class="panel-body">
<div class="horizontal-scrollable-tabs preview-tabs-top panel-full-width-tabs">
<div class="scroller arrow-left"><i class="fa fa-angle-left"></i></div>
<div class="scroller arrow-right"><i class="fa fa-angle-right"></i></div>
<div class="horizontal-tabs">
<ul class="nav nav-tabs nav-tabs-horizontal" role="tablist">
<li role="presentation" class="active">
<a href="#upcoming_invoice" aria-controls="upcoming_invoice" role="tab"
data-toggle="tab">
<?= _l('upcoming_invoice'); ?>
</a>
</li>
<li role="presentation" class="tab-separator">
<a href="#child_invoices" aria-controls="child_invoices" role="tab"
data-toggle="tab">
<?= _l('child_invoices'); ?>
</a>
</li>
<li role="presentation" data-toggle="tooltip"
title="<?= _l('emails_tracking'); ?>"
class="tab-separator">
<a href="#tab_emails_tracking" aria-controls="tab_emails_tracking" role="tab"
data-toggle="tab">
<?php if (! is_mobile()) { ?>
<i class="fa-regular fa-envelope-open" aria-hidden="true"></i>
<?php } else { ?>
<?= _l('emails_tracking'); ?>
<?php } ?>
</a>
</li>
</ul>
</div>
</div>
<div class="tab-content">
<div role="tabpanel" class="tab-pane active tw-py-2" id="upcoming_invoice">
<?php if (! empty($subscription->stripe_subscription_id) && $subscription->status != 'canceled' && ! empty($subscription->ends_at)) { ?>
<div class="alert alert-info mtop15">
<a href="https://stripe.com/docs/subscriptions/canceling-pausing#canceling"
target="_blank" class="alert-link"><i class="fa fa-link"></i></a>
<?= _l('subscription_will_be_canceled_at_end_of_billing_period'); ?>
<?php if (staff_can('edit', 'subscriptions')) { ?>
<br />
<a class="alert-link"
href="<?= admin_url('subscriptions/resume/' . $subscription->id); ?>">
<?= _l('resume_now'); ?>
</a>
<?php } ?>
</div>
<?php if (isset($upcoming_invoice) && $upcoming_invoice->total > 0) { ?>
<div class="alert alert-success mtop15">
<a href="https://stripe.com/docs/subscriptions/canceling-pausing#invoices-and-invoice-items"
target="_blank" class="alert-link"><i class="fa fa-link"></i></a> After
canceling a subscription, a
customer could still be charged if there are invoice items you created or there was
a proration and the subscription is canceled at period end.
</div>
<?php } ?>
<?php } elseif (! empty($subscription->stripe_subscription_id) && $subscription->status == 'canceled') { ?>
<div class="alert alert-info mtop15">
<a class="alert-link"
href="https://stripe.com/docs/subscriptions/canceling-pausing#reactivating-canceled-subscriptions"
target="_blank"><i class="fa fa-link"></i></a>
<?= _l('subscription_is_canceled_no_resume'); ?>
</div>
<?php } elseif (! empty($subscription->stripe_subscription_id) && $subscription->status == 'incomplete_expired') { ?>
<div class="alert alert-warning mtop15">
<a class="alert-link" href="https://stripe.com/docs/billing/lifecycle#incomplete"
target="_blank"><i class="fa fa-link"></i></a>
<?= _l('subscription_is_subscription_is_expired'); ?>
</div>
<?php } elseif (empty($subscription->stripe_subscription_id)) { ?>
<div class="alert alert-info mtop15 no-mbot">
<?= _l('subscription_not_yet_subscribed'); ?>
</div>
<?php } ?>
<?php if (! empty($subscription->stripe_subscription_id) && isset($upcoming_invoice)) {
if (! empty($subscription->stripe_subscription_id) && $subscription->status != 'canceled' && ! empty($subscription->ends_at) && $upcoming_invoice->total == 0) {
} else {
$upcoming_invoice->date = to_sql_date($upcoming_invoice->date);
if (property_exists($upcoming_invoice, 'duedate') && $upcoming_invoice->duedate) {
$upcoming_invoice->duedate = to_sql_date($upcoming_invoice->duedate);
}
$this->load->view('admin/invoices/invoice_preview_html', ['invoice' => $upcoming_invoice]);
} ?>
<?php } ?>
</div>
<div role="tabpanel" class="tab-pane" id="child_invoices">
<?php if (count($child_invoices)) { ?>
<h4 class="tw-font-semibold tw-text-base tw-my-2">
<?= _l('invoices'); ?>
</h4>
<ul class="list-group">
<?php foreach ($child_invoices as $invoice) { ?>
<li class="list-group-item">
<a href="<?= admin_url('invoices/list_invoices/' . $invoice->id); ?>"
target="_blank"><?= e(format_invoice_number($invoice->id)); ?>
<span class="pull-right bold">
<?= e(app_format_money($invoice->total, $invoice->currency_name)); ?>
</span>
</a>
<br />
<span class="inline-block mtop10">
<?= '<span class="bold">' . e(_d($invoice->date)) . '</span>'; ?><br />
<?= e(format_invoice_status($invoice->status, '', false)); ?>
</span>
</li>
<?php } ?>
</ul>
<?php } else { ?>
<div class="alert alert-info no-mbot mtop15">
<?= e(_l('no_child_found', _l('invoices'))); ?>
</div>
<?php } ?>
</div>
<div role="tabpanel" class="tab-pane ptop10" id="tab_emails_tracking">
<?php
$this->load->view(
'admin/includes/emails_tracking',
[
'tracked_emails' => get_tracked_emails($subscription->id, 'subscription'), ]
);
?>
</div>
</div>
</div>
</div>
</div>
<?php } ?>
</div>
</div>
</div>
<?php if (isset($subscription)) { ?>
<?php $this->load->view('admin/subscriptions/send_to_client'); ?>
<?php } ?>
<?php init_tail(); ?>
<script>
$(function() {
// Project ajax search
init_ajax_project_search_by_customer_id();
appValidateForm('#subscriptionForm', {
name: 'required',
clientid: 'required',
stripe_plan_id: 'required',
currency: 'required',
quantity: {
required: true,
min: 1,
}
});
<?php if (! isset($subscription) || (isset($subscription) && empty($subscription->stripe_subscription_id))) { ?>
checkFirstBillingDate($('#stripe_plan_id').selectpicker('val'));
$('#stripe_plan_id').on('change', function() {
var selectedPlan = $(this).val();
checkFirstBillingDate(selectedPlan);
var selectedOption = $('#stripe_plan_id').find('option[value="' + selectedPlan + '"]');
var interval = selectedOption.data('interval');
var $firstBillingDate = $('#date');
var firstBillingDate = $firstBillingDate.val();
if (interval == 'month') {
var currentDate = moment().add(1, 'day').format('YYYY-MM-DD');
var futureMonth = moment(currentDate).add(selectedOption.data('interval-count'), 'M');
$firstBillingDate.attr('data-date-end-date', futureMonth.format('YYYY-MM-DD'));
$firstBillingDate.datetimepicker('destroy');
init_datepicker($firstBillingDate);
}
});
<?php } ?>
$('#subscriptionForm').on('dirty.areYouSure', function() {
$('#prorateWrapper').removeClass('hide');
});
$('#subscriptionForm').on('clean.areYouSure', function() {
$('#prorateWrapper').addClass('hide');
});
});
function checkFirstBillingDate(selectedPlan) {
if (selectedPlan == '') {
return;
}
var interval = $('#stripe_plan_id').find('option[value="' + selectedPlan + '"]').data('interval');
if (interval == 'week' || interval == 'day') {
$('#first_billing_date_wrapper').addClass('hide');
$('#date').val('');
} else {
$('#first_billing_date_wrapper').removeClass('hide');
}
}
</script>