diff --git a/README.md b/README.md index d248e5c01..3f3a260fb 100644 --- a/README.md +++ b/README.md @@ -15,3 +15,10 @@ password:pointofsale 9. Enjoy A more extensive setup guide can be found at [this site](http://www.opensourceposguide.com/guide/gettingstarted/installation) + +If you like the project, and you are making money out of it on a daily basis, then consider to buy me a coffee so I can keep adding features. + + +[![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MUN6AEG7NY6H8) + +Or send some coins to **19kwPpAwrUTxbNEs5D6cRR1k4mf5HNa4v2** diff --git a/application/config/routes.php b/application/config/routes.php index 1047287a4..03120d02c 100644 --- a/application/config/routes.php +++ b/application/config/routes.php @@ -39,6 +39,7 @@ */ $route['default_controller'] = "login"; +$route['no_access/(:any)'] = "no_access/index/$1"; $route['no_access/(:any)/(:any)'] = "no_access/index/$1/$2"; $route['reports/(summary_:any)/(:any)/(:any)'] = "reports/$1/$2/$3"; $route['reports/summary_:any'] = "reports/date_input_excel_export"; diff --git a/application/controllers/config.php b/application/controllers/config.php index be3b8775d..e0359ffa3 100644 --- a/application/controllers/config.php +++ b/application/controllers/config.php @@ -10,17 +10,17 @@ class Config extends Secure_area function index() { $location_names = array(); - $locations = $this->Stock_locations->get_location_names(); - foreach($locations->result_array() as $array) - { - array_push($location_names, $array['location_name']); - } - $data['location_names'] = implode(',', $location_names); - $this->load->view("config", $data); + $stock_locations = $this->Stock_locations->get_all()->result_array(); + $this->load->view("config", array('stock_locations' => $stock_locations)); } function save() { + $barcode_labels = preg_replace('/^_|barcode_label_|_$/', '', implode('_', array( + $this->input->post('barcode_label_name'), + $this->input->post('barcode_label_price'), + $this->input->post('barcode_label_company') + ))); $batch_save_data=array( 'company'=>$this->input->post('company'), 'address'=>$this->input->post('address'), @@ -41,6 +41,8 @@ class Config extends Secure_area 'tax_included'=>$this->input->post('tax_included'), 'recv_invoice_format'=>$this->input->post('recv_invoice_format'), 'sales_invoice_format'=>$this->input->post('sales_invoice_format'), + 'barcode_labels'=>$barcode_labels, + 'barcode_content'=>$this->input->post('barcode_content'), 'custom1_name'=>$this->input->post('custom1_name'),/**GARRISON ADDED 4/20/2013**/ 'custom2_name'=>$this->input->post('custom2_name'),/**GARRISON ADDED 4/20/2013**/ 'custom3_name'=>$this->input->post('custom3_name'),/**GARRISON ADDED 4/20/2013**/ @@ -53,28 +55,49 @@ class Config extends Secure_area 'custom10_name'=>$this->input->post('custom10_name')/**GARRISON ADDED 4/20/2013**/ ); - $stock_locations = explode( ',', $this->input->post('stock_location')); - $stock_locations_trimmed=array(); - foreach($stock_locations as $location) + $deleted_locations = $this->Stock_locations->get_allowed_locations(); + foreach($this->input->post() as $key => $value) + { + if (strstr($key, 'stock_location')) + { + $location_id = preg_replace("/.*?_(\d+)$/", "$1", $key); + unset($deleted_locations[$location_id]); + // save or update + $location_data = array('location_name' => $value); + if ($this->Stock_locations->save($location_data, $location_id)) + { + $this->_clear_session_state(); + } + } + } + // all locations not available in post will be deleted now + foreach ($deleted_locations as $location_id => $location_name) { - array_push($stock_locations_trimmed, trim($location, ' ')); - } - $current_locations = $this->Stock_locations->concat_location_names()->location_names; - if ($this->input->post('stock_locations') != $current_locations) - { - $this->load->library('sale_lib'); - $this->sale_lib->clear_sale_location(); - $this->sale_lib->clear_all(); - $this->load->library('receiving_lib'); - $this->receiving_lib->clear_stock_source(); - $this->receiving_lib->clear_stock_destination(); - $this->receiving_lib->clear_all(); + $this->Stock_locations->delete($location_id); } - if( $this->Appconfig->batch_save( $batch_save_data ) && $this->Stock_locations->array_save($stock_locations_trimmed)) + if( $this->Appconfig->batch_save( $batch_save_data )) { echo json_encode(array('success'=>true,'message'=>$this->lang->line('config_saved_successfully'))); } + $this->_remove_duplicate_cookies(); + } + + function stock_locations() + { + $stock_locations = $this->Stock_locations->get_all()->result_array(); + $this->load->view('partial/stock_locations', array('stock_locations' => $stock_locations)); + } + + function _clear_session_state() + { + $this->load->library('sale_lib'); + $this->sale_lib->clear_sale_location(); + $this->sale_lib->clear_all(); + $this->load->library('receiving_lib'); + $this->receiving_lib->clear_stock_source(); + $this->receiving_lib->clear_stock_destination(); + $this->receiving_lib->clear_all(); } } ?> \ No newline at end of file diff --git a/application/controllers/employees.php b/application/controllers/employees.php index 698d132d7..d6d0c7527 100644 --- a/application/controllers/employees.php +++ b/application/controllers/employees.php @@ -69,7 +69,7 @@ class Employees extends Person_controller 'country'=>$this->input->post('country'), 'comments'=>$this->input->post('comments') ); - $grants_data = $this->input->post("grants")!=false ? $this->input->post("grants"):array(); + $grants_data = $this->input->post("grants")!=FALSE ? $this->input->post("grants"):array(); //Password has been changed OR first time password set if($this->input->post('password')!='') diff --git a/application/controllers/items.php b/application/controllers/items.php index cdae76145..0aec46ebc 100644 --- a/application/controllers/items.php +++ b/application/controllers/items.php @@ -25,6 +25,7 @@ class Items extends Secure_area implements iData_controller $data['form_width']=$this->get_form_width(); $data['manage_table']=get_items_manage_table( $this->Item->get_all( $stock_location, $config['per_page'], $this->uri->segment( $config['uri_segment'] ) ), $this ); $this->load->view('items/manage',$data); + $this->_remove_duplicate_cookies(); } function refresh() @@ -49,6 +50,7 @@ class Items extends Secure_area implements iData_controller $data['form_width']=$this->get_form_width(); $data['manage_table']=get_items_manage_table($this->Item->get_all_filtered($stock_location,$is_serialized,$no_description,$search_custom,$is_deleted),$this);//GARRISON MODIFIED 4/13/2013, Parq 131215 $this->load->view('items/manage',$data); + $this->_remove_duplicate_cookies(); } function find_item_info() @@ -63,6 +65,7 @@ class Items extends Secure_area implements iData_controller $stock_location=$this->item_lib->get_item_location(); $data_rows=get_items_manage_table_data_rows($this->Item->search($search,$stock_location),$this); echo $data_rows; + $this->_remove_duplicate_cookies(); } /* @@ -201,6 +204,7 @@ class Items extends Secure_area implements iData_controller $data_row=get_item_data_row($item_info,$this); echo $data_row; + $this->_remove_duplicate_cookies(); } function view($item_id=-1) @@ -271,7 +275,7 @@ class Items extends Secure_area implements iData_controller { $item_info = $this->Item->get_info($item_id); - $result[] = array('name' =>$item_info->name, 'id'=> $item_id); + $result[] = array('name' =>$item_info->name, 'id'=> $item_id, 'item_number'=> $item_info->item_number, 'unit_price'=>$item_info->unit_price); } $data['items'] = $result; diff --git a/application/controllers/no_access.php b/application/controllers/no_access.php index b64a7f6b9..9761c02af 100644 --- a/application/controllers/no_access.php +++ b/application/controllers/no_access.php @@ -9,7 +9,7 @@ class No_Access extends CI_Controller function index($module_id='',$permission_id='') { $data['module_name']=$this->Module->get_module_name($module_id); - $data['permission_id']=empty($permission_id)?$module_id:$permission_id; + $data['permission_id']=$permission_id; $this->load->view('no_access',$data); } } diff --git a/application/controllers/receivings.php b/application/controllers/receivings.php index 1c326b979..4b8f6a776 100644 --- a/application/controllers/receivings.php +++ b/application/controllers/receivings.php @@ -4,7 +4,7 @@ class Receivings extends Secure_area { function __construct() { - parent::__construct('receivings','items'); + parent::__construct('receivings'); $this->load->library('receiving_lib'); } diff --git a/application/controllers/sales.php b/application/controllers/sales.php index a5b735be2..897eede34 100644 --- a/application/controllers/sales.php +++ b/application/controllers/sales.php @@ -4,7 +4,7 @@ class Sales extends Secure_area { function __construct() { - parent::__construct('sales','items'); + parent::__construct('sales'); $this->load->library('sale_lib'); } diff --git a/application/language/en/config_lang.php b/application/language/en/config_lang.php index 1c45f8881..8549e3b8d 100644 --- a/application/language/en/config_lang.php +++ b/application/language/en/config_lang.php @@ -36,7 +36,15 @@ $lang["config_sales_invoice_format"] = "Sales Invoice Format"; $lang["config_saved_successfully"] = "Configuration saved successfully"; $lang["config_saved_unsuccessfully"] = "Configuration saved unsuccessfully"; $lang["config_stock_location"] = "Stock location"; +$lang["config_stock_location_duplicate"] = "Please use an unique location name"; $lang["config_stock_location_required"] = "Stock location number is a required field"; $lang["config_tax_included"] = "Tax Included"; $lang["config_timezone"] = "Timezone"; $lang["config_website"] = "Website"; +$lang["config_barcode_number"] = "UPC/EAN/ISBN"; +$lang["config_barcode_id"] = "Item Id/Name"; +$lang["config_barcode_content"] = "Barcode Content"; +$lang["config_barcode_labels"] = "Barcode Labels"; +$lang["config_barcode_name"] = "Name"; +$lang["config_barcode_price"] = "Price"; +$lang["config_barcode_company"] = "Company Name"; diff --git a/application/language/en/sales_lang.php b/application/language/en/sales_lang.php index 853fe66fe..87afbac18 100644 --- a/application/language/en/sales_lang.php +++ b/application/language/en/sales_lang.php @@ -5,7 +5,6 @@ $lang["sales_amount_due"] = "Amount Due"; $lang["sales_amount_tendered"] = "Amount Tendered"; $lang["sales_basic_information"] = "Sale information"; $lang["sales_cancel_sale"] = "Cancel Sale"; -$lang["sales_cannot_be_deleted"] = "Sale(s) could not be deleted"; $lang["sales_cash"] = "Cash"; $lang["sales_change_due"] = "Change Due"; $lang["sales_check"] = "Check"; @@ -27,7 +26,6 @@ $lang["sales_delete_successful"] = "You have successfully deleted a sale"; $lang["sales_delete_unsuccessful"] = "You have unsuccessfully deleted a sale"; $lang["sales_description_abbrv"] = "Desc"; $lang["sales_discount"] = "Disc %"; -$lang["sales_discount_included"] = ""; $lang["sales_discount_short"] = "%"; $lang["sales_edit"] = "Edit"; $lang["sales_edit_item"] = "Edit Item"; @@ -43,7 +41,6 @@ $lang["sales_id"] = "Sale ID"; $lang["sales_invoice_number"] = "Invoice #"; $lang["sales_invoice_number_duplicate"] = "Please enter an unique invoice number"; $lang["sales_item_insufficient_of_stock"] = "Item is Insufficient of Stock"; -$lang["sales_item_insufficient_of_stockfi"] = ""; $lang["sales_item_name"] = "Item Name"; $lang["sales_item_number"] = "Item #"; $lang["sales_item_out_of_stock"] = "Item is Out of Stock"; @@ -87,7 +84,7 @@ $lang["sales_tax_percent"] = "Tax %"; $lang["sales_total"] = "Total"; $lang["sales_transaction_failed"] = "Sales Transaction Failed"; $lang["sales_unable_to_add_item"] = "Unable to add item to sale"; -$lang["sales_unsuccessfully_deleted"] = ""; +$lang["sales_unsuccessfully_deleted"] = "Sale(s) could not be deleted"; $lang["sales_unsuccessfully_updated"] = "Sale unsuccessfully updated"; $lang["sales_unsuspend"] = "Unsuspend"; $lang["sales_unsuspend_and_delete"] = ""; diff --git a/application/language/es/config_lang.php b/application/language/es/config_lang.php index 19724dbb8..11d27728a 100644 --- a/application/language/es/config_lang.php +++ b/application/language/es/config_lang.php @@ -36,7 +36,15 @@ $lang["config_sales_invoice_format"] = ""; $lang["config_saved_successfully"] = "Configuración guardada satisfactoriamente"; $lang["config_saved_unsuccessfully"] = "Configuración no guardada"; $lang["config_stock_location"] = ""; +$lang["config_stock_location_duplicate"] = ""; $lang["config_stock_location_required"] = ""; $lang["config_tax_included"] = "Impuestos incluidos"; $lang["config_timezone"] = "Zona Horaria"; $lang["config_website"] = "Sitio Web"; +$lang["config_barcode_number"] = "UPC/EAN/ISBN"; +$lang["config_barcode_id"] = "Item Id/Name"; +$lang["config_barcode_content"] = "Barcode Content"; +$lang["config_barcode_labels"] = "Barcode Labels"; +$lang["config_barcode_name"] = "Name"; +$lang["config_barcode_price"] = "Price"; +$lang["config_barcode_company"] = "Nombre del Comercio"; diff --git a/application/language/es/sales_lang.php b/application/language/es/sales_lang.php index ad78afa02..390144889 100644 --- a/application/language/es/sales_lang.php +++ b/application/language/es/sales_lang.php @@ -5,7 +5,6 @@ $lang["sales_amount_due"] = "Debe"; $lang["sales_amount_tendered"] = "Cantidad Recibida"; $lang["sales_basic_information"] = "información sobre las entradas"; $lang["sales_cancel_sale"] = "Cancelar Venta"; -$lang["sales_cannot_be_deleted"] = ""; $lang["sales_cash"] = "Efectivo"; $lang["sales_change_due"] = "Cambio"; $lang["sales_check"] = "Cheque"; @@ -27,7 +26,6 @@ $lang["sales_delete_successful"] = "Has borrado satisfactoriamente una venta"; $lang["sales_delete_unsuccessful"] = "No he podido borrar la venta satisfactoriamente"; $lang["sales_description_abbrv"] = "Desc"; $lang["sales_discount"] = "Desc %"; -$lang["sales_discount_included"] = ""; $lang["sales_discount_short"] = "%"; $lang["sales_edit"] = "Editar"; $lang["sales_edit_item"] = "Editar Artículo"; @@ -40,10 +38,9 @@ $lang["sales_find_or_scan_item_or_receipt"] = "Encontrar/Escanear Artículo o En $lang["sales_giftcard"] = "Tarjeta de Regalo"; $lang["sales_giftcard_number"] = "Número de Tarjeta de Regalo"; $lang["sales_id"] = "ID de Venta"; -$lang["sales_invoice_number"] = ""; -$lang["sales_invoice_number_duplicate"] = ""; +$lang["sales_invoice_number"] = "Invoice #"; +$lang["sales_invoice_number_duplicate"] = "Please enter an unique invoice number"; $lang["sales_item_insufficient_of_stock"] = "Hay un número insuficiente de Artículos en existencia"; -$lang["sales_item_insufficient_of_stockfi"] = ""; $lang["sales_item_name"] = "Nombre del Artículo"; $lang["sales_item_number"] = "UPC/EAN/ISBN"; $lang["sales_item_out_of_stock"] = "El artículo está agotado"; diff --git a/application/language/fr/config_lang.php b/application/language/fr/config_lang.php index 27f7beb23..0e8999538 100644 --- a/application/language/fr/config_lang.php +++ b/application/language/fr/config_lang.php @@ -36,7 +36,15 @@ $lang["config_sales_invoice_format"] = ""; $lang["config_saved_successfully"] = "Configuration sauvegardée"; $lang["config_saved_unsuccessfully"] = "Échec de sauvegarde de configuration"; $lang["config_stock_location"] = ""; +$lang["config_stock_location_duplicate"] = ""; $lang["config_stock_location_required"] = ""; $lang["config_tax_included"] = ""; $lang["config_timezone"] = "Fuseau Horaire"; $lang["config_website"] = "Site-web"; +$lang["config_barcode_number"] = "UPC/EAN/ISBN"; +$lang["config_barcode_id"] = "Item Id/Name"; +$lang["config_barcode_content"] = "Barcode Content"; +$lang["config_barcode_labels"] = "Barcode Labels"; +$lang["config_barcode_name"] = "Name"; +$lang["config_barcode_price"] = "Price"; +$lang["config_barcode_company"] = "Nome de l\'Entreprise"; diff --git a/application/language/fr/sales_lang.php b/application/language/fr/sales_lang.php index 7faac9b05..27ea4f1ea 100644 --- a/application/language/fr/sales_lang.php +++ b/application/language/fr/sales_lang.php @@ -5,7 +5,6 @@ $lang["sales_amount_due"] = "Somme Due"; $lang["sales_amount_tendered"] = "Somme"; $lang["sales_basic_information"] = "Information de Vente"; $lang["sales_cancel_sale"] = "Annuler la Vente"; -$lang["sales_cannot_be_deleted"] = ""; $lang["sales_cash"] = "Cash"; $lang["sales_change_due"] = "Reste"; $lang["sales_check"] = "Cheque"; @@ -27,7 +26,6 @@ $lang["sales_delete_successful"] = "Suppréssion réussie"; $lang["sales_delete_unsuccessful"] = "Échec de suppression"; $lang["sales_description_abbrv"] = "Desc"; $lang["sales_discount"] = "% Remise"; -$lang["sales_discount_included"] = ""; $lang["sales_discount_short"] = "%"; $lang["sales_edit"] = "Éditer"; $lang["sales_edit_item"] = "Éditer Item"; @@ -40,10 +38,9 @@ $lang["sales_find_or_scan_item_or_receipt"] = "Trouver/Scanner Item OU Recu"; $lang["sales_giftcard"] = "Carte Cadeau"; $lang["sales_giftcard_number"] = "Numéro de Carte cadeau"; $lang["sales_id"] = "ID Vente"; -$lang["sales_invoice_number"] = ""; +$lang["sales_invoice_number"] = "Invoice #"; $lang["sales_invoice_number_duplicate"] = ""; $lang["sales_item_insufficient_of_stock"] = "Stock top faible"; -$lang["sales_item_insufficient_of_stockfi"] = ""; $lang["sales_item_name"] = "Nom"; $lang["sales_item_number"] = "# Item"; $lang["sales_item_out_of_stock"] = "Stock épuisé"; diff --git a/application/language/id/config_lang.php b/application/language/id/config_lang.php index 26169fb7d..d05225725 100644 --- a/application/language/id/config_lang.php +++ b/application/language/id/config_lang.php @@ -36,7 +36,15 @@ $lang["config_sales_invoice_format"] = ""; $lang["config_saved_successfully"] = "Konfigurasi berhasil disimpan"; $lang["config_saved_unsuccessfully"] = "Konfigurasi tidak berhasil disimpan"; $lang["config_stock_location"] = ""; +$lang["config_stock_location_duplicate"] = ""; $lang["config_stock_location_required"] = ""; $lang["config_tax_included"] = "Dikenakan Pajak"; $lang["config_timezone"] = "Zona Waktu"; $lang["config_website"] = "Situs Perusahaan"; +$lang["config_barcode_number"] = "UPC/EAN/ISBN"; +$lang["config_barcode_id"] = "Item Id/Name"; +$lang["config_barcode_content"] = "Barcode Content"; +$lang["config_barcode_labels"] = "Barcode Labels"; +$lang["config_barcode_name"] = "Name"; +$lang["config_barcode_price"] = "Price"; +$lang["config_barcode_company"] = "Nama Perusahaan"; diff --git a/application/language/id/sales_lang.php b/application/language/id/sales_lang.php index 306c82f48..6ac91256c 100644 --- a/application/language/id/sales_lang.php +++ b/application/language/id/sales_lang.php @@ -5,7 +5,6 @@ $lang["sales_amount_due"] = "Kembalian Uang"; $lang["sales_amount_tendered"] = "Nilai Pembayaran"; $lang["sales_basic_information"] = "Sale information"; $lang["sales_cancel_sale"] = "Batal Jual"; -$lang["sales_cannot_be_deleted"] = ""; $lang["sales_cash"] = "Tunai"; $lang["sales_change_due"] = "Kembalian Uang"; $lang["sales_check"] = "Cek"; @@ -27,7 +26,6 @@ $lang["sales_delete_successful"] = "Transaksi Penjualan berhasil dihapus"; $lang["sales_delete_unsuccessful"] = "Transaksi Penjualan tidak berhasil dihapus"; $lang["sales_description_abbrv"] = "Deskripsi"; $lang["sales_discount"] = "Diskon %"; -$lang["sales_discount_included"] = ""; $lang["sales_discount_short"] = "%"; $lang["sales_edit"] = "Ubah"; $lang["sales_edit_item"] = "Ubah Item"; @@ -43,7 +41,6 @@ $lang["sales_id"] = "ID Penjualan"; $lang["sales_invoice_number"] = ""; $lang["sales_invoice_number_duplicate"] = ""; $lang["sales_item_insufficient_of_stock"] = "Stok Item tidak mencukupi"; -$lang["sales_item_insufficient_of_stockfi"] = ""; $lang["sales_item_name"] = "Nama Item "; $lang["sales_item_number"] = "Item #"; $lang["sales_item_out_of_stock"] = "Item tidak ada stok"; diff --git a/application/language/nl-BE/config_lang.php b/application/language/nl-BE/config_lang.php index 2f32de352..ae8bd7f6a 100755 --- a/application/language/nl-BE/config_lang.php +++ b/application/language/nl-BE/config_lang.php @@ -35,8 +35,16 @@ $lang["config_sales_invoice_enable"] = ""; $lang["config_sales_invoice_format"] = ""; $lang["config_saved_successfully"] = "Configuratie werd bewaard"; $lang["config_saved_unsuccessfully"] = "Configuratie kon niet worden bewaard"; -$lang["config_stock_location"] = ""; -$lang["config_stock_location_required"] = ""; +$lang["config_stock_location"] = "Stock locatie"; +$lang["config_stock_location_duplicate"] = "Vul een unieke naam in"; +$lang["config_stock_location_required"] = "Naam van de stock locatie is een verplicht veld"; $lang["config_tax_included"] = "VAT Ingebgrepen"; $lang["config_timezone"] = "Tijdzone"; $lang["config_website"] = "Website"; +$lang["config_barcode_number"] = "UPC/EAN/ISBN"; +$lang["config_barcode_id"] = "Product id/naam"; +$lang["config_barcode_content"] = "Inhoud Barcode"; +$lang["config_barcode_labels"] = "Barcode Labels"; +$lang["config_barcode_name"] = "Productnaam"; +$lang["config_barcode_price"] = "Prijs"; +$lang["config_barcode_company"] = "Bedrijfsnaam"; diff --git a/application/language/nl-BE/sales_lang.php b/application/language/nl-BE/sales_lang.php index 5568c344e..247e8f43e 100755 --- a/application/language/nl-BE/sales_lang.php +++ b/application/language/nl-BE/sales_lang.php @@ -5,7 +5,6 @@ $lang["sales_amount_due"] = "Te betalen"; $lang["sales_amount_tendered"] = "Ontvangen bedrag"; $lang["sales_basic_information"] = "Ticket informatie"; $lang["sales_cancel_sale"] = "Annuleer"; -$lang["sales_cannot_be_deleted"] = ""; $lang["sales_cash"] = "Contant"; $lang["sales_change_due"] = "Wisselgeld terug"; $lang["sales_check"] = "Waardebon"; @@ -27,7 +26,6 @@ $lang["sales_delete_successful"] = "De geselecteerde aanko(o)p(en) werden verwij $lang["sales_delete_unsuccessful"] = "De geselecteerde aankopen konden niet worden verwijderd."; $lang["sales_description_abbrv"] = "Omschr."; $lang["sales_discount"] = "%"; -$lang["sales_discount_included"] = ""; $lang["sales_discount_short"] = "%"; $lang["sales_edit"] = "Bewerk"; $lang["sales_edit_item"] = "Bewaar"; @@ -41,9 +39,8 @@ $lang["sales_giftcard"] = "Cadeaubon"; $lang["sales_giftcard_number"] = "Cadeaubon nummer"; $lang["sales_id"] = "Nummer Verkoop "; $lang["sales_invoice_number"] = ""; -$lang["sales_invoice_number_duplicate"] = ""; -$lang["sales_item_insufficient_of_stock"] = ""; -$lang["sales_item_insufficient_of_stockfi"] = "Product is niet meer in voorraad"; +$lang["sales_invoice_number_duplicate"] = "Vul een unieke nummer in"; +$lang["sales_item_insufficient_of_stock"] = "Product is niet meer in voorraad"; $lang["sales_item_name"] = "Naam"; $lang["sales_item_number"] = "Product #"; $lang["sales_item_out_of_stock"] = "Product is niet meer in voorraad"; @@ -53,7 +50,7 @@ $lang["sales_must_enter_numeric_giftcard"] = "Er moet een geldige code worden in $lang["sales_new_customer"] = "Nieuwe klant"; $lang["sales_new_item"] = "Nieuw Product"; $lang["sales_no_items_in_cart"] = "Er zijn geen aankopen geselecteerd"; -$lang["sales_one_or_multiple"] = ""; +$lang["sales_one_or_multiple"] = "aankopen verwijderd"; $lang["sales_payment"] = "Betaalmethode"; $lang["sales_payment_amount"] = "Bedrag"; $lang["sales_payment_not_cover_total"] = "Betaalde hoeveelheid is onvoldoende"; @@ -74,9 +71,9 @@ $lang["sales_select_customer"] = "Selecteer Klant (Optioneel)"; $lang["sales_serial"] = "Nummer"; $lang["sales_start_typing_customer_name"] = "Typ naam klant..."; $lang["sales_start_typing_item_name"] = "Typ naam product of barcode..."; -$lang["sales_stock_location"] = ""; +$lang["sales_stock_location"] = "Stock locatie"; $lang["sales_sub_total"] = "Subtotaal excl. VAT"; -$lang["sales_successfully_deleted"] = ""; +$lang["sales_successfully_deleted"] = "Uw aankoop werd verwijded"; $lang["sales_successfully_suspended_sale"] = "Uw aankoop werd met sucess bewaard"; $lang["sales_successfully_updated"] = "Wijzigingen bewaard voor ticket"; $lang["sales_suspend_sale"] = "Bewaar aankoop"; @@ -87,7 +84,7 @@ $lang["sales_tax_percent"] = "VAT %"; $lang["sales_total"] = "Totaal"; $lang["sales_transaction_failed"] = "Transactie mislukt"; $lang["sales_unable_to_add_item"] = "Onmogelijk om product toe te voegen"; -$lang["sales_unsuccessfully_deleted"] = ""; +$lang["sales_unsuccessfully_deleted"] = "De aankoop kon niet verwijderd worden"; $lang["sales_unsuccessfully_updated"] = "Fout bij het bewaren van ticket"; $lang["sales_unsuspend"] = "Hervat"; $lang["sales_unsuspend_and_delete"] = ""; diff --git a/application/language/ru/config_lang.php b/application/language/ru/config_lang.php index ff9ecf171..9c0a93c88 100644 --- a/application/language/ru/config_lang.php +++ b/application/language/ru/config_lang.php @@ -36,7 +36,15 @@ $lang["config_sales_invoice_format"] = ""; $lang["config_saved_successfully"] = "Конфигурация успешно сохранена"; $lang["config_saved_unsuccessfully"] = "Конфигурация сохраненная безуспешно"; $lang["config_stock_location"] = ""; +$lang["config_stock_location_duplicate"] = ""; $lang["config_stock_location_required"] = ""; $lang["config_tax_included"] = "Tax Included"; $lang["config_timezone"] = "Часовой пояс"; $lang["config_website"] = "Веб-сайт"; +$lang["config_barcode_number"] = "UPC/EAN/ISBN"; +$lang["config_barcode_id"] = "Item Id/Name"; +$lang["config_barcode_content"] = "Barcode Content"; +$lang["config_barcode_labels"] = "Barcode Labels"; +$lang["config_barcode_name"] = "Name"; +$lang["config_barcode_price"] = "Price"; +$lang["config_barcode_company"] = "Название Компании"; diff --git a/application/language/ru/sales_lang.php b/application/language/ru/sales_lang.php index 08ac12d58..5edf8c28a 100644 --- a/application/language/ru/sales_lang.php +++ b/application/language/ru/sales_lang.php @@ -5,7 +5,6 @@ $lang["sales_amount_due"] = "Amount Due"; $lang["sales_amount_tendered"] = "предложенная сумма"; $lang["sales_basic_information"] = "информацию о билетах"; $lang["sales_cancel_sale"] = "Отменить продажу"; -$lang["sales_cannot_be_deleted"] = ""; $lang["sales_cash"] = "наличные деньги"; $lang["sales_change_due"] = "сдача должное"; $lang["sales_check"] = "банковский чек"; @@ -27,7 +26,6 @@ $lang["sales_delete_successful"] = "Вы успешно удален прода $lang["sales_delete_unsuccessful"] = "Вы безуспешно удален продаже"; $lang["sales_description_abbrv"] = "описание"; $lang["sales_discount"] = "скидка %"; -$lang["sales_discount_included"] = ""; $lang["sales_discount_short"] = "%"; $lang["sales_edit"] = "редактировать"; $lang["sales_edit_item"] = "Редактировать Товар"; @@ -43,7 +41,6 @@ $lang["sales_id"] = "Номер Продажы"; $lang["sales_invoice_number"] = ""; $lang["sales_invoice_number_duplicate"] = ""; $lang["sales_item_insufficient_of_stock"] = "Товар недостаточно на складе"; -$lang["sales_item_insufficient_of_stockfi"] = ""; $lang["sales_item_name"] = "Название товара"; $lang["sales_item_number"] = "Номер товара"; $lang["sales_item_out_of_stock"] = "Товар распродано"; diff --git a/application/language/th/config_lang.php b/application/language/th/config_lang.php index fcfeb212a..bb9376e3f 100644 --- a/application/language/th/config_lang.php +++ b/application/language/th/config_lang.php @@ -36,7 +36,15 @@ $lang["config_sales_invoice_format"] = "รหัสใบเสร็จ"; $lang["config_saved_successfully"] = "องค์ประกอบร้านค้าบันทึกเรียบร้อย"; $lang["config_saved_unsuccessfully"] = "องค์ประกอบร้านค้าบันทึกล้มเหลว"; $lang["config_stock_location"] = "สถานที่เก็บ"; +$lang["config_stock_location_duplicate"] = ""; $lang["config_stock_location_required"] = "จำเป็นต้องระบุสถานที่เก็บ"; $lang["config_tax_included"] = "รวมภาษีแล้ว"; $lang["config_timezone"] = "โซนเวลา"; $lang["config_website"] = "เว็บไซต์"; +$lang["config_barcode_number"] = "UPC/EAN/ISBN"; +$lang["config_barcode_id"] = "Item Id/Name"; +$lang["config_barcode_content"] = "Barcode Content"; +$lang["config_barcode_labels"] = "Barcode Labels"; +$lang["config_barcode_name"] = "Name"; +$lang["config_barcode_price"] = "Price"; +$lang["config_barcode_company"] = "ชื่อร้านค้า"; diff --git a/application/language/th/sales_lang.php b/application/language/th/sales_lang.php index 0b24472b9..c1ae9d1ab 100644 --- a/application/language/th/sales_lang.php +++ b/application/language/th/sales_lang.php @@ -5,7 +5,6 @@ $lang["sales_amount_due"] = ""; $lang["sales_amount_tendered"] = "จำนวนประมูล"; $lang["sales_basic_information"] = ""; $lang["sales_cancel_sale"] = "ยกเลิกการขาย"; -$lang["sales_cannot_be_deleted"] = ""; $lang["sales_cash"] = "เงินสด"; $lang["sales_change_due"] = "เงินทอน"; $lang["sales_check"] = "เช็ก"; @@ -27,7 +26,6 @@ $lang["sales_delete_successful"] = "คุณลบการขายสำเ $lang["sales_delete_unsuccessful"] = "คุณลบการขายไม่สำเร็จ"; $lang["sales_description_abbrv"] = "Desc"; $lang["sales_discount"] = "ส่วนลด %"; -$lang["sales_discount_included"] = ""; $lang["sales_discount_short"] = ""; $lang["sales_edit"] = "แก้ไข"; $lang["sales_edit_item"] = "แก้ไขสินค้า"; @@ -43,7 +41,6 @@ $lang["sales_id"] = "เลขที่ขาย"; $lang["sales_invoice_number"] = ""; $lang["sales_invoice_number_duplicate"] = ""; $lang["sales_item_insufficient_of_stock"] = "จำนวนสินค้าไม่เพียงพอ"; -$lang["sales_item_insufficient_of_stockfi"] = ""; $lang["sales_item_name"] = "ชื่อสินค้า"; $lang["sales_item_number"] = "สินค้า #"; $lang["sales_item_out_of_stock"] = "สินค้าจำหน่ายหมด"; diff --git a/application/language/tr/config_lang.php b/application/language/tr/config_lang.php index 3ce699c19..4caf3af3b 100644 --- a/application/language/tr/config_lang.php +++ b/application/language/tr/config_lang.php @@ -36,7 +36,15 @@ $lang["config_sales_invoice_format"] = ""; $lang["config_saved_successfully"] = "Yapılandırma kaydedildi"; $lang["config_saved_unsuccessfully"] = "Yapılandırma kaydedilemedi"; $lang["config_stock_location"] = "Mağaza Yeri"; +$lang["config_stock_location_duplicate"] = ""; $lang["config_stock_location_required"] = "Mağaza Yeri numarası zorunlu alandır"; $lang["config_tax_included"] = ""; $lang["config_timezone"] = "Saat Dilimi"; $lang["config_website"] = "Website"; +$lang["config_barcode_number"] = "UPC/EAN/ISBN"; +$lang["config_barcode_id"] = "Item Id/Name"; +$lang["config_barcode_content"] = "Barcode Content"; +$lang["config_barcode_labels"] = "Barcode Labels"; +$lang["config_barcode_name"] = "Name"; +$lang["config_barcode_price"] = "Price"; +$lang["config_barcode_company"] = "Şirket Adı"; diff --git a/application/language/tr/sales_lang.php b/application/language/tr/sales_lang.php index ecf7ad06b..64957bf9b 100644 --- a/application/language/tr/sales_lang.php +++ b/application/language/tr/sales_lang.php @@ -5,7 +5,6 @@ $lang["sales_amount_due"] = "Kalan Ödeme"; $lang["sales_amount_tendered"] = "Ödenen Tutar"; $lang["sales_basic_information"] = "Satış bilgisi"; $lang["sales_cancel_sale"] = "İptal Et"; -$lang["sales_cannot_be_deleted"] = ""; $lang["sales_cash"] = "Nakit"; $lang["sales_change_due"] = "Para Üstü"; $lang["sales_check"] = "Çek"; @@ -27,7 +26,6 @@ $lang["sales_delete_successful"] = "Satışı sildiniz"; $lang["sales_delete_unsuccessful"] = "Satışı silemediniz"; $lang["sales_description_abbrv"] = "Tanım"; $lang["sales_discount"] = "İndirim %"; -$lang["sales_discount_included"] = "% İndirim"; $lang["sales_discount_short"] = "%"; $lang["sales_edit"] = "Düzenle"; $lang["sales_edit_item"] = "Düzenle"; @@ -43,7 +41,6 @@ $lang["sales_id"] = "Satış No"; $lang["sales_invoice_number"] = ""; $lang["sales_invoice_number_duplicate"] = ""; $lang["sales_item_insufficient_of_stock"] = "Ürün Stoğu Yetersiz"; -$lang["sales_item_insufficient_of_stockfi"] = ""; $lang["sales_item_name"] = "Ürün Adı"; $lang["sales_item_number"] = "Ürün No"; $lang["sales_item_out_of_stock"] = "Ürün Stokta Yok"; diff --git a/application/language/zh/config_lang.php b/application/language/zh/config_lang.php index 7640b2950..8074e2492 100755 --- a/application/language/zh/config_lang.php +++ b/application/language/zh/config_lang.php @@ -36,7 +36,15 @@ $lang["config_sales_invoice_format"] = ""; $lang["config_saved_successfully"] = "組態設置儲存成功"; $lang["config_saved_unsuccessfully"] = "組態設置儲存失敗"; $lang["config_stock_location"] = ""; +$lang["config_stock_location_duplicate"] = ""; $lang["config_stock_location_required"] = ""; $lang["config_tax_included"] = "Tax Included"; $lang["config_timezone"] = "時區"; $lang["config_website"] = "網站"; +$lang["config_barcode_number"] = "UPC/EAN/ISBN"; +$lang["config_barcode_id"] = "Item Id/Name"; +$lang["config_barcode_content"] = "Barcode Content"; +$lang["config_barcode_labels"] = "Barcode Labels"; +$lang["config_barcode_name"] = "Name"; +$lang["config_barcode_price"] = "Price"; +$lang["config_barcode_company"] = "公司名稱"; diff --git a/application/language/zh/sales_lang.php b/application/language/zh/sales_lang.php index da43a4869..2bbd1f6bf 100755 --- a/application/language/zh/sales_lang.php +++ b/application/language/zh/sales_lang.php @@ -5,7 +5,6 @@ $lang["sales_amount_due"] = "Amount Due"; $lang["sales_amount_tendered"] = "已收帳款"; $lang["sales_basic_information"] = "Sale information"; $lang["sales_cancel_sale"] = "取消銷售"; -$lang["sales_cannot_be_deleted"] = ""; $lang["sales_cash"] = "現金"; $lang["sales_change_due"] = "更改到期日"; $lang["sales_check"] = "支票"; @@ -27,7 +26,6 @@ $lang["sales_delete_successful"] = "您已成功刪除銷售資料"; $lang["sales_delete_unsuccessful"] = "銷售資料刪除失敗"; $lang["sales_description_abbrv"] = "倒序"; $lang["sales_discount"] = "折扣 %"; -$lang["sales_discount_included"] = ""; $lang["sales_discount_short"] = "%"; $lang["sales_edit"] = "編輯"; $lang["sales_edit_item"] = "編輯產品"; @@ -43,7 +41,6 @@ $lang["sales_id"] = "銷售編號"; $lang["sales_invoice_number"] = ""; $lang["sales_invoice_number_duplicate"] = ""; $lang["sales_item_insufficient_of_stock"] = "產品庫存不足"; -$lang["sales_item_insufficient_of_stockfi"] = ""; $lang["sales_item_name"] = "產品名稱"; $lang["sales_item_number"] = "產品 #"; $lang["sales_item_out_of_stock"] = "產品缺貨"; diff --git a/application/models/sale.php b/application/models/sale.php index 361fd587f..58bbcf4b3 100644 --- a/application/models/sale.php +++ b/application/models/sale.php @@ -185,7 +185,7 @@ class Sale extends CI_Model 'trans_user'=>$employee_id, 'trans_comment'=>'Deleting sale ' . $sale_id, 'trans_location'=>$item['item_location'], - 'trans_inventory'=>$item['quantity_purchased']*-1 + 'trans_inventory'=>$item['quantity_purchased'] ); // update inventory @@ -194,7 +194,7 @@ class Sale extends CI_Model // update quantities $this->Item_quantities->change_quantity($item['item_id'], $item['item_location'], - $item['quantity_purchased']*-1); + $item['quantity_purchased']); } } // delete all items diff --git a/application/models/stock_locations.php b/application/models/stock_locations.php index 5fb4be464..2d3ab0220 100644 --- a/application/models/stock_locations.php +++ b/application/models/stock_locations.php @@ -1,13 +1,13 @@ db->from('stock_locations'); - $this->db->where('location_name',$location_name); + $this->db->where('location_id',$location_id); $query = $this->db->get(); - return ($query->num_rows()==1); + return ($query->num_rows()>=1); } function get_all($limit=10000, $offset=0) @@ -18,14 +18,6 @@ class Stock_locations extends CI_Model return $this->db->get(); } - function get_location_names() - { - $this->db->select('location_name'); - $this->db->from('stock_locations'); - $this->db->where('deleted', 0); - return $this->db->get(); - } - /* * returns all location-ids in a simple array like array (location_id, location_id, ...) * used in items-controller::do_excel_import @@ -45,14 +37,6 @@ class Stock_locations extends CI_Model return $ids_array; } - function concat_location_names() - { - $this->db->select('GROUP_CONCAT(location_name SEPARATOR\',\') AS location_names', FALSE); - $this->db->from('stock_locations'); - $this->db->where('deleted', 0); - return $this->db->get()->row(); - } - function get_undeleted_all() { $this->db->from('stock_locations'); @@ -92,61 +76,69 @@ class Stock_locations extends CI_Model return $this->db->get()->row()->location_name; } - function array_save($stock_locations) + function save(&$location_data,$location_id) { - $allowed_locations = $this->get_allowed_locations(); - // check for insertion - foreach ($stock_locations as $location_name) - { - if(!$this->exists($location_name)) - { - $this->db->trans_start(); - $location_data = array('location_name'=>$location_name,'deleted'=>0); - $this->db->insert('stock_locations',$location_data); - $location_id = $this->db->insert_id(); - - // insert new permission for stock location - $permission_id = 'items_'.$location_name; - $permission_data = array('permission_id'=>$permission_id,'module_id'=>'items','location_id' => $location_id); - $this->db->insert('permissions', $permission_data); - - // insert grants for new permission - $employees = $this->Employee->get_all(); - foreach ($employees->result_array() as $employee) - { - $grants_data = array('permission_id' => $permission_id, 'person_id' => $employee['person_id']); - $this->db->insert('grants', $grants_data); - } - - // insert quantities for existing items - $items = $this->Item->get_all(); - foreach ($items->result_array() as $item) - { - $quantity_data = array('item_id' => $item['item_id'], 'location_id' => $location_id, 'quantity' => 0); - $this->db->insert('item_quantities', $quantity_data); - } - $this->db->trans_complete(); - } - else if (!in_array($location_name, array_values($allowed_locations))) - { - $this->db->where('location_name', $location_name); - $this->db->update('stock_locations', array('deleted' => 0)); - } - } - - // check for deletion - foreach ($allowed_locations as $location_id => $location_name) - { - if (!in_array($location_name, $stock_locations)) - { - $this->db->where('location_id', $location_id); - $this->db->update('stock_locations', array('deleted' => 1)); - - $this->db->delete('permissions', array('permission_id' => 'items_'.$location_name)); - } - } - - return true; + if (!$this->exists($location_id)) + { + $location_name = $location_data['location_name']; + $this->db->trans_start(); + $location_data = array('location_name'=>$location_name,'deleted'=>0); + $this->db->insert('stock_locations',$location_data); + $location_id = $this->db->insert_id(); + + $this->_insert_new_permission('items', $location_id, $location_name); + $this->_insert_new_permission('sales', $location_id, $location_name); + $this->_insert_new_permission('receivings', $location_id, $location_name); + + + // insert quantities for existing items + $items = $this->Item->get_all(); + foreach ($items->result_array() as $item) + { + $quantity_data = array('item_id' => $item['item_id'], 'location_id' => $location_id, 'quantity' => 0); + $this->db->insert('item_quantities', $quantity_data); + } + $this->db->trans_complete(); + } + else + { + $this->db->where('location_id', $location_id); + return $this->db->update('stock_locations',$location_data); + } } + + function _insert_new_permission($module, $location_id, $location_name) + { + // insert new permission for stock location + $permission_id = $module."_".$location_name; + $permission_data = array('permission_id'=>$permission_id,'module_id'=>$module,'location_id' => $location_id); + $this->db->insert('permissions', $permission_data); + + // insert grants for new permission + $employees = $this->Employee->get_all(); + foreach ($employees->result_array() as $employee) + { + $grants_data = array('permission_id' => $permission_id, 'person_id' => $employee['person_id']); + $this->db->insert('grants', $grants_data); + } + + } + + /* + Deletes one item + */ + function delete($location_id) + { + $this->db->trans_start(); + $this->db->where('location_id', $location_id); + $this->db->update('stock_locations', array('deleted' => 1)); + + // should delete permissions and grants as well? + $this->db->where('location_id', $location_id); + $this->db->delete('permissions'); + $this->db->trans_complete(); + } + + } ?> \ No newline at end of file diff --git a/application/views/barcode_sheet.php b/application/views/barcode_sheet.php index eb196ebf4..d8e89addd 100644 --- a/application/views/barcode_sheet.php +++ b/application/views/barcode_sheet.php @@ -3,6 +3,12 @@ <?php echo $this->lang->line('items_generate_barcodes'); ?> + @@ -11,14 +17,28 @@ $count = 0; foreach($items as $item) { - $barcode = $item['id']; - $text = $item['name']; + $barcode = $this->config->item('barcode_content') === "id" ? $item['id'] : $item['item_number']; + $text = $this->config->item('barcode_content') === "id" ? $item['name'] : $item['item_number']; if ($count % 2 ==0 and $count!=0) { echo ''; } - echo ""; + echo ""; $count++; } ?> diff --git a/application/views/config.php b/application/views/config.php index fd722e88c..df840fe1d 100644 --- a/application/views/config.php +++ b/application/views/config.php @@ -259,14 +259,8 @@ echo form_open('config/save/',array('id'=>'config_form')); -
-lang->line('config_stock_location').':', 'stock_location',array('class'=>'required wide')); ?> -
- 'stock_location', - 'id'=>'stock_location', - 'value'=>$location_names)); ?> -
+
+ load->view('partial/stock_locations', array('stock_locations' => $stock_locations)); ?>
@@ -289,6 +283,43 @@ echo form_open('config/save/',array('id'=>'config_form'));
+
+lang->line('config_barcode_content').':', 'barcode_content',array('class'=>'wide')); ?> +
+ 'barcode_content', + 'value'=>'id', + 'checked'=>$this->config->item('barcode_content') === "id")); ?> + lang->line('config_barcode_id'); ?> + 'barcode_content', + 'value'=>'number', + 'checked'=>$this->config->item('barcode_content') === "number")); ?> + lang->line('config_barcode_number'); ?> +
+
+ +
+lang->line('config_barcode_labels').':', 'barcode_labels',array('class'=>'wide')); ?> +
+ 'barcode_label_company', + 'value'=>'barcode_label_company', + 'checked'=>strstr($this->config->item('barcode_labels'), 'company'))); ?> + lang->line('config_barcode_company'); ?> + 'barcode_label_name', + 'value'=>'barcode_label_name', + 'checked'=>strstr($this->config->item('barcode_labels'), 'name'))); ?> + lang->line('config_barcode_name'); ?> + 'barcode_label_price', + 'value'=>'barcode_label_price', + 'checked'=>strstr($this->config->item('barcode_labels'), 'price'))); ?> + lang->line('config_barcode_price'); ?> +
+
+
lang->line('config_print_after_sale').':', 'print_after_sale',array('class'=>'wide')); ?>
@@ -430,6 +461,60 @@ echo form_close(); //validation and submit handling $(document).ready(function() { + var location_count = ; + + var hide_show_remove = function() + { + if ($("input[name*='stock_location']").length > 1) + { + $(".remove_stock_location").show(); + } + else + { + $(".remove_stock_location").hide(); + } + }; + + hide_show_remove(); + + var add_stock_location = function() + { + var id = $(this).parent().find('input').attr('id'); + id = id.replace(/.*?_(\d+)$/g, "$1"); + var block = $(this).parent().clone(true); + var new_block = block.insertAfter($(this).parent()); + var new_block_id = 'stock_location_' + ++id; + $(new_block).find('label').html("lang->line('config_stock_location'); ?> " + ++location_count + ": ").attr('for', new_block_id); + $(new_block).find('input').attr('id', new_block_id).attr('name', new_block_id).val(''); + $('.add_stock_location', new_block).click(add_stock_location); + $('.remove_stock_location', new_block).click(remove_stock_location); + hide_show_remove(); + }; + + var remove_stock_location = function() + { + $(this).parent().remove(); + hide_show_remove(); + }; + + var init_add_remove_locations = function() + { + $('.add_stock_location').click(add_stock_location); + $('.remove_stock_location').click(remove_stock_location); + }; + init_add_remove_locations(); + + var duplicate_found = false; + // run validator once for all fields + $.validator.addMethod('stock_location' , function(value, element) + { + var value_count = 0; + $("input[name*='stock_location']").each(function() { + value_count = $(this).val() == value ? value_count + 1 : value_count; + }); + return value_count < 2; + }, "lang->line('config_stock_location_duplicate'); ?>"); + $('#config_form').validate({ submitHandler:function(form) { @@ -444,6 +529,7 @@ $(document).ready(function() { set_feedback(response.message,'error_message',true); } + $("#stock_locations").load('', init_add_remove_locations); }, dataType:'json' }); @@ -463,8 +549,10 @@ $(document).ready(function() }, email:"email", return_policy: "required", - stock_location:"required" - + stock_location: { + required:true, + stock_location: true + } }, messages: { @@ -478,8 +566,7 @@ $(document).ready(function() }, email: "lang->line('common_email_invalid_format'); ?>", return_policy:"lang->line('config_return_policy_required'); ?>", - stock_location:"lang->line('config_stock_location_required'); ?>" - + stock_location:"lang->line('config_stock_location_required'); ?>" } }); }); diff --git a/application/views/employees/form.php b/application/views/employees/form.php index 7f38f6b62..5951b6548 100644 --- a/application/views/employees/form.php +++ b/application/views/employees/form.php @@ -161,7 +161,8 @@ $(document).ready(function() { equalTo: "#password" }, - email: "email", "grants[]" : { + email: "email", + "grants[]" : { required : function(element) { var checked = false; $("ul#permission_list > li > input:checkbox").each(function() diff --git a/application/views/no_access.php b/application/views/no_access.php index 695f0843e..35d546e4d 100644 --- a/application/views/no_access.php +++ b/application/views/no_access.php @@ -1,3 +1,3 @@ lang->line('error_no_permission_module').' '.$module_name . ' (' . $permission_id . ')'; +echo $this->lang->line('error_no_permission_module').' '.$module_name . (!empty($permission_id) ? ' (' . $permission_id . ')' : ''); ?> \ No newline at end of file diff --git a/application/views/partial/stock_locations.php b/application/views/partial/stock_locations.php new file mode 100644 index 000000000..7c8f741fc --- /dev/null +++ b/application/views/partial/stock_locations.php @@ -0,0 +1,17 @@ + + $location_data ) { ?> + + + + diff --git a/database/2.3_to_2.3.1.sql b/database/2.3_to_2.3.1.sql index d3a3a6e49..93291b1c8 100644 --- a/database/2.3_to_2.3.1.sql +++ b/database/2.3_to_2.3.1.sql @@ -37,7 +37,14 @@ INSERT INTO `ospos_permissions` (`permission_id`, `module_id`) VALUES ('suppliers', 'suppliers'); -- add permissions for existing stock locations -INSERT INTO `ospos_permissions` (permission_id, module_id, location_id) (SELECT CONCAT('items_', location_name), 'items', location_id FROM ospos_stock_locations); +INSERT INTO `ospos_permissions` (permission_id, module_id, location_id) +(SELECT CONCAT('items_', location_name), 'items', location_id FROM ospos_stock_locations); + +INSERT INTO `ospos_permissions` (permission_id, module_id, location_id) +(SELECT CONCAT('sales_', location_name), 'sales', location_id FROM ospos_stock_locations); + +INSERT INTO `ospos_permissions` (permission_id, module_id, location_id) +(SELECT CONCAT('receivings_', location_name), 'receivings', location_id FROM ospos_stock_locations); CREATE TABLE `ospos_grants` ( `permission_id` varchar(255) NOT NULL, @@ -72,13 +79,17 @@ INSERT INTO `ospos_grants` (`permission_id`, `person_id`) VALUES ('sales', 1), ('config', 1), ('items_stock', 1), +('sales_stock', 1), +('receivings_stock', 1), ('suppliers', 1); -- add config options for tax inclusive sales INSERT INTO `ospos_app_config` (`key`, `value`) VALUES ('tax_included', '0'), ('recv_invoice_format', '$CO'), -('sales_invoice_format', '$CO'); +('sales_invoice_format', '$CO'), +('barcode_content', 'id'), +('barcode_labels', ''); -- add invoice_number column to receivings table ALTER TABLE `ospos_receivings` diff --git a/database/database.sql b/database/database.sql index 0a01f0b0a..67c53e136 100644 --- a/database/database.sql +++ b/database/database.sql @@ -39,7 +39,9 @@ INSERT INTO `ospos_app_config` (`key`, `value`) VALUES ('website', ''), ('recv_invoice_format', '$CO'), ('sales_invoice_format', '$CO'), -('tax_included', '0'); +('tax_included', '0'), +('barcode_content', 'id'), +('barcode_labels', ''); -- -------------------------------------------------------- @@ -343,8 +345,9 @@ INSERT INTO `ospos_permissions` (`permission_id`, `module_id`) VALUES ('suppliers', 'suppliers'); INSERT INTO `ospos_permissions` (`permission_id`, `module_id`, `location_id`) VALUES -('items_stock', 'items', 1); - +('items_stock', 'items', 1), +('sales_stock', 'sales', 1), +('receivings_stock', 'receivings', 1); -- -------------------------------------------------------- @@ -385,6 +388,8 @@ INSERT INTO `ospos_grants` (`permission_id`, `person_id`) VALUES ('sales', 1), ('config', 1), ('items_stock', 1), +('sales_stock', 1), +('receivings_stock', 1), ('suppliers', 1); -- @@ -651,7 +656,7 @@ CREATE TABLE `ospos_stock_locations` ( `location_name` varchar(255) CHARACTER SET utf8 DEFAULT NULL, `deleted` int(1) NOT NULL DEFAULT '0', PRIMARY KEY (`location_id`) -) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=0; +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; -- -- Dumping data for table `ospos_stock_locations` @@ -732,8 +737,8 @@ ALTER TABLE `ospos_permissions` -- Constraints for table `ospos_grants` -- ALTER TABLE `ospos_grants` - ADD CONSTRAINT `ospos_grants_ibfk_1` foreign key (`permission_id`) references `ospos_permissions` (`permission_id`), - ADD CONSTRAINT `ospos_grants_ibfk_2` foreign key (`person_id`) references `ospos_employees` (`person_id`); + ADD CONSTRAINT `ospos_grants_ibfk_1` foreign key (`permission_id`) references `ospos_permissions` (`permission_id`) ON DELETE CASCADE, + ADD CONSTRAINT `ospos_grants_ibfk_2` foreign key (`person_id`) references `ospos_employees` (`person_id`) ON DELETE CASCADE; -- -- Constraints for table `ospos_receivings` diff --git a/translations/config_lang.csv b/translations/config_lang.csv index a9c5a32ce..93309eddb 100644 --- a/translations/config_lang.csv +++ b/translations/config_lang.csv @@ -1,41 +1,49 @@ -"label","nl-BE","es","en","fr","zh","ru","th","tr","id" -"config_address","Adres","Dirección del Comercio","Company Address","Addresse","公司地址","Адрес Компании","ที่อยู่","Şirket Adresi","Alamat Perusahaan" -"config_address_required","Het adres van het bedrijf moet ingevuld worden","Dirección del Comercio es requerida","Company address is a required field","L\'adresse est requise","公司地址為必填","Адрес Компании обязательный пробел","ที่อยู่ต้องกรอก","Şirket Adresi zorunlu alandır","Alamat Perusahaan wajib diisi" -"config_company","Bedrijfsnaam","Nombre del Comercio","Company Name","Nome de l\'Entreprise","公司名稱","Название Компании","ชื่อร้านค้า","Şirket Adı","Nama Perusahaan" -"config_company_required","De bedrijfsnaam moet ingevuld worden","Nombre del Comercio es requerido","Company name is a required field","Le nom d\'entreprise est requis","公司名稱為必填","Имя Компании обязательный пробел","ชื่อร้านค้าต้องกรอก","Şirket Adı zorunlu alandır","Nama Perusahaan wajib diisi" -"config_company_website_url","De website van het bedrijf is geen geldige URL (http://...)","Sitio Web no es una URL estándard (http://...)","Company website is not a valid URL (http://...)","Le site web de l\'entreprise n\'est pas une URL valide (http://...)","公司網址格式錯誤 (http://...)","Веб-сайт Компании не является допустимым URL (http://...)","เว็บไซต์ร้านค้าไม่ถูกต้อง","website adresi yanlış (http://...)","Situs Perusahaan bukan URL yang benar(http://...)" -"config_currency_side","Rechterkant","Lado derecho","Right side","Symbole à droite","Right side","Правая сторона","ด้านขวา","Sağda","Sisi Kanan" -"config_currency_symbol","Valuta","Símbolo de divisa","Currency Symbol","Symbole Monétaire","貨幣符號","Символ валюты","ลัญลักษณ์สกุลเงิน","Para Birimi","Simbol Mata Uang" -"config_custom1","Custom Veld 1","Campo Libre 1","Custom Field 1","Champ Personnalisé 1","Custom Field 1","Изготовленный пробел 1","พื้นที่เพิ่มเติม 1","Özel Alan 1","Custom Field 1" -"config_custom10","Custom Veld 10","Campo Libre 10","Custom Field 10","Champ Personnalisé 10","Custom Field 10","Изготовленный пробел 10","พื้นที่เพิ่มเติม 10","Özel Alan 10","Custom Field 10" -"config_custom2","Custom Veld 2","Campo Libre 2","Custom Field 2","Champ Personnalisé 2","Custom Field 2","Изготовленный пробел 2","พื้นที่เพิ่มเติม 2","Özel Alan 2","Custom Field 2" -"config_custom3","Custom Veld 3","Campo Libre 3","Custom Field 3","Champ Personnalisé 3","Custom Field 3","Изготовленный пробел 3","พื้นที่เพิ่มเติม 3","Özel Alan 3","Custom Field 3" -"config_custom4","Custom Veld 4","Campo Libre 4","Custom Field 4","Champ Personnalisé 4","Custom Field 4","Изготовленный пробел 4","พื้นที่เพิ่มเติม 4","Özel Alan 4","Custom Field 4" -"config_custom5","Custom Veld 5","Campo Libre 5","Custom Field 5","Champ Personnalisé 5","Custom Field 5","Изготовленный пробел 5","พื้นที่เพิ่มเติม 5","Özel Alan 5","Custom Field 5" -"config_custom6","Custom Veld 6","Campo Libre 6","Custom Field 6","Champ Personnalisé 6","Custom Field 6","Изготовленный пробел 6","พื้นที่เพิ่มเติม 6","Özel Alan 6","Custom Field 6" -"config_custom7","Custom Veld 7","Campo Libre 7","Custom Field 7","Champ Personnalisé 7","Custom Field 7","Изготовленный пробел 7","พื้นที่เพิ่มเติม 7","Özel Alan 7","Custom Field 7" -"config_custom8","Custom Veld 8","Campo Libre 8","Custom Field 8","Champ Personnalisé 8","Custom Field 8","Изготовленный пробел 8","พื้นที่เพิ่มเติม 8","Özel Alan 8","Custom Field 8" -"config_custom9","Custom Veld 9","Campo Libre 9","Custom Field 9","Champ Personnalisé 9","Custom Field 9","Изготовленный пробел 9","พื้นที่เพิ่มเติม 9","Özel Alan 9","Custom Field 9" -"config_default_tax_rate","Standaard VAT %","% de Impuestos Predeterminada","Default Tax Rate %","Taux d\'Imposition par Défaut","預設稅率 %","Обычный ставка налога %","อัตราภาษีโดยปริยาย %","Varsayılan Vergi Oranı %","Tarif Pajak Biasa%" -"config_default_tax_rate_1","VAT 1 %","Impuesto 1","Tax 1 Rate","Taux d\'Imposition 1","稅率 1","ставка налога 1","อัตราภาษี 1","Vergi Oranı 1","Tarif Pajak 1" -"config_default_tax_rate_2","VAT 2 %","Impuesto 2","Tax 2 Rate","Taux d\'Imposition 2","稅率 2","ставка налога 2","อัตราภาษี 2","Vergi Oranı 2","Tarif Pajak 2" -"config_default_tax_rate_number","Het percentage VAT moet een nummer zijn","El Impuesto Predeterminado debe ser un número","The default tax rate must be a number","Le taux d\'imposition doit etre un nombre","預設稅率必需為數字","Обычный ставка налога должен быть цифра","อัตราภาษีเริ่มต้นต้องเป็นตัวเลข","Varsayılan Vergi Oranı sayı olmalıdır","Tarif Pajak Biasa harus angka" -"config_default_tax_rate_required","Het percentage VAT moet ingevuld worden","El Impuesto Predeterminado es requerido","The default tax rate is a required field","Le taux d\'imposition par défaut est requis","預設稅率為必填","Обычный ставка налога обязательный пробел","อัตราภาษีเริ่มต้นต้องกรอก","Varsayılan Vergi Oranı zorunlu alandır","Tarif Pajak Biasa wajib diisi" -"config_fax","Fax","Fax","Fax","Fax","傳真","Факс","แฟ็กซ์","Faks","Fax" -"config_info","Configuratie Informatie","Información del Comercio","Store Configuration Information","Çonfiguration de l\'Entreprise","儲存組態","информация о магазин конфигурация","ข้อมูลร้านค้า","Mağaza yapılandırma bilgisi","Informasi Konfigurasi Toko" -"config_language","Taal","Idioma","Language","Langue","語言","Язик","ภาษา","Dil","Bahasa" -"config_phone","Telefoon","Teléfono del Comercio","Company Phone","Téléphone","電話","Телефон Компании","เบอร์โทรศัพท์","Şirket Telefonu","Telepon Perusahaan" -"config_phone_required","De telefoonnummer van het bedrijf moet ingevuld worden","Teléfono del Comercio es requerido","Company phone is a required field","Le numéro de téléphone est requis","公司電話為必填","Телефон Компании обязательный пробел","เบอร์โทรต้องกรอก","Şirket Telefonu zorunlu alandır","Telepon Perusahaan wajib diisi" -"config_print_after_sale","Druk ticket na verkoop","Imprimir recibo después de una venta","Print receipt after sale","Imprimer un recu après vente","出貨時打印收據","Распечатать квитанцию ​​после продажи","พิมพ์บิลหลังการขาย","Satıştan sonra yazdır","Cetak Faktur setelah penjualan" -"config_recv_invoice_enable","","","Enable Orders Invoice#","","","","หมายเลขใบแจ้งหนี้","","" -"config_recv_invoice_format","","","Receivings Invoice Format","","","","รหัสใบแจ้งหนี้","","" -"config_return_policy_required","De retourvoorwaarden moeten ingevuld worden","Política de Devolución es requerida","Return policy is a required field","Le Message est un champ requis","退換貨政策為必填","Возвратний полис обязательный пробел","กฎการคืนของต้องกรอก","İade Politikası zorunlu alandır","Kebijakan retur wajib diisi" -"config_sales_invoice_enable","","","Enable Sales Invoice#","","","","หมายเลขใบแจ้งหนี้","","" -"config_sales_invoice_format","","","Sales Invoice Format","","","","รหัสใบเสร็จ","","" -"config_saved_successfully","Configuratie werd bewaard","Configuración guardada satisfactoriamente","Configuration saved successfully","Configuration sauvegardée","組態設置儲存成功","Конфигурация успешно сохранена","องค์ประกอบร้านค้าบันทึกเรียบร้อย","Yapılandırma kaydedildi","Konfigurasi berhasil disimpan" -"config_saved_unsuccessfully","Configuratie kon niet worden bewaard","Configuración no guardada","Configuration saved unsuccessfully","Échec de sauvegarde de configuration","組態設置儲存失敗","Конфигурация сохраненная безуспешно","องค์ประกอบร้านค้าบันทึกล้มเหลว","Yapılandırma kaydedilemedi","Konfigurasi tidak berhasil disimpan" -"config_stock_location","","","Stock location","","","","สถานที่เก็บ","Mağaza Yeri","" -"config_stock_location_required","","","Stock location number is a required field","","","","จำเป็นต้องระบุสถานที่เก็บ","Mağaza Yeri numarası zorunlu alandır","" -"config_tax_included","VAT Ingebgrepen","Impuestos incluidos","Tax Included","","Tax Included","Tax Included","รวมภาษีแล้ว","","Dikenakan Pajak" -"config_timezone","Tijdzone","Zona Horaria","Timezone","Fuseau Horaire","時區","Часовой пояс","โซนเวลา","Saat Dilimi","Zona Waktu" -"config_website","Website","Sitio Web","Website","Site-web","網站","Веб-сайт","เว็บไซต์","Website","Situs Perusahaan" +label,nl-BE,es,en,fr,zh,ru,th,tr,id +config_address,Adres,Dirección del Comercio,Company Address,Addresse,公司地址,Адрес Компании,ที่อยู่,Şirket Adresi,Alamat Perusahaan +config_address_required,Het adres van het bedrijf moet ingevuld worden,Dirección del Comercio es requerida,Company address is a required field,L\'adresse est requise,公司地址為必填,Адрес Компании обязательный пробел,ที่อยู่ต้องกรอก,Şirket Adresi zorunlu alandır,Alamat Perusahaan wajib diisi +config_company,Bedrijfsnaam,Nombre del Comercio,Company Name,Nome de l\'Entreprise,公司名稱,Название Компании,ชื่อร้านค้า,Şirket Adı,Nama Perusahaan +config_company_required,De bedrijfsnaam moet ingevuld worden,Nombre del Comercio es requerido,Company name is a required field,Le nom d\'entreprise est requis,公司名稱為必填,Имя Компании обязательный пробел,ชื่อร้านค้าต้องกรอก,Şirket Adı zorunlu alandır,Nama Perusahaan wajib diisi +config_company_website_url,De website van het bedrijf is geen geldige URL (http://...),Sitio Web no es una URL estándard (http://...),Company website is not a valid URL (http://...),Le site web de l\'entreprise n\'est pas une URL valide (http://...),公司網址格式錯誤 (http://...),Веб-сайт Компании не является допустимым URL (http://...),เว็บไซต์ร้านค้าไม่ถูกต้อง,website adresi yanlış (http://...),Situs Perusahaan bukan URL yang benar(http://...) +config_currency_side,Rechterkant,Lado derecho,Right side,Symbole à droite,Right side,Правая сторона,ด้านขวา,Sağda,Sisi Kanan +config_currency_symbol,Valuta,Símbolo de divisa,Currency Symbol,Symbole Monétaire,貨幣符號,Символ валюты,ลัญลักษณ์สกุลเงิน,Para Birimi,Simbol Mata Uang +config_custom1,Custom Veld 1,Campo Libre 1,Custom Field 1,Champ Personnalisé 1,Custom Field 1,Изготовленный пробел 1,พื้นที่เพิ่มเติม 1,Özel Alan 1,Custom Field 1 +config_custom10,Custom Veld 10,Campo Libre 10,Custom Field 10,Champ Personnalisé 10,Custom Field 10,Изготовленный пробел 10,พื้นที่เพิ่มเติม 10,Özel Alan 10,Custom Field 10 +config_custom2,Custom Veld 2,Campo Libre 2,Custom Field 2,Champ Personnalisé 2,Custom Field 2,Изготовленный пробел 2,พื้นที่เพิ่มเติม 2,Özel Alan 2,Custom Field 2 +config_custom3,Custom Veld 3,Campo Libre 3,Custom Field 3,Champ Personnalisé 3,Custom Field 3,Изготовленный пробел 3,พื้นที่เพิ่มเติม 3,Özel Alan 3,Custom Field 3 +config_custom4,Custom Veld 4,Campo Libre 4,Custom Field 4,Champ Personnalisé 4,Custom Field 4,Изготовленный пробел 4,พื้นที่เพิ่มเติม 4,Özel Alan 4,Custom Field 4 +config_custom5,Custom Veld 5,Campo Libre 5,Custom Field 5,Champ Personnalisé 5,Custom Field 5,Изготовленный пробел 5,พื้นที่เพิ่มเติม 5,Özel Alan 5,Custom Field 5 +config_custom6,Custom Veld 6,Campo Libre 6,Custom Field 6,Champ Personnalisé 6,Custom Field 6,Изготовленный пробел 6,พื้นที่เพิ่มเติม 6,Özel Alan 6,Custom Field 6 +config_custom7,Custom Veld 7,Campo Libre 7,Custom Field 7,Champ Personnalisé 7,Custom Field 7,Изготовленный пробел 7,พื้นที่เพิ่มเติม 7,Özel Alan 7,Custom Field 7 +config_custom8,Custom Veld 8,Campo Libre 8,Custom Field 8,Champ Personnalisé 8,Custom Field 8,Изготовленный пробел 8,พื้นที่เพิ่มเติม 8,Özel Alan 8,Custom Field 8 +config_custom9,Custom Veld 9,Campo Libre 9,Custom Field 9,Champ Personnalisé 9,Custom Field 9,Изготовленный пробел 9,พื้นที่เพิ่มเติม 9,Özel Alan 9,Custom Field 9 +config_default_tax_rate,Standaard VAT %,% de Impuestos Predeterminada,Default Tax Rate %,Taux d\'Imposition par Défaut,預設稅率 %,Обычный ставка налога %,อัตราภาษีโดยปริยาย %,Varsayılan Vergi Oranı %,Tarif Pajak Biasa% +config_default_tax_rate_1,VAT 1 %,Impuesto 1,Tax 1 Rate,Taux d\'Imposition 1,稅率 1,ставка налога 1,อัตราภาษี 1,Vergi Oranı 1,Tarif Pajak 1 +config_default_tax_rate_2,VAT 2 %,Impuesto 2,Tax 2 Rate,Taux d\'Imposition 2,稅率 2,ставка налога 2,อัตราภาษี 2,Vergi Oranı 2,Tarif Pajak 2 +config_default_tax_rate_number,Het percentage VAT moet een nummer zijn,El Impuesto Predeterminado debe ser un número,The default tax rate must be a number,Le taux d\'imposition doit etre un nombre,預設稅率必需為數字,Обычный ставка налога должен быть цифра,อัตราภาษีเริ่มต้นต้องเป็นตัวเลข,Varsayılan Vergi Oranı sayı olmalıdır,Tarif Pajak Biasa harus angka +config_default_tax_rate_required,Het percentage VAT moet ingevuld worden,El Impuesto Predeterminado es requerido,The default tax rate is a required field,Le taux d\'imposition par défaut est requis,預設稅率為必填,Обычный ставка налога обязательный пробел,อัตราภาษีเริ่มต้นต้องกรอก,Varsayılan Vergi Oranı zorunlu alandır,Tarif Pajak Biasa wajib diisi +config_fax,Fax,Fax,Fax,Fax,傳真,Факс,แฟ็กซ์,Faks,Fax +config_info,Configuratie Informatie,Información del Comercio,Store Configuration Information,Çonfiguration de l\'Entreprise,儲存組態,информация о магазин конфигурация,ข้อมูลร้านค้า,Mağaza yapılandırma bilgisi,Informasi Konfigurasi Toko +config_language,Taal,Idioma,Language,Langue,語言,Язик,ภาษา,Dil,Bahasa +config_phone,Telefoon,Teléfono del Comercio,Company Phone,Téléphone,電話,Телефон Компании,เบอร์โทรศัพท์,Şirket Telefonu,Telepon Perusahaan +config_phone_required,De telefoonnummer van het bedrijf moet ingevuld worden,Teléfono del Comercio es requerido,Company phone is a required field,Le numéro de téléphone est requis,公司電話為必填,Телефон Компании обязательный пробел,เบอร์โทรต้องกรอก,Şirket Telefonu zorunlu alandır,Telepon Perusahaan wajib diisi +config_print_after_sale,Druk ticket na verkoop,Imprimir recibo después de una venta,Print receipt after sale,Imprimer un recu après vente,出貨時打印收據,Распечатать квитанцию ​​после продажи,พิมพ์บิลหลังการขาย,Satıştan sonra yazdır,Cetak Faktur setelah penjualan +config_recv_invoice_enable,,,Enable Orders Invoice#,,,,หมายเลขใบแจ้งหนี้,, +config_recv_invoice_format,,,Receivings Invoice Format,,,,รหัสใบแจ้งหนี้,, +config_return_policy_required,De retourvoorwaarden moeten ingevuld worden,Política de Devolución es requerida,Return policy is a required field,Le Message est un champ requis,退換貨政策為必填,Возвратний полис обязательный пробел,กฎการคืนของต้องกรอก,İade Politikası zorunlu alandır,Kebijakan retur wajib diisi +config_sales_invoice_enable,,,Enable Sales Invoice#,,,,หมายเลขใบแจ้งหนี้,, +config_sales_invoice_format,,,Sales Invoice Format,,,,รหัสใบเสร็จ,, +config_saved_successfully,Configuratie werd bewaard,Configuración guardada satisfactoriamente,Configuration saved successfully,Configuration sauvegardée,組態設置儲存成功,Конфигурация успешно сохранена,องค์ประกอบร้านค้าบันทึกเรียบร้อย,Yapılandırma kaydedildi,Konfigurasi berhasil disimpan +config_saved_unsuccessfully,Configuratie kon niet worden bewaard,Configuración no guardada,Configuration saved unsuccessfully,Échec de sauvegarde de configuration,組態設置儲存失敗,Конфигурация сохраненная безуспешно,องค์ประกอบร้านค้าบันทึกล้มเหลว,Yapılandırma kaydedilemedi,Konfigurasi tidak berhasil disimpan +config_stock_location,Stock locatie,,Stock location,,,,สถานที่เก็บ,Mağaza Yeri, +config_stock_location_duplicate,Vul een unieke naam in,,Please use an unique location name,,,,,, +config_stock_location_required,Naam van de stock locatie is een verplicht veld,,Stock location number is a required field,,,,จำเป็นต้องระบุสถานที่เก็บ,Mağaza Yeri numarası zorunlu alandır, +config_tax_included,VAT Ingebgrepen,Impuestos incluidos,Tax Included,,Tax Included,Tax Included,รวมภาษีแล้ว,,Dikenakan Pajak +config_timezone,Tijdzone,Zona Horaria,Timezone,Fuseau Horaire,時區,Часовой пояс,โซนเวลา,Saat Dilimi,Zona Waktu +config_website,Website,Sitio Web,Website,Site-web,網站,Веб-сайт,เว็บไซต์,Website,Situs Perusahaan +config_barcode_number,UPC/EAN/ISBN,UPC/EAN/ISBN,UPC/EAN/ISBN,UPC/EAN/ISBN,UPC/EAN/ISBN,UPC/EAN/ISBN,UPC/EAN/ISBN,UPC/EAN/ISBN,UPC/EAN/ISBN +config_barcode_id,Product id/naam,Item Id/Name,Item Id/Name,Item Id/Name,Item Id/Name,Item Id/Name,Item Id/Name,Item Id/Name,Item Id/Name +config_barcode_content,Inhoud Barcode,Barcode Content,Barcode Content,Barcode Content,Barcode Content,Barcode Content,Barcode Content,Barcode Content,Barcode Content +config_barcode_labels,Barcode Labels,Barcode Labels,Barcode Labels,Barcode Labels,Barcode Labels,Barcode Labels,Barcode Labels,Barcode Labels,Barcode Labels +config_barcode_name,Productnaam,Name,Name,Name,Name,Name,Name,Name,Name +config_barcode_price,Prijs,Price,Price,Price,Price,Price,Price,Price,Price +config_barcode_company,Bedrijfsnaam,Nombre del Comercio,Company Name,Nome de l\'Entreprise,公司名稱,Название Компании,ชื่อร้านค้า,Şirket Adı,Nama Perusahaan diff --git a/translations/sales_lang.csv b/translations/sales_lang.csv index 3ab991a4d..6904a7dc5 100644 --- a/translations/sales_lang.csv +++ b/translations/sales_lang.csv @@ -4,7 +4,6 @@ sales_amount_due,Te betalen,Debe,Amount Due,Somme Due,Amount Due,Amount Due,,Kal sales_amount_tendered,Ontvangen bedrag,Cantidad Recibida,Amount Tendered,Somme,已收帳款,предложенная сумма,จำนวนประมูล,Ödenen Tutar,Nilai Pembayaran sales_basic_information,Ticket informatie,información sobre las entradas,Sale information,Information de Vente,Sale information,информацию о билетах,,Satış bilgisi,Sale information sales_cancel_sale,Annuleer,Cancelar Venta,Cancel Sale,Annuler la Vente,取消銷售,Отменить продажу,ยกเลิกการขาย,İptal Et,Batal Jual -sales_cannot_be_deleted,,,Sale(s) could not be deleted,,,,,, sales_cash,Contant,Efectivo,Cash,Cash,現金,наличные деньги,เงินสด,Nakit,Tunai sales_change_due,Wisselgeld terug,Cambio,Change Due,Reste,更改到期日,сдача должное,เงินทอน,Para Üstü,Kembalian Uang sales_check,Waardebon,Cheque,Check,Cheque,支票,банковский чек,เช็ก,Çek,Cek @@ -26,7 +25,6 @@ sales_delete_successful,De geselecteerde aanko(o)p(en) werden verwijderd,Has bor sales_delete_unsuccessful,De geselecteerde aankopen konden niet worden verwijderd.,No he podido borrar la venta satisfactoriamente,You have unsuccessfully deleted a sale,Échec de suppression,銷售資料刪除失敗,Вы безуспешно удален продаже,คุณลบการขายไม่สำเร็จ,Satışı silemediniz,Transaksi Penjualan tidak berhasil dihapus sales_description_abbrv,Omschr.,Desc,Desc,Desc,倒序,описание,Desc,Tanım,Deskripsi sales_discount,%,Desc %,Disc %,% Remise,折扣 %,скидка %,ส่วนลด %,İndirim %,Diskon % -sales_discount_included,,,,,,,,% İndirim, sales_discount_short,%,%,%,%,%,%,,%,% sales_edit,Bewerk,Editar,Edit,Éditer,編輯,редактировать,แก้ไข,Düzenle,Ubah sales_edit_item,Bewaar,Editar Artículo,Edit Item,Éditer Item,編輯產品,Редактировать Товар,แก้ไขสินค้า,Düzenle,Ubah Item @@ -39,10 +37,9 @@ sales_find_or_scan_item_or_receipt,Zoek/Scan Product of Ticket,Encontrar/Escanea sales_giftcard,Cadeaubon,Tarjeta de Regalo,Gift Card,Carte Cadeau,禮金券,Подарочная карта,Gift Card,Hediye Çeki,Gift Card sales_giftcard_number,Cadeaubon nummer,Número de Tarjeta de Regalo,Gift Card Number,Numéro de Carte cadeau,禮金券編號,Номер подарочных карт,เลขที่ Gift Card,Hediye Çeki No,Nomor Gift Card sales_id,Nummer Verkoop ,ID de Venta,Sale ID,ID Vente,銷售編號,Номер Продажы,เลขที่ขาย,Satış No,ID Penjualan -sales_invoice_number,,,Invoice #,,,,,, -sales_invoice_number_duplicate,,,Please enter an unique invoice number,,,,,, -sales_item_insufficient_of_stock,,Hay un número insuficiente de Artículos en existencia,Item is Insufficient of Stock,Stock top faible,產品庫存不足,Товар недостаточно на складе,จำนวนสินค้าไม่เพียงพอ,Ürün Stoğu Yetersiz,Stok Item tidak mencukupi -sales_item_insufficient_of_stockfi,Product is niet meer in voorraad,,,,,,,, +sales_invoice_number,,Invoice #,Invoice #,Invoice #,,,,, +sales_invoice_number_duplicate,Vul een unieke nummer in,Please enter an unique invoice number,Please enter an unique invoice number,,,,,, +sales_item_insufficient_of_stock,Product is niet meer in voorraad,Hay un número insuficiente de Artículos en existencia,Item is Insufficient of Stock,Stock top faible,產品庫存不足,Товар недостаточно на складе,จำนวนสินค้าไม่เพียงพอ,Ürün Stoğu Yetersiz,Stok Item tidak mencukupi sales_item_name,Naam,Nombre del Artículo,Item Name,Nom,產品名稱,Название товара,ชื่อสินค้า,Ürün Adı,Nama Item sales_item_number,Product #,UPC/EAN/ISBN,Item #,# Item,產品 #,Номер товара,สินค้า #,Ürün No,Item # sales_item_out_of_stock,Product is niet meer in voorraad,El artículo está agotado,Item is Out of Stock,Stock épuisé,產品缺貨,Товар распродано,สินค้าจำหน่ายหมด,Ürün Stokta Yok,Item tidak ada stok @@ -52,7 +49,7 @@ sales_must_enter_numeric_giftcard,Er moet een geldige code worden ingevuld voor sales_new_customer,Nieuwe klant,Cliente Nuevo,New Customer,Nouveau Client,新客戶,Новый клиент,ลูกค้าใหม่,Yeni Müşteri,Pelanggan Baru sales_new_item,Nieuw Product,Artículo Nuevo,New Item,Nouvel Élément,新增產品,Новый Товар,สินค้าใหม่,Yeni Ürün,Item Baru 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_one_or_multiple,,,sale(s),,,,,, +sales_one_or_multiple,aankopen verwijderd,,sale(s),,,,,, 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 @@ -73,9 +70,9 @@ sales_select_customer,Selecteer Klant (Optioneel),Seleccionar Cliente (Opcional) sales_serial,Nummer,Serial,Serial,Serie,序號,серийный номер,Serial,Seri,Serial sales_start_typing_customer_name,Typ naam klant...,Empieza a escribir el cliente...,Start Typing customer\'s name...,Commencez à saisir le nom du client...,開始輸入客戶的名字,Начните печатать название клиента...,เริ่มต้นพิมพ์ชื่อลูกค้า...,Müşteri Adı...,Ketik Nama Pelanggan... sales_start_typing_item_name,Typ naam product of barcode...,Empieza a escribir o escanea el código de barras...,Start Typing item\'s name or scan barcode...,Commencez à saisir le nom de l\'item ou scannez le code-barre...,開始輸入產品名或掃描條碼...,Начните печатать название товара или сканировайте штрих-кода...,เริ่มต้นพิมพ์ชื่อสินค้า หรือ สแกนบาร์โค๊ด...,Ürün adı yazın yada barkod okutun...,Ketik Nama Barang atau Scan Barcode... -sales_stock_location,,,Stock location,,,,,Stok yeri, +sales_stock_location,Stock locatie,,Stock location,,,,,Stok yeri, sales_sub_total,Subtotaal excl. VAT,Subtotal,Sub Total,Sous-Total,小計,промежуточный итог,ยอดรวมหักภาษี ,Ara Toplam,Sub Total -sales_successfully_deleted,,La Venta ha sido borrada satisfactoriamente,You have successfully deleted,Vente supprimée,銷售資料成功刪除,продажи успешно удален,ลบการขายสมยูรณ์,Satış silindi,Transaksi Penjualan berhasil dihapus +sales_successfully_deleted,Uw aankoop werd verwijded,La Venta ha sido borrada satisfactoriamente,You have successfully deleted,Vente supprimée,銷售資料成功刪除,продажи успешно удален,ลบการขายสมยูรณ์,Satış silindi,Transaksi Penjualan berhasil dihapus sales_successfully_suspended_sale,Uw aankoop werd met sucess bewaard,La venta ha sido suspendida satisfactoriamente,Your sale has been successfully suspended,Vente suspendue,本銷售資料已經成功暫停,Ваши продажи успешно приостановлена,การขายของคุณถูกระงับเรียบร้อย,Satış askıya alındı,Penjualan anda telah berhasil ditangguhkan sales_successfully_updated,Wijzigingen bewaard voor ticket,La venta ha sido actualizada satisfactoriamente,Sale successfully updated,Vente éditée,銷售資料成功更新,Продажа успешно обновлен,อัพเดทการขายสมบูรณ์,Satış düzenlendi,Penjualan berhasil diperbarui sales_suspend_sale,Bewaar aankoop,Suspender Venta,Suspend Sale,Suspendre la Vente,暫停銷售,Приостановить продажи,ระงับการขายชั่วคราว,Satışı Askıya Al,Tangguhkan @@ -86,7 +83,7 @@ sales_tax_percent,VAT %,% de Impuesto,Tax %,% Taxe,稅率 %,Налоговые % sales_total,Totaal,Total,Total,Total,總計,сумма,ยอดรวม,Toplam,Total sales_transaction_failed,Transactie mislukt,La transacción de venta falló,Sales Transaction Failed,Échec de Transaction de vente,銷售交易失敗,Транзакция не удалось,การดำเนินการขายล้มเหลว,Satış işlemi hatası,Transaksi Penjualan Salah sales_unable_to_add_item,Onmogelijk om product toe te voegen,No se puede agregar el artículo a la venta,Unable to add item to sale,Erreur d\'ajout à la vente,無法增加出售產品,Невозможно добавить товар продажи,ไม่สามารถเพิ่มสินค้าได้,Ürün satışa eklenemedi,Tidak dapat menambahkan item dengan penjualan -sales_unsuccessfully_deleted,,Ha fallado la eliminación de la Venta,,Échec de suppression,銷售資料刪除失敗,продажи безуспешно удален,ลบการขายไม่สมยูรณ์,Satış silinemedi,Transaksi Penjualan tidak berhasil dihapus +sales_unsuccessfully_deleted,De aankoop kon niet verwijderd worden,Ha fallado la eliminación de la Venta,Sale(s) could not be deleted,Échec de suppression,銷售資料刪除失敗,продажи безуспешно удален,ลบการขายไม่สมยูรณ์,Satış silinemedi,Transaksi Penjualan tidak berhasil dihapus sales_unsuccessfully_updated,Fout bij het bewaren van ticket,Ha fallado la actualización de la venta,Sale unsuccessfully updated,Échec d\'édition,銷售資料更新失敗,Продажа безуспешно обновлен,อัพเดทการขายไม่สมบูรณ์,Satış düzenlenemedi,Penjualan tidak berhasil diperbarui sales_unsuspend,Hervat,Retomar,Unsuspend,Débloquer,取消暫停銷售,Разблокировать,ยกเลิกการระงับ,Satışa Al,Batal Penangguhan sales_unsuspend_and_delete,,Retomar y Borrar,,,取消暫停銷售並刪除,Разблокировать и удалить,ยกเลิกการระงับ และ ลบ,,Batalkan dan hapus penangguhan
"; + if (strstr($this->config->item('barcode_labels'), 'company')) + { + echo $this->config->item('company'); + } + echo "

"; + if (strstr($this->config->item('barcode_labels'), 'price')) + { + echo to_currency($item['unit_price']); + } + if (strstr($this->config->item('barcode_labels'), 'name')) + { + echo " " . $item['name']; + } + echo "