Compare commits

..

10 commits

Author SHA1 Message Date
HendrikRauh
96627adf7b Update .gitignore and add flake.nix patching script for Flutter version management
Some checks failed
Android / build (push) Has been cancelled
CI / test (push) Has been cancelled
iOS / build (push) Has been cancelled
2026-01-10 14:16:05 +01:00
HendrikRauh
0546fba37f Update NOTE.md to add troubleshooting section for Flutter Java version issues
Some checks are pending
Android / build (push) Waiting to run
CI / test (push) Waiting to run
iOS / build (push) Waiting to run
2026-01-10 00:37:58 +01:00
HendrikRauh
5f623c0594 Add .envrc for Nix environment setup 2026-01-09 23:13:28 +01:00
Oliver
bf19ace3e9
New Crowdin updates (#742)
* New translations app_en.arb (Turkish)

* New translations app_en.arb (Persian)

* New translations app_en.arb (Turkish)

* New translations app_en.arb (Turkish)

* New translations app_en.arb (Turkish)

* New translations app_en.arb (Spanish, Mexico)

* New translations app_en.arb (Turkish)

* New translations app_en.arb (Chinese Simplified)

* New translations app_en.arb (Turkish)

* New translations app_en.arb (Danish)

* New translations app_en.arb (Danish)

* New translations app_en.arb (Danish)

* New translations app_en.arb (Turkish)

* New translations app_en.arb (Polish)

* New translations app_en.arb (Romanian)

* New translations app_en.arb (Romanian)

* New translations app_en.arb (Danish)

* New translations app_en.arb (Romanian)
2026-01-07 10:38:10 +11:00
Oliver
8c15bdafdf
New Crowdin updates (#740)
* New translations app_en.arb (Hungarian)

* New translations app_en.arb (Hungarian)

* New translations app_en.arb (Dutch)

* New translations app_en.arb (Dutch)

* New translations app_en.arb (Swedish)

* New translations app_en.arb (Ukrainian)

* New translations app_en.arb (Ukrainian)

* New translations app_en.arb (German)

* New translations app_en.arb (Turkish)

* New translations app_en.arb (Italian)

* New translations app_en.arb (Turkish)

* New translations app_en.arb (Turkish)

* New translations app_en.arb (Romanian)
2025-12-19 09:52:38 +11:00
Oliver
571ff1880f
New translations app_en.arb (Chinese Simplified) (#739) 2025-12-06 11:24:17 +11:00
Oliver
864c3eea76
Parameters refactor (#738)
* refactor attachment code into its own file

* Add getters

* Remove custom models for each type of attachment

* Refactor existing widgets

* Fix double camera open bug

* Add check for modern parameter API

* Add generic parameter type

* Remove old code

* Remove dead code

* Refactor previous widget

* Remove unused imports

* Refactor common code

* format

* Update release notes

* Helper func to render parameters list tile

* Display parameters on part page

* parameters for company

* Supplier more model types:

- ManufacturerPart
- SupplierPart
- PurchaseOrder
- SalesOrder

* dart format

* Fix image prefix

* Remove unused import

* Adjust API version
2025-12-04 18:34:05 +11:00
Oliver
346b1a150f
Attachments refactor (#737)
* refactor attachment code into its own file

* Add getters

* Remove custom models for each type of attachment

* Refactor existing widgets

* Fix double camera open bug

* Remove dead code

* Remove unused imports

* Refactor common code

* format

* Update release notes
2025-11-28 23:53:10 +11:00
Oliver
bb10117f01
New Crowdin updates (#736)
* New translations app_en.arb (Czech)

* New translations app_en.arb (Russian)
2025-11-28 20:01:55 +11:00
Oliver
0f31638bdc
[CI] Build Fixes (#734)
* precache for ios build

* build android on push too

* try without cache
2025-11-24 09:10:59 +11:00
45 changed files with 2063 additions and 1607 deletions

14
.envrc Normal file
View file

@ -0,0 +1,14 @@
# Check if nix is available
if command -v nix &> /dev/null; then
use flake
echo "✅ Nix development environment loaded"
else
# Nix is not available - show instructions for non-Nix users
echo "⚠️ Nix not detected. Please ensure the following are installed manually:"
echo " - Java JDK 17"
echo " - Python 3 with invoke package"
echo " - Android SDK"
echo " - FVM (Flutter Version Management)"
echo "💡 To use Nix: Install from https://nixos.org/download.html"
fi

View file

@ -3,6 +3,9 @@
name: Android name: Android
on: on:
pull_request:
branches:
- master
push: push:
branches: branches:
- master - master
@ -30,7 +33,7 @@ jobs:
with: with:
flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }} flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }}
channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }} channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }}
cache: true cache: false
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:"
pub-cache-key: "flutter-pub:os:-:channel:-:version:-:arch:-:hash:" pub-cache-key: "flutter-pub:os:-:channel:-:version:-:arch:-:hash:"

View file

@ -3,6 +3,9 @@
name: iOS name: iOS
on: on:
pull_request:
branches:
- master
push: push:
branches: branches:
- master - master
@ -33,7 +36,7 @@ jobs:
with: with:
flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }} flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }}
channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }} channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }}
cache: true cache: false
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:" cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:"
pub-cache-key: "flutter-pub:os:-:channel:-:version:-:arch:-:hash:" pub-cache-key: "flutter-pub:os:-:channel:-:version:-:arch:-:hash:"
@ -49,6 +52,7 @@ jobs:
dart pub global activate fvm dart pub global activate fvm
fvm install fvm install
fvm flutter pub get fvm flutter pub get
fvm flutter precache --ios
cd ios cd ios
pod repo update pod repo update
pod install pod install

2
.gitignore vendored
View file

@ -8,6 +8,8 @@
.buildlog/ .buildlog/
.history .history
.svn/ .svn/
.direnv
flake.nix.bak
coverage/* coverage/*

47
NOTE.md Normal file
View file

@ -0,0 +1,47 @@
## Codeänderung
- android/app/build.gradle: compileSdkVersion/targetSdkVersion auf 36 angehoben,
weil mehrere Plugins SDK 36 voraussetzen.
## Devbuild (out of the box)
```sh
invoke translate
flutter build apk --debug
```
## Releasebuild (benötigt Signatur; interaktiv)
Signatur erstellen; Passwörter merken!:
```sh
keytool -genkey -v -keystore ~/inventree-release-key.jks \
-keyalg RSA -keysize 2048 \
-alias inventree
```
android/key.properties anlegen mit:
```properties
storePassword=DEIN_STORE_PASSWORD
keyPassword=DEIN_KEY_PASSWORD
keyAlias=inventree
storeFile=/.../inventree-release-key.jks
```
```sh
invoke translate
fvm flutter build apk --release --no-tree-shake-icons
```
## Pipe
1. nix installieren (für flake nutzung) (optional aber dann reproduzierbar)
2. flake anwenden
## Problems that occurred
### Flutter Java Version Problem
- unset flutter jdk-dir (`flutter config --jdk-dir=""`)
- a specified java version in the flutter config leads to a java

View file

@ -1,3 +1,8 @@
### x.xx.x - Month Year
---
- Fixes bug which launched camera twice when uploading an attachment
### 0.21.1 - November 2025 ### 0.21.1 - November 2025
--- ---

78
flake.lock generated Normal file
View file

@ -0,0 +1,78 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1767892417,
"narHash": "sha256-dhhvQY67aboBk8b0/u0XB6vwHdgbROZT3fJAjyNh5Ww=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-flutter": {
"locked": {
"lastModified": 1751285371,
"narHash": "sha256-/hDU+2AUeFFu5qGHO/UyFMc4UG/x5Cw5uXO36KGTk6c=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b9c03fbbaf84d85bb28eee530c7e9edc4021ca1b",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b9c03fbbaf84d85bb28eee530c7e9edc4021ca1b",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs",
"nixpkgs-flutter": "nixpkgs-flutter"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

137
flake.nix Normal file
View file

@ -0,0 +1,137 @@
{
description = "InvenTree App Development Environment - CTBK";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
nixpkgs-flutter.url = "github:NixOS/nixpkgs/b9c03fbbaf84d85bb28eee530c7e9edc4021ca1b";
};
outputs =
{
self,
nixpkgs,
flake-utils,
nixpkgs-flutter,
}:
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = import nixpkgs {
inherit system;
config = {
allowUnfree = true;
android_sdk.accept_license = true;
};
overlays = [
(final: prev: {
flutter-pkg = import (self.inputs.nixpkgs-flutter) { inherit system; };
})
];
};
androidSdk =
(pkgs.androidenv.composeAndroidPackages {
platformVersions = [
"36"
"35"
"34"
];
buildToolsVersions = [
"36.0.0"
"34.0.0"
];
includeEmulator = true;
includeNDK = true;
ndkVersions = [ "26.1.10909125" ];
cmakeVersions = [
"3.31.6"
"3.22.1"
];
}).androidsdk;
# FVM wrapper for NixOS - maps fvm commands to Nix-managed Flutter
fvm-wrapper = pkgs.writeShellScriptBin "fvm" ''
case "$1" in
use)
# 'fvm use' is a no-op on NixOS since Flutter is version-managed by Nix
echo " Using Flutter from Nix ($(flutter --version | head -n1))"
exit 0
;;
flutter)
# 'fvm flutter ...' becomes 'flutter ...'
shift
exec flutter "$@"
;;
*)
echo "fvm wrapper: command '$1' not implemented (using Nix-managed Flutter)" >&2
exit 1
;;
esac
'';
in
{
devShells.default = pkgs.mkShell {
buildInputs =
with pkgs;
[
# Mobile development
pkgs.flutter-pkg.flutter
fvm-wrapper
jdk17
# Build tools
android-tools
gradle
# Python & task runner
python3
python3Packages.invoke
jq
# System dependencies for Flutter on Linux
git
curl
unzip
which
]
++ lib.optionals stdenv.isLinux [
gtk3
glib
pcre
libepoxy
libxkbcommon
dbus
at-spi2-core
file
];
shellHook = ''
export ANDROID_HOME="${androidSdk}/libexec/android-sdk"
export ANDROID_SDK_ROOT="$ANDROID_HOME"
export PATH="$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools/bin:$PATH"
export JAVA_HOME="${pkgs.jdk17}"
export GRADLE_OPTS="-Dorg.gradle.project.android.aapt2FromMavenOverride=$ANDROID_HOME/build-tools/34.0.0/aapt2"
echo "🚀 InvenTree App Development Environment - CTBK"
echo "📦 Tools: Flutter, FVM, JDK17, Android SDK"
echo "📋 Run: invoke android # Build Android app"
'';
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath (
with pkgs;
[
gtk3
glib
pcre
libepoxy
libxkbcommon
dbus
at-spi2-core
]
);
};
}
);
}

View file

@ -353,6 +353,10 @@ class InvenTreeAPI {
// Supports separate search against "supplier" / "customer" / "manufacturer" // Supports separate search against "supplier" / "customer" / "manufacturer"
bool get supportsSplitCompanySearch => apiVersion >= 315; bool get supportsSplitCompanySearch => apiVersion >= 315;
// Does the server support the "modern" (consolidated) parameter API?
// Ref: https://github.com/inventree/InvenTree/pull/10699
bool get supportsModernParameters => apiVersion >= 429;
// Cached list of plugins (refreshed when we connect to the server) // Cached list of plugins (refreshed when we connect to the server)
List<InvenTreePlugin> _plugins = []; List<InvenTreePlugin> _plugins = [];

View file

@ -0,0 +1,176 @@
import "dart:io";
import "package:flutter/cupertino.dart";
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:inventree/api.dart";
import "package:inventree/inventree/model.dart";
import "package:inventree/inventree/sentry.dart";
import "package:inventree/l10.dart";
import "package:inventree/widget/fields.dart";
import "package:inventree/widget/snacks.dart";
import "package:path/path.dart" as path;
class InvenTreeAttachment extends InvenTreeModel {
// Class representing an "attachment" file
InvenTreeAttachment() : super();
InvenTreeAttachment.fromJson(Map<String, dynamic> json)
: super.fromJson(json);
@override
InvenTreeAttachment createFromJson(Map<String, dynamic> json) =>
InvenTreeAttachment.fromJson(json);
@override
String get URL => "attachment/";
@override
Map<String, Map<String, dynamic>> formFields() {
Map<String, Map<String, dynamic>> fields = {"link": {}, "comment": {}};
if (!hasLink) {
fields.remove("link");
}
return fields;
}
// The model type of the instance this attachment is associated with
String get modelType => getString("model_type");
// The ID of the instance this attachment is associated with
int get modelId => getInt("model_id");
String get attachment => getString("attachment");
bool get hasAttachment => attachment.isNotEmpty;
// Return the filename of the attachment
String get filename {
return attachment.split("/").last;
}
IconData get icon {
String fn = filename.toLowerCase();
if (fn.endsWith(".pdf")) {
return TablerIcons.file_type_pdf;
} else if (fn.endsWith(".csv")) {
return TablerIcons.file_type_csv;
} else if (fn.endsWith(".doc") || fn.endsWith(".docx")) {
return TablerIcons.file_type_doc;
} else if (fn.endsWith(".xls") || fn.endsWith(".xlsx")) {
return TablerIcons.file_type_xls;
}
// Image formats
final List<String> img_formats = [".png", ".jpg", ".gif", ".bmp", ".svg"];
for (String fmt in img_formats) {
if (fn.endsWith(fmt)) {
return TablerIcons.file_type_jpg;
}
}
return TablerIcons.file;
}
String get comment => getString("comment");
DateTime? get uploadDate {
if (jsondata.containsKey("upload_date")) {
return DateTime.tryParse((jsondata["upload_date"] ?? "") as String);
} else {
return null;
}
}
// Return a count of how many attachments exist against the specified model ID
Future<int> countAttachments(String modelType, int modelId) async {
Map<String, String> filters = {};
if (!api.supportsModernAttachments) {
return 0;
}
filters["model_type"] = modelType;
filters["model_id"] = modelId.toString();
return count(filters: filters);
}
Future<bool> uploadAttachment(
File attachment,
String modelType,
int modelId, {
String comment = "",
Map<String, String> fields = const {},
}) async {
// Ensure that the correct reference field is set
Map<String, String> data = Map<String, String>.from(fields);
String url = URL;
if (comment.isNotEmpty) {
data["comment"] = comment;
}
data["model_type"] = modelType;
data["model_id"] = modelId.toString();
final APIResponse response = await InvenTreeAPI().uploadFile(
url,
attachment,
method: "POST",
name: "attachment",
fields: data,
);
return response.successful();
}
Future<bool> uploadImage(
String modelType,
int modelId, {
String prefix = "InvenTree",
}) async {
bool result = false;
await FilePickerDialog.pickImageFromCamera().then((File? file) {
if (file != null) {
String dir = path.dirname(file.path);
String ext = path.extension(file.path);
String now = DateTime.now().toIso8601String().replaceAll(":", "-");
// Rename the file with a unique name
String filename = "${dir}/${prefix}_image_${now}${ext}";
try {
return file.rename(filename).then((File renamed) {
return uploadAttachment(renamed, modelType, modelId).then((
success,
) {
result = success;
showSnackIcon(
result ? L10().imageUploadSuccess : L10().imageUploadFailure,
success: result,
);
});
});
} catch (error, stackTrace) {
sentryReportError("uploadImage", error, stackTrace);
showSnackIcon(L10().imageUploadFailure, success: false);
}
}
});
return result;
}
/*
* Download this attachment file
*/
Future<void> downloadAttachment() async {
await InvenTreeAPI().downloadFile(attachment);
}
}

View file

@ -111,31 +111,6 @@ class InvenTreeCompany extends InvenTreeModel {
InvenTreeCompany.fromJson(json); InvenTreeCompany.fromJson(json);
} }
/*
* Class representing an attachment file against a Company object
*/
class InvenTreeCompanyAttachment extends InvenTreeAttachment {
InvenTreeCompanyAttachment() : super();
InvenTreeCompanyAttachment.fromJson(Map<String, dynamic> json)
: super.fromJson(json);
@override
String get REFERENCE_FIELD => "company";
@override
String get REF_MODEL_TYPE => "company";
@override
String get URL => InvenTreeAPI().supportsModernAttachments
? "attachment/"
: "company/attachment/";
@override
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
InvenTreeCompanyAttachment.fromJson(json);
}
/* /*
* The InvenTreeSupplierPart class represents the SupplierPart model in the InvenTree database * The InvenTreeSupplierPart class represents the SupplierPart model in the InvenTree database
*/ */

View file

@ -1,5 +1,4 @@
import "dart:async"; import "dart:async";
import "dart:io";
import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:flutter/material.dart"; import "package:flutter/material.dart";
@ -15,7 +14,6 @@ import "package:inventree/helpers.dart";
import "package:inventree/inventree/sentry.dart"; import "package:inventree/inventree/sentry.dart";
import "package:inventree/widget/dialogs.dart"; import "package:inventree/widget/dialogs.dart";
import "package:inventree/widget/fields.dart";
// Paginated response object // Paginated response object
class InvenTreePageResponse { class InvenTreePageResponse {
@ -934,171 +932,3 @@ class InvenTreeUserSetting extends InvenTreeGlobalSetting {
@override @override
String get URL => "settings/user/"; String get URL => "settings/user/";
} }
class InvenTreeAttachment extends InvenTreeModel {
// Class representing an "attachment" file
InvenTreeAttachment() : super();
InvenTreeAttachment.fromJson(Map<String, dynamic> json)
: super.fromJson(json);
@override
String get URL => "attachment/";
@override
Map<String, Map<String, dynamic>> formFields() {
Map<String, Map<String, dynamic>> fields = {"link": {}, "comment": {}};
if (!hasLink) {
fields.remove("link");
}
return fields;
}
// Override this reference field for any subclasses
// Note: This is used for the *legacy* attachment API
String get REFERENCE_FIELD => "";
// Override this reference field for any subclasses
// Note: This is used for the *modern* attachment API
String get REF_MODEL_TYPE => "";
String get attachment => getString("attachment");
bool get hasAttachment => attachment.isNotEmpty;
// Return the filename of the attachment
String get filename {
return attachment.split("/").last;
}
IconData get icon {
String fn = filename.toLowerCase();
if (fn.endsWith(".pdf")) {
return TablerIcons.file_type_pdf;
} else if (fn.endsWith(".csv")) {
return TablerIcons.file_type_csv;
} else if (fn.endsWith(".doc") || fn.endsWith(".docx")) {
return TablerIcons.file_type_doc;
} else if (fn.endsWith(".xls") || fn.endsWith(".xlsx")) {
return TablerIcons.file_type_xls;
}
// Image formats
final List<String> img_formats = [".png", ".jpg", ".gif", ".bmp", ".svg"];
for (String fmt in img_formats) {
if (fn.endsWith(fmt)) {
return TablerIcons.file_type_jpg;
}
}
return TablerIcons.file;
}
String get comment => getString("comment");
DateTime? get uploadDate {
if (jsondata.containsKey("upload_date")) {
return DateTime.tryParse((jsondata["upload_date"] ?? "") as String);
} else {
return null;
}
}
// Return a count of how many attachments exist against the specified model ID
Future<int> countAttachments(int modelId) {
Map<String, String> filters = {};
if (InvenTreeAPI().supportsModernAttachments) {
filters["model_type"] = REF_MODEL_TYPE;
filters["model_id"] = modelId.toString();
} else {
filters[REFERENCE_FIELD] = modelId.toString();
}
return count(filters: filters);
}
Future<bool> uploadAttachment(
File attachment,
int modelId, {
String comment = "",
Map<String, String> fields = const {},
}) async {
// Ensure that the correct reference field is set
Map<String, String> data = Map<String, String>.from(fields);
String url = URL;
if (comment.isNotEmpty) {
data["comment"] = comment;
}
if (InvenTreeAPI().supportsModernAttachments) {
url = "attachment/";
data["model_id"] = modelId.toString();
data["model_type"] = REF_MODEL_TYPE;
} else {
if (REFERENCE_FIELD.isEmpty) {
sentryReportMessage(
"uploadAttachment called with empty 'REFERENCE_FIELD'",
);
return false;
}
data[REFERENCE_FIELD] = modelId.toString();
}
final APIResponse response = await InvenTreeAPI().uploadFile(
url,
attachment,
method: "POST",
name: "attachment",
fields: data,
);
return response.successful();
}
Future<bool> uploadImage(int modelId, {String prefix = "InvenTree"}) async {
bool result = false;
await FilePickerDialog.pickImageFromCamera().then((File? file) {
if (file != null) {
String dir = path.dirname(file.path);
String ext = path.extension(file.path);
String now = DateTime.now().toIso8601String().replaceAll(":", "-");
// Rename the file with a unique name
String filename = "${dir}/${prefix}_image_${now}${ext}";
try {
file.rename(filename).then((File renamed) {
uploadAttachment(renamed, modelId).then((success) {
result = success;
showSnackIcon(
result ? L10().imageUploadSuccess : L10().imageUploadFailure,
success: result,
);
});
});
} catch (error, stackTrace) {
sentryReportError("uploadImage", error, stackTrace);
showSnackIcon(L10().imageUploadFailure, success: false);
}
}
});
return result;
}
/*
* Download this attachment file
*/
Future<void> downloadAttachment() async {
await InvenTreeAPI().downloadFile(attachment);
}
}

View file

@ -0,0 +1,77 @@
import "package:inventree/inventree/model.dart";
class InvenTreeParameter extends InvenTreeModel {
InvenTreeParameter() : super();
InvenTreeParameter.fromJson(Map<String, dynamic> json) : super.fromJson(json);
@override
InvenTreeParameter createFromJson(Map<String, dynamic> json) =>
InvenTreeParameter.fromJson(json);
@override
String get URL => "parameter/";
@override
Map<String, Map<String, dynamic>> formFields() {
Map<String, Map<String, dynamic>> fields = {
"header": {
"type": "string",
"read_only": true,
"label": name,
"help_text": description,
"value": "",
},
"data": {"type": "string"},
"note": {},
};
return fields;
}
@override
String get name => getString("name", subKey: "template_detail");
@override
String get description => getString("description", subKey: "template_detail");
String get value => getString("data");
String get valueString {
String v = value;
if (units.isNotEmpty) {
v += " ";
v += units;
}
return v;
}
bool get as_bool => value.toLowerCase() == "true";
String get units => getString("units", subKey: "template_detail");
bool get is_checkbox =>
getBool("checkbox", subKey: "template_detail", backup: false);
// The model type of the instance this attachment is associated with
String get modelType => getString("model_type");
// The ID of the instance this attachment is associated with
int get modelId => getInt("model_id");
// Return a count of how many parameters exist against the specified model ID
Future<int> countParameters(String modelType, int modelId) async {
Map<String, String> filters = {};
if (!api.supportsModernParameters) {
return 0;
}
filters["model_type"] = modelType;
filters["model_id"] = modelId.toString();
return count(filters: filters);
}
}

View file

@ -132,68 +132,6 @@ class InvenTreePartTestTemplate extends InvenTreeModel {
} }
} }
/*
Class representing the PartParameter database model
*/
class InvenTreePartParameter extends InvenTreeModel {
InvenTreePartParameter() : super();
InvenTreePartParameter.fromJson(Map<String, dynamic> json)
: super.fromJson(json);
@override
String get URL => "part/parameter/";
@override
List<String> get rolesRequired => ["part"];
@override
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
InvenTreePartParameter.fromJson(json);
@override
Map<String, Map<String, dynamic>> formFields() {
Map<String, Map<String, dynamic>> fields = {
"header": {
"type": "string",
"read_only": true,
"label": name,
"help_text": description,
"value": "",
},
"data": {"type": "string"},
};
return fields;
}
@override
String get name => getString("name", subKey: "template_detail");
@override
String get description => getString("description", subKey: "template_detail");
String get value => getString("data");
String get valueString {
String v = value;
if (units.isNotEmpty) {
v += " ";
v += units;
}
return v;
}
bool get as_bool => value.toLowerCase() == "true";
String get units => getString("units", subKey: "template_detail");
bool get is_checkbox =>
getBool("checkbox", subKey: "template_detail", backup: false);
}
/* /*
* Class representing the Part database model * Class representing the Part database model
*/ */
@ -547,28 +485,3 @@ class InvenTreePartPricing extends InvenTreeModel {
double? get saleHistoryMin => getDoubleOrNull("sale_history_min"); double? get saleHistoryMin => getDoubleOrNull("sale_history_min");
double? get saleHistoryMax => getDoubleOrNull("sale_history_max"); double? get saleHistoryMax => getDoubleOrNull("sale_history_max");
} }
/*
* Class representing an attachment file against a Part object
*/
class InvenTreePartAttachment extends InvenTreeAttachment {
InvenTreePartAttachment() : super();
InvenTreePartAttachment.fromJson(Map<String, dynamic> json)
: super.fromJson(json);
@override
String get REFERENCE_FIELD => "part";
@override
String get REF_MODEL_TYPE => "part";
@override
String get URL => InvenTreeAPI().supportsModernAttachments
? "attachment/"
: "part/attachment/";
@override
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
InvenTreePartAttachment.fromJson(json);
}

View file

@ -336,28 +336,3 @@ class InvenTreePOExtraLineItem extends InvenTreeExtraLineItem {
); );
} }
} }
/*
* Class representing an attachment file against a PurchaseOrder object
*/
class InvenTreePurchaseOrderAttachment extends InvenTreeAttachment {
InvenTreePurchaseOrderAttachment() : super();
InvenTreePurchaseOrderAttachment.fromJson(Map<String, dynamic> json)
: super.fromJson(json);
@override
String get REFERENCE_FIELD => "order";
@override
String get REF_MODEL_TYPE => "purchaseorder";
@override
String get URL => InvenTreeAPI().supportsModernAttachments
? "attachment/"
: "order/po/attachment/";
@override
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
InvenTreePurchaseOrderAttachment.fromJson(json);
}

View file

