Add date filtering in sales overview

Add jquery-ui datepicker
Format dates in sale and receiving forms according to configured
dateformat and timeformat settings
Add missing translations in sale (click delete when not selecting
anything)
Add search box back to search for customer sales and ticket numbers
This commit is contained in:
jekkos
2015-09-04 21:48:30 +02:00
parent a624d21fcd
commit f36c700129
46 changed files with 5705 additions and 2511 deletions

View File

@@ -64,7 +64,7 @@ $autoload['libraries'] = array('database','form_validation','session','user_agen
| $autoload['helper'] = array('url', 'file');
*/
$autoload['helper'] = array('form','url','table','text','currency', 'html', 'download', 'directory');
$autoload['helper'] = array('form','url','table','text','currency', 'html', 'download', 'directory', 'dateformat_helper');
/*

View File

@@ -371,8 +371,10 @@ class Receivings extends Secure_area
function save($receiving_id)
{
$date_formatter = date_create_from_format($this->config->item('dateformat') . ' ' . $this->config->item('timeformat'), $this->input->post('date', TRUE));
$receiving_data = array(
'receiving_time' => date('Y-m-d H:i:s', strtotime($this->input->post('date'))),
'receiving_time' => $date_formatter->format('Y-m-d H:i:s'),
'supplier_id' => $this->input->post('supplier_id') ? $this->input->post('supplier_id') : null,
'employee_id' => $this->input->post('employee_id'),
'comment' => $this->input->post('comment'),

View File

@@ -21,21 +21,27 @@ class Sales extends Secure_area
$data['only_invoices'] = array($this->lang->line('sales_no_filter'), $this->lang->line('sales_invoice'));
$data['search_section_state'] = $this->input->post('search_section_state');
$lines_per_page = $this->Appconfig->get('lines_per_page');
$today = date('Y-m-d');
$yesterday = date('Y-m-d', mktime(0,0,0,date("m"),date("d")-1,date("Y")));
$start_of_time = date('Y-m-d', 0);
$today = date($this->config->item('dateformat'));
$start_date = $this->input->post('start_date') != NULL ? $this->input->post('start_date', TRUE) : $today;
$start_date_formatter = date_create_from_format($this->config->item('dateformat'), $start_date);
$end_date = $this->input->post('end_date') != NULL ? $this->input->post('end_date', TRUE) : $today;
$end_date_formatter = date_create_from_format($this->config->item('dateformat'), $end_date);
$sale_type = 'sales';
$location_id = 'all';
$report_data = $this->Sale->get_data(array('start_date' => $yesterday, 'end_date' => $today, 'sale_type' => $sale_type, 'location_id' => $location_id,
'only_invoices' => $only_invoices, 'lines_per_page' => $lines_per_page, 'limit_from' => $limit_from));
$inputs = array('start_date' => $start_date_formatter->format('Y-m-d'), 'end_date' => $end_date_formatter->format('Y-m-d'),
'sale_type' => $sale_type, 'location_id' => $location_id, 'only_invoices' => $only_invoices, 'lines_per_page' => $lines_per_page,
'limit_from' => $limit_from);
$sales = $this->Sale->get_all($inputs);
$payments = $this->Sale->get_payments_summary($inputs);
$data['only_invoices'] = $only_invoices;
$data['links'] = $this->_initialize_pagination($this->Sale, $lines_per_page, $limit_from, count($report_data['sales']), 'manage', $only_invoices);
$data['manage_table'] = get_sales_manage_table($report_data['sales'], $this);
$data['payments_summary'] = get_sales_manage_payments_summary($report_data['payments'], $report_data['sales'], $this);
$data['start_date'] = $start_date_formatter->format($this->config->item('dateformat'));
$data['end_date'] = $end_date_formatter->format($this->config->item('dateformat'));
$data['links'] = $this->_initialize_pagination($this->Sale, $lines_per_page, $limit_from, count($sales), 'manage', $only_invoices);
$data['manage_table'] = get_sales_manage_table($sales, $this);
$data['payments_summary'] = get_sales_manage_payments_summary($payments, $sales, $this);
$this->load->view($data['controller_name'] . '/manage', $data);
$this->_remove_duplicate_cookies();
}
@@ -63,19 +69,27 @@ class Sales extends Secure_area
$only_invoices = $this->input->post('only_invoices', TRUE);
$lines_per_page = $this->Appconfig->get('lines_per_page');
$limit_from = $this->input->post('limit_from', TRUE);
$search = $this->input->post('search', TRUE);
$today = date($this->config->item('dateformat'));
$start_date = $this->input->post('start_date') != NULL ? $this->input->post('start_date', TRUE) : $today;
$start_date_formatter = date_create_from_format($this->config->item('dateformat'), $start_date);
$end_date = $this->input->post('end_date') != NULL ? $this->input->post('end_date', TRUE) : $today;
$end_date_formatter = date_create_from_format($this->config->item('dateformat'), $end_date);
$is_valid_receipt = isset($search) ? $this->sale_lib->is_valid_receipt($search) : FALSE;
$sale_type = 'sales';
$location_id = 'all';
$today = date('Y-m-d');
$yesterday = date('Y-m-d', mktime(0,0,0,date("m"),date("d")-1,date("Y")));
$report_data = $this->Sale->get_data(array('sale_type' => $sale_type, 'location_id' => $location_id,
'start_date' => $yesterday, 'end_date' => $today, 'only_invoices' => $only_invoices,
'lines_per_page' => $lines_per_page, 'limit_from' => $limit_from));
$total_rows = count($report_data['sales']);
$inputs = array('sale_type' => $sale_type, 'location_id' => $location_id,
'start_date' => $start_date_formatter->format('Y-m-d'), 'end_date' => $end_date_formatter->format('Y-m-d'),
'only_invoices' => $only_invoices, 'search' => $search,
'lines_per_page' => $lines_per_page, 'limit_from' => $limit_from, 'is_valid_receipt' => $is_valid_receipt);
$sales = $this->Sale->get_all($inputs);
$payments = $this->Sale->get_payments_summary($inputs);
$total_rows = count($sales);
$links = $this->_initialize_pagination($this->Sale,$lines_per_page,$limit_from,$total_rows,'search',$only_invoices);
$data_rows=get_sales_manage_table_data_rows($report_data['sales'], $this);
echo json_encode(array('total_rows' => $total_rows, 'rows' => $data_rows, 'pagination' => $links));
$sale_rows=get_sales_manage_table_data_rows($sales, $this);
echo json_encode(array('total_rows' => $total_rows, 'rows' => $sale_rows, 'pagination' => $links));
$this->_remove_duplicate_cookies();
}
@@ -97,6 +111,14 @@ class Sales extends Secure_area
echo implode("\n",$suggestions);
}
function suggest()
{
$search = $this->input->post('q', TRUE);
$limit = $this->input->post('limit', TRUE);
$suggestions = $this->Sale->get_search_suggestions($search, $limit);
echo implode("\n",$suggestions);
}
function select_customer()
{
$customer_id = $this->input->post("customer");
@@ -612,8 +634,10 @@ class Sales extends Secure_area
function save($sale_id)
{
$start_date_formatter = date_create_from_format($this->config->item('dateformat') . ' ' . $this->config->item('timeformat'), $this->input->post('date', TRUE));
$sale_data = array(
'sale_time' => date('Y-m-d H:i:s', strtotime($this->input->post('date'))),
'sale_time' => $start_date_formatter->format('Y-m-d H:i:s'),
'customer_id' => $this->input->post('customer_id') ? $this->input->post('customer_id') : NULL,
'employee_id' => $this->input->post('employee_id'),
'comment' => $this->input->post('comment'),

View File

@@ -0,0 +1,69 @@
<?php
/*
* Matches each symbol of PHP date format standard
* with jQuery equivalent codeword
* @author Tristan Jahier
*/
function dateformat_jquery($php_format)
{
$SYMBOLS_MATCHING = array(
// Day
'd' => 'dd',
'D' => 'D',
'j' => 'd',
'l' => 'DD',
'N' => '',
'S' => '',
'w' => '',
'z' => 'o',
// Week
'W' => '',
// Month
'F' => 'MM',
'm' => 'mm',
'M' => 'M',
'n' => 'm',
't' => '',
// Year
'L' => '',
'o' => '',
'Y' => 'yy',
'y' => 'y',
// Time
'a' => '',
'A' => '',
'B' => '',
'g' => '',
'G' => '',
'h' => '',
'H' => '',
'i' => '',
's' => '',
'u' => ''
);
$jqueryui_format = "";
$escaping = false;
for($i = 0; $i < strlen($php_format); $i++)
{
$char = $php_format[$i];
if($char === '\\') // PHP date format escaping character
{
$i++;
if($escaping) $jqueryui_format .= $php_format[$i];
else $jqueryui_format .= '\'' . $php_format[$i];
$escaping = true;
}
else
{
if($escaping) { $jqueryui_format .= "'"; $escaping = false; }
if(isset($SYMBOLS_MATCHING[$char]))
$jqueryui_format .= $SYMBOLS_MATCHING[$char];
else
$jqueryui_format .= $char;
}
}
return $jqueryui_format;
}
?>

View File

@@ -12,7 +12,7 @@ function get_sales_manage_table($sales, $controller)
$CI->lang->line('sales_amount_tendered'),
$CI->lang->line('sales_amount_due'),
$CI->lang->line('sales_change_due'),
//$CI->lang->line('sales_payment'),
$CI->lang->line('sales_payment'),
$CI->lang->line('sales_invoice_number'),
'&nbsp');
@@ -71,12 +71,12 @@ function get_sales_manage_sale_data_row($sale, $controller)
$table_data_row.='<td width="15%">'.'POS ' . $sale['sale_id'] . '</td>';
$table_data_row.='<td width="17%">'.date( $CI->config->item('dateformat') . ' ' . $CI->config->item('timeformat'), strtotime($sale['sale_time']) ).'</td>';
$table_data_row.='<td width="23%">'.character_limiter( $sale['customer_name'], 25).'</td>';
$table_data_row.='<td width="10%">'.to_currency( $sale['amount_tendered'] ).'</td>';
$table_data_row.='<td width="10%">'.to_currency( $sale['amount_due'] ).'</td>';
$table_data_row.='<td width="10%">'.to_currency( $sale['change_due'] ).'</td>';
//$table_data_row.='<td width="20%">'.$sale['payment_type'].'</td>';
$table_data_row.='<td width="10%">'.$sale['invoice_number'].'</td>';
$table_data_row.='<td width="12%">';
$table_data_row.='<td width="8%">'.to_currency( $sale['amount_tendered'] ).'</td>';
$table_data_row.='<td width="8%">'.to_currency( $sale['amount_due'] ).'</td>';
$table_data_row.='<td width="8%">'.to_currency( $sale['change_due'] ).'</td>';
$table_data_row.='<td width="12%">'.$sale['payment_type'].'</td>';
$table_data_row.='<td width="8%">'.$sale['invoice_number'].'</td>';
$table_data_row.='<td width="8%">';
$table_data_row.=anchor($controller_name."/edit/" . $sale['sale_id'] . "/width:$width", $CI->lang->line('common_edit'),array('class'=>'thickbox','title'=>$CI->lang->line($controller_name.'_update')));
$table_data_row.='&nbsp;&nbsp;&nbsp;&nbsp;';
$table_data_row.='<a href="'.site_url($controller_name. "/receipt/" . $sale['sale_id']) . '">' . $CI->lang->line('sales_show_receipt') . '</a>';

