Merge pull request #1441 from jekkos/feature/cleanup

Cleanup Sales controller
This commit is contained in:
FrancescoUK
2017-08-06 19:40:30 +01:00
committed by GitHub
31 changed files with 297 additions and 1046 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', 'Customer_rewards', 'Rewards', 'Tax');
$autoload['model'] = array('Appconfig', 'Person', 'Customer', 'Employee', 'Module', 'Item', 'Item_taxes', 'Sale', 'Supplier', 'Inventory', 'Receiving', 'Giftcard', 'Item_kit', 'Item_kit_items', 'Stock_location', 'Item_quantity', 'Dinner_table', 'Customer_rewards', 'Rewards', 'Tax');

View File

@@ -88,7 +88,7 @@ class Item_kits extends Secure_Controller
if($item_kit_id == -1)
{
$info->price_option = '0';
$info->print_option = '0';
$info->print_option = PRINT_ALL;
$info->kit_item_id = 0;
}
foreach(get_object_vars($info) as $property => $value)

View File

@@ -195,8 +195,8 @@ class Items extends Secure_Controller
$item_info->receiving_quantity = 1;
$item_info->reorder_level = 1;
$item_info->item_type = '0'; // standard
$item_info->stock_type = '0'; // stock
$item_info->item_type = ITEM; // standard
$item_info->stock_type = HAS_STOCK;
$item_info->tax_category_id = 1; // Standard
}

View File

