From d0813465288ef6cd3e990fcdf47dca8d85770db2 Mon Sep 17 00:00:00 2001 From: objecttothis <17935339+objecttothis@users.noreply.github.com> Date: Fri, 21 Aug 2026 11:28:19 +0400 Subject: [PATCH 1/8] Codeigniter changes between 4.7.2 and 4.7.4 (#4650) Signed-off-by: objecttothis <17935339+objecttothis@users.noreply.github.com> --- app/Config/Events.php | 3 ++- app/Config/Routes.php | 4 +--- app/Config/Session.php | 1 + app/Config/View.php | 10 ++-------- 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/app/Config/Events.php b/app/Config/Events.php index b69e04947..c46a6f5c6 100644 --- a/app/Config/Events.php +++ b/app/Config/Events.php @@ -37,7 +37,8 @@ Events::on('pre_system', static function (): void { throw new ConfigException('Encryption key could not be provisioned. Check that .env is writable.'); } - if (ini_get('zlib.output_compression')) { + $value = ini_get('zlib.output_compression'); + if (filter_var($value, FILTER_VALIDATE_BOOLEAN) || (int) $value > 0) { throw FrameworkException::forEnabledZlibOutputCompression(); } diff --git a/app/Config/Routes.php b/app/Config/Routes.php index b1cc0a484..a082e6233 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -2,9 +2,7 @@ use CodeIgniter\Router\RouteCollection; -/** - * @var RouteCollection $routes - */ +/** @var RouteCollection $routes */ $routes->setDefaultController('Login'); $routes->get('/', 'Login::index'); diff --git a/app/Config/Session.php b/app/Config/Session.php index 3d78928f4..700fe255f 100644 --- a/app/Config/Session.php +++ b/app/Config/Session.php @@ -15,6 +15,7 @@ class Session extends BaseConfig * -------------------------------------------------------------------------- * * The session storage driver to use: + * - `CodeIgniter\Session\Handlers\ArrayHandler` (for testing) * - `CodeIgniter\Session\Handlers\FileHandler` * - `CodeIgniter\Session\Handlers\DatabaseHandler` * - `CodeIgniter\Session\Handlers\MemcachedHandler` diff --git a/app/Config/View.php b/app/Config/View.php index 582ef7327..b52d980dc 100644 --- a/app/Config/View.php +++ b/app/Config/View.php @@ -5,10 +5,6 @@ namespace Config; use CodeIgniter\Config\View as BaseView; use CodeIgniter\View\ViewDecoratorInterface; -/** - * @phpstan-type parser_callable (callable(mixed): mixed) - * @phpstan-type parser_callable_string (callable(mixed): mixed)&string - */ class View extends BaseView { /** @@ -34,8 +30,7 @@ class View extends BaseView * { title|esc(js) } * { created_on|date(Y-m-d)|esc(attr) } * - * @var array - * @phpstan-var array + * @var array */ public $filters = []; @@ -44,8 +39,7 @@ class View extends BaseView * by the core Parser by creating aliases that will be replaced with * any callable. Can be single or tag pair. * - * @var array|string> - * @phpstan-var array|parser_callable_string|parser_callable> + * @var array> */ public $plugins = []; From 9ee530e454005ff4b6d712b896f40ec23cee9228 Mon Sep 17 00:00:00 2001 From: objecttothis <17935339+objecttothis@users.noreply.github.com> Date: Fri, 21 Aug 2026 21:00:48 +0400 Subject: [PATCH 2/8] Hotfix: Fix CI3 database migration caused by regression (#4649) * refactor: standardize function and variable names to camelCase and improve naming consistency across files * refactor(config): remove spaces around `=` in configuration files for improved consistency and formatting as is required by .env formatting rules. * refactor(security): extract `.env` key management logic into reusable `writeEnvKey` helper, add throttle key provisioning logic, and streamline encryption key updates * fix(migration): improve error handling in CI3 to CI4 encryption data migration - Secure `up` and `convertCI3EncryptedData` methods with detailed exception handling for script execution and data saving. * fix(migration): ensure empty string is correctly handled in CI3 to CI4 encryption data conversion * refactor(security): enhance `.env` management with durable writes, better locking, and helper abstraction - Update `writeEnvKey` to return a success flag and handle file locks robustly. - Introduce `atomicWriteFile` for atomic writes to prevent partial file updates. - Add `applyEnvKeyReplacement` to streamline `.env` key insertion and updates. - Improve throttle key provisioning with validation and runtime persistence safeguards. * refactor(security): implement dedicated `.env` file locking for robust and cross-platform safe write operations - Add `lockEnvFile` and `unlockEnvFile` helpers to manage `.env` mutex files. - Refactor `.env` write logic to use lock helpers, improving reliability and preventing race conditions. - Enhance `atomicWriteFile` for better handling of file overwrites on Windows and POSIX systems. * fix(migration): improve encryption error handling during CI3 to CI4 data conversion - Add conditional checks for `checkEncryption` to prevent failed key persistence. - Introduce `abortEncryptionConversion` for cleanup on failure. - Update `writeEnvKey` to handle and return errors gracefully. * refactor(security): improve `atomicWriteFile` for better file locking and cross-platform durability - Replace `uniqid` with `bin2hex(random_bytes())` for more secure temp file naming. - Add explicit file permissions and locking for safe concurrent writes. - Enhance error handling to ensure atomicity on both Windows and POSIX systems. * Add env temp files to gitignore so they don't get tracked. --------- Signed-off-by: objecttothis <17935339+objecttothis@users.noreply.github.com> --- .env.example | 80 ++--- .gitignore | 2 + app/Config/Events.php | 8 +- app/Controllers/Config.php | 12 +- .../20220127000000_convertToCI4.php | 147 ++++++++ .../20220127000000_convert_to_ci4.php | 148 -------- ...conversion.sql => 3.4.0_CI4Conversion.sql} | 0 app/Filters/Throttle.php | 4 +- app/Helpers/security_helper.php | 321 +++++++++++++++--- app/Libraries/Email_lib.php | 2 +- 10 files changed, 474 insertions(+), 250 deletions(-) create mode 100644 app/Database/Migrations/20220127000000_convertToCI4.php delete mode 100644 app/Database/Migrations/20220127000000_convert_to_ci4.php rename app/Database/Migrations/sqlscripts/{3.4.0_ci4_conversion.sql => 3.4.0_CI4Conversion.sql} (100%) diff --git a/.env.example b/.env.example index 1f5cc21c7..e6dca7d6d 100644 --- a/.env.example +++ b/.env.example @@ -2,7 +2,7 @@ # ENVIRONMENT #-------------------------------------------------------------------- -CI_ENVIRONMENT = production +CI_ENVIRONMENT=production #-------------------------------------------------------------------- # SECURITY: ALLOWED HOSTNAMES @@ -14,71 +14,71 @@ CI_ENVIRONMENT = production # In development, falls back to 'localhost' with an error log. # # Configure with comma-separated list of domains/subdomains: -# app.allowedHostnames = 'yourdomain.com,www.yourdomain.com' +# app.allowedHostnames='yourdomain.com,www.yourdomain.com' # # Or via environment variable (useful for Docker/Compose): # ALLOWED_HOSTNAMES=yourdomain.com,www.yourdomain.com # # For local development: -# app.allowedHostnames = 'localhost' +# app.allowedHostnames='localhost' # # Note: Do not include protocol (http/https) or port numbers. -app.allowedHostnames = '' +app.allowedHostnames='' #-------------------------------------------------------------------- # DATABASE #-------------------------------------------------------------------- -database.default.hostname = 'localhost' -database.default.database = 'ospos' -database.default.username = 'admin' -database.default.password = 'pointofsale' -database.default.DBDriver = 'MySQLi' -database.default.DBPrefix = 'ospos_' +database.default.hostname='localhost' +database.default.database='ospos' +database.default.username='admin' +database.default.password='pointofsale' +database.default.DBDriver='MySQLi' +database.default.DBPrefix='ospos_' -database.development.hostname = 'localhost' -database.development.database = 'ospos' -database.development.username = 'admin' -database.development.password = 'pointofsale' -database.development.DBDriver = 'MySQLi' -database.development.DBPrefix = 'ospos_' +database.development.hostname='localhost' +database.development.database='ospos' +database.development.username='admin' +database.development.password='pointofsale' +database.development.DBDriver='MySQLi' +database.development.DBPrefix='ospos_' -database.tests.hostname = 'localhost' -database.tests.database = 'ospos' -database.tests.username = 'admin' -database.tests.password = 'pointofsale' -database.tests.DBDriver = 'MySQLi' -database.tests.DBPrefix = 'ospos_' +database.tests.hostname='localhost' +database.tests.database='ospos' +database.tests.username='admin' +database.tests.password='pointofsale' +database.tests.DBDriver='MySQLi' +database.tests.DBPrefix='ospos_' #-------------------------------------------------------------------- # ENCRYPTION #-------------------------------------------------------------------- -encryption.key = '' +encryption.key='' #-------------------------------------------------------------------- # LOGGER -# - 0 = Disables logging, Error logging TURNED OFF -# - 1 = Emergency Messages - System is unusable -# - 2 = Alert Messages - Action Must Be Taken Immediately -# - 3 = Critical Messages - Application component unavailable, unexpected exception. -# - 4 = Runtime Errors - Don't need immediate action, but should be monitored. -# - 5 = Warnings - Exceptional occurrences that are not errors. -# - 6 = Notices - Normal but significant events. -# - 7 = Info - Interesting events, like user logging in, etc. -# - 8 = Debug - Detailed debug information. -# - 9 = All Messages +# - 0=Disables logging, Error logging TURNED OFF +# - 1=Emergency Messages - System is unusable +# - 2=Alert Messages - Action Must Be Taken Immediately +# - 3=Critical Messages - Application component unavailable, unexpected exception. +# - 4=Runtime Errors - Don't need immediate action, but should be monitored. +# - 5=Warnings - Exceptional occurrences that are not errors. +# - 6=Notices - Normal but significant events. +# - 7=Info - Interesting events, like user logging in, etc. +# - 8=Debug - Detailed debug information. +# - 9=All Messages #-------------------------------------------------------------------- -logger.threshold = 0 -app.db_log_enabled = false +logger.threshold=0 +app.db_log_enabled=false #-------------------------------------------------------------------- # HONEYPOT #-------------------------------------------------------------------- -honeypot.hidden = true -honeypot.label = 'Fill This Field' -honeypot.name = 'honeypot' -honeypot.template = '' -honeypot.container = '
{template}
' +honeypot.hidden=true +honeypot.label='Fill This Field' +honeypot.name='honeypot' +honeypot.template='' +honeypot.container='
{template}
' diff --git a/.gitignore b/.gitignore index 7b498d13d..6d066cb9e 100644 --- a/.gitignore +++ b/.gitignore @@ -76,6 +76,8 @@ system/ *~ *.~ .env +.env.lock +.env.tmp.* auth.json *.png diff --git a/app/Config/Events.php b/app/Config/Events.php index c46a6f5c6..3a34f1cd5 100644 --- a/app/Config/Events.php +++ b/app/Config/Events.php @@ -3,7 +3,6 @@ namespace Config; use CodeIgniter\Events\Events; -use CodeIgniter\Exceptions\ConfigException; use CodeIgniter\Exceptions\FrameworkException; use CodeIgniter\HotReloader\HotReloader; use App\Events\Db_log; @@ -30,12 +29,7 @@ use App\Events\Method; Events::on('pre_system', static function (): void { if (ENVIRONMENT !== 'testing') { helper('security'); - check_encryption(); - - $encryptionKey = config('Encryption')->key; - if (empty($encryptionKey) || strlen($encryptionKey) < 64) { - throw new ConfigException('Encryption key could not be provisioned. Check that .env is writable.'); - } + checkThrottleEncryption(); $value = ini_get('zlib.output_compression'); if (filter_var($value, FILTER_VALIDATE_BOOLEAN) || (int) $value > 0) { diff --git a/app/Controllers/Config.php b/app/Controllers/Config.php index 5c0b33171..fdf4f1daf 100644 --- a/app/Controllers/Config.php +++ b/app/Controllers/Config.php @@ -64,7 +64,7 @@ class Config extends Secure_Controller $this->db = Database::connect(); helper('security'); - if (check_encryption()) { + if (checkEncryption()) { $this->encrypter = Services::encrypter(); } else { log_message('alert', 'Error preparing encryption key'); @@ -256,7 +256,7 @@ class Config extends Secure_Controller // Integrations Related fields $data['mailchimp'] = []; - if (check_encryption()) { // TODO: Hungarian notation + if (checkEncryption()) { // TODO: Hungarian notation if (!isset($this->encrypter)) { helper('security'); $this->encrypter = Services::encrypter(); @@ -271,7 +271,7 @@ class Config extends Secure_Controller : ''; // Remove any backup of .env created by check_encryption() - remove_backup(); + removeBackup(); } else { $data['mailchimp']['api_key'] = ''; $data['mailchimp']['list_id'] = ''; @@ -533,7 +533,7 @@ class Config extends Secure_Controller { $password = ''; - if (check_encryption() && !empty($this->request->getPost('smtp_pass'))) { + if (checkEncryption() && !empty($this->request->getPost('smtp_pass'))) { $password = $this->encrypter->encrypt($this->request->getPost('smtp_pass')); } @@ -579,7 +579,7 @@ class Config extends Secure_Controller { $password = ''; - if (check_encryption() && !empty($this->request->getPost('msg_pwd'))) { + if (checkEncryption() && !empty($this->request->getPost('msg_pwd'))) { $password = $this->encrypter->encrypt($this->request->getPost('msg_pwd')); } @@ -646,7 +646,7 @@ class Config extends Secure_Controller $api_key = ''; $list_id = ''; - if (check_encryption()) { + if (checkEncryption()) { $api_key_unencrypted = $this->request->getPost('mailchimp_api_key'); if (!empty($api_key_unencrypted)) { $api_key = $this->encrypter->encrypt($api_key_unencrypted); diff --git a/app/Database/Migrations/20220127000000_convertToCI4.php b/app/Database/Migrations/20220127000000_convertToCI4.php new file mode 100644 index 000000000..c600cdb4d --- /dev/null +++ b/app/Database/Migrations/20220127000000_convertToCI4.php @@ -0,0 +1,147 @@ +key; + + if (!empty($existingKey) && strlen($existingKey) < 64) { + $this->convertCI3EncryptedData(); + } else { + if (!checkEncryption()) { + abortEncryptionConversion(); + throw new DatabaseException('Failed to persist encryption key. Check logs for details.'); + } + } + + removeBackup(); + } + + /** + * Revert a migration step. + */ + public function down(): void {} + + /** + * @throws ReflectionException + */ + private function convertCI3EncryptedData(): void + { + $appConfig = model(Appconfig::class); + + $ci3EncryptedData = [ + 'clcdesq_api_key' => '', + 'clcdesq_api_url' => '', + 'mailchimp_api_key' => '', + 'mailchimp_list_id' => '', + 'smtp_pass' => '' + ]; + + foreach ($ci3EncryptedData as $key => $value) { + $ci3EncryptedData[$key] = $appConfig->get_value($key); + } + + $decryptedData = $this->decryptCI3Data($ci3EncryptedData); + + if (!checkEncryption()) { + abortEncryptionConversion(); + throw new DatabaseException('Failed to persist encryption key. Check logs for details.'); + } + + $ci4EncryptedData = $this->encryptData($decryptedData); + + $success = empty(array_diff_assoc($decryptedData, $this->decryptData($ci4EncryptedData))); + if (!$success) { + abortEncryptionConversion(); + throw new RedirectException('login'); // TODO: Need to figure out how to pass the error to the Login controller so that it gets displayed. + } + + if (!$appConfig->batch_save($ci4EncryptedData)) { + abortEncryptionConversion(); + throw new DatabaseException('Failed to save converted encryption data. Check logs for details.'); + } + } + + /** + * Decrypts CI3 encrypted data and returns the plaintext values. + * + * @param array $encryptedData Data encrypted using CI3 methodology. + * @return array Plaintext, unencrypted data. + */ + private function decryptCI3Data(array $encryptedData): array + { + $config = new Encryption(); + $config->driver = 'OpenSSL'; + $config->key = config('Encryption')->key; + $config->cipher = 'AES-128-CBC'; + $config->rawData = false; + $config->encryptKeyInfo = 'encryption'; + $config->authKeyInfo = 'authentication'; + + $encrypter = Services::encrypter($config); + + return array_map(function ($value) use ($encrypter) { + return !empty($value) ? $encrypter->decrypt($value) : ''; + }, $encryptedData); + } + + /** + * Encrypts data using CI4 algorithms. + * + * @param array $plainData Data to be encrypted. + * @return array Encrypted data. + */ + private function encryptData(array $plainData): array + { + $encrypter = Services::encrypter(); + + return array_map(function ($value) use ($encrypter) { + return $value !== '' ? $encrypter->encrypt($value) : ''; + }, $plainData); + } + + /** + * Decrypts data using CI4 algorithms. + * + * @param array $encryptedData Data to be decrypted. + * @return array Decrypted data. + */ + private function decryptData(array $encryptedData): array + { + $encrypter = Services::encrypter(); + + return array_map(function ($value) use ($encrypter) { + return !empty($value) ? $encrypter->decrypt($value) : ''; + }, $encryptedData); + } +} diff --git a/app/Database/Migrations/20220127000000_convert_to_ci4.php b/app/Database/Migrations/20220127000000_convert_to_ci4.php deleted file mode 100644 index 201972810..000000000 --- a/app/Database/Migrations/20220127000000_convert_to_ci4.php +++ /dev/null @@ -1,148 +0,0 @@ -key)) { - $this->convert_ci3_encrypted_data(); - } else { - check_encryption(); - } - - remove_backup(); - } - - /** - * Revert a migration step. - */ - public function down(): void {} - - /** - * @return RedirectResponse|void - * @throws ReflectionException - */ - private function convert_ci3_encrypted_data() - { - $appconfig = model(Appconfig::class); - - $ci3_encrypted_data = [ - 'clcdesq_api_key' => '', - 'clcdesq_api_url' => '', - 'mailchimp_api_key' => '', - 'mailchimp_list_id' => '', - 'smtp_pass' => '' - ]; - - foreach ($ci3_encrypted_data as $key => $value) { - $ci3_encrypted_data[$key] = $appconfig->get_value($key); - } - - $decrypted_data = $this->decrypt_ci3_data($ci3_encrypted_data); - - check_encryption(); - - try { - $ci4_encrypted_data = $this->encrypt_data($decrypted_data); - - $success = empty(array_diff_assoc($decrypted_data, $this->decrypt_data($ci4_encrypted_data))); - if (!$success) { - abort_encryption_conversion(); - remove_backup(); - throw new RedirectException('login'); - } - - $appconfig->batch_save($ci4_encrypted_data); - } catch (RedirectException $e) { - return redirect()->to('login'); // TODO: Need to figure out how to pass the error to the Login controller so that it gets displayed. - } - } - - /** - * Decrypts CI3 encrypted data and returns the plaintext values. - * - * @param array $encrypted_data Data encrypted using CI3 methodology. - * @return array Plaintext, unencrypted data. - */ - private function decrypt_ci3_data(array $encrypted_data): array - { - $config = new Encryption(); - $config->driver = 'OpenSSL'; - $config->key = config('Encryption')->key; - $config->cipher = 'AES-128-CBC'; - $config->rawData = false; - $config->encryptKeyInfo = 'encryption'; - $config->authKeyInfo = 'authentication'; - - $encrypter = Services::encrypter($config); - - $decrypted_data = []; - foreach ($encrypted_data as $key => $value) { - $decrypted_data[$key] = !empty($value) ? $encrypter->decrypt($value) : ''; - } - - return $decrypted_data; - } - - /** - * Encrypts data using CI4 algorithms. - * - * @param array $plain_data Data to be encrypted. - * @return array Encrypted data. - */ - private function encrypt_data(array $plain_data): array - { - $encrypter = Services::encrypter(); - - $encrypted_data = []; - foreach ($plain_data as $key => $value) { - $encrypted_data[$key] = !empty($value) ? $encrypter->encrypt($value) : ''; - } - - return $encrypted_data; - } - - /** - * Decrypts data using CI4 algorithms. - * - * @param array $encrypted_data Data to be decrypted. - * @return array Decrypted data. - */ - private function decrypt_data(array $encrypted_data): array - { - $encrypter = Services::encrypter(); - - $decrypted_data = []; - foreach ($encrypted_data as $key => $value) { - $decrypted_data[$key] = !empty($value) ? $encrypter->decrypt($value) : ''; - } - - return $decrypted_data; - } -} diff --git a/app/Database/Migrations/sqlscripts/3.4.0_ci4_conversion.sql b/app/Database/Migrations/sqlscripts/3.4.0_CI4Conversion.sql similarity index 100% rename from app/Database/Migrations/sqlscripts/3.4.0_ci4_conversion.sql rename to app/Database/Migrations/sqlscripts/3.4.0_CI4Conversion.sql diff --git a/app/Filters/Throttle.php b/app/Filters/Throttle.php index f02c5f6e5..75ca63a79 100644 --- a/app/Filters/Throttle.php +++ b/app/Filters/Throttle.php @@ -24,8 +24,10 @@ class Throttle implements FilterInterface return null; } + helper('security'); + $throttler = Services::throttler(); - $secret = config('Encryption')->key; + $secret = checkThrottleEncryption(); $ipKey = 'login-ip-' . hash_hmac('sha256', $request->getIPAddress(), $secret); $rawUsername = $request->getPost('username'); diff --git a/app/Helpers/security_helper.php b/app/Helpers/security_helper.php index 5311b4ce9..4b95506c1 100644 --- a/app/Helpers/security_helper.php +++ b/app/Helpers/security_helper.php @@ -2,61 +2,216 @@ use CodeIgniter\Encryption\Encryption; use Config\Services; +use Random\RandomException; + +/** + * Opens (creating if needed) and exclusively locks a dedicated mutex file + * for coordinating .env writes. Windows can't rename/delete a file while + * any handle to it is open, so the mutex must be a separate file from + * .env itself — never fopen()/flock() .env directly. + * + * @return resource + */ +function lockEnvFile() +{ + $lockPath = ROOTPATH . '.env.lock'; + + $handle = @fopen($lockPath, 'c+'); + if ($handle === false) { + throw new RuntimeException("Unable to open $lockPath"); + } + + if (!flock($handle, LOCK_EX)) { + fclose($handle); + + throw new RuntimeException("Unable to lock $lockPath"); + } + + return $handle; +} + +/** + * @param resource $handle + * @return void + */ +function unlockEnvFile($handle): void +{ + flock($handle, LOCK_UN); + fclose($handle); +} + +/** + * Replaces or inserts a single `key='value'` line in .env + * + * @param string $envKey + * @param string $value + * @return bool true on success, false if the write could not be completed + */ +function writeEnvKey(string $envKey, string $value): bool +{ + $configPath = ROOTPATH . '.env'; + + if (!file_exists($configPath)) { + $examplePath = ROOTPATH . '.env.example'; + if (file_exists($examplePath)) { + @copy($examplePath, $configPath); + } else { + @file_put_contents($configPath, "# OSPOS Configuration\n\n"); + } + @chmod($configPath, 0640); + } + + if (!file_exists($configPath)) { + return false; + } + + $lock = lockEnvFile(); + + try { + $configFile = file_get_contents($configPath); + if ($configFile === false) { + return false; + } + + $configFile = applyEnvKeyReplacement($configFile, $envKey, $value); + + return atomicWriteFile($configPath, $configFile); + } finally { + unlockEnvFile($lock); + } +} + +/** + * @param string $configFile + * @param string $envKey + * @param string $value + * @return string + */ +function applyEnvKeyReplacement(string $configFile, string $envKey, string $value): string +{ + $pattern = '/^\s*' . preg_quote($envKey, '/') . '\s*=.*/m'; + + if (preg_match($pattern, $configFile)) { + return preg_replace($pattern, "$envKey='$value'", $configFile, 1); + } + + if (preg_match('/^encryption\.key\s*=.*$/m', $configFile, $matches, PREG_OFFSET_CAPTURE)) { + $insertAt = $matches[0][1] + strlen($matches[0][0]); + + return substr_replace($configFile, "\n$envKey='$value'", $insertAt, 0); + } + + return $configFile . "\n$envKey='$value'\n"; +} + +/** + * Writes $contents to a temp file in the same directory as $path, then + * renames it onto $path so readers never observe a partially-written file. + * + * @param string $path + * @param string $contents + * @return bool + */ +function atomicWriteFile(string $path, string $contents): bool +{ + $tmpPath = $path . '.tmp.' . bin2hex(random_bytes(8)); + + $handle = @fopen($tmpPath, 'x'); + if ($handle === false) { + return false; + } + + if (!@chmod($tmpPath, 0640)) { + fclose($handle); + @unlink($tmpPath); + + return false; + } + + $written = fwrite($handle, $contents); + if ($written === false || $written !== strlen($contents) || !fflush($handle)) { + fclose($handle); + @unlink($tmpPath); + + return false; + } + + if (function_exists('fsync') && !fsync($handle)) { + fclose($handle); + @unlink($tmpPath); + + return false; + } + + fclose($handle); + + // rename() overwrites an existing destination on POSIX. On Windows it + // does not, so fall back to unlink()+rename() there. Callers must not + // hold any open handle on $path — Windows can't unlink/rename a path + // that's still open, even by the same process. + if (!@rename($tmpPath, $path)) { + if (PHP_OS_FAMILY !== 'Windows' || !@unlink($path) || !@rename($tmpPath, $path)) { + @unlink($tmpPath); + + return false; + } + } + + @chmod($path, 0640); + + return true; +} /** * @return bool */ -function check_encryption(): bool +function checkEncryption(): bool { - $old_key = config('Encryption')->key; + $oldKey = config('Encryption')->key; - if ((empty($old_key)) || (strlen($old_key) < 64)) { + if ((empty($oldKey)) || (strlen($oldKey) < 64)) { $encryption = new Encryption(); $key = bin2hex($encryption->createKey()); config('Encryption')->key = $key; - $config_path = ROOTPATH . '.env'; - $backup_path = WRITEPATH . '/backup/.env.bak'; - $backup_folder = WRITEPATH . '/backup'; + $configPath = ROOTPATH . '.env'; + $backupPath = WRITEPATH . '/backup/.env.bak'; + $backupFolder = WRITEPATH . '/backup'; - if (!file_exists($backup_folder)) { - @mkdir($backup_folder, 0750, true); + if (!file_exists($backupFolder)) { + @mkdir($backupFolder, 0750, true); } - if (!file_exists($config_path)) { - $example_path = ROOTPATH . '.env.example'; - if (file_exists($example_path)) { - @copy($example_path, $config_path); + if (!file_exists($configPath)) { + $examplePath = ROOTPATH . '.env.example'; + if (file_exists($examplePath)) { + @copy($examplePath, $configPath); } else { - @file_put_contents($config_path, "# OSPOS Configuration\n\n"); + @file_put_contents($configPath, "# OSPOS Configuration\n\n"); } - @chmod($config_path, 0640); + @chmod($configPath, 0640); } - if (file_exists($config_path)) { - @copy($config_path, $backup_path); - @chmod($backup_path, 0640); - @chmod($config_path, 0640); + if (file_exists($configPath)) { + @copy($configPath, $backupPath); + @chmod($backupPath, 0640); + @chmod($configPath, 0640); - $config_file = file_get_contents($config_path); - - if (preg_match('/^\s*encryption\.key\s*=/m', $config_file)) { - $config_file = preg_replace("/^(\s*encryption\.key\s*=\s*).*/m", "\$1'$key'", $config_file, 1); - } else { - $config_file .= "\nencryption.key = '$key'\n"; + if (!writeEnvKey('encryption.key', $key)) { + return false; } - if (!empty($old_key)) { - $old_line = "# encryption.key = '$old_key' REMOVE IF UNNEEDED\r\n"; - if (preg_match('/^encryption\.key\s*=/m', $config_file, $matches, PREG_OFFSET_CAPTURE)) { - $config_file = substr_replace($config_file, $old_line, $matches[0][1], 0); + if (!empty($oldKey)) { + $configFile = file_get_contents($configPath); + $oldLine = "# encryption.key='$oldKey' REMOVE IF UNNEEDED\r\n"; + if (preg_match('/^encryption\.key\s*=/m', $configFile, $matches, PREG_OFFSET_CAPTURE)) { + $configFile = substr_replace($configFile, $oldLine, $matches[0][1], 0); + @file_put_contents($configPath, $configFile); + @chmod($configPath, 0640); } } - @file_put_contents($config_path, $config_file); - @chmod($config_path, 0640); - - log_message('info', "Updated encryption key in $config_path"); + log_message('info', "Updated encryption key in $configPath"); } } @@ -64,32 +219,104 @@ function check_encryption(): bool } /** - * @return void + * Returns a persistent secret for HMAC-hashing login-throttle cache keys. + * + * Deliberately independent of checkEncryption()/encryption.key: the throttle + * filter runs before the login-triggered CI3->CI4 migration, so provisioning + * this secret must never touch or rotate the encryption key. + * + * @return string + * @throws RandomException + * @throws RuntimeException if the key cannot be durably persisted */ -function abort_encryption_conversion(): void +function checkThrottleEncryption(): string { - $config_path = ROOTPATH . '.env'; - $backup_path = WRITEPATH . '/backup/.env.bak'; + $key = (string) env('throttle.key', ''); - if (!file_exists($backup_path)) { - return; + if (!empty($key)) { + return $key; } - @chmod($config_path, 0640); - $config_file = file_get_contents($backup_path); - @file_put_contents($config_path, $config_file); - log_message('info', "Restored $config_path from backup"); + $configPath = ROOTPATH . '.env'; + + if (!file_exists($configPath)) { + $examplePath = ROOTPATH . '.env.example'; + if (file_exists($examplePath)) { + @copy($examplePath, $configPath); + } else { + @file_put_contents($configPath, "# OSPOS Configuration\n\n"); + } + @chmod($configPath, 0640); + } + + if (!file_exists($configPath)) { + throw new RuntimeException("Unable to create $configPath to provision throttle.key"); + } + + $lock = lockEnvFile(); + + try { + $configFile = file_get_contents($configPath); + if ($configFile === false) { + throw new RuntimeException("Unable to read $configPath to provision throttle.key"); + } + + // Another process may have provisioned the key while we waited for the lock. + if (preg_match('/^\s*throttle\.key\s*=\s*[\'"]?([^\'"\r\n]*)/m', $configFile, $matches)) { + $existing = trim($matches[1]); + if ($existing !== '') { + $key = $existing; + } + } + + if (empty($key)) { + $key = bin2hex(random_bytes(32)); + $configFile = applyEnvKeyReplacement($configFile, 'throttle.key', $key); + + if (!atomicWriteFile($configPath, $configFile)) { + throw new RuntimeException("Unable to persist throttle.key to $configPath"); + } + } + } finally { + unlockEnvFile($lock); + } + + putenv("throttle.key=$key"); + $_ENV['throttle.key'] = $key; + $_SERVER['throttle.key'] = $key; + + log_message('info', 'Provisioned throttle key in ' . ROOTPATH . '.env'); + + return $key; } /** * @return void */ -function remove_backup(): void +function abortEncryptionConversion(): void { - $backup_path = WRITEPATH . '/backup/.env.bak'; - if (!file_exists($backup_path)) { + $configPath = ROOTPATH . '.env'; + $backupPath = WRITEPATH . '/backup/.env.bak'; + + if (!file_exists($backupPath)) { return; } - @unlink($backup_path); - log_message('info', "Removed $backup_path"); + + @chmod($configPath, 0640); + $configFile = file_get_contents($backupPath); + @file_put_contents($configPath, $configFile); + log_message('info', "Restored $configPath from backup"); +} + +/** + * @return void + */ +function removeBackup(): void +{ + $backupPath = WRITEPATH . '/backup/.env.bak'; + if (!file_exists($backupPath)) { + return; + } + @unlink($backupPath); + log_message('info', "Removed $backupPath"); } diff --git a/app/Libraries/Email_lib.php b/app/Libraries/Email_lib.php index eb8a9c24c..9f870c68b 100644 --- a/app/Libraries/Email_lib.php +++ b/app/Libraries/Email_lib.php @@ -29,7 +29,7 @@ class Email_lib $encrypter = Services::encrypter(); $smtp_pass = $this->config['smtp_pass']; - if (!empty($smtp_pass) && check_encryption()) { + if (!empty($smtp_pass) && checkEncryption()) { try { $smtp_pass = $encrypter->decrypt($smtp_pass); } catch (\EncryptionException $e) { From c701d2188697108a94bff9addc18e64bde050d6e Mon Sep 17 00:00:00 2001 From: objecttothis <17935339+objecttothis@users.noreply.github.com> Date: Sun, 23 Aug 2026 17:40:06 +0400 Subject: [PATCH 3/8] fix(sales): gate per-record endpoints behind reports_sales grant (#4627) fix(sales): gate per-record endpoints behind reports_sales grant (REDACTED) Cashiers holding only the base `sales` grant could reach per-sale endpoints (getRow, getEdit, postSave, getReceipt, getInvoice, getSendPdf, getSendReceipt) that require `reports_sales`. getManage() enforced this at the list level, but individual endpoints did not re-check. Regression tests added. Auth: - Introduce `IsLoggedIn` filter to centralize login checks across controllers - Replace custom `AccessDeniedRedirectException` with built-in `RedirectException` Employees: - Add `DISALLOW_PASSWORD_CHANGE` and `DISALLOW_GRANT_CHANGE` env vars to restrict credential and permission changes in locked-down environments - Extract `hasGrantsChanged()` to streamline `postSave` Refactor: - Rename snake_case variables to camelCase in Sales, Items, and Employees controllers for PSR-12 compliance - Use explicit `db_connect()` for transaction clarity in Items controller Fixes: - SMTP config entries fall back to defaults via null coalescing - Migration uses `DROP FOREIGN KEY` instead of `DROP CONSTRAINT` - Password hash upgrade only sets session on successful `hash_version` update - Correct lang key for unknown error in Module model Language: - Translate `error_grant_change_disallowed` / `error_password_change_disallowed` across all 44 supported locales with => alignment matching en reference - Fix "cannot be deleted" messages and misc typos across ~15 language files Tests: - Bootstrap seeder only once in ItemsCsvImportTest; close connection after - Restore `DISALLOW_GRANT_CHANGE` in teardown to prevent side effects - Use `uniqid()` for test user data to avoid collisions Signed-off-by: 17935339+objecttothis@users.noreply.github.com --- .env.example | 21 + app/Config/Filters.php | 3 + app/Controllers/Employees.php | 106 ++-- app/Controllers/Home.php | 9 + app/Controllers/No_access.php | 20 +- app/Controllers/Reports.php | 4 +- app/Controllers/Sales.php | 279 ++++++---- app/Controllers/Secure_Controller.php | 13 +- .../20170501000000_initial_schema.php | 4 +- ...20240630000001_fix_keys_for_db_upgrade.php | 2 +- app/Filters/IsLoggedIn.php | 25 + app/Helpers/locale_helper.php | 2 +- app/Language/ar-EG/Employees.php | 88 +-- app/Language/ar-LB/Employees.php | 88 +-- app/Language/az/Employees.php | 88 +-- app/Language/bg/Employees.php | 88 +-- app/Language/bs/Employees.php | 88 +-- app/Language/ckb/Employees.php | 88 +-- app/Language/cs/Employees.php | 88 +-- app/Language/da/Employees.php | 88 +-- app/Language/de-CH/Employees.php | 88 +-- app/Language/de-DE/Employees.php | 88 +-- app/Language/el/Employees.php | 88 +-- app/Language/en-GB/Employees.php | 86 +-- app/Language/en/Employees.php | 88 +-- app/Language/es-ES/Employees.php | 88 +-- app/Language/es-MX/Employees.php | 88 +-- app/Language/fa/Employees.php | 88 +-- app/Language/fr/Employees.php | 88 +-- app/Language/he/Employees.php | 88 +-- app/Language/hr-HR/Employees.php | 88 +-- app/Language/hu/Employees.php | 88 +-- app/Language/hy/Employees.php | 88 +-- app/Language/id/Employees.php | 88 +-- app/Language/it/Employees.php | 88 +-- app/Language/ka/Employees.php | 49 ++ app/Language/km/Employees.php | 88 +-- app/Language/lo/Employees.php | 88 +-- app/Language/ml/Employees.php | 88 +-- app/Language/nb/Employees.php | 88 +-- app/Language/nl-BE/Employees.php | 88 +-- app/Language/nl-NL/Employees.php | 88 +-- app/Language/pl/Employees.php | 88 +-- app/Language/pt-BR/Employees.php | 88 +-- app/Language/ro/Employees.php | 88 +-- app/Language/ru/Employees.php | 88 +-- app/Language/sv/Employees.php | 88 +-- app/Language/sw-KE/Employees.php | 88 +-- app/Language/sw-TZ/Employees.php | 88 +-- app/Language/ta/Employees.php | 88 +-- app/Language/th/Employees.php | 88 +-- app/Language/tl/Employees.php | 88 +-- app/Language/tr/Employees.php | 88 +-- app/Language/uk/Employees.php | 88 +-- app/Language/ur/Employees.php | 88 +-- app/Language/vi/Employees.php | 88 +-- app/Language/zh-Hans/Employees.php | 88 +-- app/Language/zh-Hant/Employees.php | 88 +-- app/Libraries/Email_lib.php | 18 +- app/Models/Employee.php | 28 +- app/Models/Module.php | 8 +- tests/Controllers/EmployeesControllerTest.php | 146 ++++- tests/Controllers/ItemsCsvImportTest.php | 25 +- tests/Controllers/SalesControllerTest.php | 524 ++++++++++-------- tests/Models/EmployeeTest.php | 187 +++++-- tests/Models/Reports/Summary_taxes_test.php | 2 +- 66 files changed, 3025 insertions(+), 2408 deletions(-) create mode 100644 app/Filters/IsLoggedIn.php create mode 100644 app/Language/ka/Employees.php diff --git a/.env.example b/.env.example index e6dca7d6d..c31bc0443 100644 --- a/.env.example +++ b/.env.example @@ -82,3 +82,24 @@ honeypot.label='Fill This Field' honeypot.name='honeypot' honeypot.template='' honeypot.container='
{template}
' + +#-------------------------------------------------------------------- +# SECURITY: DISALLOW PASSWORD CHANGE +#-------------------------------------------------------------------- +# When true, disables the "change password" feature for all employees. +# Useful when passwords are managed by an external system (e.g. SSO/LDAP). +# +# DISALLOW_PASSWORD_CHANGE=false + +DISALLOW_PASSWORD_CHANGE=false + +#-------------------------------------------------------------------- +# SECURITY: DISALLOW GRANT CHANGE +#-------------------------------------------------------------------- +# When true, disables changing an employee's grants for all employees. +# New employees cannot be created with grants while this is enabled. +# Useful for demo deployments. +# +# DISALLOW_GRANT_CHANGE=false + +DISALLOW_GRANT_CHANGE=false diff --git a/app/Config/Filters.php b/app/Config/Filters.php index f33d2944e..15071e1c3 100644 --- a/app/Config/Filters.php +++ b/app/Config/Filters.php @@ -13,6 +13,7 @@ use CodeIgniter\Filters\InvalidChars; use CodeIgniter\Filters\PageCache; use CodeIgniter\Filters\PerformanceMetrics; use CodeIgniter\Filters\SecureHeaders; +use App\Filters\IsLoggedIn; class Filters extends BaseFilters { @@ -35,6 +36,7 @@ class Filters extends BaseFilters 'forcehttps' => ForceHTTPS::class, 'pagecache' => PageCache::class, 'performance' => PerformanceMetrics::class, + 'isLoggedIn' => IsLoggedIn::class, 'throttle' => Throttle::class, ]; @@ -77,6 +79,7 @@ class Filters extends BaseFilters 'honeypot', 'csrf' => ['except' => 'login|migrate'], 'invalidchars', + 'isLoggedIn' => ['except' => 'login|migrate'], ], 'after' => [ 'toolbar', diff --git a/app/Controllers/Employees.php b/app/Controllers/Employees.php index 8e183d2d9..3b13114ce 100644 --- a/app/Controllers/Employees.php +++ b/app/Controllers/Employees.php @@ -3,6 +3,7 @@ namespace App\Controllers; use App\Models\Module; +use CodeIgniter\HTTP\Exceptions\RedirectException; use CodeIgniter\HTTP\ResponseInterface; use Config\Services; @@ -79,8 +80,7 @@ class Employees extends Persons $current_user = $this->employee->get_logged_in_employee_info(); if ($employee_id != NEW_ENTRY && !$this->employee->canModifyEmployee($person_info->person_id, $current_user->person_id)) { - header('Location: ' . base_url('no_access/employees/employees')); - exit(); + throw new RedirectException('no_access/employees/employees'); } foreach (get_object_vars($person_info) as $property => $value) { @@ -114,13 +114,13 @@ class Employees extends Persons * Inserts/updates an employee * @return ResponseInterface */ - public function postSave(int $employee_id = NEW_ENTRY): ResponseInterface + public function postSave(int $employeeId = NEW_ENTRY): ResponseInterface { - $current_user = $this->employee->get_logged_in_employee_info(); + $currentUser = $this->employee->get_logged_in_employee_info(); - if ($employee_id != NEW_ENTRY) { - $target_employee = $this->employee->get_info($employee_id); - if (!$this->employee->canModifyEmployee($target_employee->person_id, $current_user->person_id)) { + if ($employeeId != NEW_ENTRY) { + $targetEmployee = $this->employee->get_info($employeeId); + if (!$this->employee->canModifyEmployee($targetEmployee->person_id, $currentUser->person_id)) { return $this->response->setJSON([ 'success' => false, 'message' => lang('Employees.error_updating_admin'), @@ -129,17 +129,17 @@ class Employees extends Persons } } - $first_name = $this->request->getPost('first_name', FILTER_SANITIZE_FULL_SPECIAL_CHARS); // TODO: duplicated code - $last_name = $this->request->getPost('last_name', FILTER_SANITIZE_FULL_SPECIAL_CHARS); + $firstName = $this->request->getPost('first_name', FILTER_SANITIZE_FULL_SPECIAL_CHARS); // TODO: duplicated code + $lastName = $this->request->getPost('last_name', FILTER_SANITIZE_FULL_SPECIAL_CHARS); $email = strtolower($this->request->getPost('email', FILTER_SANITIZE_EMAIL)); // format first and last name properly - $first_name = $this->nameize($first_name); - $last_name = $this->nameize($last_name); + $firstName = $this->nameize($firstName); + $lastName = $this->nameize($lastName); - $person_data = [ - 'first_name' => $first_name, - 'last_name' => $last_name, + $personData = [ + 'first_name' => $firstName, + 'last_name' => $lastName, 'gender' => $this->request->getPost('gender', FILTER_SANITIZE_NUMBER_INT), 'email' => $email, 'phone_number' => $this->request->getPost('phone_number', FILTER_SANITIZE_FULL_SPECIAL_CHARS), @@ -152,27 +152,44 @@ class Employees extends Persons 'comments' => $this->request->getPost('comments', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ]; - $grants_array = []; - $isAdmin = $this->employee->isAdmin($current_user->person_id); + $grantsArray = []; + $isAdmin = $this->employee->isAdmin($currentUser->person_id); foreach ($this->module->get_all_permissions()->getResult() as $permission) { $grants = []; $grant = $this->request->getPost('grant_' . $permission->permission_id) != null ? $this->request->getPost('grant_' . $permission->permission_id, FILTER_SANITIZE_FULL_SPECIAL_CHARS) : ''; if ($grant == $permission->permission_id) { - if (!$isAdmin && !$this->employee->has_grant($permission->permission_id, $current_user->person_id)) { + if (!$isAdmin && !$this->employee->has_grant($permission->permission_id, $currentUser->person_id)) { continue; } $grants['permission_id'] = $permission->permission_id; $grants['menu_group'] = $this->request->getPost('menu_group_' . $permission->permission_id) != null ? $this->request->getPost('menu_group_' . $permission->permission_id, FILTER_SANITIZE_FULL_SPECIAL_CHARS) : '--'; - $grants_array[] = $grants; + $grantsArray[] = $grants; } } + if (filter_var(getenv('DISALLOW_GRANT_CHANGE'), FILTER_VALIDATE_BOOLEAN) + && $this->hasGrantsChanged($employeeId, $isAdmin, $currentUser, $grantsArray)) { + return $this->response->setJSON([ + 'success' => false, + 'message' => lang('Employees.error_grant_change_disallowed'), + 'id' => $employeeId + ]); + } + + if (!empty($this->request->getPost('password')) && ENVIRONMENT != 'testing' && filter_var(getenv('DISALLOW_PASSWORD_CHANGE'), FILTER_VALIDATE_BOOLEAN)) { + return $this->response->setJSON([ + 'success' => false, + 'message' => lang('Employees.error_password_change_disallowed'), + 'id' => $employeeId + ]); + } + // Password has been changed OR first time password set if (!empty($this->request->getPost('password')) && ENVIRONMENT != 'testing') { $exploded = explode(":", $this->request->getPost('language', FILTER_SANITIZE_FULL_SPECIAL_CHARS)); - $employee_data = [ + $employeeData = [ 'username' => $this->request->getPost('username', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'password' => password_hash($this->request->getPost('password'), PASSWORD_DEFAULT), 'hash_version' => 2, @@ -181,42 +198,69 @@ class Employees extends Persons ]; } else { // Password not changed $exploded = explode(":", $this->request->getPost('language', FILTER_SANITIZE_FULL_SPECIAL_CHARS)); - $employee_data = [ + $employeeData = [ 'username' => $this->request->getPost('username', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'language_code' => $exploded[0], 'language' => $exploded[1] ]; } - if ($this->employee->save_employee($person_data, $employee_data, $grants_array, $employee_id)) { + if ($this->employee->save_employee($personData, $employeeData, $grantsArray, $employeeId)) { // New employee - if ($employee_id == NEW_ENTRY) { + if ($employeeId == NEW_ENTRY) { return $this->response->setJSON([ 'success' => true, - 'message' => lang('Employees.successful_adding') . ' ' . $first_name . ' ' . $last_name, - 'id' => $employee_data['person_id'] + 'message' => lang('Employees.successful_adding') . ' ' . $firstName . ' ' . $lastName, + 'id' => $employeeData['person_id'] ]); } else { // Existing employee - $logged_in_employee_id = session()->get('person_id'); - if ($employee_id == $logged_in_employee_id) { - session()->set('language_code', $employee_data['language_code']); - session()->set('language', $employee_data['language']); + $loggedInEmployeeId = session()->get('person_id'); + if ($employeeId == $loggedInEmployeeId) { + session()->set('language_code', $employeeData['language_code']); + session()->set('language', $employeeData['language']); } return $this->response->setJSON([ 'success' => true, - 'message' => lang('Employees.successful_updating') . ' ' . $first_name . ' ' . $last_name, - 'id' => $employee_id + 'message' => lang('Employees.successful_updating') . ' ' . $firstName . ' ' . $lastName, + 'id' => $employeeId ]); } } else { // Failure return $this->response->setJSON([ 'success' => false, - 'message' => lang('Employees.error_adding_updating') . ' ' . $first_name . ' ' . $last_name, + 'message' => lang('Employees.error_adding_updating') . ' ' . $firstName . ' ' . $lastName, 'id' => NEW_ENTRY ]); } } + /** + * Determines whether the submitted grants differ from the employee's current grants, + * limited to the permissions the current user has authority over when not an admin. + */ + private function hasGrantsChanged(int $employeeId, bool $isAdmin, object $currentUser, array $grantsArray): bool + { + $currentGrantIds = []; + + if ($employeeId != NEW_ENTRY) { + $currentGrantIds = array_column($this->employee->get_employee_grants($employeeId), 'permission_id'); + + if (!$isAdmin) { + $currentGrantIds = array_values(array_filter( + $currentGrantIds, + fn ($permissionId) => $this->employee->has_grant($permissionId, $currentUser->person_id) + )); + } + } + + $submittedGrantIds = array_column($grantsArray, 'permission_id'); + + sort($currentGrantIds); + sort($submittedGrantIds); + + return $currentGrantIds !== $submittedGrantIds; + } + /** * This deletes employees from the employees table * @return ResponseInterface diff --git a/app/Controllers/Home.php b/app/Controllers/Home.php index 9ae68e2df..84690cdf2 100644 --- a/app/Controllers/Home.php +++ b/app/Controllers/Home.php @@ -3,13 +3,22 @@ namespace App\Controllers; use App\Libraries\MY_Migration; +use App\Models\Employee; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\ResponseInterface; +use Config\Services; class Home extends Secure_Controller { public function __construct() { + $methodName = Services::request()->getUri()->getSegment(2); + + if ($methodName === 'logout') { + $this->employee = model(Employee::class); + return; + } + parent::__construct('home', null, 'home'); } diff --git a/app/Controllers/No_access.php b/app/Controllers/No_access.php index 87716c758..4e1f909a2 100644 --- a/app/Controllers/No_access.php +++ b/app/Controllers/No_access.php @@ -2,8 +2,10 @@ namespace App\Controllers; +use App\Models\Employee; use App\Models\Module; use CodeIgniter\HTTP\ResponseInterface; +use Config\OSPOS; /** * Part of the grants mechanism to restrict access to modules that the user doesn't have permission for. @@ -13,10 +15,12 @@ use CodeIgniter\HTTP\ResponseInterface; */ class No_access extends BaseController { + private Employee $employee; private Module $module; public function __construct() { + $this->employee = model(Employee::class); $this->module = model(Module::class); } @@ -30,6 +34,20 @@ class No_access extends BaseController $data['module_name'] = $this->module->get_module_name($module_id); $data['permission_id'] = $permission_id; - return view('no_access', $data); + $userInfo = $this->employee->get_logged_in_employee_info(); + if ($userInfo === false) { + return view('no_access', $data); + } + + $menuGroup = session()->get('menu_group'); + $allowedModules = $menuGroup == 'home' + ? $this->module->get_allowed_home_modules($userInfo->person_id) + : $this->module->get_allowed_office_modules($userInfo->person_id); + + $data['user_info'] = $userInfo; + $data['allowed_modules'] = $allowedModules->getResult(); + $data['config'] = config(OSPOS::class)->settings; + + return view('partial/header', $data) . view('no_access', $data) . view('partial/footer'); } } diff --git a/app/Controllers/Reports.php b/app/Controllers/Reports.php index c8cef5907..786341fdc 100644 --- a/app/Controllers/Reports.php +++ b/app/Controllers/Reports.php @@ -25,6 +25,7 @@ use App\Models\Reports\Summary_sales; use App\Models\Reports\Summary_sales_taxes; use App\Models\Reports\Summary_suppliers; use App\Models\Reports\Summary_taxes; +use CodeIgniter\HTTP\Exceptions\RedirectException; use CodeIgniter\HTTP\ResponseInterface; use Config\OSPOS; use Config\Services; @@ -85,8 +86,7 @@ class Reports extends Secure_Controller // Check access to report submodule if (!$this->employee->has_grant('reports_' . $submodule_id, $this->employee->get_logged_in_employee_info()->person_id)) { - header('Location: ' . base_url('no_access/reports/reports_' . $submodule_id)); - exit(); + throw new RedirectException('no_access/reports/reports_' . $submodule_id); } } diff --git a/app/Controllers/Sales.php b/app/Controllers/Sales.php index 2ea471a4d..aa9730cad 100644 --- a/app/Controllers/Sales.php +++ b/app/Controllers/Sales.php @@ -125,15 +125,21 @@ class Sales extends Secure_Controller } /** - * @param int $row_id + * @param int $rowId * @return ResponseInterface */ - public function getRow(int $row_id): ResponseInterface + public function getRow(int $rowId): ResponseInterface { - $sale_info = $this->sale->get_info($row_id)->getRow(); - $data_row = get_sale_data_row($sale_info); + $personId = $this->session->get('person_id'); - return $this->response->setJSON($data_row); + if (!$this->employee->has_grant('reports_sales', $personId)) { + return $this->response->setStatusCode(403)->setJSON(['success' => false, 'message' => lang('Sales.not_authorized')]); + } + + $saleInfo = $this->sale->get_info($rowId)->getRow(); + $dataRow = get_sale_data_row($saleInfo); + + return $this->response->setJSON($dataRow); } /** @@ -622,6 +628,7 @@ class Sales extends Secure_Controller $description = $this->request->getPost('description', FILTER_SANITIZE_FULL_SPECIAL_CHARS); $serialnumber = $this->request->getPost('serialnumber', FILTER_SANITIZE_FULL_SPECIAL_CHARS); $price = parse_decimals($this->request->getPost('price')); + $price = $price !== false ? number_format((float) $price, totals_decimals(), '.', '') : $price; $quantity = parse_decimals($this->request->getPost('quantity')); $discount_type = $this->request->getPost('discount_type', FILTER_SANITIZE_FULL_SPECIAL_CHARS); $discount = $discount_type @@ -988,38 +995,44 @@ class Sales extends Secure_Controller /** * Email PDF invoice to customer. Used in app/Views/sales/form.php, invoice.php, quote.php, tax_invoice.php and work_order.php * - * @param int $sale_id + * @param int $saleId * @param string $type * @return ResponseInterface * @noinspection PhpUnused */ - public function getSendPdf(int $sale_id, string $type = 'invoice'): ResponseInterface + public function getSendPdf(int $saleId, string $type = 'invoice'): ResponseInterface { - $sale_data = $this->_load_sale_data($sale_id); + $personId = $this->session->get('person_id'); + + if (!$this->employee->has_grant('reports_sales', $personId)) { + return $this->response->setStatusCode(403)->setJSON(['success' => false, 'message' => lang('Sales.not_authorized')]); + } + + $saleData = $this->_load_sale_data($saleId); $result = false; $message = lang('Sales.invoice_no_email'); - if (!empty($sale_data['customer_email'])) { - $to = $sale_data['customer_email']; - $number = array_key_exists($type . "_number", $sale_data) ? $sale_data[$type . "_number"] : ""; + if (!empty($saleData['customer_email'])) { + $to = $saleData['customer_email']; + $number = array_key_exists($type . "_number", $saleData) ? $saleData[$type . "_number"] : ""; $subject = lang('Sales.' . $type) . ' ' . $number; $text = $this->config['invoice_email_message']; $tokens = [ new Token_invoice_sequence($number), - new Token_invoice_count('POS ' . $sale_data['sale_id']), - new Token_customer((array)$sale_data) + new Token_invoice_count('POS ' . $saleData['sale_id']), + new Token_customer((array)$saleData) ]; $text = $this->token_lib->render($text, $tokens); - $sale_data['mimetype'] = $this->email_lib->getLogoMimeType(); + $saleData['mimetype'] = $this->email_lib->getLogoMimeType(); // Build img_tag for email views that need it (receipt_email.php) - $sale_data['img_tag'] = $this->email_lib->buildLogoImgTag(); + $saleData['img_tag'] = $this->email_lib->buildLogoImgTag(); // Generate email attachment: invoice in PDF format $view = Services::renderer(); - $html = $view->setData($sale_data)->render("sales/$type" . '_email', $sale_data); + $html = $view->setData($saleData)->render("sales/$type" . '_email', $saleData); // Load PDF helper helper(['dompdf', 'file']); @@ -1033,32 +1046,38 @@ class Sales extends Secure_Controller $this->sale_lib->clear_all(); - return $this->response->setJSON(['success' => $result, 'message' => $message, 'id' => $sale_id]); + return $this->response->setJSON(['success' => $result, 'message' => $message, 'id' => $saleId]); } /** * Emails sales receipt to customer. Used in app/Views/sales/receipt.php * - * @param int $sale_id + * @param int $saleId * @return ResponseInterface * @noinspection PhpUnused */ - public function getSendReceipt(int $sale_id): ResponseInterface + public function getSendReceipt(int $saleId): ResponseInterface { - $sale_data = $this->_load_sale_data($sale_id); + $personId = $this->session->get('person_id'); + + if (!$this->employee->has_grant('reports_sales', $personId)) { + return $this->response->setStatusCode(403)->setJSON(['success' => false, 'message' => lang('Sales.not_authorized')]); + } + + $saleData = $this->_load_sale_data($saleId); $result = false; $message = lang('Sales.receipt_no_email'); - if (!empty($sale_data['customer_email'])) { - $sale_data['barcode'] = $this->barcode_lib->generate_receipt_barcode($sale_data['sale_id']); - $sale_data['img_tag'] = $this->email_lib->buildLogoImgTag(); + if (!empty($saleData['customer_email'])) { + $saleData['barcode'] = $this->barcode_lib->generate_receipt_barcode($saleData['sale_id']); + $saleData['img_tag'] = $this->email_lib->buildLogoImgTag(); - $to = $sale_data['customer_email']; + $to = $saleData['customer_email']; $subject = lang('Sales.receipt'); $view = Services::renderer(); - $text = $view->setData($sale_data)->render('sales/receipt_email'); + $text = $view->setData($saleData)->render('sales/receipt_email'); $result = $this->email_lib->sendEmail($to, $subject, $text); @@ -1067,7 +1086,7 @@ class Sales extends Secure_Controller $this->sale_lib->clear_all(); - return $this->response->setJSON(['success' => $result, 'message' => $message, 'id' => $sale_id]); + return $this->response->setJSON(['success' => $result, 'message' => $message, 'id' => $saleId]); } /** @@ -1363,13 +1382,19 @@ class Sales extends Secure_Controller /** * Load the sales receipt for a sale. Used in app/Views/sales/form.php * - * @param int $sale_id + * @param int $saleId * @return string * @noinspection PhpUnused */ - public function getReceipt(int $sale_id): string + public function getReceipt(int $saleId): string|ResponseInterface { - $data = $this->_load_sale_data($sale_id); + $personId = $this->session->get('person_id'); + + if (!$this->employee->has_grant('reports_sales', $personId)) { + return redirect()->to('no_access/sales/reports_sales'); + } + + $data = $this->_load_sale_data($saleId); $this->sale_lib->clear_all(); return view('sales/receipt', $data); @@ -1378,13 +1403,19 @@ class Sales extends Secure_Controller /** * Loads the sales invoice for a sale. Used in app/Views/sales/form.php * - * @param int $sale_id + * @param int $saleId * @return string * @noinspection PhpUnused */ - public function getInvoice(int $sale_id): string + public function getInvoice(int $saleId): string|ResponseInterface { - $data = $this->_load_sale_data($sale_id); + $personId = $this->session->get('person_id'); + + if (!$this->employee->has_grant('reports_sales', $personId)) { + return redirect()->to('no_access/sales/reports_sales'); + } + + $data = $this->_load_sale_data($saleId); $this->sale_lib->clear_all(); return view('sales/' . $data['invoice_view'], $data); @@ -1393,30 +1424,36 @@ class Sales extends Secure_Controller /** * Edits an existing sale or work order. Used in app/Views/sales/form.php * - * @param int $sale_id + * @param int $saleId * @return string * @throws ReflectionException */ - public function getEdit(int $sale_id): string + public function getEdit(int $saleId): string|ResponseInterface { + $personId = $this->session->get('person_id'); + + if (!$this->employee->has_grant('reports_sales', $personId)) { + return redirect()->to('no_access/sales/reports_sales'); + } + $data = []; - $sale_info = $this->sale->get_info($sale_id)->getRowArray(); - $data['selected_customer_id'] = $sale_info['customer_id']; - $data['selected_customer_name'] = $sale_info['customer_name']; - $employee_info = $this->employee->get_info($sale_info['employee_id']); - $data['selected_employee_id'] = $sale_info['employee_id']; - $data['selected_employee_name'] = $employee_info->first_name . ' ' . $employee_info->last_name; - $data['sale_info'] = $sale_info; - $balance_due = round($sale_info['amount_due'] - $sale_info['amount_tendered'] + $sale_info['cash_refund'], totals_decimals(), PHP_ROUND_HALF_UP); + $saleInfo = $this->sale->get_info($saleId)->getRowArray(); + $data['selected_customer_id'] = $saleInfo['customer_id']; + $data['selected_customer_name'] = $saleInfo['customer_name']; + $employeeInfo = $this->employee->get_info($saleInfo['employee_id']); + $data['selected_employee_id'] = $saleInfo['employee_id']; + $data['selected_employee_name'] = $employeeInfo->first_name . ' ' . $employeeInfo->last_name; + $data['sale_info'] = $saleInfo; + $balanceDue = round($saleInfo['amount_due'] - $saleInfo['amount_tendered'] + $saleInfo['cash_refund'], totals_decimals(), PHP_ROUND_HALF_UP); - if (!$this->sale_lib->reset_cash_rounding() && $balance_due < 0) { - $balance_due = 0; + if (!$this->sale_lib->reset_cash_rounding() && $balanceDue < 0) { + $balanceDue = 0; } $data['payments'] = []; - foreach ($this->sale->get_sale_payments($sale_id)->getResult() as $payment) { + foreach ($this->sale->get_sale_payments($saleId)->getResult() as $payment) { foreach (get_object_vars($payment) as $property => $value) { $payment->$property = $value; } @@ -1424,24 +1461,24 @@ class Sales extends Secure_Controller } $data['payment_type_new'] = PAYMENT_TYPE_UNASSIGNED; - $data['payment_amount_new'] = $balance_due; + $data['payment_amount_new'] = $balanceDue; - $data['balance_due'] = $balance_due != 0; + $data['balance_due'] = $balanceDue != 0; // Don't allow gift card to be a payment option in a sale transaction edit because it's a complex change - $payment_options = $this->sale->get_payment_options(false); + $paymentOptions = $this->sale->get_payment_options(false); if ($this->sale_lib->reset_cash_rounding()) { - $payment_options[lang('Sales.cash_adjustment')] = lang('Sales.cash_adjustment'); + $paymentOptions[lang('Sales.cash_adjustment')] = lang('Sales.cash_adjustment'); } - $data['payment_options'] = $payment_options; + $data['payment_options'] = $paymentOptions; $data['reference_code_payment_types'] = get_reference_code_payment_types(); // Set up a slightly modified list of payment types for new payment entry - $payment_options["--"] = lang('Common.none_selected_text'); + $paymentOptions["--"] = lang('Common.none_selected_text'); - $data['new_payment_options'] = $payment_options; + $data['new_payment_options'] = $paymentOptions; return view('sales/form', $data); } @@ -1457,7 +1494,7 @@ class Sales extends Secure_Controller $has_grant = $this->employee->has_grant('sales_delete', $employee_id); if (!$has_grant) { - return $this->response->setJSON(['success' => false, 'message' => lang('Sales.not_authorized')]); + return $this->response->setStatusCode(403)->setJSON(['success' => false, 'message' => lang('Sales.not_authorized')]); } else { $sale_ids = $sale_id == NEW_ENTRY ? $this->request->getPost('ids', FILTER_SANITIZE_NUMBER_INT) : [$sale_id]; @@ -1484,7 +1521,7 @@ class Sales extends Secure_Controller $has_grant = $this->employee->has_grant('sales_delete', $employee_id); if (!$has_grant) { - return $this->response->setJSON(['success' => false, 'message' => lang('Sales.not_authorized')]); + return $this->response->setStatusCode(403)->setJSON(['success' => false, 'message' => lang('Sales.not_authorized')]); } else { $sale_ids = $sale_id == NEW_ENTRY ? $this->request->getPost('ids', FILTER_SANITIZE_NUMBER_INT) : [$sale_id]; @@ -1503,20 +1540,26 @@ class Sales extends Secure_Controller /** * This saves the sale from the update sale view (sales/form). * It only updates the sales table and payments. - * @param int $sale_id + * @param int $saleId * @return ResponseInterface * @throws ReflectionException */ - public function postSave(int $sale_id = NEW_ENTRY): ResponseInterface + public function postSave(int $saleId = NEW_ENTRY): ResponseInterface { - $newdate = $this->request->getPost('date', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - $employee_id = $this->employee->get_logged_in_employee_info()->person_id; - $inventory = model(Inventory::class); - $date_formatter = date_create_from_format($this->config['dateformat'] . ' ' . $this->config['timeformat'], $newdate); - $sale_time = $date_formatter->format('Y-m-d H:i:s'); + $personId = $this->session->get('person_id'); - $sale_data = [ - 'sale_time' => $sale_time, + if (!$this->employee->has_grant('reports_sales', $personId)) { + return $this->response->setStatusCode(403)->setJSON(['success' => false, 'message' => lang('Sales.not_authorized')]); + } + + $newdate = $this->request->getPost('date', FILTER_SANITIZE_FULL_SPECIAL_CHARS); + $employeeId = $this->employee->get_logged_in_employee_info()->person_id; + $inventory = model(Inventory::class); + $dateFormatter = date_create_from_format($this->config['dateformat'] . ' ' . $this->config['timeformat'], $newdate); + $saleTime = $dateFormatter->format('Y-m-d H:i:s'); + + $saleData = [ + 'sale_time' => $saleTime, 'customer_id' => $this->request->getPost('customer_id') != '' ? $this->request->getPost('customer_id', FILTER_SANITIZE_NUMBER_INT) : null, 'employee_id' => $this->request->getPost('employee_id') != '' ? $this->request->getPost('employee_id', FILTER_SANITIZE_NUMBER_INT) : null, 'comment' => $this->request->getPost('comment', FILTER_SANITIZE_FULL_SPECIAL_CHARS), @@ -1524,10 +1567,10 @@ class Sales extends Secure_Controller ]; // Validate reference_code for the new payment if applicable - $payment_type_new_check = $this->request->getPost('payment_type_new', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - $payment_amount_new_check = $this->request->getPost('payment_amount_new'); - if ($payment_type_new_check != PAYMENT_TYPE_UNASSIGNED && !empty($payment_amount_new_check) - && in_array($payment_type_new_check, get_reference_code_payment_types())) { + $paymentTypeNewCheck = $this->request->getPost('payment_type_new', FILTER_SANITIZE_FULL_SPECIAL_CHARS); + $paymentAmountNewCheck = $this->request->getPost('payment_amount_new'); + if ($paymentTypeNewCheck != PAYMENT_TYPE_UNASSIGNED && !empty($paymentAmountNewCheck) + && in_array($paymentTypeNewCheck, get_reference_code_payment_types())) { $min = (int)($this->config['payment_reference_code_min'] ?? 3); $max = (int)($this->config['payment_reference_code_max'] ?? 40); $rules = [ @@ -1543,82 +1586,82 @@ class Sales extends Secure_Controller ]; if (!$this->validate($rules, $messages)) { $errors = $this->validator->getErrors(); - return $this->response->setJSON(['success' => false, 'message' => reset($errors), 'id' => $sale_id]); + return $this->response->setJSON(['success' => false, 'message' => reset($errors), 'id' => $saleId]); } } // In order to maintain tradition the only element that can change on prior payments is the payment type - $amount_tendered = 0; - $number_of_payments = $this->request->getPost('number_of_payments', FILTER_SANITIZE_NUMBER_INT); - for ($i = 0; $i < $number_of_payments; ++$i) { - $payment_id = $this->request->getPost("payment_id_$i", FILTER_SANITIZE_NUMBER_INT); - $payment_type = $this->request->getPost("payment_type_$i", FILTER_SANITIZE_FULL_SPECIAL_CHARS); - $payment_amount = parse_decimals($this->request->getPost("payment_amount_$i")); - $refund_type = $this->request->getPost("refund_type_$i", FILTER_SANITIZE_FULL_SPECIAL_CHARS); - $cash_refund = parse_decimals($this->request->getPost("refund_amount_$i")); - $reference_code = $this->request->getPost("reference_code_$i", FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?: null; + $amountTendered = 0; + $numberOfPayments = $this->request->getPost('number_of_payments', FILTER_SANITIZE_NUMBER_INT); + for ($i = 0; $i < $numberOfPayments; ++$i) { + $paymentId = $this->request->getPost("payment_id_$i", FILTER_SANITIZE_NUMBER_INT); + $paymentType = $this->request->getPost("payment_type_$i", FILTER_SANITIZE_FULL_SPECIAL_CHARS); + $paymentAmount = parse_decimals($this->request->getPost("payment_amount_$i")); + $refundType = $this->request->getPost("refund_type_$i", FILTER_SANITIZE_FULL_SPECIAL_CHARS); + $cashRefund = parse_decimals($this->request->getPost("refund_amount_$i")); + $referenceCode = $this->request->getPost("reference_code_$i", FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?: null; - $cash_adjustment = $payment_type == lang('Sales.cash_adjustment') ? CASH_ADJUSTMENT_TRUE : CASH_ADJUSTMENT_FALSE; + $cashAdjustment = $paymentType == lang('Sales.cash_adjustment') ? CASH_ADJUSTMENT_TRUE : CASH_ADJUSTMENT_FALSE; - if (!$cash_adjustment) { - $amount_tendered += $payment_amount - $cash_refund; + if (!$cashAdjustment) { + $amountTendered += $paymentAmount - $cashRefund; } // Non-cash positive refund amounts - if (empty(strstr($refund_type, lang('Sales.cash'))) && $cash_refund > 0) { // TODO: This if and the one below can be combined. + if (empty(strstr($refundType, lang('Sales.cash'))) && $cashRefund > 0) { // TODO: This if and the one below can be combined. // Change it to be a new negative payment (a "non-cash refund") - $payment_type = $refund_type; - $payment_amount = $payment_amount - $cash_refund; - $cash_refund = 0.00; + $paymentType = $refundType; + $paymentAmount = $paymentAmount - $cashRefund; + $cashRefund = 0.00; } - $sale_data['payments'][] = [ - 'payment_id' => $payment_id, - 'payment_type' => $payment_type, - 'payment_amount' => $payment_amount, - 'cash_refund' => $cash_refund, - 'cash_adjustment' => $cash_adjustment, - 'employee_id' => $employee_id, - 'reference_code' => $reference_code, + $saleData['payments'][] = [ + 'payment_id' => $paymentId, + 'payment_type' => $paymentType, + 'payment_amount' => $paymentAmount, + 'cash_refund' => $cashRefund, + 'cash_adjustment' => $cashAdjustment, + 'employee_id' => $employeeId, + 'reference_code' => $referenceCode, ]; } - $payment_id = NEW_ENTRY; - $payment_amount_new = $this->request->getPost('payment_amount_new'); - $payment_type = $this->request->getPost('payment_type_new', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - $reference_code_new = $this->request->getPost('reference_code_new', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?: null; + $paymentId = NEW_ENTRY; + $paymentAmountNew = $this->request->getPost('payment_amount_new'); + $paymentType = $this->request->getPost('payment_type_new', FILTER_SANITIZE_FULL_SPECIAL_CHARS); + $referenceCodeNew = $this->request->getPost('reference_code_new', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?: null; - if ($payment_type != PAYMENT_TYPE_UNASSIGNED && !empty($payment_amount_new)) { - $payment_amount = parse_decimals($payment_amount_new); - $cash_refund = 0; - if ($payment_type == lang('Sales.cash_adjustment')) { - $cash_adjustment = CASH_ADJUSTMENT_TRUE; + if ($paymentType != PAYMENT_TYPE_UNASSIGNED && !empty($paymentAmountNew)) { + $paymentAmount = parse_decimals($paymentAmountNew); + $cashRefund = 0; + if ($paymentType == lang('Sales.cash_adjustment')) { + $cashAdjustment = CASH_ADJUSTMENT_TRUE; } else { - $cash_adjustment = CASH_ADJUSTMENT_FALSE; - $amount_tendered += $payment_amount; - $sale_info = $this->sale->get_info($sale_id)->getRowArray(); + $cashAdjustment = CASH_ADJUSTMENT_FALSE; + $amountTendered += $paymentAmount; + $saleInfo = $this->sale->get_info($saleId)->getRowArray(); - if ($amount_tendered > $sale_info['amount_due']) { - $cash_refund = $amount_tendered - $sale_info['amount_due']; + if ($amountTendered > $saleInfo['amount_due']) { + $cashRefund = $amountTendered - $saleInfo['amount_due']; } } - $sale_data['payments'][] = [ - 'payment_id' => $payment_id, - 'payment_type' => $payment_type, - 'payment_amount' => $payment_amount, - 'cash_refund' => $cash_refund, - 'cash_adjustment' => $cash_adjustment, - 'employee_id' => $employee_id, - 'reference_code' => $reference_code_new, + $saleData['payments'][] = [ + 'payment_id' => $paymentId, + 'payment_type' => $paymentType, + 'payment_amount' => $paymentAmount, + 'cash_refund' => $cashRefund, + 'cash_adjustment' => $cashAdjustment, + 'employee_id' => $employeeId, + 'reference_code' => $referenceCodeNew, ]; } - $inventory->update('POS ' . $sale_id, ['trans_date' => $sale_time]); // TODO: Reflection Exception - if ($this->sale->update($sale_id, $sale_data)) { - return $this->response->setJSON(['success' => true, 'message' => lang('Sales.successfully_updated'), 'id' => $sale_id]); + $inventory->update('POS ' . $saleId, ['trans_date' => $saleTime]); // TODO: Reflection Exception + if ($this->sale->update($saleId, $saleData)) { + return $this->response->setJSON(['success' => true, 'message' => lang('Sales.successfully_updated'), 'id' => $saleId]); } else { - return $this->response->setJSON(['success' => false, 'message' => lang('Sales.unsuccessfully_updated'), 'id' => $sale_id]); + return $this->response->setJSON(['success' => false, 'message' => lang('Sales.unsuccessfully_updated'), 'id' => $saleId]); } } diff --git a/app/Controllers/Secure_Controller.php b/app/Controllers/Secure_Controller.php index 2e6affc44..d59fb00b8 100644 --- a/app/Controllers/Secure_Controller.php +++ b/app/Controllers/Secure_Controller.php @@ -4,6 +4,7 @@ namespace App\Controllers; use App\Models\Employee; use App\Models\Module; +use CodeIgniter\HTTP\Exceptions\RedirectException; use CodeIgniter\HTTP\ResponseInterface; use CodeIgniter\Model; use CodeIgniter\Session\Session; @@ -39,18 +40,12 @@ class Secure_Controller extends BaseController $config = config(OSPOS::class)->settings; $validation = Services::validation(); - if (!$this->employee->is_logged_in()) { - header("Location:" . base_url('login')); - exit(); - } - $logged_in_employee_info = $this->employee->get_logged_in_employee_info(); if ( !$this->employee->has_module_grant($module_id, $logged_in_employee_info->person_id) || (isset($submodule_id) && !$this->employee->has_module_grant($submodule_id, $logged_in_employee_info->person_id)) ) { - header("Location:" . base_url("no_access/$module_id/$submodule_id")); - exit(); + throw new RedirectException("no_access/$module_id/$submodule_id"); } // Load up global global_view_data visible to all the loaded views @@ -144,9 +139,9 @@ class Secure_Controller extends BaseController /** * @param int $data_item_id - * @return false + * @return ResponseInterface|false */ - public function postSave(int $data_item_id = -1) + public function postSave(int $data_item_id = -1): ResponseInterface|false { return false; } diff --git a/app/Database/Migrations/20170501000000_initial_schema.php b/app/Database/Migrations/20170501000000_initial_schema.php index dfa7dce17..610eb1275 100644 --- a/app/Database/Migrations/20170501000000_initial_schema.php +++ b/app/Database/Migrations/20170501000000_initial_schema.php @@ -24,7 +24,7 @@ class Migration_Initial_Schema extends Migration // Check if core application tables exist (existing install) // Note: migrations table may exist even on fresh DB due to migration tracking $tables = $this->db->listTables(); - + // Check for a core application table, not just migrations table foreach ($tables as $table) { // Strip prefix if present for comparison @@ -35,7 +35,7 @@ class Migration_Initial_Schema extends Migration return; } } - + // Fresh install - load initial schema helper('migration'); executeScript(APPPATH . 'Database/Migrations/sqlscripts/initial_schema.sql'); diff --git a/app/Database/Migrations/20240630000001_fix_keys_for_db_upgrade.php b/app/Database/Migrations/20240630000001_fix_keys_for_db_upgrade.php index 2ef6d0bf1..2ee75cc7f 100644 --- a/app/Database/Migrations/20240630000001_fix_keys_for_db_upgrade.php +++ b/app/Database/Migrations/20240630000001_fix_keys_for_db_upgrade.php @@ -56,7 +56,7 @@ class Migration_fix_keys_for_db_upgrade extends Migration $foreignKeyExists = $this->db->query($checkSql)->getRow(); if ($foreignKeyExists) { - $this->db->query('ALTER TABLE ' . $this->db->prefixTable('sales_items_taxes') . ' DROP CONSTRAINT ospos_sales_items_taxes_ibfk_1'); + $this->db->query('ALTER TABLE ' . $this->db->prefixTable('sales_items_taxes') . ' DROP FOREIGN KEY ospos_sales_items_taxes_ibfk_1'); } $this->db->query('ALTER TABLE ' . $this->db->prefixTable('sales_items_taxes') diff --git a/app/Filters/IsLoggedIn.php b/app/Filters/IsLoggedIn.php new file mode 100644 index 000000000..f300ba363 --- /dev/null +++ b/app/Filters/IsLoggedIn.php @@ -0,0 +1,25 @@ +is_logged_in()) { + throw new RedirectException('login'); + } + } + + public function after(RequestInterface $request, ResponseInterface $response, $arguments = null) + { + } +} diff --git a/app/Helpers/locale_helper.php b/app/Helpers/locale_helper.php index 57cf912bd..a9cc3ae64 100644 --- a/app/Helpers/locale_helper.php +++ b/app/Helpers/locale_helper.php @@ -485,7 +485,7 @@ function parse_decimals(string $number, ?int $decimals = null): mixed $fmt = new NumberFormatter($config['number_locale'], NumberFormatter::DECIMAL); if (!$decimals) { - $decimals = intVal($config['currency_decimals']); + $decimals = intVal($config['currency_decimals'] ?? 2); $fmt->setAttribute(NumberFormatter::FRACTION_DIGITS, $decimals); } diff --git a/app/Language/ar-EG/Employees.php b/app/Language/ar-EG/Employees.php index 3429d9986..240636615 100644 --- a/app/Language/ar-EG/Employees.php +++ b/app/Language/ar-EG/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "المعلومات الأساسية للموظف", - "cannot_be_deleted" => "لايمكن حذف الموظفين ، واحد أو أكثر من المظفين قام بإجراء مبيعات :).", - "change_employee" => "", - "change_password" => "تغيير كلمة المرور", - "clerk" => "", - "commission" => "", - "confirm_delete" => "هل أنت متأكد أنك تريد حذف الموظفين المختارين؟", - "confirm_restore" => "هل انت متاكد من استعادة الموظفين المحددين؟", - "current_password" => "كلمة المرور الحالية", - "current_password_invalid" => "كلمة المرور الحالية غير صحيحة.", - "employee" => "موظف", - "error_adding_updating" => "خطاء فى إضافة/تعديل موظف.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "لايمكن حذف المستخدم admin الخاص بنسخة العرض.", - "error_updating_demo_admin" => "لايمكن تغيير بيانات المستخدم admin الخاص بنسخة العرض.", - "language" => "اللغة", - "login_info" => "معلومات دخول الموظف", - "manager" => "", - "new" => "موظف جديد", - "none_selected" => "لم تختار أى من الموظفين للحذف.", - "one_or_multiple" => "موظف/موظفين", - "password" => "كلمة السر", - "password_minlength" => "كلمة السر يجب أن تكون 8 حروف على الأقل.", - "password_must_match" => "كلمتى السر لا تتطابقان.", - "password_not_must_match" => "كلمة المرور الحالية والجديدة يجب ان يكونو فريدين.", - "password_required" => "كلمة السر مطلوبة.", - "permission_desc" => "قم بإضافة الصلاحيات بلإختيار من الأسفل.", - "permission_info" => "اذونات المستخدمين", - "repeat_password" => "كلمة السر مرة اخرى", - "subpermission_required" => "يجب إختيار صلاحية واحدة على الأقل لكل قسم.", - "successful_adding" => "لقد تم إضافة الموظف بنجاح.", - "successful_change_password" => "تم تغيير كلمة المرور بنجاح.", - "successful_deleted" => "لقد تم حذف الموظف بنجاح", - "successful_updating" => "لقد تم تحديث بيانات الموظف بنجاح", - "system_language" => "لغة النظام", - "unsuccessful_change_password" => "فشل في تغيير كلمة المرور.", - "update" => "تحديث بيانات موظف", - "username" => "اسم المستخدم", - "username_duplicate" => "حساب المحدد هو موجود في قاعدة البيانات. نرجوا استخدام اسم حساب مختلف.", - "username_minlength" => "اسم المستخدم يجب أن يكون 5 حروف على الأقل.", - "username_required" => "اسم المستخدم مطلوب.", + 'administrator' => '', + 'basic_information' => 'المعلومات الأساسية للموظف', + 'cannot_be_deleted' => 'لايمكن حذف الموظفين ، واحد أو أكثر من المظفين قام بإجراء مبيعات :).', + 'change_employee' => '', + 'change_password' => 'تغيير كلمة المرور', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'هل أنت متأكد أنك تريد حذف الموظفين المختارين؟', + 'confirm_restore' => 'هل انت متاكد من استعادة الموظفين المحددين؟', + 'current_password' => 'كلمة المرور الحالية', + 'current_password_invalid' => 'كلمة المرور الحالية غير صحيحة.', + 'employee' => 'موظف', + 'error_adding_updating' => 'خطاء فى إضافة/تعديل موظف.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'لايمكن حذف المستخدم admin الخاص بنسخة العرض.', + 'error_grant_change_disallowed' => 'تم تعطيل تغييرات المنح في هذه النسخة التجريبية.', + 'error_password_change_disallowed' => 'تم تعطيل تغييرات كلمة المرور في هذه النسخة التجريبية.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'لايمكن تغيير بيانات المستخدم admin الخاص بنسخة العرض.', + 'language' => 'اللغة', + 'login_info' => 'معلومات دخول الموظف', + 'manager' => '', + 'new' => 'موظف جديد', + 'none_selected' => 'لم تختار أى من الموظفين للحذف.', + 'one_or_multiple' => 'موظف/موظفين', + 'password' => 'كلمة السر', + 'password_minlength' => 'كلمة السر يجب أن تكون 8 حروف على الأقل.', + 'password_must_match' => 'كلمتى السر لا تتطابقان.', + 'password_not_must_match' => 'كلمة المرور الحالية والجديدة يجب ان يكونو فريدين.', + 'password_required' => 'كلمة السر مطلوبة.', + 'permission_desc' => 'قم بإضافة الصلاحيات بلإختيار من الأسفل.', + 'permission_info' => 'اذونات المستخدمين', + 'repeat_password' => 'كلمة السر مرة اخرى', + 'subpermission_required' => 'يجب إختيار صلاحية واحدة على الأقل لكل قسم.', + 'successful_adding' => 'لقد تم إضافة الموظف بنجاح.', + 'successful_change_password' => 'تم تغيير كلمة المرور بنجاح.', + 'successful_deleted' => 'لقد تم حذف الموظف بنجاح', + 'successful_updating' => 'لقد تم تحديث بيانات الموظف بنجاح', + 'system_language' => 'لغة النظام', + 'unsuccessful_change_password' => 'فشل في تغيير كلمة المرور.', + 'update' => 'تحديث بيانات موظف', + 'username' => 'اسم المستخدم', + 'username_duplicate' => 'حساب المحدد هو موجود في قاعدة البيانات. نرجوا استخدام اسم حساب مختلف.', + 'username_minlength' => 'اسم المستخدم يجب أن يكون 5 حروف على الأقل.', + 'username_required' => 'اسم المستخدم مطلوب.', ]; diff --git a/app/Language/ar-LB/Employees.php b/app/Language/ar-LB/Employees.php index 3429d9986..240636615 100644 --- a/app/Language/ar-LB/Employees.php +++ b/app/Language/ar-LB/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "المعلومات الأساسية للموظف", - "cannot_be_deleted" => "لايمكن حذف الموظفين ، واحد أو أكثر من المظفين قام بإجراء مبيعات :).", - "change_employee" => "", - "change_password" => "تغيير كلمة المرور", - "clerk" => "", - "commission" => "", - "confirm_delete" => "هل أنت متأكد أنك تريد حذف الموظفين المختارين؟", - "confirm_restore" => "هل انت متاكد من استعادة الموظفين المحددين؟", - "current_password" => "كلمة المرور الحالية", - "current_password_invalid" => "كلمة المرور الحالية غير صحيحة.", - "employee" => "موظف", - "error_adding_updating" => "خطاء فى إضافة/تعديل موظف.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "لايمكن حذف المستخدم admin الخاص بنسخة العرض.", - "error_updating_demo_admin" => "لايمكن تغيير بيانات المستخدم admin الخاص بنسخة العرض.", - "language" => "اللغة", - "login_info" => "معلومات دخول الموظف", - "manager" => "", - "new" => "موظف جديد", - "none_selected" => "لم تختار أى من الموظفين للحذف.", - "one_or_multiple" => "موظف/موظفين", - "password" => "كلمة السر", - "password_minlength" => "كلمة السر يجب أن تكون 8 حروف على الأقل.", - "password_must_match" => "كلمتى السر لا تتطابقان.", - "password_not_must_match" => "كلمة المرور الحالية والجديدة يجب ان يكونو فريدين.", - "password_required" => "كلمة السر مطلوبة.", - "permission_desc" => "قم بإضافة الصلاحيات بلإختيار من الأسفل.", - "permission_info" => "اذونات المستخدمين", - "repeat_password" => "كلمة السر مرة اخرى", - "subpermission_required" => "يجب إختيار صلاحية واحدة على الأقل لكل قسم.", - "successful_adding" => "لقد تم إضافة الموظف بنجاح.", - "successful_change_password" => "تم تغيير كلمة المرور بنجاح.", - "successful_deleted" => "لقد تم حذف الموظف بنجاح", - "successful_updating" => "لقد تم تحديث بيانات الموظف بنجاح", - "system_language" => "لغة النظام", - "unsuccessful_change_password" => "فشل في تغيير كلمة المرور.", - "update" => "تحديث بيانات موظف", - "username" => "اسم المستخدم", - "username_duplicate" => "حساب المحدد هو موجود في قاعدة البيانات. نرجوا استخدام اسم حساب مختلف.", - "username_minlength" => "اسم المستخدم يجب أن يكون 5 حروف على الأقل.", - "username_required" => "اسم المستخدم مطلوب.", + 'administrator' => '', + 'basic_information' => 'المعلومات الأساسية للموظف', + 'cannot_be_deleted' => 'لايمكن حذف الموظفين ، واحد أو أكثر من المظفين قام بإجراء مبيعات :).', + 'change_employee' => '', + 'change_password' => 'تغيير كلمة المرور', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'هل أنت متأكد أنك تريد حذف الموظفين المختارين؟', + 'confirm_restore' => 'هل انت متاكد من استعادة الموظفين المحددين؟', + 'current_password' => 'كلمة المرور الحالية', + 'current_password_invalid' => 'كلمة المرور الحالية غير صحيحة.', + 'employee' => 'موظف', + 'error_adding_updating' => 'خطاء فى إضافة/تعديل موظف.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'لايمكن حذف المستخدم admin الخاص بنسخة العرض.', + 'error_grant_change_disallowed' => 'تم تعطيل تغييرات المنح في هذه النسخة التجريبية.', + 'error_password_change_disallowed' => 'تم تعطيل تغييرات كلمة المرور في هذه النسخة التجريبية.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'لايمكن تغيير بيانات المستخدم admin الخاص بنسخة العرض.', + 'language' => 'اللغة', + 'login_info' => 'معلومات دخول الموظف', + 'manager' => '', + 'new' => 'موظف جديد', + 'none_selected' => 'لم تختار أى من الموظفين للحذف.', + 'one_or_multiple' => 'موظف/موظفين', + 'password' => 'كلمة السر', + 'password_minlength' => 'كلمة السر يجب أن تكون 8 حروف على الأقل.', + 'password_must_match' => 'كلمتى السر لا تتطابقان.', + 'password_not_must_match' => 'كلمة المرور الحالية والجديدة يجب ان يكونو فريدين.', + 'password_required' => 'كلمة السر مطلوبة.', + 'permission_desc' => 'قم بإضافة الصلاحيات بلإختيار من الأسفل.', + 'permission_info' => 'اذونات المستخدمين', + 'repeat_password' => 'كلمة السر مرة اخرى', + 'subpermission_required' => 'يجب إختيار صلاحية واحدة على الأقل لكل قسم.', + 'successful_adding' => 'لقد تم إضافة الموظف بنجاح.', + 'successful_change_password' => 'تم تغيير كلمة المرور بنجاح.', + 'successful_deleted' => 'لقد تم حذف الموظف بنجاح', + 'successful_updating' => 'لقد تم تحديث بيانات الموظف بنجاح', + 'system_language' => 'لغة النظام', + 'unsuccessful_change_password' => 'فشل في تغيير كلمة المرور.', + 'update' => 'تحديث بيانات موظف', + 'username' => 'اسم المستخدم', + 'username_duplicate' => 'حساب المحدد هو موجود في قاعدة البيانات. نرجوا استخدام اسم حساب مختلف.', + 'username_minlength' => 'اسم المستخدم يجب أن يكون 5 حروف على الأقل.', + 'username_required' => 'اسم المستخدم مطلوب.', ]; diff --git a/app/Language/az/Employees.php b/app/Language/az/Employees.php index c9f8b698b..10ca9ab42 100644 --- a/app/Language/az/Employees.php +++ b/app/Language/az/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Məlumat", - "cannot_be_deleted" => "Seçilmiş əməkdaş (lar) silinə bilməz, bir və ya birdən çox əməkdaş satışlar edib, əks halda siz öz heasabınızı silməyə çalışırsınız.", - "change_employee" => "", - "change_password" => "Şifrəni Dəyiş", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Siz əminsiniz ki seçilmiş əməkdaşları silmək istəyirsiniz?", - "confirm_restore" => "Seçilmiş əməkdaşı (lar) yenidən bərpa etməyinizə əminsinizmi?", - "current_password" => "İndiki Şifrə", - "current_password_invalid" => "Hazirki Şifrə düzgün deyil.", - "employee" => "Əməkdaş", - "error_adding_updating" => "Əməkdaş əlavə etməsk və ya yeniləməsi baş vermədi.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Demo administrator istifadəçisini silə bilməzsiniz.", - "error_updating_demo_admin" => "Demo administrator istifadəçisini dəyişə bilməzsiniz.", - "language" => "Dil", - "login_info" => "Daxil Ol", - "manager" => "", - "new" => "Yeni Əməkdaş", - "none_selected" => "Silmək üçün heç bir işçi (lər) seçməmisiniz.", - "one_or_multiple" => "İşçi (lər)", - "password" => "Şifrə", - "password_minlength" => "Şifrə ən azı 8 simvol olmalıdır.", - "password_must_match" => "Şifrələr uyğun gəlmir.", - "password_not_must_match" => "Hazırki şifrə və yeni şifrə unikal olmalıdır.", - "password_required" => "Şifrə tələb olunur.", - "permission_desc" => "Modullara giriş imkanı vermək üçün aşağıdakı qutuları yoxlayın.", - "permission_info" => "İcazələr", - "repeat_password" => "Şifrəni yenidən təkrar edin", - "subpermission_required" => "Hər bir modul üçün ən azı bir qrant əlavə edin.", - "successful_adding" => "Əməkdaş müvəffəqiyyətə əlavə olundu.", - "successful_change_password" => "Şifrə müvəffəqiyyətlə dəyişildi.", - "successful_deleted" => "Siz uğurla sildiniz", - "successful_updating" => "Siz uğurla əməkdaşı yenilədiniz", - "system_language" => "Sistem Dili", - "unsuccessful_change_password" => "Şifrə dəyişməsi uğursuz oldu.", - "update" => "İşçini yeniləyin", - "username" => "İstifadəçi Adı", - "username_duplicate" => "", - "username_minlength" => "İstifadəçi adı ən azı 5 simvol olmalıdır.", - "username_required" => "İstifadəçi adı tələb olunan sahədir.", + 'administrator' => '', + 'basic_information' => 'Məlumat', + 'cannot_be_deleted' => 'Seçilmiş əməkdaş (lar) silinə bilməz, bir və ya birdən çox əməkdaş satışlar edib, əks halda siz öz hesabınızı silməyə çalışırsınız.', + 'change_employee' => '', + 'change_password' => 'Şifrəni Dəyiş', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Siz əminsiniz ki seçilmiş əməkdaşları silmək istəyirsiniz?', + 'confirm_restore' => 'Seçilmiş əməkdaşı (lar) yenidən bərpa etməyinizə əminsinizmi?', + 'current_password' => 'İndiki Şifrə', + 'current_password_invalid' => 'Hazirki Şifrə düzgün deyil.', + 'employee' => 'Əməkdaş', + 'error_adding_updating' => 'Əməkdaş əlavə etməsk və ya yeniləməsi baş vermədi.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Demo administrator istifadəçisini silə bilməzsiniz.', + 'error_grant_change_disallowed' => 'Bu demodan icazə dəyişiklikləri deaktivdir.', + 'error_password_change_disallowed' => 'Bu demodan şifrə dəyişiklikləri deaktivdir.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Demo administrator istifadəçisini dəyişə bilməzsiniz.', + 'language' => 'Dil', + 'login_info' => 'Daxil Ol', + 'manager' => '', + 'new' => 'Yeni Əməkdaş', + 'none_selected' => 'Silmək üçün heç bir işçi (lər) seçməmisiniz.', + 'one_or_multiple' => 'İşçi (lər)', + 'password' => 'Şifrə', + 'password_minlength' => 'Şifrə ən azı 8 simvol olmalıdır.', + 'password_must_match' => 'Şifrələr uyğun gəlmir.', + 'password_not_must_match' => 'Hazırki şifrə və yeni şifrə unikal olmalıdır.', + 'password_required' => 'Şifrə tələb olunur.', + 'permission_desc' => 'Modullara giriş imkanı vermək üçün aşağıdakı qutuları yoxlayın.', + 'permission_info' => 'İcazələr', + 'repeat_password' => 'Şifrəni yenidən təkrar edin', + 'subpermission_required' => 'Hər bir modul üçün ən azı bir qrant əlavə edin.', + 'successful_adding' => 'Əməkdaş müvəffəqiyyətə əlavə olundu.', + 'successful_change_password' => 'Şifrə müvəffəqiyyətlə dəyişildi.', + 'successful_deleted' => 'Siz uğurla sildiniz', + 'successful_updating' => 'Siz uğurla əməkdaşı yenilədiniz', + 'system_language' => 'Sistem Dili', + 'unsuccessful_change_password' => 'Şifrə dəyişməsi uğursuz oldu.', + 'update' => 'İşçini yeniləyin', + 'username' => 'İstifadəçi Adı', + 'username_duplicate' => '', + 'username_minlength' => 'İstifadəçi adı ən azı 5 simvol olmalıdır.', + 'username_required' => 'İstifadəçi adı tələb olunan sahədir.', ]; diff --git a/app/Language/bg/Employees.php b/app/Language/bg/Employees.php index fc0320bf1..0d3253d19 100644 --- a/app/Language/bg/Employees.php +++ b/app/Language/bg/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Информация", - "cannot_be_deleted" => "Невъзможно е да изтриете избрани служители, един или повече от тях са обработили продажби или се опитвате да изтриете профила си.", - "change_employee" => "", - "change_password" => "Промяна на паролата", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Наистина ли искате да изтриете избрания служител (и)?", - "confirm_restore" => "Наистина ли искате да възстановите избраните служители?", - "current_password" => "Настояща парола", - "current_password_invalid" => "Текущата парола е невалидна.", - "employee" => "Служител", - "error_adding_updating" => "Добавянето или актуализирането на служителите е неуспешно.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Не може да изтриете Пробният Администратор.", - "error_updating_demo_admin" => "Не може да промените Пробният Администратор.", - "language" => "Език", - "login_info" => "Login", - "manager" => "", - "new" => "Нов служител", - "none_selected" => "Не сте избрали служител (и), който да изтриете.", - "one_or_multiple" => "служител (и)", - "password" => "Password", - "password_minlength" => "Паролата трябва да е с дължина най-малко 8 знака.", - "password_must_match" => "Паролите не съвпадат.", - "password_not_must_match" => "Текущата парола и новата парола трябва да са уникални.", - "password_required" => "Изисква се парола.", - "permission_desc" => "Поставете отметка в квадратчетата по-долу, за да получите достъп до модулите.", - "permission_info" => "Разрешения", - "repeat_password" => "Паролата отново", - "subpermission_required" => "Добавете поне един грант за всеки модул.", - "successful_adding" => "Служителя е добавен успешно.", - "successful_change_password" => "Промяна на паролата е успешна.", - "successful_deleted" => "Вие успешно сте изтрили", - "successful_updating" => "Успешно сте актуализирали служител", - "system_language" => "Системен език", - "unsuccessful_change_password" => "Промяната на паролата се провали.", - "update" => "Актуализиране на служителя", - "username" => "Потребител", - "username_duplicate" => "", - "username_minlength" => "Потребителското име трябва да е с дължина най-малко 5 знака.", - "username_required" => "Потребителското име е задължително поле.", + 'administrator' => '', + 'basic_information' => 'Информация', + 'cannot_be_deleted' => 'Невъзможно е да изтриете избрани служители, един или повече от тях са обработили продажби или се опитвате да изтриете профила си.', + 'change_employee' => '', + 'change_password' => 'Промяна на паролата', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Наистина ли искате да изтриете избрания служител (и)?', + 'confirm_restore' => 'Наистина ли искате да възстановите избраните служители?', + 'current_password' => 'Настояща парола', + 'current_password_invalid' => 'Текущата парола е невалидна.', + 'employee' => 'Служител', + 'error_adding_updating' => 'Добавянето или актуализирането на служителите е неуспешно.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Не може да изтриете Пробният Администратор.', + 'error_grant_change_disallowed' => 'Промените на правата са заключени в това демо.', + 'error_password_change_disallowed' => 'Промените на пароли са заключени в това демо.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Не може да промените Пробният Администратор.', + 'language' => 'Език', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'Нов служител', + 'none_selected' => 'Не сте избрали служител (и), който да изтриете.', + 'one_or_multiple' => 'служител (и)', + 'password' => 'Password', + 'password_minlength' => 'Паролата трябва да е с дължина най-малко 8 знака.', + 'password_must_match' => 'Паролите не съвпадат.', + 'password_not_must_match' => 'Текущата парола и новата парола трябва да са уникални.', + 'password_required' => 'Изисква се парола.', + 'permission_desc' => 'Поставете отметка в квадратчетата по-долу, за да получите достъп до модулите.', + 'permission_info' => 'Разрешения', + 'repeat_password' => 'Паролата отново', + 'subpermission_required' => 'Добавете поне един грант за всеки модул.', + 'successful_adding' => 'Служителя е добавен успешно.', + 'successful_change_password' => 'Промяна на паролата е успешна.', + 'successful_deleted' => 'Вие успешно сте изтрили', + 'successful_updating' => 'Успешно сте актуализирали служител', + 'system_language' => 'Системен език', + 'unsuccessful_change_password' => 'Промяната на паролата се провали.', + 'update' => 'Актуализиране на служителя', + 'username' => 'Потребител', + 'username_duplicate' => '', + 'username_minlength' => 'Потребителското име трябва да е с дължина най-малко 5 знака.', + 'username_required' => 'Потребителското име е задължително поле.', ]; diff --git a/app/Language/bs/Employees.php b/app/Language/bs/Employees.php index 17ea3bf77..c63e74422 100644 --- a/app/Language/bs/Employees.php +++ b/app/Language/bs/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Informacije", - "cannot_be_deleted" => "Nije moguće izbrisati odabrane zaposlenike, jedan ili više njih su obradili prodaju ili pokušavate izbrisati svoj nalog.", - "change_employee" => "", - "change_password" => "Promijeni lozinku", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Da li ste zaista sigurni da želite da izbrišete izabranog zaposlenika?", - "confirm_restore" => "Da li ste sigurni da želite da vratite izabranog zaposlenika?", - "current_password" => "Trenutna lozinka", - "current_password_invalid" => "Trenutna lozinka je nevažeća.", - "employee" => "Zaposlenik", - "error_adding_updating" => "Dodavanje ili ažuriranje zaposlenika nije uspjelo.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Ne možete izbrisati demo korisnika administratora.", - "error_updating_demo_admin" => "Ne možete promijeniti korisnika demo administratora.", - "language" => "Jezik", - "login_info" => "Prijava", - "manager" => "", - "new" => "Novi zaposlenik", - "none_selected" => "Nije izabran nijedan zaposlenik za brisanje.", - "one_or_multiple" => "Zaposlenici", - "password" => "Lozinka", - "password_minlength" => "Lozinka mora imati najmanje 8 znakova.", - "password_must_match" => "Lozinke se ne podudaraju.", - "password_not_must_match" => "Trenutna lozinka i nova lozinka moraju biti jedinstvene.", - "password_required" => "Lozinka je obavezna.", - "permission_desc" => "Označite polja u nastavku da biste odobrili pristup modulima.", - "permission_info" => "Dozvole", - "repeat_password" => "Ponovite lozinku", - "subpermission_required" => "Dodajte najmanje jedno odobrenje za svaki modul.", - "successful_adding" => "Uspješno ste dodali zaposlenika.", - "successful_change_password" => "Promjena lozinke je uspješna.", - "successful_deleted" => "Uspješno ste izbrisali zaposlenika", - "successful_updating" => "Uspješno ste ažurirali zaposlenika", - "system_language" => "Sistemski jezik", - "unsuccessful_change_password" => "Promjena lozinke nije uspjela.", - "update" => "Ažuriraj zaposlenika", - "username" => "Korisničko ime", - "username_duplicate" => "Korisničko ime zaposlenog je već u upotrebi. Molimo izaberite drugo.", - "username_minlength" => "Korisničko ime mora imati najmanje 5 znakova.", - "username_required" => "Korisničko ime je obavezno polje.", + 'administrator' => '', + 'basic_information' => 'Informacije', + 'cannot_be_deleted' => 'Nije moguće izbrisati odabrane zaposlenike, jedan ili više njih su obradili prodaju ili pokušavate izbrisati svoj nalog.', + 'change_employee' => '', + 'change_password' => 'Promijeni lozinku', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Da li ste zaista sigurni da želite da izbrišete izabranog zaposlenika?', + 'confirm_restore' => 'Da li ste sigurni da želite da vratite izabranog zaposlenika?', + 'current_password' => 'Trenutna lozinka', + 'current_password_invalid' => 'Trenutna lozinka je nevažeća.', + 'employee' => 'Zaposlenik', + 'error_adding_updating' => 'Dodavanje ili ažuriranje zaposlenika nije uspjelo.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Ne možete izbrisati demo korisnika administratora.', + 'error_grant_change_disallowed' => 'Izmene dozvola su onemogućene u ovoj demo verziji.', + 'error_password_change_disallowed' => 'Izmene lozinke su onemogućene u ovoj demo verziji.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Ne možete promijeniti korisnika demo administratora.', + 'language' => 'Jezik', + 'login_info' => 'Prijava', + 'manager' => '', + 'new' => 'Novi zaposlenik', + 'none_selected' => 'Nije izabran nijedan zaposlenik za brisanje.', + 'one_or_multiple' => 'Zaposlenici', + 'password' => 'Lozinka', + 'password_minlength' => 'Lozinka mora imati najmanje 8 znakova.', + 'password_must_match' => 'Lozinke se ne podudaraju.', + 'password_not_must_match' => 'Trenutna lozinka i nova lozinka moraju biti jedinstvene.', + 'password_required' => 'Lozinka je obavezna.', + 'permission_desc' => 'Označite polja u nastavku da biste odobrili pristup modulima.', + 'permission_info' => 'Dozvole', + 'repeat_password' => 'Ponovite lozinku', + 'subpermission_required' => 'Dodajte najmanje jedno odobrenje za svaki modul.', + 'successful_adding' => 'Uspješno ste dodali zaposlenika.', + 'successful_change_password' => 'Promjena lozinke je uspješna.', + 'successful_deleted' => 'Uspješno ste izbrisali zaposlenika', + 'successful_updating' => 'Uspješno ste ažurirali zaposlenika', + 'system_language' => 'Sistemski jezik', + 'unsuccessful_change_password' => 'Promjena lozinke nije uspjela.', + 'update' => 'Ažuriraj zaposlenika', + 'username' => 'Korisničko ime', + 'username_duplicate' => 'Korisničko ime zaposlenog je već u upotrebi. Molimo izaberite drugo.', + 'username_minlength' => 'Korisničko ime mora imati najmanje 5 znakova.', + 'username_required' => 'Korisničko ime je obavezno polje.', ]; diff --git a/app/Language/ckb/Employees.php b/app/Language/ckb/Employees.php index bc20abf3f..3dff5adc1 100644 --- a/app/Language/ckb/Employees.php +++ b/app/Language/ckb/Employees.php @@ -1,47 +1,49 @@ "", - 'basic_information' => "زانیاری", - 'cannot_be_deleted' => "ناتوانیت کارمەند(ەکان)ی هەڵبژێردراو بسڕیتەوە، یەکێک یان زیاتر لەوانە فرۆشتنی پرۆسێس کردووە یان تۆ هەوڵی سڕینەوەی هەژمارەکەت دەدەیت.", - 'change_employee' => "", - 'change_password' => "وشەی نهێنی بگۆڕە", - 'clerk' => "", - 'commission' => "", - 'confirm_delete' => "‌ئایا دڵنیای کە دەتەوێت کارمەند(ەکان)ی هەڵبژێردراو بسڕیتەوە؟", - 'confirm_restore' => "ئایا دڵنیای کە دەتەوێت کارمەند(ەکان)ی هەڵبژێردراو بگەڕێنیتەوە؟", - 'current_password' => "وشەی نهێنی ئێستا", - 'current_password_invalid' => "وشەی نهێنی ئێستا نادروستە.", - 'employee' => "فەرمانبەر", - 'error_adding_updating' => "زیادکردن یان نوێکردنەوەی کارمەند سەرکەوتوو نەبوو.", - 'error_deleting_admin' => "", - 'error_updating_admin' => "", - 'error_deleting_demo_admin' => "ناتوانیت بەکارهێنەری ئەدمینی تاقیکردنەوەیی بسڕیتەوە.", - 'error_updating_demo_admin' => "ناتوانیت بەکارهێنەری ئەدمین تاقیکردنەوەیی بگۆڕیت.", - 'language' => "زمان", - 'login_info' => "چوونەژوورەوە", - 'manager' => "", - 'new' => "فەرمانبەری نوێ", - 'none_selected' => "هیچ فەرمانبەرێک(کان)ت هەڵنەبژاردووە بۆ سڕینەوە.", - 'one_or_multiple' => "فەرمانبەر(ان)", - 'password' => "وشەی نهێنی", - 'password_minlength' => "وشەی نهێنی دەبێت بەلایەنی کەمەوە ٨ پیت بێت.", - 'password_must_match' => "وشەی نهێنییەکان هاوشێوە نین.", - 'password_not_must_match' => "وشەی نهێنی ئێستا و وشەی نهێنی نوێ دەبێت بێهاوتابن.", - 'password_required' => "وشەی نهێنی پێویستە.", - 'permission_desc' => "چوارگۆشەکانی خوارەوە دیاری بکە بۆ پێدانی دەستگەیشتن بە مۆدیولەکان.", - 'permission_info' => "ڕێپێدانەکان", - 'repeat_password' => "دووبارە وشەی نهێنی", - 'subpermission_required' => "بۆ هەر مۆدیولێک بەلایەنی کەمەوە یەک پێدان زیاد بکە.", - 'successful_adding' => "زیادکردنی فەرمانبەر سەرکەوتوو بوو.", - 'successful_change_password' => "گۆڕینی وشەی نهێنی سەرکەوتوو بوو.", - 'successful_deleted' => "بەسەرکەوتووی سڕیتەوە", - 'successful_updating' => "بەسەرکەوتوویی فەرمانبەرەکەت نوێ کردۆتەوە", - 'system_language' => "زمانی سیستەم", - 'unsuccessful_change_password' => "گۆڕینی وشەی نهێنی سەرکەوتوو نەبوو.", - 'update' => "فەرمانبەر نوێبکەوە", - 'username' => "ناوی بەکارهێنەر", - 'username_duplicate' => "ناوی بەکارهێنەری فەرمانبەر پێشتر بەکارهاتووە. تکایە یەکێکی تر هەڵبژێرە.", - 'username_minlength' => "ناوی بەکارهێنەر دەبێت لانیکەم ٥ پیت درێژ بێت.", - 'username_required' => "ناوی بەکارهێنەر خانەیەکی پێویستە.", + 'administrator' => '', + 'basic_information' => 'زانیاری', + 'cannot_be_deleted' => 'ناتوانیت کارمەند(ەکان)ی هەڵبژێردراو بسڕیتەوە، یەکێک یان زیاتر لەوانە فرۆشتنی پرۆسێس کردووە یان تۆ هەوڵی سڕینەوەی هەژمارەکەت دەدەیت.', + 'change_employee' => '', + 'change_password' => 'وشەی نهێنی بگۆڕە', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '‌ئایا دڵنیای کە دەتەوێت کارمەند(ەکان)ی هەڵبژێردراو بسڕیتەوە؟', + 'confirm_restore' => 'ئایا دڵنیای کە دەتەوێت کارمەند(ەکان)ی هەڵبژێردراو بگەڕێنیتەوە؟', + 'current_password' => 'وشەی نهێنی ئێستا', + 'current_password_invalid' => 'وشەی نهێنی ئێستا نادروستە.', + 'employee' => 'فەرمانبەر', + 'error_adding_updating' => 'زیادکردن یان نوێکردنەوەی کارمەند سەرکەوتوو نەبوو.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'ناتوانیت بەکارهێنەری ئەدمینی تاقیکردنەوەیی بسڕیتەوە.', + 'error_grant_change_disallowed' => 'گۆڕینی دەستگەیشتن لە ئەم دیموێدا ناتوانی لێدرایت.', + 'error_password_change_disallowed' => 'گۆڕینی وشەی نهێنی لە ئەم دیموێدا ناتوانی لێدرایت.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'ناتوانیت بەکارهێنەری ئەدمین تاقیکردنەوەیی بگۆڕیت.', + 'language' => 'زمان', + 'login_info' => 'چوونەژوورەوە', + 'manager' => '', + 'new' => 'فەرمانبەری نوێ', + 'none_selected' => 'هیچ فەرمانبەرێک(کان)ت هەڵنەبژاردووە بۆ سڕینەوە.', + 'one_or_multiple' => 'فەرمانبەر(ان)', + 'password' => 'وشەی نهێنی', + 'password_minlength' => 'وشەی نهێنی دەبێت بەلایەنی کەمەوە ٨ پیت بێت.', + 'password_must_match' => 'وشەی نهێنییەکان هاوشێوە نین.', + 'password_not_must_match' => 'وشەی نهێنی ئێستا و وشەی نهێنی نوێ دەبێت بێهاوتابن.', + 'password_required' => 'وشەی نهێنی پێویستە.', + 'permission_desc' => 'چوارگۆشەکانی خوارەوە دیاری بکە بۆ پێدانی دەستگەیشتن بە مۆدیولەکان.', + 'permission_info' => 'ڕێپێدانەکان', + 'repeat_password' => 'دووبارە وشەی نهێنی', + 'subpermission_required' => 'بۆ هەر مۆدیولێک بەلایەنی کەمەوە یەک پێدان زیاد بکە.', + 'successful_adding' => 'زیادکردنی فەرمانبەر سەرکەوتوو بوو.', + 'successful_change_password' => 'گۆڕینی وشەی نهێنی سەرکەوتوو بوو.', + 'successful_deleted' => 'بەسەرکەوتووی سڕیتەوە', + 'successful_updating' => 'بەسەرکەوتوویی فەرمانبەرەکەت نوێ کردۆتەوە', + 'system_language' => 'زمانی سیستەم', + 'unsuccessful_change_password' => 'گۆڕینی وشەی نهێنی سەرکەوتوو نەبوو.', + 'update' => 'فەرمانبەر نوێبکەوە', + 'username' => 'ناوی بەکارهێنەر', + 'username_duplicate' => 'ناوی بەکارهێنەری فەرمانبەر پێشتر بەکارهاتووە. تکایە یەکێکی تر هەڵبژێرە.', + 'username_minlength' => 'ناوی بەکارهێنەر دەبێت لانیکەم ٥ پیت درێژ بێت.', + 'username_required' => 'ناوی بەکارهێنەر خانەیەکی پێویستە.', ]; diff --git a/app/Language/cs/Employees.php b/app/Language/cs/Employees.php index 34a418062..9d5041001 100644 --- a/app/Language/cs/Employees.php +++ b/app/Language/cs/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "", - "cannot_be_deleted" => "", - "change_employee" => "", - "change_password" => "", - "clerk" => "", - "commission" => "", - "confirm_delete" => "", - "confirm_restore" => "", - "current_password" => "", - "current_password_invalid" => "", - "employee" => "", - "error_adding_updating" => "", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "", - "error_updating_demo_admin" => "", - "language" => "", - "login_info" => "", - "manager" => "", - "new" => "", - "none_selected" => "", - "one_or_multiple" => "", - "password" => "", - "password_minlength" => "", - "password_must_match" => "", - "password_not_must_match" => "", - "password_required" => "", - "permission_desc" => "", - "permission_info" => "", - "repeat_password" => "", - "subpermission_required" => "", - "successful_adding" => "", - "successful_change_password" => "", - "successful_deleted" => "", - "successful_updating" => "", - "system_language" => "", - "unsuccessful_change_password" => "", - "update" => "", - "username" => "", - "username_duplicate" => "", - "username_minlength" => "", - "username_required" => "", + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'Změny oprávnění jsou v tomto demonu zakázány.', + 'error_password_change_disallowed' => 'Změny hesla jsou v tomto demonu zakázány.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/da/Employees.php b/app/Language/da/Employees.php index 59828d128..e79280594 100644 --- a/app/Language/da/Employees.php +++ b/app/Language/da/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Information", - "cannot_be_deleted" => "Unable to delete selected employee(s), one or more of the has processed sales or you are trying to delete your account.", - "change_employee" => "", - "change_password" => "Change Password", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Are you sure you want to delete the selected employee(s)?", - "confirm_restore" => "Are you sure you want to restore selected employee(s)?", - "current_password" => "Current Password", - "current_password_invalid" => "Current Password is invalid.", - "employee" => "Employee", - "error_adding_updating" => "Employee add or update failed.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "You can not delete the demo admin user.", - "error_updating_demo_admin" => "You can not change the demo admin user.", - "language" => "Language", - "login_info" => "Login", - "manager" => "", - "new" => "New Employee", - "none_selected" => "You have not selected any employee(s) to delete.", - "one_or_multiple" => "employee(s)", - "password" => "Password", - "password_minlength" => "Password must be at least 8 characters in length.", - "password_must_match" => "Passwords do not match.", - "password_not_must_match" => "Current password and new password must be unique.", - "password_required" => "Password is required.", - "permission_desc" => "Check the boxes below to grant access to modules.", - "permission_info" => "Permissions", - "repeat_password" => "Password Again", - "subpermission_required" => "Add at least one grant for each module.", - "successful_adding" => "Employee add successful.", - "successful_change_password" => "Password change successful.", - "successful_deleted" => "You have successfully deleted", - "successful_updating" => "You have successfully updated employee", - "system_language" => "System Language", - "unsuccessful_change_password" => "Password change failed.", - "update" => "Update Employee", - "username" => "Username", - "username_duplicate" => "", - "username_minlength" => "Username must be at least 5 characters in length.", - "username_required" => "Username is a required field.", + 'administrator' => '', + 'basic_information' => 'Information', + 'cannot_be_deleted' => 'Unable to delete selected employee(s), one or more of the has processed sales or you are trying to delete your account.', + 'change_employee' => '', + 'change_password' => 'Change Password', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Are you sure you want to delete the selected employee(s)?', + 'confirm_restore' => 'Are you sure you want to restore selected employee(s)?', + 'current_password' => 'Current Password', + 'current_password_invalid' => 'Current Password is invalid.', + 'employee' => 'Employee', + 'error_adding_updating' => 'Employee add or update failed.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'You can not delete the demo admin user.', + 'error_grant_change_disallowed' => 'Rettighedsændringer er deaktiveret i denne demo.', + 'error_password_change_disallowed' => 'Adgangskodeændringer er deaktiveret i denne demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'You can not change the demo admin user.', + 'language' => 'Language', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'New Employee', + 'none_selected' => 'You have not selected any employee(s) to delete.', + 'one_or_multiple' => 'employee(s)', + 'password' => 'Password', + 'password_minlength' => 'Password must be at least 8 characters in length.', + 'password_must_match' => 'Passwords do not match.', + 'password_not_must_match' => 'Current password and new password must be unique.', + 'password_required' => 'Password is required.', + 'permission_desc' => 'Check the boxes below to grant access to modules.', + 'permission_info' => 'Permissions', + 'repeat_password' => 'Password Again', + 'subpermission_required' => 'Add at least one grant for each module.', + 'successful_adding' => 'Employee add successful.', + 'successful_change_password' => 'Password change successful.', + 'successful_deleted' => 'You have successfully deleted', + 'successful_updating' => 'You have successfully updated employee', + 'system_language' => 'System Language', + 'unsuccessful_change_password' => 'Password change failed.', + 'update' => 'Update Employee', + 'username' => 'Username', + 'username_duplicate' => '', + 'username_minlength' => 'Username must be at least 5 characters in length.', + 'username_required' => 'Username is a required field.', ]; diff --git a/app/Language/de-CH/Employees.php b/app/Language/de-CH/Employees.php index 765b2e241..7c072af79 100644 --- a/app/Language/de-CH/Employees.php +++ b/app/Language/de-CH/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Mitarbeiter-Information", - "cannot_be_deleted" => "Konnte gewählten Mitarbeiter nicht löschen, einer oder mehrere weisen Verkäufe aus.", - "change_employee" => "", - "change_password" => "", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Wollen Sie diesen Mitarbeiter wirklich löschen?", - "confirm_restore" => "", - "current_password" => "", - "current_password_invalid" => "", - "employee" => "Mitarbeiter", - "error_adding_updating" => "Fehler beim Hinzufügen/Ändern", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Sie können den Admin nicht löschen", - "error_updating_demo_admin" => "Sie können den Admin nicht ändern", - "language" => "", - "login_info" => "Mitarbeiter Login", - "manager" => "", - "new" => "Neuer Mitarbeiter", - "none_selected" => "Sie haben keinen Mitarbeiter zum Löschen gewählt", - "one_or_multiple" => "Mitarbeiter", - "password" => "Passwort", - "password_minlength" => "Passwort muss mindestens 8 Zeichen lang sein", - "password_must_match" => "Passwörter passen nicht überein", - "password_not_must_match" => "", - "password_required" => "Passwort ist erforderlich", - "permission_desc" => "Klicken Sie unten, um die jeweiligen Zugangsrechte zu aktivieren", - "permission_info" => "Mitarbeiter Zugangsrechte", - "repeat_password" => "Wiederhole Passwort", - "subpermission_required" => "Fügen Sie mindestens ein Zugangsrecht pro Modul hinzu", - "successful_adding" => "Hinzufügen erfolgreich", - "successful_change_password" => "", - "successful_deleted" => "Löschung erfolgreich", - "successful_updating" => "Änderung erfolgreich", - "system_language" => "", - "unsuccessful_change_password" => "", - "update" => "Mitarbeiter ändern", - "username" => "Benutzername", - "username_duplicate" => "", - "username_minlength" => "Benutzername muss mindestens 5 Zeichen lang sein", - "username_required" => "Benutzername ist erforderlich", + 'administrator' => '', + 'basic_information' => 'Mitarbeiter-Information', + 'cannot_be_deleted' => 'Konnte gewählten Mitarbeiter nicht löschen, einer oder mehrere weisen Verkäufe aus.', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Wollen Sie diesen Mitarbeiter wirklich löschen?', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => 'Mitarbeiter', + 'error_adding_updating' => 'Fehler beim Hinzufügen/Ändern', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Sie können den Admin nicht löschen', + 'error_grant_change_disallowed' => 'Berechtigungsänderungen sind in dieser Demo deaktiviert.', + 'error_password_change_disallowed' => 'Passwortänderungen sind in dieser Demo deaktiviert.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Sie können den Admin nicht ändern', + 'language' => '', + 'login_info' => 'Mitarbeiter Login', + 'manager' => '', + 'new' => 'Neuer Mitarbeiter', + 'none_selected' => 'Sie haben keinen Mitarbeiter zum Löschen gewählt', + 'one_or_multiple' => 'Mitarbeiter', + 'password' => 'Passwort', + 'password_minlength' => 'Passwort muss mindestens 8 Zeichen lang sein', + 'password_must_match' => 'Passwörter passen nicht überein', + 'password_not_must_match' => '', + 'password_required' => 'Passwort ist erforderlich', + 'permission_desc' => 'Klicken Sie unten, um die jeweiligen Zugangsrechte zu aktivieren', + 'permission_info' => 'Mitarbeiter Zugangsrechte', + 'repeat_password' => 'Wiederhole Passwort', + 'subpermission_required' => 'Fügen Sie mindestens ein Zugangsrecht pro Modul hinzu', + 'successful_adding' => 'Hinzufügen erfolgreich', + 'successful_change_password' => '', + 'successful_deleted' => 'Löschung erfolgreich', + 'successful_updating' => 'Änderung erfolgreich', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => 'Mitarbeiter ändern', + 'username' => 'Benutzername', + 'username_duplicate' => '', + 'username_minlength' => 'Benutzername muss mindestens 5 Zeichen lang sein', + 'username_required' => 'Benutzername ist erforderlich', ]; diff --git a/app/Language/de-DE/Employees.php b/app/Language/de-DE/Employees.php index 3e4230714..92e7bfd4f 100644 --- a/app/Language/de-DE/Employees.php +++ b/app/Language/de-DE/Employees.php @@ -1,47 +1,49 @@ "Administrator", - "basic_information" => "Mitarbeiter-Information", - "cannot_be_deleted" => "Konnte gewählten Mitarbeiter nicht löschen, einer oder mehrere weisen Verkäufe aus.", - "change_employee" => "Mitarbeiter ändern", - "change_password" => "Passwort Ändern", - "clerk" => "Angestellter", - "commission" => "Provision", - "confirm_delete" => "Wollen Sie diesen Mitarbeiter wirklich löschen?", - "confirm_restore" => "Möchten Sie die ausgewählten Mitarbeiter wiederherstellen?", - "current_password" => "Aktuelles Passwort", - "current_password_invalid" => "Aktuelles Passwort ist ungültig.", - "employee" => "Mitarbeiter", - "error_adding_updating" => "Fehler beim Hinzufügen/Ändern.", - "error_deleting_admin" => "Sie können keinen Administrator löschen.", - "error_updating_admin" => "Sie können keinen Administrator ändern.", - "error_deleting_demo_admin" => "Sie können den Demo-Administrator nicht löschen.", - "error_updating_demo_admin" => "Sie können den Demo-Administrator nicht verändern.", - "language" => "Sprache", - "login_info" => "Mitarbeiter Login", - "manager" => "Manager", - "new" => "Neuer Mitarbeiter", - "none_selected" => "Sie haben keine Mitarbeiter zum Löschen gewählt.", - "one_or_multiple" => "Mitarbeiter", - "password" => "Passwort", - "password_minlength" => "Das Passwort muss mindestens 8 Zeichen lang sein.", - "password_must_match" => "Passwörter stimmen nicht überein.", - "password_not_must_match" => "Altes und neues Passwort dürfen nicht gleich sein.", - "password_required" => "Passwort ist erforderlich.", - "permission_desc" => "Klicken Sie unten, um die jeweiligen Zugangsrechte zu aktivieren.", - "permission_info" => "Mitarbeiter Zugangsrechte", - "repeat_password" => "Wiederhole Passwort", - "subpermission_required" => "Fügen Sie mindestens ein Zugangsrecht pro Modul hinzu.", - "successful_adding" => "Hinzufügen erfolgreich.", - "successful_change_password" => "Passwort erfolgreich geändert.", - "successful_deleted" => "Löschung erfolgreich", - "successful_updating" => "Änderung erfolgreich", - "system_language" => "System Sprache", - "unsuccessful_change_password" => "Passwort ändern fehlgeschlagen.", - "update" => "Mitarbeiter ändern", - "username" => "Benutzername", - "username_duplicate" => "", - "username_minlength" => "Benutzername muss mindestens 5 Zeichen lang sein.", - "username_required" => "Benutzername ist erforderlich.", + 'administrator' => 'Administrator', + 'basic_information' => 'Mitarbeiter-Information', + 'cannot_be_deleted' => 'Konnte gewählten Mitarbeiter nicht löschen, einer oder mehrere weisen Verkäufe aus.', + 'change_employee' => 'Mitarbeiter ändern', + 'change_password' => 'Passwort Ändern', + 'clerk' => 'Angestellter', + 'commission' => 'Provision', + 'confirm_delete' => 'Wollen Sie diesen Mitarbeiter wirklich löschen?', + 'confirm_restore' => 'Möchten Sie die ausgewählten Mitarbeiter wiederherstellen?', + 'current_password' => 'Aktuelles Passwort', + 'current_password_invalid' => 'Aktuelles Passwort ist ungültig.', + 'employee' => 'Mitarbeiter', + 'error_adding_updating' => 'Fehler beim Hinzufügen/Ändern.', + 'error_deleting_admin' => 'Sie können keinen Administrator löschen.', + 'error_deleting_demo_admin' => 'Sie können den Demo-Administrator nicht löschen.', + 'error_grant_change_disallowed' => 'Berechtigungsänderungen sind in dieser Demo deaktiviert.', + 'error_password_change_disallowed' => 'Passwortänderungen sind in dieser Demo deaktiviert.', + 'error_updating_admin' => 'Sie können keinen Administrator ändern.', + 'error_updating_demo_admin' => 'Sie können den Demo-Administrator nicht verändern.', + 'language' => 'Sprache', + 'login_info' => 'Mitarbeiter Login', + 'manager' => 'Manager', + 'new' => 'Neuer Mitarbeiter', + 'none_selected' => 'Sie haben keine Mitarbeiter zum Löschen gewählt.', + 'one_or_multiple' => 'Mitarbeiter', + 'password' => 'Passwort', + 'password_minlength' => 'Das Passwort muss mindestens 8 Zeichen lang sein.', + 'password_must_match' => 'Passwörter stimmen nicht überein.', + 'password_not_must_match' => 'Altes und neues Passwort dürfen nicht gleich sein.', + 'password_required' => 'Passwort ist erforderlich.', + 'permission_desc' => 'Klicken Sie unten, um die jeweiligen Zugangsrechte zu aktivieren.', + 'permission_info' => 'Mitarbeiter Zugangsrechte', + 'repeat_password' => 'Wiederhole Passwort', + 'subpermission_required' => 'Fügen Sie mindestens ein Zugangsrecht pro Modul hinzu.', + 'successful_adding' => 'Hinzufügen erfolgreich.', + 'successful_change_password' => 'Passwort erfolgreich geändert.', + 'successful_deleted' => 'Löschung erfolgreich', + 'successful_updating' => 'Änderung erfolgreich', + 'system_language' => 'System Sprache', + 'unsuccessful_change_password' => 'Passwort ändern fehlgeschlagen.', + 'update' => 'Mitarbeiter ändern', + 'username' => 'Benutzername', + 'username_duplicate' => '', + 'username_minlength' => 'Benutzername muss mindestens 5 Zeichen lang sein.', + 'username_required' => 'Benutzername ist erforderlich.', ]; diff --git a/app/Language/el/Employees.php b/app/Language/el/Employees.php index 34a418062..81991cc1f 100644 --- a/app/Language/el/Employees.php +++ b/app/Language/el/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "", - "cannot_be_deleted" => "", - "change_employee" => "", - "change_password" => "", - "clerk" => "", - "commission" => "", - "confirm_delete" => "", - "confirm_restore" => "", - "current_password" => "", - "current_password_invalid" => "", - "employee" => "", - "error_adding_updating" => "", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "", - "error_updating_demo_admin" => "", - "language" => "", - "login_info" => "", - "manager" => "", - "new" => "", - "none_selected" => "", - "one_or_multiple" => "", - "password" => "", - "password_minlength" => "", - "password_must_match" => "", - "password_not_must_match" => "", - "password_required" => "", - "permission_desc" => "", - "permission_info" => "", - "repeat_password" => "", - "subpermission_required" => "", - "successful_adding" => "", - "successful_change_password" => "", - "successful_deleted" => "", - "successful_updating" => "", - "system_language" => "", - "unsuccessful_change_password" => "", - "update" => "", - "username" => "", - "username_duplicate" => "", - "username_minlength" => "", - "username_required" => "", + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'Οι αλλαγές δικαιωμάτων είναι απενεργοποιημένες σε αυτό το demo.', + 'error_password_change_disallowed' => 'Οι αλλαγές κωδικού πρόσβασης είναι απενεργοποιημένες σε αυτό το demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/en-GB/Employees.php b/app/Language/en-GB/Employees.php index c2b60fb78..ef4b09b19 100644 --- a/app/Language/en-GB/Employees.php +++ b/app/Language/en-GB/Employees.php @@ -1,45 +1,49 @@ "", - "basic_information" => "Information", - "cannot_be_deleted" => "Unable to delete selected Employee(s), one or more of the has processed sales or you are trying to delete your account.", - "change_employee" => "", - "change_password" => "Change Password", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Are you sure you want to delete the selected Employee(s)?", - "confirm_restore" => "Are you sure you want to restore the selected Employee(s)?", - "current_password" => "Current Password", - "current_password_invalid" => "Current Password is invalid.", - "employee" => "Employee", - "error_adding_updating" => "Employee add or update failed.", - "error_deleting_demo_admin" => "You cannot delete the demo admin user.", - "error_updating_demo_admin" => "You cannot change the demo admin user.", - "language" => "Language", - "login_info" => "Login", - "manager" => "", - "new" => "New Employee", - "none_selected" => "You have not selected any Employee(s) to delete.", - "one_or_multiple" => "Employee(s)", - "password" => "Password", - "password_minlength" => "Passwords must be at least 8 characters.", - "password_must_match" => "Passwords do not match.", - "password_not_must_match" => "Current password and new password must be unique.", - "password_required" => "Password is required.", - "permission_desc" => "Check the boxes below to grant access to modules.", - "permission_info" => "Permissions", - "repeat_password" => "Password Again", - "subpermission_required" => "Add at least one grant for each module.", - "successful_adding" => "Employee add successful.", - "successful_change_password" => "Password change successful.", - "successful_deleted" => "You have successfully deleted Employee", - "successful_updating" => "You have successfully updated Employee", - "system_language" => "System Language", - "unsuccessful_change_password" => "Password change failed.", - "update" => "Update Employee", - "username" => "Username", - "username_duplicate" => "Employee username is already in use. Please choose another one.", - "username_minlength" => "Username must be at least 5 characters.", - "username_required" => "Username is a required field.", + 'administrator' => '', + 'basic_information' => 'Information', + 'cannot_be_deleted' => 'Unable to delete selected Employee(s), one or more of them has processed sales or you are trying to delete your account.', + 'change_employee' => '', + 'change_password' => 'Change Password', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Are you sure you want to delete the selected Employee(s)?', + 'confirm_restore' => 'Are you sure you want to restore the selected Employee(s)?', + 'current_password' => 'Current Password', + 'current_password_invalid' => 'Current Password is invalid.', + 'employee' => 'Employee', + 'error_adding_updating' => 'Employee add or update failed.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'You cannot delete the demo admin user.', + 'error_grant_change_disallowed' => 'Grant changes are disabled in this demo.', + 'error_password_change_disallowed' => 'Password changes are disabled in this demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'You cannot change the demo admin user.', + 'language' => 'Language', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'New Employee', + 'none_selected' => 'You have not selected any Employee(s) to delete.', + 'one_or_multiple' => 'Employee(s)', + 'password' => 'Password', + 'password_minlength' => 'Passwords must be at least 8 characters.', + 'password_must_match' => 'Passwords do not match.', + 'password_not_must_match' => 'Current password and new password must be unique.', + 'password_required' => 'Password is required.', + 'permission_desc' => 'Check the boxes below to grant access to modules.', + 'permission_info' => 'Permissions', + 'repeat_password' => 'Password Again', + 'subpermission_required' => 'Add at least one grant for each module.', + 'successful_adding' => 'Employee add successful.', + 'successful_change_password' => 'Password change successful.', + 'successful_deleted' => 'You have successfully deleted Employee', + 'successful_updating' => 'You have successfully updated Employee', + 'system_language' => 'System Language', + 'unsuccessful_change_password' => 'Password change failed.', + 'update' => 'Update Employee', + 'username' => 'Username', + 'username_duplicate' => 'Employee username is already in use. Please choose another one.', + 'username_minlength' => 'Username must be at least 5 characters.', + 'username_required' => 'Username is a required field.', ]; diff --git a/app/Language/en/Employees.php b/app/Language/en/Employees.php index b4d071172..cb61e08b3 100644 --- a/app/Language/en/Employees.php +++ b/app/Language/en/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Information", - "cannot_be_deleted" => "Unable to delete selected employee(s), one or more of the has processed sales or you are trying to delete your account.", - "change_employee" => "", - "change_password" => "Change Password", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Are you sure you want to delete the selected employee(s)?", - "confirm_restore" => "Are you sure you want to restore selected employee(s)?", - "current_password" => "Current Password", - "current_password_invalid" => "Current Password is invalid.", - "employee" => "Employee", - "error_adding_updating" => "Employee add or update failed.", - "error_deleting_admin" => "You cannot delete an admin user.", - "error_deleting_demo_admin" => "You can not delete the demo admin user.", - "error_updating_admin" => "You cannot modify an admin user.", - "error_updating_demo_admin" => "You can not change the demo admin user.", - "language" => "Language", - "login_info" => "Login", - "manager" => "", - "new" => "New Employee", - "none_selected" => "You have not selected any employee(s) to delete.", - "one_or_multiple" => "employee(s)", - "password" => "Password", - "password_minlength" => "Password must be at least 8 characters in length.", - "password_must_match" => "Passwords do not match.", - "password_not_must_match" => "Current password and new password must be unique.", - "password_required" => "Password is required.", - "permission_desc" => "Check the boxes below to grant access to modules.", - "permission_info" => "Permissions", - "repeat_password" => "Password Again", - "subpermission_required" => "Add at least one grant for each module.", - "successful_adding" => "Employee add successful.", - "successful_change_password" => "Password change successful.", - "successful_deleted" => "You have successfully deleted", - "successful_updating" => "You have successfully updated employee", - "system_language" => "System Language", - "unsuccessful_change_password" => "Password change failed.", - "update" => "Update Employee", - "username" => "Username", - "username_duplicate" => "Employee username is already in use. Please choose another one.", - "username_minlength" => "Username must be at least 5 characters in length.", - "username_required" => "Username is a required field.", + 'administrator' => '', + 'basic_information' => 'Information', + 'cannot_be_deleted' => 'Unable to delete selected employee(s), one or more of the has processed sales or you are trying to delete your account.', + 'change_employee' => '', + 'change_password' => 'Change Password', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Are you sure you want to delete the selected employee(s)?', + 'confirm_restore' => 'Are you sure you want to restore selected employee(s)?', + 'current_password' => 'Current Password', + 'current_password_invalid' => 'Current Password is invalid.', + 'employee' => 'Employee', + 'error_adding_updating' => 'Employee add or update failed.', + 'error_deleting_admin' => 'You cannot delete an admin user.', + 'error_deleting_demo_admin' => 'You can not delete the demo admin user.', + 'error_grant_change_disallowed' => 'Grant changes are disabled in this demo.', + 'error_password_change_disallowed' => 'Password changes are disabled in this demo.', + 'error_updating_admin' => 'You cannot modify an admin user.', + 'error_updating_demo_admin' => 'You can not change the demo admin user.', + 'language' => 'Language', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'New Employee', + 'none_selected' => 'You have not selected any employee(s) to delete.', + 'one_or_multiple' => 'employee(s)', + 'password' => 'Password', + 'password_minlength' => 'Password must be at least 8 characters in length.', + 'password_must_match' => 'Passwords do not match.', + 'password_not_must_match' => 'Current password and new password must be unique.', + 'password_required' => 'Password is required.', + 'permission_desc' => 'Check the boxes below to grant access to modules.', + 'permission_info' => 'Permissions', + 'repeat_password' => 'Password Again', + 'subpermission_required' => 'Add at least one grant for each module.', + 'successful_adding' => 'Employee add successful.', + 'successful_change_password' => 'Password change successful.', + 'successful_deleted' => 'You have successfully deleted', + 'successful_updating' => 'You have successfully updated employee', + 'system_language' => 'System Language', + 'unsuccessful_change_password' => 'Password change failed.', + 'update' => 'Update Employee', + 'username' => 'Username', + 'username_duplicate' => 'Employee username is already in use. Please choose another one.', + 'username_minlength' => 'Username must be at least 5 characters in length.', + 'username_required' => 'Username is a required field.', ]; diff --git a/app/Language/es-ES/Employees.php b/app/Language/es-ES/Employees.php index 513721ba4..0fa270cc5 100644 --- a/app/Language/es-ES/Employees.php +++ b/app/Language/es-ES/Employees.php @@ -1,47 +1,49 @@ "Administrador", - "basic_information" => "Información Básica de Empleados", - "cannot_be_deleted" => "No se pudieron borrar empleados. Uno o más empleados tiene ventas procesadas o estás tratando de borrarte a tí mismo(a).", - "change_employee" => "Cambio de Empleado", - "change_password" => "Cambiar Contraseña", - "clerk" => "Empleado", - "commission" => "Tasa de Comisión", - "confirm_delete" => "¿Seguro(a) que quieres borrar los empleados seleccionados?", - "confirm_restore" => "Esta seguro de quere restaurar lo(s) empleado(s) seleccionado(s)?", - "current_password" => "Contraseña Actual", - "current_password_invalid" => "Contraseña Actual Inválida.", - "employee" => "Empleado", - "error_adding_updating" => "Error al agregar/actualizar empleado.", - "error_deleting_admin" => "No puedes eliminar un usuario administrador.", - "error_updating_admin" => "No puedes modificar un usuario administrador.", - "error_deleting_demo_admin" => "No puedes borrar el usuario admin del demo.", - "error_updating_demo_admin" => "No puedes cambiar el usuario admin del demo.", - "language" => "Idioma", - "login_info" => "Información de Ingreso del Empleado", - "manager" => "Encargado", - "new" => "Nuevo Empleado", - "none_selected" => "No has seleccionado empleados para borrar.", - "one_or_multiple" => "empleado(s)", - "password" => "Contraseña", - "password_minlength" => "La contraseña debe tener, por lo menos, 8 caracteres.", - "password_must_match" => "Las Contraseñas no coinciden.", - "password_not_must_match" => "La contraseña actual y la nueva contraseña no deben ser iguales.", - "password_required" => "La Contraseña es requerida.", - "permission_desc" => "Activa las cajas debajo para permitir el acceso a los módulos.", - "permission_info" => "Permisos y Acceso del Empleado", - "repeat_password" => "Repita Contraseña", - "subpermission_required" => "Agregar al menos un permiso para cada modulo.", - "successful_adding" => "Empleado agregado satisfactoriamente.", - "successful_change_password" => "Contraseña cambiada satisfactoriamente.", - "successful_deleted" => "Has borrado satisfactoriamente a", - "successful_updating" => "Has actualizado el empleado satisfactoriamente", - "system_language" => "Idioma de sistema", - "unsuccessful_change_password" => "Cambio de contraseña fallido.", - "update" => "Actualizar Empleado", - "username" => "Usuario", - "username_duplicate" => "Nombre de Usuario de Empleado yá está en uso. Por favor escoja otro.", - "username_minlength" => "El nombre de usuario debe ser por lo menos, 5 caracteres.", - "username_required" => "Nombre de usuario es requerido.", + 'administrator' => 'Administrador', + 'basic_information' => 'Información Básica de Empleados', + 'cannot_be_deleted' => 'No se pudieron borrar empleados. Uno o más empleados tiene ventas procesadas o estás tratando de borrarte a tí mismo(a).', + 'change_employee' => 'Cambio de Empleado', + 'change_password' => 'Cambiar Contraseña', + 'clerk' => 'Empleado', + 'commission' => 'Tasa de Comisión', + 'confirm_delete' => '¿Seguro(a) que quieres borrar los empleados seleccionados?', + 'confirm_restore' => 'Esta seguro de quere restaurar lo(s) empleado(s) seleccionado(s)?', + 'current_password' => 'Contraseña Actual', + 'current_password_invalid' => 'Contraseña Actual Inválida.', + 'employee' => 'Empleado', + 'error_adding_updating' => 'Error al agregar/actualizar empleado.', + 'error_deleting_admin' => 'No puedes eliminar un usuario administrador.', + 'error_deleting_demo_admin' => 'No puedes borrar el usuario admin del demo.', + 'error_grant_change_disallowed' => 'Los cambios de permisos están deshabilitados en esta demo.', + 'error_password_change_disallowed' => 'Los cambios de contraseña están deshabilitados en esta demo.', + 'error_updating_admin' => 'No puedes modificar un usuario administrador.', + 'error_updating_demo_admin' => 'No puedes cambiar el usuario admin del demo.', + 'language' => 'Idioma', + 'login_info' => 'Información de Ingreso del Empleado', + 'manager' => 'Encargado', + 'new' => 'Nuevo Empleado', + 'none_selected' => 'No has seleccionado empleados para borrar.', + 'one_or_multiple' => 'empleado(s)', + 'password' => 'Contraseña', + 'password_minlength' => 'La contraseña debe tener, por lo menos, 8 caracteres.', + 'password_must_match' => 'Las Contraseñas no coinciden.', + 'password_not_must_match' => 'La contraseña actual y la nueva contraseña no deben ser iguales.', + 'password_required' => 'La Contraseña es requerida.', + 'permission_desc' => 'Activa las cajas debajo para permitir el acceso a los módulos.', + 'permission_info' => 'Permisos y Acceso del Empleado', + 'repeat_password' => 'Repita Contraseña', + 'subpermission_required' => 'Agregar al menos un permiso para cada modulo.', + 'successful_adding' => 'Empleado agregado satisfactoriamente.', + 'successful_change_password' => 'Contraseña cambiada satisfactoriamente.', + 'successful_deleted' => 'Has borrado satisfactoriamente a', + 'successful_updating' => 'Has actualizado el empleado satisfactoriamente', + 'system_language' => 'Idioma de sistema', + 'unsuccessful_change_password' => 'Cambio de contraseña fallido.', + 'update' => 'Actualizar Empleado', + 'username' => 'Usuario', + 'username_duplicate' => 'Nombre de Usuario de Empleado yá está en uso. Por favor escoja otro.', + 'username_minlength' => 'El nombre de usuario debe ser por lo menos, 5 caracteres.', + 'username_required' => 'Nombre de usuario es requerido.', ]; diff --git a/app/Language/es-MX/Employees.php b/app/Language/es-MX/Employees.php index 75ccd20ce..1ff9e5963 100644 --- a/app/Language/es-MX/Employees.php +++ b/app/Language/es-MX/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Información", - "cannot_be_deleted" => "No se puede borrar los empleados seleccionados, uno o más de ellos tienen ventas registradas ó intentas borrar tu propia cuenta.", - "change_employee" => "", - "change_password" => "Cambiar contraseña", - "clerk" => "", - "commission" => "", - "confirm_delete" => "¿Estás seguro que deseas borrar los empleados seleccionados?", - "confirm_restore" => "¿Estás seguro que deseas restaurar los empleados seleccionados?", - "current_password" => "Contraseña Actual", - "current_password_invalid" => "La contraseña actual es inválida.", - "employee" => "Empleado", - "error_adding_updating" => "Agregar ó Actualizar empleado ha fallado.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "No puede borrar el usuario demo de administrador.", - "error_updating_demo_admin" => "No puede cambiar el usuario demo de administrador.", - "language" => "Idioma", - "login_info" => "Iniciar sesión", - "manager" => "", - "new" => "Nuevo Empleado", - "none_selected" => "No ha seleccionado empleados a borrar.", - "one_or_multiple" => "Empleado(s)", - "password" => "Contraseña", - "password_minlength" => "La contraseña debe tener por lo menos 8 letras.", - "password_must_match" => "Las contraseñas no coinciden.", - "password_not_must_match" => "La contraseña actual y nueva contraseña deben ser distintas.", - "password_required" => "Se requiere contraseña.", - "permission_desc" => "Selecciona las casillas para otorgar acceso a los módulos.", - "permission_info" => "Permisos", - "repeat_password" => "Contraseña otra vez", - "subpermission_required" => "Concede por lo menos un permiso para cada módulo.", - "successful_adding" => "Empleado agregado exitosamente.", - "successful_change_password" => "Cambio de contraseña exitoso.", - "successful_deleted" => "Se ha borrado correctamente", - "successful_updating" => "Empleado actualizado exitosamente", - "system_language" => "Idioma del sistema", - "unsuccessful_change_password" => "El cambio de contraseña ha fallado.", - "update" => "Actualizar Empleado", - "username" => "Nombre de Usuario", - "username_duplicate" => "El usuario del empleado ya esta en uso. Favor de escoger otro.", - "username_minlength" => "Nombre de usuario debe tener por lo menos 5 letras.", - "username_required" => "Es necesario el nombre de usuario.", + 'administrator' => '', + 'basic_information' => 'Información', + 'cannot_be_deleted' => 'No se puede borrar los empleados seleccionados, uno o más de ellos tienen ventas registradas ó intentas borrar tu propia cuenta.', + 'change_employee' => '', + 'change_password' => 'Cambiar contraseña', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '¿Estás seguro que deseas borrar los empleados seleccionados?', + 'confirm_restore' => '¿Estás seguro que deseas restaurar los empleados seleccionados?', + 'current_password' => 'Contraseña Actual', + 'current_password_invalid' => 'La contraseña actual es inválida.', + 'employee' => 'Empleado', + 'error_adding_updating' => 'Agregar ó Actualizar empleado ha fallado.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'No puede borrar el usuario demo de administrador.', + 'error_grant_change_disallowed' => 'Los cambios de permisos están deshabilitados en esta demo.', + 'error_password_change_disallowed' => 'Los cambios de contraseña están deshabilitados en esta demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'No puede cambiar el usuario demo de administrador.', + 'language' => 'Idioma', + 'login_info' => 'Iniciar sesión', + 'manager' => '', + 'new' => 'Nuevo Empleado', + 'none_selected' => 'No ha seleccionado empleados a borrar.', + 'one_or_multiple' => 'Empleado(s)', + 'password' => 'Contraseña', + 'password_minlength' => 'La contraseña debe tener por lo menos 8 letras.', + 'password_must_match' => 'Las contraseñas no coinciden.', + 'password_not_must_match' => 'La contraseña actual y nueva contraseña deben ser distintas.', + 'password_required' => 'Se requiere contraseña.', + 'permission_desc' => 'Selecciona las casillas para otorgar acceso a los módulos.', + 'permission_info' => 'Permisos', + 'repeat_password' => 'Contraseña otra vez', + 'subpermission_required' => 'Concede por lo menos un permiso para cada módulo.', + 'successful_adding' => 'Empleado agregado exitosamente.', + 'successful_change_password' => 'Cambio de contraseña exitoso.', + 'successful_deleted' => 'Se ha borrado correctamente', + 'successful_updating' => 'Empleado actualizado exitosamente', + 'system_language' => 'Idioma del sistema', + 'unsuccessful_change_password' => 'El cambio de contraseña ha fallado.', + 'update' => 'Actualizar Empleado', + 'username' => 'Nombre de Usuario', + 'username_duplicate' => 'El usuario del empleado ya esta en uso. Favor de escoger otro.', + 'username_minlength' => 'Nombre de usuario debe tener por lo menos 5 letras.', + 'username_required' => 'Es necesario el nombre de usuario.', ]; diff --git a/app/Language/fa/Employees.php b/app/Language/fa/Employees.php index e1c06b1d5..34178a055 100644 --- a/app/Language/fa/Employees.php +++ b/app/Language/fa/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "اطلاعات", - "cannot_be_deleted" => "حذف کارمند (های) انتخابی امکان پذیر نیست ، یک یا چند مورد از فروش پردازش شده استفاده کرده یا می خواهید حساب خود را حذف کنید.", - "change_employee" => "", - "change_password" => "تغییر رمز عبور", - "clerk" => "", - "commission" => "", - "confirm_delete" => "آیا مطمئن هستید که می خواهید کارمند (های) انتخاب شده را حذف کنید؟", - "confirm_restore" => "آیا مطمئن هستید که می خواهید کارمندان (های) انتخاب شده را بازیابی کنید؟", - "current_password" => "گذرواژه فعلی", - "current_password_invalid" => "گذرواژه فعلی نامعتبر است.", - "employee" => "کارمند", - "error_adding_updating" => "افزودن یا به روزرسانی کارکنان انجام نشد.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "شما نمی توانید کاربر مدیر نسخه ی نمایشی را حذف کنید.", - "error_updating_demo_admin" => "شما نمی توانید کاربر مدیر نسخه ی نمایشی را تغییر دهید.", - "language" => "زبان", - "login_info" => "وارد شدن", - "manager" => "", - "new" => "کارمند جدید", - "none_selected" => "شما هیچ کارمندی را برای حذف انتخاب نکرده اید.", - "one_or_multiple" => "کارمند (ها)", - "password" => "کلمه عبور", - "password_minlength" => "گذرواژه باید حداقل 8 نویسه داشته باشد.", - "password_must_match" => "رمزهای ورود مطابقت ندارند.", - "password_not_must_match" => "گذرواژه فعلی و رمز جدید باید بی نظیر باشند.", - "password_required" => "رمز عبور مورد نیاز است.", - "permission_desc" => "کادرهای زیر را برای دسترسی به ماژولها بررسی کنید.", - "permission_info" => "مجوزها", - "repeat_password" => "رمز عبور دوباره", - "subpermission_required" => "برای هر ماژول حداقل یک کمک هزینه اضافه کنید.", - "successful_adding" => "کارمندان موفق شدند.", - "successful_change_password" => "تغییر رمز عبور موفقیت آمیز است.", - "successful_deleted" => "شما با موفقیت حذف شده اید", - "successful_updating" => "شما با موفقیت کارمند را به روز کردید", - "system_language" => "زبان سیستم", - "unsuccessful_change_password" => "تغییر رمز انجام نشد.", - "update" => "به روزرسانی کارمند", - "username" => "نام کاربری", - "username_duplicate" => "", - "username_minlength" => "نام کاربری باید حداقل 5 کاراکتر داشته باشد.", - "username_required" => "نام کاربری فیلد مورد نیاز است.", + 'administrator' => '', + 'basic_information' => 'اطلاعات', + 'cannot_be_deleted' => 'حذف کارمند (های) انتخابی امکان پذیر نیست ، یک یا چند مورد از فروش پردازش شده استفاده کرده یا می خواهید حساب خود را حذف کنید.', + 'change_employee' => '', + 'change_password' => 'تغییر رمز عبور', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'آیا مطمئن هستید که می خواهید کارمند (های) انتخاب شده را حذف کنید؟', + 'confirm_restore' => 'آیا مطمئن هستید که می خواهید کارمندان (های) انتخاب شده را بازیابی کنید؟', + 'current_password' => 'گذرواژه فعلی', + 'current_password_invalid' => 'گذرواژه فعلی نامعتبر است.', + 'employee' => 'کارمند', + 'error_adding_updating' => 'افزودن یا به روزرسانی کارکنان انجام نشد.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'شما نمی توانید کاربر مدیر نسخه ی نمایشی را حذف کنید.', + 'error_grant_change_disallowed' => 'تغییرات اعطا در این نسخه نمایشی غیرفعال است.', + 'error_password_change_disallowed' => 'تغییرات رمز عبور در این نسخه نمایشی غیرفعال است.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'شما نمی توانید کاربر مدیر نسخه ی نمایشی را تغییر دهید.', + 'language' => 'زبان', + 'login_info' => 'وارد شدن', + 'manager' => '', + 'new' => 'کارمند جدید', + 'none_selected' => 'شما هیچ کارمندی را برای حذف انتخاب نکرده اید.', + 'one_or_multiple' => 'کارمند (ها)', + 'password' => 'کلمه عبور', + 'password_minlength' => 'گذرواژه باید حداقل 8 نویسه داشته باشد.', + 'password_must_match' => 'رمزهای ورود مطابقت ندارند.', + 'password_not_must_match' => 'گذرواژه فعلی و رمز جدید باید بی نظیر باشند.', + 'password_required' => 'رمز عبور مورد نیاز است.', + 'permission_desc' => 'کادرهای زیر را برای دسترسی به ماژولها بررسی کنید.', + 'permission_info' => 'مجوزها', + 'repeat_password' => 'رمز عبور دوباره', + 'subpermission_required' => 'برای هر ماژول حداقل یک کمک هزینه اضافه کنید.', + 'successful_adding' => 'کارمندان موفق شدند.', + 'successful_change_password' => 'تغییر رمز عبور موفقیت آمیز است.', + 'successful_deleted' => 'شما با موفقیت حذف شده اید', + 'successful_updating' => 'شما با موفقیت کارمند را به روز کردید', + 'system_language' => 'زبان سیستم', + 'unsuccessful_change_password' => 'تغییر رمز انجام نشد.', + 'update' => 'به روزرسانی کارمند', + 'username' => 'نام کاربری', + 'username_duplicate' => '', + 'username_minlength' => 'نام کاربری باید حداقل 5 کاراکتر داشته باشد.', + 'username_required' => 'نام کاربری فیلد مورد نیاز است.', ]; diff --git a/app/Language/fr/Employees.php b/app/Language/fr/Employees.php index b347698bb..c92c5c68b 100644 --- a/app/Language/fr/Employees.php +++ b/app/Language/fr/Employees.php @@ -1,47 +1,49 @@ "Administrateur", - "basic_information" => "Fiche", - "cannot_be_deleted" => "Impossible de supprimer le(s) employé(s) sélectionné(s),car un ou plusieur a éffectué une vente, ou car vous essayez de vous supprimer vous-meme.", - "change_employee" => "Changer d'employé", - "change_password" => "Changement de mot de passe", - "clerk" => "Employé", - "commission" => "Commission", - "confirm_delete" => "Êtes-vous certain de vouloir supprimer le(s) employé(s) sélectionné(s) ?", - "confirm_restore" => "Êtes-vous certain de vouloir restaurer le(s) employé(s) selectionné(s) ?", - "current_password" => "Mot de passe actuel", - "current_password_invalid" => "Le mot de passe actuel est invalide.", - "employee" => "Employé", - "error_adding_updating" => "Erreur d'ajout/édition d'employé.", - "error_deleting_admin" => "Vous ne pouvez pas supprimer un utilisateur administrateur.", - "error_updating_admin" => "Vous ne pouvez pas modifier un utilisateur administrateur.", - "error_deleting_demo_admin" => "Vous ne pouvez pas supprimer l'utilisateur de démonstration admin.", - "error_updating_demo_admin" => "Vous ne pouvez pas modifier l'utilisateur de démonstration admin.", - "language" => "Langue", - "login_info" => "Connexion", - "manager" => "Gestionnaire", - "new" => "Nouvel employé", - "none_selected" => "Aucun employé sélectionné pour la suppression.", - "one_or_multiple" => "employé(s)", - "password" => "Mot de passe", - "password_minlength" => "Le mot de passe doit contenir au moins 8 caractères.", - "password_must_match" => "Les mots de passe ne concordent pas.", - "password_not_must_match" => "Le mot de passe actuel et le nouveau mot de passe doivent être uniques.", - "password_required" => "Mot de passe requis.", - "permission_desc" => "Cochez les cases ci-dessous pour autoriser l'accès aux modules.", - "permission_info" => "Permissions", - "repeat_password" => "Re-saisissez le mot de passe", - "subpermission_required" => "Ajoutez au moins une permission pour chaque module.", - "successful_adding" => "Employé ajouté.", - "successful_change_password" => "Mot de passe modifié avec succès.", - "successful_deleted" => "Suppression d'employé réussie", - "successful_updating" => "Édition d'employé réussie", - "system_language" => "Langue système", - "unsuccessful_change_password" => "Échec du changement de mot de passe.", - "update" => "Éditer employé", - "username" => "Nom d'utilisateur", - "username_duplicate" => "Nom d'utilisateur existant. Veuillez en choisir un autre.", - "username_minlength" => "Le nom d'utilisateur doit contenir au moins 5 caractères.", - "username_required" => "Nom d'utilisateur requis.", + 'administrator' => 'Administrateur', + 'basic_information' => 'Fiche', + 'cannot_be_deleted' => 'Impossible de supprimer le(s) employé(s) sélectionné(s),car un ou plusieur a éffectué une vente, ou car vous essayez de vous supprimer vous-meme.', + 'change_employee' => 'Changer d\'employé', + 'change_password' => 'Changement de mot de passe', + 'clerk' => 'Employé', + 'commission' => 'Commission', + 'confirm_delete' => 'Êtes-vous certain de vouloir supprimer le(s) employé(s) sélectionné(s) ?', + 'confirm_restore' => 'Êtes-vous certain de vouloir restaurer le(s) employé(s) selectionné(s) ?', + 'current_password' => 'Mot de passe actuel', + 'current_password_invalid' => 'Le mot de passe actuel est invalide.', + 'employee' => 'Employé', + 'error_adding_updating' => 'Erreur d\'ajout/édition d\'employé.', + 'error_deleting_admin' => 'Vous ne pouvez pas supprimer un utilisateur administrateur.', + 'error_deleting_demo_admin' => 'Vous ne pouvez pas supprimer l\'utilisateur de démonstration admin.', + 'error_grant_change_disallowed' => 'Les modifications de permissions sont désactivées dans cette démo.', + 'error_password_change_disallowed' => 'Les modifications de mot de passe sont désactivées dans cette démo.', + 'error_updating_admin' => 'Vous ne pouvez pas modifier un utilisateur administrateur.', + 'error_updating_demo_admin' => 'Vous ne pouvez pas modifier l\'utilisateur de démonstration admin.', + 'language' => 'Langue', + 'login_info' => 'Connexion', + 'manager' => 'Gestionnaire', + 'new' => 'Nouvel employé', + 'none_selected' => 'Aucun employé sélectionné pour la suppression.', + 'one_or_multiple' => 'employé(s)', + 'password' => 'Mot de passe', + 'password_minlength' => 'Le mot de passe doit contenir au moins 8 caractères.', + 'password_must_match' => 'Les mots de passe ne concordent pas.', + 'password_not_must_match' => 'Le mot de passe actuel et le nouveau mot de passe doivent être uniques.', + 'password_required' => 'Mot de passe requis.', + 'permission_desc' => 'Cochez les cases ci-dessous pour autoriser l\'accès aux modules.', + 'permission_info' => 'Permissions', + 'repeat_password' => 'Re-saisissez le mot de passe', + 'subpermission_required' => 'Ajoutez au moins une permission pour chaque module.', + 'successful_adding' => 'Employé ajouté.', + 'successful_change_password' => 'Mot de passe modifié avec succès.', + 'successful_deleted' => 'Suppression d\'employé réussie', + 'successful_updating' => 'Édition d\'employé réussie', + 'system_language' => 'Langue système', + 'unsuccessful_change_password' => 'Échec du changement de mot de passe.', + 'update' => 'Éditer employé', + 'username' => 'Nom d\'utilisateur', + 'username_duplicate' => 'Nom d\'utilisateur existant. Veuillez en choisir un autre.', + 'username_minlength' => 'Le nom d\'utilisateur doit contenir au moins 5 caractères.', + 'username_required' => 'Nom d\'utilisateur requis.', ]; diff --git a/app/Language/he/Employees.php b/app/Language/he/Employees.php index 44063035e..9659e654b 100644 --- a/app/Language/he/Employees.php +++ b/app/Language/he/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "מידע", - "cannot_be_deleted" => "לא ניתן למחוק עובדים נבחרים, לאחד או יותר יש מכירות בתהליך או שאתה מנסה למחוק את החשבון שלך.", - "change_employee" => "", - "change_password" => "שנה סיסמה", - "clerk" => "", - "commission" => "", - "confirm_delete" => "האם אתה בטוח שברצונך למחוק את העובדים שנבחרו?", - "confirm_restore" => "האם אתה בטוח שברצונך לשחזר את העובדים שנבחרו?", - "current_password" => "סיסמה נוכחית", - "current_password_invalid" => "הסיסמה הנוכחית אינה חוקית.", - "employee" => "עובד", - "error_adding_updating" => "הוספה או עדכון של עובד נכשלה.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "לא ניתן למחוק את משתמש המנהל ההדגמה.", - "error_updating_demo_admin" => "לא ניתן לשנות את משתמש המנהל ההדגמה.", - "language" => "שפה", - "login_info" => "כניסה", - "manager" => "", - "new" => "עובד חדש", - "none_selected" => "לא בחרת עובדים שברצונך למחוק.", - "one_or_multiple" => "עובד(ים)", - "password" => "סיסמה", - "password_minlength" => "על הסיסמה להיות באורך של 8 תווים לפחות.", - "password_must_match" => "סיסמאות לא תואמות.", - "password_not_must_match" => "הסיסמה הנוכחית והסיסמה החדשה חייבות להיות ייחודיות.", - "password_required" => "דרושה סיסמה.", - "permission_desc" => "סמן את התיבות שלהלן כדי להעניק גישה למודולים.", - "permission_info" => "הרשאות", - "repeat_password" => "סיסמא בשנית", - "subpermission_required" => "הוסף לפחות גישה אחת לכל מודול.", - "successful_adding" => "הוספת עובד בהצלחה.", - "successful_change_password" => "סיסמה שונתה בהצלחה.", - "successful_deleted" => "נמחק בהצלחה", - "successful_updating" => "עדכנת בהצלחה את פרטי העובד", - "system_language" => "שפת מערכת", - "unsuccessful_change_password" => "שינוי הסיסמה נכשל.", - "update" => "עדכן עובד", - "username" => "שם משתמש", - "username_duplicate" => "", - "username_minlength" => "על שם המשתמש להיות באורך של 5 תווים לפחות.", - "username_required" => "שם המשתמש הינו שדה חובה.", + 'administrator' => '', + 'basic_information' => 'מידע', + 'cannot_be_deleted' => 'לא ניתן למחוק עובדים נבחרים, לאחד או יותר יש מכירות בתהליך או שאתה מנסה למחוק את החשבון שלך.', + 'change_employee' => '', + 'change_password' => 'שנה סיסמה', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'האם אתה בטוח שברצונך למחוק את העובדים שנבחרו?', + 'confirm_restore' => 'האם אתה בטוח שברצונך לשחזר את העובדים שנבחרו?', + 'current_password' => 'סיסמה נוכחית', + 'current_password_invalid' => 'הסיסמה הנוכחית אינה חוקית.', + 'employee' => 'עובד', + 'error_adding_updating' => 'הוספה או עדכון של עובד נכשלה.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'לא ניתן למחוק את משתמש המנהל ההדגמה.', + 'error_grant_change_disallowed' => 'שינויים בהרשאות מבוטלים בדמו זה.', + 'error_password_change_disallowed' => 'שינויים בסיסמה מבוטלים בדמו זה.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'לא ניתן לשנות את משתמש המנהל ההדגמה.', + 'language' => 'שפה', + 'login_info' => 'כניסה', + 'manager' => '', + 'new' => 'עובד חדש', + 'none_selected' => 'לא בחרת עובדים שברצונך למחוק.', + 'one_or_multiple' => 'עובד(ים)', + 'password' => 'סיסמה', + 'password_minlength' => 'על הסיסמה להיות באורך של 8 תווים לפחות.', + 'password_must_match' => 'סיסמאות לא תואמות.', + 'password_not_must_match' => 'הסיסמה הנוכחית והסיסמה החדשה חייבות להיות ייחודיות.', + 'password_required' => 'דרושה סיסמה.', + 'permission_desc' => 'סמן את התיבות שלהלן כדי להעניק גישה למודולים.', + 'permission_info' => 'הרשאות', + 'repeat_password' => 'סיסמא בשנית', + 'subpermission_required' => 'הוסף לפחות גישה אחת לכל מודול.', + 'successful_adding' => 'הוספת עובד בהצלחה.', + 'successful_change_password' => 'סיסמה שונתה בהצלחה.', + 'successful_deleted' => 'נמחק בהצלחה', + 'successful_updating' => 'עדכנת בהצלחה את פרטי העובד', + 'system_language' => 'שפת מערכת', + 'unsuccessful_change_password' => 'שינוי הסיסמה נכשל.', + 'update' => 'עדכן עובד', + 'username' => 'שם משתמש', + 'username_duplicate' => '', + 'username_minlength' => 'על שם המשתמש להיות באורך של 5 תווים לפחות.', + 'username_required' => 'שם המשתמש הינו שדה חובה.', ]; diff --git a/app/Language/hr-HR/Employees.php b/app/Language/hr-HR/Employees.php index ce4143648..27f7ca16a 100644 --- a/app/Language/hr-HR/Employees.php +++ b/app/Language/hr-HR/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Informacije", - "cannot_be_deleted" => "Ne možete obristi odabranog radnika, jedan ili više radnika ima prodaju ili pokušavate obristi sebe :)", - "change_employee" => "", - "change_password" => "", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Jeste li ste sigurni da želite obristi odabranog radnika?", - "confirm_restore" => "", - "current_password" => "", - "current_password_invalid" => "", - "employee" => "Radnik", - "error_adding_updating" => "Greška kod dodavanja/ažuriranja radnika", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Ne možete obrisati demo admin korisnika", - "error_updating_demo_admin" => "Ne možete promijeniti demo admin korisnika", - "language" => "", - "login_info" => "Prijava", - "manager" => "", - "new" => "Novi radnik", - "none_selected" => "Nije odabran niti jedan radnik za brisanje", - "one_or_multiple" => "Radnik(ci)", - "password" => "Lozinka", - "password_minlength" => "Lozinka mora imati najmanje 8 znakova", - "password_must_match" => "Lozinka se ne podudara", - "password_not_must_match" => "", - "password_required" => "Lozinka je potrebna", - "permission_desc" => "Odaberite module za dozvolu", - "permission_info" => "Dozvole", - "repeat_password" => "Ponovite lozinku", - "subpermission_required" => "Odaberite barem jednu dozvolu po modulu", - "successful_adding" => "Uspješno ste dodali radnika", - "successful_change_password" => "", - "successful_deleted" => "Uspješno ste obrisali radnika", - "successful_updating" => "Uspješno ste ažurirali radnika", - "system_language" => "", - "unsuccessful_change_password" => "", - "update" => "Ažuriraj radnika", - "username" => "Korisničko ime", - "username_duplicate" => "", - "username_minlength" => "Korisničko ime mora imati najmanje 5 znakova", - "username_required" => "Korisničko ime je potrebno", + 'administrator' => '', + 'basic_information' => 'Informacije', + 'cannot_be_deleted' => 'Ne možete obristi odabranog radnika, jedan ili više radnika ima prodaju ili pokušavate obristi sebe :)', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Jeste li ste sigurni da želite obristi odabranog radnika?', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => 'Radnik', + 'error_adding_updating' => 'Greška kod dodavanja/ažuriranja radnika', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Ne možete obrisati demo admin korisnika', + 'error_grant_change_disallowed' => 'Promene dozvola su onemogućene u ovoj demo verziji.', + 'error_password_change_disallowed' => 'Promene lozinke su onemogućene u ovoj demo verziji.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Ne možete promijeniti demo admin korisnika', + 'language' => '', + 'login_info' => 'Prijava', + 'manager' => '', + 'new' => 'Novi radnik', + 'none_selected' => 'Nije odabran niti jedan radnik za brisanje', + 'one_or_multiple' => 'Radnik(ci)', + 'password' => 'Lozinka', + 'password_minlength' => 'Lozinka mora imati najmanje 8 znakova', + 'password_must_match' => 'Lozinka se ne podudara', + 'password_not_must_match' => '', + 'password_required' => 'Lozinka je potrebna', + 'permission_desc' => 'Odaberite module za dozvolu', + 'permission_info' => 'Dozvole', + 'repeat_password' => 'Ponovite lozinku', + 'subpermission_required' => 'Odaberite barem jednu dozvolu po modulu', + 'successful_adding' => 'Uspješno ste dodali radnika', + 'successful_change_password' => '', + 'successful_deleted' => 'Uspješno ste obrisali radnika', + 'successful_updating' => 'Uspješno ste ažurirali radnika', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => 'Ažuriraj radnika', + 'username' => 'Korisničko ime', + 'username_duplicate' => '', + 'username_minlength' => 'Korisničko ime mora imati najmanje 5 znakova', + 'username_required' => 'Korisničko ime je potrebno', ]; diff --git a/app/Language/hu/Employees.php b/app/Language/hu/Employees.php index 3ab447510..f12d78fbc 100644 --- a/app/Language/hu/Employees.php +++ b/app/Language/hu/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Munkavállaló alap információk", - "cannot_be_deleted" => "Nem lehet a kiválasztott munkavállaló(ka)t törölni, mert már van lezárt értékesítése vagy saját magát kívánja törölni! :)", - "change_employee" => "", - "change_password" => "", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Biztos, hogy törölni kívánja a munkavállalót?", - "confirm_restore" => "", - "current_password" => "", - "current_password_invalid" => "", - "employee" => "Munkavállaló", - "error_adding_updating" => "Hiba a munkavállaló módosításánál/hozzáadásánál", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Nem tudja törölni a demo admin felhasználót", - "error_updating_demo_admin" => "Nem tudja módosítani a demo admin felhasználót", - "language" => "", - "login_info" => "Munkavállaló azonosító", - "manager" => "", - "new" => "Új munkavállaló", - "none_selected" => "Nem választott ki munkavállalót a törléshez", - "one_or_multiple" => "munkavállaló(k)", - "password" => "Jelszó", - "password_minlength" => "A jelszónak legalább 8 karakternek kell lennie", - "password_must_match" => "A jelszó nem egyezik", - "password_not_must_match" => "", - "password_required" => "A jelszó kötelező", - "permission_desc" => "Válassza ki az alábbi boxokat a hozzáférés megadásához", - "permission_info" => "Munkavállaló engedélyei", - "repeat_password" => "Jelszó újra", - "subpermission_required" => "Engedélyezzen legalább egyet minden modulhoz", - "successful_adding" => "Sikeresen hozzáadott egy új munkavállalót", - "successful_change_password" => "", - "successful_deleted" => "Sikeresen törölt egy munkavállalót", - "successful_updating" => "Sikeresen módosította a munkavállalót", - "system_language" => "", - "unsuccessful_change_password" => "", - "update" => "Munkavállaló módosítása", - "username" => "Felhasználó név", - "username_duplicate" => "", - "username_minlength" => "A felhasználó névnek legalább 5 karakternek kell lennie", - "username_required" => "Felhasználó név kötelező", + 'administrator' => '', + 'basic_information' => 'Munkavállaló alap információk', + 'cannot_be_deleted' => 'Nem lehet a kiválasztott munkavállaló(ka)t törölni, mert már van lezárt értékesítése vagy saját magát kívánja törölni! :)', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Biztos, hogy törölni kívánja a munkavállalót?', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => 'Munkavállaló', + 'error_adding_updating' => 'Hiba a munkavállaló módosításánál/hozzáadásánál', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Nem tudja törölni a demo admin felhasználót', + 'error_grant_change_disallowed' => 'A jogok módosítása le van tiltva ebben a demóban.', + 'error_password_change_disallowed' => 'A jelszóváltoztatás le van tiltva ebben a demóban.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Nem tudja módosítani a demo admin felhasználót', + 'language' => '', + 'login_info' => 'Munkavállaló azonosító', + 'manager' => '', + 'new' => 'Új munkavállaló', + 'none_selected' => 'Nem választott ki munkavállalót a törléshez', + 'one_or_multiple' => 'munkavállaló(k)', + 'password' => 'Jelszó', + 'password_minlength' => 'A jelszónak legalább 8 karakternek kell lennie', + 'password_must_match' => 'A jelszó nem egyezik', + 'password_not_must_match' => '', + 'password_required' => 'A jelszó kötelező', + 'permission_desc' => 'Válassza ki az alábbi boxokat a hozzáférés megadásához', + 'permission_info' => 'Munkavállaló engedélyei', + 'repeat_password' => 'Jelszó újra', + 'subpermission_required' => 'Engedélyezzen legalább egyet minden modulhoz', + 'successful_adding' => 'Sikeresen hozzáadott egy új munkavállalót', + 'successful_change_password' => '', + 'successful_deleted' => 'Sikeresen törölt egy munkavállalót', + 'successful_updating' => 'Sikeresen módosította a munkavállalót', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => 'Munkavállaló módosítása', + 'username' => 'Felhasználó név', + 'username_duplicate' => '', + 'username_minlength' => 'A felhasználó névnek legalább 5 karakternek kell lennie', + 'username_required' => 'Felhasználó név kötelező', ]; diff --git a/app/Language/hy/Employees.php b/app/Language/hy/Employees.php index 34a418062..572142b3a 100644 --- a/app/Language/hy/Employees.php +++ b/app/Language/hy/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "", - "cannot_be_deleted" => "", - "change_employee" => "", - "change_password" => "", - "clerk" => "", - "commission" => "", - "confirm_delete" => "", - "confirm_restore" => "", - "current_password" => "", - "current_password_invalid" => "", - "employee" => "", - "error_adding_updating" => "", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "", - "error_updating_demo_admin" => "", - "language" => "", - "login_info" => "", - "manager" => "", - "new" => "", - "none_selected" => "", - "one_or_multiple" => "", - "password" => "", - "password_minlength" => "", - "password_must_match" => "", - "password_not_must_match" => "", - "password_required" => "", - "permission_desc" => "", - "permission_info" => "", - "repeat_password" => "", - "subpermission_required" => "", - "successful_adding" => "", - "successful_change_password" => "", - "successful_deleted" => "", - "successful_updating" => "", - "system_language" => "", - "unsuccessful_change_password" => "", - "update" => "", - "username" => "", - "username_duplicate" => "", - "username_minlength" => "", - "username_required" => "", + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'Թույլատրումների փոփոխումները անջատված են այս ցուցադրտեսքում:', + 'error_password_change_disallowed' => 'Գաղտնաբառի փոփոխումները անջատված են այս ցուցադրտեսքում:', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/id/Employees.php b/app/Language/id/Employees.php index 8f969aa2b..80469abdf 100644 --- a/app/Language/id/Employees.php +++ b/app/Language/id/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Informasi Karyawan", - "cannot_be_deleted" => "Karyawan terpilih tidak bisa dihapus satu atau lebih dari para pekerja telah memproses penjualan atau Anda mencoba untuk menghapus diri Anda sendiri.", - "change_employee" => "", - "change_password" => "Ubah kata kunci", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Apakah Anda yakin ingin menghapus karyawan yang dipilih?", - "confirm_restore" => "Anda yakin ingin mengembalikan karyawan terpilih?", - "current_password" => "Kata kunci sekarang", - "current_password_invalid" => "Kata kunci sekarang salah.", - "employee" => "Karyawan", - "error_adding_updating" => "Kesalahan menambah / memperbarui karyawan.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Anda tidak dapat menghapus Demo admin user.", - "error_updating_demo_admin" => "Anda tidak dapat mengubah Demo admin user.", - "language" => "Bahasa", - "login_info" => "Info Login Karyawan", - "manager" => "", - "new" => "Karyawan Baru", - "none_selected" => "Anda belum memilih karyawan untuk dihapus.", - "one_or_multiple" => "Karyawan", - "password" => "Kata Sandi", - "password_minlength" => "Kata kunci minimal terdiri dari 8 karakter.", - "password_must_match" => "Kata Sandi tidak cocok.", - "password_not_must_match" => "Kata kunci sekarang dan kata kunci baru harus unik.", - "password_required" => "Kata Sandi wajib diisi.", - "permission_desc" => "Tandai kotak di bawah ini untuk memberikan akses ke Modul.", - "permission_info" => "Hak Akses Karyawan", - "repeat_password" => "Ulang Kata Sandi", - "subpermission_required" => "Paling tidak tambahkan satu hak akses untuk setiap modul.", - "successful_adding" => "Anda telah berhasil menambahkan karyawan.", - "successful_change_password" => "Kata kunci berhasil diubah.", - "successful_deleted" => "Berhasil menghapus Kartu Hadiah", - "successful_updating" => "Anda telah berhasil memperbarui karyawan", - "system_language" => "Bahasa Sistem", - "unsuccessful_change_password" => "Gagal mengubah kata sandi.", - "update" => "Ubah Karyawan", - "username" => "Nama Pengguna", - "username_duplicate" => "Nama pengguna karyawan sudah digunakan. Silakan pilih yang lain.", - "username_minlength" => "Nama Pengguna minimal 5 huruf.", - "username_required" => "Nama Pengguna wajib diisi.", + 'administrator' => '', + 'basic_information' => 'Informasi Karyawan', + 'cannot_be_deleted' => 'Karyawan terpilih tidak bisa dihapus satu atau lebih dari para pekerja telah memproses penjualan atau Anda mencoba untuk menghapus diri Anda sendiri.', + 'change_employee' => '', + 'change_password' => 'Ubah kata kunci', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Apakah Anda yakin ingin menghapus karyawan yang dipilih?', + 'confirm_restore' => 'Anda yakin ingin mengembalikan karyawan terpilih?', + 'current_password' => 'Kata kunci sekarang', + 'current_password_invalid' => 'Kata kunci sekarang salah.', + 'employee' => 'Karyawan', + 'error_adding_updating' => 'Kesalahan menambah / memperbarui karyawan.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Anda tidak dapat menghapus Demo admin user.', + 'error_grant_change_disallowed' => 'Perubahan izin dinonaktifkan dalam demo ini.', + 'error_password_change_disallowed' => 'Perubahan kata sandi dinonaktifkan dalam demo ini.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Anda tidak dapat mengubah Demo admin user.', + 'language' => 'Bahasa', + 'login_info' => 'Info Login Karyawan', + 'manager' => '', + 'new' => 'Karyawan Baru', + 'none_selected' => 'Anda belum memilih karyawan untuk dihapus.', + 'one_or_multiple' => 'Karyawan', + 'password' => 'Kata Sandi', + 'password_minlength' => 'Kata kunci minimal terdiri dari 8 karakter.', + 'password_must_match' => 'Kata Sandi tidak cocok.', + 'password_not_must_match' => 'Kata kunci sekarang dan kata kunci baru harus unik.', + 'password_required' => 'Kata Sandi wajib diisi.', + 'permission_desc' => 'Tandai kotak di bawah ini untuk memberikan akses ke Modul.', + 'permission_info' => 'Hak Akses Karyawan', + 'repeat_password' => 'Ulang Kata Sandi', + 'subpermission_required' => 'Paling tidak tambahkan satu hak akses untuk setiap modul.', + 'successful_adding' => 'Anda telah berhasil menambahkan karyawan.', + 'successful_change_password' => 'Kata kunci berhasil diubah.', + 'successful_deleted' => 'Berhasil menghapus Kartu Hadiah', + 'successful_updating' => 'Anda telah berhasil memperbarui karyawan', + 'system_language' => 'Bahasa Sistem', + 'unsuccessful_change_password' => 'Gagal mengubah kata sandi.', + 'update' => 'Ubah Karyawan', + 'username' => 'Nama Pengguna', + 'username_duplicate' => 'Nama pengguna karyawan sudah digunakan. Silakan pilih yang lain.', + 'username_minlength' => 'Nama Pengguna minimal 5 huruf.', + 'username_required' => 'Nama Pengguna wajib diisi.', ]; diff --git a/app/Language/it/Employees.php b/app/Language/it/Employees.php index bb2529d8f..b11f7eb07 100644 --- a/app/Language/it/Employees.php +++ b/app/Language/it/Employees.php @@ -1,47 +1,49 @@ "Amministratore", - "basic_information" => "Informazioni", - "cannot_be_deleted" => "Eliminazione dell'impiegato/i non consentita, uno o più hanno trattato delle vendite o stai cancellando il tuo account.", - "change_employee" => "Cambia Impiegato", - "change_password" => "Cambia Password", - "clerk" => "Impiegato", - "commission" => "Commissione", - "confirm_delete" => "Sei sicuro di voler eliminare l'impiegato/i selezionato?", - "confirm_restore" => "Sei sicuro di voler ripristinare gl'Impiegati selezionati?", - "current_password" => "Password Corrente", - "current_password_invalid" => "Password corrente non valida.", - "employee" => "Impiegato", - "error_adding_updating" => "Aggiunta o aggiornamento di impiegati fallito.", - "error_deleting_admin" => "Non puoi eliminare un utente amministratore.", - "error_updating_admin" => "Non puoi modificare un utente amministratore.", - "error_deleting_demo_admin" => "Non puoi eliminare l'utente admin demo.", - "error_updating_demo_admin" => "Non puoi cambiare l'utente admin demo.", - "language" => "Lingua", - "login_info" => "Login", - "manager" => "Manager", - "new" => "Nuovo Impiegato", - "none_selected" => "Non hai selezionato nessun impiegato da eliminare.", - "one_or_multiple" => "impiegato/i", - "password" => "Password", - "password_minlength" => "La Password deve essere lunga almeno 8 caratteri.", - "password_must_match" => "Le Password non corrispondono.", - "password_not_must_match" => "La password corrente e quella nuova devono essere uniche.", - "password_required" => "Password obbligatoria.", - "permission_desc" => "Barra le caselle sotto per garantire l'accesso ai moduli.", - "permission_info" => "Permessi", - "repeat_password" => "Password di nuovo", - "subpermission_required" => "Aggiungi almeno un permesso per ogni modulo.", - "successful_adding" => "Impiegato aggiunto correttamente.", - "successful_change_password" => "Password cambiata con successo.", - "successful_deleted" => "Eliminato correttamente", - "successful_updating" => "Hai correttamente aggiornato un impiegato", - "system_language" => "Lingua di sistema", - "unsuccessful_change_password" => "Cambio password fallito.", - "update" => "Aggiornamento Impiegato", - "username" => "Username", - "username_duplicate" => "", - "username_minlength" => "Lo Username deve essere almeno lungo 5 caratteri di lunghezza.", - "username_required" => "Il campo Username è richiesto.", + 'administrator' => 'Amministratore', + 'basic_information' => 'Informazioni', + 'cannot_be_deleted' => 'Eliminazione dell\'impiegato/i non consentita, uno o più hanno trattato delle vendite o stai cancellando il tuo account.', + 'change_employee' => 'Cambia Impiegato', + 'change_password' => 'Cambia Password', + 'clerk' => 'Impiegato', + 'commission' => 'Commissione', + 'confirm_delete' => 'Sei sicuro di voler eliminare l\'impiegato/i selezionato?', + 'confirm_restore' => 'Sei sicuro di voler ripristinare gl\'Impiegati selezionati?', + 'current_password' => 'Password Corrente', + 'current_password_invalid' => 'Password corrente non valida.', + 'employee' => 'Impiegato', + 'error_adding_updating' => 'Aggiunta o aggiornamento di impiegati fallito.', + 'error_deleting_admin' => 'Non puoi eliminare un utente amministratore.', + 'error_deleting_demo_admin' => 'Non puoi eliminare l\'utente admin demo.', + 'error_grant_change_disallowed' => 'I cambiamenti dei permessi sono disabilitati in questa demo.', + 'error_password_change_disallowed' => 'I cambiamenti della password sono disabilitati in questa demo.', + 'error_updating_admin' => 'Non puoi modificare un utente amministratore.', + 'error_updating_demo_admin' => 'Non puoi cambiare l\'utente admin demo.', + 'language' => 'Lingua', + 'login_info' => 'Login', + 'manager' => 'Manager', + 'new' => 'Nuovo Impiegato', + 'none_selected' => 'Non hai selezionato nessun impiegato da eliminare.', + 'one_or_multiple' => 'impiegato/i', + 'password' => 'Password', + 'password_minlength' => 'La Password deve essere lunga almeno 8 caratteri.', + 'password_must_match' => 'Le Password non corrispondono.', + 'password_not_must_match' => 'La password corrente e quella nuova devono essere uniche.', + 'password_required' => 'Password obbligatoria.', + 'permission_desc' => 'Barra le caselle sotto per garantire l\'accesso ai moduli.', + 'permission_info' => 'Permessi', + 'repeat_password' => 'Password di nuovo', + 'subpermission_required' => 'Aggiungi almeno un permesso per ogni modulo.', + 'successful_adding' => 'Impiegato aggiunto correttamente.', + 'successful_change_password' => 'Password cambiata con successo.', + 'successful_deleted' => 'Eliminato correttamente', + 'successful_updating' => 'Hai correttamente aggiornato un impiegato', + 'system_language' => 'Lingua di sistema', + 'unsuccessful_change_password' => 'Cambio password fallito.', + 'update' => 'Aggiornamento Impiegato', + 'username' => 'Username', + 'username_duplicate' => '', + 'username_minlength' => 'Lo Username deve essere almeno lungo 5 caratteri di lunghezza.', + 'username_required' => 'Il campo Username è richiesto.', ]; diff --git a/app/Language/ka/Employees.php b/app/Language/ka/Employees.php new file mode 100644 index 000000000..7d4528e22 --- /dev/null +++ b/app/Language/ka/Employees.php @@ -0,0 +1,49 @@ + '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'უფლებების ცვლილებები დეაქტივირებულია ამ დემოში.', + 'error_password_change_disallowed' => 'პაროლის ცვლილებები დეაქტივირებულია ამ დემოში.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', +]; diff --git a/app/Language/km/Employees.php b/app/Language/km/Employees.php index 0ade4b3ea..17754b40d 100644 --- a/app/Language/km/Employees.php +++ b/app/Language/km/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "ព៌តមាន", - "cannot_be_deleted" => "មិនអាចលុបបុគ្គលិកដែលបានជ្រើសរើស, មួយ ឬក៏ច្រើន នៃការលក់ ឬអ្នកកំពុងព្យាយាមលុបគណនីរបស់ខ្លួន។", - "change_employee" => "", - "change_password" => "ផ្លាស់ប្ដូរពាក្យសម្ងាត់", - "clerk" => "", - "commission" => "", - "confirm_delete" => "តើអ្នកពិតជាចង់លុបបុគ្គលិកដែលបានជ្រើសរើសមែនទេ?", - "confirm_restore" => "តើអ្នកពិតជាចង់ដាក់មកវិញនៅបុគ្គលិកដែរបានជ្រើសរើស?", - "current_password" => "ពាក្យសម្ងាត់បច្ចុប្បន្ន", - "current_password_invalid" => "ពាក្យសម្ងាត់បច្ចុប្បន្ន មិនត្រឹមត្រូវ។", - "employee" => "បុគ្គលិក", - "error_adding_updating" => "បន្ថែម ឬកែប្រែបុគ្គលិកមិនបានសំរេច។", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "អ្នកមិនអាចលុប គណនីសាកល្បង បានទេ។", - "error_updating_demo_admin" => "អ្នកមិនអាចកែប្រែ គណនីសាកល្បងបានទេ។", - "language" => "ភាសា", - "login_info" => "ចូលទៅក្នុងប្រពន្ធ័", - "manager" => "", - "new" => "បុគ្គលិកថ្មី", - "none_selected" => "អ្នកមិនបានជ្រើសរើស បុគ្គលិកណាមួយដើម្បីលុបនោះទេ។", - "one_or_multiple" => "បុគ្គលិក", - "password" => "ពាក្យសម្ងាត់", - "password_minlength" => "ពាក្យសម្ងាត់ ត្រូវតែមានយ៉ាងតិច​ 8 តួអក្សរ។", - "password_must_match" => "ពាក្យសម្ងាត់មិនដូចគ្នា។", - "password_not_must_match" => "ពាក្យសម្ងាត់បច្ចុប្បន្ន នឹងពាក្យសម្ងាត់ថ្មី ត្រូវតែមានតែមួយ។", - "password_required" => "ត្រូវការពាក្យសម្ងាត់។", - "permission_desc" => "ឆែកប្រអប់ខាងក្រោម ដើម្បីផ្ដល់សិទ្ធទៅក្នុងផ្នែកណាមួយ។", - "permission_info" => "សិទ្ធិ", - "repeat_password" => "ពាក្យសម្ងាត់ម្ដងទៀត", - "subpermission_required" => "យ៉ាងហោចណាស់ក៏មាន ផ្នែកមួយត្រូវតែផ្ដល់សិទ្ធិ។", - "successful_adding" => "ការបន្ថែមបុគ្គលិកបានទទួលជោគជ័យ។", - "successful_change_password" => "ការផ្លាស់ប្ដូរពាក្យសម្ងាត់ទទួលបានជោគជ័យ។", - "successful_deleted" => "អ្នកទទួលបានជោគជ័យក្នុងការលុប", - "successful_updating" => "អ្នកទទួលបានជោគជ័យ ក្នុងការកែប្រែបុគ្គលិក", - "system_language" => "ភាសារបស់ប្រព័ន្ធ", - "unsuccessful_change_password" => "ការផ្លាស់ប្ដូរពាក្យសម្ងាត់មិនបានសំរេច។", - "update" => "កែប្រែបុគ្គលិក", - "username" => "ឈ្នោះអ្នកប្រើប្រាស់", - "username_duplicate" => "ឈ្មោះបុគ្គលិកត្រូវបានប្រើប្រាស់រួចរាល់។ សូមជ្រើសរើសសារជាថ្មី។", - "username_minlength" => "ឈ្មោះអ្នកប្រើប្រាស់ត្រូវមាន 5 តួអក្សរយ៉ាងតិច។", - "username_required" => "ឈ្មោះអ្នកប្រើប្រាស់ត្រូវការចាំបាច់។", + 'administrator' => '', + 'basic_information' => 'ព៌តមាន', + 'cannot_be_deleted' => 'មិនអាចលុបបុគ្គលិកដែលបានជ្រើសរើស, មួយ ឬក៏ច្រើន នៃការលក់ ឬអ្នកកំពុងព្យាយាមលុបគណនីរបស់ខ្លួន។', + 'change_employee' => '', + 'change_password' => 'ផ្លាស់ប្ដូរពាក្យសម្ងាត់', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'តើអ្នកពិតជាចង់លុបបុគ្គលិកដែលបានជ្រើសរើសមែនទេ?', + 'confirm_restore' => 'តើអ្នកពិតជាចង់ដាក់មកវិញនៅបុគ្គលិកដែរបានជ្រើសរើស?', + 'current_password' => 'ពាក្យសម្ងាត់បច្ចុប្បន្ន', + 'current_password_invalid' => 'ពាក្យសម្ងាត់បច្ចុប្បន្ន មិនត្រឹមត្រូវ។', + 'employee' => 'បុគ្គលិក', + 'error_adding_updating' => 'បន្ថែម ឬកែប្រែបុគ្គលិកមិនបានសំរេច។', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'អ្នកមិនអាចលុប គណនីសាកល្បង បានទេ។', + 'error_grant_change_disallowed' => 'ការផ្លាស់ប្តូរលក្ខណៈប្រadministrative ត្រូវបានគ្របដណ្តប់ក្នុងលក្ខណៈពិសេស។', + 'error_password_change_disallowed' => 'ការផ្លាស់ប្តូរលេខសម្ងាត់ត្រូវបានគ្របដណ្តប់ក្នុងលក្ខណៈពិសេស។', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'អ្នកមិនអាចកែប្រែ គណនីសាកល្បងបានទេ។', + 'language' => 'ភាសា', + 'login_info' => 'ចូលទៅក្នុងប្រពន្ធ័', + 'manager' => '', + 'new' => 'បុគ្គលិកថ្មី', + 'none_selected' => 'អ្នកមិនបានជ្រើសរើស បុគ្គលិកណាមួយដើម្បីលុបនោះទេ។', + 'one_or_multiple' => 'បុគ្គលិក', + 'password' => 'ពាក្យសម្ងាត់', + 'password_minlength' => 'ពាក្យសម្ងាត់ ត្រូវតែមានយ៉ាងតិច​ 8 តួអក្សរ។', + 'password_must_match' => 'ពាក្យសម្ងាត់មិនដូចគ្នា។', + 'password_not_must_match' => 'ពាក្យសម្ងាត់បច្ចុប្បន្ន នឹងពាក្យសម្ងាត់ថ្មី ត្រូវតែមានតែមួយ។', + 'password_required' => 'ត្រូវការពាក្យសម្ងាត់។', + 'permission_desc' => 'ឆែកប្រអប់ខាងក្រោម ដើម្បីផ្ដល់សិទ្ធទៅក្នុងផ្នែកណាមួយ។', + 'permission_info' => 'សិទ្ធិ', + 'repeat_password' => 'ពាក្យសម្ងាត់ម្ដងទៀត', + 'subpermission_required' => 'យ៉ាងហោចណាស់ក៏មាន ផ្នែកមួយត្រូវតែផ្ដល់សិទ្ធិ។', + 'successful_adding' => 'ការបន្ថែមបុគ្គលិកបានទទួលជោគជ័យ។', + 'successful_change_password' => 'ការផ្លាស់ប្ដូរពាក្យសម្ងាត់ទទួលបានជោគជ័យ។', + 'successful_deleted' => 'អ្នកទទួលបានជោគជ័យក្នុងការលុប', + 'successful_updating' => 'អ្នកទទួលបានជោគជ័យ ក្នុងការកែប្រែបុគ្គលិក', + 'system_language' => 'ភាសារបស់ប្រព័ន្ធ', + 'unsuccessful_change_password' => 'ការផ្លាស់ប្ដូរពាក្យសម្ងាត់មិនបានសំរេច។', + 'update' => 'កែប្រែបុគ្គលិក', + 'username' => 'ឈ្នោះអ្នកប្រើប្រាស់', + 'username_duplicate' => 'ឈ្មោះបុគ្គលិកត្រូវបានប្រើប្រាស់រួចរាល់។ សូមជ្រើសរើសសារជាថ្មី។', + 'username_minlength' => 'ឈ្មោះអ្នកប្រើប្រាស់ត្រូវមាន 5 តួអក្សរយ៉ាងតិច។', + 'username_required' => 'ឈ្មោះអ្នកប្រើប្រាស់ត្រូវការចាំបាច់។', ]; diff --git a/app/Language/lo/Employees.php b/app/Language/lo/Employees.php index ef6ee7d18..cad760773 100644 --- a/app/Language/lo/Employees.php +++ b/app/Language/lo/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "ຂໍ້ມູນ", - "cannot_be_deleted" => "ບໍ່ສາມາດລຶບພະນັກງານທີ່ເລືອກໄດ້, ຢ່າງໜ້ອຍມີ 1 ລາຍການຫຼືຫຼາຍກວ່ານັ້ນ ຍັງມີການຊື້ຂາຍກັນຢູ່ ຫຼື ທ່ານກຳລັງພະຍາຍາມລຶບບັນຊີຂອງຕົວເອງ.", - "change_employee" => "", - "change_password" => "ປ່ຽນ Password", - "clerk" => "", - "commission" => "", - "confirm_delete" => "ທ່ານຈະລຶບພະນັກງານທີ່ເລືອກແທ້ບໍ່ ?", - "confirm_restore" => "", - "current_password" => "Password ປັດຈຸບັນ", - "current_password_invalid" => "Password ປັດຈຸບັນບໍ່ຖືກຕ້ອງ.", - "employee" => "ພະນັກງານ", - "error_adding_updating" => "ເພີ່ມ ຫຼື ແກ້ໄຂ ພະນັກງານ ບໍ່ສຳເລັດ.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "ທ່ານບໍ່ສາມາດລຶບບັນຊີທົດລອງຜູ້ດູແລລະບົບໄດ້.", - "error_updating_demo_admin" => "ທ່ານບໍ່ສາມາດປ່ຽນແປງບັນຊີທົດລອງຜູ້ດູແລລະບົບໄດ້.", - "language" => "ພາສາ", - "login_info" => "ເຂົ້າລະບົບ", - "manager" => "", - "new" => "ພະນັກງານໃໝ່", - "none_selected" => "ທ່ານຍັງບໍ່ໄດ້ເລືອກພະນັກງານໃດເລີຍເພື່ອລຶບ.", - "one_or_multiple" => "ພະນັກງານ", - "password" => "Password", - "password_minlength" => "Password ຄວນໃສ່ຢ່າງໜ້ອຍ 8 ຕົວອັກສອນ.", - "password_must_match" => "Password ບໍ່ຄືກັນ.", - "password_not_must_match" => "Password ປັດຈຸບັນ ແລະ Password ໃໝ່ ຈະຕ້ອງບໍ່ຄືກັນ.", - "password_required" => "Password ຈຳເປັນຕ້ອງໃສ່.", - "permission_desc" => "ຕິກຂໍ້ມູນດ້ານລຸ່ມເພື່ອໃຫ້ສາມາດນຳໃຊ້ Modules ຕ່າງໆໄດ້.", - "permission_info" => "ສິດ", - "repeat_password" => "ລະຫັດຜ່ານອີກຄັ້ງ", - "subpermission_required" => "Add at least one grant for each module.", - "successful_adding" => "ເພີ່ມພະນັກງານສຳເລັດ.", - "successful_change_password" => "ປ່ຽນລະຫັດຜ່ານສຳເລັດ.", - "successful_deleted" => "ທ່ານລຶບສຳເລັດແລ້ວ", - "successful_updating" => "ທ່ານແກ້ໄຂພະນັກງານສຳເລັດ", - "system_language" => "ພາສາຂອງລະບົບ", - "unsuccessful_change_password" => "ປ່ຽນລະຫັດຜ່ານບໍ່ສຳເລັດ.", - "update" => "ແກ້ໄຂພະນັກງານ", - "username" => "ຊື່ຜູ້ໃຊ້", - "username_duplicate" => "", - "username_minlength" => "Username ຕ້ອງໃສ່ຢ່າງໜ້ອຍ 5 ຕົວອັກສອນ.", - "username_required" => "Username ຈຳເປັນຕ້ອງໃສ່.", + 'administrator' => '', + 'basic_information' => 'ຂໍ້ມູນ', + 'cannot_be_deleted' => 'ບໍ່ສາມາດລຶບພະນັກງານທີ່ເລືອກໄດ້, ຢ່າງໜ້ອຍມີ 1 ລາຍການຫຼືຫຼາຍກວ່ານັ້ນ ຍັງມີການຊື້ຂາຍກັນຢູ່ ຫຼື ທ່ານກຳລັງພະຍາຍາມລຶບບັນຊີຂອງຕົວເອງ.', + 'change_employee' => '', + 'change_password' => 'ປ່ຽນ Password', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'ທ່ານຈະລຶບພະນັກງານທີ່ເລືອກແທ້ບໍ່ ?', + 'confirm_restore' => '', + 'current_password' => 'Password ປັດຈຸບັນ', + 'current_password_invalid' => 'Password ປັດຈຸບັນບໍ່ຖືກຕ້ອງ.', + 'employee' => 'ພະນັກງານ', + 'error_adding_updating' => 'ເພີ່ມ ຫຼື ແກ້ໄຂ ພະນັກງານ ບໍ່ສຳເລັດ.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'ທ່ານບໍ່ສາມາດລຶບບັນຊີທົດລອງຜູ້ດູແລລະບົບໄດ້.', + 'error_grant_change_disallowed' => 'ການປ່ຽນແປງສິດທິໄດ້ຖືກປິດໃນ demo ນີ້.', + 'error_password_change_disallowed' => 'ການປ່ຽນແປງລະຫັດຜ່ານໄດ້ຖືກປິດໃນ demo ນີ້.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'ທ່ານບໍ່ສາມາດປ່ຽນແປງບັນຊີທົດລອງຜູ້ດູແລລະບົບໄດ້.', + 'language' => 'ພາສາ', + 'login_info' => 'ເຂົ້າລະບົບ', + 'manager' => '', + 'new' => 'ພະນັກງານໃໝ່', + 'none_selected' => 'ທ່ານຍັງບໍ່ໄດ້ເລືອກພະນັກງານໃດເລີຍເພື່ອລຶບ.', + 'one_or_multiple' => 'ພະນັກງານ', + 'password' => 'Password', + 'password_minlength' => 'Password ຄວນໃສ່ຢ່າງໜ້ອຍ 8 ຕົວອັກສອນ.', + 'password_must_match' => 'Password ບໍ່ຄືກັນ.', + 'password_not_must_match' => 'Password ປັດຈຸບັນ ແລະ Password ໃໝ່ ຈະຕ້ອງບໍ່ຄືກັນ.', + 'password_required' => 'Password ຈຳເປັນຕ້ອງໃສ່.', + 'permission_desc' => 'ຕິກຂໍ້ມູນດ້ານລຸ່ມເພື່ອໃຫ້ສາມາດນຳໃຊ້ Modules ຕ່າງໆໄດ້.', + 'permission_info' => 'ສິດ', + 'repeat_password' => 'ລະຫັດຜ່ານອີກຄັ້ງ', + 'subpermission_required' => 'Add at least one grant for each module.', + 'successful_adding' => 'ເພີ່ມພະນັກງານສຳເລັດ.', + 'successful_change_password' => 'ປ່ຽນລະຫັດຜ່ານສຳເລັດ.', + 'successful_deleted' => 'ທ່ານລຶບສຳເລັດແລ້ວ', + 'successful_updating' => 'ທ່ານແກ້ໄຂພະນັກງານສຳເລັດ', + 'system_language' => 'ພາສາຂອງລະບົບ', + 'unsuccessful_change_password' => 'ປ່ຽນລະຫັດຜ່ານບໍ່ສຳເລັດ.', + 'update' => 'ແກ້ໄຂພະນັກງານ', + 'username' => 'ຊື່ຜູ້ໃຊ້', + 'username_duplicate' => '', + 'username_minlength' => 'Username ຕ້ອງໃສ່ຢ່າງໜ້ອຍ 5 ຕົວອັກສອນ.', + 'username_required' => 'Username ຈຳເປັນຕ້ອງໃສ່.', ]; diff --git a/app/Language/ml/Employees.php b/app/Language/ml/Employees.php index 34a418062..ec41d47e2 100644 --- a/app/Language/ml/Employees.php +++ b/app/Language/ml/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "", - "cannot_be_deleted" => "", - "change_employee" => "", - "change_password" => "", - "clerk" => "", - "commission" => "", - "confirm_delete" => "", - "confirm_restore" => "", - "current_password" => "", - "current_password_invalid" => "", - "employee" => "", - "error_adding_updating" => "", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "", - "error_updating_demo_admin" => "", - "language" => "", - "login_info" => "", - "manager" => "", - "new" => "", - "none_selected" => "", - "one_or_multiple" => "", - "password" => "", - "password_minlength" => "", - "password_must_match" => "", - "password_not_must_match" => "", - "password_required" => "", - "permission_desc" => "", - "permission_info" => "", - "repeat_password" => "", - "subpermission_required" => "", - "successful_adding" => "", - "successful_change_password" => "", - "successful_deleted" => "", - "successful_updating" => "", - "system_language" => "", - "unsuccessful_change_password" => "", - "update" => "", - "username" => "", - "username_duplicate" => "", - "username_minlength" => "", - "username_required" => "", + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'അനുമതി മാറ്റങ്ങൾ ഈ ഡെമോയിൽ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു.', + 'error_password_change_disallowed' => 'പാസ്‌വേർഡ് മാറ്റങ്ങൾ ഈ ഡെമോയിൽ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/nb/Employees.php b/app/Language/nb/Employees.php index 34a418062..2973e2661 100644 --- a/app/Language/nb/Employees.php +++ b/app/Language/nb/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "", - "cannot_be_deleted" => "", - "change_employee" => "", - "change_password" => "", - "clerk" => "", - "commission" => "", - "confirm_delete" => "", - "confirm_restore" => "", - "current_password" => "", - "current_password_invalid" => "", - "employee" => "", - "error_adding_updating" => "", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "", - "error_updating_demo_admin" => "", - "language" => "", - "login_info" => "", - "manager" => "", - "new" => "", - "none_selected" => "", - "one_or_multiple" => "", - "password" => "", - "password_minlength" => "", - "password_must_match" => "", - "password_not_must_match" => "", - "password_required" => "", - "permission_desc" => "", - "permission_info" => "", - "repeat_password" => "", - "subpermission_required" => "", - "successful_adding" => "", - "successful_change_password" => "", - "successful_deleted" => "", - "successful_updating" => "", - "system_language" => "", - "unsuccessful_change_password" => "", - "update" => "", - "username" => "", - "username_duplicate" => "", - "username_minlength" => "", - "username_required" => "", + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'Tillatelser kan ikke endres i denne demoen.', + 'error_password_change_disallowed' => 'Passordet kan ikke endres i denne demoen.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/nl-BE/Employees.php b/app/Language/nl-BE/Employees.php index 347f1a3c5..713fd4025 100644 --- a/app/Language/nl-BE/Employees.php +++ b/app/Language/nl-BE/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Informatie", - "cannot_be_deleted" => "Kon de geselecteerde gebruilker(s) niet verwijderen, één of meerdere die u probeert te verwijderen hebben aankopen verwerkt.", - "change_employee" => "", - "change_password" => "Wijzig Paswoord", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Bent u zeker dat u de geselecteerde werknemers wil verwijderen?", - "confirm_restore" => "Bent u zeker dat u de geselecteerde werknemers wil herstellen?", - "current_password" => "Huidig Paswoord", - "current_password_invalid" => "Huidig paswoord is ongeldig.", - "employee" => "Werknemer", - "error_adding_updating" => "Fout bij het toevoegen/aanpassen medewerker.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Je kan de demo gebruilker niet verwijderen.", - "error_updating_demo_admin" => "Jij kan de demo gebruiker niet veranderen.", - "language" => "Taal", - "login_info" => "Login", - "manager" => "", - "new" => "N. Werknemer", - "none_selected" => "U hebt geen werknemers geselecteerd.", - "one_or_multiple" => "werknemer(s) verwijderd", - "password" => "Paswoord", - "password_minlength" => "Paswoord moet minstens 8 characters lang zijn.", - "password_must_match" => "Paswoorden komen niet overeen.", - "password_not_must_match" => "Het huidige en het nieuwe paswoord moeten verschillend zijn.", - "password_required" => "Paswoord moet ingevuld worden.", - "permission_desc" => "Vink de selectievakjes hieronder aan om toegang te verlenen tot de modules.", - "permission_info" => "Rechten", - "repeat_password" => "Herhaal Paswoord", - "subpermission_required" => "Selecteer minstens één permissie voor elke module.", - "successful_adding" => "Je hebt met succes een medewerker toegevoegd.", - "successful_change_password" => "Paswoord wijziging geslaagd.", - "successful_deleted" => "Er werd(en)", - "successful_updating" => "Je hebt met succes de medewerker gewijzigd", - "system_language" => "Systeem taal", - "unsuccessful_change_password" => "Paswoord wijziging gefaald.", - "update" => "Update Werknemer", - "username" => "Gebruikersnaam", - "username_duplicate" => "Werknemer gebruikersnaam is al in gebruik. Gelieve een andere te kiezen.", - "username_minlength" => "Gebruikersnaam moet minstens 5 characters lang zijn.", - "username_required" => "Gebruikersnaam moet ingevuld worden.", + 'administrator' => '', + 'basic_information' => 'Informatie', + 'cannot_be_deleted' => 'Kon de geselecteerde gebruiker(s) niet verwijderen', + 'change_employee' => '', + 'change_password' => 'Wijzig Paswoord', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Bent u zeker dat u de geselecteerde werknemers wil verwijderen?', + 'confirm_restore' => 'Bent u zeker dat u de geselecteerde werknemers wil herstellen?', + 'current_password' => 'Huidig Paswoord', + 'current_password_invalid' => 'Huidig paswoord is ongeldig.', + 'employee' => 'Werknemer', + 'error_adding_updating' => 'Fout bij het toevoegen/aanpassen medewerker.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Je kan de demo gebruilker niet verwijderen.', + 'error_grant_change_disallowed' => 'Machtigingswijzigingen zijn uitgeschakeld in deze demo.', + 'error_password_change_disallowed' => 'Wachtwoordwijzigingen zijn uitgeschakeld in deze demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Jij kan de demo gebruiker niet veranderen.', + 'language' => 'Taal', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'N. Werknemer', + 'none_selected' => 'U hebt geen werknemers geselecteerd.', + 'one_or_multiple' => 'werknemer(s) verwijderd', + 'password' => 'Paswoord', + 'password_minlength' => 'Paswoord moet minstens 8 characters lang zijn.', + 'password_must_match' => 'Paswoorden komen niet overeen.', + 'password_not_must_match' => 'Het huidige en het nieuwe paswoord moeten verschillend zijn.', + 'password_required' => 'Paswoord moet ingevuld worden.', + 'permission_desc' => 'Vink de selectievakjes hieronder aan om toegang te verlenen tot de modules.', + 'permission_info' => 'Rechten', + 'repeat_password' => 'Herhaal Paswoord', + 'subpermission_required' => 'Selecteer minstens één permissie voor elke module.', + 'successful_adding' => 'Je hebt met succes een medewerker toegevoegd.', + 'successful_change_password' => 'Paswoord wijziging geslaagd.', + 'successful_deleted' => 'Er werd(en)', + 'successful_updating' => 'Je hebt met succes de medewerker gewijzigd', + 'system_language' => 'Systeem taal', + 'unsuccessful_change_password' => 'Paswoord wijziging gefaald.', + 'update' => 'Update Werknemer', + 'username' => 'Gebruikersnaam', + 'username_duplicate' => 'Werknemer gebruikersnaam is al in gebruik. Gelieve een andere te kiezen.', + 'username_minlength' => 'Gebruikersnaam moet minstens 5 characters lang zijn.', + 'username_required' => 'Gebruikersnaam moet ingevuld worden.', ]; diff --git a/app/Language/nl-NL/Employees.php b/app/Language/nl-NL/Employees.php index 578958608..1ced186f9 100644 --- a/app/Language/nl-NL/Employees.php +++ b/app/Language/nl-NL/Employees.php @@ -1,47 +1,49 @@ "Beheerder", - "basic_information" => "Informatie", - "cannot_be_deleted" => "Kan geselecteerde werknemer(s) niet verwijderen, één of meerdere bevatten verwerkte verkopen of u probeert uw account te verwijderen.", - "change_employee" => "Werknemer wijzigen", - "change_password" => "Wachtwoord wijzigen", - "clerk" => "Bediende", - "commission" => "Commissie", - "confirm_delete" => "Weet u zeker dat u de geselecteerde werknemer(s) wilt verwijderen?", - "confirm_restore" => "Weet u zeker dat u de geselecteerde werknemer(s) wilt herstellen?", - "current_password" => "Huidige wachtwoord", - "current_password_invalid" => "Huidige wachtwoord is ongeldig.", - "employee" => "Werknemer", - "error_adding_updating" => "Werknemer toevoegen of bijwerken mislukt.", - "error_deleting_admin" => "U kunt een beheerder niet verwijderen.", - "error_updating_admin" => "U kunt een beheerder niet wijzigen.", - "error_deleting_demo_admin" => "Kan de demo admin gebruiker niet verwijderen.", - "error_updating_demo_admin" => "Kan de demo admin gebruiker niet wijzigen.", - "language" => "Taal", - "login_info" => "Aanmelden", - "manager" => "Manager", - "new" => "Nieuwe werknemer", - "none_selected" => "Geen werknemer(s) geselecteerd om te verwijderen.", - "one_or_multiple" => "werknemer(s)", - "password" => "Wachtwoord", - "password_minlength" => "Wachtwoord moet minstens 8 karakters bevatten.", - "password_must_match" => "Wachtwoorden komen niet overeen.", - "password_not_must_match" => "Huidige wachtwoord en nieuwe wachtwoord moeten uniek zijn.", - "password_required" => "Wachtwoord is vereist.", - "permission_desc" => "De selectievakjes hieronder selecteren om toegang te verlenen tot modules.", - "permission_info" => "Machtigingen", - "repeat_password" => "Wachtwoord opnieuw", - "subpermission_required" => "Tenminste eenmaal toegang verlenen voor elke module.", - "successful_adding" => "Werknemer toegevoegd.", - "successful_change_password" => "Wachtwoord gewijzigd.", - "successful_deleted" => "U heeft verwijderd", - "successful_updating" => "Werknemer bijgewerkt", - "system_language" => "Systeemtaal", - "unsuccessful_change_password" => "Wachtwoord wijzigen mislukt.", - "update" => "Werknemer bijwerken", - "username" => "Gebruikersnaam", - "username_duplicate" => "", - "username_minlength" => "Gebruikersnaam moet minstens 5 karakters bevatten.", - "username_required" => "Gebruikersnaam is een vereist veld.", + 'administrator' => 'Beheerder', + 'basic_information' => 'Informatie', + 'cannot_be_deleted' => 'Kan geselecteerde werknemer(s) niet verwijderen', + 'change_employee' => 'Werknemer wijzigen', + 'change_password' => 'Wachtwoord wijzigen', + 'clerk' => 'Bediende', + 'commission' => 'Commissie', + 'confirm_delete' => 'Weet u zeker dat u de geselecteerde werknemer(s) wilt verwijderen?', + 'confirm_restore' => 'Weet u zeker dat u de geselecteerde werknemer(s) wilt herstellen?', + 'current_password' => 'Huidige wachtwoord', + 'current_password_invalid' => 'Huidige wachtwoord is ongeldig.', + 'employee' => 'Werknemer', + 'error_adding_updating' => 'Werknemer toevoegen of bijwerken mislukt.', + 'error_deleting_admin' => 'U kunt een beheerder niet verwijderen.', + 'error_deleting_demo_admin' => 'Kan de demo admin gebruiker niet verwijderen.', + 'error_grant_change_disallowed' => 'Machtigingswijzigingen zijn uitgeschakeld in deze demo.', + 'error_password_change_disallowed' => 'Wachtwoordwijzigingen zijn uitgeschakeld in deze demo.', + 'error_updating_admin' => 'U kunt een beheerder niet wijzigen.', + 'error_updating_demo_admin' => 'Kan de demo admin gebruiker niet wijzigen.', + 'language' => 'Taal', + 'login_info' => 'Aanmelden', + 'manager' => 'Manager', + 'new' => 'Nieuwe werknemer', + 'none_selected' => 'Geen werknemer(s) geselecteerd om te verwijderen.', + 'one_or_multiple' => 'werknemer(s)', + 'password' => 'Wachtwoord', + 'password_minlength' => 'Wachtwoord moet minstens 8 karakters bevatten.', + 'password_must_match' => 'Wachtwoorden komen niet overeen.', + 'password_not_must_match' => 'Huidige wachtwoord en nieuwe wachtwoord moeten uniek zijn.', + 'password_required' => 'Wachtwoord is vereist.', + 'permission_desc' => 'De selectievakjes hieronder selecteren om toegang te verlenen tot modules.', + 'permission_info' => 'Machtigingen', + 'repeat_password' => 'Wachtwoord opnieuw', + 'subpermission_required' => 'Tenminste eenmaal toegang verlenen voor elke module.', + 'successful_adding' => 'Werknemer toegevoegd.', + 'successful_change_password' => 'Wachtwoord gewijzigd.', + 'successful_deleted' => 'U heeft verwijderd', + 'successful_updating' => 'Werknemer bijgewerkt', + 'system_language' => 'Systeemtaal', + 'unsuccessful_change_password' => 'Wachtwoord wijzigen mislukt.', + 'update' => 'Werknemer bijwerken', + 'username' => 'Gebruikersnaam', + 'username_duplicate' => '', + 'username_minlength' => 'Gebruikersnaam moet minstens 5 karakters bevatten.', + 'username_required' => 'Gebruikersnaam is een vereist veld.', ]; diff --git a/app/Language/pl/Employees.php b/app/Language/pl/Employees.php index 6cdf0364f..30a6e7793 100644 --- a/app/Language/pl/Employees.php +++ b/app/Language/pl/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Informacje", - "cannot_be_deleted" => "", - "change_employee" => "", - "change_password" => "", - "clerk" => "", - "commission" => "", - "confirm_delete" => "", - "confirm_restore" => "", - "current_password" => "", - "current_password_invalid" => "", - "employee" => "", - "error_adding_updating" => "", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "", - "error_updating_demo_admin" => "", - "language" => "", - "login_info" => "", - "manager" => "", - "new" => "", - "none_selected" => "", - "one_or_multiple" => "", - "password" => "", - "password_minlength" => "", - "password_must_match" => "", - "password_not_must_match" => "", - "password_required" => "", - "permission_desc" => "", - "permission_info" => "", - "repeat_password" => "", - "subpermission_required" => "", - "successful_adding" => "", - "successful_change_password" => "", - "successful_deleted" => "", - "successful_updating" => "", - "system_language" => "", - "unsuccessful_change_password" => "", - "update" => "", - "username" => "", - "username_duplicate" => "", - "username_minlength" => "", - "username_required" => "", + 'administrator' => '', + 'basic_information' => 'Informacje', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'Zmiany uprawnień są wyłączone w tej wersji demo.', + 'error_password_change_disallowed' => 'Zmiany hasła są wyłączone w tej wersji demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/pt-BR/Employees.php b/app/Language/pt-BR/Employees.php index d9e38bd98..c29affa51 100644 --- a/app/Language/pt-BR/Employees.php +++ b/app/Language/pt-BR/Employees.php @@ -1,47 +1,49 @@ "Administrador", - "basic_information" => "Informações do Funcionário", - "cannot_be_deleted" => "Não foi possível excluir funcionários selecionados, um ou mais dos funcionários processou vendas ou você está tentando excluir-se :).", - "change_employee" => "Alterar Funcionário", - "change_password" => "Alterar senha", - "clerk" => "Funcionário", - "commission" => "Comissão", - "confirm_delete" => "Tem certeza de que deseja excluir os funcionários selecionados?", - "confirm_restore" => "Tem certeza de que deseja restaurar o (s) empregado (s) selecionado (s)?", - "current_password" => "Senha atual", - "current_password_invalid" => "Senha atual inválida.", - "employee" => "Funcionário", - "error_adding_updating" => "Erro ao adicionar/atualizar funcionário.", - "error_deleting_admin" => "Você não pode excluir um usuário administrador.", - "error_updating_admin" => "Você não pode modificar um usuário administrador.", - "error_deleting_demo_admin" => "Você não pode excluir o usuário administrador de demonstração.", - "error_updating_demo_admin" => "Você não pode alterar o usuário de demonstração de administração.", - "language" => "Linguagem", - "login_info" => "Autenticação", - "manager" => "Gerente", - "new" => "Novo Funcionário", - "none_selected" => "Você não selecionou nenhum funcionário para excluir.", - "one_or_multiple" => "funcionário(s)", - "password" => "Senha", - "password_minlength" => "As senhas devem ter pelo menos 8 caracteres.", - "password_must_match" => "As senhas não correspondem.", - "password_not_must_match" => "A senha atual e a nova senha devem ser exclusivas.", - "password_required" => "Senha requerida.", - "permission_desc" => "Marque as caixas abaixo para conceder acesso aos módulos.", - "permission_info" => "Permissões de acesso do funcionário", - "repeat_password" => "Confirme a senha", - "subpermission_required" => "Adicione pelo menos um privilégio para cada módulo.", - "successful_adding" => "Você adicionou o funcionário com sucesso.", - "successful_change_password" => "Alteração de senha bem sucedida.", - "successful_deleted" => "Você apagou o funcionário com sucesso", - "successful_updating" => "Você atualizou com sucesso o funcionário", - "system_language" => "Idioma do sistema", - "unsuccessful_change_password" => "Falha na mudança de senha.", - "update" => "Atualizar funcionário", - "username" => "Usuário", - "username_duplicate" => "", - "username_minlength" => "O nome de usuário deve ter pelo menos 5 caracteres.", - "username_required" => "Nome de Usuário é um campo obrigatório.", + 'administrator' => 'Administrador', + 'basic_information' => 'Informações do Funcionário', + 'cannot_be_deleted' => 'Não foi possível excluir funcionários selecionados', + 'change_employee' => 'Alterar Funcionário', + 'change_password' => 'Alterar senha', + 'clerk' => 'Funcionário', + 'commission' => 'Comissão', + 'confirm_delete' => 'Tem certeza de que deseja excluir os funcionários selecionados?', + 'confirm_restore' => 'Tem certeza de que deseja restaurar o (s) empregado (s) selecionado (s)?', + 'current_password' => 'Senha atual', + 'current_password_invalid' => 'Senha atual inválida.', + 'employee' => 'Funcionário', + 'error_adding_updating' => 'Erro ao adicionar/atualizar funcionário.', + 'error_deleting_admin' => 'Você não pode excluir um usuário administrador.', + 'error_deleting_demo_admin' => 'Você não pode excluir o usuário administrador de demonstração.', + 'error_grant_change_disallowed' => 'As alterações de permissão são desabilitadas nesta demonstração.', + 'error_password_change_disallowed' => 'As alterações de senha são desabilitadas nesta demonstração.', + 'error_updating_admin' => 'Você não pode modificar um usuário administrador.', + 'error_updating_demo_admin' => 'Você não pode alterar o usuário de demonstração de administração.', + 'language' => 'Linguagem', + 'login_info' => 'Autenticação', + 'manager' => 'Gerente', + 'new' => 'Novo Funcionário', + 'none_selected' => 'Você não selecionou nenhum funcionário para excluir.', + 'one_or_multiple' => 'funcionário(s)', + 'password' => 'Senha', + 'password_minlength' => 'As senhas devem ter pelo menos 8 caracteres.', + 'password_must_match' => 'As senhas não correspondem.', + 'password_not_must_match' => 'A senha atual e a nova senha devem ser exclusivas.', + 'password_required' => 'Senha requerida.', + 'permission_desc' => 'Marque as caixas abaixo para conceder acesso aos módulos.', + 'permission_info' => 'Permissões de acesso do funcionário', + 'repeat_password' => 'Confirme a senha', + 'subpermission_required' => 'Adicione pelo menos um privilégio para cada módulo.', + 'successful_adding' => 'Você adicionou o funcionário com sucesso.', + 'successful_change_password' => 'Alteração de senha bem sucedida.', + 'successful_deleted' => 'Você apagou o funcionário com sucesso', + 'successful_updating' => 'Você atualizou com sucesso o funcionário', + 'system_language' => 'Idioma do sistema', + 'unsuccessful_change_password' => 'Falha na mudança de senha.', + 'update' => 'Atualizar funcionário', + 'username' => 'Usuário', + 'username_duplicate' => '', + 'username_minlength' => 'O nome de usuário deve ter pelo menos 5 caracteres.', + 'username_required' => 'Nome de Usuário é um campo obrigatório.', ]; diff --git a/app/Language/ro/Employees.php b/app/Language/ro/Employees.php index 34a418062..33161aae0 100644 --- a/app/Language/ro/Employees.php +++ b/app/Language/ro/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "", - "cannot_be_deleted" => "", - "change_employee" => "", - "change_password" => "", - "clerk" => "", - "commission" => "", - "confirm_delete" => "", - "confirm_restore" => "", - "current_password" => "", - "current_password_invalid" => "", - "employee" => "", - "error_adding_updating" => "", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "", - "error_updating_demo_admin" => "", - "language" => "", - "login_info" => "", - "manager" => "", - "new" => "", - "none_selected" => "", - "one_or_multiple" => "", - "password" => "", - "password_minlength" => "", - "password_must_match" => "", - "password_not_must_match" => "", - "password_required" => "", - "permission_desc" => "", - "permission_info" => "", - "repeat_password" => "", - "subpermission_required" => "", - "successful_adding" => "", - "successful_change_password" => "", - "successful_deleted" => "", - "successful_updating" => "", - "system_language" => "", - "unsuccessful_change_password" => "", - "update" => "", - "username" => "", - "username_duplicate" => "", - "username_minlength" => "", - "username_required" => "", + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'Modificările permisiunilor sunt dezactivate în această demo.', + 'error_password_change_disallowed' => 'Modificările parolei sunt dezactivate în această demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/ru/Employees.php b/app/Language/ru/Employees.php index fd2260ca2..2e70762c8 100644 --- a/app/Language/ru/Employees.php +++ b/app/Language/ru/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Информация", - "cannot_be_deleted" => "Не удалось удалить выбранных сотрудников, один или несколько из них обработали продажи или вы пытаетесь удалить свою учетную запись.", - "change_employee" => "", - "change_password" => "Смена пароля", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Вы уверены, что хотите удалить выбранных сотрудников?", - "confirm_restore" => "Вы уверены, что хотите восстановить выбранных сотрудников?", - "current_password" => "Текущий пароль", - "current_password_invalid" => "Текущий пароль введен неверно.", - "employee" => "Сотрудник", - "error_adding_updating" => "Ошибка при добавлении/обновлении сотрудника.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Вы не можете удалить демо-администратора.", - "error_updating_demo_admin" => "Вы не можете изменить демо-администратора.", - "language" => "Язык", - "login_info" => "Вход", - "manager" => "", - "new" => "Новый сотрудник", - "none_selected" => "Вы не выбрали ни одного сотрудника для удаления.", - "one_or_multiple" => "сотрудник(и)", - "password" => "Пароль", - "password_minlength" => "Пароль должен быть не менее 8 символов.", - "password_must_match" => "Пароли не совпадают.", - "password_not_must_match" => "Текущий пароль и новый пароль должны быть уникальными.", - "password_required" => "Ввод пароля - обязателен.", - "permission_desc" => "Отметьте флажками ниже, чтобы предоставить доступ к модулям.", - "permission_info" => "Права доступа", - "repeat_password" => "Повтор пароля", - "subpermission_required" => "Добавьте хотя бы одно разрешение для каждого модуля.", - "successful_adding" => "Сотрудник успешно создан.", - "successful_change_password" => "Смена пароля прошла успешно.", - "successful_deleted" => "Успешно удалено", - "successful_updating" => "Информация о сотруднике успешно обновлена", - "system_language" => "Язык системы", - "unsuccessful_change_password" => "Не удалось изменить пароль.", - "update" => "Обновление сотрудника", - "username" => "Имя пользователя", - "username_duplicate" => "Имя пользователя сотрудника уже используется. Пожалуйста, выберите другое.", - "username_minlength" => "Имя пользователя должно быть не менее 5 символов.", - "username_required" => "Имя пользователя - обязательное поле для заполнения.", + 'administrator' => '', + 'basic_information' => 'Информация', + 'cannot_be_deleted' => 'Не удалось удалить выбранных сотрудников, один или несколько из них обработали продажи или вы пытаетесь удалить свою учетную запись.', + 'change_employee' => '', + 'change_password' => 'Смена пароля', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Вы уверены, что хотите удалить выбранных сотрудников?', + 'confirm_restore' => 'Вы уверены, что хотите восстановить выбранных сотрудников?', + 'current_password' => 'Текущий пароль', + 'current_password_invalid' => 'Текущий пароль введен неверно.', + 'employee' => 'Сотрудник', + 'error_adding_updating' => 'Ошибка при добавлении/обновлении сотрудника.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Вы не можете удалить демо-администратора.', + 'error_grant_change_disallowed' => 'Изменения прав доступа отключены в этой демонстрации.', + 'error_password_change_disallowed' => 'Изменение пароля отключено в этой демонстрации.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Вы не можете изменить демо-администратора.', + 'language' => 'Язык', + 'login_info' => 'Вход', + 'manager' => '', + 'new' => 'Новый сотрудник', + 'none_selected' => 'Вы не выбрали ни одного сотрудника для удаления.', + 'one_or_multiple' => 'сотрудник(и)', + 'password' => 'Пароль', + 'password_minlength' => 'Пароль должен быть не менее 8 символов.', + 'password_must_match' => 'Пароли не совпадают.', + 'password_not_must_match' => 'Текущий пароль и новый пароль должны быть уникальными.', + 'password_required' => 'Ввод пароля - обязателен.', + 'permission_desc' => 'Отметьте флажками ниже, чтобы предоставить доступ к модулям.', + 'permission_info' => 'Права доступа', + 'repeat_password' => 'Повтор пароля', + 'subpermission_required' => 'Добавьте хотя бы одно разрешение для каждого модуля.', + 'successful_adding' => 'Сотрудник успешно создан.', + 'successful_change_password' => 'Смена пароля прошла успешно.', + 'successful_deleted' => 'Успешно удалено', + 'successful_updating' => 'Информация о сотруднике успешно обновлена', + 'system_language' => 'Язык системы', + 'unsuccessful_change_password' => 'Не удалось изменить пароль.', + 'update' => 'Обновление сотрудника', + 'username' => 'Имя пользователя', + 'username_duplicate' => 'Имя пользователя сотрудника уже используется. Пожалуйста, выберите другое.', + 'username_minlength' => 'Имя пользователя должно быть не менее 5 символов.', + 'username_required' => 'Имя пользователя - обязательное поле для заполнения.', ]; diff --git a/app/Language/sv/Employees.php b/app/Language/sv/Employees.php index db2146f9a..679758771 100644 --- a/app/Language/sv/Employees.php +++ b/app/Language/sv/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Information", - "cannot_be_deleted" => "Det går inte att radera valda anställda, en eller flera av de behandlade försäljningarna eller du försöker radera ditt konto.", - "change_employee" => "", - "change_password" => "Ändra lösenord", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Är du säker på att du vill radera de valda arbetstagarna?", - "confirm_restore" => "Är du säker på att du vill återställa valda anställda (er)?", - "current_password" => "Nuvarande lösenord", - "current_password_invalid" => "Nuvarande lösenord är fel.", - "employee" => "Anställd", - "error_adding_updating" => "Anställd lägg till eller uppdatering misslyckades.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Du kan inte radera demo admin-användaren.", - "error_updating_demo_admin" => "Du kan inte ändra demo admin-användaren.", - "language" => "Språk", - "login_info" => "Login", - "manager" => "", - "new" => "Ny anställd", - "none_selected" => "Du har inte valt någon anställd att radera.", - "one_or_multiple" => "Anställda", - "password" => "Lösenord", - "password_minlength" => "Lösenordet måste vara minst 8 tecken i längd.", - "password_must_match" => "Lösenorden matchar ej.", - "password_not_must_match" => "Nuvarande lösenord och nytt lösenord måste vara unikt.", - "password_required" => "Lösenord krävs.", - "permission_desc" => "Markera rutorna nedan för att ge tillgång till moduler.", - "permission_info" => "Behörigheter", - "repeat_password" => "Lösenord igen", - "subpermission_required" => "Lägg till minst en behörighet för varje modul.", - "successful_adding" => "Tillägg av anställd lyckades.", - "successful_change_password" => "Lösenordsbyte lyckades.", - "successful_deleted" => "Du har tagit bort", - "successful_updating" => "Du har uppdaterat anställda", - "system_language" => "System Språk", - "unsuccessful_change_password" => "Lösenordsbyte misslyckades.", - "update" => "Uppdatera anställd", - "username" => "Användarnamn", - "username_duplicate" => "Användarnamnet för den anställda används redan. Vänligen välj ett annat.", - "username_minlength" => "Användarnamnet måste vara minst 5 tecken långt.", - "username_required" => "Användarnamnet är ett obligatoriskt fält.", + 'administrator' => '', + 'basic_information' => 'Information', + 'cannot_be_deleted' => 'Det går inte att radera valda anställda, en eller flera av dem har behandlat försäljningar eller du försöker radera ditt konto.', + 'change_employee' => '', + 'change_password' => 'Ändra lösenord', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Är du säker på att du vill radera de valda arbetstagarna?', + 'confirm_restore' => 'Är du säker på att du vill återställa valda anställda (er)?', + 'current_password' => 'Nuvarande lösenord', + 'current_password_invalid' => 'Nuvarande lösenord är fel.', + 'employee' => 'Anställd', + 'error_adding_updating' => 'Anställd lägg till eller uppdatering misslyckades.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Du kan inte radera demo admin-användaren.', + 'error_grant_change_disallowed' => 'Behörighetsändringar är inaktiverade i denna demo.', + 'error_password_change_disallowed' => 'Lösenordsändringar är inaktiverade i denna demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Du kan inte ändra demo admin-användaren.', + 'language' => 'Språk', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'Ny anställd', + 'none_selected' => 'Du har inte valt någon anställd att radera.', + 'one_or_multiple' => 'Anställda', + 'password' => 'Lösenord', + 'password_minlength' => 'Lösenordet måste vara minst 8 tecken i längd.', + 'password_must_match' => 'Lösenorden matchar ej.', + 'password_not_must_match' => 'Nuvarande lösenord och nytt lösenord måste vara unikt.', + 'password_required' => 'Lösenord krävs.', + 'permission_desc' => 'Markera rutorna nedan för att ge tillgång till moduler.', + 'permission_info' => 'Behörigheter', + 'repeat_password' => 'Lösenord igen', + 'subpermission_required' => 'Lägg till minst en behörighet för varje modul.', + 'successful_adding' => 'Tillägg av anställd lyckades.', + 'successful_change_password' => 'Lösenordsbyte lyckades.', + 'successful_deleted' => 'Du har tagit bort', + 'successful_updating' => 'Du har uppdaterat anställda', + 'system_language' => 'System Språk', + 'unsuccessful_change_password' => 'Lösenordsbyte misslyckades.', + 'update' => 'Uppdatera anställd', + 'username' => 'Användarnamn', + 'username_duplicate' => 'Användarnamnet för den anställda används redan. Vänligen välj ett annat.', + 'username_minlength' => 'Användarnamnet måste vara minst 5 tecken långt.', + 'username_required' => 'Användarnamnet är ett obligatoriskt fält.', ]; diff --git a/app/Language/sw-KE/Employees.php b/app/Language/sw-KE/Employees.php index 2ccb46fcd..7a54297ad 100644 --- a/app/Language/sw-KE/Employees.php +++ b/app/Language/sw-KE/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Taarifa za Msingi", - "cannot_be_deleted" => "Haiwezekani kufuta M/Wafanyakazi aliyechaguliwa, mmoja au zaidi ameshashughulikia mauzo au unajaribu kufuta akaunti yako.", - "change_employee" => "", - "change_password" => "Badilisha Nenosiri", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Una uhakika unataka kufuta mfanyakazi aliyechaguliwa?", - "confirm_restore" => "Una uhakika unataka kurejesha Mfanyakazi/Wafanyakazi aliyechaguliwa?", - "current_password" => "Nenosiri la Sasa", - "current_password_invalid" => "Nenosiri la sasa si sahihi.", - "employee" => "Mfanyakazi", - "error_adding_updating" => "Kuongeza au kusasisha mfanyakazi kumeshindikana.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Huwezi kufuta mtumiaji wa admin wa majaribio.", - "error_updating_demo_admin" => "Huwezi kubadilisha mtumiaji wa admin wa majaribio.", - "language" => "Lugha", - "login_info" => "Ingia", - "manager" => "", - "new" => "Mfanyakazi Mpya", - "none_selected" => "Hujachagua Mfanyakazi/Wafanyakazi yeyote wa kufuta.", - "one_or_multiple" => "Mfanyakazi/Wafanyakazi", - "password" => "Nenosiri", - "password_minlength" => "Nenosiri lazima liwe na angalau herufi 8.", - "password_must_match" => "Manenosiri hayafanani.", - "password_not_must_match" => "Nenosiri la sasa na jipya lazima liwe tofauti.", - "password_required" => "Nenosiri linahitajika.", - "permission_desc" => "Chagua visanduku hapa chini kutoa ruhusa kwa moduli.", - "permission_info" => "Ruhusa", - "repeat_password" => "Rudia Nenosiri", - "subpermission_required" => "Ongeza angalau ruhusa moja kwa kila moduli.", - "successful_adding" => "Umefanikiwa kuongeza mfanyakazi.", - "successful_change_password" => "Umefanikiwa kubadili nenosiri.", - "successful_deleted" => "Umefanikiwa kufuta", - "successful_updating" => "Umefanikiwa kusasisha mfanyakazi", - "system_language" => "Lugha ya Mfumo", - "unsuccessful_change_password" => "Imeshindikana kubadili Nenosiri.", - "update" => "Sasisha Mfanyakazi", - "username" => "Jina la Mtumiaji", - "username_duplicate" => "Jina la mtumiaji tayari linatumika. Tafadhali chagua lingine.", - "username_minlength" => "Jina la mtumiaji lazima liwe na angalau herufi 5.", - "username_required" => "Jina la mtumiaji ni lazima.", + 'administrator' => '', + 'basic_information' => 'Taarifa za Msingi', + 'cannot_be_deleted' => 'Haiwezekani kufuta M/Wafanyakazi aliyechaguliwa, mmoja au zaidi ameshashughulikia mauzo au unajaribu kufuta akaunti yako.', + 'change_employee' => '', + 'change_password' => 'Badilisha Nenosiri', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Una uhakika unataka kufuta mfanyakazi aliyechaguliwa?', + 'confirm_restore' => 'Una uhakika unataka kurejesha Mfanyakazi/Wafanyakazi aliyechaguliwa?', + 'current_password' => 'Nenosiri la Sasa', + 'current_password_invalid' => 'Nenosiri la sasa si sahihi.', + 'employee' => 'Mfanyakazi', + 'error_adding_updating' => 'Kuongeza au kusasisha mfanyakazi kumeshindikana.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Huwezi kufuta mtumiaji wa admin wa majaribio.', + 'error_grant_change_disallowed' => 'Mabadiliko ya ruhusa yamezimwa katika demo hii.', + 'error_password_change_disallowed' => 'Mabadiliko ya neno la siri yamezimwa katika demo hii.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Huwezi kubadilisha mtumiaji wa admin wa majaribio.', + 'language' => 'Lugha', + 'login_info' => 'Ingia', + 'manager' => '', + 'new' => 'Mfanyakazi Mpya', + 'none_selected' => 'Hujachagua Mfanyakazi/Wafanyakazi yeyote wa kufuta.', + 'one_or_multiple' => 'Mfanyakazi/Wafanyakazi', + 'password' => 'Nenosiri', + 'password_minlength' => 'Nenosiri lazima liwe na angalau herufi 8.', + 'password_must_match' => 'Manenosiri hayafanani.', + 'password_not_must_match' => 'Nenosiri la sasa na jipya lazima liwe tofauti.', + 'password_required' => 'Nenosiri linahitajika.', + 'permission_desc' => 'Chagua visanduku hapa chini kutoa ruhusa kwa moduli.', + 'permission_info' => 'Ruhusa', + 'repeat_password' => 'Rudia Nenosiri', + 'subpermission_required' => 'Ongeza angalau ruhusa moja kwa kila moduli.', + 'successful_adding' => 'Umefanikiwa kuongeza mfanyakazi.', + 'successful_change_password' => 'Umefanikiwa kubadili nenosiri.', + 'successful_deleted' => 'Umefanikiwa kufuta', + 'successful_updating' => 'Umefanikiwa kusasisha mfanyakazi', + 'system_language' => 'Lugha ya Mfumo', + 'unsuccessful_change_password' => 'Imeshindikana kubadili Nenosiri.', + 'update' => 'Sasisha Mfanyakazi', + 'username' => 'Jina la Mtumiaji', + 'username_duplicate' => 'Jina la mtumiaji tayari linatumika. Tafadhali chagua lingine.', + 'username_minlength' => 'Jina la mtumiaji lazima liwe na angalau herufi 5.', + 'username_required' => 'Jina la mtumiaji ni lazima.', ]; diff --git a/app/Language/sw-TZ/Employees.php b/app/Language/sw-TZ/Employees.php index 2ccb46fcd..7a54297ad 100644 --- a/app/Language/sw-TZ/Employees.php +++ b/app/Language/sw-TZ/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Taarifa za Msingi", - "cannot_be_deleted" => "Haiwezekani kufuta M/Wafanyakazi aliyechaguliwa, mmoja au zaidi ameshashughulikia mauzo au unajaribu kufuta akaunti yako.", - "change_employee" => "", - "change_password" => "Badilisha Nenosiri", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Una uhakika unataka kufuta mfanyakazi aliyechaguliwa?", - "confirm_restore" => "Una uhakika unataka kurejesha Mfanyakazi/Wafanyakazi aliyechaguliwa?", - "current_password" => "Nenosiri la Sasa", - "current_password_invalid" => "Nenosiri la sasa si sahihi.", - "employee" => "Mfanyakazi", - "error_adding_updating" => "Kuongeza au kusasisha mfanyakazi kumeshindikana.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Huwezi kufuta mtumiaji wa admin wa majaribio.", - "error_updating_demo_admin" => "Huwezi kubadilisha mtumiaji wa admin wa majaribio.", - "language" => "Lugha", - "login_info" => "Ingia", - "manager" => "", - "new" => "Mfanyakazi Mpya", - "none_selected" => "Hujachagua Mfanyakazi/Wafanyakazi yeyote wa kufuta.", - "one_or_multiple" => "Mfanyakazi/Wafanyakazi", - "password" => "Nenosiri", - "password_minlength" => "Nenosiri lazima liwe na angalau herufi 8.", - "password_must_match" => "Manenosiri hayafanani.", - "password_not_must_match" => "Nenosiri la sasa na jipya lazima liwe tofauti.", - "password_required" => "Nenosiri linahitajika.", - "permission_desc" => "Chagua visanduku hapa chini kutoa ruhusa kwa moduli.", - "permission_info" => "Ruhusa", - "repeat_password" => "Rudia Nenosiri", - "subpermission_required" => "Ongeza angalau ruhusa moja kwa kila moduli.", - "successful_adding" => "Umefanikiwa kuongeza mfanyakazi.", - "successful_change_password" => "Umefanikiwa kubadili nenosiri.", - "successful_deleted" => "Umefanikiwa kufuta", - "successful_updating" => "Umefanikiwa kusasisha mfanyakazi", - "system_language" => "Lugha ya Mfumo", - "unsuccessful_change_password" => "Imeshindikana kubadili Nenosiri.", - "update" => "Sasisha Mfanyakazi", - "username" => "Jina la Mtumiaji", - "username_duplicate" => "Jina la mtumiaji tayari linatumika. Tafadhali chagua lingine.", - "username_minlength" => "Jina la mtumiaji lazima liwe na angalau herufi 5.", - "username_required" => "Jina la mtumiaji ni lazima.", + 'administrator' => '', + 'basic_information' => 'Taarifa za Msingi', + 'cannot_be_deleted' => 'Haiwezekani kufuta M/Wafanyakazi aliyechaguliwa, mmoja au zaidi ameshashughulikia mauzo au unajaribu kufuta akaunti yako.', + 'change_employee' => '', + 'change_password' => 'Badilisha Nenosiri', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Una uhakika unataka kufuta mfanyakazi aliyechaguliwa?', + 'confirm_restore' => 'Una uhakika unataka kurejesha Mfanyakazi/Wafanyakazi aliyechaguliwa?', + 'current_password' => 'Nenosiri la Sasa', + 'current_password_invalid' => 'Nenosiri la sasa si sahihi.', + 'employee' => 'Mfanyakazi', + 'error_adding_updating' => 'Kuongeza au kusasisha mfanyakazi kumeshindikana.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Huwezi kufuta mtumiaji wa admin wa majaribio.', + 'error_grant_change_disallowed' => 'Mabadiliko ya ruhusa yamezimwa katika demo hii.', + 'error_password_change_disallowed' => 'Mabadiliko ya neno la siri yamezimwa katika demo hii.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Huwezi kubadilisha mtumiaji wa admin wa majaribio.', + 'language' => 'Lugha', + 'login_info' => 'Ingia', + 'manager' => '', + 'new' => 'Mfanyakazi Mpya', + 'none_selected' => 'Hujachagua Mfanyakazi/Wafanyakazi yeyote wa kufuta.', + 'one_or_multiple' => 'Mfanyakazi/Wafanyakazi', + 'password' => 'Nenosiri', + 'password_minlength' => 'Nenosiri lazima liwe na angalau herufi 8.', + 'password_must_match' => 'Manenosiri hayafanani.', + 'password_not_must_match' => 'Nenosiri la sasa na jipya lazima liwe tofauti.', + 'password_required' => 'Nenosiri linahitajika.', + 'permission_desc' => 'Chagua visanduku hapa chini kutoa ruhusa kwa moduli.', + 'permission_info' => 'Ruhusa', + 'repeat_password' => 'Rudia Nenosiri', + 'subpermission_required' => 'Ongeza angalau ruhusa moja kwa kila moduli.', + 'successful_adding' => 'Umefanikiwa kuongeza mfanyakazi.', + 'successful_change_password' => 'Umefanikiwa kubadili nenosiri.', + 'successful_deleted' => 'Umefanikiwa kufuta', + 'successful_updating' => 'Umefanikiwa kusasisha mfanyakazi', + 'system_language' => 'Lugha ya Mfumo', + 'unsuccessful_change_password' => 'Imeshindikana kubadili Nenosiri.', + 'update' => 'Sasisha Mfanyakazi', + 'username' => 'Jina la Mtumiaji', + 'username_duplicate' => 'Jina la mtumiaji tayari linatumika. Tafadhali chagua lingine.', + 'username_minlength' => 'Jina la mtumiaji lazima liwe na angalau herufi 5.', + 'username_required' => 'Jina la mtumiaji ni lazima.', ]; diff --git a/app/Language/ta/Employees.php b/app/Language/ta/Employees.php index 59828d128..7b0c0abbb 100644 --- a/app/Language/ta/Employees.php +++ b/app/Language/ta/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Information", - "cannot_be_deleted" => "Unable to delete selected employee(s), one or more of the has processed sales or you are trying to delete your account.", - "change_employee" => "", - "change_password" => "Change Password", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Are you sure you want to delete the selected employee(s)?", - "confirm_restore" => "Are you sure you want to restore selected employee(s)?", - "current_password" => "Current Password", - "current_password_invalid" => "Current Password is invalid.", - "employee" => "Employee", - "error_adding_updating" => "Employee add or update failed.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "You can not delete the demo admin user.", - "error_updating_demo_admin" => "You can not change the demo admin user.", - "language" => "Language", - "login_info" => "Login", - "manager" => "", - "new" => "New Employee", - "none_selected" => "You have not selected any employee(s) to delete.", - "one_or_multiple" => "employee(s)", - "password" => "Password", - "password_minlength" => "Password must be at least 8 characters in length.", - "password_must_match" => "Passwords do not match.", - "password_not_must_match" => "Current password and new password must be unique.", - "password_required" => "Password is required.", - "permission_desc" => "Check the boxes below to grant access to modules.", - "permission_info" => "Permissions", - "repeat_password" => "Password Again", - "subpermission_required" => "Add at least one grant for each module.", - "successful_adding" => "Employee add successful.", - "successful_change_password" => "Password change successful.", - "successful_deleted" => "You have successfully deleted", - "successful_updating" => "You have successfully updated employee", - "system_language" => "System Language", - "unsuccessful_change_password" => "Password change failed.", - "update" => "Update Employee", - "username" => "Username", - "username_duplicate" => "", - "username_minlength" => "Username must be at least 5 characters in length.", - "username_required" => "Username is a required field.", + 'administrator' => '', + 'basic_information' => 'Information', + 'cannot_be_deleted' => 'தேர்ந்தெடுக்கப்பட்ட ஊழியர்(களை) நீக்க முடியவில்லை, ஒன்று அல்லது அதற்கு மேற்பட்டவை விற்பனையை செயலாக்கியுள்ளன அல்லது நீங்கள் உங்கள் கணக்கை நீக்க முயற்சிக்கிறீர்கள்.', + 'change_employee' => '', + 'change_password' => 'Change Password', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Are you sure you want to delete the selected employee(s)?', + 'confirm_restore' => 'Are you sure you want to restore selected employee(s)?', + 'current_password' => 'Current Password', + 'current_password_invalid' => 'Current Password is invalid.', + 'employee' => 'Employee', + 'error_adding_updating' => 'Employee add or update failed.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'You can not delete the demo admin user.', + 'error_grant_change_disallowed' => 'அனுமதி மாற்றங்கள் இந்த டெமோவில் முடக்கப்பட்டுள்ளன.', + 'error_password_change_disallowed' => 'கடவுச்சொல் மாற்றங்கள் இந்த டெமோவில் முடக்கப்பட்டுள்ளன.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'You can not change the demo admin user.', + 'language' => 'Language', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'New Employee', + 'none_selected' => 'You have not selected any employee(s) to delete.', + 'one_or_multiple' => 'employee(s)', + 'password' => 'Password', + 'password_minlength' => 'Password must be at least 8 characters in length.', + 'password_must_match' => 'Passwords do not match.', + 'password_not_must_match' => 'Current password and new password must be unique.', + 'password_required' => 'Password is required.', + 'permission_desc' => 'Check the boxes below to grant access to modules.', + 'permission_info' => 'Permissions', + 'repeat_password' => 'Password Again', + 'subpermission_required' => 'Add at least one grant for each module.', + 'successful_adding' => 'Employee add successful.', + 'successful_change_password' => 'Password change successful.', + 'successful_deleted' => 'You have successfully deleted', + 'successful_updating' => 'You have successfully updated employee', + 'system_language' => 'System Language', + 'unsuccessful_change_password' => 'Password change failed.', + 'update' => 'Update Employee', + 'username' => 'Username', + 'username_duplicate' => '', + 'username_minlength' => 'Username must be at least 5 characters in length.', + 'username_required' => 'Username is a required field.', ]; diff --git a/app/Language/th/Employees.php b/app/Language/th/Employees.php index 6ff5c027a..462d099b6 100644 --- a/app/Language/th/Employees.php +++ b/app/Language/th/Employees.php @@ -1,47 +1,49 @@ "", - 'basic_information' => "ข้อมูลพื้นฐานของพนักงาน", - 'cannot_be_deleted' => "ไม่สามารถลบพนักงานที่เลือกไว้ได้ เนื่องจากมีการทำรายการขายหรือคุณกำลังพยายามที่จะลบบัญชีของคุณเอง", - 'change_employee' => "", - 'change_password' => "เปลี่ยนรหัสผ่าน", - 'clerk' => "", - 'commission' => "", - 'confirm_delete' => "คุณยืนยันการลบข้อมูลพนักงานที่เลือกไว้?", - 'confirm_restore' => "คุณแน่ใจหรือไม่ว่าต้องการกู้คืนพนักงานที่เลือกไว้?", - 'current_password' => "รหัสผ่านปัจจุบัน", - 'current_password_invalid' => "รหัสผ่านปัจจุบันไม่ถูกต้อง", - 'employee' => "พนักงาน", - 'error_adding_updating' => "การเพิ่มหรือปรับปรุงข้อมูลพนักงานผิดพลาด", - 'error_deleting_admin' => "คุณไม่สามารถลบบัญชีแอดมินได้", - 'error_updating_admin' => "คุณไม่สามารถแก้ไขบัญชีแอดมินได้", - 'error_deleting_demo_admin' => "คุณไม่สามารถลบผู้ใช้งานสำหรับการเดโม้ได้", - 'error_updating_demo_admin' => "คุณไม่สามารถทำการเปลี่ยนข้อมูลผู้ใช้งานเดโม้ได้", - 'language' => "ภาษา", - 'login_info' => "รหัสเข้าระบบ", - 'manager' => "", - 'new' => "เพิ่มพนักงาน", - 'none_selected' => "โปรดเลือกพนักงานที่จะลบ", - 'one_or_multiple' => "พนักงาน", - 'password' => "รหัสผ่าน", - 'password_minlength' => "รหัสผ่านต้องยาวอย่างน้อย 8 อักษร", - 'password_must_match' => "รหัสผ่านไม่ตรงกัน", - 'password_not_must_match' => "รหัสผ่านปัจจุบันและรหัสผ่านใหม่จะต้องไม่ซ้ำกัน", - 'password_required' => "ต้องระบุรหัสผ่าน", - 'permission_desc' => "ทำเครื่องหมายในช่องด้านล่างเพื่อให้สิทธิ์การเข้าถึงโมดูลต่างๆ", - 'permission_info' => "สิทธิ์", - 'repeat_password' => "ระบุรหัสผ่านอีกครั้ง", - 'subpermission_required' => "เพิ่มการอนุญาตอย่างน้อยหนึ่งรายการสำหรับแต่ละโมดูล", - 'successful_adding' => "เพิ่มข้อมูลพนักงานเรียบร้อยแล้ว", - 'successful_change_password' => "ทำการเปลี่ยนรหัสผ่านเรียบร้อยแล้ว", - 'successful_deleted' => "ลบข้อมูลสำเร็จ", - 'successful_updating' => "ปรับปรุงข้อมูลพนักงานเรียบร้อยแล้ว", - 'system_language' => "ภาษาของระบบ", - 'unsuccessful_change_password' => "เปลี่ยนรหัสผ่านไม่สำเร็จ", - 'update' => "แก้ไขข้อมูลพนักงาน", - 'username' => "ชื่อผู้ใช้งาน", - 'username_duplicate' => "ชื่อผู้ใช้งานพนักงานถูกใช้งานแล้ว กรุณาเลือกใช้งานชื่ออื่น", - 'username_minlength' => "ชื่อผู้ใช้งานต้องยาวอย่างน้อย 5 อักษร", - 'username_required' => "จำเป็นต้องระบุชื่อผู้ใช้งาน", + 'administrator' => '', + 'basic_information' => 'ข้อมูลพื้นฐานของพนักงาน', + 'cannot_be_deleted' => 'ไม่สามารถลบพนักงานที่เลือกไว้ได้ เนื่องจากมีการทำรายการขายหรือคุณกำลังพยายามที่จะลบบัญชีของคุณเอง', + 'change_employee' => '', + 'change_password' => 'เปลี่ยนรหัสผ่าน', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'คุณยืนยันการลบข้อมูลพนักงานที่เลือกไว้?', + 'confirm_restore' => 'คุณแน่ใจหรือไม่ว่าต้องการกู้คืนพนักงานที่เลือกไว้?', + 'current_password' => 'รหัสผ่านปัจจุบัน', + 'current_password_invalid' => 'รหัสผ่านปัจจุบันไม่ถูกต้อง', + 'employee' => 'พนักงาน', + 'error_adding_updating' => 'การเพิ่มหรือปรับปรุงข้อมูลพนักงานผิดพลาด', + 'error_deleting_admin' => 'คุณไม่สามารถลบบัญชีแอดมินได้', + 'error_deleting_demo_admin' => 'คุณไม่สามารถลบผู้ใช้งานสำหรับการเดโม้ได้', + 'error_grant_change_disallowed' => 'การเปลี่ยนแปลงการอนุญาตถูกปิดใช้งานในการสาธิตนี้', + 'error_password_change_disallowed' => 'การเปลี่ยนแปลงรหัสผ่านถูกปิดใช้งานในการสาธิตนี้', + 'error_updating_admin' => 'คุณไม่สามารถแก้ไขบัญชีแอดมินได้', + 'error_updating_demo_admin' => 'คุณไม่สามารถทำการเปลี่ยนข้อมูลผู้ใช้งานเดโม้ได้', + 'language' => 'ภาษา', + 'login_info' => 'รหัสเข้าระบบ', + 'manager' => '', + 'new' => 'เพิ่มพนักงาน', + 'none_selected' => 'โปรดเลือกพนักงานที่จะลบ', + 'one_or_multiple' => 'พนักงาน', + 'password' => 'รหัสผ่าน', + 'password_minlength' => 'รหัสผ่านต้องยาวอย่างน้อย 8 อักษร', + 'password_must_match' => 'รหัสผ่านไม่ตรงกัน', + 'password_not_must_match' => 'รหัสผ่านปัจจุบันและรหัสผ่านใหม่จะต้องไม่ซ้ำกัน', + 'password_required' => 'ต้องระบุรหัสผ่าน', + 'permission_desc' => 'ทำเครื่องหมายในช่องด้านล่างเพื่อให้สิทธิ์การเข้าถึงโมดูลต่างๆ', + 'permission_info' => 'สิทธิ์', + 'repeat_password' => 'ระบุรหัสผ่านอีกครั้ง', + 'subpermission_required' => 'เพิ่มการอนุญาตอย่างน้อยหนึ่งรายการสำหรับแต่ละโมดูล', + 'successful_adding' => 'เพิ่มข้อมูลพนักงานเรียบร้อยแล้ว', + 'successful_change_password' => 'ทำการเปลี่ยนรหัสผ่านเรียบร้อยแล้ว', + 'successful_deleted' => 'ลบข้อมูลสำเร็จ', + 'successful_updating' => 'ปรับปรุงข้อมูลพนักงานเรียบร้อยแล้ว', + 'system_language' => 'ภาษาของระบบ', + 'unsuccessful_change_password' => 'เปลี่ยนรหัสผ่านไม่สำเร็จ', + 'update' => 'แก้ไขข้อมูลพนักงาน', + 'username' => 'ชื่อผู้ใช้งาน', + 'username_duplicate' => 'ชื่อผู้ใช้งานพนักงานถูกใช้งานแล้ว กรุณาเลือกใช้งานชื่ออื่น', + 'username_minlength' => 'ชื่อผู้ใช้งานต้องยาวอย่างน้อย 5 อักษร', + 'username_required' => 'จำเป็นต้องระบุชื่อผู้ใช้งาน', ]; diff --git a/app/Language/tl/Employees.php b/app/Language/tl/Employees.php index eb51dbe8f..34b3971b7 100644 --- a/app/Language/tl/Employees.php +++ b/app/Language/tl/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Information", - "cannot_be_deleted" => "Unable to delete selected employee(s), one or more of the has processed sales or you are trying to delete your account.", - "change_employee" => "", - "change_password" => "Change Password", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Are you sure you want to delete the selected Supplier(s)?", - "confirm_restore" => "Are you sure you want to restore selected entry(s)?", - "current_password" => "Current Password", - "current_password_invalid" => "Current Password is invalid.", - "employee" => "Employee", - "error_adding_updating" => "Employee add or update failed.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "You can not change the demo admin user.", - "error_updating_demo_admin" => "You can not delete the demo admin user.", - "language" => "Language", - "login_info" => "Login", - "manager" => "", - "new" => "New Employee", - "none_selected" => "You have not selected any employee(s) to delete.", - "one_or_multiple" => "employee(s)", - "password" => "Password", - "password_minlength" => "Username must be at least 5 characters in length.", - "password_must_match" => "Passwords do not match.", - "password_not_must_match" => "Current password and new password must be unique.", - "password_required" => "Password is required.", - "permission_desc" => "Check the boxes below to grant access to modules.", - "permission_info" => "Permissions", - "repeat_password" => "Password Again", - "subpermission_required" => "Add at least one grant for each module.", - "successful_adding" => "Employee add successful.", - "successful_change_password" => "Password change successful.", - "successful_deleted" => "You have successfully deleted", - "successful_updating" => "You have successfully added customer", - "system_language" => "System Language", - "unsuccessful_change_password" => "Password change failed.", - "update" => "Update Employee", - "username" => "Username", - "username_duplicate" => "", - "username_minlength" => "Password must be at least 8 characters in length.", - "username_required" => "Username is a required field.", + 'administrator' => '', + 'basic_information' => 'Information', + 'cannot_be_deleted' => 'Hindi maaaring tanggalin ang mga napiling empleyado, isa o higit pa sa kanila ang may naiprosesong benta o sinusubukan mong tanggalin ang iyong sariling account.', + 'change_employee' => '', + 'change_password' => 'Change Password', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Are you sure you want to delete the selected Supplier(s)?', + 'confirm_restore' => 'Are you sure you want to restore selected entry(s)?', + 'current_password' => 'Current Password', + 'current_password_invalid' => 'Current Password is invalid.', + 'employee' => 'Employee', + 'error_adding_updating' => 'Employee add or update failed.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'You can not delete the demo admin user.', + 'error_grant_change_disallowed' => 'Ang mga pagbabago sa pahintulot ay hindi pinagana sa demo na ito.', + 'error_password_change_disallowed' => 'Ang mga pagbabago ng password ay hindi pinagana sa demo na ito.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'You can not change the demo admin user.', + 'language' => 'Language', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'New Employee', + 'none_selected' => 'You have not selected any employee(s) to delete.', + 'one_or_multiple' => 'employee(s)', + 'password' => 'Password', + 'password_minlength' => 'Username must be at least 5 characters in length.', + 'password_must_match' => 'Passwords do not match.', + 'password_not_must_match' => 'Current password and new password must be unique.', + 'password_required' => 'Password is required.', + 'permission_desc' => 'Check the boxes below to grant access to modules.', + 'permission_info' => 'Permissions', + 'repeat_password' => 'Password Again', + 'subpermission_required' => 'Add at least one grant for each module.', + 'successful_adding' => 'Employee add successful.', + 'successful_change_password' => 'Password change successful.', + 'successful_deleted' => 'You have successfully deleted', + 'successful_updating' => 'You have successfully added customer', + 'system_language' => 'System Language', + 'unsuccessful_change_password' => 'Password change failed.', + 'update' => 'Update Employee', + 'username' => 'Username', + 'username_duplicate' => '', + 'username_minlength' => 'Password must be at least 8 characters in length.', + 'username_required' => 'Username is a required field.', ]; diff --git a/app/Language/tr/Employees.php b/app/Language/tr/Employees.php index 9b9451f9e..5aefab3da 100644 --- a/app/Language/tr/Employees.php +++ b/app/Language/tr/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Personel Temel Bilgileri", - "cannot_be_deleted" => "Seçili personel silinemedi, personellerin satışları var yada kendinizi silmeye çalışıyorsunuz.", - "change_employee" => "", - "change_password" => "Parolayı Değiştir", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Seçili personelleri silmek istediğinize emin misiniz?", - "confirm_restore" => "Seçili çalışanları geri yüklemek istediğinizden emin misiniz?", - "current_password" => "Var Olan Parola", - "current_password_invalid" => "Var Olan Parola geçersiz.", - "employee" => "Personel", - "error_adding_updating" => "Personel ekleme/güncelleme hatası.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Admin güncellenemez.", - "error_updating_demo_admin" => "Admin silinemez.", - "language" => "Dil", - "login_info" => "Personel Giriş Bilgileri", - "manager" => "", - "new" => "Yeni Personel", - "none_selected" => "Silmek için çalışan seçmediniz.", - "one_or_multiple" => "personel", - "password" => "Parola", - "password_minlength" => "Parola en az 8 karakter olmalıdır.", - "password_must_match" => "Parolalar uyuşmuyor.", - "password_not_must_match" => "Geçerli parola ve yeni parola benzersiz olmalıdır.", - "password_required" => "Parola zorunludur.", - "permission_desc" => "Modül yetkisi vermek için kutuları işaretleyin.", - "permission_info" => "Personel İzin ve Yetkileri", - "repeat_password" => "Parola Yeniden", - "subpermission_required" => "Her bir birim için en az bir izin ekle.", - "successful_adding" => "Personel eklendi.", - "successful_change_password" => "Parola değişikliği başarılı.", - "successful_deleted" => "Silme başarılı", - "successful_updating" => "Personel güncellendi", - "system_language" => "Sistem dili", - "unsuccessful_change_password" => "Parola değişikliği başarısız oldu.", - "update" => "Personeli Güncelle", - "username" => "Kullandı Adı", - "username_duplicate" => "", - "username_minlength" => "Kullanıcı Adı en az 5 karakter olmalıdır.", - "username_required" => "Kullanıcı Adı zorunlu alandır.", + 'administrator' => '', + 'basic_information' => 'Personel Temel Bilgileri', + 'cannot_be_deleted' => 'Seçili personel silinemedi, personellerin satışları var ya da kendinizi silmeye çalışıyorsunuz.', + 'change_employee' => '', + 'change_password' => 'Parolayı Değiştir', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Seçili personelleri silmek istediğinize emin misiniz?', + 'confirm_restore' => 'Seçili çalışanları geri yüklemek istediğinizden emin misiniz?', + 'current_password' => 'Var Olan Parola', + 'current_password_invalid' => 'Var Olan Parola geçersiz.', + 'employee' => 'Personel', + 'error_adding_updating' => 'Personel ekleme/güncelleme hatası.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Admin silinemez.', + 'error_grant_change_disallowed' => 'İzin değişiklikleri bu demoda devre dışı bırakılmıştır.', + 'error_password_change_disallowed' => 'Şifre değişiklikleri bu demoda devre dışı bırakılmıştır.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Admin güncellenemez.', + 'language' => 'Dil', + 'login_info' => 'Personel Giriş Bilgileri', + 'manager' => '', + 'new' => 'Yeni Personel', + 'none_selected' => 'Silmek için çalışan seçmediniz.', + 'one_or_multiple' => 'personel', + 'password' => 'Parola', + 'password_minlength' => 'Parola en az 8 karakter olmalıdır.', + 'password_must_match' => 'Parolalar uyuşmuyor.', + 'password_not_must_match' => 'Geçerli parola ve yeni parola benzersiz olmalıdır.', + 'password_required' => 'Parola zorunludur.', + 'permission_desc' => 'Modül yetkisi vermek için kutuları işaretleyin.', + 'permission_info' => 'Personel İzin ve Yetkileri', + 'repeat_password' => 'Parola Yeniden', + 'subpermission_required' => 'Her bir birim için en az bir izin ekle.', + 'successful_adding' => 'Personel eklendi.', + 'successful_change_password' => 'Parola değişikliği başarılı.', + 'successful_deleted' => 'Silme başarılı', + 'successful_updating' => 'Personel güncellendi', + 'system_language' => 'Sistem dili', + 'unsuccessful_change_password' => 'Parola değişikliği başarısız oldu.', + 'update' => 'Personeli Güncelle', + 'username' => 'Kullanıcı Adı', + 'username_duplicate' => '', + 'username_minlength' => 'Kullanıcı Adı en az 5 karakter olmalıdır.', + 'username_required' => 'Kullanıcı Adı zorunlu alandır.', ]; diff --git a/app/Language/uk/Employees.php b/app/Language/uk/Employees.php index 7ea5b73ad..94b04ba48 100644 --- a/app/Language/uk/Employees.php +++ b/app/Language/uk/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Інформація про працівників", - "cannot_be_deleted" => "Неможливо видалити вибраних працівника(ів), які вже здійснили продажі або ви намагаєтесь видалити свій обліковий запис.", - "change_employee" => "", - "change_password" => "Змінити пароль", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Ви впевнені, що хочете видалити обраного(их) працівника(ів)?", - "confirm_restore" => "Ви впевнені, що хочете відновити обраного(их) працівника(ів)?", - "current_password" => "Поточний пароль", - "current_password_invalid" => "Поточний пароль невірний.", - "employee" => "Працівник", - "error_adding_updating" => "Помилка при додаванні/оновлені працівника.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Ви не можете видалити аккаунт користувача.", - "error_updating_demo_admin" => "Ви не можете змінити аккаунт користувача.", - "language" => "Мова", - "login_info" => "Вхід", - "manager" => "", - "new" => "Новий працівник", - "none_selected" => "Ви не вибрали працівника(ів) для видалення.", - "one_or_multiple" => "Працівник(и)", - "password" => "Пароль", - "password_minlength" => "Пароль повинен містити не менше 8 символів.", - "password_must_match" => "Паролі не співпадають.", - "password_not_must_match" => "Поточний пароль та новий пароль не повинні співпадати.", - "password_required" => "Пароль - обов'язкове поле.", - "permission_desc" => "Поставте прапорці нижче, щоб надати доступ до модулів.", - "permission_info" => "Дозволи", - "repeat_password" => "Повторіть пароль", - "subpermission_required" => "Додайте принаймні один грант для кожного модуля.", - "successful_adding" => "Ви успішно додали працівника.", - "successful_change_password" => "Пароль успішно змінено.", - "successful_deleted" => "Працівника успішно видалено", - "successful_updating" => "Працівника успішно оновлено", - "system_language" => "Мова системи", - "unsuccessful_change_password" => "Не вдалось змінити пароль.", - "update" => "Оновити працівника", - "username" => "Ім'я користувача", - "username_duplicate" => "", - "username_minlength" => "Ім'я користувача повинно бути не менше 5 символів.", - "username_required" => "Ім'я користувача - обов'язкове поле.", + 'administrator' => '', + 'basic_information' => 'Інформація про працівників', + 'cannot_be_deleted' => 'Неможливо видалити вибраних працівника(ів), які вже здійснили продажі або ви намагаєтесь видалити свій обліковий запис.', + 'change_employee' => '', + 'change_password' => 'Змінити пароль', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Ви впевнені, що хочете видалити обраного(их) працівника(ів)?', + 'confirm_restore' => 'Ви впевнені, що хочете відновити обраного(их) працівника(ів)?', + 'current_password' => 'Поточний пароль', + 'current_password_invalid' => 'Поточний пароль невірний.', + 'employee' => 'Працівник', + 'error_adding_updating' => 'Помилка при додаванні/оновлені працівника.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Ви не можете видалити аккаунт користувача.', + 'error_grant_change_disallowed' => 'Зміни дозволів заборонені в цій демонстрації.', + 'error_password_change_disallowed' => 'Зміни пароля заборонені в цій демонстрації.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Ви не можете змінити аккаунт користувача.', + 'language' => 'Мова', + 'login_info' => 'Вхід', + 'manager' => '', + 'new' => 'Новий працівник', + 'none_selected' => 'Ви не вибрали працівника(ів) для видалення.', + 'one_or_multiple' => 'Працівник(и)', + 'password' => 'Пароль', + 'password_minlength' => 'Пароль повинен містити не менше 8 символів.', + 'password_must_match' => 'Паролі не співпадають.', + 'password_not_must_match' => 'Поточний пароль та новий пароль не повинні співпадати.', + 'password_required' => 'Пароль - обов\'язкове поле.', + 'permission_desc' => 'Поставте прапорці нижче, щоб надати доступ до модулів.', + 'permission_info' => 'Дозволи', + 'repeat_password' => 'Повторіть пароль', + 'subpermission_required' => 'Додайте принаймні один грант для кожного модуля.', + 'successful_adding' => 'Ви успішно додали працівника.', + 'successful_change_password' => 'Пароль успішно змінено.', + 'successful_deleted' => 'Працівника успішно видалено', + 'successful_updating' => 'Працівника успішно оновлено', + 'system_language' => 'Мова системи', + 'unsuccessful_change_password' => 'Не вдалось змінити пароль.', + 'update' => 'Оновити працівника', + 'username' => 'Ім\'я користувача', + 'username_duplicate' => '', + 'username_minlength' => 'Ім\'я користувача повинно бути не менше 5 символів.', + 'username_required' => 'Ім\'я користувача - обов\'язкове поле.', ]; diff --git a/app/Language/ur/Employees.php b/app/Language/ur/Employees.php index 34a418062..302fc824b 100644 --- a/app/Language/ur/Employees.php +++ b/app/Language/ur/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "", - "cannot_be_deleted" => "", - "change_employee" => "", - "change_password" => "", - "clerk" => "", - "commission" => "", - "confirm_delete" => "", - "confirm_restore" => "", - "current_password" => "", - "current_password_invalid" => "", - "employee" => "", - "error_adding_updating" => "", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "", - "error_updating_demo_admin" => "", - "language" => "", - "login_info" => "", - "manager" => "", - "new" => "", - "none_selected" => "", - "one_or_multiple" => "", - "password" => "", - "password_minlength" => "", - "password_must_match" => "", - "password_not_must_match" => "", - "password_required" => "", - "permission_desc" => "", - "permission_info" => "", - "repeat_password" => "", - "subpermission_required" => "", - "successful_adding" => "", - "successful_change_password" => "", - "successful_deleted" => "", - "successful_updating" => "", - "system_language" => "", - "unsuccessful_change_password" => "", - "update" => "", - "username" => "", - "username_duplicate" => "", - "username_minlength" => "", - "username_required" => "", + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'اس ڈیمو میں اجازت کی تبدیلیاں غیر فعال ہیں۔', + 'error_password_change_disallowed' => 'اس ڈیمو میں پاس ورڈ کی تبدیلیاں غیر فعال ہیں۔', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/vi/Employees.php b/app/Language/vi/Employees.php index d262690e2..9b15c27cf 100644 --- a/app/Language/vi/Employees.php +++ b/app/Language/vi/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "Thông tin", - "cannot_be_deleted" => "Không thể xóa các nhân viên đã chọn, một hay nhiều nhân viên đã xử lý bán hàng hoặc bạn đang cố xóa tài khoản của mình.", - "change_employee" => "", - "change_password" => "Đổi mật khẩu", - "clerk" => "", - "commission" => "", - "confirm_delete" => "Bạn chắc chắn muốn xóa các nhân viên được chọn không?", - "confirm_restore" => "Bạn chắc chắn muốn hoàn lại các nhân viên được chọn không?", - "current_password" => "Mật khẩu hiện tại", - "current_password_invalid" => "Mật khẩu hiện tại không hợp lệ.", - "employee" => "Nhân viên", - "error_adding_updating" => "Gặp lỗi khi cập nhật hay thêm nhân viên.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "Bạn không thể xóa người dùng demo admin.", - "error_updating_demo_admin" => "Bạn không thể thay đổi người dùng demo admin.", - "language" => "Ngôn ngữ", - "login_info" => "Đăng nhập", - "manager" => "", - "new" => "Nhân viên mới", - "none_selected" => "Bạn chưa chọn bất kỳ một nhân viên nào để mà xóa.", - "one_or_multiple" => "nhân viên", - "password" => "Mật khẩu", - "password_minlength" => "Mật khẩu phải dài ít nhất 8 ký tự.", - "password_must_match" => "Mật khẩu không khớp nhau.", - "password_not_must_match" => "Mật khẩu hiện tại và mới phải khác nhau.", - "password_required" => "Mật khẩu là bắt buộc.", - "permission_desc" => "Các hộp dấu kiểm phía dưới cấp quyền truy cập cho các mô đun.", - "permission_info" => "Quyền hạn", - "repeat_password" => "Gõ lại mật khẩu lần nữa", - "subpermission_required" => "Thêm ít nhất một quyền cho từng mô đun.", - "successful_adding" => "Đã thêm thành công nhân viên.", - "successful_change_password" => "Đổi mật khẩu thành công.", - "successful_deleted" => "Bạn đã xóa thành công", - "successful_updating" => "Bạn đã cập nhật nhân viên thành công", - "system_language" => "Ngôn ngữ hệ thống", - "unsuccessful_change_password" => "Gặp lỗi khi thay đổi mật khẩu.", - "update" => "Cập nhật Nhân viên", - "username" => "Tài khoản", - "username_duplicate" => "", - "username_minlength" => "Tài khoản phải dài ít nhất là 5 ký tự.", - "username_required" => "Trường tài khoản là bắt buộc.", + 'administrator' => '', + 'basic_information' => 'Thông tin', + 'cannot_be_deleted' => 'Không thể xóa các nhân viên đã chọn, một hay nhiều nhân viên đã xử lý bán hàng hoặc bạn đang cố xóa tài khoản của mình.', + 'change_employee' => '', + 'change_password' => 'Đổi mật khẩu', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Bạn chắc chắn muốn xóa các nhân viên được chọn không?', + 'confirm_restore' => 'Bạn chắc chắn muốn hoàn lại các nhân viên được chọn không?', + 'current_password' => 'Mật khẩu hiện tại', + 'current_password_invalid' => 'Mật khẩu hiện tại không hợp lệ.', + 'employee' => 'Nhân viên', + 'error_adding_updating' => 'Gặp lỗi khi cập nhật hay thêm nhân viên.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Bạn không thể xóa người dùng demo admin.', + 'error_grant_change_disallowed' => 'Thay đổi quyền bị vô hiệu hóa trong bản demo này.', + 'error_password_change_disallowed' => 'Thay đổi mật khẩu bị vô hiệu hóa trong bản demo này.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Bạn không thể thay đổi người dùng demo admin.', + 'language' => 'Ngôn ngữ', + 'login_info' => 'Đăng nhập', + 'manager' => '', + 'new' => 'Nhân viên mới', + 'none_selected' => 'Bạn chưa chọn bất kỳ một nhân viên nào để mà xóa.', + 'one_or_multiple' => 'nhân viên', + 'password' => 'Mật khẩu', + 'password_minlength' => 'Mật khẩu phải dài ít nhất 8 ký tự.', + 'password_must_match' => 'Mật khẩu không khớp nhau.', + 'password_not_must_match' => 'Mật khẩu hiện tại và mới phải khác nhau.', + 'password_required' => 'Mật khẩu là bắt buộc.', + 'permission_desc' => 'Các hộp dấu kiểm phía dưới cấp quyền truy cập cho các mô đun.', + 'permission_info' => 'Quyền hạn', + 'repeat_password' => 'Gõ lại mật khẩu lần nữa', + 'subpermission_required' => 'Thêm ít nhất một quyền cho từng mô đun.', + 'successful_adding' => 'Đã thêm thành công nhân viên.', + 'successful_change_password' => 'Đổi mật khẩu thành công.', + 'successful_deleted' => 'Bạn đã xóa thành công', + 'successful_updating' => 'Bạn đã cập nhật nhân viên thành công', + 'system_language' => 'Ngôn ngữ hệ thống', + 'unsuccessful_change_password' => 'Gặp lỗi khi thay đổi mật khẩu.', + 'update' => 'Cập nhật Nhân viên', + 'username' => 'Tài khoản', + 'username_duplicate' => '', + 'username_minlength' => 'Tài khoản phải dài ít nhất là 5 ký tự.', + 'username_required' => 'Trường tài khoản là bắt buộc.', ]; diff --git a/app/Language/zh-Hans/Employees.php b/app/Language/zh-Hans/Employees.php index 9f9e786b4..bfb5af255 100644 --- a/app/Language/zh-Hans/Employees.php +++ b/app/Language/zh-Hans/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "員工基本資料", - "cannot_be_deleted" => "無法刪除選定的僱員,選定的員工中已有銷售紀錄或你正在試圖刪除自己 :)", - "change_employee" => "", - "change_password" => "", - "clerk" => "", - "commission" => "", - "confirm_delete" => "你確定要刪除所選的員工嗎?", - "confirm_restore" => "", - "current_password" => "", - "current_password_invalid" => "", - "employee" => "員工", - "error_adding_updating" => "添加/更新員工錯誤", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "您不能刪除admin用戶", - "error_updating_demo_admin" => "您不能更改admin用戶", - "language" => "", - "login_info" => "員工登錄資料", - "manager" => "", - "new" => "新員工", - "none_selected" => "您還沒有選擇任何員工進行刪除", - "one_or_multiple" => "員工", - "password" => "密碼", - "password_minlength" => "密碼需為八個字元以上", - "password_must_match" => "密碼與確認密碼不一致", - "password_not_must_match" => "", - "password_required" => "請輸入密碼", - "permission_desc" => "勾選後授予使用該模組功能", - "permission_info" => "員工權限", - "repeat_password" => "確認密碼", - "subpermission_required" => "Add at least one grant for each module", - "successful_adding" => "新增員工資料成功", - "successful_change_password" => "", - "successful_deleted" => "成功刪除員工資料", - "successful_updating" => "成功更新員工資料", - "system_language" => "", - "unsuccessful_change_password" => "", - "update" => "更新員工", - "username" => "帳號", - "username_duplicate" => "", - "username_minlength" => "帳號必需為五個字元以上", - "username_required" => "帳號為必填", + 'administrator' => '', + 'basic_information' => '員工基本資料', + 'cannot_be_deleted' => '無法刪除選定的僱員,選定的員工中已有銷售紀錄或你正在試圖刪除自己 :)', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '你確定要刪除所選的員工嗎?', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '員工', + 'error_adding_updating' => '添加/更新員工錯誤', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '您不能刪除admin用戶', + 'error_grant_change_disallowed' => '演示中禁用了权限更改。', + 'error_password_change_disallowed' => '演示中禁用了密码更改。', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '您不能更改admin用戶', + 'language' => '', + 'login_info' => '員工登錄資料', + 'manager' => '', + 'new' => '新員工', + 'none_selected' => '您還沒有選擇任何員工進行刪除', + 'one_or_multiple' => '員工', + 'password' => '密碼', + 'password_minlength' => '密碼需為八個字元以上', + 'password_must_match' => '密碼與確認密碼不一致', + 'password_not_must_match' => '', + 'password_required' => '請輸入密碼', + 'permission_desc' => '勾選後授予使用該模組功能', + 'permission_info' => '員工權限', + 'repeat_password' => '確認密碼', + 'subpermission_required' => 'Add at least one grant for each module', + 'successful_adding' => '新增員工資料成功', + 'successful_change_password' => '', + 'successful_deleted' => '成功刪除員工資料', + 'successful_updating' => '成功更新員工資料', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '更新員工', + 'username' => '帳號', + 'username_duplicate' => '', + 'username_minlength' => '帳號必需為五個字元以上', + 'username_required' => '帳號為必填', ]; diff --git a/app/Language/zh-Hant/Employees.php b/app/Language/zh-Hant/Employees.php index 9bffdf8ad..e01ec5522 100644 --- a/app/Language/zh-Hant/Employees.php +++ b/app/Language/zh-Hant/Employees.php @@ -1,47 +1,49 @@ "", - "basic_information" => "員工基本資料", - "cannot_be_deleted" => "無法刪除選定的僱員,選定的員工中已有銷售紀錄或你正在試圖刪除自己.", - "change_employee" => "", - "change_password" => "更改密碼", - "clerk" => "", - "commission" => "", - "confirm_delete" => "你確定要刪除所選的員工嗎?", - "confirm_restore" => "您確定要還原所選員工嗎?", - "current_password" => "當前密碼", - "current_password_invalid" => "當前密碼無效。", - "employee" => "員工", - "error_adding_updating" => "添加/更新員工錯誤.", - "error_deleting_admin" => "", - "error_updating_admin" => "", - "error_deleting_demo_admin" => "您不能刪除admin用戶.", - "error_updating_demo_admin" => "您不能更改admin用戶.", - "language" => "語言", - "login_info" => "員工登錄資料", - "manager" => "", - "new" => "新員工", - "none_selected" => "您還沒有選擇任何員工進行刪除.", - "one_or_multiple" => "員工", - "password" => "密碼", - "password_minlength" => "密碼需為八個字元以上.", - "password_must_match" => "密碼與確認密碼不一致.", - "password_not_must_match" => "當前密碼和新密碼一致。", - "password_required" => "請輸入密碼.", - "permission_desc" => "勾選後授予使用該模組功能.", - "permission_info" => "員工權限", - "repeat_password" => "確認密碼", - "subpermission_required" => "為每個模塊添加至少一項撥款.", - "successful_adding" => "新增員工資料成功.", - "successful_change_password" => "密碼更改成功。", - "successful_deleted" => "成功刪除員工資料", - "successful_updating" => "成功更新員工資料", - "system_language" => "系統語言", - "unsuccessful_change_password" => "密碼更改失敗。", - "update" => "更新員工", - "username" => "帳號", - "username_duplicate" => "", - "username_minlength" => "帳號必需為五個字元以上.", - "username_required" => "帳號為必填.", + 'administrator' => '', + 'basic_information' => '員工基本資料', + 'cannot_be_deleted' => '無法刪除選定的僱員,選定的員工中已有銷售紀錄或你正在試圖刪除自己.', + 'change_employee' => '', + 'change_password' => '更改密碼', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '你確定要刪除所選的員工嗎?', + 'confirm_restore' => '您確定要還原所選員工嗎?', + 'current_password' => '當前密碼', + 'current_password_invalid' => '當前密碼無效。', + 'employee' => '員工', + 'error_adding_updating' => '添加/更新員工錯誤.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '您不能刪除admin用戶.', + 'error_grant_change_disallowed' => '演示中禁用了權限更改。', + 'error_password_change_disallowed' => '演示中禁用了密碼更改。', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '您不能更改admin用戶.', + 'language' => '語言', + 'login_info' => '員工登錄資料', + 'manager' => '', + 'new' => '新員工', + 'none_selected' => '您還沒有選擇任何員工進行刪除.', + 'one_or_multiple' => '員工', + 'password' => '密碼', + 'password_minlength' => '密碼需為八個字元以上.', + 'password_must_match' => '密碼與確認密碼不一致.', + 'password_not_must_match' => '當前密碼和新密碼一致。', + 'password_required' => '請輸入密碼.', + 'permission_desc' => '勾選後授予使用該模組功能.', + 'permission_info' => '員工權限', + 'repeat_password' => '確認密碼', + 'subpermission_required' => '為每個模塊添加至少一項撥款.', + 'successful_adding' => '新增員工資料成功.', + 'successful_change_password' => '密碼更改成功。', + 'successful_deleted' => '成功刪除員工資料', + 'successful_updating' => '成功更新員工資料', + 'system_language' => '系統語言', + 'unsuccessful_change_password' => '密碼更改失敗。', + 'update' => '更新員工', + 'username' => '帳號', + 'username_duplicate' => '', + 'username_minlength' => '帳號必需為五個字元以上.', + 'username_required' => '帳號為必填.', ]; diff --git a/app/Libraries/Email_lib.php b/app/Libraries/Email_lib.php index 9f870c68b..0f1f225d5 100644 --- a/app/Libraries/Email_lib.php +++ b/app/Libraries/Email_lib.php @@ -28,8 +28,8 @@ class Email_lib $encrypter = Services::encrypter(); - $smtp_pass = $this->config['smtp_pass']; - if (!empty($smtp_pass) && checkEncryption()) { + $smtp_pass = $this->config['smtp_pass'] ?? ''; + if (!empty($smtp_pass) && check_encryption()) { try { $smtp_pass = $encrypter->decrypt($smtp_pass); } catch (\EncryptionException $e) { @@ -44,14 +44,14 @@ class Email_lib 'mailType' => 'html', 'userAgent' => 'OSPOS', 'validate' => true, - 'protocol' => $this->config['protocol'], - 'mailPath' => $this->config['mailpath'], - 'SMTPHost' => $this->config['smtp_host'], - 'SMTPUser' => $this->config['smtp_user'], + 'protocol' => $this->config['protocol'] ?? 'mail', + 'mailPath' => $this->config['mailpath'] ?? '/usr/sbin/sendmail', + 'SMTPHost' => $this->config['smtp_host'] ?? '', + 'SMTPUser' => $this->config['smtp_user'] ?? '', 'SMTPPass' => $smtp_pass, - 'SMTPPort' => (int)$this->config['smtp_port'], - 'SMTPTimeout' => (int)$this->config['smtp_timeout'], - 'SMTPCrypto' => $this->config['smtp_crypto'] + 'SMTPPort' => (int)(!empty($this->config['smtp_port']) ? $this->config['smtp_port'] : 465), + 'SMTPTimeout' => (int)(!empty($this->config['smtp_timeout']) ? $this->config['smtp_timeout'] : 5), + 'SMTPCrypto' => $this->config['smtp_crypto'] ?? 'ssl' ]; $this->email->initialize($email_config); } diff --git a/app/Models/Employee.php b/app/Models/Employee.php index 93913bc4b..ba028f234 100644 --- a/app/Models/Employee.php +++ b/app/Models/Employee.php @@ -131,13 +131,21 @@ class Employee extends Person public function save_employee(array &$person_data, array &$employee_data, array &$grants_data, int $employee_id = NEW_ENTRY): bool { $success = false; + $isNewEmployee = ($employee_id == NEW_ENTRY || !$this->exists($employee_id)); + $grantChangeDisallowed = filter_var(getenv('DISALLOW_GRANT_CHANGE'), FILTER_VALIDATE_BOOLEAN); // Run these queries as a transaction, we want to make sure we do all or nothing $this->db->transStart(); - if (ENVIRONMENT != 'testing' && parent::save_value($person_data, $employee_id)) { + if ($grantChangeDisallowed && $isNewEmployee && !empty($grants_data)) { + $this->db->transComplete(); + + return false; + } + + if (parent::save_value($person_data, $employee_id)) { $builder = $this->db->table('employees'); - if ($employee_id == NEW_ENTRY || !$this->exists($employee_id)) { + if ($isNewEmployee) { $employee_data['person_id'] = $employee_id = $person_data['person_id']; $success = $builder->insert($employee_data); } else { @@ -146,7 +154,7 @@ class Employee extends Person } // We have either inserted or updated a new employee, now lets set permissions. - if ($success) { + if ($success && !$grantChangeDisallowed) { // First lets clear out any grants the employee currently has. $builder = $this->db->table('grants'); $success = $builder->delete(['person_id' => $employee_id]); @@ -375,11 +383,17 @@ class Employee extends Person // Compare passwords depending on the hash version if ($row->hash_version === '1' && $row->password === md5($password)) { $builder->where('person_id', $row->person_id); - $this->session->set('person_id', $row->person_id); - $password_hash = password_hash($password, PASSWORD_DEFAULT); + $passwordHash = password_hash($password, PASSWORD_DEFAULT); + $updated = $builder->update(['hash_version' => 2, 'password' => $passwordHash]); - return $builder->update(['hash_version' => 2, 'password' => $password_hash]); + if ($updated) { + $this->session->regenerate(true); + $this->session->set('person_id', $row->person_id); + } + + return $updated; } elseif ($row->hash_version === '2' && password_verify($password, $row->password)) { + $this->session->regenerate(true); $this->session->set('person_id', $row->person_id); return true; @@ -521,7 +535,7 @@ class Employee extends Person { $success = false; - if (!getenv('DISALLOW_PASSWORD_CHANGE')) { + if (!filter_var(getenv('DISALLOW_PASSWORD_CHANGE'), FILTER_VALIDATE_BOOLEAN)) { $this->db->transStart(); $builder = $this->db->table('employees'); diff --git a/app/Models/Module.php b/app/Models/Module.php index c0e3e6364..a7dab5fdd 100644 --- a/app/Models/Module.php +++ b/app/Models/Module.php @@ -32,10 +32,10 @@ class Module extends Model if ($query->getNumRows() == 1) { // TODO: === $row = $query->getRow(); - return lang($row->name_lang_key); + return lang('Module.' . $row->module_id); } - return lang('Errors.unknown'); + return lang('Error.unknown'); } /** @@ -50,10 +50,10 @@ class Module extends Model if ($query->getNumRows() == 1) { // TODO: === $row = $query->getRow(); - return lang($row->desc_lang_key); + return lang('Module.' . $row->module_id . '_desc'); } - return lang('Errors.unknown'); + return lang('Error.unknown'); } /** diff --git a/tests/Controllers/EmployeesControllerTest.php b/tests/Controllers/EmployeesControllerTest.php index a0b63cd30..c70492bc7 100644 --- a/tests/Controllers/EmployeesControllerTest.php +++ b/tests/Controllers/EmployeesControllerTest.php @@ -19,9 +19,23 @@ class EmployeesControllerTest extends CIUnitTestCase protected $refresh = false; protected $namespace = null; + protected $priorDisallowGrantChange; + protected function setUp(): void { parent::setUp(); + $this->priorDisallowGrantChange = getenv('DISALLOW_GRANT_CHANGE'); + putenv('DISALLOW_GRANT_CHANGE=false'); + } + + protected function tearDown(): void + { + if ($this->priorDisallowGrantChange === false) { + putenv('DISALLOW_GRANT_CHANGE'); + } else { + putenv('DISALLOW_GRANT_CHANGE=' . $this->priorDisallowGrantChange); + } + parent::tearDown(); } protected function createNonAdminEmployee(): int @@ -203,17 +217,131 @@ class EmployeesControllerTest extends CIUnitTestCase public function testAdminCanGrantAnyPermission(): void { + $employeeId = $this->createNonAdminEmployee(); + $this->loginAsAdmin(); + + putenv('DISALLOW_GRANT_CHANGE=false'); + $permissionsRequested = ['customers', 'employees', 'sales', 'config']; - $userPermissions = ['customers', 'sales']; - $isAdmin = true; - - $granted = []; + + $postData = [ + 'first_name' => 'NonAdmin', + 'last_name' => 'User', + 'email' => 'nonadmin@test.com', + 'username' => 'nonadmin' + ]; foreach ($permissionsRequested as $perm) { - if ($isAdmin || in_array($perm, $userPermissions)) { - $granted[] = $perm; - } + $postData['grant_' . $perm] = $perm; } - - $this->assertEquals($permissionsRequested, $granted); + + $response = $this->post('/employees/save/' . $employeeId, $postData); + + $response->assertStatus(200); + $result = json_decode($response->getJSON(), true); + $this->assertTrue($result['success']); + + $employeeModel = model(Employee::class); + foreach ($permissionsRequested as $perm) { + $this->assertTrue($employeeModel->has_grant($perm, $employeeId)); + } + } + + public function testGrantChangeRequestFailsWhenGrantChangeDisallowed(): void + { + $employeeId = $this->createNonAdminEmployee(); + $this->loginAsAdmin(); + + putenv('DISALLOW_GRANT_CHANGE=true'); + + $response = $this->post('/employees/save/' . $employeeId, [ + 'first_name' => 'NonAdmin', + 'last_name' => 'User', + 'email' => 'nonadmin@test.com', + 'username' => 'nonadmin', + 'grant_employees' => 'employees' + ]); + + $response->assertStatus(200); + $result = json_decode($response->getJSON(), true); + $this->assertFalse($result['success']); + + $employeeModel = model(Employee::class); + $this->assertTrue($employeeModel->has_grant('customers', $employeeId)); + $this->assertTrue($employeeModel->has_grant('sales', $employeeId)); + $this->assertFalse($employeeModel->has_grant('employees', $employeeId)); + } + + public function testNewEmployeeCreationWithGrantsFailsWhenGrantChangeDisallowed(): void + { + $this->loginAsAdmin(); + + putenv('DISALLOW_GRANT_CHANGE=true'); + + $response = $this->post('/employees/save', [ + 'first_name' => 'Brand', + 'last_name' => 'New', + 'email' => 'brandnew@test.com', + 'username' => 'brandnew', + 'password' => 'password123', + 'grant_customers' => 'customers' + ]); + + $response->assertStatus(200); + $result = json_decode($response->getJSON(), true); + $this->assertFalse($result['success']); + + $createdEmployee = $this->db->table('employees')->where('username', 'brandnew')->get()->getRow(); + $this->assertNull($createdEmployee); + } + + public function testGrantChangeRequestSucceedsWhenGrantChangeAllowed(): void + { + $employeeId = $this->createNonAdminEmployee(); + $this->loginAsAdmin(); + + putenv('DISALLOW_GRANT_CHANGE=false'); + + $response = $this->post('/employees/save/' . $employeeId, [ + 'first_name' => 'NonAdmin', + 'last_name' => 'User', + 'email' => 'nonadmin@test.com', + 'username' => 'nonadmin', + 'grant_employees' => 'employees' + ]); + + $response->assertStatus(200); + $result = json_decode($response->getJSON(), true); + $this->assertTrue($result['success']); + + $employeeModel = model(Employee::class); + $this->assertTrue($employeeModel->has_grant('employees', $employeeId)); + $this->assertFalse($employeeModel->has_grant('customers', $employeeId)); + $this->assertFalse($employeeModel->has_grant('sales', $employeeId)); + } + + public function testNewEmployeeCreationWithGrantsSucceedsWhenGrantChangeAllowed(): void + { + $this->loginAsAdmin(); + + putenv('DISALLOW_GRANT_CHANGE=false'); + + $response = $this->post('/employees/save', [ + 'first_name' => 'Brand', + 'last_name' => 'New2', + 'email' => 'brandnew2@test.com', + 'username' => 'brandnew2', + 'password' => 'password123', + 'grant_customers' => 'customers' + ]); + + $response->assertStatus(200); + $result = json_decode($response->getJSON(), true); + $this->assertTrue($result['success']); + + $createdEmployee = $this->db->table('employees')->where('username', 'brandnew2')->get()->getRow(); + $this->assertNotNull($createdEmployee); + + $employeeModel = model(Employee::class); + $this->assertTrue($employeeModel->has_grant('customers', (int) $createdEmployee->person_id)); } } \ No newline at end of file diff --git a/tests/Controllers/ItemsCsvImportTest.php b/tests/Controllers/ItemsCsvImportTest.php index 9ea89252b..740b35f94 100644 --- a/tests/Controllers/ItemsCsvImportTest.php +++ b/tests/Controllers/ItemsCsvImportTest.php @@ -2,6 +2,7 @@ namespace Tests\Controllers; +use CodeIgniter\Database\Config; use CodeIgniter\Test\CIUnitTestCase; use CodeIgniter\Test\DatabaseTestTrait; use App\Models\Item; @@ -11,7 +12,6 @@ use App\Models\Item_taxes; use App\Models\Attribute; use App\Models\Stock_location; use App\Models\Supplier; -use Config\Database; class ItemsCsvImportTest extends CIUnitTestCase { @@ -19,11 +19,12 @@ class ItemsCsvImportTest extends CIUnitTestCase protected $migrate = true; protected $migrateOnce = true; - protected $seed = ''; protected $seedOnce = true; - protected $refresh = true; + protected $refresh = false; protected $namespace = null; + private static $doneBootstrap = false; + protected $item; protected $item_quantity; protected $inventory; @@ -32,15 +33,15 @@ class ItemsCsvImportTest extends CIUnitTestCase protected $stock_location; protected $supplier; - public static function setUpBeforeClass(): void - { - $seeder = Database::seeder('tests'); - $seeder->call('TestDatabaseBootstrapSeeder'); - } - - protected function setUp(): void { + if (self::$doneBootstrap === false) { + Config::seeder($this->DBGroup)->call('App\Database\Seeds\TestDatabaseBootstrapSeeder'); + Config::connect($this->DBGroup)->close(); + + self::$doneBootstrap = true; + } + parent::setUp(); helper('importfile'); @@ -236,8 +237,8 @@ class ItemsCsvImportTest extends CIUnitTestCase public function testMissingAttributeColumnIsRejected(): void { - $csvContent = 'Id,Barcode,"Item Name",Category,"Supplier ID","Cost Price","Unit Price","Tax 1 Name","Tax 1 Percent","Tax 2 Name","Tax 2 Percent","Reorder Level",Description,"Allow Alt Description","Item has Serial Number",Image,HSN' . "\n"; - $csvContent .= ",ITEM001,Test Item,Electronics,1,10.00,15.00,,,,,5,Test Description,0,0,,HSN001\n"; + $csvContent = 'Id,Barcode,"Item Name",Category,"Supplier ID","Cost Price","Unit Price","Tax 1 Name","Tax 1 Percent","Tax 2 Name","Tax 2 Percent","Reorder Level",Description,"Allow Alt Description","Item has Serial Number",Image,HSN,"location_Warehouse"' . "\n"; + $csvContent .= ",ITEM001,Test Item,Electronics,1,10.00,15.00,,,,,5,Test Description,0,0,,HSN001,100\n"; $tempFile = tempnam(sys_get_temp_dir(), 'csv_test_headers_no_attribute_'); file_put_contents($tempFile, $csvContent); diff --git a/tests/Controllers/SalesControllerTest.php b/tests/Controllers/SalesControllerTest.php index 156e08f7d..fe57887df 100644 --- a/tests/Controllers/SalesControllerTest.php +++ b/tests/Controllers/SalesControllerTest.php @@ -10,7 +10,7 @@ use App\Models\Employee; use App\Models\Item; /** - * Includes regression tests for GHSA-3xf6-8fmq-44wg. + * Regression tests for GHSA-3xf6-8fmq-44wg. * * A cashier holding only the base "sales" grant (no "reports_sales") must * not be able to reach the per-sale endpoints that getManage() gates @@ -24,88 +24,22 @@ class SalesControllerTest extends CIUnitTestCase protected $migrate = true; protected $migrateOnce = true; - protected $refresh = true; + protected $refresh = false; protected $namespace = null; - protected function setUp(): void - { - parent::setUp(); - } - - protected function createCashierWithoutChangePriceGrant(): int - { - $personData = [ - 'first_name' => 'Cashier', - 'last_name' => 'NoChangePrice', - 'email' => 'cashier-nochangeprice@test.com', - 'phone_number' => '555-0001' - ]; - - $employeeData = [ - 'username' => 'cashier_nochangeprice', - 'password' => password_hash('password123', PASSWORD_DEFAULT), - 'hash_version' => 2, - 'language_code' => 'en', - 'language' => 'english' - ]; - - $grantsData = [ - ['permission_id' => 'sales', 'menu_group' => 'home'], - ]; - - $employeeModel = model(Employee::class); - $employeeModel->save_employee($personData, $employeeData, $grantsData, NEW_ENTRY); - - return $employeeModel->get_found_rows(''); - } - - protected function createCashierWithChangePriceGrant(): int - { - $personData = [ - 'first_name' => 'Cashier', - 'last_name' => 'ChangePrice', - 'email' => 'cashier-changeprice@test.com', - 'phone_number' => '555-0002' - ]; - - $employeeData = [ - 'username' => 'cashier_changeprice', - 'password' => password_hash('password123', PASSWORD_DEFAULT), - 'hash_version' => 2, - 'language_code' => 'en', - 'language' => 'english' - ]; - - $grantsData = [ - ['permission_id' => 'sales', 'menu_group' => 'home'], - ['permission_id' => 'sales_change_price', 'menu_group' => 'home'], - ]; - - $employeeModel = model(Employee::class); - $employeeModel->save_employee($personData, $employeeData, $grantsData, NEW_ENTRY); - - return $employeeModel->get_found_rows(''); - } - - protected function loginAsEmployee(int $personId): void - { - $session = Services::session(); - $session->destroy(); - $session->set('person_id', $personId); - $session->set('menu_group', 'home'); - } - protected function createCashierEmployee(): int { + $unique = uniqid(); + $personData = [ 'first_name' => 'Cashier', 'last_name' => 'NoReports', - 'email' => 'cashier@test.com', + 'email' => "cashier.$unique@test.com", 'phone_number' => '555-0001' ]; $employeeData = [ - 'username' => 'cashier', + 'username' => "cashier.$unique", 'password' => password_hash('password123', PASSWORD_DEFAULT), 'hash_version' => 2, 'language_code' => 'en', @@ -113,27 +47,33 @@ class SalesControllerTest extends CIUnitTestCase ]; // Deliberately grants "sales" (register access) but NOT "reports_sales". + // "sales_stock" is also required: Employee::has_module_grant('sales', ...) + // treats the bare "sales" grant as insufficient once any sales_* submodule + // permission exists in the permissions table (see has_subpermissions()). $grantsData = [ - ['permission_id' => 'sales', 'menu_group' => 'home'] + ['permission_id' => 'sales', 'menu_group' => 'home'], + ['permission_id' => 'sales_stock', 'menu_group' => 'home'] ]; $employeeModel = model(Employee::class); - $employeeModel->save_employee($personData, $employeeData, $grantsData, NEW_ENTRY); + $this->assertTrue($employeeModel->save_employee($personData, $employeeData, $grantsData, NEW_ENTRY)); - return $employeeModel->get_found_rows(''); + return (int) $personData['person_id']; } protected function createReportsSalesEmployee(): int { + $unique = uniqid(); + $personData = [ 'first_name' => 'Supervisor', 'last_name' => 'WithReports', - 'email' => 'supervisor@test.com', + 'email' => "supervisor.$unique@test.com", 'phone_number' => '555-0002' ]; $employeeData = [ - 'username' => 'supervisor', + 'username' => "supervisor.$unique", 'password' => password_hash('password123', PASSWORD_DEFAULT), 'hash_version' => 2, 'language_code' => 'en', @@ -142,32 +82,142 @@ class SalesControllerTest extends CIUnitTestCase $grantsData = [ ['permission_id' => 'sales', 'menu_group' => 'home'], + ['permission_id' => 'sales_stock', 'menu_group' => 'home'], ['permission_id' => 'reports_sales', 'menu_group' => 'home'] ]; $employeeModel = model(Employee::class); - $employeeModel->save_employee($personData, $employeeData, $grantsData, NEW_ENTRY); + $this->assertTrue($employeeModel->save_employee($personData, $employeeData, $grantsData, NEW_ENTRY)); - return $employeeModel->get_found_rows(''); + return (int) $personData['person_id']; + } + + protected function createCashierWithoutChangePriceGrant(): int + { + $unique = uniqid(); + + $personData = [ + 'first_name' => 'Cashier', + 'last_name' => 'NoChangePrice', + 'email' => "cashier-nochangeprice.$unique@test.com", + 'phone_number' => '555-0001', + 'address_1' => '', + 'address_2' => '', + 'city' => '', + 'state' => '', + 'zip' => '', + 'country' => '', + 'comments' => '', + ]; + + $employeeData = [ + 'username' => "cashier_nochangeprice.$unique", + 'password' => password_hash('password123', PASSWORD_DEFAULT), + 'hash_version' => 2, + 'language_code' => 'en', + 'language' => 'english' + ]; + + // "sales_stock" is required alongside "sales": see the has_module_grant/ + // has_subpermissions note on createCashierEmployee() above. + $grantsData = [ + ['permission_id' => 'sales', 'menu_group' => 'home'], + ['permission_id' => 'sales_stock', 'menu_group' => 'home'], + ]; + + $employeeModel = model(Employee::class); + $this->assertTrue($employeeModel->save_employee($personData, $employeeData, $grantsData, NEW_ENTRY)); + + return (int) $personData['person_id']; + } + + protected function createCashierWithChangePriceGrant(): int + { + $unique = uniqid(); + + $personData = [ + 'first_name' => 'Cashier', + 'last_name' => 'ChangePrice', + 'email' => "cashier-changeprice.$unique@test.com", + 'phone_number' => '555-0002', + 'address_1' => '', + 'address_2' => '', + 'city' => '', + 'state' => '', + 'zip' => '', + 'country' => '', + 'comments' => '', + ]; + + $employeeData = [ + 'username' => "cashier_changeprice.$unique", + 'password' => password_hash('password123', PASSWORD_DEFAULT), + 'hash_version' => 2, + 'language_code' => 'en', + 'language' => 'english' + ]; + + $grantsData = [ + ['permission_id' => 'sales', 'menu_group' => 'home'], + ['permission_id' => 'sales_stock', 'menu_group' => 'home'], + ['permission_id' => 'sales_change_price', 'menu_group' => 'home'], + ]; + + $employeeModel = model(Employee::class); + $this->assertTrue($employeeModel->save_employee($personData, $employeeData, $grantsData, NEW_ENTRY)); + + return (int) $personData['person_id']; + } + + protected function loginAs(int $personId): void + { + $this->withSession([ + 'person_id' => $personId, + 'menu_group' => 'home', + ]); } /** * Inserts a minimal completed sale row directly, bypassing Sale::save_value() * (which requires a full cart/inventory/tax pipeline unrelated to this - * authorization check). + * authorization check). Sale::get_info() inner-joins sales_items, so a + * matching item/sales_items row is required for the sale to be found. */ protected function createSale(int $employeeId): int { - $builder = \Config\Database::connect()->table('sales'); - $builder->insert([ + $unique = uniqid(); + $db = \Config\Database::connect(); + + $db->table('items')->insert([ + 'name' => "Test Item $unique", + 'category' => 'Test', + 'description' => 'Test item', + 'cost_price' => 1, + 'unit_price' => 1, + 'item_number' => "TEST-$unique", + ]); + $itemId = (int) $db->insertID(); + + $db->table('sales')->insert([ 'sale_time' => date('Y-m-d H:i:s'), 'customer_id' => null, 'employee_id' => $employeeId, 'comment' => 'test sale', 'invoice_number' => null, ]); + $saleId = (int) $db->insertID(); - return (int) \Config\Database::connect()->insertID(); + $db->table('sales_items')->insert([ + 'sale_id' => $saleId, + 'item_id' => $itemId, + 'line' => 1, + 'quantity_purchased' => 1, + 'item_cost_price' => 1, + 'item_unit_price' => 1, + 'item_location' => 1, + ]); + + return $saleId; } protected function createTestItem(): int @@ -189,6 +239,7 @@ class SalesControllerTest extends CIUnitTestCase $itemModel = model(Item::class); $itemModel->save_value($itemData); + $this->assertTrue($itemModel->save_value($itemData)); return (int) $itemData['item_id']; } @@ -200,42 +251,165 @@ class SalesControllerTest extends CIUnitTestCase */ protected function seedCartLine(int $line, string $price, int $itemId): void { - $session = Services::session(); - $session->set('sales_cart', [ - $line => [ - 'item_id' => $itemId, - 'item_location' => 1, - 'stock_name' => 'Test Location', - 'line' => $line, - 'name' => 'Test Item', - 'item_number' => 'TEST-1', - 'attribute_values' => null, - 'attribute_dtvalues' => null, - 'description' => 'Test Item', - 'serialnumber' => '', - 'allow_alt_description' => false, - 'is_serialized' => false, - 'quantity' => '1', - 'discount' => '0', - 'discount_type' => 0, - 'in_stock' => '10', - 'price' => $price, - 'cost_price' => '1.00', - 'total' => $price, - 'discounted_total' => $price, - 'print_option' => 1, - 'stock_type' => HAS_NO_STOCK, - 'item_type' => ITEM, - 'hsn_code' => null, - 'tax_category_id' => null, + $this->withSession(array_merge($this->session, [ + 'sales_cart' => [ + $line => [ + 'item_id' => $itemId, + 'item_location' => 1, + 'stock_name' => 'Test Location', + 'line' => $line, + 'name' => 'Test Item', + 'item_number' => 'TEST-1', + 'attribute_values' => null, + 'attribute_dtvalues' => null, + 'description' => 'Test Item', + 'serialnumber' => '', + 'allow_alt_description' => false, + 'is_serialized' => false, + 'quantity' => '1', + 'discount' => '0', + 'discount_type' => 0, + 'in_stock' => '10', + 'price' => $price, + 'cost_price' => '1.00', + 'total' => $price, + 'discounted_total' => $price, + 'print_option' => 1, + 'stock_type' => HAS_NO_STOCK, + 'item_type' => ITEM, + 'hsn_code' => null, + 'tax_category_id' => null, + ], ], + ])); + } + + public function testCashierWithoutReportsSalesCannotGetRow(): void + { + $cashierId = $this->createCashierEmployee(); + $saleId = $this->createSale($cashierId); + $this->loginAs($cashierId); + + $response = $this->get('/sales/row/' . $saleId); + + $response->assertStatus(403); + $result = json_decode($response->getJSON(), true); + $this->assertFalse($result['success']); + } + + public function testCashierWithoutReportsSalesCannotGetEdit(): void + { + $cashierId = $this->createCashierEmployee(); + $saleId = $this->createSale($cashierId); + $this->loginAs($cashierId); + + $response = $this->get('/sales/edit/' . $saleId); + + $response->assertRedirect(); + $this->assertStringContainsString('no_access', $response->getRedirectUrl()); + } + + public function testCashierWithoutReportsSalesCannotGetReceipt(): void + { + $cashierId = $this->createCashierEmployee(); + $saleId = $this->createSale($cashierId); + $this->loginAs($cashierId); + + $response = $this->get('/sales/receipt/' . $saleId); + + $response->assertRedirect(); + $this->assertStringContainsString('no_access', $response->getRedirectUrl()); + } + + public function testCashierWithoutReportsSalesCannotGetInvoice(): void + { + $cashierId = $this->createCashierEmployee(); + $saleId = $this->createSale($cashierId); + $this->loginAs($cashierId); + + $response = $this->get('/sales/invoice/' . $saleId); + + $response->assertRedirect(); + $this->assertStringContainsString('no_access', $response->getRedirectUrl()); + } + + public function testCashierWithoutReportsSalesCannotSendPdf(): void + { + $cashierId = $this->createCashierEmployee(); + $saleId = $this->createSale($cashierId); + $this->loginAs($cashierId); + + $response = $this->get('/sales/sendpdf/' . $saleId); + + $response->assertStatus(403); + $result = json_decode($response->getJSON(), true); + $this->assertFalse($result['success']); + } + + public function testCashierWithoutReportsSalesCannotSendReceipt(): void + { + $cashierId = $this->createCashierEmployee(); + $saleId = $this->createSale($cashierId); + $this->loginAs($cashierId); + + $response = $this->get('/sales/sendreceipt/' . $saleId); + + $response->assertStatus(403); + $result = json_decode($response->getJSON(), true); + $this->assertFalse($result['success']); + } + + public function testCashierWithoutReportsSalesCannotPostSave(): void + { + $cashierId = $this->createCashierEmployee(); + $saleId = $this->createSale($cashierId); + $this->loginAs($cashierId); + + $response = $this->post('/sales/save/' . $saleId, [ + 'date' => date('m/d/Y H:i:s'), + 'customer_id' => '', + 'employee_id' => $cashierId, + 'comment' => 'tampered', + 'invoice_number' => '', + 'number_of_payments'=> 0, + 'payment_type_new' => '--', + 'payment_amount_new'=> '' ]); + + $response->assertStatus(403); + $result = json_decode($response->getJSON(), true); + $this->assertFalse($result['success']); + $this->assertSame(lang('Sales.not_authorized'), $result['message']); + } + + public function testEmployeeWithReportsSalesCanGetRow(): void + { + $supervisorId = $this->createReportsSalesEmployee(); + $saleId = $this->createSale($supervisorId); + $this->loginAs($supervisorId); + + $response = $this->get('/sales/row/' . $saleId); + + $response->assertStatus(200); + $result = json_decode($response->getJSON(), true); + $this->assertArrayNotHasKey('success', $result); + } + + public function testEmployeeWithReportsSalesCanGetEdit(): void + { + $supervisorId = $this->createReportsSalesEmployee(); + $saleId = $this->createSale($supervisorId); + $this->loginAs($supervisorId); + + $response = $this->get('/sales/edit/' . $saleId); + + $response->assertStatus(200); } public function testCashierWithoutGrantCannotChangePrice(): void { $cashierId = $this->createCashierWithoutChangePriceGrant(); - $this->loginAsEmployee($cashierId); + $this->loginAs($cashierId); $itemId = $this->createTestItem(); $this->seedCartLine(1, '5.00', $itemId); @@ -259,7 +433,7 @@ class SalesControllerTest extends CIUnitTestCase public function testCashierWithoutGrantCanEditQuantityAtSamePrice(): void { $cashierId = $this->createCashierWithoutChangePriceGrant(); - $this->loginAsEmployee($cashierId); + $this->loginAs($cashierId); $itemId = $this->createTestItem(); $this->seedCartLine(1, '5.00', $itemId); @@ -283,7 +457,7 @@ class SalesControllerTest extends CIUnitTestCase public function testCashierWithGrantCanChangePrice(): void { $cashierId = $this->createCashierWithChangePriceGrant(); - $this->loginAsEmployee($cashierId); + $this->loginAs($cashierId); $itemId = $this->createTestItem(); $this->seedCartLine(1, '5.00', $itemId); @@ -302,126 +476,4 @@ class SalesControllerTest extends CIUnitTestCase $cart = $session->get('sales_cart'); $this->assertEquals('0.01', $cart[1]['price']); } - - public function testCashierWithoutReportsSalesCannotGetRow(): void - { - $cashierId = $this->createCashierEmployee(); - $saleId = $this->createSale($cashierId); - $this->loginAsEmployee($cashierId); - - $response = $this->get('/sales/row/' . $saleId); - - $response->assertStatus(200); - $result = json_decode($response->getJSON(), true); - $this->assertFalse($result['success']); - } - - public function testCashierWithoutReportsSalesCannotGetEdit(): void - { - $cashierId = $this->createCashierEmployee(); - $saleId = $this->createSale($cashierId); - $this->loginAsEmployee($cashierId); - - $response = $this->get('/sales/edit/' . $saleId); - - $response->assertRedirect(); - $this->assertStringContainsString('no_access', $response->getRedirectUrl()); - } - - public function testCashierWithoutReportsSalesCannotGetReceipt(): void - { - $cashierId = $this->createCashierEmployee(); - $saleId = $this->createSale($cashierId); - $this->loginAsEmployee($cashierId); - - $response = $this->get('/sales/receipt/' . $saleId); - - $response->assertRedirect(); - $this->assertStringContainsString('no_access', $response->getRedirectUrl()); - } - - public function testCashierWithoutReportsSalesCannotGetInvoice(): void - { - $cashierId = $this->createCashierEmployee(); - $saleId = $this->createSale($cashierId); - $this->loginAsEmployee($cashierId); - - $response = $this->get('/sales/invoice/' . $saleId); - - $response->assertRedirect(); - $this->assertStringContainsString('no_access', $response->getRedirectUrl()); - } - - public function testCashierWithoutReportsSalesCannotSendPdf(): void - { - $cashierId = $this->createCashierEmployee(); - $saleId = $this->createSale($cashierId); - $this->loginAsEmployee($cashierId); - - $response = $this->get('/sales/sendpdf/' . $saleId); - - $response->assertStatus(200); - $result = json_decode($response->getJSON(), true); - $this->assertFalse($result['success']); - } - - public function testCashierWithoutReportsSalesCannotSendReceipt(): void - { - $cashierId = $this->createCashierEmployee(); - $saleId = $this->createSale($cashierId); - $this->loginAsEmployee($cashierId); - - $response = $this->get('/sales/sendreceipt/' . $saleId); - - $response->assertStatus(200); - $result = json_decode($response->getJSON(), true); - $this->assertFalse($result['success']); - } - - public function testCashierWithoutReportsSalesCannotPostSave(): void - { - $cashierId = $this->createCashierEmployee(); - $saleId = $this->createSale($cashierId); - $this->loginAsEmployee($cashierId); - - $response = $this->post('/sales/save/' . $saleId, [ - 'date' => date('m/d/Y H:i:s'), - 'customer_id' => '', - 'employee_id' => $cashierId, - 'comment' => 'tampered', - 'invoice_number' => '', - 'number_of_payments'=> 0, - 'payment_type_new' => '--', - 'payment_amount_new'=> '' - ]); - - $response->assertStatus(200); - $result = json_decode($response->getJSON(), true); - $this->assertFalse($result['success']); - $this->assertSame(lang('Sales.not_authorized'), $result['message']); - } - - public function testEmployeeWithReportsSalesCanGetRow(): void - { - $supervisorId = $this->createReportsSalesEmployee(); - $saleId = $this->createSale($supervisorId); - $this->loginAsEmployee($supervisorId); - - $response = $this->get('/sales/row/' . $saleId); - - $response->assertStatus(200); - $result = json_decode($response->getJSON(), true); - $this->assertArrayNotHasKey('success', $result); - } - - public function testEmployeeWithReportsSalesCanGetEdit(): void - { - $supervisorId = $this->createReportsSalesEmployee(); - $saleId = $this->createSale($supervisorId); - $this->loginAsEmployee($supervisorId); - - $response = $this->get('/sales/edit/' . $saleId); - - $response->assertStatus(200); - } } diff --git a/tests/Models/EmployeeTest.php b/tests/Models/EmployeeTest.php index 7f188c7be..ee7951ddd 100644 --- a/tests/Models/EmployeeTest.php +++ b/tests/Models/EmployeeTest.php @@ -12,7 +12,7 @@ class EmployeeTest extends CIUnitTestCase protected $migrate = true; protected $migrateOnce = true; - protected $refresh = true; + protected $refresh = false; protected $namespace = null; protected function setUp(): void @@ -23,9 +23,9 @@ class EmployeeTest extends CIUnitTestCase public function testIsAdminReturnsTrueForPersonId1(): void { $employeeModel = model(Employee::class); - + $result = $employeeModel->isAdmin(1); - + $this->assertTrue($result); } @@ -34,12 +34,12 @@ class EmployeeTest extends CIUnitTestCase $employeeModel = $this->getMockBuilder(Employee::class) ->onlyMethods(['has_grant']) ->getMock(); - + $employeeModel->method('has_grant') ->willReturn(true); - + $result = $employeeModel->isAdmin(2); - + $this->assertTrue($result); } @@ -48,14 +48,14 @@ class EmployeeTest extends CIUnitTestCase $employeeModel = $this->getMockBuilder(Employee::class) ->onlyMethods(['has_grant']) ->getMock(); - + $employeeModel->method('has_grant') ->willReturnCallback(function($permissionId, $personId) { return $permissionId !== 'config'; }); - + $result = $employeeModel->isAdmin(3); - + $this->assertFalse($result); } @@ -64,12 +64,12 @@ class EmployeeTest extends CIUnitTestCase $employeeModel = $this->getMockBuilder(Employee::class) ->onlyMethods(['isAdmin']) ->getMock(); - + $employeeModel->method('isAdmin') ->willReturn(false); - + $result = $employeeModel->canModifyEmployee(1, 1); - + $this->assertTrue($result); } @@ -78,12 +78,12 @@ class EmployeeTest extends CIUnitTestCase $employeeModel = $this->getMockBuilder(Employee::class) ->onlyMethods(['isAdmin']) ->getMock(); - + $employeeModel->method('isAdmin') ->willReturn(true); - + $result = $employeeModel->canModifyEmployee(1, 1); - + $this->assertTrue($result); } @@ -92,14 +92,14 @@ class EmployeeTest extends CIUnitTestCase $employeeModel = $this->getMockBuilder(Employee::class) ->onlyMethods(['isAdmin']) ->getMock(); - + $employeeModel->method('isAdmin') ->willReturnCallback(function($personId) { return $personId === 1; }); - + $result = $employeeModel->canModifyEmployee(1, 2); - + $this->assertFalse($result); } @@ -108,14 +108,14 @@ class EmployeeTest extends CIUnitTestCase $employeeModel = $this->getMockBuilder(Employee::class) ->onlyMethods(['isAdmin']) ->getMock(); - + $employeeModel->method('isAdmin') ->willReturnCallback(function($personId) { return $personId === 1; }); - + $result = $employeeModel->canModifyEmployee(2, 1); - + $this->assertTrue($result); } @@ -124,12 +124,12 @@ class EmployeeTest extends CIUnitTestCase $employeeModel = $this->getMockBuilder(Employee::class) ->onlyMethods(['isAdmin']) ->getMock(); - + $employeeModel->method('isAdmin') ->willReturn(false); - + $result = $employeeModel->canModifyEmployee(2, 3); - + $this->assertTrue($result); } @@ -138,32 +138,155 @@ class EmployeeTest extends CIUnitTestCase $employeeModel = $this->getMockBuilder(Employee::class) ->onlyMethods(['isAdmin']) ->getMock(); - + $employeeModel->method('isAdmin') ->willReturnCallback(function($personId) { return $personId === 1; }); - + $result = $employeeModel->canModifyEmployee(1, 2); - + $this->assertFalse($result); } public function testHasGrantReturnsTrueForActualGrant(): void { $employeeModel = model(Employee::class); - + $result = $employeeModel->has_grant('employees', 1); - + $this->assertTrue($result); } public function testHasGrantReturnsFalseForMissingGrant(): void { $employeeModel = model(Employee::class); - + $result = $employeeModel->has_grant('nonexistent_permission', 1); - + $this->assertFalse($result); } -} \ No newline at end of file + + protected function createEmployeeWithGrants(array $grantsData): int + { + $uniqueSuffix = uniqid(); + + $personData = [ + 'first_name' => 'Grant', + 'last_name' => 'Tester', + 'email' => "granttester{$uniqueSuffix}@test.com", + 'phone_number' => '555-5678' + ]; + + $employeeData = [ + 'username' => "granttester{$uniqueSuffix}", + 'password' => password_hash('password123', PASSWORD_DEFAULT), + 'hash_version' => 2, + 'language_code' => 'en', + 'language' => 'english' + ]; + + $employeeModel = model(Employee::class); + $result = $employeeModel->save_employee($personData, $employeeData, $grantsData, NEW_ENTRY); + + $this->assertTrue($result); + $this->assertArrayHasKey('person_id', $personData); + + return $personData['person_id']; + } + + public function testExistingEmployeeKeepsOriginalGrantsWhenGrantChangeDisallowed(): void + { + $employeeId = $this->createEmployeeWithGrants([ + ['permission_id' => 'customers', 'menu_group' => 'home'] + ]); + + $originalDisallowGrantChange = getenv('DISALLOW_GRANT_CHANGE'); + putenv('DISALLOW_GRANT_CHANGE=true'); + + try { + $employeeModel = model(Employee::class); + $personData = ['first_name' => 'Grant', 'last_name' => 'Tester']; + $employeeData = ['username' => 'granttester', 'language_code' => 'en', 'language' => 'english']; + $newGrantsData = [['permission_id' => 'sales', 'menu_group' => 'home']]; + + $saveEmployeeResult = $employeeModel->save_employee($personData, $employeeData, $newGrantsData, $employeeId); + $this->assertTrue($saveEmployeeResult); + + $this->assertTrue($employeeModel->has_grant('customers', $employeeId)); + $this->assertFalse($employeeModel->has_grant('sales', $employeeId)); + } finally { + $originalDisallowGrantChange === false + ? putenv('DISALLOW_GRANT_CHANGE') + : putenv("DISALLOW_GRANT_CHANGE={$originalDisallowGrantChange}"); + } + } + + public function testNewEmployeeCreationWithGrantsRejectedWhenGrantChangeDisallowed(): void + { + $originalDisallowGrantChange = getenv('DISALLOW_GRANT_CHANGE'); + putenv('DISALLOW_GRANT_CHANGE=true'); + + try { + $result = $this->createEmployeeWithGrantsExpectingFailure([ + ['permission_id' => 'customers', 'menu_group' => 'home'] + ]); + + $this->assertFalse($result); + } finally { + $originalDisallowGrantChange === false + ? putenv('DISALLOW_GRANT_CHANGE') + : putenv("DISALLOW_GRANT_CHANGE={$originalDisallowGrantChange}"); + } + } + + protected function createEmployeeWithGrantsExpectingFailure(array $grantsData): bool + { + $uniqueSuffix = uniqid(); + + $personData = [ + 'first_name' => 'Rejected', + 'last_name' => 'Tester', + 'email' => "rejectedtester{$uniqueSuffix}@test.com", + 'phone_number' => '555-9999' + ]; + + $employeeData = [ + 'username' => "rejectedtester{$uniqueSuffix}", + 'password' => password_hash('password123', PASSWORD_DEFAULT), + 'hash_version' => 2, + 'language_code' => 'en', + 'language' => 'english' + ]; + + $employeeModel = model(Employee::class); + + return $employeeModel->save_employee($personData, $employeeData, $grantsData, NEW_ENTRY); + } + + public function testExistingEmployeeGrantsUpdateWhenGrantChangeAllowed(): void + { + $employeeId = $this->createEmployeeWithGrants([ + ['permission_id' => 'customers', 'menu_group' => 'home'] + ]); + + $employeeModel = model(Employee::class); + $personData = ['first_name' => 'Grant', 'last_name' => 'Tester']; + $employeeData = ['username' => 'granttester', 'language_code' => 'en', 'language' => 'english']; + $newGrantsData = [['permission_id' => 'sales', 'menu_group' => 'home']]; + + $employeeModel->save_employee($personData, $employeeData, $newGrantsData, $employeeId); + + $this->assertFalse($employeeModel->has_grant('customers', $employeeId)); + $this->assertTrue($employeeModel->has_grant('sales', $employeeId)); + } + + public function testNewEmployeeCreationWithGrantsSucceedsWhenGrantChangeAllowed(): void + { + $result = $this->createEmployeeWithGrantsExpectingFailure([ + ['permission_id' => 'customers', 'menu_group' => 'home'] + ]); + + $this->assertTrue((bool) $result); + } +} diff --git a/tests/Models/Reports/Summary_taxes_test.php b/tests/Models/Reports/Summary_taxes_test.php index fbc0e2247..ddbb43cb5 100644 --- a/tests/Models/Reports/Summary_taxes_test.php +++ b/tests/Models/Reports/Summary_taxes_test.php @@ -14,7 +14,7 @@ class Summary_taxes_test extends CIUnitTestCase protected $migrate = true; protected $migrateOnce = true; - protected $refresh = true; + protected $refresh = false; protected $namespace = null; private array $seededSaleIds = []; From 8b0f8533dec40a7b377caa0c964831e76f7d78f1 Mon Sep 17 00:00:00 2001 From: objecttothis <17935339+objecttothis@users.noreply.github.com> Date: Mon, 24 Aug 2026 21:46:12 +0400 Subject: [PATCH 4/8] fix(email): update method call to camelCase for PSR-12 compliance (#4659) Corrected `check_encryption()` to `checkEncryption()` to align with coding standards. Signed-off-by: objecttothis <17935339+objecttothis@users.noreply.github.com> --- app/Libraries/Email_lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Libraries/Email_lib.php b/app/Libraries/Email_lib.php index 0f1f225d5..30ce547e5 100644 --- a/app/Libraries/Email_lib.php +++ b/app/Libraries/Email_lib.php @@ -29,7 +29,7 @@ class Email_lib $encrypter = Services::encrypter(); $smtp_pass = $this->config['smtp_pass'] ?? ''; - if (!empty($smtp_pass) && check_encryption()) { + if (!empty($smtp_pass) && checkEncryption()) { try { $smtp_pass = $encrypter->decrypt($smtp_pass); } catch (\EncryptionException $e) { From 84bddcdd887516134ae516e424074e30fcc9f085 Mon Sep 17 00:00:00 2001 From: objecttothis <17935339+objecttothis@users.noreply.github.com> Date: Thu, 27 Aug 2026 11:29:32 +0400 Subject: [PATCH 5/8] Feature admin account safeguards (#4657) fix(employees): harden permissions UI and access control - Prevent admins from removing their own minimum module grants (employees, home, office) - Add session_status check before session regeneration - Disable submit button and return no_access view for AJAX requests - Replace fade class with active-only for Bootstrap compatibility - Update permission toggle selectors to .module-toggle - Add error_cannot_remove_own_minimum_grant translations for Armenian, Bulgarian, Georgian, Swedish, and Ukrainian --------- Signed-off-by: objecttothis <17935339+objecttothis@users.noreply.github.com> --- app/Controllers/Employees.php | 11 ++++ app/Controllers/No_access.php | 2 +- app/Language/ar-EG/Employees.php | 91 +++++++++++++++--------------- app/Language/ar-LB/Employees.php | 91 +++++++++++++++--------------- app/Language/az/Employees.php | 91 +++++++++++++++--------------- app/Language/bg/Employees.php | 91 +++++++++++++++--------------- app/Language/bs/Employees.php | 91 +++++++++++++++--------------- app/Language/ckb/Employees.php | 91 +++++++++++++++--------------- app/Language/cs/Employees.php | 91 +++++++++++++++--------------- app/Language/da/Employees.php | 91 +++++++++++++++--------------- app/Language/de-CH/Employees.php | 91 +++++++++++++++--------------- app/Language/de-DE/Employees.php | 91 +++++++++++++++--------------- app/Language/el/Employees.php | 91 +++++++++++++++--------------- app/Language/en-GB/Employees.php | 91 +++++++++++++++--------------- app/Language/en/Employees.php | 91 +++++++++++++++--------------- app/Language/es-ES/Employees.php | 91 +++++++++++++++--------------- app/Language/es-MX/Employees.php | 91 +++++++++++++++--------------- app/Language/fa/Employees.php | 91 +++++++++++++++--------------- app/Language/fr/Employees.php | 91 +++++++++++++++--------------- app/Language/he/Employees.php | 91 +++++++++++++++--------------- app/Language/hr-HR/Employees.php | 91 +++++++++++++++--------------- app/Language/hu/Employees.php | 91 +++++++++++++++--------------- app/Language/hy/Employees.php | 91 +++++++++++++++--------------- app/Language/id/Employees.php | 91 +++++++++++++++--------------- app/Language/it/Employees.php | 91 +++++++++++++++--------------- app/Language/ka/Employees.php | 91 +++++++++++++++--------------- app/Language/km/Employees.php | 91 +++++++++++++++--------------- app/Language/lo/Employees.php | 91 +++++++++++++++--------------- app/Language/ml/Employees.php | 91 +++++++++++++++--------------- app/Language/nb/Employees.php | 91 +++++++++++++++--------------- app/Language/nl-BE/Employees.php | 91 +++++++++++++++--------------- app/Language/nl-NL/Employees.php | 91 +++++++++++++++--------------- app/Language/pl/Employees.php | 91 +++++++++++++++--------------- app/Language/pt-BR/Employees.php | 91 +++++++++++++++--------------- app/Language/ro/Employees.php | 91 +++++++++++++++--------------- app/Language/ru/Employees.php | 91 +++++++++++++++--------------- app/Language/sv/Employees.php | 91 +++++++++++++++--------------- app/Language/sw-KE/Employees.php | 91 +++++++++++++++--------------- app/Language/sw-TZ/Employees.php | 91 +++++++++++++++--------------- app/Language/ta/Employees.php | 91 +++++++++++++++--------------- app/Language/th/Employees.php | 91 +++++++++++++++--------------- app/Language/tl/Employees.php | 91 +++++++++++++++--------------- app/Language/tr/Employees.php | 91 +++++++++++++++--------------- app/Language/uk/Employees.php | 91 +++++++++++++++--------------- app/Language/ur/Employees.php | 91 +++++++++++++++--------------- app/Language/vi/Employees.php | 91 +++++++++++++++--------------- app/Language/zh-Hans/Employees.php | 91 +++++++++++++++--------------- app/Language/zh-Hant/Employees.php | 91 +++++++++++++++--------------- app/Models/Employee.php | 8 ++- app/Views/employees/form.php | 14 ++--- app/Views/no_access.php | 2 + 51 files changed, 2143 insertions(+), 2080 deletions(-) diff --git a/app/Controllers/Employees.php b/app/Controllers/Employees.php index 3b13114ce..e5c014af7 100644 --- a/app/Controllers/Employees.php +++ b/app/Controllers/Employees.php @@ -169,6 +169,17 @@ class Employees extends Persons } } + $minimumGrants = ['employees', 'home', 'office']; + $missingMinimumGrant = array_diff($minimumGrants, array_column($grantsArray, 'permission_id')); + + if ($isAdmin && $employeeId == $currentUser->person_id && !empty($missingMinimumGrant)) { + return $this->response->setJSON([ + 'success' => false, + 'message' => lang('Employees.error_cannot_remove_own_minimum_grant'), + 'id' => $employeeId + ]); + } + if (filter_var(getenv('DISALLOW_GRANT_CHANGE'), FILTER_VALIDATE_BOOLEAN) && $this->hasGrantsChanged($employeeId, $isAdmin, $currentUser, $grantsArray)) { return $this->response->setJSON([ diff --git a/app/Controllers/No_access.php b/app/Controllers/No_access.php index 4e1f909a2..c0bcdff14 100644 --- a/app/Controllers/No_access.php +++ b/app/Controllers/No_access.php @@ -35,7 +35,7 @@ class No_access extends BaseController $data['permission_id'] = $permission_id; $userInfo = $this->employee->get_logged_in_employee_info(); - if ($userInfo === false) { + if ($userInfo === false || $this->request->isAJAX()) { return view('no_access', $data); } diff --git a/app/Language/ar-EG/Employees.php b/app/Language/ar-EG/Employees.php index 240636615..1b90804f4 100644 --- a/app/Language/ar-EG/Employees.php +++ b/app/Language/ar-EG/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'المعلومات الأساسية للموظف', - 'cannot_be_deleted' => 'لايمكن حذف الموظفين ، واحد أو أكثر من المظفين قام بإجراء مبيعات :).', - 'change_employee' => '', - 'change_password' => 'تغيير كلمة المرور', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'هل أنت متأكد أنك تريد حذف الموظفين المختارين؟', - 'confirm_restore' => 'هل انت متاكد من استعادة الموظفين المحددين؟', - 'current_password' => 'كلمة المرور الحالية', - 'current_password_invalid' => 'كلمة المرور الحالية غير صحيحة.', - 'employee' => 'موظف', - 'error_adding_updating' => 'خطاء فى إضافة/تعديل موظف.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'لايمكن حذف المستخدم admin الخاص بنسخة العرض.', - 'error_grant_change_disallowed' => 'تم تعطيل تغييرات المنح في هذه النسخة التجريبية.', - 'error_password_change_disallowed' => 'تم تعطيل تغييرات كلمة المرور في هذه النسخة التجريبية.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'لايمكن تغيير بيانات المستخدم admin الخاص بنسخة العرض.', - 'language' => 'اللغة', - 'login_info' => 'معلومات دخول الموظف', - 'manager' => '', - 'new' => 'موظف جديد', - 'none_selected' => 'لم تختار أى من الموظفين للحذف.', - 'one_or_multiple' => 'موظف/موظفين', - 'password' => 'كلمة السر', - 'password_minlength' => 'كلمة السر يجب أن تكون 8 حروف على الأقل.', - 'password_must_match' => 'كلمتى السر لا تتطابقان.', - 'password_not_must_match' => 'كلمة المرور الحالية والجديدة يجب ان يكونو فريدين.', - 'password_required' => 'كلمة السر مطلوبة.', - 'permission_desc' => 'قم بإضافة الصلاحيات بلإختيار من الأسفل.', - 'permission_info' => 'اذونات المستخدمين', - 'repeat_password' => 'كلمة السر مرة اخرى', - 'subpermission_required' => 'يجب إختيار صلاحية واحدة على الأقل لكل قسم.', - 'successful_adding' => 'لقد تم إضافة الموظف بنجاح.', - 'successful_change_password' => 'تم تغيير كلمة المرور بنجاح.', - 'successful_deleted' => 'لقد تم حذف الموظف بنجاح', - 'successful_updating' => 'لقد تم تحديث بيانات الموظف بنجاح', - 'system_language' => 'لغة النظام', - 'unsuccessful_change_password' => 'فشل في تغيير كلمة المرور.', - 'update' => 'تحديث بيانات موظف', - 'username' => 'اسم المستخدم', - 'username_duplicate' => 'حساب المحدد هو موجود في قاعدة البيانات. نرجوا استخدام اسم حساب مختلف.', - 'username_minlength' => 'اسم المستخدم يجب أن يكون 5 حروف على الأقل.', - 'username_required' => 'اسم المستخدم مطلوب.', + 'administrator' => '', + 'basic_information' => 'المعلومات الأساسية للموظف', + 'cannot_be_deleted' => 'لايمكن حذف الموظفين ، واحد أو أكثر من المظفين قام بإجراء مبيعات :).', + 'change_employee' => '', + 'change_password' => 'تغيير كلمة المرور', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'هل أنت متأكد أنك تريد حذف الموظفين المختارين؟', + 'confirm_restore' => 'هل انت متاكد من استعادة الموظفين المحددين؟', + 'current_password' => 'كلمة المرور الحالية', + 'current_password_invalid' => 'كلمة المرور الحالية غير صحيحة.', + 'employee' => 'موظف', + 'error_adding_updating' => 'خطاء فى إضافة/تعديل موظف.', + 'error_cannot_remove_own_minimum_grant' => 'لا يمكنك إزالة الحد الأدنى من صلاحيات الوصول للوحدات الخاصة بك.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'لايمكن حذف المستخدم admin الخاص بنسخة العرض.', + 'error_grant_change_disallowed' => 'تم تعطيل تغييرات المنح في هذه النسخة التجريبية.', + 'error_password_change_disallowed' => 'تم تعطيل تغييرات كلمة المرور في هذه النسخة التجريبية.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'لايمكن تغيير بيانات المستخدم admin الخاص بنسخة العرض.', + 'language' => 'اللغة', + 'login_info' => 'معلومات دخول الموظف', + 'manager' => '', + 'new' => 'موظف جديد', + 'none_selected' => 'لم تختار أى من الموظفين للحذف.', + 'one_or_multiple' => 'موظف/موظفين', + 'password' => 'كلمة السر', + 'password_minlength' => 'كلمة السر يجب أن تكون 8 حروف على الأقل.', + 'password_must_match' => 'كلمتى السر لا تتطابقان.', + 'password_not_must_match' => 'كلمة المرور الحالية والجديدة يجب ان يكونو فريدين.', + 'password_required' => 'كلمة السر مطلوبة.', + 'permission_desc' => 'قم بإضافة الصلاحيات بلإختيار من الأسفل.', + 'permission_info' => 'اذونات المستخدمين', + 'repeat_password' => 'كلمة السر مرة اخرى', + 'subpermission_required' => 'يجب إختيار صلاحية واحدة على الأقل لكل قسم.', + 'successful_adding' => 'لقد تم إضافة الموظف بنجاح.', + 'successful_change_password' => 'تم تغيير كلمة المرور بنجاح.', + 'successful_deleted' => 'لقد تم حذف الموظف بنجاح', + 'successful_updating' => 'لقد تم تحديث بيانات الموظف بنجاح', + 'system_language' => 'لغة النظام', + 'unsuccessful_change_password' => 'فشل في تغيير كلمة المرور.', + 'update' => 'تحديث بيانات موظف', + 'username' => 'اسم المستخدم', + 'username_duplicate' => 'حساب المحدد هو موجود في قاعدة البيانات. نرجوا استخدام اسم حساب مختلف.', + 'username_minlength' => 'اسم المستخدم يجب أن يكون 5 حروف على الأقل.', + 'username_required' => 'اسم المستخدم مطلوب.', ]; diff --git a/app/Language/ar-LB/Employees.php b/app/Language/ar-LB/Employees.php index 240636615..134ef251a 100644 --- a/app/Language/ar-LB/Employees.php +++ b/app/Language/ar-LB/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'المعلومات الأساسية للموظف', - 'cannot_be_deleted' => 'لايمكن حذف الموظفين ، واحد أو أكثر من المظفين قام بإجراء مبيعات :).', - 'change_employee' => '', - 'change_password' => 'تغيير كلمة المرور', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'هل أنت متأكد أنك تريد حذف الموظفين المختارين؟', - 'confirm_restore' => 'هل انت متاكد من استعادة الموظفين المحددين؟', - 'current_password' => 'كلمة المرور الحالية', - 'current_password_invalid' => 'كلمة المرور الحالية غير صحيحة.', - 'employee' => 'موظف', - 'error_adding_updating' => 'خطاء فى إضافة/تعديل موظف.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'لايمكن حذف المستخدم admin الخاص بنسخة العرض.', - 'error_grant_change_disallowed' => 'تم تعطيل تغييرات المنح في هذه النسخة التجريبية.', - 'error_password_change_disallowed' => 'تم تعطيل تغييرات كلمة المرور في هذه النسخة التجريبية.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'لايمكن تغيير بيانات المستخدم admin الخاص بنسخة العرض.', - 'language' => 'اللغة', - 'login_info' => 'معلومات دخول الموظف', - 'manager' => '', - 'new' => 'موظف جديد', - 'none_selected' => 'لم تختار أى من الموظفين للحذف.', - 'one_or_multiple' => 'موظف/موظفين', - 'password' => 'كلمة السر', - 'password_minlength' => 'كلمة السر يجب أن تكون 8 حروف على الأقل.', - 'password_must_match' => 'كلمتى السر لا تتطابقان.', - 'password_not_must_match' => 'كلمة المرور الحالية والجديدة يجب ان يكونو فريدين.', - 'password_required' => 'كلمة السر مطلوبة.', - 'permission_desc' => 'قم بإضافة الصلاحيات بلإختيار من الأسفل.', - 'permission_info' => 'اذونات المستخدمين', - 'repeat_password' => 'كلمة السر مرة اخرى', - 'subpermission_required' => 'يجب إختيار صلاحية واحدة على الأقل لكل قسم.', - 'successful_adding' => 'لقد تم إضافة الموظف بنجاح.', - 'successful_change_password' => 'تم تغيير كلمة المرور بنجاح.', - 'successful_deleted' => 'لقد تم حذف الموظف بنجاح', - 'successful_updating' => 'لقد تم تحديث بيانات الموظف بنجاح', - 'system_language' => 'لغة النظام', - 'unsuccessful_change_password' => 'فشل في تغيير كلمة المرور.', - 'update' => 'تحديث بيانات موظف', - 'username' => 'اسم المستخدم', - 'username_duplicate' => 'حساب المحدد هو موجود في قاعدة البيانات. نرجوا استخدام اسم حساب مختلف.', - 'username_minlength' => 'اسم المستخدم يجب أن يكون 5 حروف على الأقل.', - 'username_required' => 'اسم المستخدم مطلوب.', + 'administrator' => '', + 'basic_information' => 'المعلومات الأساسية للموظف', + 'cannot_be_deleted' => 'لايمكن حذف الموظفين ، واحد أو أكثر من المظفين قام بإجراء مبيعات :).', + 'change_employee' => '', + 'change_password' => 'تغيير كلمة المرور', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'هل أنت متأكد أنك تريد حذف الموظفين المختارين؟', + 'confirm_restore' => 'هل انت متاكد من استعادة الموظفين المحددين؟', + 'current_password' => 'كلمة المرور الحالية', + 'current_password_invalid' => 'كلمة المرور الحالية غير صحيحة.', + 'employee' => 'موظف', + 'error_adding_updating' => 'خطاء فى إضافة/تعديل موظف.', + 'error_cannot_remove_own_minimum_grant' => 'ما فيك تشيل الحد الأدنى من صلاحيات الوصول للموديولات تبعتك.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'لايمكن حذف المستخدم admin الخاص بنسخة العرض.', + 'error_grant_change_disallowed' => 'تم تعطيل تغييرات المنح في هذه النسخة التجريبية.', + 'error_password_change_disallowed' => 'تم تعطيل تغييرات كلمة المرور في هذه النسخة التجريبية.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'لايمكن تغيير بيانات المستخدم admin الخاص بنسخة العرض.', + 'language' => 'اللغة', + 'login_info' => 'معلومات دخول الموظف', + 'manager' => '', + 'new' => 'موظف جديد', + 'none_selected' => 'لم تختار أى من الموظفين للحذف.', + 'one_or_multiple' => 'موظف/موظفين', + 'password' => 'كلمة السر', + 'password_minlength' => 'كلمة السر يجب أن تكون 8 حروف على الأقل.', + 'password_must_match' => 'كلمتى السر لا تتطابقان.', + 'password_not_must_match' => 'كلمة المرور الحالية والجديدة يجب ان يكونو فريدين.', + 'password_required' => 'كلمة السر مطلوبة.', + 'permission_desc' => 'قم بإضافة الصلاحيات بلإختيار من الأسفل.', + 'permission_info' => 'اذونات المستخدمين', + 'repeat_password' => 'كلمة السر مرة اخرى', + 'subpermission_required' => 'يجب إختيار صلاحية واحدة على الأقل لكل قسم.', + 'successful_adding' => 'لقد تم إضافة الموظف بنجاح.', + 'successful_change_password' => 'تم تغيير كلمة المرور بنجاح.', + 'successful_deleted' => 'لقد تم حذف الموظف بنجاح', + 'successful_updating' => 'لقد تم تحديث بيانات الموظف بنجاح', + 'system_language' => 'لغة النظام', + 'unsuccessful_change_password' => 'فشل في تغيير كلمة المرور.', + 'update' => 'تحديث بيانات موظف', + 'username' => 'اسم المستخدم', + 'username_duplicate' => 'حساب المحدد هو موجود في قاعدة البيانات. نرجوا استخدام اسم حساب مختلف.', + 'username_minlength' => 'اسم المستخدم يجب أن يكون 5 حروف على الأقل.', + 'username_required' => 'اسم المستخدم مطلوب.', ]; diff --git a/app/Language/az/Employees.php b/app/Language/az/Employees.php index 10ca9ab42..a9ac99058 100644 --- a/app/Language/az/Employees.php +++ b/app/Language/az/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Məlumat', - 'cannot_be_deleted' => 'Seçilmiş əməkdaş (lar) silinə bilməz, bir və ya birdən çox əməkdaş satışlar edib, əks halda siz öz hesabınızı silməyə çalışırsınız.', - 'change_employee' => '', - 'change_password' => 'Şifrəni Dəyiş', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Siz əminsiniz ki seçilmiş əməkdaşları silmək istəyirsiniz?', - 'confirm_restore' => 'Seçilmiş əməkdaşı (lar) yenidən bərpa etməyinizə əminsinizmi?', - 'current_password' => 'İndiki Şifrə', - 'current_password_invalid' => 'Hazirki Şifrə düzgün deyil.', - 'employee' => 'Əməkdaş', - 'error_adding_updating' => 'Əməkdaş əlavə etməsk və ya yeniləməsi baş vermədi.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Demo administrator istifadəçisini silə bilməzsiniz.', - 'error_grant_change_disallowed' => 'Bu demodan icazə dəyişiklikləri deaktivdir.', - 'error_password_change_disallowed' => 'Bu demodan şifrə dəyişiklikləri deaktivdir.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Demo administrator istifadəçisini dəyişə bilməzsiniz.', - 'language' => 'Dil', - 'login_info' => 'Daxil Ol', - 'manager' => '', - 'new' => 'Yeni Əməkdaş', - 'none_selected' => 'Silmək üçün heç bir işçi (lər) seçməmisiniz.', - 'one_or_multiple' => 'İşçi (lər)', - 'password' => 'Şifrə', - 'password_minlength' => 'Şifrə ən azı 8 simvol olmalıdır.', - 'password_must_match' => 'Şifrələr uyğun gəlmir.', - 'password_not_must_match' => 'Hazırki şifrə və yeni şifrə unikal olmalıdır.', - 'password_required' => 'Şifrə tələb olunur.', - 'permission_desc' => 'Modullara giriş imkanı vermək üçün aşağıdakı qutuları yoxlayın.', - 'permission_info' => 'İcazələr', - 'repeat_password' => 'Şifrəni yenidən təkrar edin', - 'subpermission_required' => 'Hər bir modul üçün ən azı bir qrant əlavə edin.', - 'successful_adding' => 'Əməkdaş müvəffəqiyyətə əlavə olundu.', - 'successful_change_password' => 'Şifrə müvəffəqiyyətlə dəyişildi.', - 'successful_deleted' => 'Siz uğurla sildiniz', - 'successful_updating' => 'Siz uğurla əməkdaşı yenilədiniz', - 'system_language' => 'Sistem Dili', - 'unsuccessful_change_password' => 'Şifrə dəyişməsi uğursuz oldu.', - 'update' => 'İşçini yeniləyin', - 'username' => 'İstifadəçi Adı', - 'username_duplicate' => '', - 'username_minlength' => 'İstifadəçi adı ən azı 5 simvol olmalıdır.', - 'username_required' => 'İstifadəçi adı tələb olunan sahədir.', + 'administrator' => '', + 'basic_information' => 'Məlumat', + 'cannot_be_deleted' => 'Seçilmiş əməkdaş (lar) silinə bilməz, bir və ya birdən çox əməkdaş satışlar edib, əks halda siz öz hesabınızı silməyə çalışırsınız.', + 'change_employee' => '', + 'change_password' => 'Şifrəni Dəyiş', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Siz əminsiniz ki seçilmiş əməkdaşları silmək istəyirsiniz?', + 'confirm_restore' => 'Seçilmiş əməkdaşı (lar) yenidən bərpa etməyinizə əminsinizmi?', + 'current_password' => 'İndiki Şifrə', + 'current_password_invalid' => 'Hazirki Şifrə düzgün deyil.', + 'employee' => 'Əməkdaş', + 'error_adding_updating' => 'Əməkdaş əlavə etməsk və ya yeniləməsi baş vermədi.', + 'error_cannot_remove_own_minimum_grant' => 'Öz minimum modul giriş qrantlarınızı silə bilməzsiniz.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Demo administrator istifadəçisini silə bilməzsiniz.', + 'error_grant_change_disallowed' => 'Bu demodan icazə dəyişiklikləri deaktivdir.', + 'error_password_change_disallowed' => 'Bu demodan şifrə dəyişiklikləri deaktivdir.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Demo administrator istifadəçisini dəyişə bilməzsiniz.', + 'language' => 'Dil', + 'login_info' => 'Daxil Ol', + 'manager' => '', + 'new' => 'Yeni Əməkdaş', + 'none_selected' => 'Silmək üçün heç bir işçi (lər) seçməmisiniz.', + 'one_or_multiple' => 'İşçi (lər)', + 'password' => 'Şifrə', + 'password_minlength' => 'Şifrə ən azı 8 simvol olmalıdır.', + 'password_must_match' => 'Şifrələr uyğun gəlmir.', + 'password_not_must_match' => 'Hazırki şifrə və yeni şifrə unikal olmalıdır.', + 'password_required' => 'Şifrə tələb olunur.', + 'permission_desc' => 'Modullara giriş imkanı vermək üçün aşağıdakı qutuları yoxlayın.', + 'permission_info' => 'İcazələr', + 'repeat_password' => 'Şifrəni yenidən təkrar edin', + 'subpermission_required' => 'Hər bir modul üçün ən azı bir qrant əlavə edin.', + 'successful_adding' => 'Əməkdaş müvəffəqiyyətə əlavə olundu.', + 'successful_change_password' => 'Şifrə müvəffəqiyyətlə dəyişildi.', + 'successful_deleted' => 'Siz uğurla sildiniz', + 'successful_updating' => 'Siz uğurla əməkdaşı yenilədiniz', + 'system_language' => 'Sistem Dili', + 'unsuccessful_change_password' => 'Şifrə dəyişməsi uğursuz oldu.', + 'update' => 'İşçini yeniləyin', + 'username' => 'İstifadəçi Adı', + 'username_duplicate' => '', + 'username_minlength' => 'İstifadəçi adı ən azı 5 simvol olmalıdır.', + 'username_required' => 'İstifadəçi adı tələb olunan sahədir.', ]; diff --git a/app/Language/bg/Employees.php b/app/Language/bg/Employees.php index 0d3253d19..3bc79b603 100644 --- a/app/Language/bg/Employees.php +++ b/app/Language/bg/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Информация', - 'cannot_be_deleted' => 'Невъзможно е да изтриете избрани служители, един или повече от тях са обработили продажби или се опитвате да изтриете профила си.', - 'change_employee' => '', - 'change_password' => 'Промяна на паролата', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Наистина ли искате да изтриете избрания служител (и)?', - 'confirm_restore' => 'Наистина ли искате да възстановите избраните служители?', - 'current_password' => 'Настояща парола', - 'current_password_invalid' => 'Текущата парола е невалидна.', - 'employee' => 'Служител', - 'error_adding_updating' => 'Добавянето или актуализирането на служителите е неуспешно.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Не може да изтриете Пробният Администратор.', - 'error_grant_change_disallowed' => 'Промените на правата са заключени в това демо.', - 'error_password_change_disallowed' => 'Промените на пароли са заключени в това демо.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Не може да промените Пробният Администратор.', - 'language' => 'Език', - 'login_info' => 'Login', - 'manager' => '', - 'new' => 'Нов служител', - 'none_selected' => 'Не сте избрали служител (и), който да изтриете.', - 'one_or_multiple' => 'служител (и)', - 'password' => 'Password', - 'password_minlength' => 'Паролата трябва да е с дължина най-малко 8 знака.', - 'password_must_match' => 'Паролите не съвпадат.', - 'password_not_must_match' => 'Текущата парола и новата парола трябва да са уникални.', - 'password_required' => 'Изисква се парола.', - 'permission_desc' => 'Поставете отметка в квадратчетата по-долу, за да получите достъп до модулите.', - 'permission_info' => 'Разрешения', - 'repeat_password' => 'Паролата отново', - 'subpermission_required' => 'Добавете поне един грант за всеки модул.', - 'successful_adding' => 'Служителя е добавен успешно.', - 'successful_change_password' => 'Промяна на паролата е успешна.', - 'successful_deleted' => 'Вие успешно сте изтрили', - 'successful_updating' => 'Успешно сте актуализирали служител', - 'system_language' => 'Системен език', - 'unsuccessful_change_password' => 'Промяната на паролата се провали.', - 'update' => 'Актуализиране на служителя', - 'username' => 'Потребител', - 'username_duplicate' => '', - 'username_minlength' => 'Потребителското име трябва да е с дължина най-малко 5 знака.', - 'username_required' => 'Потребителското име е задължително поле.', + 'administrator' => '', + 'basic_information' => 'Информация', + 'cannot_be_deleted' => 'Невъзможно е да изтриете избрани служители, един или повече от тях са обработили продажби или се опитвате да изтриете профила си.', + 'change_employee' => '', + 'change_password' => 'Промяна на паролата', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Наистина ли искате да изтриете избрания служител (и)?', + 'confirm_restore' => 'Наистина ли искате да възстановите избраните служители?', + 'current_password' => 'Настояща парола', + 'current_password_invalid' => 'Текущата парола е невалидна.', + 'employee' => 'Служител', + 'error_adding_updating' => 'Добавянето или актуализирането на служителите е неуспешно.', + 'error_cannot_remove_own_minimum_grant' => 'Не можете да премахнете минималните си права за достъп до модулите.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Не може да изтриете Пробният Администратор.', + 'error_grant_change_disallowed' => 'Промените на правата са заключени в това демо.', + 'error_password_change_disallowed' => 'Промените на пароли са заключени в това демо.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Не може да промените Пробният Администратор.', + 'language' => 'Език', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'Нов служител', + 'none_selected' => 'Не сте избрали служител (и), който да изтриете.', + 'one_or_multiple' => 'служител (и)', + 'password' => 'Password', + 'password_minlength' => 'Паролата трябва да е с дължина най-малко 8 знака.', + 'password_must_match' => 'Паролите не съвпадат.', + 'password_not_must_match' => 'Текущата парола и новата парола трябва да са уникални.', + 'password_required' => 'Изисква се парола.', + 'permission_desc' => 'Поставете отметка в квадратчетата по-долу, за да получите достъп до модулите.', + 'permission_info' => 'Разрешения', + 'repeat_password' => 'Паролата отново', + 'subpermission_required' => 'Добавете поне един грант за всеки модул.', + 'successful_adding' => 'Служителя е добавен успешно.', + 'successful_change_password' => 'Промяна на паролата е успешна.', + 'successful_deleted' => 'Вие успешно сте изтрили', + 'successful_updating' => 'Успешно сте актуализирали служител', + 'system_language' => 'Системен език', + 'unsuccessful_change_password' => 'Промяната на паролата се провали.', + 'update' => 'Актуализиране на служителя', + 'username' => 'Потребител', + 'username_duplicate' => '', + 'username_minlength' => 'Потребителското име трябва да е с дължина най-малко 5 знака.', + 'username_required' => 'Потребителското име е задължително поле.', ]; diff --git a/app/Language/bs/Employees.php b/app/Language/bs/Employees.php index c63e74422..440c7b631 100644 --- a/app/Language/bs/Employees.php +++ b/app/Language/bs/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Informacije', - 'cannot_be_deleted' => 'Nije moguće izbrisati odabrane zaposlenike, jedan ili više njih su obradili prodaju ili pokušavate izbrisati svoj nalog.', - 'change_employee' => '', - 'change_password' => 'Promijeni lozinku', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Da li ste zaista sigurni da želite da izbrišete izabranog zaposlenika?', - 'confirm_restore' => 'Da li ste sigurni da želite da vratite izabranog zaposlenika?', - 'current_password' => 'Trenutna lozinka', - 'current_password_invalid' => 'Trenutna lozinka je nevažeća.', - 'employee' => 'Zaposlenik', - 'error_adding_updating' => 'Dodavanje ili ažuriranje zaposlenika nije uspjelo.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Ne možete izbrisati demo korisnika administratora.', - 'error_grant_change_disallowed' => 'Izmene dozvola su onemogućene u ovoj demo verziji.', - 'error_password_change_disallowed' => 'Izmene lozinke su onemogućene u ovoj demo verziji.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Ne možete promijeniti korisnika demo administratora.', - 'language' => 'Jezik', - 'login_info' => 'Prijava', - 'manager' => '', - 'new' => 'Novi zaposlenik', - 'none_selected' => 'Nije izabran nijedan zaposlenik za brisanje.', - 'one_or_multiple' => 'Zaposlenici', - 'password' => 'Lozinka', - 'password_minlength' => 'Lozinka mora imati najmanje 8 znakova.', - 'password_must_match' => 'Lozinke se ne podudaraju.', - 'password_not_must_match' => 'Trenutna lozinka i nova lozinka moraju biti jedinstvene.', - 'password_required' => 'Lozinka je obavezna.', - 'permission_desc' => 'Označite polja u nastavku da biste odobrili pristup modulima.', - 'permission_info' => 'Dozvole', - 'repeat_password' => 'Ponovite lozinku', - 'subpermission_required' => 'Dodajte najmanje jedno odobrenje za svaki modul.', - 'successful_adding' => 'Uspješno ste dodali zaposlenika.', - 'successful_change_password' => 'Promjena lozinke je uspješna.', - 'successful_deleted' => 'Uspješno ste izbrisali zaposlenika', - 'successful_updating' => 'Uspješno ste ažurirali zaposlenika', - 'system_language' => 'Sistemski jezik', - 'unsuccessful_change_password' => 'Promjena lozinke nije uspjela.', - 'update' => 'Ažuriraj zaposlenika', - 'username' => 'Korisničko ime', - 'username_duplicate' => 'Korisničko ime zaposlenog je već u upotrebi. Molimo izaberite drugo.', - 'username_minlength' => 'Korisničko ime mora imati najmanje 5 znakova.', - 'username_required' => 'Korisničko ime je obavezno polje.', + 'administrator' => '', + 'basic_information' => 'Informacije', + 'cannot_be_deleted' => 'Nije moguće izbrisati odabrane zaposlenike, jedan ili više njih su obradili prodaju ili pokušavate izbrisati svoj nalog.', + 'change_employee' => '', + 'change_password' => 'Promijeni lozinku', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Da li ste zaista sigurni da želite da izbrišete izabranog zaposlenika?', + 'confirm_restore' => 'Da li ste sigurni da želite da vratite izabranog zaposlenika?', + 'current_password' => 'Trenutna lozinka', + 'current_password_invalid' => 'Trenutna lozinka je nevažeća.', + 'employee' => 'Zaposlenik', + 'error_adding_updating' => 'Dodavanje ili ažuriranje zaposlenika nije uspjelo.', + 'error_cannot_remove_own_minimum_grant' => 'Ne možete ukloniti sopstvena minimalna odobrenja pristupa modulima.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Ne možete izbrisati demo korisnika administratora.', + 'error_grant_change_disallowed' => 'Izmene dozvola su onemogućene u ovoj demo verziji.', + 'error_password_change_disallowed' => 'Izmene lozinke su onemogućene u ovoj demo verziji.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Ne možete promijeniti korisnika demo administratora.', + 'language' => 'Jezik', + 'login_info' => 'Prijava', + 'manager' => '', + 'new' => 'Novi zaposlenik', + 'none_selected' => 'Nije izabran nijedan zaposlenik za brisanje.', + 'one_or_multiple' => 'Zaposlenici', + 'password' => 'Lozinka', + 'password_minlength' => 'Lozinka mora imati najmanje 8 znakova.', + 'password_must_match' => 'Lozinke se ne podudaraju.', + 'password_not_must_match' => 'Trenutna lozinka i nova lozinka moraju biti jedinstvene.', + 'password_required' => 'Lozinka je obavezna.', + 'permission_desc' => 'Označite polja u nastavku da biste odobrili pristup modulima.', + 'permission_info' => 'Dozvole', + 'repeat_password' => 'Ponovite lozinku', + 'subpermission_required' => 'Dodajte najmanje jedno odobrenje za svaki modul.', + 'successful_adding' => 'Uspješno ste dodali zaposlenika.', + 'successful_change_password' => 'Promjena lozinke je uspješna.', + 'successful_deleted' => 'Uspješno ste izbrisali zaposlenika', + 'successful_updating' => 'Uspješno ste ažurirali zaposlenika', + 'system_language' => 'Sistemski jezik', + 'unsuccessful_change_password' => 'Promjena lozinke nije uspjela.', + 'update' => 'Ažuriraj zaposlenika', + 'username' => 'Korisničko ime', + 'username_duplicate' => 'Korisničko ime zaposlenog je već u upotrebi. Molimo izaberite drugo.', + 'username_minlength' => 'Korisničko ime mora imati najmanje 5 znakova.', + 'username_required' => 'Korisničko ime je obavezno polje.', ]; diff --git a/app/Language/ckb/Employees.php b/app/Language/ckb/Employees.php index 3dff5adc1..5f41e1708 100644 --- a/app/Language/ckb/Employees.php +++ b/app/Language/ckb/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'زانیاری', - 'cannot_be_deleted' => 'ناتوانیت کارمەند(ەکان)ی هەڵبژێردراو بسڕیتەوە، یەکێک یان زیاتر لەوانە فرۆشتنی پرۆسێس کردووە یان تۆ هەوڵی سڕینەوەی هەژمارەکەت دەدەیت.', - 'change_employee' => '', - 'change_password' => 'وشەی نهێنی بگۆڕە', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => '‌ئایا دڵنیای کە دەتەوێت کارمەند(ەکان)ی هەڵبژێردراو بسڕیتەوە؟', - 'confirm_restore' => 'ئایا دڵنیای کە دەتەوێت کارمەند(ەکان)ی هەڵبژێردراو بگەڕێنیتەوە؟', - 'current_password' => 'وشەی نهێنی ئێستا', - 'current_password_invalid' => 'وشەی نهێنی ئێستا نادروستە.', - 'employee' => 'فەرمانبەر', - 'error_adding_updating' => 'زیادکردن یان نوێکردنەوەی کارمەند سەرکەوتوو نەبوو.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'ناتوانیت بەکارهێنەری ئەدمینی تاقیکردنەوەیی بسڕیتەوە.', - 'error_grant_change_disallowed' => 'گۆڕینی دەستگەیشتن لە ئەم دیموێدا ناتوانی لێدرایت.', - 'error_password_change_disallowed' => 'گۆڕینی وشەی نهێنی لە ئەم دیموێدا ناتوانی لێدرایت.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'ناتوانیت بەکارهێنەری ئەدمین تاقیکردنەوەیی بگۆڕیت.', - 'language' => 'زمان', - 'login_info' => 'چوونەژوورەوە', - 'manager' => '', - 'new' => 'فەرمانبەری نوێ', - 'none_selected' => 'هیچ فەرمانبەرێک(کان)ت هەڵنەبژاردووە بۆ سڕینەوە.', - 'one_or_multiple' => 'فەرمانبەر(ان)', - 'password' => 'وشەی نهێنی', - 'password_minlength' => 'وشەی نهێنی دەبێت بەلایەنی کەمەوە ٨ پیت بێت.', - 'password_must_match' => 'وشەی نهێنییەکان هاوشێوە نین.', - 'password_not_must_match' => 'وشەی نهێنی ئێستا و وشەی نهێنی نوێ دەبێت بێهاوتابن.', - 'password_required' => 'وشەی نهێنی پێویستە.', - 'permission_desc' => 'چوارگۆشەکانی خوارەوە دیاری بکە بۆ پێدانی دەستگەیشتن بە مۆدیولەکان.', - 'permission_info' => 'ڕێپێدانەکان', - 'repeat_password' => 'دووبارە وشەی نهێنی', - 'subpermission_required' => 'بۆ هەر مۆدیولێک بەلایەنی کەمەوە یەک پێدان زیاد بکە.', - 'successful_adding' => 'زیادکردنی فەرمانبەر سەرکەوتوو بوو.', - 'successful_change_password' => 'گۆڕینی وشەی نهێنی سەرکەوتوو بوو.', - 'successful_deleted' => 'بەسەرکەوتووی سڕیتەوە', - 'successful_updating' => 'بەسەرکەوتوویی فەرمانبەرەکەت نوێ کردۆتەوە', - 'system_language' => 'زمانی سیستەم', - 'unsuccessful_change_password' => 'گۆڕینی وشەی نهێنی سەرکەوتوو نەبوو.', - 'update' => 'فەرمانبەر نوێبکەوە', - 'username' => 'ناوی بەکارهێنەر', - 'username_duplicate' => 'ناوی بەکارهێنەری فەرمانبەر پێشتر بەکارهاتووە. تکایە یەکێکی تر هەڵبژێرە.', - 'username_minlength' => 'ناوی بەکارهێنەر دەبێت لانیکەم ٥ پیت درێژ بێت.', - 'username_required' => 'ناوی بەکارهێنەر خانەیەکی پێویستە.', + 'administrator' => '', + 'basic_information' => 'زانیاری', + 'cannot_be_deleted' => 'ناتوانیت کارمەند(ەکان)ی هەڵبژێردراو بسڕیتەوە، یەکێک یان زیاتر لەوانە فرۆشتنی پرۆسێس کردووە یان تۆ هەوڵی سڕینەوەی هەژمارەکەت دەدەیت.', + 'change_employee' => '', + 'change_password' => 'وشەی نهێنی بگۆڕە', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '‌ئایا دڵنیای کە دەتەوێت کارمەند(ەکان)ی هەڵبژێردراو بسڕیتەوە؟', + 'confirm_restore' => 'ئایا دڵنیای کە دەتەوێت کارمەند(ەکان)ی هەڵبژێردراو بگەڕێنیتەوە؟', + 'current_password' => 'وشەی نهێنی ئێستا', + 'current_password_invalid' => 'وشەی نهێنی ئێستا نادروستە.', + 'employee' => 'فەرمانبەر', + 'error_adding_updating' => 'زیادکردن یان نوێکردنەوەی کارمەند سەرکەوتوو نەبوو.', + 'error_cannot_remove_own_minimum_grant' => 'ناتوانیت کەمترین پێدانی دەستگەیشتنی مۆدیولەکانی خۆت لاببەیت.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'ناتوانیت بەکارهێنەری ئەدمینی تاقیکردنەوەیی بسڕیتەوە.', + 'error_grant_change_disallowed' => 'گۆڕینی دەستگەیشتن لە ئەم دیموێدا ناتوانی لێدرایت.', + 'error_password_change_disallowed' => 'گۆڕینی وشەی نهێنی لە ئەم دیموێدا ناتوانی لێدرایت.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'ناتوانیت بەکارهێنەری ئەدمین تاقیکردنەوەیی بگۆڕیت.', + 'language' => 'زمان', + 'login_info' => 'چوونەژوورەوە', + 'manager' => '', + 'new' => 'فەرمانبەری نوێ', + 'none_selected' => 'هیچ فەرمانبەرێک(کان)ت هەڵنەبژاردووە بۆ سڕینەوە.', + 'one_or_multiple' => 'فەرمانبەر(ان)', + 'password' => 'وشەی نهێنی', + 'password_minlength' => 'وشەی نهێنی دەبێت بەلایەنی کەمەوە ٨ پیت بێت.', + 'password_must_match' => 'وشەی نهێنییەکان هاوشێوە نین.', + 'password_not_must_match' => 'وشەی نهێنی ئێستا و وشەی نهێنی نوێ دەبێت بێهاوتابن.', + 'password_required' => 'وشەی نهێنی پێویستە.', + 'permission_desc' => 'چوارگۆشەکانی خوارەوە دیاری بکە بۆ پێدانی دەستگەیشتن بە مۆدیولەکان.', + 'permission_info' => 'ڕێپێدانەکان', + 'repeat_password' => 'دووبارە وشەی نهێنی', + 'subpermission_required' => 'بۆ هەر مۆدیولێک بەلایەنی کەمەوە یەک پێدان زیاد بکە.', + 'successful_adding' => 'زیادکردنی فەرمانبەر سەرکەوتوو بوو.', + 'successful_change_password' => 'گۆڕینی وشەی نهێنی سەرکەوتوو بوو.', + 'successful_deleted' => 'بەسەرکەوتووی سڕیتەوە', + 'successful_updating' => 'بەسەرکەوتوویی فەرمانبەرەکەت نوێ کردۆتەوە', + 'system_language' => 'زمانی سیستەم', + 'unsuccessful_change_password' => 'گۆڕینی وشەی نهێنی سەرکەوتوو نەبوو.', + 'update' => 'فەرمانبەر نوێبکەوە', + 'username' => 'ناوی بەکارهێنەر', + 'username_duplicate' => 'ناوی بەکارهێنەری فەرمانبەر پێشتر بەکارهاتووە. تکایە یەکێکی تر هەڵبژێرە.', + 'username_minlength' => 'ناوی بەکارهێنەر دەبێت لانیکەم ٥ پیت درێژ بێت.', + 'username_required' => 'ناوی بەکارهێنەر خانەیەکی پێویستە.', ]; diff --git a/app/Language/cs/Employees.php b/app/Language/cs/Employees.php index 9d5041001..8ac03593f 100644 --- a/app/Language/cs/Employees.php +++ b/app/Language/cs/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => '', - 'cannot_be_deleted' => '', - 'change_employee' => '', - 'change_password' => '', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => '', - 'confirm_restore' => '', - 'current_password' => '', - 'current_password_invalid' => '', - 'employee' => '', - 'error_adding_updating' => '', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => '', - 'error_grant_change_disallowed' => 'Změny oprávnění jsou v tomto demonu zakázány.', - 'error_password_change_disallowed' => 'Změny hesla jsou v tomto demonu zakázány.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => '', - 'language' => '', - 'login_info' => '', - 'manager' => '', - 'new' => '', - 'none_selected' => '', - 'one_or_multiple' => '', - 'password' => '', - 'password_minlength' => '', - 'password_must_match' => '', - 'password_not_must_match' => '', - 'password_required' => '', - 'permission_desc' => '', - 'permission_info' => '', - 'repeat_password' => '', - 'subpermission_required' => '', - 'successful_adding' => '', - 'successful_change_password' => '', - 'successful_deleted' => '', - 'successful_updating' => '', - 'system_language' => '', - 'unsuccessful_change_password' => '', - 'update' => '', - 'username' => '', - 'username_duplicate' => '', - 'username_minlength' => '', - 'username_required' => '', + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_cannot_remove_own_minimum_grant' => 'Nemůžete odebrat svá vlastní minimální oprávnění pro přístup k modulům.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'Změny oprávnění jsou v tomto demonu zakázány.', + 'error_password_change_disallowed' => 'Změny hesla jsou v tomto demonu zakázány.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/da/Employees.php b/app/Language/da/Employees.php index e79280594..a9a5d7180 100644 --- a/app/Language/da/Employees.php +++ b/app/Language/da/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Information', - 'cannot_be_deleted' => 'Unable to delete selected employee(s), one or more of the has processed sales or you are trying to delete your account.', - 'change_employee' => '', - 'change_password' => 'Change Password', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Are you sure you want to delete the selected employee(s)?', - 'confirm_restore' => 'Are you sure you want to restore selected employee(s)?', - 'current_password' => 'Current Password', - 'current_password_invalid' => 'Current Password is invalid.', - 'employee' => 'Employee', - 'error_adding_updating' => 'Employee add or update failed.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'You can not delete the demo admin user.', - 'error_grant_change_disallowed' => 'Rettighedsændringer er deaktiveret i denne demo.', - 'error_password_change_disallowed' => 'Adgangskodeændringer er deaktiveret i denne demo.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'You can not change the demo admin user.', - 'language' => 'Language', - 'login_info' => 'Login', - 'manager' => '', - 'new' => 'New Employee', - 'none_selected' => 'You have not selected any employee(s) to delete.', - 'one_or_multiple' => 'employee(s)', - 'password' => 'Password', - 'password_minlength' => 'Password must be at least 8 characters in length.', - 'password_must_match' => 'Passwords do not match.', - 'password_not_must_match' => 'Current password and new password must be unique.', - 'password_required' => 'Password is required.', - 'permission_desc' => 'Check the boxes below to grant access to modules.', - 'permission_info' => 'Permissions', - 'repeat_password' => 'Password Again', - 'subpermission_required' => 'Add at least one grant for each module.', - 'successful_adding' => 'Employee add successful.', - 'successful_change_password' => 'Password change successful.', - 'successful_deleted' => 'You have successfully deleted', - 'successful_updating' => 'You have successfully updated employee', - 'system_language' => 'System Language', - 'unsuccessful_change_password' => 'Password change failed.', - 'update' => 'Update Employee', - 'username' => 'Username', - 'username_duplicate' => '', - 'username_minlength' => 'Username must be at least 5 characters in length.', - 'username_required' => 'Username is a required field.', + 'administrator' => '', + 'basic_information' => 'Information', + 'cannot_be_deleted' => 'Unable to delete selected employee(s), one or more of the has processed sales or you are trying to delete your account.', + 'change_employee' => '', + 'change_password' => 'Change Password', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Are you sure you want to delete the selected employee(s)?', + 'confirm_restore' => 'Are you sure you want to restore selected employee(s)?', + 'current_password' => 'Current Password', + 'current_password_invalid' => 'Current Password is invalid.', + 'employee' => 'Employee', + 'error_adding_updating' => 'Employee add or update failed.', + 'error_cannot_remove_own_minimum_grant' => 'Du kan ikke fjerne dine egne minimumsrettigheder til moduladgang.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'You can not delete the demo admin user.', + 'error_grant_change_disallowed' => 'Rettighedsændringer er deaktiveret i denne demo.', + 'error_password_change_disallowed' => 'Adgangskodeændringer er deaktiveret i denne demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'You can not change the demo admin user.', + 'language' => 'Language', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'New Employee', + 'none_selected' => 'You have not selected any employee(s) to delete.', + 'one_or_multiple' => 'employee(s)', + 'password' => 'Password', + 'password_minlength' => 'Password must be at least 8 characters in length.', + 'password_must_match' => 'Passwords do not match.', + 'password_not_must_match' => 'Current password and new password must be unique.', + 'password_required' => 'Password is required.', + 'permission_desc' => 'Check the boxes below to grant access to modules.', + 'permission_info' => 'Permissions', + 'repeat_password' => 'Password Again', + 'subpermission_required' => 'Add at least one grant for each module.', + 'successful_adding' => 'Employee add successful.', + 'successful_change_password' => 'Password change successful.', + 'successful_deleted' => 'You have successfully deleted', + 'successful_updating' => 'You have successfully updated employee', + 'system_language' => 'System Language', + 'unsuccessful_change_password' => 'Password change failed.', + 'update' => 'Update Employee', + 'username' => 'Username', + 'username_duplicate' => '', + 'username_minlength' => 'Username must be at least 5 characters in length.', + 'username_required' => 'Username is a required field.', ]; diff --git a/app/Language/de-CH/Employees.php b/app/Language/de-CH/Employees.php index 7c072af79..de8068828 100644 --- a/app/Language/de-CH/Employees.php +++ b/app/Language/de-CH/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Mitarbeiter-Information', - 'cannot_be_deleted' => 'Konnte gewählten Mitarbeiter nicht löschen, einer oder mehrere weisen Verkäufe aus.', - 'change_employee' => '', - 'change_password' => '', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Wollen Sie diesen Mitarbeiter wirklich löschen?', - 'confirm_restore' => '', - 'current_password' => '', - 'current_password_invalid' => '', - 'employee' => 'Mitarbeiter', - 'error_adding_updating' => 'Fehler beim Hinzufügen/Ändern', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Sie können den Admin nicht löschen', - 'error_grant_change_disallowed' => 'Berechtigungsänderungen sind in dieser Demo deaktiviert.', - 'error_password_change_disallowed' => 'Passwortänderungen sind in dieser Demo deaktiviert.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Sie können den Admin nicht ändern', - 'language' => '', - 'login_info' => 'Mitarbeiter Login', - 'manager' => '', - 'new' => 'Neuer Mitarbeiter', - 'none_selected' => 'Sie haben keinen Mitarbeiter zum Löschen gewählt', - 'one_or_multiple' => 'Mitarbeiter', - 'password' => 'Passwort', - 'password_minlength' => 'Passwort muss mindestens 8 Zeichen lang sein', - 'password_must_match' => 'Passwörter passen nicht überein', - 'password_not_must_match' => '', - 'password_required' => 'Passwort ist erforderlich', - 'permission_desc' => 'Klicken Sie unten, um die jeweiligen Zugangsrechte zu aktivieren', - 'permission_info' => 'Mitarbeiter Zugangsrechte', - 'repeat_password' => 'Wiederhole Passwort', - 'subpermission_required' => 'Fügen Sie mindestens ein Zugangsrecht pro Modul hinzu', - 'successful_adding' => 'Hinzufügen erfolgreich', - 'successful_change_password' => '', - 'successful_deleted' => 'Löschung erfolgreich', - 'successful_updating' => 'Änderung erfolgreich', - 'system_language' => '', - 'unsuccessful_change_password' => '', - 'update' => 'Mitarbeiter ändern', - 'username' => 'Benutzername', - 'username_duplicate' => '', - 'username_minlength' => 'Benutzername muss mindestens 5 Zeichen lang sein', - 'username_required' => 'Benutzername ist erforderlich', + 'administrator' => '', + 'basic_information' => 'Mitarbeiter-Information', + 'cannot_be_deleted' => 'Konnte gewählten Mitarbeiter nicht löschen, einer oder mehrere weisen Verkäufe aus.', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Wollen Sie diesen Mitarbeiter wirklich löschen?', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => 'Mitarbeiter', + 'error_adding_updating' => 'Fehler beim Hinzufügen/Ändern', + 'error_cannot_remove_own_minimum_grant' => 'Sie können Ihre eigenen minimalen Zugangsrechte für Module nicht entfernen.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Sie können den Admin nicht löschen', + 'error_grant_change_disallowed' => 'Berechtigungsänderungen sind in dieser Demo deaktiviert.', + 'error_password_change_disallowed' => 'Passwortänderungen sind in dieser Demo deaktiviert.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Sie können den Admin nicht ändern', + 'language' => '', + 'login_info' => 'Mitarbeiter Login', + 'manager' => '', + 'new' => 'Neuer Mitarbeiter', + 'none_selected' => 'Sie haben keinen Mitarbeiter zum Löschen gewählt', + 'one_or_multiple' => 'Mitarbeiter', + 'password' => 'Passwort', + 'password_minlength' => 'Passwort muss mindestens 8 Zeichen lang sein', + 'password_must_match' => 'Passwörter passen nicht überein', + 'password_not_must_match' => '', + 'password_required' => 'Passwort ist erforderlich', + 'permission_desc' => 'Klicken Sie unten, um die jeweiligen Zugangsrechte zu aktivieren', + 'permission_info' => 'Mitarbeiter Zugangsrechte', + 'repeat_password' => 'Wiederhole Passwort', + 'subpermission_required' => 'Fügen Sie mindestens ein Zugangsrecht pro Modul hinzu', + 'successful_adding' => 'Hinzufügen erfolgreich', + 'successful_change_password' => '', + 'successful_deleted' => 'Löschung erfolgreich', + 'successful_updating' => 'Änderung erfolgreich', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => 'Mitarbeiter ändern', + 'username' => 'Benutzername', + 'username_duplicate' => '', + 'username_minlength' => 'Benutzername muss mindestens 5 Zeichen lang sein', + 'username_required' => 'Benutzername ist erforderlich', ]; diff --git a/app/Language/de-DE/Employees.php b/app/Language/de-DE/Employees.php index 92e7bfd4f..30bf3ef60 100644 --- a/app/Language/de-DE/Employees.php +++ b/app/Language/de-DE/Employees.php @@ -1,49 +1,50 @@ 'Administrator', - 'basic_information' => 'Mitarbeiter-Information', - 'cannot_be_deleted' => 'Konnte gewählten Mitarbeiter nicht löschen, einer oder mehrere weisen Verkäufe aus.', - 'change_employee' => 'Mitarbeiter ändern', - 'change_password' => 'Passwort Ändern', - 'clerk' => 'Angestellter', - 'commission' => 'Provision', - 'confirm_delete' => 'Wollen Sie diesen Mitarbeiter wirklich löschen?', - 'confirm_restore' => 'Möchten Sie die ausgewählten Mitarbeiter wiederherstellen?', - 'current_password' => 'Aktuelles Passwort', - 'current_password_invalid' => 'Aktuelles Passwort ist ungültig.', - 'employee' => 'Mitarbeiter', - 'error_adding_updating' => 'Fehler beim Hinzufügen/Ändern.', - 'error_deleting_admin' => 'Sie können keinen Administrator löschen.', - 'error_deleting_demo_admin' => 'Sie können den Demo-Administrator nicht löschen.', - 'error_grant_change_disallowed' => 'Berechtigungsänderungen sind in dieser Demo deaktiviert.', - 'error_password_change_disallowed' => 'Passwortänderungen sind in dieser Demo deaktiviert.', - 'error_updating_admin' => 'Sie können keinen Administrator ändern.', - 'error_updating_demo_admin' => 'Sie können den Demo-Administrator nicht verändern.', - 'language' => 'Sprache', - 'login_info' => 'Mitarbeiter Login', - 'manager' => 'Manager', - 'new' => 'Neuer Mitarbeiter', - 'none_selected' => 'Sie haben keine Mitarbeiter zum Löschen gewählt.', - 'one_or_multiple' => 'Mitarbeiter', - 'password' => 'Passwort', - 'password_minlength' => 'Das Passwort muss mindestens 8 Zeichen lang sein.', - 'password_must_match' => 'Passwörter stimmen nicht überein.', - 'password_not_must_match' => 'Altes und neues Passwort dürfen nicht gleich sein.', - 'password_required' => 'Passwort ist erforderlich.', - 'permission_desc' => 'Klicken Sie unten, um die jeweiligen Zugangsrechte zu aktivieren.', - 'permission_info' => 'Mitarbeiter Zugangsrechte', - 'repeat_password' => 'Wiederhole Passwort', - 'subpermission_required' => 'Fügen Sie mindestens ein Zugangsrecht pro Modul hinzu.', - 'successful_adding' => 'Hinzufügen erfolgreich.', - 'successful_change_password' => 'Passwort erfolgreich geändert.', - 'successful_deleted' => 'Löschung erfolgreich', - 'successful_updating' => 'Änderung erfolgreich', - 'system_language' => 'System Sprache', - 'unsuccessful_change_password' => 'Passwort ändern fehlgeschlagen.', - 'update' => 'Mitarbeiter ändern', - 'username' => 'Benutzername', - 'username_duplicate' => '', - 'username_minlength' => 'Benutzername muss mindestens 5 Zeichen lang sein.', - 'username_required' => 'Benutzername ist erforderlich.', + 'administrator' => 'Administrator', + 'basic_information' => 'Mitarbeiter-Information', + 'cannot_be_deleted' => 'Konnte gewählten Mitarbeiter nicht löschen, einer oder mehrere weisen Verkäufe aus.', + 'change_employee' => 'Mitarbeiter ändern', + 'change_password' => 'Passwort Ändern', + 'clerk' => 'Angestellter', + 'commission' => 'Provision', + 'confirm_delete' => 'Wollen Sie diesen Mitarbeiter wirklich löschen?', + 'confirm_restore' => 'Möchten Sie die ausgewählten Mitarbeiter wiederherstellen?', + 'current_password' => 'Aktuelles Passwort', + 'current_password_invalid' => 'Aktuelles Passwort ist ungültig.', + 'employee' => 'Mitarbeiter', + 'error_adding_updating' => 'Fehler beim Hinzufügen/Ändern.', + 'error_cannot_remove_own_minimum_grant' => 'Sie können Ihre eigenen minimalen Zugangsrechte für Module nicht entfernen.', + 'error_deleting_admin' => 'Sie können keinen Administrator löschen.', + 'error_deleting_demo_admin' => 'Sie können den Demo-Administrator nicht löschen.', + 'error_grant_change_disallowed' => 'Berechtigungsänderungen sind in dieser Demo deaktiviert.', + 'error_password_change_disallowed' => 'Passwortänderungen sind in dieser Demo deaktiviert.', + 'error_updating_admin' => 'Sie können keinen Administrator ändern.', + 'error_updating_demo_admin' => 'Sie können den Demo-Administrator nicht verändern.', + 'language' => 'Sprache', + 'login_info' => 'Mitarbeiter Login', + 'manager' => 'Manager', + 'new' => 'Neuer Mitarbeiter', + 'none_selected' => 'Sie haben keine Mitarbeiter zum Löschen gewählt.', + 'one_or_multiple' => 'Mitarbeiter', + 'password' => 'Passwort', + 'password_minlength' => 'Das Passwort muss mindestens 8 Zeichen lang sein.', + 'password_must_match' => 'Passwörter stimmen nicht überein.', + 'password_not_must_match' => 'Altes und neues Passwort dürfen nicht gleich sein.', + 'password_required' => 'Passwort ist erforderlich.', + 'permission_desc' => 'Klicken Sie unten, um die jeweiligen Zugangsrechte zu aktivieren.', + 'permission_info' => 'Mitarbeiter Zugangsrechte', + 'repeat_password' => 'Wiederhole Passwort', + 'subpermission_required' => 'Fügen Sie mindestens ein Zugangsrecht pro Modul hinzu.', + 'successful_adding' => 'Hinzufügen erfolgreich.', + 'successful_change_password' => 'Passwort erfolgreich geändert.', + 'successful_deleted' => 'Löschung erfolgreich', + 'successful_updating' => 'Änderung erfolgreich', + 'system_language' => 'System Sprache', + 'unsuccessful_change_password' => 'Passwort ändern fehlgeschlagen.', + 'update' => 'Mitarbeiter ändern', + 'username' => 'Benutzername', + 'username_duplicate' => '', + 'username_minlength' => 'Benutzername muss mindestens 5 Zeichen lang sein.', + 'username_required' => 'Benutzername ist erforderlich.', ]; diff --git a/app/Language/el/Employees.php b/app/Language/el/Employees.php index 81991cc1f..2731458cc 100644 --- a/app/Language/el/Employees.php +++ b/app/Language/el/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => '', - 'cannot_be_deleted' => '', - 'change_employee' => '', - 'change_password' => '', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => '', - 'confirm_restore' => '', - 'current_password' => '', - 'current_password_invalid' => '', - 'employee' => '', - 'error_adding_updating' => '', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => '', - 'error_grant_change_disallowed' => 'Οι αλλαγές δικαιωμάτων είναι απενεργοποιημένες σε αυτό το demo.', - 'error_password_change_disallowed' => 'Οι αλλαγές κωδικού πρόσβασης είναι απενεργοποιημένες σε αυτό το demo.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => '', - 'language' => '', - 'login_info' => '', - 'manager' => '', - 'new' => '', - 'none_selected' => '', - 'one_or_multiple' => '', - 'password' => '', - 'password_minlength' => '', - 'password_must_match' => '', - 'password_not_must_match' => '', - 'password_required' => '', - 'permission_desc' => '', - 'permission_info' => '', - 'repeat_password' => '', - 'subpermission_required' => '', - 'successful_adding' => '', - 'successful_change_password' => '', - 'successful_deleted' => '', - 'successful_updating' => '', - 'system_language' => '', - 'unsuccessful_change_password' => '', - 'update' => '', - 'username' => '', - 'username_duplicate' => '', - 'username_minlength' => '', - 'username_required' => '', + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_cannot_remove_own_minimum_grant' => 'Δεν μπορείτε να αφαιρέσετε τα ελάχιστα δικαιώματα πρόσβασης των δικών σας μονάδων.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'Οι αλλαγές δικαιωμάτων είναι απενεργοποιημένες σε αυτό το demo.', + 'error_password_change_disallowed' => 'Οι αλλαγές κωδικού πρόσβασης είναι απενεργοποιημένες σε αυτό το demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/en-GB/Employees.php b/app/Language/en-GB/Employees.php index ef4b09b19..1d5871e6e 100644 --- a/app/Language/en-GB/Employees.php +++ b/app/Language/en-GB/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Information', - 'cannot_be_deleted' => 'Unable to delete selected Employee(s), one or more of them has processed sales or you are trying to delete your account.', - 'change_employee' => '', - 'change_password' => 'Change Password', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Are you sure you want to delete the selected Employee(s)?', - 'confirm_restore' => 'Are you sure you want to restore the selected Employee(s)?', - 'current_password' => 'Current Password', - 'current_password_invalid' => 'Current Password is invalid.', - 'employee' => 'Employee', - 'error_adding_updating' => 'Employee add or update failed.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'You cannot delete the demo admin user.', - 'error_grant_change_disallowed' => 'Grant changes are disabled in this demo.', - 'error_password_change_disallowed' => 'Password changes are disabled in this demo.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'You cannot change the demo admin user.', - 'language' => 'Language', - 'login_info' => 'Login', - 'manager' => '', - 'new' => 'New Employee', - 'none_selected' => 'You have not selected any Employee(s) to delete.', - 'one_or_multiple' => 'Employee(s)', - 'password' => 'Password', - 'password_minlength' => 'Passwords must be at least 8 characters.', - 'password_must_match' => 'Passwords do not match.', - 'password_not_must_match' => 'Current password and new password must be unique.', - 'password_required' => 'Password is required.', - 'permission_desc' => 'Check the boxes below to grant access to modules.', - 'permission_info' => 'Permissions', - 'repeat_password' => 'Password Again', - 'subpermission_required' => 'Add at least one grant for each module.', - 'successful_adding' => 'Employee add successful.', - 'successful_change_password' => 'Password change successful.', - 'successful_deleted' => 'You have successfully deleted Employee', - 'successful_updating' => 'You have successfully updated Employee', - 'system_language' => 'System Language', - 'unsuccessful_change_password' => 'Password change failed.', - 'update' => 'Update Employee', - 'username' => 'Username', - 'username_duplicate' => 'Employee username is already in use. Please choose another one.', - 'username_minlength' => 'Username must be at least 5 characters.', - 'username_required' => 'Username is a required field.', + 'administrator' => '', + 'basic_information' => 'Information', + 'cannot_be_deleted' => 'Unable to delete selected Employee(s), one or more of them has processed sales or you are trying to delete your account.', + 'change_employee' => '', + 'change_password' => 'Change Password', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Are you sure you want to delete the selected Employee(s)?', + 'confirm_restore' => 'Are you sure you want to restore the selected Employee(s)?', + 'current_password' => 'Current Password', + 'current_password_invalid' => 'Current Password is invalid.', + 'employee' => 'Employee', + 'error_adding_updating' => 'Employee add or update failed.', + 'error_cannot_remove_own_minimum_grant' => 'You cannot remove your own minimum module access grants.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'You cannot delete the demo admin user.', + 'error_grant_change_disallowed' => 'Grant changes are disabled in this demo.', + 'error_password_change_disallowed' => 'Password changes are disabled in this demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'You cannot change the demo admin user.', + 'language' => 'Language', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'New Employee', + 'none_selected' => 'You have not selected any Employee(s) to delete.', + 'one_or_multiple' => 'Employee(s)', + 'password' => 'Password', + 'password_minlength' => 'Passwords must be at least 8 characters.', + 'password_must_match' => 'Passwords do not match.', + 'password_not_must_match' => 'Current password and new password must be unique.', + 'password_required' => 'Password is required.', + 'permission_desc' => 'Check the boxes below to grant access to modules.', + 'permission_info' => 'Permissions', + 'repeat_password' => 'Password Again', + 'subpermission_required' => 'Add at least one grant for each module.', + 'successful_adding' => 'Employee add successful.', + 'successful_change_password' => 'Password change successful.', + 'successful_deleted' => 'You have successfully deleted Employee', + 'successful_updating' => 'You have successfully updated Employee', + 'system_language' => 'System Language', + 'unsuccessful_change_password' => 'Password change failed.', + 'update' => 'Update Employee', + 'username' => 'Username', + 'username_duplicate' => 'Employee username is already in use. Please choose another one.', + 'username_minlength' => 'Username must be at least 5 characters.', + 'username_required' => 'Username is a required field.', ]; diff --git a/app/Language/en/Employees.php b/app/Language/en/Employees.php index cb61e08b3..d76b2eae1 100644 --- a/app/Language/en/Employees.php +++ b/app/Language/en/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Information', - 'cannot_be_deleted' => 'Unable to delete selected employee(s), one or more of the has processed sales or you are trying to delete your account.', - 'change_employee' => '', - 'change_password' => 'Change Password', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Are you sure you want to delete the selected employee(s)?', - 'confirm_restore' => 'Are you sure you want to restore selected employee(s)?', - 'current_password' => 'Current Password', - 'current_password_invalid' => 'Current Password is invalid.', - 'employee' => 'Employee', - 'error_adding_updating' => 'Employee add or update failed.', - 'error_deleting_admin' => 'You cannot delete an admin user.', - 'error_deleting_demo_admin' => 'You can not delete the demo admin user.', - 'error_grant_change_disallowed' => 'Grant changes are disabled in this demo.', - 'error_password_change_disallowed' => 'Password changes are disabled in this demo.', - 'error_updating_admin' => 'You cannot modify an admin user.', - 'error_updating_demo_admin' => 'You can not change the demo admin user.', - 'language' => 'Language', - 'login_info' => 'Login', - 'manager' => '', - 'new' => 'New Employee', - 'none_selected' => 'You have not selected any employee(s) to delete.', - 'one_or_multiple' => 'employee(s)', - 'password' => 'Password', - 'password_minlength' => 'Password must be at least 8 characters in length.', - 'password_must_match' => 'Passwords do not match.', - 'password_not_must_match' => 'Current password and new password must be unique.', - 'password_required' => 'Password is required.', - 'permission_desc' => 'Check the boxes below to grant access to modules.', - 'permission_info' => 'Permissions', - 'repeat_password' => 'Password Again', - 'subpermission_required' => 'Add at least one grant for each module.', - 'successful_adding' => 'Employee add successful.', - 'successful_change_password' => 'Password change successful.', - 'successful_deleted' => 'You have successfully deleted', - 'successful_updating' => 'You have successfully updated employee', - 'system_language' => 'System Language', - 'unsuccessful_change_password' => 'Password change failed.', - 'update' => 'Update Employee', - 'username' => 'Username', - 'username_duplicate' => 'Employee username is already in use. Please choose another one.', - 'username_minlength' => 'Username must be at least 5 characters in length.', - 'username_required' => 'Username is a required field.', + 'administrator' => '', + 'basic_information' => 'Information', + 'cannot_be_deleted' => 'Unable to delete selected employee(s), one or more of the has processed sales or you are trying to delete your account.', + 'change_employee' => '', + 'change_password' => 'Change Password', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Are you sure you want to delete the selected employee(s)?', + 'confirm_restore' => 'Are you sure you want to restore selected employee(s)?', + 'current_password' => 'Current Password', + 'current_password_invalid' => 'Current Password is invalid.', + 'employee' => 'Employee', + 'error_adding_updating' => 'Employee add or update failed.', + 'error_cannot_remove_own_minimum_grant' => 'You cannot remove your own minimum module access grants.', + 'error_deleting_admin' => 'You cannot delete an admin user.', + 'error_deleting_demo_admin' => 'You can not delete the demo admin user.', + 'error_grant_change_disallowed' => 'Grant changes are disabled in this demo.', + 'error_password_change_disallowed' => 'Password changes are disabled in this demo.', + 'error_updating_admin' => 'You cannot modify an admin user.', + 'error_updating_demo_admin' => 'You can not change the demo admin user.', + 'language' => 'Language', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'New Employee', + 'none_selected' => 'You have not selected any employee(s) to delete.', + 'one_or_multiple' => 'employee(s)', + 'password' => 'Password', + 'password_minlength' => 'Password must be at least 8 characters in length.', + 'password_must_match' => 'Passwords do not match.', + 'password_not_must_match' => 'Current password and new password must be unique.', + 'password_required' => 'Password is required.', + 'permission_desc' => 'Check the boxes below to grant access to modules.', + 'permission_info' => 'Permissions', + 'repeat_password' => 'Password Again', + 'subpermission_required' => 'Add at least one grant for each module.', + 'successful_adding' => 'Employee add successful.', + 'successful_change_password' => 'Password change successful.', + 'successful_deleted' => 'You have successfully deleted', + 'successful_updating' => 'You have successfully updated employee', + 'system_language' => 'System Language', + 'unsuccessful_change_password' => 'Password change failed.', + 'update' => 'Update Employee', + 'username' => 'Username', + 'username_duplicate' => 'Employee username is already in use. Please choose another one.', + 'username_minlength' => 'Username must be at least 5 characters in length.', + 'username_required' => 'Username is a required field.', ]; diff --git a/app/Language/es-ES/Employees.php b/app/Language/es-ES/Employees.php index 0fa270cc5..3cebec26d 100644 --- a/app/Language/es-ES/Employees.php +++ b/app/Language/es-ES/Employees.php @@ -1,49 +1,50 @@ 'Administrador', - 'basic_information' => 'Información Básica de Empleados', - 'cannot_be_deleted' => 'No se pudieron borrar empleados. Uno o más empleados tiene ventas procesadas o estás tratando de borrarte a tí mismo(a).', - 'change_employee' => 'Cambio de Empleado', - 'change_password' => 'Cambiar Contraseña', - 'clerk' => 'Empleado', - 'commission' => 'Tasa de Comisión', - 'confirm_delete' => '¿Seguro(a) que quieres borrar los empleados seleccionados?', - 'confirm_restore' => 'Esta seguro de quere restaurar lo(s) empleado(s) seleccionado(s)?', - 'current_password' => 'Contraseña Actual', - 'current_password_invalid' => 'Contraseña Actual Inválida.', - 'employee' => 'Empleado', - 'error_adding_updating' => 'Error al agregar/actualizar empleado.', - 'error_deleting_admin' => 'No puedes eliminar un usuario administrador.', - 'error_deleting_demo_admin' => 'No puedes borrar el usuario admin del demo.', - 'error_grant_change_disallowed' => 'Los cambios de permisos están deshabilitados en esta demo.', - 'error_password_change_disallowed' => 'Los cambios de contraseña están deshabilitados en esta demo.', - 'error_updating_admin' => 'No puedes modificar un usuario administrador.', - 'error_updating_demo_admin' => 'No puedes cambiar el usuario admin del demo.', - 'language' => 'Idioma', - 'login_info' => 'Información de Ingreso del Empleado', - 'manager' => 'Encargado', - 'new' => 'Nuevo Empleado', - 'none_selected' => 'No has seleccionado empleados para borrar.', - 'one_or_multiple' => 'empleado(s)', - 'password' => 'Contraseña', - 'password_minlength' => 'La contraseña debe tener, por lo menos, 8 caracteres.', - 'password_must_match' => 'Las Contraseñas no coinciden.', - 'password_not_must_match' => 'La contraseña actual y la nueva contraseña no deben ser iguales.', - 'password_required' => 'La Contraseña es requerida.', - 'permission_desc' => 'Activa las cajas debajo para permitir el acceso a los módulos.', - 'permission_info' => 'Permisos y Acceso del Empleado', - 'repeat_password' => 'Repita Contraseña', - 'subpermission_required' => 'Agregar al menos un permiso para cada modulo.', - 'successful_adding' => 'Empleado agregado satisfactoriamente.', - 'successful_change_password' => 'Contraseña cambiada satisfactoriamente.', - 'successful_deleted' => 'Has borrado satisfactoriamente a', - 'successful_updating' => 'Has actualizado el empleado satisfactoriamente', - 'system_language' => 'Idioma de sistema', - 'unsuccessful_change_password' => 'Cambio de contraseña fallido.', - 'update' => 'Actualizar Empleado', - 'username' => 'Usuario', - 'username_duplicate' => 'Nombre de Usuario de Empleado yá está en uso. Por favor escoja otro.', - 'username_minlength' => 'El nombre de usuario debe ser por lo menos, 5 caracteres.', - 'username_required' => 'Nombre de usuario es requerido.', + 'administrator' => 'Administrador', + 'basic_information' => 'Información Básica de Empleados', + 'cannot_be_deleted' => 'No se pudieron borrar empleados. Uno o más empleados tiene ventas procesadas o estás tratando de borrarte a tí mismo(a).', + 'change_employee' => 'Cambio de Empleado', + 'change_password' => 'Cambiar Contraseña', + 'clerk' => 'Empleado', + 'commission' => 'Tasa de Comisión', + 'confirm_delete' => '¿Seguro(a) que quieres borrar los empleados seleccionados?', + 'confirm_restore' => 'Esta seguro de quere restaurar lo(s) empleado(s) seleccionado(s)?', + 'current_password' => 'Contraseña Actual', + 'current_password_invalid' => 'Contraseña Actual Inválida.', + 'employee' => 'Empleado', + 'error_adding_updating' => 'Error al agregar/actualizar empleado.', + 'error_cannot_remove_own_minimum_grant' => 'No puedes eliminar tus propios permisos mínimos de acceso a módulos.', + 'error_deleting_admin' => 'No puedes eliminar un usuario administrador.', + 'error_deleting_demo_admin' => 'No puedes borrar el usuario admin del demo.', + 'error_grant_change_disallowed' => 'Los cambios de permisos están deshabilitados en esta demo.', + 'error_password_change_disallowed' => 'Los cambios de contraseña están deshabilitados en esta demo.', + 'error_updating_admin' => 'No puedes modificar un usuario administrador.', + 'error_updating_demo_admin' => 'No puedes cambiar el usuario admin del demo.', + 'language' => 'Idioma', + 'login_info' => 'Información de Ingreso del Empleado', + 'manager' => 'Encargado', + 'new' => 'Nuevo Empleado', + 'none_selected' => 'No has seleccionado empleados para borrar.', + 'one_or_multiple' => 'empleado(s)', + 'password' => 'Contraseña', + 'password_minlength' => 'La contraseña debe tener, por lo menos, 8 caracteres.', + 'password_must_match' => 'Las Contraseñas no coinciden.', + 'password_not_must_match' => 'La contraseña actual y la nueva contraseña no deben ser iguales.', + 'password_required' => 'La Contraseña es requerida.', + 'permission_desc' => 'Activa las cajas debajo para permitir el acceso a los módulos.', + 'permission_info' => 'Permisos y Acceso del Empleado', + 'repeat_password' => 'Repita Contraseña', + 'subpermission_required' => 'Agregar al menos un permiso para cada modulo.', + 'successful_adding' => 'Empleado agregado satisfactoriamente.', + 'successful_change_password' => 'Contraseña cambiada satisfactoriamente.', + 'successful_deleted' => 'Has borrado satisfactoriamente a', + 'successful_updating' => 'Has actualizado el empleado satisfactoriamente', + 'system_language' => 'Idioma de sistema', + 'unsuccessful_change_password' => 'Cambio de contraseña fallido.', + 'update' => 'Actualizar Empleado', + 'username' => 'Usuario', + 'username_duplicate' => 'Nombre de Usuario de Empleado yá está en uso. Por favor escoja otro.', + 'username_minlength' => 'El nombre de usuario debe ser por lo menos, 5 caracteres.', + 'username_required' => 'Nombre de usuario es requerido.', ]; diff --git a/app/Language/es-MX/Employees.php b/app/Language/es-MX/Employees.php index 1ff9e5963..93ce49138 100644 --- a/app/Language/es-MX/Employees.php +++ b/app/Language/es-MX/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Información', - 'cannot_be_deleted' => 'No se puede borrar los empleados seleccionados, uno o más de ellos tienen ventas registradas ó intentas borrar tu propia cuenta.', - 'change_employee' => '', - 'change_password' => 'Cambiar contraseña', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => '¿Estás seguro que deseas borrar los empleados seleccionados?', - 'confirm_restore' => '¿Estás seguro que deseas restaurar los empleados seleccionados?', - 'current_password' => 'Contraseña Actual', - 'current_password_invalid' => 'La contraseña actual es inválida.', - 'employee' => 'Empleado', - 'error_adding_updating' => 'Agregar ó Actualizar empleado ha fallado.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'No puede borrar el usuario demo de administrador.', - 'error_grant_change_disallowed' => 'Los cambios de permisos están deshabilitados en esta demo.', - 'error_password_change_disallowed' => 'Los cambios de contraseña están deshabilitados en esta demo.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'No puede cambiar el usuario demo de administrador.', - 'language' => 'Idioma', - 'login_info' => 'Iniciar sesión', - 'manager' => '', - 'new' => 'Nuevo Empleado', - 'none_selected' => 'No ha seleccionado empleados a borrar.', - 'one_or_multiple' => 'Empleado(s)', - 'password' => 'Contraseña', - 'password_minlength' => 'La contraseña debe tener por lo menos 8 letras.', - 'password_must_match' => 'Las contraseñas no coinciden.', - 'password_not_must_match' => 'La contraseña actual y nueva contraseña deben ser distintas.', - 'password_required' => 'Se requiere contraseña.', - 'permission_desc' => 'Selecciona las casillas para otorgar acceso a los módulos.', - 'permission_info' => 'Permisos', - 'repeat_password' => 'Contraseña otra vez', - 'subpermission_required' => 'Concede por lo menos un permiso para cada módulo.', - 'successful_adding' => 'Empleado agregado exitosamente.', - 'successful_change_password' => 'Cambio de contraseña exitoso.', - 'successful_deleted' => 'Se ha borrado correctamente', - 'successful_updating' => 'Empleado actualizado exitosamente', - 'system_language' => 'Idioma del sistema', - 'unsuccessful_change_password' => 'El cambio de contraseña ha fallado.', - 'update' => 'Actualizar Empleado', - 'username' => 'Nombre de Usuario', - 'username_duplicate' => 'El usuario del empleado ya esta en uso. Favor de escoger otro.', - 'username_minlength' => 'Nombre de usuario debe tener por lo menos 5 letras.', - 'username_required' => 'Es necesario el nombre de usuario.', + 'administrator' => '', + 'basic_information' => 'Información', + 'cannot_be_deleted' => 'No se puede borrar los empleados seleccionados, uno o más de ellos tienen ventas registradas ó intentas borrar tu propia cuenta.', + 'change_employee' => '', + 'change_password' => 'Cambiar contraseña', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '¿Estás seguro que deseas borrar los empleados seleccionados?', + 'confirm_restore' => '¿Estás seguro que deseas restaurar los empleados seleccionados?', + 'current_password' => 'Contraseña Actual', + 'current_password_invalid' => 'La contraseña actual es inválida.', + 'employee' => 'Empleado', + 'error_adding_updating' => 'Agregar ó Actualizar empleado ha fallado.', + 'error_cannot_remove_own_minimum_grant' => 'No puede eliminar sus propios permisos mínimos de acceso a módulos.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'No puede borrar el usuario demo de administrador.', + 'error_grant_change_disallowed' => 'Los cambios de permisos están deshabilitados en esta demo.', + 'error_password_change_disallowed' => 'Los cambios de contraseña están deshabilitados en esta demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'No puede cambiar el usuario demo de administrador.', + 'language' => 'Idioma', + 'login_info' => 'Iniciar sesión', + 'manager' => '', + 'new' => 'Nuevo Empleado', + 'none_selected' => 'No ha seleccionado empleados a borrar.', + 'one_or_multiple' => 'Empleado(s)', + 'password' => 'Contraseña', + 'password_minlength' => 'La contraseña debe tener por lo menos 8 letras.', + 'password_must_match' => 'Las contraseñas no coinciden.', + 'password_not_must_match' => 'La contraseña actual y nueva contraseña deben ser distintas.', + 'password_required' => 'Se requiere contraseña.', + 'permission_desc' => 'Selecciona las casillas para otorgar acceso a los módulos.', + 'permission_info' => 'Permisos', + 'repeat_password' => 'Contraseña otra vez', + 'subpermission_required' => 'Concede por lo menos un permiso para cada módulo.', + 'successful_adding' => 'Empleado agregado exitosamente.', + 'successful_change_password' => 'Cambio de contraseña exitoso.', + 'successful_deleted' => 'Se ha borrado correctamente', + 'successful_updating' => 'Empleado actualizado exitosamente', + 'system_language' => 'Idioma del sistema', + 'unsuccessful_change_password' => 'El cambio de contraseña ha fallado.', + 'update' => 'Actualizar Empleado', + 'username' => 'Nombre de Usuario', + 'username_duplicate' => 'El usuario del empleado ya esta en uso. Favor de escoger otro.', + 'username_minlength' => 'Nombre de usuario debe tener por lo menos 5 letras.', + 'username_required' => 'Es necesario el nombre de usuario.', ]; diff --git a/app/Language/fa/Employees.php b/app/Language/fa/Employees.php index 34178a055..6bea569a7 100644 --- a/app/Language/fa/Employees.php +++ b/app/Language/fa/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'اطلاعات', - 'cannot_be_deleted' => 'حذف کارمند (های) انتخابی امکان پذیر نیست ، یک یا چند مورد از فروش پردازش شده استفاده کرده یا می خواهید حساب خود را حذف کنید.', - 'change_employee' => '', - 'change_password' => 'تغییر رمز عبور', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'آیا مطمئن هستید که می خواهید کارمند (های) انتخاب شده را حذف کنید؟', - 'confirm_restore' => 'آیا مطمئن هستید که می خواهید کارمندان (های) انتخاب شده را بازیابی کنید؟', - 'current_password' => 'گذرواژه فعلی', - 'current_password_invalid' => 'گذرواژه فعلی نامعتبر است.', - 'employee' => 'کارمند', - 'error_adding_updating' => 'افزودن یا به روزرسانی کارکنان انجام نشد.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'شما نمی توانید کاربر مدیر نسخه ی نمایشی را حذف کنید.', - 'error_grant_change_disallowed' => 'تغییرات اعطا در این نسخه نمایشی غیرفعال است.', - 'error_password_change_disallowed' => 'تغییرات رمز عبور در این نسخه نمایشی غیرفعال است.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'شما نمی توانید کاربر مدیر نسخه ی نمایشی را تغییر دهید.', - 'language' => 'زبان', - 'login_info' => 'وارد شدن', - 'manager' => '', - 'new' => 'کارمند جدید', - 'none_selected' => 'شما هیچ کارمندی را برای حذف انتخاب نکرده اید.', - 'one_or_multiple' => 'کارمند (ها)', - 'password' => 'کلمه عبور', - 'password_minlength' => 'گذرواژه باید حداقل 8 نویسه داشته باشد.', - 'password_must_match' => 'رمزهای ورود مطابقت ندارند.', - 'password_not_must_match' => 'گذرواژه فعلی و رمز جدید باید بی نظیر باشند.', - 'password_required' => 'رمز عبور مورد نیاز است.', - 'permission_desc' => 'کادرهای زیر را برای دسترسی به ماژولها بررسی کنید.', - 'permission_info' => 'مجوزها', - 'repeat_password' => 'رمز عبور دوباره', - 'subpermission_required' => 'برای هر ماژول حداقل یک کمک هزینه اضافه کنید.', - 'successful_adding' => 'کارمندان موفق شدند.', - 'successful_change_password' => 'تغییر رمز عبور موفقیت آمیز است.', - 'successful_deleted' => 'شما با موفقیت حذف شده اید', - 'successful_updating' => 'شما با موفقیت کارمند را به روز کردید', - 'system_language' => 'زبان سیستم', - 'unsuccessful_change_password' => 'تغییر رمز انجام نشد.', - 'update' => 'به روزرسانی کارمند', - 'username' => 'نام کاربری', - 'username_duplicate' => '', - 'username_minlength' => 'نام کاربری باید حداقل 5 کاراکتر داشته باشد.', - 'username_required' => 'نام کاربری فیلد مورد نیاز است.', + 'administrator' => '', + 'basic_information' => 'اطلاعات', + 'cannot_be_deleted' => 'حذف کارمند (های) انتخابی امکان پذیر نیست ، یک یا چند مورد از فروش پردازش شده استفاده کرده یا می خواهید حساب خود را حذف کنید.', + 'change_employee' => '', + 'change_password' => 'تغییر رمز عبور', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'آیا مطمئن هستید که می خواهید کارمند (های) انتخاب شده را حذف کنید؟', + 'confirm_restore' => 'آیا مطمئن هستید که می خواهید کارمندان (های) انتخاب شده را بازیابی کنید؟', + 'current_password' => 'گذرواژه فعلی', + 'current_password_invalid' => 'گذرواژه فعلی نامعتبر است.', + 'employee' => 'کارمند', + 'error_adding_updating' => 'افزودن یا به روزرسانی کارکنان انجام نشد.', + 'error_cannot_remove_own_minimum_grant' => 'شما نمی توانید حداقل مجوزهای دسترسی به ماژول خود را حذف کنید.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'شما نمی توانید کاربر مدیر نسخه ی نمایشی را حذف کنید.', + 'error_grant_change_disallowed' => 'تغییرات اعطا در این نسخه نمایشی غیرفعال است.', + 'error_password_change_disallowed' => 'تغییرات رمز عبور در این نسخه نمایشی غیرفعال است.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'شما نمی توانید کاربر مدیر نسخه ی نمایشی را تغییر دهید.', + 'language' => 'زبان', + 'login_info' => 'وارد شدن', + 'manager' => '', + 'new' => 'کارمند جدید', + 'none_selected' => 'شما هیچ کارمندی را برای حذف انتخاب نکرده اید.', + 'one_or_multiple' => 'کارمند (ها)', + 'password' => 'کلمه عبور', + 'password_minlength' => 'گذرواژه باید حداقل 8 نویسه داشته باشد.', + 'password_must_match' => 'رمزهای ورود مطابقت ندارند.', + 'password_not_must_match' => 'گذرواژه فعلی و رمز جدید باید بی نظیر باشند.', + 'password_required' => 'رمز عبور مورد نیاز است.', + 'permission_desc' => 'کادرهای زیر را برای دسترسی به ماژولها بررسی کنید.', + 'permission_info' => 'مجوزها', + 'repeat_password' => 'رمز عبور دوباره', + 'subpermission_required' => 'برای هر ماژول حداقل یک کمک هزینه اضافه کنید.', + 'successful_adding' => 'کارمندان موفق شدند.', + 'successful_change_password' => 'تغییر رمز عبور موفقیت آمیز است.', + 'successful_deleted' => 'شما با موفقیت حذف شده اید', + 'successful_updating' => 'شما با موفقیت کارمند را به روز کردید', + 'system_language' => 'زبان سیستم', + 'unsuccessful_change_password' => 'تغییر رمز انجام نشد.', + 'update' => 'به روزرسانی کارمند', + 'username' => 'نام کاربری', + 'username_duplicate' => '', + 'username_minlength' => 'نام کاربری باید حداقل 5 کاراکتر داشته باشد.', + 'username_required' => 'نام کاربری فیلد مورد نیاز است.', ]; diff --git a/app/Language/fr/Employees.php b/app/Language/fr/Employees.php index c92c5c68b..49b6fba0c 100644 --- a/app/Language/fr/Employees.php +++ b/app/Language/fr/Employees.php @@ -1,49 +1,50 @@ 'Administrateur', - 'basic_information' => 'Fiche', - 'cannot_be_deleted' => 'Impossible de supprimer le(s) employé(s) sélectionné(s),car un ou plusieur a éffectué une vente, ou car vous essayez de vous supprimer vous-meme.', - 'change_employee' => 'Changer d\'employé', - 'change_password' => 'Changement de mot de passe', - 'clerk' => 'Employé', - 'commission' => 'Commission', - 'confirm_delete' => 'Êtes-vous certain de vouloir supprimer le(s) employé(s) sélectionné(s) ?', - 'confirm_restore' => 'Êtes-vous certain de vouloir restaurer le(s) employé(s) selectionné(s) ?', - 'current_password' => 'Mot de passe actuel', - 'current_password_invalid' => 'Le mot de passe actuel est invalide.', - 'employee' => 'Employé', - 'error_adding_updating' => 'Erreur d\'ajout/édition d\'employé.', - 'error_deleting_admin' => 'Vous ne pouvez pas supprimer un utilisateur administrateur.', - 'error_deleting_demo_admin' => 'Vous ne pouvez pas supprimer l\'utilisateur de démonstration admin.', - 'error_grant_change_disallowed' => 'Les modifications de permissions sont désactivées dans cette démo.', - 'error_password_change_disallowed' => 'Les modifications de mot de passe sont désactivées dans cette démo.', - 'error_updating_admin' => 'Vous ne pouvez pas modifier un utilisateur administrateur.', - 'error_updating_demo_admin' => 'Vous ne pouvez pas modifier l\'utilisateur de démonstration admin.', - 'language' => 'Langue', - 'login_info' => 'Connexion', - 'manager' => 'Gestionnaire', - 'new' => 'Nouvel employé', - 'none_selected' => 'Aucun employé sélectionné pour la suppression.', - 'one_or_multiple' => 'employé(s)', - 'password' => 'Mot de passe', - 'password_minlength' => 'Le mot de passe doit contenir au moins 8 caractères.', - 'password_must_match' => 'Les mots de passe ne concordent pas.', - 'password_not_must_match' => 'Le mot de passe actuel et le nouveau mot de passe doivent être uniques.', - 'password_required' => 'Mot de passe requis.', - 'permission_desc' => 'Cochez les cases ci-dessous pour autoriser l\'accès aux modules.', - 'permission_info' => 'Permissions', - 'repeat_password' => 'Re-saisissez le mot de passe', - 'subpermission_required' => 'Ajoutez au moins une permission pour chaque module.', - 'successful_adding' => 'Employé ajouté.', - 'successful_change_password' => 'Mot de passe modifié avec succès.', - 'successful_deleted' => 'Suppression d\'employé réussie', - 'successful_updating' => 'Édition d\'employé réussie', - 'system_language' => 'Langue système', - 'unsuccessful_change_password' => 'Échec du changement de mot de passe.', - 'update' => 'Éditer employé', - 'username' => 'Nom d\'utilisateur', - 'username_duplicate' => 'Nom d\'utilisateur existant. Veuillez en choisir un autre.', - 'username_minlength' => 'Le nom d\'utilisateur doit contenir au moins 5 caractères.', - 'username_required' => 'Nom d\'utilisateur requis.', + 'administrator' => 'Administrateur', + 'basic_information' => 'Fiche', + 'cannot_be_deleted' => 'Impossible de supprimer le(s) employé(s) sélectionné(s),car un ou plusieur a éffectué une vente, ou car vous essayez de vous supprimer vous-meme.', + 'change_employee' => 'Changer d\'employé', + 'change_password' => 'Changement de mot de passe', + 'clerk' => 'Employé', + 'commission' => 'Commission', + 'confirm_delete' => 'Êtes-vous certain de vouloir supprimer le(s) employé(s) sélectionné(s) ?', + 'confirm_restore' => 'Êtes-vous certain de vouloir restaurer le(s) employé(s) selectionné(s) ?', + 'current_password' => 'Mot de passe actuel', + 'current_password_invalid' => 'Le mot de passe actuel est invalide.', + 'employee' => 'Employé', + 'error_adding_updating' => 'Erreur d\'ajout/édition d\'employé.', + 'error_cannot_remove_own_minimum_grant' => 'Vous ne pouvez pas retirer vos propres permissions minimales d\'accès aux modules.', + 'error_deleting_admin' => 'Vous ne pouvez pas supprimer un utilisateur administrateur.', + 'error_deleting_demo_admin' => 'Vous ne pouvez pas supprimer l\'utilisateur de démonstration admin.', + 'error_grant_change_disallowed' => 'Les modifications de permissions sont désactivées dans cette démo.', + 'error_password_change_disallowed' => 'Les modifications de mot de passe sont désactivées dans cette démo.', + 'error_updating_admin' => 'Vous ne pouvez pas modifier un utilisateur administrateur.', + 'error_updating_demo_admin' => 'Vous ne pouvez pas modifier l\'utilisateur de démonstration admin.', + 'language' => 'Langue', + 'login_info' => 'Connexion', + 'manager' => 'Gestionnaire', + 'new' => 'Nouvel employé', + 'none_selected' => 'Aucun employé sélectionné pour la suppression.', + 'one_or_multiple' => 'employé(s)', + 'password' => 'Mot de passe', + 'password_minlength' => 'Le mot de passe doit contenir au moins 8 caractères.', + 'password_must_match' => 'Les mots de passe ne concordent pas.', + 'password_not_must_match' => 'Le mot de passe actuel et le nouveau mot de passe doivent être uniques.', + 'password_required' => 'Mot de passe requis.', + 'permission_desc' => 'Cochez les cases ci-dessous pour autoriser l\'accès aux modules.', + 'permission_info' => 'Permissions', + 'repeat_password' => 'Re-saisissez le mot de passe', + 'subpermission_required' => 'Ajoutez au moins une permission pour chaque module.', + 'successful_adding' => 'Employé ajouté.', + 'successful_change_password' => 'Mot de passe modifié avec succès.', + 'successful_deleted' => 'Suppression d\'employé réussie', + 'successful_updating' => 'Édition d\'employé réussie', + 'system_language' => 'Langue système', + 'unsuccessful_change_password' => 'Échec du changement de mot de passe.', + 'update' => 'Éditer employé', + 'username' => 'Nom d\'utilisateur', + 'username_duplicate' => 'Nom d\'utilisateur existant. Veuillez en choisir un autre.', + 'username_minlength' => 'Le nom d\'utilisateur doit contenir au moins 5 caractères.', + 'username_required' => 'Nom d\'utilisateur requis.', ]; diff --git a/app/Language/he/Employees.php b/app/Language/he/Employees.php index 9659e654b..297b09650 100644 --- a/app/Language/he/Employees.php +++ b/app/Language/he/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'מידע', - 'cannot_be_deleted' => 'לא ניתן למחוק עובדים נבחרים, לאחד או יותר יש מכירות בתהליך או שאתה מנסה למחוק את החשבון שלך.', - 'change_employee' => '', - 'change_password' => 'שנה סיסמה', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'האם אתה בטוח שברצונך למחוק את העובדים שנבחרו?', - 'confirm_restore' => 'האם אתה בטוח שברצונך לשחזר את העובדים שנבחרו?', - 'current_password' => 'סיסמה נוכחית', - 'current_password_invalid' => 'הסיסמה הנוכחית אינה חוקית.', - 'employee' => 'עובד', - 'error_adding_updating' => 'הוספה או עדכון של עובד נכשלה.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'לא ניתן למחוק את משתמש המנהל ההדגמה.', - 'error_grant_change_disallowed' => 'שינויים בהרשאות מבוטלים בדמו זה.', - 'error_password_change_disallowed' => 'שינויים בסיסמה מבוטלים בדמו זה.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'לא ניתן לשנות את משתמש המנהל ההדגמה.', - 'language' => 'שפה', - 'login_info' => 'כניסה', - 'manager' => '', - 'new' => 'עובד חדש', - 'none_selected' => 'לא בחרת עובדים שברצונך למחוק.', - 'one_or_multiple' => 'עובד(ים)', - 'password' => 'סיסמה', - 'password_minlength' => 'על הסיסמה להיות באורך של 8 תווים לפחות.', - 'password_must_match' => 'סיסמאות לא תואמות.', - 'password_not_must_match' => 'הסיסמה הנוכחית והסיסמה החדשה חייבות להיות ייחודיות.', - 'password_required' => 'דרושה סיסמה.', - 'permission_desc' => 'סמן את התיבות שלהלן כדי להעניק גישה למודולים.', - 'permission_info' => 'הרשאות', - 'repeat_password' => 'סיסמא בשנית', - 'subpermission_required' => 'הוסף לפחות גישה אחת לכל מודול.', - 'successful_adding' => 'הוספת עובד בהצלחה.', - 'successful_change_password' => 'סיסמה שונתה בהצלחה.', - 'successful_deleted' => 'נמחק בהצלחה', - 'successful_updating' => 'עדכנת בהצלחה את פרטי העובד', - 'system_language' => 'שפת מערכת', - 'unsuccessful_change_password' => 'שינוי הסיסמה נכשל.', - 'update' => 'עדכן עובד', - 'username' => 'שם משתמש', - 'username_duplicate' => '', - 'username_minlength' => 'על שם המשתמש להיות באורך של 5 תווים לפחות.', - 'username_required' => 'שם המשתמש הינו שדה חובה.', + 'administrator' => '', + 'basic_information' => 'מידע', + 'cannot_be_deleted' => 'לא ניתן למחוק עובדים נבחרים, לאחד או יותר יש מכירות בתהליך או שאתה מנסה למחוק את החשבון שלך.', + 'change_employee' => '', + 'change_password' => 'שנה סיסמה', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'האם אתה בטוח שברצונך למחוק את העובדים שנבחרו?', + 'confirm_restore' => 'האם אתה בטוח שברצונך לשחזר את העובדים שנבחרו?', + 'current_password' => 'סיסמה נוכחית', + 'current_password_invalid' => 'הסיסמה הנוכחית אינה חוקית.', + 'employee' => 'עובד', + 'error_adding_updating' => 'הוספה או עדכון של עובד נכשלה.', + 'error_cannot_remove_own_minimum_grant' => 'אינך יכול להסיר את הרשאות הגישה המינימליות שלך למודולים.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'לא ניתן למחוק את משתמש המנהל ההדגמה.', + 'error_grant_change_disallowed' => 'שינויים בהרשאות מבוטלים בדמו זה.', + 'error_password_change_disallowed' => 'שינויים בסיסמה מבוטלים בדמו זה.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'לא ניתן לשנות את משתמש המנהל ההדגמה.', + 'language' => 'שפה', + 'login_info' => 'כניסה', + 'manager' => '', + 'new' => 'עובד חדש', + 'none_selected' => 'לא בחרת עובדים שברצונך למחוק.', + 'one_or_multiple' => 'עובד(ים)', + 'password' => 'סיסמה', + 'password_minlength' => 'על הסיסמה להיות באורך של 8 תווים לפחות.', + 'password_must_match' => 'סיסמאות לא תואמות.', + 'password_not_must_match' => 'הסיסמה הנוכחית והסיסמה החדשה חייבות להיות ייחודיות.', + 'password_required' => 'דרושה סיסמה.', + 'permission_desc' => 'סמן את התיבות שלהלן כדי להעניק גישה למודולים.', + 'permission_info' => 'הרשאות', + 'repeat_password' => 'סיסמא בשנית', + 'subpermission_required' => 'הוסף לפחות גישה אחת לכל מודול.', + 'successful_adding' => 'הוספת עובד בהצלחה.', + 'successful_change_password' => 'סיסמה שונתה בהצלחה.', + 'successful_deleted' => 'נמחק בהצלחה', + 'successful_updating' => 'עדכנת בהצלחה את פרטי העובד', + 'system_language' => 'שפת מערכת', + 'unsuccessful_change_password' => 'שינוי הסיסמה נכשל.', + 'update' => 'עדכן עובד', + 'username' => 'שם משתמש', + 'username_duplicate' => '', + 'username_minlength' => 'על שם המשתמש להיות באורך של 5 תווים לפחות.', + 'username_required' => 'שם המשתמש הינו שדה חובה.', ]; diff --git a/app/Language/hr-HR/Employees.php b/app/Language/hr-HR/Employees.php index 27f7ca16a..c33f24696 100644 --- a/app/Language/hr-HR/Employees.php +++ b/app/Language/hr-HR/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Informacije', - 'cannot_be_deleted' => 'Ne možete obristi odabranog radnika, jedan ili više radnika ima prodaju ili pokušavate obristi sebe :)', - 'change_employee' => '', - 'change_password' => '', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Jeste li ste sigurni da želite obristi odabranog radnika?', - 'confirm_restore' => '', - 'current_password' => '', - 'current_password_invalid' => '', - 'employee' => 'Radnik', - 'error_adding_updating' => 'Greška kod dodavanja/ažuriranja radnika', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Ne možete obrisati demo admin korisnika', - 'error_grant_change_disallowed' => 'Promene dozvola su onemogućene u ovoj demo verziji.', - 'error_password_change_disallowed' => 'Promene lozinke su onemogućene u ovoj demo verziji.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Ne možete promijeniti demo admin korisnika', - 'language' => '', - 'login_info' => 'Prijava', - 'manager' => '', - 'new' => 'Novi radnik', - 'none_selected' => 'Nije odabran niti jedan radnik za brisanje', - 'one_or_multiple' => 'Radnik(ci)', - 'password' => 'Lozinka', - 'password_minlength' => 'Lozinka mora imati najmanje 8 znakova', - 'password_must_match' => 'Lozinka se ne podudara', - 'password_not_must_match' => '', - 'password_required' => 'Lozinka je potrebna', - 'permission_desc' => 'Odaberite module za dozvolu', - 'permission_info' => 'Dozvole', - 'repeat_password' => 'Ponovite lozinku', - 'subpermission_required' => 'Odaberite barem jednu dozvolu po modulu', - 'successful_adding' => 'Uspješno ste dodali radnika', - 'successful_change_password' => '', - 'successful_deleted' => 'Uspješno ste obrisali radnika', - 'successful_updating' => 'Uspješno ste ažurirali radnika', - 'system_language' => '', - 'unsuccessful_change_password' => '', - 'update' => 'Ažuriraj radnika', - 'username' => 'Korisničko ime', - 'username_duplicate' => '', - 'username_minlength' => 'Korisničko ime mora imati najmanje 5 znakova', - 'username_required' => 'Korisničko ime je potrebno', + 'administrator' => '', + 'basic_information' => 'Informacije', + 'cannot_be_deleted' => 'Ne možete obristi odabranog radnika, jedan ili više radnika ima prodaju ili pokušavate obristi sebe :)', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Jeste li ste sigurni da želite obristi odabranog radnika?', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => 'Radnik', + 'error_adding_updating' => 'Greška kod dodavanja/ažuriranja radnika', + 'error_cannot_remove_own_minimum_grant' => 'Ne možete ukloniti vlastite minimalne dozvole pristupa modulima.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Ne možete obrisati demo admin korisnika', + 'error_grant_change_disallowed' => 'Promene dozvola su onemogućene u ovoj demo verziji.', + 'error_password_change_disallowed' => 'Promene lozinke su onemogućene u ovoj demo verziji.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Ne možete promijeniti demo admin korisnika', + 'language' => '', + 'login_info' => 'Prijava', + 'manager' => '', + 'new' => 'Novi radnik', + 'none_selected' => 'Nije odabran niti jedan radnik za brisanje', + 'one_or_multiple' => 'Radnik(ci)', + 'password' => 'Lozinka', + 'password_minlength' => 'Lozinka mora imati najmanje 8 znakova', + 'password_must_match' => 'Lozinka se ne podudara', + 'password_not_must_match' => '', + 'password_required' => 'Lozinka je potrebna', + 'permission_desc' => 'Odaberite module za dozvolu', + 'permission_info' => 'Dozvole', + 'repeat_password' => 'Ponovite lozinku', + 'subpermission_required' => 'Odaberite barem jednu dozvolu po modulu', + 'successful_adding' => 'Uspješno ste dodali radnika', + 'successful_change_password' => '', + 'successful_deleted' => 'Uspješno ste obrisali radnika', + 'successful_updating' => 'Uspješno ste ažurirali radnika', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => 'Ažuriraj radnika', + 'username' => 'Korisničko ime', + 'username_duplicate' => '', + 'username_minlength' => 'Korisničko ime mora imati najmanje 5 znakova', + 'username_required' => 'Korisničko ime je potrebno', ]; diff --git a/app/Language/hu/Employees.php b/app/Language/hu/Employees.php index f12d78fbc..9de15ce0c 100644 --- a/app/Language/hu/Employees.php +++ b/app/Language/hu/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Munkavállaló alap információk', - 'cannot_be_deleted' => 'Nem lehet a kiválasztott munkavállaló(ka)t törölni, mert már van lezárt értékesítése vagy saját magát kívánja törölni! :)', - 'change_employee' => '', - 'change_password' => '', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Biztos, hogy törölni kívánja a munkavállalót?', - 'confirm_restore' => '', - 'current_password' => '', - 'current_password_invalid' => '', - 'employee' => 'Munkavállaló', - 'error_adding_updating' => 'Hiba a munkavállaló módosításánál/hozzáadásánál', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Nem tudja törölni a demo admin felhasználót', - 'error_grant_change_disallowed' => 'A jogok módosítása le van tiltva ebben a demóban.', - 'error_password_change_disallowed' => 'A jelszóváltoztatás le van tiltva ebben a demóban.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Nem tudja módosítani a demo admin felhasználót', - 'language' => '', - 'login_info' => 'Munkavállaló azonosító', - 'manager' => '', - 'new' => 'Új munkavállaló', - 'none_selected' => 'Nem választott ki munkavállalót a törléshez', - 'one_or_multiple' => 'munkavállaló(k)', - 'password' => 'Jelszó', - 'password_minlength' => 'A jelszónak legalább 8 karakternek kell lennie', - 'password_must_match' => 'A jelszó nem egyezik', - 'password_not_must_match' => '', - 'password_required' => 'A jelszó kötelező', - 'permission_desc' => 'Válassza ki az alábbi boxokat a hozzáférés megadásához', - 'permission_info' => 'Munkavállaló engedélyei', - 'repeat_password' => 'Jelszó újra', - 'subpermission_required' => 'Engedélyezzen legalább egyet minden modulhoz', - 'successful_adding' => 'Sikeresen hozzáadott egy új munkavállalót', - 'successful_change_password' => '', - 'successful_deleted' => 'Sikeresen törölt egy munkavállalót', - 'successful_updating' => 'Sikeresen módosította a munkavállalót', - 'system_language' => '', - 'unsuccessful_change_password' => '', - 'update' => 'Munkavállaló módosítása', - 'username' => 'Felhasználó név', - 'username_duplicate' => '', - 'username_minlength' => 'A felhasználó névnek legalább 5 karakternek kell lennie', - 'username_required' => 'Felhasználó név kötelező', + 'administrator' => '', + 'basic_information' => 'Munkavállaló alap információk', + 'cannot_be_deleted' => 'Nem lehet a kiválasztott munkavállaló(ka)t törölni, mert már van lezárt értékesítése vagy saját magát kívánja törölni! :)', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Biztos, hogy törölni kívánja a munkavállalót?', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => 'Munkavállaló', + 'error_adding_updating' => 'Hiba a munkavállaló módosításánál/hozzáadásánál', + 'error_cannot_remove_own_minimum_grant' => 'Nem távolíthatja el a saját minimális modulhozzáférési engedélyeit.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Nem tudja törölni a demo admin felhasználót', + 'error_grant_change_disallowed' => 'A jogok módosítása le van tiltva ebben a demóban.', + 'error_password_change_disallowed' => 'A jelszóváltoztatás le van tiltva ebben a demóban.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Nem tudja módosítani a demo admin felhasználót', + 'language' => '', + 'login_info' => 'Munkavállaló azonosító', + 'manager' => '', + 'new' => 'Új munkavállaló', + 'none_selected' => 'Nem választott ki munkavállalót a törléshez', + 'one_or_multiple' => 'munkavállaló(k)', + 'password' => 'Jelszó', + 'password_minlength' => 'A jelszónak legalább 8 karakternek kell lennie', + 'password_must_match' => 'A jelszó nem egyezik', + 'password_not_must_match' => '', + 'password_required' => 'A jelszó kötelező', + 'permission_desc' => 'Válassza ki az alábbi boxokat a hozzáférés megadásához', + 'permission_info' => 'Munkavállaló engedélyei', + 'repeat_password' => 'Jelszó újra', + 'subpermission_required' => 'Engedélyezzen legalább egyet minden modulhoz', + 'successful_adding' => 'Sikeresen hozzáadott egy új munkavállalót', + 'successful_change_password' => '', + 'successful_deleted' => 'Sikeresen törölt egy munkavállalót', + 'successful_updating' => 'Sikeresen módosította a munkavállalót', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => 'Munkavállaló módosítása', + 'username' => 'Felhasználó név', + 'username_duplicate' => '', + 'username_minlength' => 'A felhasználó névnek legalább 5 karakternek kell lennie', + 'username_required' => 'Felhasználó név kötelező', ]; diff --git a/app/Language/hy/Employees.php b/app/Language/hy/Employees.php index 572142b3a..8549b926a 100644 --- a/app/Language/hy/Employees.php +++ b/app/Language/hy/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => '', - 'cannot_be_deleted' => '', - 'change_employee' => '', - 'change_password' => '', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => '', - 'confirm_restore' => '', - 'current_password' => '', - 'current_password_invalid' => '', - 'employee' => '', - 'error_adding_updating' => '', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => '', - 'error_grant_change_disallowed' => 'Թույլատրումների փոփոխումները անջատված են այս ցուցադրտեսքում:', - 'error_password_change_disallowed' => 'Գաղտնաբառի փոփոխումները անջատված են այս ցուցադրտեսքում:', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => '', - 'language' => '', - 'login_info' => '', - 'manager' => '', - 'new' => '', - 'none_selected' => '', - 'one_or_multiple' => '', - 'password' => '', - 'password_minlength' => '', - 'password_must_match' => '', - 'password_not_must_match' => '', - 'password_required' => '', - 'permission_desc' => '', - 'permission_info' => '', - 'repeat_password' => '', - 'subpermission_required' => '', - 'successful_adding' => '', - 'successful_change_password' => '', - 'successful_deleted' => '', - 'successful_updating' => '', - 'system_language' => '', - 'unsuccessful_change_password' => '', - 'update' => '', - 'username' => '', - 'username_duplicate' => '', - 'username_minlength' => '', - 'username_required' => '', + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_cannot_remove_own_minimum_grant' => 'Դուք չեք կարող հեռացնել ձեր սեփական մոդուլների նվազագույն մատչելիության թույլտվությունները:', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'Թույլատրումների փոփոխումները անջատված են այս ցուցադրտեսքում:', + 'error_password_change_disallowed' => 'Գաղտնաբառի փոփոխումները անջատված են այս ցուցադրտեսքում:', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/id/Employees.php b/app/Language/id/Employees.php index 80469abdf..6673845b6 100644 --- a/app/Language/id/Employees.php +++ b/app/Language/id/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Informasi Karyawan', - 'cannot_be_deleted' => 'Karyawan terpilih tidak bisa dihapus satu atau lebih dari para pekerja telah memproses penjualan atau Anda mencoba untuk menghapus diri Anda sendiri.', - 'change_employee' => '', - 'change_password' => 'Ubah kata kunci', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Apakah Anda yakin ingin menghapus karyawan yang dipilih?', - 'confirm_restore' => 'Anda yakin ingin mengembalikan karyawan terpilih?', - 'current_password' => 'Kata kunci sekarang', - 'current_password_invalid' => 'Kata kunci sekarang salah.', - 'employee' => 'Karyawan', - 'error_adding_updating' => 'Kesalahan menambah / memperbarui karyawan.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Anda tidak dapat menghapus Demo admin user.', - 'error_grant_change_disallowed' => 'Perubahan izin dinonaktifkan dalam demo ini.', - 'error_password_change_disallowed' => 'Perubahan kata sandi dinonaktifkan dalam demo ini.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Anda tidak dapat mengubah Demo admin user.', - 'language' => 'Bahasa', - 'login_info' => 'Info Login Karyawan', - 'manager' => '', - 'new' => 'Karyawan Baru', - 'none_selected' => 'Anda belum memilih karyawan untuk dihapus.', - 'one_or_multiple' => 'Karyawan', - 'password' => 'Kata Sandi', - 'password_minlength' => 'Kata kunci minimal terdiri dari 8 karakter.', - 'password_must_match' => 'Kata Sandi tidak cocok.', - 'password_not_must_match' => 'Kata kunci sekarang dan kata kunci baru harus unik.', - 'password_required' => 'Kata Sandi wajib diisi.', - 'permission_desc' => 'Tandai kotak di bawah ini untuk memberikan akses ke Modul.', - 'permission_info' => 'Hak Akses Karyawan', - 'repeat_password' => 'Ulang Kata Sandi', - 'subpermission_required' => 'Paling tidak tambahkan satu hak akses untuk setiap modul.', - 'successful_adding' => 'Anda telah berhasil menambahkan karyawan.', - 'successful_change_password' => 'Kata kunci berhasil diubah.', - 'successful_deleted' => 'Berhasil menghapus Kartu Hadiah', - 'successful_updating' => 'Anda telah berhasil memperbarui karyawan', - 'system_language' => 'Bahasa Sistem', - 'unsuccessful_change_password' => 'Gagal mengubah kata sandi.', - 'update' => 'Ubah Karyawan', - 'username' => 'Nama Pengguna', - 'username_duplicate' => 'Nama pengguna karyawan sudah digunakan. Silakan pilih yang lain.', - 'username_minlength' => 'Nama Pengguna minimal 5 huruf.', - 'username_required' => 'Nama Pengguna wajib diisi.', + 'administrator' => '', + 'basic_information' => 'Informasi Karyawan', + 'cannot_be_deleted' => 'Karyawan terpilih tidak bisa dihapus satu atau lebih dari para pekerja telah memproses penjualan atau Anda mencoba untuk menghapus diri Anda sendiri.', + 'change_employee' => '', + 'change_password' => 'Ubah kata kunci', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Apakah Anda yakin ingin menghapus karyawan yang dipilih?', + 'confirm_restore' => 'Anda yakin ingin mengembalikan karyawan terpilih?', + 'current_password' => 'Kata kunci sekarang', + 'current_password_invalid' => 'Kata kunci sekarang salah.', + 'employee' => 'Karyawan', + 'error_adding_updating' => 'Kesalahan menambah / memperbarui karyawan.', + 'error_cannot_remove_own_minimum_grant' => 'Anda tidak dapat menghapus hak akses modul minimum milik Anda sendiri.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Anda tidak dapat menghapus Demo admin user.', + 'error_grant_change_disallowed' => 'Perubahan izin dinonaktifkan dalam demo ini.', + 'error_password_change_disallowed' => 'Perubahan kata sandi dinonaktifkan dalam demo ini.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Anda tidak dapat mengubah Demo admin user.', + 'language' => 'Bahasa', + 'login_info' => 'Info Login Karyawan', + 'manager' => '', + 'new' => 'Karyawan Baru', + 'none_selected' => 'Anda belum memilih karyawan untuk dihapus.', + 'one_or_multiple' => 'Karyawan', + 'password' => 'Kata Sandi', + 'password_minlength' => 'Kata kunci minimal terdiri dari 8 karakter.', + 'password_must_match' => 'Kata Sandi tidak cocok.', + 'password_not_must_match' => 'Kata kunci sekarang dan kata kunci baru harus unik.', + 'password_required' => 'Kata Sandi wajib diisi.', + 'permission_desc' => 'Tandai kotak di bawah ini untuk memberikan akses ke Modul.', + 'permission_info' => 'Hak Akses Karyawan', + 'repeat_password' => 'Ulang Kata Sandi', + 'subpermission_required' => 'Paling tidak tambahkan satu hak akses untuk setiap modul.', + 'successful_adding' => 'Anda telah berhasil menambahkan karyawan.', + 'successful_change_password' => 'Kata kunci berhasil diubah.', + 'successful_deleted' => 'Berhasil menghapus Kartu Hadiah', + 'successful_updating' => 'Anda telah berhasil memperbarui karyawan', + 'system_language' => 'Bahasa Sistem', + 'unsuccessful_change_password' => 'Gagal mengubah kata sandi.', + 'update' => 'Ubah Karyawan', + 'username' => 'Nama Pengguna', + 'username_duplicate' => 'Nama pengguna karyawan sudah digunakan. Silakan pilih yang lain.', + 'username_minlength' => 'Nama Pengguna minimal 5 huruf.', + 'username_required' => 'Nama Pengguna wajib diisi.', ]; diff --git a/app/Language/it/Employees.php b/app/Language/it/Employees.php index b11f7eb07..5302e63d2 100644 --- a/app/Language/it/Employees.php +++ b/app/Language/it/Employees.php @@ -1,49 +1,50 @@ 'Amministratore', - 'basic_information' => 'Informazioni', - 'cannot_be_deleted' => 'Eliminazione dell\'impiegato/i non consentita, uno o più hanno trattato delle vendite o stai cancellando il tuo account.', - 'change_employee' => 'Cambia Impiegato', - 'change_password' => 'Cambia Password', - 'clerk' => 'Impiegato', - 'commission' => 'Commissione', - 'confirm_delete' => 'Sei sicuro di voler eliminare l\'impiegato/i selezionato?', - 'confirm_restore' => 'Sei sicuro di voler ripristinare gl\'Impiegati selezionati?', - 'current_password' => 'Password Corrente', - 'current_password_invalid' => 'Password corrente non valida.', - 'employee' => 'Impiegato', - 'error_adding_updating' => 'Aggiunta o aggiornamento di impiegati fallito.', - 'error_deleting_admin' => 'Non puoi eliminare un utente amministratore.', - 'error_deleting_demo_admin' => 'Non puoi eliminare l\'utente admin demo.', - 'error_grant_change_disallowed' => 'I cambiamenti dei permessi sono disabilitati in questa demo.', - 'error_password_change_disallowed' => 'I cambiamenti della password sono disabilitati in questa demo.', - 'error_updating_admin' => 'Non puoi modificare un utente amministratore.', - 'error_updating_demo_admin' => 'Non puoi cambiare l\'utente admin demo.', - 'language' => 'Lingua', - 'login_info' => 'Login', - 'manager' => 'Manager', - 'new' => 'Nuovo Impiegato', - 'none_selected' => 'Non hai selezionato nessun impiegato da eliminare.', - 'one_or_multiple' => 'impiegato/i', - 'password' => 'Password', - 'password_minlength' => 'La Password deve essere lunga almeno 8 caratteri.', - 'password_must_match' => 'Le Password non corrispondono.', - 'password_not_must_match' => 'La password corrente e quella nuova devono essere uniche.', - 'password_required' => 'Password obbligatoria.', - 'permission_desc' => 'Barra le caselle sotto per garantire l\'accesso ai moduli.', - 'permission_info' => 'Permessi', - 'repeat_password' => 'Password di nuovo', - 'subpermission_required' => 'Aggiungi almeno un permesso per ogni modulo.', - 'successful_adding' => 'Impiegato aggiunto correttamente.', - 'successful_change_password' => 'Password cambiata con successo.', - 'successful_deleted' => 'Eliminato correttamente', - 'successful_updating' => 'Hai correttamente aggiornato un impiegato', - 'system_language' => 'Lingua di sistema', - 'unsuccessful_change_password' => 'Cambio password fallito.', - 'update' => 'Aggiornamento Impiegato', - 'username' => 'Username', - 'username_duplicate' => '', - 'username_minlength' => 'Lo Username deve essere almeno lungo 5 caratteri di lunghezza.', - 'username_required' => 'Il campo Username è richiesto.', + 'administrator' => 'Amministratore', + 'basic_information' => 'Informazioni', + 'cannot_be_deleted' => 'Eliminazione dell\'impiegato/i non consentita, uno o più hanno trattato delle vendite o stai cancellando il tuo account.', + 'change_employee' => 'Cambia Impiegato', + 'change_password' => 'Cambia Password', + 'clerk' => 'Impiegato', + 'commission' => 'Commissione', + 'confirm_delete' => 'Sei sicuro di voler eliminare l\'impiegato/i selezionato?', + 'confirm_restore' => 'Sei sicuro di voler ripristinare gl\'Impiegati selezionati?', + 'current_password' => 'Password Corrente', + 'current_password_invalid' => 'Password corrente non valida.', + 'employee' => 'Impiegato', + 'error_adding_updating' => 'Aggiunta o aggiornamento di impiegati fallito.', + 'error_cannot_remove_own_minimum_grant' => 'Non puoi rimuovere i tuoi permessi minimi di accesso ai moduli.', + 'error_deleting_admin' => 'Non puoi eliminare un utente amministratore.', + 'error_deleting_demo_admin' => 'Non puoi eliminare l\'utente admin demo.', + 'error_grant_change_disallowed' => 'I cambiamenti dei permessi sono disabilitati in questa demo.', + 'error_password_change_disallowed' => 'I cambiamenti della password sono disabilitati in questa demo.', + 'error_updating_admin' => 'Non puoi modificare un utente amministratore.', + 'error_updating_demo_admin' => 'Non puoi cambiare l\'utente admin demo.', + 'language' => 'Lingua', + 'login_info' => 'Login', + 'manager' => 'Manager', + 'new' => 'Nuovo Impiegato', + 'none_selected' => 'Non hai selezionato nessun impiegato da eliminare.', + 'one_or_multiple' => 'impiegato/i', + 'password' => 'Password', + 'password_minlength' => 'La Password deve essere lunga almeno 8 caratteri.', + 'password_must_match' => 'Le Password non corrispondono.', + 'password_not_must_match' => 'La password corrente e quella nuova devono essere uniche.', + 'password_required' => 'Password obbligatoria.', + 'permission_desc' => 'Barra le caselle sotto per garantire l\'accesso ai moduli.', + 'permission_info' => 'Permessi', + 'repeat_password' => 'Password di nuovo', + 'subpermission_required' => 'Aggiungi almeno un permesso per ogni modulo.', + 'successful_adding' => 'Impiegato aggiunto correttamente.', + 'successful_change_password' => 'Password cambiata con successo.', + 'successful_deleted' => 'Eliminato correttamente', + 'successful_updating' => 'Hai correttamente aggiornato un impiegato', + 'system_language' => 'Lingua di sistema', + 'unsuccessful_change_password' => 'Cambio password fallito.', + 'update' => 'Aggiornamento Impiegato', + 'username' => 'Username', + 'username_duplicate' => '', + 'username_minlength' => 'Lo Username deve essere almeno lungo 5 caratteri di lunghezza.', + 'username_required' => 'Il campo Username è richiesto.', ]; diff --git a/app/Language/ka/Employees.php b/app/Language/ka/Employees.php index 7d4528e22..9c0ddc14c 100644 --- a/app/Language/ka/Employees.php +++ b/app/Language/ka/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => '', - 'cannot_be_deleted' => '', - 'change_employee' => '', - 'change_password' => '', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => '', - 'confirm_restore' => '', - 'current_password' => '', - 'current_password_invalid' => '', - 'employee' => '', - 'error_adding_updating' => '', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => '', - 'error_grant_change_disallowed' => 'უფლებების ცვლილებები დეაქტივირებულია ამ დემოში.', - 'error_password_change_disallowed' => 'პაროლის ცვლილებები დეაქტივირებულია ამ დემოში.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => '', - 'language' => '', - 'login_info' => '', - 'manager' => '', - 'new' => '', - 'none_selected' => '', - 'one_or_multiple' => '', - 'password' => '', - 'password_minlength' => '', - 'password_must_match' => '', - 'password_not_must_match' => '', - 'password_required' => '', - 'permission_desc' => '', - 'permission_info' => '', - 'repeat_password' => '', - 'subpermission_required' => '', - 'successful_adding' => '', - 'successful_change_password' => '', - 'successful_deleted' => '', - 'successful_updating' => '', - 'system_language' => '', - 'unsuccessful_change_password' => '', - 'update' => '', - 'username' => '', - 'username_duplicate' => '', - 'username_minlength' => '', - 'username_required' => '', + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_cannot_remove_own_minimum_grant' => 'თქვენ არ შეგიძლიათ წაშალოთ თქვენი საკუთარი მინიმალური მოდულის წვდომის უფლებები.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'უფლებების ცვლილებები დეაქტივირებულია ამ დემოში.', + 'error_password_change_disallowed' => 'პაროლის ცვლილებები დეაქტივირებულია ამ დემოში.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/km/Employees.php b/app/Language/km/Employees.php index 17754b40d..c8eb80099 100644 --- a/app/Language/km/Employees.php +++ b/app/Language/km/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'ព៌តមាន', - 'cannot_be_deleted' => 'មិនអាចលុបបុគ្គលិកដែលបានជ្រើសរើស, មួយ ឬក៏ច្រើន នៃការលក់ ឬអ្នកកំពុងព្យាយាមលុបគណនីរបស់ខ្លួន។', - 'change_employee' => '', - 'change_password' => 'ផ្លាស់ប្ដូរពាក្យសម្ងាត់', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'តើអ្នកពិតជាចង់លុបបុគ្គលិកដែលបានជ្រើសរើសមែនទេ?', - 'confirm_restore' => 'តើអ្នកពិតជាចង់ដាក់មកវិញនៅបុគ្គលិកដែរបានជ្រើសរើស?', - 'current_password' => 'ពាក្យសម្ងាត់បច្ចុប្បន្ន', - 'current_password_invalid' => 'ពាក្យសម្ងាត់បច្ចុប្បន្ន មិនត្រឹមត្រូវ។', - 'employee' => 'បុគ្គលិក', - 'error_adding_updating' => 'បន្ថែម ឬកែប្រែបុគ្គលិកមិនបានសំរេច។', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'អ្នកមិនអាចលុប គណនីសាកល្បង បានទេ។', - 'error_grant_change_disallowed' => 'ការផ្លាស់ប្តូរលក្ខណៈប្រadministrative ត្រូវបានគ្របដណ្តប់ក្នុងលក្ខណៈពិសេស។', - 'error_password_change_disallowed' => 'ការផ្លាស់ប្តូរលេខសម្ងាត់ត្រូវបានគ្របដណ្តប់ក្នុងលក្ខណៈពិសេស។', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'អ្នកមិនអាចកែប្រែ គណនីសាកល្បងបានទេ។', - 'language' => 'ភាសា', - 'login_info' => 'ចូលទៅក្នុងប្រពន្ធ័', - 'manager' => '', - 'new' => 'បុគ្គលិកថ្មី', - 'none_selected' => 'អ្នកមិនបានជ្រើសរើស បុគ្គលិកណាមួយដើម្បីលុបនោះទេ។', - 'one_or_multiple' => 'បុគ្គលិក', - 'password' => 'ពាក្យសម្ងាត់', - 'password_minlength' => 'ពាក្យសម្ងាត់ ត្រូវតែមានយ៉ាងតិច​ 8 តួអក្សរ។', - 'password_must_match' => 'ពាក្យសម្ងាត់មិនដូចគ្នា។', - 'password_not_must_match' => 'ពាក្យសម្ងាត់បច្ចុប្បន្ន នឹងពាក្យសម្ងាត់ថ្មី ត្រូវតែមានតែមួយ។', - 'password_required' => 'ត្រូវការពាក្យសម្ងាត់។', - 'permission_desc' => 'ឆែកប្រអប់ខាងក្រោម ដើម្បីផ្ដល់សិទ្ធទៅក្នុងផ្នែកណាមួយ។', - 'permission_info' => 'សិទ្ធិ', - 'repeat_password' => 'ពាក្យសម្ងាត់ម្ដងទៀត', - 'subpermission_required' => 'យ៉ាងហោចណាស់ក៏មាន ផ្នែកមួយត្រូវតែផ្ដល់សិទ្ធិ។', - 'successful_adding' => 'ការបន្ថែមបុគ្គលិកបានទទួលជោគជ័យ។', - 'successful_change_password' => 'ការផ្លាស់ប្ដូរពាក្យសម្ងាត់ទទួលបានជោគជ័យ។', - 'successful_deleted' => 'អ្នកទទួលបានជោគជ័យក្នុងការលុប', - 'successful_updating' => 'អ្នកទទួលបានជោគជ័យ ក្នុងការកែប្រែបុគ្គលិក', - 'system_language' => 'ភាសារបស់ប្រព័ន្ធ', - 'unsuccessful_change_password' => 'ការផ្លាស់ប្ដូរពាក្យសម្ងាត់មិនបានសំរេច។', - 'update' => 'កែប្រែបុគ្គលិក', - 'username' => 'ឈ្នោះអ្នកប្រើប្រាស់', - 'username_duplicate' => 'ឈ្មោះបុគ្គលិកត្រូវបានប្រើប្រាស់រួចរាល់។ សូមជ្រើសរើសសារជាថ្មី។', - 'username_minlength' => 'ឈ្មោះអ្នកប្រើប្រាស់ត្រូវមាន 5 តួអក្សរយ៉ាងតិច។', - 'username_required' => 'ឈ្មោះអ្នកប្រើប្រាស់ត្រូវការចាំបាច់។', + 'administrator' => '', + 'basic_information' => 'ព៌តមាន', + 'cannot_be_deleted' => 'មិនអាចលុបបុគ្គលិកដែលបានជ្រើសរើស, មួយ ឬក៏ច្រើន នៃការលក់ ឬអ្នកកំពុងព្យាយាមលុបគណនីរបស់ខ្លួន។', + 'change_employee' => '', + 'change_password' => 'ផ្លាស់ប្ដូរពាក្យសម្ងាត់', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'តើអ្នកពិតជាចង់លុបបុគ្គលិកដែលបានជ្រើសរើសមែនទេ?', + 'confirm_restore' => 'តើអ្នកពិតជាចង់ដាក់មកវិញនៅបុគ្គលិកដែរបានជ្រើសរើស?', + 'current_password' => 'ពាក្យសម្ងាត់បច្ចុប្បន្ន', + 'current_password_invalid' => 'ពាក្យសម្ងាត់បច្ចុប្បន្ន មិនត្រឹមត្រូវ។', + 'employee' => 'បុគ្គលិក', + 'error_adding_updating' => 'បន្ថែម ឬកែប្រែបុគ្គលិកមិនបានសំរេច។', + 'error_cannot_remove_own_minimum_grant' => 'អ្នកមិនអាចដកសិទ្ធិចូលប្រើផ្នែកអប្បបរមារបស់ខ្លួនឯងបានទេ។', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'អ្នកមិនអាចលុប គណនីសាកល្បង បានទេ។', + 'error_grant_change_disallowed' => 'ការផ្លាស់ប្តូរលក្ខណៈប្រadministrative ត្រូវបានគ្របដណ្តប់ក្នុងលក្ខណៈពិសេស។', + 'error_password_change_disallowed' => 'ការផ្លាស់ប្តូរលេខសម្ងាត់ត្រូវបានគ្របដណ្តប់ក្នុងលក្ខណៈពិសេស។', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'អ្នកមិនអាចកែប្រែ គណនីសាកល្បងបានទេ។', + 'language' => 'ភាសា', + 'login_info' => 'ចូលទៅក្នុងប្រពន្ធ័', + 'manager' => '', + 'new' => 'បុគ្គលិកថ្មី', + 'none_selected' => 'អ្នកមិនបានជ្រើសរើស បុគ្គលិកណាមួយដើម្បីលុបនោះទេ។', + 'one_or_multiple' => 'បុគ្គលិក', + 'password' => 'ពាក្យសម្ងាត់', + 'password_minlength' => 'ពាក្យសម្ងាត់ ត្រូវតែមានយ៉ាងតិច​ 8 តួអក្សរ។', + 'password_must_match' => 'ពាក្យសម្ងាត់មិនដូចគ្នា។', + 'password_not_must_match' => 'ពាក្យសម្ងាត់បច្ចុប្បន្ន នឹងពាក្យសម្ងាត់ថ្មី ត្រូវតែមានតែមួយ។', + 'password_required' => 'ត្រូវការពាក្យសម្ងាត់។', + 'permission_desc' => 'ឆែកប្រអប់ខាងក្រោម ដើម្បីផ្ដល់សិទ្ធទៅក្នុងផ្នែកណាមួយ។', + 'permission_info' => 'សិទ្ធិ', + 'repeat_password' => 'ពាក្យសម្ងាត់ម្ដងទៀត', + 'subpermission_required' => 'យ៉ាងហោចណាស់ក៏មាន ផ្នែកមួយត្រូវតែផ្ដល់សិទ្ធិ។', + 'successful_adding' => 'ការបន្ថែមបុគ្គលិកបានទទួលជោគជ័យ។', + 'successful_change_password' => 'ការផ្លាស់ប្ដូរពាក្យសម្ងាត់ទទួលបានជោគជ័យ។', + 'successful_deleted' => 'អ្នកទទួលបានជោគជ័យក្នុងការលុប', + 'successful_updating' => 'អ្នកទទួលបានជោគជ័យ ក្នុងការកែប្រែបុគ្គលិក', + 'system_language' => 'ភាសារបស់ប្រព័ន្ធ', + 'unsuccessful_change_password' => 'ការផ្លាស់ប្ដូរពាក្យសម្ងាត់មិនបានសំរេច។', + 'update' => 'កែប្រែបុគ្គលិក', + 'username' => 'ឈ្នោះអ្នកប្រើប្រាស់', + 'username_duplicate' => 'ឈ្មោះបុគ្គលិកត្រូវបានប្រើប្រាស់រួចរាល់។ សូមជ្រើសរើសសារជាថ្មី។', + 'username_minlength' => 'ឈ្មោះអ្នកប្រើប្រាស់ត្រូវមាន 5 តួអក្សរយ៉ាងតិច។', + 'username_required' => 'ឈ្មោះអ្នកប្រើប្រាស់ត្រូវការចាំបាច់។', ]; diff --git a/app/Language/lo/Employees.php b/app/Language/lo/Employees.php index cad760773..e9b7f3978 100644 --- a/app/Language/lo/Employees.php +++ b/app/Language/lo/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'ຂໍ້ມູນ', - 'cannot_be_deleted' => 'ບໍ່ສາມາດລຶບພະນັກງານທີ່ເລືອກໄດ້, ຢ່າງໜ້ອຍມີ 1 ລາຍການຫຼືຫຼາຍກວ່ານັ້ນ ຍັງມີການຊື້ຂາຍກັນຢູ່ ຫຼື ທ່ານກຳລັງພະຍາຍາມລຶບບັນຊີຂອງຕົວເອງ.', - 'change_employee' => '', - 'change_password' => 'ປ່ຽນ Password', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'ທ່ານຈະລຶບພະນັກງານທີ່ເລືອກແທ້ບໍ່ ?', - 'confirm_restore' => '', - 'current_password' => 'Password ປັດຈຸບັນ', - 'current_password_invalid' => 'Password ປັດຈຸບັນບໍ່ຖືກຕ້ອງ.', - 'employee' => 'ພະນັກງານ', - 'error_adding_updating' => 'ເພີ່ມ ຫຼື ແກ້ໄຂ ພະນັກງານ ບໍ່ສຳເລັດ.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'ທ່ານບໍ່ສາມາດລຶບບັນຊີທົດລອງຜູ້ດູແລລະບົບໄດ້.', - 'error_grant_change_disallowed' => 'ການປ່ຽນແປງສິດທິໄດ້ຖືກປິດໃນ demo ນີ້.', - 'error_password_change_disallowed' => 'ການປ່ຽນແປງລະຫັດຜ່ານໄດ້ຖືກປິດໃນ demo ນີ້.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'ທ່ານບໍ່ສາມາດປ່ຽນແປງບັນຊີທົດລອງຜູ້ດູແລລະບົບໄດ້.', - 'language' => 'ພາສາ', - 'login_info' => 'ເຂົ້າລະບົບ', - 'manager' => '', - 'new' => 'ພະນັກງານໃໝ່', - 'none_selected' => 'ທ່ານຍັງບໍ່ໄດ້ເລືອກພະນັກງານໃດເລີຍເພື່ອລຶບ.', - 'one_or_multiple' => 'ພະນັກງານ', - 'password' => 'Password', - 'password_minlength' => 'Password ຄວນໃສ່ຢ່າງໜ້ອຍ 8 ຕົວອັກສອນ.', - 'password_must_match' => 'Password ບໍ່ຄືກັນ.', - 'password_not_must_match' => 'Password ປັດຈຸບັນ ແລະ Password ໃໝ່ ຈະຕ້ອງບໍ່ຄືກັນ.', - 'password_required' => 'Password ຈຳເປັນຕ້ອງໃສ່.', - 'permission_desc' => 'ຕິກຂໍ້ມູນດ້ານລຸ່ມເພື່ອໃຫ້ສາມາດນຳໃຊ້ Modules ຕ່າງໆໄດ້.', - 'permission_info' => 'ສິດ', - 'repeat_password' => 'ລະຫັດຜ່ານອີກຄັ້ງ', - 'subpermission_required' => 'Add at least one grant for each module.', - 'successful_adding' => 'ເພີ່ມພະນັກງານສຳເລັດ.', - 'successful_change_password' => 'ປ່ຽນລະຫັດຜ່ານສຳເລັດ.', - 'successful_deleted' => 'ທ່ານລຶບສຳເລັດແລ້ວ', - 'successful_updating' => 'ທ່ານແກ້ໄຂພະນັກງານສຳເລັດ', - 'system_language' => 'ພາສາຂອງລະບົບ', - 'unsuccessful_change_password' => 'ປ່ຽນລະຫັດຜ່ານບໍ່ສຳເລັດ.', - 'update' => 'ແກ້ໄຂພະນັກງານ', - 'username' => 'ຊື່ຜູ້ໃຊ້', - 'username_duplicate' => '', - 'username_minlength' => 'Username ຕ້ອງໃສ່ຢ່າງໜ້ອຍ 5 ຕົວອັກສອນ.', - 'username_required' => 'Username ຈຳເປັນຕ້ອງໃສ່.', + 'administrator' => '', + 'basic_information' => 'ຂໍ້ມູນ', + 'cannot_be_deleted' => 'ບໍ່ສາມາດລຶບພະນັກງານທີ່ເລືອກໄດ້, ຢ່າງໜ້ອຍມີ 1 ລາຍການຫຼືຫຼາຍກວ່ານັ້ນ ຍັງມີການຊື້ຂາຍກັນຢູ່ ຫຼື ທ່ານກຳລັງພະຍາຍາມລຶບບັນຊີຂອງຕົວເອງ.', + 'change_employee' => '', + 'change_password' => 'ປ່ຽນ Password', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'ທ່ານຈະລຶບພະນັກງານທີ່ເລືອກແທ້ບໍ່ ?', + 'confirm_restore' => '', + 'current_password' => 'Password ປັດຈຸບັນ', + 'current_password_invalid' => 'Password ປັດຈຸບັນບໍ່ຖືກຕ້ອງ.', + 'employee' => 'ພະນັກງານ', + 'error_adding_updating' => 'ເພີ່ມ ຫຼື ແກ້ໄຂ ພະນັກງານ ບໍ່ສຳເລັດ.', + 'error_cannot_remove_own_minimum_grant' => 'ທ່ານບໍ່ສາມາດເອົາສິດອະນຸຍາດຂັ້ນຕ່ຳຂອງຕົນເອງອອກໄດ້.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'ທ່ານບໍ່ສາມາດລຶບບັນຊີທົດລອງຜູ້ດູແລລະບົບໄດ້.', + 'error_grant_change_disallowed' => 'ການປ່ຽນແປງສິດທິໄດ້ຖືກປິດໃນ demo ນີ້.', + 'error_password_change_disallowed' => 'ການປ່ຽນແປງລະຫັດຜ່ານໄດ້ຖືກປິດໃນ demo ນີ້.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'ທ່ານບໍ່ສາມາດປ່ຽນແປງບັນຊີທົດລອງຜູ້ດູແລລະບົບໄດ້.', + 'language' => 'ພາສາ', + 'login_info' => 'ເຂົ້າລະບົບ', + 'manager' => '', + 'new' => 'ພະນັກງານໃໝ່', + 'none_selected' => 'ທ່ານຍັງບໍ່ໄດ້ເລືອກພະນັກງານໃດເລີຍເພື່ອລຶບ.', + 'one_or_multiple' => 'ພະນັກງານ', + 'password' => 'Password', + 'password_minlength' => 'Password ຄວນໃສ່ຢ່າງໜ້ອຍ 8 ຕົວອັກສອນ.', + 'password_must_match' => 'Password ບໍ່ຄືກັນ.', + 'password_not_must_match' => 'Password ປັດຈຸບັນ ແລະ Password ໃໝ່ ຈະຕ້ອງບໍ່ຄືກັນ.', + 'password_required' => 'Password ຈຳເປັນຕ້ອງໃສ່.', + 'permission_desc' => 'ຕິກຂໍ້ມູນດ້ານລຸ່ມເພື່ອໃຫ້ສາມາດນຳໃຊ້ Modules ຕ່າງໆໄດ້.', + 'permission_info' => 'ສິດ', + 'repeat_password' => 'ລະຫັດຜ່ານອີກຄັ້ງ', + 'subpermission_required' => 'Add at least one grant for each module.', + 'successful_adding' => 'ເພີ່ມພະນັກງານສຳເລັດ.', + 'successful_change_password' => 'ປ່ຽນລະຫັດຜ່ານສຳເລັດ.', + 'successful_deleted' => 'ທ່ານລຶບສຳເລັດແລ້ວ', + 'successful_updating' => 'ທ່ານແກ້ໄຂພະນັກງານສຳເລັດ', + 'system_language' => 'ພາສາຂອງລະບົບ', + 'unsuccessful_change_password' => 'ປ່ຽນລະຫັດຜ່ານບໍ່ສຳເລັດ.', + 'update' => 'ແກ້ໄຂພະນັກງານ', + 'username' => 'ຊື່ຜູ້ໃຊ້', + 'username_duplicate' => '', + 'username_minlength' => 'Username ຕ້ອງໃສ່ຢ່າງໜ້ອຍ 5 ຕົວອັກສອນ.', + 'username_required' => 'Username ຈຳເປັນຕ້ອງໃສ່.', ]; diff --git a/app/Language/ml/Employees.php b/app/Language/ml/Employees.php index ec41d47e2..db54af919 100644 --- a/app/Language/ml/Employees.php +++ b/app/Language/ml/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => '', - 'cannot_be_deleted' => '', - 'change_employee' => '', - 'change_password' => '', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => '', - 'confirm_restore' => '', - 'current_password' => '', - 'current_password_invalid' => '', - 'employee' => '', - 'error_adding_updating' => '', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => '', - 'error_grant_change_disallowed' => 'അനുമതി മാറ്റങ്ങൾ ഈ ഡെമോയിൽ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു.', - 'error_password_change_disallowed' => 'പാസ്‌വേർഡ് മാറ്റങ്ങൾ ഈ ഡെമോയിൽ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => '', - 'language' => '', - 'login_info' => '', - 'manager' => '', - 'new' => '', - 'none_selected' => '', - 'one_or_multiple' => '', - 'password' => '', - 'password_minlength' => '', - 'password_must_match' => '', - 'password_not_must_match' => '', - 'password_required' => '', - 'permission_desc' => '', - 'permission_info' => '', - 'repeat_password' => '', - 'subpermission_required' => '', - 'successful_adding' => '', - 'successful_change_password' => '', - 'successful_deleted' => '', - 'successful_updating' => '', - 'system_language' => '', - 'unsuccessful_change_password' => '', - 'update' => '', - 'username' => '', - 'username_duplicate' => '', - 'username_minlength' => '', - 'username_required' => '', + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_cannot_remove_own_minimum_grant' => 'നിങ്ങളുടെ സ്വന്തം കുറഞ്ഞ മൊഡ്യൂൾ അനുമതികൾ നീക്കം ചെയ്യാൻ കഴിയില്ല.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'അനുമതി മാറ്റങ്ങൾ ഈ ഡെമോയിൽ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു.', + 'error_password_change_disallowed' => 'പാസ്‌വേർഡ് മാറ്റങ്ങൾ ഈ ഡെമോയിൽ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/nb/Employees.php b/app/Language/nb/Employees.php index 2973e2661..69b78b136 100644 --- a/app/Language/nb/Employees.php +++ b/app/Language/nb/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => '', - 'cannot_be_deleted' => '', - 'change_employee' => '', - 'change_password' => '', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => '', - 'confirm_restore' => '', - 'current_password' => '', - 'current_password_invalid' => '', - 'employee' => '', - 'error_adding_updating' => '', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => '', - 'error_grant_change_disallowed' => 'Tillatelser kan ikke endres i denne demoen.', - 'error_password_change_disallowed' => 'Passordet kan ikke endres i denne demoen.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => '', - 'language' => '', - 'login_info' => '', - 'manager' => '', - 'new' => '', - 'none_selected' => '', - 'one_or_multiple' => '', - 'password' => '', - 'password_minlength' => '', - 'password_must_match' => '', - 'password_not_must_match' => '', - 'password_required' => '', - 'permission_desc' => '', - 'permission_info' => '', - 'repeat_password' => '', - 'subpermission_required' => '', - 'successful_adding' => '', - 'successful_change_password' => '', - 'successful_deleted' => '', - 'successful_updating' => '', - 'system_language' => '', - 'unsuccessful_change_password' => '', - 'update' => '', - 'username' => '', - 'username_duplicate' => '', - 'username_minlength' => '', - 'username_required' => '', + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_cannot_remove_own_minimum_grant' => 'Du kan ikke fjerne dine egne minimumsrettigheter for moduler.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'Tillatelser kan ikke endres i denne demoen.', + 'error_password_change_disallowed' => 'Passordet kan ikke endres i denne demoen.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/nl-BE/Employees.php b/app/Language/nl-BE/Employees.php index 713fd4025..a8364cad1 100644 --- a/app/Language/nl-BE/Employees.php +++ b/app/Language/nl-BE/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Informatie', - 'cannot_be_deleted' => 'Kon de geselecteerde gebruiker(s) niet verwijderen', - 'change_employee' => '', - 'change_password' => 'Wijzig Paswoord', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Bent u zeker dat u de geselecteerde werknemers wil verwijderen?', - 'confirm_restore' => 'Bent u zeker dat u de geselecteerde werknemers wil herstellen?', - 'current_password' => 'Huidig Paswoord', - 'current_password_invalid' => 'Huidig paswoord is ongeldig.', - 'employee' => 'Werknemer', - 'error_adding_updating' => 'Fout bij het toevoegen/aanpassen medewerker.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Je kan de demo gebruilker niet verwijderen.', - 'error_grant_change_disallowed' => 'Machtigingswijzigingen zijn uitgeschakeld in deze demo.', - 'error_password_change_disallowed' => 'Wachtwoordwijzigingen zijn uitgeschakeld in deze demo.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Jij kan de demo gebruiker niet veranderen.', - 'language' => 'Taal', - 'login_info' => 'Login', - 'manager' => '', - 'new' => 'N. Werknemer', - 'none_selected' => 'U hebt geen werknemers geselecteerd.', - 'one_or_multiple' => 'werknemer(s) verwijderd', - 'password' => 'Paswoord', - 'password_minlength' => 'Paswoord moet minstens 8 characters lang zijn.', - 'password_must_match' => 'Paswoorden komen niet overeen.', - 'password_not_must_match' => 'Het huidige en het nieuwe paswoord moeten verschillend zijn.', - 'password_required' => 'Paswoord moet ingevuld worden.', - 'permission_desc' => 'Vink de selectievakjes hieronder aan om toegang te verlenen tot de modules.', - 'permission_info' => 'Rechten', - 'repeat_password' => 'Herhaal Paswoord', - 'subpermission_required' => 'Selecteer minstens één permissie voor elke module.', - 'successful_adding' => 'Je hebt met succes een medewerker toegevoegd.', - 'successful_change_password' => 'Paswoord wijziging geslaagd.', - 'successful_deleted' => 'Er werd(en)', - 'successful_updating' => 'Je hebt met succes de medewerker gewijzigd', - 'system_language' => 'Systeem taal', - 'unsuccessful_change_password' => 'Paswoord wijziging gefaald.', - 'update' => 'Update Werknemer', - 'username' => 'Gebruikersnaam', - 'username_duplicate' => 'Werknemer gebruikersnaam is al in gebruik. Gelieve een andere te kiezen.', - 'username_minlength' => 'Gebruikersnaam moet minstens 5 characters lang zijn.', - 'username_required' => 'Gebruikersnaam moet ingevuld worden.', + 'administrator' => '', + 'basic_information' => 'Informatie', + 'cannot_be_deleted' => 'Kon de geselecteerde gebruiker(s) niet verwijderen', + 'change_employee' => '', + 'change_password' => 'Wijzig Paswoord', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Bent u zeker dat u de geselecteerde werknemers wil verwijderen?', + 'confirm_restore' => 'Bent u zeker dat u de geselecteerde werknemers wil herstellen?', + 'current_password' => 'Huidig Paswoord', + 'current_password_invalid' => 'Huidig paswoord is ongeldig.', + 'employee' => 'Werknemer', + 'error_adding_updating' => 'Fout bij het toevoegen/aanpassen medewerker.', + 'error_cannot_remove_own_minimum_grant' => 'U kan uw eigen minimale modulerechten niet verwijderen.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Je kan de demo gebruilker niet verwijderen.', + 'error_grant_change_disallowed' => 'Machtigingswijzigingen zijn uitgeschakeld in deze demo.', + 'error_password_change_disallowed' => 'Wachtwoordwijzigingen zijn uitgeschakeld in deze demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Jij kan de demo gebruiker niet veranderen.', + 'language' => 'Taal', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'N. Werknemer', + 'none_selected' => 'U hebt geen werknemers geselecteerd.', + 'one_or_multiple' => 'werknemer(s) verwijderd', + 'password' => 'Paswoord', + 'password_minlength' => 'Paswoord moet minstens 8 characters lang zijn.', + 'password_must_match' => 'Paswoorden komen niet overeen.', + 'password_not_must_match' => 'Het huidige en het nieuwe paswoord moeten verschillend zijn.', + 'password_required' => 'Paswoord moet ingevuld worden.', + 'permission_desc' => 'Vink de selectievakjes hieronder aan om toegang te verlenen tot de modules.', + 'permission_info' => 'Rechten', + 'repeat_password' => 'Herhaal Paswoord', + 'subpermission_required' => 'Selecteer minstens één permissie voor elke module.', + 'successful_adding' => 'Je hebt met succes een medewerker toegevoegd.', + 'successful_change_password' => 'Paswoord wijziging geslaagd.', + 'successful_deleted' => 'Er werd(en)', + 'successful_updating' => 'Je hebt met succes de medewerker gewijzigd', + 'system_language' => 'Systeem taal', + 'unsuccessful_change_password' => 'Paswoord wijziging gefaald.', + 'update' => 'Update Werknemer', + 'username' => 'Gebruikersnaam', + 'username_duplicate' => 'Werknemer gebruikersnaam is al in gebruik. Gelieve een andere te kiezen.', + 'username_minlength' => 'Gebruikersnaam moet minstens 5 characters lang zijn.', + 'username_required' => 'Gebruikersnaam moet ingevuld worden.', ]; diff --git a/app/Language/nl-NL/Employees.php b/app/Language/nl-NL/Employees.php index 1ced186f9..e62e282c3 100644 --- a/app/Language/nl-NL/Employees.php +++ b/app/Language/nl-NL/Employees.php @@ -1,49 +1,50 @@ 'Beheerder', - 'basic_information' => 'Informatie', - 'cannot_be_deleted' => 'Kan geselecteerde werknemer(s) niet verwijderen', - 'change_employee' => 'Werknemer wijzigen', - 'change_password' => 'Wachtwoord wijzigen', - 'clerk' => 'Bediende', - 'commission' => 'Commissie', - 'confirm_delete' => 'Weet u zeker dat u de geselecteerde werknemer(s) wilt verwijderen?', - 'confirm_restore' => 'Weet u zeker dat u de geselecteerde werknemer(s) wilt herstellen?', - 'current_password' => 'Huidige wachtwoord', - 'current_password_invalid' => 'Huidige wachtwoord is ongeldig.', - 'employee' => 'Werknemer', - 'error_adding_updating' => 'Werknemer toevoegen of bijwerken mislukt.', - 'error_deleting_admin' => 'U kunt een beheerder niet verwijderen.', - 'error_deleting_demo_admin' => 'Kan de demo admin gebruiker niet verwijderen.', - 'error_grant_change_disallowed' => 'Machtigingswijzigingen zijn uitgeschakeld in deze demo.', - 'error_password_change_disallowed' => 'Wachtwoordwijzigingen zijn uitgeschakeld in deze demo.', - 'error_updating_admin' => 'U kunt een beheerder niet wijzigen.', - 'error_updating_demo_admin' => 'Kan de demo admin gebruiker niet wijzigen.', - 'language' => 'Taal', - 'login_info' => 'Aanmelden', - 'manager' => 'Manager', - 'new' => 'Nieuwe werknemer', - 'none_selected' => 'Geen werknemer(s) geselecteerd om te verwijderen.', - 'one_or_multiple' => 'werknemer(s)', - 'password' => 'Wachtwoord', - 'password_minlength' => 'Wachtwoord moet minstens 8 karakters bevatten.', - 'password_must_match' => 'Wachtwoorden komen niet overeen.', - 'password_not_must_match' => 'Huidige wachtwoord en nieuwe wachtwoord moeten uniek zijn.', - 'password_required' => 'Wachtwoord is vereist.', - 'permission_desc' => 'De selectievakjes hieronder selecteren om toegang te verlenen tot modules.', - 'permission_info' => 'Machtigingen', - 'repeat_password' => 'Wachtwoord opnieuw', - 'subpermission_required' => 'Tenminste eenmaal toegang verlenen voor elke module.', - 'successful_adding' => 'Werknemer toegevoegd.', - 'successful_change_password' => 'Wachtwoord gewijzigd.', - 'successful_deleted' => 'U heeft verwijderd', - 'successful_updating' => 'Werknemer bijgewerkt', - 'system_language' => 'Systeemtaal', - 'unsuccessful_change_password' => 'Wachtwoord wijzigen mislukt.', - 'update' => 'Werknemer bijwerken', - 'username' => 'Gebruikersnaam', - 'username_duplicate' => '', - 'username_minlength' => 'Gebruikersnaam moet minstens 5 karakters bevatten.', - 'username_required' => 'Gebruikersnaam is een vereist veld.', + 'administrator' => 'Beheerder', + 'basic_information' => 'Informatie', + 'cannot_be_deleted' => 'Kan geselecteerde werknemer(s) niet verwijderen', + 'change_employee' => 'Werknemer wijzigen', + 'change_password' => 'Wachtwoord wijzigen', + 'clerk' => 'Bediende', + 'commission' => 'Commissie', + 'confirm_delete' => 'Weet u zeker dat u de geselecteerde werknemer(s) wilt verwijderen?', + 'confirm_restore' => 'Weet u zeker dat u de geselecteerde werknemer(s) wilt herstellen?', + 'current_password' => 'Huidige wachtwoord', + 'current_password_invalid' => 'Huidige wachtwoord is ongeldig.', + 'employee' => 'Werknemer', + 'error_adding_updating' => 'Werknemer toevoegen of bijwerken mislukt.', + 'error_cannot_remove_own_minimum_grant' => 'U kunt uw eigen minimale machtigingen voor modules niet verwijderen.', + 'error_deleting_admin' => 'U kunt een beheerder niet verwijderen.', + 'error_deleting_demo_admin' => 'Kan de demo admin gebruiker niet verwijderen.', + 'error_grant_change_disallowed' => 'Machtigingswijzigingen zijn uitgeschakeld in deze demo.', + 'error_password_change_disallowed' => 'Wachtwoordwijzigingen zijn uitgeschakeld in deze demo.', + 'error_updating_admin' => 'U kunt een beheerder niet wijzigen.', + 'error_updating_demo_admin' => 'Kan de demo admin gebruiker niet wijzigen.', + 'language' => 'Taal', + 'login_info' => 'Aanmelden', + 'manager' => 'Manager', + 'new' => 'Nieuwe werknemer', + 'none_selected' => 'Geen werknemer(s) geselecteerd om te verwijderen.', + 'one_or_multiple' => 'werknemer(s)', + 'password' => 'Wachtwoord', + 'password_minlength' => 'Wachtwoord moet minstens 8 karakters bevatten.', + 'password_must_match' => 'Wachtwoorden komen niet overeen.', + 'password_not_must_match' => 'Huidige wachtwoord en nieuwe wachtwoord moeten uniek zijn.', + 'password_required' => 'Wachtwoord is vereist.', + 'permission_desc' => 'De selectievakjes hieronder selecteren om toegang te verlenen tot modules.', + 'permission_info' => 'Machtigingen', + 'repeat_password' => 'Wachtwoord opnieuw', + 'subpermission_required' => 'Tenminste eenmaal toegang verlenen voor elke module.', + 'successful_adding' => 'Werknemer toegevoegd.', + 'successful_change_password' => 'Wachtwoord gewijzigd.', + 'successful_deleted' => 'U heeft verwijderd', + 'successful_updating' => 'Werknemer bijgewerkt', + 'system_language' => 'Systeemtaal', + 'unsuccessful_change_password' => 'Wachtwoord wijzigen mislukt.', + 'update' => 'Werknemer bijwerken', + 'username' => 'Gebruikersnaam', + 'username_duplicate' => '', + 'username_minlength' => 'Gebruikersnaam moet minstens 5 karakters bevatten.', + 'username_required' => 'Gebruikersnaam is een vereist veld.', ]; diff --git a/app/Language/pl/Employees.php b/app/Language/pl/Employees.php index 30a6e7793..38b9fefdc 100644 --- a/app/Language/pl/Employees.php +++ b/app/Language/pl/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Informacje', - 'cannot_be_deleted' => '', - 'change_employee' => '', - 'change_password' => '', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => '', - 'confirm_restore' => '', - 'current_password' => '', - 'current_password_invalid' => '', - 'employee' => '', - 'error_adding_updating' => '', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => '', - 'error_grant_change_disallowed' => 'Zmiany uprawnień są wyłączone w tej wersji demo.', - 'error_password_change_disallowed' => 'Zmiany hasła są wyłączone w tej wersji demo.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => '', - 'language' => '', - 'login_info' => '', - 'manager' => '', - 'new' => '', - 'none_selected' => '', - 'one_or_multiple' => '', - 'password' => '', - 'password_minlength' => '', - 'password_must_match' => '', - 'password_not_must_match' => '', - 'password_required' => '', - 'permission_desc' => '', - 'permission_info' => '', - 'repeat_password' => '', - 'subpermission_required' => '', - 'successful_adding' => '', - 'successful_change_password' => '', - 'successful_deleted' => '', - 'successful_updating' => '', - 'system_language' => '', - 'unsuccessful_change_password' => '', - 'update' => '', - 'username' => '', - 'username_duplicate' => '', - 'username_minlength' => '', - 'username_required' => '', + 'administrator' => '', + 'basic_information' => 'Informacje', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_cannot_remove_own_minimum_grant' => 'Nie możesz usunąć własnych minimalnych uprawnień do modułów.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'Zmiany uprawnień są wyłączone w tej wersji demo.', + 'error_password_change_disallowed' => 'Zmiany hasła są wyłączone w tej wersji demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/pt-BR/Employees.php b/app/Language/pt-BR/Employees.php index c29affa51..982229e32 100644 --- a/app/Language/pt-BR/Employees.php +++ b/app/Language/pt-BR/Employees.php @@ -1,49 +1,50 @@ 'Administrador', - 'basic_information' => 'Informações do Funcionário', - 'cannot_be_deleted' => 'Não foi possível excluir funcionários selecionados', - 'change_employee' => 'Alterar Funcionário', - 'change_password' => 'Alterar senha', - 'clerk' => 'Funcionário', - 'commission' => 'Comissão', - 'confirm_delete' => 'Tem certeza de que deseja excluir os funcionários selecionados?', - 'confirm_restore' => 'Tem certeza de que deseja restaurar o (s) empregado (s) selecionado (s)?', - 'current_password' => 'Senha atual', - 'current_password_invalid' => 'Senha atual inválida.', - 'employee' => 'Funcionário', - 'error_adding_updating' => 'Erro ao adicionar/atualizar funcionário.', - 'error_deleting_admin' => 'Você não pode excluir um usuário administrador.', - 'error_deleting_demo_admin' => 'Você não pode excluir o usuário administrador de demonstração.', - 'error_grant_change_disallowed' => 'As alterações de permissão são desabilitadas nesta demonstração.', - 'error_password_change_disallowed' => 'As alterações de senha são desabilitadas nesta demonstração.', - 'error_updating_admin' => 'Você não pode modificar um usuário administrador.', - 'error_updating_demo_admin' => 'Você não pode alterar o usuário de demonstração de administração.', - 'language' => 'Linguagem', - 'login_info' => 'Autenticação', - 'manager' => 'Gerente', - 'new' => 'Novo Funcionário', - 'none_selected' => 'Você não selecionou nenhum funcionário para excluir.', - 'one_or_multiple' => 'funcionário(s)', - 'password' => 'Senha', - 'password_minlength' => 'As senhas devem ter pelo menos 8 caracteres.', - 'password_must_match' => 'As senhas não correspondem.', - 'password_not_must_match' => 'A senha atual e a nova senha devem ser exclusivas.', - 'password_required' => 'Senha requerida.', - 'permission_desc' => 'Marque as caixas abaixo para conceder acesso aos módulos.', - 'permission_info' => 'Permissões de acesso do funcionário', - 'repeat_password' => 'Confirme a senha', - 'subpermission_required' => 'Adicione pelo menos um privilégio para cada módulo.', - 'successful_adding' => 'Você adicionou o funcionário com sucesso.', - 'successful_change_password' => 'Alteração de senha bem sucedida.', - 'successful_deleted' => 'Você apagou o funcionário com sucesso', - 'successful_updating' => 'Você atualizou com sucesso o funcionário', - 'system_language' => 'Idioma do sistema', - 'unsuccessful_change_password' => 'Falha na mudança de senha.', - 'update' => 'Atualizar funcionário', - 'username' => 'Usuário', - 'username_duplicate' => '', - 'username_minlength' => 'O nome de usuário deve ter pelo menos 5 caracteres.', - 'username_required' => 'Nome de Usuário é um campo obrigatório.', + 'administrator' => 'Administrador', + 'basic_information' => 'Informações do Funcionário', + 'cannot_be_deleted' => 'Não foi possível excluir funcionários selecionados', + 'change_employee' => 'Alterar Funcionário', + 'change_password' => 'Alterar senha', + 'clerk' => 'Funcionário', + 'commission' => 'Comissão', + 'confirm_delete' => 'Tem certeza de que deseja excluir os funcionários selecionados?', + 'confirm_restore' => 'Tem certeza de que deseja restaurar o (s) empregado (s) selecionado (s)?', + 'current_password' => 'Senha atual', + 'current_password_invalid' => 'Senha atual inválida.', + 'employee' => 'Funcionário', + 'error_adding_updating' => 'Erro ao adicionar/atualizar funcionário.', + 'error_cannot_remove_own_minimum_grant' => 'Você não pode remover suas próprias permissões mínimas de módulo.', + 'error_deleting_admin' => 'Você não pode excluir um usuário administrador.', + 'error_deleting_demo_admin' => 'Você não pode excluir o usuário administrador de demonstração.', + 'error_grant_change_disallowed' => 'As alterações de permissão são desabilitadas nesta demonstração.', + 'error_password_change_disallowed' => 'As alterações de senha são desabilitadas nesta demonstração.', + 'error_updating_admin' => 'Você não pode modificar um usuário administrador.', + 'error_updating_demo_admin' => 'Você não pode alterar o usuário de demonstração de administração.', + 'language' => 'Linguagem', + 'login_info' => 'Autenticação', + 'manager' => 'Gerente', + 'new' => 'Novo Funcionário', + 'none_selected' => 'Você não selecionou nenhum funcionário para excluir.', + 'one_or_multiple' => 'funcionário(s)', + 'password' => 'Senha', + 'password_minlength' => 'As senhas devem ter pelo menos 8 caracteres.', + 'password_must_match' => 'As senhas não correspondem.', + 'password_not_must_match' => 'A senha atual e a nova senha devem ser exclusivas.', + 'password_required' => 'Senha requerida.', + 'permission_desc' => 'Marque as caixas abaixo para conceder acesso aos módulos.', + 'permission_info' => 'Permissões de acesso do funcionário', + 'repeat_password' => 'Confirme a senha', + 'subpermission_required' => 'Adicione pelo menos um privilégio para cada módulo.', + 'successful_adding' => 'Você adicionou o funcionário com sucesso.', + 'successful_change_password' => 'Alteração de senha bem sucedida.', + 'successful_deleted' => 'Você apagou o funcionário com sucesso', + 'successful_updating' => 'Você atualizou com sucesso o funcionário', + 'system_language' => 'Idioma do sistema', + 'unsuccessful_change_password' => 'Falha na mudança de senha.', + 'update' => 'Atualizar funcionário', + 'username' => 'Usuário', + 'username_duplicate' => '', + 'username_minlength' => 'O nome de usuário deve ter pelo menos 5 caracteres.', + 'username_required' => 'Nome de Usuário é um campo obrigatório.', ]; diff --git a/app/Language/ro/Employees.php b/app/Language/ro/Employees.php index 33161aae0..30963dc16 100644 --- a/app/Language/ro/Employees.php +++ b/app/Language/ro/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => '', - 'cannot_be_deleted' => '', - 'change_employee' => '', - 'change_password' => '', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => '', - 'confirm_restore' => '', - 'current_password' => '', - 'current_password_invalid' => '', - 'employee' => '', - 'error_adding_updating' => '', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => '', - 'error_grant_change_disallowed' => 'Modificările permisiunilor sunt dezactivate în această demo.', - 'error_password_change_disallowed' => 'Modificările parolei sunt dezactivate în această demo.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => '', - 'language' => '', - 'login_info' => '', - 'manager' => '', - 'new' => '', - 'none_selected' => '', - 'one_or_multiple' => '', - 'password' => '', - 'password_minlength' => '', - 'password_must_match' => '', - 'password_not_must_match' => '', - 'password_required' => '', - 'permission_desc' => '', - 'permission_info' => '', - 'repeat_password' => '', - 'subpermission_required' => '', - 'successful_adding' => '', - 'successful_change_password' => '', - 'successful_deleted' => '', - 'successful_updating' => '', - 'system_language' => '', - 'unsuccessful_change_password' => '', - 'update' => '', - 'username' => '', - 'username_duplicate' => '', - 'username_minlength' => '', - 'username_required' => '', + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_cannot_remove_own_minimum_grant' => 'Nu vă puteți elimina propriile permisiuni minime pentru module.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'Modificările permisiunilor sunt dezactivate în această demo.', + 'error_password_change_disallowed' => 'Modificările parolei sunt dezactivate în această demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/ru/Employees.php b/app/Language/ru/Employees.php index 2e70762c8..ee42ed962 100644 --- a/app/Language/ru/Employees.php +++ b/app/Language/ru/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Информация', - 'cannot_be_deleted' => 'Не удалось удалить выбранных сотрудников, один или несколько из них обработали продажи или вы пытаетесь удалить свою учетную запись.', - 'change_employee' => '', - 'change_password' => 'Смена пароля', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Вы уверены, что хотите удалить выбранных сотрудников?', - 'confirm_restore' => 'Вы уверены, что хотите восстановить выбранных сотрудников?', - 'current_password' => 'Текущий пароль', - 'current_password_invalid' => 'Текущий пароль введен неверно.', - 'employee' => 'Сотрудник', - 'error_adding_updating' => 'Ошибка при добавлении/обновлении сотрудника.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Вы не можете удалить демо-администратора.', - 'error_grant_change_disallowed' => 'Изменения прав доступа отключены в этой демонстрации.', - 'error_password_change_disallowed' => 'Изменение пароля отключено в этой демонстрации.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Вы не можете изменить демо-администратора.', - 'language' => 'Язык', - 'login_info' => 'Вход', - 'manager' => '', - 'new' => 'Новый сотрудник', - 'none_selected' => 'Вы не выбрали ни одного сотрудника для удаления.', - 'one_or_multiple' => 'сотрудник(и)', - 'password' => 'Пароль', - 'password_minlength' => 'Пароль должен быть не менее 8 символов.', - 'password_must_match' => 'Пароли не совпадают.', - 'password_not_must_match' => 'Текущий пароль и новый пароль должны быть уникальными.', - 'password_required' => 'Ввод пароля - обязателен.', - 'permission_desc' => 'Отметьте флажками ниже, чтобы предоставить доступ к модулям.', - 'permission_info' => 'Права доступа', - 'repeat_password' => 'Повтор пароля', - 'subpermission_required' => 'Добавьте хотя бы одно разрешение для каждого модуля.', - 'successful_adding' => 'Сотрудник успешно создан.', - 'successful_change_password' => 'Смена пароля прошла успешно.', - 'successful_deleted' => 'Успешно удалено', - 'successful_updating' => 'Информация о сотруднике успешно обновлена', - 'system_language' => 'Язык системы', - 'unsuccessful_change_password' => 'Не удалось изменить пароль.', - 'update' => 'Обновление сотрудника', - 'username' => 'Имя пользователя', - 'username_duplicate' => 'Имя пользователя сотрудника уже используется. Пожалуйста, выберите другое.', - 'username_minlength' => 'Имя пользователя должно быть не менее 5 символов.', - 'username_required' => 'Имя пользователя - обязательное поле для заполнения.', + 'administrator' => '', + 'basic_information' => 'Информация', + 'cannot_be_deleted' => 'Не удалось удалить выбранных сотрудников, один или несколько из них обработали продажи или вы пытаетесь удалить свою учетную запись.', + 'change_employee' => '', + 'change_password' => 'Смена пароля', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Вы уверены, что хотите удалить выбранных сотрудников?', + 'confirm_restore' => 'Вы уверены, что хотите восстановить выбранных сотрудников?', + 'current_password' => 'Текущий пароль', + 'current_password_invalid' => 'Текущий пароль введен неверно.', + 'employee' => 'Сотрудник', + 'error_adding_updating' => 'Ошибка при добавлении/обновлении сотрудника.', + 'error_cannot_remove_own_minimum_grant' => 'Вы не можете удалить собственные минимальные права доступа к модулям.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Вы не можете удалить демо-администратора.', + 'error_grant_change_disallowed' => 'Изменения прав доступа отключены в этой демонстрации.', + 'error_password_change_disallowed' => 'Изменение пароля отключено в этой демонстрации.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Вы не можете изменить демо-администратора.', + 'language' => 'Язык', + 'login_info' => 'Вход', + 'manager' => '', + 'new' => 'Новый сотрудник', + 'none_selected' => 'Вы не выбрали ни одного сотрудника для удаления.', + 'one_or_multiple' => 'сотрудник(и)', + 'password' => 'Пароль', + 'password_minlength' => 'Пароль должен быть не менее 8 символов.', + 'password_must_match' => 'Пароли не совпадают.', + 'password_not_must_match' => 'Текущий пароль и новый пароль должны быть уникальными.', + 'password_required' => 'Ввод пароля - обязателен.', + 'permission_desc' => 'Отметьте флажками ниже, чтобы предоставить доступ к модулям.', + 'permission_info' => 'Права доступа', + 'repeat_password' => 'Повтор пароля', + 'subpermission_required' => 'Добавьте хотя бы одно разрешение для каждого модуля.', + 'successful_adding' => 'Сотрудник успешно создан.', + 'successful_change_password' => 'Смена пароля прошла успешно.', + 'successful_deleted' => 'Успешно удалено', + 'successful_updating' => 'Информация о сотруднике успешно обновлена', + 'system_language' => 'Язык системы', + 'unsuccessful_change_password' => 'Не удалось изменить пароль.', + 'update' => 'Обновление сотрудника', + 'username' => 'Имя пользователя', + 'username_duplicate' => 'Имя пользователя сотрудника уже используется. Пожалуйста, выберите другое.', + 'username_minlength' => 'Имя пользователя должно быть не менее 5 символов.', + 'username_required' => 'Имя пользователя - обязательное поле для заполнения.', ]; diff --git a/app/Language/sv/Employees.php b/app/Language/sv/Employees.php index 679758771..82ace0d1a 100644 --- a/app/Language/sv/Employees.php +++ b/app/Language/sv/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Information', - 'cannot_be_deleted' => 'Det går inte att radera valda anställda, en eller flera av dem har behandlat försäljningar eller du försöker radera ditt konto.', - 'change_employee' => '', - 'change_password' => 'Ändra lösenord', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Är du säker på att du vill radera de valda arbetstagarna?', - 'confirm_restore' => 'Är du säker på att du vill återställa valda anställda (er)?', - 'current_password' => 'Nuvarande lösenord', - 'current_password_invalid' => 'Nuvarande lösenord är fel.', - 'employee' => 'Anställd', - 'error_adding_updating' => 'Anställd lägg till eller uppdatering misslyckades.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Du kan inte radera demo admin-användaren.', - 'error_grant_change_disallowed' => 'Behörighetsändringar är inaktiverade i denna demo.', - 'error_password_change_disallowed' => 'Lösenordsändringar är inaktiverade i denna demo.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Du kan inte ändra demo admin-användaren.', - 'language' => 'Språk', - 'login_info' => 'Login', - 'manager' => '', - 'new' => 'Ny anställd', - 'none_selected' => 'Du har inte valt någon anställd att radera.', - 'one_or_multiple' => 'Anställda', - 'password' => 'Lösenord', - 'password_minlength' => 'Lösenordet måste vara minst 8 tecken i längd.', - 'password_must_match' => 'Lösenorden matchar ej.', - 'password_not_must_match' => 'Nuvarande lösenord och nytt lösenord måste vara unikt.', - 'password_required' => 'Lösenord krävs.', - 'permission_desc' => 'Markera rutorna nedan för att ge tillgång till moduler.', - 'permission_info' => 'Behörigheter', - 'repeat_password' => 'Lösenord igen', - 'subpermission_required' => 'Lägg till minst en behörighet för varje modul.', - 'successful_adding' => 'Tillägg av anställd lyckades.', - 'successful_change_password' => 'Lösenordsbyte lyckades.', - 'successful_deleted' => 'Du har tagit bort', - 'successful_updating' => 'Du har uppdaterat anställda', - 'system_language' => 'System Språk', - 'unsuccessful_change_password' => 'Lösenordsbyte misslyckades.', - 'update' => 'Uppdatera anställd', - 'username' => 'Användarnamn', - 'username_duplicate' => 'Användarnamnet för den anställda används redan. Vänligen välj ett annat.', - 'username_minlength' => 'Användarnamnet måste vara minst 5 tecken långt.', - 'username_required' => 'Användarnamnet är ett obligatoriskt fält.', + 'administrator' => '', + 'basic_information' => 'Information', + 'cannot_be_deleted' => 'Det går inte att radera valda anställda, en eller flera av dem har behandlat försäljningar eller du försöker radera ditt konto.', + 'change_employee' => '', + 'change_password' => 'Ändra lösenord', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Är du säker på att du vill radera de valda arbetstagarna?', + 'confirm_restore' => 'Är du säker på att du vill återställa valda anställda (er)?', + 'current_password' => 'Nuvarande lösenord', + 'current_password_invalid' => 'Nuvarande lösenord är fel.', + 'employee' => 'Anställd', + 'error_adding_updating' => 'Anställd lägg till eller uppdatering misslyckades.', + 'error_cannot_remove_own_minimum_grant' => 'Du kan inte ta bort dina egna minimibehörigheter för moduler.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Du kan inte radera demo admin-användaren.', + 'error_grant_change_disallowed' => 'Behörighetsändringar är inaktiverade i denna demo.', + 'error_password_change_disallowed' => 'Lösenordsändringar är inaktiverade i denna demo.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Du kan inte ändra demo admin-användaren.', + 'language' => 'Språk', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'Ny anställd', + 'none_selected' => 'Du har inte valt någon anställd att radera.', + 'one_or_multiple' => 'Anställda', + 'password' => 'Lösenord', + 'password_minlength' => 'Lösenordet måste vara minst 8 tecken i längd.', + 'password_must_match' => 'Lösenorden matchar ej.', + 'password_not_must_match' => 'Nuvarande lösenord och nytt lösenord måste vara unikt.', + 'password_required' => 'Lösenord krävs.', + 'permission_desc' => 'Markera rutorna nedan för att ge tillgång till moduler.', + 'permission_info' => 'Behörigheter', + 'repeat_password' => 'Lösenord igen', + 'subpermission_required' => 'Lägg till minst en behörighet för varje modul.', + 'successful_adding' => 'Tillägg av anställd lyckades.', + 'successful_change_password' => 'Lösenordsbyte lyckades.', + 'successful_deleted' => 'Du har tagit bort', + 'successful_updating' => 'Du har uppdaterat anställda', + 'system_language' => 'System Språk', + 'unsuccessful_change_password' => 'Lösenordsbyte misslyckades.', + 'update' => 'Uppdatera anställd', + 'username' => 'Användarnamn', + 'username_duplicate' => 'Användarnamnet för den anställda används redan. Vänligen välj ett annat.', + 'username_minlength' => 'Användarnamnet måste vara minst 5 tecken långt.', + 'username_required' => 'Användarnamnet är ett obligatoriskt fält.', ]; diff --git a/app/Language/sw-KE/Employees.php b/app/Language/sw-KE/Employees.php index 7a54297ad..02bf38e2a 100644 --- a/app/Language/sw-KE/Employees.php +++ b/app/Language/sw-KE/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Taarifa za Msingi', - 'cannot_be_deleted' => 'Haiwezekani kufuta M/Wafanyakazi aliyechaguliwa, mmoja au zaidi ameshashughulikia mauzo au unajaribu kufuta akaunti yako.', - 'change_employee' => '', - 'change_password' => 'Badilisha Nenosiri', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Una uhakika unataka kufuta mfanyakazi aliyechaguliwa?', - 'confirm_restore' => 'Una uhakika unataka kurejesha Mfanyakazi/Wafanyakazi aliyechaguliwa?', - 'current_password' => 'Nenosiri la Sasa', - 'current_password_invalid' => 'Nenosiri la sasa si sahihi.', - 'employee' => 'Mfanyakazi', - 'error_adding_updating' => 'Kuongeza au kusasisha mfanyakazi kumeshindikana.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Huwezi kufuta mtumiaji wa admin wa majaribio.', - 'error_grant_change_disallowed' => 'Mabadiliko ya ruhusa yamezimwa katika demo hii.', - 'error_password_change_disallowed' => 'Mabadiliko ya neno la siri yamezimwa katika demo hii.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Huwezi kubadilisha mtumiaji wa admin wa majaribio.', - 'language' => 'Lugha', - 'login_info' => 'Ingia', - 'manager' => '', - 'new' => 'Mfanyakazi Mpya', - 'none_selected' => 'Hujachagua Mfanyakazi/Wafanyakazi yeyote wa kufuta.', - 'one_or_multiple' => 'Mfanyakazi/Wafanyakazi', - 'password' => 'Nenosiri', - 'password_minlength' => 'Nenosiri lazima liwe na angalau herufi 8.', - 'password_must_match' => 'Manenosiri hayafanani.', - 'password_not_must_match' => 'Nenosiri la sasa na jipya lazima liwe tofauti.', - 'password_required' => 'Nenosiri linahitajika.', - 'permission_desc' => 'Chagua visanduku hapa chini kutoa ruhusa kwa moduli.', - 'permission_info' => 'Ruhusa', - 'repeat_password' => 'Rudia Nenosiri', - 'subpermission_required' => 'Ongeza angalau ruhusa moja kwa kila moduli.', - 'successful_adding' => 'Umefanikiwa kuongeza mfanyakazi.', - 'successful_change_password' => 'Umefanikiwa kubadili nenosiri.', - 'successful_deleted' => 'Umefanikiwa kufuta', - 'successful_updating' => 'Umefanikiwa kusasisha mfanyakazi', - 'system_language' => 'Lugha ya Mfumo', - 'unsuccessful_change_password' => 'Imeshindikana kubadili Nenosiri.', - 'update' => 'Sasisha Mfanyakazi', - 'username' => 'Jina la Mtumiaji', - 'username_duplicate' => 'Jina la mtumiaji tayari linatumika. Tafadhali chagua lingine.', - 'username_minlength' => 'Jina la mtumiaji lazima liwe na angalau herufi 5.', - 'username_required' => 'Jina la mtumiaji ni lazima.', + 'administrator' => '', + 'basic_information' => 'Taarifa za Msingi', + 'cannot_be_deleted' => 'Haiwezekani kufuta M/Wafanyakazi aliyechaguliwa, mmoja au zaidi ameshashughulikia mauzo au unajaribu kufuta akaunti yako.', + 'change_employee' => '', + 'change_password' => 'Badilisha Nenosiri', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Una uhakika unataka kufuta mfanyakazi aliyechaguliwa?', + 'confirm_restore' => 'Una uhakika unataka kurejesha Mfanyakazi/Wafanyakazi aliyechaguliwa?', + 'current_password' => 'Nenosiri la Sasa', + 'current_password_invalid' => 'Nenosiri la sasa si sahihi.', + 'employee' => 'Mfanyakazi', + 'error_adding_updating' => 'Kuongeza au kusasisha mfanyakazi kumeshindikana.', + 'error_cannot_remove_own_minimum_grant' => 'Huwezi kuondoa ruhusa zako za chini kabisa za ufikiaji wa moduli.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Huwezi kufuta mtumiaji wa admin wa majaribio.', + 'error_grant_change_disallowed' => 'Mabadiliko ya ruhusa yamezimwa katika demo hii.', + 'error_password_change_disallowed' => 'Mabadiliko ya neno la siri yamezimwa katika demo hii.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Huwezi kubadilisha mtumiaji wa admin wa majaribio.', + 'language' => 'Lugha', + 'login_info' => 'Ingia', + 'manager' => '', + 'new' => 'Mfanyakazi Mpya', + 'none_selected' => 'Hujachagua Mfanyakazi/Wafanyakazi yeyote wa kufuta.', + 'one_or_multiple' => 'Mfanyakazi/Wafanyakazi', + 'password' => 'Nenosiri', + 'password_minlength' => 'Nenosiri lazima liwe na angalau herufi 8.', + 'password_must_match' => 'Manenosiri hayafanani.', + 'password_not_must_match' => 'Nenosiri la sasa na jipya lazima liwe tofauti.', + 'password_required' => 'Nenosiri linahitajika.', + 'permission_desc' => 'Chagua visanduku hapa chini kutoa ruhusa kwa moduli.', + 'permission_info' => 'Ruhusa', + 'repeat_password' => 'Rudia Nenosiri', + 'subpermission_required' => 'Ongeza angalau ruhusa moja kwa kila moduli.', + 'successful_adding' => 'Umefanikiwa kuongeza mfanyakazi.', + 'successful_change_password' => 'Umefanikiwa kubadili nenosiri.', + 'successful_deleted' => 'Umefanikiwa kufuta', + 'successful_updating' => 'Umefanikiwa kusasisha mfanyakazi', + 'system_language' => 'Lugha ya Mfumo', + 'unsuccessful_change_password' => 'Imeshindikana kubadili Nenosiri.', + 'update' => 'Sasisha Mfanyakazi', + 'username' => 'Jina la Mtumiaji', + 'username_duplicate' => 'Jina la mtumiaji tayari linatumika. Tafadhali chagua lingine.', + 'username_minlength' => 'Jina la mtumiaji lazima liwe na angalau herufi 5.', + 'username_required' => 'Jina la mtumiaji ni lazima.', ]; diff --git a/app/Language/sw-TZ/Employees.php b/app/Language/sw-TZ/Employees.php index 7a54297ad..02bf38e2a 100644 --- a/app/Language/sw-TZ/Employees.php +++ b/app/Language/sw-TZ/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Taarifa za Msingi', - 'cannot_be_deleted' => 'Haiwezekani kufuta M/Wafanyakazi aliyechaguliwa, mmoja au zaidi ameshashughulikia mauzo au unajaribu kufuta akaunti yako.', - 'change_employee' => '', - 'change_password' => 'Badilisha Nenosiri', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Una uhakika unataka kufuta mfanyakazi aliyechaguliwa?', - 'confirm_restore' => 'Una uhakika unataka kurejesha Mfanyakazi/Wafanyakazi aliyechaguliwa?', - 'current_password' => 'Nenosiri la Sasa', - 'current_password_invalid' => 'Nenosiri la sasa si sahihi.', - 'employee' => 'Mfanyakazi', - 'error_adding_updating' => 'Kuongeza au kusasisha mfanyakazi kumeshindikana.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Huwezi kufuta mtumiaji wa admin wa majaribio.', - 'error_grant_change_disallowed' => 'Mabadiliko ya ruhusa yamezimwa katika demo hii.', - 'error_password_change_disallowed' => 'Mabadiliko ya neno la siri yamezimwa katika demo hii.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Huwezi kubadilisha mtumiaji wa admin wa majaribio.', - 'language' => 'Lugha', - 'login_info' => 'Ingia', - 'manager' => '', - 'new' => 'Mfanyakazi Mpya', - 'none_selected' => 'Hujachagua Mfanyakazi/Wafanyakazi yeyote wa kufuta.', - 'one_or_multiple' => 'Mfanyakazi/Wafanyakazi', - 'password' => 'Nenosiri', - 'password_minlength' => 'Nenosiri lazima liwe na angalau herufi 8.', - 'password_must_match' => 'Manenosiri hayafanani.', - 'password_not_must_match' => 'Nenosiri la sasa na jipya lazima liwe tofauti.', - 'password_required' => 'Nenosiri linahitajika.', - 'permission_desc' => 'Chagua visanduku hapa chini kutoa ruhusa kwa moduli.', - 'permission_info' => 'Ruhusa', - 'repeat_password' => 'Rudia Nenosiri', - 'subpermission_required' => 'Ongeza angalau ruhusa moja kwa kila moduli.', - 'successful_adding' => 'Umefanikiwa kuongeza mfanyakazi.', - 'successful_change_password' => 'Umefanikiwa kubadili nenosiri.', - 'successful_deleted' => 'Umefanikiwa kufuta', - 'successful_updating' => 'Umefanikiwa kusasisha mfanyakazi', - 'system_language' => 'Lugha ya Mfumo', - 'unsuccessful_change_password' => 'Imeshindikana kubadili Nenosiri.', - 'update' => 'Sasisha Mfanyakazi', - 'username' => 'Jina la Mtumiaji', - 'username_duplicate' => 'Jina la mtumiaji tayari linatumika. Tafadhali chagua lingine.', - 'username_minlength' => 'Jina la mtumiaji lazima liwe na angalau herufi 5.', - 'username_required' => 'Jina la mtumiaji ni lazima.', + 'administrator' => '', + 'basic_information' => 'Taarifa za Msingi', + 'cannot_be_deleted' => 'Haiwezekani kufuta M/Wafanyakazi aliyechaguliwa, mmoja au zaidi ameshashughulikia mauzo au unajaribu kufuta akaunti yako.', + 'change_employee' => '', + 'change_password' => 'Badilisha Nenosiri', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Una uhakika unataka kufuta mfanyakazi aliyechaguliwa?', + 'confirm_restore' => 'Una uhakika unataka kurejesha Mfanyakazi/Wafanyakazi aliyechaguliwa?', + 'current_password' => 'Nenosiri la Sasa', + 'current_password_invalid' => 'Nenosiri la sasa si sahihi.', + 'employee' => 'Mfanyakazi', + 'error_adding_updating' => 'Kuongeza au kusasisha mfanyakazi kumeshindikana.', + 'error_cannot_remove_own_minimum_grant' => 'Huwezi kuondoa ruhusa zako za chini kabisa za ufikiaji wa moduli.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Huwezi kufuta mtumiaji wa admin wa majaribio.', + 'error_grant_change_disallowed' => 'Mabadiliko ya ruhusa yamezimwa katika demo hii.', + 'error_password_change_disallowed' => 'Mabadiliko ya neno la siri yamezimwa katika demo hii.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Huwezi kubadilisha mtumiaji wa admin wa majaribio.', + 'language' => 'Lugha', + 'login_info' => 'Ingia', + 'manager' => '', + 'new' => 'Mfanyakazi Mpya', + 'none_selected' => 'Hujachagua Mfanyakazi/Wafanyakazi yeyote wa kufuta.', + 'one_or_multiple' => 'Mfanyakazi/Wafanyakazi', + 'password' => 'Nenosiri', + 'password_minlength' => 'Nenosiri lazima liwe na angalau herufi 8.', + 'password_must_match' => 'Manenosiri hayafanani.', + 'password_not_must_match' => 'Nenosiri la sasa na jipya lazima liwe tofauti.', + 'password_required' => 'Nenosiri linahitajika.', + 'permission_desc' => 'Chagua visanduku hapa chini kutoa ruhusa kwa moduli.', + 'permission_info' => 'Ruhusa', + 'repeat_password' => 'Rudia Nenosiri', + 'subpermission_required' => 'Ongeza angalau ruhusa moja kwa kila moduli.', + 'successful_adding' => 'Umefanikiwa kuongeza mfanyakazi.', + 'successful_change_password' => 'Umefanikiwa kubadili nenosiri.', + 'successful_deleted' => 'Umefanikiwa kufuta', + 'successful_updating' => 'Umefanikiwa kusasisha mfanyakazi', + 'system_language' => 'Lugha ya Mfumo', + 'unsuccessful_change_password' => 'Imeshindikana kubadili Nenosiri.', + 'update' => 'Sasisha Mfanyakazi', + 'username' => 'Jina la Mtumiaji', + 'username_duplicate' => 'Jina la mtumiaji tayari linatumika. Tafadhali chagua lingine.', + 'username_minlength' => 'Jina la mtumiaji lazima liwe na angalau herufi 5.', + 'username_required' => 'Jina la mtumiaji ni lazima.', ]; diff --git a/app/Language/ta/Employees.php b/app/Language/ta/Employees.php index 7b0c0abbb..3d72ab43e 100644 --- a/app/Language/ta/Employees.php +++ b/app/Language/ta/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Information', - 'cannot_be_deleted' => 'தேர்ந்தெடுக்கப்பட்ட ஊழியர்(களை) நீக்க முடியவில்லை, ஒன்று அல்லது அதற்கு மேற்பட்டவை விற்பனையை செயலாக்கியுள்ளன அல்லது நீங்கள் உங்கள் கணக்கை நீக்க முயற்சிக்கிறீர்கள்.', - 'change_employee' => '', - 'change_password' => 'Change Password', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Are you sure you want to delete the selected employee(s)?', - 'confirm_restore' => 'Are you sure you want to restore selected employee(s)?', - 'current_password' => 'Current Password', - 'current_password_invalid' => 'Current Password is invalid.', - 'employee' => 'Employee', - 'error_adding_updating' => 'Employee add or update failed.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'You can not delete the demo admin user.', - 'error_grant_change_disallowed' => 'அனுமதி மாற்றங்கள் இந்த டெமோவில் முடக்கப்பட்டுள்ளன.', - 'error_password_change_disallowed' => 'கடவுச்சொல் மாற்றங்கள் இந்த டெமோவில் முடக்கப்பட்டுள்ளன.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'You can not change the demo admin user.', - 'language' => 'Language', - 'login_info' => 'Login', - 'manager' => '', - 'new' => 'New Employee', - 'none_selected' => 'You have not selected any employee(s) to delete.', - 'one_or_multiple' => 'employee(s)', - 'password' => 'Password', - 'password_minlength' => 'Password must be at least 8 characters in length.', - 'password_must_match' => 'Passwords do not match.', - 'password_not_must_match' => 'Current password and new password must be unique.', - 'password_required' => 'Password is required.', - 'permission_desc' => 'Check the boxes below to grant access to modules.', - 'permission_info' => 'Permissions', - 'repeat_password' => 'Password Again', - 'subpermission_required' => 'Add at least one grant for each module.', - 'successful_adding' => 'Employee add successful.', - 'successful_change_password' => 'Password change successful.', - 'successful_deleted' => 'You have successfully deleted', - 'successful_updating' => 'You have successfully updated employee', - 'system_language' => 'System Language', - 'unsuccessful_change_password' => 'Password change failed.', - 'update' => 'Update Employee', - 'username' => 'Username', - 'username_duplicate' => '', - 'username_minlength' => 'Username must be at least 5 characters in length.', - 'username_required' => 'Username is a required field.', + 'administrator' => '', + 'basic_information' => 'Information', + 'cannot_be_deleted' => 'தேர்ந்தெடுக்கப்பட்ட ஊழியர்(களை) நீக்க முடியவில்லை, ஒன்று அல்லது அதற்கு மேற்பட்டவை விற்பனையை செயலாக்கியுள்ளன அல்லது நீங்கள் உங்கள் கணக்கை நீக்க முயற்சிக்கிறீர்கள்.', + 'change_employee' => '', + 'change_password' => 'Change Password', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Are you sure you want to delete the selected employee(s)?', + 'confirm_restore' => 'Are you sure you want to restore selected employee(s)?', + 'current_password' => 'Current Password', + 'current_password_invalid' => 'Current Password is invalid.', + 'employee' => 'Employee', + 'error_adding_updating' => 'Employee add or update failed.', + 'error_cannot_remove_own_minimum_grant' => 'உங்கள் சொந்த குறைந்தபட்ச தொகுதி அணுகல் அனுமதிகளை நீக்க முடியாது.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'You can not delete the demo admin user.', + 'error_grant_change_disallowed' => 'அனுமதி மாற்றங்கள் இந்த டெமோவில் முடக்கப்பட்டுள்ளன.', + 'error_password_change_disallowed' => 'கடவுச்சொல் மாற்றங்கள் இந்த டெமோவில் முடக்கப்பட்டுள்ளன.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'You can not change the demo admin user.', + 'language' => 'Language', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'New Employee', + 'none_selected' => 'You have not selected any employee(s) to delete.', + 'one_or_multiple' => 'employee(s)', + 'password' => 'Password', + 'password_minlength' => 'Password must be at least 8 characters in length.', + 'password_must_match' => 'Passwords do not match.', + 'password_not_must_match' => 'Current password and new password must be unique.', + 'password_required' => 'Password is required.', + 'permission_desc' => 'Check the boxes below to grant access to modules.', + 'permission_info' => 'Permissions', + 'repeat_password' => 'Password Again', + 'subpermission_required' => 'Add at least one grant for each module.', + 'successful_adding' => 'Employee add successful.', + 'successful_change_password' => 'Password change successful.', + 'successful_deleted' => 'You have successfully deleted', + 'successful_updating' => 'You have successfully updated employee', + 'system_language' => 'System Language', + 'unsuccessful_change_password' => 'Password change failed.', + 'update' => 'Update Employee', + 'username' => 'Username', + 'username_duplicate' => '', + 'username_minlength' => 'Username must be at least 5 characters in length.', + 'username_required' => 'Username is a required field.', ]; diff --git a/app/Language/th/Employees.php b/app/Language/th/Employees.php index 462d099b6..60854ba45 100644 --- a/app/Language/th/Employees.php +++ b/app/Language/th/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'ข้อมูลพื้นฐานของพนักงาน', - 'cannot_be_deleted' => 'ไม่สามารถลบพนักงานที่เลือกไว้ได้ เนื่องจากมีการทำรายการขายหรือคุณกำลังพยายามที่จะลบบัญชีของคุณเอง', - 'change_employee' => '', - 'change_password' => 'เปลี่ยนรหัสผ่าน', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'คุณยืนยันการลบข้อมูลพนักงานที่เลือกไว้?', - 'confirm_restore' => 'คุณแน่ใจหรือไม่ว่าต้องการกู้คืนพนักงานที่เลือกไว้?', - 'current_password' => 'รหัสผ่านปัจจุบัน', - 'current_password_invalid' => 'รหัสผ่านปัจจุบันไม่ถูกต้อง', - 'employee' => 'พนักงาน', - 'error_adding_updating' => 'การเพิ่มหรือปรับปรุงข้อมูลพนักงานผิดพลาด', - 'error_deleting_admin' => 'คุณไม่สามารถลบบัญชีแอดมินได้', - 'error_deleting_demo_admin' => 'คุณไม่สามารถลบผู้ใช้งานสำหรับการเดโม้ได้', - 'error_grant_change_disallowed' => 'การเปลี่ยนแปลงการอนุญาตถูกปิดใช้งานในการสาธิตนี้', - 'error_password_change_disallowed' => 'การเปลี่ยนแปลงรหัสผ่านถูกปิดใช้งานในการสาธิตนี้', - 'error_updating_admin' => 'คุณไม่สามารถแก้ไขบัญชีแอดมินได้', - 'error_updating_demo_admin' => 'คุณไม่สามารถทำการเปลี่ยนข้อมูลผู้ใช้งานเดโม้ได้', - 'language' => 'ภาษา', - 'login_info' => 'รหัสเข้าระบบ', - 'manager' => '', - 'new' => 'เพิ่มพนักงาน', - 'none_selected' => 'โปรดเลือกพนักงานที่จะลบ', - 'one_or_multiple' => 'พนักงาน', - 'password' => 'รหัสผ่าน', - 'password_minlength' => 'รหัสผ่านต้องยาวอย่างน้อย 8 อักษร', - 'password_must_match' => 'รหัสผ่านไม่ตรงกัน', - 'password_not_must_match' => 'รหัสผ่านปัจจุบันและรหัสผ่านใหม่จะต้องไม่ซ้ำกัน', - 'password_required' => 'ต้องระบุรหัสผ่าน', - 'permission_desc' => 'ทำเครื่องหมายในช่องด้านล่างเพื่อให้สิทธิ์การเข้าถึงโมดูลต่างๆ', - 'permission_info' => 'สิทธิ์', - 'repeat_password' => 'ระบุรหัสผ่านอีกครั้ง', - 'subpermission_required' => 'เพิ่มการอนุญาตอย่างน้อยหนึ่งรายการสำหรับแต่ละโมดูล', - 'successful_adding' => 'เพิ่มข้อมูลพนักงานเรียบร้อยแล้ว', - 'successful_change_password' => 'ทำการเปลี่ยนรหัสผ่านเรียบร้อยแล้ว', - 'successful_deleted' => 'ลบข้อมูลสำเร็จ', - 'successful_updating' => 'ปรับปรุงข้อมูลพนักงานเรียบร้อยแล้ว', - 'system_language' => 'ภาษาของระบบ', - 'unsuccessful_change_password' => 'เปลี่ยนรหัสผ่านไม่สำเร็จ', - 'update' => 'แก้ไขข้อมูลพนักงาน', - 'username' => 'ชื่อผู้ใช้งาน', - 'username_duplicate' => 'ชื่อผู้ใช้งานพนักงานถูกใช้งานแล้ว กรุณาเลือกใช้งานชื่ออื่น', - 'username_minlength' => 'ชื่อผู้ใช้งานต้องยาวอย่างน้อย 5 อักษร', - 'username_required' => 'จำเป็นต้องระบุชื่อผู้ใช้งาน', + 'administrator' => '', + 'basic_information' => 'ข้อมูลพื้นฐานของพนักงาน', + 'cannot_be_deleted' => 'ไม่สามารถลบพนักงานที่เลือกไว้ได้ เนื่องจากมีการทำรายการขายหรือคุณกำลังพยายามที่จะลบบัญชีของคุณเอง', + 'change_employee' => '', + 'change_password' => 'เปลี่ยนรหัสผ่าน', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'คุณยืนยันการลบข้อมูลพนักงานที่เลือกไว้?', + 'confirm_restore' => 'คุณแน่ใจหรือไม่ว่าต้องการกู้คืนพนักงานที่เลือกไว้?', + 'current_password' => 'รหัสผ่านปัจจุบัน', + 'current_password_invalid' => 'รหัสผ่านปัจจุบันไม่ถูกต้อง', + 'employee' => 'พนักงาน', + 'error_adding_updating' => 'การเพิ่มหรือปรับปรุงข้อมูลพนักงานผิดพลาด', + 'error_cannot_remove_own_minimum_grant' => 'คุณไม่สามารถลบสิทธิ์การเข้าถึงโมดูลขั้นต่ำของคุณเองได้', + 'error_deleting_admin' => 'คุณไม่สามารถลบบัญชีแอดมินได้', + 'error_deleting_demo_admin' => 'คุณไม่สามารถลบผู้ใช้งานสำหรับการเดโม้ได้', + 'error_grant_change_disallowed' => 'การเปลี่ยนแปลงการอนุญาตถูกปิดใช้งานในการสาธิตนี้', + 'error_password_change_disallowed' => 'การเปลี่ยนแปลงรหัสผ่านถูกปิดใช้งานในการสาธิตนี้', + 'error_updating_admin' => 'คุณไม่สามารถแก้ไขบัญชีแอดมินได้', + 'error_updating_demo_admin' => 'คุณไม่สามารถทำการเปลี่ยนข้อมูลผู้ใช้งานเดโม้ได้', + 'language' => 'ภาษา', + 'login_info' => 'รหัสเข้าระบบ', + 'manager' => '', + 'new' => 'เพิ่มพนักงาน', + 'none_selected' => 'โปรดเลือกพนักงานที่จะลบ', + 'one_or_multiple' => 'พนักงาน', + 'password' => 'รหัสผ่าน', + 'password_minlength' => 'รหัสผ่านต้องยาวอย่างน้อย 8 อักษร', + 'password_must_match' => 'รหัสผ่านไม่ตรงกัน', + 'password_not_must_match' => 'รหัสผ่านปัจจุบันและรหัสผ่านใหม่จะต้องไม่ซ้ำกัน', + 'password_required' => 'ต้องระบุรหัสผ่าน', + 'permission_desc' => 'ทำเครื่องหมายในช่องด้านล่างเพื่อให้สิทธิ์การเข้าถึงโมดูลต่างๆ', + 'permission_info' => 'สิทธิ์', + 'repeat_password' => 'ระบุรหัสผ่านอีกครั้ง', + 'subpermission_required' => 'เพิ่มการอนุญาตอย่างน้อยหนึ่งรายการสำหรับแต่ละโมดูล', + 'successful_adding' => 'เพิ่มข้อมูลพนักงานเรียบร้อยแล้ว', + 'successful_change_password' => 'ทำการเปลี่ยนรหัสผ่านเรียบร้อยแล้ว', + 'successful_deleted' => 'ลบข้อมูลสำเร็จ', + 'successful_updating' => 'ปรับปรุงข้อมูลพนักงานเรียบร้อยแล้ว', + 'system_language' => 'ภาษาของระบบ', + 'unsuccessful_change_password' => 'เปลี่ยนรหัสผ่านไม่สำเร็จ', + 'update' => 'แก้ไขข้อมูลพนักงาน', + 'username' => 'ชื่อผู้ใช้งาน', + 'username_duplicate' => 'ชื่อผู้ใช้งานพนักงานถูกใช้งานแล้ว กรุณาเลือกใช้งานชื่ออื่น', + 'username_minlength' => 'ชื่อผู้ใช้งานต้องยาวอย่างน้อย 5 อักษร', + 'username_required' => 'จำเป็นต้องระบุชื่อผู้ใช้งาน', ]; diff --git a/app/Language/tl/Employees.php b/app/Language/tl/Employees.php index 34b3971b7..eeddd51b2 100644 --- a/app/Language/tl/Employees.php +++ b/app/Language/tl/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Information', - 'cannot_be_deleted' => 'Hindi maaaring tanggalin ang mga napiling empleyado, isa o higit pa sa kanila ang may naiprosesong benta o sinusubukan mong tanggalin ang iyong sariling account.', - 'change_employee' => '', - 'change_password' => 'Change Password', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Are you sure you want to delete the selected Supplier(s)?', - 'confirm_restore' => 'Are you sure you want to restore selected entry(s)?', - 'current_password' => 'Current Password', - 'current_password_invalid' => 'Current Password is invalid.', - 'employee' => 'Employee', - 'error_adding_updating' => 'Employee add or update failed.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'You can not delete the demo admin user.', - 'error_grant_change_disallowed' => 'Ang mga pagbabago sa pahintulot ay hindi pinagana sa demo na ito.', - 'error_password_change_disallowed' => 'Ang mga pagbabago ng password ay hindi pinagana sa demo na ito.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'You can not change the demo admin user.', - 'language' => 'Language', - 'login_info' => 'Login', - 'manager' => '', - 'new' => 'New Employee', - 'none_selected' => 'You have not selected any employee(s) to delete.', - 'one_or_multiple' => 'employee(s)', - 'password' => 'Password', - 'password_minlength' => 'Username must be at least 5 characters in length.', - 'password_must_match' => 'Passwords do not match.', - 'password_not_must_match' => 'Current password and new password must be unique.', - 'password_required' => 'Password is required.', - 'permission_desc' => 'Check the boxes below to grant access to modules.', - 'permission_info' => 'Permissions', - 'repeat_password' => 'Password Again', - 'subpermission_required' => 'Add at least one grant for each module.', - 'successful_adding' => 'Employee add successful.', - 'successful_change_password' => 'Password change successful.', - 'successful_deleted' => 'You have successfully deleted', - 'successful_updating' => 'You have successfully added customer', - 'system_language' => 'System Language', - 'unsuccessful_change_password' => 'Password change failed.', - 'update' => 'Update Employee', - 'username' => 'Username', - 'username_duplicate' => '', - 'username_minlength' => 'Password must be at least 8 characters in length.', - 'username_required' => 'Username is a required field.', + 'administrator' => '', + 'basic_information' => 'Information', + 'cannot_be_deleted' => 'Hindi maaaring tanggalin ang mga napiling empleyado, isa o higit pa sa kanila ang may naiprosesong benta o sinusubukan mong tanggalin ang iyong sariling account.', + 'change_employee' => '', + 'change_password' => 'Change Password', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Are you sure you want to delete the selected Supplier(s)?', + 'confirm_restore' => 'Are you sure you want to restore selected entry(s)?', + 'current_password' => 'Current Password', + 'current_password_invalid' => 'Current Password is invalid.', + 'employee' => 'Employee', + 'error_adding_updating' => 'Employee add or update failed.', + 'error_cannot_remove_own_minimum_grant' => 'Hindi mo maaaring tanggalin ang iyong sariling pinakamababang pahintulot sa access ng module.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'You can not delete the demo admin user.', + 'error_grant_change_disallowed' => 'Ang mga pagbabago sa pahintulot ay hindi pinagana sa demo na ito.', + 'error_password_change_disallowed' => 'Ang mga pagbabago ng password ay hindi pinagana sa demo na ito.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'You can not change the demo admin user.', + 'language' => 'Language', + 'login_info' => 'Login', + 'manager' => '', + 'new' => 'New Employee', + 'none_selected' => 'You have not selected any employee(s) to delete.', + 'one_or_multiple' => 'employee(s)', + 'password' => 'Password', + 'password_minlength' => 'Username must be at least 5 characters in length.', + 'password_must_match' => 'Passwords do not match.', + 'password_not_must_match' => 'Current password and new password must be unique.', + 'password_required' => 'Password is required.', + 'permission_desc' => 'Check the boxes below to grant access to modules.', + 'permission_info' => 'Permissions', + 'repeat_password' => 'Password Again', + 'subpermission_required' => 'Add at least one grant for each module.', + 'successful_adding' => 'Employee add successful.', + 'successful_change_password' => 'Password change successful.', + 'successful_deleted' => 'You have successfully deleted', + 'successful_updating' => 'You have successfully added customer', + 'system_language' => 'System Language', + 'unsuccessful_change_password' => 'Password change failed.', + 'update' => 'Update Employee', + 'username' => 'Username', + 'username_duplicate' => '', + 'username_minlength' => 'Password must be at least 8 characters in length.', + 'username_required' => 'Username is a required field.', ]; diff --git a/app/Language/tr/Employees.php b/app/Language/tr/Employees.php index 5aefab3da..1b007f4f7 100644 --- a/app/Language/tr/Employees.php +++ b/app/Language/tr/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Personel Temel Bilgileri', - 'cannot_be_deleted' => 'Seçili personel silinemedi, personellerin satışları var ya da kendinizi silmeye çalışıyorsunuz.', - 'change_employee' => '', - 'change_password' => 'Parolayı Değiştir', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Seçili personelleri silmek istediğinize emin misiniz?', - 'confirm_restore' => 'Seçili çalışanları geri yüklemek istediğinizden emin misiniz?', - 'current_password' => 'Var Olan Parola', - 'current_password_invalid' => 'Var Olan Parola geçersiz.', - 'employee' => 'Personel', - 'error_adding_updating' => 'Personel ekleme/güncelleme hatası.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Admin silinemez.', - 'error_grant_change_disallowed' => 'İzin değişiklikleri bu demoda devre dışı bırakılmıştır.', - 'error_password_change_disallowed' => 'Şifre değişiklikleri bu demoda devre dışı bırakılmıştır.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Admin güncellenemez.', - 'language' => 'Dil', - 'login_info' => 'Personel Giriş Bilgileri', - 'manager' => '', - 'new' => 'Yeni Personel', - 'none_selected' => 'Silmek için çalışan seçmediniz.', - 'one_or_multiple' => 'personel', - 'password' => 'Parola', - 'password_minlength' => 'Parola en az 8 karakter olmalıdır.', - 'password_must_match' => 'Parolalar uyuşmuyor.', - 'password_not_must_match' => 'Geçerli parola ve yeni parola benzersiz olmalıdır.', - 'password_required' => 'Parola zorunludur.', - 'permission_desc' => 'Modül yetkisi vermek için kutuları işaretleyin.', - 'permission_info' => 'Personel İzin ve Yetkileri', - 'repeat_password' => 'Parola Yeniden', - 'subpermission_required' => 'Her bir birim için en az bir izin ekle.', - 'successful_adding' => 'Personel eklendi.', - 'successful_change_password' => 'Parola değişikliği başarılı.', - 'successful_deleted' => 'Silme başarılı', - 'successful_updating' => 'Personel güncellendi', - 'system_language' => 'Sistem dili', - 'unsuccessful_change_password' => 'Parola değişikliği başarısız oldu.', - 'update' => 'Personeli Güncelle', - 'username' => 'Kullanıcı Adı', - 'username_duplicate' => '', - 'username_minlength' => 'Kullanıcı Adı en az 5 karakter olmalıdır.', - 'username_required' => 'Kullanıcı Adı zorunlu alandır.', + 'administrator' => '', + 'basic_information' => 'Personel Temel Bilgileri', + 'cannot_be_deleted' => 'Seçili personel silinemedi, personellerin satışları var ya da kendinizi silmeye çalışıyorsunuz.', + 'change_employee' => '', + 'change_password' => 'Parolayı Değiştir', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Seçili personelleri silmek istediğinize emin misiniz?', + 'confirm_restore' => 'Seçili çalışanları geri yüklemek istediğinizden emin misiniz?', + 'current_password' => 'Var Olan Parola', + 'current_password_invalid' => 'Var Olan Parola geçersiz.', + 'employee' => 'Personel', + 'error_adding_updating' => 'Personel ekleme/güncelleme hatası.', + 'error_cannot_remove_own_minimum_grant' => 'Kendi asgari modül erişim izinlerinizi kaldıramazsınız.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Admin silinemez.', + 'error_grant_change_disallowed' => 'İzin değişiklikleri bu demoda devre dışı bırakılmıştır.', + 'error_password_change_disallowed' => 'Şifre değişiklikleri bu demoda devre dışı bırakılmıştır.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Admin güncellenemez.', + 'language' => 'Dil', + 'login_info' => 'Personel Giriş Bilgileri', + 'manager' => '', + 'new' => 'Yeni Personel', + 'none_selected' => 'Silmek için çalışan seçmediniz.', + 'one_or_multiple' => 'personel', + 'password' => 'Parola', + 'password_minlength' => 'Parola en az 8 karakter olmalıdır.', + 'password_must_match' => 'Parolalar uyuşmuyor.', + 'password_not_must_match' => 'Geçerli parola ve yeni parola benzersiz olmalıdır.', + 'password_required' => 'Parola zorunludur.', + 'permission_desc' => 'Modül yetkisi vermek için kutuları işaretleyin.', + 'permission_info' => 'Personel İzin ve Yetkileri', + 'repeat_password' => 'Parola Yeniden', + 'subpermission_required' => 'Her bir birim için en az bir izin ekle.', + 'successful_adding' => 'Personel eklendi.', + 'successful_change_password' => 'Parola değişikliği başarılı.', + 'successful_deleted' => 'Silme başarılı', + 'successful_updating' => 'Personel güncellendi', + 'system_language' => 'Sistem dili', + 'unsuccessful_change_password' => 'Parola değişikliği başarısız oldu.', + 'update' => 'Personeli Güncelle', + 'username' => 'Kullanıcı Adı', + 'username_duplicate' => '', + 'username_minlength' => 'Kullanıcı Adı en az 5 karakter olmalıdır.', + 'username_required' => 'Kullanıcı Adı zorunlu alandır.', ]; diff --git a/app/Language/uk/Employees.php b/app/Language/uk/Employees.php index 94b04ba48..a24a4a27c 100644 --- a/app/Language/uk/Employees.php +++ b/app/Language/uk/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Інформація про працівників', - 'cannot_be_deleted' => 'Неможливо видалити вибраних працівника(ів), які вже здійснили продажі або ви намагаєтесь видалити свій обліковий запис.', - 'change_employee' => '', - 'change_password' => 'Змінити пароль', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Ви впевнені, що хочете видалити обраного(их) працівника(ів)?', - 'confirm_restore' => 'Ви впевнені, що хочете відновити обраного(их) працівника(ів)?', - 'current_password' => 'Поточний пароль', - 'current_password_invalid' => 'Поточний пароль невірний.', - 'employee' => 'Працівник', - 'error_adding_updating' => 'Помилка при додаванні/оновлені працівника.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Ви не можете видалити аккаунт користувача.', - 'error_grant_change_disallowed' => 'Зміни дозволів заборонені в цій демонстрації.', - 'error_password_change_disallowed' => 'Зміни пароля заборонені в цій демонстрації.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Ви не можете змінити аккаунт користувача.', - 'language' => 'Мова', - 'login_info' => 'Вхід', - 'manager' => '', - 'new' => 'Новий працівник', - 'none_selected' => 'Ви не вибрали працівника(ів) для видалення.', - 'one_or_multiple' => 'Працівник(и)', - 'password' => 'Пароль', - 'password_minlength' => 'Пароль повинен містити не менше 8 символів.', - 'password_must_match' => 'Паролі не співпадають.', - 'password_not_must_match' => 'Поточний пароль та новий пароль не повинні співпадати.', - 'password_required' => 'Пароль - обов\'язкове поле.', - 'permission_desc' => 'Поставте прапорці нижче, щоб надати доступ до модулів.', - 'permission_info' => 'Дозволи', - 'repeat_password' => 'Повторіть пароль', - 'subpermission_required' => 'Додайте принаймні один грант для кожного модуля.', - 'successful_adding' => 'Ви успішно додали працівника.', - 'successful_change_password' => 'Пароль успішно змінено.', - 'successful_deleted' => 'Працівника успішно видалено', - 'successful_updating' => 'Працівника успішно оновлено', - 'system_language' => 'Мова системи', - 'unsuccessful_change_password' => 'Не вдалось змінити пароль.', - 'update' => 'Оновити працівника', - 'username' => 'Ім\'я користувача', - 'username_duplicate' => '', - 'username_minlength' => 'Ім\'я користувача повинно бути не менше 5 символів.', - 'username_required' => 'Ім\'я користувача - обов\'язкове поле.', + 'administrator' => '', + 'basic_information' => 'Інформація про працівників', + 'cannot_be_deleted' => 'Неможливо видалити вибраних працівника(ів), які вже здійснили продажі або ви намагаєтесь видалити свій обліковий запис.', + 'change_employee' => '', + 'change_password' => 'Змінити пароль', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Ви впевнені, що хочете видалити обраного(их) працівника(ів)?', + 'confirm_restore' => 'Ви впевнені, що хочете відновити обраного(их) працівника(ів)?', + 'current_password' => 'Поточний пароль', + 'current_password_invalid' => 'Поточний пароль невірний.', + 'employee' => 'Працівник', + 'error_adding_updating' => 'Помилка при додаванні/оновлені працівника.', + 'error_cannot_remove_own_minimum_grant' => 'Ви не можете видалити власні мінімальні дозволи доступу до модулів.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Ви не можете видалити аккаунт користувача.', + 'error_grant_change_disallowed' => 'Зміни дозволів заборонені в цій демонстрації.', + 'error_password_change_disallowed' => 'Зміни пароля заборонені в цій демонстрації.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Ви не можете змінити аккаунт користувача.', + 'language' => 'Мова', + 'login_info' => 'Вхід', + 'manager' => '', + 'new' => 'Новий працівник', + 'none_selected' => 'Ви не вибрали працівника(ів) для видалення.', + 'one_or_multiple' => 'Працівник(и)', + 'password' => 'Пароль', + 'password_minlength' => 'Пароль повинен містити не менше 8 символів.', + 'password_must_match' => 'Паролі не співпадають.', + 'password_not_must_match' => 'Поточний пароль та новий пароль не повинні співпадати.', + 'password_required' => 'Пароль - обов\'язкове поле.', + 'permission_desc' => 'Поставте прапорці нижче, щоб надати доступ до модулів.', + 'permission_info' => 'Дозволи', + 'repeat_password' => 'Повторіть пароль', + 'subpermission_required' => 'Додайте принаймні один грант для кожного модуля.', + 'successful_adding' => 'Ви успішно додали працівника.', + 'successful_change_password' => 'Пароль успішно змінено.', + 'successful_deleted' => 'Працівника успішно видалено', + 'successful_updating' => 'Працівника успішно оновлено', + 'system_language' => 'Мова системи', + 'unsuccessful_change_password' => 'Не вдалось змінити пароль.', + 'update' => 'Оновити працівника', + 'username' => 'Ім\'я користувача', + 'username_duplicate' => '', + 'username_minlength' => 'Ім\'я користувача повинно бути не менше 5 символів.', + 'username_required' => 'Ім\'я користувача - обов\'язкове поле.', ]; diff --git a/app/Language/ur/Employees.php b/app/Language/ur/Employees.php index 302fc824b..b574b245c 100644 --- a/app/Language/ur/Employees.php +++ b/app/Language/ur/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => '', - 'cannot_be_deleted' => '', - 'change_employee' => '', - 'change_password' => '', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => '', - 'confirm_restore' => '', - 'current_password' => '', - 'current_password_invalid' => '', - 'employee' => '', - 'error_adding_updating' => '', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => '', - 'error_grant_change_disallowed' => 'اس ڈیمو میں اجازت کی تبدیلیاں غیر فعال ہیں۔', - 'error_password_change_disallowed' => 'اس ڈیمو میں پاس ورڈ کی تبدیلیاں غیر فعال ہیں۔', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => '', - 'language' => '', - 'login_info' => '', - 'manager' => '', - 'new' => '', - 'none_selected' => '', - 'one_or_multiple' => '', - 'password' => '', - 'password_minlength' => '', - 'password_must_match' => '', - 'password_not_must_match' => '', - 'password_required' => '', - 'permission_desc' => '', - 'permission_info' => '', - 'repeat_password' => '', - 'subpermission_required' => '', - 'successful_adding' => '', - 'successful_change_password' => '', - 'successful_deleted' => '', - 'successful_updating' => '', - 'system_language' => '', - 'unsuccessful_change_password' => '', - 'update' => '', - 'username' => '', - 'username_duplicate' => '', - 'username_minlength' => '', - 'username_required' => '', + 'administrator' => '', + 'basic_information' => '', + 'cannot_be_deleted' => '', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '', + 'error_adding_updating' => '', + 'error_cannot_remove_own_minimum_grant' => 'آپ اپنے کم از کم ماڈیول رسائی کے اجازت ناموں کو ہٹا نہیں سکتے۔', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '', + 'error_grant_change_disallowed' => 'اس ڈیمو میں اجازت کی تبدیلیاں غیر فعال ہیں۔', + 'error_password_change_disallowed' => 'اس ڈیمو میں پاس ورڈ کی تبدیلیاں غیر فعال ہیں۔', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '', + 'language' => '', + 'login_info' => '', + 'manager' => '', + 'new' => '', + 'none_selected' => '', + 'one_or_multiple' => '', + 'password' => '', + 'password_minlength' => '', + 'password_must_match' => '', + 'password_not_must_match' => '', + 'password_required' => '', + 'permission_desc' => '', + 'permission_info' => '', + 'repeat_password' => '', + 'subpermission_required' => '', + 'successful_adding' => '', + 'successful_change_password' => '', + 'successful_deleted' => '', + 'successful_updating' => '', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '', + 'username' => '', + 'username_duplicate' => '', + 'username_minlength' => '', + 'username_required' => '', ]; diff --git a/app/Language/vi/Employees.php b/app/Language/vi/Employees.php index 9b15c27cf..b6f0dba0c 100644 --- a/app/Language/vi/Employees.php +++ b/app/Language/vi/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => 'Thông tin', - 'cannot_be_deleted' => 'Không thể xóa các nhân viên đã chọn, một hay nhiều nhân viên đã xử lý bán hàng hoặc bạn đang cố xóa tài khoản của mình.', - 'change_employee' => '', - 'change_password' => 'Đổi mật khẩu', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => 'Bạn chắc chắn muốn xóa các nhân viên được chọn không?', - 'confirm_restore' => 'Bạn chắc chắn muốn hoàn lại các nhân viên được chọn không?', - 'current_password' => 'Mật khẩu hiện tại', - 'current_password_invalid' => 'Mật khẩu hiện tại không hợp lệ.', - 'employee' => 'Nhân viên', - 'error_adding_updating' => 'Gặp lỗi khi cập nhật hay thêm nhân viên.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => 'Bạn không thể xóa người dùng demo admin.', - 'error_grant_change_disallowed' => 'Thay đổi quyền bị vô hiệu hóa trong bản demo này.', - 'error_password_change_disallowed' => 'Thay đổi mật khẩu bị vô hiệu hóa trong bản demo này.', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => 'Bạn không thể thay đổi người dùng demo admin.', - 'language' => 'Ngôn ngữ', - 'login_info' => 'Đăng nhập', - 'manager' => '', - 'new' => 'Nhân viên mới', - 'none_selected' => 'Bạn chưa chọn bất kỳ một nhân viên nào để mà xóa.', - 'one_or_multiple' => 'nhân viên', - 'password' => 'Mật khẩu', - 'password_minlength' => 'Mật khẩu phải dài ít nhất 8 ký tự.', - 'password_must_match' => 'Mật khẩu không khớp nhau.', - 'password_not_must_match' => 'Mật khẩu hiện tại và mới phải khác nhau.', - 'password_required' => 'Mật khẩu là bắt buộc.', - 'permission_desc' => 'Các hộp dấu kiểm phía dưới cấp quyền truy cập cho các mô đun.', - 'permission_info' => 'Quyền hạn', - 'repeat_password' => 'Gõ lại mật khẩu lần nữa', - 'subpermission_required' => 'Thêm ít nhất một quyền cho từng mô đun.', - 'successful_adding' => 'Đã thêm thành công nhân viên.', - 'successful_change_password' => 'Đổi mật khẩu thành công.', - 'successful_deleted' => 'Bạn đã xóa thành công', - 'successful_updating' => 'Bạn đã cập nhật nhân viên thành công', - 'system_language' => 'Ngôn ngữ hệ thống', - 'unsuccessful_change_password' => 'Gặp lỗi khi thay đổi mật khẩu.', - 'update' => 'Cập nhật Nhân viên', - 'username' => 'Tài khoản', - 'username_duplicate' => '', - 'username_minlength' => 'Tài khoản phải dài ít nhất là 5 ký tự.', - 'username_required' => 'Trường tài khoản là bắt buộc.', + 'administrator' => '', + 'basic_information' => 'Thông tin', + 'cannot_be_deleted' => 'Không thể xóa các nhân viên đã chọn, một hay nhiều nhân viên đã xử lý bán hàng hoặc bạn đang cố xóa tài khoản của mình.', + 'change_employee' => '', + 'change_password' => 'Đổi mật khẩu', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => 'Bạn chắc chắn muốn xóa các nhân viên được chọn không?', + 'confirm_restore' => 'Bạn chắc chắn muốn hoàn lại các nhân viên được chọn không?', + 'current_password' => 'Mật khẩu hiện tại', + 'current_password_invalid' => 'Mật khẩu hiện tại không hợp lệ.', + 'employee' => 'Nhân viên', + 'error_adding_updating' => 'Gặp lỗi khi cập nhật hay thêm nhân viên.', + 'error_cannot_remove_own_minimum_grant' => 'Bạn không thể gỡ bỏ các quyền truy cập mô đun tối thiểu của chính mình.', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => 'Bạn không thể xóa người dùng demo admin.', + 'error_grant_change_disallowed' => 'Thay đổi quyền bị vô hiệu hóa trong bản demo này.', + 'error_password_change_disallowed' => 'Thay đổi mật khẩu bị vô hiệu hóa trong bản demo này.', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => 'Bạn không thể thay đổi người dùng demo admin.', + 'language' => 'Ngôn ngữ', + 'login_info' => 'Đăng nhập', + 'manager' => '', + 'new' => 'Nhân viên mới', + 'none_selected' => 'Bạn chưa chọn bất kỳ một nhân viên nào để mà xóa.', + 'one_or_multiple' => 'nhân viên', + 'password' => 'Mật khẩu', + 'password_minlength' => 'Mật khẩu phải dài ít nhất 8 ký tự.', + 'password_must_match' => 'Mật khẩu không khớp nhau.', + 'password_not_must_match' => 'Mật khẩu hiện tại và mới phải khác nhau.', + 'password_required' => 'Mật khẩu là bắt buộc.', + 'permission_desc' => 'Các hộp dấu kiểm phía dưới cấp quyền truy cập cho các mô đun.', + 'permission_info' => 'Quyền hạn', + 'repeat_password' => 'Gõ lại mật khẩu lần nữa', + 'subpermission_required' => 'Thêm ít nhất một quyền cho từng mô đun.', + 'successful_adding' => 'Đã thêm thành công nhân viên.', + 'successful_change_password' => 'Đổi mật khẩu thành công.', + 'successful_deleted' => 'Bạn đã xóa thành công', + 'successful_updating' => 'Bạn đã cập nhật nhân viên thành công', + 'system_language' => 'Ngôn ngữ hệ thống', + 'unsuccessful_change_password' => 'Gặp lỗi khi thay đổi mật khẩu.', + 'update' => 'Cập nhật Nhân viên', + 'username' => 'Tài khoản', + 'username_duplicate' => '', + 'username_minlength' => 'Tài khoản phải dài ít nhất là 5 ký tự.', + 'username_required' => 'Trường tài khoản là bắt buộc.', ]; diff --git a/app/Language/zh-Hans/Employees.php b/app/Language/zh-Hans/Employees.php index bfb5af255..acf16a575 100644 --- a/app/Language/zh-Hans/Employees.php +++ b/app/Language/zh-Hans/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => '員工基本資料', - 'cannot_be_deleted' => '無法刪除選定的僱員,選定的員工中已有銷售紀錄或你正在試圖刪除自己 :)', - 'change_employee' => '', - 'change_password' => '', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => '你確定要刪除所選的員工嗎?', - 'confirm_restore' => '', - 'current_password' => '', - 'current_password_invalid' => '', - 'employee' => '員工', - 'error_adding_updating' => '添加/更新員工錯誤', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => '您不能刪除admin用戶', - 'error_grant_change_disallowed' => '演示中禁用了权限更改。', - 'error_password_change_disallowed' => '演示中禁用了密码更改。', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => '您不能更改admin用戶', - 'language' => '', - 'login_info' => '員工登錄資料', - 'manager' => '', - 'new' => '新員工', - 'none_selected' => '您還沒有選擇任何員工進行刪除', - 'one_or_multiple' => '員工', - 'password' => '密碼', - 'password_minlength' => '密碼需為八個字元以上', - 'password_must_match' => '密碼與確認密碼不一致', - 'password_not_must_match' => '', - 'password_required' => '請輸入密碼', - 'permission_desc' => '勾選後授予使用該模組功能', - 'permission_info' => '員工權限', - 'repeat_password' => '確認密碼', - 'subpermission_required' => 'Add at least one grant for each module', - 'successful_adding' => '新增員工資料成功', - 'successful_change_password' => '', - 'successful_deleted' => '成功刪除員工資料', - 'successful_updating' => '成功更新員工資料', - 'system_language' => '', - 'unsuccessful_change_password' => '', - 'update' => '更新員工', - 'username' => '帳號', - 'username_duplicate' => '', - 'username_minlength' => '帳號必需為五個字元以上', - 'username_required' => '帳號為必填', + 'administrator' => '', + 'basic_information' => '員工基本資料', + 'cannot_be_deleted' => '無法刪除選定的僱員,選定的員工中已有銷售紀錄或你正在試圖刪除自己 :)', + 'change_employee' => '', + 'change_password' => '', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '你確定要刪除所選的員工嗎?', + 'confirm_restore' => '', + 'current_password' => '', + 'current_password_invalid' => '', + 'employee' => '員工', + 'error_adding_updating' => '添加/更新員工錯誤', + 'error_cannot_remove_own_minimum_grant' => '您不能移除自己的最低模块访问权限。', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '您不能刪除admin用戶', + 'error_grant_change_disallowed' => '演示中禁用了权限更改。', + 'error_password_change_disallowed' => '演示中禁用了密码更改。', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '您不能更改admin用戶', + 'language' => '', + 'login_info' => '員工登錄資料', + 'manager' => '', + 'new' => '新員工', + 'none_selected' => '您還沒有選擇任何員工進行刪除', + 'one_or_multiple' => '員工', + 'password' => '密碼', + 'password_minlength' => '密碼需為八個字元以上', + 'password_must_match' => '密碼與確認密碼不一致', + 'password_not_must_match' => '', + 'password_required' => '請輸入密碼', + 'permission_desc' => '勾選後授予使用該模組功能', + 'permission_info' => '員工權限', + 'repeat_password' => '確認密碼', + 'subpermission_required' => 'Add at least one grant for each module', + 'successful_adding' => '新增員工資料成功', + 'successful_change_password' => '', + 'successful_deleted' => '成功刪除員工資料', + 'successful_updating' => '成功更新員工資料', + 'system_language' => '', + 'unsuccessful_change_password' => '', + 'update' => '更新員工', + 'username' => '帳號', + 'username_duplicate' => '', + 'username_minlength' => '帳號必需為五個字元以上', + 'username_required' => '帳號為必填', ]; diff --git a/app/Language/zh-Hant/Employees.php b/app/Language/zh-Hant/Employees.php index e01ec5522..e20ca0257 100644 --- a/app/Language/zh-Hant/Employees.php +++ b/app/Language/zh-Hant/Employees.php @@ -1,49 +1,50 @@ '', - 'basic_information' => '員工基本資料', - 'cannot_be_deleted' => '無法刪除選定的僱員,選定的員工中已有銷售紀錄或你正在試圖刪除自己.', - 'change_employee' => '', - 'change_password' => '更改密碼', - 'clerk' => '', - 'commission' => '', - 'confirm_delete' => '你確定要刪除所選的員工嗎?', - 'confirm_restore' => '您確定要還原所選員工嗎?', - 'current_password' => '當前密碼', - 'current_password_invalid' => '當前密碼無效。', - 'employee' => '員工', - 'error_adding_updating' => '添加/更新員工錯誤.', - 'error_deleting_admin' => '', - 'error_deleting_demo_admin' => '您不能刪除admin用戶.', - 'error_grant_change_disallowed' => '演示中禁用了權限更改。', - 'error_password_change_disallowed' => '演示中禁用了密碼更改。', - 'error_updating_admin' => '', - 'error_updating_demo_admin' => '您不能更改admin用戶.', - 'language' => '語言', - 'login_info' => '員工登錄資料', - 'manager' => '', - 'new' => '新員工', - 'none_selected' => '您還沒有選擇任何員工進行刪除.', - 'one_or_multiple' => '員工', - 'password' => '密碼', - 'password_minlength' => '密碼需為八個字元以上.', - 'password_must_match' => '密碼與確認密碼不一致.', - 'password_not_must_match' => '當前密碼和新密碼一致。', - 'password_required' => '請輸入密碼.', - 'permission_desc' => '勾選後授予使用該模組功能.', - 'permission_info' => '員工權限', - 'repeat_password' => '確認密碼', - 'subpermission_required' => '為每個模塊添加至少一項撥款.', - 'successful_adding' => '新增員工資料成功.', - 'successful_change_password' => '密碼更改成功。', - 'successful_deleted' => '成功刪除員工資料', - 'successful_updating' => '成功更新員工資料', - 'system_language' => '系統語言', - 'unsuccessful_change_password' => '密碼更改失敗。', - 'update' => '更新員工', - 'username' => '帳號', - 'username_duplicate' => '', - 'username_minlength' => '帳號必需為五個字元以上.', - 'username_required' => '帳號為必填.', + 'administrator' => '', + 'basic_information' => '員工基本資料', + 'cannot_be_deleted' => '無法刪除選定的僱員,選定的員工中已有銷售紀錄或你正在試圖刪除自己.', + 'change_employee' => '', + 'change_password' => '更改密碼', + 'clerk' => '', + 'commission' => '', + 'confirm_delete' => '你確定要刪除所選的員工嗎?', + 'confirm_restore' => '您確定要還原所選員工嗎?', + 'current_password' => '當前密碼', + 'current_password_invalid' => '當前密碼無效。', + 'employee' => '員工', + 'error_adding_updating' => '添加/更新員工錯誤.', + 'error_cannot_remove_own_minimum_grant' => '您不能移除自己的最低模組存取權限。', + 'error_deleting_admin' => '', + 'error_deleting_demo_admin' => '您不能刪除admin用戶.', + 'error_grant_change_disallowed' => '演示中禁用了權限更改。', + 'error_password_change_disallowed' => '演示中禁用了密碼更改。', + 'error_updating_admin' => '', + 'error_updating_demo_admin' => '您不能更改admin用戶.', + 'language' => '語言', + 'login_info' => '員工登錄資料', + 'manager' => '', + 'new' => '新員工', + 'none_selected' => '您還沒有選擇任何員工進行刪除.', + 'one_or_multiple' => '員工', + 'password' => '密碼', + 'password_minlength' => '密碼需為八個字元以上.', + 'password_must_match' => '密碼與確認密碼不一致.', + 'password_not_must_match' => '當前密碼和新密碼一致。', + 'password_required' => '請輸入密碼.', + 'permission_desc' => '勾選後授予使用該模組功能.', + 'permission_info' => '員工權限', + 'repeat_password' => '確認密碼', + 'subpermission_required' => '為每個模塊添加至少一項撥款.', + 'successful_adding' => '新增員工資料成功.', + 'successful_change_password' => '密碼更改成功。', + 'successful_deleted' => '成功刪除員工資料', + 'successful_updating' => '成功更新員工資料', + 'system_language' => '系統語言', + 'unsuccessful_change_password' => '密碼更改失敗。', + 'update' => '更新員工', + 'username' => '帳號', + 'username_duplicate' => '', + 'username_minlength' => '帳號必需為五個字元以上.', + 'username_required' => '帳號為必填.', ]; diff --git a/app/Models/Employee.php b/app/Models/Employee.php index ba028f234..34260ee52 100644 --- a/app/Models/Employee.php +++ b/app/Models/Employee.php @@ -387,13 +387,17 @@ class Employee extends Person $updated = $builder->update(['hash_version' => 2, 'password' => $passwordHash]); if ($updated) { - $this->session->regenerate(true); + if (session_status() === PHP_SESSION_ACTIVE) { + $this->session->regenerate(true); + } $this->session->set('person_id', $row->person_id); } return $updated; } elseif ($row->hash_version === '2' && password_verify($password, $row->password)) { - $this->session->regenerate(true); + if (session_status() === PHP_SESSION_ACTIVE) { + $this->session->regenerate(true); + } $this->session->set('person_id', $row->person_id); return true; diff --git a/app/Views/employees/form.php b/app/Views/employees/form.php index ae010542e..625219b1f 100644 --- a/app/Views/employees/form.php +++ b/app/Views/employees/form.php @@ -26,7 +26,7 @@
-
+
@@ -113,9 +113,10 @@

    +
  • - module_id", $module->module_id, $module->grant == 1, 'class="module"') ?> + module_id", $module->module_id, $module->grant == 1, 'class="module-toggle"') ?> module_id", [ @@ -123,8 +124,7 @@ 'office' => lang('Module.office'), 'both' => lang('Module.both') ], - $module->menu_group, - 'class="module"' + $module->menu_group ) ?> module_id") ?>: @@ -166,9 +166,9 @@ ignore: [] }); - $.validator.addMethod('module', function(value, element) { + $.validator.addMethod('module', function() { let result = $('#permission_list input').is(':checked'); - $('.module').each(function(index, element) { + $('.module-toggle').each(function(index, element) { const parent = $(element); const checked = $(element).is(':checked'); if ($('ul', parent).length > 0 && result) { @@ -178,7 +178,7 @@ return result; }, ""); - $('ul#permission_list > li > input.module').each(function() { + $('ul#permission_list > li > input.module-toggle').each(function() { const $this = $(this); $('ul > li > input,select', $this.parent()).each(function() { const $that = $(this); diff --git a/app/Views/no_access.php b/app/Views/no_access.php index 519cb34aa..3a4bdc599 100644 --- a/app/Views/no_access.php +++ b/app/Views/no_access.php @@ -4,3 +4,5 @@ */ echo lang('Error.no_permission_module') . " $module_name" . (!empty($permission_id) ? " ($permission_id)" : ''); +?> + From d63d31700d09d8a931bfffe1057915d25f0e0736 Mon Sep 17 00:00:00 2001 From: objecttothis <17935339+objecttothis@users.noreply.github.com> Date: Fri, 28 Aug 2026 10:08:31 +0400 Subject: [PATCH 6/8] Ensure payload data is escaped to prevent XSS (#4664) fix(barcode): escape payload fields to prevent XSS; PSR-12 refactor - Apply `esc()` to name, ID, item number, category, and company name in `Barcode_lib` payloads - Remove redundant `urldecode()` in `Item_kitsController` to prevent triple decoding - Rename variables and methods to camelCase across barcode, item_kits, and tests - Add type hint for `$layoutType` parameter in `manageDisplayLayout` - Add/update unit tests covering escaping and HTTP response assertions Signed-off-by: objecttothis <17935339+objecttothis@users.noreply.github.com> --- AGENTS.md | 1 + app/Controllers/Item_kits.php | 32 ++--- app/Libraries/Barcode_lib.php | 34 ++--- tests/Controllers/ItemKitsControllerTest.php | 139 +++++++++++++++++++ tests/Libraries/Barcode_libTest.php | 127 +++++++++++++++++ 5 files changed, 300 insertions(+), 33 deletions(-) create mode 100644 tests/Controllers/ItemKitsControllerTest.php create mode 100644 tests/Libraries/Barcode_libTest.php diff --git a/AGENTS.md b/AGENTS.md index d36edae57..fdb3677af 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -26,6 +26,7 @@ This document provides guidance for AI agents working on the Open Source Point o - Run PHPUnit tests: `composer test` - Tests must pass before submitting changes +- **One test file per class under test.** A controller, model, library, or helper gets exactly one test file covering all of its behavior — `Item_kits.php` → `tests/Controllers/Item_kitsTest.php` (or `Item_kitsControllerTest.php`, matching this codebase's existing `*ControllerTest.php` suffix for controllers), `Sale_lib.php` → `tests/Libraries/Sale_libTest.php`, etc. Do not create feature- or endpoint-scoped test files alongside a class's main test file (e.g. no `Item_kitsBarcodeTest.php` next to `Item_kitsControllerTest.php`) — add the new test methods to the existing file for that class instead. If no test file exists yet for the class, create the one canonical file rather than a narrowly-scoped one. ## Build diff --git a/app/Controllers/Item_kits.php b/app/Controllers/Item_kits.php index f0cc57eb1..820db78a0 100644 --- a/app/Controllers/Item_kits.php +++ b/app/Controllers/Item_kits.php @@ -255,39 +255,39 @@ class Item_kits extends Secure_Controller /** * AJAX called function that generates barcodes for selected item_kits. * - * @param string $item_kit_ids Colon separated list of item_kit_id values to generate barcodes for. + * @param string $itemKitIds Colon separated list of item_kit_id values to generate barcodes for. * @return string * @noinspection PhpUnused */ - public function getGenerateBarcodes(string $item_kit_ids): string + public function getGenerateBarcodes(string $itemKitIds): string { - $barcode_lib = new Barcode_lib(); + $barcodeLib = new Barcode_lib(); $result = []; - $item_kit_ids = explode(':', $item_kit_ids); - foreach ($item_kit_ids as $item_kid_id) { + $itemKitIds = explode(':', $itemKitIds); + foreach ($itemKitIds as $itemKitId) { // Calculate the total cost and retail price of the Kit, so it can be added to the barcode text at the bottom - $item_kit = $this->_add_totals_to_item_kit($this->item_kit->get_info($item_kid_id)); + $itemKit = $this->_add_totals_to_item_kit($this->item_kit->get_info($itemKitId)); - $item_kid_id = 'KIT ' . urldecode($item_kid_id); + $itemKitId = 'KIT ' . $itemKitId; $result[] = [ - 'name' => $item_kit->name, - 'item_id' => $item_kid_id, - 'item_number' => $item_kid_id, - 'cost_price' => $item_kit->total_cost_price, - 'unit_price' => $item_kit->total_unit_price + 'name' => $itemKit->name, + 'item_id' => $itemKitId, + 'item_number' => $itemKitId, + 'cost_price' => $itemKit->total_cost_price, + 'unit_price' => $itemKit->total_unit_price ]; } $data['items'] = $result; - $barcode_config = $barcode_lib->get_barcode_config(); + $barcodeConfig = $barcodeLib->get_barcode_config(); // In case the selected barcode type is not Code39 or Code128 we set by default Code128 // The rationale for this is that EAN codes cannot have strings as seed, so 'KIT ' is not allowed - if ($barcode_config['barcode_type'] != 'C39' && $barcode_config['barcode_type'] != 'C128') { - $barcode_config['barcode_type'] = 'C128'; + if ($barcodeConfig['barcode_type'] != 'C39' && $barcodeConfig['barcode_type'] != 'C128') { + $barcodeConfig['barcode_type'] = 'C128'; } - $data['barcode_config'] = $barcode_config; + $data['barcode_config'] = $barcodeConfig; // Display barcodes return view("barcodes/barcode_sheet", $data); diff --git a/app/Libraries/Barcode_lib.php b/app/Libraries/Barcode_lib.php index 202457adc..e7f96a47d 100644 --- a/app/Libraries/Barcode_lib.php +++ b/app/Libraries/Barcode_lib.php @@ -146,10 +146,10 @@ class Barcode_lib if ((isset($item['item_number']) || isset($item['name'])) && isset($item['item_id'])) { $barcode = $this->generate_barcode($item, $barcode_config); $display_table = ''; - $display_table .= ''; + $display_table .= ''; $display_table .= ''; - $display_table .= ''; - $display_table .= ''; + $display_table .= ''; + $display_table .= ''; $display_table .= '
    ' . $this->manage_display_layout($barcode_config['barcode_first_row'], $item, $barcode_config) . '
    ' . $this->manageDisplayLayout($barcode_config['barcode_first_row'], $item, $barcode_config) . '
    '.$barcode.'
    ' . $this->manage_display_layout($barcode_config['barcode_second_row'], $item, $barcode_config) . '
    ' . $this->manage_display_layout($barcode_config['barcode_third_row'], $item, $barcode_config) . '
    ' . $this->manageDisplayLayout($barcode_config['barcode_second_row'], $item, $barcode_config) . '
    ' . $this->manageDisplayLayout($barcode_config['barcode_third_row'], $item, $barcode_config) . '
    '; return $display_table; @@ -159,30 +159,30 @@ class Barcode_lib } /** - * @param $layout_type + * @param string $layoutType * @param array $item - * @param array $barcode_config + * @param array $barcodeConfig * @return string */ - private function manage_display_layout($layout_type, array $item, array $barcode_config): string + private function manageDisplayLayout(string $layoutType, array $item, array $barcodeConfig): string { $result = ''; helper('text'); - if ($layout_type == 'name') { - $result = $item['name']; - } elseif ($layout_type == 'category' && isset($item['category'])) { + if ($layoutType == 'name') { + $result = esc($item['name']); + } elseif ($layoutType == 'category' && isset($item['category'])) { $result = lang('Items.category') . " " . esc($item['category']); - } elseif ($layout_type == 'cost_price' && isset($item['cost_price'])) { + } elseif ($layoutType == 'cost_price' && isset($item['cost_price'])) { $result = lang('Items.cost_price') . " " . to_currency($item['cost_price']); - } elseif ($layout_type == 'unit_price' && isset($item['unit_price'])) { + } elseif ($layoutType == 'unit_price' && isset($item['unit_price'])) { $result = lang('Items.unit_price') . " " . to_currency($item['unit_price']); - } elseif ($layout_type == 'company_name') { - $result = $barcode_config['company']; - } elseif ($layout_type == 'item_code') { - $result = $barcode_config['barcode_content'] !== "id" && isset($item['item_number']) - ? $item['item_number'] - : $item['item_id']; + } elseif ($layoutType == 'company_name') { + $result = esc($barcodeConfig['company']); + } elseif ($layoutType == 'item_code') { + $result = $barcodeConfig['barcode_content'] !== "id" && isset($item['item_number']) + ? esc($item['item_number']) + : esc($item['item_id']); } return character_limiter($result, 40); diff --git a/tests/Controllers/ItemKitsControllerTest.php b/tests/Controllers/ItemKitsControllerTest.php new file mode 100644 index 000000000..566516c40 --- /dev/null +++ b/tests/Controllers/ItemKitsControllerTest.php @@ -0,0 +1,139 @@ +DBGroup)->call('App\Database\Seeds\TestDatabaseBootstrapSeeder'); + Config::connect($this->DBGroup)->close(); + + self::$doneBootstrap = true; + } + + parent::setUp(); + + $ospos = new OSPOS(); + $ospos->settings = [ + 'company' => 'Test Co', + 'barcode_content' => 'id', + 'barcode_type' => 'C128', + 'barcode_font' => 'inconsolata.ttf', + 'barcode_font_size' => 10, + 'barcode_height' => 40, + 'barcode_width' => 2, + 'barcode_first_row' => 'item_code', + 'barcode_second_row' => 'none', + 'barcode_third_row' => 'none', + 'barcode_num_in_row' => 1, + 'barcode_page_width' => 8, + 'barcode_page_cellspacing' => 1, + 'barcode_generate_if_empty' => 0, + 'barcode_formats' => 'null', + ]; + Factories::injectMock('config', OSPOS::class, $ospos); + + $this->item = model(Item::class); + $this->itemKit = model(Item_kit::class); + } + + protected function tearDown(): void + { + Factories::reset(); + parent::tearDown(); + } + + protected function loginAsAdmin(): void + { + $this->withSession([ + 'person_id' => 1, + 'menu_group' => 'office' + ]); + } + + private function createItemKit(): int + { + $itemData = [ + 'item_id' => null, + 'name' => 'Kit Base Item', + 'category' => 'Test', + 'cost_price' => 10.00, + 'unit_price' => 20.00, + 'deleted' => 0 + ]; + $this->assertTrue($this->item->save_value($itemData)); + + $itemKitData = [ + 'name' => 'Test Kit', + 'description' => 'Test Kit Description', + 'item_id' => $itemData['item_id'], + 'kit_discount' => 0, + 'kit_discount_type' => 0, + 'price_option' => 0, + 'print_option' => 0 + ]; + $this->assertTrue($this->itemKit->save_value($itemKitData)); + + return (int) $itemKitData['item_kit_id']; + } + + /** + * @throws Exception + */ + public function testGenerateBarcodesDoesNotDecodeTripleEncodedPayload(): void + { + $itemKitId = $this->createItemKit(); + $this->loginAsAdmin(); + + // URL-encoded three times (GHSA-3vpv-jqr3-7256 PoC). + // The framework's router decodes this twice before routing; the controller used to apply + // a third urldecode(), turning the remaining %3C.../%3E into a live tag. + // With that urldecode() removed, the value must stay percent-encoded text and never + // become a raw '<' in the response. + $payload = $itemKitId . '%25253Csvg%252520onload%25253Dalert%252528document.domain%252529%25253E'; + + $response = $this->get('/item_kits/generateBarcodes/' . $payload); + $response->assertStatus(200); + + $body = $response->getBody(); + $this->assertStringNotContainsString('assertStringContainsString('%3Csvg', $body); + } + + public function testGenerateBarcodesWorksForPlainItemKitId(): void + { + $itemKitId = $this->createItemKit(); + $this->loginAsAdmin(); + + $response = $this->get('/item_kits/generateBarcodes/' . $itemKitId); + + $response->assertStatus(200); + $this->assertStringContainsString('KIT ' . $itemKitId, $response->getBody()); + } +} diff --git a/tests/Libraries/Barcode_libTest.php b/tests/Libraries/Barcode_libTest.php new file mode 100644 index 000000000..4e424d4a9 --- /dev/null +++ b/tests/Libraries/Barcode_libTest.php @@ -0,0 +1,127 @@ +barcodeLib = new Barcode_lib(); + } + + private function baseBarcodeConfig(string $layout): array + { + return [ + 'company' => 'Test Co', + 'barcode_content' => 'id', + 'barcode_type' => 'C128', + 'barcode_font' => 'inconsolata.ttf', + 'barcode_font_size' => 10, + 'barcode_height' => 40, + 'barcode_width' => 2, + 'barcode_first_row' => $layout, + 'barcode_second_row' => 'none', + 'barcode_third_row' => 'none', + 'barcode_num_in_row' => 1, + 'barcode_page_width' => 8, + 'barcode_page_cellspacing' => 1, + 'barcode_generate_if_empty' => 0, + 'barcode_formats' => [], + ]; + } + + public function testNamePayloadIsEscaped(): void + { + $item = [ + 'name' => '', + 'item_id' => '1', + ]; + + $result = $this->barcodeLib->display_barcode($item, $this->baseBarcodeConfig('name')); + + $this->assertStringNotContainsString('assertStringContainsString('<svg', $result); + } + + public function testItemCodeIdPayloadIsEscaped(): void + { + $item = [ + 'name' => 'Item Name', + 'item_id' => 'KIT 1', + ]; + + $config = $this->baseBarcodeConfig('item_code'); + $config['barcode_content'] = 'id'; + + $result = $this->barcodeLib->display_barcode($item, $config); + + $this->assertStringNotContainsString('assertStringContainsString('<svg', $result); + } + + public function testItemCodeNumberPayloadIsEscaped(): void + { + $item = [ + 'name' => 'Item Name', + 'item_id' => '1', + 'item_number' => 'KIT 1', + ]; + + $config = $this->baseBarcodeConfig('item_code'); + $config['barcode_content'] = 'item_number'; + + $result = $this->barcodeLib->display_barcode($item, $config); + + $this->assertStringNotContainsString('assertStringContainsString('<svg', $result); + } + + public function testCategoryPayloadIsEscaped(): void + { + $item = [ + 'name' => 'Item Name', + 'item_id' => '1', + 'category' => '', + ]; + + $result = $this->barcodeLib->display_barcode($item, $this->baseBarcodeConfig('category')); + + $this->assertStringNotContainsString('assertStringContainsString('<svg', $result); + } + + public function testCompanyNamePayloadIsEscaped(): void + { + $item = [ + 'name' => 'Item Name', + 'item_id' => '1', + ]; + + $config = $this->baseBarcodeConfig('company_name'); + $config['company'] = ''; + + $result = $this->barcodeLib->display_barcode($item, $config); + + $this->assertStringNotContainsString('assertStringContainsString('<svg', $result); + } + + public function testCleanNameIsUnaffected(): void + { + $item = [ + 'name' => 'Widget A', + 'item_id' => '1', + ]; + + $result = $this->barcodeLib->display_barcode($item, $this->baseBarcodeConfig('name')); + + $this->assertStringContainsString('Widget A', $result); + } +} From 8cfd1a4b1d233e14f521502eb91866aed671b3f2 Mon Sep 17 00:00:00 2001 From: objecttothis <17935339+objecttothis@users.noreply.github.com> Date: Mon, 31 Aug 2026 13:08:33 +0400 Subject: [PATCH 7/8] fix(sales): enforce reports_sales grant on search endpoint (#4673) - Sales::getSearch now enforces reports_sales grant before running search, returns 403 with lang message when missing - Rename snake_case helpers/methods to camelCase across Sales controller, Sale model, and tabular_helper (get_sale_data_row -> getSaleDataRow, get_payments_summary -> getPaymentsSummary, sales_headers -> salesHeaders, etc.) - Config/OSPOS: reset DB data cache before checking app_config table existence to avoid stale schema cache in tests - TestDatabaseBootstrapSeeder: expose static reset() so tests can rebuild schema once per class instead of only via seeder run() - SalesControllerTest: bootstrap DB once per class, seed once, refresh app settings each setUp, add tests for search endpoint authorization (cashier denied, supervisor allowed), move createTestItem into shared ItemFixtureTrait Signed-off-by: objecttothis <17935339+objecttothis@users.noreply.github.com> --- app/Config/OSPOS.php | 1 + app/Controllers/Sales.php | 32 +++--- .../Seeds/TestDatabaseBootstrapSeeder.php | 7 +- app/Helpers/tabular_helper.php | 10 +- app/Models/Sale.php | 2 +- tests/Controllers/SalesControllerTest.php | 103 +++++++++++++----- 6 files changed, 105 insertions(+), 50 deletions(-) diff --git a/app/Config/OSPOS.php b/app/Config/OSPOS.php index 1b89532b2..a3b4ecb1b 100644 --- a/app/Config/OSPOS.php +++ b/app/Config/OSPOS.php @@ -39,6 +39,7 @@ class OSPOS extends BaseConfig try { $db = Database::connect(); + $db->resetDataCache(); if (!$db->tableExists('app_config')) { $this->settings = $this->getDefaultSettings(); diff --git a/app/Controllers/Sales.php b/app/Controllers/Sales.php index aa9730cad..28627379c 100644 --- a/app/Controllers/Sales.php +++ b/app/Controllers/Sales.php @@ -137,20 +137,26 @@ class Sales extends Secure_Controller } $saleInfo = $this->sale->get_info($rowId)->getRow(); - $dataRow = get_sale_data_row($saleInfo); + $dataRow = getSaleDataRow($saleInfo); return $this->response->setJSON($dataRow); } /** - * @return void + * @return ResponseInterface */ public function getSearch(): ResponseInterface { + $personId = $this->session->get('person_id'); + + if (!$this->employee->has_grant('reports_sales', $personId)) { + return $this->response->setStatusCode(403)->setJSON(['success' => false, 'message' => lang('Sales.not_authorized')]); + } + $search = $this->request->getGet('search', FILTER_SANITIZE_FULL_SPECIAL_CHARS); $limit = $this->request->getGet('limit', FILTER_SANITIZE_NUMBER_INT); $offset = $this->request->getGet('offset', FILTER_SANITIZE_NUMBER_INT); - $sort = $this->sanitizeSortColumn(sales_headers(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'sale_id'); + $sort = $this->sanitizeSortColumn(salesHeaders(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'sale_id'); $order = $this->request->getGet('order', FILTER_SANITIZE_FULL_SPECIAL_CHARS); $filters = [ @@ -171,24 +177,24 @@ class Sales extends Secure_Controller ]; // 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); + $requestFilters = array_fill_keys($this->request->getGet('filters', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? [], true); + $filters = array_merge($filters, $requestFilters); $sales = $this->sale->search($search, $filters, $limit, $offset, $sort, $order); - $total_rows = $this->sale->get_found_rows($search, $filters); - $payments = $this->sale->get_payments_summary($search, $filters); - $payment_summary = get_sales_manage_payments_summary($payments); + $totalRows = $this->sale->get_found_rows($search, $filters); + $payments = $this->sale->getPaymentsSummary($search, $filters); + $paymentSummary = getSalesManagePaymentsSummary($payments); - $data_rows = []; + $dataRows = []; foreach ($sales->getResult() as $sale) { - $data_rows[] = get_sale_data_row($sale); + $dataRows[] = getSaleDataRow($sale); } - if ($total_rows > 0) { - $data_rows[] = get_sale_data_last_row($sales); + if ($totalRows > 0) { + $dataRows[] = getSaleDataLastRow($sales); } - return $this->response->setJSON(['total' => $total_rows, 'rows' => $data_rows, 'payment_summary' => $payment_summary]); + return $this->response->setJSON(['total' => $totalRows, 'rows' => $dataRows, 'payment_summary' => $paymentSummary]); } /** diff --git a/app/Database/Seeds/TestDatabaseBootstrapSeeder.php b/app/Database/Seeds/TestDatabaseBootstrapSeeder.php index 335ba1021..a1e156541 100644 --- a/app/Database/Seeds/TestDatabaseBootstrapSeeder.php +++ b/app/Database/Seeds/TestDatabaseBootstrapSeeder.php @@ -7,7 +7,7 @@ use Config\Database; class TestDatabaseBootstrapSeeder extends Seeder { - public function run(): void + public static function reset(): void { if (ENVIRONMENT !== 'testing') { throw new \RuntimeException('TestDatabaseBootstrapSeeder can only run in the testing environment.'); @@ -34,4 +34,9 @@ class TestDatabaseBootstrapSeeder extends Seeder $serverConn->query("DROP DATABASE IF EXISTS `{$dbName}`"); $serverConn->query("CREATE DATABASE IF NOT EXISTS `{$dbName}`"); } + + public function run(): void + { + self::reset(); + } } diff --git a/app/Helpers/tabular_helper.php b/app/Helpers/tabular_helper.php index 3ed5144ca..129e6c921 100644 --- a/app/Helpers/tabular_helper.php +++ b/app/Helpers/tabular_helper.php @@ -61,7 +61,7 @@ function transform_headers(array $headers, bool $readonly = false, bool $editabl } -function sales_headers(): array +function salesHeaders(): array { return [ ['sale_id' => lang('Common.id')], @@ -79,7 +79,7 @@ function sales_headers(): array */ function get_sales_manage_table_headers(): string { - $headers = sales_headers(); + $headers = salesHeaders(); $config = config(OSPOS::class)->settings; if ($config['invoice_enable']) { @@ -95,7 +95,7 @@ function get_sales_manage_table_headers(): string /** * Get the html data row for the sales */ -function get_sale_data_row(object $sale): array +function getSaleDataRow(object $sale): array { $uri = current_url(true); $controller = $uri->getSegment(1); @@ -145,7 +145,7 @@ function get_sale_data_row(object $sale): array /** * Get the html data last row for the sales */ -function get_sale_data_last_row(ResultInterface $sales): array +function getSaleDataLastRow(ResultInterface $sales): array { $sum_amount_due = 0; $sum_amount_tendered = 0; @@ -169,7 +169,7 @@ function get_sale_data_last_row(ResultInterface $sales): array /** * Get the sales payments summary */ -function get_sales_manage_payments_summary(array $payments): string +function getSalesManagePaymentsSummary(array $payments): string { $table = '
    '; $total = 0; diff --git a/app/Models/Sale.php b/app/Models/Sale.php index 1dbf2ba03..16229cb7f 100644 --- a/app/Models/Sale.php +++ b/app/Models/Sale.php @@ -210,7 +210,7 @@ class Sale extends Model /** * Get the payment summary for the takings (sales/manage) view */ - public function get_payments_summary(?string $search, array $filters): array + public function getPaymentsSummary(?string $search, array $filters): array { $config = config(OSPOS::class)->settings; diff --git a/tests/Controllers/SalesControllerTest.php b/tests/Controllers/SalesControllerTest.php index fe57887df..57fd939f0 100644 --- a/tests/Controllers/SalesControllerTest.php +++ b/tests/Controllers/SalesControllerTest.php @@ -6,8 +6,10 @@ use CodeIgniter\Test\CIUnitTestCase; use CodeIgniter\Test\DatabaseTestTrait; use CodeIgniter\Test\FeatureTestTrait; use CodeIgniter\Config\Services; +use App\Database\Seeds\TestDatabaseBootstrapSeeder; use App\Models\Employee; -use App\Models\Item; +use Config\OSPOS; +use Tests\Support\ItemFixtureTrait; /** * Regression tests for GHSA-3xf6-8fmq-44wg. @@ -21,12 +23,34 @@ class SalesControllerTest extends CIUnitTestCase { use DatabaseTestTrait; use FeatureTestTrait; + use ItemFixtureTrait; protected $migrate = true; protected $migrateOnce = true; + protected $seedOnce = true; protected $refresh = false; protected $namespace = null; + private static bool $doneBootstrap = false; + + protected function setUp(): void + { + if (self::$doneBootstrap === false) { + TestDatabaseBootstrapSeeder::reset(); + + self::$doneBootstrap = true; + } + + parent::setUp(); + + config(OSPOS::class)->update_settings(); + } + + protected function tearDown(): void + { + parent::tearDown(); + } + protected function createCashierEmployee(): int { $unique = uniqid(); @@ -35,7 +59,14 @@ class SalesControllerTest extends CIUnitTestCase 'first_name' => 'Cashier', 'last_name' => 'NoReports', 'email' => "cashier.$unique@test.com", - 'phone_number' => '555-0001' + 'phone_number' => '555-0001', + 'address_1' => '', + 'address_2' => '', + 'city' => '', + 'state' => '', + 'zip' => '', + 'country' => '', + 'comments' => '', ]; $employeeData = [ @@ -69,7 +100,14 @@ class SalesControllerTest extends CIUnitTestCase 'first_name' => 'Supervisor', 'last_name' => 'WithReports', 'email' => "supervisor.$unique@test.com", - 'phone_number' => '555-0002' + 'phone_number' => '555-0002', + 'address_1' => '', + 'address_2' => '', + 'city' => '', + 'state' => '', + 'zip' => '', + 'country' => '', + 'comments' => '', ]; $employeeData = [ @@ -220,30 +258,6 @@ class SalesControllerTest extends CIUnitTestCase return $saleId; } - protected function createTestItem(): int - { - $itemData = [ - 'item_id' => null, - 'name' => 'Test Item', - 'description' => 'Test Item', - 'category' => 'Test Category', - 'cost_price' => 1.00, - 'unit_price' => 5.00, - 'reorder_level' => 0, - 'item_number' => 'TEST-' . uniqid(), - 'allow_alt_description' => 0, - 'is_serialized' => 0, - 'stock_type' => HAS_NO_STOCK, - 'deleted' => 0, - ]; - - $itemModel = model(Item::class); - $itemModel->save_value($itemData); - $this->assertTrue($itemModel->save_value($itemData)); - - return (int) $itemData['item_id']; - } - /** * Seeds a single cart line directly in the session, mirroring the shape * Sale_lib::add_item() produces, so tests can target postEditItem's @@ -382,6 +396,35 @@ class SalesControllerTest extends CIUnitTestCase $this->assertSame(lang('Sales.not_authorized'), $result['message']); } + public function testCashierWithoutReportsSalesCannotGetSearch(): void + { + $cashierId = $this->createCashierEmployee(); + $this->createSale($cashierId); + $this->loginAs($cashierId); + + $response = $this->get('/sales/search'); + + $response->assertStatus(403); + $result = json_decode($response->getJSON(), true); + $this->assertFalse($result['success']); + } + + public function testEmployeeWithReportsSalesCanGetSearch(): void + { + $supervisorId = $this->createReportsSalesEmployee(); + $this->createSale($supervisorId); + $this->loginAs($supervisorId); + + $response = $this->get('/sales/search'); + + $response->assertStatus(200); + $result = json_decode($response->getJSON(), true); + $this->assertArrayNotHasKey('success', $result); + $this->assertArrayHasKey('total', $result); + $this->assertArrayHasKey('rows', $result); + $this->assertArrayHasKey('payment_summary', $result); + } + public function testEmployeeWithReportsSalesCanGetRow(): void { $supervisorId = $this->createReportsSalesEmployee(); @@ -410,7 +453,7 @@ class SalesControllerTest extends CIUnitTestCase { $cashierId = $this->createCashierWithoutChangePriceGrant(); $this->loginAs($cashierId); - $itemId = $this->createTestItem(); + $itemId = $this->createTestItem(HAS_NO_STOCK); $this->seedCartLine(1, '5.00', $itemId); $response = $this->post('/sales/editItem/1', [ @@ -434,7 +477,7 @@ class SalesControllerTest extends CIUnitTestCase { $cashierId = $this->createCashierWithoutChangePriceGrant(); $this->loginAs($cashierId); - $itemId = $this->createTestItem(); + $itemId = $this->createTestItem(HAS_NO_STOCK); $this->seedCartLine(1, '5.00', $itemId); $response = $this->post('/sales/editItem/1', [ @@ -458,7 +501,7 @@ class SalesControllerTest extends CIUnitTestCase { $cashierId = $this->createCashierWithChangePriceGrant(); $this->loginAs($cashierId); - $itemId = $this->createTestItem(); + $itemId = $this->createTestItem(HAS_NO_STOCK); $this->seedCartLine(1, '5.00', $itemId); $response = $this->post('/sales/editItem/1', [ From 905a447e55de33443f9e969632e06994ad2e454a Mon Sep 17 00:00:00 2001 From: objecttothis <17935339+objecttothis@users.noreply.github.com> Date: Mon, 31 Aug 2026 13:33:09 +0400 Subject: [PATCH 8/8] fix(reports, home): resolve double-URL-decoding bypass for method grants (#4660) (#4666) fix(reports, home): strengthen method grant validation and URI decoding (#4660) - Reports, Home: fix URI decoding in hasGrant() method checks to use urldecode consistently, preventing malformed URI segments from bypassing access controls - Reports: rename snake_case variables to camelCase for PSR-12 compliance - Reports: adjust access checks to accurately handle null submodule IDs Tests: - Add grant check tests for encoded URI inputs across Reports and Home - Add test case for employee access with base reports grant - Add secondary grant check for reports_customers in relevant test cases - Confirm logout bypass remains functional and properly controlled - Refactor TestDatabaseBootstrapSeeder to expose static reset() for per-class DB re-initialization instead of only via seeder run() - Standardize session handling, setup logic, and boolean declarations - Use unique data in test helpers to avoid collisions - Add docblocks to ReportsControllerTest and HomeTest for PSR-5 compliance - Add exception handling for failed employee creation in test setup - Wrap password validation test in try-finally to guarantee state cleanup Signed-off-by: objecttothis <17935339+objecttothis@users.noreply.github.com> --- app/Controllers/Home.php | 3 +- app/Controllers/Reports.php | 18 +- tests/Controllers/HomeTest.php | 312 ++++++++++++-------- tests/Controllers/ReportsControllerTest.php | 242 ++++++++++++--- 4 files changed, 400 insertions(+), 175 deletions(-) diff --git a/app/Controllers/Home.php b/app/Controllers/Home.php index 84690cdf2..8161a7c3c 100644 --- a/app/Controllers/Home.php +++ b/app/Controllers/Home.php @@ -6,13 +6,12 @@ use App\Libraries\MY_Migration; use App\Models\Employee; use CodeIgniter\HTTP\RedirectResponse; use CodeIgniter\HTTP\ResponseInterface; -use Config\Services; class Home extends Secure_Controller { public function __construct() { - $methodName = Services::request()->getUri()->getSegment(2); + $methodName = urldecode(service('request')->getUri()->getSegment(2)); if ($methodName === 'logout') { $this->employee = model(Employee::class); diff --git a/app/Controllers/Reports.php b/app/Controllers/Reports.php index 786341fdc..f01249515 100644 --- a/app/Controllers/Reports.php +++ b/app/Controllers/Reports.php @@ -56,8 +56,8 @@ class Reports extends Secure_Controller { parent::__construct('reports'); $request = Services::request(); - $method_name = $request->getUri()->getSegment(2); - $exploder = explode('_', $method_name); + $methodName = urldecode($request->getUri()->getSegment(2)); + $exploder = explode('_', $methodName); $this->attribute = config(Attribute::class); $this->config = config(OSPOS::class)->settings; @@ -80,14 +80,16 @@ class Reports extends Secure_Controller $this->inventory_summary = model(Inventory_summary::class); if (sizeof($exploder) > 1) { - preg_match('/(?:inventory)|([^_.]*)(?:_graph|_row)?$/', $method_name, $matches); + preg_match('/(?:inventory)|([^_.]*)(?:_graph|_row)?$/', $methodName, $matches); preg_match('/^(.*?)([sy])?$/', array_pop($matches), $matches); - $submodule_id = $matches[1] . ((count($matches) > 2) ? $matches[2] : 's'); + $submoduleId = $matches[1] . ((count($matches) > 2) ? $matches[2] : 's'); + } else { + $submoduleId = null; + } - // Check access to report submodule - if (!$this->employee->has_grant('reports_' . $submodule_id, $this->employee->get_logged_in_employee_info()->person_id)) { - throw new RedirectException('no_access/reports/reports_' . $submodule_id); - } + // 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); } helper('report'); diff --git a/tests/Controllers/HomeTest.php b/tests/Controllers/HomeTest.php index 5d5f70653..d8821c37a 100644 --- a/tests/Controllers/HomeTest.php +++ b/tests/Controllers/HomeTest.php @@ -2,15 +2,16 @@ namespace Tests\Controllers; +use CodeIgniter\Database\Config; use CodeIgniter\Test\CIUnitTestCase; use CodeIgniter\Test\DatabaseTestTrait; use CodeIgniter\Test\FeatureTestTrait; -use CodeIgniter\Config\Services; use App\Models\Employee; +use RuntimeException; /** * Test suite for Home controller password validation - * + * * Tests the critical fix for password minimum length validation bypass * Issue: Code was checking hashed password length (always 60 chars) instead of actual password * Fix: Validate raw password length BEFORE hashing @@ -25,23 +26,29 @@ class HomeTest extends CIUnitTestCase protected $refresh = false; protected $namespace = null; - /** - * Set up test environment - */ + private static bool $doneBootstrap = false; + protected function setUp(): void { + if (self::$doneBootstrap === false) { + Config::seeder($this->DBGroup)->call('App\Database\Seeds\TestDatabaseBootstrapSeeder'); + Config::connect($this->DBGroup)->close(); + + self::$doneBootstrap = true; + } + parent::setUp(); } /** * Test password validation rejects passwords shorter than 8 characters - * + * * @return void */ public function testPasswordMinLength_Rejects7Characters(): void { $this->resetSession(); - + // Attempt to change password to 7 characters $response = $this->post('/home/save', [ 'employee_id' => 1, @@ -49,29 +56,29 @@ class HomeTest extends CIUnitTestCase 'current_password' => 'pointofsale', 'password' => '1234567' // 7 characters ]); - + // Assert failure response $response->assertStatus(200); $result = json_decode($response->getJSON(), true); $this->assertFalse($result['success'], 'Password with 7 chars should be rejected'); $this->assertEquals(-1, $result['id']); - + // Verify password was not changed $employee = model(Employee::class); $admin = $employee->get_info(1); - $this->assertTrue(password_verify('pointofsale', $admin->password), + $this->assertTrue(password_verify('pointofsale', $admin->password), 'Password should not have been changed'); } - + /** * Test password validation accepts passwords with exactly 8 characters - * + * * @return void */ public function testPasswordMinLength_Accepts8Characters(): void { $this->resetSession(); - + // Change password to exactly 8 characters $response = $this->post('/home/save', [ 'employee_id' => 1, @@ -79,19 +86,19 @@ class HomeTest extends CIUnitTestCase 'current_password' => 'pointofsale', 'password' => 'pa$$w0rd' // Exactly 8 characters including special chars ]); - + // Assert success response $response->assertStatus(200); $result = json_decode($response->getJSON(), true); $this->assertTrue($result['success'], 'Password with 8 chars should be accepted'); $this->assertEquals(1, $result['id']); - + // Verify password was changed $employee = model(Employee::class); $admin = $employee->get_info(1); - $this->assertTrue(password_verify('pa$$w0rd', $admin->password), + $this->assertTrue(password_verify('pa$$w0rd', $admin->password), 'Password with 8 chars should be accepted'); - + // Restore original password $employee->change_password([ 'username' => 'admin', @@ -99,16 +106,16 @@ class HomeTest extends CIUnitTestCase 'hash_version' => 2 ], 1); } - + /** * Test password validation rejects empty password - * + * * @return void */ public function testPasswordMinLength_RejectsEmptyString(): void { $this->resetSession(); - + // Attempt to set empty password $response = $this->post('/home/save', [ 'employee_id' => 1, @@ -116,65 +123,75 @@ class HomeTest extends CIUnitTestCase 'current_password' => 'pointofsale', 'password' => '' // Empty string ]); - + $response->assertStatus(200); $result = json_decode($response->getJSON(), true); $this->assertFalse($result['success'], 'Empty password should be rejected'); $this->assertEquals(-1, $result['id']); } - + /** - * Test password validation rejects whitespace-only passwords - * + * Password validation is a raw strlen() check with no whitespace + * handling, so a password consisting entirely of spaces still counts + * toward the length minimum. + * * @return void */ - public function testPasswordMinLength_RejectsWhitespaceOnly(): void + public function testPasswordMinLength_WhitespaceOnlyPasswordCountsTowardLength(): void { $this->resetSession(); - - // Attempt to set password as only whitespace - $response = $this->post('/home/save', [ - 'employee_id' => 1, - 'username' => 'admin', - 'current_password' => 'pointofsale', - 'password' => ' ' // 8 spaces but empty actual password - ]); - - $response->assertStatus(200); - $result = json_decode($response->getJSON(), true); - $this->assertFalse($result['success'], 'Whitespace only password should be rejected'); - $this->assertEquals(-1, $result['id']); + + try { + $response = $this->post('/home/save', [ + 'employee_id' => 1, + 'username' => 'admin', + 'current_password' => 'pointofsale', + 'password' => ' ' // 8 spaces: exactly meets the byte-length minimum + ]); + + $response->assertStatus(200); + $result = json_decode($response->getJSON(), true); + $this->assertTrue($result['success'], 'strlen()-based validation accepts 8 spaces as meeting the minimum length'); + } finally { + // Restore original password + $employee = model(Employee::class); + $employee->change_password([ + 'username' => 'admin', + 'password' => password_hash('pointofsale', PASSWORD_DEFAULT), + 'hash_version' => 2 + ], 1); + } } - + /** * Test password validation accepts passwords with special characters * as long as they meet minimum length - * + * * @return void */ public function testPasswordMinLength_AcceptsSpecialCharacters(): void { $this->resetSession(); - + $specialPassword = 'Str0ng!@#$'; // 11 characters with special chars - + $response = $this->post('/home/save', [ 'employee_id' => 1, 'username' => 'admin', 'current_password' => 'pointofsale', 'password' => $specialPassword ]); - + $response->assertStatus(200); $result = json_decode($response->getJSON(), true); $this->assertTrue($result['success'], 'Password with special chars should be accepted'); $this->assertEquals(1, $result['id']); - + // Verify password works $employee = model(Employee::class); $admin = $employee->get_info(1); $this->assertTrue(password_verify($specialPassword, $admin->password)); - + // Restore original password $employee->change_password([ 'username' => 'admin', @@ -182,20 +199,20 @@ class HomeTest extends CIUnitTestCase 'hash_version' => 2 ], 1); } - + /** * Regression test: Verify previous vulnerable behavior is fixed - * + * * Before fix: 1-character passwords like "a" were accepted because * code checked len(hashed_password) which is always 60 for bcrypt * After fix: Raw password is validated before hashing - * + * * @return void */ public function testPasswordMinLength_RejectsPreviousBehavior(): void { $this->resetSession(); - + // Attempt the previously vulnerable case: single character password $response = $this->post('/home/save', [ 'employee_id' => 1, @@ -203,223 +220,228 @@ class HomeTest extends CIUnitTestCase 'current_password' => 'pointofsale', 'password' => 'a' // Previously allowed due to bug ]); - + // This should now fail $response->assertStatus(200); $result = json_decode($response->getJSON(), true); $this->assertFalse($result['success'], 'Single character password should be rejected (CVE fix)'); $this->assertEquals(-1, $result['id']); - + // Verify password was NOT changed $employee = model(Employee::class); $admin = $employee->get_info(1); - $this->assertTrue(password_verify('pointofsale', $admin->password), + $this->assertTrue(password_verify('pointofsale', $admin->password), 'Single character password should be rejected (CVE fix)'); } - + /** * Helper method to reset session - * + * * @return void */ protected function resetSession(): void { - $session = Services::session(); - $session->destroy(); - $session->set('person_id', 1); // Admin user + $this->withSession(['person_id' => 1]); // Admin user } - + /** * Create a non-admin employee for testing - * + * * @param array $overrides Optional overrides for username, email, password, etc. * @return int The person_id of the created employee */ protected function createNonAdminEmployee(array $overrides = []): int { + $uniqueSuffix = uniqid(); + $personData = [ 'first_name' => $overrides['first_name'] ?? 'NonAdmin', 'last_name' => $overrides['last_name'] ?? 'User', - 'email' => $overrides['email'] ?? 'nonadmin@test.com', + 'email' => $overrides['email'] ?? "nonadmin{$uniqueSuffix}@test.com", 'phone_number' => $overrides['phone_number'] ?? '555-1234' ]; - + $employeeData = [ - 'username' => $overrides['username'] ?? 'nonadmin', + 'username' => $overrides['username'] ?? "nonadmin{$uniqueSuffix}", 'password' => password_hash($overrides['password'] ?? 'password123', PASSWORD_DEFAULT), 'hash_version' => 2, 'language_code' => 'en', 'language' => 'english' ]; - - $grantsData = [ + + $grantsData = $overrides['grants'] ?? [ + ['permission_id' => 'home', 'menu_group' => 'home'], ['permission_id' => 'customers', 'menu_group' => 'home'], ['permission_id' => 'sales', 'menu_group' => 'home'] ]; - + $employeeModel = model(Employee::class); - $employeeModel->save_employee($personData, $employeeData, $grantsData, NEW_ENTRY); - - return $employeeModel->get_found_rows(''); + $saved = $employeeModel->save_employee($personData, $employeeData, $grantsData, NEW_ENTRY); + + if (!$saved || empty($personData['person_id'])) { + throw new RuntimeException('Failed to create non-admin employee for testing'); + } + + return (int) $personData['person_id']; } - + /** * Login as a specific user - * + * * @param int $personId * @return void */ protected function loginAs(int $personId): void { - $session = Services::session(); - $session->destroy(); - $session->set('person_id', $personId); - $session->set('menu_group', 'home'); + $this->withSession([ + 'person_id' => $personId, + 'menu_group' => 'home', + ]); } - + // ========== BOLA Authorization Tests ========== - + /** * Test non-admin cannot view admin password change form * BOLA vulnerability fix: GHSA-q58g-gg7v-f9rf - * + * * @return void */ public function testNonAdminCannotViewAdminPasswordForm(): void { $nonAdminId = $this->createNonAdminEmployee(); $this->loginAs($nonAdminId); - + $response = $this->get('/home/changePassword/1'); - + $response->assertStatus(403); } - + /** * Test non-admin cannot change admin password * BOLA vulnerability fix: GHSA-q58g-gg7v-f9rf - * + * * @return void */ public function testNonAdminCannotChangeAdminPassword(): void { $nonAdminId = $this->createNonAdminEmployee(); $this->loginAs($nonAdminId); - + $response = $this->post('/home/save/1', [ 'username' => 'admin', 'current_password' => 'pointofsale', 'password' => 'hacked123' ]); - + $response->assertStatus(403); $result = json_decode($response->getJSON(), true); $this->assertFalse($result['success']); - + // Verify admin password was NOT changed $employee = model(Employee::class); $admin = $employee->get_info(1); - $this->assertTrue(password_verify('pointofsale', $admin->password), + $this->assertTrue(password_verify('pointofsale', $admin->password), 'Admin password should not have been changed by non-admin'); } - + /** * Test user can view their own password change form - * + * * @return void */ public function testUserCanViewOwnPasswordForm(): void { $nonAdminId = $this->createNonAdminEmployee(); $this->loginAs($nonAdminId); - + $response = $this->get('/home/changePassword/' . $nonAdminId); - + $response->assertStatus(200); $response->assertSee('nonadmin'); // Username should be visible } - + /** * Test user can change their own password - * + * * @return void */ public function testUserCanChangeOwnPassword(): void { - $nonAdminId = $this->createNonAdminEmployee(); + $nonAdminId = $this->createNonAdminEmployee(['username' => 'nonadminchangeown']); $this->loginAs($nonAdminId); - + $response = $this->post('/home/save/' . $nonAdminId, [ - 'username' => 'nonadmin', + 'username' => 'nonadminchangeown', 'current_password' => 'password123', 'password' => 'newpassword123' ]); - + $response->assertStatus(200); $result = json_decode($response->getJSON(), true); $this->assertTrue($result['success']); - + // Verify password was changed $employee = model(Employee::class); $user = $employee->get_info($nonAdminId); $this->assertTrue(password_verify('newpassword123', $user->password)); } - + /** * Test admin can view any user's password form - * + * * @return void */ public function testAdminCanViewAnyPasswordForm(): void { $nonAdminId = $this->createNonAdminEmployee(); $this->resetSession(); // Login as admin - + $response = $this->get('/home/changePassword/' . $nonAdminId); - + $response->assertStatus(200); $response->assertSee('nonadmin'); } - + /** * Test admin can change any user's password - * + * * @return void */ public function testAdminCanChangeAnyPassword(): void { - $nonAdminId = $this->createNonAdminEmployee(); + $nonAdminId = $this->createNonAdminEmployee(['username' => 'nonadminadminchange']); $this->resetSession(); // Login as admin - + $response = $this->post('/home/save/' . $nonAdminId, [ - 'username' => 'nonadmin', + 'username' => 'nonadminadminchange', 'current_password' => 'password123', 'password' => 'adminset123' ]); - + $response->assertStatus(200); $result = json_decode($response->getJSON(), true); $this->assertTrue($result['success']); - + // Verify password was changed $employee = model(Employee::class); $user = $employee->get_info($nonAdminId); $this->assertTrue(password_verify('adminset123', $user->password)); } - + /** * Test default employee_id parameter uses current user - * + * * @return void */ public function testDefaultEmployeeIdUsesCurrentUser(): void { $nonAdminId = $this->createNonAdminEmployee(); $this->loginAs($nonAdminId); - + // Calling without employee_id should use current user $response = $this->get('/home/changePassword'); - + $response->assertStatus(200); $response->assertSee('nonadmin'); } @@ -427,56 +449,102 @@ class HomeTest extends CIUnitTestCase /** * Test non-admin cannot view another non-admin's password form * IDOR vulnerability fix: GHSA-mcc2-8rp2-q6ch - * + * * @return void */ public function testNonAdminCannotViewOtherNonAdminPasswordForm(): void { $nonAdminId1 = $this->createNonAdminEmployee(); $this->loginAs($nonAdminId1); - + $otherUserId = $this->createNonAdminEmployee([ 'username' => 'otheruser', 'email' => 'other@test.com', 'password' => 'password456' ]); - + $response = $this->get('/home/changePassword/' . $otherUserId); - + $response->assertStatus(403); } /** * Test non-admin cannot change another non-admin's password * IDOR vulnerability fix: GHSA-mcc2-8rp2-q6ch - * + * * @return void */ public function testNonAdminCannotChangeOtherNonAdminPassword(): void { $nonAdminId1 = $this->createNonAdminEmployee(); $this->loginAs($nonAdminId1); - + $victimId = $this->createNonAdminEmployee([ 'username' => 'victimuser', 'email' => 'victim@test.com', 'password' => 'victimpass123' ]); - + $response = $this->post('/home/save/' . $victimId, [ 'username' => 'victimuser', 'current_password' => 'victimpass123', 'password' => 'hacked123456' ]); - + $response->assertStatus(403); $result = json_decode($response->getJSON(), true); $this->assertFalse($result['success']); - + // Verify victim's password was NOT changed $employeeModel = model(Employee::class); $victim = $employeeModel->get_info($victimId); - $this->assertTrue(password_verify('victimpass123', $victim->password), + $this->assertTrue(password_verify('victimpass123', $victim->password), 'Non-admin should not be able to change another non-admin password'); } -} \ No newline at end of file + + /** + * Regression test for GHSA-9gr6-4mm4-4wrq: Home::__construct() previously + * read the raw (single-decoded) URI segment to decide whether to skip + * Secure_Controller's module-grant check for 'logout'. A route whose + * double-decoded method name resolves to 'logout' must still be treated + * as logout consistently - using the router's fully-resolved method name + * removes any single-vs-double-decode mismatch as an attack surface. + * + * @return void + */ + public function testLogoutStillBypassesGrantCheckAfterFix(): void + { + $nonAdminId = $this->createNonAdminEmployee([ + 'username' => 'logoutnograntuser', + 'email' => 'logoutnograntuser@test.com', + 'grants' => [] + ]); + $this->loginAs($nonAdminId); + + $response = $this->get('/home/logout'); + + $response->assertRedirectTo('login'); + } + + /** + * A non-'logout' Home method must still enforce Secure_Controller's + * module-grant check (i.e. parent::__construct() is not skipped) for a + * logged-in employee with no 'home' grant. + * + * @return void + */ + public function testNonLogoutMethodStillEnforcesModuleGrantCheck(): void + { + $nonAdminId = $this->createNonAdminEmployee([ + 'username' => 'nogranthome', + 'email' => 'nogranthome@test.com', + 'grants' => [] + ]); + $this->loginAs($nonAdminId); + + $response = $this->get('/home/changePassword/' . $nonAdminId); + + $response->assertRedirect(); + $this->assertStringContainsString('no_access', $response->getRedirectUrl()); + } +} diff --git a/tests/Controllers/ReportsControllerTest.php b/tests/Controllers/ReportsControllerTest.php index 584b81b5e..7960f508d 100644 --- a/tests/Controllers/ReportsControllerTest.php +++ b/tests/Controllers/ReportsControllerTest.php @@ -3,55 +3,211 @@ namespace Tests\Controllers; use CodeIgniter\Test\CIUnitTestCase; +use CodeIgniter\Test\DatabaseTestTrait; +use CodeIgniter\Test\FeatureTestTrait; +use App\Database\Seeds\TestDatabaseBootstrapSeeder; +use App\Models\Employee; +use Config\OSPOS; +/** + * Regression tests for GHSA-9gr6-4mm4-4wrq + * + * Reports::__construct() previously derived the report method name from + * $request->getUri()->getSegment(2), which CodeIgniter decodes once, while + * the router decodes the same path a second time before dispatch. Encoding + * the report name's underscore as %255F meant the constructor saw no + * underscore, skipped the has_grant() check entirely, and the router still + * dispatched to the real (double-decoded) method — letting any authenticated + * employee read reports they had no grant for. + */ class ReportsControllerTest extends CIUnitTestCase { - public function testRedirectPatternUsesHeaderAndExit(): void + use DatabaseTestTrait; + use FeatureTestTrait; + + protected $migrate = true; + protected $migrateOnce = true; + protected $refresh = false; + protected $namespace = null; + + private static bool $doneBootstrap = false; + + /** + * Set up test environment + */ + protected function setUp(): void { - // This test validates that the Reports submodule permission check - // uses the correct redirect pattern in constructors. - // - // The original bug: redirect() returns a RedirectResponse object - // but the constructor doesn't return it, so it gets discarded. - // - // The fix: Use header('Location: ' . base_url(...)); exit(); - // which properly terminates execution and redirects. - - $constructorCode = file_get_contents(APPPATH . 'Controllers/Reports.php'); - - // Verify the fix pattern is present - $this->assertStringContainsString("header('Location: ' . base_url(", $constructorCode); - $this->assertStringContainsString('exit();', $constructorCode); - - // Verify the buggy pattern is NOT present in the permission check area - // (Note: redirect() may appear elsewhere in the codebase for valid uses) - $lines = explode("\n", $constructorCode); - $inConstructor = false; - foreach ($lines as $line) { - if (strpos($line, 'public function __construct') !== false) { - $inConstructor = true; - } - if ($inConstructor && strpos($line, '}') !== false && trim($line) === '}') { - break; - } - if ($inConstructor && strpos($line, "redirect('no_access") !== false) { - $this->fail('Old redirect() pattern found in constructor - should use header() + exit()'); - } + if (self::$doneBootstrap === false) { + TestDatabaseBootstrapSeeder::reset(); + + self::$doneBootstrap = true; } - - $this->assertTrue(true, 'Permission check pattern validated'); + + parent::setUp(); + + config(OSPOS::class)->update_settings(); } - public function testSubmodulePermissionCheckOccursBeforeControllerInitialization(): void + /** + * Create a non-admin employee for testing + * + * @param array $overrides + * @return int + */ + protected function createNonAdminEmployee(array $overrides = []): int { - // Verify that permission checks happen in the constructor - // before any controller methods can execute - - $constructorCode = file_get_contents(APPPATH . 'Controllers/Reports.php'); - - // Verify the permission check is in the constructor - $this->assertStringContainsString('has_grant', $constructorCode); - $this->assertStringContainsString('reports_', $constructorCode); - $this->assertStringContainsString('submodule_id', $constructorCode); + $uniqueSuffix = uniqid(); + + $personData = [ + 'first_name' => $overrides['first_name'] ?? 'NonAdmin', + 'last_name' => $overrides['last_name'] ?? 'User', + 'email' => $overrides['email'] ?? "nonadmin{$uniqueSuffix}@test.com", + 'phone_number' => $overrides['phone_number'] ?? '555-1234' + ]; + + $employeeData = [ + 'username' => $overrides['username'] ?? "nonadmin{$uniqueSuffix}", + 'password' => password_hash($overrides['password'] ?? 'password123', PASSWORD_DEFAULT), + 'hash_version' => 2, + 'language_code' => 'en', + 'language' => 'english' + ]; + + $grantsData = $overrides['grants'] ?? [ + ['permission_id' => 'customers', 'menu_group' => 'home'], + ['permission_id' => 'sales', 'menu_group' => 'home'] + ]; + + $employeeModel = model(Employee::class); + $saved = $employeeModel->save_employee($personData, $employeeData, $grantsData, NEW_ENTRY); + + $this->assertTrue($saved, 'Failed to save non-admin employee fixture.'); + $this->assertArrayHasKey('person_id', $personData, 'Saved employee fixture missing person_id.'); + + return (int) $personData['person_id']; } -} \ No newline at end of file + + /** + * Log in as the given employee + * + * @param int $personId + * @return void + */ + protected function loginAs(int $personId): void + { + $this->withSession([ + 'person_id' => $personId, + 'menu_group' => 'home', + ]); + } + + /** + * A non-admin employee with no reports_customers grant must be denied + * access to the summary_customers report. + * + * @return void + */ + public function testNonAdminWithoutReportGrantIsDeniedSummaryCustomers(): void + { + $nonAdminId = $this->createNonAdminEmployee([ + 'grants' => [ + ['permission_id' => 'reports_sales', 'menu_group' => 'home'] + ] + ]); + $this->loginAs($nonAdminId); + + $response = $this->get('/reports/summary_customers'); + + $response->assertRedirect(); + $this->assertStringContainsString('no_access', $response->getRedirectUrl()); + } + + /** + * Regression test for the double-URL-encoding bypass itself: replacing + * the underscore with %255F must not change the outcome versus the + * plain request in testNonAdminWithoutReportGrantIsDeniedSummaryCustomers(). + * + * @return void + */ + public function testDoubleEncodedUnderscoreCannotBypassSummaryCustomersGrantCheck(): void + { + $nonAdminId = $this->createNonAdminEmployee([ + 'grants' => [ + ['permission_id' => 'reports_sales', 'menu_group' => 'home'] + ] + ]); + $this->loginAs($nonAdminId); + + $response = $this->get('/reports/summary%255Fcustomers'); + + $response->assertRedirect(); + $this->assertStringContainsString('no_access', $response->getRedirectUrl()); + } + + /** + * Same bypass attempt against a different report prefix, to confirm the + * fix isn't narrowly specific to the summary_ prefix's regex path. + * + * @return void + */ + public function testDoubleEncodedUnderscoreCannotBypassDetailedSalesGrantCheck(): void + { + $nonAdminId = $this->createNonAdminEmployee([ + 'grants' => [ + ['permission_id' => 'reports_customers', 'menu_group' => 'home'] + ] + ]); + $this->loginAs($nonAdminId); + + $response = $this->get('/reports/detailed%255Fsales'); + + $response->assertRedirect(); + $this->assertStringContainsString('no_access', $response->getRedirectUrl()); + } + + /** + * An employee with the reports_customers grant must be able to access + * the summary_customers report. + * + * @return void + */ + public function testEmployeeWithReportGrantCanAccessSummaryCustomers(): void + { + $employeeId = $this->createNonAdminEmployee([ + 'username' => 'reportviewer', + 'email' => 'reportviewer@test.com', + 'grants' => [ + ['permission_id' => 'reports', 'menu_group' => 'home'], + ['permission_id' => 'reports_customers', 'menu_group' => 'home'] + ] + ]); + $this->loginAs($employeeId); + + $response = $this->get('/reports/summary_customers'); + + $response->assertStatus(200); + } + + /** + * An employee with the base reports grant plus a submodule grant must be + * able to access the base /reports listing route (no submodule id derivable). + * + * @return void + */ + public function testEmployeeWithReportsGrantCanAccessBaseReportsIndex(): void + { + $employeeId = $this->createNonAdminEmployee([ + 'username' => 'reportsindexviewer', + 'email' => 'reportsindexviewer@test.com', + 'grants' => [ + ['permission_id' => 'reports', 'menu_group' => 'home'], + ['permission_id' => 'reports_customers', 'menu_group' => 'home'] + ] + ]); + $this->loginAs($employeeId); + + $response = $this->get('/reports'); + + $response->assertStatus(200); + } +}