@ -334,7 +334,7 @@ class InvenTreeSalesOrderShipment extends InvenTreeModel {
/* /*
* Class representing an allocation of stock against a SalesOrderShipment * Class representing an allocation of stock against a SalesOrderShipment
*/ */
class InvenTreeSalesOrderAllocation extends InvenTreeAttachment { class InvenTreeSalesOrderAllocation extends InvenTreeModel {
InvenTreeSalesOrderAllocation() : super(); InvenTreeSalesOrderAllocation() : super();
InvenTreeSalesOrderAllocation.fromJson(Map<String, dynamic> json) InvenTreeSalesOrderAllocation.fromJson(Map<String, dynamic> json)
@ -428,48 +428,3 @@ class InvenTreeSalesOrderAllocation extends InvenTreeAttachment {
} }
} }
} }
/*
* Class representing an attachment file against a SalesOrder object
*/
class InvenTreeSalesOrderAttachment extends InvenTreeAttachment {
InvenTreeSalesOrderAttachment() : super();
InvenTreeSalesOrderAttachment.fromJson(Map<String, dynamic> json)
: super.fromJson(json);
@override
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
InvenTreeSalesOrderAttachment.fromJson(json);
@override
String get REFERENCE_FIELD => "order";
@override
String get REF_MODEL_TYPE => "salesorder";
@override
String get URL => InvenTreeAPI().supportsModernAttachments
? "attachment/"
: "order/so/attachment/";
}
class InvenTreeSalesOrderShipmentAttachment extends InvenTreeAttachment {
InvenTreeSalesOrderShipmentAttachment() : super();
InvenTreeSalesOrderShipmentAttachment.fromJson(Map<String, dynamic> json)
: super.fromJson(json);
@override
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
InvenTreeSalesOrderShipmentAttachment.fromJson(json);
@override
String get REFERENCE_FIELD => "shipment";
@override
String get REF_MODEL_TYPE => "salesordershipment";
@override
String get URL => "attachment/";
}

View file

@ -575,31 +575,6 @@ class InvenTreeStockItem extends InvenTreeModel {
} }
} }
/*
* Class representing an attachment file against a StockItem object
*/
class InvenTreeStockItemAttachment extends InvenTreeAttachment {
InvenTreeStockItemAttachment() : super();
InvenTreeStockItemAttachment.fromJson(Map<String, dynamic> json)
: super.fromJson(json);
@override
String get REFERENCE_FIELD => "stock_item";
@override
String get REF_MODEL_TYPE => "stockitem";
@override
String get URL => InvenTreeAPI().supportsModernAttachments
? "attachment/"
: "stock/attachment/";
@override
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
InvenTreeStockItemAttachment.fromJson(json);
}
class InvenTreeStockLocation extends InvenTreeModel { class InvenTreeStockLocation extends InvenTreeModel {
InvenTreeStockLocation() : super(); InvenTreeStockLocation() : super();

View file

@ -102,7 +102,7 @@
"@barcodeReceivePart": {}, "@barcodeReceivePart": {},
"barcodeScanPaused": "Skenování čárových kódů pozastaveno", "barcodeScanPaused": "Skenování čárových kódů pozastaveno",
"@barodeScanPaused": {}, "@barodeScanPaused": {},
"barcodeScanPause": "Tap to pause scanning", "barcodeScanPause": "Kliknutím pozastavíte skenování",
"@barcodeScanPause": {}, "@barcodeScanPause": {},
"barcodeScanAssign": "Skenovat pro přiřazení čárového kódu", "barcodeScanAssign": "Skenovat pro přiřazení čárového kódu",
"@barcodeScanAssign": {}, "@barcodeScanAssign": {},
@ -472,9 +472,9 @@
"@itemUpdated": {}, "@itemUpdated": {},
"keywords": "Klíčová slova", "keywords": "Klíčová slova",
"@keywords": {}, "@keywords": {},
"labelDriver": "Label Driver", "labelDriver": "Ovladač pro popisky",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver", "labelSelectDriver": "Vyberte ovladač pro tiskárnu štítků",
"@labelSelectDriver": {}, "@labelSelectDriver": {},
"labelPrinting": "Tisk štítku", "labelPrinting": "Tisk štítku",
"@labelPrinting": {}, "@labelPrinting": {},

File diff suppressed because it is too large Load diff

View file

@ -102,7 +102,7 @@
"@barcodeReceivePart": {}, "@barcodeReceivePart": {},
"barcodeScanPaused": "Barcode-Scannen angehalten", "barcodeScanPaused": "Barcode-Scannen angehalten",
"@barodeScanPaused": {}, "@barodeScanPaused": {},
"barcodeScanPause": "Tap to pause scanning", "barcodeScanPause": "Tippen um das Scannen zu pausieren",
"@barcodeScanPause": {}, "@barcodeScanPause": {},
"barcodeScanAssign": "Scannen um Barcode zuzuweisen", "barcodeScanAssign": "Scannen um Barcode zuzuweisen",
"@barcodeScanAssign": {}, "@barcodeScanAssign": {},
@ -472,9 +472,9 @@
"@itemUpdated": {}, "@itemUpdated": {},
"keywords": "Schlüsselwörter", "keywords": "Schlüsselwörter",
"@keywords": {}, "@keywords": {},
"labelDriver": "Label Driver", "labelDriver": "Etikettendrucker Treiber",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver", "labelSelectDriver": "Etikettendrucker Treiber auswählen",
"@labelSelectDriver": {}, "@labelSelectDriver": {},
"labelPrinting": "Etikettendruck", "labelPrinting": "Etikettendruck",
"@labelPrinting": {}, "@labelPrinting": {},
@ -944,29 +944,29 @@
"@shipment": {}, "@shipment": {},
"shipments": "Lieferungen", "shipments": "Lieferungen",
"@shipments": {}, "@shipments": {},
"shipmentsPending": "Ausstehende Sendungen", "shipmentsPending": "Ausstehende Lieferungen",
"@shipmentsPending": {}, "@shipmentsPending": {},
"shipmentAdd": "Lieferung hinzufügen", "shipmentAdd": "Lieferung hinzufügen",
"@shipmentAdd": {}, "@shipmentAdd": {},
"shipmentCheck": "Sendung prüfen", "shipmentCheck": "Lieferung überprüfen",
"@shipmentCheck": {}, "@shipmentCheck": {},
"shipmentCheckDetail": "Diese Sendung als geprüft markieren", "shipmentCheckDetail": "Diese Lieferung als geprüft markieren",
"@shipmentCheckDetail": {}, "@shipmentCheckDetail": {},
"shipmentChecked": "Sendung geprüft", "shipmentChecked": "Lieferung überprüft",
"@shipmentChecked": {}, "@shipmentChecked": {},
"shipmentDate": "Versanddatum", "shipmentDate": "Versanddatum",
"@shipmentDate": {}, "@shipmentDate": {},
"shipmentEdit": "Sendung bearbeiten", "shipmentEdit": "Lieferung bearbeiten",
"@shipmentEdit": {}, "@shipmentEdit": {},
"shipmentReference": "Shipment Reference", "shipmentReference": "Sendungsreferenz",
"@shipmentReference": {}, "@shipmentReference": {},
"shipmentSend": "Lieferung versenden", "shipmentSend": "Lieferung versenden",
"@shipmentSend": {}, "@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment", "shipmentUncheck": "Lieferung ungeprüft markieren",
"@shipmentUncheck": {}, "@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked", "shipmentUncheckDetail": "Diese Lieferung als ungeprüft markieren",
"@shipmentUncheckDetail": {}, "@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated", "shipmentUpdated": "Lieferung Aktualisiert",
"@shipmentUpdated": {}, "@shipmentUpdated": {},
"shipped": "Versandt", "shipped": "Versandt",
"@shipped": {}, "@shipped": {},
@ -1102,7 +1102,7 @@
"@timeout": { "@timeout": {
"description": "" "description": ""
}, },
"toggleTorch": "Toggle Torch", "toggleTorch": "Taschenlampe umschalten",
"@toggleTorch": {}, "@toggleTorch": {},
"tokenError": "Token-Fehler", "tokenError": "Token-Fehler",
"@tokenError": {}, "@tokenError": {},
@ -1182,7 +1182,7 @@
"@priceRange": {}, "@priceRange": {},
"priceOverrideMin": "Mindestpreis überschreiben", "priceOverrideMin": "Mindestpreis überschreiben",
"@priceOverrideMin": {}, "@priceOverrideMin": {},
"priceOverrideMax": "Maximum Price Override", "priceOverrideMax": "Maximalen Preis ignorieren",
"@priceOverrideMax": {}, "@priceOverrideMax": {},
"salePrice": "Verkaufspreis", "salePrice": "Verkaufspreis",
"@salePrice": {}, "@salePrice": {},
@ -1198,7 +1198,7 @@
"@variantCost": {}, "@variantCost": {},
"overallPricing": "Gesamt Preise", "overallPricing": "Gesamt Preise",
"@overallPricing": {}, "@overallPricing": {},
"pricingOverrides": "Pricing Overrides", "pricingOverrides": "Preisgestaltung ignorieren",
"@pricingOverrides": {}, "@pricingOverrides": {},
"currency": "Währung", "currency": "Währung",
"@currency": {}, "@currency": {},

View file

@ -962,7 +962,7 @@
"@shipmentReference": {}, "@shipmentReference": {},
"shipmentSend": "Send Shipment", "shipmentSend": "Send Shipment",
"@shipmentSend": {}, "@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment", "shipmentUncheck": "Deseleccionar Envío",
"@shipmentUncheck": {}, "@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked", "shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {}, "@shipmentUncheckDetail": {},
@ -1068,7 +1068,7 @@
"@suppliers": {}, "@suppliers": {},
"supplierReference": "Referencia del proveedor", "supplierReference": "Referencia del proveedor",
"@supplierReference": {}, "@supplierReference": {},
"switchCamera": "Switch Camera", "switchCamera": "Cambiar Cámara",
"@switchCamera": {}, "@switchCamera": {},
"takePicture": "Tomar una foto", "takePicture": "Tomar una foto",
"@takePicture": {}, "@takePicture": {},
@ -1148,7 +1148,7 @@
"@uploadFailed": {}, "@uploadFailed": {},
"uploadSuccess": "Archivo subido", "uploadSuccess": "Archivo subido",
"@uploadSuccess": {}, "@uploadSuccess": {},
"uploadImage": "Upload Image", "uploadImage": "Subir Imagen",
"@uploadImage": {}, "@uploadImage": {},
"usedIn": "Usado en", "usedIn": "Usado en",
"@usedIn": {}, "@usedIn": {},

View file

@ -36,17 +36,17 @@
"@appDetails": {}, "@appDetails": {},
"allocated": "اختصاص داده شده", "allocated": "اختصاص داده شده",
"@allocated": {}, "@allocated": {},
"aspectRatio16x9": "16:9", "aspectRatio16x9": "۱۶ به ۹",
"@aspectRatio16x9": {}, "@aspectRatio16x9": {},
"aspectRatio3x2": "3:2", "aspectRatio3x2": "۳ به ۲",
"@aspectRatio3x2": {}, "@aspectRatio3x2": {},
"aspectRatio4x3": "4:3", "aspectRatio4x3": "۴ به ۳",
"@aspectRatio4x3": {}, "@aspectRatio4x3": {},
"aspectRatioSquare": "Square (1:1)", "aspectRatioSquare": "مربعی (۱ به ۱)",
"@aspectRatioSquare": {}, "@aspectRatioSquare": {},
"allocateStock": "موجودی اختصاص داده شده", "allocateStock": "موجودی اختصاص داده شده",
"@allocateStock": {}, "@allocateStock": {},
"allocatedStock": "Allocated Stock", "allocatedStock": "موجودی اختصاص داده شده",
"@allocatedStock": {}, "@allocatedStock": {},
"appReleaseNotes": "نمایش یادداشت های انتشار برنامه", "appReleaseNotes": "نمایش یادداشت های انتشار برنامه",
"@appReleaseNotes": {}, "@appReleaseNotes": {},
@ -102,7 +102,7 @@
"@barcodeReceivePart": {}, "@barcodeReceivePart": {},
"barcodeScanPaused": "اسکن بارکد متوقف شد", "barcodeScanPaused": "اسکن بارکد متوقف شد",
"@barodeScanPaused": {}, "@barodeScanPaused": {},
"barcodeScanPause": "Tap to pause scanning", "barcodeScanPause": "برای توقف اسکن لمس کنید",
"@barcodeScanPause": {}, "@barcodeScanPause": {},
"barcodeScanAssign": "برای اختصاص بارکد اسکن کنید", "barcodeScanAssign": "برای اختصاص بارکد اسکن کنید",
"@barcodeScanAssign": {}, "@barcodeScanAssign": {},
@ -180,9 +180,9 @@
"@companyUpdated": {}, "@companyUpdated": {},
"companies": "شرکت‌ها", "companies": "شرکت‌ها",
"@companies": {}, "@companies": {},
"complete": "Complete", "complete": "تکمیل",
"@complete": {}, "@complete": {},
"completeOrder": "Complete Order", "completeOrder": "تکمیل سفارش",
"@completeOrder": {}, "@completeOrder": {},
"completionDate": "تاریخ تکمیل", "completionDate": "تاریخ تکمیل",
"@completionDate": {}, "@completionDate": {},
@ -204,9 +204,9 @@
}, },
"credits": "اعتبارات", "credits": "اعتبارات",
"@credits": {}, "@credits": {},
"crop": "Crop", "crop": "برش",
"@crop": {}, "@crop": {},
"cropImage": "Crop Image", "cropImage": "برش تصویر",
"@cropImage": {}, "@cropImage": {},
"customer": "مشتری", "customer": "مشتری",
"@customer": {}, "@customer": {},
@ -228,11 +228,11 @@
"@delete": {}, "@delete": {},
"deleteFailed": "عملیات حذف ناموفق بوده است", "deleteFailed": "عملیات حذف ناموفق بوده است",
"@deleteFailed": {}, "@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?", "deleteImageConfirmation": "آیا مطمئن هستید که میخواهید این تصویر را حذف کنید؟",
"@deleteImageConfirmation": {}, "@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image", "deleteImageTooltip": "حذف تصویر",
"@deleteImageTooltip": {}, "@deleteImageTooltip": {},
"deleteImage": "Delete Image", "deleteImage": "حذف تصویر",
"@deleteImage": {}, "@deleteImage": {},
"deletePart": "حذف قسمت", "deletePart": "حذف قسمت",
"@deletePart": {}, "@deletePart": {},
@ -240,7 +240,7 @@
"@deletePartDetail": {}, "@deletePartDetail": {},
"deleteSuccess": "عملیات حذف با موفقیت انجام شد", "deleteSuccess": "عملیات حذف با موفقیت انجام شد",
"@deleteSuccess": {}, "@deleteSuccess": {},
"deliveryDate": "Delivery Date", "deliveryDate": "تاریخ تحویل",
"@deliveryDate": {}, "@deliveryDate": {},
"description": "توضیحات", "description": "توضیحات",
"@description": {}, "@description": {},
@ -254,9 +254,9 @@
}, },
"documentation": "مستندات", "documentation": "مستندات",
"@documentation": {}, "@documentation": {},
"downloadComplete": "Download Complete", "downloadComplete": "دانلود انجام شد",
"@downloadComplete": {}, "@downloadComplete": {},
"downloadError": "Error downloading image", "downloadError": "خطای دانلود تصویر",
"@downloadError": {}, "@downloadError": {},
"downloading": "در حال دانلود فایل", "downloading": "در حال دانلود فایل",
"@downloading": {}, "@downloading": {},
@ -282,7 +282,7 @@
"@editItem": {}, "@editItem": {},
"editLineItem": "ویرایش ایتم خط", "editLineItem": "ویرایش ایتم خط",
"@editLineItem": {}, "@editLineItem": {},
"email": "Email", "email": "پست الکترونیکی",
"@email": {}, "@email": {},
"enterPassword": "رمز عبور را وارد کنید", "enterPassword": "رمز عبور را وارد کنید",
"@enterPassword": {}, "@enterPassword": {},
@ -384,9 +384,9 @@
"@homeShowPo": {}, "@homeShowPo": {},
"homeShowPoDescription": "نمایش دکمه سفارش خرید در صفحه خانه", "homeShowPoDescription": "نمایش دکمه سفارش خرید در صفحه خانه",
"@homeShowPoDescription": {}, "@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments", "homeShowShipments": "نمایش محموله",
"@homeShowShipments": {}, "@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen", "homeShowShipmentsDescription": "نمایش محموله در انتظار ارسال بر روی صفحه اصلی",
"@homeShowShipmentsDescription": {}, "@homeShowShipmentsDescription": {},
"homeShowSo": "نمایش سفارش های فروش", "homeShowSo": "نمایش سفارش های فروش",
"@homeShowSo": {}, "@homeShowSo": {},
@ -454,9 +454,9 @@
"@invalidSupplierPart": {}, "@invalidSupplierPart": {},
"invalidUsernamePassword": "ترکیب نام کاربری / رمز عبور نامعتبر", "invalidUsernamePassword": "ترکیب نام کاربری / رمز عبور نامعتبر",
"@invalidUsernamePassword": {}, "@invalidUsernamePassword": {},
"invoice": "Invoice", "invoice": "صورت‌حساب",
"@invoice": {}, "@invoice": {},
"invoiceNumber": "Invoice Number", "invoiceNumber": "شماره صورت‌حساب",
"@invoiceNumber": {}, "@invoiceNumber": {},
"issue": "موضوع", "issue": "موضوع",
"@issue": {}, "@issue": {},
@ -472,9 +472,9 @@
"@itemUpdated": {}, "@itemUpdated": {},
"keywords": "کلمات کلیدی", "keywords": "کلمات کلیدی",
"@keywords": {}, "@keywords": {},
"labelDriver": "Label Driver", "labelDriver": "درایور چاپگر برچسب",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver", "labelSelectDriver": "انتخاب درایور چاپگر برچسب",
"@labelSelectDriver": {}, "@labelSelectDriver": {},
"labelPrinting": "چاپ لیبل", "labelPrinting": "چاپ لیبل",
"@labelPrinting": {}, "@labelPrinting": {},
@ -514,7 +514,7 @@
"@locationCreate": {}, "@locationCreate": {},
"locationCreateDetail": "مکان سهام جدید ایجاد کنید", "locationCreateDetail": "مکان سهام جدید ایجاد کنید",
"@locationCreateDetail": {}, "@locationCreateDetail": {},
"locationDefault": "Default Location", "locationDefault": "مکان پیش‌فرض",
"@locationDefault": {}, "@locationDefault": {},
"locationNotSet": "هیچ مکانی مشخص نشده است", "locationNotSet": "هیچ مکانی مشخص نشده است",
"@locationNotSet": {}, "@locationNotSet": {},
@ -544,9 +544,9 @@
"@missingData": {}, "@missingData": {},
"name": "نام", "name": "نام",
"@name": {}, "@name": {},
"no": "No", "no": "خیر",
"@no": {}, "@no": {},
"notApplicable": "N/A", "notApplicable": "موجود نیست",
"@notApplicable": {}, "@notApplicable": {},
"notConnected": "متصل نیست", "notConnected": "متصل نیست",
"@notConnected": {}, "@notConnected": {},
@ -562,11 +562,11 @@
"@noResponse": {}, "@noResponse": {},
"noResults": "بدون نتیجه", "noResults": "بدون نتیجه",
"@noResults": {}, "@noResults": {},
"noImageAvailable": "No image available", "noImageAvailable": "هیچ تصویری موجود نیست",
"@noImageAvailable": {}, "@noImageAvailable": {},
"noPricingAvailable": "No pricing available", "noPricingAvailable": "هیچ قیمتی موجود نیست",
"@noPricingAvailable": {}, "@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part", "noPricingDataFound": "هیچ اطلاعات قیمتی برای این قطعه یافت نشد",
"@noPricingDataFound": {}, "@noPricingDataFound": {},
"noSubcategories": "بدون زیر دسته بندی", "noSubcategories": "بدون زیر دسته بندی",
"@noSubcategories": {}, "@noSubcategories": {},
@ -630,9 +630,9 @@
"@partsNone": {}, "@partsNone": {},
"partNoResults": "هیچ قطعه ای مطابق با جست و جو یافت نشد", "partNoResults": "هیچ قطعه ای مطابق با جست و جو یافت نشد",
"@partNoResults": {}, "@partNoResults": {},
"partPricing": "Part Pricing", "partPricing": "قیمت‌گذاری قطعات",
"@partPricing": {}, "@partPricing": {},
"partPricingSettingDetail": "Display part pricing information", "partPricingSettingDetail": "نمایش اطلاعات قیمت‌گذاری قطعات",
"@pricingSettingDetail": {}, "@pricingSettingDetail": {},
"partSettings": "تنظیمات قطعه", "partSettings": "تنظیمات قطعه",
"@partSettings": {}, "@partSettings": {},
@ -660,13 +660,13 @@
"@password": {}, "@password": {},
"passwordEmpty": "رمز عبور نمی تواند خالی باشد", "passwordEmpty": "رمز عبور نمی تواند خالی باشد",
"@passwordEmpty": {}, "@passwordEmpty": {},
"pending": "Pending", "pending": "در حال بررسی",
"@pending": {}, "@pending": {},
"permissionAccountDenied": "حساب شما مجوزهای لازم برای انجام این عمل را ندارد", "permissionAccountDenied": "حساب شما مجوزهای لازم برای انجام این عمل را ندارد",
"@permissionAccountDenied": {}, "@permissionAccountDenied": {},
"permissionRequired": "نیازمند مجوز", "permissionRequired": "نیازمند مجوز",
"@permissionRequired": {}, "@permissionRequired": {},
"phone": "Phone", "phone": "تماس",
"@phone": {}, "@phone": {},
"printLabel": "پرینت برچسب", "printLabel": "پرینت برچسب",
"@printLabel": {}, "@printLabel": {},
@ -762,7 +762,7 @@
"@reference": {}, "@reference": {},
"refresh": "تازه سازی", "refresh": "تازه سازی",
"@refresh": {}, "@refresh": {},
"rotateClockwise": "Rotate 90° clockwise", "rotateClockwise": "چرخش °90 درجه در جهت عقربه های ساعت",
"@rotateClockwise": {}, "@rotateClockwise": {},
"refreshing": "در حال تازه سازی", "refreshing": "در حال تازه سازی",
"@refreshing": {}, "@refreshing": {},
@ -940,33 +940,33 @@
"@serverNotConnected": {}, "@serverNotConnected": {},
"serverNotSelected": "سرور انتخاب نشده است", "serverNotSelected": "سرور انتخاب نشده است",
"@serverNotSelected": {}, "@serverNotSelected": {},
"shipment": "Shipment", "shipment": "محموله",
"@shipment": {}, "@shipment": {},
"shipments": "محموله ها", "shipments": "محموله ها",
"@shipments": {}, "@shipments": {},
"shipmentsPending": "Pending Shipments", "shipmentsPending": "محموله در انتظار ارسال",
"@shipmentsPending": {}, "@shipmentsPending": {},
"shipmentAdd": "افزودن محموله", "shipmentAdd": "افزودن محموله",
"@shipmentAdd": {}, "@shipmentAdd": {},
"shipmentCheck": "Check Shipment", "shipmentCheck": "بررسی محموله",
"@shipmentCheck": {}, "@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked", "shipmentCheckDetail": "این محموله را بررسی شده علامت گذاری کن",
"@shipmentCheckDetail": {}, "@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked", "shipmentChecked": "محموله بررسی شده",
"@shipmentChecked": {}, "@shipmentChecked": {},
"shipmentDate": "Shipment Date", "shipmentDate": "تاریخ ارسال",
"@shipmentDate": {}, "@shipmentDate": {},
"shipmentEdit": "Edit Shipment", "shipmentEdit": "تغییر محموله",
"@shipmentEdit": {}, "@shipmentEdit": {},
"shipmentReference": "Shipment Reference", "shipmentReference": "کد محموله",
"@shipmentReference": {}, "@shipmentReference": {},
"shipmentSend": "Send Shipment", "shipmentSend": "ارسال محموله",
"@shipmentSend": {}, "@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment", "shipmentUncheck": "محموله بررسی نشده",
"@shipmentUncheck": {}, "@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked", "shipmentUncheckDetail": "این محموله را بررسی نشده علامت گذاری کن",
"@shipmentUncheckDetail": {}, "@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated", "shipmentUpdated": "محموله به روز رسانی شد",
"@shipmentUpdated": {}, "@shipmentUpdated": {},
"shipped": "ارسال شده", "shipped": "ارسال شده",
"@shipped": {}, "@shipped": {},
@ -1112,7 +1112,7 @@
"@tokenMissingFromResponse": {}, "@tokenMissingFromResponse": {},
"totalPrice": "قیمت کل", "totalPrice": "قیمت کل",
"@totalPrice": {}, "@totalPrice": {},
"trackingNumber": "Tracking Number", "trackingNumber": "کد رهگیری",
"@trackingNumber": {}, "@trackingNumber": {},
"transfer": "انتقال", "transfer": "انتقال",
"@transfer": { "@transfer": {
@ -1148,7 +1148,7 @@
"@uploadFailed": {}, "@uploadFailed": {},
"uploadSuccess": "فایل اپلود شد", "uploadSuccess": "فایل اپلود شد",
"@uploadSuccess": {}, "@uploadSuccess": {},
"uploadImage": "Upload Image", "uploadImage": "بارگذاری تصویر",
"@uploadImage": {}, "@uploadImage": {},
"usedIn": "استفاده شده در", "usedIn": "استفاده شده در",
"@usedIn": {}, "@usedIn": {},
@ -1174,34 +1174,34 @@
"@viewSupplierPart": {}, "@viewSupplierPart": {},
"website": "وب سایت", "website": "وب سایت",
"@website": {}, "@website": {},
"yes": "Yes", "yes": "بله",
"@yes": {}, "@yes": {},
"price": "Price", "price": "قیمت",
"@price": {}, "@price": {},
"priceRange": "Price Range", "priceRange": "بازه‌ قیمت",
"@priceRange": {}, "@priceRange": {},
"priceOverrideMin": "Minimum Price Override", "priceOverrideMin": "قیمت دستی مینیمم",
"@priceOverrideMin": {}, "@priceOverrideMin": {},
"priceOverrideMax": "Maximum Price Override", "priceOverrideMax": "قیمت دستی ماکزیمم",
"@priceOverrideMax": {}, "@priceOverrideMax": {},
"salePrice": "Sale Price", "salePrice": "قیمت حراج",
"@salePrice": {}, "@salePrice": {},
"saleHistory": "Sale History", "saleHistory": "تاریخچه حراج",
"@saleHistory": {}, "@saleHistory": {},
"supplierPricing": "Supplier Pricing", "supplierPricing": "قیمت تامین کننده",
"@supplierPricing": {}, "@supplierPricing": {},
"bomCost": "BOM Cost", "bomCost": "هزینه تمام شده",
"@bomCost": {}, "@bomCost": {},
"internalCost": "Internal Cost", "internalCost": "هزینه داخلی",
"@internalCost": {}, "@internalCost": {},
"variantCost": "Variant Cost", "variantCost": "هزینه متغیر",
"@variantCost": {}, "@variantCost": {},
"overallPricing": "Overall Pricing", "overallPricing": "قیمت نهایی",
"@overallPricing": {}, "@overallPricing": {},
"pricingOverrides": "Pricing Overrides", "pricingOverrides": "قیمت دستی",
"@pricingOverrides": {}, "@pricingOverrides": {},
"currency": "Currency", "currency": "واحد پول",
"@currency": {}, "@currency": {},
"priceBreaks": "Price Breaks", "priceBreaks": "کاهش قیمت",
"@priceBreaks": {} "@priceBreaks": {}
} }