@@ -351,7 +351,7 @@ class Sales extends Secure_Controller
}
$price = NULL;
$print_option = 0; // Always include in list of items on invoice
$print_option = PRINT_ALL; // Always include in list of items on invoice
if(!empty($kit_item_id))
{
@@ -438,11 +438,6 @@ class Sales extends Secure_Controller
$this->_reload();
}
public function complete_receipt()
{
$this->complete();
}
public function complete()
{
$data = array();
@@ -530,7 +525,7 @@ class Sales extends Secure_Controller
else
{
$data['invoice_number'] = $invoice_number;
$data['sale_status'] = '0'; // Complete
$data['sale_status'] = COMPLETED;
// Save the data to the sales table
$data['sale_id_num'] = $this->Sale->save($data['sale_status'], $data['cart'], $customer_id, $employee_id, $data['comments'], $invoice_number, $data["quote_number"], $data['payments'], $data['dinner_table'], $data['taxes']);
@@ -575,7 +570,7 @@ class Sales extends Secure_Controller
{
$data['invoice_number'] = $invoice_number;
$data['quote_number'] = $quote_number;
$data['sale_status'] = '1'; // Suspended
$data['sale_status'] = SUSPENDED;
$data['sale_id_num'] = $this->Sale->save($data['sale_status'], $data['cart'], $customer_id, $employee_id, $data['comments'], $invoice_number, $quote_number, $data['payments'], $data['dinner_table'], $data['taxes']);
$this->sale_lib->set_suspended_id($data['sale_id_num']);
@@ -619,7 +614,7 @@ class Sales extends Secure_Controller
}
}
public function send_invoice($sale_id)
public function send_pdf($sale_id, $type = 'invoice')
{
$sale_data = $this->_load_sale_data($sale_id);
@@ -629,61 +624,26 @@ class Sales extends Secure_Controller
if(!empty($sale_data['customer_email']))
{
$to = $sale_data['customer_email'];
$subject = $this->lang->line('sales_invoice') . ' ' . $sale_data['invoice_number'];
$number = $sale_data[$type."_number"];
$subject = $this->lang->line("sales_$type") . ' ' . $number;
$text = $this->config->item('invoice_email_message');
$text = str_replace('$INV', $sale_data['invoice_number'], $text);
$text = str_replace('$CO', 'POS ' . $sale_data['sale_id'], $text);
$text = $this->_substitute_customer($text, (object)$sale_data);
$tokens = array(new Token_invoice_sequence($sale_data['invoice_number']),
new Token_invoice_count('POS ' . $sale_data['sale_id']),
new Token_customer((object)$sale_data));
$text = $this->token_lib->render($text, $tokens);
// generate email attachment: invoice in pdf format
$html = $this->load->view('sales/invoice_email', $sale_data, TRUE);
$html = $this->load->view("sales/" . $type . "_email", $sale_data, TRUE);
// load pdf helper
$this->load->helper(array('dompdf', 'file'));
$filename = sys_get_temp_dir() . '/' . $this->lang->line('sales_invoice') . '-' . str_replace('/', '-', $sale_data['invoice_number']) . '.pdf';
$filename = sys_get_temp_dir() . '/' . $this->lang->line("sales_N") . '-' . str_replace('/', '-', $number) . '.pdf';
if(file_put_contents($filename, pdf_create($html)) !== FALSE)
{
$result = $this->email_lib->sendEmail($to, $subject, $text, $filename);
}
$message = $this->lang->line($result ? 'sales_invoice_sent' : 'sales_invoice_unsent') . ' ' . $to;
}
echo json_encode(array('success' => $result, 'message' => $message, 'id' => $sale_id));
$this->sale_lib->clear_all();
return $result;
}
public function send_quote($sale_id)
{
$sale_data = $this->_load_sale_data($sale_id);
$result = FALSE;
$message = $this->lang->line('sales_invoice_no_email');
if(!empty($sale_data['customer_email']))
{
$to = $sale_data['customer_email'];
$subject = $this->lang->line('sales_quote') . ' ' . $sale_data['quote_number'];
$text = $this->config->item('invoice_email_message');
$text = str_replace('$INV', $sale_data['invoice_number'], $text);
$text = str_replace('$CO', 'POS ' . $sale_data['sale_id'], $text);
$text = $this->_substitute_customer($text, (object)$sale_data);
// generate email attachment: invoice in pdf format
$html = $this->load->view('sales/quote_email', $sale_data, TRUE);
// load pdf helper
$this->load->helper(array('dompdf', 'file'));
$filename = sys_get_temp_dir() . '/' . $this->lang->line('sales_quote') . '-' . str_replace('/', '-', $sale_data['quote_number']) . '.pdf';
if(file_put_contents($filename, pdf_create($html)) !== FALSE)
{
$result = $this->email_lib->sendEmail($to, $subject, $text, $filename);
}
$message = $this->lang->line($result ? 'sales_quote_sent' : 'sales_quote_unsent') . ' ' . $to;
$message = $this->lang->line($result ? "sales_" . $type . "_sent" : "sales_" . $type . "_unsent") . ' ' . $to;
}
echo json_encode(array('success' => $result, 'message' => $message, 'id' => $sale_id));
@@ -721,83 +681,6 @@ class Sales extends Secure_Controller
return $result;
}
private function _substitute_variable($text, $variable, $object, $function)
{
// don't query if this variable isn't used
if(strstr($text, $variable))
{
$value = call_user_func(array($object, $function));
$text = str_replace($variable, $value, $text);
}
return $text;
}
private function _substitute_customer($text, $customer_info)
{
// substitute customer info
$customer_id = $this->sale_lib->get_customer();
if($customer_id != -1 && $customer_info != '')
{
$text = str_replace('$CU', $customer_info->first_name . ' ' . $customer_info->last_name, $text);
$words = preg_split("/\s+/", trim($customer_info->first_name . ' ' . $customer_info->last_name));
$acronym = '';
foreach($words as $w)
{
$acronym .= $w[0];
}
$text = str_replace('$CI', $acronym, $text);
}
return $text;
}
private function _is_custom_invoice_number($customer_info)
{
$invoice_number = $this->config->config['sales_invoice_format'];
$invoice_number = $this->_substitute_variables($invoice_number, $customer_info);
return $this->sale_lib->get_invoice_number() != $invoice_number;
}
private function _is_custom_quote_number($customer_info)
{
$quote_number = $this->config->config['sales_quote_format'];
$quote_number = $this->_substitute_variables($quote_number, $customer_info);
return $this->sale_lib->get_quote_number() != $quote_number;
}
private function _substitute_variables($text, $customer_info)
{
$text = $this->_substitute_variable($text, '$YCO', $this->Sale, 'get_invoice_number_for_year');
$text = $this->_substitute_variable($text, '$CO', $this->Sale, 'get_invoice_count');
$text = $this->_substitute_variable($text, '$SCO', $this->Sale, 'get_suspended_invoice_count');
$text = strftime($text);
$text = $this->_substitute_customer($text, $customer_info);
return $text;
}
private function _substitute_invoice_number($customer_info)
{
$invoice_number = $this->config->config['sales_invoice_format'];
$invoice_number = $this->_substitute_variables($invoice_number, $customer_info);
$this->sale_lib->set_invoice_number($invoice_number, TRUE);
return $this->sale_lib->get_invoice_number();
}
private function _substitute_quote_number($customer_info)
{
$quote_number = $this->config->config['sales_quote_format'];
$quote_number = $this->_substitute_variables($quote_number, $customer_info);
$this->sale_lib->set_quote_number($quote_number, TRUE);
return $this->sale_lib->get_quote_number();
}
private function _load_customer_data($customer_id, &$data, $stats = FALSE)
{
$customer_info = '';
@@ -1171,10 +1054,10 @@ class Sales extends Secure_Controller
$employee_id = $this->Employee->get_logged_in_employee_info()->person_id;
$customer_id = $this->sale_lib->get_customer();
$customer_info = $this->Customer->get_info($customer_id);
$invoice_number = $this->_is_custom_invoice_number($customer_info) ? $this->sale_lib->get_invoice_number() : NULL;
$invoice_number = $this->sale_lib->get_invoice_number();
$quote_number = $this->sale_lib->get_quote_number();
$comment = $this->sale_lib->get_comment();
$sale_status = '1';
$sale_status = $this->sale_lib->is_quote_mode() ? QUOTE : SUSPENDED;
$data = array();
$sales_taxes = array();
@@ -1191,30 +1074,6 @@ class Sales extends Secure_Controller
$this->_reload($data);
}
public function suspend_quote($quote_number)
{
$cart = $this->sale_lib->get_cart();
$payments = $this->sale_lib->get_payments();
$employee_id = $this->Employee->get_logged_in_employee_info()->person_id;
$customer_id = $this->sale_lib->get_customer();
$customer_info = $this->Customer->get_info($customer_id);
$dinner_table = $this->sale_lib->get_dinner_table();
$invoice_number = $this->_is_custom_invoice_number($customer_info) ? $this->sale_lib->get_invoice_number() : NULL;
$comment = $this->sale_lib->get_comment();
$sale_status = '2'; // Suspend
$data = array();
$sales_taxes = array();
if($this->Sale->save($sale_status, $cart, $customer_id, $employee_id, $comment, $invoice_number, $quote_number, $payments, $dinner_table, $sales_taxes) == '-1')
{
$data['error'] = $this->lang->line('sales_unsuccessfully_suspended_sale');
}
else
{
$data['success'] = $this->lang->line('sales_successfully_suspended_sale');
}
}
public function suspended()
{
$customer_id = $this->sale_lib->get_customer();
@@ -1238,13 +1097,6 @@ class Sales extends Secure_Controller
$this->sale_lib->copy_entire_sale($sale_id);
$this->Sale->delete_suspended_sale($sale_id);
}
else
{
// This will unsuspended older suspended sales
$sale_id = $sale_id * -1;
$this->sale_lib->copy_entire_suspended_tables_sale($sale_id);
$this->Sale_suspended->delete($sale_id);
}
$this->_reload();
}
@@ -1262,11 +1114,11 @@ class Sales extends Secure_Controller
$filtered_cart = array();
foreach($cart as $id => $item)
{
if($item['print_option'] == '0') // always include
if($item['print_option'] == PRINT_ALL) // always include
{
$filtered_cart[$id] = $item;
}
elseif($item['print_option'] == '1' && $item['price'] != 0) // include only if the price is not zero
elseif($item['print_option'] == PRINT_PRICED && $item['price'] != 0) // include only if the price is not zero
{
$filtered_cart[$id] = $item;
}

View File

@@ -319,11 +319,6 @@ class Sale_lib
return $subtotal;
}
public function get_cash_rounding()
{
}
/**
* Returns 'subtotal', 'total', 'cash_total', 'payment_total', 'amount_due', 'cash_amount_due', 'paid_in_full'
* 'subtotal', 'discounted_subtotal', 'tax_exclusive_subtotal'
@@ -483,7 +478,8 @@ class Sale_lib
{
$this->set_mode($this->CI->config->item('default_register_mode'));
}
else{
else
{
$this->set_mode('sale');
}
}
@@ -584,7 +580,7 @@ class Sale_lib
$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')
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 = HAS_STOCK)
{
$item_info = $this->CI->Item->get_info_by_id_or_number($item_id);
@@ -648,16 +644,9 @@ class Sale_lib
// For print purposes this simpifies line selection
// 0 will print, 2 will not print. The decision about 1 is made here
if($print_option =='1')
if($print_option == PRINT_PRICED)
{
if($price == 0)
{
$print_option = '2';
}
else
{
$print_option = '0';
}
$print_option = ($price == 0) ? PRINT_KIT : PRINT_ALL;
}
$total = $this->get_item_total($quantity, $price, $discount);
@@ -710,7 +699,7 @@ class Sale_lib
{
$item_info = $this->CI->Item->get_info_by_id_or_number($item_id);
if($item_info->stock_type == '0')
if($item_info->stock_type == HAS_STOCK)
{
$item_quantity = $this->CI->Item_quantity->get_item_quantity($item_id, $item_location)->quantity;
$quantity_added = $this->get_quantity_already_added($item_id, $item_location);
@@ -811,17 +800,17 @@ class Sale_lib
foreach($this->CI->Item_kit_items->get_info($item_kit_id) as $item_kit_item)
{
if($price_option == '0') // all
if($price_option == PRICE_ALL) // all
{
$price = null;
}
elseif($price_option == '1') // item kit only
elseif($price_option == PRICE_KIT) // item kit only
{
$price = 0;
}
elseif($price_option == '2') // item kit plus stock items (assuming materials)
elseif($price_option == PRICE_ITEMS) // item kit plus stock items (assuming materials)
{
if($item_kit_item['stock_type'] == 0) // stock item
if($item_kit_item['stock_type'] == ITEM) // stock item
{
$price = null;
}
@@ -831,17 +820,17 @@ class Sale_lib
}
}
if($kit_print_option == '0') // all
if($kit_print_option == PRINT_ALL)
{
$print_option = '0'; // print always
$print_option = PRINT_ALL;
}
elseif($kit_print_option == '1') // priced
elseif($kit_print_option == PRINT_PRICED) // priced
{
$print_option = '1'; // print if price not zero
$print_option = PRINT_PRICED; // print if price not zero
}
elseif($kit_print_option == '2') // kit only if price is not zero
elseif($kit_print_option == PRINT_KIT) // kit only if price is not zero
{
$print_option = '2'; // Do not include in list
$print_option = PRINT_KIT; // Do not include in list
}
$result &= $this->add_item($item_kit_item['item_id'], $item_kit_item['quantity'], $item_location, $discount, $price, null, null, null, $print_option, $item_kit_item['stock_type']);
@@ -889,55 +878,6 @@ class Sale_lib
return $this->CI->session->userdata('sales_cart');
}
public function copy_entire_suspended_sale($sale_id)
{
$this->empty_cart();
$this->remove_customer();
foreach($this->CI->Sale->get_sale_items($sale_id)->result() as $row)
{
$this->add_item($row->item_id, $row->quantity_purchased, $row->item_location, $row->discount_percent, $row->item_unit_price,
$row->description, $row->serialnumber, TRUE, $row->print_option, $row->stock_type);
}
foreach($this->CI->Sale->get_sale_payments($sale_id)->result() as $row)
{
$this->add_payment($row->payment_type, $row->payment_amount);
}
$suspended_sale_info = $this->CI->Sale->get_info($sale_id)->row();
$this->set_customer($suspended_sale_info->person_id);
$this->set_comment($suspended_sale_info->comment);
$this->set_invoice_number($suspended_sale_info->invoice_number);
$this->set_quote_number($suspended_sale_info->quote_number);
$this->set_dinner_table($suspended_sale_info->dinner_table_id);
}
public function copy_entire_suspended_tables_sale($sale_id)
{
$this->empty_cart();
$this->remove_customer();
foreach($this->CI->Sale_suspended->get_sale_items($sale_id)->result() as $row)
{
$this->add_item($row->item_id, $row->quantity_purchased, $row->item_location, $row->discount_percent, $row->item_unit_price,
$row->description, $row->serialnumber, TRUE, $row->print_option, $row->stock_type);
}
foreach($this->CI->Sale_suspended->get_sale_payments($sale_id)->result() as $row)
{
$this->add_payment($row->payment_type, $row->payment_amount);
}
$suspended_sale_info = $this->CI->Sale_suspended->get_info($sale_id)->row();
$this->set_customer($suspended_sale_info->person_id);
$this->set_comment($suspended_sale_info->comment);
$this->set_invoice_number($suspended_sale_info->invoice_number);
$this->set_quote_number($suspended_sale_info->quote_number);
$this->set_dinner_table($suspended_sale_info->dinner_table_id);
}
public function clear_all()
{
$this->set_invoice_number_enabled(FALSE);

View File

@@ -20,18 +20,9 @@ class Token_lib
/**
* Expands all of the tokens found in a given text string and returns the results.
*/
public function render($tokened_text)
public function render($tokened_text, $tokens = array())
{
// Transform legacy "$" tokens to their brace token equivalent
if(strpos($tokened_text, '$') !== FALSE)
{
$tokened_text = str_replace('$YCO', '{YCO}', $tokened_text);
$tokened_text = str_replace('$CO', '{CO}', $tokened_text);
$tokened_text = str_replace('$SCO', '{SCO}', $tokened_text);
$tokened_text = str_replace('$CU', '{CU}', $tokened_text);
}
// Apply the transformation for the "%" tokens if any are used
if(strpos($tokened_text, '%') !== FALSE)
{
@@ -55,7 +46,7 @@ class Token_lib
$token_values = array();
$tokens_to_replace = array();
$this->generate($token_tree, $tokens_to_replace, $token_values);
$this->generate($token_tree, $tokens_to_replace, $token_values, $tokens);
return str_replace($tokens_to_replace, $token_values, $tokened_text);
}
@@ -87,12 +78,12 @@ class Token_lib
return $token_tree;
}
public function generate($used_tokens, &$tokens_to_replace, &$token_values)
public function generate($used_tokens, &$tokens_to_replace, &$token_values, $tokens)
{
foreach($used_tokens as $token_code => $token_info)
{
// Generate value here based on the key value
$token_value = (new Token())->replace($token_code);
$token_value = $this->resolveToken($token_code);
foreach($token_info as $length => $token_spec)
{
@@ -109,6 +100,17 @@ class Token_lib
}
return $token_values;
}
private function resolveToken($token_code, $tokens = array())
{
foreach (array_merge($tokens, Token::get_tokens()) as $token) {
if ($token->token_id() == $token_code)
{
return $token->get_value();
}
}
return '';
}
}
?>

View File

@@ -12,13 +12,16 @@ require_once(APPPATH . 'libraries/tokens/Token_year_invoice_count.php');
* Token class
*/
class Token
abstract class Token
{
protected $CI;
public function __construct()
protected $value = '';
public function __construct($value = '')
{
$this->CI =& get_instance();
$this->value = $value;
}
static function get_tokens()
@@ -27,23 +30,23 @@ class Token
new Token_quote_sequence(), new Token_suspended_invoice_count(), new Token_quote_sequence(), new Token_year_invoice_count());
}
abstract public function token_id();
abstract public function get_value();
function matches($token_id)
{
return false;
return token_id() == $token_id;
}
public function replace($token_id)
function replace($text)
{
foreach(Token::get_tokens() as $token)
if (strstr($text, $this->token_id()))
{
if ($token->token_id() == $token_id)
{
return $token->get_value();
}
return str_replace($this->token_id(), $this->get_value(), $text);
}
return '';
return $text;
}
}
?>

View File

