customer reward points first phase work

This commit is contained in:
Joshua Fernandes
2017-03-04 16:13:56 +05:30
parent 3d9665c0a9
commit deea43ce67
22 changed files with 586 additions and 5 deletions

View File

@@ -132,4 +132,4 @@ $autoload['language'] = array();
|
| $autoload['model'] = array('first_model' => 'first');
*/
$autoload['model'] = array('Appconfig', 'Person', 'Customer', 'Employee', 'Module', 'Item', 'Item_taxes', 'Sale', 'Sale_suspended', 'Supplier', 'Inventory', 'Receiving', 'Giftcard', 'Item_kit', 'Item_kit_items', 'Stock_location', 'Item_quantity','Dinner_table');
$autoload['model'] = array('Appconfig', 'Person', 'Customer', 'Employee', 'Module', 'Item', 'Item_taxes', 'Sale', 'Sale_suspended', 'Supplier', 'Inventory', 'Receiving', 'Giftcard', 'Item_kit', 'Item_kit_items', 'Stock_location', 'Item_quantity','Dinner_table','Customer_rewards','Rewards');

View File

@@ -358,7 +358,7 @@ $config['cache_query_string'] = FALSE;
| https://codeigniter.com/user_guide/libraries/encryption.html
|
*/
$config['encryption_key'] = '';
$config['encryption_key'] = 'ec58a27d5854523044e3283b673a97c1deb59fe1e6f2ca7f77ed5e0f4c5aa02a';
/*
|--------------------------------------------------------------------------

View File

@@ -194,6 +194,7 @@ class Config extends Secure_Controller
{
$data['stock_locations'] = $this->Stock_location->get_all()->result_array();
$data['dinner_tables'] = $this->Dinner_table->get_all()->result_array();
$data['customer_rewards'] = $this->Customer_rewards->get_all()->result_array();
$data['support_barcode'] = $this->barcode_lib->get_list_barcodes();
$data['logo_exists'] = $this->config->item('company_logo') != '';
$data['line_sequence_options'] = $this->sale_lib->get_line_sequence_options();
@@ -385,6 +386,15 @@ class Config extends Secure_Controller
$this->load->view('partial/dinner_tables', array('dinner_tables' => $dinner_tables));
}
public function customer_rewards()
{
$customer_rewards = $this->Customer_rewards->get_all()->result_array();
$customer_rewards = $this->xss_clean($customer_rewards);
$this->load->view('partial/customer_rewards', array('customer_rewards' => $customer_rewards));
}
private function _clear_session_state()
{
@@ -471,6 +481,56 @@ class Config extends Secure_Controller
echo json_encode(array('success' => $success, 'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')));
}
public function save_rewards()
{
$this->db->trans_start();
$this->Appconfig->save('customer_reward_enable',$this->input->post('customer_reward_enable'));
$deleted_packages = $this->Customer_rewards->get_all()->result_array();
$not_to_delete = array();
$array_save = array();
foreach($this->input->post() as $key => $value)
{
if (strstr($key, 'reward_points') && $key != 'customer_reward_enable')
{
$customer_reward_id = preg_replace("/.*?_(\d+)$/", "$1", $key);
$not_to_delete[] = $customer_reward_id;
$array_save[$customer_reward_id]['points_percent'] = $value;
}
if (strstr($key, 'customer_reward') && $key != 'customer_reward_enable')
{
$customer_reward_id = preg_replace("/.*?_(\d+)$/", "$1", $key);
$not_to_delete[] = $customer_reward_id;
$array_save[$customer_reward_id]['package_name'] = $value;
}
}
if(!empty($array_save))
foreach ($array_save as $key => $value) {
// save or update
$table_data = array('package_name' => $value['package_name'],'points_percent' => $value['points_percent']);
if ($this->Customer_rewards->save($table_data, $key))
{
$this->_clear_session_state();
}
}
// all locations not available in post will be deleted now
foreach ($deleted_packages as $customer_reward)
{
if(!in_array($customer_reward['customer_reward_id'],$not_to_delete))
{
$this->Customer_rewards->delete($customer_reward['customer_reward_id']);
}
}
$this->db->trans_complete();
$success = $this->db->trans_status();
echo json_encode(array('success' => $success, 'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')));
}
public function save_barcode()
{
$batch_save_data = array(

View File

@@ -71,6 +71,13 @@ class Customers extends Persons
$data['person_info'] = $info;
$data['total'] = $this->xss_clean($this->Customer->get_totals($customer_id)->total);
$packages = array('' => $this->lang->line('items_none'));
foreach($this->Customer_rewards->get_all()->result_array() as $row)
{
$packages[$this->xss_clean($row['package_id'])] = $this->xss_clean($row['package_name']);
}
$data['packages'] = $packages;
$data['selected_package'] = $info->package_id;
$this->load->view("customers/form", $data);
}
@@ -98,6 +105,7 @@ class Customers extends Persons
'account_number' => $this->input->post('account_number') == '' ? NULL : $this->input->post('account_number'),
'company_name' => $this->input->post('company_name') == '' ? NULL : $this->input->post('company_name'),
'discount_percent' => $this->input->post('discount_percent') == '' ? 0.00 : $this->input->post('discount_percent'),
'package_id' => $this->input->post('package_id') == '' ? NULL : $this->input->post('package_id'),
'taxable' => $this->input->post('taxable') != NULL
);

View File

@@ -229,6 +229,38 @@ class Sales extends Secure_Controller
$this->sale_lib->add_payment($payment_type, $amount_tendered);
}
}
else if ($payment_type == $this->lang->line('sales_rewards'))
{
$customer_id = $this->sale_lib->get_customer();
$package_id = $this->Customer->get_info($customer_id)->package_id;
if(isset($package_id) && $package_id!=NULL){
$package_name = $this->Customer_rewards->get_name($package_id);
$points = $this->Customer->get_info($customer_id)->points;
$points = ($points==NULL ? 0 : $points);
$payments = $this->sale_lib->get_payments();
$payment_type = $payment_type;
$current_payments_with_rewards = isset($payments[$payment_type]) ? $payments[$payment_type]['payment_amount'] : 0;
$cur_rewards_value = $points;
if(($cur_rewards_value - $current_payments_with_rewards) <= 0)
{
$data['error'] = $this->lang->line('rewards_remaining_balance', to_currency($cur_rewards_value));
}
else
{
$new_reward_value = $points - $this->sale_lib->get_amount_due();
$new_reward_value = $new_reward_value >= 0 ? $new_reward_value : 0;
$this->sale_lib->set_rewards_remainder($new_reward_value);
$new_reward_value = str_replace('$', '\$', to_currency($new_reward_value));
$data['warning'] = $this->lang->line('rewards_remaining_balance', $new_reward_value);
$amount_tendered = min($this->sale_lib->get_amount_due(), $points);
$this->sale_lib->add_payment($payment_type, $amount_tendered);
}
}
}
else
{
$amount_tendered = $this->input->post('amount_tendered');
@@ -375,6 +407,8 @@ class Sales extends Secure_Controller
public function remove_customer()
{
$this->sale_lib->clear_giftcard_remainder();
$this->sale_lib->clear_rewards_remainder();
$this->sale_lib->delete_payment($this->lang->line('sales_rewards'));
$this->sale_lib->clear_invoice_number();
$this->sale_lib->remove_customer();
@@ -415,6 +449,7 @@ class Sales extends Secure_Controller
));
$data['invoice_number_enabled'] = $this->sale_lib->is_invoice_mode();
$data['cur_giftcard_value'] = $this->sale_lib->get_giftcard_remainder();
$data['cur_rewards_value'] = $this->sale_lib->get_rewards_remainder();
$data['print_after_sale'] = $this->sale_lib->is_print_after_sale();
$data['email_receipt'] = $this->sale_lib->get_email_receipt();
$customer_id = $this->sale_lib->get_customer();
@@ -739,6 +774,14 @@ class Sales extends Secure_Controller
}
$data['customer_account_number'] = $customer_info->account_number;
$data['customer_discount_percent'] = $customer_info->discount_percent;
$package_id = $this->Customer->get_info($customer_id)->package_id;
if($package_id!=NULL){
$package_name = $this->Customer_rewards->get_name($package_id);
$points = $this->Customer->get_info($customer_id)->points;
$data['customer_rewards']['package_id'] = $package_id;
$data['customer_rewards']['points'] = ($points==NULL ? 0 : $points);
$data['customer_rewards']['package_name'] = $package_name;
}
if ($totals)
{
$cust_totals = $this->Customer->get_totals($customer_id);
@@ -835,7 +878,10 @@ class Sales extends Secure_Controller
$data['payments_total'] = $this->sale_lib->get_payments_total();
$data['amount_due'] = $this->sale_lib->get_amount_due();
$data['payments'] = $this->sale_lib->get_payments();
$data['payment_options'] = $this->Sale->get_payment_options();
if($customer_info)
$data['payment_options'] = $this->Sale->get_payment_options(TRUE,TRUE);
else
$data['payment_options'] = $this->Sale->get_payment_options();
$quote_number = $this->sale_lib->get_quote_number();
if ($quote_number != NULL)
{

View File

@@ -195,3 +195,10 @@ $lang["config_number_locale_required"] = "Number Locale is a required field";
$lang["config_number_locale_invalid"] = "The entered locale is invalid. Check the link in the tooltip to find a sensible value";
$lang["config_number_locale_tooltip"] = "Find a suitable locale through this link";
$lang["config_theme"] = "Theme";
$lang["config_reward"] = "Reward";
$lang["config_reward_configuration"] = "Reward Configuration";
$lang["config_customer_reward"] = "Reward";
$lang["config_customer_reward_enable"] = "Enable Customer Rewards";
$lang["config_customer_reward_duplicate"] = "Please use an unique reward name";
$lang["config_customer_reward_invalid_chars"] = "The reward name can not contain '_'";
$lang["config_customer_reward_required"] = "Reward is a required field";

View File

@@ -22,3 +22,5 @@ $lang["customers_excel_import_failed"] = "Excel import failed";
$lang["customers_excel_import_nodata_wrongformat"] = "Your uploaded file has no data or wrong format";
$lang["customers_excel_import_success"] = "Import of Customers successful";
$lang["customers_excel_import_partially_failed"] = "Most Customers imported. But some were not, here is the list";
$lang["rewards_package"] = "Rewards Package";
$lang["customers_available_points"] = "Available Points";

View File

@@ -132,3 +132,8 @@ $lang["sales_unsuspend_and_delete"] = "";
$lang["sales_update"] = "Update";
$lang["sales_date_range"] = "Date Range";
$lang["sales_none_selected"] = "You have not selected any sales to delete";
$lang["rewards_package"] = "Rewards";
$lang["customers_available_points"] = "Available Points";
$lang["sales_rewards"] = "Reward Points";
$lang["sales_rewards_balance"] = "Reward Points Balance";
$lang["rewards_remaining_balance"] = "Reward Points remaining value is %1!";

View File

@@ -446,6 +446,21 @@ class Sale_lib
$this->CI->session->unset_userdata('sales_giftcard_remainder');
}
public function set_rewards_remainder($value)
{
$this->CI->session->set_userdata('sales_rewards_remainder', $value);
}
public function get_rewards_remainder()
{
return $this->CI->session->userdata('sales_rewards_remainder');
}
public function clear_rewards_remainder()
{
$this->CI->session->unset_userdata('sales_rewards_remainder');
}
public function add_item(&$item_id, $quantity = 1, $item_location, $discount = 0, $price = NULL, $description = NULL, $serialnumber = NULL, $include_deleted = FALSE, $print_option = '0', $stock_type = '0')
{
$item_info = $this->CI->Item->get_info_by_id_or_number($item_id);

View File

@@ -145,6 +145,16 @@ class Customer extends Person
return $success;
}
/*
Updates reward points value
*/
public function update_reward_points_value($customer_id, $value)
{
$this->db->where('person_id', $customer_id);
$this->db->update('customers', array('points' => $value));
}
/*
Deletes one customer
*/