View File

@@ -67,7 +67,7 @@ $lang["sales_no_filter"] = "All";
$lang["sales_no_items_in_cart"] = "There are no items in the cart";
$lang["sales_no_sales_to_display"] = "No sales to display";
$lang["sales_one_or_multiple"] = "sale(s)";
$lang["sales_overview"] = "Overview";
$lang["sales_takings"] = "Takings";
$lang["sales_payment"] = "Payment Type";
$lang["sales_payment_amount"] = "Amount";
$lang["sales_payment_not_cover_total"] = "Payment Amount does not cover Total";
@@ -111,3 +111,4 @@ $lang["sales_unsuccessfully_updated"] = "Sale unsuccessfully updated";
$lang["sales_unsuspend"] = "Unsuspend";
$lang["sales_unsuspend_and_delete"] = "";
$lang["sales_update"] = "Edit Sale";
$lang["sales_date_range"] = "Date Range";

View File

@@ -67,7 +67,7 @@ $lang["sales_no_filter"] = "Todos";
$lang["sales_no_items_in_cart"] = "No hay artículos en el carrito";
$lang["sales_no_sales_to_display"] = "No hay ventas que mostrar";
$lang["sales_one_or_multiple"] = "venta(s)";
$lang["sales_overview"] = "Resumen";
$lang["sales_takings"] = "Resumen";
$lang["sales_payment"] = "Tipo de Pago";
$lang["sales_payment_amount"] = "Cantidad";
$lang["sales_payment_not_cover_total"] = "La Cantidad Recibida no cubre el pago total";
@@ -111,3 +111,4 @@ $lang["sales_unsuccessfully_updated"] = "Ha fallado la actualización de la vent
$lang["sales_unsuspend"] = "Retomar";
$lang["sales_unsuspend_and_delete"] = "Retomar y Borrar";
$lang["sales_update"] = "Editar Venta";
$lang["sales_date_range"] = "Rango de Fecha";