View file

@ -46,7 +46,7 @@
"@aspectRatioSquare": {}, "@aspectRatioSquare": {},
"allocateStock": "Készlet foglalása", "allocateStock": "Készlet foglalása",
"@allocateStock": {}, "@allocateStock": {},
"allocatedStock": "Allocated Stock", "allocatedStock": "Lefoglalt Készlet",
"@allocatedStock": {}, "@allocatedStock": {},
"appReleaseNotes": "Kiadási közlemények", "appReleaseNotes": "Kiadási közlemények",
"@appReleaseNotes": {}, "@appReleaseNotes": {},
@ -102,7 +102,7 @@
"@barcodeReceivePart": {}, "@barcodeReceivePart": {},
"barcodeScanPaused": "Vonalkód olvasás megállítva", "barcodeScanPaused": "Vonalkód olvasás megállítva",
"@barodeScanPaused": {}, "@barodeScanPaused": {},
"barcodeScanPause": "Tap to pause scanning", "barcodeScanPause": "Érintse meg a szkennelés szüneteltetéséhez",
"@barcodeScanPause": {}, "@barcodeScanPause": {},
"barcodeScanAssign": "Kódolvasás a hozzárendeléshez", "barcodeScanAssign": "Kódolvasás a hozzárendeléshez",
"@barcodeScanAssign": {}, "@barcodeScanAssign": {},
@ -240,7 +240,7 @@
"@deletePartDetail": {}, "@deletePartDetail": {},
"deleteSuccess": "Törlés sikeres", "deleteSuccess": "Törlés sikeres",
"@deleteSuccess": {}, "@deleteSuccess": {},
"deliveryDate": "Delivery Date", "deliveryDate": "Szállítási Dátum",
"@deliveryDate": {}, "@deliveryDate": {},
"description": "Leírás", "description": "Leírás",
"@description": {}, "@description": {},
@ -384,9 +384,9 @@
"@homeShowPo": {}, "@homeShowPo": {},
"homeShowPoDescription": "Beszerzési rendelések gomb megjelenítése a főoldalon", "homeShowPoDescription": "Beszerzési rendelések gomb megjelenítése a főoldalon",
"@homeShowPoDescription": {}, "@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments", "homeShowShipments": "Szállítmányok Mutatása",
"@homeShowShipments": {}, "@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen", "homeShowShipmentsDescription": "Függőben lévő szállítmányok megjelenítése a kezdőképernyőn",
"@homeShowShipmentsDescription": {}, "@homeShowShipmentsDescription": {},
"homeShowSo": "Vevői rendelések megmutatása", "homeShowSo": "Vevői rendelések megmutatása",
"@homeShowSo": {}, "@homeShowSo": {},
@ -454,9 +454,9 @@
"@invalidSupplierPart": {}, "@invalidSupplierPart": {},
"invalidUsernamePassword": "Érvénytelen felhasználónév/jelszó kombináció", "invalidUsernamePassword": "Érvénytelen felhasználónév/jelszó kombináció",
"@invalidUsernamePassword": {}, "@invalidUsernamePassword": {},
"invoice": "Invoice", "invoice": "Számla",
"@invoice": {}, "@invoice": {},
"invoiceNumber": "Invoice Number", "invoiceNumber": "Számlaszám",
"@invoiceNumber": {}, "@invoiceNumber": {},
"issue": "Kiküldés", "issue": "Kiküldés",
"@issue": {}, "@issue": {},
@ -472,9 +472,9 @@
"@itemUpdated": {}, "@itemUpdated": {},
"keywords": "Kulcsszavak", "keywords": "Kulcsszavak",
"@keywords": {}, "@keywords": {},
"labelDriver": "Label Driver", "labelDriver": "Címke Meghajtó",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver", "labelSelectDriver": "Címkenyomtató Meghajtó Kiválasztása",
"@labelSelectDriver": {}, "@labelSelectDriver": {},
"labelPrinting": "Címke nyomtatás", "labelPrinting": "Címke nyomtatás",
"@labelPrinting": {}, "@labelPrinting": {},
@ -514,7 +514,7 @@
"@locationCreate": {}, "@locationCreate": {},
"locationCreateDetail": "Új készlet hely létrehozása", "locationCreateDetail": "Új készlet hely létrehozása",
"@locationCreateDetail": {}, "@locationCreateDetail": {},
"locationDefault": "Default Location", "locationDefault": "Alapértelmezett Hely",
"@locationDefault": {}, "@locationDefault": {},
"locationNotSet": "Nincs megadva hely", "locationNotSet": "Nincs megadva hely",
"@locationNotSet": {}, "@locationNotSet": {},
@ -544,7 +544,7 @@
"@missingData": {}, "@missingData": {},
"name": "Név", "name": "Név",
"@name": {}, "@name": {},
"no": "No", "no": "Nem",
"@no": {}, "@no": {},
"notApplicable": "N/A", "notApplicable": "N/A",
"@notApplicable": {}, "@notApplicable": {},
@ -660,7 +660,7 @@
"@password": {}, "@password": {},
"passwordEmpty": "Jelszó nem lehet üres", "passwordEmpty": "Jelszó nem lehet üres",
"@passwordEmpty": {}, "@passwordEmpty": {},
"pending": "Pending", "pending": "Függőben",
"@pending": {}, "@pending": {},
"permissionAccountDenied": "Nincs meg a szükséges jogosultságod, hogy végrehajtsd ezt a műveletet", "permissionAccountDenied": "Nincs meg a szükséges jogosultságod, hogy végrehajtsd ezt a műveletet",
"@permissionAccountDenied": {}, "@permissionAccountDenied": {},
@ -940,33 +940,33 @@
"@serverNotConnected": {}, "@serverNotConnected": {},
"serverNotSelected": "Nincs kiszolgáló választva", "serverNotSelected": "Nincs kiszolgáló választva",
"@serverNotSelected": {}, "@serverNotSelected": {},
"shipment": "Shipment", "shipment": "Szállítmány",
"@shipment": {}, "@shipment": {},
"shipments": "Szállítmányok", "shipments": "Szállítmányok",
"@shipments": {}, "@shipments": {},
"shipmentsPending": "Pending Shipments", "shipmentsPending": "Függőben Lévő Szállítmányok",
"@shipmentsPending": {}, "@shipmentsPending": {},
"shipmentAdd": "Szállítmány hozzáadása", "shipmentAdd": "Szállítmány hozzáadása",
"@shipmentAdd": {}, "@shipmentAdd": {},
"shipmentCheck": "Check Shipment", "shipmentCheck": "Szállítmány Ellenőrzése",
"@shipmentCheck": {}, "@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked", "shipmentCheckDetail": "Jelölje meg ezt a szállítmányt ellenőrzöttként",
"@shipmentCheckDetail": {}, "@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked", "shipmentChecked": "Szállítmány Ellenőrizve",
"@shipmentChecked": {}, "@shipmentChecked": {},
"shipmentDate": "Shipment Date", "shipmentDate": "Szállítmány Dátuma",
"@shipmentDate": {}, "@shipmentDate": {},
"shipmentEdit": "Edit Shipment", "shipmentEdit": "Szállítmány Szerkesztése",
"@shipmentEdit": {}, "@shipmentEdit": {},
"shipmentReference": "Shipment Reference", "shipmentReference": "Szállítmány Hivatkozás",
"@shipmentReference": {}, "@shipmentReference": {},
"shipmentSend": "Send Shipment", "shipmentSend": "Szállítmány Küldése",
"@shipmentSend": {}, "@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment", "shipmentUncheck": "Szállítmány Ellenőrzés Visszavonása",
"@shipmentUncheck": {}, "@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked", "shipmentUncheckDetail": "Jelölje meg ezt a szállítmányt nem ellenőrzöttként",
"@shipmentUncheckDetail": {}, "@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated", "shipmentUpdated": "Szállítmány Frissítve",
"@shipmentUpdated": {}, "@shipmentUpdated": {},
"shipped": "Kiszállítva", "shipped": "Kiszállítva",
"@shipped": {}, "@shipped": {},
@ -1112,7 +1112,7 @@
"@tokenMissingFromResponse": {}, "@tokenMissingFromResponse": {},
"totalPrice": "Teljes ár", "totalPrice": "Teljes ár",
"@totalPrice": {}, "@totalPrice": {},
"trackingNumber": "Tracking Number", "trackingNumber": "Nyomkövetési Szám",
"@trackingNumber": {}, "@trackingNumber": {},
"transfer": "Áthelyezés", "transfer": "Áthelyezés",
"@transfer": { "@transfer": {
@ -1174,7 +1174,7 @@
"@viewSupplierPart": {}, "@viewSupplierPart": {},
"website": "Weboldal", "website": "Weboldal",
"@website": {}, "@website": {},
"yes": "Yes", "yes": "Igen",
"@yes": {}, "@yes": {},
"price": "Ár", "price": "Ár",
"@price": {}, "@price": {},

View file

@ -102,7 +102,7 @@
"@barcodeReceivePart": {}, "@barcodeReceivePart": {},
"barcodeScanPaused": "Scansione codice a barre in pausa", "barcodeScanPaused": "Scansione codice a barre in pausa",
"@barodeScanPaused": {}, "@barodeScanPaused": {},
"barcodeScanPause": "Tap to pause scanning", "barcodeScanPause": "Tocca per mettere in pausa la scansione",
"@barcodeScanPause": {}, "@barcodeScanPause": {},
"barcodeScanAssign": "Scansiona per assegnare codice a barre", "barcodeScanAssign": "Scansiona per assegnare codice a barre",
"@barcodeScanAssign": {}, "@barcodeScanAssign": {},
@ -472,9 +472,9 @@
"@itemUpdated": {}, "@itemUpdated": {},
"keywords": "Parole Chiave", "keywords": "Parole Chiave",
"@keywords": {}, "@keywords": {},
"labelDriver": "Label Driver", "labelDriver": "Driver Etichetta",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver", "labelSelectDriver": "Seleziona Il Driver Della Stampante Etichette",
"@labelSelectDriver": {}, "@labelSelectDriver": {},
"labelPrinting": "Etichetta in stampa", "labelPrinting": "Etichetta in stampa",
"@labelPrinting": {}, "@labelPrinting": {},

View file

@ -46,7 +46,7 @@
"@aspectRatioSquare": {}, "@aspectRatioSquare": {},
"allocateStock": "Voorraad Toewijzen", "allocateStock": "Voorraad Toewijzen",
"@allocateStock": {}, "@allocateStock": {},
"allocatedStock": "Allocated Stock", "allocatedStock": "Toegewezen voorraad",
"@allocatedStock": {}, "@allocatedStock": {},
"appReleaseNotes": "App release notities weergeven", "appReleaseNotes": "App release notities weergeven",
"@appReleaseNotes": {}, "@appReleaseNotes": {},
@ -102,7 +102,7 @@
"@barcodeReceivePart": {}, "@barcodeReceivePart": {},
"barcodeScanPaused": "Barcode scannen gepauzeerd", "barcodeScanPaused": "Barcode scannen gepauzeerd",
"@barodeScanPaused": {}, "@barodeScanPaused": {},
"barcodeScanPause": "Tap to pause scanning", "barcodeScanPause": "Klik om scannen te pauzeren",
"@barcodeScanPause": {}, "@barcodeScanPause": {},
"barcodeScanAssign": "Scan om streepjescode toe te wijzen", "barcodeScanAssign": "Scan om streepjescode toe te wijzen",
"@barcodeScanAssign": {}, "@barcodeScanAssign": {},
@ -240,7 +240,7 @@
"@deletePartDetail": {}, "@deletePartDetail": {},
"deleteSuccess": "Succesvol verwijderd", "deleteSuccess": "Succesvol verwijderd",
"@deleteSuccess": {}, "@deleteSuccess": {},
"deliveryDate": "Delivery Date", "deliveryDate": "Leveringsdatum",
"@deliveryDate": {}, "@deliveryDate": {},
"description": "Omschrijving", "description": "Omschrijving",
"@description": {}, "@description": {},
@ -384,9 +384,9 @@
"@homeShowPo": {}, "@homeShowPo": {},
"homeShowPoDescription": "Inkooporder knop op startscherm weergeven", "homeShowPoDescription": "Inkooporder knop op startscherm weergeven",
"@homeShowPoDescription": {}, "@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments", "homeShowShipments": "Verzending weergeven",
"@homeShowShipments": {}, "@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen", "homeShowShipmentsDescription": "Toon Leveringen in afwachting op het startscherm",
"@homeShowShipmentsDescription": {}, "@homeShowShipmentsDescription": {},
"homeShowSo": "Toon Verkooporders", "homeShowSo": "Toon Verkooporders",
"@homeShowSo": {}, "@homeShowSo": {},
@ -454,9 +454,9 @@
"@invalidSupplierPart": {}, "@invalidSupplierPart": {},
"invalidUsernamePassword": "Ongeldige gebruikersnaam / wachtwoord combinatie", "invalidUsernamePassword": "Ongeldige gebruikersnaam / wachtwoord combinatie",
"@invalidUsernamePassword": {}, "@invalidUsernamePassword": {},
"invoice": "Invoice", "invoice": "Factuur",
"@invoice": {}, "@invoice": {},
"invoiceNumber": "Invoice Number", "invoiceNumber": "Factuur nummer",
"@invoiceNumber": {}, "@invoiceNumber": {},
"issue": "Probleem", "issue": "Probleem",
"@issue": {}, "@issue": {},
@ -472,9 +472,9 @@
"@itemUpdated": {}, "@itemUpdated": {},
"keywords": "Trefwoorden", "keywords": "Trefwoorden",
"@keywords": {}, "@keywords": {},
"labelDriver": "Label Driver", "labelDriver": "Label printer",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver", "labelSelectDriver": "Selecteer Label Printer Driver",
"@labelSelectDriver": {}, "@labelSelectDriver": {},
"labelPrinting": "Label afdrukken", "labelPrinting": "Label afdrukken",
"@labelPrinting": {}, "@labelPrinting": {},
@ -514,7 +514,7 @@
"@locationCreate": {}, "@locationCreate": {},
"locationCreateDetail": "Creëer nieuwe voorraadlocatie", "locationCreateDetail": "Creëer nieuwe voorraadlocatie",
"@locationCreateDetail": {}, "@locationCreateDetail": {},
"locationDefault": "Default Location", "locationDefault": "Standaard locatie",
"@locationDefault": {}, "@locationDefault": {},
"locationNotSet": "Geen locatie opgegeven", "locationNotSet": "Geen locatie opgegeven",
"@locationNotSet": {}, "@locationNotSet": {},
@ -544,9 +544,9 @@
"@missingData": {}, "@missingData": {},
"name": "Naam", "name": "Naam",
"@name": {}, "@name": {},
"no": "No", "no": "Nee",
"@no": {}, "@no": {},
"notApplicable": "N/A", "notApplicable": "N.v.t. ",
"@notApplicable": {}, "@notApplicable": {},
"notConnected": "Niet verbonden", "notConnected": "Niet verbonden",
"@notConnected": {}, "@notConnected": {},
@ -660,7 +660,7 @@
"@password": {}, "@password": {},
"passwordEmpty": "Wachtwoord mag niet leeg zijn", "passwordEmpty": "Wachtwoord mag niet leeg zijn",
"@passwordEmpty": {}, "@passwordEmpty": {},
"pending": "Pending", "pending": "In behandeling",
"@pending": {}, "@pending": {},
"permissionAccountDenied": "U heeft niet de vereiste rechten om deze actie uit te voeren", "permissionAccountDenied": "U heeft niet de vereiste rechten om deze actie uit te voeren",
"@permissionAccountDenied": {}, "@permissionAccountDenied": {},
@ -940,33 +940,33 @@
"@serverNotConnected": {}, "@serverNotConnected": {},
"serverNotSelected": "Server niet geselecteerd", "serverNotSelected": "Server niet geselecteerd",
"@serverNotSelected": {}, "@serverNotSelected": {},
"shipment": "Shipment", "shipment": "Levering",
"@shipment": {}, "@shipment": {},
"shipments": "Verzendingen", "shipments": "Verzendingen",
"@shipments": {}, "@shipments": {},
"shipmentsPending": "Pending Shipments", "shipmentsPending": "Leveringen in behandeling",
"@shipmentsPending": {}, "@shipmentsPending": {},
"shipmentAdd": "Verzending toevoegen", "shipmentAdd": "Verzending toevoegen",
"@shipmentAdd": {}, "@shipmentAdd": {},
"shipmentCheck": "Check Shipment", "shipmentCheck": "Controleer Levering",
"@shipmentCheck": {}, "@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked", "shipmentCheckDetail": "Markeer deze levering als gecontroleerd",
"@shipmentCheckDetail": {}, "@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked", "shipmentChecked": "Levering gecontroleerd",
"@shipmentChecked": {}, "@shipmentChecked": {},
"shipmentDate": "Shipment Date", "shipmentDate": "Leverings Datum",
"@shipmentDate": {}, "@shipmentDate": {},
"shipmentEdit": "Edit Shipment", "shipmentEdit": "Wijzig levering",
"@shipmentEdit": {}, "@shipmentEdit": {},
"shipmentReference": "Shipment Reference", "shipmentReference": "Shipment Reference",
"@shipmentReference": {}, "@shipmentReference": {},
"shipmentSend": "Send Shipment", "shipmentSend": "Verzending versturen",
"@shipmentSend": {}, "@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment", "shipmentUncheck": "Verzending uitvinken",
"@shipmentUncheck": {}, "@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked", "shipmentUncheckDetail": "Markeer deze levering als niet gecontroleerd",
"@shipmentUncheckDetail": {}, "@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated", "shipmentUpdated": "Verzending bijgewerkt",
"@shipmentUpdated": {}, "@shipmentUpdated": {},
"shipped": "Verzonden", "shipped": "Verzonden",
"@shipped": {}, "@shipped": {},
@ -1112,7 +1112,7 @@
"@tokenMissingFromResponse": {}, "@tokenMissingFromResponse": {},
"totalPrice": "Totaalprijs", "totalPrice": "Totaalprijs",
"@totalPrice": {}, "@totalPrice": {},
"trackingNumber": "Tracking Number", "trackingNumber": "Traceernummer",
"@trackingNumber": {}, "@trackingNumber": {},
"transfer": "Verplaats", "transfer": "Verplaats",
"@transfer": { "@transfer": {
@ -1174,7 +1174,7 @@
"@viewSupplierPart": {}, "@viewSupplierPart": {},
"website": "Website", "website": "Website",
"@website": {}, "@website": {},
"yes": "Yes", "yes": "Ja",
"@yes": {}, "@yes": {},
"price": "Prijs", "price": "Prijs",
"@price": {}, "@price": {},

View file

@ -1202,6 +1202,6 @@
"@pricingOverrides": {}, "@pricingOverrides": {},
"currency": "Waluta", "currency": "Waluta",
"@currency": {}, "@currency": {},
"priceBreaks": "Price Breaks", "priceBreaks": "Widełki cenowe",
"@priceBreaks": {} "@priceBreaks": {}
} }

View file

@ -102,7 +102,7 @@
"@barcodeReceivePart": {}, "@barcodeReceivePart": {},
"barcodeScanPaused": "Scanare cod de bare întreruptă", "barcodeScanPaused": "Scanare cod de bare întreruptă",
"@barodeScanPaused": {}, "@barodeScanPaused": {},
"barcodeScanPause": "Tap to pause scanning", "barcodeScanPause": "Atingeți pentru a întrerupe scanarea",
"@barcodeScanPause": {}, "@barcodeScanPause": {},
"barcodeScanAssign": "Scanează pentru a atribui cod de bare", "barcodeScanAssign": "Scanează pentru a atribui cod de bare",
"@barcodeScanAssign": {}, "@barcodeScanAssign": {},
@ -472,9 +472,9 @@
"@itemUpdated": {}, "@itemUpdated": {},
"keywords": "Cuvinte cheie", "keywords": "Cuvinte cheie",
"@keywords": {}, "@keywords": {},
"labelDriver": "Label Driver", "labelDriver": "Etichetează șofer",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver", "labelSelectDriver": "Selectați șofer de imprimante etichetă",
"@labelSelectDriver": {}, "@labelSelectDriver": {},
"labelPrinting": "Printare etichete", "labelPrinting": "Printare etichete",
"@labelPrinting": {}, "@labelPrinting": {},
@ -822,386 +822,386 @@
"@response504": {}, "@response504": {},
"response505": "Versiunea HTTP nu este suportată", "response505": "Versiunea HTTP nu este suportată",
"@response505": {}, "@response505": {},
"responseData": "Response data", "responseData": "Date Răspuns",
"@responseData": {}, "@responseData": {},
"responseInvalid": "Invalid Response Code", "responseInvalid": "Cod de răspuns nevalid",
"@responseInvalid": {}, "@responseInvalid": {},
"responseUnknown": "Unknown Response", "responseUnknown": "Răspuns necunoscut",
"@responseUnknown": {}, "@responseUnknown": {},
"result": "Result", "result": "Rezultat",
"@result": { "@result": {
"description": "" "description": ""
}, },
"returned": "Returned", "returned": "Returnat",
"@returned": {}, "@returned": {},
"salesOrder": "Sales Order", "salesOrder": "Comenzi de Vânzare",
"@salesOrder": {}, "@salesOrder": {},
"salesOrders": "Sales Orders", "salesOrders": "Comenzi de Vânzare",
"@salesOrders": {}, "@salesOrders": {},
"salesOrderEnable": "Enable Sales Orders", "salesOrderEnable": "Activează Comenzile de Vânzări",
"@salesOrderEnable": {}, "@salesOrderEnable": {},
"salesOrderEnableDetail": "Enable sales order functionality", "salesOrderEnableDetail": "Activați funcționalitatea comenzilor de vânzare",
"@salesOrderEnableDetail": {}, "@salesOrderEnableDetail": {},
"salesOrderShowCamera": "Camera Shortcut", "salesOrderShowCamera": "Scurtătura Cameră",
"@salesOrderShowCamera": {}, "@salesOrderShowCamera": {},
"salesOrderShowCameraDetail": "Enable image upload shortcut on sales order screen", "salesOrderShowCameraDetail": "Activează scurtătura de încărcare a imaginilor pe ecranul comenzii de vânzare",
"@salesOrderShowCameraDetail": {}, "@salesOrderShowCameraDetail": {},
"salesOrderSettings": "Sales order settings", "salesOrderSettings": "Setările comenzii de vânzare",
"@salesOrderSettings": {}, "@salesOrderSettings": {},
"salesOrderCreate": "New Sales Order", "salesOrderCreate": "Comandă de vânzări nouă",
"@saleOrderCreate": {}, "@saleOrderCreate": {},
"salesOrderEdit": "Edit Sales Order", "salesOrderEdit": "Editează Comanda de Vânzare",
"@salesOrderEdit": {}, "@salesOrderEdit": {},
"salesOrderUpdated": "Sales order updated", "salesOrderUpdated": "Comanda de vanzare actualizată",
"@salesOrderUpdated": {}, "@salesOrderUpdated": {},
"save": "Save", "save": "Salvaţi",
"@save": { "@save": {
"description": "Save" "description": "Save"
}, },
"scanBarcode": "Scan Barcode", "scanBarcode": "Scanați codul de bare",
"@scanBarcode": {}, "@scanBarcode": {},
"scanSupplierPart": "Scan supplier part barcode", "scanSupplierPart": "Scanare cod de bare furnizor",
"@scanSupplierPart": {}, "@scanSupplierPart": {},
"scanIntoLocation": "Scan Into Location", "scanIntoLocation": "Scanare în locație",
"@scanIntoLocation": {}, "@scanIntoLocation": {},
"scanIntoLocationDetail": "Scan this item into location", "scanIntoLocationDetail": "Scanează acest articol în locație",
"@scanIntoLocationDetail": {}, "@scanIntoLocationDetail": {},
"scannerExternal": "External Scanner", "scannerExternal": "Scanner extern",
"@scannerExternal": {}, "@scannerExternal": {},
"scannerExternalDetail": "Use external scanner to read barcodes (wedge mode)", "scannerExternalDetail": "Utilizează scanerul extern pentru a citi codurile de bare (modul wedge)",
"@scannerExternalDetail": {}, "@scannerExternalDetail": {},
"scanReceivedParts": "Scan Received Parts", "scanReceivedParts": "Scanați capitolele primite",
"@scanReceivedParts": {}, "@scanReceivedParts": {},
"search": "Search", "search": "Caută",
"@search": { "@search": {
"description": "search" "description": "search"
}, },
"searching": "Searching", "searching": "Căutare",
"@searching": {}, "@searching": {},
"searchLocation": "Search for location", "searchLocation": "Căutați locația",
"@searchLocation": {}, "@searchLocation": {},
"searchParts": "Search Parts", "searchParts": "Caută componente",
"@searchParts": {}, "@searchParts": {},
"searchStock": "Search Stock", "searchStock": "Căutare Stoc",
"@searchStock": {}, "@searchStock": {},
"select": "Select", "select": "Selectează",
"@select": {}, "@select": {},
"selectFile": "Select File", "selectFile": "Selectează fișier",
"@selectFile": {}, "@selectFile": {},
"selectImage": "Select Image", "selectImage": "Selectează imagine",
"@selectImage": {}, "@selectImage": {},
"selectLocation": "Select a location", "selectLocation": "Selectați o locație",
"@selectLocation": {}, "@selectLocation": {},
"send": "Send", "send": "Trimite",
"@send": {}, "@send": {},
"serialNumber": "Serial Number", "serialNumber": "Număr de serie",
"@serialNumber": {}, "@serialNumber": {},
"serialNumbers": "Serial Numbers", "serialNumbers": "Număr de serie",
"@serialNumbers": {}, "@serialNumbers": {},
"server": "Server", "server": "Server",
"@server": {}, "@server": {},
"serverAddress": "Server Address", "serverAddress": "Adresă server",
"@serverAddress": {}, "@serverAddress": {},
"serverApiRequired": "Required API Version", "serverApiRequired": "Versiunea API necesară",
"@serverApiRequired": {}, "@serverApiRequired": {},
"serverApiVersion": "Server API Version", "serverApiVersion": "Versiune API server",
"@serverApiVersion": {}, "@serverApiVersion": {},
"serverAuthenticationError": "Authentication Error", "serverAuthenticationError": "Eroare autentificare",
"@serverAuthenticationError": {}, "@serverAuthenticationError": {},
"serverCertificateError": "Cerficate Error", "serverCertificateError": "Cerficate Error",
"@serverCertificateError": {}, "@serverCertificateError": {},
"serverCertificateInvalid": "Server HTTPS certificate is invalid", "serverCertificateInvalid": "Certificatul HTTPS al serverului nu este valid",
"@serverCertificateInvalid": {}, "@serverCertificateInvalid": {},
"serverConnected": "Connected to Server", "serverConnected": "Conectare la server",
"@serverConnected": {}, "@serverConnected": {},
"serverConnecting": "Connecting to server", "serverConnecting": "Se conecteaza la server",
"@serverConnecting": {}, "@serverConnecting": {},
"serverCouldNotConnect": "Could not connect to server", "serverCouldNotConnect": "Nu s-a putut conecta la server",
"@serverCouldNotConnect": {}, "@serverCouldNotConnect": {},
"serverEmpty": "Server cannot be empty", "serverEmpty": "Serverul nu poate fi gol",
"@serverEmpty": {}, "@serverEmpty": {},
"serverError": "Server Error", "serverError": "Eroare de server",
"@serverError": {}, "@serverError": {},
"serverDetails": "Server Details", "serverDetails": "Detalii despre server",
"@serverDetails": {}, "@serverDetails": {},
"serverMissingData": "Server response missing required fields", "serverMissingData": "Răspuns server lipsă câmpuri obligatorii",
"@serverMissingData": {}, "@serverMissingData": {},
"serverOld": "Old Server Version", "serverOld": "Versiunea veche a serverului",
"@serverOld": {}, "@serverOld": {},
"serverSettings": "Server Settings", "serverSettings": "Setări server",
"@serverSettings": {}, "@serverSettings": {},
"serverStart": "Server must start with http[s]", "serverStart": "Serverul trebuie să înceapă cu http[s]",
"@serverStart": {}, "@serverStart": {},
"settings": "Settings", "settings": "Setări",
"@settings": {}, "@settings": {},
"serverInstance": "Server Instance", "serverInstance": "Instanță server",
"@serverInstance": {}, "@serverInstance": {},
"serverNotConnected": "Server not connected", "serverNotConnected": "Serverul nu este conectat",
"@serverNotConnected": {}, "@serverNotConnected": {},
"serverNotSelected": "Server not selected", "serverNotSelected": "Serverul nu este selectat",
"@serverNotSelected": {}, "@serverNotSelected": {},
"shipment": "Shipment", "shipment": "Expediere",
"@shipment": {}, "@shipment": {},
"shipments": "Shipments", "shipments": "Livrări",
"@shipments": {}, "@shipments": {},
"shipmentsPending": "Pending Shipments", "shipmentsPending": "Livrări în așteptare",
"@shipmentsPending": {}, "@shipmentsPending": {},
"shipmentAdd": "Add Shipment", "shipmentAdd": "Adaugă livrare",
"@shipmentAdd": {}, "@shipmentAdd": {},
"shipmentCheck": "Check Shipment", "shipmentCheck": "Verifica livrare",
"@shipmentCheck": {}, "@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked", "shipmentCheckDetail": "Marchează livrarea ca verificată",
"@shipmentCheckDetail": {}, "@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked", "shipmentChecked": "Livrare verificată",
"@shipmentChecked": {}, "@shipmentChecked": {},
"shipmentDate": "Shipment Date", "shipmentDate": "Data livrării",
"@shipmentDate": {}, "@shipmentDate": {},
"shipmentEdit": "Edit Shipment", "shipmentEdit": "Editare livrare",
"@shipmentEdit": {}, "@shipmentEdit": {},
"shipmentReference": "Shipment Reference", "shipmentReference": "Referință livrare",
"@shipmentReference": {}, "@shipmentReference": {},
"shipmentSend": "Send Shipment", "shipmentSend": "Livrare Trimisa",
"@shipmentSend": {}, "@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment", "shipmentUncheck": "Debifează livrare",
"@shipmentUncheck": {}, "@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked", "shipmentUncheckDetail": "Marchează livrarea ca nebifat",
"@shipmentUncheckDetail": {}, "@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated", "shipmentUpdated": "Livrare actualizată",
"@shipmentUpdated": {}, "@shipmentUpdated": {},
"shipped": "Shipped", "shipped": "Livrat",
"@shipped": {}, "@shipped": {},
"sku": "SKU", "sku": "SKU",
"@sku": {}, "@sku": {},
"sounds": "Sounds", "sounds": "Sunete",
"@sounds": {}, "@sounds": {},
"soundOnBarcodeAction": "Play audible tone on barcode action", "soundOnBarcodeAction": "Redă ton sonor la acțiunea codului de bare",
"@soundOnBarcodeAction": {}, "@soundOnBarcodeAction": {},
"soundOnServerError": "Play audible tone on server error", "soundOnServerError": "Redă sunetul sonor la eroarea serverului",
"@soundOnServerError": {}, "@soundOnServerError": {},
"startDate": "Start Date", "startDate": "Data inceput",
"@startDate": {}, "@startDate": {},
"status": "Status", "status": "Status",
"@status": {}, "@status": {},
"statusCode": "Status Code", "statusCode": "Status Code",
"@statusCode": {}, "@statusCode": {},
"stock": "Stock", "stock": "Stoc",
"@stock": { "@stock": {
"description": "stock" "description": "stock"
}, },
"stockDetails": "Current available stock quantity", "stockDetails": "Stoc disponibil curent",
"@stockDetails": {}, "@stockDetails": {},
"stockItem": "Stock Item", "stockItem": "Articol Stoc",
"@stockItem": { "@stockItem": {
"description": "stock item title" "description": "stock item title"
}, },
"stockItems": "Stock Items", "stockItems": "Articol Stoc",
"@stockItems": {}, "@stockItems": {},
"stockItemCreate": "New Stock Item", "stockItemCreate": "Element nou în stoc",
"@stockItemCreate": {}, "@stockItemCreate": {},
"stockItemCreateDetail": "Create new stock item in this location", "stockItemCreateDetail": "Crează element nou în stoc în această locație",
"@stockItemCreateDetail": {}, "@stockItemCreateDetail": {},
"stockItemDelete": "Delete Stock Item", "stockItemDelete": "Şterge elementul din stoc",
"@stockItemDelete": {}, "@stockItemDelete": {},
"stockItemDeleteConfirm": "Are you sure you want to delete this stock item?", "stockItemDeleteConfirm": "Sunteţi sigur că doriţi să ştergeţi acest articol din stoc?",
"@stockItemDeleteConfirm": {}, "@stockItemDeleteConfirm": {},
"stockItemDeleteFailure": "Could not delete stock item", "stockItemDeleteFailure": "Nu s-a putut șterge articolul din stoc",
"@stockItemDeleteFailure": {}, "@stockItemDeleteFailure": {},
"stockItemDeleteSuccess": "Stock item deleted", "stockItemDeleteSuccess": "Articol șters",
"@stockItemDeleteSuccess": {}, "@stockItemDeleteSuccess": {},
"stockItemHistory": "Stock History", "stockItemHistory": "Istoric Stoc",
"@stockItemHistory": {}, "@stockItemHistory": {},
"stockItemHistoryDetail": "Display historical stock tracking information", "stockItemHistoryDetail": "Afişează informaţii istorice de urmărire stoc",
"@stockItemHistoryDetail": {}, "@stockItemHistoryDetail": {},
"stockItemTransferred": "Stock item transferred", "stockItemTransferred": "Articol stoc transferat",
"@stockItemTransferred": {}, "@stockItemTransferred": {},
"stockItemUpdated": "Stock item updated", "stockItemUpdated": "Articol stoc actualizat",
"@stockItemUpdated": {}, "@stockItemUpdated": {},
"stockItemsNotAvailable": "No stock items available", "stockItemsNotAvailable": "Nu sunt articole disponibile în stoc",
"@stockItemsNotAvailable": {}, "@stockItemsNotAvailable": {},
"stockItemNotes": "Stock Item Notes", "stockItemNotes": "Note element de stoc",
"@stockItemNotes": {}, "@stockItemNotes": {},
"stockItemUpdateSuccess": "Stock item updated", "stockItemUpdateSuccess": "Articol stoc actualizat",
"@stockItemUpdateSuccess": {}, "@stockItemUpdateSuccess": {},
"stockItemUpdateFailure": "Stock item update failed", "stockItemUpdateFailure": "Actualizarea articolului stoc a eșuat",
"@stockItemUpdateFailure": {}, "@stockItemUpdateFailure": {},
"stockLocation": "Stock Location", "stockLocation": "Locația stocului",
"@stockLocation": { "@stockLocation": {
"description": "stock location" "description": "stock location"
}, },
"stockLocations": "Stock Locations", "stockLocations": "Locația stocului",
"@stockLocations": {}, "@stockLocations": {},
"stockTopLevel": "Top level stock location", "stockTopLevel": "Locație stoc nivel superior",
"@stockTopLevel": {}, "@stockTopLevel": {},
"strictHttps": "Use Strict HTTPS", "strictHttps": "Folosește HTTPS Strict",
"@strictHttps": {}, "@strictHttps": {},
"strictHttpsDetails": "Enforce strict checking of HTTPs certificates", "strictHttpsDetails": "Impune controlul strict al certificatelor HTTP",
"@strictHttpsDetails": {}, "@strictHttpsDetails": {},
"subcategory": "Subcategory", "subcategory": "Subcategorie",
"@subcategory": {}, "@subcategory": {},
"subcategories": "Subcategories", "subcategories": "Subcategorii",
"@subcategories": {}, "@subcategories": {},
"sublocation": "Sublocation", "sublocation": "Sublocare",
"@sublocation": {}, "@sublocation": {},
"sublocations": "Sublocations", "sublocations": "Sublocare",
"@sublocations": {}, "@sublocations": {},
"sublocationNone": "No Sublocations", "sublocationNone": "Fără sublocări",
"@sublocationNone": {}, "@sublocationNone": {},
"sublocationNoneDetail": "No sublocations available", "sublocationNoneDetail": "Nu există sublocații disponibile",
"@sublocationNoneDetail": {}, "@sublocationNoneDetail": {},
"submitFeedback": "Submit Feedback", "submitFeedback": "Trimiteți feedback",
"@submitFeedback": {}, "@submitFeedback": {},
"suppliedParts": "Supplied Parts", "suppliedParts": "Piese furnizate",
"@suppliedParts": {}, "@suppliedParts": {},
"supplier": "Supplier", "supplier": "Furnizor",
"@supplier": {}, "@supplier": {},
"supplierPart": "Supplier Part", "supplierPart": "Piesă Furnizor",
"@supplierPart": {}, "@supplierPart": {},
"supplierPartEdit": "Edit Supplier Part", "supplierPartEdit": "Editați articol furnizorului",
"@supplierPartEdit": {}, "@supplierPartEdit": {},
"supplierPartNumber": "Supplier Part Number", "supplierPartNumber": "Cod furnizor",
"@supplierPartNumber": {}, "@supplierPartNumber": {},
"supplierPartUpdated": "Supplier Part Updated", "supplierPartUpdated": "Cod furnizor actualizat",
"@supplierPartUpdated": {}, "@supplierPartUpdated": {},
"supplierParts": "Supplier Parts", "supplierParts": "Piese Furnizor",
"@supplierParts": {}, "@supplierParts": {},
"suppliers": "Suppliers", "suppliers": "Furnizori",
"@suppliers": {}, "@suppliers": {},
"supplierReference": "Supplier Reference", "supplierReference": "Cod furnizor",
"@supplierReference": {}, "@supplierReference": {},
"switchCamera": "Switch Camera", "switchCamera": "Comutați Camera",
"@switchCamera": {}, "@switchCamera": {},
"takePicture": "Take Picture", "takePicture": "Faceți o fotografie",
"@takePicture": {}, "@takePicture": {},
"targetDate": "Target Date", "targetDate": "Data țintă",
"@targetDate": {}, "@targetDate": {},
"templatePart": "Parent Template Part", "templatePart": "Capitol șablon părinte",
"@templatePart": {}, "@templatePart": {},
"testName": "Test Name", "testName": "Nume test",
"@testName": {}, "@testName": {},
"testPassedOrFailed": "Test passed or failed", "testPassedOrFailed": "Testul a trecut sau a eșuat",
"@testPassedOrFailed": {}, "@testPassedOrFailed": {},
"testsRequired": "Required Tests", "testsRequired": "Teste necesare",
"@testsRequired": {}, "@testsRequired": {},
"testResults": "Test Results", "testResults": "Rezultatele testului",
"@testResults": { "@testResults": {
"description": "" "description": ""
}, },
"testResultsDetail": "Display stock item test results", "testResultsDetail": "Afișează rezultatele testului produsului în stoc",
"@testResultsDetail": {}, "@testResultsDetail": {},
"testResultAdd": "Add Test Result", "testResultAdd": "Adăugare rezultat test",
"@testResultAdd": {}, "@testResultAdd": {},
"testResultNone": "No Test Results", "testResultNone": "Niciun rezultat de test",
"@testResultNone": {}, "@testResultNone": {},
"testResultNoneDetail": "No test results available", "testResultNoneDetail": "Nici un rezultat de test disponibil",
"@testResultNoneDetail": {}, "@testResultNoneDetail": {},
"testResultUploadFail": "Error uploading test result", "testResultUploadFail": "Eroare încărcare rezultat test",
"@testResultUploadFail": {}, "@testResultUploadFail": {},
"testResultUploadPass": "Test result uploaded", "testResultUploadPass": "Rezultat test încărcat",
"@testResultUploadPass": {}, "@testResultUploadPass": {},
"timeout": "Timeout", "timeout": "Timeout",
"@timeout": { "@timeout": {
"description": "" "description": ""
}, },
"toggleTorch": "Toggle Torch", "toggleTorch": "Comutare lanternă",
"@toggleTorch": {}, "@toggleTorch": {},
"tokenError": "Token Error", "tokenError": "Eroare token",
"@tokenError": {}, "@tokenError": {},
"tokenMissing": "Missing Token", "tokenMissing": "Token lipsă",
"@tokenMissing": {}, "@tokenMissing": {},
"tokenMissingFromResponse": "Access token missing from response", "tokenMissingFromResponse": "Token-ul de acces lipsește din răspuns",
"@tokenMissingFromResponse": {}, "@tokenMissingFromResponse": {},
"totalPrice": "Total Price", "totalPrice": "Preț total",
"@totalPrice": {}, "@totalPrice": {},
"trackingNumber": "Tracking Number", "trackingNumber": "Număr de urmărire",
"@trackingNumber": {}, "@trackingNumber": {},
"transfer": "Transfer", "transfer": "Transfer",
"@transfer": { "@transfer": {
"description": "transfer" "description": "transfer"
}, },
"transferStock": "Transfer Stock", "transferStock": "Transfera stoc",
"@transferStock": { "@transferStock": {
"description": "transfer stock" "description": "transfer stock"
}, },
"transferStockDetail": "Transfer item to a different location", "transferStockDetail": "Transferați articolul într-o locație diferită",
"@transferStockDetail": {}, "@transferStockDetail": {},
"transferStockLocation": "Transfer Stock Location", "transferStockLocation": "Transfer locație stoc",
"@transferStockLocation": {}, "@transferStockLocation": {},
"transferStockLocationDetail": "Transfer this stock location into another", "transferStockLocationDetail": "Transferați această locație a stocului în alta",
"@transferStockLocationDetail": {}, "@transferStockLocationDetail": {},
"translate": "Translate", "translate": "Traduceți",
"@translate": {}, "@translate": {},
"translateHelp": "Help translate the InvenTree app", "translateHelp": "Ajută la traducerea aplicației InvenTree",
"@translateHelp": {}, "@translateHelp": {},
"unavailable": "Unavailable", "unavailable": "Indisponibil",
"@unavailable": {}, "@unavailable": {},
"unavailableDetail": "Item is not available", "unavailableDetail": "Articolul nu este disponibil",
"@unavailableDetail": {}, "@unavailableDetail": {},
"unitPrice": "Unit Price", "unitPrice": "Preţ Unitar",
"@unitPrice": {}, "@unitPrice": {},
"units": "Units", "units": "Unități",
"@units": {}, "@units": {},
"unknownResponse": "Unknown Response", "unknownResponse": "Răspuns necunoscut",
"@unknownResponse": {}, "@unknownResponse": {},
"upload": "Upload", "upload": "Încărcaţi",
"@upload": {}, "@upload": {},
"uploadFailed": "File upload failed", "uploadFailed": "Încărcare fișier eșuată",
"@uploadFailed": {}, "@uploadFailed": {},
"uploadSuccess": "File uploaded", "uploadSuccess": "Fişier încărcat",
"@uploadSuccess": {}, "@uploadSuccess": {},
"uploadImage": "Upload Image", "uploadImage": "Încărcare imagine",
"@uploadImage": {}, "@uploadImage": {},
"usedIn": "Used In", "usedIn": "Folosite în",
"@usedIn": {}, "@usedIn": {},
"usedInDetails": "Assemblies which require this part", "usedInDetails": "Ansambluri care necesită aceast articol",
"@usedInDetails": {}, "@usedInDetails": {},
"username": "Nume utilizator", "username": "Nume utilizator",
"@username": {}, "@username": {},
"usernameEmpty": "Numele de utilizator nu poate fi gol", "usernameEmpty": "Numele de utilizator nu poate fi gol",
"@usernameEmpty": {}, "@usernameEmpty": {},
"value": "Value", "value": "Valoare",
"@value": { "@value": {
"description": "value" "description": "value"
}, },
"valueCannotBeEmpty": "Value cannot be empty", "valueCannotBeEmpty": "Valoarea nu poate fi goală",
"@valueCannotBeEmpty": {}, "@valueCannotBeEmpty": {},
"valueRequired": "Value is required", "valueRequired": "Valoarea este obligatorie",
"@valueRequired": {}, "@valueRequired": {},
"variants": "Variants", "variants": "Variante",
"@variants": {}, "@variants": {},
"version": "Version", "version": "Verisune",
"@version": {}, "@version": {},
"viewSupplierPart": "View Supplier Part", "viewSupplierPart": "Vezi capitol furnizor",
"@viewSupplierPart": {}, "@viewSupplierPart": {},
"website": "Website", "website": "Website",
"@website": {}, "@website": {},
"yes": "Yes", "yes": "Da",
"@yes": {}, "@yes": {},
"price": "Price", "price": "Preț",
"@price": {}, "@price": {},
"priceRange": "Price Range", "priceRange": "Interval de preț",
"@priceRange": {}, "@priceRange": {},
"priceOverrideMin": "Minimum Price Override", "priceOverrideMin": "Suprascriere Preț Minim",
"@priceOverrideMin": {}, "@priceOverrideMin": {},
"priceOverrideMax": "Maximum Price Override", "priceOverrideMax": "Suprascriere de preț maximă",
"@priceOverrideMax": {}, "@priceOverrideMax": {},
"salePrice": "Sale Price", "salePrice": "Preț de vânzare",
"@salePrice": {}, "@salePrice": {},
"saleHistory": "Sale History", "saleHistory": "Istoric vanzari",
"@saleHistory": {}, "@saleHistory": {},
"supplierPricing": "Supplier Pricing", "supplierPricing": "Prețurile furnizorului",
"@supplierPricing": {}, "@supplierPricing": {},
"bomCost": "BOM Cost", "bomCost": "Cost BOM",
"@bomCost": {}, "@bomCost": {},
"internalCost": "Internal Cost", "internalCost": "Cost intern",
"@internalCost": {}, "@internalCost": {},
"variantCost": "Variant Cost", "variantCost": "Cost variantă",
"@variantCost": {}, "@variantCost": {},
"overallPricing": "Overall Pricing", "overallPricing": "Preț general",
"@overallPricing": {}, "@overallPricing": {},
"pricingOverrides": "Pricing Overrides", "pricingOverrides": "Suprascrieri preturi",
"@pricingOverrides": {}, "@pricingOverrides": {},
"currency": "Currency", "currency": "Monedă",
"@currency": {}, "@currency": {},
"priceBreaks": "Price Breaks", "priceBreaks": "Reduceri de preț",
"@priceBreaks": {} "@priceBreaks": {}
} }