View File

@@ -0,0 +1,84 @@
<?php
class Customer_rewards extends CI_Model
{
public function exists($package_id)
{
$this->db->from('customers_packages');
$this->db->where('package_id', $package_id);
return ($this->db->get()->num_rows() >= 1);
}
public function save(&$table_data, $package_id)
{
$name = $$table_data['package_name'];
$points_percent = $$table_data['points_percent'];
if(!$this->exists($package_id))
{
$this->db->trans_start();
$location_data = array('package_name'=>$name, 'deleted'=>0, 'points_percent'=>$points_percent);
$this->db->insert('customers_packages', $table_data);
$package_id = $this->db->insert_id();
$this->db->trans_complete();
return $this->db->trans_status();
}
else
{
$this->db->where('package_id', $package_id);
return $this->db->update('customers_packages', $table_data);
}
}
public function get_name($package_id)
{
$this->db->from('customers_packages');
$this->db->where('package_id',$package_id);
return $this->db->get()->row()->package_name;
}
public function get_points_percent($package_id)
{
$this->db->from('customers_packages');
$this->db->where('package_id',$package_id);
return $this->db->get()->row()->points_percent;
}
public function get_all()
{
$this->db->from('customers_packages');
return $this->db->get();
}
public function get_undeleted_all()
{
$this->db->from('customers_packages');
$this->db->where('deleted', 0);
return $this->db->get();
}
/*
Deletes one table
*/
public function delete($package_id)
{
$this->db->trans_start();
$this->db->where('package_id', $package_id);
$this->db->update('customers_packages', array('deleted' => 1));
$this->db->trans_complete();
return $this->db->trans_status();
}
}
?>

