mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-10-02 15:45:09 -04:00
feat(items): optimize search, attribute filtering, and sort for items view (#4652)
feat(items): optimize search, attribute filtering, and sort for items view (#4652) BREAKING CHANGE: none ## Search & Query Optimization - Split item search into two-phase query: Phase A resolves qualifying IDs, Phase B joins scoped display tables for better performance and readability - Sanitize `definition_ids` via `array_map` to prevent injection vulnerabilities - Introduce subquery for SUM aggregation to prevent over-counting across joins - Add validation requiring both start and end dates before applying date range filter ## Attribute Search (fixes #2919, #2722) - Add `SHOW_IN_SEARCH` flag (value 8) to Attribute model to separate searchability from table visibility - Add `parse_attribute_search()` to parse syntax like `color:blue AND size:large` - Add `applyNamedAttributeSearch()` supporting decimal and date types with locale-aware parsing - Support AND/OR logic for multi-attribute queries ## Sorting - Add `get_attribute_sort_definition_id()` to detect attribute column sorting - Join attribute tables dynamically when sorting by attribute columns - Use `MAX()` for consistent results when sorting by attribute values - Replace static sort column list with dynamic headers via `itemSortColumns()` - Add `sanitizeSortColumnAttribute()` to validate attribute definition IDs as sort columns ## Tax & Data Row - Streamline tax computation in `getItemDataRow()` ## Low Inventory Filter - Require valid `stock_location_id` before applying low inventory filter - Add conditional logic to sort by sum of quantities across all locations when `stock_location_id` is invalid ## Localization - Add `show_in_search` / `show_in_search_visibility` strings to all language files - Translated: de-DE, es-ES, fr, it; English placeholder for remaining locales - Unify single-quote style across all attribute language files ## Refactoring & Style - Adopt camelCase naming throughout (variables, helpers, methods) - Replace `sanitizeSortColumnAttribute` with reusable `sanitizeSortColumn` from `Secure_Controller` - Simplify column key extraction using `array_key_first` - Apply PSR-12 formatting ## Tests - Add tests for tax computation, quantity aggregation (single- and multi-location), named attribute search, free-text parsing, and date/decimal type handling - Add `ensureStockLocation` helper to auto-create missing stock locations in tests - Refactor tests to handle config cache issues Co-authored-by: Ollama <ollama@steganos.dev>
This commit is contained in:
1 parent
9e06a231a7
commit
1b8ee2e3c1
57 files changed
+2765
-1517
No files matched your search
@@ -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`.
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
+77
-17
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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 .= '<a class="rollover" href="' . base_url(implode('/', array_map('rawurlencode', explode('/', $image_path)))) . '"><img alt="Image thumbnail" src="' . site_url('items/PicThumb/' . rawurlencode(pathinfo($images[0], PATHINFO_BASENAME))) . '"></a>';
|
||||
$imagePath = ltrim($images[0], './');
|
||||
$image .= '<a class="rollover" href="' . base_url(implode('/', array_map('rawurlencode', explode('/', $imagePath)))) . '"><img alt="Image thumbnail" src="' . site_url('items/PicThumb/' . rawurlencode(pathinfo($images[0], PATHINFO_BASENAME))) . '"></a>';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "البيع",
|
||||
"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' => 'تحديث الميزات',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "البيع",
|
||||
"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' => 'تحديث الميزات',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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ə',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "",
|
||||
"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' => '',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "فرۆشتن",
|
||||
"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' => 'تایبەتمەندی نوێ بکەرەوە',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "",
|
||||
"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' => '',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "",
|
||||
"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' => '',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "",
|
||||
"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' => '',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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 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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "حراجی",
|
||||
"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' => 'به روز کردن ویژگی',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "מכירות",
|
||||
"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' => 'עדכן מאפיין',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "",
|
||||
"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' => '',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "",
|
||||
"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' => '',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "",
|
||||
"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' => '',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"attribute_value_invalid_chars" => "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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "Продажи",
|
||||
"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' => 'Обновить атрибут',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"update" => "Sasisha Sifa",
|
||||
];
|
||||
'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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"update" => "Sasisha Sifa",
|
||||
];
|
||||
'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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "การขาย",
|
||||
"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' => 'ปรับปรุงแอตทริบิวต์',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "Продажі",
|
||||
"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' => 'Оновити атрибут',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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",
|
||||
"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',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "销售",
|
||||
"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' => '更新属性',
|
||||
];
|
||||
@@ -1,34 +1,36 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"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" => "銷售",
|
||||
"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' => '更新屬性',
|
||||
];
|
||||
@@ -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);
|
||||
|
||||
+378
-102
@@ -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<int, array{name: string, type: string}> $definitionInfo definition_id => info, from getDefinitionsByFlags(..., true)
|
||||
* @param array<string, string[]> $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<int, array{name: string, type: string}> $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();
|
||||
|
||||
@@ -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
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,468 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Models;
|
||||
|
||||
use CodeIgniter\Test\CIUnitTestCase;
|
||||
use CodeIgniter\Test\DatabaseTestTrait;
|
||||
use App\Models\Item;
|
||||
use Config\Database;
|
||||
use Config\OSPOS;
|
||||
use Tests\Support\ItemSearchFixtureTrait;
|
||||
|
||||
class ItemSearchTest extends CIUnitTestCase
|
||||
{
|
||||
use DatabaseTestTrait;
|
||||
use ItemSearchFixtureTrait;
|
||||
|
||||
protected $migrate = true;
|
||||
protected $migrateOnce = true;
|
||||
protected $seed = '';
|
||||
protected $seedOnce = true;
|
||||
protected $refresh = true;
|
||||
protected $namespace = null;
|
||||
|
||||
protected $item;
|
||||
|
||||
public static function setUpBeforeClass(): void
|
||||
{
|
||||
$seeder = Database::seeder('tests');
|
||||
$seeder->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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Models;
|
||||
|
||||
use CodeIgniter\Test\CIUnitTestCase;
|
||||
use CodeIgniter\Test\DatabaseTestTrait;
|
||||
use App\Models\Item_taxes;
|
||||
use Config\Database;
|
||||
use Tests\Support\ItemSearchFixtureTrait;
|
||||
|
||||
class ItemTaxesMultipleTest extends CIUnitTestCase
|
||||
{
|
||||
use DatabaseTestTrait;
|
||||
use ItemSearchFixtureTrait;
|
||||
|
||||
protected $migrate = true;
|
||||
protected $migrateOnce = true;
|
||||
protected $seed = '';
|
||||
protected $seedOnce = true;
|
||||
protected $refresh = true;
|
||||
protected $namespace = null;
|
||||
|
||||
protected $item_taxes;
|
||||
|
||||
public static function setUpBeforeClass(): void
|
||||
{
|
||||
$seeder = Database::seeder('tests');
|
||||
$seeder->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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Support;
|
||||
|
||||
use App\Models\Attribute;
|
||||
use App\Models\Inventory;
|
||||
use App\Models\Item;
|
||||
use App\Models\Item_quantity;
|
||||
|
||||
trait ItemSearchFixtureTrait
|
||||
{
|
||||
protected function createSearchableItem(array $overrides = []): int
|
||||
{
|
||||
$itemData = array_merge([
|
||||
'item_id' => 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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Helpers;
|
||||
|
||||
use CodeIgniter\Config\Factories;
|
||||
use CodeIgniter\Test\CIUnitTestCase;
|
||||
use Config\OSPOS;
|
||||
use stdClass;
|
||||
|
||||
class GetItemDataRowTest extends CIUnitTestCase
|
||||
{
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
helper('tabular');
|
||||
|
||||
$this->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']);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user