View file

@ -46,7 +46,7 @@
"@aspectRatioSquare": {}, "@aspectRatioSquare": {},
"allocateStock": "Выделить запас", "allocateStock": "Выделить запас",
"@allocateStock": {}, "@allocateStock": {},
"allocatedStock": "Allocated Stock", "allocatedStock": "Зарезервированные остатки",
"@allocatedStock": {}, "@allocatedStock": {},
"appReleaseNotes": "Показать заметки о выпуске приложения", "appReleaseNotes": "Показать заметки о выпуске приложения",
"@appReleaseNotes": {}, "@appReleaseNotes": {},
@ -102,7 +102,7 @@
"@barcodeReceivePart": {}, "@barcodeReceivePart": {},
"barcodeScanPaused": "Сканирование штрих-кода приостановлено", "barcodeScanPaused": "Сканирование штрих-кода приостановлено",
"@barodeScanPaused": {}, "@barodeScanPaused": {},
"barcodeScanPause": "Tap to pause scanning", "barcodeScanPause": "Нажмите, чтобы приостановить сканирование",
"@barcodeScanPause": {}, "@barcodeScanPause": {},
"barcodeScanAssign": "Сканировать для присвоения штрих-кода", "barcodeScanAssign": "Сканировать для присвоения штрих-кода",
"@barcodeScanAssign": {}, "@barcodeScanAssign": {},
@ -240,7 +240,7 @@
"@deletePartDetail": {}, "@deletePartDetail": {},
"deleteSuccess": "Удаление успешно завершено", "deleteSuccess": "Удаление успешно завершено",
"@deleteSuccess": {}, "@deleteSuccess": {},
"deliveryDate": "Delivery Date", "deliveryDate": "Дата доставки",
"@deliveryDate": {}, "@deliveryDate": {},
"description": "Описание", "description": "Описание",
"@description": {}, "@description": {},
@ -384,9 +384,9 @@
"@homeShowPo": {}, "@homeShowPo": {},
"homeShowPoDescription": "Показывать кнопку заказа на главном экране", "homeShowPoDescription": "Показывать кнопку заказа на главном экране",
"@homeShowPoDescription": {}, "@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments", "homeShowShipments": "Показать отгрузки",
"@homeShowShipments": {}, "@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen", "homeShowShipmentsDescription": "Показывать ожидающие отгрузки на главном экране",
"@homeShowShipmentsDescription": {}, "@homeShowShipmentsDescription": {},
"homeShowSo": "Показать заказы на продажу", "homeShowSo": "Показать заказы на продажу",
"@homeShowSo": {}, "@homeShowSo": {},
@ -454,9 +454,9 @@
"@invalidSupplierPart": {}, "@invalidSupplierPart": {},
"invalidUsernamePassword": "Неверная комбинация имени пользователя и пароля", "invalidUsernamePassword": "Неверная комбинация имени пользователя и пароля",
"@invalidUsernamePassword": {}, "@invalidUsernamePassword": {},
"invoice": "Invoice", "invoice": "Счет",
"@invoice": {}, "@invoice": {},
"invoiceNumber": "Invoice Number", "invoiceNumber": "Номер счета",
"@invoiceNumber": {}, "@invoiceNumber": {},
"issue": "Оформить", "issue": "Оформить",
"@issue": {}, "@issue": {},
@ -472,9 +472,9 @@
"@itemUpdated": {}, "@itemUpdated": {},
"keywords": "Ключевые слова", "keywords": "Ключевые слова",
"@keywords": {}, "@keywords": {},
"labelDriver": "Label Driver", "labelDriver": "Драйвер принтера этикеток",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver", "labelSelectDriver": "Выберите драйвер принтера этикеток",
"@labelSelectDriver": {}, "@labelSelectDriver": {},
"labelPrinting": "Печать этикеток", "labelPrinting": "Печать этикеток",
"@labelPrinting": {}, "@labelPrinting": {},
@ -514,7 +514,7 @@
"@locationCreate": {}, "@locationCreate": {},
"locationCreateDetail": "Создать новое расположение склада", "locationCreateDetail": "Создать новое расположение склада",
"@locationCreateDetail": {}, "@locationCreateDetail": {},
"locationDefault": "Default Location", "locationDefault": "Расположение по умолчанию",
"@locationDefault": {}, "@locationDefault": {},
"locationNotSet": "Не указано месторасположение", "locationNotSet": "Не указано месторасположение",
"@locationNotSet": {}, "@locationNotSet": {},
@ -544,9 +544,9 @@
"@missingData": {}, "@missingData": {},
"name": "Название", "name": "Название",
"@name": {}, "@name": {},
"no": "No", "no": "Нет",
"@no": {}, "@no": {},
"notApplicable": "N/A", "notApplicable": "Н",
"@notApplicable": {}, "@notApplicable": {},
"notConnected": "Соединение не установлено", "notConnected": "Соединение не установлено",
"@notConnected": {}, "@notConnected": {},
@ -660,7 +660,7 @@
"@password": {}, "@password": {},
"passwordEmpty": "Пароль не может быть пустым", "passwordEmpty": "Пароль не может быть пустым",
"@passwordEmpty": {}, "@passwordEmpty": {},
"pending": "Pending", "pending": "В обработке",
"@pending": {}, "@pending": {},
"permissionAccountDenied": "Ваш аккаунт не имеет разрешения на выполнение этого действия", "permissionAccountDenied": "Ваш аккаунт не имеет разрешения на выполнение этого действия",
"@permissionAccountDenied": {}, "@permissionAccountDenied": {},
@ -940,33 +940,33 @@
"@serverNotConnected": {}, "@serverNotConnected": {},
"serverNotSelected": "Сервер не выбран", "serverNotSelected": "Сервер не выбран",
"@serverNotSelected": {}, "@serverNotSelected": {},
"shipment": "Shipment", "shipment": "Отгрузка",
"@shipment": {}, "@shipment": {},
"shipments": "Поставки", "shipments": "Поставки",
"@shipments": {}, "@shipments": {},
"shipmentsPending": "Pending Shipments", "shipmentsPending": "Ожидающие отгрузки",
"@shipmentsPending": {}, "@shipmentsPending": {},
"shipmentAdd": "Новое Отправление", "shipmentAdd": "Новое Отправление",
"@shipmentAdd": {}, "@shipmentAdd": {},
"shipmentCheck": "Check Shipment", "shipmentCheck": "Проверить отгрузку",
"@shipmentCheck": {}, "@shipmentCheck": {},
"shipmentCheckDetail": "Mark this shipment as checked", "shipmentCheckDetail": "Отметить этот груз как проверенный",
"@shipmentCheckDetail": {}, "@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked", "shipmentChecked": "Отгрузка проверена",
"@shipmentChecked": {}, "@shipmentChecked": {},
"shipmentDate": "Shipment Date", "shipmentDate": "Дата отгрузки",
"@shipmentDate": {}, "@shipmentDate": {},
"shipmentEdit": "Edit Shipment", "shipmentEdit": "Редактировать отгрузку",
"@shipmentEdit": {}, "@shipmentEdit": {},
"shipmentReference": "Shipment Reference", "shipmentReference": "Ссылка на отгрузку",
"@shipmentReference": {}, "@shipmentReference": {},
"shipmentSend": "Send Shipment", "shipmentSend": "Отправить отгрузку",
"@shipmentSend": {}, "@shipmentSend": {},
"shipmentUncheck": "Uncheck Shipment", "shipmentUncheck": "Снять отметку с отгрузки",
"@shipmentUncheck": {}, "@shipmentUncheck": {},
"shipmentUncheckDetail": "Mark this shipment as unchecked", "shipmentUncheckDetail": "Отметить этот груз как непроверенный",
"@shipmentUncheckDetail": {}, "@shipmentUncheckDetail": {},
"shipmentUpdated": "Shipment Updated", "shipmentUpdated": "Отгрузка обновлена",
"@shipmentUpdated": {}, "@shipmentUpdated": {},
"shipped": "Отгружено", "shipped": "Отгружено",
"@shipped": {}, "@shipped": {},
@ -1112,7 +1112,7 @@
"@tokenMissingFromResponse": {}, "@tokenMissingFromResponse": {},
"totalPrice": "Общая стоимость", "totalPrice": "Общая стоимость",
"@totalPrice": {}, "@totalPrice": {},
"trackingNumber": "Tracking Number", "trackingNumber": "Номер отслеживания",
"@trackingNumber": {}, "@trackingNumber": {},
"transfer": "Перемещение", "transfer": "Перемещение",
"@transfer": { "@transfer": {
@ -1174,7 +1174,7 @@
"@viewSupplierPart": {}, "@viewSupplierPart": {},
"website": "Сайт", "website": "Сайт",
"@website": {}, "@website": {},
"yes": "Yes", "yes": "Да",
"@yes": {}, "@yes": {},
"price": "Цена", "price": "Цена",
"@price": {}, "@price": {},

View file

@ -102,7 +102,7 @@
"@barcodeReceivePart": {}, "@barcodeReceivePart": {},
"barcodeScanPaused": "Streckkodsskanning pausad", "barcodeScanPaused": "Streckkodsskanning pausad",
"@barodeScanPaused": {}, "@barodeScanPaused": {},
"barcodeScanPause": "Tap to pause scanning", "barcodeScanPause": "Tryck för att pausa skanning",
"@barcodeScanPause": {}, "@barcodeScanPause": {},
"barcodeScanAssign": "Skanna för att tilldela streckkod", "barcodeScanAssign": "Skanna för att tilldela streckkod",
"@barcodeScanAssign": {}, "@barcodeScanAssign": {},
@ -228,7 +228,7 @@
"@delete": {}, "@delete": {},
"deleteFailed": "Borttagning misslyckades", "deleteFailed": "Borttagning misslyckades",
"@deleteFailed": {}, "@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?", "deleteImageConfirmation": "Är du säker på att du vill radera denna bild?",
"@deleteImageConfirmation": {}, "@deleteImageConfirmation": {},
"deleteImageTooltip": "Radera bild", "deleteImageTooltip": "Radera bild",
"@deleteImageTooltip": {}, "@deleteImageTooltip": {},
@ -240,7 +240,7 @@
"@deletePartDetail": {}, "@deletePartDetail": {},
"deleteSuccess": "Borttagning lyckad", "deleteSuccess": "Borttagning lyckad",
"@deleteSuccess": {}, "@deleteSuccess": {},
"deliveryDate": "Delivery Date", "deliveryDate": "Leveransdatum",
"@deliveryDate": {}, "@deliveryDate": {},
"description": "Beskrivning", "description": "Beskrivning",
"@description": {}, "@description": {},
@ -384,9 +384,9 @@
"@homeShowPo": {}, "@homeShowPo": {},
"homeShowPoDescription": "Visa knappen för inköpsorder på startskärmen", "homeShowPoDescription": "Visa knappen för inköpsorder på startskärmen",
"@homeShowPoDescription": {}, "@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments", "homeShowShipments": "Visa leveranser",
"@homeShowShipments": {}, "@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen", "homeShowShipmentsDescription": "Visa väntande leveranser på startskärmen",
"@homeShowShipmentsDescription": {}, "@homeShowShipmentsDescription": {},
"homeShowSo": "Visa försäljningsorder", "homeShowSo": "Visa försäljningsorder",
"@homeShowSo": {}, "@homeShowSo": {},
@ -514,7 +514,7 @@
"@locationCreate": {}, "@locationCreate": {},
"locationCreateDetail": "Skapa ny lagerplats", "locationCreateDetail": "Skapa ny lagerplats",
"@locationCreateDetail": {}, "@locationCreateDetail": {},
"locationDefault": "Default Location", "locationDefault": "Förvald plats",
"@locationDefault": {}, "@locationDefault": {},
"locationNotSet": "Ingen plats specificerad", "locationNotSet": "Ingen plats specificerad",
"@locationNotSet": {}, "@locationNotSet": {},
@ -564,9 +564,9 @@
"@noResults": {}, "@noResults": {},
"noImageAvailable": "Ingen bild tillgänglig", "noImageAvailable": "Ingen bild tillgänglig",
"@noImageAvailable": {}, "@noImageAvailable": {},
"noPricingAvailable": "No pricing available", "noPricingAvailable": "Ingen prisinformation tillgänglig",
"@noPricingAvailable": {}, "@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part", "noPricingDataFound": "Inga prisuppgifter hittades för denna artikel",
"@noPricingDataFound": {}, "@noPricingDataFound": {},
"noSubcategories": "Inga underkategorier", "noSubcategories": "Inga underkategorier",
"@noSubcategories": {}, "@noSubcategories": {},
@ -630,7 +630,7 @@
"@partsNone": {}, "@partsNone": {},
"partNoResults": "Inga artiklar som matchar sökfrågan", "partNoResults": "Inga artiklar som matchar sökfrågan",
"@partNoResults": {}, "@partNoResults": {},
"partPricing": "Part Pricing", "partPricing": "Artikelpris",
"@partPricing": {}, "@partPricing": {},
"partPricingSettingDetail": "Display part pricing information", "partPricingSettingDetail": "Display part pricing information",
"@pricingSettingDetail": {}, "@pricingSettingDetail": {},
@ -762,7 +762,7 @@
"@reference": {}, "@reference": {},
"refresh": "Uppdatera", "refresh": "Uppdatera",
"@refresh": {}, "@refresh": {},
"rotateClockwise": "Rotate 90° clockwise", "rotateClockwise": "Rotera 90° medurs",
"@rotateClockwise": {}, "@rotateClockwise": {},
"refreshing": "Uppdaterar", "refreshing": "Uppdaterar",
"@refreshing": {}, "@refreshing": {},
@ -940,7 +940,7 @@
"@serverNotConnected": {}, "@serverNotConnected": {},
"serverNotSelected": "Servern är inte vald", "serverNotSelected": "Servern är inte vald",
"@serverNotSelected": {}, "@serverNotSelected": {},
"shipment": "Shipment", "shipment": "Försändelse",
"@shipment": {}, "@shipment": {},
"shipments": "Frakt", "shipments": "Frakt",
"@shipments": {}, "@shipments": {},
@ -954,7 +954,7 @@
"@shipmentCheckDetail": {}, "@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked", "shipmentChecked": "Shipment Checked",
"@shipmentChecked": {}, "@shipmentChecked": {},
"shipmentDate": "Shipment Date", "shipmentDate": "Leveransdatum",
"@shipmentDate": {}, "@shipmentDate": {},
"shipmentEdit": "Edit Shipment", "shipmentEdit": "Edit Shipment",
"@shipmentEdit": {}, "@shipmentEdit": {},
@ -1112,7 +1112,7 @@
"@tokenMissingFromResponse": {}, "@tokenMissingFromResponse": {},
"totalPrice": "Totalpris", "totalPrice": "Totalpris",
"@totalPrice": {}, "@totalPrice": {},
"trackingNumber": "Tracking Number", "trackingNumber": "Sändningsnummer",
"@trackingNumber": {}, "@trackingNumber": {},
"transfer": "Överföring", "transfer": "Överföring",
"@transfer": { "@transfer": {
@ -1184,11 +1184,11 @@
"@priceOverrideMin": {}, "@priceOverrideMin": {},
"priceOverrideMax": "Maximum Price Override", "priceOverrideMax": "Maximum Price Override",
"@priceOverrideMax": {}, "@priceOverrideMax": {},
"salePrice": "Sale Price", "salePrice": "Försäljningspris",
"@salePrice": {}, "@salePrice": {},
"saleHistory": "Sale History", "saleHistory": "Sale History",
"@saleHistory": {}, "@saleHistory": {},
"supplierPricing": "Supplier Pricing", "supplierPricing": "Leverantörspriser",
"@supplierPricing": {}, "@supplierPricing": {},
"bomCost": "BOM Cost", "bomCost": "BOM Cost",
"@bomCost": {}, "@bomCost": {},

View file

@ -10,7 +10,7 @@
}, },
"about": "Hakkında", "about": "Hakkında",
"@about": {}, "@about": {},
"accountDetails": "Hesap Detayları", "accountDetails": "Hesap Ayrıntıları",
"@accountDetails": {}, "@accountDetails": {},
"actions": "Eylemler", "actions": "Eylemler",
"@actions": { "@actions": {
@ -34,7 +34,7 @@
"@appCredits": {}, "@appCredits": {},
"appDetails": "Uygulama Ayrıntıları", "appDetails": "Uygulama Ayrıntıları",
"@appDetails": {}, "@appDetails": {},
"allocated": "Tahsis edildi", "allocated": "Tahsis Edildi",
"@allocated": {}, "@allocated": {},
"aspectRatio16x9": "16:9", "aspectRatio16x9": "16:9",
"@aspectRatio16x9": {}, "@aspectRatio16x9": {},
@ -44,11 +44,11 @@
"@aspectRatio4x3": {}, "@aspectRatio4x3": {},
"aspectRatioSquare": "Kare (1:1)", "aspectRatioSquare": "Kare (1:1)",
"@aspectRatioSquare": {}, "@aspectRatioSquare": {},
"allocateStock": "Tahsisli stok", "allocateStock": "Stoku Tahsis Et",
"@allocateStock": {}, "@allocateStock": {},
"allocatedStock": "Tahsis Edilen Stok", "allocatedStock": "Tahsis Edilen Stok",
"@allocatedStock": {}, "@allocatedStock": {},
"appReleaseNotes": "Uygulama yayınlama notlarınıster", "appReleaseNotes": "Uygulama yayınlama notlarınırüntüle",
"@appReleaseNotes": {}, "@appReleaseNotes": {},
"appSettings": "Uygulama Ayarları", "appSettings": "Uygulama Ayarları",
"@appSettings": {}, "@appSettings": {},
@ -60,7 +60,7 @@
"@assignedToMeDetail": {}, "@assignedToMeDetail": {},
"attachments": "Ekler", "attachments": "Ekler",
"@attachments": {}, "@attachments": {},
"attachImage": "Resim ekle", "attachImage": "Görsel Ekle",
"@attachImage": { "@attachImage": {
"description": "Attach an image" "description": "Attach an image"
}, },
@ -98,11 +98,11 @@
"@barcodeNotAssigned": {}, "@barcodeNotAssigned": {},
"barcodeScanPart": "Parça barkodnu tara", "barcodeScanPart": "Parça barkodnu tara",
"@barcodeScanPart": {}, "@barcodeScanPart": {},
"barcodeReceivePart": "Tesellüm barkodunu tara", "barcodeReceivePart": "Parçayı teslim almak için barkodu tarayın",
"@barcodeReceivePart": {}, "@barcodeReceivePart": {},
"barcodeScanPaused": "Barkod tarama duraklatıldı", "barcodeScanPaused": "Barkod tarama duraklatıldı",
"@barodeScanPaused": {}, "@barodeScanPaused": {},
"barcodeScanPause": "Tap to pause scanning", "barcodeScanPause": "Taramayı duraklatmak için dokunun",
"@barcodeScanPause": {}, "@barcodeScanPause": {},
"barcodeScanAssign": "Atanmış barkodu tara", "barcodeScanAssign": "Atanmış barkodu tara",
"@barcodeScanAssign": {}, "@barcodeScanAssign": {},
@ -116,7 +116,7 @@
"@barcodeScanDelayDetail": {}, "@barcodeScanDelayDetail": {},
"barcodeScanGeneral": "Bir InvenTree barkodu tara", "barcodeScanGeneral": "Bir InvenTree barkodu tara",
"@barcodeScanGeneral": {}, "@barcodeScanGeneral": {},
"barcodeScanInItems": "Stok ögelerini bu konum içine tara", "barcodeScanInItems": "Stok kalemlerini bu konumun içine tara",
"@barcodeScanInItems": {}, "@barcodeScanInItems": {},
"barcodeScanLocation": "Stok konumu tara", "barcodeScanLocation": "Stok konumu tara",
"@barcodeScanLocation": {}, "@barcodeScanLocation": {},
@ -128,7 +128,7 @@
"@barcodeScanIntoLocationSuccess": {}, "@barcodeScanIntoLocationSuccess": {},
"barcodeScanIntoLocationFailure": "Madde taranmış değil", "barcodeScanIntoLocationFailure": "Madde taranmış değil",
"@barcodeScanIntoLocationFailure": {}, "@barcodeScanIntoLocationFailure": {},
"barcodeScanItem": "Stok öğesi tara", "barcodeScanItem": "Stok kalemi tara",
"@barcodeScanItem": {}, "@barcodeScanItem": {},
"barcodeTones": "Barkod Tonları", "barcodeTones": "Barkod Tonları",
"@barcodeTones": {}, "@barcodeTones": {},
@ -138,15 +138,15 @@
"@barcodeUnknown": {}, "@barcodeUnknown": {},
"batchCode": "Grup kodu", "batchCode": "Grup kodu",
"@batchCode": {}, "@batchCode": {},
"billOfMaterials": "Fatura materyalleri", "billOfMaterials": "Ürün Ağacı",
"@billOfMaterials": {}, "@billOfMaterials": {},
"bom": "BOM", "bom": "BOM",
"@bom": {}, "@bom": {},
"bomEnable": "Malzeme Listesini Görüntüle", "bomEnable": "Ürün Ağacını Görüntüle",
"@bomEnable": {}, "@bomEnable": {},
"build": "Oluştur", "build": "Üret",
"@build": {}, "@build": {},
"building": "Oluşturma", "building": "Üretiliyor",
"@building": {}, "@building": {},
"cameraCreationError": "Kamera Kontrolcüsü Açılamadı", "cameraCreationError": "Kamera Kontrolcüsü Açılamadı",
"@cameraCreationError": {}, "@cameraCreationError": {},
@ -176,7 +176,7 @@
"@companyEdit": {}, "@companyEdit": {},
"companyNoResults": "Sorguyla eşleşen şirket yok", "companyNoResults": "Sorguyla eşleşen şirket yok",
"@companyNoResults": {}, "@companyNoResults": {},
"companyUpdated": "Firma bilgileri güncellendi", "companyUpdated": "Şirket bilgileri güncellendi",
"@companyUpdated": {}, "@companyUpdated": {},
"companies": "Şirketler", "companies": "Şirketler",
"@companies": {}, "@companies": {},
@ -206,7 +206,7 @@
"@credits": {}, "@credits": {},
"crop": "Kırp", "crop": "Kırp",
"@crop": {}, "@crop": {},
"cropImage": "Resmi Kırp", "cropImage": "Görseli Kırp",
"@cropImage": {}, "@cropImage": {},
"customer": "Müşteri", "customer": "Müşteri",
"@customer": {}, "@customer": {},
@ -228,11 +228,11 @@
"@delete": {}, "@delete": {},
"deleteFailed": "Silme işlemi başarısız", "deleteFailed": "Silme işlemi başarısız",
"@deleteFailed": {}, "@deleteFailed": {},
"deleteImageConfirmation": "Bu resmi silmek istediğinizden emin misiniz?", "deleteImageConfirmation": "Bu görseli silmek istediğinize emin misiniz?",
"@deleteImageConfirmation": {}, "@deleteImageConfirmation": {},
"deleteImageTooltip": "Görüntüyü Sil", "deleteImageTooltip": "Görseli Sil",
"@deleteImageTooltip": {}, "@deleteImageTooltip": {},
"deleteImage": "Resmi sil", "deleteImage": "Görseli sil",
"@deleteImage": {}, "@deleteImage": {},
"deletePart": "Parça Sil", "deletePart": "Parça Sil",
"@deletePart": {}, "@deletePart": {},
@ -244,11 +244,11 @@
"@deliveryDate": {}, "@deliveryDate": {},
"description": "Açıklama", "description": "Açıklama",
"@description": {}, "@description": {},
"destination": "Varış Yeri", "destination": "Hedef",
"@destination": {}, "@destination": {},
"destroyed": "Yok edildi", "destroyed": "Yok edildi",
"@destroyed": {}, "@destroyed": {},
"details": "Detaylar", "details": "Ayrıntılar",
"@details": { "@details": {
"description": "details" "description": "details"
}, },
@ -278,9 +278,9 @@
"@editPart": { "@editPart": {
"description": "edit part" "description": "edit part"
}, },
"editItem": "Parçayı Düzenle", "editItem": "Stok kalemi düzenle",
"@editItem": {}, "@editItem": {},
"editLineItem": "Satır Ögesini Düzenle", "editLineItem": "Satırı Düzenle",
"@editLineItem": {}, "@editLineItem": {},
"email": "E-posta", "email": "E-posta",
"@email": {}, "@email": {},
@ -316,9 +316,9 @@
"@expiryExpired": {}, "@expiryExpired": {},
"expiryStale": "Eskimiş", "expiryStale": "Eskimiş",
"@expiryStale": {}, "@expiryStale": {},
"extraLineItem": "Fazladan Satır Ögesi", "extraLineItem": "Ek Kalem",
"@extraLineItem": {}, "@extraLineItem": {},
"extraLineItems": "Fazladan Satır Ögeleri", "extraLineItems": "Ek Kalemler",
"@extraLineItems": {}, "@extraLineItems": {},
"feedback": "Geri Bildirim", "feedback": "Geri Bildirim",
"@feedback": {}, "@feedback": {},
@ -348,7 +348,7 @@
"@filterInStockDetail": {}, "@filterInStockDetail": {},
"filterSerialized": "Sıralandırılmış", "filterSerialized": "Sıralandırılmış",
"@filterSerialized": {}, "@filterSerialized": {},
"filterSerializedDetail": "Sıralandırılmış stok ürünkerini göster", "filterSerializedDetail": "Seri numaralı stok kalemlerini göster",
"@filterSerializedDetail": {}, "@filterSerializedDetail": {},
"filterTemplate": "Şablon", "filterTemplate": "Şablon",
"@filterTemplate": {}, "@filterTemplate": {},
@ -392,9 +392,9 @@
"@homeShowSo": {}, "@homeShowSo": {},
"homeShowSoDescription": "Satış siparişleri tuşunu giriş ekranında göster", "homeShowSoDescription": "Satış siparişleri tuşunu giriş ekranında göster",
"@homeShowSoDescription": {}, "@homeShowSoDescription": {},
"homeShowSubscribed": "Parça bildirimlerine abone ol", "homeShowSubscribed": "Takip Edilen Parçalar",
"@homeShowSubscribed": {}, "@homeShowSubscribed": {},
"homeShowSubscribedDescription": "Abone olunan bölümleri ana ekranda göster", "homeShowSubscribedDescription": "Takip edilen parçaları ana ekranda göster",
"@homeShowSubscsribedDescription": {}, "@homeShowSubscsribedDescription": {},
"homeShowSuppliers": "Tedarikçileri Göster", "homeShowSuppliers": "Tedarikçileri Göster",
"@homeShowSuppliers": {}, "@homeShowSuppliers": {},
@ -408,13 +408,13 @@
"@homeShowCustomers": {}, "@homeShowCustomers": {},
"homeShowCustomersDescription": "Müşteri butonunu ana ekranda göster", "homeShowCustomersDescription": "Müşteri butonunu ana ekranda göster",
"@homeShowCustomersDescription": {}, "@homeShowCustomersDescription": {},
"imageUploadFailure": "Fotoğraf yükleme başarısız", "imageUploadFailure": "Görsel yükleme başarısız",
"@imageUploadFailure": {}, "@imageUploadFailure": {},
"imageUploadSuccess": "Resim yüklendi", "imageUploadSuccess": "Görsel yüklendi",
"@imageUploadSuccess": {}, "@imageUploadSuccess": {},
"inactive": "Pasif", "inactive": "Pasif",
"@inactive": {}, "@inactive": {},
"inactiveCompany": "Bu şirket inaktif olarak imlendi", "inactiveCompany": "Bu şirket pasif olarak işaretlendi",
"@inactiveCompany": {}, "@inactiveCompany": {},
"inactiveDetail": "Bu parça pasif olarak işaretlendi", "inactiveDetail": "Bu parça pasif olarak işaretlendi",
"@inactiveDetail": {}, "@inactiveDetail": {},
@ -432,9 +432,9 @@
"@internalPartNumber": {}, "@internalPartNumber": {},
"info": "Bilgi", "info": "Bilgi",
"@info": {}, "@info": {},
"inProduction": "Yapım Aşamasında", "inProduction": "Üretimde",
"@inProduction": {}, "@inProduction": {},
"inProductionDetail": "Bu ürün üretim aşamasında", "inProductionDetail": "Bu stok kalemi üretimdedir",
"@inProductionDetail": {}, "@inProductionDetail": {},
"internalPart": "İç Parça", "internalPart": "İç Parça",
"@internalPart": {}, "@internalPart": {},
@ -448,7 +448,7 @@
"@invalidPartCategory": {}, "@invalidPartCategory": {},
"invalidStockLocation": "Geçersiz Stok Konumu", "invalidStockLocation": "Geçersiz Stok Konumu",
"@invalidStockLocation": {}, "@invalidStockLocation": {},
"invalidStockItem": "Geçersiz Stok Parçası", "invalidStockItem": "Geçersiz Stok Kalemi",
"@invalidStockItem": {}, "@invalidStockItem": {},
"invalidSupplierPart": "Geçersiz Tedarikçi Parçası", "invalidSupplierPart": "Geçersiz Tedarikçi Parçası",
"@invalidSupplierPart": {}, "@invalidSupplierPart": {},
@ -462,7 +462,7 @@
"@issue": {}, "@issue": {},
"issueDate": "Sorun Tarihi", "issueDate": "Sorun Tarihi",
"@issueDate": {}, "@issueDate": {},
"issueOrder": "Sipariş Ver", "issueOrder": "Sipariş Düzenle",
"@issueOrder": {}, "@issueOrder": {},
"itemInLocation": "Parça zaten konumda", "itemInLocation": "Parça zaten konumda",
"@itemInLocation": {}, "@itemInLocation": {},
@ -472,13 +472,13 @@
"@itemUpdated": {}, "@itemUpdated": {},
"keywords": "Anahtar kelimeler", "keywords": "Anahtar kelimeler",
"@keywords": {}, "@keywords": {},
"labelDriver": "Label Driver", "labelDriver": "Etiket Sürücü",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver", "labelSelectDriver": "Etiket Yazıcı Sürücüsü Seçin",
"@labelSelectDriver": {}, "@labelSelectDriver": {},
"labelPrinting": "Etiket Yazdırma", "labelPrinting": "Etiket Yazdırma",
"@labelPrinting": {}, "@labelPrinting": {},
"labelPrintingDetail": "Etiket yazdırmayı aktifleştir", "labelPrintingDetail": "Etiket yazdırmayı etkinleştir",
"@labelPrintingDetail": {}, "@labelPrintingDetail": {},
"labelTemplate": "Etiket Şablonu", "labelTemplate": "Etiket Şablonu",
"@labelTemplate": {}, "@labelTemplate": {},
@ -492,21 +492,21 @@
"@languageDefault": {}, "@languageDefault": {},
"languageSelect": "Dil Seçin", "languageSelect": "Dil Seçin",
"@languageSelect": {}, "@languageSelect": {},
"lastStocktake": "Son stok tutma", "lastStocktake": "Son Stok Sayımı",
"@lastStocktake": {}, "@lastStocktake": {},
"lastUpdated": "Son güncelleme", "lastUpdated": "Son güncelleme",
"@lastUpdated": {}, "@lastUpdated": {},
"level": "Düzey", "level": "Seviye",
"@level": {}, "@level": {},
"lineItemAdd": "Satır Ögesi Ekle", "lineItemAdd": "Satır Ekle",
"@lineItemAdd": {}, "@lineItemAdd": {},
"lineItem": "Parça Sırası", "lineItem": "Satır",
"@lineItem": {}, "@lineItem": {},
"lineItems": "Parçalar Sırası", "lineItems": "Satırlar",
"@lineItems": {}, "@lineItems": {},
"lineItemUpdated": "Satır ögesi güncellendi", "lineItemUpdated": "Satır güncellendi",
"@lineItemUpdated": {}, "@lineItemUpdated": {},
"locateItem": "Stok ögesi bul", "locateItem": "Stok kalemi bul",
"@locateItem": {}, "@locateItem": {},
"locateLocation": "Stok konumu bul", "locateLocation": "Stok konumu bul",
"@locateLocation": {}, "@locateLocation": {},
@ -514,7 +514,7 @@
"@locationCreate": {}, "@locationCreate": {},
"locationCreateDetail": "Yeni stok konumu oluştur", "locationCreateDetail": "Yeni stok konumu oluştur",
"@locationCreateDetail": {}, "@locationCreateDetail": {},
"locationDefault": "Default Location", "locationDefault": "Varsayılan Konum",
"@locationDefault": {}, "@locationDefault": {},
"locationNotSet": "Belirtilmiş konum yok", "locationNotSet": "Belirtilmiş konum yok",
"@locationNotSet": {}, "@locationNotSet": {},
@ -562,7 +562,7 @@
"@noResponse": {}, "@noResponse": {},
"noResults": "Sonuç Yok", "noResults": "Sonuç Yok",
"@noResults": {}, "@noResults": {},
"noImageAvailable": "Kullanılabilir resim yok", "noImageAvailable": "Görsel yok",
"@noImageAvailable": {}, "@noImageAvailable": {},
"noPricingAvailable": "Fiyatlandırma mevcut değil", "noPricingAvailable": "Fiyatlandırma mevcut değil",
"@noPricingAvailable": {}, "@noPricingAvailable": {},
@ -588,9 +588,9 @@
"@orientationPortrait": {}, "@orientationPortrait": {},
"orientationSystem": "Sistem", "orientationSystem": "Sistem",
"@orientationSystem": {}, "@orientationSystem": {},
"outstanding": "Beklemede", "outstanding": "ık",
"@outstanding": {}, "@outstanding": {},
"outstandingOrderDetail": "Bekleyen siparişleri göster", "outstandingOrderDetail": "ık siparişleri göster",
"@outstandingOrderDetail": {}, "@outstandingOrderDetail": {},
"overdue": "Gecikmede", "overdue": "Gecikmede",
"@overdue": {}, "@overdue": {},
@ -602,7 +602,7 @@
"@packageName": {}, "@packageName": {},
"parameters": "Parametreler", "parameters": "Parametreler",
"@parameters": {}, "@parameters": {},
"parametersSettingDetail": "Parça parametrelerini göster", "parametersSettingDetail": "Parça parametrelerini görüntüle",
"@parametersSettingDetail": {}, "@parametersSettingDetail": {},
"parent": "Üst", "parent": "Üst",
"@parent": {}, "@parent": {},
@ -624,7 +624,7 @@
"@parts": { "@parts": {
"description": "Part (multiple)" "description": "Part (multiple)"
}, },
"partNotSalable": "Parça satılabilir olarak imlenmemiş", "partNotSalable": "Parça satılabilir olarak işaretli değil",
"@partNotSalable": {}, "@partNotSalable": {},
"partsNone": "Parça Yok", "partsNone": "Parça Yok",
"@partsNone": {}, "@partsNone": {},
@ -636,7 +636,7 @@
"@pricingSettingDetail": {}, "@pricingSettingDetail": {},
"partSettings": "Parça Ayarları", "partSettings": "Parça Ayarları",
"@partSettings": {}, "@partSettings": {},
"partsStarred": "Sürekli Gelen parçalar", "partsStarred": "Takip Edilen Parçalar",
"@partsStarred": {}, "@partsStarred": {},
"partsStarredNone": "Yıldızlı parça yok", "partsStarredNone": "Yıldızlı parça yok",
"@partsStarredNone": {}, "@partsStarredNone": {},
@ -648,7 +648,7 @@
"@partCategoryTopLevel": {}, "@partCategoryTopLevel": {},
"partCategories": "Parça Kategorileri", "partCategories": "Parça Kategorileri",
"@partCategories": {}, "@partCategories": {},
"partDetails": "Parça detayları", "partDetails": "Parça Ayrıntıları",
"@partDetails": {}, "@partDetails": {},
"partNotes": "Parça notları", "partNotes": "Parça notları",
"@partNotes": {}, "@partNotes": {},
@ -710,15 +710,15 @@
"@projectCode": {}, "@projectCode": {},
"purchaseOrderConfirmScan": "Tarama Verisini Onayla", "purchaseOrderConfirmScan": "Tarama Verisini Onayla",
"@purchaseOrderConfirmScan": {}, "@purchaseOrderConfirmScan": {},
"purchaseOrderConfirmScanDetail": "Taranan Ürünlerin Detaylarını Onayla", "purchaseOrderConfirmScanDetail": "Kalemleri tararken ayrıntıları onayla",
"@purchaseOrderConfirmScanDetail": {}, "@purchaseOrderConfirmScanDetail": {},
"purchaseOrderEnable": "Satın Alma Emirlerini Etkinleştir", "purchaseOrderEnable": "Satın Alma Siparişlerini Etkinleştir",
"@purchaseOrderEnable": {}, "@purchaseOrderEnable": {},
"purchaseOrderEnableDetail": "Satın Alma Emirlerinin İşlevselliğini Etkinleştir", "purchaseOrderEnableDetail": "Satın Alma Emirlerinin İşlevselliğini Etkinleştir",
"@purchaseOrderEnableDetail": {}, "@purchaseOrderEnableDetail": {},
"purchaseOrderShowCamera": "Kamera Kısayolu", "purchaseOrderShowCamera": "Kamera Kısayolu",
"@purchaseOrderShowCamera": {}, "@purchaseOrderShowCamera": {},
"purchaseOrderShowCameraDetail": "Satın alma emirleri ekranında fotoğraf yükleme kısayolunu etkinleştir", "purchaseOrderShowCameraDetail": "Satın alma siparişi ekranında görsel yükleme kısayolunu etkinleştir",
"@purchaseOrderShowCameraDetail": {}, "@purchaseOrderShowCameraDetail": {},
"purchaseOrder": "Satınalma Siparişi", "purchaseOrder": "Satınalma Siparişi",
"@purchaseOrder": {}, "@purchaseOrder": {},
@ -728,7 +728,7 @@
"@purchaseOrderEdit": {}, "@purchaseOrderEdit": {},
"purchaseOrderSettings": "Satın Alma Emri Ayarları", "purchaseOrderSettings": "Satın Alma Emri Ayarları",
"@purchaseOrderSettings": {}, "@purchaseOrderSettings": {},
"purchaseOrders": "Satınalma Siparişleri", "purchaseOrders": "Satın Alma Siparişleri",
"@purchaseOrders": {}, "@purchaseOrders": {},
"purchaseOrderUpdated": "Satın Alma Siparişi güncellendi", "purchaseOrderUpdated": "Satın Alma Siparişi güncellendi",
"@purchaseOrderUpdated": {}, "@purchaseOrderUpdated": {},
@ -750,13 +750,13 @@
"@queryEmpty": {}, "@queryEmpty": {},
"queryNoResults": "Sorgu için sonuç yok", "queryNoResults": "Sorgu için sonuç yok",
"@queryNoResults": {}, "@queryNoResults": {},
"received": "Alınan", "received": "Teslim Alındı",
"@received": {}, "@received": {},
"receivedFilterDetail": "Alınan ögeleri göster", "receivedFilterDetail": "Teslim alınan kalemleri göster",
"@receivedFilterDetail": {}, "@receivedFilterDetail": {},
"receiveItem": "Alınan Öğeler", "receiveItem": "Kalemi Teslim Al",
"@receiveItem": {}, "@receiveItem": {},
"receivedItem": "Alınan stok parçaları", "receivedItem": "Teslim alınan stok kalemleri",
"@receivedItem": {}, "@receivedItem": {},
"reference": "Referans", "reference": "Referans",
"@reference": {}, "@reference": {},
@ -838,13 +838,13 @@
"@salesOrder": {}, "@salesOrder": {},
"salesOrders": "Satış Siparişleri", "salesOrders": "Satış Siparişleri",
"@salesOrders": {}, "@salesOrders": {},
"salesOrderEnable": "Satış Emirlerini Etkinleştir", "salesOrderEnable": "Satış Siparişlerini Etkinleştir",
"@salesOrderEnable": {}, "@salesOrderEnable": {},
"salesOrderEnableDetail": "Satış Siparişlerinin İşlevselliğini Etkinleştir", "salesOrderEnableDetail": "Satış Siparişlerinin İşlevselliğini Etkinleştir",
"@salesOrderEnableDetail": {}, "@salesOrderEnableDetail": {},
"salesOrderShowCamera": "Kamera Kısayolu", "salesOrderShowCamera": "Kamera Kısayolu",
"@salesOrderShowCamera": {}, "@salesOrderShowCamera": {},
"salesOrderShowCameraDetail": "Satış emirleri ekranında fotoğraf yükleme kısayolunu etkinleştir", "salesOrderShowCameraDetail": "Satış siparişi ekranında görsel yükleme kısayolunu etkinleştir",
"@salesOrderShowCameraDetail": {}, "@salesOrderShowCameraDetail": {},
"salesOrderSettings": "Satış emirleri ayarları", "salesOrderSettings": "Satış emirleri ayarları",
"@salesOrderSettings": {}, "@salesOrderSettings": {},
@ -860,7 +860,7 @@
}, },
"scanBarcode": "Barkod Tara", "scanBarcode": "Barkod Tara",
"@scanBarcode": {}, "@scanBarcode": {},
"scanSupplierPart": "Sağlayıcı parça barkodunu tara", "scanSupplierPart": "Tedarikçi parça barkodunu tara",
"@scanSupplierPart": {}, "@scanSupplierPart": {},
"scanIntoLocation": "Konuma Tara", "scanIntoLocation": "Konuma Tara",
"@scanIntoLocation": {}, "@scanIntoLocation": {},
@ -870,7 +870,7 @@
"@scannerExternal": {}, "@scannerExternal": {},
"scannerExternalDetail": "Barkodları okumak için harici tarayıcı kullan (keyboard wedge modu)", "scannerExternalDetail": "Barkodları okumak için harici tarayıcı kullan (keyboard wedge modu)",
"@scannerExternalDetail": {}, "@scannerExternalDetail": {},
"scanReceivedParts": "Alınan Parçaları Tara", "scanReceivedParts": "Teslim Alınan Parçaları Tara",
"@scanReceivedParts": {}, "@scanReceivedParts": {},
"search": "Ara", "search": "Ara",
"@search": { "@search": {
@ -888,7 +888,7 @@
"@select": {}, "@select": {},
"selectFile": "Dosya Seç", "selectFile": "Dosya Seç",
"@selectFile": {}, "@selectFile": {},
"selectImage": "Resim Seç", "selectImage": "Görsel Seç",
"@selectImage": {}, "@selectImage": {},
"selectLocation": "Bir yer seçin", "selectLocation": "Bir yer seçin",
"@selectLocation": {}, "@selectLocation": {},
@ -922,7 +922,7 @@
"@serverEmpty": {}, "@serverEmpty": {},
"serverError": "Sunucu Hatası", "serverError": "Sunucu Hatası",
"@serverError": {}, "@serverError": {},
"serverDetails": "Sunucu Detayları", "serverDetails": "Sunucu Ayrıntıları",
"@serverDetails": {}, "@serverDetails": {},
"serverMissingData": "Sunucu yanıtında gerekli alanlar eksik", "serverMissingData": "Sunucu yanıtında gerekli alanlar eksik",
"@serverMissingData": {}, "@serverMissingData": {},
@ -948,11 +948,11 @@
"@shipmentsPending": {}, "@shipmentsPending": {},
"shipmentAdd": "Gönderi Ekle", "shipmentAdd": "Gönderi Ekle",
"@shipmentAdd": {}, "@shipmentAdd": {},
"shipmentCheck": "Teslimatı Kontrol Et", "shipmentCheck": "Sevkiyatı Kontrol Et",
"@shipmentCheck": {}, "@shipmentCheck": {},
"shipmentCheckDetail": "Bu teslimatı kontrol edildi olarak işaretle", "shipmentCheckDetail": "Bu sevkiyatı kontrol edildi olarak işaretle",
"@shipmentCheckDetail": {}, "@shipmentCheckDetail": {},
"shipmentChecked": "Teslimat Kontrol Edildi", "shipmentChecked": "Sevkiyat Kontrol Edildi",
"@shipmentChecked": {}, "@shipmentChecked": {},
"shipmentDate": "Teslimat Tarihi", "shipmentDate": "Teslimat Tarihi",
"@shipmentDate": {}, "@shipmentDate": {},
@ -962,7 +962,7 @@
"@shipmentReference": {}, "@shipmentReference": {},
"shipmentSend": "Teslimatı Gönder", "shipmentSend": "Teslimatı Gönder",
"@shipmentSend": {}, "@shipmentSend": {},
"shipmentUncheck": "Teslimat İşaretini Kaldır", "shipmentUncheck": "Sevkiyat Kontrolünü Kaldır",
"@shipmentUncheck": {}, "@shipmentUncheck": {},
"shipmentUncheckDetail": "Bu teslimatı kontrol edilmedi olarak işaretle", "shipmentUncheckDetail": "Bu teslimatı kontrol edilmedi olarak işaretle",
"@shipmentUncheckDetail": {}, "@shipmentUncheckDetail": {},
@ -998,25 +998,25 @@
"@stockItems": {}, "@stockItems": {},
"stockItemCreate": "Yeni Stok Kalemi", "stockItemCreate": "Yeni Stok Kalemi",
"@stockItemCreate": {}, "@stockItemCreate": {},
"stockItemCreateDetail": "Bu konuma yeni stok kalemi oluştur", "stockItemCreateDetail": "Bu konumda yeni stok kalemi oluştur",
"@stockItemCreateDetail": {}, "@stockItemCreateDetail": {},
"stockItemDelete": "Stok parçasını sil", "stockItemDelete": "Stok parçasını sil",
"@stockItemDelete": {}, "@stockItemDelete": {},
"stockItemDeleteConfirm": "Bu stock ögesini silmek istediğinize emin misiniz?", "stockItemDeleteConfirm": "Bu stok kalemini silmek istediğinize emin misiniz?",
"@stockItemDeleteConfirm": {}, "@stockItemDeleteConfirm": {},
"stockItemDeleteFailure": "Stok parçası silinemedi", "stockItemDeleteFailure": "Stok kalemi silinemedi",
"@stockItemDeleteFailure": {}, "@stockItemDeleteFailure": {},
"stockItemDeleteSuccess": "Stok ögesi silindi", "stockItemDeleteSuccess": "Stok kalemi silindi",
"@stockItemDeleteSuccess": {}, "@stockItemDeleteSuccess": {},
"stockItemHistory": "Stok Geçmişi", "stockItemHistory": "Stok Geçmişi",
"@stockItemHistory": {}, "@stockItemHistory": {},
"stockItemHistoryDetail": "Geçmiş stok takip bilgisini göster", "stockItemHistoryDetail": "Geçmiş stok takip bilgisini görüntüle",
"@stockItemHistoryDetail": {}, "@stockItemHistoryDetail": {},
"stockItemTransferred": "Stok ögesi aktarıldı", "stockItemTransferred": "Stok kalemi aktarıldı",
"@stockItemTransferred": {}, "@stockItemTransferred": {},
"stockItemUpdated": "Stok ögesi güncellendi", "stockItemUpdated": "Stok kalemi güncellendi",
"@stockItemUpdated": {}, "@stockItemUpdated": {},
"stockItemsNotAvailable": "Kullanılabilir stok ögesi yok", "stockItemsNotAvailable": "Stok kalemi bulunmamaktadır",
"@stockItemsNotAvailable": {}, "@stockItemsNotAvailable": {},
"stockItemNotes": "Stok Kalemi Notları", "stockItemNotes": "Stok Kalemi Notları",
"@stockItemNotes": {}, "@stockItemNotes": {},
@ -1056,11 +1056,11 @@
"@supplier": {}, "@supplier": {},
"supplierPart": "Tedarikçi Parçası", "supplierPart": "Tedarikçi Parçası",
"@supplierPart": {}, "@supplierPart": {},
"supplierPartEdit": "Sağlayıcı Parçasını Düzenle", "supplierPartEdit": "Tedarikçi Parçasını Düzenle",
"@supplierPartEdit": {}, "@supplierPartEdit": {},
"supplierPartNumber": "Sağlayıcı Parça Numarası", "supplierPartNumber": "Tedarikçi Parça Numarası",
"@supplierPartNumber": {}, "@supplierPartNumber": {},
"supplierPartUpdated": "Sağlayıcı Parçası Güncellendi", "supplierPartUpdated": "Tedarikçi Parçası Güncellendi",
"@supplierPartUpdated": {}, "@supplierPartUpdated": {},
"supplierParts": "Tedarikçi Parçaları", "supplierParts": "Tedarikçi Parçaları",
"@supplierParts": {}, "@supplierParts": {},
@ -1086,7 +1086,7 @@
"@testResults": { "@testResults": {
"description": "" "description": ""
}, },
"testResultsDetail": "Stok ögesi test sonuçlarını görüntüle", "testResultsDetail": "Stok kalemi test sonuçlarını görüntüle",
"@testResultsDetail": {}, "@testResultsDetail": {},
"testResultAdd": "Test Sonucu Ekle", "testResultAdd": "Test Sonucu Ekle",
"@testResultAdd": {}, "@testResultAdd": {},
@ -1148,7 +1148,7 @@
"@uploadFailed": {}, "@uploadFailed": {},
"uploadSuccess": "Dosya yüklendi", "uploadSuccess": "Dosya yüklendi",
"@uploadSuccess": {}, "@uploadSuccess": {},
"uploadImage": "Resim Yükleyin", "uploadImage": "Görsel Yükle",
"@uploadImage": {}, "@uploadImage": {},
"usedIn": "Burada Kullanıldı", "usedIn": "Burada Kullanıldı",
"@usedIn": {}, "@usedIn": {},
@ -1166,7 +1166,7 @@
"@valueCannotBeEmpty": {}, "@valueCannotBeEmpty": {},
"valueRequired": "Değer gereklidir", "valueRequired": "Değer gereklidir",
"@valueRequired": {}, "@valueRequired": {},
"variants": "Türevler", "variants": "Varyantlar",
"@variants": {}, "@variants": {},
"version": "Sürüm", "version": "Sürüm",
"@version": {}, "@version": {},
@ -1188,13 +1188,13 @@
"@salePrice": {}, "@salePrice": {},
"saleHistory": "Satış Geçmişi", "saleHistory": "Satış Geçmişi",
"@saleHistory": {}, "@saleHistory": {},
"supplierPricing": "Sağlayıcı Fiyatlandırması", "supplierPricing": "Tedarikçi Fiyatlandırması",
"@supplierPricing": {}, "@supplierPricing": {},
"bomCost": "BoM Maliyeti", "bomCost": "BoM Maliyeti",
"@bomCost": {}, "@bomCost": {},
"internalCost": "Dahili Maliyet", "internalCost": "Dahili Maliyet",
"@internalCost": {}, "@internalCost": {},
"variantCost": "Türev Maliyeti", "variantCost": "Varyant Maliyeti",
"@variantCost": {}, "@variantCost": {},
"overallPricing": "Genel Fiyatlandırma", "overallPricing": "Genel Fiyatlandırma",
"@overallPricing": {}, "@overallPricing": {},
@ -1202,6 +1202,6 @@
"@pricingOverrides": {}, "@pricingOverrides": {},
"currency": "Para Birimi", "currency": "Para Birimi",
"@currency": {}, "@currency": {},
"priceBreaks": "Fiyat Aralığı", "priceBreaks": "Fiyat Kademeleri",
"@priceBreaks": {} "@priceBreaks": {}
} }

View file

@ -46,7 +46,7 @@
"@aspectRatioSquare": {}, "@aspectRatioSquare": {},
"allocateStock": "Виділити запас", "allocateStock": "Виділити запас",
"@allocateStock": {}, "@allocateStock": {},
"allocatedStock": "Allocated Stock", "allocatedStock": "Виділений Запас",
"@allocatedStock": {}, "@allocatedStock": {},
"appReleaseNotes": "Показати примітки до випуску", "appReleaseNotes": "Показати примітки до випуску",
"@appReleaseNotes": {}, "@appReleaseNotes": {},
@ -102,7 +102,7 @@
"@barcodeReceivePart": {}, "@barcodeReceivePart": {},
"barcodeScanPaused": "Сканування штрих-кодів призупинено", "barcodeScanPaused": "Сканування штрих-кодів призупинено",
"@barodeScanPaused": {}, "@barodeScanPaused": {},
"barcodeScanPause": "Tap to pause scanning", "barcodeScanPause": "Торкніться або утримуйте, щоб призупинити сканування",
"@barcodeScanPause": {}, "@barcodeScanPause": {},
"barcodeScanAssign": "Сканувати щоб призначити штрих-код", "barcodeScanAssign": "Сканувати щоб призначити штрих-код",
"@barcodeScanAssign": {}, "@barcodeScanAssign": {},
@ -228,11 +228,11 @@
"@delete": {}, "@delete": {},
"deleteFailed": "Помилка видалення", "deleteFailed": "Помилка видалення",
"@deleteFailed": {}, "@deleteFailed": {},
"deleteImageConfirmation": "Are you sure you want to delete this image?", "deleteImageConfirmation": "Ви дійсно хочете видалити це зображення?",
"@deleteImageConfirmation": {}, "@deleteImageConfirmation": {},
"deleteImageTooltip": "Delete Image", "deleteImageTooltip": "Видалити Зображення",
"@deleteImageTooltip": {}, "@deleteImageTooltip": {},
"deleteImage": "Delete Image", "deleteImage": "Видалити Зображення",
"@deleteImage": {}, "@deleteImage": {},
"deletePart": "Видалити деталь", "deletePart": "Видалити деталь",
"@deletePart": {}, "@deletePart": {},
@ -240,7 +240,7 @@
"@deletePartDetail": {}, "@deletePartDetail": {},
"deleteSuccess": "Операція видалення пройшла успішно", "deleteSuccess": "Операція видалення пройшла успішно",
"@deleteSuccess": {}, "@deleteSuccess": {},
"deliveryDate": "Delivery Date", "deliveryDate": "Дата Доставки",
"@deliveryDate": {}, "@deliveryDate": {},
"description": "Опис", "description": "Опис",
"@description": {}, "@description": {},
@ -384,9 +384,9 @@
"@homeShowPo": {}, "@homeShowPo": {},
"homeShowPoDescription": "Показувати кнопку замовлення на домашньому екрані", "homeShowPoDescription": "Показувати кнопку замовлення на домашньому екрані",
"@homeShowPoDescription": {}, "@homeShowPoDescription": {},
"homeShowShipments": "Show Shipments", "homeShowShipments": "Показати відправлення",
"@homeShowShipments": {}, "@homeShowShipments": {},
"homeShowShipmentsDescription": "Show pending shipments on the home screen", "homeShowShipmentsDescription": "Показати відкладені відправлення на головному екрані",
"@homeShowShipmentsDescription": {}, "@homeShowShipmentsDescription": {},
"homeShowSo": "Показати замовлення", "homeShowSo": "Показати замовлення",
"@homeShowSo": {}, "@homeShowSo": {},
@ -454,15 +454,15 @@
"@invalidSupplierPart": {}, "@invalidSupplierPart": {},
"invalidUsernamePassword": "Неправильна комбінація імені користувача та пароля", "invalidUsernamePassword": "Неправильна комбінація імені користувача та пароля",
"@invalidUsernamePassword": {}, "@invalidUsernamePassword": {},
"invoice": "Invoice", "invoice": "Інвойс",
"@invoice": {}, "@invoice": {},
"invoiceNumber": "Invoice Number", "invoiceNumber": "Номер Інвойсу",
"@invoiceNumber": {}, "@invoiceNumber": {},
"issue": "Issue", "issue": "Видача",
"@issue": {}, "@issue": {},
"issueDate": "Issue Date", "issueDate": "Дата Видачі",
"@issueDate": {}, "@issueDate": {},
"issueOrder": "Issue Order", "issueOrder": "Оформити Замовлення",
"@issueOrder": {}, "@issueOrder": {},
"itemInLocation": "Товар вже на місці", "itemInLocation": "Товар вже на місці",
"@itemInLocation": {}, "@itemInLocation": {},
@ -472,9 +472,9 @@
"@itemUpdated": {}, "@itemUpdated": {},
"keywords": "Ключові слова", "keywords": "Ключові слова",
"@keywords": {}, "@keywords": {},
"labelDriver": "Label Driver", "labelDriver": "Драйвер Етикеток",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver", "labelSelectDriver": "Вибрати Драйвер Принтера Етикеток",
"@labelSelectDriver": {}, "@labelSelectDriver": {},
"labelPrinting": "Друк Ярликів", "labelPrinting": "Друк Ярликів",
"@labelPrinting": {}, "@labelPrinting": {},
@ -482,9 +482,9 @@
"@labelPrintingDetail": {}, "@labelPrintingDetail": {},
"labelTemplate": "Шаблон Ярлика", "labelTemplate": "Шаблон Ярлика",
"@labelTemplate": {}, "@labelTemplate": {},
"labelSelectTemplate": "Select Label Template", "labelSelectTemplate": "Вибрати Шаблон Етикетки",
"@labelSelectTemplate": {}, "@labelSelectTemplate": {},
"labelSelectPrinter": "Select Label Printer", "labelSelectPrinter": "Вибрати Принтер Етикеток",
"@labelSelectPrinter": {}, "@labelSelectPrinter": {},
"language": "Мова", "language": "Мова",
"@language": {}, "@language": {},
@ -492,19 +492,19 @@
"@languageDefault": {}, "@languageDefault": {},
"languageSelect": "Вибір мови", "languageSelect": "Вибір мови",
"@languageSelect": {}, "@languageSelect": {},
"lastStocktake": "Last Stocktake", "lastStocktake": "Остання інвентаризація",
"@lastStocktake": {}, "@lastStocktake": {},
"lastUpdated": "Останнє оновлення", "lastUpdated": "Останнє оновлення",
"@lastUpdated": {}, "@lastUpdated": {},
"level": "Рівень", "level": "Рівень",
"@level": {}, "@level": {},
"lineItemAdd": "Add Line Item", "lineItemAdd": "Додати Позицію",
"@lineItemAdd": {}, "@lineItemAdd": {},
"lineItem": "Line Item", "lineItem": "Позиція",
"@lineItem": {}, "@lineItem": {},
"lineItems": "Line Items", "lineItems": "Позиції",
"@lineItems": {}, "@lineItems": {},
"lineItemUpdated": "Line item updated", "lineItemUpdated": "Позицію оновлено",
"@lineItemUpdated": {}, "@lineItemUpdated": {},
"locateItem": "Знайти елемент запасів", "locateItem": "Знайти елемент запасів",
"@locateItem": {}, "@locateItem": {},
@ -514,7 +514,7 @@
"@locationCreate": {}, "@locationCreate": {},
"locationCreateDetail": "Створити нове розташування на складі", "locationCreateDetail": "Створити нове розташування на складі",
"@locationCreateDetail": {}, "@locationCreateDetail": {},
"locationDefault": "Default Location", "locationDefault": "Розташування за замовчуванням",
"@locationDefault": {}, "@locationDefault": {},
"locationNotSet": "Розташування не вказано", "locationNotSet": "Розташування не вказано",
"@locationNotSet": {}, "@locationNotSet": {},
@ -544,9 +544,9 @@
"@missingData": {}, "@missingData": {},
"name": "Назва", "name": "Назва",
"@name": {}, "@name": {},
"no": "No", "no": "Ні",
"@no": {}, "@no": {},
"notApplicable": "N/A", "notApplicable": "Н",
"@notApplicable": {}, "@notApplicable": {},
"notConnected": "Не під’єднано", "notConnected": "Не під’єднано",
"@notConnected": {}, "@notConnected": {},
@ -564,19 +564,19 @@
"@noResults": {}, "@noResults": {},
"noImageAvailable": "Немає доступного зображення", "noImageAvailable": "Немає доступного зображення",
"@noImageAvailable": {}, "@noImageAvailable": {},
"noPricingAvailable": "No pricing available", "noPricingAvailable": "Ціни не вказано",
"@noPricingAvailable": {}, "@noPricingAvailable": {},
"noPricingDataFound": "No pricing data found for this part", "noPricingDataFound": "Для цієї деталі не знайдено даних про ціну",
"@noPricingDataFound": {}, "@noPricingDataFound": {},
"noSubcategories": "No Subcategories", "noSubcategories": "Немає Підкатегорій",
"@noSubcategories": {}, "@noSubcategories": {},
"noSubcategoriesAvailable": "No subcategories available", "noSubcategoriesAvailable": "Немає доступних підкатегорій",
"@noSubcategoriesAvailable": {}, "@noSubcategoriesAvailable": {},
"numberInvalid": "Некоректний номер", "numberInvalid": "Некоректний номер",
"@numberInvalid": {}, "@numberInvalid": {},
"onOrder": "On Order", "onOrder": "У замовленні",
"@onOrder": {}, "@onOrder": {},
"onOrderDetails": "Items currently on order", "onOrderDetails": "Позиції в поточних замовленнях",
"@onOrderDetails": {}, "@onOrderDetails": {},
"orientation": "Орієнтація екрана", "orientation": "Орієнтація екрана",
"@orientation": {}, "@orientation": {},
@ -632,7 +632,7 @@
"@partNoResults": {}, "@partNoResults": {},
"partPricing": "Ціна деталі", "partPricing": "Ціна деталі",
"@partPricing": {}, "@partPricing": {},
"partPricingSettingDetail": "Display part pricing information", "partPricingSettingDetail": "Відображати інформацію про ціни на деталь",
"@pricingSettingDetail": {}, "@pricingSettingDetail": {},
"partSettings": "Налаштування позиції", "partSettings": "Налаштування позиції",
"@partSettings": {}, "@partSettings": {},
@ -652,7 +652,7 @@
"@partDetails": {}, "@partDetails": {},
"partNotes": "Примітки до позиції", "partNotes": "Примітки до позиції",
"@partNotes": {}, "@partNotes": {},
"partStock": "Part Stock", "partStock": "Наявність На Складі",
"@partStock": { "@partStock": {
"description": "part stock" "description": "part stock"
}, },
@ -660,7 +660,7 @@
"@password": {}, "@password": {},
"passwordEmpty": "Пароль не може бути порожнім", "passwordEmpty": "Пароль не може бути порожнім",
"@passwordEmpty": {}, "@passwordEmpty": {},
"pending": "Pending", "pending": "В очікуванні",
"@pending": {}, "@pending": {},
"permissionAccountDenied": "Ваш обліковий запис не має необхідних прав для виконання цієї дії", "permissionAccountDenied": "Ваш обліковий запис не має необхідних прав для виконання цієї дії",
"@permissionAccountDenied": {}, "@permissionAccountDenied": {},
@ -712,27 +712,27 @@
"@purchaseOrderConfirmScan": {}, "@purchaseOrderConfirmScan": {},
"purchaseOrderConfirmScanDetail": "Підтвердити подробиці при скануванні в позицій", "purchaseOrderConfirmScanDetail": "Підтвердити подробиці при скануванні в позицій",
"@purchaseOrderConfirmScanDetail": {}, "@purchaseOrderConfirmScanDetail": {},
"purchaseOrderEnable": "Enable Purchase Orders", "purchaseOrderEnable": "Увімкнути Закупівлю",
"@purchaseOrderEnable": {}, "@purchaseOrderEnable": {},
"purchaseOrderEnableDetail": "Enable purchase order functionality", "purchaseOrderEnableDetail": "Увімкнути функціонал закупівлі",
"@purchaseOrderEnableDetail": {}, "@purchaseOrderEnableDetail": {},
"purchaseOrderShowCamera": "Camera Shortcut", "purchaseOrderShowCamera": "Швидкий Доступ до Камери",
"@purchaseOrderShowCamera": {}, "@purchaseOrderShowCamera": {},
"purchaseOrderShowCameraDetail": "Enable image upload shortcut on purchase order screen", "purchaseOrderShowCameraDetail": "Увімкнути ярлик для завантаження зображень на екрані закупівель",
"@purchaseOrderShowCameraDetail": {}, "@purchaseOrderShowCameraDetail": {},
"purchaseOrder": "Purchase Order", "purchaseOrder": "Замовлення на Закупівлю",
"@purchaseOrder": {}, "@purchaseOrder": {},
"purchaseOrderCreate": "New Purchase Order", "purchaseOrderCreate": "Нове Замовлення на Закупівлю",
"@purchaseOrderCreate": {}, "@purchaseOrderCreate": {},
"purchaseOrderEdit": "Edit Purchase Order", "purchaseOrderEdit": "Редагувати Замовлення на Закупівлю",
"@purchaseOrderEdit": {}, "@purchaseOrderEdit": {},
"purchaseOrderSettings": "Purchase order settings", "purchaseOrderSettings": "Налаштування замовлення на закупівлю",
"@purchaseOrderSettings": {}, "@purchaseOrderSettings": {},
"purchaseOrders": "Purchase Orders", "purchaseOrders": "Закупівлі",
"@purchaseOrders": {}, "@purchaseOrders": {},
"purchaseOrderUpdated": "Purchase order updated", "purchaseOrderUpdated": "Замовлення на закупівлю оновлено",
"@purchaseOrderUpdated": {}, "@purchaseOrderUpdated": {},
"purchasePrice": "Purchase Price", "purchasePrice": "Закупівельна Ціна",
"@purchasePrice": {}, "@purchasePrice": {},
"quantity": "Кількість", "quantity": "Кількість",
"@quantity": { "@quantity": {
@ -740,7 +740,7 @@
}, },
"quantityAvailable": "Доступна кількість", "quantityAvailable": "Доступна кількість",
"@quantityAvailable": {}, "@quantityAvailable": {},
"quantityEmpty": "Quantity is empty", "quantityEmpty": "Кількість не вказана",
"@quantityEmpty": {}, "@quantityEmpty": {},
"quantityInvalid": "Некоректна кількість", "quantityInvalid": "Некоректна кількість",
"@quantityInvalid": {}, "@quantityInvalid": {},
@ -752,13 +752,13 @@
"@queryNoResults": {}, "@queryNoResults": {},
"received": "Отримано", "received": "Отримано",
"@received": {}, "@received": {},
"receivedFilterDetail": "Show received items", "receivedFilterDetail": "Показувати отримані позиції",
"@receivedFilterDetail": {}, "@receivedFilterDetail": {},
"receiveItem": "Receive Item", "receiveItem": "Прийняти Позицію",
"@receiveItem": {}, "@receiveItem": {},
"receivedItem": "Received Stock Item", "receivedItem": "Отримана Складська Позиція",
"@receivedItem": {}, "@receivedItem": {},
"reference": "Reference", "reference": "Номер документа",
"@reference": {}, "@reference": {},
"refresh": "Оновити", "refresh": "Оновити",
"@refresh": {}, "@refresh": {},
@ -766,7 +766,7 @@
"@rotateClockwise": {}, "@rotateClockwise": {},
"refreshing": "Оновлення", "refreshing": "Оновлення",
"@refreshing": {}, "@refreshing": {},
"rejected": "Rejected", "rejected": "Відхилено",
"@rejected": {}, "@rejected": {},
"releaseNotes": "Замітки до випуску", "releaseNotes": "Замітки до випуску",
"@releaseNotes": {}, "@releaseNotes": {},

View file

@ -102,7 +102,7 @@
"@barcodeReceivePart": {}, "@barcodeReceivePart": {},
"barcodeScanPaused": "条形码扫描已暂停", "barcodeScanPaused": "条形码扫描已暂停",
"@barodeScanPaused": {}, "@barodeScanPaused": {},
"barcodeScanPause": "Tap to pause scanning", "barcodeScanPause": "点击以暂停扫描",
"@barcodeScanPause": {}, "@barcodeScanPause": {},
"barcodeScanAssign": "扫描以分配条形码", "barcodeScanAssign": "扫描以分配条形码",
"@barcodeScanAssign": {}, "@barcodeScanAssign": {},
@ -472,9 +472,9 @@
"@itemUpdated": {}, "@itemUpdated": {},
"keywords": "关键词", "keywords": "关键词",
"@keywords": {}, "@keywords": {},
"labelDriver": "Label Driver", "labelDriver": "标签打印机",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Select Label Printer Driver", "labelSelectDriver": "选择标签打印机",
"@labelSelectDriver": {}, "@labelSelectDriver": {},
"labelPrinting": "打印标签", "labelPrinting": "打印标签",
"@labelPrinting": {}, "@labelPrinting": {},
@ -514,7 +514,7 @@
"@locationCreate": {}, "@locationCreate": {},
"locationCreateDetail": "创建新库存地点", "locationCreateDetail": "创建新库存地点",
"@locationCreateDetail": {}, "@locationCreateDetail": {},
"locationDefault": "Default Location", "locationDefault": "默认位置",
"@locationDefault": {}, "@locationDefault": {},
"locationNotSet": "没有指定仓储位置", "locationNotSet": "没有指定仓储位置",
"@locationNotSet": {}, "@locationNotSet": {},

View file

@ -32,7 +32,6 @@ const String INV_LABEL_DEFAULT_PRINTER = "defaultLabelPrinter";
const String INV_LABEL_DEFAULT_PLUGIN = "defaultLabelPlugin"; const String INV_LABEL_DEFAULT_PLUGIN = "defaultLabelPlugin";
// Part settings // Part settings
const String INV_PART_SHOW_PARAMETERS = "partShowParameters";
const String INV_PART_SHOW_BOM = "partShowBom"; const String INV_PART_SHOW_BOM = "partShowBom";
const String INV_PART_SHOW_PRICING = "partShowPricing"; const String INV_PART_SHOW_PRICING = "partShowPricing";

View file

@ -13,7 +13,6 @@ class InvenTreePartSettingsWidget extends StatefulWidget {
class _InvenTreePartSettingsState extends State<InvenTreePartSettingsWidget> { class _InvenTreePartSettingsState extends State<InvenTreePartSettingsWidget> {
_InvenTreePartSettingsState(); _InvenTreePartSettingsState();
bool partShowParameters = true;
bool partShowBom = true; bool partShowBom = true;
bool partShowPricing = true; bool partShowPricing = true;
bool stockShowHistory = false; bool stockShowHistory = false;
@ -28,10 +27,6 @@ class _InvenTreePartSettingsState extends State<InvenTreePartSettingsWidget> {
} }
Future<void> loadSettings() async { Future<void> loadSettings() async {
partShowParameters = await InvenTreeSettingsManager().getBool(
INV_PART_SHOW_PARAMETERS,
true,
);
partShowBom = await InvenTreeSettingsManager().getBool( partShowBom = await InvenTreeSettingsManager().getBool(
INV_PART_SHOW_BOM, INV_PART_SHOW_BOM,
true, true,
@ -68,23 +63,6 @@ class _InvenTreePartSettingsState extends State<InvenTreePartSettingsWidget> {
body: Container( body: Container(
child: ListView( child: ListView(
children: [ children: [
ListTile(
title: Text(L10().parameters),
subtitle: Text(L10().parametersSettingDetail),
leading: Icon(TablerIcons.list),
trailing: Switch(
value: partShowParameters,
onChanged: (bool value) {
InvenTreeSettingsManager().setValue(
INV_PART_SHOW_PARAMETERS,
value,
);
setState(() {
partShowParameters = value;
});
},
),
),
ListTile( ListTile(
title: Text(L10().bom), title: Text(L10().bom),
subtitle: Text(L10().bomEnable), subtitle: Text(L10().bomEnable),

View file

@ -2,14 +2,13 @@ import "dart:io";
import "package:flutter/material.dart"; import "package:flutter/material.dart";
import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:inventree/api.dart";
import "package:inventree/inventree/attachment.dart";
import "package:inventree/widget/link_icon.dart";
import "package:one_context/one_context.dart"; import "package:one_context/one_context.dart";
import "package:inventree/api.dart";
import "package:inventree/l10.dart"; import "package:inventree/l10.dart";
import "package:inventree/app_colors.dart"; import "package:inventree/app_colors.dart";
import "package:inventree/inventree/model.dart";
import "package:inventree/widget/fields.dart"; import "package:inventree/widget/fields.dart";
import "package:inventree/widget/progress.dart"; import "package:inventree/widget/progress.dart";
import "package:inventree/widget/snacks.dart"; import "package:inventree/widget/snacks.dart";
@ -23,13 +22,13 @@ import "package:inventree/widget/refreshable_state.dart";
*/ */
class AttachmentWidget extends StatefulWidget { class AttachmentWidget extends StatefulWidget {
const AttachmentWidget( const AttachmentWidget(
this.attachmentClass, this.modelType,
this.modelId, this.modelId,
this.imagePrefix, this.imagePrefix,
this.hasUploadPermission, this.hasUploadPermission,
) : super(); ) : super();
final InvenTreeAttachment attachmentClass; final String modelType;
final int modelId; final int modelId;
final bool hasUploadPermission; final bool hasUploadPermission;
final String imagePrefix; final String imagePrefix;
@ -54,15 +53,15 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
IconButton( IconButton(
icon: Icon(TablerIcons.camera), icon: Icon(TablerIcons.camera),
onPressed: () async { onPressed: () async {
widget.attachmentClass.uploadImage( InvenTreeAttachment()
widget.modelId, .uploadImage(
prefix: widget.imagePrefix, widget.modelType,
); widget.modelId,
FilePickerDialog.pickImageFromCamera().then((File? file) { prefix: widget.imagePrefix,
upload(context, file).then((_) { )
refresh(context); .then((_) {
}); refresh(context);
}); });
}, },
), ),
IconButton( IconButton(
@ -83,8 +82,9 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
showLoadingOverlay(); showLoadingOverlay();
final bool result = await widget.attachmentClass.uploadAttachment( final bool result = await InvenTreeAttachment().uploadAttachment(
file, file,
widget.modelType,
widget.modelId, widget.modelId,
); );
@ -168,25 +168,24 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
Future<void> request(BuildContext context) async { Future<void> request(BuildContext context) async {
Map<String, String> filters = {}; Map<String, String> filters = {};
if (InvenTreeAPI().supportsModernAttachments) { filters["model_type"] = widget.modelType;
filters["model_type"] = widget.attachmentClass.REF_MODEL_TYPE; filters["model_id"] = widget.modelId.toString();
filters["model_id"] = widget.modelId.toString();
} else {
filters[widget.attachmentClass.REFERENCE_FIELD] = widget.modelId
.toString();
}
await widget.attachmentClass.list(filters: filters).then((var results) { List<InvenTreeAttachment> _attachments = [];
attachments.clear();
InvenTreeAttachment().list(filters: filters).then((var results) {
for (var result in results) { for (var result in results) {
if (result is InvenTreeAttachment) { if (result is InvenTreeAttachment) {
attachments.add(result); _attachments.add(result);
} }
} }
});
setState(() {}); if (mounted) {
setState(() {
attachments = _attachments;
});
}
});
} }
@override @override
@ -240,3 +239,40 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
return tiles; return tiles;
} }
} }
/*
* Return a ListTile to display attachments for the specified model
*/
ListTile? ShowAttachmentsItem(
BuildContext context,
String modelType,
int modelId,
String imagePrefix,
int attachmentCount,
bool hasUploadPermission,
) {
if (!InvenTreeAPI().supportsModernAttachments) {
return null;
}
return ListTile(
title: Text(L10().attachments),
leading: Icon(TablerIcons.file, color: COLOR_ACTION),
trailing: LinkIcon(
text: attachmentCount > 0 ? attachmentCount.toString() : null,
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AttachmentWidget(
modelType,
modelId,
imagePrefix,
hasUploadPermission,
),
),
);
},
);
}

View file

@ -1,6 +1,8 @@
import "package:flutter/material.dart"; import "package:flutter/material.dart";
import "package:flutter_speed_dial/flutter_speed_dial.dart"; import "package:flutter_speed_dial/flutter_speed_dial.dart";
import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:inventree/inventree/attachment.dart";
import "package:inventree/inventree/parameter.dart";
import "package:inventree/l10.dart"; import "package:inventree/l10.dart";
import "package:inventree/api.dart"; import "package:inventree/api.dart";
@ -13,6 +15,7 @@ import "package:inventree/widget/attachment_widget.dart";
import "package:inventree/widget/link_icon.dart"; import "package:inventree/widget/link_icon.dart";
import "package:inventree/widget/order/purchase_order_list.dart"; import "package:inventree/widget/order/purchase_order_list.dart";
import "package:inventree/widget/order/sales_order_list.dart"; import "package:inventree/widget/order/sales_order_list.dart";
import "package:inventree/widget/parameter_widget.dart";
import "package:inventree/widget/refreshable_state.dart"; import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/snacks.dart"; import "package:inventree/widget/snacks.dart";
import "package:inventree/widget/company/supplier_part_list.dart"; import "package:inventree/widget/company/supplier_part_list.dart";
@ -37,6 +40,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
int outstandingPurchaseOrders = 0; int outstandingPurchaseOrders = 0;
int outstandingSalesOrders = 0; int outstandingSalesOrders = 0;
int parameterCount = 0;
int attachmentCount = 0; int attachmentCount = 0;
@override @override
@ -184,15 +188,25 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
} }
}); });
InvenTreeCompanyAttachment().countAttachments(widget.company.pk).then(( InvenTreeParameter()
value, .countParameters(InvenTreeCompany.MODEL_TYPE, widget.company.pk)
) { .then((value) {
if (mounted) { if (mounted) {
setState(() { setState(() {
attachmentCount = value; parameterCount = value;
});
}
});
InvenTreeAttachment()
.countAttachments(InvenTreeCompany.MODEL_TYPE, widget.company.pk)
.then((value) {
if (mounted) {
setState(() {
attachmentCount = value;
});
}
}); });
}
});
} }
Future<void> editCompany(BuildContext context) async { Future<void> editCompany(BuildContext context) async {
@ -393,29 +407,31 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
); );
} }
tiles.add( ListTile? parameterTile = ShowParametersItem(
ListTile( context,
title: Text(L10().attachments), InvenTreeCompany.MODEL_TYPE,
leading: Icon(TablerIcons.file, color: COLOR_ACTION), widget.company.pk,
trailing: LinkIcon( parameterCount,
text: attachmentCount > 0 ? attachmentCount.toString() : null, widget.company.canEdit,
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AttachmentWidget(
InvenTreeCompanyAttachment(),
widget.company.pk,
widget.company.name,
InvenTreeCompany().canEdit,
),
),
);
},
),
); );
if (parameterTile != null) {
tiles.add(parameterTile);
}
ListTile? attachmentTile = ShowAttachmentsItem(
context,
InvenTreeCompany.MODEL_TYPE,
widget.company.pk,
widget.company.name,
attachmentCount,
widget.company.canEdit,
);
if (attachmentTile != null) {
tiles.add(attachmentTile);
}
return tiles; return tiles;
} }
} }