View File

@@ -0,0 +1,27 @@
<?php
class Rewards extends CI_Model
{
/*
Inserts or updates a rewards
*/
public function save(&$rewards_data, $id = -1)
{
if($id == -1 || !$this->exists($id))
{
if($this->db->insert('sales_reward_points', $rewards_data))
{
$rewards_data['id'] = $this->db->insert_id();
return TRUE;
}
return FALSE;
}
$this->db->where('id', $id);
return $this->db->update('sales_reward_points', $rewards_data);
}
}
?>

View File

@@ -507,7 +507,8 @@ class Sale extends CI_Model
$this->db->insert('sales', $sales_data);
$sale_id = $this->db->insert_id();
$total_amount = 0;
$total_amount_used = 0;
foreach($payments as $payment_id=>$payment)
{
if( substr( $payment['payment_type'], 0, strlen( $this->lang->line('sales_giftcard') ) ) == $this->lang->line('sales_giftcard') )
@@ -518,14 +519,37 @@ class Sale extends CI_Model
$this->Giftcard->update_giftcard_value( $splitpayment[1], $cur_giftcard_value - $payment['payment_amount'] );
}
if( substr( $payment['payment_type'], 0, strlen( $this->lang->line('sales_rewards') ) ) == $this->lang->line('sales_rewards') )
{
$cur_rewards_value = $this->Customer->get_info($customer_id)->points;
$this->Customer->update_reward_points_value($customer_id, $cur_rewards_value - $payment['payment_amount'] );
$total_amount_used = floatval($total_amount_used) + floatval($payment['payment_amount']);
}
$sales_payments_data = array(
'sale_id' => $sale_id,
'payment_type' => $payment['payment_type'],
'payment_amount' => $payment['payment_amount']
);
$this->db->insert('sales_payments', $sales_payments_data);
$total_amount = floatval($total_amount) + floatval($payment['payment_amount']);
}
if(isset($customer_id) && $customer_id!= NULL){
$package_id = $this->Customer->get_info($customer_id)->package_id;
if(isset($package_id) && $package_id!=NULL){
$points_percent = $this->Customer_rewards->get_points_percent($package_id);
$points = $this->Customer->get_info($customer_id)->points;
$points = ($points==NULL ? 0 : $points);
$points_percent = ($points_percent==NULL ? 0 : $points_percent);
$total_amount_earned = ($total_amount*$points_percent/100);
$points = $points + $total_amount_earned;
$this->Customer->update_reward_points_value($customer_id, $points);
$rewards_data = array('sale_id'=>$sale_id, 'earned'=>$total_amount_earned, 'used'=>$total_amount_used);
$this->Rewards->save($rewards_data);
}
}
foreach($items as $line=>$item)
{
$cur_item_info = $this->Item->get_info($item['item_id']);
@@ -730,7 +754,7 @@ class Sale extends CI_Model
return $this->db->get();
}
public function get_payment_options($giftcard = TRUE)
public function get_payment_options($giftcard = TRUE, $reward_points = FALSE)
{
$payments = array();
@@ -760,6 +784,11 @@ class Sale extends CI_Model
$payments[$this->lang->line('sales_giftcard')] = $this->lang->line('sales_giftcard');
}
if($reward_points)
{
$payments[$this->lang->line('sales_rewards')] = $this->lang->line('sales_rewards');
}
return $payments;
}