@@ -6,10 +6,13 @@
class Token_customer extends Token
{
public function __construct()
private $customer_info;
public function __construct($customer_info = '')
{
parent::__construct();
$this->customer_info = $customer_info;
$this->CI->load->library('sale_lib');
}
@@ -22,7 +25,7 @@ class Token_customer extends Token
{
// substitute customer info
$customer_id = $this->CI->sale_lib->get_customer();
if($customer_id != -1)
if ($customer_id != -1 && empty($this->customer_info))
{
$customer_info = $this->CI->Customer->get_info($customer_id);
if($customer_info != '')
@@ -31,7 +34,7 @@ class Token_customer extends Token
}
}
return '';
return $value;
}
}
?>

View File

@@ -6,9 +6,9 @@
class Token_invoice_count extends Token
{
public function __construct()
public function __construct($value = '')
{
parent::__construct();
parent::__construct($value);
$this->CI->load->model('Sale');
}
@@ -20,7 +20,7 @@ class Token_invoice_count extends Token
public function get_value()
{
return $this->CI->Sale->get_invoice_count();
return empty($value) ? $this->CI->Sale->get_invoice_count() : $value;
}
}
?>

View File

@@ -6,6 +6,12 @@
class Token_invoice_sequence extends Token
{
public function __construct($value = '')
{
parent::__construct($value);
}
public function token_id()
{
return 'ISEQ';

View File

@@ -130,7 +130,7 @@ class Customer extends Person
$this->db->join('sales_payments AS sales_payments', 'sales.sale_id = sales_payments.sale_id');
$this->db->join('sales_items_temp AS sales_items_temp', 'sales.sale_id = sales_items_temp.sale_id');
$this->db->where('sales.customer_id', $customer_id);
$this->db->where('sales.sale_status', 0);
$this->db->where('sales.sale_status', COMPLETED);
$this->db->group_by('sales.customer_id');
$stat = $this->db->get()->row();

View File

@@ -1,5 +1,18 @@
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
define('HAS_STOCK', 0);
define('HAS_NO_STOCK', 1);
define('ITEM', 0);
define('ITEM_KIT', 1);
define('PRINT_ALL', 0);
define('PRINT_PRICED', 1);
define('PRINT_KIT', 2);
define('PRICE_ALL', 0);
define('PRICE_KIT', 1);
define('PRICE_KIT_ITEMS', 2);
/**
* Item class
*/
@@ -422,7 +435,7 @@ class Item extends CI_Model
$this->db->select('item_id, name');
$this->db->from('items');
$this->db->where('deleted', $filters['is_deleted']);
$this->db->where("item_type = '0'"); // standard, exclude kit items since kits will be picked up later
$this->db->where("item_type = " . ITEM); // standard, exclude kit items since kits will be picked up later
$this->db->like('name', $search);
$this->db->order_by('name', 'asc');
foreach($this->db->get()->result() as $row)
@@ -433,7 +446,7 @@ class Item extends CI_Model
$this->db->select('item_id, item_number');
$this->db->from('items');
$this->db->where('deleted', $filters['is_deleted']);
$this->db->where("item_type = '0'"); // standard, exclude kit items since kits will be picked up later
$this->db->where("item_type = " . ITEM); // standard, exclude kit items since kits will be picked up later
$this->db->like('item_number', $search);
$this->db->order_by('item_number', 'asc');
foreach($this->db->get()->result() as $row)
@@ -447,7 +460,7 @@ class Item extends CI_Model
$this->db->select('category');
$this->db->from('items');
$this->db->where('deleted', $filters['is_deleted']);
$this->db->where("item_type = '0'"); // standard, exclude kit items since kits will be picked up later
$this->db->where("item_type = " . ITEM); // standard, exclude kit items since kits will be picked up later
$this->db->distinct();
$this->db->like('category', $search);
$this->db->order_by('category', 'asc');
@@ -462,7 +475,7 @@ class Item extends CI_Model
$this->db->like('company_name', $search);
// restrict to non deleted companies only if is_deleted is FALSE
$this->db->where('deleted', $filters['is_deleted']);
$this->db->where("item_type = '0'"); // standard, exclude kit items since kits will be picked up later
$this->db->where("item_type = " . ITEM); // standard, exclude kit items since kits will be picked up later
$this->db->distinct();
$this->db->order_by('company_name', 'asc');
foreach($this->db->get()->result() as $row)
@@ -474,7 +487,7 @@ class Item extends CI_Model
$this->db->select('item_id, name, description');
$this->db->from('items');
$this->db->where('deleted', $filters['is_deleted']);
$this->db->where("item_type = '0'"); // standard, exclude kit items since kits will be picked up later
$this->db->where("item_type = " . ITEM); // standard, exclude kit items since kits will be picked up later
$this->db->like('description', $search);
$this->db->order_by('description', 'asc');
foreach($this->db->get()->result() as $row)
@@ -503,7 +516,7 @@ class Item extends CI_Model
$this->db->or_like('custom10', $search);
$this->db->group_end();
$this->db->where('deleted', $filters['is_deleted']);
$this->db->where("item_type = '0'"); // standard, exclude kit items since kits will be picked up later
$this->db->where("item_type = " . ITEM); // standard, exclude kit items since kits will be picked up later
foreach($this->db->get()->result() as $row)
{
$suggestions[] = array('value' => $row->item_id, 'label' => $row->name);
@@ -529,7 +542,7 @@ class Item extends CI_Model
$this->db->select('item_id, name');
$this->db->from('items');
$this->db->where('deleted', $filters['is_deleted']);
$this->db->where("item_type = '0'"); // standard, exclude kit items since kits will be picked up later
$this->db->where("item_type = " . ITEM); // standard, exclude kit items since kits will be picked up later
$this->db->where("stock_type = '0'"); // stocked items only
$this->db->like('name', $search);
$this->db->order_by('name', 'asc');
@@ -541,7 +554,7 @@ class Item extends CI_Model
$this->db->select('item_id, item_number');
$this->db->from('items');
$this->db->where('deleted', $filters['is_deleted']);
$this->db->where("item_type = '0'"); // standard, exclude kit items since kits will be picked up later
$this->db->where("item_type = " . ITEM); // standard, exclude kit items since kits will be picked up later
$this->db->where("stock_type = '0'"); // stocked items only
$this->db->like('item_number', $search);
$this->db->order_by('item_number', 'asc');
@@ -556,7 +569,7 @@ class Item extends CI_Model
$this->db->select('category');
$this->db->from('items');
$this->db->where('deleted', $filters['is_deleted']);
$this->db->where("item_type = '0'"); // standard, exclude kit items since kits will be picked up later
$this->db->where("item_type = " . ITEM); // standard, exclude kit items since kits will be picked up later
$this->db->where("stock_type = '0'"); // stocked items only
$this->db->distinct();
$this->db->like('category', $search);
@@ -583,7 +596,7 @@ class Item extends CI_Model
$this->db->select('item_id, name, description');
$this->db->from('items');
$this->db->where('deleted', $filters['is_deleted']);
$this->db->where("item_type = '0'"); // standard, exclude kit items since kits will be picked up later
$this->db->where("item_type = " . ITEM); // standard, exclude kit items since kits will be picked up later
$this->db->where("stock_type = '0'"); // stocked items only
$this->db->like('description', $search);
$this->db->order_by('description', 'asc');
@@ -612,7 +625,7 @@ class Item extends CI_Model
$this->db->or_like('custom9', $search);
$this->db->or_like('custom10', $search);
$this->db->group_end();
$this->db->where("item_type = '0'"); // standard, exclude kit items since kits will be picked up later
$this->db->where("item_type = " . ITEM); // standard, exclude kit items since kits will be picked up later
$this->db->where("stock_type = '0'"); // stocked items only
$this->db->where('deleted', $filters['is_deleted']);
foreach($this->db->get()->result() as $row)
@@ -639,7 +652,7 @@ class Item extends CI_Model
$this->db->select('item_id, name');
$this->db->from('items');
$this->db->where('deleted', $filters['is_deleted']);
$this->db->where("item_type = '1'"); // standard, exclude kit items since kits will be picked up later
$this->db->where("item_type = " . ITEM_KIT); // standard, exclude kit items since kits will be picked up later
$this->db->like('name', $search);
$this->db->order_by('name', 'asc');
foreach($this->db->get()->result() as $row)

View File

@@ -1,5 +1,9 @@
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
define('COMPLETED', 0);
define('SUSPENDED', 1);
define('QUOTE', 2);
/**
* Sale class
*/
@@ -309,15 +313,15 @@ class Sale extends CI_Model
if($filters['sale_type'] == 'sales')
{
$this->db->where('sales.sale_status = 0 AND payment_amount > 0');
$this->db->where('sales.sale_status = ' . COMPLETED . ' AND payment_amount > 0');
}
elseif($filters['sale_type'] == 'quotes')
{
$this->db->where('sales.sale_status = 1 AND sales.quote_number IS NOT NULL');
$this->db->where('sales.sale_status = ' . SUSPENDED . ' AND sales.quote_number IS NOT NULL');
}
elseif($filters['sale_type'] == 'returns')
{
$this->db->where('sales.sale_status = 0 AND payment_amount < 0');
$this->db->where('sales.sale_status = ' . COMPLETED . ' AND payment_amount < 0');
}
if($filters['only_invoices'] != FALSE)
@@ -532,27 +536,14 @@ class Sale extends CI_Model
return -1;
}
if($sale_status == '1') //suspend sales
{
if($dinner_table > 2) //not delivery or take away
{
$table_status = 1;
}
else
{
$table_status = 0;
}
}
else
{
$table_status = 0;
}
$table_status = $this->determine_sale_status($sale_status, $dinner_table);
$sales_data = array(
'sale_time' => date('Y-m-d H:i:s'),
'customer_id' => $this->Customer->exists($customer_id) ? $customer_id : null,
'employee_id' => $employee_id,
'comment' => $comment,
'sale_status' => $sale_status,
'invoice_number' => $invoice_number,
'quote_number' => $quote_number,
'dinner_table_id'=> $dinner_table,
@@ -593,23 +584,7 @@ class Sale extends CI_Model
$total_amount = floatval($total_amount) + floatval($payment['payment_amount']);
}
if(!empty($customer_id) && $this->config->item('customer_reward_enable') == TRUE)
{
$package_id = $this->Customer->get_info($customer_id)->package_id;
if(!empty($package_id))
{
$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);
}
}
$this->save_customer_rewards($customer_id, $sale_id, $total_amount, $total_amount_used);
$customer = $this->Customer->get_info($customer_id);
@@ -635,7 +610,7 @@ class Sale extends CI_Model
$this->db->insert('sales_items', $sales_items_data);
if($cur_item_info->stock_type === '0' && $sale_status === '0')
if($cur_item_info->stock_type === HAS_STOCK && $sale_status === COMPLETED)
{
// Update stock quantity if item type is a standard stock item and the sale is a standard sale
$item_quantity = $this->Item_quantity->get_item_quantity($item['item_id'], $item['item_location']);
@@ -836,7 +811,7 @@ class Sale extends CI_Model
{
$cur_item_info = $this->Item->get_info($item['item_id']);
if($cur_item_info->stock_type === '0') {
if($cur_item_info->stock_type === HAS_STOCK) {
// create query to update inventory tracking
$inv_data = array(
'trans_date' => date('Y-m-d H:i:s'),
@@ -1199,16 +1174,12 @@ class Sale extends CI_Model
if($customer_id == -1)
{
$query = $this->db->query('select sale_id, sale_id as suspended_sale_id, sale_status, sale_time, dinner_table_id, customer_id, comment from '
. $this->db->dbprefix('sales') . ' where sale_status = 1 '
. ' union select sale_id, sale_id*-1 as suspended_sale_id, 2 as sale_status, sale_time, dinner_table_id, customer_id, comment from '
. $this->db->dbprefix('sales_suspended'));
. $this->db->dbprefix('sales') . ' where sale_status = ' . SUSPENDED);
}
else
{
$query = $this->db->query('select sale_id, sale_id as suspended_sale_id, sale_status, sale_time, dinner_table_id, customer_id, comment from '
. $this->db->dbprefix('sales') . ' where sale_status = 1 AND customer_id = ' . $customer_id
. ' union select sale_id, sale_id*-1 as suspended_sale_id, 2 as sale_status, sale_time, dinner_table_id, customer_id, comment from '
. $this->db->dbprefix('sales_suspended') . ' where customer_id = ' . $customer_id);
$query = $this->db->query('select sale_id, sale_status, sale_time, dinner_table_id, customer_id, comment from '
. $this->db->dbprefix('sales') . ' where sale_status = '. SUSPENDED .' AND customer_id = ' . $customer_id);
}
return $query->result_array();
@@ -1273,7 +1244,7 @@ class Sale extends CI_Model
{
$this->db->from('sales');
$this->db->where('invoice_number IS NOT NULL');
$this->db->where('sale_status', '1');
$this->db->where('sale_status', SUSPENDED);
return $this->db->count_all_results();
}
@@ -1299,7 +1270,7 @@ class Sale extends CI_Model
$this->db->delete('sales_items_taxes', array('sale_id' => $sale_id));
$this->db->delete('sales_items', array('sale_id' => $sale_id));
$this->db->delete('sales_taxes', array('sale_id' => $sale_id));
$this->db->delete('sales', array('sale_id' => $sale_id));
$this->db->delete('sales', array('sale_id' => $sale_id, 'sale_status' => SUSPENDED));
$this->db->trans_complete();
@@ -1313,9 +1284,51 @@ class Sale extends CI_Model
{
$this->db->from('sales');
$this->db->where('sale_id', $sale_id);
$this->db->join('people', 'people.person_id = sales_suspended.customer_id', 'LEFT');
$this->db->join('people', 'people.person_id = sales.customer_id', 'LEFT');
$this->db-where('sale_status', SUSPENDED);
return $this->db->get();
}
/**
* @param $customer_id
* @param $sale_id
* @param $total_amount
* @param $total_amount_used
*/
private function save_customer_rewards($customer_id, $sale_id, $total_amount, $total_amount_used)
{
if (!empty($customer_id) && $this->config->item('customer_reward_enable') == TRUE)
{
$package_id = $this->Customer->get_info($customer_id)->package_id;
if (!empty($package_id))
{
$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);
}
}
}
/**
* @param $sale_status
* @param $dinner_table
* @return int
*/
private function determine_sale_status(&$sale_status, $dinner_table)
{
if ($sale_status == SUSPENDED && $dinner_table > 2) //not delivery or take away
{
return SUSPENDED;
}
return COMPLETED;
}
}
?>

View File

@@ -1,226 +0,0 @@
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* Sale_suspended class
*/
class Sale_suspended extends CI_Model
{
public function get_all()
{
$this->db->from('sales_suspended');
$this->db->order_by('sale_id');
return $this->db->get();
}
public function get_info($sale_id)
{
$this->db->from('sales_suspended');
$this->db->where('sale_id', $sale_id);
$this->db->join('people', 'people.person_id = sales_suspended.customer_id', 'LEFT');
return $this->db->get();
}
/*
Gets total of invocie rows
*/
public function get_invoice_count()
{
$this->db->from('sales_suspended');
$this->db->where('invoice_number IS NOT NULL');
return $this->db->count_all_results();
}
public function get_sale_by_invoice_number($invoice_number)
{
$this->db->from('sales_suspended');
$this->db->where('invoice_number', $invoice_number);
return $this->db->get();
}
public function exists($sale_id)
{
$this->db->from('sales_suspended');
$this->db->where('sale_id', $sale_id);
return ($this->db->get()->num_rows() == 1);
}
public function update($sale_data, $sale_id)
{
$this->db->where('sale_id', $sale_id);
return $this->db->update('sales_suspended', $sale_data);
}
public function save($items, $customer_id, $employee_id, $comment, $invoice_number, $quote_number, $payments, $dinner_table, $sale_id = FALSE)
{
if(count($items) == 0)
{
return -1;
}
if($dinner_table > 2) //not delivery or take away
{
$table_status = 1;
}
else
{
$table_status = 0;
}
$sales_data = array(
'sale_time' => date('Y-m-d H:i:s'),
'customer_id' => $this->Customer->exists($customer_id) ? $customer_id : null,
'employee_id' => $employee_id,
'comment' => $comment,
'invoice_number' => $invoice_number,
'quote_number' => $quote_number,
'dinner_table_id' => $dinner_table
);
//Run these queries as a transaction, we want to make sure we do all or nothing
$this->db->trans_start();
$this->db->insert('sales_suspended', $sales_data);
$sale_id = $this->db->insert_id();
foreach($payments as $payment_id=>$payment)
{
$sales_payments_data = array(
'sale_id' => $sale_id,
'payment_type' => $payment['payment_type'],
'payment_amount' => $payment['payment_amount']
);
$this->db->insert('sales_suspended_payments', $sales_payments_data);
}
foreach($items as $line=>$item)
{
$cur_item_info = $this->Item->get_info($item['item_id']);
$sales_items_data = array(
'sale_id' => $sale_id,
'item_id' => $item['item_id'],
'line' => $item['line'],
'description' => character_limiter($item['description'], 30),
'serialnumber' => character_limiter($item['serialnumber'], 30),
'quantity_purchased' => $item['quantity'],
'discount_percent' => $item['discount'],
'item_cost_price' => $cur_item_info->cost_price,
'item_unit_price' => $item['price'],
'item_location' => $item['item_location']
);
$this->db->insert('sales_suspended_items', $sales_items_data);
$customer = $this->Customer->get_info($customer_id);
if($customer_id == -1 || $customer->taxable)
{
foreach($this->Item_taxes->get_info($item['item_id']) as $row)
{
$sales_items_taxes = array(
'sale_id' => $sale_id,
'item_id' => $item['item_id'],
'line' => $item['line'],
'name' => $row['name'],
'percent' => $row['percent']
);
$this->db->insert('sales_suspended_items_taxes', $sales_items_taxes);
}
}
}
$dinner_table_data = array(
'status' => $table_status
);
$this->db->where('dinner_table_id',$dinner_table);
$this->db->update('dinner_tables', $dinner_table_data);
$this->db->trans_complete();
if($this->db->trans_status() === FALSE)
{
return -1;
}
return $sale_id;
}
public function delete($sale_id)
{
//Run these queries as a transaction, we want to make sure we do all or nothing
$this->db->trans_start();
$dinner_table = $this->get_dinner_table($sale_id);
$dinner_table_data = array(
'status' => 0
);
$this->db->where('dinner_table_id',$dinner_table);
$this->db->update('dinner_tables', $dinner_table_data);
$this->db->delete('sales_suspended_payments', array('sale_id' => $sale_id));
$this->db->delete('sales_suspended_items_taxes', array('sale_id' => $sale_id));
$this->db->delete('sales_suspended_items', array('sale_id' => $sale_id));
$this->db->delete('sales_suspended', array('sale_id' => $sale_id));
$this->db->trans_complete();
return $this->db->trans_status();
}
public function get_sale_items($sale_id)
{
$this->db->select('
sale_id,
sales_suspended_items.item_id,
sales_suspended_items.description,
serialnumber,
line,
quantity_purchased,
item_cost_price,
item_unit_price,
discount_percent,
item_location,
print_option,
stock_type');
$this->db->from('sales_suspended_items');
$this->db->join('items as items', 'sales_suspended_items.item_id = items.item_id');
$this->db->where('sale_id', $sale_id);
return $this->db->get();
}
public function get_sale_payments($sale_id)
{
$this->db->from('sales_suspended_payments');
$this->db->where('sale_id', $sale_id);
return $this->db->get();
}
public function get_comment($sale_id)
{
$this->db->from('sales_suspended');
$this->db->where('sale_id', $sale_id);
return $this->db->get()->row()->comment;
}
public function get_dinner_table($sale_id)
{
$this->db->from('sales_suspended');
$this->db->where('sale_id', $sale_id);
return $this->db->get()->row()->dinner_table_id;
}
}
?>

View File

@@ -88,19 +88,19 @@ class Detailed_sales extends Report
if($inputs['sale_type'] == 'sales')
{
$this->db->where('sale_status = 0 and quantity_purchased > 0');
$this->db->where('sale_status = '. COMPLETED . ' and quantity_purchased > 0');
}
elseif($inputs['sale_type'] == 'all')
{
$this->db->where('sale_status = 0');
$this->db->where('sale_status = ' . COMPLETED);
}
elseif($inputs['sale_type'] == 'quotes')
{
$this->db->where('sale_status = 1 and quote_number IS NOT NULL');
$this->db->where('sale_status = ' . SUSPENDED . ' and quote_number IS NOT NULL');
}
elseif($inputs['sale_type'] == 'returns')
{
$this->db->where('sale_status = 0 and quantity_purchased < 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased < 0');
}
$this->db->group_by('sale_id');
@@ -138,19 +138,19 @@ class Detailed_sales extends Report
if($inputs['sale_type'] == 'sales')
{
$this->db->where('sale_status = 0 and quantity_purchased > 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased > 0');
}
elseif($inputs['sale_type'] == 'all')
{
$this->db->where('sale_status = 0');
$this->db->where('sale_status = ' . COMPLETED);
}
elseif($inputs['sale_type'] == 'quotes')
{
$this->db->where('sale_status = 1 and quote_number IS NOT NULL');
$this->db->where('sale_status = ' . SUSPENDED . ' and quote_number IS NOT NULL');
}
elseif($inputs['sale_type'] == 'returns')
{
$this->db->where('sale_status = 0 and quantity_purchased < 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased < 0');
}
return $this->db->get()->row_array();

View File

@@ -61,19 +61,19 @@ class Specific_customer extends Report
if($inputs['sale_type'] == 'sales')
{
$this->db->where('sale_status = 0 and quantity_purchased > 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased > 0');
}
elseif($inputs['sale_type'] == 'all')
{
$this->db->where('sale_status = 0');
$this->db->where('sale_status = ' . COMPLETED);
}
elseif($inputs['sale_type'] == 'quotes')
{
$this->db->where('sale_status = 1 and quote_number IS NOT NULL');
$this->db->where('sale_status = ' . SUSPENDED . ' and quote_number IS NOT NULL');
}
elseif($inputs['sale_type'] == 'returns')
{
$this->db->where('sale_status = 0 and quantity_purchased < 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased < 0');
}
$this->db->group_by('sale_id');
@@ -107,19 +107,19 @@ class Specific_customer extends Report
if($inputs['sale_type'] == 'sales')
{
$this->db->where('sale_status = 0 and quantity_purchased > 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased > 0');
}
elseif($inputs['sale_type'] == 'all')
{
$this->db->where('sale_status = 0');
$this->db->where('sale_status = ' . COMPLETED);
}
elseif($inputs['sale_type'] == 'quotes')
{
$this->db->where('sale_status = 1 and quote_number IS NOT NULL');
$this->db->where('sale_status = ' . SUSPENDED . ' and quote_number IS NOT NULL');
}
elseif($inputs['sale_type'] == 'returns')
{
$this->db->where('sale_status = 0 and quantity_purchased < 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased < 0');
}
return $this->db->get()->row_array();

View File

@@ -59,19 +59,19 @@ class Specific_discount extends Report
if($inputs['sale_type'] == 'sales')
{
$this->db->where('sale_status = 0 and quantity_purchased > 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased > 0');
}
elseif($inputs['sale_type'] == 'all')
{
$this->db->where('sale_status = 0');
$this->db->where('sale_status = ' . COMPLETED);
}
elseif($inputs['sale_type'] == 'quotes')
{
$this->db->where('sale_status = 1 and quote_number IS NOT NULL');
$this->db->where('sale_status = '. SUSPENDED .' and quote_number IS NOT NULL');
}
elseif($inputs['sale_type'] == 'returns')
{
$this->db->where('sale_status = 0 and quantity_purchased < 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased < 0');
}
$this->db->group_by('sale_id');
@@ -105,19 +105,19 @@ class Specific_discount extends Report
if($inputs['sale_type'] == 'sales')
{
$this->db->where('sale_status = 0 and quantity_purchased > 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased > 0');
}
elseif($inputs['sale_type'] == 'all')
{
$this->db->where('sale_status = 0');
$this->db->where('sale_status = ' . COMPLETED);
}
elseif($inputs['sale_type'] == 'quotes')
{
$this->db->where('sale_status = 1 and quote_number IS NOT NULL');
$this->db->where('sale_status = ' . SUSPENDED . ' and quote_number IS NOT NULL');
}
elseif($inputs['sale_type'] == 'returns')
{
$this->db->where('sale_status = 0 and quantity_purchased < 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased < 0');
}
return $this->db->get()->row_array();

View File

@@ -61,19 +61,19 @@ class Specific_employee extends Report
if($inputs['sale_type'] == 'sales')
{
$this->db->where('sale_status = 0 and quantity_purchased > 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased > 0');
}
elseif($inputs['sale_type'] == 'all')
{
$this->db->where('sale_status = 0');
$this->db->where('sale_status = ' . COMPLETED);
}
elseif($inputs['sale_type'] == 'quotes')
{
$this->db->where('sale_status = 1 and quote_number IS NOT NULL');
$this->db->where('sale_status = ' . SUSPENDED . ' and quote_number IS NOT NULL');
}
elseif($inputs['sale_type'] == 'returns')
{
$this->db->where('sale_status = 0 and quantity_purchased < 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased < 0');
}
$this->db->group_by('sale_id');
@@ -107,19 +107,19 @@ class Specific_employee extends Report
if($inputs['sale_type'] == 'sales')
{
$this->db->where('sale_status = 0 and quantity_purchased > 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased > 0');
}
elseif($inputs['sale_type'] == 'all')
{
$this->db->where('sale_status = 0');
$this->db->where('sale_status = ' . COMPLETED);
}
elseif($inputs['sale_type'] == 'quotes')
{
$this->db->where('sale_status = 1 and quote_number IS NOT NULL');
$this->db->where('sale_status = ' . SUSPENDED . ' and quote_number IS NOT NULL');
}
elseif($inputs['sale_type'] == 'returns')
{
$this->db->where('sale_status = 0 and quantity_purchased < 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased < 0');
}
return $this->db->get()->row_array();

View File

@@ -92,19 +92,19 @@ abstract class Summary_report extends Report
if($inputs['sale_type'] == 'sales')
{
$this->db->where('sale_status = 0 and quantity_purchased > 0');
$this->db->where('sale_status = '. COMPLETED . ' and quantity_purchased > 0');
}
elseif($inputs['sale_type'] == 'all')
{
$this->db->where('sale_status = 0');
$this->db->where('sale_status = '. COMPLETED);
}
elseif($inputs['sale_type'] == 'quotes')
{
$this->db->where('sale_status = 1 and quote_number IS NOT NULL');
$this->db->where('sale_status = ' . SUSPENDED . ' and quote_number IS NOT NULL');
}
elseif($inputs['sale_type'] == 'returns')
{
$this->db->where('sale_status = 0 and quantity_purchased < 0');
$this->db->where('sale_status = ' . COMPLETED . ' and quantity_purchased < 0');
}

View File

@@ -59,7 +59,7 @@
'type'=>'radio',
'id'=>'price_option',
'value'=>0,
'checked'=>$item_kit_info->price_option === '0')
'checked'=>$item_kit_info->price_option === PRICE_ALL)
); ?> <?php echo $this->lang->line('item_kits_kit_and_components'); ?>
</label>
<label class="radio-inline">
@@ -68,7 +68,7 @@
'type'=>'radio',
'id'=>'price_option',
'value'=>1,
'checked'=>$item_kit_info->price_option === '1')
'checked'=>$item_kit_info->price_option === PRICE_KIT)
); ?> <?php echo $this->lang->line('item_kits_kit_only'); ?>
</label>
<label class="radio-inline">
@@ -77,7 +77,7 @@
'type'=>'radio',
'id'=>'price_option',
'value'=>2,
'checked'=>$item_kit_info->price_option === '2')
'checked'=>$item_kit_info->price_option === PRICE_ITEMS)
); ?> <?php echo $this->lang->line('item_kits_kit_and_stock'); ?>
</label>
@@ -93,7 +93,7 @@
'type'=>'radio',
'id'=>'print_option',
'value'=>0,
'checked'=>$item_kit_info->print_option === '0')
'checked'=>$item_kit_info->print_option === PRINT_ALL)
); ?> <?php echo $this->lang->line('item_kits_all'); ?>
</label>
<label class="radio-inline">
@@ -102,7 +102,7 @@
'type'=>'radio',
'id'=>'print_option',
'value'=>1,
'checked'=>$item_kit_info->print_option === '1')
'checked'=>$item_kit_info->print_option === PRINT_PRICED)
); ?> <?php echo $this->lang->line('item_kits_priced_only'); ?>
</label>
<label class="radio-inline">
@@ -111,7 +111,7 @@
'type'=>'radio',
'id'=>'print_option',
'value'=>2,
'checked'=>$item_kit_info->print_option === '2')
'checked'=>$item_kit_info->print_option === PRINT_KIT)
); ?> <?php echo $this->lang->line('item_kits_kit_only'); ?>
</label>