View file

@ -1,6 +1,8 @@
import "package:flutter/material.dart"; import "package:flutter/material.dart";
import "package:flutter_speed_dial/flutter_speed_dial.dart"; import "package:flutter_speed_dial/flutter_speed_dial.dart";
import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:inventree/inventree/attachment.dart";
import "package:inventree/inventree/parameter.dart";
import "package:inventree/l10.dart"; import "package:inventree/l10.dart";
import "package:inventree/api.dart"; import "package:inventree/api.dart";
@ -8,6 +10,8 @@ import "package:inventree/app_colors.dart";
import "package:inventree/inventree/company.dart"; import "package:inventree/inventree/company.dart";
import "package:inventree/inventree/part.dart"; import "package:inventree/inventree/part.dart";
import "package:inventree/widget/attachment_widget.dart";
import "package:inventree/widget/parameter_widget.dart";
import "package:inventree/widget/refreshable_state.dart"; import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/snacks.dart"; import "package:inventree/widget/snacks.dart";
@ -31,6 +35,9 @@ class _ManufacturerPartDisplayState
extends RefreshableState<ManufacturerPartDetailWidget> { extends RefreshableState<ManufacturerPartDetailWidget> {
_ManufacturerPartDisplayState(); _ManufacturerPartDisplayState();
int parameterCount = 0;
int attachmentCount = 0;
@override @override
String getAppBarTitle() => L10().manufacturerPart; String getAppBarTitle() => L10().manufacturerPart;
@ -42,7 +49,34 @@ class _ManufacturerPartDisplayState
if (!result) { if (!result) {
Navigator.of(context).pop(); Navigator.of(context).pop();
return;
} }
InvenTreeParameter()
.countParameters(
InvenTreeManufacturerPart.MODEL_TYPE,
widget.manufacturerPart.pk,
)
.then((value) {
if (mounted) {
setState(() {
parameterCount = value;
});
}
});
InvenTreeAttachment()
.countAttachments(
InvenTreeManufacturerPart.MODEL_TYPE,
widget.manufacturerPart.pk,
)
.then((value) {
if (mounted) {
setState(() {
attachmentCount = value;
});
}
});
} }
Future<void> editManufacturerPart(BuildContext context) async { Future<void> editManufacturerPart(BuildContext context) async {
@ -91,11 +125,6 @@ class _ManufacturerPartDisplayState
List<Widget> getTiles(BuildContext context) { List<Widget> getTiles(BuildContext context) {
List<Widget> tiles = []; List<Widget> tiles = [];
if (loading) {
tiles.add(progressIndicator());
return tiles;
}
// Internal Part // Internal Part
tiles.add( tiles.add(
ListTile( ListTile(
@ -174,6 +203,31 @@ class _ManufacturerPartDisplayState
); );
} }
ListTile? parameterTile = ShowParametersItem(
context,
InvenTreeManufacturerPart.MODEL_TYPE,
widget.manufacturerPart.pk,
parameterCount,
widget.manufacturerPart.canEdit,
);
if (parameterTile != null) {
tiles.add(parameterTile);
}
ListTile? attachmentTile = ShowAttachmentsItem(
context,
InvenTreeManufacturerPart.MODEL_TYPE,
widget.manufacturerPart.pk,
widget.manufacturerPart.MPN,
attachmentCount,
widget.manufacturerPart.canEdit,
);
if (attachmentTile != null) {
tiles.add(attachmentTile);
}
return tiles; return tiles;
} }
} }