View File

@@ -19,6 +19,9 @@
<li role="presentation">
<a data-toggle="tab" href="#table_tab" title="<?php echo $this->lang->line('config_table_configuration'); ?>"><?php echo $this->lang->line('config_table'); ?></a>
</li>
<li role="presentation">
<a data-toggle="tab" href="#reward_tab" title="<?php echo $this->lang->line('config_reward_configuration'); ?>"><?php echo $this->lang->line('config_reward'); ?></a>
</li>
<li role="presentation">
<a data-toggle="tab" href="#receipt_tab" title="<?php echo $this->lang->line('config_receipt_configuration'); ?>"><?php echo $this->lang->line('config_receipt'); ?></a>
</li>
@@ -55,6 +58,9 @@
<div class="tab-pane" id="table_tab">
<?php $this->load->view("configs/table_config"); ?>
</div>
<div class="tab-pane" id="reward_tab">
<?php $this->load->view("configs/reward_config"); ?>
</div>
<div class="tab-pane" id="receipt_tab">
<?php $this->load->view("configs/receipt_config"); ?>
</div>

View File

@@ -0,0 +1,161 @@
<?php echo form_open('config/save_rewards/', array('id' => 'reward_config_form', 'class' => 'form-horizontal')); ?>
<div id="config_wrapper">
<fieldset id="config_info">
<div id="required_fields_message"><?php echo $this->lang->line('common_fields_required_message'); ?></div>
<ul id="table_error_message_box" class="error_message_box"></ul>
<div class="form-group form-group-sm">
<?php echo form_label($this->lang->line('config_customer_reward_enable'), 'customer_reward_enable', array('class' => 'control-label col-xs-2')); ?>
<div class='col-xs-1'>
<?php echo form_checkbox(array(
'name' => 'customer_reward_enable',
'value' => 'customer_reward_enable',
'id' => 'customer_reward_enable',
'checked' => $this->config->item('customer_reward_enable')));?>
</div>
</div>
<div id="customer_rewards">
<?php $this->load->view('partial/customer_rewards', array('customer_rewards' => $customer_rewards)); ?>
</div>
<?php echo form_submit(array(
'name' => 'submit',
'id' => 'submit',
'value'=>$this->lang->line('common_submit'),
'class' => 'btn btn-primary btn-sm pull-right')); ?>
</fieldset>
</div>
<?php echo form_close(); ?>
<script type="text/javascript">
//validation and submit handling
$(document).ready(function()
{
var enable_disable_customer_reward_enable = (function() {
var customer_reward_enable = $("#customer_reward_enable").is(":checked");
$("input[name*='customer_reward']:not(input[name=customer_reward_enable])").prop("disabled", !customer_reward_enable);
$("input[name*='reward_points_']:not(input[name=customer_reward_enable])").prop("disabled", !customer_reward_enable);
if(customer_reward_enable)
{
$(".add_customer_reward, .remove_customer_reward").show();
}
else
{
$(".add_customer_reward, .remove_customer_reward").hide();
}
return arguments.callee;
})();
$("#customer_reward_enable").change(enable_disable_customer_reward_enable);
var table_count = <?php echo sizeof($customer_rewards); ?>;
var hide_show_remove = function() {
if ($("input[name*='customer_rewards']:enabled").length > 1)
{
$(".remove_customer_rewards").show();
}
else
{
$(".remove_customer_rewards").hide();
}
};
var add_customer_reward = function() {
var id = $(this).parent().find('input').attr('id');
id = id.replace(/.*?_(\d+)$/g, "$1");
var previous_id = 'customer_reward_' + id;
var previous_id_next = 'reward_points_' + id;
var block = $(this).parent().clone(true);
console.log(block);
var new_block = block.insertAfter($(this).parent());
var new_block_id = 'customer_reward_' + ++id;
var new_block_id_next = 'reward_points_' + id;
$(new_block).find('label').html("<?php echo $this->lang->line('config_customer_reward'); ?> " + ++table_count).attr('for', new_block_id).attr('class', 'control-label col-xs-2');
$(new_block).find("input[id='"+previous_id+"']").attr('id', new_block_id).removeAttr('disabled').attr('name', new_block_id).attr('class', 'form-control input-sm').val('');
$(new_block).find("input[id='"+previous_id_next+"']").attr('id', new_block_id_next).removeAttr('disabled').attr('name', new_block_id_next).attr('class', 'form-control input-sm').val('');
hide_show_remove();
};
var remove_customer_reward = function() {
$(this).parent().remove();
hide_show_remove();
};
var init_add_remove_tables = function() {
$('.add_customer_reward').click(add_customer_reward);
$('.remove_customer_reward').click(remove_customer_reward);
hide_show_remove();
// set back disabled state
enable_disable_customer_reward_enable();
};
init_add_remove_tables();
var duplicate_found = false;
// run validator once for all fields
$.validator.addMethod('customer_reward' , function(value, element) {
var value_count = 0;
$("input[name*='customer_reward']:not(input[name=customer_reward_enable])").each(function() {
value_count = $(this).val() == value ? value_count + 1 : value_count;
});
return value_count < 2;
}, "<?php echo $this->lang->line('config_customer_reward_duplicate'); ?>");
$.validator.addMethod('valid_chars', function(value, element) {
return value.indexOf('_') === -1;
}, "<?php echo $this->lang->line('config_customer_reward_invalid_chars'); ?>");
$('#reward_config_form').validate($.extend(form_support.handler, {
submitHandler: function(form) {
$(form).ajaxSubmit({
beforeSerialize: function(arr, $form, options) {
$("input[name*='customer_reward']:not(input[name=customer_reward_enable])").prop("disabled", false);
return true;
},
success: function(response) {
$.notify({ message: response.message }, { type: response.success ? 'success' : 'danger'});
$("#customer_rewards").load('<?php echo site_url("config/customer_rewards"); ?>', init_add_remove_tables);
},
dataType: 'json'
});
},
errorLabelContainer: "#table_error_message_box",
rules:
{
<?php
$i = 0;
foreach($customer_rewards as $customer_reward=>$table)
{
?>
<?php echo 'customer_reward_' . ++$i ?>:
{
required: true,
customer_reward: true,
valid_chars: true
},
<?php
}
?>
},
messages:
{
<?php
$i = 0;
foreach($customer_rewards as $customer_reward=>$table)
{
?>
<?php echo 'customer_reward_' . ++$i ?>: "<?php echo $this->lang->line('config_customer_reward_required'); ?>",
<?php
}
?>
}
}));
});
</script>

