/home/edulekha/crm.edulekha.com/application/views/admin/proposals/proposal.php
<?php defined('BASEPATH') or exit('No direct script access allowed'); ?>
<?php init_head(); ?>
<div id="wrapper">
<div class="content accounting-template proposal">
<div class="row">
<?php
if (isset($proposal)) {
echo form_hidden('isedit', $proposal->id);
}
$rel_type = '';
$rel_id = '';
if (isset($proposal) || ($this->input->get('rel_id') && $this->input->get('rel_type'))) {
if ($this->input->get('rel_id')) {
$rel_id = $this->input->get('rel_id');
$rel_type = $this->input->get('rel_type');
} else {
$rel_id = $proposal->rel_id;
$rel_type = $proposal->rel_type;
}
}
?>
<?= form_open($this->uri->uri_string(), ['id' => 'proposal-form', 'class' => '_transaction_form proposal-form']);
if ($this->input->get('estimate_request_id')) {
echo form_hidden('estimate_request_id', $this->input->get('estimate_request_id'));
}
?>
<div class="col-md-12">
<h4 class="tw-mt-0 tw-font-bold tw-text-lg tw-text-neutral-700 tw-flex tw-items-center tw-space-x-2">
<span>
<?= e(isset($proposal) ? format_proposal_number($proposal->id) : _l('new_proposal')); ?>
</span>
<?= isset($proposal) ? format_proposal_status($proposal->status) : ''; ?>
</h4>
<div class="panel_s">
<div class="panel-body">
<div class="row">
<div class="col-md-6 border-right">
<?php $value = (isset($proposal) ? $proposal->subject : ''); ?>
<?php $attrs = (isset($proposal) ? [] : ['autofocus' => true]); ?>
<?= render_input('subject', 'proposal_subject', $value, 'text', $attrs); ?>
<div class="form-group select-placeholder">
<label for="rel_type"
class="control-label"><?= _l('proposal_related'); ?></label>
<select name="rel_type" id="rel_type" class="selectpicker" data-width="100%"
data-none-selected-text="<?= _l('dropdown_non_selected_tex'); ?>">
<option value=""></option>
<option value="lead" <?php if ((isset($proposal) && $proposal->rel_type == 'lead') || $this->input->get('rel_type')) {
if ($rel_type == 'lead') {
echo 'selected';
}
} ?>><?= _l('proposal_for_lead'); ?>
</option>
<option value="customer" <?php if ((isset($proposal) && $proposal->rel_type == 'customer') || $this->input->get('rel_type')) {
if ($rel_type == 'customer') {
echo 'selected';
}
} ?>><?= _l('proposal_for_customer'); ?>
</option>
</select>
</div>
<div class="form-group select-placeholder<?php if ($rel_id == '') {
echo ' hide';
} ?> " id="rel_id_wrapper">
<label for="rel_id"><span class="rel_id_label"></span></label>
<div id="rel_id_select">
<select name="rel_id" id="rel_id" class="ajax-search" data-width="100%"
data-live-search="true"
data-none-selected-text="<?= _l('dropdown_non_selected_tex'); ?>">
<?php if ($rel_id != '' && $rel_type != '') {
$rel_data = get_relation_data($rel_type, $rel_id);
$rel_val = get_relation_values($rel_data, $rel_type);
echo '<option value="' . $rel_val['id'] . '" selected>' . $rel_val['name'] . '</option>';
} ?>
</select>
</div>
</div>
<div
class="form-group select-placeholder projects-wrapper <?= ((! isset($proposal)) || (isset($proposal) && $proposal->rel_type !== 'customer')) ? 'hide' : '' ?>">
<label
for="project_id"><?= _l('project'); ?></label>
<div id="project_ajax_search_wrapper">
<select name="project_id" id="project_id" class="projects ajax-search"
data-live-search="true" data-width="100%"
data-none-selected-text="<?= _l('dropdown_non_selected_tex'); ?>">
<?php
if (isset($proposal) && $proposal->project_id) {
echo '<option value="' . $proposal->project_id . '" selected>' . e(get_project_name_by_id($proposal->project_id)) . '</option>';
}
?>
</select>
</div>
</div>
<div class="row">
<div class="col-md-6">
<?php $value = (isset($proposal) ? _d($proposal->date) : _d(date('Y-m-d'))) ?>
<?= render_date_input('date', 'proposal_date', $value); ?>
</div>
<div class="col-md-6">
<?php
$value = '';
if (isset($proposal)) {
$value = _d($proposal->open_till);
} else {
if (get_option('proposal_due_after') != 0) {
$value = _d(date('Y-m-d', strtotime('+' . get_option('proposal_due_after') . ' DAY', strtotime(date('Y-m-d')))));
}
}
echo render_date_input('open_till', 'proposal_open_till', $value); ?>
</div>
</div>
<?php
$selected = '';
$currency_attr = ['data-show-subtext' => true];
foreach ($currencies as $currency) {
if ($currency['isdefault'] == 1) {
$currency_attr['data-base'] = $currency['id'];
}
if (isset($proposal)) {
if ($currency['id'] == $proposal->currency) {
$selected = $currency['id'];
}
if ($proposal->rel_type == 'customer') {
$currency_attr['disabled'] = true;
}
} else {
if ($rel_type == 'customer') {
$customer_currency = $this->clients_model->get_customer_default_currency($rel_id);
if ($customer_currency != 0) {
$selected = $customer_currency;
} else {
if ($currency['isdefault'] == 1) {
$selected = $currency['id'];
}
}
$currency_attr['disabled'] = true;
} else {
if ($currency['isdefault'] == 1) {
$selected = $currency['id'];
}
}
}
}
$currency_attr = apply_filters_deprecated('proposal_currency_disabled', [$currency_attr], '2.3.0', 'proposal_currency_attributes');
$currency_attr = hooks()->apply_filters('proposal_currency_attributes', $currency_attr);
?>
<div class="row">
<div class="col-md-6">
<?= render_select('currency', $currencies, ['id', 'name', 'symbol'], 'proposal_currency', $selected, $currency_attr);
?>
</div>
<div class="col-md-6">
<div class="form-group select-placeholder">
<label for="discount_type"
class="control-label"><?= _l('discount_type'); ?></label>
<select name="discount_type" class="selectpicker" data-width="100%"
data-none-selected-text="<?= _l('dropdown_non_selected_tex'); ?>">
<option value="" selected>
<?= _l('no_discount'); ?>
</option>
<option value="before_tax" <?php
if (isset($estimate)) {
if ($estimate->discount_type == 'before_tax') {
echo 'selected';
}
}?>><?= _l('discount_type_before_tax'); ?>
</option>
<option value="after_tax" <?php if (isset($estimate)) {
if ($estimate->discount_type == 'after_tax') {
echo 'selected';
}
} ?>><?= _l('discount_type_after_tax'); ?>
</option>
</select>
</div>
</div>
</div>
<?php $fc_rel_id = (isset($proposal) ? $proposal->id : false); ?>
<?= render_custom_fields('proposal', $fc_rel_id); ?>
<div class="form-group no-mbot">
<label for="tags" class="control-label"><i class="fa fa-tag" aria-hidden="true"></i>
<?= _l('tags'); ?></label>
<input type="text" class="tagsinput" id="tags" name="tags"
value="<?= isset($proposal) ? prep_tags_input(get_tags_in($proposal->id, 'proposal')) : ''; ?>"
data-role="tagsinput">
</div>
<div class="form-group mtop10 no-mbot">
<p><?= _l('proposal_allow_comments'); ?>
</p>
<div class="onoffswitch">
<input type="checkbox" id="allow_comments" class="onoffswitch-checkbox" <?php if ((isset($proposal) && $proposal->allow_comments == 1) || ! isset($proposal)) {
echo 'checked';
} ?> value="on" name="allow_comments">
<label class="onoffswitch-label" for="allow_comments" data-toggle="tooltip"
title="<?= _l('proposal_allow_comments_help'); ?>"></label>
</div>
</div>
</div>
<div class="col-md-6">
<div class="row">
<div class="col-md-6">
<div class="form-group select-placeholder">
<label for="status"
class="control-label"><?= _l('proposal_status'); ?></label>
<?php
$disabled = '';
if (isset($proposal)) {
if ($proposal->estimate_id != null || $proposal->invoice_id != null) {
$disabled = 'disabled';
}
}
?>
<select name="status" class="selectpicker" data-width="100%"
<?= e($disabled); ?>
data-none-selected-text="<?= _l('dropdown_non_selected_tex'); ?>">
<?php foreach ($statuses as $status) { ?>
<option
value="<?= e($status); ?>"
<?php if ((isset($proposal) && $proposal->status == $status) || (! isset($proposal) && $status == 0)) {
echo 'selected';
} ?>><?= format_proposal_status($status, '', false); ?>
</option>
<?php } ?>
</select>
</div>
</div>
<div class="col-md-6">
<?php
$selected = ! isset($proposal) && get_option('automatically_set_logged_in_staff_sales_agent') == '1' ? get_staff_user_id() : '';
foreach ($staff as $member) {
if (isset($proposal)) {
if ($proposal->assigned == $member['staffid']) {
$selected = $member['staffid'];
}
}
}
echo render_select('assigned', $staff, ['staffid', ['firstname', 'lastname']], 'proposal_assigned', $selected);
?>
</div>
</div>
<?php $value = (isset($proposal) ? $proposal->proposal_to : ''); ?>
<?= render_input('proposal_to', 'proposal_to', $value); ?>
<?php $value = (isset($proposal) ? $proposal->address : ''); ?>
<?= render_textarea('address', 'proposal_address', $value); ?>
<div class="row">
<div class="col-md-6">
<?php $value = (isset($proposal) ? $proposal->city : ''); ?>
<?= render_input('city', 'billing_city', $value); ?>
</div>
<div class="col-md-6">
<?php $value = (isset($proposal) ? $proposal->state : ''); ?>
<?= render_input('state', 'billing_state', $value); ?>
</div>
<div class="col-md-6">
<?php $countries = get_all_countries(); ?>
<?php $selected = (isset($proposal) ? $proposal->country : ''); ?>
<?= render_select('country', $countries, ['country_id', ['short_name'], 'iso2'], 'billing_country', $selected); ?>
</div>
<div class="col-md-6">
<?php $value = (isset($proposal) ? $proposal->zip : ''); ?>
<?= render_input('zip', 'billing_zip', $value); ?>
</div>
<div class="col-md-6">
<?php $value = (isset($proposal) ? $proposal->email : ''); ?>
<?= render_input('email', 'proposal_email', $value); ?>
</div>
<div class="col-md-6">
<?php $value = (isset($proposal) ? $proposal->phone : ''); ?>
<?= render_input('phone', 'proposal_phone', $value); ?>
</div>
</div>
</div>
</div>
<div
class="btn-bottom-toolbar bottom-transaction text-right sm:tw-flex sm:tw-items-center sm:tw-justify-between">
<p class="no-mbot pull-left mtop5 btn-toolbar-notice tw-hidden sm:tw-block">
<?= _l('include_proposal_items_merge_field_help', '<b>{proposal_items}</b>'); ?>
</p>
<div>
<button type="button"
class="btn btn-default mleft10 proposal-form-submit save-and-send transaction-submit">
<?= _l('save_and_send'); ?>
</button>
<button class="btn btn-primary mleft5 proposal-form-submit transaction-submit"
type="button">
<?= _l('submit'); ?>
</button>
</div>
</div>
</div>
<hr class="hr-panel-separator" />
<?php $this->load->view('admin/estimates/_add_edit_items'); ?>
</div>
</div>
<?= form_close(); ?>
<?php $this->load->view('admin/invoice_items/item'); ?>
</div>
<div class="btn-bottom-pusher"></div>
</div>
</div>
<?php init_tail(); ?>
<script>
var _rel_id = $('#rel_id'),
_rel_type = $('#rel_type'),
_rel_id_wrapper = $('#rel_id_wrapper'),
_project_wrapper = $('.projects-wrapper'),
data = {};
$(function() {
<?php if (isset($proposal) && $proposal->rel_type === 'customer') { ?>
init_proposal_project_select('select#project_id')
<?php } ?>
$('body').on('change', '#rel_type', function() {
if (_rel_type.val() != 'customer') {
_project_wrapper.addClass('hide')
}
});
$('body').on('change', '#rel_id', function() {
if (_rel_type.val() == 'customer') {
console.log('working')
var projectAjax = $('select#project_id');
var clonedProjectsAjaxSearchSelect = projectAjax.html('').clone();
projectAjax.selectpicker('destroy').remove();
projectAjax = clonedProjectsAjaxSearchSelect;
$('#project_ajax_search_wrapper').append(clonedProjectsAjaxSearchSelect);
init_proposal_project_select(projectAjax);
_project_wrapper.removeClass('hide')
}
});
init_currency();
// Maybe items ajax search
init_ajax_search('items', '#item_select.ajax-search', undefined, admin_url + 'items/search');
validate_proposal_form();
$('body').on('change', '#rel_id', function() {
if ($(this).val() != '') {
$.get(admin_url + 'proposals/get_relation_data_values/' + $(this).val() + '/' +
_rel_type
.val(),
function(response) {
$('input[name="proposal_to"]').val(response.to);
$('textarea[name="address"]').val(response.address);
$('input[name="email"]').val(response.email);
$('input[name="phone"]').val(response.phone);
$('input[name="city"]').val(response.city);
$('input[name="state"]').val(response.state);
$('input[name="zip"]').val(response.zip);
$('select[name="country"]').selectpicker('val', response.country);
var currency_selector = $('#currency');
if (_rel_type.val() == 'customer') {
if (typeof(currency_selector.attr('multi-currency')) == 'undefined') {
currency_selector.attr('disabled', true);
}
} else {
currency_selector.attr('disabled', false);
}
var proposal_to_wrapper = $('[app-field-wrapper="proposal_to"]');
if (response.is_using_company == false && !empty(response.company)) {
proposal_to_wrapper.find('#use_company_name').remove();
proposal_to_wrapper.find('#use_company_help').remove();
proposal_to_wrapper.append('<div id="use_company_help" class="hide">' +
response.company + '</div>');
proposal_to_wrapper.find('label')
.prepend(
"<a href=\"#\" id=\"use_company_name\" data-toggle=\"tooltip\" data-title=\"<?= _l('use_company_name_instead'); ?>\" onclick='document.getElementById(\"proposal_to\").value = document.getElementById(\"use_company_help\").innerHTML.trim(); this.remove();'><i class=\"fa fa-building-o\"></i></a> "
);
} else {
proposal_to_wrapper.find('label #use_company_name').remove();
proposal_to_wrapper.find('label #use_company_help').remove();
}
/* Check if customer default currency is passed */
if (response.currency) {
currency_selector.selectpicker('val', response.currency);
} else {
/* Revert back to base currency */
currency_selector.selectpicker('val', currency_selector.data('base'));
}
currency_selector.selectpicker('refresh');
currency_selector.change();
}, 'json');
}
});
$('.rel_id_label').html(_rel_type.find('option:selected').text());
_rel_type.on('change', function() {
var clonedSelect = _rel_id.html('').clone();
_rel_id.selectpicker('destroy').remove();
_rel_id = clonedSelect;
$('#rel_id_select').append(clonedSelect);
proposal_rel_id_select();
if ($(this).val() != '') {
_rel_id_wrapper.removeClass('hide');
} else {
_rel_id_wrapper.addClass('hide');
}
$('.rel_id_label').html(_rel_type.find('option:selected').text());
});
proposal_rel_id_select();
<?php if (! isset($proposal) && $rel_id != '') { ?>
_rel_id.change();
<?php } ?>
});
function init_proposal_project_select(selector) {
init_ajax_search('project', selector, {
customer_id: function() {
return $('#rel_id').val();
}
})
}
function proposal_rel_id_select() {
var serverData = {};
serverData.rel_id = _rel_id.val();
data.type = _rel_type.val();
init_ajax_search(_rel_type.val(), _rel_id, serverData);
}
function validate_proposal_form() {
appValidateForm($('#proposal-form'), {
subject: 'required',
proposal_to: 'required',
rel_type: 'required',
rel_id: 'required',
date: 'required',
email: {
email: true,
required: true
},
currency: 'required',
});
}
</script>
</body>
</html>