View File

@@ -67,7 +67,7 @@ $lang["sales_no_filter"] = "All";
$lang["sales_no_items_in_cart"] = "Il n\'y a rien dans votre panier";
$lang["sales_no_sales_to_display"] = "No sales to display";
$lang["sales_one_or_multiple"] = "";
$lang["sales_overview"] = "Overview";
$lang["sales_takings"] = "Takings";
$lang["sales_payment"] = "Type Paiement";
$lang["sales_payment_amount"] = "Somme";
$lang["sales_payment_not_cover_total"] = "Le Paiement ne couvre pas le Total";
@@ -111,3 +111,4 @@ $lang["sales_unsuccessfully_updated"] = "Échec d\'édition";
$lang["sales_unsuspend"] = "Débloquer";
$lang["sales_unsuspend_and_delete"] = "";
$lang["sales_update"] = "Edit Sale";
$lang["sales_date_range"] = "Plage de dates";

View File

@@ -48,7 +48,7 @@ $lang["reports_payment_type"] = "Tipe Pembayaran";
$lang["reports_payments"] = "Pembayaran";
$lang["reports_payments_summary_report"] = "Laporan Ringkasan Pembayaran";
$lang["reports_profit"] = "Keuntungan/Laba";
$lang["reports_cost"] = "Cost";
$lang["reports_cost"] = "";
$lang["reports_quantity_purchased"] = "Jumlah Dibeli";
$lang["reports_received_by"] = "Diterima Oleh";
$lang["reports_receiving_id"] = "Id Penerima";

View File

@@ -67,7 +67,7 @@ $lang["sales_no_filter"] = "All";
$lang["sales_no_items_in_cart"] = "Tidak ada Item dalam Keranjang Belanja";
$lang["sales_no_sales_to_display"] = "No sales to display";
$lang["sales_one_or_multiple"] = "";
$lang["sales_overview"] = "Overview";
$lang["sales_takings"] = "Takings";
$lang["sales_payment"] = "Type Pembayaran";
$lang["sales_payment_amount"] = "Amount";
$lang["sales_payment_not_cover_total"] = "Jumlah pembayaran tidak mencakup Total";
@@ -111,3 +111,4 @@ $lang["sales_unsuccessfully_updated"] = "Penjualan tidak berhasil diperbarui";
$lang["sales_unsuspend"] = "Batal Penangguhan";
$lang["sales_unsuspend_and_delete"] = "Batalkan dan hapus penangguhan";
$lang["sales_update"] = "Edit Sale";
$lang["sales_date_range"] = "Rentang Tanggal";

View File

@@ -67,7 +67,7 @@ $lang["sales_no_filter"] = "Alle";
$lang["sales_no_items_in_cart"] = "Er zijn geen aankopen geselecteerd";
$lang["sales_no_sales_to_display"] = "Er werden geen aankopen gevonden";
$lang["sales_one_or_multiple"] = "aankopen verwijderd";
$lang["sales_overview"] = "Overzicht";
$lang["sales_takings"] = "Overzicht";
$lang["sales_payment"] = "Betaalmethode";
$lang["sales_payment_amount"] = "Bedrag";
$lang["sales_payment_not_cover_total"] = "Betaalde hoeveelheid is onvoldoende";
@@ -111,3 +111,4 @@ $lang["sales_unsuccessfully_updated"] = "Fout bij het bewaren van ticket";
$lang["sales_unsuspend"] = "Hervat";
$lang["sales_unsuspend_and_delete"] = "";
$lang["sales_update"] = "Bewerk Ticket";
$lang["sales_date_range"] = "Periode";

View File

@@ -67,7 +67,7 @@ $lang["sales_no_filter"] = "All";
$lang["sales_no_items_in_cart"] = "Там нет товаров в корзине";
$lang["sales_no_sales_to_display"] = "No sales to display";
$lang["sales_one_or_multiple"] = "";
$lang["sales_overview"] = "Overview";
$lang["sales_takings"] = "Takings";
$lang["sales_payment"] = "Вид оплаты";
$lang["sales_payment_amount"] = "количество";
$lang["sales_payment_not_cover_total"] = "оплачиваемая сумма недостаточно";
@@ -111,3 +111,4 @@ $lang["sales_unsuccessfully_updated"] = "Продажа безуспешно о
$lang["sales_unsuspend"] = "Разблокировать";
$lang["sales_unsuspend_and_delete"] = "Разблокировать и удалить";
$lang["sales_update"] = "Edit Sale";
$lang["sales_date_range"] = "размах числа";

View File

@@ -67,7 +67,7 @@ $lang["sales_no_filter"] = "All";
$lang["sales_no_items_in_cart"] = "ไม่พบสินค้าในตระกร้า";
$lang["sales_no_sales_to_display"] = "No sales to display";
$lang["sales_one_or_multiple"] = "";
$lang["sales_overview"] = "Overview";
$lang["sales_takings"] = "Takings";
$lang["sales_payment"] = "รูปแบบชำระเงิน";
$lang["sales_payment_amount"] = "";
$lang["sales_payment_not_cover_total"] = " ปริมาณการจ่ายที่ไม่เพียงพอกะยอดรวม";
@@ -111,3 +111,4 @@ $lang["sales_unsuccessfully_updated"] = "อัพเดทการขายไ
$lang["sales_unsuspend"] = "ยกเลิกการระงับ";
$lang["sales_unsuspend_and_delete"] = "ยกเลิกการระงับ และ ลบ";
$lang["sales_update"] = "Edit Sale";
$lang["sales_date_range"] = "ระหว่างวันที่";

View File