View File

@@ -65,6 +65,26 @@
</div>
</div>
<div class="form-group form-group-sm">
<?php echo form_label($this->lang->line('rewards_package'), 'rewards', array('class'=>'control-label col-xs-3')); ?>
<div class='col-xs-8'>
<?php echo form_dropdown('package_id', $packages, $selected_package, array('class'=>'form-control')); ?>
</div>
</div>
<div class="form-group form-group-sm">
<?php echo form_label($this->lang->line('customers_available_points'), 'available_points', array('class' => 'control-label col-xs-3')); ?>
<div class='col-xs-4'>
<?php echo form_input(array(
'name'=>'available_points',
'id'=>'available_points',
'class'=>'form-control input-sm',
'value'=>$person_info->points,
'disabled'=>'')
);?>
</div>
</div>
<div class="form-group form-group-sm">
<?php echo form_label($this->lang->line('customers_taxable'), 'taxable', array('class' => 'control-label col-xs-3')); ?>
<div class='col-xs-1'>

View File

@@ -0,0 +1,41 @@
<?php
$i = 0;
foreach($customer_rewards as $customer_rewards=>$table)
{
$customer_reward_id = $table['package_id'];
$customer_reward_name = $table['package_name'];
$customer_points_percent = $table['points_percent'];
++$i;
?>
<div class="form-group form-group-sm" style="<?php echo $table['deleted'] ? 'display:none;' : 'display:block;' ?>">
<?php echo form_label($this->lang->line('config_customer_reward') . ' ' . $i, 'customer_reward_' . $i, array('class'=>'required control-label col-xs-2')); ?>
<div class='col-xs-2'>
<?php $form_data = array(
'name'=>'customer_reward_' . $customer_reward_id,
'id'=>'customer_reward_' . $customer_reward_id,
'class'=>'customer_reward valid_chars form-control input-sm required',
'value'=>$customer_reward_name
);
$table['deleted'] && $form_data['disabled'] = 'disabled';
echo form_input($form_data);
?>
</div>
<div class='col-xs-2'>
<?php $form_data = array(
'name'=>'reward_points_' . $customer_reward_id,
'id'=>'reward_points_' . $customer_reward_id,
'class'=>'customer_reward valid_chars form-control input-sm required',
'value'=>$customer_points_percent
);
$table['deleted'] && $form_data['disabled'] = 'disabled';
echo form_input($form_data);
?>
</div>
<span class="add_customer_reward glyphicon glyphicon-plus" style="padding-top: 0.5em;"></span>
<span>&nbsp;&nbsp;</span>
<span class="remove_customer_reward glyphicon glyphicon-minus" style="padding-top: 0.5em;"></span>
</div>
<?php
}
?>

