mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-01-28 19:21:05 -05:00
Merge pull request #1441 from jekkos/feature/cleanup
Cleanup Sales controller
This commit is contained in:
@@ -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');
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 '';
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -6,6 +6,12 @@
|
||||
|
||||
class Token_invoice_sequence extends Token
|
||||
{
|
||||
|
||||
public function __construct($value = '')
|
||||
{
|
||||
parent::__construct($value);
|
||||
}
|
||||
|
||||
public function token_id()
|
||||
{
|
||||
return 'ISEQ';
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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');
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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; ?>
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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'} );
|
||||
|
||||
@@ -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'} );
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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`
|
||||
--
|
||||
|
||||
@@ -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`
|
||||
--
|
||||
|
||||
@@ -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`
|
||||
--
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
-- --------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user