Merge remote-tracking branch 'OpensourcePOS/master' into plugin-system-fresh

Resolve language-file conflicts by taking master's English-removal
cleanup across non-English locales, while stripping the MailChimp
keys master reintroduced (already moved to MailchimpPlugin on this
branch) and reapplying this branch's plugins/integrations rename and
new Module.php plugins keys where master lacked them.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
objecttothisandClaude Sonnet 5 committed 2026-11-06 13:43:47 +04:00
commit 3b36c20f68
843 files changed
+11667 -11155

No files matched your search

-2
View File
@@ -35,8 +35,6 @@ git-svn-diff.py
branding/
# Build configs (not needed at runtime)
composer.json
composer.lock
package.json
package-lock.json
gulpfile.js
+1
View File
@@ -81,6 +81,7 @@ body:
label: 🔧 PHP Version
description: What version of PHP are you running?
options:
- PHP 8.5
- PHP 8.4
- PHP 8.3
- PHP 8.2
+2 -2
View File
@@ -50,12 +50,12 @@ The `GITHUB_TOKEN` is automatically provided by GitHub Actions.
This repository also has these workflows:
- `.github/workflows/main.yml` - PHP linting with PHP-CS-Fixer
- `.github/workflows/phpunit.yml` - PHPUnit tests (runs on all PHP versions 8.1-8.4)
- `.github/workflows/phpunit.yml` - PHPUnit tests (runs on all PHP versions 8.2-8.5)
- `.github/workflows/php-linter.yml` - PHP linting
## Testing
PHPUnit tests are run separately via `.github/workflows/phpunit.yml` on every push and pull request, testing against PHP 8.1, 8.2, 8.3, and 8.4.
PHPUnit tests are run separately via `.github/workflows/phpunit.yml` on every push and pull request, testing against PHP 8.2, 8.3, 8.4, and 8.5.
To test the build workflow:
1. Add the required secrets
+1 -10
View File
@@ -40,16 +40,6 @@ jobs:
extensions: intl, mbstring, mysqli, gd, bcmath, zip
coverage: none
- name: Verify PHP patch level
run: |
MIN="8.2.35"
ACTUAL=$(php -r 'echo PHP_VERSION;')
if [ "$(printf '%s\n' "$MIN" "$ACTUAL" | sort -V | head -1)" != "$MIN" ]; then
echo "::error::PHP $ACTUAL is below patched minimum $MIN (CVE-2026-109618 / CVE-2026-109619)"
exit 1
fi
echo "PHP $ACTUAL meets minimum $MIN"
- name: Setup Node.js
uses: actions/setup-node@v4
with:
@@ -203,6 +193,7 @@ jobs:
context: .
target: ospos
platforms: linux/amd64,linux/arm64
pull: true
push: true
tags: ${{ steps.tags.outputs.tags }}
+1 -16
View File
@@ -31,6 +31,7 @@ jobs:
- '8.2'
- '8.3'
- '8.4'
- '8.5'
steps:
- name: Checkout
@@ -43,22 +44,6 @@ jobs:
extensions: tokenizer
coverage: none
- name: Verify PHP patch level
run: |
ACTUAL=$(php -r 'echo PHP_VERSION;')
case "${ACTUAL%.*}" in
8.2) MIN="8.2.35" ;;
8.3) MIN="8.3.36" ;;
8.4) MIN="8.4.27" ;;
8.5) MIN="8.5.12" ;;
*) echo "::error::Unsupported PHP branch: $ACTUAL"; exit 1 ;;
esac
if [ "$(printf '%s\n' "$MIN" "$ACTUAL" | sort -V | head -1)" != "$MIN" ]; then
echo "::error::PHP $ACTUAL is below patched minimum $MIN (CVE-2026-109618 / CVE-2026-109619)"
exit 1
fi
echo "PHP $ACTUAL meets minimum $MIN"
- name: Get composer cache directory
run: echo "COMPOSER_CACHE_FILES_DIR=$(composer config cache-files-dir)" >> $GITHUB_ENV
+30 -14
View File
@@ -2,25 +2,41 @@ name: PHP Linting
on: [push, pull_request]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
phplint:
name: PHP Lint ${{ matrix.php-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php-version:
- '8.2'
- '8.3'
- '8.4'
- '8.5'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
fetch-depth: 0
- name: PHP Lint 8.2
uses: dbfx/github-phplint/8.2@master
with:
folder-to-exclude: "! -path \"./vendor/*\" ! -path \"./folder/excluded/*\""
- name: PHP Lint 8.3
uses: dbfx/github-phplint/8.3@master
with:
folder-to-exclude: "! -path \"./vendor/*\" ! -path \"./folder/excluded/*\""
- name: PHP Lint 8.4
uses: dbfx/github-phplint/8.4@master
with:
folder-to-exclude: "! -path \"./vendor/*\" ! -path \"./folder/excluded/*\""
php-version: ${{ matrix.php-version }}
coverage: none
- name: Run PHP Lint
run: |
if [ "${{ matrix.php-version }}" = "8.2" ]; then
find . -type f -name "*.php" ! -path "./vendor/*" ! -path "./node_modules/*" -exec sh -c 'for file do php -l "$file" || exit 1; done' sh {} +
else
find . -type f -name "*.php" ! -path "./vendor/*" ! -path "./node_modules/*" -exec php -l {} +
fi
php -l spark
+3 -37
View File
@@ -28,7 +28,7 @@ permissions:
jobs:
test:
name: PHP ${{ matrix.php-version }} / ${{ matrix.db-image }} Tests
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
strategy:
fail-fast: false
@@ -37,6 +37,7 @@ jobs:
- '8.2'
- '8.3'
- '8.4'
- '8.5'
db-image:
- 'mariadb:10.5'
- 'mariadb:10.6'
@@ -56,41 +57,6 @@ jobs:
extensions: intl, mbstring, mysqli
coverage: none
- name: Verify PHP patch level
run: |
ACTUAL=$(php -r 'echo PHP_VERSION;')
case "${ACTUAL%.*}" in
8.2) MIN="8.2.35" ;;
8.3) MIN="8.3.36" ;;
8.4) MIN="8.4.27" ;;
8.5) MIN="8.5.12" ;;
*) echo "::error::Unsupported PHP branch: $ACTUAL"; exit 1 ;;
esac
if [ "$(printf '%s\n' "$MIN" "$ACTUAL" | sort -V | head -1)" != "$MIN" ]; then
echo "::error::PHP $ACTUAL is below patched minimum $MIN (CVE-2026-109618 / CVE-2026-109619)"
exit 1
fi
echo "PHP $ACTUAL meets minimum $MIN"
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Get npm cache directory
run: echo "NPM_CACHE_DIR=$(npm config get cache)" >> $GITHUB_ENV
- name: Cache npm dependencies
uses: actions/cache@v3
with:
path: ${{ env.NPM_CACHE_DIR }}
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install npm dependencies
run: npm install
- name: Start database
run: |
docker run -d --name mysql \
@@ -124,7 +90,7 @@ jobs:
run: echo "COMPOSER_CACHE_FILES_DIR=$(composer config cache-files-dir)" >> $GITHUB_ENV
- name: Cache dependencies
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ${{ env.COMPOSER_CACHE_FILES_DIR }}
key: ${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }}
+28 -10
View File
@@ -212,16 +212,34 @@ No changes to `composer.json` are needed — `App\Plugins\{Name}\Tests\*` resolv
## Localization
- When adding new keys to language files, add the key to all `app/Language/*/` variants
- **New keys must be inserted in alphabetical order** within the language array
- Non-English files must use an empty string (`''`) as the value when no translation is provided — CodeIgniter automatically falls back to the default (`en`) language. This applies only when a translation genuinely isn't available yet.
- **When explicitly asked to translate a phrase for a non-English language file, always provide the actual translation** — never leave the value as an empty string, and never leave source English text in a non-English language file
- Never copy English text from a neighboring key as a value for a non-English language file, even if that neighboring key is already untranslated — evaluate each key independently
- Only `app/Language/en/` and `app/Language/en-GB/` should contain English strings
- When translating a string containing placeholders (e.g. `{filePath}`, `{reason}`) or literal filenames/keys (e.g. `throttle.key`, `.env`), keep that placeholder or filename text unchanged and untranslated — move it to whatever position is grammatically correct in the translated sentence
- Plugin language files (`app/Plugins/*/Language/`) follow the same localization rules as `app/Language/`
- Use `'` to encapsulate key and string values. If the value contains `'` then it should be escaped as `\'`
- Align the `=>` of a newly inserted key with the `=>` column already used by the rest of the file, if that file pads keys to a fixed column (not all do — some files have no padding at all). If the new key is longer than the widest existing key and would push the alignment column further right, reformat the whole file to the new wider column rather than leaving only the new line at a different width
- **Key Parity**: All catalogs must maintain the exact same keys as `app/Language/en/` (no extra or missing keys). Adding a key requires adding it to `en/` with the English source text, and to all other `app/Language/*/` files (using `''` if untranslated, including `en-GB`).
- **Alphabetical Ordering**: All catalogs must be sorted alphabetically by key, **except `Calendar.php`** (ordered chronologically by day and month sequences).
- **Direct Fallback to `en`**: Non-English files use `''` for untranslated strings to trigger dynamic fallback to `en` (`nl-NL > en`, `nl-BE > en`, `hr > en`, `en-GB > en`).
- **British English (`en-GB`)**: Only include strings differing in UK spelling/vocabulary (*Cheque*, *Centre*, *Post Code*). Keep identical strings as `''` to inherit updates from `en`.
- **Locale Naming (BCP 47)**:
- **General languages**: Use bare ISO language codes (`hr` not `hr-HR`, `fr`, `it`, `da`, `ckb`). Do not add redundant country tags when a language has no regional distinction.
- **Regional / dialect variants**: Use `{lang}-{REGION}` when targeting a specific regional dialect (`nl-NL` & `nl-BE`, `de-DE` & `de-CH`, `es-ES` & `es-MX`, `en-GB`, `pt-BR`). Chinese uses script subtags (`zh-Hans`, `zh-Hant`).
- **Locale Registration**: Register new locales in both `app/Config/App.php` (`$supportedLocales`) and `app/Helpers/locale_helper.php` (`get_languages()`, format: `'code:name' => 'English Name'`).
- **Calendar Convention (`may` vs `mayl`)**: `may` is the 3-letter abbreviation; `mayl` is the full month name (*May* long). Datepickers and full-month arrays must reference `lang('Calendar.mayl')`, while short-month arrays reference `lang('Calendar.may')`.
- **Translation Integrity**:
- When deprecating or renaming keys, always migrate existing non-English human translations to the new key/module. If a legacy translation references the wrong entity (e.g. 'item' in Attributes), reset it to `''`.
- When an English string in `app/Language/en/` is changed or rewritten, reset the corresponding non-English strings in `app/Language/*/` to `''` so they dynamically fall back to the updated English text and signal to translators that a new translation is required.
- **Placeholders & ICU Formatting**:
- Interpolate user-facing strings with `lang()` and **named** placeholders (e.g. `{company}`) rather than string concatenation or positional placeholders (`{0}`).
- Translations must preserve all placeholders (`{0}`, `{name}`) and literal keys/filenames untranslated (reordering within the sentence to fit natural grammar is encouraged); never omit them.
- Placeholder-bearing translations use ICU `MessageFormatter`: double literal braces (`{{`/`}}`) and apostrophes (`''`) to avoid syntax warnings.
- **Punctuation & Wrappers**:
- No leading or trailing whitespace in strings; never rely on trailing spaces for concatenation.
- If an English string is enclosed in brackets `[...]` or parentheses `(...)`, translations must preserve that enclosure (or localized fullwidth equivalents like `【...】` / `(...)`).
- Watch for duplicate punctuation typos (e.g. `::` or `..` instead of ellipsis `...`).
- Indicator flags (`taxed_ind`, `nontaxed_ind`) and report badges (`Reports.code_*`) must be kept compact (single characters or short abbreviations, never full sentences or punctuation placeholders like `'-'`, `'.'`). Untranslated indicators must remain `''` to inherit from `en`.
- **Language File Syntax & Formatting**:
- Only `app/Language/en/` and `app/Language/en-GB/` may contain English prose. Universal brand names and acronyms (`ID`, `SMS`, `POS`, `Mailchimp`, `CSV`) are acceptable in non-English files, but never copy English sentences or phrases; leave as `''` to inherit from `en`.
- `Datepicker.weekstart` is a numeric calendar setting (`0` = Sunday, `1` = Monday, `6` = Saturday), not English text — never wipe it to `''`.
- Enclose keys and strings in `'` (escape internal quotes as `\'`). Array keys must be unique.
- Align `=>` to match the file's standard column padding (e.g. column 40). Avoid unnecessarily re-padding entire catalogs for a single long key.
- Plugin language files (`app/Plugins/*/Language/`) follow the same rules.
- **Validation**: Run `vendor/bin/phpunit tests/LanguageFilesTest.php` to verify syntax, key parity, sorting, duplicate rejection, and locale registration.
## Security
+1 -1
View File
@@ -69,7 +69,7 @@ All notable changes to this project will be documented in this file.
- refactor(gulp): modernize build pipeline and streamline dependencies (#4759) by @BudsieBuds
- refactor(tests): normalize test namespaces to PSR-4 and clean up composer dependencies (#4758) by @BudsieBuds
- fix(ci): trigger PHP linting workflow on pull requests (#4764) by @BudsieBuds
- fix(security): pin patched PHP 8.2.35+ for CVE-2026-109618/109619 (#4767) by @jekkos
- fix(security): pin patched PHP 8.2.35+ (#4767) by @jekkos
## [3.4.2] - 2026-09-30
- Fix writable folder permission check (#4270) (#4273) by @jekkos
+12 -4
View File
@@ -1,4 +1,4 @@
FROM php:8.2.35-apache AS ospos
FROM php:8.2-apache AS ospos
LABEL maintainer="jekkos"
RUN apt-get update && apt-get install -y --no-install-recommends \
@@ -9,11 +9,19 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
&& rm -rf /var/lib/apt/lists/* \
&& a2enmod rewrite
RUN echo "date.timezone = \"\${PHP_TIMEZONE}\"" > /usr/local/etc/php/conf.d/timezone.ini
RUN echo "date.timezone = \"\${PHP_TIMEZONE}\"" > /usr/local/etc/php/conf.d/timezone.ini \
&& echo "expose_php = Off" > /usr/local/etc/php/conf.d/security.ini
WORKDIR /app
COPY --chown=www-data:www-data . /app
RUN chmod 750 /app/writable/logs /app/writable/uploads /app/writable/cache /app/public/uploads /app/public/uploads/item_pics \
COPY . /app
RUN --mount=type=bind,from=composer:2,source=/usr/bin/composer,target=/usr/local/bin/composer \
composer --no-interaction --no-plugins --no-scripts check-platform-reqs --lock --no-dev
RUN chown -R root:www-data /app \
&& chmod -R go-w,o= /app \
&& chown -R www-data:www-data /app/writable /app/public/uploads \
&& chmod 750 /app/writable/logs /app/writable/uploads /app/writable/cache /app/public/uploads /app/public/uploads/item_pics \
&& chmod 640 /app/writable/uploads/importCustomers.csv \
&& ln -s /app/*[^public] /var/www \
&& rm -rf /var/www/html \
+4 -1
View File
@@ -175,11 +175,12 @@ class App extends BaseConfig
'fa',
'fr',
'he',
'hr-HR',
'hr',
'hu',
'hy',
'id',
'it',
'ka',
'km',
'lo',
'ml',
@@ -191,6 +192,8 @@ class App extends BaseConfig
'ro',
'ru',
'sv',
'sw-KE',
'sw-TZ',
'ta',
'th',
'tl',
+1 -1
View File
@@ -127,7 +127,7 @@ class Database extends Config
case 'testing':
$this->defaultGroup = 'tests';
break;
case 'development';
case 'development':
$this->defaultGroup = 'development';
break;
}
+1 -1
View File
@@ -15,7 +15,7 @@ use Config\Database;
class OSPOS extends BaseConfig
{
public array $settings = [];
public string $commit_sha1 = 'dev'; // TODO: Travis scripts need to be updated to replace this with the commit hash on build
public string $commit_sha1 = 'dev';
private CacheInterface $cache;
public function __construct()
-2
View File
@@ -86,8 +86,6 @@ class OSPOSRules
$result = curl_exec($ch);
curl_close($ch);
$status = json_decode($result, true);
if (!empty($status['success'])) {
+275 -166
View File
@@ -2,6 +2,7 @@
namespace App\Controllers;
use App\TransferObjects\Cashups\CashupAmounts;
use App\Models\Cashup;
use App\Models\Expense;
use App\Models\Reports\Summary_payments;
@@ -53,200 +54,300 @@ class Cashups extends Secure_Controller
$sort = $this->sanitizeSortColumn(cashup_headers(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'cashup_id');
$order = $this->request->getGet('order', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$filters = [
'start_date' => $this->request->getGet('start_date', FILTER_SANITIZE_FULL_SPECIAL_CHARS), // TODO: Is this the best way to filter dates
'start_date' => $this->request->getGet('start_date', FILTER_SANITIZE_FULL_SPECIAL_CHARS),
'end_date' => $this->request->getGet('end_date', FILTER_SANITIZE_FULL_SPECIAL_CHARS),
'is_deleted' => false
];
// 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);
$cash_ups = $this->cashup->search($search, $filters, $limit, $offset, $sort, $order);
$total_rows = $this->cashup->get_found_rows($search, $filters);
$data_rows = [];
foreach ($cash_ups->getResult() as $cash_up) {
$data_rows[] = get_cash_up_data_row($cash_up);
$requestFilters = array_fill_keys($this->request->getGet('filters', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? [], true);
$filters = array_merge($filters, $requestFilters);
$cashUps = $this->cashup->search($search, $filters, $limit, $offset, $sort, $order);
$totalRows = $this->cashup->get_found_rows($search, $filters);
$dataRows = [];
foreach ($cashUps->getResult() as $cashUp) {
$dataRows[] = get_cash_up_data_row($cashUp);
}
return $this->response->setJSON(['total' => $total_rows, 'rows' => $data_rows]);
return $this->response->setJSON(['total' => $totalRows, 'rows' => $dataRows]);
}
/**
* @param int $cashup_id
* @param int $cashupId
* @return string
*/
public function getView(int $cashup_id = NEW_ENTRY): string
public function getView(int $cashupId = NEW_ENTRY): string
{
$data = [];
$data['employees'] = $this->buildEmployeeLookup();
$data['employees'] = [];
foreach ($this->employee->get_all()->getResult() as $employee) {
foreach (get_object_vars($employee) as $property => $value) {
$employee->$property = $value;
}
$data['employees'][$employee->person_id] = $employee->first_name . ' ' . $employee->last_name;
}
$cash_ups_info = $this->cashup->get_info($cashup_id);
foreach (get_object_vars($cash_ups_info) as $property => $value) {
$cash_ups_info->$property = $value;
}
$cashUpsInfo = $this->normalizeCashupInfo($cashupId);
// Open cashup
if ($cash_ups_info->cashup_id == NEW_ENTRY) {
$cash_ups_info->open_date = date('Y-m-d H:i:s');
$cash_ups_info->close_date = $cash_ups_info->open_date;
$cash_ups_info->open_employee_id = $this->employee->get_logged_in_employee_info()->person_id;
$cash_ups_info->close_employee_id = $this->employee->get_logged_in_employee_info()->person_id;
if ($cashUpsInfo->cashup_id == NEW_ENTRY) {
$this->initializeNewCashup($cashUpsInfo);
}
// If all the amounts are null or 0 that means it's a close cashup
elseif (
floatval($cash_ups_info->closed_amount_cash) == 0
&& floatval($cash_ups_info->closed_amount_due) == 0
&& floatval($cash_ups_info->closed_amount_card) == 0
&& floatval($cash_ups_info->closed_amount_check) == 0
) {
// Set the close date and time to the actual as this is a close session
$cash_ups_info->close_date = date('Y-m-d H:i:s');
// The closed amount starts with the open amount -/+ any trasferred amount
$cash_ups_info->closed_amount_cash = $cash_ups_info->open_amount_cash + $cash_ups_info->transfer_amount_cash;
// If it's date mode only and not date & time truncate the open and end date to date only
if (empty($this->config['date_or_time_format'])) {
if ($cash_ups_info->open_date != null) {
$start_date = substr($cash_ups_info->open_date, 0, 10);
} else {
$start_date = null;
}
if ($cash_ups_info->close_date != null) {
$end_date = substr($cash_ups_info->close_date, 0, 10);
} else {
$end_date = null;
}
// Search for all the payments given the time range
$inputs = [
'start_date' => $start_date,
'end_date' => $end_date,
'sale_type' => 'complete',
'location_id' => 'all'
];
} else {
// Search for all the payments given the time range
$inputs = [
'start_date' => $cash_ups_info->open_date,
'end_date' => $cash_ups_info->close_date,
'sale_type' => 'complete',
'location_id' => 'all'
];
}
// Get all the transactions payment summaries
$reports_data = $this->summary_payments->getData($inputs);
foreach ($reports_data as $row) {
if ($row['trans_group'] == lang('Reports.trans_payments')) {
if ($row['trans_type'] == lang('Sales.cash')) {
$cash_ups_info->closed_amount_cash += $row['trans_amount'];
} elseif ($row['trans_type'] == lang('Sales.due')) {
$cash_ups_info->closed_amount_due += $row['trans_amount'];
} elseif (
$row['trans_type'] == lang('Sales.debit') ||
$row['trans_type'] == lang('Sales.credit')
) {
$cash_ups_info->closed_amount_card += $row['trans_amount'];
} elseif ($row['trans_type'] == lang('Sales.check')) {
$cash_ups_info->closed_amount_check += $row['trans_amount'];
}
}
}
// Lookup expenses paid in cash
$filters = [
'only_cash' => true,
'only_due' => false,
'only_check' => false,
'only_credit' => false,
'only_debit' => false,
'is_deleted' => false
];
$payments = $this->expense->get_payments_summary('', array_merge($inputs, $filters));
foreach ($payments as $row) {
$cash_ups_info->closed_amount_cash -= $row['amount'];
}
$cash_ups_info->closed_amount_total = $this->_calculate_total($cash_ups_info->open_amount_cash, $cash_ups_info->transfer_amount_cash, $cash_ups_info->closed_amount_cash, $cash_ups_info->closed_amount_due, $cash_ups_info->closed_amount_card, $cash_ups_info->closed_amount_check);
elseif ($this->isPendingClose($cashUpsInfo)) {
$this->closeCashup($cashUpsInfo);
}
$data['cash_ups_info'] = $cash_ups_info;
$data['cash_ups_info'] = $cashUpsInfo;
return view("cashups/form", $data);
}
/**
* @param int $row_id
* @return ResponseInterface
* @return array
*/
public function getRow(int $row_id): ResponseInterface
private function buildEmployeeLookup(): array
{
$cash_ups_info = $this->cashup->get_info($row_id);
$data_row = get_cash_up_data_row($cash_ups_info);
$employees = [];
foreach ($this->employee->get_all()->getResult() as $employee) {
foreach (get_object_vars($employee) as $property => $value) {
$employee->$property = $value;
}
return $this->response->setJSON($data_row);
$employees[$employee->person_id] = $employee->first_name . ' ' . $employee->last_name;
}
return $employees;
}
/**
* @param int $cashup_id
* @return ResponseInterface
* @param int $cashupId
* @return object
*/
public function postSave(int $cashup_id = NEW_ENTRY): ResponseInterface
private function normalizeCashupInfo(int $cashupId): object
{
$open_date = $this->request->getPost('open_date');
$open_date_formatter = date_create_from_format($this->config['dateformat'] . ' ' . $this->config['timeformat'], $open_date);
$cashUpsInfo = $this->cashup->get_info($cashupId);
$close_date = $this->request->getPost('close_date');
$close_date_formatter = date_create_from_format($this->config['dateformat'] . ' ' . $this->config['timeformat'], $close_date);
foreach (get_object_vars($cashUpsInfo) as $property => $value) {
$cashUpsInfo->$property = $value;
}
$open_amount_cash = parse_decimals($this->request->getPost('open_amount_cash'));
$transfer_amount_cash = parse_decimals($this->request->getPost('transfer_amount_cash'));
$closed_amount_cash = parse_decimals($this->request->getPost('closed_amount_cash'));
$closed_amount_due = parse_decimals($this->request->getPost('closed_amount_due'));
$closed_amount_card = parse_decimals($this->request->getPost('closed_amount_card'));
$closed_amount_check = parse_decimals($this->request->getPost('closed_amount_check'));
return $cashUpsInfo;
}
$logged_in_employee = $this->employee->get_logged_in_employee_info();
/**
* @param object $cashUpsInfo
* @return void
*/
private function initializeNewCashup(object $cashUpsInfo): void
{
$cashUpsInfo->open_date = date('Y-m-d H:i:s');
$cashUpsInfo->close_date = $cashUpsInfo->open_date;
$cashUpsInfo->open_employee_id = $this->employee->get_logged_in_employee_info()->person_id;
$cashUpsInfo->close_employee_id = $this->employee->get_logged_in_employee_info()->person_id;
}
$cash_up_data = [
'open_date' => $open_date_formatter->format('Y-m-d H:i:s'),
'close_date' => $close_date_formatter->format('Y-m-d H:i:s'),
'open_amount_cash' => $open_amount_cash,
'transfer_amount_cash' => $transfer_amount_cash,
'closed_amount_cash' => $closed_amount_cash,
'closed_amount_due' => $closed_amount_due,
'closed_amount_card' => $closed_amount_card,
'closed_amount_check' => $closed_amount_check,
'closed_amount_total' => $this->_calculate_total($open_amount_cash, $transfer_amount_cash, $closed_amount_due, $closed_amount_cash, $closed_amount_card, $closed_amount_check),
'note' => $this->request->getPost('note') != null,
'description' => $this->request->getPost('description', FILTER_SANITIZE_FULL_SPECIAL_CHARS),
'open_employee_id' => $logged_in_employee->person_id,
'close_employee_id' => $logged_in_employee->person_id,
'deleted' => $this->request->getPost('deleted') != null
/**
* @param object $cashUpsInfo
* @return bool
*/
private function isPendingClose(object $cashUpsInfo): bool
{
return floatval($cashUpsInfo->closed_amount_cash) == 0
&& floatval($cashUpsInfo->closed_amount_due) == 0
&& floatval($cashUpsInfo->closed_amount_card) == 0
&& floatval($cashUpsInfo->closed_amount_check) == 0;
}
/**
* @param object $cashUpsInfo
* @return void
*/
private function closeCashup(object $cashUpsInfo): void
{
// Set the close date and time to the actual as this is a close session
$cashUpsInfo->close_date = date('Y-m-d H:i:s');
// The closed amount starts with the open amount -/+ any transferred amount
$cashUpsInfo->closed_amount_cash = $cashUpsInfo->open_amount_cash + $cashUpsInfo->transfer_amount_cash;
$inputs = $this->buildReportDateRangeInputs($cashUpsInfo);
// Get all the transactions payment summaries
$reportsData = $this->summary_payments->getData($inputs);
$this->applyPaymentTotals($cashUpsInfo, $reportsData);
$this->subtractCashExpenses($cashUpsInfo, $inputs);
$cashUpsInfo->closed_amount_total = $this->calculateTotal(new CashupAmounts(
$cashUpsInfo->open_amount_cash,
$cashUpsInfo->transfer_amount_cash,
$cashUpsInfo->closed_amount_cash,
$cashUpsInfo->closed_amount_due,
$cashUpsInfo->closed_amount_card,
$cashUpsInfo->closed_amount_check
));
}
/**
* @param object $cashUpsInfo
* @return array
*/
private function buildReportDateRangeInputs(object $cashUpsInfo): array
{
// If it's date mode only and not date & time, truncate the open and end date to date only
if (empty($this->config['date_or_time_format'])) {
if ($cashUpsInfo->open_date != null) {
$startDate = substr($cashUpsInfo->open_date, 0, 10);
} else {
$startDate = null;
}
if ($cashUpsInfo->close_date != null) {
$endDate = substr($cashUpsInfo->close_date, 0, 10);
} else {
$endDate = null;
}
} else {
$startDate = $cashUpsInfo->open_date;
$endDate = $cashUpsInfo->close_date;
}
// Search for all the payments given the time range
return [
'start_date' => $startDate,
'end_date' => $endDate,
'sale_type' => 'complete',
'location_id' => 'all'
];
}
/**
* @param object $cashUpsInfo
* @param array $reportsData
* @return void
*/
private function applyPaymentTotals(object $cashUpsInfo, array $reportsData): void
{
foreach ($reportsData as $row) {
if ($row['trans_group'] == lang('Reports.trans_payments')) {
if ($row['trans_type'] == lang('Sales.cash')) {
$cashUpsInfo->closed_amount_cash += $row['trans_amount'];
} elseif ($row['trans_type'] == lang('Sales.due')) {
$cashUpsInfo->closed_amount_due += $row['trans_amount'];
} elseif (
$row['trans_type'] == lang('Sales.debit') ||
$row['trans_type'] == lang('Sales.credit')
) {
$cashUpsInfo->closed_amount_card += $row['trans_amount'];
} elseif ($row['trans_type'] == lang('Sales.check')) {
$cashUpsInfo->closed_amount_check += $row['trans_amount'];
}
}
}
}
/**
* @param object $cashUpsInfo
* @param array $inputs
* @return void
*/
private function subtractCashExpenses(object $cashUpsInfo, array $inputs): void
{
// Lookup expenses paid in cash
$filters = [
'only_cash' => true,
'only_due' => false,
'only_check' => false,
'only_credit' => false,
'only_debit' => false,
'is_deleted' => false
];
if ($this->cashup->save_value($cash_up_data, $cashup_id)) {
// New cashup_id
if ($cashup_id == NEW_ENTRY) {
return $this->response->setJSON(['success' => true, 'message' => lang('Cashups.successful_adding'), 'id' => $cash_up_data['cashup_id']]);
} else { // Existing Cashup
return $this->response->setJSON(['success' => true, 'message' => lang('Cashups.successful_updating'), 'id' => $cashup_id]);
}
} else { // Failure
$payments = $this->expense->get_payments_summary('', array_merge($inputs, $filters));
foreach ($payments as $row) {
$cashUpsInfo->closed_amount_cash -= $row['amount'];
}
}
/**
* @param int $rowId
* @return ResponseInterface
*/
public function getRow(int $rowId): ResponseInterface
{
$cashUpsInfo = $this->cashup->get_info($rowId);
$dataRow = get_cash_up_data_row($cashUpsInfo);
return $this->response->setJSON($dataRow);
}
/**
* @param int $cashupId
* @return ResponseInterface
*/
public function postSave(int $cashupId = NEW_ENTRY): ResponseInterface
{
$openDate = $this->parseCashupDate($this->request->getPost('open_date'));
$closeDate = $this->parseCashupDate($this->request->getPost('close_date'));
$amounts = $this->getCashupAmountsFromPost();
$cashUpData = $this->buildCashupSaveData($amounts, $openDate, $closeDate);
$wasSaved = $this->cashup->save_value($cashUpData, $cashupId);
return $this->buildSaveResponse($wasSaved, $cashupId, $cashUpData);
}
/**
* @param string $rawDate
* @return \DateTime|false
*/
private function parseCashupDate(string $rawDate): \DateTime|false
{
return date_create_from_format($this->config['dateformat'] . ' ' . $this->config['timeformat'], $rawDate);
}
/**
* @param CashupAmounts $amounts
* @param \DateTime $openDate
* @param \DateTime $closeDate
* @return array
*/
private function buildCashupSaveData(CashupAmounts $amounts, \DateTime $openDate, \DateTime $closeDate): array
{
$loggedInEmployee = $this->employee->get_logged_in_employee_info();
return [
'open_date' => $openDate->format('Y-m-d H:i:s'),
'close_date' => $closeDate->format('Y-m-d H:i:s'),
'open_amount_cash' => $amounts->openAmountCash,
'transfer_amount_cash' => $amounts->transferAmountCash,
'closed_amount_cash' => $amounts->closedAmountCash,
'closed_amount_due' => $amounts->closedAmountDue,
'closed_amount_card' => $amounts->closedAmountCard,
'closed_amount_check' => $amounts->closedAmountCheck,
'closed_amount_total' => $this->calculateTotal($amounts),
'note' => $this->request->getPost('note') != null,
'description' => $this->request->getPost('description', FILTER_SANITIZE_FULL_SPECIAL_CHARS),
'open_employee_id' => $loggedInEmployee->person_id,
'close_employee_id' => $loggedInEmployee->person_id,
'deleted' => $this->request->getPost('deleted') != null
];
}
/**
* @param bool $wasSaved
* @param int $cashupId
* @param array $cashUpData
* @return ResponseInterface
*/
private function buildSaveResponse(bool $wasSaved, int $cashupId, array $cashUpData): ResponseInterface
{
if (!$wasSaved) { // Failure
return $this->response->setJSON(['success' => false, 'message' => lang('Cashups.error_adding_updating'), 'id' => NEW_ENTRY]);
}
// New cashup_id
if ($cashupId == NEW_ENTRY) {
return $this->response->setJSON(['success' => true, 'message' => lang('Cashups.successful_adding'), 'id' => $cashUpData['cashup_id']]);
}
// Existing Cashup
return $this->response->setJSON(['success' => true, 'message' => lang('Cashups.successful_updating'), 'id' => $cashupId]);
}
/**
@@ -254,12 +355,12 @@ class Cashups extends Secure_Controller
*/
public function postDelete(): ResponseInterface
{
$cash_ups_to_delete = $this->request->getPost('ids', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$cashUpsToDelete = $this->request->getPost('ids', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
if ($this->cashup->delete_list($cash_ups_to_delete)) {
return $this->response->setJSON(['success' => true, 'message' => lang('Cashups.successful_deleted') . ' ' . count($cash_ups_to_delete) . ' ' . lang('Cashups.one_or_multiple'), 'ids' => $cash_ups_to_delete]);
if ($this->cashup->delete_list($cashUpsToDelete)) {
return $this->response->setJSON(['success' => true, 'message' => lang('Cashups.successful_deleted') . ' ' . count($cashUpsToDelete) . ' ' . lang('Cashups.one_or_multiple'), 'ids' => $cashUpsToDelete]);
} else {
return $this->response->setJSON(['success' => false, 'message' => lang('Cashups.cannot_be_deleted'), 'ids' => $cash_ups_to_delete]);
return $this->response->setJSON(['success' => false, 'message' => lang('Cashups.cannot_be_deleted'), 'ids' => $cashUpsToDelete]);
}
}
@@ -271,14 +372,7 @@ class Cashups extends Secure_Controller
*/
public function postAjax_cashup_total(): ResponseInterface
{
$open_amount_cash = parse_decimals($this->request->getPost('open_amount_cash'));
$transfer_amount_cash = parse_decimals($this->request->getPost('transfer_amount_cash'));
$closed_amount_cash = parse_decimals($this->request->getPost('closed_amount_cash'));
$closed_amount_due = parse_decimals($this->request->getPost('closed_amount_due'));
$closed_amount_card = parse_decimals($this->request->getPost('closed_amount_card'));
$closed_amount_check = parse_decimals($this->request->getPost('closed_amount_check'));
$total = $this->_calculate_total($open_amount_cash, $transfer_amount_cash, $closed_amount_due, $closed_amount_cash, $closed_amount_card, $closed_amount_check); // TODO: hungarian notation
$total = $this->calculateTotal($this->getCashupAmountsFromPost());
return $this->response->setJSON(['total' => to_currency_no_money($total)]);
}
@@ -286,8 +380,23 @@ class Cashups extends Secure_Controller
/**
* Calculate total
*/
private function _calculate_total(float $open_amount_cash, float $transfer_amount_cash, float $closed_amount_due, float $closed_amount_cash, float $closed_amount_card, $closed_amount_check): float // TODO: need to get rid of hungarian notation here. Also, the signature is pretty long. Perhaps they need to go into an object or array?
private function calculateTotal(CashupAmounts $amounts): float
{
return ($closed_amount_cash - $open_amount_cash - $transfer_amount_cash + $closed_amount_due + $closed_amount_card + $closed_amount_check);
return ($amounts->closedAmountCash - $amounts->openAmountCash - $amounts->transferAmountCash + $amounts->closedAmountDue + $amounts->closedAmountCard + $amounts->closedAmountCheck);
}
/**
* @return CashupAmounts
*/
private function getCashupAmountsFromPost(): CashupAmounts
{
return new CashupAmounts(
parse_decimals($this->request->getPost('open_amount_cash')),
parse_decimals($this->request->getPost('transfer_amount_cash')),
parse_decimals($this->request->getPost('closed_amount_cash')),
parse_decimals($this->request->getPost('closed_amount_due')),
parse_decimals($this->request->getPost('closed_amount_card')),
parse_decimals($this->request->getPost('closed_amount_check'))
);
}
}
+5 -3
View File
@@ -6,7 +6,7 @@ use App\Models\Expense_category;
use CodeIgniter\HTTP\ResponseInterface;
use Config\Services;
class Expenses_categories extends Secure_Controller // TODO: Is this class ever used?
class Expenses_categories extends Secure_Controller
{
private Expense_category $expense_category;
@@ -113,13 +113,15 @@ class Expenses_categories extends Secure_Controller // TODO: Is this class ev
{
$expense_category_to_delete = $this->request->getPost('ids', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
if ($this->expense_category->delete_list($expense_category_to_delete)) { // TODO: Convert to ternary notation.
if ($this->expense_category->delete_list($expense_category_to_delete)) {
return $this->response->setJSON([
'success' => true,
'message' => lang('Expenses_categories.successful_deleted') . ' ' . count($expense_category_to_delete) . ' ' . lang('Expenses_categories.one_or_multiple')
]);
} else {
return $this->response->setJSON(['success' => false, 'message' => lang('Expenses_categories.cannot_be_deleted')]);
return $this->response->setJSON([
'success' => false,
'message' => lang('Expenses_categories.cannot_be_deleted')]);
}
}
}
+23 -4
View File
@@ -10,6 +10,7 @@ use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\Model;
use Config\OSPOS;
use Config\Services;
use Exception;
/**
* @property employee employee
@@ -62,9 +63,20 @@ class Login extends BaseController
}
if (!$data['isLatest'] || $data['isNewInstall']) {
ignore_user_abort(true);
set_time_limit(3600);
$migration->setNamespace('App')->latest();
try {
$migration->setNamespace('App')->runLocked();
} catch (Exception $e) {
if (str_contains($e->getMessage(), 'Migration already in progress')) {
$data['hasErrors'] = true;
$validation->addError('username', lang('Login.migration_running'));
return view('login', $data);
}
throw $e;
}
return redirect()->to('login');
}
@@ -121,10 +133,10 @@ class Login extends BaseController
try {
$migration = new MY_Migration(config('Migrations'));
$migration->migrateToCI4();
ignore_user_abort(true);
set_time_limit(3600);
$migration->setNamespace('App')->latest();
$migration->setNamespace('App')->runLocked();
service('pluginManager')->runPendingMigrations();
@@ -133,7 +145,14 @@ class Login extends BaseController
'message' => 'Migration completed successfully'
]);
} catch (\Exception $e) {
} catch (Exception $e) {
if (str_contains($e->getMessage(), 'Migration already in progress')) {
return $this->response->setJSON([
'success' => false,
'message' => lang('Login.migration_running')
])->setStatusCode(202);
}
log_message('error', 'Migration failed: ' . $e->getMessage());
return $this->response->setJSON([
+26 -2
View File
@@ -233,8 +233,14 @@ class Receivings extends Secure_Controller
* @return string
* @noinspection PhpUnused
*/
public function getEdit($receiving_id): string
public function getEdit($receiving_id): ResponseInterface|string
{
$personId = $this->session->get('person_id');
if (!$this->employee->has_grant('reports_receivings', $personId)) {
return redirect()->to('no_access/receivings/reports_receivings');
}
$data = [];
$data['suppliers'] = ['' => 'No Supplier'];
@@ -288,6 +294,12 @@ class Receivings extends Secure_Controller
*/
public function postDelete(int $receiving_id = -1, bool $update_inventory = true): ResponseInterface
{
$personId = $this->session->get('person_id');
if (!$this->employee->has_grant('reports_receivings', $personId)) {
return $this->response->setStatusCode(403)->setJSON(['success' => false, 'message' => lang('Receivings.cannot_be_deleted')]);
}
$employee_id = $this->employee->get_logged_in_employee_info()->person_id;
$receiving_ids = $receiving_id == -1 ? $this->request->getPost('ids', FILTER_SANITIZE_NUMBER_INT) : [$receiving_id]; // TODO: Replace -1 with constant
@@ -412,8 +424,14 @@ class Receivings extends Secure_Controller
* @return string
* @noinspection PhpUnused
*/
public function getReceipt($receiving_id): string
public function getReceipt($receiving_id): ResponseInterface|string
{
$personId = $this->session->get('person_id');
if (!$this->employee->has_grant('reports_receivings', $personId)) {
return redirect()->to('no_access/receivings/reports_receivings');
}
$receiving_info = $this->receiving->get_info($receiving_id)->getRowArray();
$this->receiving_lib->copy_entire_receiving($receiving_id);
$data['cart'] = $this->receiving_lib->get_cart();
@@ -502,6 +520,12 @@ class Receivings extends Secure_Controller
*/
public function postSave(int $receiving_id = -1): ResponseInterface // TODO: Replace -1 with a constant
{
$personId = $this->session->get('person_id');
if (!$this->employee->has_grant('reports_receivings', $personId)) {
return $this->response->setStatusCode(403)->setJSON(['success' => false, 'message' => lang('Receivings.not_authorized')]);
}
$newdate = $this->request->getPost('date', FILTER_SANITIZE_FULL_SPECIAL_CHARS); // TODO: newdate does not follow naming conventions
$date_formatter = date_create_from_format($this->config['dateformat'] . ' ' . $this->config['timeformat'], $newdate);
+33 -9
View File
@@ -59,7 +59,6 @@ class Reports extends Secure_Controller
parent::__construct('reports');
$request = Services::request();
$methodName = urldecode($request->getUri()->getSegment(2));
$exploder = explode('_', $methodName);
$this->attribute = config(Attribute::class);
$this->config = config(OSPOS::class)->settings;
@@ -82,17 +81,42 @@ class Reports extends Secure_Controller
$this->detailed_receivings = model(Detailed_receivings::class);
$this->inventory_summary = model(Inventory_summary::class);
if (sizeof($exploder) > 1) {
preg_match('/(?:inventory)|([^_.]*)(?:_graph|_row)?$/', $methodName, $matches);
preg_match('/^(.*?)([sy])?$/', array_pop($matches), $matches);
$submoduleId = $matches[1] . ((count($matches) > 2) ? $matches[2] : 's');
} else {
$submoduleId = null;
// Map report URL names to their required permission
$reportPermissions = [
'summary_sales' => 'reports_sales',
'summary_expenses_categories'=> 'reports_expenses_categories',
'summary_payments' => 'reports_payments',
'summary_discounts' => 'reports_discounts',
'summary_categories' => 'reports_categories',
'summary_customers' => 'reports_customers',
'summary_items' => 'reports_items',
'summary_suppliers' => 'reports_suppliers',
'summary_employees' => 'reports_employees',
'summary_taxes' => 'reports_taxes',
'summary_sales_taxes' => 'reports_sales_taxes',
'detailed_item_sales' => 'reports_sales',
'detailed_sales' => 'reports_sales',
'detailed_receivings' => 'reports_receivings',
'inventory_summary' => 'reports_inventory',
'inventory_low' => 'reports_inventory',
'specific_customers' => 'reports_customers',
'specific_employees' => 'reports_employees',
'specific_discounts' => 'reports_discounts',
'specific_suppliers' => 'reports_suppliers',
];
// Normalize the report name: strip graphical_ prefix and _graph/_row suffixes
$reportName = $methodName;
if (str_starts_with($reportName, 'graphical_')) {
$reportName = substr($reportName, 10);
}
$reportName = preg_replace('/_(graph|row)$/', '', $reportName);
$submoduleId = $reportPermissions[$reportName] ?? null;
// Check access to report submodule
if ($submoduleId !== null && !$this->employee->has_grant('reports_' . $submoduleId, $this->employee->get_logged_in_employee_info()->person_id)) {
throw new RedirectException('no_access/reports/reports_' . $submoduleId);
if ($submoduleId !== null && !$this->employee->has_grant($submoduleId, $this->employee->get_logged_in_employee_info()->person_id)) {
throw new RedirectException('no_access/reports/' . $submoduleId);
}
helper('report');
+3 -2
View File
@@ -70,11 +70,12 @@ function get_languages(): array
'fa:persian' => 'Persian',
'fr:french' => 'French',
'he:hebrew' => 'Hebrew',
'hr-HR:croatian' => 'Croatian (Croatia)',
'hr:croatian' => 'Croatian',
'hu:hungarian' => 'Hungarian',
'hy:armenian' => 'Armenian',
'id:indonesian' => 'Indonesian',
'it:italian' => 'Italian',
'ka:georgian' => 'Georgian',
'km:centralkhmer' => 'Khmer (Central)',
'lo:lao' => 'Lao',
'ml:malayalam' => 'Malayalam',
@@ -96,7 +97,7 @@ function get_languages(): array
'ur:urdu' => 'Urdu',
'vi:vietnamese' => 'Vietnamese',
'zh-Hans:simplified-chinese' => 'Chinese (Simplified)',
'zh-Hant:traditional-chinese' => 'Chinese (Traditional)'
'zh-Hant:traditional-chinese' => 'Chinese (Traditional)',
];
asort($languages);
return $languages;
+1 -1
View File
@@ -873,7 +873,7 @@ function cashup_headers(): array
['close_date' => lang('Cashups.closed_date')],
['close_employee_id' => lang('Cashups.close_employee')],
['closed_amount_cash' => lang('Cashups.closed_amount_cash')],
['note' => lang('Cashups.note')],
['note' => lang('Cashups.note'), 'escape' => false],
['closed_amount_due' => lang('Cashups.closed_amount_due')],
['closed_amount_card' => lang('Cashups.closed_amount_card')],
['closed_amount_check' => lang('Cashups.closed_amount_check')],
+3 -3
View File
@@ -6,14 +6,14 @@ return [
'confirm_restore' => 'هل أنت متأكد من أنك تريد استعادة السمة (السمات) المحددة؟',
'definition_cannot_be_deleted' => 'لا يمكن حذف السمات المحددة',
'definition_error_adding_updating' => 'لا يمكن إضافة السمة {0} أو تحديثها. يرجى التحقق من سجل الخطأ.',
'definition_invalid_group' => 'المجموعة المحددة غير موجودة أو غير صالحة.',
'definition_flags' => 'رؤية الميزات',
'definition_group' => 'المجموعة',
'definition_id' => 'كود',
'definition_invalid_group' => 'المجموعة المحددة غير موجودة أو غير صالحة.',
'definition_name' => 'إضافة ميزة',
'definition_name_required' => 'اسم الميزة هي خانة اجبارية',
'definition_one_or_multiple' => 'ميزة/ميزات',
'definition_successful_adding' => 'لقد تم إضافة صنف بنجاح',
'definition_successful_adding' => '',
'definition_successful_deleted' => 'لقد تم حذف ميزة بنجاح',
'definition_successful_updating' => 'تم تعديل الميزة بنجاح',
'definition_type' => 'نوع الميزة',
@@ -21,7 +21,7 @@ return [
'definition_unit' => 'وحدة قياس',
'definition_values' => 'قيمة الميزة',
'new' => 'اضافة ميزة جديده',
'no_attributes_to_display' => 'لا يوجد اصناف للعرض',
'no_attributes_to_display' => '',
'receipt_visibility' => 'وصل',
'show_in_items' => 'اظهار في الصنف',
'show_in_items_visibility' => 'الصنف',
+1 -8
View File
@@ -11,7 +11,6 @@ return [
'comments' => 'تعليقات',
'common' => 'عام',
'confirm_search' => 'لقد قمت اختيار أكتر من سجل، سوف تفقد هذه الاختيارات عند إرسال البحث، موافق؟',
'copyrights' => '© 2010 - {0}',
'correct_errors' => 'يرجى تصحيح الأخطاء المحددة قبل الحفظ',
'country' => 'البلد',
'dashboard' => '',
@@ -50,9 +49,7 @@ return [
'list_of' => 'قائمة بـ',
'logo' => 'شعار',
'logo_mark' => 'علامة الشعار',
'logout' => 'خروج',
'manager' => '',
'migration_needed' => 'سيبدأ ترحيل قاعدة البيانات إلى {0} بعد تسجيل الدخول.',
'new' => 'جديد',
'no' => '',
'no_persons_to_display' => 'لا يوجد اناس لعرضهم.',
@@ -60,10 +57,9 @@ return [
'or' => 'أو',
'people' => '',
'phone_number' => 'رقم التليفون',
'phone_number_required' => 'رقم التليفون مطلوب',
'please_visit_my' => 'برجاء زيارة',
'position' => '',
'powered_by' => 'مدعوم بواسطة',
'powered_by' => 'مدعوم بواسطة {app} {version}',
'price' => 'السعر',
'print' => 'طباعة',
'remove' => 'إزالة',
@@ -73,14 +69,11 @@ return [
'search' => 'بحث',
'search_options' => 'خيارات البحث',
'searched_for' => 'بحث عن',
'software_short' => 'OSPOS',
'software_title' => 'برنامج OSPOS',
'state' => 'المحافظة',
'submit' => 'حفظ',
'total_spent' => 'مجموع الصرف',
'unknown' => 'غير معروف',
'view_recent_sales' => 'عرض أحدث المبيعات',
'website' => 'الموقع الإلكترونى',
'welcome' => 'مرحباً',
'welcome_message' => 'مرحباً فى OSPOS برجاء إختيار أى قسم للبدء.',
'yes' => '',
+9 -7
View File
@@ -98,8 +98,8 @@ return [
'default_tax_rate_1' => 'معدل الضريبة 1',
'default_tax_rate_2' => 'معدل الضريبة 2',
'default_tax_rate_3' => '',
'default_tax_rate_number' => 'معدل الضريبة الافتراضي يجب أن يكون رقم.',
'default_tax_rate_non_negative' => '',
'default_tax_rate_number' => 'معدل الضريبة الافتراضي يجب أن يكون رقم.',
'default_tax_rate_required' => 'معدل الضريبة الافتراضي مطلوب.',
'derive_sale_quantity' => 'السماح بأسعار البيع المشتقة',
'derive_sale_quantity_tooltip' => 'إذا تم تحديدها، فسيتم توفير نوع جديد من الاصناف للاصناف المطلوبة حسب المبلغ الموسع',
@@ -168,6 +168,8 @@ return [
'info' => 'معلومات',
'info_configuration' => 'معلومات الشركة',
'input_groups' => 'مجموعات الإدخال',
'integrations' => 'التكامل',
'integrations_configuration' => 'تكامل',
'invoice' => 'الفاتورة',
'invoice_configuration' => 'إعدادات طباعة الفاتورة',
'invoice_default_comments' => 'التعليق الافتراضي على الفاتورة',
@@ -198,6 +200,7 @@ return [
'location_info' => 'معلومات تهيئة الأماكن',
'login_form' => 'نمط نموذج تسجيل الدخول',
'logout' => 'هل تريد عمل نسخة إحتياطية قبل الخروج؟ اضغط [نعم] لعمل النسخة أو [الغاء] للخروج.',
'mailpath_invalid' => 'مسار sendmail غير صالح. يُسمح فقط بالحروف والأرقام والشرطات والشرطات السفلية والشرطات المائلة والشرطات المائلة العكسية والنقطتين الرأسيتين والمسافات والنقاط.',
'message' => 'الرسائل',
'message_configuration' => 'إعدادات الرسائل',
'msg_msg' => 'الرسائل النصية المحفوظة',
@@ -278,12 +281,15 @@ return [
'right' => 'يمين',
'sales_invoice_format' => 'شكل فاتورة البيع',
'sales_quote_format' => 'شكل فاتورة عرض الاسعار',
'mailpath_invalid' => 'مسار sendmail غير صالح. يُسمح فقط بالحروف والأرقام والشرطات والشرطات السفلية والشرطات المائلة والشرطات المائلة العكسية والنقطتين الرأسيتين والمسافات والنقاط.',
'saved_successfully' => 'تم حفظ التهيئة بنجاح.',
'saved_unsuccessfully' => 'لم يتم حفظ التهيئة بنجاح.',
'security_issue' => 'تحذير من ثغرة أمنية',
'server_notice' => 'يرجى استخدام المعلومات أدناه للإبلاغ عن المشكلة.',
'service_charge' => '',
'shortcuts' => '',
'shortcuts_configuration' => '',
'shortcuts_duplicate_bindings' => '',
'shortcuts_save_error' => '',
'show_due_enable' => '',
'show_office_group' => 'اظهار ايكونة المكتب',
'statistics' => 'إرسال اﻹحصائيات',
@@ -301,12 +307,8 @@ return [
'suggestions_layout' => 'تخطيط اقتراحات البحث',
'suggestions_second_column' => 'العامود 2',
'suggestions_third_column' => 'العامود 3',
'shortcuts' => '',
'shortcuts_configuration' => '',
'shortcuts_duplicate_bindings' => '',
'shortcuts_save_error' => '',
'system_conf' => 'اعدادات اخرى',
'system_info' => 'System Info',
'system_info' => '',
'system_info_copy' => '',
'system_info_copy_error' => '',
'system_info_copy_success' => '',
+1 -1
View File
@@ -34,6 +34,7 @@ return [
'none_selected' => 'لم تختار عملاء للحذف.',
'one_or_multiple' => 'عميل/عملاء',
'quantity' => 'العدد',
'rewards_package' => 'فئة المكافئة',
'stats_info' => 'الحالة',
'successful_adding' => 'لقد أضفت عميل بنجاح',
'successful_deleted' => 'لقد قمت بالحذف بنجاح',
@@ -43,5 +44,4 @@ return [
'taxable' => 'خاضع للضريبة',
'total' => 'المجموع',
'update' => 'تحديث بيانات عميل',
'rewards_package' => 'فئة المكافئة',
];
+1 -1
View File
@@ -19,6 +19,6 @@ return [
'to' => 'إلى',
'today' => 'اليوم',
'today_last_year' => 'نفس اليوم من السنة الماضية',
'weekstart' => '0',
'weekstart' => '6',
'yesterday' => 'أمس',
];
+1
View File
@@ -41,6 +41,7 @@ return [
'successful_deleted' => 'لقد تم حذف الموظف بنجاح',
'successful_updating' => 'لقد تم تحديث بيانات الموظف بنجاح',
'system_language' => 'لغة النظام',
'unauthorized_modify' => '',
'unsuccessful_change_password' => 'فشل في تغيير كلمة المرور.',
'update' => 'تحديث بيانات موظف',
'username' => 'اسم المستخدم',
+3 -3
View File
@@ -1,14 +1,14 @@
<?php
return [
'encryption_key_not_provisioned' => '',
'no_permission_module' => 'ليس لديك صلاحيات للوصول لهذا القسم',
'throttle_key_not_provisioned' => '',
'unable_to_create_env_file' => 'تعذر إنشاء {filePath} لتوفير throttle.key',
'unable_to_lock_file' => 'تعذر قفل {filePath}: {reason}',
'unable_to_open_lock_file' => 'تعذر فتح {filePath}: {reason}',
'unable_to_persist_throttle_key' => 'تعذر حفظ throttle.key في {filePath}',
'unable_to_persist_encryption_key' => '',
'encryption_key_not_provisioned' => '',
'throttle_key_not_provisioned' => '',
'unable_to_persist_throttle_key' => 'تعذر حفظ throttle.key في {filePath}',
'unable_to_read_env_file' => 'تعذر قراءة {filePath} لتوفير throttle.key',
'unknown' => 'غير معروف',
];
+1 -1
View File
@@ -1,10 +1,10 @@
<?php
return [
'category_name_required' => 'اسم نوع المصاريف مطلوب',
'add_item' => 'إضافة نوع',
'cannot_be_deleted' => 'فشلت عملية مسح نوع المصاريف',
'category_id' => 'الكود',
'category_name_required' => 'اسم نوع المصاريف مطلوب',
'confirm_delete' => 'هل أنت متأكد من مسح نوع المصاريف الذي أخترته؟',
'confirm_restore' => 'هل أنت متأكد من أنك تريد استعادة فئة المصاريف المحددة؟',
'description' => 'وصف النوع',
-2
View File
@@ -17,8 +17,6 @@ return [
'item' => 'صنف',
'item_kit_number' => 'الباركود',
'item_kit_number_duplicate' => 'رقم مجموعة الأصناف موجود في قاعدة البيانات.',
'item_number' => '',
'item_number_duplicate' => '',
'items' => 'أصناف',
'kit' => 'كود المجموعة',
'kit_and_components' => 'المجموعة ومحتوياتها',
+1 -1
View File
@@ -110,8 +110,8 @@ return [
'tax_category' => 'الفئة الضريبية',
'tax_name_invalid' => 'اسم الضريبة يحتوي على أحرف غير مسموح بها.',
'tax_percent' => 'نسبة الضريبة',
'tax_percent_number' => 'نسبة الضريبة يجب ان تكون رقم',
'tax_percent_non_negative' => '',
'tax_percent_number' => 'نسبة الضريبة يجب ان تكون رقم',
'tax_percent_required' => 'نسبة الضريبة مطلوبة.',
'tax_percents' => 'نسبة/نسب الضريبة',
'temp' => 'مؤقت',
+3 -3
View File
@@ -6,11 +6,11 @@ return [
'message' => 'الرسالة',
'message_placeholder' => 'رسالتك هنا...',
'message_required' => 'الرسالة مطلوبة',
'multiple_phones' => 'فى حالة إرسال الرسالة لأكثر من شخص قم بفصل الأرقام بعلامة الفاصلة',
'multiple_phones' => '(فى حالة إرسال الرسالة لأكثر من شخص قم بفصل الأرقام بعلامة الفاصلة)',
'phone' => 'رقم المحمول',
'phone_number_required' => 'رقم المحمول مطلوب',
'phone_placeholder' => 'رقم/أرقام المحمول هنا...',
'sms_send' => 'إرسال SMS',
'successfully_sent' => 'تم إرسال الرسالة بنجاح إلى: ',
'unsuccessfully_sent' => 'لم يتم إرسال الرسالة بنجاح إلى: ',
'successfully_sent' => 'تم إرسال الرسالة بنجاح إلى:',
'unsuccessfully_sent' => 'لم يتم إرسال الرسالة بنجاح إلى:',
];
+1
View File
@@ -28,6 +28,7 @@ return [
'item_name' => 'اسم الصنف',
'mode' => 'وضع الإستلام',
'new_supplier' => 'مورد جديد',
'not_authorized' => '',
'one_or_multiple' => 'إستلام/إستلامات',
'print_after_sale' => 'طباعة بعد الإستلام',
'quantity' => 'الكمية.',
+4 -3
View File
@@ -77,7 +77,7 @@ return [
'invoice_filter' => 'الفواتير',
'invoice_no_email' => 'هذا العميل ليس لدية بريد الكترونى صالح.',
'invoice_number' => 'فاتورة رقم #',
'invoice_number_duplicate' => 'من فضلك أدخل رقم فاتورة غير مكرر.',
'invoice_number_duplicate' => 'رقم الفاتورة {0} يجب أن يكون فريداً.',
'invoice_sent' => 'تم إرسال الفاتورة إلى',
'invoice_total' => 'إجمالي الفاتورة',
'invoice_type_custom_invoice' => 'فاتورة مخصصة (custom_invoice.php)',
@@ -95,7 +95,7 @@ return [
'key_finish_quote' => 'انهاء عملية البيع/الفاتورة من دون الدفع',
'key_finish_sale' => 'اضافة دفع نقدي كمل واتمام عملية البيع',
'key_full' => 'الإظهار في صفحه كامله',
'key_function' => 'Function',
'key_function' => '',
'key_help' => 'اختصارات',
'key_help_modal' => 'إظهار الاختصارات',
'key_in' => 'تكبير الصفحه',
@@ -123,8 +123,9 @@ return [
'new_item' => 'صنف جديد',
'no_description' => 'بدون وصف',
'no_items_in_cart' => 'لايوجد أصناف فى السلة.',
'no_sales_to_display' => 'لاتوجد عمليات بيع لعرضها.',
'none_selected' => 'لم تقم بإختيار أى عمليات بيع لحذفها.',
'nontaxed_ind' => ' ',
'nontaxed_ind' => '',
'not_authorized' => 'هذه العملية لا يمكن فعلها لعدم تخويلك.',
'one_or_multiple' => 'عمليات بيع',
'payment' => 'طريقة الدفع',
+2 -1
View File
@@ -12,6 +12,7 @@ return [
'default_tax_rate' => 'معدل الضريبة الافتراضي',
'error_adding_updating' => 'فشل إضافة أو تحديث قانون الضرائب',
'group_seq' => 'تسلسل المجموعة',
'jurisdiction_id' => '',
'jurisdiction_name' => 'اسم الولاية القضائية',
'name' => 'الاسم',
'new' => 'ضريبة جديدة',
@@ -56,7 +57,7 @@ return [
'tax_codes_saved_unsuccessfully' => 'لم يتم حفظ تغييرات قانون الضريبة',
'tax_excluded' => 'لا تشمل الضرائب',
'tax_group' => 'المجموعة الضريبية',
'tax_group_not_unique' => 'فئة الضرائب يجب ان تكون فريده',
'tax_group_not_unique' => 'فئة الضرائب {0} يجب ان تكون فريده',
'tax_group_sequence' => 'تسلسل مجموعة الضرائب',
'tax_included' => 'الضريبة مشمولة',
'tax_jurisdiction' => 'الاختصاص الضريبي',
+3 -3
View File
@@ -6,14 +6,14 @@ return [
'confirm_restore' => 'هل أنت متأكد من أنك تريد استعادة السمة (السمات) المحددة؟',
'definition_cannot_be_deleted' => 'لا يمكن حذف السمات المحددة',
'definition_error_adding_updating' => 'لا يمكن إضافة السمة {0} أو تحديثها. يرجى التحقق من سجل الخطأ.',
'definition_invalid_group' => 'المجموعة المحددة غير موجودة أو غير صالحة.',
'definition_flags' => 'رؤية الميزات',
'definition_group' => 'المجموعة',
'definition_id' => 'كود',
'definition_invalid_group' => 'المجموعة المحددة غير موجودة أو غير صالحة.',
'definition_name' => 'إضافة ميزة',
'definition_name_required' => 'اسم الميزة هي خانة اجبارية',
'definition_one_or_multiple' => 'ميزة/ميزات',
'definition_successful_adding' => 'لقد تم إضافة صنف بنجاح',
'definition_successful_adding' => '',
'definition_successful_deleted' => 'لقد تم حذف ميزة بنجاح',
'definition_successful_updating' => 'تم تعديل الميزة بنجاح',
'definition_type' => 'نوع الميزة',
@@ -21,7 +21,7 @@ return [
'definition_unit' => 'وحدة قياس',
'definition_values' => 'قيمة الميزة',
'new' => 'اضافة ميزة جديده',
'no_attributes_to_display' => 'لا يوجد اصناف للعرض',
'no_attributes_to_display' => '',
'receipt_visibility' => 'وصل',
'show_in_items' => 'اظهار في الصنف',
'show_in_items_visibility' => 'الصنف',
+1 -8
View File
@@ -11,7 +11,6 @@ return [
'comments' => 'تعليقات',
'common' => 'عام',
'confirm_search' => 'لقد قمت اختيار أكتر من سجل، سوف تفقد هذه الاختيارات عند إرسال البحث، موافق؟',
'copyrights' => '© 2010 - {0}',
'correct_errors' => 'يرجى تصحيح الأخطاء المحددة قبل الحفظ',
'country' => 'البلد',
'dashboard' => '',
@@ -50,9 +49,7 @@ return [
'list_of' => 'قائمة بـ',
'logo' => 'شعار',
'logo_mark' => 'علامة الشعار',
'logout' => 'خروج',
'manager' => '',
'migration_needed' => 'سيبدأ ترحيل قاعدة البيانات إلى {0} بعد تسجيل الدخول.',
'new' => 'جديد',
'no' => '',
'no_persons_to_display' => 'لا يوجد اناس لعرضهم.',
@@ -60,10 +57,9 @@ return [
'or' => 'أو',
'people' => '',
'phone_number' => 'رقم التليفون',
'phone_number_required' => 'رقم التليفون مطلوب',
'please_visit_my' => 'برجاء زيارة',
'position' => '',
'powered_by' => 'مدعوم بواسطة',
'powered_by' => 'مدعوم بواسطة {app} {version}',
'price' => 'السعر',
'print' => 'طباعة',
'remove' => 'إزالة',
@@ -73,14 +69,11 @@ return [
'search' => 'بحث',
'search_options' => 'خيارات البحث',
'searched_for' => 'بحث عن',
'software_short' => 'OSPOS',
'software_title' => 'برنامج OSPOS',
'state' => 'المحافظة',
'submit' => 'حفظ',
'total_spent' => 'مجموع الصرف',
'unknown' => 'غير معروف',
'view_recent_sales' => 'عرض أحدث المبيعات',
'website' => 'الموقع الإلكترونى',
'welcome' => 'مرحباً',
'welcome_message' => 'مرحباً فى OSPOS برجاء إختيار أى قسم للبدء.',
'yes' => '',
+9 -7
View File
@@ -98,8 +98,8 @@ return [
'default_tax_rate_1' => 'معدل الضريبة 1',
'default_tax_rate_2' => 'معدل الضريبة 2',
'default_tax_rate_3' => '',
'default_tax_rate_number' => 'معدل الضريبة الافتراضي يجب أن يكون رقم.',
'default_tax_rate_non_negative' => '',
'default_tax_rate_number' => 'معدل الضريبة الافتراضي يجب أن يكون رقم.',
'default_tax_rate_required' => 'معدل الضريبة الافتراضي مطلوب.',
'derive_sale_quantity' => 'السماح بأسعار البيع المشتقة',
'derive_sale_quantity_tooltip' => 'إذا تم تحديدها، فسيتم توفير نوع جديد من الاصناف للاصناف المطلوبة حسب المبلغ الموسع',
@@ -168,6 +168,8 @@ return [
'info' => 'معلومات',
'info_configuration' => 'معلومات الشركة',
'input_groups' => 'مجموعات الإدخال',
'integrations' => 'التكامل',
'integrations_configuration' => 'تكامل',
'invoice' => 'الفاتورة',
'invoice_configuration' => 'إعدادات طباعة الفاتورة',
'invoice_default_comments' => 'التعليق الافتراضي على الفاتورة',
@@ -198,6 +200,7 @@ return [
'location_info' => 'معلومات تهيئة الأماكن',
'login_form' => 'نمط نموذج تسجيل الدخول',
'logout' => 'هل تريد عمل نسخة إحتياطية قبل الخروج؟ اضغط [نعم] لعمل النسخة أو [الغاء] للخروج.',
'mailpath_invalid' => 'مسار sendmail غير صالح. يُسمح فقط بالحروف والأرقام والشرطات والشرطات السفلية والشرطات المائلة والشرطات المائلة العكسية والنقطتين الرأسيتين والمسافات والنقاط.',
'message' => 'الرسائل',
'message_configuration' => 'إعدادات الرسائل',
'msg_msg' => 'الرسائل النصية المحفوظة',
@@ -278,12 +281,15 @@ return [
'right' => 'يمين',
'sales_invoice_format' => 'شكل فاتورة البيع',
'sales_quote_format' => 'شكل فاتورة عرض الاسعار',
'mailpath_invalid' => 'مسار sendmail غير صالح. يُسمح فقط بالحروف والأرقام والشرطات والشرطات السفلية والشرطات المائلة والشرطات المائلة العكسية والنقطتين الرأسيتين والمسافات والنقاط.',
'saved_successfully' => 'تم حفظ التهيئة بنجاح.',
'saved_unsuccessfully' => 'لم يتم حفظ التهيئة بنجاح.',
'security_issue' => 'تحذير من ثغرة أمنية',
'server_notice' => 'يرجى استخدام المعلومات أدناه للإبلاغ عن المشكلة.',
'service_charge' => '',
'shortcuts' => '',
'shortcuts_configuration' => '',
'shortcuts_duplicate_bindings' => '',
'shortcuts_save_error' => '',
'show_due_enable' => '',
'show_office_group' => 'اظهار ايكونة المكتب',
'statistics' => 'إرسال اﻹحصائيات',
@@ -301,12 +307,8 @@ return [
'suggestions_layout' => 'تخطيط اقتراحات البحث',
'suggestions_second_column' => 'العامود 2',
'suggestions_third_column' => 'العامود 3',
'shortcuts' => '',
'shortcuts_configuration' => '',
'shortcuts_duplicate_bindings' => '',
'shortcuts_save_error' => '',
'system_conf' => 'اعدادات اخرى',
'system_info' => 'System Info',
'system_info' => '',
'system_info_copy' => '',
'system_info_copy_error' => '',
'system_info_copy_success' => '',
+1 -1
View File
@@ -34,6 +34,7 @@ return [
'none_selected' => 'لم تختار عملاء للحذف.',
'one_or_multiple' => 'عميل/عملاء',
'quantity' => 'العدد',
'rewards_package' => 'فئة المكافئة',
'stats_info' => 'الحالة',
'successful_adding' => 'لقد أضفت عميل بنجاح',
'successful_deleted' => 'لقد قمت بالحذف بنجاح',
@@ -43,5 +44,4 @@ return [
'taxable' => 'خاضع للضريبة',
'total' => 'المجموع',
'update' => 'تحديث بيانات عميل',
'rewards_package' => 'فئة المكافئة',
];
+1 -1
View File
@@ -19,6 +19,6 @@ return [
'to' => 'إلى',
'today' => 'اليوم',
'today_last_year' => 'نفس اليوم من السنة الماضية',
'weekstart' => '0',
'weekstart' => '1',
'yesterday' => 'أمس',
];
+1
View File
@@ -41,6 +41,7 @@ return [
'successful_deleted' => 'لقد تم حذف الموظف بنجاح',
'successful_updating' => 'لقد تم تحديث بيانات الموظف بنجاح',
'system_language' => 'لغة النظام',
'unauthorized_modify' => '',
'unsuccessful_change_password' => 'فشل في تغيير كلمة المرور.',
'update' => 'تحديث بيانات موظف',
'username' => 'اسم المستخدم',
+3 -3
View File
@@ -1,14 +1,14 @@
<?php
return [
'encryption_key_not_provisioned' => '',
'no_permission_module' => 'ليس لديك صلاحيات للوصول لهذا القسم',
'throttle_key_not_provisioned' => '',
'unable_to_create_env_file' => 'تعذر إنشاء {filePath} لتوفير throttle.key',
'unable_to_lock_file' => 'تعذر قفل {filePath}: {reason}',
'unable_to_open_lock_file' => 'تعذر فتح {filePath}: {reason}',
'unable_to_persist_throttle_key' => 'تعذر حفظ throttle.key في {filePath}',
'unable_to_persist_encryption_key' => '',
'encryption_key_not_provisioned' => '',
'throttle_key_not_provisioned' => '',
'unable_to_persist_throttle_key' => 'تعذر حفظ throttle.key في {filePath}',
'unable_to_read_env_file' => 'تعذر قراءة {filePath} لتوفير throttle.key',
'unknown' => 'غير معروف',
];
+1 -1
View File
@@ -1,10 +1,10 @@
<?php
return [
'category_name_required' => 'اسم نوع المصاريف مطلوب',
'add_item' => 'إضافة نوع',
'cannot_be_deleted' => 'فشلت عملية مسح نوع المصاريف',
'category_id' => 'الكود',
'category_name_required' => 'اسم نوع المصاريف مطلوب',
'confirm_delete' => 'هل أنت متأكد من مسح نوع المصاريف الذي أخترته؟',
'confirm_restore' => 'هل أنت متأكد من أنك تريد استعادة فئة المصاريف المحددة؟',
'description' => 'وصف النوع',
-2
View File
@@ -17,8 +17,6 @@ return [
'item' => 'صنف',
'item_kit_number' => 'الباركود',
'item_kit_number_duplicate' => 'رقم مجموعة الأدوات موجود في قاعدة البيانات.',
'item_number' => '',
'item_number_duplicate' => '',
'items' => 'أصناف',
'kit' => 'كود المجموعة',
'kit_and_components' => 'المجموعة ومحتوياتها',
+1 -1
View File
@@ -110,8 +110,8 @@ return [
'tax_category' => 'الفئة الضريبية',
'tax_name_invalid' => 'اسم الضريبة يحتوي على أحرف غير مسموح بها.',
'tax_percent' => 'نسبة الضريبة',
'tax_percent_number' => 'نسبة الضريبة يجب ان تكون رقم',
'tax_percent_non_negative' => '',
'tax_percent_number' => 'نسبة الضريبة يجب ان تكون رقم',
'tax_percent_required' => 'نسبة الضريبة مطلوبة.',
'tax_percents' => 'نسبة/نسب الضريبة',
'temp' => 'مؤقت',
+3 -3
View File
@@ -6,11 +6,11 @@ return [
'message' => 'الرسالة',
'message_placeholder' => 'رسالتك هنا...',
'message_required' => 'الرسالة مطلوبة',
'multiple_phones' => 'فى حالة إرسال الرسالة لأكثر من شخص قم بفصل الأرقام بعلامة الفاصلة',
'multiple_phones' => '(فى حالة إرسال الرسالة لأكثر من شخص قم بفصل الأرقام بعلامة الفاصلة)',
'phone' => 'رقم المحمول',
'phone_number_required' => 'رقم المحمول مطلوب',
'phone_placeholder' => 'رقم/أرقام المحمول هنا...',
'sms_send' => 'إرسال SMS',
'successfully_sent' => 'تم إرسال الرسالة بنجاح إلى: ',
'unsuccessfully_sent' => 'لم يتم إرسال الرسالة بنجاح إلى: ',
'successfully_sent' => 'تم إرسال الرسالة بنجاح إلى:',
'unsuccessfully_sent' => 'لم يتم إرسال الرسالة بنجاح إلى:',
];
+1
View File
@@ -28,6 +28,7 @@ return [
'item_name' => 'اسم الصنف',
'mode' => 'وضع الإستلام',
'new_supplier' => 'مورد جديد',
'not_authorized' => '',
'one_or_multiple' => 'إستلام/إستلامات',
'print_after_sale' => 'طباعة بعد الإستلام',
'quantity' => 'الكمية.',
+4 -3
View File
@@ -77,7 +77,7 @@ return [
'invoice_filter' => 'الفواتير',
'invoice_no_email' => 'هذا العميل ليس لدية بريد الكترونى صالح.',
'invoice_number' => 'فاتورة رقم #',
'invoice_number_duplicate' => 'من فضلك أدخل رقم فاتورة غير مكرر.',
'invoice_number_duplicate' => 'رقم الفاتورة {0} يجب أن يكون فريداً.',
'invoice_sent' => 'تم إرسال الفاتورة إلى',
'invoice_total' => 'إجمالي الفاتورة',
'invoice_type_custom_invoice' => 'فاتورة مخصصة (custom_invoice.php)',
@@ -95,7 +95,7 @@ return [
'key_finish_quote' => 'انهاء عملية البيع/الفاتورة من دون الدفع',
'key_finish_sale' => 'اضافة دفع نقدي كمل واتمام عملية البيع',
'key_full' => 'الإظهار في صفحه كامله',
'key_function' => 'Function',
'key_function' => '',
'key_help' => 'اختصارات',
'key_help_modal' => 'إظهار الاختصارات',
'key_in' => 'تكبير الصفحه',
@@ -123,8 +123,9 @@ return [
'new_item' => 'مادة جديدة',
'no_description' => 'بدون وصف',
'no_items_in_cart' => 'لايوجد اي مادة فى السلة.',
'no_sales_to_display' => 'لاتوجد عمليات بيع لعرضها.',
'none_selected' => 'لم تقم بإختيار أى عمليات بيع لحذفها.',
'nontaxed_ind' => ' ',
'nontaxed_ind' => '',
'not_authorized' => 'ليس لديك صلاحية.',
'one_or_multiple' => 'عمليات بيع',
'payment' => 'طريقة الدفع',
+2 -1
View File
@@ -12,6 +12,7 @@ return [
'default_tax_rate' => 'معدل الضريبة الافتراضي',
'error_adding_updating' => 'فشل إضافة أو تحديث قانون الضرائب',
'group_seq' => 'تسلسل المجموعة',
'jurisdiction_id' => '',
'jurisdiction_name' => 'اسم الولاية القضائية',
'name' => 'الاسم',
'new' => 'ضريبة جديدة',
@@ -56,7 +57,7 @@ return [
'tax_codes_saved_unsuccessfully' => 'لم يتم حفظ تغييرات قانون الضريبة',
'tax_excluded' => 'لا تشمل الضرائب',
'tax_group' => 'المجموعة الضريبية',
'tax_group_not_unique' => 'فئة الضرائب يجب ان تكون فريده',
'tax_group_not_unique' => 'فئة الضرائب {0} يجب ان تكون فريده',
'tax_group_sequence' => 'تسلسل مجموعة الضرائب',
'tax_included' => 'الضريبة مشمولة',
'tax_jurisdiction' => 'الاختصاص الضريبي',
+1 -1
View File
@@ -8,7 +8,7 @@ return [
'definition_error_adding_updating' => '{0} atributu əlavə edilə və ya yenilənə bilmədi. Zəhmət olmasa xəta jurnalını yoxlayın.',
'definition_flags' => 'Atributun görünürlüyü',
'definition_group' => 'Qrup',
'definition_id' => 'Id',
'definition_id' => '',
'definition_invalid_group' => 'Seçilmiş qrup mövcud deyil və ya etibarsızdır.',
'definition_name' => 'Atribut əlavə et',
'definition_name_required' => 'Atribut adı tələb olunan sahədir',
+1 -1
View File
@@ -26,7 +26,7 @@ return [
'enable_expected' => 'Gözlənilən Məbləği Aktiv Et',
'error_adding_updating' => 'Kassa hesabatı əlavə edilərkən/yenilənərkən xəta baş verdi',
'giftcard' => 'Hədiyyə Kartı',
'id' => 'Id',
'id' => '',
'info' => 'Kassa Hesabatı Məlumatı',
'info_employee' => 'Əməkdaş Məlumatı',
'is_deleted' => 'Silindi',
+3 -10
View File
@@ -11,7 +11,6 @@ return [
'comments' => 'Rəylər',
'common' => 'ortaq',
'confirm_search' => 'Bir və ya bir neçə sətir seçmisiniz, bunlar axtarışdan sonra artıq seçilməyəcək. Bu axtarışı göndərmək istədiyinizə əminsiniz?',
'copyrights' => '© 2010 - {0}',
'correct_errors' => 'Zəhmət olmasa, yadda saxlamazdan əvvəl müəyyən edilmiş səhvləri düzəldin',
'country' => 'Ölkə',
'dashboard' => 'İdarə Paneli',
@@ -35,14 +34,14 @@ return [
'gender_male' => 'K',
'gender_undefined' => 'Naməlum',
'icon' => 'İkon',
'id' => 'ID',
'id' => '',
'import' => 'İdxal Et',
'import_change_file' => 'Dəyiş',
'import_csv' => 'CSV İdxalı',
'import_full_path' => 'CSV faylına tam yol tələb olunur',
'import_remove_file' => 'Sil',
'import_select_file' => 'Fayl Seç',
'inv' => 'inv',
'inv' => '',
'last_name' => 'Soyad',
'last_name_required' => 'Soyad tələb olunan sahədir.',
'last_page' => 'Son',
@@ -50,9 +49,7 @@ return [
'list_of' => 'Siyahısı',
'logo' => 'Loqo',
'logo_mark' => 'Nişan',
'logout' => 'Çıxış',
'manager' => 'Menecer',
'migration_needed' => 'Girişdən sonra bazaya {0} köçməsi başlayacaq.',
'new' => 'Yeni',
'no' => 'Xeyr',
'no_persons_to_display' => 'Göstərmək üçün heç kim yoxdur.',
@@ -60,10 +57,9 @@ return [
'or' => 'VƏ YA',
'people' => 'İnsanlar',
'phone_number' => 'Telefon Nömrəsi',
'phone_number_required' => 'Telefon nömrəsi tələb olunan sahədir.',
'please_visit_my' => 'Zəhmət olmasa ziyarət edin',
'position' => 'Vəzifə',
'powered_by' => 'Dəstəkləyən',
'powered_by' => 'Yaradıcı {app} {version}',
'price' => 'Qiymət',
'print' => 'Çap Et',
'remove' => 'Sil',
@@ -73,14 +69,11 @@ return [
'search' => 'Axtarış',
'search_options' => 'Axtarış seçimləri',
'searched_for' => 'Axtarıldı',
'software_short' => 'OSPOS',
'software_title' => 'Açıq Mənbəli Satış Nöqtəsi',
'state' => 'Əyalət',
'submit' => 'Təsdiqlə',
'total_spent' => 'Cəmi Xərclənən',
'unknown' => 'Naməlum',
'view_recent_sales' => 'Son Satışlara Bax',
'website' => 'opensourcepos.org',
'welcome' => 'Xoş Gəlmisiniz',
'welcome_message' => 'OSPOS-a xoş gəlmisiniz, başlamaq üçün aşağıdakı modullardan birinə klikləyin.',
'yes' => 'Bəli',
+3 -3
View File
@@ -118,10 +118,10 @@ return [
'email_receipt_check_behaviour_last' => 'Son seçimi yadda saxla',
'email_receipt_check_behaviour_never' => 'Həmişə işarələnməyib',
'email_smtp_crypto' => 'SMTP Şifrələmə',
'email_smtp_host' => 'SMTP Server',
'email_smtp_host' => '',
'email_smtp_pass' => 'SMTP Şifrə',
'email_smtp_pass_set' => '',
'email_smtp_port' => 'SMTP Port',
'email_smtp_port' => '',
'email_smtp_timeout' => 'SMTP Vaxt Aşımı (s)',
'email_smtp_user' => 'SMTP İstifadəçi Adı',
'enable_avatar' => 'Avatarı Aktivləşdir',
@@ -225,7 +225,7 @@ return [
'payment_options_order' => 'Ödəniş Seçimlərinin Sırası',
'payment_reference_code_length_limits' => 'Ödəniş İstinad Kodu<br>Uzunluq Limitləri',
'payment_reference_code_length_max_label' => 'Maks',
'payment_reference_code_length_min_label' => 'Min',
'payment_reference_code_length_min_label' => '',
'perm_risk' => 'Yanlış icazələr bu proqram təminatını risk altına qoyur.',
'phone' => 'Şirkətin Telefonu',
'phone_required' => 'Şirkətin Telefonu tələb olunan sahədir.',
+1 -1
View File
@@ -19,6 +19,6 @@ return [
'to' => 'Buna',
'today' => 'Bugün',
'today_last_year' => 'Keçən il bu gün',
'weekstart' => '0',
'weekstart' => '1',
'yesterday' => 'Dünən',
];
+1
View File
@@ -41,6 +41,7 @@ return [
'successful_deleted' => 'Siz uğurla sildiniz',
'successful_updating' => 'Siz əməkdaşı uğurla yenilədiniz',
'system_language' => 'Sistem Dili',
'unauthorized_modify' => '',
'unsuccessful_change_password' => 'Şifrənin dəyişdirilməsi uğursuz oldu.',
'update' => 'Əməkdaşı Yenilə',
'username' => 'İstifadəçi Adı',
+1 -1
View File
@@ -27,7 +27,7 @@ return [
'due_filter' => 'Borc',
'employee' => 'Yaradan',
'error_adding_updating' => 'Xərc əlavə edilərkən/yenilənərkən xəta baş verdi',
'expense_id' => 'Id',
'expense_id' => '',
'expenses_employee' => 'Əməkdaş',
'info' => 'Xərc Məlumatı',
'ip_address' => 'IP Ünvanı',
+2 -4
View File
@@ -17,12 +17,10 @@ return [
'item' => 'Mal',
'item_kit_number' => 'Barkod',
'item_kit_number_duplicate' => 'Mal Dəsti Nömrəsi verilənlər bazasında artıq mövcuddur.',
'item_number' => 'Mal Nömrəsi',
'item_number_duplicate' => 'Mal Nömrəsi verilənlər bazasında artıq mövcuddur.',
'items' => 'Mallar',
'kit' => 'Dəstin İd',
'kit_and_components' => 'Dəst və Komponentlər',
'kit_and_stock' => 'Dəst və Anbar',
'kit_and_components' => 'Dəst və Komponentlər',
'kit_and_stock' => 'Dəst və Anbar',
'kit_only' => 'Yalnız Dəst',
'name' => 'Mal Dəstinin Adı',
'new' => 'Yeni Mal Dəsti',
+1 -1
View File
@@ -43,7 +43,7 @@ return [
'error_updating_multiple' => 'Malları yeniləyərkən xəta baş verdi',
'generate_barcodes' => 'Barkod Yarat',
'hsn_code' => 'Harmonizə Sistem Nomenklaturası',
'image' => 'Avatar',
'image' => '',
'import_items_csv' => 'CSV-dən Mal İdxalı',
'info_provided_by' => 'Məlumatı təqdim edən',
'inventory' => 'İnventar',
+27 -27
View File
@@ -1,31 +1,31 @@
<?php
return [
'gcaptcha' => 'Mən robot deyiləm.',
'go' => 'Daxil ol',
'initialization_message' => 'Verilənlər bazası hələ ilkin qurulmayıb.',
'initialization_required' => 'Verilənlər Bazasının İlkin Qurulması Tələb Olunur',
'initialize' => 'İlkin qur',
'invalid_gcaptcha' => 'Zəhmət olmasa robot olmadığınızı təsdiqləyin.',
'invalid_installation' => 'Quraşdırma düzgün deyil, php.ini faylını yoxlayın.',
'invalid_username_and_password' => 'Yanlış istifadəçi adı və/və ya şifrə.',
'login' => 'Giriş',
'logout' => 'Çıxış',
'migrating_database' => 'Verilənlər Bazası Miqrasiya Edilir',
'migration_auth_message' => 'Verilənlər bazasının {0} versiyasına miqrasiyasını təsdiqləmək üçün administrator məlumatları tələb olunur. Davam etmək üçün daxil olun.',
'migration_complete' => 'Verilənlər bazası uğurla ilkin quruldu!',
'migration_complete_login' => 'İndi daxil ola bilərsiniz.',
'migration_complete_migrate' => 'Verilənlər bazası uğurla miqrasiya edildi!',
'migration_complete_redirect' => 'Miqrasiya tamamlandı. Giriş səhifəsinə yönləndirilir...',
'migration_error_connection' => 'Bağlantı xətası. Zəhmət olmasa yenidən cəhd edin.',
'migration_failed' => 'Miqrasiya uğursuz oldu',
'migration_initializing' => 'Verilənlər Bazası İlkin Qurulur',
'migration_needed' => 'Girişdən sonra verilənlər bazasının {0} versiyasına miqrasiyası başlayacaq.',
'migration_required' => 'Verilənlər Bazasının Miqrasiyası Tələb Olunur',
'migration_running' => 'Verilənlər bazası miqrasiyası icra edilir...',
'password' => 'Şifrə',
'required_username' => 'İstifadəçi adı sahəsi tələb olunur.',
'too_many_attempts' => 'Həddindən artıq cəhd. Zəhmət olmasa bir az gözləyib yenidən cəhd edin.',
'username' => 'İstifadəçi adı',
'welcome' => '{0}-a xoş gəlmisiniz!',
'gcaptcha' => 'Mən robot deyiləm.',
'go' => 'Daxil ol',
'initialization_message' => 'Verilənlər bazası hələ ilkin qurulmayıb.',
'initialization_required' => 'Verilənlər Bazasının İlkin Qurulması Tələb Olunur',
'initialize' => 'İlkin qur',
'invalid_gcaptcha' => 'Zəhmət olmasa robot olmadığınızı təsdiqləyin.',
'invalid_installation' => 'Quraşdırma düzgün deyil, php.ini faylını yoxlayın.',
'invalid_username_and_password' => 'Yanlış istifadəçi adı və/və ya şifrə.',
'login' => 'Giriş',
'logout' => 'Çıxış',
'migrating_database' => 'Verilənlər Bazası Miqrasiya Edilir',
'migration_auth_message' => 'Verilənlər bazasının {0} versiyasına miqrasiyasını təsdiqləmək üçün administrator məlumatları tələb olunur. Davam etmək üçün daxil olun.',
'migration_complete' => 'Verilənlər bazası uğurla ilkin quruldu!',
'migration_complete_login' => 'İndi daxil ola bilərsiniz.',
'migration_complete_migrate' => 'Verilənlər bazası uğurla miqrasiya edildi!',
'migration_complete_redirect' => 'Miqrasiya tamamlandı. Giriş səhifəsinə yönləndirilir...',
'migration_error_connection' => 'Bağlantı xətası. Zəhmət olmasa yenidən cəhd edin.',
'migration_failed' => 'Miqrasiya uğursuz oldu',
'migration_initializing' => 'Verilənlər Bazası İlkin Qurulur',
'migration_needed' => 'Girişdən sonra verilənlər bazasının {0} versiyasına miqrasiyası başlayacaq.',
'migration_required' => 'Verilənlər Bazasının Miqrasiyası Tələb Olunur',
'migration_running' => 'Verilənlər bazası miqrasiyası icra edilir...',
'password' => 'Şifrə',
'required_username' => 'İstifadəçi adı sahəsi tələb olunur.',
'too_many_attempts' => 'Həddindən artıq cəhd. Zəhmət olmasa bir az gözləyib yenidən cəhd edin.',
'username' => 'İstifadəçi adı',
'welcome' => '{0}-a xoş gəlmisiniz!',
];
+2 -2
View File
@@ -11,6 +11,6 @@ return [
'phone_number_required' => 'Telefon nömrəsi tələb olunur',
'phone_placeholder' => 'Mobil Nömrə(lər) burada...',
'sms_send' => 'SMS Göndər',
'successfully_sent' => 'Mesaj uğurla göndərildi: ',
'unsuccessfully_sent' => 'Mesaj göndərilmədi: ',
'successfully_sent' => 'Mesaj uğurla göndərildi:',
'unsuccessfully_sent' => 'Mesaj göndərilmədi:',
];
+1
View File
@@ -28,6 +28,7 @@ return [
'item_name' => 'Mal Adı',
'mode' => 'Qəbul Rejimi',
'new_supplier' => 'Yeni Təchizatçı',
'not_authorized' => '',
'one_or_multiple' => 'qəbul(lar)',
'print_after_sale' => 'Satışdan Sonra Çap Et',
'quantity' => 'Say',
+1 -1
View File
@@ -9,7 +9,7 @@ return [
'category' => 'Kateqoriya',
'code_canceled' => 'LĞV',
'code_invoice' => 'HES',
'code_pos' => 'POS',
'code_pos' => '',
'code_quote' => 'T',
'code_return' => 'GER',
'code_type' => 'Növ',
+5 -4
View File
@@ -66,7 +66,7 @@ return [
'giftcard_number' => 'Hədiyyə Kartının Nömrəsi',
'group_by_category' => 'Kateqoriyaya görə Qrupla',
'group_by_type' => 'Növə görə Qrupla',
'hsn' => 'HSN',
'hsn' => '',
'id' => 'Satış ID',
'include_prices' => 'Qiymətlər daxil edilsin?',
'insufficient_giftcard_balance' => 'Bu ödəniş üçün hədiyyə kartının balansı yetərli deyil.',
@@ -123,8 +123,9 @@ return [
'new_item' => 'Yeni Mal',
'no_description' => 'Təsvir yoxdur',
'no_items_in_cart' => 'Səbətdə heç bir mal yoxdur.',
'no_sales_to_display' => 'Göstəriləcək Satış yoxdur.',
'none_selected' => 'Silmək üçün heç bir Satış seçməmisiniz.',
'nontaxed_ind' => ' ',
'nontaxed_ind' => '',
'not_authorized' => 'Bu əməliyyata icazə verilmir.',
'one_or_multiple' => 'satış(lar)',
'payment' => 'Ödəniş Növü',
@@ -182,7 +183,7 @@ return [
'successfully_updated' => 'Satış uğurla yeniləndi.',
'suspend_sale' => 'Dayandır',
'suspended_doc_id' => 'Sənəd',
'suspended_sale_id' => 'ID',
'suspended_sale_id' => '',
'suspended_sales' => 'Dayandırılmış',
'table' => 'Masa',
'takings' => 'Günlük Satışlar',
@@ -202,7 +203,7 @@ return [
'unsuspend' => 'Bərpa Et',
'unsuspend_and_delete' => 'Əməliyyat',
'update' => 'Yenilə',
'upi' => 'UPI',
'upi' => '',
'wallet' => 'Cüzdan',
'work_order' => 'İş Sifarişi',
'work_order_number' => 'İş Sifarişi Nömrəsi',
+1
View File
@@ -12,6 +12,7 @@ return [
'default_tax_rate' => 'Standart Vergi Dərəcəsi',
'error_adding_updating' => 'Vergi Kodu əlavə edilmədi və ya yenilənmədi',
'group_seq' => 'Qrup Ardıcıllığı',
'jurisdiction_id' => '',
'jurisdiction_name' => 'Yurisdiksiya Adı',
'name' => 'Ad',
'new' => 'Yeni Vergi',
+1 -1
View File
@@ -6,10 +6,10 @@ return [
'confirm_restore' => '',
'definition_cannot_be_deleted' => '',
'definition_error_adding_updating' => '',
'definition_invalid_group' => '',
'definition_flags' => '',
'definition_group' => '',
'definition_id' => '',
'definition_invalid_group' => '',
'definition_name' => '',
'definition_name_required' => '',
'definition_one_or_multiple' => '',
+2 -9
View File
@@ -11,7 +11,6 @@ return [
'comments' => 'Коментари',
'common' => 'Често срещани',
'confirm_search' => 'Избрали сте един или повече редове, след търсене няма да бъдат избрани. Наистина ли искате да подадете това търсене?',
'copyrights' => '© 2010 - {0}',
'correct_errors' => 'Моля, коригирайте установените грешки преди записване',
'country' => 'Държава',
'dashboard' => '',
@@ -50,20 +49,17 @@ return [
'list_of' => 'Списък с',
'logo' => '',
'logo_mark' => '',
'logout' => 'Излизане от профила',
'manager' => '',
'migration_needed' => 'Мигриране на база данни ще започне след влизане.',
'new' => 'Нов',
'no' => '',
'no_persons_to_display' => 'Няма хора за показване.',
'none_selected_text' => 'Нищо не е избрано',
'none_selected_text' => '[Нищо не е избрано]',
'or' => 'Или',
'people' => '',
'phone_number' => 'Телефонен номер',
'phone_number_required' => '',
'please_visit_my' => 'Моля, посетете',
'position' => '',
'powered_by' => 'С подкрепата на',
'powered_by' => 'С подкрепата на {app} {version}',
'price' => 'Цена',
'print' => 'Принтиране',
'remove' => 'Премахване',
@@ -73,14 +69,11 @@ return [
'search' => 'Търсене',
'search_options' => 'Опции за търсене',
'searched_for' => 'Търсене за',
'software_short' => '',
'software_title' => '',
'state' => 'Щат',
'submit' => 'Изпращане',
'total_spent' => 'Общо изразходвани',
'unknown' => 'Неизвестен',
'view_recent_sales' => 'Преглед на последните продажби',
'website' => 'Уебсайт',
'welcome' => 'Добре дошли',
'welcome_message' => 'Добре дошли в OSPOS, кликнете върху модул по-долу, за да започнете.',
'yes' => '',
+240 -238
View File
@@ -3,7 +3,7 @@
return [
'address' => 'Адрес на компанията',
'address_required' => 'Адресът на компанията е задължително поле.',
'all_set' => 'All file permissions are set correctly!',
'all_set' => '',
'allow_duplicate_barcodes' => 'Разрешаване на дублирани баркодове',
'apostrophe' => 'апостроф',
'backup_button' => 'резервно копие',
@@ -13,25 +13,25 @@ return [
'barcode_configuration' => 'Конфигуриране на баркод',
'barcode_content' => 'Съдържание на баркод',
'barcode_first_row' => 'Ред 1',
'barcode_font' => 'Font',
'barcode_formats' => 'Input Formats',
'barcode_generate_if_empty' => 'Generate if empty.',
'barcode_height' => 'Height (px)',
'barcode_id' => 'Item Id/Name',
'barcode_info' => 'Barcode Configuration Information',
'barcode_layout' => 'Barcode Layout',
'barcode_name' => 'Name',
'barcode_number' => 'Barcode',
'barcode_number_in_row' => 'Number in row',
'barcode_page_cellspacing' => 'Display page cellspacing.',
'barcode_page_width' => 'Display page width',
'barcode_price' => 'Price',
'barcode_second_row' => 'Row 2',
'barcode_third_row' => 'Row 3',
'barcode_tooltip' => 'Warning: This feature can cause duplicate items to be imported or created. Do not use if you do not want duplicate barcodes.',
'barcode_type' => 'Barcode Type',
'barcode_width' => 'Width (px)',
'bottom' => 'Bottom',
'barcode_font' => '',
'barcode_formats' => '',
'barcode_generate_if_empty' => '',
'barcode_height' => '',
'barcode_id' => '',
'barcode_info' => '',
'barcode_layout' => '',
'barcode_name' => '',
'barcode_number' => '',
'barcode_number_in_row' => '',
'barcode_page_cellspacing' => '',
'barcode_page_width' => '',
'barcode_price' => '',
'barcode_second_row' => '',
'barcode_third_row' => '',
'barcode_tooltip' => '',
'barcode_type' => '',
'barcode_width' => '',
'bottom' => '',
'cash_button' => '',
'cash_button_1' => '',
'cash_button_2' => '',
@@ -39,91 +39,91 @@ return [
'cash_button_4' => '',
'cash_button_5' => '',
'cash_button_6' => '',
'cash_decimals' => 'Cash Decimals',
'cash_decimals_tooltip' => 'If Cash Decimals and Currency Decimals are the same then no cash rounding will take place.',
'cash_rounding' => 'Cash Rounding',
'cash_decimals' => '',
'cash_decimals_tooltip' => '',
'cash_rounding' => '',
'category_dropdown' => '',
'center' => 'Center',
'center' => '',
'change_apperance_tooltip' => '',
'comma' => 'comma',
'company' => 'Company Name',
'comma' => '',
'company' => '',
'company_avatar' => '',
'company_change_image' => 'Change Image',
'company_logo' => 'Company Logo',
'company_remove_image' => 'Remove Image',
'company_required' => 'Company name is a required field',
'company_select_image' => 'Select Image',
'company_website_url' => 'Company website is not a valid URL (http://...).',
'country_codes' => 'Country Codes',
'country_codes_tooltip' => 'Comma separated list of country codes for nominatim address lookup.',
'company_change_image' => '',
'company_logo' => '',
'company_remove_image' => '',
'company_required' => '',
'company_select_image' => '',
'company_website_url' => '',
'country_codes' => '',
'country_codes_tooltip' => '',
'currency_code' => '',
'currency_decimals' => 'Currency Decimals',
'currency_symbol' => 'Currency Symbol',
'currency_decimals' => '',
'currency_symbol' => '',
'current_employee_only' => '',
'customer_reward' => 'Reward',
'customer_reward_duplicate' => 'Reward must be unique.',
'customer_reward_enable' => 'Enable Customer Rewards',
'customer_reward_invalid_chars' => 'Reward can not contain \'_\'',
'customer_reward_required' => 'Reward is a required field',
'customer_sales_tax_support' => 'Customer Sales Tax Support',
'date_or_time_format' => 'Date and Time Filter',
'datetimeformat' => 'Date and Time Format',
'decimal_point' => 'Decimal Point',
'default_barcode_font_size_number' => 'Default Barcode Font Size must be a number.',
'default_barcode_font_size_required' => 'Default Barcode Font Size is a required field.',
'default_barcode_height_number' => 'Default Barcode Height must be a number.',
'default_barcode_height_required' => 'Default Barcode Height is a required field.',
'default_barcode_num_in_row_number' => 'Default Barcode Number in Row must be a number.',
'default_barcode_num_in_row_required' => 'Default Barcode Number in Row is a required field.',
'default_barcode_page_cellspacing_number' => 'Default Barcode Page Cellspacing must be a number.',
'default_barcode_page_cellspacing_required' => 'Default Barcode Page Cellspacing is a required field.',
'default_barcode_page_width_number' => 'Default Barcode Page Width must be a number.',
'default_barcode_page_width_required' => 'Default Barcode Page Width is a required field.',
'default_barcode_width_number' => 'Default Barcode Width must be a number.',
'default_barcode_width_required' => 'Default Barcode Width is a required field.',
'customer_reward' => '',
'customer_reward_duplicate' => '',
'customer_reward_enable' => '',
'customer_reward_invalid_chars' => '',
'customer_reward_required' => '',
'customer_sales_tax_support' => '',
'date_or_time_format' => '',
'datetimeformat' => '',
'decimal_point' => '',
'default_barcode_font_size_number' => '',
'default_barcode_font_size_required' => '',
'default_barcode_height_number' => '',
'default_barcode_height_required' => '',
'default_barcode_num_in_row_number' => '',
'default_barcode_num_in_row_required' => '',
'default_barcode_page_cellspacing_number' => '',
'default_barcode_page_cellspacing_required' => '',
'default_barcode_page_width_number' => '',
'default_barcode_page_width_required' => '',
'default_barcode_width_number' => '',
'default_barcode_width_required' => '',
'default_item_columns' => '',
'default_origin_tax_code' => 'Default Origin Tax Code',
'default_origin_tax_code' => '',
'default_receivings_discount' => '',
'default_receivings_discount_number' => '',
'default_receivings_discount_required' => '',
'default_sales_discount' => 'Default Sales Discount %',
'default_sales_discount_number' => 'Default Sales Discount must be a number.',
'default_sales_discount_required' => 'Default Sales Discount is a required field.',
'default_sales_discount' => '',
'default_sales_discount_number' => '',
'default_sales_discount_required' => '',
'default_tax_category' => '',
'default_tax_code' => '',
'default_tax_jurisdiction' => '',
'default_tax_name_number' => 'Default Tax Name must be a string.',
'default_tax_name_required' => 'Default Tax Name is a required field.',
'default_tax_rate' => 'Default Tax Rate %',
'default_tax_rate_1' => 'Tax 1 Rate',
'default_tax_rate_2' => 'Tax 2 Rate',
'default_tax_name_number' => '',
'default_tax_name_required' => '',
'default_tax_rate' => '',
'default_tax_rate_1' => '',
'default_tax_rate_2' => '',
'default_tax_rate_3' => '',
'default_tax_rate_number' => 'Default Tax Rate must be a number.',
'default_tax_rate_non_negative' => '',
'default_tax_rate_required' => 'Default Tax Rate is a required field.',
'default_tax_rate_number' => '',
'default_tax_rate_required' => '',
'derive_sale_quantity' => '',
'derive_sale_quantity_tooltip' => '',
'dinner_table' => 'Table',
'dinner_table_duplicate' => 'Table must be unique.',
'dinner_table_enable' => 'Enable Dinner Tables',
'dinner_table_invalid_chars' => 'Table Name can not contain \'_\'.',
'dinner_table_required' => 'Table is a required field.',
'dot' => 'dot',
'email' => 'Email',
'email_configuration' => 'Email Configuration',
'email_mailpath' => 'Path to Sendmail',
'email_protocol' => 'Protocol',
'dinner_table' => '',
'dinner_table_duplicate' => '',
'dinner_table_enable' => '',
'dinner_table_invalid_chars' => '',
'dinner_table_required' => '',
'dot' => '',
'email' => '',
'email_configuration' => '',
'email_mailpath' => '',
'email_protocol' => '',
'email_receipt_check_behaviour' => '',
'email_receipt_check_behaviour_always' => '',
'email_receipt_check_behaviour_last' => '',
'email_receipt_check_behaviour_never' => '',
'email_smtp_crypto' => 'SMTP Encryption',
'email_smtp_host' => 'SMTP Server',
'email_smtp_pass' => 'SMTP Password',
'email_smtp_crypto' => '',
'email_smtp_host' => '',
'email_smtp_pass' => '',
'email_smtp_pass_set' => '',
'email_smtp_port' => 'SMTP Port',
'email_smtp_timeout' => 'SMTP Timeout (s)',
'email_smtp_user' => 'SMTP Username',
'email_smtp_port' => '',
'email_smtp_timeout' => '',
'email_smtp_user' => '',
'enable_avatar' => '',
'enable_avatar_tooltip' => '',
'enable_dropdown_tooltip' => '',
@@ -132,207 +132,209 @@ return [
'enable_right_bar_tooltip' => '',
'enforce_privacy' => '',
'enforce_privacy_tooltip' => '',
'fax' => 'Fax',
'file_perm' => 'There are problems with file permissions please fix and reload this page.',
'financial_year' => 'Fiscal Year Start',
'financial_year_apr' => '1st of April',
'financial_year_aug' => '1st of August',
'financial_year_dec' => '1st of December',
'financial_year_feb' => '1st of February',
'financial_year_jan' => '1st of January',
'financial_year_jul' => '1st of July',
'financial_year_jun' => '1st of June',
'financial_year_mar' => '1st of March',
'financial_year_may' => '1st of May',
'financial_year_nov' => '1st of November',
'financial_year_oct' => '1st of October',
'financial_year_sep' => '1st of September',
'fax' => '',
'file_perm' => '',
'financial_year' => '',
'financial_year_apr' => '',
'financial_year_aug' => '',
'financial_year_dec' => '',
'financial_year_feb' => '',
'financial_year_jan' => '',
'financial_year_jul' => '',
'financial_year_jun' => '',
'financial_year_mar' => '',
'financial_year_may' => '',
'financial_year_nov' => '',
'financial_year_oct' => '',
'financial_year_sep' => '',
'floating_labels' => '',
'gcaptcha_enable' => 'Login Page reCAPTCHA',
'gcaptcha_secret_key' => 'reCAPTCHA Secret Key',
'gcaptcha_secret_key_required' => 'reCAPTCHA Secret Key is a required field',
'gcaptcha_site_key' => 'reCAPTCHA Site Key',
'gcaptcha_site_key_required' => 'reCAPTCHA Site Key is a required field',
'gcaptcha_tooltip' => 'Protect the Login page with Google reCAPTCHA, click the icon for an API key pair.',
'general' => 'General',
'general_configuration' => 'General Configuration',
'giftcard_number' => 'Gift Card Number',
'giftcard_random' => 'Generate Random',
'giftcard_series' => 'Generate in Series',
'gcaptcha_enable' => '',
'gcaptcha_secret_key' => '',
'gcaptcha_secret_key_required' => '',
'gcaptcha_site_key' => '',
'gcaptcha_site_key_required' => '',
'gcaptcha_tooltip' => '',
'general' => '',
'general_configuration' => '',
'giftcard_number' => '',
'giftcard_random' => '',
'giftcard_series' => '',
'image_allowed_file_types' => '',
'image_max_height_tooltip' => '',
'image_max_size_tooltip' => '',
'image_max_width_tooltip' => '',
'image_restrictions' => '',
'include_hsn' => '',
'info' => 'Information',
'info_configuration' => 'Store Information',
'info' => '',
'info_configuration' => '',
'input_groups' => '',
'invoice' => 'Invoice',
'invoice_configuration' => 'Invoice Print Settings',
'invoice_default_comments' => 'Default Invoice Comments',
'invoice_email_message' => 'Invoice Email Template',
'invoice_enable' => 'Enable Invoicing',
'invoice_printer' => 'Invoice Printer',
'integrations' => '',
'integrations_configuration' => '',
'invoice' => '',
'invoice_configuration' => '',
'invoice_default_comments' => '',
'invoice_email_message' => '',
'invoice_enable' => '',
'invoice_printer' => '',
'invoice_type' => '',
'is_readable' => '',
'is_writable' => 'is writable, but the permissions are higher than 750.',
'is_writable' => '',
'item_markup' => '',
'jsprintsetup_required' => 'Warning: This functionality will only work if you have the FireFox jsPrintSetup addon installed. Save anyway?',
'language' => 'Language',
'last_used_invoice_number' => 'Last used Invoice Number',
'last_used_quote_number' => 'Last used Quote Number',
'last_used_work_order_number' => 'Last used W/O Number',
'left' => 'Left',
'license' => 'License',
'license_configuration' => 'License Statement',
'line_sequence' => 'Line Sequence',
'lines_per_page' => 'Lines per Page',
'jsprintsetup_required' => '',
'language' => '',
'last_used_invoice_number' => '',
'last_used_quote_number' => '',
'last_used_work_order_number' => '',
'left' => '',
'license' => '',
'license_configuration' => '',
'line_sequence' => '',
'lines_per_page' => '',
'lines_per_page_number' => 'Линиите на страница трябва да са число.',
'lines_per_page_required' => 'Lines per Page is a required field.',
'locale' => 'Localization',
'locale_configuration' => 'Localization Configuration',
'locale_info' => 'Localization Configuration Information',
'location' => 'Stock',
'location_configuration' => 'Stock Locations',
'location_info' => 'Location Configuration Information',
'lines_per_page_required' => '',
'locale' => '',
'locale_configuration' => '',
'locale_info' => '',
'location' => '',
'location_configuration' => '',
'location_info' => '',
'login_form' => '',
'logout' => 'Do you want to make a backup before logging out? Click [OK] to backup or [Cancel] to logout.',
'message' => 'Message',
'message_configuration' => 'Message Configuration',
'msg_msg' => 'Saved Text Message',
'msg_msg_placeholder' => 'If you wish to use a SMS template save your message here, otherwise leave the box blank.',
'msg_pwd' => 'SMS-API Password',
'logout' => '',
'mailpath_invalid' => 'Невалиден път до sendmail. Разрешени са само букви, цифри, тирета, долни черти, наклонени черти, обратни наклонени черти, двоеточия, интервали и точки.',
'message' => '',
'message_configuration' => '',
'msg_msg' => '',
'msg_msg_placeholder' => '',
'msg_pwd' => '',
'msg_pwd_set' => '',
'msg_src' => 'SMS-API Sender ID',
'msg_src_required' => 'SMS-API Sender ID is a required field',
'msg_uid' => 'SMS-API Username',
'msg_uid_required' => 'SMS-API Username is a required field',
'msg_src' => '',
'msg_src_required' => '',
'msg_uid' => '',
'msg_uid_required' => '',
'multi_pack_enabled' => '',
'no_risk' => 'No security/vulnerability risks.',
'none' => 'none',
'notify_alignment' => 'Notification Popup Position',
'number_format' => 'Number Format',
'number_locale' => 'Localization',
'number_locale_invalid' => 'The entered locale is invalid. Check the link in the tooltip to find a valid locale.',
'number_locale_required' => 'Number Locale is a required field.',
'number_locale_tooltip' => 'Find a suitable locale through this link.',
'no_risk' => '',
'none' => '',
'notify_alignment' => '',
'number_format' => '',
'number_locale' => '',
'number_locale_invalid' => '',
'number_locale_required' => '',
'number_locale_tooltip' => '',
'os_timezone' => '',
'ospos_info' => '',
'payment_options_order' => 'Payment Options Order',
'payment_options_order' => '',
'payment_reference_code_length_limits' => 'Референтен код на плащане<br>Ограничения на дължината',
'payment_reference_code_length_max_label' => 'Макс',
'payment_reference_code_length_min_label' => 'Мин',
'perm_risk' => 'Permissions higher than 750 leaves this software at risk.',
'phone' => 'Company Phone',
'phone_required' => 'Company Phone is a required field.',
'print_bottom_margin' => 'Margin Bottom',
'print_bottom_margin_number' => 'Margin Bottom must be a number.',
'print_bottom_margin_required' => 'Margin Bottom is a required field.',
'perm_risk' => '',
'phone' => '',
'phone_required' => '',
'print_bottom_margin' => '',
'print_bottom_margin_number' => '',
'print_bottom_margin_required' => '',
'print_delay_autoreturn' => '',
'print_delay_autoreturn_number' => '',
'print_delay_autoreturn_required' => '',
'print_footer' => 'Print Browser Footer',
'print_header' => 'Print Browser Header',
'print_left_margin' => 'Margin Left',
'print_left_margin_number' => 'Margin Left must be a number.',
'print_left_margin_required' => 'Margin Left is a required field.',
'print_footer' => '',
'print_header' => '',
'print_left_margin' => '',
'print_left_margin_number' => '',
'print_left_margin_required' => '',
'print_receipt_check_behaviour' => '',
'print_receipt_check_behaviour_always' => '',
'print_receipt_check_behaviour_last' => '',
'print_receipt_check_behaviour_never' => '',
'print_right_margin' => 'Margin Right',
'print_right_margin_number' => 'Margin Right must be a number.',
'print_right_margin_required' => 'Margin Right is a required field.',
'print_silently' => 'Show Print Dialog',
'print_top_margin' => 'Margin Top',
'print_top_margin_number' => 'Margin Top must be a number.',
'print_top_margin_required' => 'Margin Top is a required field.',
'quantity_decimals' => 'Quantity Decimals',
'print_right_margin' => '',
'print_right_margin_number' => '',
'print_right_margin_required' => '',
'print_silently' => '',
'print_top_margin' => '',
'print_top_margin_number' => '',
'print_top_margin_required' => '',
'quantity_decimals' => '',
'quick_cash_enable' => '',
'quote_default_comments' => '',
'receipt' => 'Receipt',
'receipt' => '',
'receipt_category' => '',
'receipt_configuration' => 'Receipt Print Settings',
'receipt_default' => 'Default',
'receipt_font_size' => 'Font Size',
'receipt_font_size_number' => 'Font Size must be a number.',
'receipt_font_size_required' => 'Font Size is a required field.',
'receipt_info' => 'Receipt Configuration Information',
'receipt_printer' => 'Ticket Printer',
'receipt_short' => 'Short',
'receipt_show_company_name' => 'Show Company Name',
'receipt_show_description' => 'Show Description',
'receipt_show_serialnumber' => 'Show Serial Number',
'receipt_configuration' => '',
'receipt_default' => '',
'receipt_font_size' => '',
'receipt_font_size_number' => '',
'receipt_font_size_required' => '',
'receipt_info' => '',
'receipt_printer' => '',
'receipt_short' => '',
'receipt_show_company_name' => '',
'receipt_show_description' => '',
'receipt_show_serialnumber' => '',
'receipt_show_tax_ind' => '',
'receipt_show_taxes' => 'Show Taxes',
'receipt_show_total_discount' => 'Show Total Discount',
'receipt_template' => 'Receipt Template',
'receiving_calculate_average_price' => 'Calc avg. Price (Receiving)',
'recv_invoice_format' => 'Receivings Invoice Format',
'register_mode_default' => 'Default Register Mode',
'receipt_show_taxes' => '',
'receipt_show_total_discount' => '',
'receipt_template' => '',
'receiving_calculate_average_price' => '',
'recv_invoice_format' => '',
'register_mode_default' => '',
'report_an_issue' => '',
'return_policy_required' => 'Return policy is a required field.',
'reward' => 'Reward',
'reward_configuration' => 'Reward Configuration',
'right' => 'Right',
'sales_invoice_format' => 'Sales Invoice Format',
'sales_quote_format' => 'Sales Quote Format',
'mailpath_invalid' => 'Невалиден път до sendmail. Разрешени са само букви, цифри, тирета, долни черти, наклонени черти, обратни наклонени черти, двоеточия, интервали и точки.',
'saved_successfully' => 'Configuration save successful.',
'saved_unsuccessfully' => 'Configuration save failed.',
'security_issue' => 'Security Vulnerability Warning',
'server_notice' => 'Please use the below info for issue reporting.',
'return_policy_required' => '',
'reward' => '',
'reward_configuration' => '',
'right' => '',
'sales_invoice_format' => '',
'sales_quote_format' => '',
'saved_successfully' => '',
'saved_unsuccessfully' => '',
'security_issue' => '',
'server_notice' => '',
'service_charge' => '',
'show_due_enable' => '',
'show_office_group' => 'Show office icon',
'statistics' => 'Send Statistics',
'statistics_tooltip' => 'Send statistics for development and feature improvement purposes.',
'stock_location' => 'Stock location',
'stock_location_default' => 'Склад по подразбиране',
'stock_location_default_header' => 'По подразбиране',
'stock_location_duplicate' => 'Stock Location must be unique.',
'stock_location_invalid_chars' => 'Stock Location can not contain \'_\'.',
'stock_location_name_header' => 'Име',
'stock_location_required' => 'Stock location is a required field.',
'suggestions_fifth_column' => '',
'suggestions_first_column' => 'Column 1',
'suggestions_fourth_column' => '',
'suggestions_layout' => 'Search Suggestions Layout',
'suggestions_second_column' => 'Column 2',
'suggestions_third_column' => 'Column 3',
'shortcuts' => '',
'shortcuts_configuration' => '',
'shortcuts_duplicate_bindings' => '',
'shortcuts_save_error' => '',
'system_conf' => 'Setup & Conf',
'system_info' => 'System Info',
'show_due_enable' => '',
'show_office_group' => '',
'statistics' => '',
'statistics_tooltip' => '',
'stock_location' => '',
'stock_location_default' => 'Склад по подразбиране',
'stock_location_default_header' => 'По подразбиране',
'stock_location_duplicate' => '',
'stock_location_invalid_chars' => '',
'stock_location_name_header' => 'Име',
'stock_location_required' => '',
'suggestions_fifth_column' => '',
'suggestions_first_column' => '',
'suggestions_fourth_column' => '',
'suggestions_layout' => '',
'suggestions_second_column' => '',
'suggestions_third_column' => '',
'system_conf' => '',
'system_info' => '',
'system_info_copy' => '',
'system_info_copy_error' => '',
'system_info_copy_success' => '',
'table' => 'Table',
'table_configuration' => 'Table Configuration',
'takings_printer' => 'Receipt Printer',
'tax' => 'Tax',
'tax_category' => 'Tax Category',
'table' => '',
'table_configuration' => '',
'takings_printer' => '',
'tax' => '',
'tax_category' => '',
'tax_category_duplicate' => '',
'tax_category_invalid_chars' => '',
'tax_category_required' => '',
'tax_category_used' => 'Tax category cannot be deleted because it is being used.',
'tax_configuration' => 'Tax Configuration',
'tax_decimals' => 'Tax Decimals',
'tax_category_used' => '',
'tax_configuration' => '',
'tax_decimals' => '',
'tax_id' => '',
'tax_included' => 'Tax Included',
'theme' => 'Theme',
'tax_included' => '',
'theme' => '',
'theme_preview' => '',
'thousands_separator' => 'Thousands Separator',
'timezone' => 'Timezone',
'thousands_separator' => '',
'timezone' => '',
'timezone_error' => '',
'top' => 'Top',
'top' => '',
'use_destination_based_tax' => '',
'user_timezone' => '',
'website' => 'Website',
'website' => '',
'wholesale_markup' => '',
'work_order_enable' => 'Work Order Support',
'work_order_format' => 'Work Order Format',
'work_order_enable' => '',
'work_order_format' => '',
];
+1 -1
View File
@@ -34,6 +34,7 @@ return [
'none_selected' => 'Не сте избрали клиент (и), който да изтриете.',
'one_or_multiple' => 'Клиент(ти)',
'quantity' => 'Количество',
'rewards_package' => 'Пакетни награди',
'stats_info' => 'Статус',
'successful_adding' => 'Успешно добавихте клиент',
'successful_deleted' => 'Вие успешно сте изтрили',
@@ -43,5 +44,4 @@ return [
'taxable' => 'Облагаем',
'total' => 'Общо изразходвани средства',
'update' => 'Актуализиране на клиента',
'rewards_package' => 'Пакетни награди',
];
+20 -20
View File
@@ -1,24 +1,24 @@
<?php
return [
'all_time' => 'All Time',
'apply' => 'Apply',
'cancel' => 'Cancel',
'custom' => 'Custom',
'from' => 'From',
'last_30' => 'Last 30 Days',
'last_7' => 'Last 7 Days',
'last_financial_year' => 'Last Fiscal Year',
'last_month' => 'Last Month',
'last_year' => 'Last Year',
'same_month_last_year' => 'Same Month Last Year',
'same_month_to_same_day_last_year' => 'Same Month To Same Day Last Year',
'this_financial_year' => 'Current Fiscal Year',
'this_month' => 'Current Month',
'this_year' => 'Current Year',
'to' => 'To',
'today' => 'Today',
'today_last_year' => 'Today Last Year',
'weekstart' => '0',
'yesterday' => 'Yesterday',
'all_time' => '',
'apply' => '',
'cancel' => '',
'custom' => '',
'from' => '',
'last_30' => '',
'last_7' => '',
'last_financial_year' => '',
'last_month' => '',
'last_year' => '',
'same_month_last_year' => '',
'same_month_to_same_day_last_year' => '',
'this_financial_year' => '',
'this_month' => '',
'this_year' => '',
'to' => '',
'today' => '',
'today_last_year' => '',
'weekstart' => '1',
'yesterday' => '',
];
+3 -2
View File
@@ -22,12 +22,12 @@ return [
'error_updating_admin' => '',
'error_updating_demo_admin' => 'Не може да промените Пробният Администратор.',
'language' => 'Език',
'login_info' => 'Login',
'login_info' => '',
'manager' => '',
'new' => 'Нов служител',
'none_selected' => 'Не сте избрали служител (и), който да изтриете.',
'one_or_multiple' => 'служител (и)',
'password' => 'Password',
'password' => '',
'password_minlength' => 'Паролата трябва да е с дължина най-малко 8 знака.',
'password_must_match' => 'Паролите не съвпадат.',
'password_not_must_match' => 'Текущата парола и новата парола трябва да са уникални.',
@@ -41,6 +41,7 @@ return [
'successful_deleted' => 'Вие успешно сте изтрили',
'successful_updating' => 'Успешно сте актуализирали служител',
'system_language' => 'Системен език',
'unauthorized_modify' => '',
'unsuccessful_change_password' => 'Промяната на паролата се провали.',
'update' => 'Актуализиране на служителя',
'username' => 'Потребител',
+7 -7
View File
@@ -1,11 +1,11 @@
<?php
return [
'half_down' => 'Half Down',
'half_even' => 'Half Even',
'half_five' => 'Half Five',
'half_odd' => 'Half Odd',
'half_up' => 'Half Up',
'round_down' => 'Round Down',
'round_up' => 'Round Up',
'half_down' => '',
'half_even' => '',
'half_five' => '',
'half_odd' => '',
'half_up' => '',
'round_down' => '',
'round_up' => '',
];
+3 -3
View File
@@ -1,14 +1,14 @@
<?php
return [
'encryption_key_not_provisioned' => '',
'no_permission_module' => 'Нямате разрешение за достъп до модула с име',
'throttle_key_not_provisioned' => '',
'unable_to_create_env_file' => 'Неуспешно създаване на {filePath} за осигуряване на throttle.key',
'unable_to_lock_file' => 'Неуспешно заключване на {filePath}: {reason}',
'unable_to_open_lock_file' => 'Неуспешно отваряне на {filePath}: {reason}',
'unable_to_persist_throttle_key' => 'Неуспешно записване на throttle.key в {filePath}',
'unable_to_persist_encryption_key' => '',
'encryption_key_not_provisioned' => '',
'throttle_key_not_provisioned' => '',
'unable_to_persist_throttle_key' => 'Неуспешно записване на throttle.key в {filePath}',
'unable_to_read_env_file' => 'Неуспешно четене на {filePath} за осигуряване на throttle.key',
'unknown' => 'Неизвестна грешка',
];
+42 -42
View File
@@ -1,51 +1,51 @@
<?php
return [
'add_item' => 'Add Expense',
'amount' => 'Amount',
'amount_number' => 'Amount must be a number',
'amount_required' => 'Expense Amount required',
'by_category' => 'Category',
'cannot_be_deleted' => 'Could not delete Category Expense(s)',
'cash' => 'Cash',
'cash_filter' => 'Cash',
'categories_name' => 'Category',
'category_required' => 'category is a required field',
'check' => 'Check',
'check_filter' => 'Check',
'confirm_delete' => 'Are you sure you want to delete the selected Expense?',
'add_item' => '',
'amount' => '',
'amount_number' => '',
'amount_required' => '',
'by_category' => '',
'cannot_be_deleted' => '',
'cash' => '',
'cash_filter' => '',
'categories_name' => '',
'category_required' => '',
'check' => '',
'check_filter' => '',
'confirm_delete' => '',
'confirm_restore' => '',
'credit' => 'Credit Card',
'credit_filter' => 'Credit Card',
'date' => 'Date',
'date_number' => 'date must be a number',
'date_required' => 'date is a required field',
'debit' => 'Debit Card',
'debit_filter' => 'Debit Card',
'description' => 'Description',
'due' => 'Due',
'due_filter' => 'Due',
'employee' => 'Created By',
'error_adding_updating' => 'Error adding/updating Expense',
'expense_id' => 'Id',
'expenses_employee' => 'Employee',
'info' => 'Expense Info',
'credit' => '',
'credit_filter' => '',
'date' => '',
'date_number' => '',
'date_required' => '',
'debit' => '',
'debit_filter' => '',
'description' => '',
'due' => '',
'due_filter' => '',
'employee' => '',
'error_adding_updating' => '',
'expense_id' => '',
'expenses_employee' => '',
'info' => '',
'ip_address' => '',
'is_deleted' => 'Deleted',
'name_required' => 'Expense Name required',
'new' => 'New Expense',
'is_deleted' => '',
'name_required' => '',
'new' => '',
'new_supplier' => '',
'no_expenses_to_display' => 'There are no Expenses to display',
'none_selected' => 'You have not selected any Expense',
'one_or_multiple' => 'Expense(s)',
'payment' => 'Payment Type',
'no_expenses_to_display' => '',
'none_selected' => '',
'one_or_multiple' => '',
'payment' => '',
'start_typing_supplier_name' => '',
'successful_adding' => 'Expense add successful',
'successful_deleted' => 'Expense delete successful',
'successful_updating' => 'Expense update successful',
'supplier_name' => 'Supplier',
'supplier_tax_code' => 'Tax Code',
'tax_amount' => 'Tax',
'successful_adding' => '',
'successful_deleted' => '',
'successful_updating' => '',
'supplier_name' => '',
'supplier_tax_code' => '',
'tax_amount' => '',
'tax_amount_number' => '',
'update' => 'Update Expense',
'update' => '',
];
+18 -18
View File
@@ -1,23 +1,23 @@
<?php
return [
'category_name_required' => 'Expense Category name required',
'add_item' => 'Add Category',
'cannot_be_deleted' => 'Could not delete Category Expense(s)',
'category_id' => 'Id',
'confirm_delete' => 'Are you sure you want to delete the selected Expense Category?',
'add_item' => '',
'cannot_be_deleted' => '',
'category_id' => '',
'category_name_required' => '',
'confirm_delete' => '',
'confirm_restore' => '',
'description' => 'Category Description',
'error_adding_updating' => 'Error adding/updating Expense Category',
'info' => 'Category Expense Info',
'name' => 'Category Name',
'new' => 'New Category',
'no_expenses_categories_to_display' => 'No Category to display',
'none_selected' => 'You have not selected any Category Expense',
'one_or_multiple' => 'Category Expense',
'quantity' => 'Quantity',
'successful_adding' => 'Expense Category add successful',
'successful_deleted' => 'Expense Category delete successful',
'successful_updating' => 'Expense Category update successful',
'update' => 'Update Category',
'description' => '',
'error_adding_updating' => '',
'info' => '',
'name' => '',
'new' => '',
'no_expenses_categories_to_display' => '',
'none_selected' => '',
'one_or_multiple' => '',
'quantity' => '',
'successful_adding' => '',
'successful_deleted' => '',
'successful_updating' => '',
'update' => '',
];
+67 -67
View File
@@ -1,72 +1,72 @@
<?php
return [
'add_minus' => 'Inventory to add or subtract.',
'allow_alt_description' => 'Allow Alternate Description',
'bulk_edit' => 'Bulk Edit',
'cannot_be_deleted' => 'Could not delete selected Gift Card(s), one or more of the selected Gift Cards has sales.',
'cannot_find_giftcard' => 'Gift Card not found.',
'cannot_use' => 'Gift Card {0} cannot be used for this sale: invalid Customer.',
'card_value' => 'Value',
'category' => 'Category',
'change_all_to_allow_alt_desc' => 'Allow alternate description for all.',
'change_all_to_not_allow_allow_desc' => 'Do not allow alternate description for all.',
'change_all_to_serialized' => 'Change All To Serialized',
'change_all_to_unserialized' => 'Change All To Unserialized',
'confirm_bulk_edit' => 'Are you sure you want to edit the selected Gift Card(s)?',
'confirm_delete' => 'Are you sure you want to delete the selected Gift Card(s)?',
'add_minus' => '',
'allow_alt_description' => '',
'bulk_edit' => '',
'cannot_be_deleted' => '',
'cannot_find_giftcard' => '',
'cannot_use' => '',
'card_value' => '',
'category' => '',
'change_all_to_allow_alt_desc' => '',
'change_all_to_not_allow_allow_desc' => '',
'change_all_to_serialized' => '',
'change_all_to_unserialized' => '',
'confirm_bulk_edit' => '',
'confirm_delete' => '',
'confirm_restore' => '',
'cost_price' => 'Wholesale Price',
'count' => 'Update Inventory',
'csv_import_failed' => 'CSV import failed.',
'current_quantity' => 'Current Quantity',
'description' => 'Description',
'details_count' => 'Inventory Count Details',
'do_nothing' => 'Do Nothing',
'edit_fields_you_want_to_update' => 'Edit desired fields for selected Gift Card(s).',
'edit_multiple_giftcards' => 'Edit Multiple Gift Cards.',
'error_adding_updating' => 'Gift Card add or update failed.',
'error_updating_multiple' => 'Gift Card(s) update failed.',
'generate_barcodes' => 'Generate Barcodes',
'giftcard' => 'Gift Card',
'giftcard_number' => 'Gift Card Number',
'info_provided_by' => 'Info provided by',
'inventory_comments' => 'Comments',
'is_serialized' => 'Gift Card has Serial Number',
'low_inventory_giftcards' => 'Low Inventory Gift Cards',
'manually_editing_of_quantity' => 'Manual Edit of Quantity',
'must_select_giftcard_for_barcode' => 'You must select at least one (1) Gift Card to generate barcodes.',
'new' => 'New Gift Card',
'no_description_giftcards' => 'No Description Gift Cards',
'no_giftcards_to_display' => 'No Gift Cards to display.',
'none' => 'None',
'none_selected' => 'No Gift Card(s) selected to edit.',
'number' => 'Gift Card Number must be a number.',
'number_information' => 'Gift Card Number',
'number_required' => 'Gift Card Number is a required field.',
'one_or_multiple' => 'Gift Card(s)',
'person_id' => 'Customer',
'quantity' => 'Quantity',
'quantity_required' => 'Quantity is a required field. Please close (X) to cancel.',
'remaining_balance' => 'Gift Card {0} remaining value is {1}!',
'reorder_level' => 'Reorder Level',
'retrive_giftcard_info' => 'Retrieve Gift Card Info',
'sales_tax_1' => 'Sales Tax',
'sales_tax_2' => 'Sales Tax 2',
'serialized_giftcards' => 'Serialized Gift Cards',
'successful_adding' => 'You have successfully added Gift Card',
'successful_bulk_edit' => 'You have successfully updated the selected Gift Card(s)',
'successful_deleted' => 'You have successfully deleted',
'successful_updating' => 'You have successfully updated Gift Card',
'supplier' => 'Supplier',
'tax_1' => 'Tax 1',
'tax_2' => 'Tax 2',
'tax_percent' => 'Tax Percent',
'tax_percents' => 'Tax Percent(s)',
'unit_price' => 'Retail Value',
'upc_database' => 'Barcode Database',
'update' => 'Update Gift Card',
'use_inventory_menu' => 'Use Inventory Menu',
'value' => 'Gift Card Value must be a number.',
'value_required' => 'Gift Card Value is a required field.',
'cost_price' => '',
'count' => '',
'csv_import_failed' => '',
'current_quantity' => '',
'description' => '',
'details_count' => '',
'do_nothing' => '',
'edit_fields_you_want_to_update' => '',
'edit_multiple_giftcards' => '',
'error_adding_updating' => '',
'error_updating_multiple' => '',
'generate_barcodes' => '',
'giftcard' => '',
'giftcard_number' => '',
'info_provided_by' => '',
'inventory_comments' => '',
'is_serialized' => '',
'low_inventory_giftcards' => '',
'manually_editing_of_quantity' => '',
'must_select_giftcard_for_barcode' => '',
'new' => '',
'no_description_giftcards' => '',
'no_giftcards_to_display' => '',
'none' => '',
'none_selected' => '',
'number' => '',
'number_information' => '',
'number_required' => '',
'one_or_multiple' => '',
'person_id' => '',
'quantity' => '',
'quantity_required' => '',
'remaining_balance' => '',
'reorder_level' => '',
'retrive_giftcard_info' => '',
'sales_tax_1' => '',
'sales_tax_2' => '',
'serialized_giftcards' => '',
'successful_adding' => '',
'successful_bulk_edit' => '',
'successful_deleted' => '',
'successful_updating' => '',
'supplier' => '',
'tax_1' => '',
'tax_2' => '',
'tax_percent' => '',
'tax_percents' => '',
'unit_price' => '',
'upc_database' => '',
'update' => '',
'use_inventory_menu' => '',
'value' => '',
'value_required' => '',
];
+29 -31
View File
@@ -1,42 +1,40 @@
<?php
return [
'add_item' => 'Add Item',
'all' => 'All',
'cannot_be_deleted' => 'Item Kit(s) delete failed.',
'confirm_delete' => 'Are you sure you want to delete the selected Item Kit(s)?',
'add_item' => '',
'all' => '',
'cannot_be_deleted' => '',
'confirm_delete' => '',
'confirm_restore' => '',
'description' => 'Item Kit Description',
'description' => '',
'discount' => '',
'discount_fixed' => '',
'discount_percent' => 'Discount Percent',
'discount_percent' => '',
'discount_type' => '',
'error_adding_updating' => 'Item Kit add or update failed.',
'find_kit_item' => 'Kit Item',
'info' => 'Item Kit Info',
'item' => 'Item',
'error_adding_updating' => '',
'find_kit_item' => '',
'info' => '',
'item' => '',
'item_kit_number' => '',
'item_kit_number_duplicate' => '',
'item_number' => '',
'item_number_duplicate' => '',
'items' => 'Items',
'kit' => 'Kit ID',
'kit_and_components' => 'Kit and Components',
'kit_and_stock' => 'Kit and Stock',
'kit_only' => 'Kit Only',
'name' => 'Item Kit Name',
'new' => 'New Item Kit',
'no_item_kits_to_display' => 'No Item Kits to display.',
'none_selected' => 'You have not selected any Item Kits.',
'one_or_multiple' => 'Item Kit(s)',
'price_option' => 'Price Option',
'priced_only' => 'Priced Only',
'print_option' => 'Print Option',
'quantity' => 'Quantity',
'sequence' => 'Sequence',
'successful_adding' => 'You have successfully added Item Kit',
'successful_deleted' => 'You have successfully deleted',
'successful_updating' => 'You have successfully updated Item Kit',
'items' => '',
'kit' => '',
'kit_and_components' => '',
'kit_and_stock' => '',
'kit_only' => '',
'name' => '',
'new' => '',
'no_item_kits_to_display' => '',
'none_selected' => '',
'one_or_multiple' => '',
'price_option' => '',
'priced_only' => '',
'print_option' => '',
'quantity' => '',
'sequence' => '',
'successful_adding' => '',
'successful_deleted' => '',
'successful_updating' => '',
'unit_price' => '',
'update' => 'Update Item Kit',
'update' => '',
];
+101 -101
View File
@@ -1,125 +1,125 @@
<?php
return [
'add_minus' => 'Inventory to add or subtract.',
'allow_alt_description' => 'Allow Alternate Description',
'add_minus' => '',
'allow_alt_description' => '',
'amount_entry' => '',
'bulk_edit' => 'Bulk Edit',
'buy_price_required' => 'Purchase Price is a required field.',
'cannot_be_deleted' => 'Could not delete selected Item(s), one or more of the selected Items have sales.',
'cannot_find_item' => 'Item not found.',
'bulk_edit' => '',
'buy_price_required' => '',
'cannot_be_deleted' => '',
'cannot_find_item' => '',
'categories' => '',
'category' => 'Category',
'category' => '',
'category_new' => '',
'category_required' => 'Category is a required field.',
'change_all_to_allow_alt_desc' => 'Allow Alternate Description for all.',
'change_all_to_not_allow_allow_desc' => 'Do not allow Alternate Description for all.',
'change_all_to_serialized' => 'Change all to Serialized',
'change_all_to_unserialized' => 'Change all to Unserialized',
'change_image' => 'Change Image',
'confirm_bulk_edit' => 'Are you sure you want to edit selected Item(s)?',
'confirm_bulk_edit_wipe_taxes' => 'All Item Tax information will be replaced.',
'confirm_delete' => 'Are you sure you want to delete selected item(s)?',
'category_required' => '',
'change_all_to_allow_alt_desc' => '',
'change_all_to_not_allow_allow_desc' => '',
'change_all_to_serialized' => '',
'change_all_to_unserialized' => '',
'change_image' => '',
'confirm_bulk_edit' => '',
'confirm_bulk_edit_wipe_taxes' => '',
'confirm_delete' => '',
'confirm_restore' => '',
'cost_price' => 'Wholesale Price',
'cost_price_number' => 'Wholesale Price must be a number.',
'cost_price_required' => 'Wholesale Price is a required field.',
'count' => 'Update Inventory',
'csv_import_failed' => 'CSV import failed',
'cost_price' => '',
'cost_price_number' => '',
'cost_price_required' => '',
'count' => '',
'csv_import_failed' => '',
'csv_import_invalid_location' => '',
'csv_import_nodata_wrongformat' => 'The uploaded file has no data or is formatted incorrectly.',
'csv_import_partially_failed' => 'Item import successful with some failures:',
'csv_import_success' => 'Item import successful.',
'current_quantity' => 'Current Quantity',
'csv_import_nodata_wrongformat' => '',
'csv_import_partially_failed' => '',
'csv_import_success' => '',
'current_quantity' => '',
'default_pack_name' => '',
'description' => 'Description',
'details_count' => 'Inventory Count Details',
'do_nothing' => 'Do Nothing',
'description' => '',
'details_count' => '',
'do_nothing' => '',
'edit' => '',
'edit_fields_you_want_to_update' => 'Edit the desired fields for selected item(s).',
'edit_multiple_items' => 'Editing Multiple Items',
'empty_upc_items' => 'Empty Barcode Items',
'error_adding_updating' => 'Error adding/updating item',
'error_updating_multiple' => 'Error updating items',
'generate_barcodes' => 'Generate Barcodes',
'edit_fields_you_want_to_update' => '',
'edit_multiple_items' => '',
'empty_upc_items' => '',
'error_adding_updating' => '',
'error_updating_multiple' => '',
'generate_barcodes' => '',
'hsn_code' => '',
'image' => 'Avatar',
'import_items_csv' => 'Item Import from CSV',
'info_provided_by' => 'Information provided by',
'inventory' => 'Inventory',
'image' => '',
'import_items_csv' => '',
'info_provided_by' => '',
'inventory' => '',
'inventory_CSV_import_quantity' => '',
'inventory_comments' => 'Comments',
'inventory_data_tracking' => 'Inventory Data Tracking',
'inventory_date' => 'Date',
'inventory_employee' => 'Employee',
'inventory_in_out_quantity' => 'In/Out Quantity',
'inventory_remarks' => 'Remarks',
'is_deleted' => 'Deleted',
'inventory_comments' => '',
'inventory_data_tracking' => '',
'inventory_date' => '',
'inventory_employee' => '',
'inventory_in_out_quantity' => '',
'inventory_remarks' => '',
'is_deleted' => '',
'is_printed' => '',
'is_serialized' => 'Item has Serial Number',
'item' => 'Item',
'is_serialized' => '',
'item' => '',
'item_id' => '',
'item_number' => 'Barcode',
'item_number_duplicate' => 'Item Number is already present in the database.',
'item_number_invalid' => 'Item Number contains disallowed characters.',
'kit' => 'Kit',
'location' => 'Location',
'low_inventory_items' => 'Out Of Stock Items',
'item_number' => '',
'item_number_duplicate' => '',
'item_number_invalid' => '',
'kit' => '',
'location' => '',
'low_inventory_items' => '',
'low_sell_item' => '',
'manually_editing_of_quantity' => 'Manual Edit of Quantity',
'manually_editing_of_quantity' => '',
'markup' => '',
'name' => 'Item Name',
'name_required' => 'Item Name is a required field.',
'new' => 'New Item',
'no_description_items' => 'No Description Items',
'no_items_to_display' => 'No Items to display.',
'none' => 'None',
'none_selected' => 'You have not selected any Item(s) to edit',
'nonstock' => 'Non-stocked',
'number_information' => 'Item Number',
'number_required' => 'Barcode is a required field.',
'one_or_multiple' => 'item(s)',
'name' => '',
'name_required' => '',
'new' => '',
'no_description_items' => '',
'no_items_to_display' => '',
'none' => '',
'none_selected' => '',
'nonstock' => '',
'number_information' => '',
'number_required' => '',
'one_or_multiple' => '',
'pack_name' => '',
'qty_per_pack' => '',
'quantity' => 'Quantity',
'quantity_number' => 'Quantity must be a number.',
'quantity_required' => 'Quantity is a required field.',
'receiving_quantity' => 'Receiving Quantity',
'remove_image' => 'Remove Image',
'reorder_level' => 'Reorder Level',
'reorder_level_number' => 'Reorder Level must be a number.',
'reorder_level_required' => 'Reorder Level is a required field.',
'retrive_item_info' => 'Retrive Item Info',
'sales_tax_1' => 'Sales Tax',
'sales_tax_2' => 'Sales Tax 2',
'search_attributes' => 'Search Attributes',
'select_image' => 'Select Image',
'serialized_items' => 'Serialized Items',
'standard' => 'Standard',
'stock' => 'Stock',
'stock_location' => 'Stock location',
'stock_type' => 'Stock Type',
'successful_adding' => 'You have successfully added item',
'successful_bulk_edit' => 'You have successfully updated the selected item(s)',
'successful_deleted' => 'You have successfully deleted',
'successful_updating' => 'You have successfully updated item',
'supplier' => 'Supplier',
'tax_1' => 'Tax 1',
'tax_2' => 'Tax 2',
'quantity' => '',
'quantity_number' => '',
'quantity_required' => '',
'receiving_quantity' => '',
'remove_image' => '',
'reorder_level' => '',
'reorder_level_number' => '',
'reorder_level_required' => '',
'retrive_item_info' => '',
'sales_tax_1' => '',
'sales_tax_2' => '',
'search_attributes' => '',
'select_image' => '',
'serialized_items' => '',
'standard' => '',
'stock' => '',
'stock_location' => '',
'stock_type' => '',
'successful_adding' => '',
'successful_bulk_edit' => '',
'successful_deleted' => '',
'successful_updating' => '',
'supplier' => '',
'tax_1' => '',
'tax_2' => '',
'tax_3' => '',
'tax_category' => '',
'tax_name_invalid' => 'Името на данъка съдържа непозволени символи.',
'tax_percent' => 'Tax Percent',
'tax_percent_number' => '',
'tax_percent' => '',
'tax_percent_non_negative' => '',
'tax_percent_required' => 'Tax Percent is a required field.',
'tax_percents' => 'Tax Percent(s)',
'tax_percent_number' => '',
'tax_percent_required' => '',
'tax_percents' => '',
'temp' => '',
'type' => 'Item Type',
'unit_price' => 'Retail Price',
'unit_price_number' => 'Unit price must be a number.',
'unit_price_required' => 'Retail Price is a required field.',
'upc_database' => 'Barcode Database',
'update' => 'Update Item',
'use_inventory_menu' => 'Use Inventory Menu',
'type' => '',
'unit_price' => '',
'unit_price_number' => '',
'unit_price_required' => '',
'upc_database' => '',
'update' => '',
'use_inventory_menu' => '',
];
+9 -9
View File
@@ -2,15 +2,15 @@
return [
'gcaptcha' => 'Не съм робот.',
'go' => 'Go',
'go' => '',
'initialization_message' => '',
'initialization_required' => '',
'initialize' => '',
'invalid_gcaptcha' => 'Invalid I\'m not a robot.',
'invalid_installation' => 'The installation is not correct, check your php.ini file.',
'invalid_username_and_password' => 'Invalid Username or Password.',
'login' => 'Login',
'logout' => '',
'invalid_gcaptcha' => '',
'invalid_installation' => '',
'invalid_username_and_password' => '',
'login' => '',
'logout' => 'Излизане от профила',
'migrating_database' => 'Мигриране на базата данни',
'migration_auth_message' => '',
'migration_complete' => '',
@@ -20,12 +20,12 @@ return [
'migration_error_connection' => '',
'migration_failed' => '',
'migration_initializing' => '',
'migration_needed' => '',
'migration_needed' => 'Мигриране на база данни към {0} ще започне след влизане.',
'migration_required' => '',
'migration_running' => '',
'password' => 'Password',
'password' => '',
'required_username' => '',
'too_many_attempts' => 'Твърде много опити. Моля, изчакайте малко и опитайте отново.',
'username' => 'Username',
'username' => '',
'welcome' => '',
];
+12 -12
View File
@@ -1,16 +1,16 @@
<?php
return [
'first_name' => 'First name',
'last_name' => 'Last name',
'message' => 'Message',
'message_placeholder' => 'Your Message here...',
'message_required' => 'Message required',
'multiple_phones' => '(In case of multiple recipients, enter mobile numbers separated by commas)',
'phone' => 'Phone number',
'phone_number_required' => 'Phone number required',
'phone_placeholder' => 'Mobile Number(s) here...',
'sms_send' => 'Send SMS',
'successfully_sent' => 'Message successfully sent to: ',
'unsuccessfully_sent' => 'Message unsuccessfully sent to: ',
'first_name' => '',
'last_name' => '',
'message' => '',
'message_placeholder' => '',
'message_required' => '',
'multiple_phones' => '',
'phone' => '',
'phone_number_required' => '',
'phone_placeholder' => '',
'sms_send' => '',
'successfully_sent' => '',
'unsuccessfully_sent' => '',
];
+35 -35
View File
@@ -5,44 +5,44 @@ return [
'admin_cashups_desc' => '',
'attributes' => '',
'attributes_desc' => '',
'both' => 'Both',
'both' => '',
'cashups' => '',
'cashups_desc' => '',
'config' => 'Configuration',
'config_desc' => 'Change OSPOS\'s Configuration.',
'customers' => 'Customers',
'customers_desc' => 'Add, Update, Delete, and Search Customers.',
'employees' => 'Employees',
'employees_desc' => 'Add, Update, Delete, and Search Employees.',
'expenses' => 'Expenses',
'expenses_categories' => 'Expenses Categories',
'expenses_categories_desc' => 'Add, Update, and Delete Expenses Categories.',
'expenses_desc' => 'Add, Update, Delete, and Search Expenses.',
'giftcards' => 'Gift Cards',
'giftcards_desc' => 'Add, Update, Delete and Search Gift Cards.',
'home' => 'Home',
'home_desc' => 'List home menu modules.',
'item_kits' => 'Item Kits',
'item_kits_desc' => 'Add, Update, Delete and Search Item Kits.',
'items' => 'Items',
'items_desc' => 'Add, Update, Delete, and Search Items.',
'messages' => 'Messages',
'messages_desc' => 'Send Messages to Customers, Suppliers and Employees.',
'migrate' => 'Migrate',
'migrate_desc' => 'Update the OSPOS Database.',
'office' => 'Office',
'office_desc' => 'List office menu modules.',
'config' => '',
'config_desc' => '',
'customers' => '',
'customers_desc' => '',
'employees' => '',
'employees_desc' => '',
'expenses' => '',
'expenses_categories' => '',
'expenses_categories_desc' => '',
'expenses_desc' => '',
'giftcards' => '',
'giftcards_desc' => '',
'home' => '',
'home_desc' => '',
'item_kits' => '',
'item_kits_desc' => '',
'items' => '',
'items_desc' => '',
'messages' => '',
'messages_desc' => '',
'migrate' => '',
'migrate_desc' => '',
'office' => '',
'office_desc' => '',
'plugins' => 'Плъгини',
'receivings' => 'Receivings',
'receivings_desc' => 'Process Purchase Orders.',
'reports' => 'Reports',
'reports_desc' => 'View and generate Reports.',
'sales' => 'Sales',
'sales_desc' => 'Process Sales and Returns.',
'suppliers' => 'Suppliers',
'suppliers_desc' => 'Add, Update, Delete, and Search Suppliers.',
'taxes' => 'Taxes',
'taxes_desc' => 'Configure Sales Taxes.',
'receivings' => '',
'receivings_desc' => '',
'reports' => '',
'reports_desc' => '',
'sales' => '',
'sales_desc' => '',
'suppliers' => '',
'suppliers_desc' => '',
'taxes' => '',
'taxes_desc' => '',
'timeclocks' => '',
'timeclocks_categories' => '',
'timeclocks_categories_desc' => '',
+51 -50
View File
@@ -2,58 +2,59 @@
return [
'amount_due' => '',
'cancel_receiving' => 'Cancel',
'cannot_be_deleted' => 'Receiving(s) delete failed.',
'comments' => 'Comments',
'complete_receiving' => 'Finish',
'confirm_cancel_receiving' => 'Are you sure you want to clear this receiving? All items will cleared.',
'confirm_delete' => 'Are you sure you want to delete this receiving? This action cannot be undone.',
'confirm_finish_receiving' => 'Are you sure you want to submit this receiving? This cannot be undone.',
'cancel_receiving' => '',
'cannot_be_deleted' => '',
'comments' => '',
'complete_receiving' => '',
'confirm_cancel_receiving' => '',
'confirm_delete' => '',
'confirm_finish_receiving' => '',
'confirm_restore' => '',
'cost' => 'Cost',
'cost' => '',
'daily' => '',
'date' => 'Receiving Date',
'date_required' => 'A correct date must be entered.',
'date_type' => 'Date is a required field.',
'delete_entire_sale' => 'Delete Entire Sale',
'discount' => 'Discount %',
'edit' => 'Edit',
'edit_sale' => 'Edit Receiving',
'employee' => 'Employee',
'error_editing_item' => 'Item edit failed.',
'error_requisition' => 'Unable to move Inventory from or to the same Stock Location.',
'find_or_scan_item' => 'Find or Scan Item',
'find_or_scan_item_or_receipt' => 'Find or Scan Item or Receipt',
'id' => 'Receiving ID',
'item_name' => 'Item Name',
'mode' => 'Receiving Mode',
'new_supplier' => 'New Supplier',
'one_or_multiple' => 'receiving(s)',
'print_after_sale' => 'Print After Sale',
'quantity' => 'Qty.',
'receipt' => 'Receivings Receipt',
'receipt_number' => 'Receiving #',
'receiving' => 'Receive',
'reference' => 'Reference',
'register' => 'Items Receiving',
'requisition' => 'Requisition',
'return' => 'Return',
'select_supplier' => 'Select Supplier (Optional)',
'date' => '',
'date_required' => '',
'date_type' => '',
'delete_entire_sale' => '',
'discount' => '',
'edit' => '',
'edit_sale' => '',
'employee' => '',
'error_editing_item' => '',
'error_requisition' => '',
'find_or_scan_item' => '',
'find_or_scan_item_or_receipt' => '',
'id' => '',
'item_name' => '',
'mode' => '',
'new_supplier' => '',
'not_authorized' => '',
'one_or_multiple' => '',
'print_after_sale' => '',
'quantity' => '',
'receipt' => '',
'receipt_number' => '',
'receiving' => '',
'reference' => '',
'register' => '',
'requisition' => '',
'return' => '',
'select_supplier' => '',
'ship_pack' => '',
'start_typing_supplier_name' => 'Start Typing Supplier\'s name...',
'start_typing_supplier_name' => '',
'stock' => '',
'stock_destination' => 'Stock Destination',
'stock_location' => 'Stock Location',
'stock_source' => 'Stock Source',
'successfully_deleted' => 'You have successfully deleted',
'successfully_updated' => 'Receiving successfully updated',
'supplier' => 'Supplier',
'supplier_address' => 'Address',
'supplier_email' => 'Email',
'supplier_location' => 'Location',
'total' => 'Total',
'transaction_failed' => 'Receivings transaction(s) failed.',
'unable_to_add_item' => 'Item add to Receiving failed.',
'unsuccessfully_updated' => 'Receiving update failed.',
'update' => 'Update',
'stock_destination' => '',
'stock_location' => '',
'stock_source' => '',
'successfully_deleted' => '',
'successfully_updated' => '',
'supplier' => '',
'supplier_address' => '',
'supplier_email' => '',
'supplier_location' => '',
'total' => '',
'transaction_failed' => '',
'unable_to_add_item' => '',
'unsuccessfully_updated' => '',
'update' => '',
];
+106 -106
View File
@@ -1,96 +1,96 @@
<?php
return [
'all' => 'All',
'all' => '',
'authority' => '',
'canceled' => 'Canceled',
'categories' => 'Categories',
'categories_summary_report' => 'Categories Summary Report',
'category' => 'Category',
'code_canceled' => 'CNL',
'code_invoice' => 'INV',
'canceled' => '',
'categories' => '',
'categories_summary_report' => '',
'category' => '',
'code_canceled' => '',
'code_invoice' => '',
'code_pos' => '',
'code_quote' => 'Q',
'code_return' => 'RET',
'code_type' => 'Type',
'code_work_order' => 'W/O',
'comments' => 'Comments',
'code_quote' => '',
'code_return' => '',
'code_type' => '',
'code_work_order' => '',
'comments' => '',
'commission' => '',
'complete' => 'Completed Sales and Returns',
'completed_sales' => 'Completed Sales',
'complete' => '',
'completed_sales' => '',
'confirm_delete' => '',
'confirm_restore' => '',
'cost' => 'Wholesale',
'cost_price' => 'Wholesale Price',
'count' => 'Count',
'customer' => 'Customer',
'customers' => 'Customers',
'customers_summary_report' => 'Customers Summary Report',
'date' => 'Date',
'date_range' => 'Date Range',
'description' => 'Description',
'cost' => '',
'cost_price' => '',
'count' => '',
'customer' => '',
'customers' => '',
'customers_summary_report' => '',
'date' => '',
'date_range' => '',
'description' => '',
'detailed_item_sales_report' => '',
'detailed_receivings_report' => 'Detailed Receivings Report',
'detailed_receivings_report' => '',
'detailed_receivings_report_input' => '',
'detailed_reports' => 'Detailed Reports',
'detailed_reports' => '',
'detailed_requisition_report' => '',
'detailed_sales_report' => 'Detailed Transactions Report',
'discount' => 'Discount',
'detailed_sales_report' => '',
'discount' => '',
'discount_fixed' => '',
'discount_percent' => 'Discount Percent',
'discount_percent' => '',
'discount_type' => '',
'discounts' => 'Discounts',
'discounts_summary_report' => 'Discounts Summary Report',
'earned' => 'Points Earned',
'employee' => 'Employee',
'employees' => 'Employees',
'employees_summary_report' => 'Employees Summary Report',
'discounts' => '',
'discounts_summary_report' => '',
'earned' => '',
'employee' => '',
'employees' => '',
'employees_summary_report' => '',
'expenses' => '',
'expenses_amount' => 'Amount',
'expenses_categories' => 'Expenses',
'expenses_categories_summary_report' => 'Expense Categories Summary Report',
'expenses_category' => 'Category',
'expenses_amount' => '',
'expenses_categories' => '',
'expenses_categories_summary_report' => '',
'expenses_category' => '',
'expenses_payment_amount' => '',
'expenses_tax_amount' => 'Tax',
'expenses_total_amount' => 'Total Amount',
'expenses_total_tax_amount' => 'Total Tax',
'graphical_reports' => 'Graphical Reports',
'inventory' => 'Inventory',
'inventory_low' => 'Low Inventory',
'inventory_low_report' => 'Low Inventory Report',
'inventory_reports' => 'Inventory Reports',
'inventory_summary' => 'Inventory Summary',
'inventory_summary_report' => 'Inventory Summary Report',
'item' => 'Item',
'item_count' => 'Filter Item Count',
'item_name' => 'Item Name',
'item_number' => 'Barcode',
'items' => 'Items',
'items_purchased' => 'Items Purchased',
'items_received' => 'Items Received',
'items_summary_report' => 'Items Summary Report',
'expenses_tax_amount' => '',
'expenses_total_amount' => '',
'expenses_total_tax_amount' => '',
'graphical_reports' => '',
'inventory' => '',
'inventory_low' => '',
'inventory_low_report' => '',
'inventory_reports' => '',
'inventory_summary' => '',
'inventory_summary_report' => '',
'item' => '',
'item_count' => '',
'item_name' => '',
'item_number' => '',
'items' => '',
'items_purchased' => '',
'items_received' => '',
'items_summary_report' => '',
'jurisdiction' => '',
'low_inventory' => '',
'low_inventory_report' => '',
'low_sell_quantity' => '',
'more_than_zero' => 'More than zero',
'name' => 'Name',
'no_reports_to_display' => 'No Items to display.',
'payment_type' => 'Payment Type',
'payments' => 'Payments',
'payments_summary_report' => 'Payments Summary Report',
'profit' => 'Profit',
'quantity' => 'Quantity',
'quantity_purchased' => 'Quantity Purchased',
'quotes' => 'Quotes',
'received_by' => 'Received By',
'receiving_id' => 'Receiving ID',
'receiving_type' => 'Receiving Type',
'receivings' => 'Receivings',
'reorder_level' => 'Reorder Level',
'report' => 'Report',
'report_input' => 'Report Input',
'reports' => 'Reports',
'more_than_zero' => '',
'name' => '',
'no_reports_to_display' => '',
'payment_type' => '',
'payments' => '',
'payments_summary_report' => '',
'profit' => '',
'quantity' => '',
'quantity_purchased' => '',
'quotes' => '',
'received_by' => '',
'receiving_id' => '',
'receiving_type' => '',
'receivings' => '',
'reorder_level' => '',
'report' => '',
'report_input' => '',
'reports' => '',
'requisition' => '',
'requisition_by' => '',
'requisition_id' => '',
@@ -99,42 +99,42 @@ return [
'requisition_related_item' => '',
'requisition_related_item_total_quantity' => '',
'requisition_related_item_unit_quantity' => '',
'requisitions' => 'Requisitions',
'returns' => 'Returns',
'revenue' => 'Revenue',
'sale_id' => 'Trans. ID',
'sale_type' => 'Transaction Type',
'sales' => 'Transactions',
'sales_amount' => 'Transactions amount',
'sales_summary_report' => 'Transactions Summary Report',
'requisitions' => '',
'returns' => '',
'revenue' => '',
'sale_id' => '',
'sale_type' => '',
'sales' => '',
'sales_amount' => '',
'sales_summary_report' => '',
'sales_taxes' => '',
'sales_taxes_summary_report' => '',
'serial_number' => 'Serial Number',
'serial_number' => '',
'service_charge' => '',
'sold_by' => 'Sold By',
'sold_by' => '',
'sold_items' => '',
'sold_to' => 'Sold To',
'stock_location' => 'Stock Location',
'sub_total_value' => 'Subtotal',
'subtotal' => 'Subtotal',
'summary_reports' => 'Summary Reports',
'supplied_by' => 'Supplied by',
'supplier' => 'Supplier',
'suppliers' => 'Suppliers',
'suppliers_summary_report' => 'Suppliers Summary Report',
'tax' => 'Tax',
'sold_to' => '',
'stock_location' => '',
'sub_total_value' => '',
'subtotal' => '',
'summary_reports' => '',
'supplied_by' => '',
'supplier' => '',
'suppliers' => '',
'suppliers_summary_report' => '',
'tax' => '',
'tax_category' => '',
'tax_name' => '',
'tax_percent' => 'Tax Percent',
'tax_percent' => '',
'tax_rate' => '',
'taxes' => 'Taxes',
'taxes_summary_report' => 'Taxes Summary Report',
'taxes' => '',
'taxes_summary_report' => '',
'toggle_cost_and_profit' => '',
'total' => 'Total',
'total_inventory_value' => 'Total Inventory Value',
'total' => '',
'total_inventory_value' => '',
'total_low_sell_quantity' => '',
'total_quantity' => 'Total Quantity',
'total_retail' => 'Total Inv. Retail Value',
'total_quantity' => '',
'total_retail' => '',
'trans_amount' => '',
'trans_due' => '',
'trans_group' => '',
@@ -143,9 +143,9 @@ return [
'trans_refunded' => '',
'trans_sales' => '',
'trans_type' => '',
'type' => 'Type',
'unit_price' => 'Retail Price',
'used' => 'Points Used',
'work_orders' => 'Work Orders',
'zero_and_less' => 'Zero and less',
'type' => '',
'unit_price' => '',
'used' => '',
'work_orders' => '',
'zero_and_less' => '',
];
+18 -17
View File
@@ -66,7 +66,7 @@ return [
'giftcard_number' => 'Gift Card Номер',
'group_by_category' => 'Групирайте по категория',
'group_by_type' => 'Групиране по тип',
'hsn' => 'HSN',
'hsn' => '',
'id' => 'Номер на продажба',
'include_prices' => 'Включва цени?',
'insufficient_giftcard_balance' => 'Недостатъчен баланс на подаръчната карта за това плащане.',
@@ -77,7 +77,7 @@ return [
'invoice_filter' => 'Фактури',
'invoice_no_email' => 'Този клиент няма валиден имейл адрес.',
'invoice_number' => 'Фактура #',
'invoice_number_duplicate' => 'Номерът на фактурите трябва да е уникален.',
'invoice_number_duplicate' => 'Номерът на фактурата {0} трябва да е уникален.',
'invoice_sent' => 'Фактура, изпратена до',
'invoice_total' => 'Фактура общо',
'invoice_type_custom_invoice' => 'Ръчна фактура',
@@ -90,26 +90,26 @@ return [
'item_number' => 'Предмет #',
'item_out_of_stock' => 'Елементът е изчерпан.',
'key_browser' => '',
'key_cancel' => 'Cancels Current Quote/Invoice/Sale',
'key_customer_search' => 'Customer Search',
'key_finish_quote' => 'Finish Quote/Invoice witdout payment',
'key_finish_sale' => 'Add Payment and Complete Invoice/Sale',
'key_cancel' => '',
'key_customer_search' => '',
'key_finish_quote' => '',
'key_finish_sale' => '',
'key_full' => '',
'key_function' => 'Function',
'key_help' => 'Shortcuts',
'key_help_modal' => 'Open Shortcuts Window',
'key_function' => '',
'key_help' => '',
'key_help_modal' => '',
'key_in' => '',
'key_item_search' => 'Item Search',
'key_item_search' => '',
'key_out' => '',
'key_payment' => 'Add Payment',
'key_payment' => '',
'key_print' => '',
'key_restore' => '',
'key_search' => '',
'key_suspend' => 'Suspend Current Sale',
'key_suspended' => 'Show Suspended Sales',
'key_suspend' => '',
'key_suspended' => '',
'key_system' => '',
'key_tendered' => 'Edit Amount Tendered',
'key_title' => 'Sales Keyboard Shortcuts',
'key_tendered' => '',
'key_title' => '',
'mode' => 'Режим на регистрация',
'must_enter_numeric' => 'Сумата Предложена трябва да е число.',
'must_enter_numeric_giftcard' => 'Gift Card номера трябва да бъде число.',
@@ -123,8 +123,9 @@ return [
'new_item' => 'Нов продукт',
'no_description' => 'Нито един',
'no_items_in_cart' => 'В количката няма продукти.',
'no_sales_to_display' => 'Няма продажби за показване.',
'none_selected' => 'Не сте избрали каквито и да е Продажби за изтриване.',
'nontaxed_ind' => ' sales nontaxed ind ',
'nontaxed_ind' => '',
'not_authorized' => 'Това действие не е разрешено.',
'one_or_multiple' => 'Продажба (и)',
'payment' => 'Вид плащане',
@@ -200,7 +201,7 @@ return [
'unsuccessfully_suspended_sale' => 'Преустановяването на продажбата бе неуспешно.',
'unsuccessfully_updated' => 'Актуализацията на продажбата не бе успешна.',
'unsuspend' => 'Възстановяване',
'unsuspend_and_delete' => 'Action',
'unsuspend_and_delete' => '',
'update' => 'Актуализация',
'upi' => '',
'wallet' => '',
+2 -2
View File
@@ -1,7 +1,7 @@
<?php
return [
'account_number' => 'Account Number',
'account_number' => '',
'agency_name' => 'Име на агенцията',
'cannot_be_deleted' => 'Избраните доставчици не можаха да бъдат изтрити. Един или повече от тях имат продажби.',
'category' => '',
@@ -19,7 +19,7 @@ return [
'successful_deleted' => 'Вие успешно изтрихте',
'successful_updating' => 'Обновяването на доставчика е успешно',
'supplier' => 'Доставчик',
'supplier_id' => 'Id',
'supplier_id' => '',
'tax_id' => '',
'update' => 'Актуализиране на доставчик',
];
+1
View File
@@ -12,6 +12,7 @@ return [
'default_tax_rate' => '',
'error_adding_updating' => 'Добавянето или актуализацията на данъчния код беше неуспешна.',
'group_seq' => '',
'jurisdiction_id' => '',
'jurisdiction_name' => '',
'name' => '',
'new' => 'Нов данъчен код',
+4 -4
View File
@@ -6,14 +6,14 @@ return [
'confirm_restore' => 'Da li ste sigurni da želite vratiti izabrane atribute?',
'definition_cannot_be_deleted' => 'Nije moguće izbrisati izabrane atribut',
'definition_error_adding_updating' => 'Atribut {0} nije moguće dodati ili ažurirati. Molimo provjerite dnevnik grešaka.',
'definition_invalid_group' => '',
'definition_flags' => 'Vidljivost atributa',
'definition_group' => 'Grupa',
'definition_id' => 'Id',
'definition_id' => '',
'definition_invalid_group' => '',
'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_adding' => '',
'definition_successful_deleted' => 'Uspješno ste izbrisali',
'definition_successful_updating' => 'Uspješno ste ažurirali atribute',
'definition_type' => 'Tip atributa',
@@ -21,7 +21,7 @@ return [
'definition_unit' => 'Jedinice mjere',
'definition_values' => 'Vrijednosti atributa',
'new' => 'Novi atribut',
'no_attributes_to_display' => 'Nema stavki za prikaz',
'no_attributes_to_display' => '',
'receipt_visibility' => 'Račun',
'show_in_items' => 'Prikaži u stavkama',
'show_in_items_visibility' => 'Stavka',
+1 -1
View File
@@ -26,7 +26,7 @@ return [
'enable_expected' => '',
'error_adding_updating' => 'Greška prilikom dodavanja/ažuriranja isplate',
'giftcard' => '',
'id' => 'Id',
'id' => '',
'info' => 'Informacije o isplatama',
'info_employee' => '',
'is_deleted' => 'Izbrisano',
+4 -11
View File
@@ -11,7 +11,6 @@ return [
'comments' => 'Komentari',
'common' => 'Zajedničko',
'confirm_search' => 'Odabrali ste jedan ili više redova koji neće biti izabrani nakon pretrage. Da li ste sigurni da želite pretragu?',
'copyrights' => '© 2010 - {0}',
'correct_errors' => 'Ispravite identifikovane pogreške prije snimanja',
'country' => 'Država',
'dashboard' => '',
@@ -32,10 +31,10 @@ return [
'first_page' => 'Prva',
'gender' => 'Pol',
'gender_female' => 'Ž',
'gender_male' => 'M',
'gender_male' => '',
'gender_undefined' => '',
'icon' => 'Ikona',
'id' => 'ID',
'id' => '',
'import' => 'Uvoz',
'import_change_file' => 'Promjena',
'import_csv' => 'CSV uvoz',
@@ -48,11 +47,9 @@ return [
'last_page' => 'Poslednja',
'learn_about_project' => 'da biste saznali najnovije informacije o projektu.',
'list_of' => 'Lista',
'logo' => 'Logo',
'logo' => '',
'logo_mark' => 'Znak',
'logout' => 'Odjava',
'manager' => '',
'migration_needed' => 'Premještanje baze podataka na {0} počinje nakon prijave.',
'new' => 'Novi',
'no' => '',
'no_persons_to_display' => 'Nema ljudi za prikaz.',
@@ -60,10 +57,9 @@ return [
'or' => 'Ili',
'people' => '',
'phone_number' => 'Broj telefona',
'phone_number_required' => 'Broj telefona je obavezan',
'please_visit_my' => 'Posjetite',
'position' => '',
'powered_by' => 'Podržano od',
'powered_by' => 'Podržano od {app} {version}',
'price' => 'Cijena',
'print' => 'Štampanje',
'remove' => 'Ukloni',
@@ -73,14 +69,11 @@ return [
'search' => 'Traži',
'search_options' => 'Opcije pretrage',
'searched_for' => 'Traženo',
'software_short' => 'OSPOS',
'software_title' => 'Prodajno mjesto otvorenog koda',
'state' => 'Entitet',
'submit' => 'Prihvati',
'total_spent' => 'Ukupno potrošeno',
'unknown' => 'Nepoznato',
'view_recent_sales' => 'Pogledaj nedavne prodaje',
'website' => 'opensourcepos.org',
'welcome' => 'Dobrodošli',
'welcome_message' => 'Dobrodošli u OSPOS, kliknite na modul ispod da biste započeli.',
'yes' => '',
+12 -10
View File
@@ -13,7 +13,7 @@ return [
'barcode_configuration' => 'Konfiguracija barkoda',
'barcode_content' => 'Sadržaj barkoda',
'barcode_first_row' => '1 red',
'barcode_font' => 'Font',
'barcode_font' => '',
'barcode_formats' => 'Unesi format',
'barcode_generate_if_empty' => 'Generiši ako je prazno.',
'barcode_height' => 'Visina(px)',
@@ -98,8 +98,8 @@ return [
'default_tax_rate_1' => 'Stopa poreza 1 %',
'default_tax_rate_2' => 'Stopa poreza 2 %',
'default_tax_rate_3' => '',
'default_tax_rate_number' => 'Stopa poreza mora biti broj.',
'default_tax_rate_non_negative' => '',
'default_tax_rate_number' => 'Stopa poreza mora biti broj.',
'default_tax_rate_required' => 'Stopa poreza je obavezno polje.',
'derive_sale_quantity' => 'Dozvoli izvedenu količinu prodaje',
'derive_sale_quantity_tooltip' => 'Ako se izabere, za artikle naručene po produženom iznosu biće obezbjeđen novi tip artikla',
@@ -118,10 +118,10 @@ return [
'email_receipt_check_behaviour_last' => 'Zapamti poslednji izbor',
'email_receipt_check_behaviour_never' => 'Uvijek nepotvrđeno',
'email_smtp_crypto' => 'SMTP šifriranje',
'email_smtp_host' => 'SMTP Server',
'email_smtp_host' => '',
'email_smtp_pass' => 'SMTP Lozinka',
'email_smtp_pass_set' => '',
'email_smtp_port' => 'SMTP Port',
'email_smtp_port' => '',
'email_smtp_timeout' => 'SMTP pauza',
'email_smtp_user' => 'SMTP Korisničko ime',
'enable_avatar' => '',
@@ -168,6 +168,8 @@ return [
'info' => 'Informacije',
'info_configuration' => 'Info o web trgovini',
'input_groups' => 'Grupe unosa',
'integrations' => 'Integracije',
'integrations_configuration' => 'Integracije trećih strana',
'invoice' => 'Faktura',
'invoice_configuration' => 'Podešavanja štamapnja',
'invoice_default_comments' => 'Komentar na fakturi',
@@ -198,6 +200,7 @@ return [
'location_info' => 'Informacije o konfiguraciji lokacije',
'login_form' => 'Stil formulara za prijavu',
'logout' => 'Zar ne želite da napravite rezervnu kopiju prije odjave? Kliknite [OK] za sigurnosnu kopiju, [Cancel] da biste se odjavili.',
'mailpath_invalid' => 'Nevažeća sendmail putanja. Dozvoljena su samo slova, brojevi, crtice, donje crte, kose crte, obrnute kose crte, dvotačke, razmaci i tačke.',
'message' => 'Poruke',
'message_configuration' => 'Konfigurisanje poruke',
'msg_msg' => 'Snimljena tekst poruka',
@@ -222,7 +225,7 @@ return [
'payment_options_order' => 'Narudžba opcije plaćanja',
'payment_reference_code_length_limits' => 'Referentni kod plaćanja<br>Ograničenja duljine',
'payment_reference_code_length_max_label' => 'Maks',
'payment_reference_code_length_min_label' => 'Min',
'payment_reference_code_length_min_label' => '',
'perm_risk' => 'Dozvole veće od 750 za pisanje i 660 za čitanje dovode ovaj program u rizik.',
'phone' => 'Telefon kompanije',
'phone_required' => 'Telefon kompanije je obavezno polje.',
@@ -278,12 +281,15 @@ return [
'right' => 'Desno',
'sales_invoice_format' => 'Format fakture',
'sales_quote_format' => 'Format navedene prodaje',
'mailpath_invalid' => 'Nevažeća sendmail putanja. Dozvoljena su samo slova, brojevi, crtice, donje crte, kose crte, obrnute kose crte, dvotačke, razmaci i tačke.',
'saved_successfully' => 'Konfiguracija je uspješno snimljena.',
'saved_unsuccessfully' => 'Konfiguracija nije uspješno snimljena.',
'security_issue' => 'Upozorenje o sigurnosnoj ranjivosti',
'server_notice' => 'Koristite informacije u nastavku za prijavljivanje problema.',
'service_charge' => '',
'shortcuts' => '',
'shortcuts_configuration' => '',
'shortcuts_duplicate_bindings' => '',
'shortcuts_save_error' => '',
'show_due_enable' => '',
'show_office_group' => 'Prikaži ikonu kancelarije',
'statistics' => 'Pošalji statistiku',
@@ -301,10 +307,6 @@ return [
'suggestions_layout' => 'Prijedlozi za pretraživanje',
'suggestions_second_column' => 'Kolona 2',
'suggestions_third_column' => 'Kolona 3',
'shortcuts' => '',
'shortcuts_configuration' => '',
'shortcuts_duplicate_bindings' => '',
'shortcuts_save_error' => '',
'system_conf' => 'Podešavanja & Konf',
'system_info' => 'Sistem Info',
'system_info_copy' => '',
+1 -1
View File
@@ -34,6 +34,7 @@ return [
'none_selected' => 'Niste izabrali nijednog kupca za brisanje.',
'one_or_multiple' => 'kupac(i)',
'quantity' => 'Količina',
'rewards_package' => 'Nagrade',
'stats_info' => 'Statistika',
'successful_adding' => 'Uspješno ste dodali kupca',
'successful_deleted' => 'Kupac je uspješno izbrisan',
@@ -43,5 +44,4 @@ return [
'taxable' => 'Oporezivo',
'total' => 'Ukupno',
'update' => 'Ažuriraj kupca',
'rewards_package' => 'Nagrade',
];
+1
View File
@@ -41,6 +41,7 @@ return [
'successful_deleted' => 'Uspješno ste izbrisali zaposlenika',
'successful_updating' => 'Uspješno ste ažurirali zaposlenika',
'system_language' => 'Sistemski jezik',
'unauthorized_modify' => '',
'unsuccessful_change_password' => 'Promjena lozinke nije uspjela.',
'update' => 'Ažuriraj zaposlenika',
'username' => 'Korisničko ime',
+3 -3
View File
@@ -1,14 +1,14 @@
<?php
return [
'encryption_key_not_provisioned' => '',
'no_permission_module' => 'Nemate dozvolu za pristup modulu',
'throttle_key_not_provisioned' => '',
'unable_to_create_env_file' => 'Nije moguće kreirati {filePath} za obezbjeđivanje throttle.key',
'unable_to_lock_file' => 'Nije moguće zaključati {filePath}: {reason}',
'unable_to_open_lock_file' => 'Nije moguće otvoriti {filePath}: {reason}',
'unable_to_persist_throttle_key' => 'Nije moguće trajno sačuvati throttle.key u {filePath}',
'unable_to_persist_encryption_key' => '',
'encryption_key_not_provisioned' => '',
'throttle_key_not_provisioned' => '',
'unable_to_persist_throttle_key' => 'Nije moguće trajno sačuvati throttle.key u {filePath}',
'unable_to_read_env_file' => 'Nije moguće pročitati {filePath} za obezbjeđivanje throttle.key',
'unknown' => 'Neočekivana greška',
];
+1 -1
View File
@@ -27,7 +27,7 @@ return [
'due_filter' => 'Dospijeće',
'employee' => 'Napravio',
'error_adding_updating' => 'Greška pri dodavanju / ažuriranju troškova',
'expense_id' => 'Id',
'expense_id' => '',
'expenses_employee' => 'Zaposlenik',
'info' => 'Informacije o troškovima',
'ip_address' => '',
+2 -2
View File
@@ -1,10 +1,10 @@
<?php
return [
'category_name_required' => 'Naziv kategorije je obavezan',
'add_item' => 'Dodaj kategoriju',
'cannot_be_deleted' => 'Nije moguće izbrisati kategoriju',
'category_id' => 'Id',
'category_id' => '',
'category_name_required' => 'Naziv kategorije je obavezan',
'confirm_delete' => 'Da li ste sigurni da želite da izbrišete izabranu kategoriju?',
'confirm_restore' => 'Da li ste sigurni da želite da vratite izabranu kategoriju?',
'description' => 'Opis Kategorije',
-2
View File
@@ -17,8 +17,6 @@ return [
'item' => 'Artikal',
'item_kit_number' => 'Barkod',
'item_kit_number_duplicate' => 'Broj kompleta predmeta već je prisutan u bazi podataka.',
'item_number' => '',
'item_number_duplicate' => '',
'items' => 'Artikli',
'kit' => 'ID kompleta',
'kit_and_components' => 'Komplet i komponente',
+2 -2
View File
@@ -95,7 +95,7 @@ return [
'search_attributes' => 'Pretraživanje atributa',
'select_image' => 'Izaberite sliku',
'serialized_items' => 'Artikal ima ser. broj',
'standard' => 'Standard',
'standard' => '',
'stock' => 'Skladište',
'stock_location' => 'Mjesto skladišta',
'stock_type' => 'Vrsta zalihe',
@@ -110,8 +110,8 @@ return [
'tax_category' => 'Kategorija poreza',
'tax_name_invalid' => 'Naziv poreza sadrži nedozvoljene znakove.',
'tax_percent' => 'Procenat poreza',
'tax_percent_number' => 'Procenat poreza mora biti numerička vrijednost',
'tax_percent_non_negative' => '',
'tax_percent_number' => 'Procenat poreza mora biti numerička vrijednost',
'tax_percent_required' => 'Procenat poreza je obavezno polje.',
'tax_percents' => 'Porez %',
'temp' => 'Privremeno',
+2 -2
View File
@@ -11,6 +11,6 @@ return [
'phone_number_required' => 'Broj telefona je obavezan',
'phone_placeholder' => 'Broj mobilnog telefona ovde...',
'sms_send' => 'Pošalji SMS',
'successfully_sent' => 'Poruka je uspješno poslata: ',
'unsuccessfully_sent' => 'Poruka nije uspešno poslata: ',
'successfully_sent' => 'Poruka je uspješno poslata:',
'unsuccessfully_sent' => 'Poruka nije uspešno poslata:',
];
+1
View File
@@ -28,6 +28,7 @@ return [
'item_name' => 'Naziv artikla',
'mode' => 'Način prijema',
'new_supplier' => 'Novi dobavljač',
'not_authorized' => '',
'one_or_multiple' => 'Ulaz(i)',
'print_after_sale' => 'Štampaj poslije prodaje',
'quantity' => 'Količina',
+5 -5
View File
@@ -7,11 +7,11 @@ return [
'categories' => 'Kategorije',
'categories_summary_report' => 'Zbirni izvještaj po kategorijama',
'category' => 'Kategorija',
'code_canceled' => 'CNL',
'code_invoice' => 'INV',
'code_pos' => 'POS',
'code_quote' => 'Q',
'code_return' => 'RET',
'code_canceled' => '',
'code_invoice' => '',
'code_pos' => '',
'code_quote' => '',
'code_return' => '',
'code_type' => 'Tip',
'code_work_order' => 'R/N',
'comments' => 'Komentari',
+19 -18
View File
@@ -34,7 +34,7 @@ return [
'customer_email' => 'E-mail kupca',
'customer_location' => 'Mjesto kupca',
'customer_optional' => '(Potrebno za odloženo plaćanje)',
'customer_required' => 'Obavezno',
'customer_required' => '(Obavezno)',
'customer_total' => 'Ukupno',
'date' => 'Datum prodaje',
'date_range' => 'Period',
@@ -66,7 +66,7 @@ return [
'giftcard_number' => 'Broj poklon kartice',
'group_by_category' => 'Grupiraj po kategoriji',
'group_by_type' => 'Grupiraj po tipu',
'hsn' => 'HSN',
'hsn' => '',
'id' => 'ID prodaje',
'include_prices' => 'Uključi cijene?',
'insufficient_giftcard_balance' => 'Nezadovoljavajući saldo poklon kartice za ovu uplatu.',
@@ -90,26 +90,26 @@ return [
'item_number' => 'Barkod',
'item_out_of_stock' => 'Artikal je rasprodan.',
'key_browser' => '',
'key_cancel' => 'Cancels Current Quote/Invoice/Sale',
'key_customer_search' => 'Customer Search',
'key_finish_quote' => 'Finish Quote/Invoice witdout payment',
'key_finish_sale' => 'Add Payment and Complete Invoice/Sale',
'key_cancel' => '',
'key_customer_search' => '',
'key_finish_quote' => '',
'key_finish_sale' => '',
'key_full' => '',
'key_function' => 'Function',
'key_help' => 'Shortcuts',
'key_help_modal' => 'Open Shortcuts Window',
'key_function' => '',
'key_help' => '',
'key_help_modal' => '',
'key_in' => '',
'key_item_search' => 'Item Search',
'key_item_search' => '',
'key_out' => '',
'key_payment' => 'Add Payment',
'key_payment' => '',
'key_print' => '',
'key_restore' => '',
'key_search' => '',
'key_suspend' => 'Suspend Current Sale',
'key_suspended' => 'Show Suspended Sales',
'key_suspend' => '',
'key_suspended' => '',
'key_system' => '',
'key_tendered' => 'Edit Amount Tendered',
'key_title' => 'Sales Keyboard Shortcuts',
'key_tendered' => '',
'key_title' => '',
'mode' => 'Mod registrovanja',
'must_enter_numeric' => 'Ponuđeni iznos mora biti broj.',
'must_enter_numeric_giftcard' => 'Broj poklon kartice mora biti broj.',
@@ -123,8 +123,9 @@ return [
'new_item' => 'Novi artikal',
'no_description' => 'Nema opisa',
'no_items_in_cart' => 'Nema artikala u korpi.',
'no_sales_to_display' => 'Nema prodaje za prikaz.',
'none_selected' => 'Niste izabrali nijedu prodaju za brisanje.',
'nontaxed_ind' => ' ',
'nontaxed_ind' => '',
'not_authorized' => 'Ova radnja nije ovlašćena.',
'one_or_multiple' => 'Prodaja',
'payment' => 'Tip plaćanja',
@@ -182,7 +183,7 @@ return [
'successfully_updated' => 'Prodaja je uspješno ažurirana.',
'suspend_sale' => 'Obustavi',
'suspended_doc_id' => 'Dokument',
'suspended_sale_id' => 'ID',
'suspended_sale_id' => '',
'suspended_sales' => 'Obustavljeno',
'table' => 'Sto',
'takings' => 'Dnevna prodaja',
@@ -202,7 +203,7 @@ return [
'unsuspend' => 'Odustani',
'unsuspend_and_delete' => 'Akcija',
'update' => 'Ažuriranje',
'upi' => 'UPI',
'upi' => '',
'wallet' => '',
'work_order' => 'Radni nalog',
'work_order_number' => 'Broj radnog naloga',
Loaded 100 of 843 files, more files were not shown because too many files have changed in this diff. Show more