View File

@@ -290,6 +290,21 @@ if (isset($success))
<th style='width: 55%;'><?php echo $this->lang->line("sales_customer_discount"); ?></th>
<th style="width: 45%; text-align: right;"><?php echo $customer_discount_percent . ' %'; ?></th>
</tr>
<?php
if(!empty($customer_rewards) && isset($customer_rewards))
{
?>
<tr>
<th style='width: 55%;'><?php echo $this->lang->line("rewards_package"); ?></th>
<th style="width: 45%; text-align: right;"><?php echo $customer_rewards['package_name']; ?></th>
</tr>
<tr>
<th style='width: 55%;'><?php echo $this->lang->line("customers_available_points"); ?></th>
<th style="width: 45%; text-align: right;"><?php echo $customer_rewards['points']; ?></th>
</tr>
<?php
}
?>
<tr>
<th style='width: 55%;'><?php echo $this->lang->line("sales_customer_total"); ?></th>
<th style="width: 45%; text-align: right;"><?php echo to_currency($customer_total); ?></th>

View File

@@ -0,0 +1,3 @@
ALTER TABLE ospos_customers
ADD COLUMN `package_id` int(11) DEFAULT NULL AFTER `discount_percent`,
ADD COLUMN `points` int(11) DEFAULT NULL AFTER `package_id`;