View File

@@ -56,7 +56,7 @@
'type'=>'radio',
'id'=>'stock_type',
'value'=>0,
'checked'=>$item_info->stock_type === '0')
'checked'=>$item_info->stock_type === HAS_STOCK)
); ?> <?php echo $this->lang->line('items_stock'); ?>
</label>
<label class="radio-inline">
@@ -65,7 +65,7 @@
'type'=>'radio',
'id'=>'stock_type',
'value'=>1,
'checked'=>$item_info->stock_type === '1')
'checked'=>$item_info->stock_type === HAS_NO_STOCK)
); ?> <?php echo $this->lang->line('items_nonstock'); ?>
</label>
</div>
@@ -80,7 +80,7 @@
'type'=>'radio',
'id'=>'item_type',
'value'=>0,
'checked'=>$item_info->item_type === '0')
'checked'=>$item_info->item_type === ITEM)
); ?> <?php echo $this->lang->line('items_standard'); ?>
</label>
<label class="radio-inline">
@@ -89,7 +89,7 @@
'type'=>'radio',
'id'=>'item_type',
'value'=>1,
'checked'=>$item_info->item_type === '1')
'checked'=>$item_info->item_type === ITEM_KIT)
); ?> <?php echo $this->lang->line('items_kit'); ?>
</label>
</div>