View file

@ -2,6 +2,9 @@ import "package:flutter/material.dart";
import "package:flutter_speed_dial/flutter_speed_dial.dart"; import "package:flutter_speed_dial/flutter_speed_dial.dart";
import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:inventree/helpers.dart"; import "package:inventree/helpers.dart";
import "package:inventree/inventree/attachment.dart";
import "package:inventree/inventree/parameter.dart";
import "package:inventree/widget/attachment_widget.dart";
import "package:inventree/widget/link_icon.dart"; import "package:inventree/widget/link_icon.dart";
import "package:inventree/app_colors.dart"; import "package:inventree/app_colors.dart";
@ -11,6 +14,7 @@ import "package:inventree/barcode/barcode.dart";
import "package:inventree/inventree/part.dart"; import "package:inventree/inventree/part.dart";
import "package:inventree/inventree/company.dart"; import "package:inventree/inventree/company.dart";
import "package:inventree/widget/parameter_widget.dart";
import "package:inventree/widget/progress.dart"; import "package:inventree/widget/progress.dart";
import "package:inventree/widget/refreshable_state.dart"; import "package:inventree/widget/refreshable_state.dart";
@ -35,6 +39,9 @@ class _SupplierPartDisplayState
extends RefreshableState<SupplierPartDetailWidget> { extends RefreshableState<SupplierPartDetailWidget> {
_SupplierPartDisplayState(); _SupplierPartDisplayState();
int parameterCount = 0;
int attachmentCount = 0;
@override @override
String getAppBarTitle() => L10().supplierPart; String getAppBarTitle() => L10().supplierPart;
@ -97,7 +104,34 @@ class _SupplierPartDisplayState
if (!result) { if (!result) {
Navigator.of(context).pop(); Navigator.of(context).pop();
return;
} }
InvenTreeParameter()
.countParameters(
InvenTreeSupplierPart.MODEL_TYPE,
widget.supplierPart.pk,
)
.then((value) {
if (mounted) {
setState(() {
parameterCount = value;
});
}
});
InvenTreeAttachment()
.countAttachments(
InvenTreeSupplierPart.MODEL_TYPE,
widget.supplierPart.pk,
)
.then((value) {
if (mounted) {
setState(() {
attachmentCount = value;
});
}
});
} }
/* /*
@ -286,6 +320,31 @@ class _SupplierPartDisplayState
); );
} }
ListTile? parameterTile = ShowParametersItem(
context,
InvenTreeSupplierPart.MODEL_TYPE,
widget.supplierPart.pk,
parameterCount,
widget.supplierPart.canEdit,
);
if (parameterTile != null) {
tiles.add(parameterTile);
}
ListTile? attachmentTile = ShowAttachmentsItem(
context,
InvenTreeSupplierPart.MODEL_TYPE,
widget.supplierPart.pk,
widget.supplierPart.SKU,
attachmentCount,
widget.supplierPart.canEdit,
);
if (attachmentTile != null) {
tiles.add(attachmentTile);
}
return tiles; return tiles;
} }
} }

View file

@ -7,6 +7,8 @@ import "package:inventree/app_colors.dart";
import "package:inventree/barcode/barcode.dart"; import "package:inventree/barcode/barcode.dart";
import "package:inventree/barcode/purchase_order.dart"; import "package:inventree/barcode/purchase_order.dart";
import "package:inventree/helpers.dart"; import "package:inventree/helpers.dart";
import "package:inventree/inventree/attachment.dart";
import "package:inventree/inventree/parameter.dart";
import "package:inventree/l10.dart"; import "package:inventree/l10.dart";
import "package:inventree/inventree/model.dart"; import "package:inventree/inventree/model.dart";
@ -21,6 +23,7 @@ import "package:inventree/widget/order/po_line_list.dart";
import "package:inventree/widget/attachment_widget.dart"; import "package:inventree/widget/attachment_widget.dart";
import "package:inventree/widget/notes_widget.dart"; import "package:inventree/widget/notes_widget.dart";
import "package:inventree/widget/parameter_widget.dart";
import "package:inventree/widget/progress.dart"; import "package:inventree/widget/progress.dart";
import "package:inventree/widget/refreshable_state.dart"; import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/widget/snacks.dart"; import "package:inventree/widget/snacks.dart";
@ -50,6 +53,7 @@ class _PurchaseOrderDetailState
int completedLines = 0; int completedLines = 0;
int attachmentCount = 0; int attachmentCount = 0;
int parameterCount = 0;
bool showCameraShortcut = true; bool showCameraShortcut = true;
bool supportProjectCodes = false; bool supportProjectCodes = false;
@ -174,8 +178,12 @@ class _PurchaseOrderDetailState
/// Upload an image against the current PurchaseOrder /// Upload an image against the current PurchaseOrder
Future<void> _uploadImage(BuildContext context) async { Future<void> _uploadImage(BuildContext context) async {
InvenTreePurchaseOrderAttachment() InvenTreeAttachment()
.uploadImage(widget.order.pk, prefix: widget.order.reference) .uploadImage(
InvenTreePurchaseOrder.MODEL_TYPE,
widget.order.pk,
prefix: widget.order.reference,
)
.then((result) => refresh(context)); .then((result) => refresh(context));
} }
@ -295,15 +303,25 @@ class _PurchaseOrderDetailState
} }
} }
InvenTreePurchaseOrderAttachment().countAttachments(widget.order.pk).then(( InvenTreeParameter()
int value, .countParameters(InvenTreePurchaseOrder.MODEL_TYPE, widget.order.pk)
) { .then((int value) {
if (mounted) { if (mounted) {
setState(() { setState(() {
attachmentCount = value; parameterCount = value;
});
}
});
InvenTreeAttachment()
.countAttachments(InvenTreePurchaseOrder.MODEL_TYPE, widget.order.pk)
.then((int value) {
if (mounted) {
setState(() {
attachmentCount = value;
});
}
}); });
}
});
if (api.supportsPurchaseOrderDestination && if (api.supportsPurchaseOrderDestination &&
widget.order.destinationId > 0) { widget.order.destinationId > 0) {
@ -565,30 +583,31 @@ class _PurchaseOrderDetailState
), ),
); );
// Attachments ListTile? parameterTile = ShowParametersItem(
tiles.add( context,
ListTile( InvenTreePurchaseOrder.MODEL_TYPE,
title: Text(L10().attachments), widget.order.pk,
leading: Icon(TablerIcons.file, color: COLOR_ACTION), parameterCount,
trailing: LinkIcon( widget.order.canEdit,
text: attachmentCount > 0 ? attachmentCount.toString() : null,
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AttachmentWidget(
InvenTreePurchaseOrderAttachment(),
widget.order.pk,
widget.order.reference,
widget.order.canEdit,
),
),
);
},
),
); );
if (parameterTile != null) {
tiles.add(parameterTile);
}
ListTile? attachmentTile = ShowAttachmentsItem(
context,
InvenTreePurchaseOrder.MODEL_TYPE,
widget.order.pk,
widget.order.reference,
attachmentCount,
widget.order.canEdit,
);
if (attachmentTile != null) {
tiles.add(attachmentTile);
}
return tiles; return tiles;
} }

View file

@ -3,13 +3,16 @@ import "package:flutter_speed_dial/flutter_speed_dial.dart";
import "package:flutter_tabler_icons/flutter_tabler_icons.dart"; import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:inventree/barcode/barcode.dart"; import "package:inventree/barcode/barcode.dart";
import "package:inventree/barcode/sales_order.dart"; import "package:inventree/barcode/sales_order.dart";
import "package:inventree/inventree/attachment.dart";
import "package:inventree/inventree/company.dart"; import "package:inventree/inventree/company.dart";
import "package:inventree/inventree/parameter.dart";
import "package:inventree/inventree/sales_order.dart"; import "package:inventree/inventree/sales_order.dart";
import "package:inventree/preferences.dart"; import "package:inventree/preferences.dart";
import "package:inventree/widget/link_icon.dart"; import "package:inventree/widget/link_icon.dart";
import "package:inventree/widget/order/so_extra_line_list.dart"; import "package:inventree/widget/order/so_extra_line_list.dart";
import "package:inventree/widget/order/so_line_list.dart"; import "package:inventree/widget/order/so_line_list.dart";
import "package:inventree/widget/order/so_shipment_list.dart"; import "package:inventree/widget/order/so_shipment_list.dart";
import "package:inventree/widget/parameter_widget.dart";
import "package:inventree/widget/refreshable_state.dart"; import "package:inventree/widget/refreshable_state.dart";
import "package:inventree/l10.dart"; import "package:inventree/l10.dart";
@ -42,6 +45,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
bool showCameraShortcut = true; bool showCameraShortcut = true;
bool supportsProjectCodes = false; bool supportsProjectCodes = false;
int attachmentCount = 0; int attachmentCount = 0;
int parameterCount = 0;
@override @override
String getAppBarTitle() { String getAppBarTitle() {
@ -108,8 +112,12 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
/// Upload an image for this order /// Upload an image for this order
Future<void> _uploadImage(BuildContext context) async { Future<void> _uploadImage(BuildContext context) async {
InvenTreeSalesOrderAttachment() InvenTreeAttachment()
.uploadImage(widget.order.pk, prefix: widget.order.reference) .uploadImage(
InvenTreeSalesOrder.MODEL_TYPE,
widget.order.pk,
prefix: widget.order.reference,
)
.then((result) => refresh(context)); .then((result) => refresh(context));
} }
@ -266,15 +274,25 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
true, true,
); );
InvenTreeSalesOrderAttachment().countAttachments(widget.order.pk).then(( InvenTreeParameter()
int value, .countParameters(InvenTreeSalesOrder.MODEL_TYPE, widget.order.pk)
) { .then((int value) {
if (mounted) { if (mounted) {
setState(() { setState(() {
attachmentCount = value; parameterCount = value;
});
}
});
InvenTreeAttachment()
.countAttachments(InvenTreeSalesOrder.MODEL_TYPE, widget.order.pk)
.then((int value) {
if (mounted) {
setState(() {
attachmentCount = value;
});
}
}); });
}
});
// Count number of "extra line items" against this order // Count number of "extra line items" against this order
InvenTreeSOExtraLineItem() InvenTreeSOExtraLineItem()
@ -492,30 +510,31 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
), ),
); );
// Attachments ListTile? parameterTile = ShowParametersItem(
tiles.add( context,
ListTile( InvenTreeSalesOrder.MODEL_TYPE,
title: Text(L10().attachments), widget.order.pk,
leading: Icon(TablerIcons.file, color: COLOR_ACTION), parameterCount,
trailing: LinkIcon( widget.order.canEdit,
text: attachmentCount > 0 ? attachmentCount.toString() : null,
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AttachmentWidget(
InvenTreeSalesOrderAttachment(),
widget.order.pk,
widget.order.reference,
widget.order.canEdit,
),
),
);
},
),
); );
if (parameterTile != null) {
tiles.add(parameterTile);
}
ListTile? attachmentTile = ShowAttachmentsItem(
context,
InvenTreeSalesOrder.MODEL_TYPE,
widget.order.pk,
widget.order.reference,
attachmentCount,
widget.order.canEdit,
);
if (attachmentTile != null) {
tiles.add(attachmentTile);
}
return tiles; return tiles;
} }

View file

@ -8,6 +8,7 @@ import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:inventree/api.dart"; import "package:inventree/api.dart";
import "package:inventree/api_form.dart"; import "package:inventree/api_form.dart";
import "package:inventree/app_colors.dart"; import "package:inventree/app_colors.dart";
import "package:inventree/inventree/attachment.dart";
import "package:inventree/inventree/sales_order.dart"; import "package:inventree/inventree/sales_order.dart";
import "package:inventree/l10.dart"; import "package:inventree/l10.dart";
import "package:inventree/preferences.dart"; import "package:inventree/preferences.dart";
@ -91,8 +92,11 @@ class _SOShipmentDetailWidgetState
}); });
} }
InvenTreeSalesOrderShipmentAttachment() InvenTreeAttachment()
.countAttachments(widget.shipment.pk) .countAttachments(
InvenTreeSalesOrderShipment.MODEL_TYPE,
widget.shipment.pk,
)
.then((int value) { .then((int value) {
if (mounted) { if (mounted) {
setState(() { setState(() {
@ -104,8 +108,12 @@ class _SOShipmentDetailWidgetState
/// Upload an image for this shipment /// Upload an image for this shipment
Future<void> _uploadImage(BuildContext context) async { Future<void> _uploadImage(BuildContext context) async {
InvenTreeSalesOrderShipmentAttachment() InvenTreeAttachment()
.uploadImage(widget.shipment.pk, prefix: widget.shipment.reference) .uploadImage(
InvenTreeSalesOrderShipment.MODEL_TYPE,
widget.shipment.pk,
prefix: widget.shipment.reference,
)
.then((result) => refresh(context)); .then((result) => refresh(context));
} }
@ -339,30 +347,19 @@ class _SOShipmentDetailWidgetState
), ),
); );
// Attachments ListTile? attachmentTile = ShowAttachmentsItem(
tiles.add( context,
ListTile( InvenTreeSalesOrderShipment.MODEL_TYPE,
title: Text(L10().attachments), widget.shipment.pk,
leading: Icon(TablerIcons.file, color: COLOR_ACTION), widget.shipment.reference,
trailing: LinkIcon( attachmentCount,
text: attachmentCount > 0 ? attachmentCount.toString() : null, widget.shipment.canEdit,
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AttachmentWidget(
InvenTreeSalesOrderShipmentAttachment(),
widget.shipment.pk,
widget.shipment.reference,
widget.shipment.canEdit,
),
),
);
},
),
); );
if (attachmentTile != null) {
tiles.add(attachmentTile);
}
return tiles; return tiles;
} }

View file

@ -1,8 +1,12 @@
import "package:flutter/material.dart"; import "package:flutter/material.dart";
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:inventree/api.dart";
import "package:inventree/app_colors.dart";
import "package:inventree/inventree/model.dart"; import "package:inventree/inventree/model.dart";
import "package:inventree/inventree/parameter.dart";
import "package:inventree/l10.dart"; import "package:inventree/l10.dart";
import "package:inventree/inventree/part.dart"; import "package:inventree/widget/link_icon.dart";
import "package:inventree/widget/paginator.dart"; import "package:inventree/widget/paginator.dart";
import "package:inventree/widget/progress.dart"; import "package:inventree/widget/progress.dart";
import "package:inventree/widget/refreshable_state.dart"; import "package:inventree/widget/refreshable_state.dart";
@ -10,16 +14,18 @@ import "package:inventree/widget/refreshable_state.dart";
/* /*
* Widget for displaying a list of parameters associated with a given Part instance * Widget for displaying a list of parameters associated with a given Part instance
*/ */
class PartParameterWidget extends StatefulWidget { class ParameterWidget extends StatefulWidget {
const PartParameterWidget(this.part); const ParameterWidget(this.modelType, this.modelId, this.editable) : super();
final InvenTreePart part; final String modelType;
final int modelId;
final bool editable;
@override @override
_ParameterWidgetState createState() => _ParameterWidgetState(); _ParameterWidgetState createState() => _ParameterWidgetState();
} }
class _ParameterWidgetState extends RefreshableState<PartParameterWidget> { class _ParameterWidgetState extends RefreshableState<ParameterWidget> {
_ParameterWidgetState(); _ParameterWidgetState();
@override @override
@ -34,9 +40,16 @@ class _ParameterWidgetState extends RefreshableState<PartParameterWidget> {
@override @override
Widget getBody(BuildContext context) { Widget getBody(BuildContext context) {
Map<String, String> filters = {"part": widget.part.pk.toString()}; Map<String, String> filters = {
"model_type": widget.modelType,
"model_id": widget.modelId.toString(),
};
return Column(children: [Expanded(child: PaginatedParameterList(filters))]); return Column(
children: [
Expanded(child: PaginatedParameterList(filters, widget.editable)),
],
);
} }
} }
@ -44,9 +57,11 @@ class _ParameterWidgetState extends RefreshableState<PartParameterWidget> {
* Widget for displaying a paginated list of Part parameters * Widget for displaying a paginated list of Part parameters
*/ */
class PaginatedParameterList extends PaginatedSearchWidget { class PaginatedParameterList extends PaginatedSearchWidget {
const PaginatedParameterList(Map<String, String> filters) const PaginatedParameterList(Map<String, String> filters, this.editable)
: super(filters: filters); : super(filters: filters);
final bool editable;
@override @override
String get searchTitle => L10().parameters; String get searchTitle => L10().parameters;
@ -75,7 +90,7 @@ class _PaginatedParameterState
int offset, int offset,
Map<String, String> params, Map<String, String> params,
) async { ) async {
final page = await InvenTreePartParameter().listPaginated( final page = await InvenTreeParameter().listPaginated(
limit, limit,
offset, offset,
filters: params, filters: params,
@ -84,7 +99,7 @@ class _PaginatedParameterState
return page; return page;
} }
Future<void> editParameter(InvenTreePartParameter parameter) async { Future<void> editParameter(InvenTreeParameter parameter) async {
// Checkbox values are handled separately // Checkbox values are handled separately
if (parameter.is_checkbox) { if (parameter.is_checkbox) {
return; return;
@ -101,7 +116,7 @@ class _PaginatedParameterState
@override @override
Widget buildItem(BuildContext context, InvenTreeModel model) { Widget buildItem(BuildContext context, InvenTreeModel model) {
InvenTreePartParameter parameter = model as InvenTreePartParameter; InvenTreeParameter parameter = model as InvenTreeParameter;
String title = parameter.name; String title = parameter.name;
@ -116,7 +131,7 @@ class _PaginatedParameterState
? Switch( ? Switch(
value: parameter.as_bool, value: parameter.as_bool,
onChanged: (bool value) { onChanged: (bool value) {
if (parameter.canEdit) { if (widget.editable) {
showLoadingOverlay(); showLoadingOverlay();
parameter.update(values: {"data": value.toString()}).then(( parameter.update(values: {"data": value.toString()}).then((
value, value,
@ -131,10 +146,47 @@ class _PaginatedParameterState
onTap: parameter.is_checkbox onTap: parameter.is_checkbox
? null ? null
: () async { : () async {
if (parameter.canEdit) { if (widget.editable) {
editParameter(parameter); editParameter(parameter);
} }
}, },
); );
} }
} }
/*
* Return a ListTile to display parameters for the specified model
*/
ListTile? ShowParametersItem(
BuildContext context,
String modelType,
int modelId,
int parameterCount,
bool editable,
) {
// Note: Currently cannot add parameters from the app,
// So, if there are no parameters, do not show the item
if (parameterCount == 0) {
return null;
}
if (!InvenTreeAPI().supportsModernParameters) {
return null;
}
return ListTile(
title: Text(L10().parameters),
leading: Icon(TablerIcons.list_details, color: COLOR_ACTION),
trailing: LinkIcon(
text: parameterCount > 0 ? parameterCount.toString() : null,
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ParameterWidget(modelType, modelId, editable),
),
);
},
);
}

View file

@ -4,6 +4,8 @@ import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
import "package:inventree/app_colors.dart"; import "package:inventree/app_colors.dart";
import "package:inventree/barcode/barcode.dart"; import "package:inventree/barcode/barcode.dart";
import "package:inventree/inventree/attachment.dart";
import "package:inventree/inventree/parameter.dart";
import "package:inventree/l10.dart"; import "package:inventree/l10.dart";
import "package:inventree/helpers.dart"; import "package:inventree/helpers.dart";
@ -15,10 +17,10 @@ import "package:inventree/preferences.dart";
import "package:inventree/widget/attachment_widget.dart"; import "package:inventree/widget/attachment_widget.dart";
import "package:inventree/widget/link_icon.dart"; import "package:inventree/widget/link_icon.dart";
import "package:inventree/widget/parameter_widget.dart";
import "package:inventree/widget/part/bom_list.dart"; import "package:inventree/widget/part/bom_list.dart";
import "package:inventree/widget/part/part_list.dart"; import "package:inventree/widget/part/part_list.dart";
import "package:inventree/widget/notes_widget.dart"; import "package:inventree/widget/notes_widget.dart";
import "package:inventree/widget/part/part_parameter_widget.dart";
import "package:inventree/widget/part/part_pricing.dart"; import "package:inventree/widget/part/part_pricing.dart";
import "package:inventree/widget/progress.dart"; import "package:inventree/widget/progress.dart";
import "package:inventree/widget/part/category_display.dart"; import "package:inventree/widget/part/category_display.dart";
@ -49,13 +51,11 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
InvenTreeStockLocation? defaultLocation; InvenTreeStockLocation? defaultLocation;
int parameterCount = 0;
bool allowLabelPrinting = false; bool allowLabelPrinting = false;
bool showParameters = false;
bool showBom = false; bool showBom = false;
bool showPricing = false; bool showPricing = false;
int parameterCount = 0;
int attachmentCount = 0; int attachmentCount = 0;
int bomCount = 0; int bomCount = 0;
int usedInCount = 0; int usedInCount = 0;
@ -152,10 +152,6 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
INV_PART_SHOW_PRICING, INV_PART_SHOW_PRICING,
true, true,
); );
showParameters = await InvenTreeSettingsManager().getBool(
INV_PART_SHOW_PARAMETERS,
true,
);
showBom = await InvenTreeSettingsManager().getBool(INV_PART_SHOW_BOM, true); showBom = await InvenTreeSettingsManager().getBool(INV_PART_SHOW_BOM, true);
allowLabelPrinting = await InvenTreeSettingsManager().getBool( allowLabelPrinting = await InvenTreeSettingsManager().getBool(
INV_ENABLE_LABEL_PRINTING, INV_ENABLE_LABEL_PRINTING,
@ -212,13 +208,30 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
} }
// Request the number of attachments // Request the number of attachments
InvenTreePartAttachment().countAttachments(part.pk).then((int value) { if (api.supportsModernAttachments) {
if (mounted) { InvenTreeAttachment()
setState(() { .countAttachments(InvenTreePart.MODEL_TYPE, part.pk)
attachmentCount = value; .then((int value) {
}); if (mounted) {
} setState(() {
}); attachmentCount = value;
});
}
});
}
// Request the number of parameters
if (api.supportsModernParameters) {
InvenTreeParameter()
.countParameters(InvenTreePart.MODEL_TYPE, part.pk)
.then((int value) {
if (mounted) {
setState(() {
parameterCount = value;
});
}
});
}
// If show pricing information? // If show pricing information?
if (showPricing) { if (showPricing) {
@ -596,29 +609,31 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
), ),
); );
tiles.add( ListTile? parameterTile = ShowParametersItem(
ListTile( context,
title: Text(L10().attachments), InvenTreePart.MODEL_TYPE,
leading: Icon(TablerIcons.file, color: COLOR_ACTION), part.pk,
trailing: LinkIcon( parameterCount,
text: attachmentCount > 0 ? attachmentCount.toString() : null, part.canEdit,
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AttachmentWidget(
InvenTreePartAttachment(),
part.pk,
L10().part,
part.canEdit,
),
),
);
},
),
); );
if (parameterTile != null) {
tiles.add(parameterTile);
}
ListTile? attachmentTile = ShowAttachmentsItem(
context,
InvenTreePart.MODEL_TYPE,
part.pk,
L10().part,
attachmentCount,
part.canEdit,
);
if (attachmentTile != null) {
tiles.add(attachmentTile);
}
return tiles; return tiles;
} }
@ -712,10 +727,6 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
List<Widget> getTabIcons(BuildContext context) { List<Widget> getTabIcons(BuildContext context) {
List<Widget> icons = [Tab(text: L10().details), Tab(text: L10().stock)]; List<Widget> icons = [Tab(text: L10().details), Tab(text: L10().stock)];
if (showParameters) {
icons.add(Tab(text: L10().parameters));
}
return icons; return icons;
} }
@ -728,11 +739,6 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
), ),
PaginatedStockItemList({"part": part.pk.toString()}), PaginatedStockItemList({"part": part.pk.toString()}),
]; ];
if (showParameters) {
tabs.add(PaginatedParameterList({"part": part.pk.toString()}));
}
return tabs; return tabs;
} }
} }