View File

@@ -0,0 +1,18 @@
--
-- Table structure for table `ospos_customer_packages`
--
CREATE TABLE IF NOT EXISTS `ospos_customers_packages` (
`package_id` int(11) NOT NULL AUTO_INCREMENT,
`package_name` varchar(255) DEFAULT NULL,
`points_percent` float NOT NULL DEFAULT '0',
`deleted` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`package_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
INSERT INTO `ospos_customers_packages` (`package_id`, `package_name`, `points_percent`, `deleted`) VALUES
(1, 'Default', 0, 0),
(2, 'Bronze', 10, 0),
(3, 'Silver', 20, 0),
(4, 'Gold', 30, 0),
(5, 'Premium', 50, 0);

View File

@@ -0,0 +1,12 @@
--
-- Table structure for table `ospos_customer_points`
--
CREATE TABLE IF NOT EXISTS `ospos_customers_points` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`person_id` int(11) NOT NULL,
`package_id` int(11) NOT NULL,
`sale_id` int(11) NOT NULL,
`points_earned` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

View File

@@ -0,0 +1,12 @@
--
-- Table structure for table `ospos_sales_reward_points`
--
CREATE TABLE IF NOT EXISTS `ospos_sales_reward_points` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sale_id` int(11) NOT NULL,
`earned` float NOT NULL,
`used` float NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;