/home/edulekha/crm.edulekha.com/application/views/themes/perfex/views/viewproposal.php
<?php defined('BASEPATH') or exit('No direct script access allowed'); ?>
<div id="proposal-wrapper">
<?php
ob_start();
$items = get_items_table_data($proposal, 'proposal')
->add_table_class('no-margin')
->set_headings('estimate');
echo $items->table();
?>
<div class="row mtop15">
<div class="col-md-6 col-md-offset-6">
<table class="table text-right">
<tbody>
<tr id="subtotal">
<td>
<span class="bold tw-text-neutral-700">
<?= _l('estimate_subtotal'); ?>
</span>
</td>
<td class="subtotal">
<?= e(app_format_money($proposal->subtotal, $proposal->currency_name)); ?>
</td>
</tr>
<?php if (is_sale_discount_applied($proposal)) { ?>
<tr>
<td>
<span
class="bold tw-text-neutral-700"><?= _l('estimate_discount'); ?>
<?php if (is_sale_discount($proposal, 'percent')) { ?>
(<?= e(app_format_number($proposal->discount_percent, true)); ?>%)
<?php } ?>
</span>
</td>
<td class="discount">
<?= e('-' . app_format_money($proposal->discount_total, $proposal->currency_name)); ?>
</td>
</tr>
<?php } ?>
<?php
foreach ($items->taxes() as $tax) {
echo '<tr class="tax-area"><td class="bold !tw-text-neutral-700">' . e($tax['taxname']) . ' (' . e(app_format_number($tax['taxrate'])) . '%)</td><td>' . e(app_format_money($tax['total_tax'], $proposal->currency_name)) . '</td></tr>';
}
?>
<?php if ((int) $proposal->adjustment != 0) { ?>
<tr>
<td>
<span class="bold tw-text-neutral-700">
<?= _l('estimate_adjustment'); ?>
</span>
</td>
<td class="adjustment">
<?= e(app_format_money($proposal->adjustment, $proposal->currency_name)); ?>
</td>
</tr>
<?php } ?>
<tr>
<td>
<span class="bold tw-text-neutral-700">
<?= _l('estimate_total'); ?>
</span>
</td>
<td class="total">
<?= e(app_format_money($proposal->total, $proposal->currency_name)); ?>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<?php
if (get_option('total_to_words_enabled') == 1) { ?>
<div class="col-md-12 text-center proposal-html-total-to-words">
<p class="tw-font-medium">
<?= _l('num_word'); ?>:<span
class="tw-text-neutral-500">
<?= $this->numberword->convert($proposal->total, $proposal->currency_name); ?>
</span>
</p>
</div>
<?php }
$items = ob_get_contents();
ob_end_clean();
$proposal->content = str_replace('{proposal_items}', $items, $proposal->content);
?>
<div class="mtop15 preview-top-wrapper">
<div class="row">
<div class="col-md-3">
<div class="mbot30">
<div class="proposal-html-logo">
<?= get_dark_company_logo(); ?>
</div>
</div>
</div>
<div class="clearfix"></div>
</div>
<div class="top" data-sticky data-sticky-class="preview-sticky-header">
<div class="container preview-sticky-container">
<div class="row">
<div class="col-md-12">
<div class="pull-left">
<h4 class="tw-font-semibold tw-my-0 proposal-html-number">#
<?= e(format_proposal_number($proposal->id)); ?><br />
<small
class="proposal-html-subject"><?= e($proposal->subject); ?></small>
</h4>
</div>
<div class="visible-xs">
<div class="clearfix"></div>
</div>
<?php if (($proposal->status != 2 && $proposal->status != 3)) {
if (! empty($proposal->open_till) && date('Y-m-d', strtotime($proposal->open_till)) < date('Y-m-d')) {
echo '<span class="label label-warning tw-ml-4">' . _l('proposal_expired') . '</span>';
} else { ?>
<?php if ($identity_confirmation_enabled == '1') { ?>
<button type="button" id="accept_action"
class="btn btn-success pull-right action-button mleft5">
<i class="fa fa-check"></i>
<?= _l('proposal_accept_info'); ?>
</button>
<?php } else { ?>
<?= form_open($this->uri->uri_string()); ?>
<button type="submit"
data-loading-text="<?= _l('wait_text'); ?>"
autocomplete="off" class="btn btn-success pull-right action-button mleft5"><i
class="fa fa-check"></i>
<?= _l('proposal_accept_info'); ?></button>
<?= form_hidden('action', 'accept_proposal'); ?>
<?= form_close(); ?>
<?php } ?>
<?= form_open($this->uri->uri_string()); ?>
<button type="submit"
data-loading-text="<?= _l('wait_text'); ?>"
autocomplete="off" class="btn btn-default pull-right action-button mleft5"><i
class="fa fa-remove"></i>
<?= _l('proposal_decline_info'); ?></button>
<?= form_hidden('action', 'decline_proposal'); ?>
<?= form_close(); ?>
<?php } ?>
<!-- end expired proposal -->
<?php
} else {
if ($proposal->status == 2) {
echo '<span class="label label-danger tw-ml-4">' . _l('proposal_status_declined') . '</span>';
} elseif ($proposal->status == 3) {
echo '<span class="label label-success tw-ml-4">' . _l('proposal_status_accepted') . '</span>';
}
} ?>
<?= form_open($this->uri->uri_string()); ?>
<button type="submit" class="btn btn-default pull-right action-button mleft5"><i
class="fa-regular fa-file-pdf"></i>
<?= _l('clients_invoice_html_btn_download'); ?></button>
<?= form_hidden('action', 'proposal_pdf'); ?>
<?= form_close(); ?>
<?php if (is_client_logged_in() && has_contact_permission('proposals')) { ?>
<a href="<?= site_url('clients/proposals/'); ?>"
class="btn btn-default mleft5 pull-right action-button go-to-portal">
<?= _l('client_go_to_dashboard'); ?>
</a>
<?php } ?>
<div class="clearfix"></div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-8 proposal-left">
<div class="panel_s mtop20">
<div class="panel-body proposal-content tc-content">
<?= $proposal->content; ?>
</div>
</div>
</div>
<div class="col-md-4 proposal-right">
<div class="inner mtop20 proposal-html-tabs">
<ul class="nav nav-tabs nav-tabs-flat mbot15" role="tablist">
<li role="presentation" class="<?php if (! $this->input->get('tab') || $this->input->get('tab') === 'summary') {
echo 'active';
} ?>">
<a href="#summary" aria-controls="summary" role="tab" data-toggle="tab"
class="tw-flex tw-justify-center tw-space-x-1">
<i class="fa-regular fa-file-lines" aria-hidden="true"></i>
<span><?= _l('summary'); ?></span>
</a>
</li>
<?php if ($proposal->allow_comments == 1) { ?>
<li role="presentation" class="<?php if ($this->input->get('tab') === 'discussion') {
echo 'active';
} ?>">
<a href="#discussion" aria-controls="discussion" role="tab" data-toggle="tab"
class="tw-flex tw-justify-center tw-space-x-1">
<i class="fa-regular fa-comment" aria-hidden="true"></i>
<span><?= _l('discussion'); ?></span>
</a>
</li>
<?php } ?>
</ul>
<div class="tab-content">
<div role="tabpanel" class="tab-pane<?php if (! $this->input->get('tab') || $this->input->get('tab') === 'summary') {
echo ' active';
} ?>" id="summary">
<address class="proposal-html-company-info tw-text-neutral-500 tw-text-normal">
<?= format_organization_info(); ?>
</address>
<hr />
<p class="bold proposal-html-information tw-text-neutral-700">
<?= _l('proposal_information'); ?>
</p>
<address class="tw-mb-0 proposal-html-info tw-text-neutral-500 tw-text-normal">
<?= format_proposal_info($proposal, 'html'); ?>
</address>
<div class="row mtop20">
<?php if ($proposal->total != 0) { ?>
<div class="tw-text-normal col-md-12 proposal-html-total">
<h4 class="bold tw-mb-3">
<?= e(_l('proposal_total_info', app_format_money($proposal->total, $proposal->currency_name))); ?>
</h4>
</div>
<?php } ?>
<div class="tw-text-normal col-md-4 text-muted proposal-status">
<?= _l('proposal_status'); ?>
</div>
<div class="tw-text-normal col-md-8 proposal-status tw-text-neutral-700">
<?= e(format_proposal_status($proposal->status, '', false)); ?>
</div>
<div class="tw-text-normal col-md-4 text-muted proposal-date">
<?= _l('proposal_date'); ?>
</div>
<div class="tw-text-normal col-md-8 proposal-date tw-text-neutral-700">
<?= e(_d($proposal->date)); ?>
</div>
<?php if (! empty($proposal->open_till)) { ?>
<div class="tw-text-normal col-md-4 text-muted proposal-open-till">
<?= _l('proposal_open_till'); ?>
</div>
<div class="tw-text-normal col-md-8 proposal-open-till tw-text-neutral-700">
<?= e(_d($proposal->open_till)); ?>
</div>
<?php } ?>
<?php if ($proposal->project_id != '' && get_option('show_project_on_proposal') == 1) { ?>
<div class="tw-text-normal col-md-4 text-muted proposal-html-project">
<?= _l('project'); ?>
</div>
<div class="tw-text-normal col-md-8 proposal-html-project tw-text-neutral-700">
<?= e(get_project_name_by_id($proposal->project_id)); ?>
</div>
<?php } ?>
</div>
<?php if (count($proposal->attachments) > 0 && $proposal->visible_attachments_to_customer_found == true) { ?>
<div class="proposal-attachments">
<hr />
<p class="bold mbot15">
<?= _l('proposal_files'); ?>
</p>
<?php foreach ($proposal->attachments as $attachment) {
if ($attachment['visible_to_customer'] == 0) {
continue;
}
$attachment_url = site_url('download/file/sales_attachment/' . $attachment['attachment_key']);
if (! empty($attachment['external'])) {
$attachment_url = $attachment['external_link'];
} ?>
<div class="col-md-12 row mbot15">
<div class="pull-left"><i
class="<?= get_mime_class($attachment['filetype']); ?>"></i>
</div>
<a
href="<?= e($attachment_url); ?>"><?= e($attachment['file_name']); ?></a>
</div>
<?php } ?>
</div>
<?php } ?>
</div>
<?php if ($proposal->allow_comments == 1) { ?>
<div role="tabpanel" class="tab-pane<?php if ($this->input->get('tab') === 'discussion') {
echo ' active';
} ?>" id="discussion">
<?= form_open($this->uri->uri_string()); ?>
<div class="proposal-comment">
<textarea name="content" rows="4" class="form-control"></textarea>
<button type="submit" class="btn btn-primary mtop10 pull-right"
data-loading-text="<?= _l('wait_text'); ?>"><?= _l('proposal_add_comment'); ?></button>
<?= form_hidden('action', 'proposal_comment'); ?>
</div>
<?= form_close(); ?>
<div class="clearfix"></div>
<?php
$proposal_comments = '';
foreach ($comments as $comment) {
$proposal_comments .= '<div class="proposal_comment mtop10 mbot20" data-commentid="' . $comment['id'] . '">';
if ($comment['staffid'] != 0) {
$proposal_comments .= staff_profile_image($comment['staffid'], [
'staff-profile-image-small',
'media-object img-circle pull-left mright10',
]);
}
$proposal_comments .= '<div class="media-body valign-middle">';
$proposal_comments .= '<div class="mtop5 tw-text-neutral-600">';
$proposal_comments .= '<b>';
if ($comment['staffid'] != 0) {
$proposal_comments .= e(get_staff_full_name($comment['staffid']));
} else {
$proposal_comments .= _l('is_customer_indicator');
}
$proposal_comments .= '</b>';
$proposal_comments .= ' - <small class="mtop10 text-muted">' . e(time_ago($comment['dateadded'])) . '</small>';
$proposal_comments .= '</div>';
$proposal_comments .= '<div class="tw-text-neutral-500">';
$proposal_comments .= process_text_content_for_display($comment['content']);
$proposal_comments .= '</div>';
$proposal_comments .= '</div>';
$proposal_comments .= '</div>';
}
echo $proposal_comments; ?>
</div>
<?php } ?>
</div>
<?php if (! empty($proposal->signature)) { ?>
<div class="row mtop20">
<div class="col-md-12 proposal-value">
<h4 class="bold mbot10">
<?= _l('signature'); ?>
</h4>
</div>
<div class="col-md-5 text-muted proposal-signed-by">
<?= _l('proposal_signed_by'); ?>
</div>
<div class="col-md-7 proposal-proposal-signed-by">
<?= e("{$proposal->acceptance_firstname} {$proposal->acceptance_lastname}"); ?>
</div>
<div class="col-md-5 text-muted proposal-signed-by">
<?= _l('proposal_signed_date'); ?>
</div>
<div class="col-md-7 proposal-proposal-signed-by">
<?= e(_d(explode(' ', $proposal->acceptance_date)[0])); ?>
</div>
<div class="col-md-5 text-muted proposal-signed-by">
<?= _l('proposal_signed_ip'); ?>
</div>
<div class="col-md-7 proposal-signed-by">
<?= e($proposal->acceptance_ip); ?>
</div>
</div>
<?php } ?>
<div style="margin-top:80px;"></div>
</div>
</div>
</div>
</div>
<?php
if ($identity_confirmation_enabled == '1') {
get_template_part('identity_confirmation_form', ['formData' => form_hidden('action', 'accept_proposal')]);
}
?>
<script>
$(function() {
new Sticky('[data-sticky]');
$(".proposal-left table").wrap("<div class='table-responsive'></div>");
// Create lightbox for proposal content images
$('.proposal-content img').wrap(function() {
return '<a href="' + $(this).attr('src') + '" data-lightbox="proposal"></a>';
});
$('.select-item').on('change', function() {
const $el = $(this);
const isChecked = $el.prop('checked') ? 1 : 0;
const itemId = $el.closest('tr').data('item-id');
$.post(window.location.href, {
item_id: itemId,
choosen: isChecked,
action: 'item_selection_changed'
}).done(function() {
window.location.reload();
});
});
});
</script>
</div>