diff --git a/AGENTS.md b/AGENTS.md
index 52163b0d1..bbca08c83 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -12,7 +12,7 @@ This document provides guidance for AI agents working on the Open Source Point o
- PHP 8.2+ features acceptable (named arguments, enums, readonly properties)
- Write PHP 8.2+ compatible code with proper type declarations
- Always import classes, functions, and constants with a `use` statement at the top of the file instead of referencing them inline via fully-qualified name (e.g. `use Config\Database;` then `Database::connect()`, not `\Config\Database::connect()`)
-- Do not add comments or docblocks that merely restate what the code already makes clear — only comment on non-obvious rationale, constraints, or behavior
+- No useless comments or docblocks: if the code speaks for itself, explanatory comments are unnecessary. Do not add comments or docblocks that merely restate what the code already makes clear (e.g. `@param array $items` next to `array $items`, or a comment repeating a method's name) — only comment on non-obvious rationale, constraints, or behavior
- Views in `app/Views/errors/html/` are excluded from the fixer
- Run fixer before committing: `vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.no-header.php`
- **JavaScript**: use `const` for variables that are never reassigned, `let` for variables that are. Never use `var`.
diff --git a/app/Controllers/Attributes.php b/app/Controllers/Attributes.php
index de78f15d4..0b59836ae 100644
--- a/app/Controllers/Attributes.php
+++ b/app/Controllers/Attributes.php
@@ -257,26 +257,26 @@ class Attributes extends Secure_Controller
}
/**
- * @param int $definition_id
+ * @param int $definitionId
* @return string
*/
- public function getView(int $definition_id = NO_DEFINITION_ID): string
+ public function getView(int $definitionId = NO_DEFINITION_ID): string
{
- $info = $this->attribute->getAttributeInfo($definition_id);
+ $info = $this->attribute->getAttributeInfo($definitionId);
foreach (get_object_vars($info) as $property => $value) {
$info->$property = $value;
}
- $data['definition_id'] = $definition_id;
- $data['definition_values'] = $this->attribute->getDefinitionValues($definition_id);
- $data['definition_group'] = $this->attribute->getDefinitionsByType(GROUP, $definition_id);
+ $data['definition_id'] = $definitionId;
+ $data['definition_values'] = $this->attribute->getDefinitionValues($definitionId);
+ $data['definition_group'] = $this->attribute->getDefinitionsByType(GROUP, $definitionId);
$data['definition_group'][''] = lang('Common.none_selected_text');
$data['definition_info'] = $info;
- $show_all = Attribute::SHOW_IN_ITEMS | Attribute::SHOW_IN_RECEIVINGS | Attribute::SHOW_IN_SALES;
- $data['definition_flags'] = $this->get_attributes($show_all);
- $selected_flags = $info->definition_flags === '' ? $show_all : $info->definition_flags;
- $data['selected_definition_flags'] = $this->get_attributes($selected_flags);
+ $showAll = Attribute::SHOW_IN_ITEMS | Attribute::SHOW_IN_RECEIVINGS | Attribute::SHOW_IN_SALES | Attribute::SHOW_IN_SEARCH;
+ $data['definition_flags'] = $this->get_attributes($showAll);
+ $selectedFlags = $info->definition_flags === '' ? $showAll : $info->definition_flags;
+ $data['selected_definition_flags'] = $this->get_attributes($selectedFlags);
return view('attributes/form', $data);
}
diff --git a/app/Controllers/Items.php b/app/Controllers/Items.php
index f4a7b33bf..33529261b 100644
--- a/app/Controllers/Items.php
+++ b/app/Controllers/Items.php
@@ -76,7 +76,7 @@ class Items extends Secure_Controller
{
$this->session->set('allow_temp_items', 0);
- $data['table_headers'] = get_items_manage_table_headers();
+ $data['table_headers'] = getItemsManageTableHeaders();
// Restore stock_location from URL or session
$stockLocation = $this->request->getGet('stock_location', FILTER_SANITIZE_NUMBER_INT);
@@ -111,12 +111,14 @@ class Items extends Secure_Controller
$search = $this->request->getGet('search', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$limit = $this->request->getGet('limit', FILTER_SANITIZE_NUMBER_INT);
$offset = $this->request->getGet('offset', FILTER_SANITIZE_NUMBER_INT);
- $sort = $this->sanitizeSortColumn(item_headers(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'item_id');
$order = $this->request->getGet('order', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$this->item_lib->set_item_location($this->request->getGet('stock_location'));
- $definitionNames = $this->attribute->getDefinitionsByFlags(Attribute::SHOW_IN_ITEMS);
+ $definitionNamesWithTypes = $this->attribute->getDefinitionsByFlags(Attribute::SHOW_IN_ITEMS, true);
+ $definitionIds = array_keys($definitionNamesWithTypes);
+
+ $sort = $this->sanitizeSortColumn(itemSortColumns($definitionIds), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'items.item_id');
$filters = [
'start_date' => $this->request->getGet('start_date'),
@@ -129,25 +131,79 @@ class Items extends Secure_Controller
'search_custom' => false,
'is_deleted' => false,
'temporary' => false,
- 'definition_ids' => array_keys($definitionNames)
+ 'definition_ids' => $definitionIds
];
// Check if any filter is set in the multiselect dropdown
- $request_filters = array_fill_keys($this->request->getGet('filters', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? [], true);
- $filters = array_merge($filters, $request_filters);
- $items = $this->item->search($search, $filters, $limit, $offset, $sort, $order);
- $total_rows = $this->item->get_found_rows($search, $filters);
- $data_rows = [];
+ $requestFilters = array_fill_keys($this->request->getGet('filters', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? [], true);
+ $filters = array_merge($filters, $requestFilters);
- foreach ($items->getResult() as $item) {
- $data_rows[] = get_item_data_row($item);
+ // When search_custom is enabled, include attributes that are searchable but may not be visible in table
+ if (!empty($filters['search_custom'])) {
+ $searchableDefinitions = $this->attribute->getDefinitionsByFlags(Attribute::SHOW_IN_ITEMS | Attribute::SHOW_IN_SEARCH);
+ $filters['definition_ids'] = array_keys($searchableDefinitions);
+ }
+
+ $items = $this->item->search($search, $filters, $limit, $offset, $sort, $order);
+ $itemResults = $items->getResult();
+ $totalRows = $this->item->get_found_rows($search, $filters);
+ $taxPercentsByItemId = $this->buildTaxPercentsByItem($itemResults);
+
+ $dataRows = [];
+
+ foreach ($itemResults as $item) {
+ $dataRows[] = getItemDataRow($item, $definitionNamesWithTypes, $taxPercentsByItemId);
if ($item->pic_filename !== null) {
$this->update_pic_filename($item);
}
}
- return $this->response->setJSON(['total' => $total_rows, 'rows' => $data_rows]);
+ return $this->response->setJSON(['total' => $totalRows, 'rows' => $dataRows]);
+ }
+
+ /**
+ * @return array item_id => formatted tax percents string
+ */
+ private function buildTaxPercentsByItem(array $items): array
+ {
+ $config = config(OSPOS::class)->settings;
+ $taxPercentsByItemId = [];
+
+ if ($config['use_destination_based_tax']) {
+ $taxCategoryIds = array_unique(array_filter(array_map(fn ($item) => $item->tax_category_id, $items)));
+
+ if (empty($taxCategoryIds)) {
+ return [];
+ }
+
+ $taxCategoryNames = [];
+ foreach ($this->tax_category->get_multiple_info($taxCategoryIds)->getResult() as $taxCategoryInfo) {
+ $taxCategoryNames[$taxCategoryInfo->tax_category_id] = $taxCategoryInfo->tax_category;
+ }
+
+ foreach ($items as $item) {
+ if ($item->tax_category_id !== null && isset($taxCategoryNames[$item->tax_category_id])) {
+ $taxPercentsByItemId[$item->item_id] = $taxCategoryNames[$item->tax_category_id];
+ }
+ }
+ } else {
+ $itemIds = array_map(fn ($item) => $item->item_id, $items);
+ $itemTaxesByItemId = $this->item_taxes->getInfoMultiple($itemIds);
+
+ foreach ($itemIds as $itemId) {
+ $taxPercents = '';
+ foreach ($itemTaxesByItemId[$itemId] ?? [] as $taxInfo) {
+ $taxPercents .= to_tax_decimals($taxInfo['percent']) . '%, ';
+ }
+
+ // Remove ', ' from last item
+ $taxPercents = substr($taxPercents, 0, -2);
+ $taxPercentsByItemId[$itemId] = !$taxPercents ? '-' : $taxPercents;
+ }
+ }
+
+ return $taxPercentsByItemId;
}
/**
@@ -276,17 +332,21 @@ class Items extends Secure_Controller
}
/**
- * @param string $item_ids
+ * @param string $itemIds
* @return ResponseInterface
*/
- public function getRow(string $item_ids): ResponseInterface // TODO: An array would be better for parameter.
+ public function getRow(string $itemIds): ResponseInterface // TODO: An array would be better for parameter.
{
- $item_infos = $this->item->get_multiple_info(explode(':', $item_ids), $this->item_lib->get_item_location());
+ $itemInfos = $this->item->get_multiple_info(explode(':', $itemIds), $this->item_lib->get_item_location());
+ $itemResults = $itemInfos->getResult();
+
+ $definitionNames = $this->attribute->getDefinitionsByFlags(Attribute::SHOW_IN_ITEMS, true);
+ $taxPercentsByItemId = $this->buildTaxPercentsByItem($itemResults);
$result = [];
- foreach ($item_infos->getResult() as $item_info) {
- $result[$item_info->item_id] = get_item_data_row($item_info);
+ foreach ($itemResults as $itemInfo) {
+ $result[$itemInfo->item_id] = getItemDataRow($itemInfo, $definitionNames, $taxPercentsByItemId);
}
return $this->response->setJSON($result);
diff --git a/app/Controllers/Secure_Controller.php b/app/Controllers/Secure_Controller.php
index 36daeebd5..535825d3e 100644
--- a/app/Controllers/Secure_Controller.php
+++ b/app/Controllers/Secure_Controller.php
@@ -75,7 +75,17 @@ class Secure_Controller extends BaseController
public function sanitizeSortColumn($headers, $field, $default): string
{
- return $field != null && in_array($field, array_keys(array_merge(...$headers))) ? $field : $default;
+ if ($field === null) {
+ return $default;
+ }
+
+ // Flatten keys directly as array_merge() renumbers numeric string keys
+ $validColumns = [];
+ foreach ($headers as $header) {
+ $validColumns[] = (string) array_key_first($header);
+ }
+
+ return in_array((string) $field, $validColumns, true) ? $field : $default;
}
/**
diff --git a/app/Helpers/tabular_helper.php b/app/Helpers/tabular_helper.php
index 129e6c921..2670929c0 100644
--- a/app/Helpers/tabular_helper.php
+++ b/app/Helpers/tabular_helper.php
@@ -2,8 +2,6 @@
use App\Models\Attribute;
use App\Models\Employee;
-use App\Models\Item_taxes;
-use App\Models\Tax_category;
use CodeIgniter\Database\ResultInterface;
use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\Session\Session;
@@ -402,10 +400,33 @@ function item_headers(): array
];
}
+/**
+ * Get all sortable column keys for items table, including dynamic attribute columns.
+ *
+ * @param array|null $definitionIds Attribute definition IDs to append as sortable columns.
+ * If null, resolved via a query against SHOW_IN_ITEMS.
+ * @return array Array of column headers in the format sanitizeSortColumn() expects
+ */
+function itemSortColumns(?array $definitionIds = null): array
+{
+ if ($definitionIds === null) {
+ $attribute = model(Attribute::class);
+ $definitionIds = array_keys($attribute->getDefinitionsByFlags($attribute::SHOW_IN_ITEMS));
+ }
+
+ $headers = item_headers();
+
+ foreach ($definitionIds as $definitionId) {
+ $headers[] = [(string) $definitionId => ''];
+ }
+
+ return $headers;
+}
+
/**
* Get the header for the items tabular view
*/
-function get_items_manage_table_headers(): string
+function getItemsManageTableHeaders(): string
{
$attribute = model(Attribute::class);
$config = config(OSPOS::class)->settings;
@@ -421,8 +442,8 @@ function get_items_manage_table_headers(): string
$headers[] = ['item_pic' => lang('Items.image'), 'sortable' => false];
- foreach ($definitionsWithTypes as $definition_id => $definitionInfo) {
- $headers[] = [$definition_id => $definitionInfo['name'], 'sortable' => false];
+ foreach ($definitionsWithTypes as $definitionId => $definitionInfo) {
+ $headers[] = [$definitionId => $definitionInfo['name'], 'sortable' => true];
}
$headers[] = ['inventory' => '', 'escape' => false];
@@ -433,32 +454,17 @@ function get_items_manage_table_headers(): string
/**
* Get the html data row for the item
+ *
+ * @param object $item
+ * @param array $definitionNames Attribute definitions with types, keyed by definition_id (see Attribute::getDefinitionsByFlags(..., true))
+ * @param array $taxPercentsByItemId Pre-computed tax percent strings, keyed by item_id (see Items::buildTaxPercentsByItem())
+ * @return array
*/
-function get_item_data_row(object $item): array
+function getItemDataRow(object $item, array $definitionNames, array $taxPercentsByItemId): array
{
- $attribute = model(Attribute::class);
- $item_taxes = model(Item_taxes::class);
- $tax_category = model(Tax_category::class);
$config = config(OSPOS::class)->settings;
- if ($config['use_destination_based_tax']) {
- if ($item->tax_category_id == null) { // TODO: === ?
- $tax_percents = '-';
- } else {
- $tax_category_info = $tax_category->get_info($item->tax_category_id);
- $tax_percents = $tax_category_info->tax_category;
- }
- } else {
- $item_tax_info = $item_taxes->get_info($item->item_id);
- $tax_percents = '';
- foreach ($item_tax_info as $tax_info) {
- $tax_percents .= to_tax_decimals($tax_info['percent']) . '%, ';
- }
-
- // Remove ', ' from last item
- $tax_percents = substr($tax_percents, 0, -2);
- $tax_percents = !$tax_percents ? '-' : $tax_percents;
- }
+ $taxPercents = $taxPercentsByItemId[$item->item_id] ?? '-';
$controller = get_controller();
@@ -471,8 +477,8 @@ function get_item_data_row(object $item): array
: glob("./uploads/item_pics/$item->pic_filename");
if (sizeof($images) > 0) {
- $image_path = ltrim($images[0], './');
- $image .= '
';
+ $imagePath = ltrim($images[0], './');
+ $image .= '
';
}
}
@@ -480,8 +486,6 @@ function get_item_data_row(object $item): array
$item->name .= NAME_SEPARATOR . $item->pack_name;
}
- $definition_names = $attribute->getDefinitionsByFlags($attribute::SHOW_IN_ITEMS, true);
-
$columns = [
'items.item_id' => $item->item_id,
'item_number' => $item->item_number,
@@ -491,7 +495,7 @@ function get_item_data_row(object $item): array
'cost_price' => to_currency($item->cost_price),
'unit_price' => to_currency($item->unit_price),
'quantity' => to_quantity_decimals($item->quantity),
- 'tax_percents' => !$tax_percents ? '-' : $tax_percents,
+ 'tax_percents' => !$taxPercents ? '-' : $taxPercents,
'item_pic' => $image
];
@@ -524,7 +528,7 @@ function get_item_data_row(object $item): array
)
];
- return $columns + expand_attribute_values($definition_names, (array) $item) + $icons;
+ return $columns + expand_attribute_values($definitionNames, (array) $item) + $icons;
}
function giftcard_headers(): array
diff --git a/app/Language/ar-EG/Attributes.php b/app/Language/ar-EG/Attributes.php
index b286580a2..c754d6009 100644
--- a/app/Language/ar-EG/Attributes.php
+++ b/app/Language/ar-EG/Attributes.php
@@ -1,34 +1,36 @@
"الميزات لا يمكن أن تحتوي على ':' أو'|'",
- "confirm_delete" => "هل أنت متأكد من أنك تريد حذف الميزات المحددة ؟",
- "confirm_restore" => "هل أنت متأكد من أنك تريد استعادة السمة (السمات) المحددة؟",
- "definition_cannot_be_deleted" => "لا يمكن حذف السمات المحددة",
- "definition_invalid_group" => "المجموعة المحددة غير موجودة أو غير صالحة.",
- "definition_error_adding_updating" => "لا يمكن إضافة السمة {0} أو تحديثها. يرجى التحقق من سجل الخطأ.",
- "definition_flags" => "رؤية الميزات",
- "definition_group" => "المجموعة",
- "definition_id" => "كود",
- "definition_name" => "إضافة ميزة",
- "definition_name_required" => "اسم الميزة هي خانة اجبارية",
- "definition_one_or_multiple" => "ميزة/ميزات",
- "definition_successful_adding" => "لقد تم إضافة صنف بنجاح",
- "definition_successful_deleted" => "لقد تم حذف ميزة بنجاح",
- "definition_successful_updating" => "تم تعديل الميزة بنجاح",
- "definition_type" => "نوع الميزة",
- "definition_type_required" => "نوع الميزة هي خانة إجبارية",
- "definition_unit" => "وحدة قياس",
- "definition_values" => "قيمة الميزة",
- "new" => "اضافة ميزة جديده",
- "no_attributes_to_display" => "لا يوجد اصناف للعرض",
- "receipt_visibility" => "وصل",
- "show_in_items" => "اظهار في الصنف",
- "show_in_items_visibility" => "الصنف",
- "show_in_receipt" => "اظهار على الوصل",
- "show_in_receivings" => "اظهار في استلام البضائع",
- "show_in_receivings_visibility" => "استلام البضائع",
- "show_in_sales" => "اظهار خلال البيع",
- "show_in_sales_visibility" => "البيع",
- "update" => "تحديث الميزات",
+ 'attribute_value_invalid_chars' => 'الميزات لا يمكن أن تحتوي على \':\' أو\'|\'',
+ 'confirm_delete' => 'هل أنت متأكد من أنك تريد حذف الميزات المحددة ؟',
+ 'confirm_restore' => 'هل أنت متأكد من أنك تريد استعادة السمة (السمات) المحددة؟',
+ 'definition_cannot_be_deleted' => 'لا يمكن حذف السمات المحددة',
+ 'definition_invalid_group' => 'المجموعة المحددة غير موجودة أو غير صالحة.',
+ 'definition_error_adding_updating' => 'لا يمكن إضافة السمة {0} أو تحديثها. يرجى التحقق من سجل الخطأ.',
+ 'definition_flags' => 'رؤية الميزات',
+ 'definition_group' => 'المجموعة',
+ 'definition_id' => 'كود',
+ 'definition_name' => 'إضافة ميزة',
+ 'definition_name_required' => 'اسم الميزة هي خانة اجبارية',
+ 'definition_one_or_multiple' => 'ميزة/ميزات',
+ 'definition_successful_adding' => 'لقد تم إضافة صنف بنجاح',
+ 'definition_successful_deleted' => 'لقد تم حذف ميزة بنجاح',
+ 'definition_successful_updating' => 'تم تعديل الميزة بنجاح',
+ 'definition_type' => 'نوع الميزة',
+ 'definition_type_required' => 'نوع الميزة هي خانة إجبارية',
+ 'definition_unit' => 'وحدة قياس',
+ 'definition_values' => 'قيمة الميزة',
+ 'new' => 'اضافة ميزة جديده',
+ 'no_attributes_to_display' => 'لا يوجد اصناف للعرض',
+ 'receipt_visibility' => 'وصل',
+ 'show_in_items' => 'اظهار في الصنف',
+ 'show_in_items_visibility' => 'الصنف',
+ 'show_in_receipt' => 'اظهار على الوصل',
+ 'show_in_receivings' => 'اظهار في استلام البضائع',
+ 'show_in_receivings_visibility' => 'استلام البضائع',
+ 'show_in_sales' => 'اظهار خلال البيع',
+ 'show_in_sales_visibility' => 'البيع',
+ 'show_in_search' => 'اظهار في البحث',
+ 'show_in_search_visibility' => 'بحث',
+ 'update' => 'تحديث الميزات',
];
diff --git a/app/Language/ar-LB/Attributes.php b/app/Language/ar-LB/Attributes.php
index b286580a2..c754d6009 100644
--- a/app/Language/ar-LB/Attributes.php
+++ b/app/Language/ar-LB/Attributes.php
@@ -1,34 +1,36 @@
"الميزات لا يمكن أن تحتوي على ':' أو'|'",
- "confirm_delete" => "هل أنت متأكد من أنك تريد حذف الميزات المحددة ؟",
- "confirm_restore" => "هل أنت متأكد من أنك تريد استعادة السمة (السمات) المحددة؟",
- "definition_cannot_be_deleted" => "لا يمكن حذف السمات المحددة",
- "definition_invalid_group" => "المجموعة المحددة غير موجودة أو غير صالحة.",
- "definition_error_adding_updating" => "لا يمكن إضافة السمة {0} أو تحديثها. يرجى التحقق من سجل الخطأ.",
- "definition_flags" => "رؤية الميزات",
- "definition_group" => "المجموعة",
- "definition_id" => "كود",
- "definition_name" => "إضافة ميزة",
- "definition_name_required" => "اسم الميزة هي خانة اجبارية",
- "definition_one_or_multiple" => "ميزة/ميزات",
- "definition_successful_adding" => "لقد تم إضافة صنف بنجاح",
- "definition_successful_deleted" => "لقد تم حذف ميزة بنجاح",
- "definition_successful_updating" => "تم تعديل الميزة بنجاح",
- "definition_type" => "نوع الميزة",
- "definition_type_required" => "نوع الميزة هي خانة إجبارية",
- "definition_unit" => "وحدة قياس",
- "definition_values" => "قيمة الميزة",
- "new" => "اضافة ميزة جديده",
- "no_attributes_to_display" => "لا يوجد اصناف للعرض",
- "receipt_visibility" => "وصل",
- "show_in_items" => "اظهار في الصنف",
- "show_in_items_visibility" => "الصنف",
- "show_in_receipt" => "اظهار على الوصل",
- "show_in_receivings" => "اظهار في استلام البضائع",
- "show_in_receivings_visibility" => "استلام البضائع",
- "show_in_sales" => "اظهار خلال البيع",
- "show_in_sales_visibility" => "البيع",
- "update" => "تحديث الميزات",
+ 'attribute_value_invalid_chars' => 'الميزات لا يمكن أن تحتوي على \':\' أو\'|\'',
+ 'confirm_delete' => 'هل أنت متأكد من أنك تريد حذف الميزات المحددة ؟',
+ 'confirm_restore' => 'هل أنت متأكد من أنك تريد استعادة السمة (السمات) المحددة؟',
+ 'definition_cannot_be_deleted' => 'لا يمكن حذف السمات المحددة',
+ 'definition_invalid_group' => 'المجموعة المحددة غير موجودة أو غير صالحة.',
+ 'definition_error_adding_updating' => 'لا يمكن إضافة السمة {0} أو تحديثها. يرجى التحقق من سجل الخطأ.',
+ 'definition_flags' => 'رؤية الميزات',
+ 'definition_group' => 'المجموعة',
+ 'definition_id' => 'كود',
+ 'definition_name' => 'إضافة ميزة',
+ 'definition_name_required' => 'اسم الميزة هي خانة اجبارية',
+ 'definition_one_or_multiple' => 'ميزة/ميزات',
+ 'definition_successful_adding' => 'لقد تم إضافة صنف بنجاح',
+ 'definition_successful_deleted' => 'لقد تم حذف ميزة بنجاح',
+ 'definition_successful_updating' => 'تم تعديل الميزة بنجاح',
+ 'definition_type' => 'نوع الميزة',
+ 'definition_type_required' => 'نوع الميزة هي خانة إجبارية',
+ 'definition_unit' => 'وحدة قياس',
+ 'definition_values' => 'قيمة الميزة',
+ 'new' => 'اضافة ميزة جديده',
+ 'no_attributes_to_display' => 'لا يوجد اصناف للعرض',
+ 'receipt_visibility' => 'وصل',
+ 'show_in_items' => 'اظهار في الصنف',
+ 'show_in_items_visibility' => 'الصنف',
+ 'show_in_receipt' => 'اظهار على الوصل',
+ 'show_in_receivings' => 'اظهار في استلام البضائع',
+ 'show_in_receivings_visibility' => 'استلام البضائع',
+ 'show_in_sales' => 'اظهار خلال البيع',
+ 'show_in_sales_visibility' => 'البيع',
+ 'show_in_search' => 'اظهار في البحث',
+ 'show_in_search_visibility' => 'بحث',
+ 'update' => 'تحديث الميزات',
];
diff --git a/app/Language/az/Attributes.php b/app/Language/az/Attributes.php
index bd28a0a28..9f8e336de 100644
--- a/app/Language/az/Attributes.php
+++ b/app/Language/az/Attributes.php
@@ -1,34 +1,36 @@
"Atribut dəyəri bu ':' və ya '|' olmaz",
- "confirm_delete" => "Seçilmiş Atributları silmək istədiyinizdən əminsinizmi?",
- "confirm_restore" => "Seçilmiş atributları bərpa etmək istədiyinizə əminsinizmi?",
- "definition_cannot_be_deleted" => "Seçilmiş xüsusiyyətləri silmək olmadı",
- "definition_invalid_group" => "",
- "definition_error_adding_updating" => "{0} -in atributları əlavə oluna və yenilənə bilmədi. Lütfən XƏTA loq faylını yoxlayın.",
- "definition_flags" => "Atribut görünüşü",
- "definition_group" => "Qrup",
- "definition_id" => "Id",
- "definition_name" => "Atribut əlavə et",
- "definition_name_required" => "Atribut adı zəruri bir sahədir",
- "definition_one_or_multiple" => "atribut (lar)",
- "definition_successful_adding" => "Malı uğurla əlavə etdiniz",
- "definition_successful_deleted" => "Siz uğurla sildiniz",
- "definition_successful_updating" => "Atributunuzu müvəffəqiyyətlə yenilədiniz",
- "definition_type" => "Atribut Tipi",
- "definition_type_required" => "Atribut növü tələb olunan sahədir",
- "definition_unit" => "Ölçü vahidi",
- "definition_values" => "Atribut dəyərləri",
- "new" => "Yeni atributlar",
- "no_attributes_to_display" => "Göstərmək üçün heç bir element yoxdur",
- "receipt_visibility" => "Qəbz",
- "show_in_items" => "Malları göstər",
- "show_in_items_visibility" => "Mallar",
- "show_in_receipt" => "Qəbzi göstərin",
- "show_in_receivings" => "Alacaqlarda göstərin",
- "show_in_receivings_visibility" => "Alınanlar",
- "show_in_sales" => "Satışda göstərin",
- "show_in_sales_visibility" => "Satışlar",
- "update" => "Atributları yenilə",
+ 'attribute_value_invalid_chars' => 'Atribut dəyəri bu \':\' və ya \'|\' olmaz',
+ 'confirm_delete' => 'Seçilmiş Atributları silmək istədiyinizdən əminsinizmi?',
+ 'confirm_restore' => 'Seçilmiş atributları bərpa etmək istədiyinizə əminsinizmi?',
+ 'definition_cannot_be_deleted' => 'Seçilmiş xüsusiyyətləri silmək olmadı',
+ 'definition_invalid_group' => '',
+ 'definition_error_adding_updating' => '{0} -in atributları əlavə oluna və yenilənə bilmədi. Lütfən XƏTA loq faylını yoxlayın.',
+ 'definition_flags' => 'Atribut görünüşü',
+ 'definition_group' => 'Qrup',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Atribut əlavə et',
+ 'definition_name_required' => 'Atribut adı zəruri bir sahədir',
+ 'definition_one_or_multiple' => 'atribut (lar)',
+ 'definition_successful_adding' => 'Malı uğurla əlavə etdiniz',
+ 'definition_successful_deleted' => 'Siz uğurla sildiniz',
+ 'definition_successful_updating' => 'Atributunuzu müvəffəqiyyətlə yenilədiniz',
+ 'definition_type' => 'Atribut Tipi',
+ 'definition_type_required' => 'Atribut növü tələb olunan sahədir',
+ 'definition_unit' => 'Ölçü vahidi',
+ 'definition_values' => 'Atribut dəyərləri',
+ 'new' => 'Yeni atributlar',
+ 'no_attributes_to_display' => 'Göstərmək üçün heç bir element yoxdur',
+ 'receipt_visibility' => 'Qəbz',
+ 'show_in_items' => 'Malları göstər',
+ 'show_in_items_visibility' => 'Mallar',
+ 'show_in_receipt' => 'Qəbzi göstərin',
+ 'show_in_receivings' => 'Alacaqlarda göstərin',
+ 'show_in_receivings_visibility' => 'Alınanlar',
+ 'show_in_sales' => 'Satışda göstərin',
+ 'show_in_sales_visibility' => 'Satışlar',
+ 'show_in_search' => 'Axtarışda göstər',
+ 'show_in_search_visibility' => 'Axtarış',
+ 'update' => 'Atributları yenilə',
];
diff --git a/app/Language/bg/Attributes.php b/app/Language/bg/Attributes.php
index 3213b12e4..0342064f7 100644
--- a/app/Language/bg/Attributes.php
+++ b/app/Language/bg/Attributes.php
@@ -1,34 +1,36 @@
"",
- "confirm_delete" => "",
- "confirm_restore" => "",
- "definition_cannot_be_deleted" => "",
- "definition_invalid_group" => "",
- "definition_error_adding_updating" => "",
- "definition_flags" => "",
- "definition_group" => "",
- "definition_id" => "",
- "definition_name" => "",
- "definition_name_required" => "",
- "definition_one_or_multiple" => "",
- "definition_successful_adding" => "",
- "definition_successful_deleted" => "",
- "definition_successful_updating" => "",
- "definition_type" => "",
- "definition_type_required" => "",
- "definition_unit" => "",
- "definition_values" => "",
- "new" => "",
- "no_attributes_to_display" => "",
- "receipt_visibility" => "",
- "show_in_items" => "",
- "show_in_items_visibility" => "",
- "show_in_receipt" => "",
- "show_in_receivings" => "",
- "show_in_receivings_visibility" => "",
- "show_in_sales" => "",
- "show_in_sales_visibility" => "",
- "update" => "",
+ 'attribute_value_invalid_chars' => '',
+ 'confirm_delete' => '',
+ 'confirm_restore' => '',
+ 'definition_cannot_be_deleted' => '',
+ 'definition_invalid_group' => '',
+ 'definition_error_adding_updating' => '',
+ 'definition_flags' => '',
+ 'definition_group' => '',
+ 'definition_id' => '',
+ 'definition_name' => '',
+ 'definition_name_required' => '',
+ 'definition_one_or_multiple' => '',
+ 'definition_successful_adding' => '',
+ 'definition_successful_deleted' => '',
+ 'definition_successful_updating' => '',
+ 'definition_type' => '',
+ 'definition_type_required' => '',
+ 'definition_unit' => '',
+ 'definition_values' => '',
+ 'new' => '',
+ 'no_attributes_to_display' => '',
+ 'receipt_visibility' => '',
+ 'show_in_items' => '',
+ 'show_in_items_visibility' => '',
+ 'show_in_receipt' => '',
+ 'show_in_receivings' => '',
+ 'show_in_receivings_visibility' => '',
+ 'show_in_sales' => '',
+ 'show_in_sales_visibility' => '',
+ 'show_in_search' => 'Показване в търсенето',
+ 'show_in_search_visibility' => 'Търсене',
+ 'update' => '',
];
diff --git a/app/Language/bs/Attributes.php b/app/Language/bs/Attributes.php
index 36a640f0b..662b6954c 100644
--- a/app/Language/bs/Attributes.php
+++ b/app/Language/bs/Attributes.php
@@ -1,34 +1,36 @@
"Vrijednost atributa ne može sadržavati ':' ili '|'",
- "confirm_delete" => "Da li ste sigurni da želite da izbrišete izabrani atribut?",
- "confirm_restore" => "Da li ste sigurni da želite vratiti izabrane atribute?",
- "definition_cannot_be_deleted" => "Nije moguće izbrisati izabrane atribut",
- "definition_invalid_group" => "",
- "definition_error_adding_updating" => "Atribut {0} nije moguće dodati ili ažurirati. Molimo provjerite dnevnik grešaka.",
- "definition_flags" => "Vidljivost atributa",
- "definition_group" => "Grupa",
- "definition_id" => "Id",
- "definition_name" => "Dodaj Atribut",
- "definition_name_required" => "Ime atributa je obavezno polje",
- "definition_one_or_multiple" => "atributi",
- "definition_successful_adding" => "Uspješno ste dodali stavku",
- "definition_successful_deleted" => "Uspješno ste izbrisali",
- "definition_successful_updating" => "Uspješno ste ažurirali atribute",
- "definition_type" => "Tip atributa",
- "definition_type_required" => "Tip atributa je obavezno polje",
- "definition_unit" => "Jedinice mjere",
- "definition_values" => "Vrijednosti atributa",
- "new" => "Novi atribut",
- "no_attributes_to_display" => "Nema stavki za prikaz",
- "receipt_visibility" => "Račun",
- "show_in_items" => "Prikaži u stavkama",
- "show_in_items_visibility" => "Stavka",
- "show_in_receipt" => "Prikaži u računu",
- "show_in_receivings" => "Prikaži na ulazima",
- "show_in_receivings_visibility" => "Ulazi",
- "show_in_sales" => "Prikaži u prodaji",
- "show_in_sales_visibility" => "Prodaja",
- "update" => "Ažuriraj atribut",
+ 'attribute_value_invalid_chars' => 'Vrijednost atributa ne može sadržavati \':\' ili \'|\'',
+ 'confirm_delete' => 'Da li ste sigurni da želite da izbrišete izabrani atribut?',
+ 'confirm_restore' => 'Da li ste sigurni da želite vratiti izabrane atribute?',
+ 'definition_cannot_be_deleted' => 'Nije moguće izbrisati izabrane atribut',
+ 'definition_invalid_group' => '',
+ 'definition_error_adding_updating' => 'Atribut {0} nije moguće dodati ili ažurirati. Molimo provjerite dnevnik grešaka.',
+ 'definition_flags' => 'Vidljivost atributa',
+ 'definition_group' => 'Grupa',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Dodaj Atribut',
+ 'definition_name_required' => 'Ime atributa je obavezno polje',
+ 'definition_one_or_multiple' => 'atributi',
+ 'definition_successful_adding' => 'Uspješno ste dodali stavku',
+ 'definition_successful_deleted' => 'Uspješno ste izbrisali',
+ 'definition_successful_updating' => 'Uspješno ste ažurirali atribute',
+ 'definition_type' => 'Tip atributa',
+ 'definition_type_required' => 'Tip atributa je obavezno polje',
+ 'definition_unit' => 'Jedinice mjere',
+ 'definition_values' => 'Vrijednosti atributa',
+ 'new' => 'Novi atribut',
+ 'no_attributes_to_display' => 'Nema stavki za prikaz',
+ 'receipt_visibility' => 'Račun',
+ 'show_in_items' => 'Prikaži u stavkama',
+ 'show_in_items_visibility' => 'Stavka',
+ 'show_in_receipt' => 'Prikaži u računu',
+ 'show_in_receivings' => 'Prikaži na ulazima',
+ 'show_in_receivings_visibility' => 'Ulazi',
+ 'show_in_sales' => 'Prikaži u prodaji',
+ 'show_in_sales_visibility' => 'Prodaja',
+ 'show_in_search' => 'Prikaži u pretrazi',
+ 'show_in_search_visibility' => 'Pretraga',
+ 'update' => 'Ažuriraj atribut',
];
diff --git a/app/Language/ckb/Attributes.php b/app/Language/ckb/Attributes.php
index 77f189a9c..d5ba8eaa9 100644
--- a/app/Language/ckb/Attributes.php
+++ b/app/Language/ckb/Attributes.php
@@ -1,34 +1,36 @@
"بەهای تایبەتمەندیی ناتوانێت '_' یان ' لەخۆبگرێت|'",
- "confirm_delete" => "ئایا دڵنیای کە دەتەوێت تایبەتمەندییە هەڵبژێردراوەکە(کان) بسڕیتەوە؟",
- "confirm_restore" => "ئایا دڵنیای کە دەتەوێت تایبەتمەندییە هەڵبژێردراوەکە(کان) بگەڕێنیتەوە؟",
- "definition_cannot_be_deleted" => "نەتوانرا تایبەتمەندی هەڵبژێردراو بسڕدرێتەوە",
- "definition_invalid_group" => "",
- "definition_error_adding_updating" => "تایبەتمەندی {0} نەتوانرا زیاد بکرێت یان نوێ بکرێتەوە. تکایە لیستی هەڵەکان بپشکنە.",
- "definition_flags" => "توانای بینراویی تایبەتمەندی",
- "definition_group" => "گروپ",
- "definition_id" => "ناسنامە",
- "definition_name" => "تایبەتمەندی زیاد بکە",
- "definition_name_required" => "ناوی تایبەتمەندی خانەیەکی پێویستە",
- "definition_one_or_multiple" => "تایبەتمەندی(ەکان)",
- "definition_successful_adding" => "بەسەرکەوتوویی ئایتمەکەت زیادکرد",
- "definition_successful_deleted" => "بەسەرکەوتوویی سڕیوتەتەوە",
- "definition_successful_updating" => "بەسەرکەوتوویی تایبەتمەندیت نوێ کردووەتەوە",
- "definition_type" => "جۆری تایبەتمەندی",
- "definition_type_required" => "جۆری تایبەتمەندی خانەیەکی پێویستە",
- "definition_unit" => "یەکەی پێوانەکردن",
- "definition_values" => "بەهاکانی تایبەتمەندی",
- "new" => "تایبەتمەندی نوێ",
- "no_attributes_to_display" => "هیچ تایبەتمەندییەک نییە بۆ پیشاندان",
- "receipt_visibility" => "ڕەچەتە",
- "show_in_items" => "لەناو ئایتمەکان نیشانی بدە",
- "show_in_items_visibility" => "ئایتمەکان",
- "show_in_receipt" => "لە ڕەچەتەکەدا نیشانی بدە",
- "show_in_receivings" => "لە بەدەستگەیشتووەکاندا نیشانی بدە",
- "show_in_receivings_visibility" => "بەدەستگەیشتووکان",
- "show_in_sales" => "لە فرۆشتندا نیشانی بدە",
- "show_in_sales_visibility" => "فرۆشتن",
- "update" => "تایبەتمەندی نوێ بکەرەوە",
+ 'attribute_value_invalid_chars' => 'بەهای تایبەتمەندیی ناتوانێت \'_\' یان \' لەخۆبگرێت|\'',
+ 'confirm_delete' => 'ئایا دڵنیای کە دەتەوێت تایبەتمەندییە هەڵبژێردراوەکە(کان) بسڕیتەوە؟',
+ 'confirm_restore' => 'ئایا دڵنیای کە دەتەوێت تایبەتمەندییە هەڵبژێردراوەکە(کان) بگەڕێنیتەوە؟',
+ 'definition_cannot_be_deleted' => 'نەتوانرا تایبەتمەندی هەڵبژێردراو بسڕدرێتەوە',
+ 'definition_invalid_group' => '',
+ 'definition_error_adding_updating' => 'تایبەتمەندی {0} نەتوانرا زیاد بکرێت یان نوێ بکرێتەوە. تکایە لیستی هەڵەکان بپشکنە.',
+ 'definition_flags' => 'توانای بینراویی تایبەتمەندی',
+ 'definition_group' => 'گروپ',
+ 'definition_id' => 'ناسنامە',
+ 'definition_name' => 'تایبەتمەندی زیاد بکە',
+ 'definition_name_required' => 'ناوی تایبەتمەندی خانەیەکی پێویستە',
+ 'definition_one_or_multiple' => 'تایبەتمەندی(ەکان)',
+ 'definition_successful_adding' => 'بەسەرکەوتوویی ئایتمەکەت زیادکرد',
+ 'definition_successful_deleted' => 'بەسەرکەوتوویی سڕیوتەتەوە',
+ 'definition_successful_updating' => 'بەسەرکەوتوویی تایبەتمەندیت نوێ کردووەتەوە',
+ 'definition_type' => 'جۆری تایبەتمەندی',
+ 'definition_type_required' => 'جۆری تایبەتمەندی خانەیەکی پێویستە',
+ 'definition_unit' => 'یەکەی پێوانەکردن',
+ 'definition_values' => 'بەهاکانی تایبەتمەندی',
+ 'new' => 'تایبەتمەندی نوێ',
+ 'no_attributes_to_display' => 'هیچ تایبەتمەندییەک نییە بۆ پیشاندان',
+ 'receipt_visibility' => 'ڕەچەتە',
+ 'show_in_items' => 'لەناو ئایتمەکان نیشانی بدە',
+ 'show_in_items_visibility' => 'ئایتمەکان',
+ 'show_in_receipt' => 'لە ڕەچەتەکەدا نیشانی بدە',
+ 'show_in_receivings' => 'لە بەدەستگەیشتووەکاندا نیشانی بدە',
+ 'show_in_receivings_visibility' => 'بەدەستگەیشتووکان',
+ 'show_in_sales' => 'لە فرۆشتندا نیشانی بدە',
+ 'show_in_sales_visibility' => 'فرۆشتن',
+ 'show_in_search' => 'لە گەڕاندا نیشانی بدە',
+ 'show_in_search_visibility' => 'گەڕان',
+ 'update' => 'تایبەتمەندی نوێ بکەرەوە',
];
diff --git a/app/Language/cs/Attributes.php b/app/Language/cs/Attributes.php
index 3213b12e4..8af0b2289 100644
--- a/app/Language/cs/Attributes.php
+++ b/app/Language/cs/Attributes.php
@@ -1,34 +1,36 @@
"",
- "confirm_delete" => "",
- "confirm_restore" => "",
- "definition_cannot_be_deleted" => "",
- "definition_invalid_group" => "",
- "definition_error_adding_updating" => "",
- "definition_flags" => "",
- "definition_group" => "",
- "definition_id" => "",
- "definition_name" => "",
- "definition_name_required" => "",
- "definition_one_or_multiple" => "",
- "definition_successful_adding" => "",
- "definition_successful_deleted" => "",
- "definition_successful_updating" => "",
- "definition_type" => "",
- "definition_type_required" => "",
- "definition_unit" => "",
- "definition_values" => "",
- "new" => "",
- "no_attributes_to_display" => "",
- "receipt_visibility" => "",
- "show_in_items" => "",
- "show_in_items_visibility" => "",
- "show_in_receipt" => "",
- "show_in_receivings" => "",
- "show_in_receivings_visibility" => "",
- "show_in_sales" => "",
- "show_in_sales_visibility" => "",
- "update" => "",
+ 'attribute_value_invalid_chars' => '',
+ 'confirm_delete' => '',
+ 'confirm_restore' => '',
+ 'definition_cannot_be_deleted' => '',
+ 'definition_invalid_group' => '',
+ 'definition_error_adding_updating' => '',
+ 'definition_flags' => '',
+ 'definition_group' => '',
+ 'definition_id' => '',
+ 'definition_name' => '',
+ 'definition_name_required' => '',
+ 'definition_one_or_multiple' => '',
+ 'definition_successful_adding' => '',
+ 'definition_successful_deleted' => '',
+ 'definition_successful_updating' => '',
+ 'definition_type' => '',
+ 'definition_type_required' => '',
+ 'definition_unit' => '',
+ 'definition_values' => '',
+ 'new' => '',
+ 'no_attributes_to_display' => '',
+ 'receipt_visibility' => '',
+ 'show_in_items' => '',
+ 'show_in_items_visibility' => '',
+ 'show_in_receipt' => '',
+ 'show_in_receivings' => '',
+ 'show_in_receivings_visibility' => '',
+ 'show_in_sales' => '',
+ 'show_in_sales_visibility' => '',
+ 'show_in_search' => 'Zobrazit ve vyhledávání',
+ 'show_in_search_visibility' => 'Vyhledávání',
+ 'update' => '',
];
diff --git a/app/Language/da/Attributes.php b/app/Language/da/Attributes.php
index fd643f036..8944f7498 100644
--- a/app/Language/da/Attributes.php
+++ b/app/Language/da/Attributes.php
@@ -1,34 +1,36 @@
"Egenskabens værdi kan ikke indeholde ':' or '|'",
- "confirm_delete" => "Er du sikker på, at du vil slette de valgte egenskaber?",
- "confirm_restore" => "Er du sikker på, at du vil gendanne de valgte egenskaber?",
- "definition_cannot_be_deleted" => "De valgte egenskaber kunne ikke slettes",
- "definition_invalid_group" => "Den valgte gruppe findes ikke eller er ugyldig.",
- "definition_error_adding_updating" => "Egenskab {0} Kunne ikke tilføjes eller opdateres. Tjek venligst fejlprotokollen.",
- "definition_flags" => "Egenskabens Synlighed",
- "definition_group" => "Gruppe",
- "definition_id" => "Id",
- "definition_name" => "Tilføj egenskab",
- "definition_name_required" => "Egenskabens navn er et obligatorisk felt",
- "definition_one_or_multiple" => "Egenskab(er)",
- "definition_successful_adding" => "Du har tilføjet en genstand",
- "definition_successful_deleted" => "Du har slettet en genstand",
- "definition_successful_updating" => "Du har opdateret en egenskab",
- "definition_type" => "Egenskabs-type",
- "definition_type_required" => "Egenskabs-type er et obligatorisk felt",
- "definition_unit" => "Måleenhed",
- "definition_values" => "Egenskabens værdier",
- "new" => "Ny egenskab",
- "no_attributes_to_display" => "Ingen genstande at vise",
- "receipt_visibility" => "Kvittering",
- "show_in_items" => "Vis i genstande",
- "show_in_items_visibility" => "Genstande",
- "show_in_receipt" => "Vis i kvittering",
- "show_in_receivings" => "Vis i modtagelser",
- "show_in_receivings_visibility" => "Modtagelser",
- "show_in_sales" => "Vis i salg",
- "show_in_sales_visibility" => "Salg",
- "update" => "Opdater egenskab",
+ 'attribute_value_invalid_chars' => 'Egenskabens værdi kan ikke indeholde \':\' or \'|\'',
+ 'confirm_delete' => 'Er du sikker på, at du vil slette de valgte egenskaber?',
+ 'confirm_restore' => 'Er du sikker på, at du vil gendanne de valgte egenskaber?',
+ 'definition_cannot_be_deleted' => 'De valgte egenskaber kunne ikke slettes',
+ 'definition_invalid_group' => 'Den valgte gruppe findes ikke eller er ugyldig.',
+ 'definition_error_adding_updating' => 'Egenskab {0} Kunne ikke tilføjes eller opdateres. Tjek venligst fejlprotokollen.',
+ 'definition_flags' => 'Egenskabens Synlighed',
+ 'definition_group' => 'Gruppe',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Tilføj egenskab',
+ 'definition_name_required' => 'Egenskabens navn er et obligatorisk felt',
+ 'definition_one_or_multiple' => 'Egenskab(er)',
+ 'definition_successful_adding' => 'Du har tilføjet en genstand',
+ 'definition_successful_deleted' => 'Du har slettet en genstand',
+ 'definition_successful_updating' => 'Du har opdateret en egenskab',
+ 'definition_type' => 'Egenskabs-type',
+ 'definition_type_required' => 'Egenskabs-type er et obligatorisk felt',
+ 'definition_unit' => 'Måleenhed',
+ 'definition_values' => 'Egenskabens værdier',
+ 'new' => 'Ny egenskab',
+ 'no_attributes_to_display' => 'Ingen genstande at vise',
+ 'receipt_visibility' => 'Kvittering',
+ 'show_in_items' => 'Vis i genstande',
+ 'show_in_items_visibility' => 'Genstande',
+ 'show_in_receipt' => 'Vis i kvittering',
+ 'show_in_receivings' => 'Vis i modtagelser',
+ 'show_in_receivings_visibility' => 'Modtagelser',
+ 'show_in_sales' => 'Vis i salg',
+ 'show_in_sales_visibility' => 'Salg',
+ 'show_in_search' => 'Vis i søgning',
+ 'show_in_search_visibility' => 'Søgning',
+ 'update' => 'Opdater egenskab',
];
diff --git a/app/Language/de-CH/Attributes.php b/app/Language/de-CH/Attributes.php
index d76085ec7..f25b7bf63 100644
--- a/app/Language/de-CH/Attributes.php
+++ b/app/Language/de-CH/Attributes.php
@@ -1,34 +1,36 @@
"",
- "confirm_delete" => "",
- "confirm_restore" => "",
- "definition_cannot_be_deleted" => "",
- "definition_invalid_group" => "Die ausgewählte Gruppe existiert nicht oder ist ungültig.",
- "definition_error_adding_updating" => "",
- "definition_flags" => "",
- "definition_group" => "",
- "definition_id" => "",
- "definition_name" => "",
- "definition_name_required" => "",
- "definition_one_or_multiple" => "",
- "definition_successful_adding" => "",
- "definition_successful_deleted" => "",
- "definition_successful_updating" => "",
- "definition_type" => "",
- "definition_type_required" => "",
- "definition_unit" => "",
- "definition_values" => "",
- "new" => "",
- "no_attributes_to_display" => "",
- "receipt_visibility" => "",
- "show_in_items" => "",
- "show_in_items_visibility" => "",
- "show_in_receipt" => "",
- "show_in_receivings" => "",
- "show_in_receivings_visibility" => "",
- "show_in_sales" => "",
- "show_in_sales_visibility" => "",
- "update" => "",
+ 'attribute_value_invalid_chars' => '',
+ 'confirm_delete' => '',
+ 'confirm_restore' => '',
+ 'definition_cannot_be_deleted' => '',
+ 'definition_invalid_group' => 'Die ausgewählte Gruppe existiert nicht oder ist ungültig.',
+ 'definition_error_adding_updating' => '',
+ 'definition_flags' => '',
+ 'definition_group' => '',
+ 'definition_id' => '',
+ 'definition_name' => '',
+ 'definition_name_required' => '',
+ 'definition_one_or_multiple' => '',
+ 'definition_successful_adding' => '',
+ 'definition_successful_deleted' => '',
+ 'definition_successful_updating' => '',
+ 'definition_type' => '',
+ 'definition_type_required' => '',
+ 'definition_unit' => '',
+ 'definition_values' => '',
+ 'new' => '',
+ 'no_attributes_to_display' => '',
+ 'receipt_visibility' => '',
+ 'show_in_items' => '',
+ 'show_in_items_visibility' => '',
+ 'show_in_receipt' => '',
+ 'show_in_receivings' => '',
+ 'show_in_receivings_visibility' => '',
+ 'show_in_sales' => '',
+ 'show_in_sales_visibility' => '',
+ 'show_in_search' => 'In Suche anzeigen',
+ 'show_in_search_visibility' => 'Suche',
+ 'update' => '',
];
diff --git a/app/Language/de-DE/Attributes.php b/app/Language/de-DE/Attributes.php
index cf7bd5348..4afd86482 100644
--- a/app/Language/de-DE/Attributes.php
+++ b/app/Language/de-DE/Attributes.php
@@ -1,34 +1,36 @@
"Attributwert darf nicht ':' oder '|' enthalten",
- "confirm_delete" => "Sind Sie sicher, dass Sie die ausgewählten Attribute löschen möchten?",
- "confirm_restore" => "Sind Sie sicher, dass Sie die ausgewählten Attribute wiederherstellen möchten?",
- "definition_cannot_be_deleted" => "Ausgewählte Attribute konnten nicht gelöscht werden",
- "definition_invalid_group" => "Die ausgewählte Gruppe existiert nicht oder ist ungültig.",
- "definition_error_adding_updating" => "Das Attribut {0} konnte nicht hinzugefügt oder aktualisiert werden. Bitte überprüfen Sie den Error-Log.",
- "definition_flags" => "Attribut Sichtbarkeit",
- "definition_group" => "Gruppe",
- "definition_id" => "ID",
- "definition_name" => "Attribut hinzufügen",
- "definition_name_required" => "Attributname ist ein Pflichtfeld",
- "definition_one_or_multiple" => "Attribut(e)",
- "definition_successful_adding" => "Artikel erfolgreich hinzugefügt",
- "definition_successful_deleted" => "Löschung erfolgreich",
- "definition_successful_updating" => "Sie haben das Attributerfolgreich aktualisiert",
- "definition_type" => "Attribut Typ",
- "definition_type_required" => "Attribut ist ein Pflichtfeld",
- "definition_unit" => "Maßeinheit",
- "definition_values" => "Attribut Werte",
- "new" => "Neues Attribut",
- "no_attributes_to_display" => "Keine Elemente zum Anzeigen",
- "receipt_visibility" => "Quittung",
- "show_in_items" => "In Artikeln anzeigen",
- "show_in_items_visibility" => "Artikel",
- "show_in_receipt" => "In Quittung anzeigen",
- "show_in_receivings" => "In Eingängen anzeigen",
- "show_in_receivings_visibility" => "Eingänge",
- "show_in_sales" => "In Verkäufen anzeigen",
- "show_in_sales_visibility" => "Verkauf",
- "update" => "Attribut aktualisieren",
+ 'attribute_value_invalid_chars' => 'Attributwert darf nicht \':\' oder \'|\' enthalten',
+ 'confirm_delete' => 'Sind Sie sicher, dass Sie die ausgewählten Attribute löschen möchten?',
+ 'confirm_restore' => 'Sind Sie sicher, dass Sie die ausgewählten Attribute wiederherstellen möchten?',
+ 'definition_cannot_be_deleted' => 'Ausgewählte Attribute konnten nicht gelöscht werden',
+ 'definition_invalid_group' => 'Die ausgewählte Gruppe existiert nicht oder ist ungültig.',
+ 'definition_error_adding_updating' => 'Das Attribut {0} konnte nicht hinzugefügt oder aktualisiert werden. Bitte überprüfen Sie den Error-Log.',
+ 'definition_flags' => 'Attribut Sichtbarkeit',
+ 'definition_group' => 'Gruppe',
+ 'definition_id' => 'ID',
+ 'definition_name' => 'Attribut hinzufügen',
+ 'definition_name_required' => 'Attributname ist ein Pflichtfeld',
+ 'definition_one_or_multiple' => 'Attribut(e)',
+ 'definition_successful_adding' => 'Artikel erfolgreich hinzugefügt',
+ 'definition_successful_deleted' => 'Löschung erfolgreich',
+ 'definition_successful_updating' => 'Sie haben das Attributerfolgreich aktualisiert',
+ 'definition_type' => 'Attribut Typ',
+ 'definition_type_required' => 'Attribut ist ein Pflichtfeld',
+ 'definition_unit' => 'Maßeinheit',
+ 'definition_values' => 'Attribut Werte',
+ 'new' => 'Neues Attribut',
+ 'no_attributes_to_display' => 'Keine Elemente zum Anzeigen',
+ 'receipt_visibility' => 'Quittung',
+ 'show_in_items' => 'In Artikeln anzeigen',
+ 'show_in_items_visibility' => 'Artikel',
+ 'show_in_receipt' => 'In Quittung anzeigen',
+ 'show_in_receivings' => 'In Eingängen anzeigen',
+ 'show_in_receivings_visibility' => 'Eingänge',
+ 'show_in_sales' => 'In Verkäufen anzeigen',
+ 'show_in_sales_visibility' => 'Verkauf',
+ 'show_in_search' => 'In Suche anzeigen',
+ 'show_in_search_visibility' => 'Suche',
+ 'update' => 'Attribut aktualisieren',
];
diff --git a/app/Language/el/Attributes.php b/app/Language/el/Attributes.php
index 54a88f00e..f3d8f6792 100644
--- a/app/Language/el/Attributes.php
+++ b/app/Language/el/Attributes.php
@@ -1,34 +1,36 @@
"Η τιμή του χαρακτηριστικού δεν μπορεί να περιέχει ':' ή '|'",
- "confirm_delete" => "Είστε βέβαιοι ότι θέλετε να διαγράψετε τα επιλεγμένα χαρακτηριστικά;",
- "confirm_restore" => "Είστε βέβαιοι ότι θέλετε να επαναφέρετε τα επιλεγμένα χαρακτηριστικά;",
- "definition_cannot_be_deleted" => "Δεν ήταν δυνατή η διαγραφή των επιλεγμένων χαρακτηριστικών",
- "definition_invalid_group" => "Η επιλεγμένη ομάδα δεν υπάρχει ή δεν είναι έγκυρη.",
- "definition_error_adding_updating" => "Το χαρακτηριστικό {0} δεν ήταν δυνατό να προστεθεί ή να ενημερωθεί. Ελέγξτε το αρχείο καταγραφής σφαλμάτων.",
- "definition_flags" => "Ορατότητα χαρακτηριστικών",
- "definition_group" => "Ομάδα",
- "definition_id" => "Id",
- "definition_name" => "Προσθήκη χαρακτηριστικού",
- "definition_name_required" => "Το όνομα του χαρακτηριστικού είναι υποχρεωτικό πεδίο",
- "definition_one_or_multiple" => "Χαρακτηριστικό(ά)",
- "definition_successful_adding" => "Έχετε προσθέσει με επιτυχία στοιχείο",
- "definition_successful_deleted" => "",
- "definition_successful_updating" => "Έχετε ενημερώσει με επιτυχία το χαρακτηριστικό",
- "definition_type" => "Τύπος Χαρακτηριστικού",
- "definition_type_required" => "Ο τύπος ιδιότητας είναι υποχρεωτικό πεδίο",
- "definition_unit" => "Μονάδα μέτρησης",
- "definition_values" => "Τιμές Χαρακτηριστικών",
- "new" => "Νέο χαρακτηριστικό",
- "no_attributes_to_display" => "Δεν υπάρχουν στοιχεία για εμφάνιση",
- "receipt_visibility" => "",
- "show_in_items" => "",
- "show_in_items_visibility" => "",
- "show_in_receipt" => "",
- "show_in_receivings" => "",
- "show_in_receivings_visibility" => "",
- "show_in_sales" => "",
- "show_in_sales_visibility" => "",
- "update" => "",
+ 'attribute_value_invalid_chars' => 'Η τιμή του χαρακτηριστικού δεν μπορεί να περιέχει \':\' ή \'|\'',
+ 'confirm_delete' => 'Είστε βέβαιοι ότι θέλετε να διαγράψετε τα επιλεγμένα χαρακτηριστικά;',
+ 'confirm_restore' => 'Είστε βέβαιοι ότι θέλετε να επαναφέρετε τα επιλεγμένα χαρακτηριστικά;',
+ 'definition_cannot_be_deleted' => 'Δεν ήταν δυνατή η διαγραφή των επιλεγμένων χαρακτηριστικών',
+ 'definition_invalid_group' => 'Η επιλεγμένη ομάδα δεν υπάρχει ή δεν είναι έγκυρη.',
+ 'definition_error_adding_updating' => 'Το χαρακτηριστικό {0} δεν ήταν δυνατό να προστεθεί ή να ενημερωθεί. Ελέγξτε το αρχείο καταγραφής σφαλμάτων.',
+ 'definition_flags' => 'Ορατότητα χαρακτηριστικών',
+ 'definition_group' => 'Ομάδα',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Προσθήκη χαρακτηριστικού',
+ 'definition_name_required' => 'Το όνομα του χαρακτηριστικού είναι υποχρεωτικό πεδίο',
+ 'definition_one_or_multiple' => 'Χαρακτηριστικό(ά)',
+ 'definition_successful_adding' => 'Έχετε προσθέσει με επιτυχία στοιχείο',
+ 'definition_successful_deleted' => '',
+ 'definition_successful_updating' => 'Έχετε ενημερώσει με επιτυχία το χαρακτηριστικό',
+ 'definition_type' => 'Τύπος Χαρακτηριστικού',
+ 'definition_type_required' => 'Ο τύπος ιδιότητας είναι υποχρεωτικό πεδίο',
+ 'definition_unit' => 'Μονάδα μέτρησης',
+ 'definition_values' => 'Τιμές Χαρακτηριστικών',
+ 'new' => 'Νέο χαρακτηριστικό',
+ 'no_attributes_to_display' => 'Δεν υπάρχουν στοιχεία για εμφάνιση',
+ 'receipt_visibility' => '',
+ 'show_in_items' => '',
+ 'show_in_items_visibility' => '',
+ 'show_in_receipt' => '',
+ 'show_in_receivings' => '',
+ 'show_in_receivings_visibility' => '',
+ 'show_in_sales' => '',
+ 'show_in_sales_visibility' => '',
+ 'show_in_search' => 'Εμφάνιση στην αναζήτηση',
+ 'show_in_search_visibility' => 'Αναζήτηση',
+ 'update' => '',
];
diff --git a/app/Language/en-GB/Attributes.php b/app/Language/en-GB/Attributes.php
index 0b4bf10cc..51775f7fe 100644
--- a/app/Language/en-GB/Attributes.php
+++ b/app/Language/en-GB/Attributes.php
@@ -1,34 +1,36 @@
"Attribute value cannot contain '_' or '|'",
- "confirm_delete" => "Are you sure you want to delete the selected attribute(s)?",
- "confirm_restore" => "Are you sure you want to restore the selected attribute(s)?",
- "definition_cannot_be_deleted" => "Could not delete selected attribute(s)",
- "definition_error_adding_updating" => "Attribute {0} could not be added or updated. Please check the error log.",
- "definition_invalid_group" => "The selected group does not exist or is invalid.",
- "definition_flags" => "Attribute Visibility",
- "definition_group" => "Group",
- "definition_id" => "Id",
- "definition_name" => "Add Attribute",
- "definition_name_required" => "Attribute name is a required field",
- "definition_one_or_multiple" => "attribute(s)",
- "definition_successful_adding" => "You have successfully added item",
- "definition_successful_deleted" => "You have successfully deleted",
- "definition_successful_updating" => "You have successfully updated attribute",
- "definition_type" => "Attribute Type",
- "definition_type_required" => "Attribute type is a required field",
- "definition_unit" => "Measurement Unit",
- "definition_values" => "Attribute Values",
- "new" => "New Attribute",
- "no_attributes_to_display" => "No Items to display",
- "receipt_visibility" => "Receipt",
- "show_in_items" => "Show in items",
- "show_in_items_visibility" => "Items",
- "show_in_receipt" => "Show in receipt",
- "show_in_receivings" => "Show in receivings",
- "show_in_receivings_visibility" => "Receivings",
- "show_in_sales" => "Show in sales",
- "show_in_sales_visibility" => "Sales",
- "update" => "Update Attribute",
+ 'attribute_value_invalid_chars' => 'Attribute value cannot contain \'_\' or \'|\'',
+ 'confirm_delete' => 'Are you sure you want to delete the selected attribute(s)?',
+ 'confirm_restore' => 'Are you sure you want to restore the selected attribute(s)?',
+ 'definition_cannot_be_deleted' => 'Could not delete selected attribute(s)',
+ 'definition_error_adding_updating' => 'Attribute {0} could not be added or updated. Please check the error log.',
+ 'definition_invalid_group' => 'The selected group does not exist or is invalid.',
+ 'definition_flags' => 'Attribute Visibility',
+ 'definition_group' => 'Group',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Add Attribute',
+ 'definition_name_required' => 'Attribute name is a required field',
+ 'definition_one_or_multiple' => 'attribute(s)',
+ 'definition_successful_adding' => 'You have successfully added item',
+ 'definition_successful_deleted' => 'You have successfully deleted',
+ 'definition_successful_updating' => 'You have successfully updated attribute',
+ 'definition_type' => 'Attribute Type',
+ 'definition_type_required' => 'Attribute type is a required field',
+ 'definition_unit' => 'Measurement Unit',
+ 'definition_values' => 'Attribute Values',
+ 'new' => 'New Attribute',
+ 'no_attributes_to_display' => 'No Attributes to display',
+ 'receipt_visibility' => 'Receipt',
+ 'show_in_items' => 'Show in items',
+ 'show_in_items_visibility' => 'Items',
+ 'show_in_receipt' => 'Show in receipt',
+ 'show_in_receivings' => 'Show in receivings',
+ 'show_in_receivings_visibility' => 'Receivings',
+ 'show_in_sales' => 'Show in sales',
+ 'show_in_sales_visibility' => 'Sales',
+ 'show_in_search' => 'Show in search',
+ 'show_in_search_visibility' => 'Search',
+ 'update' => 'Update Attribute',
];
diff --git a/app/Language/en/Attributes.php b/app/Language/en/Attributes.php
index b3ab1fde9..51775f7fe 100644
--- a/app/Language/en/Attributes.php
+++ b/app/Language/en/Attributes.php
@@ -1,34 +1,36 @@
"Attribute value cannot contain '_' or '|'",
- "confirm_delete" => "Are you sure you want to delete the selected attribute(s)?",
- "confirm_restore" => "Are you sure you want to restore the selected attribute(s)?",
- "definition_cannot_be_deleted" => "Could not delete selected attribute(s)",
- "definition_error_adding_updating" => "Attribute {0} could not be added or updated. Please check the error log.",
- "definition_invalid_group" => "The selected group does not exist or is invalid.",
- "definition_flags" => "Attribute Visibility",
- "definition_group" => "Group",
- "definition_id" => "Id",
- "definition_name" => "Add Attribute",
- "definition_name_required" => "Attribute name is a required field",
- "definition_one_or_multiple" => "attribute(s)",
- "definition_successful_adding" => "You have successfully added item",
- "definition_successful_deleted" => "You have successfully deleted",
- "definition_successful_updating" => "You have successfully updated attribute",
- "definition_type" => "Attribute Type",
- "definition_type_required" => "Attribute type is a required field",
- "definition_unit" => "Measurement Unit",
- "definition_values" => "Attribute Values",
- "new" => "New Attribute",
- "no_attributes_to_display" => "No Attributes to display",
- "receipt_visibility" => "Receipt",
- "show_in_items" => "Show in items",
- "show_in_items_visibility" => "Items",
- "show_in_receipt" => "Show in receipt",
- "show_in_receivings" => "Show in receivings",
- "show_in_receivings_visibility" => "Receivings",
- "show_in_sales" => "Show in sales",
- "show_in_sales_visibility" => "Sales",
- "update" => "Update Attribute",
+ 'attribute_value_invalid_chars' => 'Attribute value cannot contain \'_\' or \'|\'',
+ 'confirm_delete' => 'Are you sure you want to delete the selected attribute(s)?',
+ 'confirm_restore' => 'Are you sure you want to restore the selected attribute(s)?',
+ 'definition_cannot_be_deleted' => 'Could not delete selected attribute(s)',
+ 'definition_error_adding_updating' => 'Attribute {0} could not be added or updated. Please check the error log.',
+ 'definition_invalid_group' => 'The selected group does not exist or is invalid.',
+ 'definition_flags' => 'Attribute Visibility',
+ 'definition_group' => 'Group',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Add Attribute',
+ 'definition_name_required' => 'Attribute name is a required field',
+ 'definition_one_or_multiple' => 'attribute(s)',
+ 'definition_successful_adding' => 'You have successfully added item',
+ 'definition_successful_deleted' => 'You have successfully deleted',
+ 'definition_successful_updating' => 'You have successfully updated attribute',
+ 'definition_type' => 'Attribute Type',
+ 'definition_type_required' => 'Attribute type is a required field',
+ 'definition_unit' => 'Measurement Unit',
+ 'definition_values' => 'Attribute Values',
+ 'new' => 'New Attribute',
+ 'no_attributes_to_display' => 'No Attributes to display',
+ 'receipt_visibility' => 'Receipt',
+ 'show_in_items' => 'Show in items',
+ 'show_in_items_visibility' => 'Items',
+ 'show_in_receipt' => 'Show in receipt',
+ 'show_in_receivings' => 'Show in receivings',
+ 'show_in_receivings_visibility' => 'Receivings',
+ 'show_in_sales' => 'Show in sales',
+ 'show_in_sales_visibility' => 'Sales',
+ 'show_in_search' => 'Show in search',
+ 'show_in_search_visibility' => 'Search',
+ 'update' => 'Update Attribute',
];
diff --git a/app/Language/es-ES/Attributes.php b/app/Language/es-ES/Attributes.php
index 6b05b71df..16996bf0f 100644
--- a/app/Language/es-ES/Attributes.php
+++ b/app/Language/es-ES/Attributes.php
@@ -1,34 +1,36 @@
"El valor del atributo no puede contener ':' o '|'",
- "confirm_delete" => "¿Está seguro de que desea borrar los atributos seleccionados?",
- "confirm_restore" => "¿Está seguro de que desea restaurar los atributos seleccionados?",
- "definition_cannot_be_deleted" => "No se han podido borrar los atributos seleccionados",
- "definition_invalid_group" => "El grupo seleccionado no existe o no es válido.",
- "definition_error_adding_updating" => "El atributo {0} no pudo ser agregado o actulizado. Por favor compruebe el registro de errores.",
- "definition_flags" => "Visibilidad del atributo",
- "definition_group" => "Grupo",
- "definition_id" => "Id",
- "definition_name" => "Agregar Atributo",
- "definition_name_required" => "El nombre del Atributo es un campo obligatorio",
- "definition_one_or_multiple" => "atributo(s)",
- "definition_successful_adding" => "Ha agregado con éxito el atributo",
- "definition_successful_deleted" => "Ha eliminado con éxito",
- "definition_successful_updating" => "Ha actualizado con éxito el atributo",
- "definition_type" => "Tipo de Atributo",
- "definition_type_required" => "Tipo de Atributo es un campo obligatorio",
- "definition_unit" => "Unidad de medida",
- "definition_values" => "Valores del Atributo",
- "new" => "Nuevo Atributo",
- "no_attributes_to_display" => "No hay Atributos para mostrar",
- "receipt_visibility" => "Recibo",
- "show_in_items" => "Mostrar en ítems",
- "show_in_items_visibility" => "Ítems",
- "show_in_receipt" => "Mostrar en recibo",
- "show_in_receivings" => "Mostrar en recibos",
- "show_in_receivings_visibility" => "Recibos",
- "show_in_sales" => "Mostrar en ventas",
- "show_in_sales_visibility" => "Ventas",
- "update" => "Actualizar Atributo",
+ 'attribute_value_invalid_chars' => 'El valor del atributo no puede contener \':\' o \'|\'',
+ 'confirm_delete' => '¿Está seguro de que desea borrar los atributos seleccionados?',
+ 'confirm_restore' => '¿Está seguro de que desea restaurar los atributos seleccionados?',
+ 'definition_cannot_be_deleted' => 'No se han podido borrar los atributos seleccionados',
+ 'definition_invalid_group' => 'El grupo seleccionado no existe o no es válido.',
+ 'definition_error_adding_updating' => 'El atributo {0} no pudo ser agregado o actulizado. Por favor compruebe el registro de errores.',
+ 'definition_flags' => 'Visibilidad del atributo',
+ 'definition_group' => 'Grupo',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Agregar Atributo',
+ 'definition_name_required' => 'El nombre del Atributo es un campo obligatorio',
+ 'definition_one_or_multiple' => 'atributo(s)',
+ 'definition_successful_adding' => 'Ha agregado con éxito el atributo',
+ 'definition_successful_deleted' => 'Ha eliminado con éxito',
+ 'definition_successful_updating' => 'Ha actualizado con éxito el atributo',
+ 'definition_type' => 'Tipo de Atributo',
+ 'definition_type_required' => 'Tipo de Atributo es un campo obligatorio',
+ 'definition_unit' => 'Unidad de medida',
+ 'definition_values' => 'Valores del Atributo',
+ 'new' => 'Nuevo Atributo',
+ 'no_attributes_to_display' => 'No hay Atributos para mostrar',
+ 'receipt_visibility' => 'Recibo',
+ 'show_in_items' => 'Mostrar en ítems',
+ 'show_in_items_visibility' => 'Ítems',
+ 'show_in_receipt' => 'Mostrar en recibo',
+ 'show_in_receivings' => 'Mostrar en recibos',
+ 'show_in_receivings_visibility' => 'Recibos',
+ 'show_in_sales' => 'Mostrar en ventas',
+ 'show_in_sales_visibility' => 'Ventas',
+ 'show_in_search' => 'Mostrar en búsqueda',
+ 'show_in_search_visibility' => 'Búsqueda',
+ 'update' => 'Actualizar Atributo',
];
diff --git a/app/Language/es-MX/Attributes.php b/app/Language/es-MX/Attributes.php
index ff2619e73..86c5792dd 100644
--- a/app/Language/es-MX/Attributes.php
+++ b/app/Language/es-MX/Attributes.php
@@ -1,34 +1,36 @@
"El valor del atributo no puede contener ':' or '|'",
- "confirm_delete" => "¿Está seguro de eliminar el/los atributo(s) seleccionado(s)?",
- "confirm_restore" => "¿Está seguro que quiere restaurar los atributos seleccionados?",
- "definition_cannot_be_deleted" => "No ha sido posible eliminar el/los atributo(s) seleccionado(s)",
- "definition_invalid_group" => "El grupo seleccionado no existe o no es válido.",
- "definition_error_adding_updating" => "El atributo {0} no pudo ser agregado o actualizado. Favor de revisar el registro de errorres.",
- "definition_flags" => "Visibilidad del atributo",
- "definition_group" => "Grupo",
- "definition_id" => "Id",
- "definition_name" => "Agregar Atributo",
- "definition_name_required" => "El nombre del atributo es un campo requerido",
- "definition_one_or_multiple" => "atributo(s)",
- "definition_successful_adding" => "Has agregado un atributo correctamente",
- "definition_successful_deleted" => "El atributo se ha eliminado correctamente",
- "definition_successful_updating" => "El atributo se ha actualizado correctamente",
- "definition_type" => "Tipo de atributo",
- "definition_type_required" => "El tipo de atributo es un campo requerido",
- "definition_unit" => "Unidad de Medida",
- "definition_values" => "Valores del atributo",
- "new" => "Nuevo atributo",
- "no_attributes_to_display" => "Sin artículos para mostrar",
- "receipt_visibility" => "Recibo",
- "show_in_items" => "Mostrar en artículos",
- "show_in_items_visibility" => "Artículos",
- "show_in_receipt" => "Mostrar en recibo",
- "show_in_receivings" => "Mostrar en recepciones",
- "show_in_receivings_visibility" => "Recepciones",
- "show_in_sales" => "Mostrar en Ventas",
- "show_in_sales_visibility" => "Ventas",
- "update" => "Actualizar atributo",
+ 'attribute_value_invalid_chars' => 'El valor del atributo no puede contener \':\' or \'|\'',
+ 'confirm_delete' => '¿Está seguro de eliminar el/los atributo(s) seleccionado(s)?',
+ 'confirm_restore' => '¿Está seguro que quiere restaurar los atributos seleccionados?',
+ 'definition_cannot_be_deleted' => 'No ha sido posible eliminar el/los atributo(s) seleccionado(s)',
+ 'definition_invalid_group' => 'El grupo seleccionado no existe o no es válido.',
+ 'definition_error_adding_updating' => 'El atributo {0} no pudo ser agregado o actualizado. Favor de revisar el registro de errorres.',
+ 'definition_flags' => 'Visibilidad del atributo',
+ 'definition_group' => 'Grupo',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Agregar Atributo',
+ 'definition_name_required' => 'El nombre del atributo es un campo requerido',
+ 'definition_one_or_multiple' => 'atributo(s)',
+ 'definition_successful_adding' => 'Has agregado un atributo correctamente',
+ 'definition_successful_deleted' => 'El atributo se ha eliminado correctamente',
+ 'definition_successful_updating' => 'El atributo se ha actualizado correctamente',
+ 'definition_type' => 'Tipo de atributo',
+ 'definition_type_required' => 'El tipo de atributo es un campo requerido',
+ 'definition_unit' => 'Unidad de Medida',
+ 'definition_values' => 'Valores del atributo',
+ 'new' => 'Nuevo atributo',
+ 'no_attributes_to_display' => 'Sin artículos para mostrar',
+ 'receipt_visibility' => 'Recibo',
+ 'show_in_items' => 'Mostrar en artículos',
+ 'show_in_items_visibility' => 'Artículos',
+ 'show_in_receipt' => 'Mostrar en recibo',
+ 'show_in_receivings' => 'Mostrar en recepciones',
+ 'show_in_receivings_visibility' => 'Recepciones',
+ 'show_in_sales' => 'Mostrar en Ventas',
+ 'show_in_sales_visibility' => 'Ventas',
+ 'show_in_search' => 'Mostrar en búsqueda',
+ 'show_in_search_visibility' => 'Búsqueda',
+ 'update' => 'Actualizar atributo',
];
diff --git a/app/Language/fa/Attributes.php b/app/Language/fa/Attributes.php
index 260c48963..174ac67dc 100644
--- a/app/Language/fa/Attributes.php
+++ b/app/Language/fa/Attributes.php
@@ -1,34 +1,36 @@
"مقدار ویژگی نمی تواند حاوی | یا ـ باشد",
- "confirm_delete" => "آیا مطمئن هستید که می خواهید ویژگی (های) انتخاب شده را حذف کنید؟",
- "confirm_restore" => "آیا مطمئن هستید که می خواهید ویژگی (های) انتخاب شده را بازیابی کنید؟",
- "definition_cannot_be_deleted" => "نمی توان ویژگی (های) انتخابی را حذف کرد",
- "definition_invalid_group" => "گروه انتخاب شده وجود ندارد یا نامعتبر است.",
- "definition_error_adding_updating" => "ویژگی{0} اضافه نشد یا به روز نمی شود. لطفا گزارش خطا را بررسی کنید.",
- "definition_flags" => "قابلیت مشاهده ویژگی",
- "definition_group" => "گروه",
- "definition_id" => "شناسه",
- "definition_name" => "افزودن ویژگی",
- "definition_name_required" => "نام ویژگی یک فیلد ضروری است",
- "definition_one_or_multiple" => "(ویژگی(ها",
- "definition_successful_adding" => "شما مورد را با موفقیت اضافه کردید",
- "definition_successful_deleted" => "شما با موفقیت حذف شده اید",
- "definition_successful_updating" => "شما ویژگی را با موفقیت به روز کردید",
- "definition_type" => "نوع ویژگی",
- "definition_type_required" => "نوع ویژگی یک فیلد ضروری است",
- "definition_unit" => "واحد اندازه گیری",
- "definition_values" => "مقادیر مشخصه",
- "new" => "ویژگی جدید",
- "no_attributes_to_display" => "هیچ موردی برای نمایش",
- "receipt_visibility" => "اعلام وصول",
- "show_in_items" => "نمایش در موارد",
- "show_in_items_visibility" => "موارد",
- "show_in_receipt" => "نمایش در رسید",
- "show_in_receivings" => "نمایش در دریافت ها",
- "show_in_receivings_visibility" => "دریافت",
- "show_in_sales" => "نمایش در فروش",
- "show_in_sales_visibility" => "حراجی",
- "update" => "به روز کردن ویژگی",
+ 'attribute_value_invalid_chars' => 'مقدار ویژگی نمی تواند حاوی | یا ـ باشد',
+ 'confirm_delete' => 'آیا مطمئن هستید که می خواهید ویژگی (های) انتخاب شده را حذف کنید؟',
+ 'confirm_restore' => 'آیا مطمئن هستید که می خواهید ویژگی (های) انتخاب شده را بازیابی کنید؟',
+ 'definition_cannot_be_deleted' => 'نمی توان ویژگی (های) انتخابی را حذف کرد',
+ 'definition_invalid_group' => 'گروه انتخاب شده وجود ندارد یا نامعتبر است.',
+ 'definition_error_adding_updating' => 'ویژگی{0} اضافه نشد یا به روز نمی شود. لطفا گزارش خطا را بررسی کنید.',
+ 'definition_flags' => 'قابلیت مشاهده ویژگی',
+ 'definition_group' => 'گروه',
+ 'definition_id' => 'شناسه',
+ 'definition_name' => 'افزودن ویژگی',
+ 'definition_name_required' => 'نام ویژگی یک فیلد ضروری است',
+ 'definition_one_or_multiple' => '(ویژگی(ها',
+ 'definition_successful_adding' => 'شما مورد را با موفقیت اضافه کردید',
+ 'definition_successful_deleted' => 'شما با موفقیت حذف شده اید',
+ 'definition_successful_updating' => 'شما ویژگی را با موفقیت به روز کردید',
+ 'definition_type' => 'نوع ویژگی',
+ 'definition_type_required' => 'نوع ویژگی یک فیلد ضروری است',
+ 'definition_unit' => 'واحد اندازه گیری',
+ 'definition_values' => 'مقادیر مشخصه',
+ 'new' => 'ویژگی جدید',
+ 'no_attributes_to_display' => 'هیچ موردی برای نمایش',
+ 'receipt_visibility' => 'اعلام وصول',
+ 'show_in_items' => 'نمایش در موارد',
+ 'show_in_items_visibility' => 'موارد',
+ 'show_in_receipt' => 'نمایش در رسید',
+ 'show_in_receivings' => 'نمایش در دریافت ها',
+ 'show_in_receivings_visibility' => 'دریافت',
+ 'show_in_sales' => 'نمایش در فروش',
+ 'show_in_sales_visibility' => 'حراجی',
+ 'show_in_search' => 'نمایش در جستجو',
+ 'show_in_search_visibility' => 'جستجو',
+ 'update' => 'به روز کردن ویژگی',
];
diff --git a/app/Language/fr/Attributes.php b/app/Language/fr/Attributes.php
index 436273cef..f56bb63ef 100644
--- a/app/Language/fr/Attributes.php
+++ b/app/Language/fr/Attributes.php
@@ -1,34 +1,36 @@
"La valeur de l'attribut ne doit pas contenir '_' ou '|'",
- "confirm_delete" => "Êtes-vous certain de vouloir supprimer le(s) attribut(s) sélectionné(s) ?",
- "confirm_restore" => "Êtes-vous certain de vouloir restaurer le(s) attribut(s) sélectionné(s) ?",
- "definition_cannot_be_deleted" => "Le(s) attribut(s) sélectionné(s) n'ont pas pu être supprimé(s)",
- "definition_invalid_group" => "Le groupe sélectionné n'existe pas ou est invalide.",
- "definition_error_adding_updating" => "L'attribut {0} n'a pas pu être ajouté ou mis à jour. Veuillez vérifier le journal d'erreurs.",
- "definition_flags" => "Visibilité de l'attribut",
- "definition_group" => "Groupe",
- "definition_id" => "ID",
- "definition_name" => "Ajouter un attribut",
- "definition_name_required" => "Le nom de l'attribut est requis",
- "definition_one_or_multiple" => "attribut(s)",
- "definition_successful_adding" => "Vous avez ajouté l'article avec succès",
- "definition_successful_deleted" => "Vous avez supprimé avec succès",
- "definition_successful_updating" => "Vous avez mis-à-jour l'attribut avec succès",
- "definition_type" => "Type d'attribut",
- "definition_type_required" => "Le type d'attribut est requis",
- "definition_unit" => "Unité de mesure",
- "definition_values" => "Valeurs de l'attribut",
- "new" => "Nouvel attribut",
- "no_attributes_to_display" => "Aucun attribut à afficher",
- "receipt_visibility" => "Reçu",
- "show_in_items" => "Afficher dans les articles",
- "show_in_items_visibility" => "Articles",
- "show_in_receipt" => "Afficher sur le reçu",
- "show_in_receivings" => "Afficher dans les réceptions",
- "show_in_receivings_visibility" => "Réceptions",
- "show_in_sales" => "Afficher dans les ventes",
- "show_in_sales_visibility" => "Ventes",
- "update" => "Mettre à jour l'attribut",
+ 'attribute_value_invalid_chars' => 'La valeur de l\'attribut ne doit pas contenir \'_\' ou \'|\'',
+ 'confirm_delete' => 'Êtes-vous certain de vouloir supprimer le(s) attribut(s) sélectionné(s) ?',
+ 'confirm_restore' => 'Êtes-vous certain de vouloir restaurer le(s) attribut(s) sélectionné(s) ?',
+ 'definition_cannot_be_deleted' => 'Le(s) attribut(s) sélectionné(s) n\'ont pas pu être supprimé(s)',
+ 'definition_invalid_group' => 'Le groupe sélectionné n\'existe pas ou est invalide.',
+ 'definition_error_adding_updating' => 'L\'attribut {0} n\'a pas pu être ajouté ou mis à jour. Veuillez vérifier le journal d\'erreurs.',
+ 'definition_flags' => 'Visibilité de l\'attribut',
+ 'definition_group' => 'Groupe',
+ 'definition_id' => 'ID',
+ 'definition_name' => 'Ajouter un attribut',
+ 'definition_name_required' => 'Le nom de l\'attribut est requis',
+ 'definition_one_or_multiple' => 'attribut(s)',
+ 'definition_successful_adding' => 'Vous avez ajouté l\'article avec succès',
+ 'definition_successful_deleted' => 'Vous avez supprimé avec succès',
+ 'definition_successful_updating' => 'Vous avez mis-à-jour l\'attribut avec succès',
+ 'definition_type' => 'Type d\'attribut',
+ 'definition_type_required' => 'Le type d\'attribut est requis',
+ 'definition_unit' => 'Unité de mesure',
+ 'definition_values' => 'Valeurs de l\'attribut',
+ 'new' => 'Nouvel attribut',
+ 'no_attributes_to_display' => 'Aucun attribut à afficher',
+ 'receipt_visibility' => 'Reçu',
+ 'show_in_items' => 'Afficher dans les articles',
+ 'show_in_items_visibility' => 'Articles',
+ 'show_in_receipt' => 'Afficher sur le reçu',
+ 'show_in_receivings' => 'Afficher dans les réceptions',
+ 'show_in_receivings_visibility' => 'Réceptions',
+ 'show_in_sales' => 'Afficher dans les ventes',
+ 'show_in_sales_visibility' => 'Ventes',
+ 'show_in_search' => 'Afficher dans la recherche',
+ 'show_in_search_visibility' => 'Recherche',
+ 'update' => 'Mettre à jour l\'attribut',
];
diff --git a/app/Language/he/Attributes.php b/app/Language/he/Attributes.php
index 53980bc72..527d24ba7 100644
--- a/app/Language/he/Attributes.php
+++ b/app/Language/he/Attributes.php
@@ -1,34 +1,36 @@
"ערך השדה אינו יכול להכיל ':' או '|'",
- "confirm_delete" => "האם אתה בטוח שברצונך למחוק את המאפיינים שנבחרו?",
- "confirm_restore" => "האם אתה בטוח שברצונך לשחזר את המאפיינים שנבחרו?",
- "definition_cannot_be_deleted" => "לא ניתן למחוק מאפיינים נבחר(ים)",
- "definition_invalid_group" => "הקבוצה שנבחרה לא קיימת או אינה תקינה.",
- "definition_error_adding_updating" => "לא ניתן להוסיף או לעדכן את הערך {0}. בדוק את יומן השגיאות.",
- "definition_flags" => "מאפיין גלוי",
- "definition_group" => "קבוצה",
- "definition_id" => "מספר זיהוי",
- "definition_name" => "הוסף מאפיין",
- "definition_name_required" => "מאפיין שם הינו שדה חובה",
- "definition_one_or_multiple" => "תכונה (תכונות)",
- "definition_successful_adding" => "הוספת בהצלחה את הפריט",
- "definition_successful_deleted" => "נמחק בהצלחה",
- "definition_successful_updating" => "עדכנת בהצלחה את המאפיין",
- "definition_type" => "סוג מאפיין",
- "definition_type_required" => "שדה המאפיין הינו שדה חובה",
- "definition_unit" => "יחידת מדידה",
- "definition_values" => "ערכי המאפיין",
- "new" => "מאפיין חדש",
- "no_attributes_to_display" => "אין פריטים להצגה",
- "receipt_visibility" => "קבלה",
- "show_in_items" => "הצג בפריטים",
- "show_in_items_visibility" => "פריטים",
- "show_in_receipt" => "הצג בקבלה",
- "show_in_receivings" => "הצג בקבלת סחורה",
- "show_in_receivings_visibility" => "קבלת סחורה",
- "show_in_sales" => "הצג במכירות",
- "show_in_sales_visibility" => "מכירות",
- "update" => "עדכן מאפיין",
+ 'attribute_value_invalid_chars' => 'ערך השדה אינו יכול להכיל \':\' או \'|\'',
+ 'confirm_delete' => 'האם אתה בטוח שברצונך למחוק את המאפיינים שנבחרו?',
+ 'confirm_restore' => 'האם אתה בטוח שברצונך לשחזר את המאפיינים שנבחרו?',
+ 'definition_cannot_be_deleted' => 'לא ניתן למחוק מאפיינים נבחר(ים)',
+ 'definition_invalid_group' => 'הקבוצה שנבחרה לא קיימת או אינה תקינה.',
+ 'definition_error_adding_updating' => 'לא ניתן להוסיף או לעדכן את הערך {0}. בדוק את יומן השגיאות.',
+ 'definition_flags' => 'מאפיין גלוי',
+ 'definition_group' => 'קבוצה',
+ 'definition_id' => 'מספר זיהוי',
+ 'definition_name' => 'הוסף מאפיין',
+ 'definition_name_required' => 'מאפיין שם הינו שדה חובה',
+ 'definition_one_or_multiple' => 'תכונה (תכונות)',
+ 'definition_successful_adding' => 'הוספת בהצלחה את הפריט',
+ 'definition_successful_deleted' => 'נמחק בהצלחה',
+ 'definition_successful_updating' => 'עדכנת בהצלחה את המאפיין',
+ 'definition_type' => 'סוג מאפיין',
+ 'definition_type_required' => 'שדה המאפיין הינו שדה חובה',
+ 'definition_unit' => 'יחידת מדידה',
+ 'definition_values' => 'ערכי המאפיין',
+ 'new' => 'מאפיין חדש',
+ 'no_attributes_to_display' => 'אין פריטים להצגה',
+ 'receipt_visibility' => 'קבלה',
+ 'show_in_items' => 'הצג בפריטים',
+ 'show_in_items_visibility' => 'פריטים',
+ 'show_in_receipt' => 'הצג בקבלה',
+ 'show_in_receivings' => 'הצג בקבלת סחורה',
+ 'show_in_receivings_visibility' => 'קבלת סחורה',
+ 'show_in_sales' => 'הצג במכירות',
+ 'show_in_sales_visibility' => 'מכירות',
+ 'show_in_search' => 'הצג בחיפוש',
+ 'show_in_search_visibility' => 'חיפוש',
+ 'update' => 'עדכן מאפיין',
];
diff --git a/app/Language/hr-HR/Attributes.php b/app/Language/hr-HR/Attributes.php
index 3213b12e4..a328dd205 100644
--- a/app/Language/hr-HR/Attributes.php
+++ b/app/Language/hr-HR/Attributes.php
@@ -1,34 +1,36 @@
"",
- "confirm_delete" => "",
- "confirm_restore" => "",
- "definition_cannot_be_deleted" => "",
- "definition_invalid_group" => "",
- "definition_error_adding_updating" => "",
- "definition_flags" => "",
- "definition_group" => "",
- "definition_id" => "",
- "definition_name" => "",
- "definition_name_required" => "",
- "definition_one_or_multiple" => "",
- "definition_successful_adding" => "",
- "definition_successful_deleted" => "",
- "definition_successful_updating" => "",
- "definition_type" => "",
- "definition_type_required" => "",
- "definition_unit" => "",
- "definition_values" => "",
- "new" => "",
- "no_attributes_to_display" => "",
- "receipt_visibility" => "",
- "show_in_items" => "",
- "show_in_items_visibility" => "",
- "show_in_receipt" => "",
- "show_in_receivings" => "",
- "show_in_receivings_visibility" => "",
- "show_in_sales" => "",
- "show_in_sales_visibility" => "",
- "update" => "",
+ 'attribute_value_invalid_chars' => '',
+ 'confirm_delete' => '',
+ 'confirm_restore' => '',
+ 'definition_cannot_be_deleted' => '',
+ 'definition_invalid_group' => '',
+ 'definition_error_adding_updating' => '',
+ 'definition_flags' => '',
+ 'definition_group' => '',
+ 'definition_id' => '',
+ 'definition_name' => '',
+ 'definition_name_required' => '',
+ 'definition_one_or_multiple' => '',
+ 'definition_successful_adding' => '',
+ 'definition_successful_deleted' => '',
+ 'definition_successful_updating' => '',
+ 'definition_type' => '',
+ 'definition_type_required' => '',
+ 'definition_unit' => '',
+ 'definition_values' => '',
+ 'new' => '',
+ 'no_attributes_to_display' => '',
+ 'receipt_visibility' => '',
+ 'show_in_items' => '',
+ 'show_in_items_visibility' => '',
+ 'show_in_receipt' => '',
+ 'show_in_receivings' => '',
+ 'show_in_receivings_visibility' => '',
+ 'show_in_sales' => '',
+ 'show_in_sales_visibility' => '',
+ 'show_in_search' => 'Prikaži u pretrazi',
+ 'show_in_search_visibility' => 'Pretraga',
+ 'update' => '',
];
diff --git a/app/Language/hu/Attributes.php b/app/Language/hu/Attributes.php
index 530aba7b4..e6fd036c9 100644
--- a/app/Language/hu/Attributes.php
+++ b/app/Language/hu/Attributes.php
@@ -1,34 +1,36 @@
"Tulajdonság értéke nem tartalmazhat '_' vagy '|' karaktert",
- "confirm_delete" => "Biztosan törli szeretné a kijelölt tulajdonságokat?",
- "confirm_restore" => "Biztosan visszaállítja a kijelölt tulajdonságokat?",
- "definition_cannot_be_deleted" => "Nem sikerült törölni a kijelölt tulajdonságokat",
- "definition_invalid_group" => "A kiválasztott csoport nem létezik vagy érvénytelen.",
- "definition_error_adding_updating" => "{0} attribútum nem adható hozzá és nem frissíthető. Kérjük, ellenőrizze a hibanaplót.",
- "definition_flags" => "Tulajdonság láthatósága",
- "definition_group" => "Csoport",
- "definition_id" => "Azonosító",
- "definition_name" => "Tulajdonság hozzáadása",
- "definition_name_required" => "Tulajdonság név kötelező mező",
- "definition_one_or_multiple" => "tulajdonságok",
- "definition_successful_adding" => "Sikeresen hozzáadta az elemet",
- "definition_successful_deleted" => "Sikeresen törölte",
- "definition_successful_updating" => "Sikeresen frissítette a tulajdonságot",
- "definition_type" => "Tulajdonság típus",
- "definition_type_required" => "Tulajdonság típusa kötelező mező",
- "definition_unit" => "Mértkékegység",
- "definition_values" => "Tulajdonság értékei",
- "new" => "Új tulajdnoság",
- "no_attributes_to_display" => "Nincs megjelenítendő elem",
- "receipt_visibility" => "Nyugta",
- "show_in_items" => "Megjelenítés a termékekben",
- "show_in_items_visibility" => "Termékek",
- "show_in_receipt" => "Nyugta megjelenítése",
- "show_in_receivings" => "Meglenesítés árúátvételekben",
- "show_in_receivings_visibility" => "Áruátvételek",
- "show_in_sales" => "Megjelenítés az értékesítésekben",
- "show_in_sales_visibility" => "Értékesítések",
- "update" => "Tulajdonság frissítése",
+ 'attribute_value_invalid_chars' => 'Tulajdonság értéke nem tartalmazhat \'_\' vagy \'|\' karaktert',
+ 'confirm_delete' => 'Biztosan törli szeretné a kijelölt tulajdonságokat?',
+ 'confirm_restore' => 'Biztosan visszaállítja a kijelölt tulajdonságokat?',
+ 'definition_cannot_be_deleted' => 'Nem sikerült törölni a kijelölt tulajdonságokat',
+ 'definition_invalid_group' => 'A kiválasztott csoport nem létezik vagy érvénytelen.',
+ 'definition_error_adding_updating' => '{0} attribútum nem adható hozzá és nem frissíthető. Kérjük, ellenőrizze a hibanaplót.',
+ 'definition_flags' => 'Tulajdonság láthatósága',
+ 'definition_group' => 'Csoport',
+ 'definition_id' => 'Azonosító',
+ 'definition_name' => 'Tulajdonság hozzáadása',
+ 'definition_name_required' => 'Tulajdonság név kötelező mező',
+ 'definition_one_or_multiple' => 'tulajdonságok',
+ 'definition_successful_adding' => 'Sikeresen hozzáadta az elemet',
+ 'definition_successful_deleted' => 'Sikeresen törölte',
+ 'definition_successful_updating' => 'Sikeresen frissítette a tulajdonságot',
+ 'definition_type' => 'Tulajdonság típus',
+ 'definition_type_required' => 'Tulajdonság típusa kötelező mező',
+ 'definition_unit' => 'Mértkékegység',
+ 'definition_values' => 'Tulajdonság értékei',
+ 'new' => 'Új tulajdnoság',
+ 'no_attributes_to_display' => 'Nincs megjelenítendő elem',
+ 'receipt_visibility' => 'Nyugta',
+ 'show_in_items' => 'Megjelenítés a termékekben',
+ 'show_in_items_visibility' => 'Termékek',
+ 'show_in_receipt' => 'Nyugta megjelenítése',
+ 'show_in_receivings' => 'Meglenesítés árúátvételekben',
+ 'show_in_receivings_visibility' => 'Áruátvételek',
+ 'show_in_sales' => 'Megjelenítés az értékesítésekben',
+ 'show_in_sales_visibility' => 'Értékesítések',
+ 'show_in_search' => 'Megjelenítés a keresésben',
+ 'show_in_search_visibility' => 'Keresés',
+ 'update' => 'Tulajdonság frissítése',
];
diff --git a/app/Language/hy/Attributes.php b/app/Language/hy/Attributes.php
index 377b84f4b..e52e89f11 100644
--- a/app/Language/hy/Attributes.php
+++ b/app/Language/hy/Attributes.php
@@ -1,34 +1,36 @@
"Attribute value cannot contain ':' or '|'",
- "confirm_delete" => "Are you sure you want to delete the selected attribute(s)?",
- "confirm_restore" => "Are you sure you want to restore the selected attribute(s)?",
- "definition_cannot_be_deleted" => "Could not delete selected attribute(s)",
- "definition_invalid_group" => "",
- "definition_error_adding_updating" => "Attribute {0} could not be added or updated. Please check the error log.",
- "definition_flags" => "Attribute Visibility",
- "definition_group" => "Group",
- "definition_id" => "Id",
- "definition_name" => "Add Attribute",
- "definition_name_required" => "Attribute name is a required field",
- "definition_one_or_multiple" => "attribute(s)",
- "definition_successful_adding" => "You have successfully added item",
- "definition_successful_deleted" => "You have successfully deleted",
- "definition_successful_updating" => "You have successfully updated attribute",
- "definition_type" => "Attribute Type",
- "definition_type_required" => "Attribute type is a required field",
- "definition_unit" => "Measurement Unit",
- "definition_values" => "Attribute Values",
- "new" => "New Attribute",
- "no_attributes_to_display" => "No Items to display",
- "receipt_visibility" => "Receipt",
- "show_in_items" => "Show in items",
- "show_in_items_visibility" => "Items",
- "show_in_receipt" => "Show in receipt",
- "show_in_receivings" => "Show in receivings",
- "show_in_receivings_visibility" => "Receivings",
- "show_in_sales" => "Show in sales",
- "show_in_sales_visibility" => "Sales",
- "update" => "Update Attribute",
+ 'attribute_value_invalid_chars' => 'Attribute value cannot contain \':\' or \'|\'',
+ 'confirm_delete' => 'Are you sure you want to delete the selected attribute(s)?',
+ 'confirm_restore' => 'Are you sure you want to restore the selected attribute(s)?',
+ 'definition_cannot_be_deleted' => 'Could not delete selected attribute(s)',
+ 'definition_invalid_group' => '',
+ 'definition_error_adding_updating' => 'Attribute {0} could not be added or updated. Please check the error log.',
+ 'definition_flags' => 'Attribute Visibility',
+ 'definition_group' => 'Group',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Add Attribute',
+ 'definition_name_required' => 'Attribute name is a required field',
+ 'definition_one_or_multiple' => 'attribute(s)',
+ 'definition_successful_adding' => 'You have successfully added item',
+ 'definition_successful_deleted' => 'You have successfully deleted',
+ 'definition_successful_updating' => 'You have successfully updated attribute',
+ 'definition_type' => 'Attribute Type',
+ 'definition_type_required' => 'Attribute type is a required field',
+ 'definition_unit' => 'Measurement Unit',
+ 'definition_values' => 'Attribute Values',
+ 'new' => 'New Attribute',
+ 'no_attributes_to_display' => 'No Items to display',
+ 'receipt_visibility' => 'Receipt',
+ 'show_in_items' => 'Show in items',
+ 'show_in_items_visibility' => 'Items',
+ 'show_in_receipt' => 'Show in receipt',
+ 'show_in_receivings' => 'Show in receivings',
+ 'show_in_receivings_visibility' => 'Receivings',
+ 'show_in_sales' => 'Show in sales',
+ 'show_in_sales_visibility' => 'Sales',
+ 'show_in_search' => 'Ցուցադրել որոնման մեջ',
+ 'show_in_search_visibility' => 'Որոնում',
+ 'update' => 'Update Attribute',
];
diff --git a/app/Language/id/Attributes.php b/app/Language/id/Attributes.php
index 0d94527a0..d23be2e08 100644
--- a/app/Language/id/Attributes.php
+++ b/app/Language/id/Attributes.php
@@ -1,34 +1,36 @@
"Nilai Atribut tidak boleh mengandung karakter '_' atau '|'",
- "confirm_delete" => "Apakah Anda yakin ingin menghapus atribut tersebut?",
- "confirm_restore" => "Apakah Anda yakin ingin mengembalikan atribut tersebut?",
- "definition_cannot_be_deleted" => "Tidak bisa menghapus atribut terpilih",
- "definition_invalid_group" => "Grup yang dipilih tidak ada atau tidak valid.",
- "definition_error_adding_updating" => "Atribut {0} tidak dapat ditambah atau diperbaharui. Silahkan periksa log kesalahan.",
- "definition_flags" => "Visibilitas Atribut",
- "definition_group" => "Grup",
- "definition_id" => "Nomor Id",
- "definition_name" => "Tambah Atribut",
- "definition_name_required" => "Nama atribut harus diisi",
- "definition_one_or_multiple" => "atribut",
- "definition_successful_adding" => "Anda telah berhasil menambahkan atribut",
- "definition_successful_deleted" => "Anda telah berhasil menghapus",
- "definition_successful_updating" => "Anda telah berhasil memperbaharui atribut",
- "definition_type" => "Tipe Atribut",
- "definition_type_required" => "Tipe Atribut harus diisi",
- "definition_unit" => "Satuan Ukuran",
- "definition_values" => "Nilai Atribut",
- "new" => "Atribut baru",
- "no_attributes_to_display" => "Tidak ada Item yang dapat ditampilkan",
- "receipt_visibility" => "Struk",
- "show_in_items" => "Tampilkan dalam item",
- "show_in_items_visibility" => "Item",
- "show_in_receipt" => "Tampilkan dalam struk",
- "show_in_receivings" => "Tampilkan dalam penerimaan",
- "show_in_receivings_visibility" => "Penerimaan",
- "show_in_sales" => "Tampilkan dalam penjualan",
- "show_in_sales_visibility" => "Penjualan",
- "update" => "Perbarui Atribut",
+ 'attribute_value_invalid_chars' => 'Nilai Atribut tidak boleh mengandung karakter \'_\' atau \'|\'',
+ 'confirm_delete' => 'Apakah Anda yakin ingin menghapus atribut tersebut?',
+ 'confirm_restore' => 'Apakah Anda yakin ingin mengembalikan atribut tersebut?',
+ 'definition_cannot_be_deleted' => 'Tidak bisa menghapus atribut terpilih',
+ 'definition_invalid_group' => 'Grup yang dipilih tidak ada atau tidak valid.',
+ 'definition_error_adding_updating' => 'Atribut {0} tidak dapat ditambah atau diperbaharui. Silahkan periksa log kesalahan.',
+ 'definition_flags' => 'Visibilitas Atribut',
+ 'definition_group' => 'Grup',
+ 'definition_id' => 'Nomor Id',
+ 'definition_name' => 'Tambah Atribut',
+ 'definition_name_required' => 'Nama atribut harus diisi',
+ 'definition_one_or_multiple' => 'atribut',
+ 'definition_successful_adding' => 'Anda telah berhasil menambahkan atribut',
+ 'definition_successful_deleted' => 'Anda telah berhasil menghapus',
+ 'definition_successful_updating' => 'Anda telah berhasil memperbaharui atribut',
+ 'definition_type' => 'Tipe Atribut',
+ 'definition_type_required' => 'Tipe Atribut harus diisi',
+ 'definition_unit' => 'Satuan Ukuran',
+ 'definition_values' => 'Nilai Atribut',
+ 'new' => 'Atribut baru',
+ 'no_attributes_to_display' => 'Tidak ada Item yang dapat ditampilkan',
+ 'receipt_visibility' => 'Struk',
+ 'show_in_items' => 'Tampilkan dalam item',
+ 'show_in_items_visibility' => 'Item',
+ 'show_in_receipt' => 'Tampilkan dalam struk',
+ 'show_in_receivings' => 'Tampilkan dalam penerimaan',
+ 'show_in_receivings_visibility' => 'Penerimaan',
+ 'show_in_sales' => 'Tampilkan dalam penjualan',
+ 'show_in_sales_visibility' => 'Penjualan',
+ 'show_in_search' => 'Tampilkan dalam pencarian',
+ 'show_in_search_visibility' => 'Pencarian',
+ 'update' => 'Perbarui Atribut',
];
diff --git a/app/Language/it/Attributes.php b/app/Language/it/Attributes.php
index d6c997eae..53e41620f 100644
--- a/app/Language/it/Attributes.php
+++ b/app/Language/it/Attributes.php
@@ -1,34 +1,36 @@
"Il valore dell'attributo non può contenere '_' o '|'",
- "confirm_delete" => "Sei sicuro di voler eliminare gli attributi selezionati?",
- "confirm_restore" => "Sei sicuro di voler ripristinare l'attributo selezionato?",
- "definition_cannot_be_deleted" => "Non riesco a cancellare l'attributo selezionato",
- "definition_invalid_group" => "Il gruppo selezionato non esiste o non è valido.",
- "definition_error_adding_updating" => "Impossibile aggiungere o aggiornare l'attributo {0}. Si prega di controllare il registro degli errori.",
- "definition_flags" => "Visibilità attributo",
- "definition_group" => "Gruppo",
- "definition_id" => "Id",
- "definition_name" => "Aggiungi attributo",
- "definition_name_required" => "Nome attributo è richiesto",
- "definition_one_or_multiple" => "attributo(i)",
- "definition_successful_adding" => "Hai aggiunto il prodotto con successo",
- "definition_successful_deleted" => "Cancellato con successo",
- "definition_successful_updating" => "Hai aggiornato correttamente l'attributo",
- "definition_type" => "Tipo di attributo",
- "definition_type_required" => "Il tipo di attribuito è richiesto",
- "definition_unit" => "Unità di misura",
- "definition_values" => "Valore attributo",
- "new" => "Nuovo attributo",
- "no_attributes_to_display" => "Nessun elemento da visualizzare",
- "receipt_visibility" => "Scontrino",
- "show_in_items" => "Visualizza in articoli",
- "show_in_items_visibility" => "Articoli",
- "show_in_receipt" => "Mostra in ricevuta",
- "show_in_receivings" => "Mostra negli incassi",
- "show_in_receivings_visibility" => "Ricezione",
- "show_in_sales" => "Visualizza in vendite",
- "show_in_sales_visibility" => "Vendite",
- "update" => "Aggiorna attributo",
+ 'attribute_value_invalid_chars' => 'Il valore dell\'attributo non può contenere \'_\' o \'|\'',
+ 'confirm_delete' => 'Sei sicuro di voler eliminare gli attributi selezionati?',
+ 'confirm_restore' => 'Sei sicuro di voler ripristinare l\'attributo selezionato?',
+ 'definition_cannot_be_deleted' => 'Non riesco a cancellare l\'attributo selezionato',
+ 'definition_invalid_group' => 'Il gruppo selezionato non esiste o non è valido.',
+ 'definition_error_adding_updating' => 'Impossibile aggiungere o aggiornare l\'attributo {0}. Si prega di controllare il registro degli errori.',
+ 'definition_flags' => 'Visibilità attributo',
+ 'definition_group' => 'Gruppo',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Aggiungi attributo',
+ 'definition_name_required' => 'Nome attributo è richiesto',
+ 'definition_one_or_multiple' => 'attributo(i)',
+ 'definition_successful_adding' => 'Hai aggiunto il prodotto con successo',
+ 'definition_successful_deleted' => 'Cancellato con successo',
+ 'definition_successful_updating' => 'Hai aggiornato correttamente l\'attributo',
+ 'definition_type' => 'Tipo di attributo',
+ 'definition_type_required' => 'Il tipo di attribuito è richiesto',
+ 'definition_unit' => 'Unità di misura',
+ 'definition_values' => 'Valore attributo',
+ 'new' => 'Nuovo attributo',
+ 'no_attributes_to_display' => 'Nessun elemento da visualizzare',
+ 'receipt_visibility' => 'Scontrino',
+ 'show_in_items' => 'Visualizza in articoli',
+ 'show_in_items_visibility' => 'Articoli',
+ 'show_in_receipt' => 'Mostra in ricevuta',
+ 'show_in_receivings' => 'Mostra negli incassi',
+ 'show_in_receivings_visibility' => 'Ricezione',
+ 'show_in_sales' => 'Visualizza in vendite',
+ 'show_in_sales_visibility' => 'Vendite',
+ 'show_in_search' => 'Visualizza nella ricerca',
+ 'show_in_search_visibility' => 'Ricerca',
+ 'update' => 'Aggiorna attributo',
];
diff --git a/app/Language/km/Attributes.php b/app/Language/km/Attributes.php
index 557e51522..41a6c78c5 100644
--- a/app/Language/km/Attributes.php
+++ b/app/Language/km/Attributes.php
@@ -1,34 +1,36 @@
"ព៌តមានបន្ថែម មិនអាចមានអក្សរ '_' រឺ '|'",
- "confirm_delete" => "តើអ្នកពិតជាចង់លុប ព៌តមានបន្ថែម ដែលបានជ្រើសរើស?",
- "confirm_restore" => "តើអ្នកពិតជាដាក់ឡើងវិញនៅ ព៌តមានបន្ថែម ដែលបានជ្រើសរើស?",
- "definition_cannot_be_deleted" => "មិនអាចលុបព៌តមានបន្ថែមដែលបានជ្រើសរើស",
- "definition_invalid_group" => "",
- "definition_error_adding_updating" => "ព៌តមានបន្ថែម {0} មិនអាចថែម រឺកែប្រែបានឡើយ។ សូមចូលទៅឆែករបាយការណ៍កំហុស។",
- "definition_flags" => "ដាក់បង្ហាញព៌តមានបន្ថែម",
- "definition_group" => "ក្រុម",
- "definition_id" => "លេខរៀង",
- "definition_name" => "បន្ថែម ព៌តមាន",
- "definition_name_required" => "ឈ្មោះនៃព៌តមានបន្ថែម គឺត្រូវការចាំបាច់ត្រូវបំពេញ",
- "definition_one_or_multiple" => "ព៌តមានបន្ថែម",
- "definition_successful_adding" => "",
- "definition_successful_deleted" => "",
- "definition_successful_updating" => "",
- "definition_type" => "",
- "definition_type_required" => "",
- "definition_unit" => "",
- "definition_values" => "",
- "new" => "",
- "no_attributes_to_display" => "",
- "receipt_visibility" => "",
- "show_in_items" => "",
- "show_in_items_visibility" => "",
- "show_in_receipt" => "",
- "show_in_receivings" => "",
- "show_in_receivings_visibility" => "",
- "show_in_sales" => "",
- "show_in_sales_visibility" => "",
- "update" => "",
+ 'attribute_value_invalid_chars' => 'ព៌តមានបន្ថែម មិនអាចមានអក្សរ \'_\' រឺ \'|\'',
+ 'confirm_delete' => 'តើអ្នកពិតជាចង់លុប ព៌តមានបន្ថែម ដែលបានជ្រើសរើស?',
+ 'confirm_restore' => 'តើអ្នកពិតជាដាក់ឡើងវិញនៅ ព៌តមានបន្ថែម ដែលបានជ្រើសរើស?',
+ 'definition_cannot_be_deleted' => 'មិនអាចលុបព៌តមានបន្ថែមដែលបានជ្រើសរើស',
+ 'definition_invalid_group' => '',
+ 'definition_error_adding_updating' => 'ព៌តមានបន្ថែម {0} មិនអាចថែម រឺកែប្រែបានឡើយ។ សូមចូលទៅឆែករបាយការណ៍កំហុស។',
+ 'definition_flags' => 'ដាក់បង្ហាញព៌តមានបន្ថែម',
+ 'definition_group' => 'ក្រុម',
+ 'definition_id' => 'លេខរៀង',
+ 'definition_name' => 'បន្ថែម ព៌តមាន',
+ 'definition_name_required' => 'ឈ្មោះនៃព៌តមានបន្ថែម គឺត្រូវការចាំបាច់ត្រូវបំពេញ',
+ 'definition_one_or_multiple' => 'ព៌តមានបន្ថែម',
+ 'definition_successful_adding' => '',
+ 'definition_successful_deleted' => '',
+ 'definition_successful_updating' => '',
+ 'definition_type' => '',
+ 'definition_type_required' => '',
+ 'definition_unit' => '',
+ 'definition_values' => '',
+ 'new' => '',
+ 'no_attributes_to_display' => '',
+ 'receipt_visibility' => '',
+ 'show_in_items' => '',
+ 'show_in_items_visibility' => '',
+ 'show_in_receipt' => '',
+ 'show_in_receivings' => '',
+ 'show_in_receivings_visibility' => '',
+ 'show_in_sales' => '',
+ 'show_in_sales_visibility' => '',
+ 'show_in_search' => 'បង្ហាញក្នុងការស្វែងរក',
+ 'show_in_search_visibility' => 'ស្វែងរក',
+ 'update' => '',
];
diff --git a/app/Language/lo/Attributes.php b/app/Language/lo/Attributes.php
index e5bb66296..10bcfa392 100644
--- a/app/Language/lo/Attributes.php
+++ b/app/Language/lo/Attributes.php
@@ -1,34 +1,36 @@
"ຄ່າແອດທິບິວບໍ່ສາມາດມີ ':' ຫລື '|'",
- "confirm_delete" => "ແນ່ໃຈຫຼືບໍທີ່ຈະລືບລາຍການທີ່ເລືອກ",
- "confirm_restore" => "ແນ່ໃຈຫຼືບໍທີ່ຈະຄືນຄ່າແອັດທິບິ້ວດັ່ງກ່າວ?",
- "definition_cannot_be_deleted" => "ບໍສາມາດລືບລາຍການທີ່ເລືອກໄດ້",
- "definition_invalid_group" => "",
- "definition_error_adding_updating" => "ລາຍການ {0} ບໍສາມາດເພີ່ມ ຫຼື ແກ້ໄຂ. ກະລຸນາກວດສອບຢູ່ log ຂໍ້ຜິດຜາດ",
- "definition_flags" => "ຄູນສົມບັດການເບິ່ງເຫັນ",
- "definition_group" => "ກຸ່ມ",
- "definition_id" => "ລະຫັດ",
- "definition_name" => "ເພີ່ມລາຍການ",
- "definition_name_required" => "ຕ້ອງໄດ້ລະບຸຊື່ລາຍການ",
- "definition_one_or_multiple" => "ລາຍການ",
- "definition_successful_adding" => "ເພີ່ມລາຍການສຳເລັດແລ້ວ",
- "definition_successful_deleted" => "ລຶບລາຍການສຳເລັດແລ້ວ",
- "definition_successful_updating" => "ແກ້ໄຂລາຍການສຳເລັດແລ້ວ",
- "definition_type" => "ປະເພດລາຍການ",
- "definition_type_required" => "ປະເພດແອດທີບິວ ຈຳເປັນຕ້ອງໃຊ້",
- "definition_unit" => "",
- "definition_values" => "",
- "new" => "",
- "no_attributes_to_display" => "",
- "receipt_visibility" => "",
- "show_in_items" => "",
- "show_in_items_visibility" => "",
- "show_in_receipt" => "",
- "show_in_receivings" => "",
- "show_in_receivings_visibility" => "",
- "show_in_sales" => "",
- "show_in_sales_visibility" => "",
- "update" => "",
+ 'attribute_value_invalid_chars' => 'ຄ່າແອດທິບິວບໍ່ສາມາດມີ \':\' ຫລື \'|\'',
+ 'confirm_delete' => 'ແນ່ໃຈຫຼືບໍທີ່ຈະລືບລາຍການທີ່ເລືອກ',
+ 'confirm_restore' => 'ແນ່ໃຈຫຼືບໍທີ່ຈະຄືນຄ່າແອັດທິບິ້ວດັ່ງກ່າວ?',
+ 'definition_cannot_be_deleted' => 'ບໍສາມາດລືບລາຍການທີ່ເລືອກໄດ້',
+ 'definition_invalid_group' => '',
+ 'definition_error_adding_updating' => 'ລາຍການ {0} ບໍສາມາດເພີ່ມ ຫຼື ແກ້ໄຂ. ກະລຸນາກວດສອບຢູ່ log ຂໍ້ຜິດຜາດ',
+ 'definition_flags' => 'ຄູນສົມບັດການເບິ່ງເຫັນ',
+ 'definition_group' => 'ກຸ່ມ',
+ 'definition_id' => 'ລະຫັດ',
+ 'definition_name' => 'ເພີ່ມລາຍການ',
+ 'definition_name_required' => 'ຕ້ອງໄດ້ລະບຸຊື່ລາຍການ',
+ 'definition_one_or_multiple' => 'ລາຍການ',
+ 'definition_successful_adding' => 'ເພີ່ມລາຍການສຳເລັດແລ້ວ',
+ 'definition_successful_deleted' => 'ລຶບລາຍການສຳເລັດແລ້ວ',
+ 'definition_successful_updating' => 'ແກ້ໄຂລາຍການສຳເລັດແລ້ວ',
+ 'definition_type' => 'ປະເພດລາຍການ',
+ 'definition_type_required' => 'ປະເພດແອດທີບິວ ຈຳເປັນຕ້ອງໃຊ້',
+ 'definition_unit' => '',
+ 'definition_values' => '',
+ 'new' => '',
+ 'no_attributes_to_display' => '',
+ 'receipt_visibility' => '',
+ 'show_in_items' => '',
+ 'show_in_items_visibility' => '',
+ 'show_in_receipt' => '',
+ 'show_in_receivings' => '',
+ 'show_in_receivings_visibility' => '',
+ 'show_in_sales' => '',
+ 'show_in_sales_visibility' => '',
+ 'show_in_search' => 'ສະແດງໃນການຄົ້ນຫາ',
+ 'show_in_search_visibility' => 'ຄົ້ນຫາ',
+ 'update' => '',
];
diff --git a/app/Language/ml/Attributes.php b/app/Language/ml/Attributes.php
index 82911ea55..37340d7b2 100644
--- a/app/Language/ml/Attributes.php
+++ b/app/Language/ml/Attributes.php
@@ -1,34 +1,36 @@
"Attribute value cannot contain ':' or '|'",
- "confirm_delete" => "Are you sure you want to delete the selected attribute(s)?",
- "confirm_restore" => "",
- "definition_cannot_be_deleted" => "Could not delete selected attribute(s)",
- "definition_invalid_group" => "",
- "definition_error_adding_updating" => "",
- "definition_flags" => "Attribute Visibility",
- "definition_group" => "Group",
- "definition_id" => "Id",
- "definition_name" => "Attribute Name",
- "definition_name_required" => "Attribute name is a required field",
- "definition_one_or_multiple" => "attribute(s)",
- "definition_successful_adding" => "You have successfully added item",
- "definition_successful_deleted" => "You have successfully deleted",
- "definition_successful_updating" => "You have successfully updated attribute",
- "definition_type" => "Attribute Type",
- "definition_type_required" => "Attribute type is a required field",
- "definition_unit" => "",
- "definition_values" => "Attribute Values",
- "new" => "New Attribute",
- "no_attributes_to_display" => "No Items to display",
- "receipt_visibility" => "Receipt",
- "show_in_items" => "Show in items",
- "show_in_items_visibility" => "Items",
- "show_in_receipt" => "Show in receipt",
- "show_in_receivings" => "Show in receivings",
- "show_in_receivings_visibility" => "Receivings",
- "show_in_sales" => "Show in sales",
- "show_in_sales_visibility" => "Sales",
- "update" => "Update Attribute",
+ 'attribute_value_invalid_chars' => 'Attribute value cannot contain \':\' or \'|\'',
+ 'confirm_delete' => 'Are you sure you want to restore the selected attribute(s)?',
+ 'confirm_restore' => 'Are you sure you want to delete the selected attribute(s)?',
+ 'definition_cannot_be_deleted' => 'Could not delete selected attribute(s)',
+ 'definition_invalid_group' => '',
+ 'definition_error_adding_updating' => 'Attribute {0} could not be added or updated. Please check the error log.',
+ 'definition_flags' => 'Attribute Visibility',
+ 'definition_group' => 'Group',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Add Attribute',
+ 'definition_name_required' => 'Attribute type is a required field',
+ 'definition_one_or_multiple' => 'attribute(s)',
+ 'definition_successful_adding' => 'You have successfully added item',
+ 'definition_successful_deleted' => 'You have successfully deleted',
+ 'definition_successful_updating' => 'You have successfully updated Item Kit',
+ 'definition_type' => 'Attribute Type',
+ 'definition_type_required' => 'Attribute name is a required field',
+ 'definition_unit' => 'Measurement Unit',
+ 'definition_values' => 'Attribute Values',
+ 'new' => 'New Attribute',
+ 'no_attributes_to_display' => 'No Items to display.',
+ 'receipt_visibility' => 'Receipt',
+ 'show_in_items' => 'Show in items',
+ 'show_in_items_visibility' => 'Items',
+ 'show_in_receipt' => 'Show in receipt',
+ 'show_in_receivings' => 'Show in receivings',
+ 'show_in_receivings_visibility' => 'Receivings',
+ 'show_in_sales' => 'Show in sales',
+ 'show_in_sales_visibility' => 'Sales',
+ 'show_in_search' => 'തിരയലിൽ കാണിക്കുക',
+ 'show_in_search_visibility' => 'തിരയൽ',
+ 'update' => 'Update Attribute',
];
diff --git a/app/Language/nb/Attributes.php b/app/Language/nb/Attributes.php
index 377b84f4b..d67266cb5 100644
--- a/app/Language/nb/Attributes.php
+++ b/app/Language/nb/Attributes.php
@@ -1,34 +1,36 @@
"Attribute value cannot contain ':' or '|'",
- "confirm_delete" => "Are you sure you want to delete the selected attribute(s)?",
- "confirm_restore" => "Are you sure you want to restore the selected attribute(s)?",
- "definition_cannot_be_deleted" => "Could not delete selected attribute(s)",
- "definition_invalid_group" => "",
- "definition_error_adding_updating" => "Attribute {0} could not be added or updated. Please check the error log.",
- "definition_flags" => "Attribute Visibility",
- "definition_group" => "Group",
- "definition_id" => "Id",
- "definition_name" => "Add Attribute",
- "definition_name_required" => "Attribute name is a required field",
- "definition_one_or_multiple" => "attribute(s)",
- "definition_successful_adding" => "You have successfully added item",
- "definition_successful_deleted" => "You have successfully deleted",
- "definition_successful_updating" => "You have successfully updated attribute",
- "definition_type" => "Attribute Type",
- "definition_type_required" => "Attribute type is a required field",
- "definition_unit" => "Measurement Unit",
- "definition_values" => "Attribute Values",
- "new" => "New Attribute",
- "no_attributes_to_display" => "No Items to display",
- "receipt_visibility" => "Receipt",
- "show_in_items" => "Show in items",
- "show_in_items_visibility" => "Items",
- "show_in_receipt" => "Show in receipt",
- "show_in_receivings" => "Show in receivings",
- "show_in_receivings_visibility" => "Receivings",
- "show_in_sales" => "Show in sales",
- "show_in_sales_visibility" => "Sales",
- "update" => "Update Attribute",
+ 'attribute_value_invalid_chars' => 'Attribute value cannot contain \':\' or \'|\'',
+ 'confirm_delete' => 'Are you sure you want to delete the selected attribute(s)?',
+ 'confirm_restore' => 'Are you sure you want to restore the selected attribute(s)?',
+ 'definition_cannot_be_deleted' => 'Could not delete selected attribute(s)',
+ 'definition_invalid_group' => '',
+ 'definition_error_adding_updating' => 'Attribute {0} could not be added or updated. Please check the error log.',
+ 'definition_flags' => 'Attribute Visibility',
+ 'definition_group' => 'Group',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Add Attribute',
+ 'definition_name_required' => 'Attribute name is a required field',
+ 'definition_one_or_multiple' => 'attribute(s)',
+ 'definition_successful_adding' => 'You have successfully added item',
+ 'definition_successful_deleted' => 'You have successfully deleted',
+ 'definition_successful_updating' => 'You have successfully updated attribute',
+ 'definition_type' => 'Attribute Type',
+ 'definition_type_required' => 'Attribute type is a required field',
+ 'definition_unit' => 'Measurement Unit',
+ 'definition_values' => 'Attribute Values',
+ 'new' => 'New Attribute',
+ 'no_attributes_to_display' => 'No Items to display',
+ 'receipt_visibility' => 'Receipt',
+ 'show_in_items' => 'Show in items',
+ 'show_in_items_visibility' => 'Items',
+ 'show_in_receipt' => 'Show in receipt',
+ 'show_in_receivings' => 'Show in receivings',
+ 'show_in_receivings_visibility' => 'Receivings',
+ 'show_in_sales' => 'Show in sales',
+ 'show_in_sales_visibility' => 'Sales',
+ 'show_in_search' => 'Vis i søk',
+ 'show_in_search_visibility' => 'Søk',
+ 'update' => 'Update Attribute',
];
diff --git a/app/Language/nl-BE/Attributes.php b/app/Language/nl-BE/Attributes.php
index 4d544a18d..409a29b36 100644
--- a/app/Language/nl-BE/Attributes.php
+++ b/app/Language/nl-BE/Attributes.php
@@ -1,34 +1,36 @@
"Attribuut waarde kan geen ':' of '|' bevatten",
- "confirm_delete" => "Bent u zeker dat u de geselecteerde attributen wil verwijderen?",
- "confirm_restore" => "Bent u zeker dat u de geselecteerde attributen wil herstellen?",
- "definition_cannot_be_deleted" => "De geselecteerde attributen konden niet verwijderd worden",
- "definition_invalid_group" => "De geselecteerde groep bestaat niet of is ongeldig.",
- "definition_error_adding_updating" => "Attribuut {0} kon niet toegevoegd of gewijzigd worden. Kijk de error logs na.",
- "definition_flags" => "Zichtbaarheid",
- "definition_group" => "Groep",
- "definition_id" => "Id",
- "definition_name" => "Nieuw attribuut",
- "definition_name_required" => "Attribuut naam is een verplicht veld",
- "definition_one_or_multiple" => "Attribu(u)t(en)",
- "definition_successful_adding" => "Attribuut succesvol toegevoegd",
- "definition_successful_deleted" => "Attribu(u)t(en) succesvol verwijderd",
- "definition_successful_updating" => "Wijzigingen bewaard voor",
- "definition_type" => "Type",
- "definition_type_required" => "Attribuut type is een verplicht veld",
- "definition_unit" => "Meeteenheid",
- "definition_values" => "Attribuut waardes",
- "new" => "Nieuw Attribuut",
- "no_attributes_to_display" => "Er werden geen attributen gevonden",
- "receipt_visibility" => "Verkoop",
- "show_in_items" => "Toon in producten",
- "show_in_items_visibility" => "Producten",
- "show_in_receipt" => "Toon in verkoop",
- "show_in_receivings" => "Toon in orders",
- "show_in_receivings_visibility" => "Orders",
- "show_in_sales" => "Toon in verkoop",
- "show_in_sales_visibility" => "Verkoop",
- "update" => "Wijzig Attribuut",
+ 'attribute_value_invalid_chars' => 'Attribuut waarde kan geen \':\' of \'|\' bevatten',
+ 'confirm_delete' => 'Bent u zeker dat u de geselecteerde attributen wil verwijderen?',
+ 'confirm_restore' => 'Bent u zeker dat u de geselecteerde attributen wil herstellen?',
+ 'definition_cannot_be_deleted' => 'De geselecteerde attributen konden niet verwijderd worden',
+ 'definition_invalid_group' => 'De geselecteerde groep bestaat niet of is ongeldig.',
+ 'definition_error_adding_updating' => 'Attribuut {0} kon niet toegevoegd of gewijzigd worden. Kijk de error logs na.',
+ 'definition_flags' => 'Zichtbaarheid',
+ 'definition_group' => 'Groep',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Nieuw attribuut',
+ 'definition_name_required' => 'Attribuut naam is een verplicht veld',
+ 'definition_one_or_multiple' => 'Attribu(u)t(en)',
+ 'definition_successful_adding' => 'Attribuut succesvol toegevoegd',
+ 'definition_successful_deleted' => 'Attribu(u)t(en) succesvol verwijderd',
+ 'definition_successful_updating' => 'Wijzigingen bewaard voor',
+ 'definition_type' => 'Type',
+ 'definition_type_required' => 'Attribuut type is een verplicht veld',
+ 'definition_unit' => 'Meeteenheid',
+ 'definition_values' => 'Attribuut waardes',
+ 'new' => 'Nieuw Attribuut',
+ 'no_attributes_to_display' => 'Er werden geen attributen gevonden',
+ 'receipt_visibility' => 'Verkoop',
+ 'show_in_items' => 'Toon in producten',
+ 'show_in_items_visibility' => 'Producten',
+ 'show_in_receipt' => 'Toon in verkoop',
+ 'show_in_receivings' => 'Toon in orders',
+ 'show_in_receivings_visibility' => 'Orders',
+ 'show_in_sales' => 'Toon in verkoop',
+ 'show_in_sales_visibility' => 'Verkoop',
+ 'show_in_search' => 'Toon in zoeken',
+ 'show_in_search_visibility' => 'Zoeken',
+ 'update' => 'Wijzig Attribuut',
];
diff --git a/app/Language/nl-NL/Attributes.php b/app/Language/nl-NL/Attributes.php
index 25acecf50..207fc4ac8 100644
--- a/app/Language/nl-NL/Attributes.php
+++ b/app/Language/nl-NL/Attributes.php
@@ -1,34 +1,36 @@
"Kenmerkwaarde mag niet '_' of '|' bevatten",
- "confirm_delete" => "Weet u zeker dat u de geselecteerde kenmerken wilt verwijderen?",
- "confirm_restore" => "Weet u zeker dat u de geselecteerde kenmerken wilt herstellen?",
- "definition_cannot_be_deleted" => "Kan geselecteerde kenmerk(en) niet verwijderen",
- "definition_invalid_group" => "De geselecteerde groep bestaat niet of is ongeldig.",
- "definition_error_adding_updating" => "Kenmerk {0} kan niet worden toegevoegd of bijgewerkt. Bekijk het foutenlogboek.",
- "definition_flags" => "Kenmerk zichtbaarheid",
- "definition_group" => "Groep",
- "definition_id" => "Id",
- "definition_name" => "Kenmerk toevoegen",
- "definition_name_required" => "Kenmerknaam is een vereist veld",
- "definition_one_or_multiple" => "kenmerk(en)",
- "definition_successful_adding" => "U heeft een artikel toegevoegd",
- "definition_successful_deleted" => "U heeft verwijderd",
- "definition_successful_updating" => "U heeft het kenmerk bijgewerkt",
- "definition_type" => "Kenmerk soort",
- "definition_type_required" => "Kenmerk soort is een vereist veld",
- "definition_unit" => "Maateenheid",
- "definition_values" => "Kenmerkwaarden",
- "new" => "Nieuw kenmerk",
- "no_attributes_to_display" => "Geen artikelen om te weergeven",
- "receipt_visibility" => "Kassabon",
- "show_in_items" => "Weergeven in artikelen",
- "show_in_items_visibility" => "Artikelen",
- "show_in_receipt" => "Weergeven op kassabon",
- "show_in_receivings" => "Weergeven in leveringen",
- "show_in_receivings_visibility" => "Leveringen",
- "show_in_sales" => "Weergeven in verkopen",
- "show_in_sales_visibility" => "Verkopen",
- "update" => "Kenmerk bijwerken",
+ 'attribute_value_invalid_chars' => 'Kenmerkwaarde mag niet \'_\' of \'|\' bevatten',
+ 'confirm_delete' => 'Weet u zeker dat u de geselecteerde kenmerken wilt verwijderen?',
+ 'confirm_restore' => 'Weet u zeker dat u de geselecteerde kenmerken wilt herstellen?',
+ 'definition_cannot_be_deleted' => 'Kan geselecteerde kenmerk(en) niet verwijderen',
+ 'definition_invalid_group' => 'De geselecteerde groep bestaat niet of is ongeldig.',
+ 'definition_error_adding_updating' => 'Kenmerk {0} kan niet worden toegevoegd of bijgewerkt. Bekijk het foutenlogboek.',
+ 'definition_flags' => 'Kenmerk zichtbaarheid',
+ 'definition_group' => 'Groep',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Kenmerk toevoegen',
+ 'definition_name_required' => 'Kenmerknaam is een vereist veld',
+ 'definition_one_or_multiple' => 'kenmerk(en)',
+ 'definition_successful_adding' => 'U heeft een artikel toegevoegd',
+ 'definition_successful_deleted' => 'U heeft verwijderd',
+ 'definition_successful_updating' => 'U heeft het kenmerk bijgewerkt',
+ 'definition_type' => 'Kenmerk soort',
+ 'definition_type_required' => 'Kenmerk soort is een vereist veld',
+ 'definition_unit' => 'Maateenheid',
+ 'definition_values' => 'Kenmerkwaarden',
+ 'new' => 'Nieuw kenmerk',
+ 'no_attributes_to_display' => 'Geen artikelen om te weergeven',
+ 'receipt_visibility' => 'Kassabon',
+ 'show_in_items' => 'Weergeven in artikelen',
+ 'show_in_items_visibility' => 'Artikelen',
+ 'show_in_receipt' => 'Weergeven op kassabon',
+ 'show_in_receivings' => 'Weergeven in leveringen',
+ 'show_in_receivings_visibility' => 'Leveringen',
+ 'show_in_sales' => 'Weergeven in verkopen',
+ 'show_in_sales_visibility' => 'Verkopen',
+ 'show_in_search' => 'Weergeven in zoekopdrachten',
+ 'show_in_search_visibility' => 'Zoeken',
+ 'update' => 'Kenmerk bijwerken',
];
diff --git a/app/Language/pl/Attributes.php b/app/Language/pl/Attributes.php
index 3edda3db5..cf184f01d 100644
--- a/app/Language/pl/Attributes.php
+++ b/app/Language/pl/Attributes.php
@@ -1,34 +1,36 @@
"Wartość atrybutu nie może zawierać'_' lub '|'",
- "confirm_delete" => "Czy jesteś pewny, że chcesz usunąć wybrane atrybuty?",
- "confirm_restore" => "Czy jesteś pewien, że chcesz przywrócić zaznaczone atrybuty?",
- "definition_cannot_be_deleted" => "Nie można usunąć wybranych atrybutów",
- "definition_invalid_group" => "Wybrana grupa nie istnieje lub jest nieprawidłowa.",
- "definition_error_adding_updating" => "Atrybut 51 nie może zostać dodany lub zaktualizowany. Sprawdź dziennik błędów.",
- "definition_flags" => "Widoczność atrybutu",
- "definition_group" => "Grupa",
- "definition_id" => "Id",
- "definition_name" => "Dodaj atrybut",
- "definition_name_required" => "Nazwa atrybutu jest wymagana",
- "definition_one_or_multiple" => "atrybut(y)",
- "definition_successful_adding" => "Pomyślnie dodano element",
- "definition_successful_deleted" => "Pomyślnie usunięto",
- "definition_successful_updating" => "Pomyślnie zaktualizowano atrybut",
- "definition_type" => "Typ atrybutu",
- "definition_type_required" => "Typ atrybutu jest wymagany",
- "definition_unit" => "Jednostka miary",
- "definition_values" => "Wartość atrybutu",
- "new" => "Nowy atrybut",
- "no_attributes_to_display" => "Brak elementów do wyświetlenia",
- "receipt_visibility" => "Paragon",
- "show_in_items" => "Pokaż w produktach",
- "show_in_items_visibility" => "Produkty",
- "show_in_receipt" => "Pokaż w paragonie",
- "show_in_receivings" => "Pokaż w dostawach",
- "show_in_receivings_visibility" => "Dostawy",
- "show_in_sales" => "Pokaż w sprzedażach",
- "show_in_sales_visibility" => "Sprzedaże",
- "update" => "Zaktualizuj atrybut",
+ 'attribute_value_invalid_chars' => 'Wartość atrybutu nie może zawierać\'_\' lub \'|\'',
+ 'confirm_delete' => 'Czy jesteś pewny, że chcesz usunąć wybrane atrybuty?',
+ 'confirm_restore' => 'Czy jesteś pewien, że chcesz przywrócić zaznaczone atrybuty?',
+ 'definition_cannot_be_deleted' => 'Nie można usunąć wybranych atrybutów',
+ 'definition_invalid_group' => 'Wybrana grupa nie istnieje lub jest nieprawidłowa.',
+ 'definition_error_adding_updating' => 'Atrybut 51 nie może zostać dodany lub zaktualizowany. Sprawdź dziennik błędów.',
+ 'definition_flags' => 'Widoczność atrybutu',
+ 'definition_group' => 'Grupa',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Dodaj atrybut',
+ 'definition_name_required' => 'Nazwa atrybutu jest wymagana',
+ 'definition_one_or_multiple' => 'atrybut(y)',
+ 'definition_successful_adding' => 'Pomyślnie dodano element',
+ 'definition_successful_deleted' => 'Pomyślnie usunięto',
+ 'definition_successful_updating' => 'Pomyślnie zaktualizowano atrybut',
+ 'definition_type' => 'Typ atrybutu',
+ 'definition_type_required' => 'Typ atrybutu jest wymagany',
+ 'definition_unit' => 'Jednostka miary',
+ 'definition_values' => 'Wartość atrybutu',
+ 'new' => 'Nowy atrybut',
+ 'no_attributes_to_display' => 'Brak elementów do wyświetlenia',
+ 'receipt_visibility' => 'Paragon',
+ 'show_in_items' => 'Pokaż w produktach',
+ 'show_in_items_visibility' => 'Produkty',
+ 'show_in_receipt' => 'Pokaż w paragonie',
+ 'show_in_receivings' => 'Pokaż w dostawach',
+ 'show_in_receivings_visibility' => 'Dostawy',
+ 'show_in_sales' => 'Pokaż w sprzedażach',
+ 'show_in_sales_visibility' => 'Sprzedaże',
+ 'show_in_search' => 'Pokaż w wyszukiwaniu',
+ 'show_in_search_visibility' => 'Wyszukiwanie',
+ 'update' => 'Zaktualizuj atrybut',
];
diff --git a/app/Language/pt-BR/Attributes.php b/app/Language/pt-BR/Attributes.php
index f71960da8..a69b5031f 100644
--- a/app/Language/pt-BR/Attributes.php
+++ b/app/Language/pt-BR/Attributes.php
@@ -1,34 +1,36 @@
"Valor do atributo não pode conter ':' ou '|'",
- "confirm_delete" => "Tem certeza de que deseja excluir os atributos selecionados?",
- "confirm_restore" => "Tem certeza de que deseja restaurar o(s) atributo(s) selecionado(s)?",
- "definition_cannot_be_deleted" => "Não foi possível excluir atributo selecionado (s)",
- "definition_invalid_group" => "O grupo selecionado não existe ou é inválido.",
- "definition_error_adding_updating" => "Atributo {0} não pode ser adicionado ou atualizado. Por favor verifique o log de erros.",
- "definition_flags" => "Visibilidade de atributo",
- "definition_group" => "Grupo",
- "definition_id" => "Id",
- "definition_name" => "Adicionar Atributo",
- "definition_name_required" => "Nome do atributo é um campo obrigatório",
- "definition_one_or_multiple" => "Atributo(s)",
- "definition_successful_adding" => "Você adicionou com êxito o item",
- "definition_successful_deleted" => "Você excluiu com êxito",
- "definition_successful_updating" => "Você atualizou com êxito o atributo",
- "definition_type" => "Tipo de atributo",
- "definition_type_required" => "Tipo de atributo é um campo obrigatório",
- "definition_unit" => "Unidade de medida",
- "definition_values" => "Valores de atributo",
- "new" => "Novo Atributo",
- "no_attributes_to_display" => "Não há itens para exibir",
- "receipt_visibility" => "Recibo",
- "show_in_items" => "Mostrar em itens",
- "show_in_items_visibility" => "Itens",
- "show_in_receipt" => "Mostrar no recibo",
- "show_in_receivings" => "Mostrar em recebimentos",
- "show_in_receivings_visibility" => "Recebimentos",
- "show_in_sales" => "Mostrar em vendas",
- "show_in_sales_visibility" => "Vendas",
- "update" => "Atualizar atributo",
+ 'attribute_value_invalid_chars' => 'Valor do atributo não pode conter \':\' ou \'|\'',
+ 'confirm_delete' => 'Tem certeza de que deseja excluir os atributos selecionados?',
+ 'confirm_restore' => 'Tem certeza de que deseja restaurar o(s) atributo(s) selecionado(s)?',
+ 'definition_cannot_be_deleted' => 'Não foi possível excluir atributo selecionado (s)',
+ 'definition_invalid_group' => 'O grupo selecionado não existe ou é inválido.',
+ 'definition_error_adding_updating' => 'Atributo {0} não pode ser adicionado ou atualizado. Por favor verifique o log de erros.',
+ 'definition_flags' => 'Visibilidade de atributo',
+ 'definition_group' => 'Grupo',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Adicionar Atributo',
+ 'definition_name_required' => 'Nome do atributo é um campo obrigatório',
+ 'definition_one_or_multiple' => 'Atributo(s)',
+ 'definition_successful_adding' => 'Você adicionou com êxito o item',
+ 'definition_successful_deleted' => 'Você excluiu com êxito',
+ 'definition_successful_updating' => 'Você atualizou com êxito o atributo',
+ 'definition_type' => 'Tipo de atributo',
+ 'definition_type_required' => 'Tipo de atributo é um campo obrigatório',
+ 'definition_unit' => 'Unidade de medida',
+ 'definition_values' => 'Valores de atributo',
+ 'new' => 'Novo Atributo',
+ 'no_attributes_to_display' => 'Não há itens para exibir',
+ 'receipt_visibility' => 'Recibo',
+ 'show_in_items' => 'Mostrar em itens',
+ 'show_in_items_visibility' => 'Itens',
+ 'show_in_receipt' => 'Mostrar no recibo',
+ 'show_in_receivings' => 'Mostrar em recebimentos',
+ 'show_in_receivings_visibility' => 'Recebimentos',
+ 'show_in_sales' => 'Mostrar em vendas',
+ 'show_in_sales_visibility' => 'Vendas',
+ 'show_in_search' => 'Mostrar na busca',
+ 'show_in_search_visibility' => 'Busca',
+ 'update' => 'Atualizar atributo',
];
diff --git a/app/Language/ro/Attributes.php b/app/Language/ro/Attributes.php
index 921b86361..7032d6bb2 100644
--- a/app/Language/ro/Attributes.php
+++ b/app/Language/ro/Attributes.php
@@ -1,34 +1,36 @@
"Valoare atribut nu poate contine ':' sau '|'",
- "confirm_delete" => "Sigur doriti stergerea atributului/atributelor selectat(e)?",
- "confirm_restore" => "",
- "definition_cannot_be_deleted" => "Nu se poate sterge atributul/atributele selectat(e)",
- "definition_invalid_group" => "Grupul selectat nu există sau este invalid.",
- "definition_error_adding_updating" => "",
- "definition_flags" => "Vizibilitate atribut",
- "definition_group" => "Grup",
- "definition_id" => "Id",
- "definition_name" => "Adauga atribut",
- "definition_name_required" => "Nume atribut este un camp obligatoriu",
- "definition_one_or_multiple" => "atribut(e)",
- "definition_successful_adding" => "Ati adaugat articolul cu succes",
- "definition_successful_deleted" => "Ati sters cu succes",
- "definition_successful_updating" => "Ati actualizat atributul cu succes",
- "definition_type" => "Tip Atribut",
- "definition_type_required" => "Tip Atribut este camp obligatoriu",
- "definition_unit" => "",
- "definition_values" => "Valori Atribut",
- "new" => "Atribut nou",
- "no_attributes_to_display" => "Nu sunt articole de afisat",
- "receipt_visibility" => "Chitanta",
- "show_in_items" => "Arata in articole",
- "show_in_items_visibility" => "Articole",
- "show_in_receipt" => "Arata in chitanta",
- "show_in_receivings" => "Arata in receptii",
- "show_in_receivings_visibility" => "Receptii",
- "show_in_sales" => "Arata in vanzari",
- "show_in_sales_visibility" => "Vanzari",
- "update" => "Actualizare Atribut",
+ 'attribute_value_invalid_chars' => 'Valoare atribut nu poate contine \':\' sau \'|\'',
+ 'confirm_delete' => 'Sigur doriti stergerea atributului/atributelor selectat(e)?',
+ 'confirm_restore' => '',
+ 'definition_cannot_be_deleted' => 'Nu se poate sterge atributul/atributele selectat(e)',
+ 'definition_invalid_group' => 'Grupul selectat nu există sau este invalid.',
+ 'definition_error_adding_updating' => '',
+ 'definition_flags' => 'Vizibilitate atribut',
+ 'definition_group' => 'Grup',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Adauga atribut',
+ 'definition_name_required' => 'Nume atribut este un camp obligatoriu',
+ 'definition_one_or_multiple' => 'atribut(e)',
+ 'definition_successful_adding' => 'Ati adaugat articolul cu succes',
+ 'definition_successful_deleted' => 'Ati sters cu succes',
+ 'definition_successful_updating' => 'Ati actualizat atributul cu succes',
+ 'definition_type' => 'Tip Atribut',
+ 'definition_type_required' => 'Tip Atribut este camp obligatoriu',
+ 'definition_unit' => '',
+ 'definition_values' => 'Valori Atribut',
+ 'new' => 'Atribut nou',
+ 'no_attributes_to_display' => 'Nu sunt articole de afisat',
+ 'receipt_visibility' => 'Chitanta',
+ 'show_in_items' => 'Arata in articole',
+ 'show_in_items_visibility' => 'Articole',
+ 'show_in_receipt' => 'Arata in chitanta',
+ 'show_in_receivings' => 'Arata in receptii',
+ 'show_in_receivings_visibility' => 'Receptii',
+ 'show_in_sales' => 'Arata in vanzari',
+ 'show_in_sales_visibility' => 'Vanzari',
+ 'show_in_search' => 'Arata in cautare',
+ 'show_in_search_visibility' => 'Cautare',
+ 'update' => 'Actualizare Atribut',
];
diff --git a/app/Language/ru/Attributes.php b/app/Language/ru/Attributes.php
index 08822fa57..f77199be3 100644
--- a/app/Language/ru/Attributes.php
+++ b/app/Language/ru/Attributes.php
@@ -1,34 +1,36 @@
"Значение атрибута не может содержать ':' или '|'",
- "confirm_delete" => "Вы уверены, что хотите удалить выбранные атрибут(ы)?",
- "confirm_restore" => "Вы уверены, что хотите восстановить выбранные атрибут(ы)?",
- "definition_cannot_be_deleted" => "Не удалось удалить выбранные атрибут(ы)",
- "definition_invalid_group" => "Выбранная группа не существует или недействительна.",
- "definition_error_adding_updating" => "Атрибут {0} не может быть добавлен или обновлен. Пожалуйста, проверьте журнал ошибок.",
- "definition_flags" => "Видимость атрибута",
- "definition_group" => "Группа",
- "definition_id" => "№",
- "definition_name" => "Добавить атрибут",
- "definition_name_required" => "Название атрибута - обязательное поле",
- "definition_one_or_multiple" => "атрибут(ы)",
- "definition_successful_adding" => "Вы успешно добавили товар",
- "definition_successful_deleted" => "Успешно удалено",
- "definition_successful_updating" => "Обновлено успешно",
- "definition_type" => "Тип атрибута",
- "definition_type_required" => "Название атрибута - обязательное поле",
- "definition_unit" => "Единица измерения",
- "definition_values" => "Значения атрибута",
- "new" => "Новый атрибут",
- "no_attributes_to_display" => "Нет товаров для отображения",
- "receipt_visibility" => "Чек",
- "show_in_items" => "Показать в товарах",
- "show_in_items_visibility" => "Товары",
- "show_in_receipt" => "Показать в квитанции",
- "show_in_receivings" => "Показать в закупках",
- "show_in_receivings_visibility" => "Закупки",
- "show_in_sales" => "Показать в продажах",
- "show_in_sales_visibility" => "Продажи",
- "update" => "Обновить атрибут",
+ 'attribute_value_invalid_chars' => 'Значение атрибута не может содержать \':\' или \'|\'',
+ 'confirm_delete' => 'Вы уверены, что хотите удалить выбранные атрибут(ы)?',
+ 'confirm_restore' => 'Вы уверены, что хотите восстановить выбранные атрибут(ы)?',
+ 'definition_cannot_be_deleted' => 'Не удалось удалить выбранные атрибут(ы)',
+ 'definition_invalid_group' => 'Выбранная группа не существует или недействительна.',
+ 'definition_error_adding_updating' => 'Атрибут {0} не может быть добавлен или обновлен. Пожалуйста, проверьте журнал ошибок.',
+ 'definition_flags' => 'Видимость атрибута',
+ 'definition_group' => 'Группа',
+ 'definition_id' => '№',
+ 'definition_name' => 'Добавить атрибут',
+ 'definition_name_required' => 'Название атрибута - обязательное поле',
+ 'definition_one_or_multiple' => 'атрибут(ы)',
+ 'definition_successful_adding' => 'Вы успешно добавили товар',
+ 'definition_successful_deleted' => 'Успешно удалено',
+ 'definition_successful_updating' => 'Обновлено успешно',
+ 'definition_type' => 'Тип атрибута',
+ 'definition_type_required' => 'Название атрибута - обязательное поле',
+ 'definition_unit' => 'Единица измерения',
+ 'definition_values' => 'Значения атрибута',
+ 'new' => 'Новый атрибут',
+ 'no_attributes_to_display' => 'Нет товаров для отображения',
+ 'receipt_visibility' => 'Чек',
+ 'show_in_items' => 'Показать в товарах',
+ 'show_in_items_visibility' => 'Товары',
+ 'show_in_receipt' => 'Показать в квитанции',
+ 'show_in_receivings' => 'Показать в закупках',
+ 'show_in_receivings_visibility' => 'Закупки',
+ 'show_in_sales' => 'Показать в продажах',
+ 'show_in_sales_visibility' => 'Продажи',
+ 'show_in_search' => 'Показать в поиске',
+ 'show_in_search_visibility' => 'Поиск',
+ 'update' => 'Обновить атрибут',
];
diff --git a/app/Language/sv/Attributes.php b/app/Language/sv/Attributes.php
index 8efad3d00..3d9dac43c 100644
--- a/app/Language/sv/Attributes.php
+++ b/app/Language/sv/Attributes.php
@@ -1,34 +1,36 @@
"Attributvärdet får inte innehålla '_' eller '|'",
- "confirm_delete" => "Är du säker på att du vill ta bort de valda attributen?",
- "confirm_restore" => "Är du säker på att du vill återställa de valda attributen?",
- "definition_cannot_be_deleted" => "Det gick inte att ta bort valda attribut",
- "definition_invalid_group" => "Den valda gruppen finns inte eller är ogiltig.",
- "definition_error_adding_updating" => "Attribut{0} kunde inte läggas till eller uppdateras. Kontrollera felloggen.",
- "definition_flags" => "Attribut synlighet",
- "definition_group" => "Grupp",
- "definition_id" => "Id",
- "definition_name" => "Lägg till attribut",
- "definition_name_required" => "Attributnamn är ett obligatoriskt fält",
- "definition_one_or_multiple" => "attribut",
- "definition_successful_adding" => "Du har lagt till artikeln",
- "definition_successful_deleted" => "Du har tagit bort",
- "definition_successful_updating" => "Du har uppdaterat attributet",
- "definition_type" => "Attributtyp",
- "definition_type_required" => "Attributtyp är ett obligatoriskt fält",
- "definition_unit" => "Måttenhet",
- "definition_values" => "Attributvärden",
- "new" => "Nytt attribut",
- "no_attributes_to_display" => "Inga artiklar att visa",
- "receipt_visibility" => "Kvitto",
- "show_in_items" => "Visa i artiklar",
- "show_in_items_visibility" => "Artiklar",
- "show_in_receipt" => "Visa i kvitto",
- "show_in_receivings" => "Visa i mottagande",
- "show_in_receivings_visibility" => "Inleveranser",
- "show_in_sales" => "Visa i försäljning",
- "show_in_sales_visibility" => "Försäljning",
- "update" => "Uppdatera attribut",
+ 'attribute_value_invalid_chars' => 'Attributvärdet får inte innehålla \'_\' eller \'|\'',
+ 'confirm_delete' => 'Är du säker på att du vill ta bort de valda attributen?',
+ 'confirm_restore' => 'Är du säker på att du vill återställa de valda attributen?',
+ 'definition_cannot_be_deleted' => 'Det gick inte att ta bort valda attribut',
+ 'definition_invalid_group' => 'Den valda gruppen finns inte eller är ogiltig.',
+ 'definition_error_adding_updating' => 'Attribut{0} kunde inte läggas till eller uppdateras. Kontrollera felloggen.',
+ 'definition_flags' => 'Attribut synlighet',
+ 'definition_group' => 'Grupp',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Lägg till attribut',
+ 'definition_name_required' => 'Attributnamn är ett obligatoriskt fält',
+ 'definition_one_or_multiple' => 'attribut',
+ 'definition_successful_adding' => 'Du har lagt till artikeln',
+ 'definition_successful_deleted' => 'Du har tagit bort',
+ 'definition_successful_updating' => 'Du har uppdaterat attributet',
+ 'definition_type' => 'Attributtyp',
+ 'definition_type_required' => 'Attributtyp är ett obligatoriskt fält',
+ 'definition_unit' => 'Måttenhet',
+ 'definition_values' => 'Attributvärden',
+ 'new' => 'Nytt attribut',
+ 'no_attributes_to_display' => 'Inga artiklar att visa',
+ 'receipt_visibility' => 'Kvitto',
+ 'show_in_items' => 'Visa i artiklar',
+ 'show_in_items_visibility' => 'Artiklar',
+ 'show_in_receipt' => 'Visa i kvitto',
+ 'show_in_receivings' => 'Visa i mottagande',
+ 'show_in_receivings_visibility' => 'Inleveranser',
+ 'show_in_sales' => 'Visa i försäljning',
+ 'show_in_sales_visibility' => 'Försäljning',
+ 'show_in_search' => 'Visa i sökning',
+ 'show_in_search_visibility' => 'Sökning',
+ 'update' => 'Uppdatera attribut',
];
diff --git a/app/Language/sw-KE/Attributes.php b/app/Language/sw-KE/Attributes.php
index 241521565..07927944d 100644
--- a/app/Language/sw-KE/Attributes.php
+++ b/app/Language/sw-KE/Attributes.php
@@ -1,34 +1,36 @@
"Thamani ya sifa haiwezi kuwa na '_' au '|'",
- "confirm_delete" => "Una uhakika unataka kufuta sifa iliyochaguliwa/zilizochaguliwa?",
- "confirm_restore" => "Una uhakika unataka kurejesha sifa iliyochaguliwa/zilizochaguliwa?",
- "definition_cannot_be_deleted" => "Haiwezekani kufuta sifa iliyochaguliwa/zilizochaguliwa",
- "definition_invalid_group" => "Kikundi ulichochagua hakipo au hakitoshi.",
- "definition_error_adding_updating" => "Sifa {0} haiwezekani kuongezwa au kusasishwa. Tafadhali angalia logi ya makosa.",
- "definition_flags" => "Uonekano wa Sifa",
- "definition_group" => "Kundi",
- "definition_id" => "Id",
- "definition_name" => "Ongeza Sifa",
- "definition_name_required" => "Jina la sifa ni kiashiria kinachohitajika",
- "definition_one_or_multiple" => "Sifa",
- "definition_successful_adding" => "Umefanikiwa kuongeza kipengee(Item)",
- "definition_successful_deleted" => "Umefanikiwa kufuta",
- "definition_successful_updating" => "Umefanikiwa kusasisha sifa",
- "definition_type" => "Aina ya Sifa",
- "definition_type_required" => "Aina ya sifa ni kiashiria kinachohitajika",
- "definition_unit" => "Kipimo",
- "definition_values" => "Thamani za Sifa",
- "new" => "Sifa Mpya",
- "no_attributes_to_display" => "Hakuna Sifa za kuonyesha",
- "receipt_visibility" => "Risiti",
- "show_in_items" => "Onyesha kwenye bidhaa",
- "show_in_items_visibility" => "Bidhaa",
- "show_in_receipt" => "Onyesha kwenye risiti",
- "show_in_receivings" => "Onyesha kwenye Manunuzi",
- "show_in_receivings_visibility" => "Manunuzi",
- "show_in_sales" => "Onyesha kwenye Mauzo",
- "show_in_sales_visibility" => "Mauzo",
- "update" => "Sasisha Sifa",
-];
\ No newline at end of file
+ 'attribute_value_invalid_chars' => 'Thamani ya sifa haiwezi kuwa na \'_\' au \'|\'',
+ 'confirm_delete' => 'Una uhakika unataka kufuta sifa iliyochaguliwa/zilizochaguliwa?',
+ 'confirm_restore' => 'Una uhakika unataka kurejesha sifa iliyochaguliwa/zilizochaguliwa?',
+ 'definition_cannot_be_deleted' => 'Haiwezekani kufuta sifa iliyochaguliwa/zilizochaguliwa',
+ 'definition_invalid_group' => 'Kikundi ulichochagua hakipo au hakitoshi.',
+ 'definition_error_adding_updating' => 'Sifa {0} haiwezekani kuongezwa au kusasishwa. Tafadhali angalia logi ya makosa.',
+ 'definition_flags' => 'Uonekano wa Sifa',
+ 'definition_group' => 'Kundi',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Ongeza Sifa',
+ 'definition_name_required' => 'Jina la sifa ni kiashiria kinachohitajika',
+ 'definition_one_or_multiple' => 'Sifa',
+ 'definition_successful_adding' => 'Umefanikiwa kuongeza kipengee(Item)',
+ 'definition_successful_deleted' => 'Umefanikiwa kufuta',
+ 'definition_successful_updating' => 'Umefanikiwa kusasisha sifa',
+ 'definition_type' => 'Aina ya Sifa',
+ 'definition_type_required' => 'Aina ya sifa ni kiashiria kinachohitajika',
+ 'definition_unit' => 'Kipimo',
+ 'definition_values' => 'Thamani za Sifa',
+ 'new' => 'Sifa Mpya',
+ 'no_attributes_to_display' => 'Hakuna Sifa za kuonyesha',
+ 'receipt_visibility' => 'Risiti',
+ 'show_in_items' => 'Onyesha kwenye bidhaa',
+ 'show_in_items_visibility' => 'Bidhaa',
+ 'show_in_receipt' => 'Onyesha kwenye risiti',
+ 'show_in_receivings' => 'Onyesha kwenye Manunuzi',
+ 'show_in_receivings_visibility' => 'Manunuzi',
+ 'show_in_sales' => 'Onyesha kwenye Mauzo',
+ 'show_in_sales_visibility' => 'Mauzo',
+ 'show_in_search' => 'Onyesha kwenye Utafutaji',
+ 'show_in_search_visibility' => 'Utafutaji',
+ 'update' => 'Sasisha Sifa',
+];
diff --git a/app/Language/sw-TZ/Attributes.php b/app/Language/sw-TZ/Attributes.php
index 241521565..07927944d 100644
--- a/app/Language/sw-TZ/Attributes.php
+++ b/app/Language/sw-TZ/Attributes.php
@@ -1,34 +1,36 @@
"Thamani ya sifa haiwezi kuwa na '_' au '|'",
- "confirm_delete" => "Una uhakika unataka kufuta sifa iliyochaguliwa/zilizochaguliwa?",
- "confirm_restore" => "Una uhakika unataka kurejesha sifa iliyochaguliwa/zilizochaguliwa?",
- "definition_cannot_be_deleted" => "Haiwezekani kufuta sifa iliyochaguliwa/zilizochaguliwa",
- "definition_invalid_group" => "Kikundi ulichochagua hakipo au hakitoshi.",
- "definition_error_adding_updating" => "Sifa {0} haiwezekani kuongezwa au kusasishwa. Tafadhali angalia logi ya makosa.",
- "definition_flags" => "Uonekano wa Sifa",
- "definition_group" => "Kundi",
- "definition_id" => "Id",
- "definition_name" => "Ongeza Sifa",
- "definition_name_required" => "Jina la sifa ni kiashiria kinachohitajika",
- "definition_one_or_multiple" => "Sifa",
- "definition_successful_adding" => "Umefanikiwa kuongeza kipengee(Item)",
- "definition_successful_deleted" => "Umefanikiwa kufuta",
- "definition_successful_updating" => "Umefanikiwa kusasisha sifa",
- "definition_type" => "Aina ya Sifa",
- "definition_type_required" => "Aina ya sifa ni kiashiria kinachohitajika",
- "definition_unit" => "Kipimo",
- "definition_values" => "Thamani za Sifa",
- "new" => "Sifa Mpya",
- "no_attributes_to_display" => "Hakuna Sifa za kuonyesha",
- "receipt_visibility" => "Risiti",
- "show_in_items" => "Onyesha kwenye bidhaa",
- "show_in_items_visibility" => "Bidhaa",
- "show_in_receipt" => "Onyesha kwenye risiti",
- "show_in_receivings" => "Onyesha kwenye Manunuzi",
- "show_in_receivings_visibility" => "Manunuzi",
- "show_in_sales" => "Onyesha kwenye Mauzo",
- "show_in_sales_visibility" => "Mauzo",
- "update" => "Sasisha Sifa",
-];
\ No newline at end of file
+ 'attribute_value_invalid_chars' => 'Thamani ya sifa haiwezi kuwa na \'_\' au \'|\'',
+ 'confirm_delete' => 'Una uhakika unataka kufuta sifa iliyochaguliwa/zilizochaguliwa?',
+ 'confirm_restore' => 'Una uhakika unataka kurejesha sifa iliyochaguliwa/zilizochaguliwa?',
+ 'definition_cannot_be_deleted' => 'Haiwezekani kufuta sifa iliyochaguliwa/zilizochaguliwa',
+ 'definition_invalid_group' => 'Kikundi ulichochagua hakipo au hakitoshi.',
+ 'definition_error_adding_updating' => 'Sifa {0} haiwezekani kuongezwa au kusasishwa. Tafadhali angalia logi ya makosa.',
+ 'definition_flags' => 'Uonekano wa Sifa',
+ 'definition_group' => 'Kundi',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Ongeza Sifa',
+ 'definition_name_required' => 'Jina la sifa ni kiashiria kinachohitajika',
+ 'definition_one_or_multiple' => 'Sifa',
+ 'definition_successful_adding' => 'Umefanikiwa kuongeza kipengee(Item)',
+ 'definition_successful_deleted' => 'Umefanikiwa kufuta',
+ 'definition_successful_updating' => 'Umefanikiwa kusasisha sifa',
+ 'definition_type' => 'Aina ya Sifa',
+ 'definition_type_required' => 'Aina ya sifa ni kiashiria kinachohitajika',
+ 'definition_unit' => 'Kipimo',
+ 'definition_values' => 'Thamani za Sifa',
+ 'new' => 'Sifa Mpya',
+ 'no_attributes_to_display' => 'Hakuna Sifa za kuonyesha',
+ 'receipt_visibility' => 'Risiti',
+ 'show_in_items' => 'Onyesha kwenye bidhaa',
+ 'show_in_items_visibility' => 'Bidhaa',
+ 'show_in_receipt' => 'Onyesha kwenye risiti',
+ 'show_in_receivings' => 'Onyesha kwenye Manunuzi',
+ 'show_in_receivings_visibility' => 'Manunuzi',
+ 'show_in_sales' => 'Onyesha kwenye Mauzo',
+ 'show_in_sales_visibility' => 'Mauzo',
+ 'show_in_search' => 'Onyesha kwenye Utafutaji',
+ 'show_in_search_visibility' => 'Utafutaji',
+ 'update' => 'Sasisha Sifa',
+];
diff --git a/app/Language/ta/Attributes.php b/app/Language/ta/Attributes.php
index 9c278989d..c944cc3ea 100644
--- a/app/Language/ta/Attributes.php
+++ b/app/Language/ta/Attributes.php
@@ -1,34 +1,36 @@
"பண்புக்கூறு மதிப்பு '_' அல்லது '|' கொண்டிருக்கக்கூடாது",
- "confirm_delete" => "தேர்ந்தெடுக்கப்பட்ட பண்புக்கூறு (களை) நீக்க விரும்புகிறீர்களா?",
- "confirm_restore" => "தேர்ந்தெடுக்கப்பட்ட பண்புக்கூறுகளை (களை) மீட்டெடுக்க விரும்புகிறீர்களா?",
- "definition_cannot_be_deleted" => "Could not delete selected attribute(s)",
- "definition_invalid_group" => "",
- "definition_error_adding_updating" => "Attribute {0} could not be added or updated. Please check the error log.",
- "definition_flags" => "Attribute Visibility",
- "definition_group" => "Group",
- "definition_id" => "Id",
- "definition_name" => "Add Attribute",
- "definition_name_required" => "Attribute name is a required field",
- "definition_one_or_multiple" => "attribute(s)",
- "definition_successful_adding" => "You have successfully added item",
- "definition_successful_deleted" => "You have successfully deleted",
- "definition_successful_updating" => "You have successfully updated attribute",
- "definition_type" => "Attribute Type",
- "definition_type_required" => "Attribute type is a required field",
- "definition_unit" => "Measurement Unit",
- "definition_values" => "Attribute Values",
- "new" => "New Attribute",
- "no_attributes_to_display" => "No Items to display",
- "receipt_visibility" => "Receipt",
- "show_in_items" => "Show in items",
- "show_in_items_visibility" => "Items",
- "show_in_receipt" => "Show in receipt",
- "show_in_receivings" => "Show in receivings",
- "show_in_receivings_visibility" => "Receivings",
- "show_in_sales" => "Show in sales",
- "show_in_sales_visibility" => "Sales",
- "update" => "Update Attribute",
+ 'attribute_value_invalid_chars' => 'பண்புக்கூறு மதிப்பு \'_\' அல்லது \'|\' கொண்டிருக்கக்கூடாது',
+ 'confirm_delete' => 'தேர்ந்தெடுக்கப்பட்ட பண்புக்கூறு (களை) நீக்க விரும்புகிறீர்களா?',
+ 'confirm_restore' => 'தேர்ந்தெடுக்கப்பட்ட பண்புக்கூறுகளை (களை) மீட்டெடுக்க விரும்புகிறீர்களா?',
+ 'definition_cannot_be_deleted' => 'Could not delete selected attribute(s)',
+ 'definition_invalid_group' => '',
+ 'definition_error_adding_updating' => 'Attribute {0} could not be added or updated. Please check the error log.',
+ 'definition_flags' => 'Attribute Visibility',
+ 'definition_group' => 'Group',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Add Attribute',
+ 'definition_name_required' => 'Attribute name is a required field',
+ 'definition_one_or_multiple' => 'attribute(s)',
+ 'definition_successful_adding' => 'You have successfully added item',
+ 'definition_successful_deleted' => 'You have successfully deleted',
+ 'definition_successful_updating' => 'You have successfully updated attribute',
+ 'definition_type' => 'Attribute Type',
+ 'definition_type_required' => 'Attribute type is a required field',
+ 'definition_unit' => 'Measurement Unit',
+ 'definition_values' => 'Attribute Values',
+ 'new' => 'New Attribute',
+ 'no_attributes_to_display' => 'No Items to display',
+ 'receipt_visibility' => 'Receipt',
+ 'show_in_items' => 'Show in items',
+ 'show_in_items_visibility' => 'Items',
+ 'show_in_receipt' => 'Show in receipt',
+ 'show_in_receivings' => 'Show in receivings',
+ 'show_in_receivings_visibility' => 'Receivings',
+ 'show_in_sales' => 'Show in sales',
+ 'show_in_sales_visibility' => 'Sales',
+ 'show_in_search' => 'தேடலில் காட்டு',
+ 'show_in_search_visibility' => 'தேடல்',
+ 'update' => 'Update Attribute',
];
diff --git a/app/Language/th/Attributes.php b/app/Language/th/Attributes.php
index 4c1e161b3..3d10767f0 100644
--- a/app/Language/th/Attributes.php
+++ b/app/Language/th/Attributes.php
@@ -1,34 +1,36 @@
"คุณลักษณะไม่สามารถมีเครื่องหมาย ':' หรือเครื่องหมาย '|' ได้",
- "confirm_delete" => "ต้องการลบคุณลักษณะที่เลือกหรือไม่ ?",
- "confirm_restore" => "ต้องการคืนค่าคุณลักษณะที่เลือกหรือไม่ ?",
- "definition_cannot_be_deleted" => "ไม่สามารถลบคุณลักษณะที่เลือก",
- "definition_invalid_group" => "กลุ่มที่เลือกไม่มีอยู่หรือไม่ถูกต้อง",
- "definition_error_adding_updating" => "ไม่สามารถเพิ่มหรือแก้ไขคุณลักษณะ {0}, โปรดตรวจสอบความผิดพลาดในบันทึก",
- "definition_flags" => "การมองเห็นคุณลักษณะ",
- "definition_group" => "กลุ่ม",
- "definition_id" => "ID",
- "definition_name" => "เพิ่มแอตทริบิวต์",
- "definition_name_required" => "ชื่อแอตทริบิวต์ จำเป็นต้องป้อน",
- "definition_one_or_multiple" => "แอตทริบิวต์",
- "definition_successful_adding" => "เพิ่มรายการสำเร็จแล้ว",
- "definition_successful_deleted" => "ลบรายการสำเร็จแล้ว",
- "definition_successful_updating" => "อัปเดตแอตทริบิวต์สำเร็จแล้ว",
- "definition_type" => "ประเภทแอตทริบิวต์",
- "definition_type_required" => "ประเภทแอตทริบิวต์ จำเป็นต้องป้อน",
- "definition_unit" => "หน่วยวัด",
- "definition_values" => "ค่าแอตทริบิวต์",
- "new" => "สร้าง แอตทริบิวต์",
- "no_attributes_to_display" => "ไม่มีรายการที่จะแสดง",
- "receipt_visibility" => "ใบเสร็จ",
- "show_in_items" => "แสดงใน รายการสินค้า",
- "show_in_items_visibility" => "รายการสินค้า",
- "show_in_receipt" => "แสดงใน ใบเสร็จ",
- "show_in_receivings" => "แสดงใน สินค้าขาเข้า",
- "show_in_receivings_visibility" => "สินค้าขาเข้า",
- "show_in_sales" => "แสดงใน การขาย",
- "show_in_sales_visibility" => "การขาย",
- "update" => "ปรับปรุงแอตทริบิวต์",
+ 'attribute_value_invalid_chars' => 'คุณลักษณะไม่สามารถมีเครื่องหมาย \':\' หรือเครื่องหมาย \'|\' ได้',
+ 'confirm_delete' => 'ต้องการลบคุณลักษณะที่เลือกหรือไม่ ?',
+ 'confirm_restore' => 'ต้องการคืนค่าคุณลักษณะที่เลือกหรือไม่ ?',
+ 'definition_cannot_be_deleted' => 'ไม่สามารถลบคุณลักษณะที่เลือก',
+ 'definition_invalid_group' => 'กลุ่มที่เลือกไม่มีอยู่หรือไม่ถูกต้อง',
+ 'definition_error_adding_updating' => 'ไม่สามารถเพิ่มหรือแก้ไขคุณลักษณะ {0}, โปรดตรวจสอบความผิดพลาดในบันทึก',
+ 'definition_flags' => 'การมองเห็นคุณลักษณะ',
+ 'definition_group' => 'กลุ่ม',
+ 'definition_id' => 'ID',
+ 'definition_name' => 'เพิ่มแอตทริบิวต์',
+ 'definition_name_required' => 'ชื่อแอตทริบิวต์ จำเป็นต้องป้อน',
+ 'definition_one_or_multiple' => 'แอตทริบิวต์',
+ 'definition_successful_adding' => 'เพิ่มรายการสำเร็จแล้ว',
+ 'definition_successful_deleted' => 'ลบรายการสำเร็จแล้ว',
+ 'definition_successful_updating' => 'อัปเดตแอตทริบิวต์สำเร็จแล้ว',
+ 'definition_type' => 'ประเภทแอตทริบิวต์',
+ 'definition_type_required' => 'ประเภทแอตทริบิวต์ จำเป็นต้องป้อน',
+ 'definition_unit' => 'หน่วยวัด',
+ 'definition_values' => 'ค่าแอตทริบิวต์',
+ 'new' => 'สร้าง แอตทริบิวต์',
+ 'no_attributes_to_display' => 'ไม่มีรายการที่จะแสดง',
+ 'receipt_visibility' => 'ใบเสร็จ',
+ 'show_in_items' => 'แสดงใน รายการสินค้า',
+ 'show_in_items_visibility' => 'รายการสินค้า',
+ 'show_in_receipt' => 'แสดงใน ใบเสร็จ',
+ 'show_in_receivings' => 'แสดงใน สินค้าขาเข้า',
+ 'show_in_receivings_visibility' => 'สินค้าขาเข้า',
+ 'show_in_sales' => 'แสดงใน การขาย',
+ 'show_in_sales_visibility' => 'การขาย',
+ 'show_in_search' => 'แสดงใน การค้นหา',
+ 'show_in_search_visibility' => 'การค้นหา',
+ 'update' => 'ปรับปรุงแอตทริบิวต์',
];
diff --git a/app/Language/tl/Attributes.php b/app/Language/tl/Attributes.php
index e163b8835..cfa63c1d0 100644
--- a/app/Language/tl/Attributes.php
+++ b/app/Language/tl/Attributes.php
@@ -1,34 +1,36 @@
"Attribute value cannot contain ':' or '|'",
- "confirm_delete" => "Are you sure you want to restore the selected attribute(s)?",
- "confirm_restore" => "Are you sure you want to delete the selected attribute(s)?",
- "definition_cannot_be_deleted" => "Could not delete selected attribute(s)",
- "definition_invalid_group" => "",
- "definition_error_adding_updating" => "Attribute {0} could not be added or updated. Please check the error log.",
- "definition_flags" => "Attribute Visibility",
- "definition_group" => "Group",
- "definition_id" => "Id",
- "definition_name" => "Add Attribute",
- "definition_name_required" => "Attribute type is a required field",
- "definition_one_or_multiple" => "attribute(s)",
- "definition_successful_adding" => "You have successfully added item",
- "definition_successful_deleted" => "You have successfully deleted",
- "definition_successful_updating" => "You have successfully updated Item Kit",
- "definition_type" => "Attribute Type",
- "definition_type_required" => "Attribute name is a required field",
- "definition_unit" => "Measurement Unit",
- "definition_values" => "Attribute Values",
- "new" => "New Attribute",
- "no_attributes_to_display" => "No Items to display.",
- "receipt_visibility" => "Receipt",
- "show_in_items" => "Show in items",
- "show_in_items_visibility" => "Items",
- "show_in_receipt" => "Show in receipt",
- "show_in_receivings" => "Show in receivings",
- "show_in_receivings_visibility" => "Receivings",
- "show_in_sales" => "Show in sales",
- "show_in_sales_visibility" => "Sales",
- "update" => "Update Attribute",
+ 'attribute_value_invalid_chars' => 'Attribute value cannot contain \':\' or \'|\'',
+ 'confirm_delete' => 'Are you sure you want to restore the selected attribute(s)?',
+ 'confirm_restore' => 'Are you sure you want to delete the selected attribute(s)?',
+ 'definition_cannot_be_deleted' => 'Could not delete selected attribute(s)',
+ 'definition_invalid_group' => '',
+ 'definition_error_adding_updating' => 'Attribute {0} could not be added or updated. Please check the error log.',
+ 'definition_flags' => 'Attribute Visibility',
+ 'definition_group' => 'Group',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Add Attribute',
+ 'definition_name_required' => 'Attribute type is a required field',
+ 'definition_one_or_multiple' => 'attribute(s)',
+ 'definition_successful_adding' => 'You have successfully added item',
+ 'definition_successful_deleted' => 'You have successfully deleted',
+ 'definition_successful_updating' => 'You have successfully updated Item Kit',
+ 'definition_type' => 'Attribute Type',
+ 'definition_type_required' => 'Attribute name is a required field',
+ 'definition_unit' => 'Measurement Unit',
+ 'definition_values' => 'Attribute Values',
+ 'new' => 'New Attribute',
+ 'no_attributes_to_display' => 'No Items to display.',
+ 'receipt_visibility' => 'Receipt',
+ 'show_in_items' => 'Show in items',
+ 'show_in_items_visibility' => 'Items',
+ 'show_in_receipt' => 'Show in receipt',
+ 'show_in_receivings' => 'Show in receivings',
+ 'show_in_receivings_visibility' => 'Receivings',
+ 'show_in_sales' => 'Show in sales',
+ 'show_in_sales_visibility' => 'Sales',
+ 'show_in_search' => 'Ipakita sa paghahanap',
+ 'show_in_search_visibility' => 'Paghahanap',
+ 'update' => 'Update Attribute',
];
diff --git a/app/Language/tr/Attributes.php b/app/Language/tr/Attributes.php
index 877496fc7..570426e32 100644
--- a/app/Language/tr/Attributes.php
+++ b/app/Language/tr/Attributes.php
@@ -1,34 +1,36 @@
"Nitelik değeri ':' ve ya '|' karakterlerini bulunduramaz",
- "confirm_delete" => "Seçili niteliği ya da nitelikleri silmek istediğinize emin misiniz?",
- "confirm_restore" => "Seçili nitelik ya da nitelikleri kurtarmak istediğinize emin misiniz?",
- "definition_cannot_be_deleted" => "Seçili nitelik ya da nitelikler silinemedi",
- "definition_invalid_group" => "Seçilen grup mevcut değil veya geçersiz.",
- "definition_error_adding_updating" => "Nitelik {0} eklenemedi ya da güncellenemedi. Lütfen hata kaydını gözden geçirin.",
- "definition_flags" => "Nitelik Görünebilirliği",
- "definition_group" => "Küme",
- "definition_id" => "Kimlik",
- "definition_name" => "Nitelik Ekle",
- "definition_name_required" => "Nitelik adı girilmesi gerekli alandır",
- "definition_one_or_multiple" => "Nitelik/Nitelikler",
- "definition_successful_adding" => "Başarıyla öge eklediniz",
- "definition_successful_deleted" => "Başarıyla sildiniz",
- "definition_successful_updating" => "Başarılı biçimde niteliği güncellediniz",
- "definition_type" => "Nitelik Türü",
- "definition_type_required" => "Nitelik türü alanı gereklidir",
- "definition_unit" => "Ölçü Birimi",
- "definition_values" => "Nitelik Değerleri",
- "new" => "Yeni Nitelik",
- "no_attributes_to_display" => "Gösterecek ürün yok",
- "receipt_visibility" => "Fiş",
- "show_in_items" => "Ürünlerde göster",
- "show_in_items_visibility" => "Ürünler",
- "show_in_receipt" => "Fişlerde göster",
- "show_in_receivings" => "Alacaklarda göster",
- "show_in_receivings_visibility" => "Alacaklar",
- "show_in_sales" => "Satışlarda göster",
- "show_in_sales_visibility" => "Satışlar",
- "update" => "Nitelik Güncelle",
+ 'attribute_value_invalid_chars' => 'Nitelik değeri \':\' ve ya \'|\' karakterlerini bulunduramaz',
+ 'confirm_delete' => 'Seçili niteliği ya da nitelikleri silmek istediğinize emin misiniz?',
+ 'confirm_restore' => 'Seçili nitelik ya da nitelikleri kurtarmak istediğinize emin misiniz?',
+ 'definition_cannot_be_deleted' => 'Seçili nitelik ya da nitelikler silinemedi',
+ 'definition_invalid_group' => 'Seçilen grup mevcut değil veya geçersiz.',
+ 'definition_error_adding_updating' => 'Nitelik {0} eklenemedi ya da güncellenemedi. Lütfen hata kaydını gözden geçirin.',
+ 'definition_flags' => 'Nitelik Görünebilirliği',
+ 'definition_group' => 'Küme',
+ 'definition_id' => 'Kimlik',
+ 'definition_name' => 'Nitelik Ekle',
+ 'definition_name_required' => 'Nitelik adı girilmesi gerekli alandır',
+ 'definition_one_or_multiple' => 'Nitelik/Nitelikler',
+ 'definition_successful_adding' => 'Başarıyla öge eklediniz',
+ 'definition_successful_deleted' => 'Başarıyla sildiniz',
+ 'definition_successful_updating' => 'Başarılı biçimde niteliği güncellediniz',
+ 'definition_type' => 'Nitelik Türü',
+ 'definition_type_required' => 'Nitelik türü alanı gereklidir',
+ 'definition_unit' => 'Ölçü Birimi',
+ 'definition_values' => 'Nitelik Değerleri',
+ 'new' => 'Yeni Nitelik',
+ 'no_attributes_to_display' => 'Gösterecek ürün yok',
+ 'receipt_visibility' => 'Fiş',
+ 'show_in_items' => 'Ürünlerde göster',
+ 'show_in_items_visibility' => 'Ürünler',
+ 'show_in_receipt' => 'Fişlerde göster',
+ 'show_in_receivings' => 'Alacaklarda göster',
+ 'show_in_receivings_visibility' => 'Alacaklar',
+ 'show_in_sales' => 'Satışlarda göster',
+ 'show_in_sales_visibility' => 'Satışlar',
+ 'show_in_search' => 'Aramada göster',
+ 'show_in_search_visibility' => 'Arama',
+ 'update' => 'Nitelik Güncelle',
];
diff --git a/app/Language/uk/Attributes.php b/app/Language/uk/Attributes.php
index f9302f861..d0fa55e8a 100644
--- a/app/Language/uk/Attributes.php
+++ b/app/Language/uk/Attributes.php
@@ -1,34 +1,36 @@
"Значення атрибуту не може містити ':' або'|'",
- "confirm_delete" => "Ви впевнені, що хочете видалити вибрані атрибут(и)?",
- "confirm_restore" => "Ви впевнені, що хочете відновити вибрані атрибут(и)?",
- "definition_cannot_be_deleted" => "Не вдалося видалити вибрані атрибут(и)",
- "definition_invalid_group" => "Вибрана група не існує або недійсна.",
- "definition_error_adding_updating" => "Атрибут {0} не може бути доданий або оновлений. Будь ласка, перевірте журнал помилок.",
- "definition_flags" => "Видимість атрибуту",
- "definition_group" => "Група",
- "definition_id" => "№",
- "definition_name" => "Додати атрибут",
- "definition_name_required" => "Назва атрибуту - обов'язкове поле",
- "definition_one_or_multiple" => "Атрибут(и)",
- "definition_successful_adding" => "Ви успішно додали товар",
- "definition_successful_deleted" => "Успішно видалено",
- "definition_successful_updating" => "Оновлено успішно",
- "definition_type" => "Тип атрибуту",
- "definition_type_required" => "Назва атрибуту - обов'язкове поле",
- "definition_unit" => "Одиниця виміру",
- "definition_values" => "Значення атрибуту",
- "new" => "Новий атрибут",
- "no_attributes_to_display" => "Немає об'єктів для відображення",
- "receipt_visibility" => "Чек",
- "show_in_items" => "Показати в товарах",
- "show_in_items_visibility" => "Товари",
- "show_in_receipt" => "Показати в квитанції",
- "show_in_receivings" => "Показати в надходженнях",
- "show_in_receivings_visibility" => "Надходження",
- "show_in_sales" => "Показати в продажах",
- "show_in_sales_visibility" => "Продажі",
- "update" => "Оновити атрибут",
+ 'attribute_value_invalid_chars' => 'Значення атрибуту не може містити \':\' або\'|\'',
+ 'confirm_delete' => 'Ви впевнені, що хочете видалити вибрані атрибут(и)?',
+ 'confirm_restore' => 'Ви впевнені, що хочете відновити вибрані атрибут(и)?',
+ 'definition_cannot_be_deleted' => 'Не вдалося видалити вибрані атрибут(и)',
+ 'definition_invalid_group' => 'Вибрана група не існує або недійсна.',
+ 'definition_error_adding_updating' => 'Атрибут {0} не може бути доданий або оновлений. Будь ласка, перевірте журнал помилок.',
+ 'definition_flags' => 'Видимість атрибуту',
+ 'definition_group' => 'Група',
+ 'definition_id' => '№',
+ 'definition_name' => 'Додати атрибут',
+ 'definition_name_required' => 'Назва атрибуту - обов\'язкове поле',
+ 'definition_one_or_multiple' => 'Атрибут(и)',
+ 'definition_successful_adding' => 'Ви успішно додали товар',
+ 'definition_successful_deleted' => 'Успішно видалено',
+ 'definition_successful_updating' => 'Оновлено успішно',
+ 'definition_type' => 'Тип атрибуту',
+ 'definition_type_required' => 'Назва атрибуту - обов\'язкове поле',
+ 'definition_unit' => 'Одиниця виміру',
+ 'definition_values' => 'Значення атрибуту',
+ 'new' => 'Новий атрибут',
+ 'no_attributes_to_display' => 'Немає об\'єктів для відображення',
+ 'receipt_visibility' => 'Чек',
+ 'show_in_items' => 'Показати в товарах',
+ 'show_in_items_visibility' => 'Товари',
+ 'show_in_receipt' => 'Показати в квитанції',
+ 'show_in_receivings' => 'Показати в надходженнях',
+ 'show_in_receivings_visibility' => 'Надходження',
+ 'show_in_sales' => 'Показати в продажах',
+ 'show_in_sales_visibility' => 'Продажі',
+ 'show_in_search' => 'Показати в пошуку',
+ 'show_in_search_visibility' => 'Пошук',
+ 'update' => 'Оновити атрибут',
];
diff --git a/app/Language/ur/Attributes.php b/app/Language/ur/Attributes.php
index ce02d9f2c..8b46fb4f6 100644
--- a/app/Language/ur/Attributes.php
+++ b/app/Language/ur/Attributes.php
@@ -1,34 +1,36 @@
"وصف کے اندراج میں ':' یا '|' ممنوع ہیں",
- "confirm_delete" => "کیا آپ منتخب شدہ کو حذف کرنا چاہتے ہیں ؟",
- "confirm_restore" => "کیا آپ منتخب شدہ کو بحال کرنا چاہتے ہیں ؟",
- "definition_cannot_be_deleted" => "منتخب شدہ کو حذف نہیں کیا جا سکتا",
- "definition_invalid_group" => "",
- "definition_error_adding_updating" => "Attribute {0} could not be added or updated. Please check the error log.",
- "definition_flags" => "Attribute Visibility",
- "definition_group" => "Group",
- "definition_id" => "Id",
- "definition_name" => "Add Attribute",
- "definition_name_required" => "Attribute name is a required field",
- "definition_one_or_multiple" => "attribute(s)",
- "definition_successful_adding" => "You have successfully added item",
- "definition_successful_deleted" => "You have successfully deleted",
- "definition_successful_updating" => "You have successfully updated attribute",
- "definition_type" => "Attribute Type",
- "definition_type_required" => "Attribute type is a required field",
- "definition_unit" => "Measurement Unit",
- "definition_values" => "Attribute Values",
- "new" => "New Attribute",
- "no_attributes_to_display" => "No Items to display",
- "receipt_visibility" => "Receipt",
- "show_in_items" => "Show in items",
- "show_in_items_visibility" => "Items",
- "show_in_receipt" => "Show in receipt",
- "show_in_receivings" => "Show in receivings",
- "show_in_receivings_visibility" => "Receivings",
- "show_in_sales" => "Show in sales",
- "show_in_sales_visibility" => "Sales",
- "update" => "Update Attribute",
+ 'attribute_value_invalid_chars' => 'وصف کے اندراج میں \':\' یا \'|\' ممنوع ہیں',
+ 'confirm_delete' => 'کیا آپ منتخب شدہ کو حذف کرنا چاہتے ہیں ؟',
+ 'confirm_restore' => 'کیا آپ منتخب شدہ کو بحال کرنا چاہتے ہیں ؟',
+ 'definition_cannot_be_deleted' => 'منتخب شدہ کو حذف نہیں کیا جا سکتا',
+ 'definition_invalid_group' => '',
+ 'definition_error_adding_updating' => 'Attribute {0} could not be added or updated. Please check the error log.',
+ 'definition_flags' => 'Attribute Visibility',
+ 'definition_group' => 'Group',
+ 'definition_id' => 'Id',
+ 'definition_name' => 'Add Attribute',
+ 'definition_name_required' => 'Attribute name is a required field',
+ 'definition_one_or_multiple' => 'attribute(s)',
+ 'definition_successful_adding' => 'You have successfully added item',
+ 'definition_successful_deleted' => 'You have successfully deleted',
+ 'definition_successful_updating' => 'You have successfully updated attribute',
+ 'definition_type' => 'Attribute Type',
+ 'definition_type_required' => 'Attribute type is a required field',
+ 'definition_unit' => 'Measurement Unit',
+ 'definition_values' => 'Attribute Values',
+ 'new' => 'New Attribute',
+ 'no_attributes_to_display' => 'No Items to display',
+ 'receipt_visibility' => 'Receipt',
+ 'show_in_items' => 'Show in items',
+ 'show_in_items_visibility' => 'Items',
+ 'show_in_receipt' => 'Show in receipt',
+ 'show_in_receivings' => 'Show in receivings',
+ 'show_in_receivings_visibility' => 'Receivings',
+ 'show_in_sales' => 'Show in sales',
+ 'show_in_sales_visibility' => 'Sales',
+ 'show_in_search' => 'تلاش میں دکھائیں',
+ 'show_in_search_visibility' => 'تلاش',
+ 'update' => 'Update Attribute',
];
diff --git a/app/Language/vi/Attributes.php b/app/Language/vi/Attributes.php
index 90bd2245e..ce35181e7 100644
--- a/app/Language/vi/Attributes.php
+++ b/app/Language/vi/Attributes.php
@@ -1,34 +1,36 @@
"Giá trị thuộc tính không thể chứa ':' hay '|'",
- "confirm_delete" => "Bạn có chắc chắn muốn xóa (các) thuộc tính đã chọn không?",
- "confirm_restore" => "Bạn có chắc chắn muốn khôi phục (các) thuộc tính đã chọn không?",
- "definition_cannot_be_deleted" => "Không thể xóa (các) thuộc tính được chọn",
- "definition_invalid_group" => "Nhóm đã chọn không tồn tại hoặc không hợp lệ.",
- "definition_error_adding_updating" => "Thuộc tính {0} không thể thêm hoặc cập nhật. Vui lòng kiểm tra nhật ký lỗi.",
- "definition_flags" => "Hiển thị thuộc tính",
- "definition_group" => "Nhóm",
- "definition_id" => "Mã số",
- "definition_name" => "Thêm thuộc tính",
- "definition_name_required" => "Tên thuộc tính là trường bắt buộc",
- "definition_one_or_multiple" => "thuộc tính",
- "definition_successful_adding" => "Bạn vừa mới thêm mục tin thành công",
- "definition_successful_deleted" => "Bạn đã xóa thành công",
- "definition_successful_updating" => "Bạn đã cập nhật thành công thuộc tính",
- "definition_type" => "Loại thuộc tính",
- "definition_type_required" => "Loại thuộc tính là trường bắt buộc",
- "definition_unit" => "Đơn vị đo lường",
- "definition_values" => "Giá trị thuộc tính",
- "new" => "Thêm thuộc tính mới",
- "no_attributes_to_display" => "Không có mặt hàng nào để hiển thị",
- "receipt_visibility" => "Biên lai",
- "show_in_items" => "Hiển thị trong các mặt hàng",
- "show_in_items_visibility" => "Hàng hóa",
- "show_in_receipt" => "Hiển thị trong biên lai",
- "show_in_receivings" => "Hiển thị trong nhập hàng",
- "show_in_receivings_visibility" => "Nhập hàng",
- "show_in_sales" => "Hiển thị trong bán hàng",
- "show_in_sales_visibility" => "Bán hàng",
- "update" => "Cập nhật thuộc tính",
+ 'attribute_value_invalid_chars' => 'Giá trị thuộc tính không thể chứa \':\' hay \'|\'',
+ 'confirm_delete' => 'Bạn có chắc chắn muốn xóa (các) thuộc tính đã chọn không?',
+ 'confirm_restore' => 'Bạn có chắc chắn muốn khôi phục (các) thuộc tính đã chọn không?',
+ 'definition_cannot_be_deleted' => 'Không thể xóa (các) thuộc tính được chọn',
+ 'definition_invalid_group' => 'Nhóm đã chọn không tồn tại hoặc không hợp lệ.',
+ 'definition_error_adding_updating' => 'Thuộc tính {0} không thể thêm hoặc cập nhật. Vui lòng kiểm tra nhật ký lỗi.',
+ 'definition_flags' => 'Hiển thị thuộc tính',
+ 'definition_group' => 'Nhóm',
+ 'definition_id' => 'Mã số',
+ 'definition_name' => 'Thêm thuộc tính',
+ 'definition_name_required' => 'Tên thuộc tính là trường bắt buộc',
+ 'definition_one_or_multiple' => 'thuộc tính',
+ 'definition_successful_adding' => 'Bạn vừa mới thêm mục tin thành công',
+ 'definition_successful_deleted' => 'Bạn đã xóa thành công',
+ 'definition_successful_updating' => 'Bạn đã cập nhật thành công thuộc tính',
+ 'definition_type' => 'Loại thuộc tính',
+ 'definition_type_required' => 'Loại thuộc tính là trường bắt buộc',
+ 'definition_unit' => 'Đơn vị đo lường',
+ 'definition_values' => 'Giá trị thuộc tính',
+ 'new' => 'Thêm thuộc tính mới',
+ 'no_attributes_to_display' => 'Không có mặt hàng nào để hiển thị',
+ 'receipt_visibility' => 'Biên lai',
+ 'show_in_items' => 'Hiển thị trong các mặt hàng',
+ 'show_in_items_visibility' => 'Hàng hóa',
+ 'show_in_receipt' => 'Hiển thị trong biên lai',
+ 'show_in_receivings' => 'Hiển thị trong nhập hàng',
+ 'show_in_receivings_visibility' => 'Nhập hàng',
+ 'show_in_sales' => 'Hiển thị trong bán hàng',
+ 'show_in_sales_visibility' => 'Bán hàng',
+ 'show_in_search' => 'Hiển thị trong tìm kiếm',
+ 'show_in_search_visibility' => 'Tìm kiếm',
+ 'update' => 'Cập nhật thuộc tính',
];
diff --git a/app/Language/zh-Hans/Attributes.php b/app/Language/zh-Hans/Attributes.php
index 883d91935..ff971d38c 100644
--- a/app/Language/zh-Hans/Attributes.php
+++ b/app/Language/zh-Hans/Attributes.php
@@ -1,34 +1,36 @@
"属性特征不能包含':' or '|'",
- "confirm_delete" => "确定要删除所选属性吗",
- "confirm_restore" => "您确定要还原所选属性吗?",
- "definition_cannot_be_deleted" => "不能删除该特征属性",
- "definition_invalid_group" => "所选组不存在或无效。",
- "definition_error_adding_updating" => "无法添加或更新属性{0}。 请检查错误日志。",
- "definition_flags" => "属性可见性",
- "definition_group" => "组",
- "definition_id" => "ID卡",
- "definition_name" => "添加特征属性",
- "definition_name_required" => "属性必须填写",
- "definition_one_or_multiple" => "属性特征",
- "definition_successful_adding" => "你成功添加物品",
- "definition_successful_deleted" => "已经成功删除",
- "definition_successful_updating" => "更新属性成功",
- "definition_type" => "属性类别",
- "definition_type_required" => "属性必填",
- "definition_unit" => "计量单位",
- "definition_values" => "属性特征值",
- "new" => "新属性",
- "no_attributes_to_display" => "没有物品需要显示",
- "receipt_visibility" => "小票",
- "show_in_items" => "在项目中显示",
- "show_in_items_visibility" => "物品",
- "show_in_receipt" => "在收据中显示",
- "show_in_receivings" => "在收据中显示",
- "show_in_receivings_visibility" => "收据",
- "show_in_sales" => "在销售中显示",
- "show_in_sales_visibility" => "销售",
- "update" => "更新属性",
+ 'attribute_value_invalid_chars' => '属性特征不能包含\':\' or \'|\'',
+ 'confirm_delete' => '确定要删除所选属性吗',
+ 'confirm_restore' => '您确定要还原所选属性吗?',
+ 'definition_cannot_be_deleted' => '不能删除该特征属性',
+ 'definition_invalid_group' => '所选组不存在或无效。',
+ 'definition_error_adding_updating' => '无法添加或更新属性{0}。 请检查错误日志。',
+ 'definition_flags' => '属性可见性',
+ 'definition_group' => '组',
+ 'definition_id' => 'ID卡',
+ 'definition_name' => '添加特征属性',
+ 'definition_name_required' => '属性必须填写',
+ 'definition_one_or_multiple' => '属性特征',
+ 'definition_successful_adding' => '你成功添加物品',
+ 'definition_successful_deleted' => '已经成功删除',
+ 'definition_successful_updating' => '更新属性成功',
+ 'definition_type' => '属性类别',
+ 'definition_type_required' => '属性必填',
+ 'definition_unit' => '计量单位',
+ 'definition_values' => '属性特征值',
+ 'new' => '新属性',
+ 'no_attributes_to_display' => '没有物品需要显示',
+ 'receipt_visibility' => '小票',
+ 'show_in_items' => '在项目中显示',
+ 'show_in_items_visibility' => '物品',
+ 'show_in_receipt' => '在收据中显示',
+ 'show_in_receivings' => '在收据中显示',
+ 'show_in_receivings_visibility' => '收据',
+ 'show_in_sales' => '在销售中显示',
+ 'show_in_sales_visibility' => '销售',
+ 'show_in_search' => '在搜索中显示',
+ 'show_in_search_visibility' => '搜索',
+ 'update' => '更新属性',
];
diff --git a/app/Language/zh-Hant/Attributes.php b/app/Language/zh-Hant/Attributes.php
index 66a3b19fa..723e709ce 100644
--- a/app/Language/zh-Hant/Attributes.php
+++ b/app/Language/zh-Hant/Attributes.php
@@ -1,34 +1,36 @@
"屬性設定值中不可含有「_」或「|」",
- "confirm_delete" => "您確定要刪除此屬性?",
- "confirm_restore" => "您確定要還原所選屬性嗎?",
- "definition_cannot_be_deleted" => "無法刪除所選屬性",
- "definition_invalid_group" => "所選擇的群組不存在或無效。",
- "definition_error_adding_updating" => "無法添加或更新屬性 {0}。 請檢查錯誤日誌。",
- "definition_flags" => "屬性可見性",
- "definition_group" => "群組",
- "definition_id" => "編號",
- "definition_name" => "添加屬性",
- "definition_name_required" => "屬性名稱必需填寫",
- "definition_one_or_multiple" => "屬性",
- "definition_successful_adding" => "您已成功添加項目",
- "definition_successful_deleted" => "您已成功刪除",
- "definition_successful_updating" => "您已成功更新屬性",
- "definition_type" => "屬性類型",
- "definition_type_required" => "屬性類型必需填寫",
- "definition_unit" => "測量單位",
- "definition_values" => "屬性值",
- "new" => "新屬性",
- "no_attributes_to_display" => "沒有項目可顯示",
- "receipt_visibility" => "收據",
- "show_in_items" => "在項目中顯示",
- "show_in_items_visibility" => "物品",
- "show_in_receipt" => "在收據中顯示",
- "show_in_receivings" => "在收貨中顯示",
- "show_in_receivings_visibility" => "收貨",
- "show_in_sales" => "在銷售中顯示",
- "show_in_sales_visibility" => "銷售",
- "update" => "更新屬性",
+ 'attribute_value_invalid_chars' => '屬性設定值中不可含有「_」或「|」',
+ 'confirm_delete' => '您確定要刪除此屬性?',
+ 'confirm_restore' => '您確定要還原所選屬性嗎?',
+ 'definition_cannot_be_deleted' => '無法刪除所選屬性',
+ 'definition_invalid_group' => '所選擇的群組不存在或無效。',
+ 'definition_error_adding_updating' => '無法添加或更新屬性 {0}。 請檢查錯誤日誌。',
+ 'definition_flags' => '屬性可見性',
+ 'definition_group' => '群組',
+ 'definition_id' => '編號',
+ 'definition_name' => '添加屬性',
+ 'definition_name_required' => '屬性名稱必需填寫',
+ 'definition_one_or_multiple' => '屬性',
+ 'definition_successful_adding' => '您已成功添加項目',
+ 'definition_successful_deleted' => '您已成功刪除',
+ 'definition_successful_updating' => '您已成功更新屬性',
+ 'definition_type' => '屬性類型',
+ 'definition_type_required' => '屬性類型必需填寫',
+ 'definition_unit' => '測量單位',
+ 'definition_values' => '屬性值',
+ 'new' => '新屬性',
+ 'no_attributes_to_display' => '沒有項目可顯示',
+ 'receipt_visibility' => '收據',
+ 'show_in_items' => '在項目中顯示',
+ 'show_in_items_visibility' => '物品',
+ 'show_in_receipt' => '在收據中顯示',
+ 'show_in_receivings' => '在收貨中顯示',
+ 'show_in_receivings_visibility' => '收貨',
+ 'show_in_sales' => '在銷售中顯示',
+ 'show_in_sales_visibility' => '銷售',
+ 'show_in_search' => '在搜尋中顯示',
+ 'show_in_search_visibility' => '搜尋',
+ 'update' => '更新屬性',
];
diff --git a/app/Models/Attribute.php b/app/Models/Attribute.php
index 5b43a9bf0..79a021ffd 100644
--- a/app/Models/Attribute.php
+++ b/app/Models/Attribute.php
@@ -38,9 +38,10 @@ class Attribute extends Model
'attribute_decimal'
];
- public const SHOW_IN_ITEMS = 1; // TODO: These need to be moved to constants.php
+ public const SHOW_IN_ITEMS = 1;
public const SHOW_IN_SALES = 2;
public const SHOW_IN_RECEIVINGS = 4;
+ public const SHOW_IN_SEARCH = 8;
public function deleteDropdownAttributeValue(string $attribute_value, int $definition_id): bool
{
$attribute_id = $this->getAttributeIdByValue($attribute_value);
diff --git a/app/Models/Item.php b/app/Models/Item.php
index f8cd99175..3eba73183 100644
--- a/app/Models/Item.php
+++ b/app/Models/Item.php
@@ -2,9 +2,11 @@
namespace App\Models;
+use CodeIgniter\Database\RawSql;
use CodeIgniter\Database\ResultInterface;
use CodeIgniter\Model;
use Config\OSPOS;
+use DateTime;
use ReflectionException;
use stdClass;
@@ -38,6 +40,7 @@ class Item extends Model
'allow_alt_description',
'is_serialized'
];
+
protected $table = 'items';
protected $primaryKey = 'item_id';
protected $useAutoIncrement = true;
@@ -65,7 +68,6 @@ class Item extends Model
'hsn_code'
];
-
/**
* Determines if a given item_id is an item
*/
@@ -140,16 +142,183 @@ class Item extends Model
}
/**
- * Perform a search on items
+ * Parse search string for attribute-specific queries
+ * Supports syntax like "color: blue size: large" or "color:blue AND size:large"
+ *
+ * @param string $search The raw search string
+ * @return array{terms: array, attributes: array} Parsed terms and attribute queries
*/
- public function search(string $search, array $filters, ?int $rows = 0, ?int $limit_from = 0, ?string $sort = 'items.name', ?string $order = 'asc', ?bool $count_only = false)
+ public function parseAttributeSearch(string $search): array
+ {
+ $result = [
+ 'terms' => [],
+ 'attributes' => []
+ ];
+
+ if ($search === '') {
+ return $result;
+ }
+
+ $pattern = '/([[:alpha:]][[:alnum:] _-]*?)\s*:\s*([0-9]+,[0-9]+|[^\s,]+)(?:\s*,\s*|\s+(?:AND|OR)\s+)?/iu';
+ $remaining = preg_replace($pattern, '', $search);
+
+ if (preg_match_all($pattern, $search, $matches, PREG_SET_ORDER)) {
+ foreach ($matches as $match) {
+ $attrName = strtolower(trim($match[1]));
+ $attrValue = trim($match[2]);
+ $result['attributes'][$attrName][] = $attrValue;
+ }
+ }
+
+ $remaining = trim(preg_replace('/\s+/', ' ', $remaining));
+ if ($remaining !== '') {
+ $result['terms'][] = $remaining;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Joins rather than correlated EXISTS per name: EXISTS made MySQL materialize one
+ * subquery as a full attribute_links scan instead of using attribute_links_uq2 (~400ms vs ~150ms).
+ *
+ * $definitionInfo must be resolved by the caller before $builder exists - a query here
+ * would reset CodeIgniter's table-alias tracking and corrupt $builder's "items" alias.
+ *
+ * @param array $definitionInfo definition_id => info, from getDefinitionsByFlags(..., true)
+ * @param array $parsedAttributes Attribute name => list of search values
+ * @param int[] $allowedDefinitionIds Definition ids this search is scoped to
+ * @return string[] Attribute names that resolved to a known, allowed definition and were joined into $builder
+ */
+ private function applyNamedAttributeSearch($builder, array $definitionInfo, array $parsedAttributes, array $allowedDefinitionIds): array
+ {
+ $definitionIdByName = [];
+ foreach ($definitionInfo as $id => $info) {
+ $name = is_array($info) ? $info['name'] : $info;
+ $definitionIdByName[strtolower($name)] = (int) $id;
+ }
+
+ $consumedNames = [];
+ $index = 0;
+ foreach ($parsedAttributes as $attrName => $values) {
+ if (!isset($definitionIdByName[$attrName])) {
+ continue;
+ }
+
+ $definitionId = $definitionIdByName[$attrName];
+
+ if (!in_array($definitionId, $allowedDefinitionIds, true)) {
+ continue;
+ }
+
+ $consumedNames[] = $attrName;
+
+ $defType = is_array($definitionInfo[$definitionId]) ? ($definitionInfo[$definitionId]['type'] ?? TEXT) : TEXT;
+
+ $linksAlias = "named_attr_links_{$index}";
+ $valuesAlias = "named_attr_values_{$index}";
+ $index++;
+
+ $builder->join(
+ "attribute_links AS {$linksAlias}",
+ "{$linksAlias}.item_id = items.item_id AND {$linksAlias}.definition_id = {$definitionId} AND {$linksAlias}.receiving_id IS NULL AND {$linksAlias}.sale_id IS NULL"
+ );
+ $builder->join(
+ "attribute_values AS {$valuesAlias}",
+ "{$valuesAlias}.attribute_id = {$linksAlias}.attribute_id"
+ );
+
+ $builder->groupStart();
+ $matched = false;
+ foreach ($values as $value) {
+ if ($defType === DECIMAL) {
+ $parsedValue = parse_decimals($value);
+ if ($parsedValue === false) {
+ continue;
+ }
+ $builder->orWhere("{$valuesAlias}.attribute_decimal", $parsedValue);
+ $matched = true;
+ } elseif ($defType === DATE) {
+ $config = config(OSPOS::class)->settings;
+ $date = DateTime::createFromFormat($config['dateformat'], $value);
+ if ($date === false) {
+ continue;
+ }
+ $builder->orWhere("{$valuesAlias}.attribute_date", $date->format('Y-m-d'));
+ $matched = true;
+ } else {
+ $builder->orWhere("{$valuesAlias}.attribute_value", $value);
+ $matched = true;
+ }
+ }
+ $builder->groupEnd();
+
+ if (!$matched) {
+ $builder->where('1 = 0', null, false);
+ }
+ }
+
+ return $consumedNames;
+ }
+
+ /**
+ * Get attribute definition ID from column name for sorting
+ *
+ * @param string $sortColumn The sort column name
+ * @return int|null The definition ID or null if not an attribute column
+ */
+ private function getAttributeSortDefinitionId(string $sortColumn): ?int
+ {
+ if (!ctype_digit($sortColumn)) {
+ return null;
+ }
+
+ return (int) $sortColumn;
+ }
+
+ /**
+ * Left-joins the attribute tables needed to sort by a given attribute definition,
+ * and applies the order-by using the type-appropriate value column.
+ *
+ * $definitionInfo must be resolved by the caller before any joins are added to $builder —
+ * see the note on applyNamedAttributeSearch() for why a query here would corrupt $builder.
+ *
+ * @param array $definitionInfo definition_id => info, from getDefinitionsByFlags(..., true)
+ */
+ private function applyAttributeSort($builder, array $definitionInfo, int $sortDefinitionId, string $order): void
+ {
+ $sortAlias = "sort_attr_{$sortDefinitionId}";
+ $builder->join("attribute_links AS {$sortAlias}", "{$sortAlias}.item_id = items.item_id AND {$sortAlias}.definition_id = {$sortDefinitionId} AND {$sortAlias}.sale_id IS NULL AND {$sortAlias}.receiving_id IS NULL", 'left');
+ $builder->join("attribute_values AS {$sortAlias}_val", "{$sortAlias}_val.attribute_id = {$sortAlias}.attribute_id", 'left');
+
+ $sortColumn = "{$sortAlias}_val.attribute_value";
+
+ if (isset($definitionInfo[$sortDefinitionId])) {
+ $defType = is_array($definitionInfo[$sortDefinitionId]) ? ($definitionInfo[$sortDefinitionId]['type'] ?? TEXT) : TEXT;
+ if ($defType === DECIMAL) {
+ $sortColumn = "{$sortAlias}_val.attribute_decimal";
+ } elseif ($defType === DATE) {
+ $sortColumn = "{$sortAlias}_val.attribute_date";
+ }
+ }
+
+ $builder->orderBy("MAX($sortColumn)", $order);
+ }
+
+ /**
+ * Perform a search on items
+ *
+ * Resolves qualifying item_ids first (Phase A), then joins the expensive display-only
+ * tables scoped to just those ids (Phase B) instead of the whole matching set.
+ */
+ public function search(string $search, array $filters, ?int $rows = 0, ?int $limitFrom = 0, ?string $sort = 'items.name', ?string $order = 'asc', ?bool $countOnly = false)
{
// Set default values
if ($rows == null) {
$rows = 0;
}
- if ($limit_from == null) {
- $limit_from = 0;
+ if ($limitFrom == null) {
+ $limitFrom = 0;
}
if ($sort == null) {
$sort = 'items.name';
@@ -157,53 +326,196 @@ class Item extends Model
if ($order == null) {
$order = 'asc';
}
- if ($count_only == null) {
- $count_only = false;
+ if ($countOnly == null) {
+ $countOnly = false;
}
$config = config(OSPOS::class)->settings;
- $builder = $this->db->table('items AS items'); // TODO: I'm not sure if it's needed to write items AS items... I think you can just get away with items
+
+ $dateFormatEnabled = empty($config['date_or_time_format']);
+ $hasTransDateRange = !empty($filters['start_date']) && !empty($filters['end_date']);
+ $rangeStart = $hasTransDateRange ? ($dateFormatEnabled ? $filters['start_date'] : rawurldecode($filters['start_date'])) : null;
+ $rangeEnd = $hasTransDateRange ? ($dateFormatEnabled ? $filters['end_date'] : rawurldecode($filters['end_date'])) : null;
+ $applyTransDateRange = function ($builder) use ($hasTransDateRange, $dateFormatEnabled, $rangeStart, $rangeEnd) {
+ if (!$hasTransDateRange) {
+ return;
+ }
+ $column = $dateFormatEnabled ? 'DATE_FORMAT(trans_date, "%Y-%m-%d")' : 'trans_date';
+ $builder->groupStart();
+ $builder->where("$column >=", $rangeStart);
+ $builder->where("$column <=", $rangeEnd);
+ $builder->groupEnd();
+ };
+
+ $definitionIds = array_map('intval', $filters['definition_ids']);
+ $attributesEnabled = count($filters['definition_ids']) > 0;
+ $customAttributeSearch = $attributesEnabled && $filters['search_custom'] && !empty($search);
+
+ // Resolved before $idBuilder exists - see applyNamedAttributeSearch() for why.
+ $attribute = model(Attribute::class);
+ $definitionInfo = $attribute->getDefinitionsByFlags(Attribute::SHOW_IN_ITEMS | Attribute::SHOW_IN_SEARCH, true);
+
+ if ($attributesEnabled) {
+ $this->db->simpleQuery('SET SESSION group_concat_max_len=49152');
+ }
+
+ $idBuilder = $this->db->table('items AS items');
+
+ if ($customAttributeSearch) {
+ // Matching is per attribute row (WHERE, pre-GROUP BY), not against a GROUP_CONCAT
+ // blob (HAVING, post-GROUP BY), so a match can't bleed across definitions.
+ $idBuilder->select('items.item_id');
+ $idBuilder->join('attribute_links', 'attribute_links.item_id = items.item_id AND attribute_links.receiving_id IS NULL AND attribute_links.sale_id IS NULL AND definition_id IN (' . implode(',', $definitionIds) . ')', 'left');
+ $idBuilder->join('attribute_values', 'attribute_values.attribute_id = attribute_links.attribute_id', 'left');
+ } else {
+ $idBuilder->select('items.item_id');
+ }
+
+ $idBuilder->join('suppliers AS suppliers', 'suppliers.person_id = items.supplier_id', 'left');
+ $idBuilder->join('inventory AS inventory', 'inventory.trans_items = items.item_id');
+
+ if ($filters['stock_location_id'] > -1) {
+ $idBuilder->join('item_quantities AS item_quantities', 'item_quantities.item_id = items.item_id');
+ $idBuilder->where('location_id', $filters['stock_location_id']);
+ }
+
+ $applyTransDateRange($idBuilder);
+
+ $parsedAttributeSearch = $customAttributeSearch ? $this->parseAttributeSearch($search) : null;
+ $freeTextSearch = $search;
+
+ if ($parsedAttributeSearch !== null && !empty($parsedAttributeSearch['attributes'])) {
+ $consumedNames = $this->applyNamedAttributeSearch($idBuilder, $definitionInfo, $parsedAttributeSearch['attributes'], $definitionIds);
+
+ $unconsumedTerms = $parsedAttributeSearch['terms'];
+ foreach ($parsedAttributeSearch['attributes'] as $attrName => $values) {
+ if (in_array($attrName, $consumedNames, true)) {
+ continue;
+ }
+ foreach ($values as $value) {
+ $unconsumedTerms[] = $value;
+ }
+ }
+
+ $freeTextSearch = implode(' ', $unconsumedTerms);
+ }
+
+ if (!empty($freeTextSearch)) {
+ if ($customAttributeSearch) {
+ $format = $this->db->escape(dateformat_mysql());
+ $attributeValuesTable = $this->db->prefixTable('attribute_values');
+ $idBuilder->groupStart();
+ $idBuilder->like('attribute_values.attribute_value', $freeTextSearch);
+ $idBuilder->orLike(new RawSql("DATE_FORMAT($attributeValuesTable.attribute_date, $format)"), $freeTextSearch);
+ $idBuilder->orLike('attribute_values.attribute_decimal', $freeTextSearch);
+ $idBuilder->groupEnd();
+ } else {
+ $idBuilder->groupStart();
+ $idBuilder->like('name', $search);
+ $idBuilder->orLike('item_number', $search);
+ $idBuilder->orLike('items.item_id', $search);
+ $idBuilder->orLike('company_name', $search);
+ $idBuilder->orLike('items.category', $search);
+ $idBuilder->groupEnd();
+ }
+ }
+
+ $idBuilder->where('items.deleted', $filters['is_deleted']);
+
+ if ($filters['empty_upc']) {
+ $idBuilder->where('item_number', null);
+ }
+ if ($filters['low_inventory'] && $filters['stock_location_id'] > -1) {
+ $idBuilder->where('item_quantities.quantity <=', new RawSql('items.reorder_level'));
+ }
+ if ($filters['is_serialized']) {
+ $idBuilder->where('is_serialized', 1);
+ }
+ if ($filters['no_description']) {
+ $idBuilder->where('items.description', '');
+ }
+ if ($filters['temporary']) {
+ $idBuilder->where('items.item_type', ITEM_TEMP);
+ } else {
+ $nonTemp = [ITEM, ITEM_KIT, ITEM_AMOUNT_ENTRY];
+ $idBuilder->whereIn('items.item_type', $nonTemp);
+ }
+
+ // Avoid duplicated entries with same name because of inventory reporting multiple changes on the same item in the same date range
+ $idBuilder->groupBy('items.item_id');
// get_found_rows case
- if ($count_only) {
- $builder->select('COUNT(DISTINCT items.item_id) AS count');
+ if ($countOnly) {
+ return $idBuilder->countAllResults();
+ }
+
+ // Order by name of item by default
+ $sortDefinitionId = $this->getAttributeSortDefinitionId($sort);
+ if ($sort === 'quantity' && $filters['stock_location_id'] <= -1) {
+ $itemQuantitiesTable = $this->db->prefixTable('item_quantities');
+ $idBuilder->join(
+ "(SELECT item_id, SUM(quantity) AS total_quantity FROM $itemQuantitiesTable GROUP BY item_id) AS item_quantity_totals",
+ 'item_quantity_totals.item_id = items.item_id',
+ 'left'
+ );
+ $idBuilder->orderBy('MAX(item_quantity_totals.total_quantity)', $order);
+ } elseif ($sortDefinitionId !== null) {
+ $this->applyAttributeSort($idBuilder, $definitionInfo, $sortDefinitionId, $order);
} else {
- $builder->select('MAX(items.item_id) AS item_id');
- $builder->select('MAX(items.name) AS name');
- $builder->select('MAX(items.category) AS category');
- $builder->select('MAX(items.supplier_id) AS supplier_id');
- $builder->select('MAX(items.item_number) AS item_number');
- $builder->select('MAX(items.description) AS description');
- $builder->select('MAX(items.cost_price) AS cost_price');
- $builder->select('MAX(items.unit_price) AS unit_price');
- $builder->select('MAX(items.reorder_level) AS reorder_level');
- $builder->select('MAX(items.receiving_quantity) AS receiving_quantity');
- $builder->select('MAX(items.pic_filename) AS pic_filename');
- $builder->select('MAX(items.allow_alt_description) AS allow_alt_description');
- $builder->select('MAX(items.is_serialized) AS is_serialized');
- $builder->select('MAX(items.pack_name) AS pack_name');
- $builder->select('MAX(items.tax_category_id) AS tax_category_id');
- $builder->select('MAX(items.deleted) AS deleted');
+ $idBuilder->orderBy($sort, $order);
+ }
- $builder->select('MAX(suppliers.person_id) AS person_id');
- $builder->select('MAX(suppliers.company_name) AS company_name');
- $builder->select('MAX(suppliers.agency_name) AS agency_name');
- $builder->select('MAX(suppliers.account_number) AS account_number');
- $builder->select('MAX(suppliers.deleted) AS deleted');
+ if ($rows > 0) {
+ $idBuilder->limit($rows, $limitFrom);
+ }
- $builder->select('MAX(inventory.trans_id) AS trans_id');
- $builder->select('MAX(inventory.trans_items) AS trans_items');
- $builder->select('MAX(inventory.trans_user) AS trans_user');
- $builder->select('MAX(inventory.trans_date) AS trans_date');
- $builder->select('MAX(inventory.trans_comment) AS trans_comment');
- $builder->select('MAX(inventory.trans_location) AS trans_location');
- $builder->select('MAX(inventory.trans_inventory) AS trans_inventory');
+ $itemIds = array_column($idBuilder->get()->getResultArray(), 'item_id');
- if ($filters['stock_location_id'] > -1) {
- $builder->select('MAX(item_quantities.item_id) AS qty_item_id');
- $builder->select('MAX(item_quantities.location_id) AS location_id');
- $builder->select('MAX(item_quantities.quantity) AS quantity');
- }
+ if (empty($itemIds)) {
+ return $this->db->table('items AS items')->where('1 = 0')->get();
+ }
+
+ $builder = $this->db->table('items AS items');
+
+ $builder->select('MAX(items.item_id) AS item_id');
+ $builder->select('MAX(items.name) AS name');
+ $builder->select('MAX(items.category) AS category');
+ $builder->select('MAX(items.supplier_id) AS supplier_id');
+ $builder->select('MAX(items.item_number) AS item_number');
+ $builder->select('MAX(items.description) AS description');
+ $builder->select('MAX(items.cost_price) AS cost_price');
+ $builder->select('MAX(items.unit_price) AS unit_price');
+ $builder->select('MAX(items.reorder_level) AS reorder_level');
+ $builder->select('MAX(items.receiving_quantity) AS receiving_quantity');
+ $builder->select('MAX(items.pic_filename) AS pic_filename');
+ $builder->select('MAX(items.allow_alt_description) AS allow_alt_description');
+ $builder->select('MAX(items.is_serialized) AS is_serialized');
+ $builder->select('MAX(items.pack_name) AS pack_name');
+ $builder->select('MAX(items.tax_category_id) AS tax_category_id');
+ $builder->select('MAX(items.deleted) AS deleted');
+
+ $builder->select('MAX(suppliers.person_id) AS person_id');
+ $builder->select('MAX(suppliers.company_name) AS company_name');
+ $builder->select('MAX(suppliers.agency_name) AS agency_name');
+ $builder->select('MAX(suppliers.account_number) AS account_number');
+ $builder->select('MAX(suppliers.deleted) AS supplier_deleted');
+
+ $builder->select('MAX(inventory.trans_id) AS trans_id');
+ $builder->select('MAX(inventory.trans_items) AS trans_items');
+ $builder->select('MAX(inventory.trans_user) AS trans_user');
+ $builder->select('MAX(inventory.trans_date) AS trans_date');
+ $builder->select('MAX(inventory.trans_comment) AS trans_comment');
+ $builder->select('MAX(inventory.trans_location) AS trans_location');
+ $builder->select('MAX(inventory.trans_inventory) AS trans_inventory');
+
+ $sortByQuantityAllLocations = $sort === 'quantity' && $filters['stock_location_id'] <= -1;
+
+ if ($filters['stock_location_id'] > -1) {
+ $builder->select('MAX(item_quantities.item_id) AS qty_item_id');
+ $builder->select('MAX(item_quantities.location_id) AS location_id');
+ $builder->select('MAX(item_quantities.quantity) AS quantity');
+ } elseif ($sortByQuantityAllLocations) {
+ $builder->select('MAX(item_quantity_totals.total_quantity) AS quantity');
}
$builder->join('suppliers AS suppliers', 'suppliers.person_id = items.supplier_id', 'left');
@@ -212,75 +524,39 @@ class Item extends Model
if ($filters['stock_location_id'] > -1) {
$builder->join('item_quantities AS item_quantities', 'item_quantities.item_id = items.item_id');
$builder->where('location_id', $filters['stock_location_id']);
+ } elseif ($sortByQuantityAllLocations) {
+ $itemQuantitiesTable = $this->db->prefixTable('item_quantities');
+ $builder->join(
+ "(SELECT item_id, SUM(quantity) AS total_quantity FROM $itemQuantitiesTable GROUP BY item_id) AS item_quantity_totals",
+ 'item_quantity_totals.item_id = items.item_id',
+ 'left'
+ );
}
- $where = empty($config['date_or_time_format'])
- ? 'DATE_FORMAT(trans_date, "%Y-%m-%d") BETWEEN ' . $this->db->escape($filters['start_date']) . ' AND ' . $this->db->escape($filters['end_date'])
- : 'trans_date BETWEEN ' . $this->db->escape(rawurldecode($filters['start_date'])) . ' AND ' . $this->db->escape(rawurldecode($filters['end_date']));
- $builder->where($where);
+ $applyTransDateRange($builder);
- $attributes_enabled = count($filters['definition_ids']) > 0;
-
- if (!empty($search)) {
- if ($attributes_enabled && $filters['search_custom']) {
- $builder->havingLike('attribute_values', $search);
- $builder->orHavingLike('attribute_dtvalues', $search);
- $builder->orHavingLike('attribute_dvalues', $search);
- } else {
- $builder->groupStart();
- $builder->like('name', $search);
- $builder->orLike('item_number', $search);
- $builder->orLike('items.item_id', $search);
- $builder->orLike('company_name', $search);
- $builder->orLike('items.category', $search);
- $builder->groupEnd();
- }
- }
-
- if ($attributes_enabled) {
+ if ($attributesEnabled) {
$format = $this->db->escape(dateformat_mysql());
- $this->db->simpleQuery('SET SESSION group_concat_max_len=49152');
- $builder->select('GROUP_CONCAT(DISTINCT CONCAT_WS(\'_\', definition_id, attribute_value) ORDER BY definition_id SEPARATOR \'|\') AS attribute_values');
- $builder->select("GROUP_CONCAT(DISTINCT CONCAT_WS('_', definition_id, DATE_FORMAT(attribute_date, $format)) SEPARATOR '|') AS attribute_dtvalues");
- $builder->select('GROUP_CONCAT(DISTINCT CONCAT_WS(\'_\', definition_id, attribute_decimal) SEPARATOR \'|\') AS attribute_dvalues');
- $builder->join('attribute_links', 'attribute_links.item_id = items.item_id AND attribute_links.receiving_id IS NULL AND attribute_links.sale_id IS NULL AND definition_id IN (' . implode(',', $filters['definition_ids']) . ')', 'left');
+ $attributeLinksTable = $this->db->prefixTable('attribute_links');
+ $attributeValuesTable = $this->db->prefixTable('attribute_values');
+ $builder->select("GROUP_CONCAT(DISTINCT CONCAT_WS('_', $attributeLinksTable.definition_id, $attributeValuesTable.attribute_value) ORDER BY $attributeLinksTable.definition_id SEPARATOR '|') AS attribute_values");
+ $builder->select("GROUP_CONCAT(DISTINCT CONCAT_WS('_', $attributeLinksTable.definition_id, DATE_FORMAT($attributeValuesTable.attribute_date, $format)) SEPARATOR '|') AS attribute_dtvalues");
+ $builder->select("GROUP_CONCAT(DISTINCT CONCAT_WS('_', $attributeLinksTable.definition_id, $attributeValuesTable.attribute_decimal) SEPARATOR '|') AS attribute_dvalues");
+ $builder->join('attribute_links', 'attribute_links.item_id = items.item_id AND attribute_links.receiving_id IS NULL AND attribute_links.sale_id IS NULL AND attribute_links.definition_id IN (' . implode(',', $definitionIds) . ')', 'left');
$builder->join('attribute_values', 'attribute_values.attribute_id = attribute_links.attribute_id', 'left');
}
- $builder->where('items.deleted', $filters['is_deleted']);
+ $builder->whereIn('items.item_id', $itemIds);
- if ($filters['empty_upc']) {
- $builder->where('item_number', null);
- }
- if ($filters['low_inventory']) {
- $builder->where('quantity <=', 'reorder_level');
- }
- if ($filters['is_serialized']) {
- $builder->where('is_serialized', 1);
- }
- if ($filters['no_description']) {
- $builder->where('items.description', '');
- }
- if ($filters['temporary']) {
- $builder->where('items.item_type', ITEM_TEMP);
- } else {
- $non_temp = [ITEM, ITEM_KIT, ITEM_AMOUNT_ENTRY];
- $builder->whereIn('items.item_type', $non_temp);
- }
-
- // get_found_rows case
- if ($count_only) {
- return $builder->get()->getRow()->count;
- }
-
- // Avoid duplicated entries with same name because of inventory reporting multiple changes on the same item in the same date range
$builder->groupBy('items.item_id');
- // Order by name of item by default
- $builder->orderBy($sort, $order);
-
- if ($rows > 0) {
- $builder->limit($rows, $limit_from);
+ // Re-apply order: WHERE...IN + GROUP BY do not preserve Phase A's row order
+ if ($sortByQuantityAllLocations) {
+ $builder->orderBy('MAX(item_quantity_totals.total_quantity)', $order);
+ } elseif ($sortDefinitionId !== null) {
+ $this->applyAttributeSort($builder, $definitionInfo, $sortDefinitionId, $order);
+ } else {
+ $builder->orderBy($sort, $order);
}
return $builder->get();
diff --git a/app/Models/Item_taxes.php b/app/Models/Item_taxes.php
index 08b8fb845..bfb07b36a 100644
--- a/app/Models/Item_taxes.php
+++ b/app/Models/Item_taxes.php
@@ -30,6 +30,26 @@ class Item_taxes extends Model
return $builder->get()->getResultArray();
}
+ /**
+ * @return array item_id => array of taxes for that item
+ */
+ public function getInfoMultiple(array $itemIds): array
+ {
+ if (empty($itemIds)) {
+ return [];
+ }
+
+ $builder = $this->db->table('items_taxes');
+ $builder->whereIn('item_id', $itemIds);
+
+ $taxesByItemId = [];
+ foreach ($builder->get()->getResultArray() as $tax) {
+ $taxesByItemId[$tax['item_id']][] = $tax;
+ }
+
+ return $taxesByItemId;
+ }
+
/**
* Inserts or updates an item's taxes
*/
diff --git a/tests/Models/ItemSearchTest.php b/tests/Models/ItemSearchTest.php
new file mode 100644
index 000000000..fdf20bd10
--- /dev/null
+++ b/tests/Models/ItemSearchTest.php
@@ -0,0 +1,468 @@
+call('TestDatabaseBootstrapSeeder');
+ }
+
+ protected function setUp(): void
+ {
+ parent::setUp();
+
+ $this->item = model(Item::class);
+
+ // OSPOS's app_config cache can go stale mid-suite and fall back to defaults with
+ // no 'dateformat' key, so set it directly rather than depending on that cache.
+ config(OSPOS::class)->settings['dateformat'] = 'm/d/Y';
+ config(OSPOS::class)->settings['number_locale'] = 'en_US';
+ config(OSPOS::class)->settings['currency_decimals'] = 2;
+ }
+
+ protected function tearDown(): void
+ {
+ parent::tearDown();
+ }
+
+ public function testSearchReturnsMatchingItemByName(): void
+ {
+ $uniqueName = 'Findable Widget ' . uniqid();
+ $this->createSearchableItem([
+ 'name' => $uniqueName,
+ 'cost_price' => 12.50,
+ 'unit_price' => 24.99,
+ ]);
+
+ $results = $this->item->search($uniqueName, $this->defaultSearchFilters())->getResult();
+
+ $this->assertCount(1, $results);
+ $this->assertEquals($uniqueName, $results[0]->name);
+ $this->assertEquals(12.50, (float) $results[0]->cost_price);
+ $this->assertEquals(24.99, (float) $results[0]->unit_price);
+ }
+
+ public function testSearchExcludesNonMatchingItems(): void
+ {
+ $matchingName = 'Matching Gadget ' . uniqid();
+ $this->createSearchableItem(['name' => $matchingName]);
+ $this->createSearchableItem(['name' => 'Unrelated Thing ' . uniqid()]);
+
+ $results = $this->item->search($matchingName, $this->defaultSearchFilters())->getResult();
+
+ $this->assertCount(1, $results);
+ $this->assertEquals($matchingName, $results[0]->name);
+ }
+
+ public function testGetFoundRowsMatchesActualCount(): void
+ {
+ $sharedCategory = 'Shared Category ' . uniqid();
+ $this->createSearchableItem(['category' => $sharedCategory]);
+ $this->createSearchableItem(['category' => $sharedCategory]);
+ $this->createSearchableItem(['category' => $sharedCategory]);
+
+ $filters = $this->defaultSearchFilters();
+
+ $foundRows = $this->item->get_found_rows($sharedCategory, $filters);
+ $actualRows = $this->item->search($sharedCategory, $filters)->getResultArray();
+
+ $this->assertEquals(3, $foundRows);
+ $this->assertCount($foundRows, $actualRows);
+ }
+
+ public function testSearchPaginationRowsAndLimitFrom(): void
+ {
+ $sharedCategory = 'Paginated Category ' . uniqid();
+ $this->createSearchableItem(['name' => 'A Item ' . uniqid(), 'category' => $sharedCategory]);
+ $this->createSearchableItem(['name' => 'B Item ' . uniqid(), 'category' => $sharedCategory]);
+ $this->createSearchableItem(['name' => 'C Item ' . uniqid(), 'category' => $sharedCategory]);
+
+ $results = $this->item->search(
+ $sharedCategory,
+ $this->defaultSearchFilters(),
+ 1,
+ 1,
+ 'items.name',
+ 'asc'
+ )->getResult();
+
+ $this->assertCount(1, $results);
+ $this->assertStringStartsWith('B Item', $results[0]->name);
+ }
+
+ public function testSearchOrderPreservedAfterPhaseBJoin(): void
+ {
+ $sharedCategory = 'Ordered Category ' . uniqid();
+ $this->createSearchableItem(['name' => 'Alpha Item ' . uniqid(), 'category' => $sharedCategory]);
+ $this->createSearchableItem(['name' => 'Beta Item ' . uniqid(), 'category' => $sharedCategory]);
+ $this->createSearchableItem(['name' => 'Gamma Item ' . uniqid(), 'category' => $sharedCategory]);
+
+ $results = $this->item->search(
+ $sharedCategory,
+ $this->defaultSearchFilters(),
+ 0,
+ 0,
+ 'items.name',
+ 'desc'
+ )->getResult();
+
+ $names = array_map(static fn ($item) => $item->name, $results);
+ $sorted = $names;
+ rsort($sorted);
+
+ $this->assertSame($sorted, $names);
+ }
+
+ public function testSearchNoMatchesReturnsEmptyResultNotError(): void
+ {
+ $results = $this->item->search('no-such-item-' . uniqid(), $this->defaultSearchFilters())->getResult();
+
+ $this->assertIsArray($results);
+ $this->assertCount(0, $results);
+ }
+
+ public function testSearchExcludesDeletedItemsByDefault(): void
+ {
+ $deletedName = 'Deleted Item ' . uniqid();
+ $this->createSearchableItem(['name' => $deletedName, 'deleted' => 1]);
+
+ $results = $this->item->search($deletedName, $this->defaultSearchFilters(['is_deleted' => false]))->getResult();
+
+ $this->assertCount(0, $results);
+ }
+
+ public function testSearchIncludesDeletedWhenFilterSet(): void
+ {
+ $deletedName = 'Deleted Item ' . uniqid();
+ $this->createSearchableItem(['name' => $deletedName, 'deleted' => 1]);
+
+ $results = $this->item->search($deletedName, $this->defaultSearchFilters(['is_deleted' => true]))->getResult();
+
+ $this->assertCount(1, $results);
+ $this->assertEquals($deletedName, $results[0]->name);
+ }
+
+ public function testSearchStockLocationFilter(): void
+ {
+ $locationAName = 'Location A Item ' . uniqid();
+ $itemId = $this->createSearchableItem(['name' => $locationAName]);
+ $this->addItemQuantity($itemId, 1, 10);
+
+ $resultsAtLocation1 = $this->item->search(
+ $locationAName,
+ $this->defaultSearchFilters(['stock_location_id' => 1])
+ )->getResult();
+
+ $resultsAtLocation2 = $this->item->search(
+ $locationAName,
+ $this->defaultSearchFilters(['stock_location_id' => 2])
+ )->getResult();
+
+ $this->assertCount(1, $resultsAtLocation1);
+ $this->assertCount(0, $resultsAtLocation2);
+ }
+
+ public function testSearchTemporaryFilter(): void
+ {
+ $tempName = 'Temp Item ' . uniqid();
+ $this->createSearchableItem(['name' => $tempName, 'item_type' => ITEM_TEMP]);
+
+ $resultsWhenTemporary = $this->item->search(
+ $tempName,
+ $this->defaultSearchFilters(['temporary' => true])
+ )->getResult();
+
+ $resultsWhenNotTemporary = $this->item->search(
+ $tempName,
+ $this->defaultSearchFilters(['temporary' => false])
+ )->getResult();
+
+ $this->assertCount(1, $resultsWhenTemporary);
+ $this->assertCount(0, $resultsWhenNotTemporary);
+ }
+
+ public function testSearchSortByQuantitySumsAcrossLocationsWithoutMultiplication(): void
+ {
+ $itemId = $this->createSearchableItem(['name' => 'Multi Location Item ' . uniqid()]);
+
+ // createSearchableItem already inserts one inventory row; add two more
+ // inventory transactions so a naive SUM-after-join (which multiplies
+ // item_quantities rows by the inventory join) would triple-count.
+ $this->addInventoryRecord($itemId, 1);
+ $this->addInventoryRecord($itemId, 1);
+
+ $this->addItemQuantity($itemId, 1, 10);
+ $this->addItemQuantity($itemId, 2, 5);
+
+ $results = $this->item->search(
+ '',
+ $this->defaultSearchFilters(),
+ 0,
+ 0,
+ 'quantity',
+ 'desc'
+ )->getResult();
+
+ $match = array_values(array_filter($results, static fn ($r) => (int) $r->item_id === $itemId));
+
+ $this->assertCount(1, $match);
+ $this->assertEquals(15, (float) $match[0]->quantity);
+ }
+
+ public function testSearchByNamedAttributeSyntax(): void
+ {
+ $colorDefinitionId = $this->createAttributeDefinition('Color ' . uniqid());
+ $sizeDefinitionId = $this->createAttributeDefinition('Size ' . uniqid());
+ $blueValue = 'Blue' . uniqid();
+ $redValue = 'Red' . uniqid();
+ $largeValue = 'Large' . uniqid();
+
+ $matchingId = $this->createSearchableItem(['name' => 'Named Attr Match ' . uniqid()]);
+ $this->linkAttributeValue($matchingId, $colorDefinitionId, $blueValue);
+ $this->linkAttributeValue($matchingId, $sizeDefinitionId, $largeValue);
+
+ $wrongColorId = $this->createSearchableItem(['name' => 'Named Attr WrongColor ' . uniqid()]);
+ $this->linkAttributeValue($wrongColorId, $colorDefinitionId, $redValue);
+ $this->linkAttributeValue($wrongColorId, $sizeDefinitionId, $largeValue);
+
+ $filters = $this->defaultSearchFilters([
+ 'search_custom' => true,
+ 'definition_ids' => [$colorDefinitionId, $sizeDefinitionId],
+ ]);
+
+ $colorAttrName = $this->getDefinitionName($colorDefinitionId);
+ $sizeAttrName = $this->getDefinitionName($sizeDefinitionId);
+
+ $results = $this->item->search("{$colorAttrName}:{$blueValue} {$sizeAttrName}:{$largeValue}", $filters)->getResult();
+ $ids = array_map(static fn ($item) => (int) $item->item_id, $results);
+
+ $this->assertContains($matchingId, $ids);
+ $this->assertNotContains($wrongColorId, $ids);
+ }
+
+ public function testSearchByNamedAttributeSyntaxWithCommaSeparator(): void
+ {
+ // parseAttributeSearch() treats a bare comma between name:value pairs as an implicit
+ // separator (like AND/OR), so "color:blue, size:large" must parse both attributes.
+ $colorDefinitionId = $this->createAttributeDefinition('Color ' . uniqid());
+ $sizeDefinitionId = $this->createAttributeDefinition('Size ' . uniqid());
+ $blueValue = 'Blue' . uniqid();
+ $largeValue = 'Large' . uniqid();
+
+ $matchingId = $this->createSearchableItem(['name' => 'Comma Sep Match ' . uniqid()]);
+ $this->linkAttributeValue($matchingId, $colorDefinitionId, $blueValue);
+ $this->linkAttributeValue($matchingId, $sizeDefinitionId, $largeValue);
+
+ $filters = $this->defaultSearchFilters([
+ 'search_custom' => true,
+ 'definition_ids' => [$colorDefinitionId, $sizeDefinitionId],
+ ]);
+
+ $colorAttrName = $this->getDefinitionName($colorDefinitionId);
+ $sizeAttrName = $this->getDefinitionName($sizeDefinitionId);
+
+ $results = $this->item->search("{$colorAttrName}:{$blueValue}, {$sizeAttrName}:{$largeValue}", $filters)->getResult();
+ $ids = array_map(static fn ($item) => (int) $item->item_id, $results);
+
+ $this->assertContains($matchingId, $ids);
+ }
+
+ public function testSearchByNamedAttributeCombinedWithFreeText(): void
+ {
+ // When search_custom is on, the free-text remainder matches attribute values
+ // (not item name/category/etc) - see the customAttributeSearch branch of search().
+ // An item can only have one attribute_links row per definition_id (attribute_links_uq3),
+ // so the name:value attribute and the free-text-matched attribute must be different
+ // definitions.
+ $colorDefinitionId = $this->createAttributeDefinition('Color ' . uniqid());
+ $materialDefinitionId = $this->createAttributeDefinition('Material ' . uniqid());
+ $greenValue = 'Green' . uniqid();
+ $freeTextValue = 'Cotton' . uniqid();
+
+ $matchingId = $this->createSearchableItem(['name' => 'Combo Search Widget ' . uniqid()]);
+ $this->linkAttributeValue($matchingId, $colorDefinitionId, $greenValue);
+ $this->linkAttributeValue($matchingId, $materialDefinitionId, $freeTextValue);
+
+ $wrongFreeTextId = $this->createSearchableItem(['name' => 'Combo Search Other ' . uniqid()]);
+ $this->linkAttributeValue($wrongFreeTextId, $colorDefinitionId, $greenValue);
+
+ $filters = $this->defaultSearchFilters([
+ 'search_custom' => true,
+ 'definition_ids' => [$colorDefinitionId, $materialDefinitionId],
+ ]);
+
+ $colorAttrName = $this->getDefinitionName($colorDefinitionId);
+
+ $results = $this->item->search("{$colorAttrName}:{$greenValue} {$freeTextValue}", $filters)->getResult();
+ $ids = array_map(static fn ($item) => (int) $item->item_id, $results);
+
+ $this->assertContains($matchingId, $ids);
+ $this->assertNotContains($wrongFreeTextId, $ids);
+ }
+
+ public function testPlainFreeTextSearchUnaffectedByAttributeParsing(): void
+ {
+ // search_custom is off here, so this exercises the plain by-name search path -
+ // parseAttributeSearch() is never even called in this branch of search().
+ $uniqueName = 'Plain Search Widget ' . uniqid();
+ $this->createSearchableItem(['name' => $uniqueName]);
+
+ $results = $this->item->search($uniqueName, $this->defaultSearchFilters())->getResult();
+
+ $this->assertCount(1, $results);
+ $this->assertEquals($uniqueName, $results[0]->name);
+ }
+
+ public function testSearchCustomWithoutNamedAttributeSyntaxMatchesAttributeValueAsBefore(): void
+ {
+ // No "name:value" syntax present, so parseAttributeSearch() finds no attributes and
+ // $freeTextSearch falls back to the raw $search - this is the pre-Feature-C behavior
+ // for search_custom, unaffected by the new named-attribute join.
+ $definitionId = $this->createAttributeDefinition('Material ' . uniqid());
+ $searchValue = 'Cotton' . uniqid();
+
+ $matchingId = $this->createSearchableItem(['name' => 'Search Custom Widget ' . uniqid()]);
+ $this->linkAttributeValue($matchingId, $definitionId, $searchValue);
+
+ $filters = $this->defaultSearchFilters([
+ 'search_custom' => true,
+ 'definition_ids' => [$definitionId],
+ ]);
+
+ $results = $this->item->search($searchValue, $filters)->getResult();
+ $ids = array_map(static fn ($item) => (int) $item->item_id, $results);
+
+ $this->assertContains($matchingId, $ids);
+ }
+
+ public function testSearchByNamedAttributeMatchesDecimalAttribute(): void
+ {
+ $priceDefinitionId = $this->createAttributeDefinition('Price ' . uniqid(), DECIMAL);
+
+ $matchingId = $this->createSearchableItem(['name' => 'Decimal Attr Match ' . uniqid()]);
+ $this->linkTypedAttributeValue($matchingId, $priceDefinitionId, '19.99', DECIMAL);
+
+ $otherId = $this->createSearchableItem(['name' => 'Decimal Attr Other ' . uniqid()]);
+ $this->linkTypedAttributeValue($otherId, $priceDefinitionId, '5.00', DECIMAL);
+
+ $filters = $this->defaultSearchFilters([
+ 'search_custom' => true,
+ 'definition_ids' => [$priceDefinitionId],
+ ]);
+
+ $priceAttrName = $this->getDefinitionName($priceDefinitionId);
+
+ $results = $this->item->search("{$priceAttrName}:19.99", $filters)->getResult();
+ $ids = array_map(static fn ($item) => (int) $item->item_id, $results);
+
+ $this->assertContains($matchingId, $ids);
+ $this->assertNotContains($otherId, $ids);
+ }
+
+ public function testSearchByNamedAttributeMatchesDateAttribute(): void
+ {
+ config(OSPOS::class)->settings['dateformat'] = 'm/d/Y';
+
+ $expiryDefinitionId = $this->createAttributeDefinition('Expiry ' . uniqid(), DATE);
+
+ $matchingId = $this->createSearchableItem(['name' => 'Date Attr Match ' . uniqid()]);
+ $this->linkTypedAttributeValue($matchingId, $expiryDefinitionId, '01/15/2027', DATE);
+
+ $otherId = $this->createSearchableItem(['name' => 'Date Attr Other ' . uniqid()]);
+ $this->linkTypedAttributeValue($otherId, $expiryDefinitionId, '02/20/2027', DATE);
+
+ $filters = $this->defaultSearchFilters([
+ 'search_custom' => true,
+ 'definition_ids' => [$expiryDefinitionId],
+ ]);
+
+ $expiryAttrName = $this->getDefinitionName($expiryDefinitionId);
+
+ $results = $this->item->search("{$expiryAttrName}:01/15/2027", $filters)->getResult();
+ $ids = array_map(static fn ($item) => (int) $item->item_id, $results);
+
+ $this->assertContains($matchingId, $ids);
+ $this->assertNotContains($otherId, $ids);
+ }
+
+ public function testSearchByNamedAttributeDecimalRespectsLocaleDecimalSeparator(): void
+ {
+ $config = config(OSPOS::class);
+ $originalLocale = $config->settings['number_locale'];
+ $originalDecimals = $config->settings['currency_decimals'];
+ $config->settings['number_locale'] = 'de_DE';
+ $config->settings['currency_decimals'] = 2;
+
+ try {
+ $priceDefinitionId = $this->createAttributeDefinition('LocalePrice ' . uniqid(), DECIMAL);
+
+ $matchingId = $this->createSearchableItem(['name' => 'Locale Decimal Match ' . uniqid()]);
+ $this->linkTypedAttributeValue($matchingId, $priceDefinitionId, '19.99', DECIMAL);
+
+ $filters = $this->defaultSearchFilters([
+ 'search_custom' => true,
+ 'definition_ids' => [$priceDefinitionId],
+ ]);
+
+ $priceAttrName = $this->getDefinitionName($priceDefinitionId);
+
+ // Comma decimal separator, matching the de_DE locale, should parse and match.
+ $commaResults = $this->item->search("{$priceAttrName}:19,99", $filters)->getResult();
+ $commaIds = array_map(static fn ($item) => (int) $item->item_id, $commaResults);
+ $this->assertContains($matchingId, $commaIds);
+ } finally {
+ $config->settings['number_locale'] = $originalLocale;
+ $config->settings['currency_decimals'] = $originalDecimals;
+ }
+ }
+
+ public function testSearchByUnknownNamedAttributeDoesNotReturnAllItems(): void
+ {
+ $definitionId = $this->createAttributeDefinition('Known ' . uniqid());
+ $knownAttrName = $this->getDefinitionName($definitionId);
+
+ $this->createSearchableItem(['name' => 'Unrelated Item ' . uniqid()]);
+ $this->createSearchableItem(['name' => 'Another Unrelated Item ' . uniqid()]);
+
+ $filters = $this->defaultSearchFilters([
+ 'search_custom' => true,
+ 'definition_ids' => [$definitionId],
+ ]);
+
+ $results = $this->item->search("{$knownAttrName}:nomatch nosuchattr:{$knownAttrName}", $filters)->getResult();
+
+ $this->assertCount(0, $results);
+ }
+
+ private function getDefinitionName(int $definitionId): string
+ {
+ return db_connect()->table('attribute_definitions')
+ ->select('definition_name')
+ ->where('definition_id', $definitionId)
+ ->get()
+ ->getRow()
+ ->definition_name;
+ }
+}
diff --git a/tests/Models/ItemTaxesMultipleTest.php b/tests/Models/ItemTaxesMultipleTest.php
new file mode 100644
index 000000000..e820d005f
--- /dev/null
+++ b/tests/Models/ItemTaxesMultipleTest.php
@@ -0,0 +1,79 @@
+call('TestDatabaseBootstrapSeeder');
+ }
+
+ protected function setUp(): void
+ {
+ parent::setUp();
+
+ $this->item_taxes = model(Item_taxes::class);
+ }
+
+ public function testGetInfoMultipleReturnsTaxesGroupedByItemId(): void
+ {
+ $itemOneId = $this->createSearchableItem();
+ $itemTwoId = $this->createSearchableItem();
+
+ $itemOneTaxes = [['name' => 'VAT', 'percent' => 20]];
+ $itemTwoTaxes = [['name' => 'GST', 'percent' => 10]];
+
+ $this->item_taxes->save_value($itemOneTaxes, $itemOneId);
+ $this->item_taxes->save_value($itemTwoTaxes, $itemTwoId);
+
+ $result = $this->item_taxes->getInfoMultiple([$itemOneId, $itemTwoId]);
+
+ $this->assertArrayHasKey($itemOneId, $result);
+ $this->assertArrayHasKey($itemTwoId, $result);
+ $this->assertCount(1, $result[$itemOneId]);
+ $this->assertCount(1, $result[$itemTwoId]);
+ $this->assertEquals('VAT', $result[$itemOneId][0]['name']);
+ $this->assertEquals('GST', $result[$itemTwoId][0]['name']);
+ }
+
+ public function testGetInfoMultipleItemWithNoTaxesOmittedFromResult(): void
+ {
+ $itemWithTaxesId = $this->createSearchableItem();
+ $itemWithoutTaxesId = $this->createSearchableItem();
+
+ $taxes = [['name' => 'VAT', 'percent' => 20]];
+ $this->item_taxes->save_value($taxes, $itemWithTaxesId);
+
+ $result = $this->item_taxes->getInfoMultiple([$itemWithTaxesId, $itemWithoutTaxesId]);
+
+ $this->assertArrayHasKey($itemWithTaxesId, $result);
+ $this->assertArrayNotHasKey($itemWithoutTaxesId, $result);
+ }
+
+ public function testGetInfoMultipleEmptyItemIdsReturnsEmptyArray(): void
+ {
+ $result = $this->item_taxes->getInfoMultiple([]);
+
+ $this->assertSame([], $result);
+ }
+}
diff --git a/tests/Support/ItemSearchFixtureTrait.php b/tests/Support/ItemSearchFixtureTrait.php
new file mode 100644
index 000000000..b8a5e6b33
--- /dev/null
+++ b/tests/Support/ItemSearchFixtureTrait.php
@@ -0,0 +1,133 @@
+ null,
+ 'name' => 'Searchable Item ' . uniqid(),
+ 'category' => 'Test Category',
+ 'cost_price' => 1.00,
+ 'unit_price' => 5.00,
+ 'reorder_level' => 0,
+ 'item_number' => 'SEARCH-' . uniqid(),
+ 'allow_alt_description' => 0,
+ 'is_serialized' => 0,
+ 'item_type' => ITEM,
+ 'deleted' => 0,
+ ], $overrides);
+
+ $itemModel = model(Item::class);
+ $itemModel->save_value($itemData);
+
+ $itemId = (int) $itemData['item_id'];
+
+ $this->addInventoryRecord($itemId);
+
+ return $itemId;
+ }
+
+ protected function addInventoryRecord(int $itemId, int $locationId = 1): void
+ {
+ $inventoryModel = model(Inventory::class);
+ $inventoryModel->insert([
+ 'trans_items' => $itemId,
+ 'trans_user' => 1,
+ 'trans_comment' => 'Test fixture',
+ 'trans_inventory' => 0,
+ 'trans_location' => $locationId,
+ ]);
+ }
+
+ protected function ensureStockLocation(int $locationId): void
+ {
+ $db = db_connect();
+ $exists = $db->table('stock_locations')->where('location_id', $locationId)->get()->getRow();
+ if ($exists === null) {
+ $db->query(
+ 'INSERT INTO ' . $db->prefixTable('stock_locations') . ' (location_id, location_name, deleted) VALUES (?, ?, 0)',
+ [$locationId, 'Test Location ' . $locationId]
+ );
+ }
+ }
+
+ protected function addItemQuantity(int $itemId, int $locationId, float $quantity): void
+ {
+ $this->ensureStockLocation($locationId);
+
+ $itemQuantityModel = model(Item_quantity::class);
+ $itemQuantityModel->save_value(
+ [
+ 'item_id' => $itemId,
+ 'location_id' => $locationId,
+ 'quantity' => $quantity,
+ ],
+ $itemId,
+ $locationId
+ );
+ }
+
+ protected function defaultSearchFilters(array $overrides = []): array
+ {
+ return array_merge([
+ 'start_date' => '2000-01-01',
+ 'end_date' => '2100-01-01',
+ 'stock_location_id' => -1,
+ 'empty_upc' => false,
+ 'low_inventory' => false,
+ 'is_serialized' => false,
+ 'no_description' => false,
+ 'search_custom' => false,
+ 'is_deleted' => false,
+ 'temporary' => false,
+ 'definition_ids' => [],
+ ], $overrides);
+ }
+
+ protected function createAttributeDefinition(string $name, string $type = TEXT, int $flags = 1): int
+ {
+ $db = db_connect();
+ $db->table('attribute_definitions')->insert([
+ 'definition_name' => $name,
+ 'definition_type' => $type,
+ 'definition_flags' => $flags,
+ 'deleted' => 0,
+ ]);
+
+ return (int) $db->insertID();
+ }
+
+ protected function linkAttributeValue(int $itemId, int $definitionId, string $value): void
+ {
+ $db = db_connect();
+
+ // attribute_value is unique: reuse the existing attribute_id if this value already exists
+ $existing = $db->table('attribute_values')->select('attribute_id')->where('attribute_value', $value)->get()->getRow();
+ if ($existing !== null) {
+ $attributeId = (int) $existing->attribute_id;
+ } else {
+ $db->table('attribute_values')->insert(['attribute_value' => $value]);
+ $attributeId = (int) $db->insertID();
+ }
+
+ $db->table('attribute_links')->insert([
+ 'definition_id' => $definitionId,
+ 'attribute_id' => $attributeId,
+ 'item_id' => $itemId,
+ ]);
+ }
+
+ protected function linkTypedAttributeValue(int $itemId, int $definitionId, string $value, string $definitionType): void
+ {
+ $attributeModel = model(Attribute::class);
+ $attributeModel->saveAttributeValue($value, $definitionId, $itemId, false, $definitionType);
+ }
+}
diff --git a/tests/helpers/GetItemDataRowTest.php b/tests/helpers/GetItemDataRowTest.php
new file mode 100644
index 000000000..89ae14729
--- /dev/null
+++ b/tests/helpers/GetItemDataRowTest.php
@@ -0,0 +1,107 @@
+injectSettings();
+ }
+
+ protected function injectSettings(array $overrides = []): void
+ {
+ $config = new OSPOS();
+ $config->settings = array_merge([
+ 'multi_pack_enabled' => 0,
+ 'use_destination_based_tax' => 0,
+ 'number_locale' => 'en_US',
+ 'currency_decimals' => 2,
+ 'quantity_decimals' => 0,
+ 'thousands_separator' => 1,
+ 'currency_symbol' => '$',
+ ], $overrides);
+
+ Factories::injectMock('config', OSPOS::class, $config);
+ }
+
+ protected function makeItem(array $overrides = []): stdClass
+ {
+ $item = new stdClass();
+
+ $defaults = [
+ 'item_id' => 1,
+ 'item_number' => 'ITEM-001',
+ 'name' => 'Test Item',
+ 'category' => 'Test Category',
+ 'company_name' => 'Test Supplier',
+ 'cost_price' => 10.00,
+ 'unit_price' => 20.00,
+ 'quantity' => 5,
+ 'pic_filename' => null,
+ 'pack_name' => null,
+ 'tax_category_id' => null,
+ ];
+
+ foreach (array_merge($defaults, $overrides) as $key => $value) {
+ $item->$key = $value;
+ }
+
+ return $item;
+ }
+
+ public function testTaxPercentsPulledFromPassedMapNotQueried(): void
+ {
+ $item = $this->makeItem(['item_id' => 42]);
+
+ $columns = getItemDataRow($item, [], [42 => '20.00%']);
+
+ $this->assertEquals('20.00%', $columns['tax_percents']);
+ }
+
+ public function testTaxPercentsDefaultsToDashWhenItemIdMissingFromMap(): void
+ {
+ $item = $this->makeItem(['item_id' => 99]);
+
+ $columns = getItemDataRow($item, [], []);
+
+ $this->assertEquals('-', $columns['tax_percents']);
+ }
+
+ public function testDefinitionNamesPassedThroughToExpandAttributeValues(): void
+ {
+ $item = $this->makeItem(['item_id' => 7]);
+ $item->attribute_values = '3_Red';
+ $item->attribute_dtvalues = '';
+ $item->attribute_dvalues = '';
+
+ $definitionNames = [
+ 3 => ['name' => 'Color', 'type' => TEXT],
+ ];
+
+ $columns = getItemDataRow($item, $definitionNames, []);
+
+ $this->assertArrayHasKey(3, $columns);
+ $this->assertEquals('Red', $columns[3]);
+ }
+
+ public function testPackNameAppendedToItemName(): void
+ {
+ $this->injectSettings(['multi_pack_enabled' => 1]);
+
+ $item = $this->makeItem(['name' => 'Base Item', 'pack_name' => 'Pack of 6']);
+
+ $columns = getItemDataRow($item, [], []);
+
+ $this->assertEquals('Base Item' . NAME_SEPARATOR . 'Pack of 6', $columns['name']);
+ }
+}