Compare commits

...

26 Commits

Author SHA1 Message Date
jekkos
b4c48e5141 Blind sql injection fixes (#3284) 2021-08-27 00:20:50 +02:00
jekkos
b925155ba5 Update changelist (#3218) 2021-08-26 08:23:40 +02:00
jekkos
d07b9349e3 Try to upgrade docker version (#3281) 2021-08-26 00:29:50 +02:00
jekkos
51a8cffc9e Bump to 3.3.5 (#3281) 2021-08-25 23:13:40 +02:00
Dan Tiganuc
694b7fe52d Translated using Weblate (Romanian)
Currently translated at 10.2% (12 of 117 strings)

Translation: opensourcepos/items
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/items/ro/
2021-08-24 11:29:46 +02:00
jekkos
5669dff7da Add sorting for quantity and sales (#3262) 2021-08-20 23:36:02 +02:00
Johntini
6d8890f61e Translated using Weblate (Spanish)
Currently translated at 100.0% (47 of 47 strings)

Translation: opensourcepos/expenses
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/expenses/es/
2021-08-20 22:41:13 +02:00
Johntini
a4bae6536d Translated using Weblate (Spanish)
Currently translated at 100.0% (41 of 41 strings)

Translation: opensourcepos/employees
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/employees/es/
2021-08-20 22:41:13 +02:00
Johntini
e1e61ba98d Translated using Weblate (Spanish)
Currently translated at 100.0% (47 of 47 strings)

Translation: opensourcepos/cashups
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/cashups/es/
2021-08-20 22:41:13 +02:00
Johntini
225bfda867 Translated using Weblate (Spanish)
Currently translated at 100.0% (79 of 79 strings)

Translation: opensourcepos/taxes
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/taxes/es/
2021-08-20 22:41:13 +02:00
Johntini
0a2dc49e3e Translated using Weblate (Spanish)
Currently translated at 100.0% (86 of 86 strings)

Translation: opensourcepos/common
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/common/es/
2021-08-20 22:41:13 +02:00
Johntini
dcc9745991 Translated using Weblate (Spanish)
Currently translated at 100.0% (327 of 327 strings)

Translation: opensourcepos/config
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/config/es/
2021-08-20 22:41:13 +02:00
Johntini
339eca6028 Translated using Weblate (Spanish)
Currently translated at 100.0% (45 of 45 strings)

Translation: opensourcepos/module
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/module/es/
2021-08-20 22:41:13 +02:00
Johntini
d1e9b6d943 Translated using Weblate (Spanish)
Currently translated at 100.0% (53 of 53 strings)

Translation: opensourcepos/customers
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/customers/es/
2021-08-20 22:41:13 +02:00
Johntini
2da34b0789 Translated using Weblate (Spanish)
Currently translated at 100.0% (145 of 145 strings)

Translation: opensourcepos/reports
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/reports/es/
2021-08-20 22:41:13 +02:00
Johntini
44d89a5ed2 Translated using Weblate (Spanish)
Currently translated at 100.0% (37 of 37 strings)

Translation: opensourcepos/item_kits
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/item_kits/es/
2021-08-20 22:41:13 +02:00
Johntini
0637266560 Translated using Weblate (Spanish)
Currently translated at 100.0% (117 of 117 strings)

Translation: opensourcepos/items
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/items/es/
2021-08-20 22:41:13 +02:00
Johntini
32c99248af Translated using Weblate (Spanish)
Currently translated at 100.0% (55 of 55 strings)

Translation: opensourcepos/receivings
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/receivings/es/
2021-08-20 22:41:13 +02:00
Johntini
fad53d52d4 Translated using Weblate (Spanish)
Currently translated at 100.0% (200 of 200 strings)

Translation: opensourcepos/sales
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/sales/es/
2021-08-20 22:41:13 +02:00
Johntini
29bdb7b75e Translated using Weblate (Spanish)
Currently translated at 100.0% (11 of 11 strings)

Translation: opensourcepos/login
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/login/es/
2021-08-20 22:41:13 +02:00
Johntini
3f1bbf99b4 Translated using Weblate (Spanish)
Currently translated at 100.0% (8 of 8 strings)

Translation: opensourcepos/bootstrap_tables
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/bootstrap_tables/es/
2021-08-20 22:41:13 +02:00
Jeroen Peelaerts
4c3f6e4c31 Fix username verification on insert/update (#3239) 2021-08-07 02:12:30 +02:00
Jeroen Peelaerts
85f577556e Fix employee update (#3239) 2021-08-07 02:12:30 +02:00
Jeroen Peelaerts
dc2b2862f9 Fix employee update (#3239) 2021-08-07 02:12:30 +02:00
objecttothis
9217f2d12f Fixed missing function call
This removes the function call to a function that doesn't exist anymore.
The replacement does the same job in one line of code.
Added comment to bring clarity to what the code is doing.
2021-08-06 19:19:09 +02:00
objecttothis
5ebe626543 Formatting Changes
- Removed unneeded tabs that mess up alignment.
2021-08-06 19:16:52 +02:00
43 changed files with 322 additions and 163 deletions

View File

@@ -7,6 +7,11 @@ branches:
services:
- docker
before_install:
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- sudo apt-get update
- sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
- docker --version
- curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
- chmod +x docker-compose
- sudo mv docker-compose /usr/local/bin
@@ -22,7 +27,7 @@ script:
- docker-compose -f docker-compose.test.yml up --abort-on-container-exit
env:
global:
- DOCKER_COMPOSE_VERSION=1.21.1
- DOCKER_COMPOSE_VERSION=1.29.1
- TAG=$(echo ${TRAVIS_BRANCH} | sed s/feature\\///)
- date=`date +%Y%m%d%H%M%S` && branch=${TRAVIS_BRANCH} && rev=`git rev-parse --short=6 HEAD`
after_success:

27
SECURITY.md Normal file
View File

@@ -0,0 +1,27 @@
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
- [Security Policy](#security-policy)
- [Supported Versions](#supported-versions)
- [Reporting a Vulnerability](#reporting-a-vulnerability)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
# Security Policy
## Supported Versions
We release patches for security vulnerabilities. Which versions are eligible
receiving such patches depend on the CVSS v3.0 Rating:
| CVSS v3.0 | Supported Versions |
| --------- | -------------------------------------------------- |
| 7.3 | 3.5.5 |
## Reporting a Vulnerability
Please report (suspected) security vulnerabilities to
**[jekkos](mailto:jekkos@opensourcepos.org)**. You will receive a response from
us within 48 hours. If the issue is confirmed, we will release a patch as soon
as possible depending on complexity but historically within a few days.

View File

@@ -1,3 +1,18 @@
Version 3.3.5
-------------
+ Translation updates (Romanian, Ukranian, Vietnamese, Thai, Polish, Swedish, Portugese, Arabic, French, Chinese, Dutch, Tamil, Turkish, Spanish)
+ New login page restyle
+ Partial BS5 upgrade
+ Username verification fix on employee insert/update
+ Minor report fixes
+ Attribute encoding fix
+ Grunt/CI updates
+ Database and performance optimizations
+ CSV item import improvements
+ Fix decimal render
+ Translation fallback in other languages than english
+ Fixes for docker to make it run on Windows
Version 3.3.4
-------------
+ Translation updates (Hungarian, Indonesian, Bosnian, Ukranian, Vietnamese, Spanish)

View File

@@ -8,7 +8,7 @@
|
|
*/
$config['application_version'] = '3.4.0-dev';
$config['application_version'] = '3.3.5';
/*
|--------------------------------------------------------------------------

View File

@@ -24,7 +24,7 @@ class Attributes extends Secure_Controller
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$sort = $this->input->post('sort') === NULL ? definition.definition_name : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$attributes = $this->Attribute->search($search, $limit, $offset, $sort, $order);
@@ -189,4 +189,4 @@ class Attributes extends Secure_Controller
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('attributes_definition_cannot_be_deleted')));
}
}
}
}

View File

@@ -25,7 +25,7 @@ class Cashups extends Secure_Controller
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$sort = $this->input->post('sort') === NULL ? 'cashup_id' : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$filters = array(
'start_date' => $this->input->get('start_date'),

View File

@@ -58,7 +58,7 @@ class Customers extends Persons
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$sort = $this->input->post('sort') === NULL ? LAST_NAME : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$customers = $this->Customer->search($search, $limit, $offset, $sort, $order);

View File

@@ -17,7 +17,7 @@ class Employees extends Persons
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$sort = $this->input->post('sort') === NULL ? LAST_NAME : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$employees = $this->Employee->search($search, $limit, $offset, $sort, $order);
@@ -60,6 +60,7 @@ class Employees extends Persons
$person_info->$property = $this->xss_clean($value);
}
$data['person_info'] = $person_info;
$data['employee_id'] = $employee_id;
$modules = array();
foreach($this->Module->get_all_modules()->result() as $module)
@@ -191,9 +192,9 @@ class Employees extends Persons
}
}
public function check_username()
public function check_username($employee_id)
{
$exists = $this->Employee->username_exists($this->input->get('username'));
$exists = $this->Employee->username_exists($employee_id, $this->input->get('username'));
echo !$exists ? 'true' : 'false';
}
}

View File

@@ -30,7 +30,7 @@ class Expenses extends Secure_Controller
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$sort = $this->input->post('sort') === NULL ? 'expense_id' : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$filters = array(
'start_date' => $this->input->get('start_date'),

View File

@@ -24,7 +24,7 @@ class Expenses_categories extends Secure_Controller
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$sort = $this->input->post('sort') === NULL ? 'category_name' : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$expense_categories = $this->Expense_category->search($search, $limit, $offset, $sort, $order);

View File

@@ -24,7 +24,7 @@ class Giftcards extends Secure_Controller
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$sort = $this->input->post('sort') === NULL ? 'giftcard_number' : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$giftcards = $this->Giftcard->search($search, $limit, $offset, $sort, $order);

View File

@@ -59,7 +59,7 @@ class Item_kits extends Secure_Controller
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$sort = $this->input->post('sort') === NULL ? NAME : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$item_kits = $this->Item_kit->search($search, $limit, $offset, $sort, $order);

View File

@@ -40,7 +40,7 @@ class Items extends Secure_Controller
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$sort = $this->input->post('sort') === NULL ? NAME : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$this->item_lib->set_item_location($this->input->get('stock_location'));
@@ -849,11 +849,10 @@ class Items extends Secure_Controller
{
set_time_limit(240);
$failCodes = [];
$third_party_data = [];
$csv_rows = get_csv_file($_FILES['file_path']['tmp_name']);
$employee_id = $this->Employee->get_logged_in_employee_info()->person_id;
$allowed_stock_locations = $this->Stock_location->get_allowed_locations();
$failCodes = [];
$csv_rows = get_csv_file($_FILES['file_path']['tmp_name']);
$employee_id = $this->Employee->get_logged_in_employee_info()->person_id;
$allowed_stock_locations = $this->Stock_location->get_allowed_locations();
$attribute_definition_names = $this->Attribute->get_definition_names();
unset($attribute_definition_names[-1]); //Removes the common_none_selected_text from the array
@@ -872,20 +871,20 @@ class Items extends Secure_Controller
foreach($csv_rows as $key => $row)
{
$is_failed_row = FALSE;
$item_id = $row['Id'];
$is_update = !empty($item_id);
$item_data = array(
'item_id' => $item_id,
'name' => $row['Item Name'],
'description' => $row['Description'],
'category' => $row['Category'],
'cost_price' => $row['Cost Price'],
'unit_price' => $row['Unit Price'],
'reorder_level' => $row['Reorder Level'],
'deleted' => FALSE,
'hsn_code' => $row['HSN'],
'pic_filename' => $row['Image']);
$is_failed_row = FALSE;
$item_id = $row['Id'];
$is_update = !empty($item_id);
$item_data = array(
'item_id' => $item_id,
'name' => $row['Item Name'],
'description' => $row['Description'],
'category' => $row['Category'],
'cost_price' => $row['Cost Price'],
'unit_price' => $row['Unit Price'],
'reorder_level' => $row['Reorder Level'],
'deleted' => FALSE,
'hsn_code' => $row['HSN'],
'pic_filename' => $row['Image']);
if(!empty($row['supplier_id']))
{
@@ -894,13 +893,13 @@ class Items extends Secure_Controller
if($is_update)
{
$item_data['allow_alt_description'] = empty($row['Allow Alt Description']) ? NULL : $row['Allow Alt Description'];
$item_data['is_serialized'] = empty($row['Item has Serial Number']) ? NULL : $row['Item has Serial Number'];
$item_data['allow_alt_description'] = empty($row['Allow Alt Description']) ? NULL : $row['Allow Alt Description'];
$item_data['is_serialized'] = empty($row['Item has Serial Number']) ? NULL : $row['Item has Serial Number'];
}
else
{
$item_data['allow_alt_description'] = empty($row['Allow Alt Description'])? '0' : '1';
$item_data['is_serialized'] = empty($row['Item has Serial Number'])? '0' : '1';
$item_data['allow_alt_description'] = empty($row['Allow Alt Description'])? '0' : '1';
$item_data['is_serialized'] = empty($row['Item has Serial Number'])? '0' : '1';
}
if(!empty($row['Barcode']))
@@ -914,7 +913,8 @@ class Items extends Secure_Controller
$is_failed_row = $this->data_error_check($row, $item_data, $allowed_stock_locations, $attribute_definition_names, $attribute_data);
}
$item_data = $this->item_lib->custom_array_filter($item_data);
//Remove FALSE, NULL, '' and empty strings but keep 0
$item_data = array_filter($item_data, 'strlen');
if(!$is_failed_row && $this->Item->save($item_data, $item_id))
{
@@ -929,8 +929,8 @@ class Items extends Secure_Controller
}
else
{
$failed_row = $key+2;
$failCodes[] = $failed_row;
$failed_row = $key+2;
$failCodes[] = $failed_row;
log_message('ERROR',"CSV Item import failed on line $failed_row. This item was not imported.");
}
@@ -969,14 +969,14 @@ class Items extends Secure_Controller
*/
private function data_error_check($row, $item_data, $allowed_locations, $definition_names, $attribute_data)
{
$item_id = $row['Id'];
$is_update = $item_id ? TRUE : FALSE;
$item_id = $row['Id'];
$is_update = $item_id ? TRUE : FALSE;
//Check for empty required fields
$check_for_empty = array(
'name' => $item_data['name'],
'category' => $item_data['category'],
'unit_price' => $item_data['unit_price']);
'name' => $item_data['name'],
'category' => $item_data['category'],
'unit_price' => $item_data['unit_price']);
foreach($check_for_empty as $key => $val)
{
@@ -1002,12 +1002,12 @@ class Items extends Secure_Controller
//Build array of fields to check for numerics
$check_for_numeric_values = array(
'cost_price' => $item_data['cost_price'],
'unit_price' => $item_data['unit_price'],
'reorder_level' => $item_data['reorder_level'],
'supplier_id' => $item_data['supplier_id'],
'Tax 1 Percent' => $row['Tax 1 Percent'],
'Tax 2 Percent' => $row['Tax 2 Percent']);
'cost_price' => $item_data['cost_price'],
'unit_price' => $item_data['unit_price'],
'reorder_level' => $item_data['reorder_level'],
'supplier_id' => $item_data['supplier_id'],
'Tax 1 Percent' => $row['Tax 1 Percent'],
'Tax 2 Percent' => $row['Tax 2 Percent']);
foreach($allowed_locations as $location_name)
{
@@ -1029,14 +1029,14 @@ class Items extends Secure_Controller
{
if(!empty($row["attribute_$definition_name"]))
{
$definition_type = $attribute_data[$definition_name]['definition_type'];
$attribute_value = $row["attribute_$definition_name"];
$definition_type = $attribute_data[$definition_name]['definition_type'];
$attribute_value = $row["attribute_$definition_name"];
switch($definition_type)
{
case DROPDOWN:
$dropdown_values = $attribute_data[$definition_name]['dropdown_values'];
$dropdown_values[] = '';
$dropdown_values = $attribute_data[$definition_name]['dropdown_values'];
$dropdown_values[] = '';
if(!empty($attribute_value) && in_array($attribute_value, $dropdown_values) === FALSE)
{
@@ -1135,20 +1135,20 @@ class Items extends Secure_Controller
private function save_inventory_quantities($row, $item_data, $allowed_locations, $employee_id)
{
//Quantities & Inventory Section
$comment = $this->lang->line('items_inventory_CSV_import_quantity');
$is_update = $row['Id'] ? TRUE : FALSE;
$comment = $this->lang->line('items_inventory_CSV_import_quantity');
$is_update = $row['Id'] ? TRUE : FALSE;
foreach($allowed_locations as $location_id => $location_name)
{
$item_quantity_data = array(
'item_id' => $item_data['item_id'],
'location_id' => $location_id);
'item_id' => $item_data['item_id'],
'location_id' => $location_id);
$csv_data = array(
'trans_items' => $item_data['item_id'],
'trans_user' => $employee_id,
'trans_comment' => $comment,
'trans_location' => $location_id);
'trans_items' => $item_data['item_id'],
'trans_user' => $employee_id,
'trans_comment' => $comment,
'trans_location' => $location_id);
if(!empty($row["location_$location_name"]) || $row["location_$location_name"] === '0')
{

View File

@@ -54,10 +54,10 @@ class Sales extends Secure_Controller
public function search()
{
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$order = $this->input->get('order');
$sort = $this->input->post('sort') === NULL ? 'sales.sale_time' : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$filters = array('sale_type' => 'all',
'location_id' => 'all',

View File

@@ -35,7 +35,7 @@ class Suppliers extends Persons
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$sort = $this->input->post('sort') === NULL ? LAST_NAME : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$suppliers = $this->Supplier->search($search, $limit, $offset, $sort, $order);

View File

@@ -25,7 +25,7 @@ class Tax_categories extends Secure_Controller
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$sort = $this->input->post('sort') === NULL ? 'tax_category' : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$tax_categories = $this->Tax_category->search($search, $limit, $offset, $sort, $order);

View File

@@ -29,7 +29,7 @@ class Tax_codes extends Secure_Controller
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$sort = $this->input->post('sort') === NULL ? 'tax_code_name' : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$tax_codes = $this->Tax_code->search($search, $limit, $offset, $sort, $order);

View File

@@ -25,7 +25,7 @@ class Tax_jurisdictions extends Secure_Controller
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$sort = $this->input->post('sort') === NULL ? 'jurisdiction_name' : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$tax_jurisdictions = $this->Tax_jurisdiction->search($search, $limit, $offset, $sort, $order);

View File

@@ -57,7 +57,7 @@ class Taxes extends Secure_Controller
$search = $this->input->get('search');
$limit = $this->input->get('limit');
$offset = $this->input->get('offset');
$sort = $this->input->get('sort');
$sort = $this->input->post('sort') === NULL ? 'tax_code_name' : $this->db->escape($this->input->get('sort'));
$order = $this->input->get('order');
$tax_rates = $this->Tax->search($search, $limit, $offset, $sort, $order);

View File

@@ -1,6 +1,5 @@
<?php
$lang["tables_all"] = "Todos";
<?php
$lang["tables_all"] = "Todas";
$lang["tables_columns"] = "Columnas";
$lang["tables_hide_show_pagination"] = "Ocultar/Mostrar paginación";
$lang["tables_loading"] = "Por favor espere...";

View File

@@ -1,5 +1,4 @@
<?php
<?php
$lang["cashups_amount"] = "Cantidad";
$lang["cashups_amount_number"] = "Cantidad debe ser un numero";
$lang["cashups_amount_required"] = "Cantidad es un campo obligatorio.";
@@ -36,3 +35,14 @@ $lang["cashups_successful_updating"] = "Turno actualizado con éxito";
$lang["cashups_total"] = "Total";
$lang["cashups_transfer_amount_cash"] = "Salida/Entrada de Efectivo";
$lang["cashups_update"] = "Actualizar Turno";
$lang["cashups_warning"] = "No enviar a menos que sea Abierto o Cerrado en el día";
$lang['cashups_transfer_amount_cash'] = "Entrada/Salida de Efectivo";
$lang['cashups_transfer_amount_cash_minus'] = "Convertir en Efectivo = -";
$lang["cashups_info_employee"] = "Empleado Información de Efectivo";
$lang["cashups_giftcard"] = "Tarjetas de Regalo de Efectivo";
$lang["cashups_enable_expected"] = "Mostrar Ventas";
$lang["cashups_closed_amount_giftcard"] = "Tarjetas de Regalo";
$lang["cashups_confirm_submit"] = "¿Está seguro que desea enviar este efectivo? La jornada estará cerrada.";
$lang["cashups_cash_difference"] = "Diferencia de Efectivo: ";
$lang["cashups_cancel_cashups_enter"] = "Pulse Aceptar para enviar o haga clic en Cancelar para continuar editando";
$lang["cashups_cancel_cashups"] = "Cancelar";

View File

@@ -1,5 +1,4 @@
<?php
<?php
$lang["common_address_1"] = "Dirección 1";
$lang["common_address_2"] = "Dirección 2";
$lang["common_city"] = "Ciudad";
@@ -28,12 +27,12 @@ $lang["common_gender"] = "Género";
$lang["common_gender_female"] = "F";
$lang["common_gender_male"] = "M";
$lang["common_gender_undefined"] = "";
$lang["common_icon"] = "";
$lang["common_id"] = "Id";
$lang["common_icon"] = "Icono";
$lang["common_id"] = "Identificación";
$lang["common_import"] = "Importar";
$lang["common_import_change_file"] = "Cambiar";
$lang["common_import_csv"] = "Importar CSV";
$lang["common_import_full_path"] = "Se requiere la ruta completa del archivo CSV";
$lang["common_import_full_path"] = "La ruta completa al archivo CSV es requerida";
$lang["common_import_remove_file"] = "Quitar";
$lang["common_import_select_file"] = "Selecciona archivo";
$lang["common_inv"] = "Inv";
@@ -42,9 +41,9 @@ $lang["common_last_name_required"] = "Apellidos es un campo requerido.";
$lang["common_last_page"] = "Ultima";
$lang["common_learn_about_project"] = "para leer la información más reciente acerca del proyecto.";
$lang["common_list_of"] = "Lista de";
$lang["common_logo"] = "";
$lang["common_logo_mark"] = "";
$lang["common_logout"] = "Salir";
$lang["common_logo"] = "Logotipo";
$lang["common_logo_mark"] = "Marca";
$lang["common_logout"] = "Cerrar sesión";
$lang["common_migration_needed"] = "La migración de la base de datos hacia %1 comenzará después de iniciar sesión.";
$lang["common_new"] = "Nuevo";
$lang["common_no"] = "";
@@ -64,8 +63,8 @@ $lang["common_return_policy"] = "Política de Devolución";
$lang["common_search"] = "Buscar";
$lang["common_search_options"] = "Opciones de búsqueda";
$lang["common_searched_for"] = "Buscado";
$lang["common_software_short"] = "";
$lang["common_software_title"] = "";
$lang["common_software_short"] = "OSPOS";
$lang["common_software_title"] = "Punto de Venta Open Source";
$lang["common_state"] = "Estado";
$lang["common_submit"] = "Enviar";
$lang["common_total_spent"] = "Total gastado";
@@ -73,7 +72,40 @@ $lang["common_unknown"] = "Desconocido";
$lang["common_view_recent_sales"] = "Ver Ventas Recientes";
$lang["common_website"] = "opensourcepos.org";
$lang["common_welcome"] = "Bienvenido(a)";
$lang["common_welcome_message"] = "Bienvenido(a) a OSPOS. ¡Haz click en algún módulo, para empezar.";
$lang["common_welcome_message"] = "Bienvenido(a) a OSPOS. Haz click en algún módulo, para empezar.";
$lang["common_yes"] = "";
$lang["common_you_are_using_ospos"] = "Estás usando Open Source Point Of Sale Versión";
$lang["common_zip"] = "Código Postal";
$lang["commom_carrier"] = "Operadores
AT&T
@txt.att.net
Boost Mobile\t
@smsmyboostmobile.com
Cricket\t
@sms.cricketwireless.net
Sprint\t
@messaging.sprintpcs.com
T-Mobile
@tmomail.net
U.S. Cellular\t
@email.uscc.net
Verizon\t
@vtext.com
Virgin Mobile\t
@vmobl.com";
$lang["common_position"] = "Posición";
$lang["common_people"] = "Personas";
$lang["common_manager"] = "Administrador";
$lang["common_fields_required_message_unique"] = "Los campos en rojo son obligatorios y deben ser únicos";
$lang["common_dashboard"] = "Tablero";
$lang["common_color"] = "Colores del tema";
$lang["common_clerk"] = "Empleado";
$lang["common_admin"] = "Administrador";

View File

@@ -1,5 +1,4 @@
<?php
<?php
$lang["config_address"] = "Dirección del Comercio";
$lang["config_address_required"] = "Dirección del Comercio es requerida.";
$lang["config_all_set"] = "¡Todos los permisos de archivo están configurados correctamente!";
@@ -18,7 +17,7 @@ $lang["config_barcode_generate_if_empty"] = "Generar si esta vacio.";
$lang["config_barcode_height"] = "Alto (px)";
$lang["config_barcode_id"] = "Id/Artículo";
$lang["config_barcode_info"] = "Información de Configuración de Código de Barras";
$lang["config_barcode_layout"] = "Presentación Código Barras";
$lang["config_barcode_layout"] = "Diseño Código de Barras";
$lang["config_barcode_name"] = "Nombre";
$lang["config_barcode_number"] = "UPC/EAN/ISBN";
$lang["config_barcode_number_in_row"] = "Número en la línea";
@@ -74,7 +73,7 @@ $lang["config_default_item_columns"] = "Columnas de Productos Visibles por Defec
$lang["config_default_origin_tax_code"] = "Código de impuesto por defecto";
$lang["config_default_receivings_discount"] = "Descuento por Defecto para Recibos";
$lang["config_default_receivings_discount_number"] = "El Descuento por Defecto Para Los Recibos Debe Ser Un Número.";
$lang["config_default_receivings_discount_required"] = "El Descuento Predeterminado para los Recibos es un campo obligatorio.";
$lang["config_default_receivings_discount_required"] = "El Descuento Predeterminado para los Recibos es un campo obligatorio.";
$lang["config_default_sales_discount"] = "Descuento Predeterminado para Ventas";
$lang["config_default_sales_discount_number"] = "Descuento en ventas predeterminado debe ser un número.";
$lang["config_default_sales_discount_required"] = "Descuento en ventas predeterminado es requerido.";
@@ -127,7 +126,7 @@ $lang["config_financial_year_may"] = "1º de Mayo";
$lang["config_financial_year_nov"] = "1º de Noviembre";
$lang["config_financial_year_oct"] = "1º de Octubre";
$lang["config_financial_year_sep"] = "1º de Septiembre";
$lang["config_floating_labels"] = "";
$lang["config_floating_labels"] = "Etiquetas flotantes";
$lang["config_gcaptcha_enable"] = "Inicio de sesión con reCAPTCHA";
$lang["config_gcaptcha_secret_key"] = "Llave secreta reCAPTCHA";
$lang["config_gcaptcha_secret_key_required"] = "reCAPTCHA Secret Key es requerida si se usa";
@@ -147,7 +146,7 @@ $lang["config_image_restrictions"] = "Restricciones de carga de imágenes";
$lang["config_include_hsn"] = "Incluir Soporte para Códigos HSN";
$lang["config_info"] = "Información";
$lang["config_info_configuration"] = "Información del Comercio";
$lang["config_input_groups"] = "";
$lang["config_input_groups"] = "Introducir Grupos";
$lang["config_integrations"] = "Componentes Integrados";
$lang["config_integrations_configuration"] = "Componentes de Terceros Integrados";
$lang["config_invoice"] = "Factura";
@@ -158,7 +157,7 @@ $lang["config_invoice_enable"] = "Activar Facturación";
$lang["config_invoice_printer"] = "Impresora Facturadora";
$lang["config_invoice_type"] = "Tipo de Factura";
$lang["config_is_readable"] = "es legible, pero los permisos de lectura son incorrectos. Pongalos en 640 o 660 cargue nuevamente.";
$lang["config_is_writable"] = "es grabable, pero los permisos de escritura son incorrectos. Pongalos en 750 y cargue nuevamente.";
$lang["config_is_writable"] = "es escribible, pero los permisos de escritura son incorrectos. Pongalos en 750 y recargue la página de nuevo.";
$lang["config_jsprintsetup_required"] = "Advertencia!Esta funcionalidad desactivada solo funciona con el addon jsPrintSetup de FireFox instalado. Guardar de todas formas?";
$lang["config_language"] = "Idioma";
$lang["config_last_used_invoice_number"] = "Último numero de factura utilizado";
@@ -177,10 +176,10 @@ $lang["config_locale_info"] = "Informacion de la configuracion de la zona";
$lang["config_location"] = "Inventario";
$lang["config_location_configuration"] = "Ubicación de Inventario";
$lang["config_location_info"] = "Información de Configuración de Ubicación";
$lang["config_login_form"] = "";
$lang["config_login_form"] = "Estilo del formulario de inicio de sesión";
$lang["config_logout"] = "Desea hacer un respaldo antes de salir? Pulsa [OK] para respaldar o [Cancelar] para salir.";
$lang["config_mailchimp"] = "Correo Chimp";
$lang["config_mailchimp_api_key"] = "Clave de la API Mailchimp";
$lang["config_mailchimp"] = "Correo MailChimp";
$lang["config_mailchimp_api_key"] = "Clave API de Mailchimp";
$lang["config_mailchimp_configuration"] = "Configuración de Mailchimp";
$lang["config_mailchimp_key_successfully"] = "Clave API correcta.";
$lang["config_mailchimp_key_unsuccessfully"] = "Clave API incorrecta.";
@@ -208,7 +207,7 @@ $lang["config_number_locale_tooltip"] = "Encontrar una zonificacion adecuada en
$lang["config_os_timezone"] = "Zona Horaria Local:";
$lang["config_ospos_info"] = "Información de la Instalación OSPOS";
$lang["config_payment_options_order"] = "Orden de opciones de pago";
$lang["config_perm_risk"] = "Permisos superiores a 750 dejan este software en riesgo.";
$lang["config_perm_risk"] = "Los permisos incorrectos dejan a este software en riesgo.";
$lang["config_phone"] = "Teléfono comercial";
$lang["config_phone_required"] = "Teléfono del Comercio es requerido.";
$lang["config_print_bottom_margin"] = "Margen Inferior";
@@ -251,7 +250,7 @@ $lang["config_receipt_show_tax_ind"] = "Mostrar indicador de impuestos";
$lang["config_receipt_show_taxes"] = "Mostrar impuestos";
$lang["config_receipt_show_total_discount"] = "Mostrar Descuento Total";
$lang["config_receipt_template"] = "Formato de recibo";
$lang["config_receiving_calculate_average_price"] = "Cal. precio prom. (Recepción)";
$lang["config_receiving_calculate_average_price"] = "Cambiar precio de coste. (Recepción)";
$lang["config_recv_invoice_format"] = "Formato de Factura de Recepción";
$lang["config_register_mode_default"] = "Modo de registro por defecto";
$lang["config_report_an_issue"] = "Informe de algún problema";
@@ -292,7 +291,7 @@ $lang["config_tax_decimals"] = "Decimales de impuestos";
$lang["config_tax_id"] = "Identificador del Impuesto";
$lang["config_tax_included"] = "Impuestos incluidos";
$lang["config_theme"] = "Tema";
$lang["config_theme_preview"] = "";
$lang["config_theme_preview"] = "Vista Previa del Tema:";
$lang["config_thousands_separator"] = "Separador de miles";
$lang["config_timezone"] = "Zona Horaria";
$lang["config_timezone_error"] = "La zona horaria de OSPOS es diferente de tu zona horaria local.";
@@ -302,3 +301,28 @@ $lang["config_user_timezone"] = "Zona Horaria OSPOS:";
$lang["config_website"] = "Sitio Web";
$lang["config_work_order_enable"] = "Soporte Ordenes de Trabajo";
$lang["config_work_order_format"] = "Formato Ordenes de trabajo";
$lang['config_wholesale_markup'] = "Marcado al por mayor";
$lang["config_suggestions_fifth_column"] = "Columna 5";
$lang["config_suggestions_fourth_column"] = "Columna 4";
$lang["config_show_due_enable"] = "Mostrar vencimientos de clientes";
$lang["config_service_charge"] = "Costo de Servicio";
$lang["config_receipt_category"] = "Recibo con categoría";
$lang["config_item_markup"] = "Marcado de Artículo";
$lang['config_enable_avatar_tooltip'] = "Habilitar Avatares para que se muestren en el menú desplegable Categorías y Registrarse ";
$lang['config_enable_avatar'] = "Habilitar Avatar";
$lang['config_enable_right_bar_tooltip'] = "Cambiar la barra lateral de izquierda a derecha ";
$lang['config_enable_right_bar'] = " Habilitar la barra lateral derecha";
$lang['config_enable_new_look'] = "Habilitar nueva apariencia";
$lang["config_enable_dropdown_tooltip"] = "No podrá agregar nuevas categorías si esto está marcado";
$lang["config_default_tax_rate_3"] = "Tasa de Impuestos 3";
$lang["config_current_employee_only"] = "Mostrar registro sólo del empleado actual";
$lang["config_company_avatar"] = "Avatar de Empleado";
$lang["config_change_apperance_tooltip"] = "Cambiar Aspecto de OSPOS";
$lang["config_quick_cash_enable"] = "Activar Botones de Efectivo";
$lang["config_cash_button_6"] = "Botón 6";
$lang["config_cash_button_5"] = "Botón 5";
$lang["config_cash_button_4"] = "Botón 4";
$lang["config_cash_button_3"] = "Botón 3";
$lang["config_cash_button_2"] = "Botón 2";
$lang["config_cash_button_1"] = "Botón 1";
$lang["config_cash_button"] = "Botones de Efectivo Rápido";

View File

@@ -1,8 +1,7 @@
<?php
<?php
$lang["customers_account_number"] = "Cuenta #";
$lang["customers_account_number_duplicate"] = "Este número de cuenta ya esta en la base de datos.";
$lang["customers_available_points"] = "Puntos disponibles";
$lang["customers_available_points"] = "Puntos Disponibles";
$lang["customers_average"] = "Gasto promedio";
$lang["customers_avg_discount"] = "Descuento promedio";
$lang["customers_basic_information"] = "Información";
@@ -32,7 +31,7 @@ $lang["customers_mailchimp_activity_open"] = "Correo abierto";
$lang["customers_mailchimp_activity_total"] = "Correo enviado";
$lang["customers_mailchimp_activity_unopen"] = "Correo sin abrir";
$lang["customers_mailchimp_email_client"] = "Correo del cliente";
$lang["customers_mailchimp_info"] = "Mail chimp";
$lang["customers_mailchimp_info"] = "Correo Mailchimp";
$lang["customers_mailchimp_member_rating"] = "Porcentaje";
$lang["customers_mailchimp_status"] = "Estado";
$lang["customers_mailchimp_vip"] = "VIP";
@@ -52,3 +51,4 @@ $lang["customers_taxable"] = "Gravable";
$lang["customers_total"] = "Total";
$lang["customers_update"] = "Actualizar Cliente";
$lang["rewards_package"] = "Paquete de premios";
$lang["customers_available_points_value"] = "Puntos Disponibles";

View File

@@ -1,5 +1,4 @@
<?php
<?php
$lang["employees_basic_information"] = "Información Básica de Empleados";
$lang["employees_cannot_be_deleted"] = "No se pudieron borrar empleados. Uno o más empleados tiene ventas procesadas o estás tratando de borrarte a tí mismo(a).";
$lang["employees_change_password"] = "Cambiar Contraseña";
@@ -35,3 +34,9 @@ $lang["employees_update"] = "Actualizar Empleado";
$lang["employees_username"] = "Usuario";
$lang["employees_username_minlength"] = "El nombre de usuario debe ser por lo menos, 5 caracteres.";
$lang["employees_username_required"] = "Nombre de usuario es requerido.";
$lang["employees_manager"] = "Encargado";
$lang["employees_username_duplicate"] = "Nombre de Usuario de Empleado yá está en uso. Por favor escoja otro.";
$lang["employees_commission"] = "Tasa de Comisión";
$lang["employees_clerk"] = "Empleado";
$lang["employees_change_employee"] = "Cambio de Empleado";
$lang["employees_administrator"] = "Administrador";

View File

@@ -1,5 +1,4 @@
<?php
<?php
$lang["expenses_add_item"] = "Agregar Gasto";
$lang["expenses_amount"] = "Monto";
$lang["expenses_amount_number"] = "Monto debe ser numerico";
@@ -12,8 +11,8 @@ $lang["expenses_categories_name"] = "Categoria";
$lang["expenses_category_required"] = "categoria es un campo requerido";
$lang["expenses_check"] = "Cheque";
$lang["expenses_check_filter"] = "Cheque";
$lang["expenses_confirm_delete"] = "¿Esta seguro de querer borrar los gastos seleccionados?";
$lang["expenses_confirm_restore"] = "¿Esta seguro de querer recuperar los gastos seleccionados?";
$lang["expenses_confirm_delete"] = "¿Esta seguro que quiere borrar (el)los gasto(s) seleccionado(s)?";
$lang["expenses_confirm_restore"] = "¿Está seguro que quiere restaurar (el)los gasto(s) seleccionado(s)?";
$lang["expenses_credit"] = "Tarjeta Credito";
$lang["expenses_credit_filter"] = "Tarjeta Credito";
$lang["expenses_date"] = "Fecha";
@@ -44,3 +43,6 @@ $lang["expenses_supplier_name"] = "Proveedor";
$lang["expenses_supplier_tax_code"] = "Codigo Imp";
$lang["expenses_tax_amount"] = "Imp";
$lang["expenses_update"] = "Actualizar Gasto";
$lang["expenses_tax_amount_number"] = "Número de Importe de Impuestos";
$lang["expenses_new_supplier"] = "Nuevo Proveedor";
$lang["expenses_ip_address"] = "Dirección IP";

View File

@@ -1,5 +1,4 @@
<?php
<?php
$lang["item_kits_add_item"] = "Agregar Artículo";
$lang["item_kits_all"] = "Todo";
$lang["item_kits_cannot_be_deleted"] = "Borrado de Kit(s) de Artículos fallido.";
@@ -36,3 +35,5 @@ $lang["item_kits_successful_adding"] = "Has agregado satisfactoriamente un Kit d
$lang["item_kits_successful_deleted"] = "Has borrado satisfactoriamente";
$lang["item_kits_successful_updating"] = "Has actualizado satisfactoriamente un Kit de Artículos";
$lang["item_kits_update"] = "Actualizar Kit de Artículos";
$lang["item_kits_unit_price"] = "Precio Unitario";
$lang["item_kits_item_kit_number_duplicate"] = "El Número del Kit de Artículo yá está presente en la base de datos.";

View File

@@ -1,5 +1,4 @@
<?php
<?php
$lang["items_add_minus"] = "Inventario a agregar/substraer.";
$lang["items_allow_alt_description"] = "Permitir Descripción Alternativa";
$lang["items_amount_entry"] = "Monto entrada";
@@ -18,9 +17,9 @@ $lang["items_confirm_bulk_edit"] = "¿Estás seguro(a) de querer editar los art
$lang["items_confirm_bulk_edit_wipe_taxes"] = "Toda la información de impuesto del articulo sera cambiada.";
$lang["items_confirm_delete"] = "¿Estás seguro(a) de querer borrar los artículos seleccionados?";
$lang["items_confirm_restore"] = "Esta seguro de querer restaurar lo(s) articulo(s) seleccionada(s)?";
$lang["items_cost_price"] = "Precio de Compra";
$lang["items_cost_price_number"] = "Precio de Compra debe ser número.";
$lang["items_cost_price_required"] = "Precio de Compra es requerido.";
$lang["items_cost_price"] = "Precio de Costo";
$lang["items_cost_price_number"] = "Precio de Costo debe ser un número.";
$lang["items_cost_price_required"] = "Precio de Costo es requerido.";
$lang["items_count"] = "Actualizar Inventario";
$lang["items_csv_import_failed"] = "Falló la importación de Hoja de Cálculo";
$lang["items_csv_import_nodata_wrongformat"] = "El archivo subido no tiene datos o el formato es incorrecto.";
@@ -68,7 +67,7 @@ $lang["items_none"] = "Ninguno";
$lang["items_none_selected"] = "No has seleccionado artículos para editar";
$lang["items_nonstock"] = "Sin stock";
$lang["items_number_information"] = "Número del Artículo";
$lang["items_number_required"] = "UPC/EAN/ISBN es requerido.";
$lang["items_number_required"] = "UPC/EAN/ISBN es requerido";
$lang["items_one_or_multiple"] = "articulo(s)";
$lang["items_pack_name"] = "Nombre del Paquete";
$lang["items_qty_per_pack"] = "Cantidad por Paquete";
@@ -80,11 +79,11 @@ $lang["items_remove_image"] = "Quitar Imagen";
$lang["items_reorder_level"] = "Cantidad Mínima";
$lang["items_reorder_level_number"] = "Cantidad Mínima debe ser número.";
$lang["items_reorder_level_required"] = "Cantidad Mínima es requerido.";
$lang["items_retrive_item_info"] = "Obtener Info de Artículo";
$lang["items_retrive_item_info"] = "Obtener Información de Artículo";
$lang["items_sales_tax_1"] = "Impuesto de Ventas 1";
$lang["items_sales_tax_2"] = "Impuesto de Ventas 2";
$lang["items_search_attributes"] = "Atributos de búsqueda";
$lang["items_select_image"] = "Seleccionar Imagen";
$lang["items_search_attributes"] = "Atributos de búsqueda. Formato de fecha Y-m-d";
$lang["items_select_image"] = "Seleccionar Imagen";
$lang["items_serialized_items"] = "Artículos Serializados";
$lang["items_standard"] = "Estándar";
$lang["items_stock"] = "Existencia";
@@ -110,3 +109,10 @@ $lang["items_unit_price_required"] = "Precio de Venta es requerido.";
$lang["items_upc_database"] = "Base de datos UPC";
$lang["items_update"] = "Actualizar Artículo";
$lang["items_use_inventory_menu"] = "Usar Menú de Inventario";
$lang["items_markup"] = "El marcado de elementos está habilitado";
$lang["items_tax_3"] = "Impuestos 3";
$lang["items_item_id"] = "Id del Artículo";
$lang["items_is_printed"] = "No impreso";
$lang["items_edit"] = "Editar";
$lang["items_categories"] = "Categorías. Seleccione el número de artículo.";
$lang["items_category_new"] = "Nueva Categoría";

View File

@@ -1,13 +1,12 @@
<?php
<?php
$lang["login_gcaptcha"] = "No soy un robot.";
$lang["login_go"] = "Ir";
$lang["login_invalid_gcaptcha"] = "Inválido, no soy un robot.";
$lang["login_invalid_gcaptcha"] = "Por favor verifique si usted no es un robot.";
$lang["login_invalid_installation"] = "La instalación no es correcta, comprueba el fichero php.ini.";
$lang["login_invalid_username_and_password"] = "Usuario o Contraseña no válidos.";
$lang["login_invalid_username_and_password"] = "Usuario y/o Contraseña no validos.";
$lang["login_login"] = "Iniciar Sesión";
$lang["login_logout"] = "";
$lang["login_migration_needed"] = "";
$lang["login_logout"] = "Cerrar sesión";
$lang["login_migration_needed"] = "La migración de la base de datos a %1 se iniciará después del inicio de sesión.";
$lang["login_password"] = "Contraseña";
$lang["login_username"] = "Usuario";
$lang["login_welcome"] = "";
$lang["login_welcome"] = "Bienvenido a %1!";

View File

@@ -1,9 +1,8 @@
<?php
<?php
$lang["module_attributes"] = "Atributos";
$lang["module_attributes_desc"] = "Agregar, Actualizar, Eliminar y Buscar atributos.";
$lang["module_both"] = "Ambos";
$lang["module_cashups"] = "Turnos";
$lang["module_cashups"] = "Día de apertura o Cierre";
$lang["module_cashups_desc"] = "Agregar, Actualizar, Borrar y Buscar Turnos.";
$lang["module_config"] = "Configuración de la Tienda";
$lang["module_config_desc"] = "Cambiar la configuración de OSPOS.";
@@ -39,3 +38,9 @@ $lang["module_suppliers"] = "Proveedores";
$lang["module_suppliers_desc"] = "Agregar, Actualizar, Borrar y Buscar Proveedores.";
$lang["module_taxes"] = "Impuestos";
$lang["module_taxes_desc"] = "Configurar Impuestos de Ventas.";
$lang["module_timeclocks_categories_desc"] = "Agregar, Actualizar, Borrar, y buscar Reloj de Registro de Categorías";
$lang["module_timeclocks_categories"] = "Reloj de Registro de Categorías";
$lang["module_timeclocks_desc"] = "Reloj de Registro.";
$lang["module_timeclocks"] = "Reloj de Registro";
$lang["module_admin_cashups_desc"] = "Administrador de retiro";
$lang["module_admin_cashups"] = "Administrador de retiro";

View File

@@ -1,5 +1,4 @@
<?php
<?php
$lang["receivings_cancel_receiving"] = "Cancelar";
$lang["receivings_cannot_be_deleted"] = "Ingreso(s) no se borraron.";
$lang["receivings_comments"] = "Comentarios";
@@ -34,7 +33,7 @@ $lang["receivings_reference"] = "Referencia";
$lang["receivings_register"] = "Entrada de Artículos";
$lang["receivings_requisition"] = "Requisición";
$lang["receivings_return"] = "Devolver";
$lang["receivings_select_supplier"] = "Seleccionar Proveedor (Opcional)";
$lang["receivings_select_supplier"] = "Seleccionar Proveedor (Requerido)";
$lang["receivings_ship_pack"] = "Paquete de Envío";
$lang["receivings_start_typing_supplier_name"] = "Empieza a escribir el nombre del proveedor...";
$lang["receivings_stock"] = "Inventario";
@@ -52,3 +51,6 @@ $lang["receivings_transaction_failed"] = "La(s) Transaccion(es) de Entrada Falla
$lang["receivings_unable_to_add_item"] = "No se pudo agregar el artículo.";
$lang["receivings_unsuccessfully_updated"] = "Actualizacion de Recepción fallida.";
$lang["receivings_update"] = "Editar";
$lang["receivings_daily"] = "Recepción Diaria";
$lang["receivings_confirm_restore"] = "Seguro que quiere restaurar esta recepción? Éste será restaurado.";
$lang["receivings_amount_due"] = "Importe Adeudado";

View File

@@ -1,5 +1,4 @@
<?php
<?php
$lang["reports_all"] = "Todo";
$lang["reports_authority"] = "Autorización";
$lang["reports_canceled"] = "Cancelado";
@@ -110,7 +109,7 @@ $lang["reports_sold_to"] = "Vendido A";
$lang["reports_stock_location"] = "Ubicación de Inventario";
$lang["reports_sub_total_value"] = "SubTotal";
$lang["reports_subtotal"] = "Sub-total";
$lang["reports_summary_reports"] = "Reportes Resumidos";
$lang["reports_summary_reports"] = "Reportes Resumidos de Ventas";
$lang["reports_supplied_by"] = "Provisto por";
$lang["reports_supplier"] = "Proveedor";
$lang["reports_suppliers"] = "Proveedores";
@@ -139,3 +138,9 @@ $lang["reports_unit_price"] = "Precio de Venta";
$lang["reports_used"] = "Puntos usados";
$lang["reports_work_orders"] = "Ordenes";
$lang["reports_zero_and_less"] = "Cero y negativos";
$lang["reports_tax_name"] = "Nombres de Impuestos";
$lang["reports_sold_items"] = "Artículos Vendidos";
$lang["reports_service_charge"] = "Costo de Servicio";
$lang["reports_expenses_payment_amount"] = "Pago";
$lang["reports_detailed_receivings_report_input"] = "Entrada detallada del reporte de recepción";
$lang["reports_commission"] = "Comisión";

View File

@@ -1,5 +1,4 @@
<?php
<?php
$lang["customers_available_points"] = "Puntos disponibles";
$lang["rewards_package"] = "Premios";
$lang["rewards_remaining_balance"] = "El remanente de puntos es ";
@@ -10,7 +9,7 @@ $lang["sales_amount_tendered"] = "Cantidad Recibida";
$lang["sales_authorized_signature"] = "Firma Autorizada";
$lang["sales_cancel_sale"] = "Cancelar Venta";
$lang["sales_cash"] = "Efectivo";
$lang["sales_cash_adjustment"] = "";
$lang["sales_cash_adjustment"] = "Ajuste de Efectivo";
$lang["sales_cash_deposit"] = "Deposito Efectivo";
$lang["sales_cash_filter"] = "Efectivo";
$lang["sales_change_due"] = "Cambio";
@@ -113,7 +112,7 @@ $lang["sales_price"] = "Precio";
$lang["sales_print_after_sale"] = "Imprimir recibo después de una venta";
$lang["sales_quantity"] = "Cantidad";
$lang["sales_quantity_less_than_reorder_level"] = "Advertencia. La cantidad deseada es insuficiente.";
$lang["sales_quantity_less_than_zero"] = "Advertencia. La cantidad deseada es insuficiente. Puedes procesar la venta pero verifica el inventario.";
$lang["sales_quantity_less_than_zero"] = "Advertencia. La cantidad deseada está agotada en stock. Puedes procesar la venta pero audita el inventario.";
$lang["sales_quantity_of_items"] = "Cantidad de %1 articulos";
$lang["sales_quote"] = "Cotizar";
$lang["sales_quote_number"] = "Número de Presupuesto";
@@ -167,7 +166,7 @@ $lang["sales_taxed_ind"] = "Ventas gravadas";
$lang["sales_total"] = "Total";
$lang["sales_total_tax_exclusive"] = "Sin impuesto";
$lang["sales_transaction_failed"] = "La transacción de venta falló.";
$lang["sales_unable_to_add_item"] = "No se puede agregar el artículo a la venta";
$lang["sales_unable_to_add_item"] = "Error al agregar artículo a la venta. Agotado";
$lang["sales_unsuccessfully_deleted"] = "Ha fallado la eliminación de la Venta.";
$lang["sales_unsuccessfully_restored"] = "Restaurar Venta fallida.";
$lang["sales_unsuccessfully_suspended_sale"] = "Venta suspendida satisfactoriamente.";
@@ -181,3 +180,22 @@ $lang["sales_work_order_number"] = "Numero Orden Trabajo";
$lang["sales_work_order_number_duplicate"] = "El numero de orden de trabajo debe ser unico.";
$lang["sales_work_order_sent"] = "Orden de trabajo enviada a";
$lang["sales_work_order_unsent"] = "Orden de trabajo fallida al enviar a";
$lang["sales_wholesale"] = "Precio al por mayor";
$lang["sales_visa"] = "Tarjeta Visa";
$lang["sales_sales_total"] = "Ventas Totales";
$lang["sales_show_due"] = "Mostrar los Importes Adeudados";
$lang["sales_service_charge"] = "Costo de Servicio";
$lang["sales_remove_discount"] = "Descuentos";
$lang["sales_payments"] = "Pagos";
$lang["sales_mc"] = "Tarjeta Master Card";
$lang["sales_giftcard_filter"] = "Tarjeta de Regalo";
$lang['sales_daily_sales'] = "Sus Ventas Diarias";
$lang["sales_customer_total_spent"] = "Total Gastado";
$lang["sales_current_table"] = "Tabla Actual";
$lang["sales_complete"] = "Completa";
$lang["sales_company_name"] = "Nombre de Comañía";
$lang["sales_close"] = "Cerrar Lista";
$lang["sales_cash_4"] = "20";
$lang["sales_cash_3"] = "10";
$lang["sales_cash_2"] = "5";
$lang["sales_cash_1"] = "1";

View File

@@ -1,5 +1,4 @@
<?php
<?php
$lang["taxes_add_exception"] = "Añadir excepción";
$lang["taxes_cascade"] = "Cascada";
$lang["taxes_cascade_sequence"] = "Secuencia en cascada";
@@ -78,3 +77,4 @@ $lang["taxes_tax_rounding"] = "Redondeo de Impuestos";
$lang["taxes_tax_type"] = "Tipo de Impuesto";
$lang["taxes_update"] = "Actualizar Tasa de Impuesto";
$lang["taxes_vat_tax"] = "IVA";
$lang["taxes_no_taxes"] = "Sin Importe de Impuestos";

View File

@@ -1,5 +1,4 @@
<?php
<?php
$lang["items_add_minus"] = "";
$lang["items_allow_alt_description"] = "";
$lang["items_amount_entry"] = "";
@@ -7,17 +6,17 @@ $lang["items_bulk_edit"] = "";
$lang["items_buy_price_required"] = "";
$lang["items_cannot_be_deleted"] = "";
$lang["items_cannot_find_item"] = "";
$lang["items_category"] = "";
$lang["items_category_required"] = "";
$lang["items_change_all_to_allow_alt_desc"] = "";
$lang["items_change_all_to_not_allow_allow_desc"] = "";
$lang["items_category"] = "Categorie";
$lang["items_category_required"] = "Campul Categorie este obligatoriu.";
$lang["items_change_all_to_allow_alt_desc"] = "Permite descriere alternativa pentru tot.";
$lang["items_change_all_to_not_allow_allow_desc"] = "Nu permite descriere alternativa pentru tot.";
$lang["items_change_all_to_serialized"] = "";
$lang["items_change_all_to_unserialized"] = "";
$lang["items_change_image"] = "";
$lang["items_confirm_bulk_edit"] = "";
$lang["items_confirm_bulk_edit_wipe_taxes"] = "";
$lang["items_confirm_delete"] = "";
$lang["items_confirm_restore"] = "";
$lang["items_change_image"] = "Schimbare imagine";
$lang["items_confirm_bulk_edit"] = "Sigur doriti editarea produsului/produselor selectate?";
$lang["items_confirm_bulk_edit_wipe_taxes"] = "Toate informatiile cu privire la taxe, vor fi inlocuite.";
$lang["items_confirm_delete"] = "Sigur doriti stergerea produselor selectate?";
$lang["items_confirm_restore"] = "Sigur doriti restaurarea produselor selectate?";
$lang["items_cost_price"] = "";
$lang["items_cost_price_number"] = "";
$lang["items_cost_price_required"] = "";
@@ -110,3 +109,5 @@ $lang["items_unit_price_required"] = "";
$lang["items_upc_database"] = "";
$lang["items_update"] = "";
$lang["items_use_inventory_menu"] = "";
$lang["items_categories"] = "Categorii - selectare numar produs.";
$lang["items_category_new"] = "Categorie noua";

View File

@@ -18,10 +18,11 @@ class Employee extends Person
return ($this->db->get()->num_rows() == 1);
}
public function username_exists($username)
public function username_exists($employee_id, $username)
{
$this->db->from('employees');
$this->db->where('employees.username', $username);
$this->db->where('employees.person_id <>', $employee_id);
return ($this->db->get()->num_rows() == 1);
}

View File

@@ -10,7 +10,7 @@ class Summary_items extends Summary_report
array('item_name' => $this->lang->line('reports_item')),
array('category' => $this->lang->line('reports_category')),
array('unit_price' => $this->lang->line('reports_unit_price'), 'sorter' => 'number_sorter'),
array('quantity' => $this->lang->line('reports_quantity')),
array('quantity' => $this->lang->line('reports_quantity'), 'sorter' => 'number_sorter'),
array('subtotal' => $this->lang->line('reports_subtotal'), 'sorter' => 'number_sorter'),
array('tax' => $this->lang->line('reports_tax'), 'sorter' => 'number_sorter'),
array('total' => $this->lang->line('reports_total'), 'sorter' => 'number_sorter'),

View File

@@ -8,7 +8,7 @@ class Summary_taxes extends Summary_report
{
return array(
array('tax_percent' => $this->lang->line('reports_tax_percent'), 'sorter' => 'number_sorter'),
array('report_count' => $this->lang->line('reports_sales')),
array('report_count' => $this->lang->line('reports_sales'), 'sorter' => 'number_sorter'),
array('subtotal' => $this->lang->line('reports_subtotal'), 'sorter' => 'number_sorter'),
array('tax' => $this->lang->line('reports_tax'), 'sorter' => 'number_sorter'),
array('total' => $this->lang->line('reports_total'), 'sorter' => 'number_sorter'));

View File

@@ -209,9 +209,10 @@ $(document).ready(function()
last_name: 'required',
username:
{
required: true,
minlength: 5,
remote: "<?php echo site_url($controller_name . '/check_username')?>"
remote: '<?php echo site_url("$controller_name/check_username/$employee_id")?>'
},
password:
{

View File

@@ -1,7 +1,7 @@
{
"name": "opensourcepos",
"description": "Open Source Point of Sale is a web based POS system written in the PHP language. It uses MySQL as backend and has a simple user interface",
"version": "3.4.0",
"version": "3.3.5",
"license": "MIT",
"authors": [
"jekkos <jekkos - at - opensourcepos.org>",

View File

@@ -14,7 +14,7 @@ networks:
services:
ospos:
image: jekkos/opensourcepos:3.4.0
image: jekkos/opensourcepos:3.3.5
restart: always
depends_on:
- mysql

View File

@@ -14,7 +14,7 @@ networks:
services:
ospos:
image: jekkos/opensourcepos:3.3.4
image: jekkos/opensourcepos:3.3.5
restart: always
depends_on:
- mysql

View File

@@ -1,6 +1,6 @@
{
"name": "opensourcepos",
"version": "3.4.0",
"version": "3.3.5",
"description": "Open Source Point of Sale is a web based point of sale system written in the PHP language. It uses MySQL as the data storage back-end and has a simple user interface.",
"main": "index.php",
"license": "MIT",