@@ -48,7 +48,7 @@ $lang["reports_payment_type"] = "Ödeme Türü";
$lang["reports_payments"] = "Ödemeler";
$lang["reports_payments_summary_report"] = "Ödeme Özet Raporu";
$lang["reports_profit"] = "Kâr";
$lang["reports_cost"] = "Cost";
$lang["reports_cost"] = "";
$lang["reports_quantity_purchased"] = "Satın Alınan Adet";
$lang["reports_received_by"] = "Alım Yapan";
$lang["reports_receiving_id"] = "Alım No";

View File

@@ -67,7 +67,7 @@ $lang["sales_no_filter"] = "All";
$lang["sales_no_items_in_cart"] = "Sepette Ürün Yok";
$lang["sales_no_sales_to_display"] = "No sales to display";
$lang["sales_one_or_multiple"] = "";
$lang["sales_overview"] = "Overview";
$lang["sales_takings"] = "Takings";
$lang["sales_payment"] = "Ödeme Türü";
$lang["sales_payment_amount"] = "Tutar";
$lang["sales_payment_not_cover_total"] = "Ödemeler toplam tutarı karşılamıyor";
@@ -111,3 +111,4 @@ $lang["sales_unsuccessfully_updated"] = "Satış düzenlenemedi";
$lang["sales_unsuspend"] = "Satışa Al";
$lang["sales_unsuspend_and_delete"] = "";
$lang["sales_update"] = "Edit Sale";
$lang["sales_date_range"] = "Tarih Aralığı";

View File

@@ -67,7 +67,7 @@ $lang["sales_no_filter"] = "All";
$lang["sales_no_items_in_cart"] = "購物車中沒有任何產品";
$lang["sales_no_sales_to_display"] = "No sales to display";
$lang["sales_one_or_multiple"] = "";
$lang["sales_overview"] = "Overview";
$lang["sales_takings"] = "Takings";
$lang["sales_payment"] = "付款方式";
$lang["sales_payment_amount"] = "Amount";
$lang["sales_payment_not_cover_total"] = "付款金額不足";
@@ -111,3 +111,4 @@ $lang["sales_unsuccessfully_updated"] = "銷售資料更新失敗";
$lang["sales_unsuspend"] = "取消暫停銷售";
$lang["sales_unsuspend_and_delete"] = "取消暫停銷售並刪除";
$lang["sales_update"] = "Edit Sale";
$lang["sales_date_range"] = "日期範圍";

View File