View File

@@ -74,7 +74,7 @@
<link rel="stylesheet" type="text/css" href="dist/opensourcepos.min.css?rel=450ba95f2c"/>
<!-- end mincss template tags -->
<!-- start minjs template tags -->
<script type="text/javascript" src="dist/opensourcepos.min.js?rel=85155994d2"></script>
<script type="text/javascript" src="dist/opensourcepos.min.js?rel=137444891c"></script>
<!-- end minjs template tags -->
<?php endif; ?>

View File

@@ -99,7 +99,7 @@ $(document).ready(function()
<?php if(!empty($sale_info['email'])): ?>
$("#send_invoice").click(function(event) {
if (confirm("<?php echo $this->lang->line('sales_invoice_confirm') . ' ' . $sale_info['email'] ?>")) {
$.get('<?php echo site_url() . "/sales/send_invoice/" . $sale_info['sale_id']; ?>',
$.get('<?php echo site_url() . "/sales/send_pdf/" . $sale_info['sale_id']; ?>',
function(response) {
dialog_support.hide();
table_support.handle_submit('<?php echo site_url('sales'); ?>', response);

View File

@@ -14,7 +14,7 @@ $(document).ready(function()
{
var send_email = function()
{
$.get('<?php echo site_url() . "/sales/send_invoice/" . $sale_id_num; ?>',
$.get('<?php echo site_url() . "/sales/send_pdf/" . $sale_id_num; ?>',
function(response)
{
$.notify(response.message, { type: response.success ? 'success' : 'danger'} );

View File

@@ -14,7 +14,7 @@ if (isset($error_message))
{
var send_email = function()
{
$.get('<?php echo site_url() . "/sales/send_quote/" . $sale_id_num; ?>',
$.get('<?php echo site_url() . "/sales/send_pdf/" . $sale_id_num . "/quote"; ?>',
function(response)
{
$.notify(response.message, { type: response.success ? 'success' : 'danger'} );

View File

@@ -686,7 +686,7 @@ $(document).ready(function()
$("#finish_sale_button").click(function()
{
$('#buttons_form').attr('action', '<?php echo site_url($controller_name."/complete_receipt"); ?>');
$('#buttons_form').attr('action', '<?php echo site_url($controller_name."/complete"); ?>');
$('#buttons_form').submit();
});

View File

@@ -115,7 +115,6 @@ CREATE TABLE IF NOT EXISTS `ospos_sales_reward_points` (
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
-- alter ospos_customers table
ALTER TABLE ospos_customers
@@ -275,7 +274,6 @@ UPDATE `ospos_tax_code_rates` SET rate_tax_category_id = 1 WHERE rate_tax_catego
INSERT INTO `ospos_app_config` (`key`, `value`) VALUES
('receipt_font_size', '12');
--
-- Add rewards foreign keys
--
@@ -296,7 +294,6 @@ ALTER TABLE `ospos_customers`
ADD KEY `package_id` (`package_id`),
ADD CONSTRAINT `ospos_customers_ibfk_2` FOREIGN KEY (`package_id`) REFERENCES `ospos_customers_packages` (`package_id`);
-- add reCAPTCHA configuration
INSERT INTO `ospos_app_config` (`key`, `value`) VALUES
@@ -304,8 +301,28 @@ INSERT INTO `ospos_app_config` (`key`, `value`) VALUES
('gcaptcha_secret_key', ''),
('gcaptcha_site_key', '');
-- add Barcode formats
INSERT INTO `ospos_app_config` (`key`, `value`) VALUES
('barcode_formats', '[]');
-- replace old tokens in ospos_app_config
UPDATE `ospos_app_config` SET `value` = REPLACE(`value`, '$CO', '{CO}');
UPDATE `ospos_app_config` SET `value` = REPLACE(`value`, '$CU', '{CU}');
UPDATE `ospos_app_config` SET `value` = REPLACE(`value`, '$INV', '{ISEQ}');
UPDATE `ospos_app_config` SET `value` = REPLACE(`value`, '$SCO', '{SCO}');
--
-- Copy suspended sales to sales table
--
INSERT INTO `ospos_sales` (sale_time, customer_id, employee_id, comment, invoice_number, sale_status)
SELECT sale_time, customer_id, employee_id, comment, invoice_number, 1 FROM `ospos_sales_suspended`;
INSERT INTO `ospos_sales_items` (sale_id, item_id, description, serialnumber, line, quantity_purchased, item_cost_price, item_unit_price,
discount_percent, item_location) SELECT sale_id, item_id, description, serialnumber, line, quantity_purchased, item_cost_price, item_unit_price,
discount_percent, item_location FROM ospos_sales_suspended_items;
INSERT INTO `ospos_sales_payments` (sale_id, payment_type, payment_amount) SELECT sale_id, payment_type, payment_amount FROM `ospos_sales_suspended_payments`;
INSERT INTO `ospos_sales_items_taxes` (sale_id, item_id, line, name, percent) SELECT sale_id, item_id, line, name, percent FROM `ospos_sales_suspended_items_taxes`;
DROP TABLE ospos_sales_suspended_payments, ospos_sales_suspended_item_taxes, ospos_sales_suspended_items, ospos_sales_suspended;

View File

@@ -99,35 +99,6 @@ ALTER TABLE `ospos_sales_items_taxes`
ALTER TABLE `ospos_sales_payments`
ADD CONSTRAINT `ospos_sales_payments_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales` (`sale_id`);
--
-- Constraints for table `ospos_sales_suspended`
--
ALTER TABLE `ospos_sales_suspended`
ADD CONSTRAINT `ospos_sales_suspended_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`),
ADD CONSTRAINT `ospos_sales_suspended_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `ospos_customers` (`person_id`),
ADD CONSTRAINT `ospos_sales_suspended_ibfk_3` FOREIGN KEY (`dinner_table_id`) REFERENCES `ospos_dinner_tables` (`dinner_table_id`);
--
-- Constraints for table `ospos_sales_suspended_items`
--
ALTER TABLE `ospos_sales_suspended_items`
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`),
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_2` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended` (`sale_id`),
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_3` FOREIGN KEY (`item_location`) REFERENCES `ospos_stock_locations` (`location_id`);
--
-- Constraints for table `ospos_sales_suspended_items_taxes`
--
ALTER TABLE `ospos_sales_suspended_items_taxes`
ADD CONSTRAINT `ospos_sales_suspended_items_taxes_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended_items` (`sale_id`),
ADD CONSTRAINT `ospos_sales_suspended_items_taxes_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`);
--
-- Constraints for table `ospos_sales_suspended_payments`
--
ALTER TABLE `ospos_sales_suspended_payments`
ADD CONSTRAINT `ospos_sales_suspended_payments_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended` (`sale_id`);
--
-- Constraints for table `ospos_item_quantities`
--

View File

@@ -51,10 +51,10 @@ INSERT INTO `ospos_app_config` (`key`, `value`) VALUES
('last_used_invoice_number', '0'),
('last_used_quote_number', '0'),
('line_sequence', '0'),
('recv_invoice_format', '$CO'),
('sales_invoice_format', '$CO'),
('recv_invoice_format', '{CO}'),
('sales_invoice_format', '{CO}'),
('sales_quote_format', 'Q%y{QSEQ:6}'),
('invoice_email_message', 'Dear $CU, In attachment the receipt for sale $INV'),
('invoice_email_message', 'Dear {CU}, In attachment the receipt for sale $INV'),
('invoice_default_comments', 'This is a default comment'),
('print_silently', '1'),
('print_header', '0'),
@@ -151,7 +151,7 @@ CREATE TABLE `ospos_employees` (
--
INSERT INTO `ospos_employees` (`username`, `password`, `person_id`, `deleted`, `hash_version`) VALUES
('admin', '$2y$10$vJBSMlD02EC7ENSrKfVQXuvq9tNRHMtcOA8MSK2NYS748HHWm.gcG', 1, 0, 2);
('admin', '$2y$10$vJBSMlD02EC7ENSrKfVQXuvq9tNRHMtcOA8MSK2NYS748HHWm.gcG', 1, 0, 2);
-- --------------------------------------------------------
@@ -660,99 +660,6 @@ CREATE TABLE `ospos_sales_taxes` (
--
-- --------------------------------------------------------
--
-- Table structure for table `ospos_sales_suspended`
--
CREATE TABLE `ospos_sales_suspended` (
`sale_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`customer_id` int(10) DEFAULT NULL,
`employee_id` int(10) NOT NULL DEFAULT '0',
`comment` text NOT NULL,
`invoice_number` varchar(32) DEFAULT NULL,
`quote_number` varchar(32) DEFAULT NULL,
`sale_id` int(10) NOT NULL AUTO_INCREMENT,
`dinner_table_id` int(11) NULL,
PRIMARY KEY (`sale_id`),
KEY `customer_id` (`customer_id`),
KEY `employee_id` (`employee_id`),
KEY `dinner_table_id` (`dinner_table_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `ospos_sales_suspended`
--
-- --------------------------------------------------------
--
-- Table structure for table `ospos_sales_suspended_items`
--
CREATE TABLE `ospos_sales_suspended_items` (
`sale_id` int(10) NOT NULL DEFAULT '0',
`item_id` int(10) NOT NULL DEFAULT '0',
`description` varchar(30) DEFAULT NULL,
`serialnumber` varchar(30) DEFAULT NULL,
`line` int(3) NOT NULL DEFAULT '0',
`quantity_purchased` decimal(15,3) NOT NULL DEFAULT '0',
`item_cost_price` decimal(15,2) NOT NULL,
`item_unit_price` decimal(15,2) NOT NULL,
`discount_percent` decimal(15,2) NOT NULL DEFAULT '0',
`item_location` int(11) NOT NULL,
`print_option` TINYINT(2) NOT NULL DEFAULT 0,
PRIMARY KEY (`sale_id`,`item_id`,`line`),
KEY `sale_id` (`sale_id`),
KEY `item_id` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `ospos_sales_suspended_items`
--
-- --------------------------------------------------------
--
-- Table structure for table `ospos_sales_suspended_items_taxes`
--
CREATE TABLE `ospos_sales_suspended_items_taxes` (
`sale_id` int(10) NOT NULL,
`item_id` int(10) NOT NULL,
`line` int(3) NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL,
`percent` decimal(15,3) NOT NULL,
PRIMARY KEY (`sale_id`,`item_id`,`line`,`name`,`percent`),
KEY `item_id` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `ospos_sales_suspended_items_taxes`
--
-- --------------------------------------------------------
--
-- Table structure for table `ospos_sales_suspended_payments`
--
CREATE TABLE `ospos_sales_suspended_payments` (
`sale_id` int(10) NOT NULL,
`payment_type` varchar(40) NOT NULL,
`payment_amount` decimal(15,2) NOT NULL,
PRIMARY KEY (`sale_id`,`payment_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `ospos_sales_suspended_payments`
--
-- --------------------------------------------------------
--
@@ -789,7 +696,7 @@ CREATE TABLE `ospos_stock_locations` (
-- Dumping data for table `ospos_stock_locations`
--
INSERT INTO `ospos_stock_locations` ( `deleted`, `location_name` ) VALUES ('0', 'stock');
INSERT INTO `ospos_stock_locations` (`location_name` ) VALUES ('stock');
-- --------------------------------------------------------
@@ -806,7 +713,7 @@ CREATE TABLE `ospos_suppliers` (
`deleted` int(1) NOT NULL DEFAULT '0',
UNIQUE KEY `account_number` (`account_number`),
KEY `person_id` (`person_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
-- --------------------------------------------------------
@@ -820,16 +727,16 @@ CREATE TABLE IF NOT EXISTS `ospos_tax_categories` (
`tax_category` varchar(32) NOT NULL,
`tax_group_sequence` tinyint(2) NOT NULL,
PRIMARY KEY (`tax_category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
--
-- Dumping data for table `ospos_stock_locations`
--
INSERT INTO `ospos_tax_categories` ( `tax_category_id`,`tax_category`, `tax_group_sequence` ) VALUES
(1, 'Standard', 10),
(2, 'Service', 12),
(3, 'Alcohol', 11);
INSERT INTO `ospos_tax_categories` (`tax_category`, `tax_group_sequence` ) VALUES
('Standard', 10),
('Service', 12),
('Alcohol', 11);
-- --------------------------------------------------------
@@ -883,15 +790,13 @@ CREATE TABLE `ospos_dinner_tables` (
`status` tinyint(1) NOT NULL DEFAULT '0',
`deleted` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`dinner_table_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
--
-- Dumping data for table `ospos_dinner_tables`
--
INSERT INTO `ospos_dinner_tables` (`dinner_table_id`, `name`, `status`, `deleted`) VALUES
(1, 'Delivery', 0, 0),
(2, 'Take Away', 0, 0);
INSERT INTO `ospos_dinner_tables` (`name`) VALUES ('Delivery'), ('Take Away');
-- --------------------------------------------------------
@@ -908,12 +813,12 @@ CREATE TABLE IF NOT EXISTS `ospos_customers_packages` (
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);
INSERT INTO `ospos_customers_packages` (`package_name`, `points_percent`) VALUES
('Default', 0),
('Bronze', 10),
('Silver', 20),
('Gold', 30),
('Premium', 50);
-- --------------------------------------------------------
@@ -1054,35 +959,6 @@ ALTER TABLE `ospos_sales_items_taxes`
ALTER TABLE `ospos_sales_payments`
ADD CONSTRAINT `ospos_sales_payments_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales` (`sale_id`);
--
-- Constraints for table `ospos_sales_suspended`
--
ALTER TABLE `ospos_sales_suspended`
ADD CONSTRAINT `ospos_sales_suspended_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`),
ADD CONSTRAINT `ospos_sales_suspended_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `ospos_customers` (`person_id`),
ADD CONSTRAINT `ospos_sales_suspended_ibfk_3` FOREIGN KEY (`dinner_table_id`) REFERENCES `ospos_dinner_tables` (`dinner_table_id`);
--
-- Constraints for table `ospos_sales_suspended_items`
--
ALTER TABLE `ospos_sales_suspended_items`
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`),
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_2` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended` (`sale_id`),
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_3` FOREIGN KEY (`item_location`) REFERENCES `ospos_stock_locations` (`location_id`);
--
-- Constraints for table `ospos_sales_suspended_items_taxes`
--
ALTER TABLE `ospos_sales_suspended_items_taxes`
ADD CONSTRAINT `ospos_sales_suspended_items_taxes_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended_items` (`sale_id`),
ADD CONSTRAINT `ospos_sales_suspended_items_taxes_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`);
--
-- Constraints for table `ospos_sales_suspended_payments`
--
ALTER TABLE `ospos_sales_suspended_payments`
ADD CONSTRAINT `ospos_sales_suspended_payments_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended` (`sale_id`);
--
-- Constraints for table `ospos_item_quantities`
--

View File

@@ -51,10 +51,10 @@ INSERT INTO `ospos_app_config` (`key`, `value`) VALUES
('last_used_invoice_number', '0'),
('last_used_quote_number', '0'),
('line_sequence', '0'),
('recv_invoice_format', '$CO'),
('sales_invoice_format', '$CO'),
('recv_invoice_format', '{CO}'),
('sales_invoice_format', '{CO}'),
('sales_quote_format', 'Q%y{QSEQ:6}'),
('invoice_email_message', 'Dear $CU, In attachment the receipt for sale $INV'),
('invoice_email_message', 'Dear {CU}, In attachment the receipt for sale $INV'),
('invoice_default_comments', 'This is a default comment'),
('print_silently', '1'),
('print_header', '0'),
@@ -151,7 +151,7 @@ CREATE TABLE `ospos_employees` (
--
INSERT INTO `ospos_employees` (`username`, `password`, `person_id`, `deleted`, `hash_version`) VALUES
('admin', '$2y$10$vJBSMlD02EC7ENSrKfVQXuvq9tNRHMtcOA8MSK2NYS748HHWm.gcG', 1, 0, 2);
('admin', '$2y$10$vJBSMlD02EC7ENSrKfVQXuvq9tNRHMtcOA8MSK2NYS748HHWm.gcG', 1, 0, 2);
-- --------------------------------------------------------
@@ -660,99 +660,6 @@ CREATE TABLE `ospos_sales_taxes` (
--
-- --------------------------------------------------------
--
-- Table structure for table `ospos_sales_suspended`
--
CREATE TABLE `ospos_sales_suspended` (
`sale_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`customer_id` int(10) DEFAULT NULL,
`employee_id` int(10) NOT NULL DEFAULT '0',
`comment` text NOT NULL,
`invoice_number` varchar(32) DEFAULT NULL,
`quote_number` varchar(32) DEFAULT NULL,
`sale_id` int(10) NOT NULL AUTO_INCREMENT,
`dinner_table_id` int(11) NULL,
PRIMARY KEY (`sale_id`),
KEY `customer_id` (`customer_id`),
KEY `employee_id` (`employee_id`),
KEY `dinner_table_id` (`dinner_table_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `ospos_sales_suspended`
--
-- --------------------------------------------------------
--
-- Table structure for table `ospos_sales_suspended_items`
--
CREATE TABLE `ospos_sales_suspended_items` (
`sale_id` int(10) NOT NULL DEFAULT '0',
`item_id` int(10) NOT NULL DEFAULT '0',
`description` varchar(30) DEFAULT NULL,
`serialnumber` varchar(30) DEFAULT NULL,
`line` int(3) NOT NULL DEFAULT '0',
`quantity_purchased` decimal(15,3) NOT NULL DEFAULT '0',
`item_cost_price` decimal(15,2) NOT NULL,
`item_unit_price` decimal(15,2) NOT NULL,
`discount_percent` decimal(15,2) NOT NULL DEFAULT '0',
`item_location` int(11) NOT NULL,
`print_option` TINYINT(2) NOT NULL DEFAULT 0,
PRIMARY KEY (`sale_id`,`item_id`,`line`),
KEY `sale_id` (`sale_id`),
KEY `item_id` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `ospos_sales_suspended_items`
--
-- --------------------------------------------------------
--
-- Table structure for table `ospos_sales_suspended_items_taxes`
--
CREATE TABLE `ospos_sales_suspended_items_taxes` (
`sale_id` int(10) NOT NULL,
`item_id` int(10) NOT NULL,
`line` int(3) NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL,
`percent` decimal(15,3) NOT NULL,
PRIMARY KEY (`sale_id`,`item_id`,`line`,`name`,`percent`),
KEY `item_id` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `ospos_sales_suspended_items_taxes`
--
-- --------------------------------------------------------
--
-- Table structure for table `ospos_sales_suspended_payments`
--
CREATE TABLE `ospos_sales_suspended_payments` (
`sale_id` int(10) NOT NULL,
`payment_type` varchar(40) NOT NULL,
`payment_amount` decimal(15,2) NOT NULL,
PRIMARY KEY (`sale_id`,`payment_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `ospos_sales_suspended_payments`
--
-- --------------------------------------------------------
--
@@ -789,7 +696,7 @@ CREATE TABLE `ospos_stock_locations` (
-- Dumping data for table `ospos_stock_locations`
--
INSERT INTO `ospos_stock_locations` ( `deleted`, `location_name` ) VALUES ('0', 'stock');
INSERT INTO `ospos_stock_locations` (`location_name` ) VALUES ('stock');
-- --------------------------------------------------------
@@ -806,7 +713,7 @@ CREATE TABLE `ospos_suppliers` (
`deleted` int(1) NOT NULL DEFAULT '0',
UNIQUE KEY `account_number` (`account_number`),
KEY `person_id` (`person_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
-- --------------------------------------------------------
@@ -820,16 +727,16 @@ CREATE TABLE IF NOT EXISTS `ospos_tax_categories` (
`tax_category` varchar(32) NOT NULL,
`tax_group_sequence` tinyint(2) NOT NULL,
PRIMARY KEY (`tax_category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
--
-- Dumping data for table `ospos_stock_locations`
--
INSERT INTO `ospos_tax_categories` ( `tax_category_id`,`tax_category`, `tax_group_sequence` ) VALUES
(1, 'Standard', 10),
(2, 'Service', 12),
(3, 'Alcohol', 11);
INSERT INTO `ospos_tax_categories` (`tax_category`, `tax_group_sequence` ) VALUES
('Standard', 10),
('Service', 12),
('Alcohol', 11);
-- --------------------------------------------------------
@@ -883,15 +790,13 @@ CREATE TABLE `ospos_dinner_tables` (
`status` tinyint(1) NOT NULL DEFAULT '0',
`deleted` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`dinner_table_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
--
-- Dumping data for table `ospos_dinner_tables`
--
INSERT INTO `ospos_dinner_tables` (`dinner_table_id`, `name`, `status`, `deleted`) VALUES
(1, 'Delivery', 0, 0),
(2, 'Take Away', 0, 0);
INSERT INTO `ospos_dinner_tables` (`name`) VALUES ('Delivery'), ('Take Away');
-- --------------------------------------------------------
@@ -908,12 +813,12 @@ CREATE TABLE IF NOT EXISTS `ospos_customers_packages` (
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);
INSERT INTO `ospos_customers_packages` (`package_name`, `points_percent`) VALUES
('Default', 0),
('Bronze', 10),
('Silver', 20),
('Gold', 30),
('Premium', 50);
-- --------------------------------------------------------
@@ -1225,35 +1130,6 @@ ALTER TABLE `ospos_sales_items_taxes`
ALTER TABLE `ospos_sales_payments`
ADD CONSTRAINT `ospos_sales_payments_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales` (`sale_id`);
--
-- Constraints for table `ospos_sales_suspended`
--
ALTER TABLE `ospos_sales_suspended`
ADD CONSTRAINT `ospos_sales_suspended_ibfk_1` FOREIGN KEY (`employee_id`) REFERENCES `ospos_employees` (`person_id`),
ADD CONSTRAINT `ospos_sales_suspended_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `ospos_customers` (`person_id`),
ADD CONSTRAINT `ospos_sales_suspended_ibfk_3` FOREIGN KEY (`dinner_table_id`) REFERENCES `ospos_dinner_tables` (`dinner_table_id`);
--
-- Constraints for table `ospos_sales_suspended_items`
--
ALTER TABLE `ospos_sales_suspended_items`
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_1` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`),
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_2` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended` (`sale_id`),
ADD CONSTRAINT `ospos_sales_suspended_items_ibfk_3` FOREIGN KEY (`item_location`) REFERENCES `ospos_stock_locations` (`location_id`);
--
-- Constraints for table `ospos_sales_suspended_items_taxes`
--
ALTER TABLE `ospos_sales_suspended_items_taxes`
ADD CONSTRAINT `ospos_sales_suspended_items_taxes_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended_items` (`sale_id`),
ADD CONSTRAINT `ospos_sales_suspended_items_taxes_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `ospos_items` (`item_id`);
--
-- Constraints for table `ospos_sales_suspended_payments`
--
ALTER TABLE `ospos_sales_suspended_payments`
ADD CONSTRAINT `ospos_sales_suspended_payments_ibfk_1` FOREIGN KEY (`sale_id`) REFERENCES `ospos_sales_suspended` (`sale_id`);
--
-- Constraints for table `ospos_item_quantities`
--

View File

@@ -51,10 +51,10 @@ INSERT INTO `ospos_app_config` (`key`, `value`) VALUES
('last_used_invoice_number', '0'),
('last_used_quote_number', '0'),
('line_sequence', '0'),
('recv_invoice_format', '$CO'),
('sales_invoice_format', '$CO'),
('recv_invoice_format', '{CO}'),
('sales_invoice_format', '{CO}'),
('sales_quote_format', 'Q%y{QSEQ:6}'),
('invoice_email_message', 'Dear $CU, In attachment the receipt for sale $INV'),
('invoice_email_message', 'Dear {CU}, In attachment the receipt for sale $INV'),
('invoice_default_comments', 'This is a default comment'),
('print_silently', '1'),
('print_header', '0'),
@@ -151,7 +151,7 @@ CREATE TABLE `ospos_employees` (
--
INSERT INTO `ospos_employees` (`username`, `password`, `person_id`, `deleted`, `hash_version`) VALUES
('admin', '$2y$10$vJBSMlD02EC7ENSrKfVQXuvq9tNRHMtcOA8MSK2NYS748HHWm.gcG', 1, 0, 2);
('admin', '$2y$10$vJBSMlD02EC7ENSrKfVQXuvq9tNRHMtcOA8MSK2NYS748HHWm.gcG', 1, 0, 2);
-- --------------------------------------------------------
@@ -660,99 +660,6 @@ CREATE TABLE `ospos_sales_taxes` (
--
-- --------------------------------------------------------
--
-- Table structure for table `ospos_sales_suspended`
--
CREATE TABLE `ospos_sales_suspended` (
`sale_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`customer_id` int(10) DEFAULT NULL,
`employee_id` int(10) NOT NULL DEFAULT '0',
`comment` text NOT NULL,
`invoice_number` varchar(32) DEFAULT NULL,
`quote_number` varchar(32) DEFAULT NULL,
`sale_id` int(10) NOT NULL AUTO_INCREMENT,
`dinner_table_id` int(11) NULL,
PRIMARY KEY (`sale_id`),
KEY `customer_id` (`customer_id`),
KEY `employee_id` (`employee_id`),
KEY `dinner_table_id` (`dinner_table_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `ospos_sales_suspended`
--
-- --------------------------------------------------------
--
-- Table structure for table `ospos_sales_suspended_items`
--
CREATE TABLE `ospos_sales_suspended_items` (
`sale_id` int(10) NOT NULL DEFAULT '0',
`item_id` int(10) NOT NULL DEFAULT '0',
`description` varchar(30) DEFAULT NULL,
`serialnumber` varchar(30) DEFAULT NULL,
`line` int(3) NOT NULL DEFAULT '0',
`quantity_purchased` decimal(15,3) NOT NULL DEFAULT '0',
`item_cost_price` decimal(15,2) NOT NULL,
`item_unit_price` decimal(15,2) NOT NULL,
`discount_percent` decimal(15,2) NOT NULL DEFAULT '0',
`item_location` int(11) NOT NULL,
`print_option` TINYINT(2) NOT NULL DEFAULT 0,
PRIMARY KEY (`sale_id`,`item_id`,`line`),
KEY `sale_id` (`sale_id`),
KEY `item_id` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `ospos_sales_suspended_items`
--
-- --------------------------------------------------------
--
-- Table structure for table `ospos_sales_suspended_items_taxes`
--
CREATE TABLE `ospos_sales_suspended_items_taxes` (
`sale_id` int(10) NOT NULL,
`item_id` int(10) NOT NULL,
`line` int(3) NOT NULL DEFAULT '0',
`name` varchar(255) NOT NULL,
`percent` decimal(15,3) NOT NULL,
PRIMARY KEY (`sale_id`,`item_id`,`line`,`name`,`percent`),
KEY `item_id` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `ospos_sales_suspended_items_taxes`
--
-- --------------------------------------------------------
--
-- Table structure for table `ospos_sales_suspended_payments`
--
CREATE TABLE `ospos_sales_suspended_payments` (
`sale_id` int(10) NOT NULL,
`payment_type` varchar(40) NOT NULL,
`payment_amount` decimal(15,2) NOT NULL,
PRIMARY KEY (`sale_id`,`payment_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `ospos_sales_suspended_payments`
--
-- --------------------------------------------------------
--
@@ -789,7 +696,7 @@ CREATE TABLE `ospos_stock_locations` (
-- Dumping data for table `ospos_stock_locations`
--
INSERT INTO `ospos_stock_locations` ( `deleted`, `location_name` ) VALUES ('0', 'stock');
INSERT INTO `ospos_stock_locations` (`location_name` ) VALUES ('stock');
-- --------------------------------------------------------
@@ -806,7 +713,7 @@ CREATE TABLE `ospos_suppliers` (
`deleted` int(1) NOT NULL DEFAULT '0',
UNIQUE KEY `account_number` (`account_number`),
KEY `person_id` (`person_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
-- --------------------------------------------------------
@@ -820,16 +727,16 @@ CREATE TABLE IF NOT EXISTS `ospos_tax_categories` (
`tax_category` varchar(32) NOT NULL,
`tax_group_sequence` tinyint(2) NOT NULL,
PRIMARY KEY (`tax_category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
--
-- Dumping data for table `ospos_stock_locations`
--
INSERT INTO `ospos_tax_categories` ( `tax_category_id`,`tax_category`, `tax_group_sequence` ) VALUES
(1, 'Standard', 10),
(2, 'Service', 12),
(3, 'Alcohol', 11);
INSERT INTO `ospos_tax_categories` (`tax_category`, `tax_group_sequence` ) VALUES
('Standard', 10),
('Service', 12),
('Alcohol', 11);
-- --------------------------------------------------------
@@ -883,15 +790,13 @@ CREATE TABLE `ospos_dinner_tables` (
`status` tinyint(1) NOT NULL DEFAULT '0',
`deleted` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`dinner_table_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
--
-- Dumping data for table `ospos_dinner_tables`
--
INSERT INTO `ospos_dinner_tables` (`dinner_table_id`, `name`, `status`, `deleted`) VALUES
(1, 'Delivery', 0, 0),
(2, 'Take Away', 0, 0);
INSERT INTO `ospos_dinner_tables` (`name`) VALUES ('Delivery'), ('Take Away');
-- --------------------------------------------------------
@@ -908,12 +813,12 @@ CREATE TABLE IF NOT EXISTS `ospos_customers_packages` (
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);
INSERT INTO `ospos_customers_packages` (`package_name`, `points_percent`) VALUES
('Default', 0),
('Bronze', 10),
('Silver', 20),
('Gold', 30),
('Premium', 50);
-- --------------------------------------------------------