View file

@ -7,6 +7,7 @@ import "package:inventree/app_colors.dart";
import "package:inventree/barcode/barcode.dart"; import "package:inventree/barcode/barcode.dart";
import "package:inventree/barcode/stock.dart"; import "package:inventree/barcode/stock.dart";
import "package:inventree/helpers.dart"; import "package:inventree/helpers.dart";
import "package:inventree/inventree/attachment.dart";
import "package:inventree/inventree/sales_order.dart"; import "package:inventree/inventree/sales_order.dart";
import "package:inventree/l10.dart"; import "package:inventree/l10.dart";
import "package:inventree/api.dart"; import "package:inventree/api.dart";
@ -255,15 +256,15 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
} }
// Request the number of attachments // Request the number of attachments
InvenTreeStockItemAttachment().countAttachments(widget.item.pk).then(( InvenTreeAttachment()
int value, .countAttachments(InvenTreeStockItem.MODEL_TYPE, widget.item.pk)
) { .then((int value) {
if (mounted) { if (mounted) {
setState(() { setState(() {
attachmentCount = value; attachmentCount = value;
});
}
}); });
}
});
// Request SalesOrder information // Request SalesOrder information
if (widget.item.hasSalesOrder) { if (widget.item.hasSalesOrder) {
@ -837,29 +838,19 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
), ),
); );
tiles.add( ListTile? attachmentTile = ShowAttachmentsItem(
ListTile( context,
title: Text(L10().attachments), InvenTreeStockItem.MODEL_TYPE,
leading: Icon(TablerIcons.file, color: COLOR_ACTION), widget.item.pk,
trailing: LinkIcon( L10().stockItem,
text: attachmentCount > 0 ? attachmentCount.toString() : null, attachmentCount,
), widget.item.canEdit,
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AttachmentWidget(
InvenTreeStockItemAttachment(),
widget.item.pk,
L10().stockItem,
widget.item.canEdit,
),
),
);
},
),
); );
if (attachmentTile != null) {
tiles.add(attachmentTile);
}
return tiles; return tiles;
} }
} }

