mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2025-12-31 13:37:54 -05:00
* Improve code style and PSR-12 compliance - refactored code formatting to adhere to PSR-12 guidelines - standardized coding conventions across the codebase - added missing framework files and reverted markup changes - reformatted arrays for enhanced readability - updated language files for consistent styling and clarity - minor miscellaneous improvements
521 lines
26 KiB
PHP
521 lines
26 KiB
PHP
<?php
|
|
/**
|
|
* @var string $controller_name
|
|
* @var object $person_info
|
|
* @var array $packages
|
|
* @var int $selected_package
|
|
* @var bool $use_destination_based_tax
|
|
* @var string $sales_tax_code_label
|
|
* @var string $employee
|
|
* @var array $config
|
|
*/
|
|
?>
|
|
|
|
<div id="required_fields_message"><?= lang('Common.fields_required_message') ?></div>
|
|
<ul id="error_message_box" class="error_message_box"></ul>
|
|
|
|
<?= form_open("$controller_name/save/$person_info->person_id", ['id' => 'customer_form', 'class' => 'form-horizontal']) ?>
|
|
|
|
<ul class="nav nav-tabs nav-justified" data-tabs="tabs">
|
|
<li class="active" role="presentation">
|
|
<a data-toggle="tab" href="#customer_basic_info"><?= lang('Customers.basic_information') ?></a>
|
|
</li>
|
|
<?php if (!empty($stats)) { ?>
|
|
<li role="presentation">
|
|
<a data-toggle="tab" href="#customer_stats_info"><?= lang('Customers.stats_info') ?></a>
|
|
</li>
|
|
<?php } ?>
|
|
<?php if (!empty($mailchimp_info) && !empty($mailchimp_activity)) { ?>
|
|
<li role="presentation">
|
|
<a data-toggle="tab" href="#customer_mailchimp_info"><?= lang('Customers.mailchimp_info') ?></a>
|
|
</li>
|
|
<?php } ?>
|
|
</ul>
|
|
|
|
<div class="tab-content">
|
|
<div class="tab-pane fade in active" id="customer_basic_info">
|
|
<fieldset>
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.consent'), 'consent', ['class' => 'required control-label col-xs-3']) ?>
|
|
<div class="col-xs-1">
|
|
<?= form_checkbox('consent', 1, $person_info->consent == '' ? !$config['enforce_privacy'] : (bool)$person_info->consent) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<?= view('people/form_basic_info') ?>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.discount_type'), 'discount_type', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-8">
|
|
<label class="radio-inline">
|
|
<?= form_radio([
|
|
'name' => 'discount_type',
|
|
'type' => 'radio',
|
|
'id' => 'discount_type',
|
|
'value' => 0,
|
|
'checked' => $person_info->discount_type == PERCENT
|
|
]) ?> <?= lang('Customers.discount_percent') ?>
|
|
</label>
|
|
<label class="radio-inline">
|
|
<?= form_radio([
|
|
'name' => 'discount_type',
|
|
'type' => 'radio',
|
|
'id' => 'discount_type',
|
|
'value' => 1,
|
|
'checked' => $person_info->discount_type == FIXED
|
|
]) ?> <?= lang('Customers.discount_fixed') ?>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.discount'), 'discount', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-3">
|
|
<div class="input-group input-group-sm">
|
|
<?= form_input([
|
|
'name' => 'discount',
|
|
'id' => 'discount',
|
|
'class' => 'form-control input-sm',
|
|
'onClick' => 'this.select();',
|
|
'value' => $person_info->discount_type === FIXED ? to_currency_no_money($person_info->discount) : to_decimals($person_info->discount)
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.company_name'), 'customer_company_name', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-8">
|
|
<?= form_input([
|
|
'name' => 'company_name',
|
|
'id' => 'customer_company_name',
|
|
'class' => 'form-control input-sm',
|
|
'value' => $person_info->company_name
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.account_number'), 'account_number', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-4">
|
|
<?= form_input([
|
|
'name' => 'account_number',
|
|
'id' => 'account_number',
|
|
'class' => 'form-control input-sm',
|
|
'value' => $person_info->account_number
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.tax_id'), 'tax_id', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-4">
|
|
<?= form_input([
|
|
'name' => 'tax_id',
|
|
'id' => 'tax_id',
|
|
'class' => 'form-control input-sm',
|
|
'value' => $person_info->tax_id
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<?php if ($config['customer_reward_enable']): ?>
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.rewards_package'), 'rewards', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-8">
|
|
<?= form_dropdown(
|
|
'package_id',
|
|
$packages,
|
|
$selected_package,
|
|
'class="form-control input-sm"'
|
|
) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.available_points'), 'available_points', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-4">
|
|
<?= form_input([
|
|
'name' => 'available_points',
|
|
'id' => 'available_points',
|
|
'class' => 'form-control input-sm',
|
|
'value' => $person_info->points,
|
|
'disabled' => ''
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
<?php endif; ?>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.taxable'), 'taxable', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-1">
|
|
<?= form_checkbox('taxable', 1, $person_info->taxable == 1) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<?php if ($use_destination_based_tax) { ?>
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.tax_code'), 'sales_tax_code_name', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-8">
|
|
<div class="input-group input-group-sm">
|
|
<?= form_input([
|
|
'name' => 'sales_tax_code_name',
|
|
'id' => 'sales_tax_code_name',
|
|
'class' => 'form-control input-sm',
|
|
'size' => '50',
|
|
'value' => $sales_tax_code_label
|
|
]) ?>
|
|
<?= form_hidden('sales_tax_code_id', $person_info->sales_tax_code_id) ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?php } ?>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.date'), 'date', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-8">
|
|
<div class="input-group">
|
|
<span class="input-group-addon input-sm"><span class="glyphicon glyphicon-calendar"></span></span>
|
|
<?= form_input([
|
|
'name' => 'date',
|
|
'id' => 'datetime',
|
|
'class' => 'form-control input-sm',
|
|
'value' => to_datetime(strtotime($person_info->date)),
|
|
'readonly' => 'true'
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.employee'), 'employee', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-8">
|
|
<?= form_input([
|
|
'name' => 'employee',
|
|
'id' => 'employee',
|
|
'class' => 'form-control input-sm',
|
|
'value' => $employee,
|
|
'readonly' => 'true'
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<?= form_hidden('employee_id', $person_info->employee_id) ?>
|
|
</fieldset>
|
|
</div>
|
|
|
|
<?php if (!empty($stats)) { ?>
|
|
<br>
|
|
<div class="tab-pane" id="customer_stats_info">
|
|
<fieldset>
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.total'), 'total', ['class' => 'control-label col-xs-5']) ?>
|
|
<div class="col-xs-4">
|
|
<div class="input-group input-group-sm">
|
|
<?php if (!is_right_side_currency_symbol()): ?>
|
|
<span class="input-group-addon input-sm"><b><?= esc($config['currency_symbol']) ?></b></span>
|
|
<?php endif; ?>
|
|
<?= form_input([
|
|
'name' => 'total',
|
|
'id' => 'total',
|
|
'class' => 'form-control input-sm',
|
|
'value' => to_currency_no_money($stats->total),
|
|
'disabled' => ''
|
|
]) ?>
|
|
<?php if (is_right_side_currency_symbol()): ?>
|
|
<span class="input-group-addon input-sm"><b><?= esc($config['currency_symbol']) ?></b></span>
|
|
<?php endif; ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.max'), 'max', ['class' => 'control-label col-xs-5']) ?>
|
|
<div class="col-xs-4">
|
|
<div class="input-group input-group-sm">
|
|
<?php if (!is_right_side_currency_symbol()): ?>
|
|
<span class="input-group-addon input-sm"><b><?= esc($config['currency_symbol']) ?></b></span>
|
|
<?php endif; ?>
|
|
<?= form_input([
|
|
'name' => 'max',
|
|
'id' => 'max',
|
|
'class' => 'form-control input-sm',
|
|
'value' => to_currency_no_money($stats->max),
|
|
'disabled' => ''
|
|
]) ?>
|
|
<?php if (is_right_side_currency_symbol()): ?>
|
|
<span class="input-group-addon input-sm"><b><?= esc($config['currency_symbol']) ?></b></span>
|
|
<?php endif; ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.min'), 'min', ['class' => 'control-label col-xs-5']) ?>
|
|
<div class="col-xs-4">
|
|
<div class="input-group input-group-sm">
|
|
<?php if (!is_right_side_currency_symbol()): ?>
|
|
<span class="input-group-addon input-sm"><b><?= esc($config['currency_symbol']) ?></b></span>
|
|
<?php endif; ?>
|
|
<?= form_input([
|
|
'name' => 'min',
|
|
'id' => 'min',
|
|
'class' => 'form-control input-sm',
|
|
'value' => to_currency_no_money($stats->min),
|
|
'disabled' => ''
|
|
]) ?>
|
|
<?php if (is_right_side_currency_symbol()): ?>
|
|
<span class="input-group-addon input-sm"><b><?= esc($config['currency_symbol']) ?></b></span>
|
|
<?php endif; ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.average'), 'average', ['class' => 'control-label col-xs-5']) ?>
|
|
<div class="col-xs-4">
|
|
<div class="input-group input-group-sm">
|
|
<?php if (!is_right_side_currency_symbol()): ?>
|
|
<span class="input-group-addon input-sm"><b><?= esc($config['currency_symbol']) ?></b></span>
|
|
<?php endif; ?>
|
|
<?= form_input([
|
|
'name' => 'average',
|
|
'id' => 'average',
|
|
'class' => 'form-control input-sm',
|
|
'value' => to_currency_no_money($stats->average),
|
|
'disabled' => ''
|
|
]) ?>
|
|
<?php if (is_right_side_currency_symbol()): ?>
|
|
<span class="input-group-addon input-sm"><b><?= esc($config['currency_symbol']) ?></b></span>
|
|
<?php endif; ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.quantity'), 'quantity', ['class' => 'control-label col-xs-5']) ?>
|
|
<div class="col-xs-4">
|
|
<div class="input-group input-group-sm">
|
|
<span class="input-group-addon input-sm"><b><?= '>' ?></b></span>
|
|
<?= form_input([
|
|
'name' => 'quantity',
|
|
'id' => 'quantity',
|
|
'class' => 'form-control input-sm',
|
|
'value' => to_quantity_decimals($stats->quantity),
|
|
'disabled' => ''
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.avg_discount'), 'avg_discount', ['class' => 'control-label col-xs-5']) ?>
|
|
<div class="col-xs-4">
|
|
<div class="input-group input-group-sm">
|
|
<?= form_input([
|
|
'name' => 'avg_discount',
|
|
'id' => 'avg_discount',
|
|
'class' => 'form-control input-sm',
|
|
'value' => to_decimals($stats->avg_discount),
|
|
'disabled' => ''
|
|
]) ?>
|
|
<span class="input-group-addon input-sm"><b>%</b></span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
<?php } ?>
|
|
|
|
<?php if (!empty($mailchimp_info) && !empty($mailchimp_activity)) { ?>
|
|
<div class="tab-pane" id="customer_mailchimp_info">
|
|
<fieldset>
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.mailchimp_status'), 'mailchimp_status', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-4">
|
|
<?= form_dropdown(
|
|
'mailchimp_status',
|
|
[
|
|
'subscribed' => 'subscribed',
|
|
'unsubscribed' => 'unsubscribed',
|
|
'cleaned' => 'cleaned',
|
|
'pending' => 'pending'
|
|
],
|
|
$mailchimp_info['status'],
|
|
['id' => 'mailchimp_status', 'class' => 'form-control input-sm']
|
|
) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.mailchimp_vip'), 'mailchimp_vip', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-1">
|
|
<?= form_checkbox('mailchimp_vip', 1, $mailchimp_info['vip'] == 1) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.mailchimp_member_rating'), 'mailchimp_member_rating', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-4">
|
|
<?= form_input([
|
|
'name' => 'mailchimp_member_rating',
|
|
'class' => 'form-control input-sm',
|
|
'value' => $mailchimp_info['member_rating'],
|
|
'disabled' => ''
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.mailchimp_activity_total'), 'mailchimp_activity_total', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-4">
|
|
<?= form_input([
|
|
'name' => 'mailchimp_activity_total',
|
|
'class' => 'form-control input-sm',
|
|
'value' => $mailchimp_activity['total'],
|
|
'disabled' => ''
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.mailchimp_activity_lastopen'), 'mailchimp_activity_lastopen', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-4">
|
|
<?= form_input([
|
|
'name' => 'mailchimp_activity_lastopen',
|
|
'class' => 'form-control input-sm',
|
|
'value' => $mailchimp_activity['lastopen'],
|
|
'disabled' => ''
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.mailchimp_activity_open'), 'mailchimp_activity_open', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-4">
|
|
<?= form_input([
|
|
'name' => 'mailchimp_activity_open',
|
|
'class' => 'form-control input-sm',
|
|
'value' => $mailchimp_activity['open'],
|
|
'disabled' => ''
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.mailchimp_activity_click'), 'mailchimp_activity_click', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-4">
|
|
<?= form_input([
|
|
'name' => 'mailchimp_activity_click',
|
|
'class' => 'form-control input-sm',
|
|
'value' => $mailchimp_activity['click'],
|
|
'disabled' => ''
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.mailchimp_activity_unopen'), 'mailchimp_activity_unopen', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-4">
|
|
<?= form_input([
|
|
'name' => 'mailchimp_activity_unopen',
|
|
'class' => 'form-control input-sm',
|
|
'value' => $mailchimp_activity['unopen'],
|
|
'disabled' => ''
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group form-group-sm">
|
|
<?= form_label(lang('Customers.mailchimp_email_client'), 'mailchimp_email_client', ['class' => 'control-label col-xs-3']) ?>
|
|
<div class="col-xs-4">
|
|
<?= form_input([
|
|
'name' => 'mailchimp_email_client',
|
|
'class' => 'form-control input-sm',
|
|
'value' => $mailchimp_info['email_client'],
|
|
'disabled' => ''
|
|
]) ?>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
<?php } ?>
|
|
</div>
|
|
|
|
<?= form_close() ?>
|
|
|
|
<script type="text/javascript">
|
|
// Validation and submit handling
|
|
$(document).ready(function() {
|
|
$("input[name='sales_tax_code_name']").change(function() {
|
|
if (!$("input[name='sales_tax_code_name']").val()) {
|
|
$("input[name='sales_tax_code_id']").val('');
|
|
}
|
|
});
|
|
|
|
var fill_value = function(event, ui) {
|
|
event.preventDefault();
|
|
$("input[name='sales_tax_code_id']").val(ui.item.value);
|
|
$("input[name='sales_tax_code_name']").val(ui.item.label);
|
|
};
|
|
|
|
$('#sales_tax_code_name').autocomplete({
|
|
source: "<?= esc('taxes/suggestTaxCodes') ?>",
|
|
minChars: 0,
|
|
delay: 15,
|
|
cacheLength: 1,
|
|
appendTo: '.modal-content',
|
|
select: fill_value,
|
|
focus: fill_value
|
|
});
|
|
|
|
$('#customer_form').validate($.extend({
|
|
submitHandler: function(form) {
|
|
$(form).ajaxSubmit({
|
|
success: function(response) {
|
|
dialog_support.hide();
|
|
table_support.handle_submit("<?= $controller_name ?>", response);
|
|
},
|
|
dataType: 'json'
|
|
});
|
|
},
|
|
|
|
errorLabelContainer: '#error_message_box',
|
|
|
|
rules: {
|
|
first_name: 'required',
|
|
last_name: 'required',
|
|
consent: 'required',
|
|
email: {
|
|
remote: {
|
|
url: "<?= "$controller_name/checkEmail" ?>",
|
|
type: 'POST',
|
|
data: {
|
|
'person_id': "<?= $person_info->person_id ?>"
|
|
// Email is posted by default
|
|
}
|
|
}
|
|
},
|
|
account_number: {
|
|
remote: {
|
|
url: "<?= "$controller_name/checkAccountNumber" ?>",
|
|
type: 'POST',
|
|
data: {
|
|
'person_id': "<?= $person_info->person_id ?>"
|
|
// Account_number is posted by default
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
messages: {
|
|
first_name: "<?= lang('Common.first_name_required') ?>",
|
|
last_name: "<?= lang('Common.last_name_required') ?>",
|
|
consent: "<?= lang('Customers.consent_required') ?>",
|
|
email: "<?= lang('Customers.email_duplicate') ?>",
|
|
account_number: "<?= lang('Customers.account_number_duplicate') ?>"
|
|
}
|
|
}, form_support.error));
|
|
});
|
|
</script>
|