/home/edulekha/crm.edulekha.com/application/views/admin/expenses/expense_preview_template.php
<?php defined('BASEPATH') or exit('No direct script access allowed'); ?>
<div class="col-md-12 no-padding">
<div class="panel_s">
<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 mbot15" role="tablist">
<li role="presentation" class="active">
<a href="#tab_expense" aria-controls="tab_expense" role="tab" data-toggle="tab">
<?= _l('expense'); ?>
</a>
</li>
<?php if (count($child_expenses) > 0 || $expense->recurring != 0) { ?>
<li role="presentation">
<a href="#tab_child_expenses" aria-controls="tab_child_expenses" role="tab"
data-toggle="tab">
<?= _l('child_expenses'); ?>
</a>
</li>
<?php } ?>
<li role="presentation">
<a href="#tab_tasks"
onclick="init_rel_tasks_table(<?= e($expense->expenseid); ?>,'expense'); return false;"
aria-controls="tab_tasks" role="tab" data-toggle="tab">
<?= _l('tasks'); ?>
</a>
</li>
<li role="presentation" class="tab-separator">
<a href="#tab_reminders"
onclick="initDataTable('.table-reminders', admin_url + 'misc/get_reminders/' + <?= $expense->id; ?> + '/' + 'expense', undefined, undefined,undefined,[1,'ASC']); return false;"
aria-controls="tab_reminders" role="tab" data-toggle="tab">
<?= _l('expenses_reminders'); ?>
<?php
$total_reminders = total_rows(
db_prefix() . 'reminders',
[
'isnotified' => 0,
'staff' => get_staff_user_id(),
'rel_type' => 'expense',
'rel_id' => $expense->expenseid,
]
);
if ($total_reminders > 0) {
echo '<span class="badge">' . $total_reminders . '</span>';
}
?>
</a>
</li>
<li role="presentation" class="tab-separator toggle_view">
<a href="#" onclick="small_table_full_view(); return false;" data-placement="left"
data-toggle="tooltip"
data-title="<?= _l('toggle_full_view'); ?>">
<i class="fa fa-expand"></i></a>
</li>
</ul>
</div>
</div>
<div class="row mtop20">
<div class="col-md-6" id="expenseHeadings">
<h3 class="tw-font-semibold tw-text-lg tw-text-neutral-700 tw-mt-0 tw-mb-1 tw-flex tw-flex-wrap tw-items-center tw-gap-x-2"
id="expenseCategory">
<?= e($expense->category_name); ?>
<?php if ($expense->billable == 1) {
if ($expense->invoiceid == null) {
echo '<span class="label label-danger tw-py-0.5">' . _l('expense_invoice_not_created') . '</span>';
} else {
echo '<span class="bold">' . e(format_invoice_number($invoice->id)) . ' - </span>';
if ($invoice->status == 2) {
echo '<span class="label label-success tw-py-0.5">' . _l('expense_billed') . '</span>';
} else {
echo '<span class="label label-danger tw-py-0.5">' . _l('expense_not_billed') . '</span>';
}
}
} ?>
</h3>
<?php if (! empty($expense->expense_name)) { ?>
<h4 class="tw-text-base tw-font-medium tw-m-0 tw-text-neutral-500" id="expenseName">
<?= e($expense->expense_name); ?>
</h4>
<?php } ?>
<h4 class="tw-text-base tw-mt-1 tw-mb-0 tw-text-neutral-500" id="expenserCreator">
<?= _l('created_by'); ?>:
<a
href="<?= admin_url('staff/profile/' . $expense->addedfrom) ?>">
<?= e(get_staff_full_name($expense->addedfrom)); ?>
</a>
</h4>
</div>
<div class="col-md-6 _buttons text-right">
<div class="visible-xs">
<div class="mtop10"></div>
</div>
<div class="pull-right">
<div class="btn-group">
<button type="button" class="btn btn-default pull-left dropdown-toggle"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<?= _l('more'); ?>
<span class="caret"></span>
</button>
<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dLabel">
<?php if (staff_can('create', 'expenses')) { ?>
<li>
<a
href="<?= admin_url('expenses/copy/' . $expense->expenseid); ?>">
<?= _l('expense_copy'); ?>
</a>
</li>
<?php } ?>
<li>
<a href="#" onclick="print_expense_information(); return false;">
<?= _l('print'); ?>
</a>
</li>
<?php if (staff_can('delete', 'expenses')) { ?>
<li>
<a class="text-danger delete-text _delete"
href="<?= admin_url('expenses/delete/' . $expense->expenseid); ?>"
data-toggle="tooltip" data-placement="bottom" title="">
<?= _l('expense_delete'); ?>
</a>
</li>
<?php } ?>
</ul>
</div>
</div>
<?php if (staff_can('edit', 'expenses')) { ?>
<a class="btn btn-default pull-right ltr:tw-mr-1 rtl:tw-ml-1 !tw-px-3" data-toggle="tooltip"
title="<?= _l('expense_edit'); ?>"
href="<?= admin_url('expenses/expense/' . $expense->expenseid); ?>">
<i class="fa-regular fa-pen-to-square"></i>
</a>
<?php } ?>
<?php if ($expense->billable == 1 && $expense->invoiceid == null) { ?>
<?php if (staff_can('create', 'invoices')) { ?>
<button type="button" class="btn btn-primary pull-right ltr:tw-mr-1 rtl:tw-ml-1 expense_convert_btn"
data-id="<?= e($expense->expenseid); ?>"
data-toggle="modal" data-target="#expense_convert_helper_modal">
<?= _l('expense_convert_to_invoice'); ?>
</button>
<?php } ?>
<?php } elseif ($expense->invoiceid != null) { ?>
<a href="<?= admin_url('invoices/list_invoices/' . $expense->invoiceid); ?>"
class="btn btn-primary ltr:tw-mr-2 rtl:tw-ml-2 pull-right">
<?= e(format_invoice_number($invoice->id)); ?>
</a>
<?php } ?>
</div>
</div>
<div class="clearfix"></div>
<hr class="hr-panel-separator" />
<div class="tab-content">
<div role="tabpanel" class="tab-pane ptop10 active" id="tab_expense"
data-empty-note="<?= empty($expense->note); ?>"
data-empty-name="<?= empty($expense->expense_name); ?>">
<div class="row">
<?php
if ($expense->recurring > 0 || $expense->recurring_from != null) {
echo '<div class="col-md-12">';
$recurring_expense = $expense;
$show_recurring_expense_info = true;
if ($expense->recurring_from != null) {
$recurring_expense = $this->expenses_model->get($expense->recurring_from);
// Maybe recurring expense not longer recurring?
if ($recurring_expense->recurring == 0) {
$show_recurring_expense_info = false;
} else {
$next_recurring_date_compare = $recurring_expense->last_recurring_date;
}
} else {
$next_recurring_date_compare = $recurring_expense->date;
if ($recurring_expense->last_recurring_date) {
$next_recurring_date_compare = $recurring_expense->last_recurring_date;
}
}
if ($show_recurring_expense_info) {
$next_date = date('Y-m-d', strtotime('+' . $recurring_expense->repeat_every . ' ' . strtoupper($recurring_expense->recurring_type), strtotime($next_recurring_date_compare)));
} ?>
<?php if ($expense->recurring_from == null && $recurring_expense->cycles > 0 && $recurring_expense->cycles == $recurring_expense->total_cycles) { ?>
<div class="alert alert-info mbot15">
<?= e(_l('recurring_has_ended', _l('expense_lowercase'))); ?>
</div>
<?php } elseif ($show_recurring_expense_info) { ?>
<span class="label label-info">
<?= _l('cycles_remaining'); ?>:
<b class="tw-ml-2">
<?= e($recurring_expense->cycles == 0 ? _l('cycles_infinity') : $recurring_expense->cycles - $recurring_expense->total_cycles);
?>
</b>
</span>
<?php if ($recurring_expense->cycles == 0 || $recurring_expense->cycles != $recurring_expense->total_cycles) {
echo '<span class="label label-info tw-ml-1"><i class="fa-regular fa-circle-question fa-fw" data-toggle="tooltip" data-title="' . _l('recurring_recreate_hour_notice', _l('expense')) . '"></i> ' . _l('next_expense_date', '<b class="tw-ml-1">' . e(_d($next_date)) . '</b>') . '</span>';
}
}
if ($expense->recurring_from != null) { ?>
<?= '<p class="text-muted no-mbot' . ($show_recurring_expense_info ? ' mtop15' : '') . '">' . _l('expense_recurring_from', '<a href="' . admin_url('expenses/list_expenses/' . $expense->recurring_from) . '" onclick="init_expense(' . $expense->recurring_from . ');return false;">' . e($recurring_expense->category_name) . (! empty($recurring_expense->expense_name) ? ' (' . e($recurring_expense->expense_name) . ')' : '') . '</a></p>'); ?>
<?php } ?>
</div>
<div class="clearfix"></div>
<hr class="hr-panel-separator !tw-my-6" />
<?php
} ?>
<div class="col-md-6">
<p>
<div id="amountWrapper">
<span
class="bold font-medium"><?= _l('expense_amount'); ?></span>
<span class="bold font-medium">
<?= e(app_format_money($expense->amount, $expense->currency_data)); ?>
</span>
</div>
<?php if ($expense->paymentmode != '0' && ! empty($expense->paymentmode)) {
?>
<span class="text-muted text-sm">
<?= e(_l('expense_paid_via', $expense->payment_mode_name)); ?>
</span><br />
<?php
} ?>
<?php
if ($expense->tax != 0) {
echo '<br /><span class="bold">' . _l('tax_1') . ':</span> ' . e($expense->taxrate) . '% (' . e($expense->tax_name) . ')';
$total = $expense->amount;
$total += ($total / 100 * $expense->taxrate);
}
if ($expense->tax2 != 0) {
echo '<br /><span class="bold">' . _l('tax_2') . ':</span> ' . e($expense->taxrate2) . '% (' . e($expense->tax_name2) . ')';
$total += ($expense->amount / 100 * $expense->taxrate2);
}
if ($expense->tax != 0 || $expense->tax2 != 0) {
echo '<p class="font-medium bold">' . _l('total_with_tax') . ': ' . e(app_format_money($total, $expense->currency_data)) . '</p>';
}
?>
<p><span
class="bold"><?= _l('expense_date'); ?></span>
<span
class="text-muted"><?= e(_d($expense->date)); ?></span>
</p>
</p>
<?php if (! empty($expense->reference_no)) { ?>
<p class="bold mbot15">
<?= _l('expense_ref_noe'); ?>
<span class="text-muted">
<?= e($expense->reference_no); ?>
</span>
</p>
<?php } ?>
<?php if ($expense->clientid) { ?>
<p class="bold mbot5">
<?= _l('expense_customer'); ?>
</p>
<p class="mbot15">
<a
href="<?= admin_url('clients/client/' . $expense->clientid); ?>">
<?= e($expense->company); ?>
</a>
</p>
<?php } ?>
<?php if ($expense->project_id) { ?>
<p class="bold mbot5">
<?= _l('project'); ?>
</p>
<p class="mbot15">
<a
href="<?= admin_url('projects/view/' . $expense->project_id); ?>">
<?= e($expense->project_data->name); ?>
</a>
</p>
<?php } ?>
<?php
$custom_fields = get_custom_fields('expenses');
foreach ($custom_fields as $field) { ?>
<?php $value = get_custom_field_value($expense->expenseid, $field['id'], 'expenses');
if ($value == '') {
continue;
} ?>
<div class="row mbot10">
<div class="col-md-12 mtop5">
<p class="mbot5">
<span
class="bold"><?= e(ucfirst($field['name'])); ?></span>
</p>
<div class="text-left">
<?= $value; ?>
</div>
</div>
</div>
<?php } ?>
<?php if ($expense->note != '') { ?>
<p class="bold mbot5">
<?= _l('expense_note'); ?>
</p>
<div class="text-muted mbot15">
<?= process_text_content_for_display($expense->note); ?>
</div>
<?php } ?>
<?php hooks()->do_action('after_left_panel_expense_preview_template', $expense); ?>
</div>
<div class="col-md-6" id="expenseReceipt">
<h4 class="tw-mt-0 tw-font-bold tw-text-lg">
<?= _l('expense_receipt'); ?>
</h4>
<?php if (empty($expense->attachment)) { ?>
<?= form_open('admin/expenses/add_expense_attachment/' . $expense->expenseid, ['class' => 'mtop10 dropzone dropzone-expense-preview dropzone-manual', 'id' => 'expense-receipt-upload']); ?>
<div id="dropzoneDragArea" class="dz-default dz-message">
<span><?= _l('expense_add_edit_attach_receipt'); ?></span>
</div>
<?= form_close(); ?>
<?php } else { ?>
<div class="row">
<div class="col-md-10">
<i
class="<?= get_mime_class($expense->filetype); ?>"></i>
<a
href="<?= site_url('download/file/expense/' . $expense->expenseid); ?>">
<?= e($expense->attachment); ?>
</a>
</div>
<?php if ($expense->attachment_added_from == get_staff_user_id() || is_admin()) { ?>
<div class="col-md-2 text-right">
<a class="_delete text-danger"
href="<?= admin_url('expenses/delete_expense_attachment/' . $expense->expenseid . '/preview'); ?>"
class="text-danger">
<i class="fa fa fa-times"></i>
</a>
</div>
<?php } ?>
</div>
<?php } ?>
<?php hooks()->do_action('after_right_panel_expense_preview_template', $expense); ?>
</div>
</div>
</div>
<?php if (count($child_expenses) > 0 || $expense->recurring != 0) { ?>
<div role="tabpanel" class="tab-pane" id="tab_child_expenses">
<?php if (count($child_expenses) > 0) { ?>
<h4 class="mbot25 mtop25">
<?= _l('expenses_created_from_this_recurring_expense'); ?>
</h4>
<ul class="list-group">
<?php foreach ($child_expenses as $recurring) { ?>
<li class="list-group-item">
<a href="<?= admin_url('expenses/list_expenses/' . $recurring->expenseid); ?>"
onclick="init_expense(<?= e($recurring->expenseid); ?>); return false;"
target="_blank"><?= e($recurring->category_name . (! empty($recurring->expense_name) ? ' (' . e($recurring->expense_name) . ')' : '')); ?>
</a>
<br />
<span class="inline-block mtop10">
<?= '<span class="bold">' . e(_d($recurring->date)) . '</span>'; ?><br />
<p><span
class="bold font-medium"><?= _l('expense_amount'); ?></span>
<span class="text-danger bold font-medium">
<?= e(app_format_money($recurring->amount, $recurring->currency_data)); ?>
</span>
<?php
if ($recurring->tax != 0) {
echo '<br /><span class="bold">' . _l('tax_1') . ':</span> ' . e($recurring->taxrate) . '% (' . e($recurring->tax_name) . ')';
$total = $recurring->amount;
$total += ($total / 100 * $recurring->taxrate);
}
if ($recurring->tax2 != 0) {
echo '<br /><span class="bold">' . _l('tax_2') . ':</span> ' . e($recurring->taxrate2) . '% (' . e($recurring->tax_name2) . ')';
$total += ($recurring->amount / 100 * $recurring->taxrate2);
}
if ($recurring->tax != 0 || $recurring->tax2 != 0) {
echo '<p class="font-medium bold text-danger">' . _l('total_with_tax') . ': ' . e(app_format_money($total, $recurring->currency_data)) . '</p>';
}
?>
</span>
</li>
<?php } ?>
</ul>
<?php } else { ?>
<p class="bold">
<?= e(_l('no_child_found', _l('expenses'))); ?>
</p>
<?php } ?>
</div>
<?php } ?>
<div role="tabpanel" class="tab-pane" id="tab_tasks">
<?php init_relation_tasks_table(['data-new-rel-id' => $expense->expenseid, 'data-new-rel-type' => 'expense'], 'tasksFilters'); ?>
</div>
<div role="tabpanel" class="tab-pane" id="tab_reminders">
<a href="#" data-toggle="modal" class="btn btn-primary"
data-target=".reminder-modal-expense-<?= e($expense->id); ?>"><i
class="fa-regular fa-bell"></i>
<?= _l('expense_set_reminder_title'); ?></a>
<hr />
<?php render_datatable([_l('reminder_description'), _l('reminder_date'), _l('reminder_staff'), _l('reminder_is_notified')], 'reminders'); ?>
<?php $this->load->view('admin/includes/modals/reminder', ['id' => $expense->id, 'name' => 'expense', 'members' => $members, 'reminder_title' => _l('expense_set_reminder_title')]); ?>
</div>
</div>
</div>
</div>
</div>
<script>
init_btn_with_tooltips();
init_selectpicker();
init_datepicker();
init_form_reminder();
init_tabs_scrollable();
if ($('#dropzoneDragArea').length > 0) {
if (typeof(expensePreviewDropzone) != 'undefined') {
expensePreviewDropzone.destroy();
}
expensePreviewDropzone = new Dropzone("#expense-receipt-upload", appCreateDropzoneOptions({
clickable: '#dropzoneDragArea',
maxFiles: 1,
success: function(file, response) {
init_expense( <?= e($expense->expenseid); ?> );
}
}));
}
</script>