@@ -19,15 +19,33 @@ class Sale extends CI_Model
}
// get the sales data for the takings table
public function get_data($inputs)
public function get_all($inputs)
{
$this->db->select('sale_id, sale_date, sale_time, SUM(quantity_purchased) AS items_purchased, CONCAT(employee.first_name," ",employee.last_name) AS employee_name,
$this->db->select('sale_id, sale_date, sale_time, SUM(quantity_purchased) AS items_purchased,
CONCAT(customer.first_name," ",customer.last_name) AS customer_name, SUM(subtotal) AS subtotal, SUM(total) AS total, SUM(tax) AS tax, SUM(cost) AS cost, SUM(profit) AS profit,
sale_payment_amount AS amount_tendered, total AS amount_due, (sale_payment_amount - total) AS change_due, payment_type, invoice_number', FALSE);
$this->db->from('sales_items_temp');
$this->db->join('people AS employee', 'sales_items_temp.employee_id = employee.person_id');
$this->db->join('people AS customer', 'sales_items_temp.customer_id = customer.person_id', 'left');
$this->db->where('sale_date BETWEEN '. $this->db->escape($inputs['start_date']). ' AND '. $this->db->escape($inputs['end_date']));
if (empty($inputs['search']))
{
$this->db->where('sale_date BETWEEN '. $this->db->escape($inputs['start_date']). ' AND '. $this->db->escape($inputs['end_date']));
}
else
{
if ($inputs['is_valid_receipt'])
{
$pieces = explode(' ',$inputs['search']);
$this->db->where('sales_items_temp.sale_id', $pieces[1]);
}
else
{
$this->db->like('last_name', $inputs['search']);
$this->db->or_like('first_name', $inputs['search']);
$this->db->or_like('CONCAT( customer.first_name, " ", last_name)', $inputs['search']);
}
}
if ($inputs['location_id'] != 'all')
{
@@ -56,23 +74,46 @@ class Sale extends CI_Model
$this->db->limit($inputs['lines_per_page'], $inputs['limit_from']);
}
$data = array();
$data['sales'] = $this->db->get()->result_array();
return $this->db->get()->result_array();
}
function get_payments_summary($inputs)
{
// get payment summary
$this->db->select('sales_payments.payment_type, count(*) as count, sum(payment_amount) as payment_amount', false);
$this->db->select('sales_payments.payment_type, count(*) as count, sum(payment_amount) as payment_amount', FALSE);
$this->db->from('sales_payments');
$this->db->join('sales_items_temp', 'sales_items_temp.sale_id=sales_payments.sale_id');
$this->db->where('date(sale_time) BETWEEN "'. $inputs['start_date']. '" AND "'. $inputs['end_date'].'"');
$this->db->join('people', 'people.person_id = sales_items_temp.sale_id', 'left');
if (empty($inputs['search']))
{
$this->db->where('sale_date BETWEEN '. $this->db->escape($inputs['start_date']). ' AND '. $this->db->escape($inputs['end_date']));
}
else
{
if ($inputs['is_valid_receipt'])
{
$pieces = explode(' ',$inputs['search']);
$this->db->where('sales_items_temp.sale_id', $pieces[1]);
}
else
{
$this->db->like('last_name', $inputs['search']);
$this->db->or_like('first_name', $inputs['search']);
$this->db->or_like('CONCAT( customer.first_name, " ", last_name)', $inputs['search']);
}
}
if ($inputs['sale_type'] == 'sales')
{
{
$this->db->where('payment_amount > 0');
}
elseif ($inputs['sale_type'] == 'returns')
{
}
elseif ($inputs['sale_type'] == 'returns')
{
$this->db->where('payment_amount < 0');
}
}
if ($inputs['only_invoices'] != FALSE)
{
@@ -82,12 +123,12 @@ class Sale extends CI_Model
$this->db->group_by("payment_type");
$payments = $this->db->get()->result_array();
// consider Gift Card as only one type of payment and do not show "Gift Card: 1, Gift Card: 2, etc." in the total
$gift_card_count = 0;
$gift_card_amount = 0;
foreach($payments as $key=>$payment)
{
{
if( strstr($payment['payment_type'], $this->lang->line('sales_giftcard')) != FALSE )
{
$gift_card_count += $payment['count'];
@@ -101,10 +142,8 @@ class Sale extends CI_Model
{
$payments[] = array('payment_type' => $this->lang->line('sales_giftcard'), 'count' => $gift_card_count, 'payment_amount' => $gift_card_amount);
}
$data['payments'] = $payments;
return $data;
return $payments;
}
function get_total_rows()
@@ -112,7 +151,33 @@ class Sale extends CI_Model
$this->db->from('sales');
return $this->db->count_all_results();
}
function get_search_suggestions($search,$limit=25)
{
$suggestions = array();
if (!$this->sale_lib->is_valid_receipt($search)) {
$this->db->distinct();
$this->db->select('first_name, last_name');
$this->db->from('sales');
$this->db->join('people', 'people.person_id = sales.customer_id');
$this->db->like('last_name', $search);
$this->db->or_like('first_name', $search);
$this->db->or_like('CONCAT( first_name, " ", last_name)', $search);
$this->db->order_by('last_name', "asc");
foreach($this->db->get()->result_array() as $result)
{
$suggestions[]=$result[ 'first_name' ].' '.$result[ 'last_name' ];
}
} else {
$suggestions[]=$search;
}
return $suggestions;
}
function get_invoice_count()
{
$this->db->from('sales');

View File

@@ -10,6 +10,7 @@
<?php if ($this->input->cookie('debug') == "true" || $this->input->get("debug") == "true") : ?>
<!-- start js template tags -->
<script type="text/javascript" src="js/jquery-1.8.3.js" language="javascript"></script>
<script type="text/javascript" src="js/jquery-ui-1.11.4.js" language="javascript"></script>
<script type="text/javascript" src="js/jquery.ajax_queue.js" language="javascript"></script>
<script type="text/javascript" src="js/jquery.autocomplete.js" language="javascript"></script>
<script type="text/javascript" src="js/jquery.bgiframe.min.js" language="javascript"></script>
@@ -21,7 +22,6 @@
<script type="text/javascript" src="js/jquery.validate-1.13.1-min.js" language="javascript"></script>
<script type="text/javascript" src="js/common.js" language="javascript"></script>
<script type="text/javascript" src="js/date.js" language="javascript"></script>
<script type="text/javascript" src="js/datepicker.js" language="javascript"></script>
<script type="text/javascript" src="js/imgpreview.full.jquery.js" language="javascript"></script>
<script type="text/javascript" src="js/manage_tables.js" language="javascript"></script>
<script type="text/javascript" src="js/nominatim.autocomplete.js" language="javascript"></script>

View File

@@ -16,7 +16,7 @@
<div class="field_row clearfix">
<?php echo form_label($this->lang->line('recvs_date').':', 'date', array('class'=>'required')); ?>
<div class='form_field'>
<?php echo form_input(array('name'=>'date','value'=>date('Y-m-d H:i:s', strtotime($receiving_info['receiving_time'])), 'id'=>'date'));?>
<?php echo form_input(array('name'=>'date','value'=>date($this->config->item('dateformat') . ' ' . $this->config->item('timeformat'), strtotime($receiving_info['receiving_time'])), 'class'=>'date'));?>
</div>
</div>

View File

@@ -15,8 +15,7 @@
<div class="field_row clearfix">
<?php echo form_label($this->lang->line('sales_date').':', 'date', array('class'=>'required')); ?>
<div class='form_field'>
<?php echo form_input(array('name'=>'date','value'=>date('Y-m-d H:i:s', strtotime($sale_info['sale_time'])), 'id'=>'date'));?>
<div class='form_field'><?php echo form_input(array('name'=>'date','value'=>date($this->config->item('dateformat') . ' ' . $this->config->item('timeformat'), strtotime($sale_info['sale_time'])), 'class'=>'date'));?>
</div>
</div>

View File

@@ -11,6 +11,7 @@ $(document).ready(function()
$("#search_filter_section #only_invoices").change(function() {
$('#search_form').submit();
$("#report_summary").hide();
return false;
});
@@ -23,6 +24,15 @@ $(document).ready(function()
$("#only_invoices").change(show_renumber);
show_renumber();
$(".date_filter").datepicker({onSelect: function(d,i){
if(d !== i.lastVal){
$(this).change();
}
}, dateFormat: "<?php echo dateformat_jquery($this->config->item('dateformat'));?>"}).change(function() {
$("#search_form").submit();
return false;
});
$("#update_invoice_numbers").click(function() {
$.ajax({url : "<?php echo site_url('sales') ?>/update_invoice_numbers", dataType: 'json', success : post_bulk_form_submit });
return false;
@@ -130,8 +140,8 @@ function init_table_sorting()
dateFormat: 'dd-mm-yyyy',
headers:
{
0: { sorter: false},
8: { sorter: false}
0: { sorter: 'datetime'},
8: { sorter: 'invoice_number'}
}
});
}
@@ -150,13 +160,22 @@ function init_table_sorting()
<?php echo form_open("$controller_name/search",array('id'=>'search_form')); ?>
<div id="search_filter_section" style="display: <?php echo isset($search_section_state)? ( ($search_section_state)? 'block' : 'none') : 'none';?>;background-color:#EEEEEE;">
<?php echo form_label($this->lang->line('sales_invoice_filter').' '.':', 'invoices_filter');?>
<?php echo form_checkbox(array('name'=>'only_invoices','id'=>'only_invoices','value'=>1,'checked'=> isset($only_invoices)? ( ($only_invoices)? 1 : 0) : 0));?>
<?php echo form_checkbox(array('name'=>'only_invoices','id'=>'only_invoices','value'=>1,'checked'=> isset($only_invoices)? ( ($only_invoices)? 1 : 0) : 0)) . ' | ';?>
<?php echo form_label($this->lang->line('sales_date_range').' :', 'start_date');?>
<?php echo form_input(array('name'=>'start_date','value'=>$start_date, 'class'=>'date_filter', 'type'=>'date', 'size' => '15'));?>
<?php echo form_label(' - ', 'end_date');?>
<?php echo form_input(array('name'=>'end_date','value'=>$end_date, 'class'=>'date_filter', 'type'=>'date', 'size' => '15'));?>
<input type="hidden" name="search_section_state" id="search_section_state" value="<?php echo isset($search_section_state)? ( ($search_section_state)? 'block' : 'none') : 'none';?>" />
</div>
<div id="table_action_header">
<ul>
<li class="float_left"><span><?php echo anchor($controller_name . "/delete",$this->lang->line("common_delete"),array('id'=>'delete')); ?></span></li>
<!-- li class="float_left"><span><?php echo anchor($controller_name . "/update_invoice_numbers", $this->lang->line('sales_invoice_update'),array('id'=>'update_invoice_numbers')); ?></span></li -->
<!-- li class="float_left"><span><?php echo anchor($controller_name . "/update_invoice_numbers", $this->lang->line('sales_invoice_update'),array('id'=>'update_invoice_numbers')); ?></span></li-->
<li class="float_right">
<img src='<?php echo base_url()?>images/spinner_small.gif' alt='spinner' id='spinner' />
<input type="text" name ='search' id='search'/>
<input type="hidden" name ='limit_from' id='limit_from'/>
</li>
</ul>
</div>
<?php echo form_close(); ?>

View File

@@ -26,7 +26,7 @@ if (isset($success))
<?php echo form_dropdown('stock_location',$stock_locations,$stock_location,'onchange="$(\'#mode_form\').submit();"'); ?>
<?php endif; ?>
<div id="sales_overview" class="small_button"><a href="<?=site_url($controller_name . '/manage')?>">
<span><?php echo $this->lang->line('sales_overview'); ?><span></a>
<span><?php echo $this->lang->line('sales_takings'); ?><span></a>
</div>
<div id="show_suspended_sales_button">
<?php echo anchor("sales/suspended/width:425",

View File

@@ -29,6 +29,7 @@
"jquery-form": "~3.46.0",
"jquery-validate": "~1.13.1",
"jquery": "1.8.3",
"jquery-ui": "1.11.4",
"swfobject": "*",
"thickbox": "~3.1.2"
}

258
css/jquery-ui.structure.css vendored Normal file
View File

@@ -0,0 +1,258 @@
/*!
* jQuery UI CSS Framework 1.11.4
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://api.jqueryui.com/category/theming/
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden {
display: none;
}
.ui-helper-hidden-accessible {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
.ui-helper-reset {
margin: 0;
padding: 0;
border: 0;
outline: 0;
line-height: 1.3;
text-decoration: none;
font-size: 100%;
list-style: none;
}
.ui-helper-clearfix:before,
.ui-helper-clearfix:after {
content: "";
display: table;
border-collapse: collapse;
}
.ui-helper-clearfix:after {
clear: both;
}
.ui-helper-clearfix {
min-height: 0; /* support: IE7 */
}
.ui-helper-zfix {
width: 100%;
height: 100%;
top: 0;
left: 0;
position: absolute;
opacity: 0;
filter:Alpha(Opacity=0); /* support: IE8 */
}
.ui-front {
z-index: 100;
}
/* Interaction Cues
----------------------------------*/
.ui-state-disabled {
cursor: default !important;
}
/* Icons
----------------------------------*/
/* states and images */
.ui-icon {
display: block;
text-indent: -99999px;
overflow: hidden;
background-repeat: no-repeat;
}
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.ui-datepicker {
width: 17em;
padding: .2em .2em 0;
display: none;
}
.ui-datepicker .ui-datepicker-header {
position: relative;
padding: .2em 0;
}
.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
position: absolute;
top: 2px;
width: 1.8em;
height: 1.8em;
}
.ui-datepicker .ui-datepicker-prev-hover,
.ui-datepicker .ui-datepicker-next-hover {
top: 1px;
}
.ui-datepicker .ui-datepicker-prev {
left: 2px;
}
.ui-datepicker .ui-datepicker-next {
right: 2px;
}
.ui-datepicker .ui-datepicker-prev-hover {
left: 1px;
}
.ui-datepicker .ui-datepicker-next-hover {
right: 1px;
}
.ui-datepicker .ui-datepicker-prev span,
.ui-datepicker .ui-datepicker-next span {
display: block;
position: absolute;
left: 50%;
margin-left: -8px;
top: 50%;
margin-top: -8px;
}
.ui-datepicker .ui-datepicker-title {
margin: 0 2.3em;
line-height: 1.8em;
text-align: center;
}
.ui-datepicker .ui-datepicker-title select {
font-size: 1em;
margin: 1px 0;
}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year {
width: 45%;
}
.ui-datepicker table {
width: 100%;
font-size: .9em;
border-collapse: collapse;
margin: 0 0 .4em;
}
.ui-datepicker th {
padding: .7em .3em;
text-align: center;
font-weight: bold;
border: 0;
}
.ui-datepicker td {
border: 0;
padding: 1px;
}
.ui-datepicker td span,
.ui-datepicker td a {
display: block;
padding: .2em;
text-align: right;
text-decoration: none;
}
.ui-datepicker .ui-datepicker-buttonpane {
background-image: none;
margin: .7em 0 0 0;
padding: 0 .2em;
border-left: 0;
border-right: 0;
border-bottom: 0;
}
.ui-datepicker .ui-datepicker-buttonpane button {
float: right;
margin: .5em .2em .4em;
cursor: pointer;
padding: .2em .6em .3em .6em;
width: auto;
overflow: visible;
}
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
float: left;
}
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi {
width: auto;
}
.ui-datepicker-multi .ui-datepicker-group {
float: left;
}
.ui-datepicker-multi .ui-datepicker-group table {
width: 95%;
margin: 0 auto .4em;
}
.ui-datepicker-multi-2 .ui-datepicker-group {
width: 50%;
}
.ui-datepicker-multi-3 .ui-datepicker-group {
width: 33.3%;
}
.ui-datepicker-multi-4 .ui-datepicker-group {
width: 25%;
}
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
border-left-width: 0;
}
.ui-datepicker-multi .ui-datepicker-buttonpane {
clear: left;
}
.ui-datepicker-row-break {
clear: both;
width: 100%;
font-size: 0;
}
/* RTL support */
.ui-datepicker-rtl {
direction: rtl;
}
.ui-datepicker-rtl .ui-datepicker-prev {
right: 2px;
left: auto;
}
.ui-datepicker-rtl .ui-datepicker-next {
left: 2px;
right: auto;
}
.ui-datepicker-rtl .ui-datepicker-prev:hover {
right: 1px;
left: auto;
}
.ui-datepicker-rtl .ui-datepicker-next:hover {
left: 1px;
right: auto;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane {
clear: right;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane button {
float: left;
}
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
.ui-datepicker-rtl .ui-datepicker-group {
float: right;
}
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
border-right-width: 0;
border-left-width: 1px;
}

410
css/jquery-ui.theme.css vendored Normal file
View File

@@ -0,0 +1,410 @@
/*!
* jQuery UI CSS Framework 1.11.4
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://api.jqueryui.com/category/theming/
*
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
*/
/* Component containers
----------------------------------*/
.ui-widget {
font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
font-size: 1.1em;
}
.ui-widget .ui-widget {
font-size: 1em;
}
.ui-widget input,
.ui-widget select,
.ui-widget textarea,
.ui-widget button {
font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
font-size: 1em;
}
.ui-widget-content {
border: 1px solid #dddddd;
background: #eeeeee url("../images/jquery-ui/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;
color: #333333;
}
.ui-widget-content a {
color: #333333;
}
.ui-widget-header {
border: 1px solid #e78f08;
background: #f6a828 url("../images/jquery-ui/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;
color: #ffffff;
font-weight: bold;
}
.ui-widget-header a {
color: #ffffff;
}
/* Interaction states
----------------------------------*/
.ui-state-default,
.ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default {
border: 1px solid #cccccc;
background: #f6f6f6 url("../images/jquery-ui/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;
font-weight: bold;
color: #1c94c4;
}
.ui-state-default a,
.ui-state-default a:link,
.ui-state-default a:visited {
color: #1c94c4;
text-decoration: none;
}
.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-widget-header .ui-state-hover,
.ui-state-focus,
.ui-widget-content .ui-state-focus,
.ui-widget-header .ui-state-focus {
border: 1px solid #fbcb09;
background: #fdf5ce url("../images/jquery-ui/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;
font-weight: bold;
color: #c77405;
}
.ui-state-hover a,
.ui-state-hover a:hover,
.ui-state-hover a:link,
.ui-state-hover a:visited,
.ui-state-focus a,
.ui-state-focus a:hover,
.ui-state-focus a:link,
.ui-state-focus a:visited {
color: #c77405;
text-decoration: none;
}
.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active {
border: 1px solid #fbd850;
background: #ffffff url("../images/jquery-ui/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
font-weight: bold;
color: #eb8f00;
}
.ui-state-active a,
.ui-state-active a:link,
.ui-state-active a:visited {
color: #eb8f00;
text-decoration: none;
}
/* Interaction Cues
----------------------------------*/
.ui-state-highlight,
.ui-widget-content .ui-state-highlight,
.ui-widget-header .ui-state-highlight {
border: 1px solid #fed22f;
background: #ffe45c url("../images/jquery-ui/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;
color: #363636;
}
.ui-state-highlight a,
.ui-widget-content .ui-state-highlight a,
.ui-widget-header .ui-state-highlight a {
color: #363636;
}
.ui-state-error,
.ui-widget-content .ui-state-error,
.ui-widget-header .ui-state-error {
border: 1px solid #cd0a0a;
background: #b81900 url("../images/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;
color: #ffffff;
}
.ui-state-error a,
.ui-widget-content .ui-state-error a,
.ui-widget-header .ui-state-error a {
color: #ffffff;
}
.ui-state-error-text,
.ui-widget-content .ui-state-error-text,
.ui-widget-header .ui-state-error-text {
color: #ffffff;
}
.ui-priority-primary,
.ui-widget-content .ui-priority-primary,
.ui-widget-header .ui-priority-primary {
font-weight: bold;
}
.ui-priority-secondary,
.ui-widget-content .ui-priority-secondary,
.ui-widget-header .ui-priority-secondary {
opacity: .7;
filter:Alpha(Opacity=70); /* support: IE8 */
font-weight: normal;
}
.ui-state-disabled,
.ui-widget-content .ui-state-disabled,
.ui-widget-header .ui-state-disabled {
opacity: .35;
filter:Alpha(Opacity=35); /* support: IE8 */
background-image: none;
}
.ui-state-disabled .ui-icon {
filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
}
/* Icons
----------------------------------*/
/* states and images */
.ui-icon {
width: 16px;
height: 16px;
}
.ui-icon,
.ui-widget-content .ui-icon {
background-image: url("../images/jquery-ui/ui-icons_222222_256x240.png");
}
.ui-widget-header .ui-icon {
background-image: url("../images/jquery-ui/ui-icons_ffffff_256x240.png");
}
.ui-state-default .ui-icon {
background-image: url("../images/jquery-ui/ui-icons_ef8c08_256x240.png");
}
.ui-state-hover .ui-icon,
.ui-state-focus .ui-icon {
background-image: url("../images/jquery-ui/ui-icons_ef8c08_256x240.png");
}
.ui-state-active .ui-icon {
background-image: url("../images/jquery-ui/ui-icons_ef8c08_256x240.png");
}
.ui-state-highlight .ui-icon {
background-image: url("../images/jquery-ui/ui-icons_228ef1_256x240.png");
}
.ui-state-error .ui-icon,
.ui-state-error-text .ui-icon {
background-image: url("../images/jquery-ui/ui-icons_ffd27a_256x240.png");
}
/* positioning */
.ui-icon-blank { background-position: 16px 16px; }
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-on { background-position: -96px -144px; }
.ui-icon-radio-off { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-all,
.ui-corner-top,
.ui-corner-left,
.ui-corner-tl {
border-top-left-radius: 4px;
}
.ui-corner-all,
.ui-corner-top,
.ui-corner-right,
.ui-corner-tr {
border-top-right-radius: 4px;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-left,
.ui-corner-bl {
border-bottom-left-radius: 4px;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-right,
.ui-corner-br {
border-bottom-right-radius: 4px;
}
/* Overlays */
.ui-widget-overlay {
background: #666666 url("../images/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;
opacity: .5;
filter: Alpha(Opacity=50); /* support: IE8 */
}
.ui-widget-shadow {
margin: -5px 0 0 -5px;
padding: 5px;
background: #000000 url("../images/jquery-ui/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;
opacity: .2;
filter: Alpha(Opacity=20); /* support: IE8 */
border-radius: 5px;
}

View File

@@ -9,6 +9,8 @@
@import url(thickbox.css);
@import url(datepicker.css);
@import url(invoice.css);
@import url(jquery-ui.structure.css);
@import url(jquery-ui.theme.css);
body
{

3601
dist/opensourcepos.js vendored
View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because one or more lines are too long

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 418 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

File diff suppressed because it is too large Load Diff

2383
js/jquery-ui-1.11.4.js vendored Normal file
View File

File diff suppressed because it is too large Load Diff

View File

@@ -26,7 +26,7 @@ describe("giftcard numbering test", function () {
});
it("issue #65: giftcard numbering should add properly", function() {
it.skip("issue #65: giftcard numbering should add properly", function() {
return this.browser.get(url("/index.php/giftcards")).waitForElementByCss(".big_button").click()
.waitForElementByName("value", 4000).type("100").elementById('giftcard_number').clear().type("10")
.elementById("submit").click().waitForElementByXPath("//table/tbody/tr[td/text()='10']/td[4]", 2000).text().then(function (value) {

View File

@@ -66,7 +66,7 @@ sales_no_filter,Alle,Todos,All,All,All,All,All,All,All
sales_no_items_in_cart,Er zijn geen aankopen geselecteerd,No hay artículos en el carrito,There are no items in the cart,Il n\'y a rien dans votre panier,購物車中沒有任何產品,Там нет товаров в корзине,ไม่พบสินค้าในตระกร้า,Sepette Ürün Yok,Tidak ada Item dalam Keranjang Belanja
sales_no_sales_to_display,Er werden geen aankopen gevonden,No hay ventas que mostrar,No sales to display,No sales to display,No sales to display,No sales to display,No sales to display,No sales to display,No sales to display
sales_one_or_multiple,aankopen verwijderd,venta(s),sale(s),,,,,,
sales_overview,Overzicht,Resumen,Overview,Overview,Overview,Overview,Overview,Overview,Overview
sales_takings,Overzicht,Resumen,Takings,Takings,Takings,Takings,Takings,Takings,Takings
sales_payment,Betaalmethode,Tipo de Pago,Payment Type,Type Paiement,付款方式,Вид оплаты,รูปแบบชำระเงิน,Ödeme Türü,Type Pembayaran
sales_payment_amount,Bedrag,Cantidad,Amount,Somme,Amount,количество,,Tutar,Amount
sales_payment_not_cover_total,Betaalde hoeveelheid is onvoldoende,La Cantidad Recibida no cubre el pago total,Payment Amount does not cover Total,Le Paiement ne couvre pas le Total,付款金額不足,оплачиваемая сумма недостаточно, ปริมาณการจ่ายที่ไม่เพียงพอกะยอดรวม,Ödemeler toplam tutarı karşılamıyor,Jumlah pembayaran tidak mencakup Total
@@ -110,3 +110,5 @@ sales_unsuccessfully_updated,Fout bij het bewaren van ticket,Ha fallado la actua
sales_unsuspend,Hervat,Retomar,Unsuspend,Débloquer,取消暫停銷售,Разблокировать,ยกเลิกการระงับ,Satışa Al,Batal Penangguhan
sales_unsuspend_and_delete,,Retomar y Borrar,,,取消暫停銷售並刪除,Разблокировать и удалить,ยกเลิกการระงับ และ ลบ,,Batalkan dan hapus penangguhan
sales_update,Bewerk Ticket,Editar Venta,Edit Sale,Edit Sale,Edit Sale,Edit Sale,Edit Sale,Edit Sale,Edit Sale
sales_date_range,Periode,Rango de Fecha,Date Range,Plage de dates,日期範圍,размах числа,ระหว่างวันที่,Tarih Aralığı,Rentang Tanggal
sales_none_selected,U hebt geen aankopen geselecteerd,No has seleccionado venta para editar,You have not selected any sales to delete,Vous n\\\'avez sélectionné aucun élément,您還沒有選擇任何產品進行編輯,Вы не выбрали ни одной товари для редактирования,กรุณาเลือสินค้าที่ต้องการแก้ไข,Düzenlemek için ürün seçmediniz,Anda belum memilih item untuk diubah
1 label nl-BE es en fr zh ru th tr id
66 sales_no_items_in_cart Er zijn geen aankopen geselecteerd No hay artículos en el carrito There are no items in the cart Il n\'y a rien dans votre panier 購物車中沒有任何產品 Там нет товаров в корзине ไม่พบสินค้าในตระกร้า Sepette Ürün Yok Tidak ada Item dalam Keranjang Belanja
67 sales_no_sales_to_display Er werden geen aankopen gevonden No hay ventas que mostrar No sales to display No sales to display No sales to display No sales to display No sales to display No sales to display No sales to display
68 sales_one_or_multiple aankopen verwijderd venta(s) sale(s)
69 sales_overview sales_takings Overzicht Resumen Overview Takings Overview Takings Overview Takings Overview Takings Overview Takings Overview Takings Overview Takings
70 sales_payment Betaalmethode Tipo de Pago Payment Type Type Paiement 付款方式 Вид оплаты รูปแบบชำระเงิน Ödeme Türü Type Pembayaran
71 sales_payment_amount Bedrag Cantidad Amount Somme Amount количество Tutar Amount
72 sales_payment_not_cover_total Betaalde hoeveelheid is onvoldoende La Cantidad Recibida no cubre el pago total Payment Amount does not cover Total Le Paiement ne couvre pas le Total 付款金額不足 оплачиваемая сумма недостаточно ปริมาณการจ่ายที่ไม่เพียงพอกะยอดรวม Ödemeler toplam tutarı karşılamıyor Jumlah pembayaran tidak mencakup Total
110 sales_unsuspend Hervat Retomar Unsuspend Débloquer 取消暫停銷售 Разблокировать ยกเลิกการระงับ Satışa Al Batal Penangguhan
111 sales_unsuspend_and_delete Retomar y Borrar 取消暫停銷售並刪除 Разблокировать и удалить ยกเลิกการระงับ และ ลบ Batalkan dan hapus penangguhan
112 sales_update Bewerk Ticket Editar Venta Edit Sale Edit Sale Edit Sale Edit Sale Edit Sale Edit Sale Edit Sale
113 sales_date_range Periode Rango de Fecha Date Range Plage de dates 日期範圍 размах числа ระหว่างวันที่ Tarih Aralığı Rentang Tanggal
114 sales_none_selected U hebt geen aankopen geselecteerd No has seleccionado venta para editar You have not selected any sales to delete Vous n\\\'avez sélectionné aucun élément 您還沒有選擇任何產品進行編輯 Вы не выбрали ни одной товари для редактирования กรุณาเลือสินค้าที่ต้องการแก้ไข Düzenlemek için ürün seçmediniz Anda belum memilih item untuk diubah