60
update-flutter-nix.sh Normal file
View file

@ -0,0 +1,60 @@
#!/usr/bin/env bash
set -e
# 0. Abhängigkeiten prüfen
for cmd in jq curl sed nix; do
command -v $cmd >/dev/null 2>&1 || { echo "Fehler: $cmd nicht installiert!"; exit 1; }
done
# 1. Version aus .fvmrc extrahieren
if [ ! -f .fvmrc ]; then
echo "Fehler: .fvmrc nicht gefunden!"
exit 1
fi
FLUTTER_VERSION=$(jq -r .flutter .fvmrc)
echo "Gesuchte Flutter Version: $FLUTTER_VERSION"
# 2. Commit-Hash und Version aus Devbox-API holen
API_URL="https://search.devbox.sh/v2/pkg?name=flutter"
RELEASES_JSON=$(curl -s "$API_URL")
# Alle Versionen extrahieren und sortieren
ALL_VERSIONS=$(echo "$RELEASES_JSON" | jq -r '.releases[].version' | sort -V)
# Finde die gewünschte oder nächsthöhere Version
FOUND_VERSION=$(echo "$ALL_VERSIONS" | awk -v v="$FLUTTER_VERSION" '$0 >= v { print; exit }')
if [ -z "$FOUND_VERSION" ]; then
echo "Fehler: Keine passende Flutter-Version gefunden."
exit 1
fi
if [ "$FOUND_VERSION" != "$FLUTTER_VERSION" ]; then
echo "Hinweis: Exakte Version nicht gefunden, benutze stattdessen Version $FOUND_VERSION."
fi
# Commit-Hash für x86_64-linux extrahieren
COMMIT=$(echo "$RELEASES_JSON" | jq -r --arg v "$FOUND_VERSION" '.releases[] | select(.version==$v) | .platforms[] | select(.system=="x86_64-linux") | .commit_hash' | head -n 1)
if [ -z "$COMMIT" ] || [ "$COMMIT" == "null" ]; then
echo "Fehler: Kein Commit-Hash für Version $FOUND_VERSION und Plattform x86_64-linux gefunden."
exit 1
fi
echo "Gefundener Commit: $COMMIT (Version: $FOUND_VERSION)"
# 3. Die flake.nix patchen (Backup anlegen)
sed -i.bak "s|nixpkgs-flutter.url = \"github:NixOS/nixpkgs/[a-f0-9]*\";|nixpkgs-flutter.url = \"github:NixOS/nixpkgs/$COMMIT\";|" flake.nix
# 4. Den Flake-Lock aktualisieren
nix flake update nixpkgs-flutter
# 5. Optional: direnv reload
if command -v direnv >/dev/null 2>&1; then
direnv reload
fi
echo "Erfolgreich! Die flake.nix nutzt nun den Commit für Flutter $FLUTTER_VERSION (oder höher)."