Compare commits

..

No commits in common. "master" and "0.21.1" have entirely different histories.

45 changed files with 1607 additions and 2063 deletions

14
.envrc
View file

@ -1,14 +0,0 @@
# 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,9 +3,6 @@
name: Android name: Android
on: on:
pull_request:
branches:
- master
push: push:
branches: branches:
- master - master
@ -33,7 +30,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: false cache: true
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,9 +3,6 @@
name: iOS name: iOS
on: on:
pull_request:
branches:
- master
push: push:
branches: branches:
- master - master
@ -36,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: false cache: true
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:"
@ -52,7 +49,6 @@ 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,8 +8,6 @@
.buildlog/ .buildlog/
.history .history
.svn/ .svn/
.direnv
flake.nix.bak
coverage/* coverage/*

47
NOTE.md
View file

@ -1,47 +0,0 @@
## 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,8 +1,3 @@
### 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
View file

@ -1,78 +0,0 @@
{
"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
View file

@ -1,137 +0,0 @@
{
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,10 +353,6 @@ 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

@ -1,176 +0,0 @@
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,6 +111,31 @@ 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,4 +1,5 @@
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";
@ -14,6 +15,7 @@ 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 {
@ -932,3 +934,171 @@ 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

@ -1,77 +0,0 @@
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,6 +132,68 @@ 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
*/ */
@ -485,3 +547,28 @@ 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,3 +336,28 @@ 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 InvenTreeModel { class InvenTreeSalesOrderAllocation extends InvenTreeAttachment {
InvenTreeSalesOrderAllocation() : super(); InvenTreeSalesOrderAllocation() : super();
InvenTreeSalesOrderAllocation.fromJson(Map<String, dynamic> json) InvenTreeSalesOrderAllocation.fromJson(Map<String, dynamic> json)
@ -428,3 +428,48 @@ class InvenTreeSalesOrderAllocation extends InvenTreeModel {
} }
} }
} }
/*
* 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,6 +575,31 @@ 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": "Kliknutím pozastavíte skenování", "barcodeScanPause": "Tap to pause scanning",
"@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": "Ovladač pro popisky", "labelDriver": "Label Driver",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Vyberte ovladač pro tiskárnu štítků", "labelSelectDriver": "Select Label Printer Driver",
"@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": "Tippen um das Scannen zu pausieren", "barcodeScanPause": "Tap to pause scanning",
"@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": "Etikettendrucker Treiber", "labelDriver": "Label Driver",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Etikettendrucker Treiber auswählen", "labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {}, "@labelSelectDriver": {},
"labelPrinting": "Etikettendruck", "labelPrinting": "Etikettendruck",
"@labelPrinting": {}, "@labelPrinting": {},
@ -944,29 +944,29 @@
"@shipment": {}, "@shipment": {},
"shipments": "Lieferungen", "shipments": "Lieferungen",
"@shipments": {}, "@shipments": {},
"shipmentsPending": "Ausstehende Lieferungen", "shipmentsPending": "Ausstehende Sendungen",
"@shipmentsPending": {}, "@shipmentsPending": {},
"shipmentAdd": "Lieferung hinzufügen", "shipmentAdd": "Lieferung hinzufügen",
"@shipmentAdd": {}, "@shipmentAdd": {},
"shipmentCheck": "Lieferung überprüfen", "shipmentCheck": "Sendung prüfen",
"@shipmentCheck": {}, "@shipmentCheck": {},
"shipmentCheckDetail": "Diese Lieferung als geprüft markieren", "shipmentCheckDetail": "Diese Sendung als geprüft markieren",
"@shipmentCheckDetail": {}, "@shipmentCheckDetail": {},
"shipmentChecked": "Lieferung überprüft", "shipmentChecked": "Sendung geprüft",
"@shipmentChecked": {}, "@shipmentChecked": {},
"shipmentDate": "Versanddatum", "shipmentDate": "Versanddatum",
"@shipmentDate": {}, "@shipmentDate": {},
"shipmentEdit": "Lieferung bearbeiten", "shipmentEdit": "Sendung bearbeiten",
"@shipmentEdit": {}, "@shipmentEdit": {},
"shipmentReference": "Sendungsreferenz", "shipmentReference": "Shipment Reference",
"@shipmentReference": {}, "@shipmentReference": {},
"shipmentSend": "Lieferung versenden", "shipmentSend": "Lieferung versenden",
"@shipmentSend": {}, "@shipmentSend": {},
"shipmentUncheck": "Lieferung ungeprüft markieren", "shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {}, "@shipmentUncheck": {},
"shipmentUncheckDetail": "Diese Lieferung als ungeprüft markieren", "shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {}, "@shipmentUncheckDetail": {},
"shipmentUpdated": "Lieferung Aktualisiert", "shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {}, "@shipmentUpdated": {},
"shipped": "Versandt", "shipped": "Versandt",
"@shipped": {}, "@shipped": {},
@ -1102,7 +1102,7 @@
"@timeout": { "@timeout": {
"description": "" "description": ""
}, },
"toggleTorch": "Taschenlampe umschalten", "toggleTorch": "Toggle Torch",
"@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": "Maximalen Preis ignorieren", "priceOverrideMax": "Maximum Price Override",
"@priceOverrideMax": {}, "@priceOverrideMax": {},
"salePrice": "Verkaufspreis", "salePrice": "Verkaufspreis",
"@salePrice": {}, "@salePrice": {},
@ -1198,7 +1198,7 @@
"@variantCost": {}, "@variantCost": {},
"overallPricing": "Gesamt Preise", "overallPricing": "Gesamt Preise",
"@overallPricing": {}, "@overallPricing": {},
"pricingOverrides": "Preisgestaltung ignorieren", "pricingOverrides": "Pricing Overrides",
"@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": "Deseleccionar Envío", "shipmentUncheck": "Uncheck Shipment",
"@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": "Cambiar Cámara", "switchCamera": "Switch Camera",
"@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": "Subir Imagen", "uploadImage": "Upload Image",
"@uploadImage": {}, "@uploadImage": {},
"usedIn": "Usado en", "usedIn": "Usado en",
"@usedIn": {}, "@usedIn": {},

View file

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

View file

@ -46,7 +46,7 @@
"@aspectRatioSquare": {}, "@aspectRatioSquare": {},
"allocateStock": "Készlet foglalása", "allocateStock": "Készlet foglalása",
"@allocateStock": {}, "@allocateStock": {},
"allocatedStock": "Lefoglalt Készlet", "allocatedStock": "Allocated Stock",
"@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": "Érintse meg a szkennelés szüneteltetéséhez", "barcodeScanPause": "Tap to pause scanning",
"@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": "Szállítási Dátum", "deliveryDate": "Delivery Date",
"@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": "Szállítmányok Mutatása", "homeShowShipments": "Show Shipments",
"@homeShowShipments": {}, "@homeShowShipments": {},
"homeShowShipmentsDescription": "Függőben lévő szállítmányok megjelenítése a kezdőképernyőn", "homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@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": "Számla", "invoice": "Invoice",
"@invoice": {}, "@invoice": {},
"invoiceNumber": "Számlaszám", "invoiceNumber": "Invoice Number",
"@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": "Címke Meghajtó", "labelDriver": "Label Driver",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Címkenyomtató Meghajtó Kiválasztása", "labelSelectDriver": "Select Label Printer Driver",
"@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": "Alapértelmezett Hely", "locationDefault": "Default Location",
"@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": "Nem", "no": "No",
"@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": "Függőben", "pending": "Pending",
"@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": "Szállítmány", "shipment": "Shipment",
"@shipment": {}, "@shipment": {},
"shipments": "Szállítmányok", "shipments": "Szállítmányok",
"@shipments": {}, "@shipments": {},
"shipmentsPending": "Függőben Lévő Szállítmányok", "shipmentsPending": "Pending Shipments",
"@shipmentsPending": {}, "@shipmentsPending": {},
"shipmentAdd": "Szállítmány hozzáadása", "shipmentAdd": "Szállítmány hozzáadása",
"@shipmentAdd": {}, "@shipmentAdd": {},
"shipmentCheck": "Szállítmány Ellenőrzése", "shipmentCheck": "Check Shipment",
"@shipmentCheck": {}, "@shipmentCheck": {},
"shipmentCheckDetail": "Jelölje meg ezt a szállítmányt ellenőrzöttként", "shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {}, "@shipmentCheckDetail": {},
"shipmentChecked": "Szállítmány Ellenőrizve", "shipmentChecked": "Shipment Checked",
"@shipmentChecked": {}, "@shipmentChecked": {},
"shipmentDate": "Szállítmány Dátuma", "shipmentDate": "Shipment Date",
"@shipmentDate": {}, "@shipmentDate": {},
"shipmentEdit": "Szállítmány Szerkesztése", "shipmentEdit": "Edit Shipment",
"@shipmentEdit": {}, "@shipmentEdit": {},
"shipmentReference": "Szállítmány Hivatkozás", "shipmentReference": "Shipment Reference",
"@shipmentReference": {}, "@shipmentReference": {},
"shipmentSend": "Szállítmány Küldése", "shipmentSend": "Send Shipment",
"@shipmentSend": {}, "@shipmentSend": {},
"shipmentUncheck": "Szállítmány Ellenőrzés Visszavonása", "shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {}, "@shipmentUncheck": {},
"shipmentUncheckDetail": "Jelölje meg ezt a szállítmányt nem ellenőrzöttként", "shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {}, "@shipmentUncheckDetail": {},
"shipmentUpdated": "Szállítmány Frissítve", "shipmentUpdated": "Shipment Updated",
"@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": "Nyomkövetési Szám", "trackingNumber": "Tracking Number",
"@trackingNumber": {}, "@trackingNumber": {},
"transfer": "Áthelyezés", "transfer": "Áthelyezés",
"@transfer": { "@transfer": {
@ -1174,7 +1174,7 @@
"@viewSupplierPart": {}, "@viewSupplierPart": {},
"website": "Weboldal", "website": "Weboldal",
"@website": {}, "@website": {},
"yes": "Igen", "yes": "Yes",
"@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": "Tocca per mettere in pausa la scansione", "barcodeScanPause": "Tap to pause scanning",
"@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": "Driver Etichetta", "labelDriver": "Label Driver",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Seleziona Il Driver Della Stampante Etichette", "labelSelectDriver": "Select Label Printer Driver",
"@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": "Toegewezen voorraad", "allocatedStock": "Allocated Stock",
"@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": "Klik om scannen te pauzeren", "barcodeScanPause": "Tap to pause scanning",
"@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": "Leveringsdatum", "deliveryDate": "Delivery Date",
"@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": "Verzending weergeven", "homeShowShipments": "Show Shipments",
"@homeShowShipments": {}, "@homeShowShipments": {},
"homeShowShipmentsDescription": "Toon Leveringen in afwachting op het startscherm", "homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@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": "Factuur", "invoice": "Invoice",
"@invoice": {}, "@invoice": {},
"invoiceNumber": "Factuur nummer", "invoiceNumber": "Invoice Number",
"@invoiceNumber": {}, "@invoiceNumber": {},
"issue": "Probleem", "issue": "Probleem",
"@issue": {}, "@issue": {},
@ -472,9 +472,9 @@
"@itemUpdated": {}, "@itemUpdated": {},
"keywords": "Trefwoorden", "keywords": "Trefwoorden",
"@keywords": {}, "@keywords": {},
"labelDriver": "Label printer", "labelDriver": "Label Driver",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Selecteer Label Printer Driver", "labelSelectDriver": "Select 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": "Standaard locatie", "locationDefault": "Default Location",
"@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": "Nee", "no": "No",
"@no": {}, "@no": {},
"notApplicable": "N.v.t. ", "notApplicable": "N/A",
"@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": "In behandeling", "pending": "Pending",
"@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": "Levering", "shipment": "Shipment",
"@shipment": {}, "@shipment": {},
"shipments": "Verzendingen", "shipments": "Verzendingen",
"@shipments": {}, "@shipments": {},
"shipmentsPending": "Leveringen in behandeling", "shipmentsPending": "Pending Shipments",
"@shipmentsPending": {}, "@shipmentsPending": {},
"shipmentAdd": "Verzending toevoegen", "shipmentAdd": "Verzending toevoegen",
"@shipmentAdd": {}, "@shipmentAdd": {},
"shipmentCheck": "Controleer Levering", "shipmentCheck": "Check Shipment",
"@shipmentCheck": {}, "@shipmentCheck": {},
"shipmentCheckDetail": "Markeer deze levering als gecontroleerd", "shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {}, "@shipmentCheckDetail": {},
"shipmentChecked": "Levering gecontroleerd", "shipmentChecked": "Shipment Checked",
"@shipmentChecked": {}, "@shipmentChecked": {},
"shipmentDate": "Leverings Datum", "shipmentDate": "Shipment Date",
"@shipmentDate": {}, "@shipmentDate": {},
"shipmentEdit": "Wijzig levering", "shipmentEdit": "Edit Shipment",
"@shipmentEdit": {}, "@shipmentEdit": {},
"shipmentReference": "Shipment Reference", "shipmentReference": "Shipment Reference",
"@shipmentReference": {}, "@shipmentReference": {},
"shipmentSend": "Verzending versturen", "shipmentSend": "Send Shipment",
"@shipmentSend": {}, "@shipmentSend": {},
"shipmentUncheck": "Verzending uitvinken", "shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {}, "@shipmentUncheck": {},
"shipmentUncheckDetail": "Markeer deze levering als niet gecontroleerd", "shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {}, "@shipmentUncheckDetail": {},
"shipmentUpdated": "Verzending bijgewerkt", "shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {}, "@shipmentUpdated": {},
"shipped": "Verzonden", "shipped": "Verzonden",
"@shipped": {}, "@shipped": {},
@ -1112,7 +1112,7 @@
"@tokenMissingFromResponse": {}, "@tokenMissingFromResponse": {},
"totalPrice": "Totaalprijs", "totalPrice": "Totaalprijs",
"@totalPrice": {}, "@totalPrice": {},
"trackingNumber": "Traceernummer", "trackingNumber": "Tracking Number",
"@trackingNumber": {}, "@trackingNumber": {},
"transfer": "Verplaats", "transfer": "Verplaats",
"@transfer": { "@transfer": {
@ -1174,7 +1174,7 @@
"@viewSupplierPart": {}, "@viewSupplierPart": {},
"website": "Website", "website": "Website",
"@website": {}, "@website": {},
"yes": "Ja", "yes": "Yes",
"@yes": {}, "@yes": {},
"price": "Prijs", "price": "Prijs",
"@price": {}, "@price": {},

View file

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

View file

@ -46,7 +46,7 @@
"@aspectRatioSquare": {}, "@aspectRatioSquare": {},
"allocateStock": "Выделить запас", "allocateStock": "Выделить запас",
"@allocateStock": {}, "@allocateStock": {},
"allocatedStock": "Зарезервированные остатки", "allocatedStock": "Allocated Stock",
"@allocatedStock": {}, "@allocatedStock": {},
"appReleaseNotes": "Показать заметки о выпуске приложения", "appReleaseNotes": "Показать заметки о выпуске приложения",
"@appReleaseNotes": {}, "@appReleaseNotes": {},
@ -102,7 +102,7 @@
"@barcodeReceivePart": {}, "@barcodeReceivePart": {},
"barcodeScanPaused": "Сканирование штрих-кода приостановлено", "barcodeScanPaused": "Сканирование штрих-кода приостановлено",
"@barodeScanPaused": {}, "@barodeScanPaused": {},
"barcodeScanPause": "Нажмите, чтобы приостановить сканирование", "barcodeScanPause": "Tap to pause scanning",
"@barcodeScanPause": {}, "@barcodeScanPause": {},
"barcodeScanAssign": "Сканировать для присвоения штрих-кода", "barcodeScanAssign": "Сканировать для присвоения штрих-кода",
"@barcodeScanAssign": {}, "@barcodeScanAssign": {},
@ -240,7 +240,7 @@
"@deletePartDetail": {}, "@deletePartDetail": {},
"deleteSuccess": "Удаление успешно завершено", "deleteSuccess": "Удаление успешно завершено",
"@deleteSuccess": {}, "@deleteSuccess": {},
"deliveryDate": "Дата доставки", "deliveryDate": "Delivery Date",
"@deliveryDate": {}, "@deliveryDate": {},
"description": "Описание", "description": "Описание",
"@description": {}, "@description": {},
@ -384,9 +384,9 @@
"@homeShowPo": {}, "@homeShowPo": {},
"homeShowPoDescription": "Показывать кнопку заказа на главном экране", "homeShowPoDescription": "Показывать кнопку заказа на главном экране",
"@homeShowPoDescription": {}, "@homeShowPoDescription": {},
"homeShowShipments": "Показать отгрузки", "homeShowShipments": "Show Shipments",
"@homeShowShipments": {}, "@homeShowShipments": {},
"homeShowShipmentsDescription": "Показывать ожидающие отгрузки на главном экране", "homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@homeShowShipmentsDescription": {}, "@homeShowShipmentsDescription": {},
"homeShowSo": "Показать заказы на продажу", "homeShowSo": "Показать заказы на продажу",
"@homeShowSo": {}, "@homeShowSo": {},
@ -454,9 +454,9 @@
"@invalidSupplierPart": {}, "@invalidSupplierPart": {},
"invalidUsernamePassword": "Неверная комбинация имени пользователя и пароля", "invalidUsernamePassword": "Неверная комбинация имени пользователя и пароля",
"@invalidUsernamePassword": {}, "@invalidUsernamePassword": {},
"invoice": "Счет", "invoice": "Invoice",
"@invoice": {}, "@invoice": {},
"invoiceNumber": "Номер счета", "invoiceNumber": "Invoice Number",
"@invoiceNumber": {}, "@invoiceNumber": {},
"issue": "Оформить", "issue": "Оформить",
"@issue": {}, "@issue": {},
@ -472,9 +472,9 @@
"@itemUpdated": {}, "@itemUpdated": {},
"keywords": "Ключевые слова", "keywords": "Ключевые слова",
"@keywords": {}, "@keywords": {},
"labelDriver": "Драйвер принтера этикеток", "labelDriver": "Label Driver",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Выберите драйвер принтера этикеток", "labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {}, "@labelSelectDriver": {},
"labelPrinting": "Печать этикеток", "labelPrinting": "Печать этикеток",
"@labelPrinting": {}, "@labelPrinting": {},
@ -514,7 +514,7 @@
"@locationCreate": {}, "@locationCreate": {},
"locationCreateDetail": "Создать новое расположение склада", "locationCreateDetail": "Создать новое расположение склада",
"@locationCreateDetail": {}, "@locationCreateDetail": {},
"locationDefault": "Расположение по умолчанию", "locationDefault": "Default Location",
"@locationDefault": {}, "@locationDefault": {},
"locationNotSet": "Не указано месторасположение", "locationNotSet": "Не указано месторасположение",
"@locationNotSet": {}, "@locationNotSet": {},
@ -544,9 +544,9 @@
"@missingData": {}, "@missingData": {},
"name": "Название", "name": "Название",
"@name": {}, "@name": {},
"no": "Нет", "no": "No",
"@no": {}, "@no": {},
"notApplicable": "Н", "notApplicable": "N/A",
"@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": "Ожидающие отгрузки", "shipmentsPending": "Pending Shipments",
"@shipmentsPending": {}, "@shipmentsPending": {},
"shipmentAdd": "Новое Отправление", "shipmentAdd": "Новое Отправление",
"@shipmentAdd": {}, "@shipmentAdd": {},
"shipmentCheck": "Проверить отгрузку", "shipmentCheck": "Check Shipment",
"@shipmentCheck": {}, "@shipmentCheck": {},
"shipmentCheckDetail": "Отметить этот груз как проверенный", "shipmentCheckDetail": "Mark this shipment as checked",
"@shipmentCheckDetail": {}, "@shipmentCheckDetail": {},
"shipmentChecked": "Отгрузка проверена", "shipmentChecked": "Shipment Checked",
"@shipmentChecked": {}, "@shipmentChecked": {},
"shipmentDate": "Дата отгрузки", "shipmentDate": "Shipment Date",
"@shipmentDate": {}, "@shipmentDate": {},
"shipmentEdit": "Редактировать отгрузку", "shipmentEdit": "Edit Shipment",
"@shipmentEdit": {}, "@shipmentEdit": {},
"shipmentReference": "Ссылка на отгрузку", "shipmentReference": "Shipment Reference",
"@shipmentReference": {}, "@shipmentReference": {},
"shipmentSend": "Отправить отгрузку", "shipmentSend": "Send Shipment",
"@shipmentSend": {}, "@shipmentSend": {},
"shipmentUncheck": "Снять отметку с отгрузки", "shipmentUncheck": "Uncheck Shipment",
"@shipmentUncheck": {}, "@shipmentUncheck": {},
"shipmentUncheckDetail": "Отметить этот груз как непроверенный", "shipmentUncheckDetail": "Mark this shipment as unchecked",
"@shipmentUncheckDetail": {}, "@shipmentUncheckDetail": {},
"shipmentUpdated": "Отгрузка обновлена", "shipmentUpdated": "Shipment Updated",
"@shipmentUpdated": {}, "@shipmentUpdated": {},
"shipped": "Отгружено", "shipped": "Отгружено",
"@shipped": {}, "@shipped": {},
@ -1112,7 +1112,7 @@
"@tokenMissingFromResponse": {}, "@tokenMissingFromResponse": {},
"totalPrice": "Общая стоимость", "totalPrice": "Общая стоимость",
"@totalPrice": {}, "@totalPrice": {},
"trackingNumber": "Номер отслеживания", "trackingNumber": "Tracking Number",
"@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": "Tryck för att pausa skanning", "barcodeScanPause": "Tap to pause scanning",
"@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": "Är du säker på att du vill radera denna bild?", "deleteImageConfirmation": "Are you sure you want to delete this image?",
"@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": "Leveransdatum", "deliveryDate": "Delivery Date",
"@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": "Visa leveranser", "homeShowShipments": "Show Shipments",
"@homeShowShipments": {}, "@homeShowShipments": {},
"homeShowShipmentsDescription": "Visa väntande leveranser på startskärmen", "homeShowShipmentsDescription": "Show pending shipments on the home screen",
"@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": "Förvald plats", "locationDefault": "Default Location",
"@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": "Ingen prisinformation tillgänglig", "noPricingAvailable": "No pricing available",
"@noPricingAvailable": {}, "@noPricingAvailable": {},
"noPricingDataFound": "Inga prisuppgifter hittades för denna artikel", "noPricingDataFound": "No pricing data found for this part",
"@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": "Artikelpris", "partPricing": "Part Pricing",
"@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": "Rotera 90° medurs", "rotateClockwise": "Rotate 90° clockwise",
"@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": "Försändelse", "shipment": "Shipment",
"@shipment": {}, "@shipment": {},
"shipments": "Frakt", "shipments": "Frakt",
"@shipments": {}, "@shipments": {},
@ -954,7 +954,7 @@
"@shipmentCheckDetail": {}, "@shipmentCheckDetail": {},
"shipmentChecked": "Shipment Checked", "shipmentChecked": "Shipment Checked",
"@shipmentChecked": {}, "@shipmentChecked": {},
"shipmentDate": "Leveransdatum", "shipmentDate": "Shipment Date",
"@shipmentDate": {}, "@shipmentDate": {},
"shipmentEdit": "Edit Shipment", "shipmentEdit": "Edit Shipment",
"@shipmentEdit": {}, "@shipmentEdit": {},
@ -1112,7 +1112,7 @@
"@tokenMissingFromResponse": {}, "@tokenMissingFromResponse": {},
"totalPrice": "Totalpris", "totalPrice": "Totalpris",
"@totalPrice": {}, "@totalPrice": {},
"trackingNumber": "Sändningsnummer", "trackingNumber": "Tracking Number",
"@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": "Försäljningspris", "salePrice": "Sale Price",
"@salePrice": {}, "@salePrice": {},
"saleHistory": "Sale History", "saleHistory": "Sale History",
"@saleHistory": {}, "@saleHistory": {},
"supplierPricing": "Leverantörspriser", "supplierPricing": "Supplier Pricing",
"@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 Ayrıntıları", "accountDetails": "Hesap Detayları",
"@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": "Stoku Tahsis Et", "allocateStock": "Tahsisli stok",
"@allocateStock": {}, "@allocateStock": {},
"allocatedStock": "Tahsis Edilen Stok", "allocatedStock": "Tahsis Edilen Stok",
"@allocatedStock": {}, "@allocatedStock": {},
"appReleaseNotes": "Uygulama yayınlama notlarınırüntüle", "appReleaseNotes": "Uygulama yayınlama notlarınıster",
"@appReleaseNotes": {}, "@appReleaseNotes": {},
"appSettings": "Uygulama Ayarları", "appSettings": "Uygulama Ayarları",
"@appSettings": {}, "@appSettings": {},
@ -60,7 +60,7 @@
"@assignedToMeDetail": {}, "@assignedToMeDetail": {},
"attachments": "Ekler", "attachments": "Ekler",
"@attachments": {}, "@attachments": {},
"attachImage": "Görsel Ekle", "attachImage": "Resim 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": "Parçayı teslim almak için barkodu tarayın", "barcodeReceivePart": "Tesellüm barkodunu tara",
"@barcodeReceivePart": {}, "@barcodeReceivePart": {},
"barcodeScanPaused": "Barkod tarama duraklatıldı", "barcodeScanPaused": "Barkod tarama duraklatıldı",
"@barodeScanPaused": {}, "@barodeScanPaused": {},
"barcodeScanPause": "Taramayı duraklatmak için dokunun", "barcodeScanPause": "Tap to pause scanning",
"@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 kalemlerini bu konumun içine tara", "barcodeScanInItems": "Stok ögelerini bu konum 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 kalemi tara", "barcodeScanItem": "Stok öğesi 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": "Ürün Ağacı", "billOfMaterials": "Fatura materyalleri",
"@billOfMaterials": {}, "@billOfMaterials": {},
"bom": "BOM", "bom": "BOM",
"@bom": {}, "@bom": {},
"bomEnable": "Ürün Ağacını Görüntüle", "bomEnable": "Malzeme Listesini Görüntüle",
"@bomEnable": {}, "@bomEnable": {},
"build": "Üret", "build": "Oluştur",
"@build": {}, "@build": {},
"building": "Üretiliyor", "building": "Oluşturma",
"@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": "Şirket bilgileri güncellendi", "companyUpdated": "Firma 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": "Görseli Kırp", "cropImage": "Resmi 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 görseli silmek istediğinize emin misiniz?", "deleteImageConfirmation": "Bu resmi silmek istediğinizden emin misiniz?",
"@deleteImageConfirmation": {}, "@deleteImageConfirmation": {},
"deleteImageTooltip": "Görseli Sil", "deleteImageTooltip": "Görüntüyü Sil",
"@deleteImageTooltip": {}, "@deleteImageTooltip": {},
"deleteImage": "Görseli sil", "deleteImage": "Resmi 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": "Hedef", "destination": "Varış Yeri",
"@destination": {}, "@destination": {},
"destroyed": "Yok edildi", "destroyed": "Yok edildi",
"@destroyed": {}, "@destroyed": {},
"details": "Ayrıntılar", "details": "Detaylar",
"@details": { "@details": {
"description": "details" "description": "details"
}, },
@ -278,9 +278,9 @@
"@editPart": { "@editPart": {
"description": "edit part" "description": "edit part"
}, },
"editItem": "Stok kalemi düzenle", "editItem": "Parçayı Düzenle",
"@editItem": {}, "@editItem": {},
"editLineItem": "Satırı Düzenle", "editLineItem": "Satır Ögesini 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": "Ek Kalem", "extraLineItem": "Fazladan Satır Ögesi",
"@extraLineItem": {}, "@extraLineItem": {},
"extraLineItems": "Ek Kalemler", "extraLineItems": "Fazladan Satır Ögeleri",
"@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": "Seri numaralı stok kalemlerini göster", "filterSerializedDetail": "Sıralandırılmış stok ürünkerini 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": "Takip Edilen Parçalar", "homeShowSubscribed": "Parça bildirimlerine abone ol",
"@homeShowSubscribed": {}, "@homeShowSubscribed": {},
"homeShowSubscribedDescription": "Takip edilen parçaları ana ekranda göster", "homeShowSubscribedDescription": "Abone olunan bölümleri 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": "Görsel yükleme başarısız", "imageUploadFailure": "Fotoğraf yükleme başarısız",
"@imageUploadFailure": {}, "@imageUploadFailure": {},
"imageUploadSuccess": "Görsel yüklendi", "imageUploadSuccess": "Resim yüklendi",
"@imageUploadSuccess": {}, "@imageUploadSuccess": {},
"inactive": "Pasif", "inactive": "Pasif",
"@inactive": {}, "@inactive": {},
"inactiveCompany": "Bu şirket pasif olarak işaretlendi", "inactiveCompany": "Bu şirket inaktif olarak imlendi",
"@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": "Üretimde", "inProduction": "Yapım Aşamasında",
"@inProduction": {}, "@inProduction": {},
"inProductionDetail": "Bu stok kalemi üretimdedir", "inProductionDetail": "Bu ürün üretim aşamasında",
"@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 Kalemi", "invalidStockItem": "Geçersiz Stok Parçası",
"@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ş Düzenle", "issueOrder": "Sipariş Ver",
"@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": "Etiket Sürücü", "labelDriver": "Label Driver",
"@labelDriver": {}, "@labelDriver": {},
"labelSelectDriver": "Etiket Yazıcı Sürücüsü Seçin", "labelSelectDriver": "Select Label Printer Driver",
"@labelSelectDriver": {}, "@labelSelectDriver": {},
"labelPrinting": "Etiket Yazdırma", "labelPrinting": "Etiket Yazdırma",
"@labelPrinting": {}, "@labelPrinting": {},
"labelPrintingDetail": "Etiket yazdırmayı etkinleştir", "labelPrintingDetail": "Etiket yazdırmayı aktifleş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 Sayımı", "lastStocktake": "Son stok tutma",
"@lastStocktake": {}, "@lastStocktake": {},
"lastUpdated": "Son güncelleme", "lastUpdated": "Son güncelleme",
"@lastUpdated": {}, "@lastUpdated": {},
"level": "Seviye", "level": "Düzey",
"@level": {}, "@level": {},
"lineItemAdd": "Satır Ekle", "lineItemAdd": "Satır Ögesi Ekle",
"@lineItemAdd": {}, "@lineItemAdd": {},
"lineItem": "Satır", "lineItem": "Parça Sırası",
"@lineItem": {}, "@lineItem": {},
"lineItems": "Satırlar", "lineItems": "Parçalar Sırası",
"@lineItems": {}, "@lineItems": {},
"lineItemUpdated": "Satır güncellendi", "lineItemUpdated": "Satır ögesi güncellendi",
"@lineItemUpdated": {}, "@lineItemUpdated": {},
"locateItem": "Stok kalemi bul", "locateItem": "Stok ögesi 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": "Varsayılan Konum", "locationDefault": "Default Location",
"@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": "Görsel yok", "noImageAvailable": "Kullanılabilir resim 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": "ık", "outstanding": "Beklemede",
"@outstanding": {}, "@outstanding": {},
"outstandingOrderDetail": "ık siparişleri göster", "outstandingOrderDetail": "Bekleyen 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örüntüle", "parametersSettingDetail": "Parça parametrelerini göster",
"@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 işaretli değil", "partNotSalable": "Parça satılabilir olarak imlenmemiş",
"@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": "Takip Edilen Parçalar", "partsStarred": "Sürekli Gelen 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 Ayrıntıları", "partDetails": "Parça detayları",
"@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": "Kalemleri tararken ayrıntıları onayla", "purchaseOrderConfirmScanDetail": "Taranan Ürünlerin Detaylarını Onayla",
"@purchaseOrderConfirmScanDetail": {}, "@purchaseOrderConfirmScanDetail": {},
"purchaseOrderEnable": "Satın Alma Siparişlerini Etkinleştir", "purchaseOrderEnable": "Satın Alma Emirlerini 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 siparişi ekranında görsel yükleme kısayolunu etkinleştir", "purchaseOrderShowCameraDetail": "Satın alma emirleri ekranında fotoğraf 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ın Alma Siparişleri", "purchaseOrders": "Satınalma 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": "Teslim Alındı", "received": "Alınan",
"@received": {}, "@received": {},
"receivedFilterDetail": "Teslim alınan kalemleri göster", "receivedFilterDetail": "Alınan ögeleri göster",
"@receivedFilterDetail": {}, "@receivedFilterDetail": {},
"receiveItem": "Kalemi Teslim Al", "receiveItem": "Alınan Öğeler",
"@receiveItem": {}, "@receiveItem": {},
"receivedItem": "Teslim alınan stok kalemleri", "receivedItem": "Alınan stok parçaları",
"@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ış Siparişlerini Etkinleştir", "salesOrderEnable": "Satış Emirlerini 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ış siparişi ekranında görsel yükleme kısayolunu etkinleştir", "salesOrderShowCameraDetail": "Satış emirleri ekranında fotoğraf 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": "Tedarikçi parça barkodunu tara", "scanSupplierPart": "Sağlayıcı 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": "Teslim Alınan Parçaları Tara", "scanReceivedParts": "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": "Görsel Seç", "selectImage": "Resim 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 Ayrıntıları", "serverDetails": "Sunucu Detayları",
"@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": "Sevkiyatı Kontrol Et", "shipmentCheck": "Teslimatı Kontrol Et",
"@shipmentCheck": {}, "@shipmentCheck": {},
"shipmentCheckDetail": "Bu sevkiyatı kontrol edildi olarak işaretle", "shipmentCheckDetail": "Bu teslimatı kontrol edildi olarak işaretle",
"@shipmentCheckDetail": {}, "@shipmentCheckDetail": {},
"shipmentChecked": "Sevkiyat Kontrol Edildi", "shipmentChecked": "Teslimat 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": "Sevkiyat Kontrolünü Kaldır", "shipmentUncheck": "Teslimat İşaretini 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 konumda yeni stok kalemi oluştur", "stockItemCreateDetail": "Bu konuma yeni stok kalemi oluştur",
"@stockItemCreateDetail": {}, "@stockItemCreateDetail": {},
"stockItemDelete": "Stok parçasını sil", "stockItemDelete": "Stok parçasını sil",
"@stockItemDelete": {}, "@stockItemDelete": {},
"stockItemDeleteConfirm": "Bu stok kalemini silmek istediğinize emin misiniz?", "stockItemDeleteConfirm": "Bu stock ögesini silmek istediğinize emin misiniz?",
"@stockItemDeleteConfirm": {}, "@stockItemDeleteConfirm": {},
"stockItemDeleteFailure": "Stok kalemi silinemedi", "stockItemDeleteFailure": "Stok parçası silinemedi",
"@stockItemDeleteFailure": {}, "@stockItemDeleteFailure": {},
"stockItemDeleteSuccess": "Stok kalemi silindi", "stockItemDeleteSuccess": "Stok ögesi silindi",
"@stockItemDeleteSuccess": {}, "@stockItemDeleteSuccess": {},
"stockItemHistory": "Stok Geçmişi", "stockItemHistory": "Stok Geçmişi",
"@stockItemHistory": {}, "@stockItemHistory": {},
"stockItemHistoryDetail": "Geçmiş stok takip bilgisini görüntüle", "stockItemHistoryDetail": "Geçmiş stok takip bilgisini göster",
"@stockItemHistoryDetail": {}, "@stockItemHistoryDetail": {},
"stockItemTransferred": "Stok kalemi aktarıldı", "stockItemTransferred": "Stok ögesi aktarıldı",
"@stockItemTransferred": {}, "@stockItemTransferred": {},
"stockItemUpdated": "Stok kalemi güncellendi", "stockItemUpdated": "Stok ögesi güncellendi",
"@stockItemUpdated": {}, "@stockItemUpdated": {},
"stockItemsNotAvailable": "Stok kalemi bulunmamaktadır", "stockItemsNotAvailable": "Kullanılabilir stok ögesi yok",
"@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": "Tedarikçi Parçasını Düzenle", "supplierPartEdit": "Sağlayıcı Parçasını Düzenle",
"@supplierPartEdit": {}, "@supplierPartEdit": {},
"supplierPartNumber": "Tedarikçi Parça Numarası", "supplierPartNumber": "Sağlayıcı Parça Numarası",
"@supplierPartNumber": {}, "@supplierPartNumber": {},
"supplierPartUpdated": "Tedarikçi Parçası Güncellendi", "supplierPartUpdated": "Sağlayıcı 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 kalemi test sonuçlarını görüntüle", "testResultsDetail": "Stok ögesi 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": "Görsel Yükle", "uploadImage": "Resim Yükleyin",
"@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": "Varyantlar", "variants": "Türevler",
"@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": "Tedarikçi Fiyatlandırması", "supplierPricing": "Sağlayıcı Fiyatlandırması",
"@supplierPricing": {}, "@supplierPricing": {},
"bomCost": "BoM Maliyeti", "bomCost": "BoM Maliyeti",
"@bomCost": {}, "@bomCost": {},
"internalCost": "Dahili Maliyet", "internalCost": "Dahili Maliyet",
"@internalCost": {}, "@internalCost": {},
"variantCost": "Varyant Maliyeti", "variantCost": "Türev 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 Kademeleri", "priceBreaks": "Fiyat Aralığı",
"@priceBreaks": {} "@priceBreaks": {}
} }

View file

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

View file

@ -32,6 +32,7 @@ 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,6 +13,7 @@ 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;
@ -27,6 +28,10 @@ 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,
@ -63,6 +68,23 @@ 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,13 +2,14 @@ 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";
@ -22,13 +23,13 @@ import "package:inventree/widget/refreshable_state.dart";
*/ */
class AttachmentWidget extends StatefulWidget { class AttachmentWidget extends StatefulWidget {
const AttachmentWidget( const AttachmentWidget(
this.modelType, this.attachmentClass,
this.modelId, this.modelId,
this.imagePrefix, this.imagePrefix,
this.hasUploadPermission, this.hasUploadPermission,
) : super(); ) : super();
final String modelType; final InvenTreeAttachment attachmentClass;
final int modelId; final int modelId;
final bool hasUploadPermission; final bool hasUploadPermission;
final String imagePrefix; final String imagePrefix;
@ -53,15 +54,15 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
IconButton( IconButton(
icon: Icon(TablerIcons.camera), icon: Icon(TablerIcons.camera),
onPressed: () async { onPressed: () async {
InvenTreeAttachment() widget.attachmentClass.uploadImage(
.uploadImage( widget.modelId,
widget.modelType, prefix: widget.imagePrefix,
widget.modelId, );
prefix: widget.imagePrefix, FilePickerDialog.pickImageFromCamera().then((File? file) {
) upload(context, file).then((_) {
.then((_) { refresh(context);
refresh(context); });
}); });
}, },
), ),
IconButton( IconButton(
@ -82,9 +83,8 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
showLoadingOverlay(); showLoadingOverlay();
final bool result = await InvenTreeAttachment().uploadAttachment( final bool result = await widget.attachmentClass.uploadAttachment(
file, file,
widget.modelType,
widget.modelId, widget.modelId,
); );
@ -168,24 +168,25 @@ 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 = {};
filters["model_type"] = widget.modelType; if (InvenTreeAPI().supportsModernAttachments) {
filters["model_id"] = widget.modelId.toString(); filters["model_type"] = widget.attachmentClass.REF_MODEL_TYPE;
filters["model_id"] = widget.modelId.toString();
} else {
filters[widget.attachmentClass.REFERENCE_FIELD] = widget.modelId
.toString();
}
List<InvenTreeAttachment> _attachments = []; await widget.attachmentClass.list(filters: filters).then((var results) {
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);
} }
} }
if (mounted) {
setState(() {
attachments = _attachments;
});
}
}); });
setState(() {});
} }
@override @override
@ -239,40 +240,3 @@ 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,8 +1,6 @@
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";
@ -15,7 +13,6 @@ 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";
@ -40,7 +37,6 @@ 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
@ -188,25 +184,15 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
} }
}); });
InvenTreeParameter() InvenTreeCompanyAttachment().countAttachments(widget.company.pk).then((
.countParameters(InvenTreeCompany.MODEL_TYPE, widget.company.pk) value,
.then((value) { ) {
if (mounted) { if (mounted) {
setState(() { setState(() {
parameterCount = value; attachmentCount = 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 {
@ -407,31 +393,29 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
); );
} }
ListTile? parameterTile = ShowParametersItem( tiles.add(
context, ListTile(
InvenTreeCompany.MODEL_TYPE, title: Text(L10().attachments),
widget.company.pk, leading: Icon(TablerIcons.file, color: COLOR_ACTION),
parameterCount, trailing: LinkIcon(
widget.company.canEdit, text: attachmentCount > 0 ? attachmentCount.toString() : null,
),
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,8 +1,6 @@
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";
@ -10,8 +8,6 @@ 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";
@ -35,9 +31,6 @@ 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;
@ -49,34 +42,7 @@ 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 {
@ -125,6 +91,11 @@ 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(
@ -203,31 +174,6 @@ 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,9 +2,6 @@ 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";
@ -14,7 +11,6 @@ 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";
@ -39,9 +35,6 @@ 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;
@ -104,34 +97,7 @@ 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;
});
}
});
} }
/* /*
@ -320,31 +286,6 @@ 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,8 +7,6 @@ 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";
@ -23,7 +21,6 @@ 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";
@ -53,7 +50,6 @@ 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;
@ -178,12 +174,8 @@ 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 {
InvenTreeAttachment() InvenTreePurchaseOrderAttachment()
.uploadImage( .uploadImage(widget.order.pk, prefix: widget.order.reference)
InvenTreePurchaseOrder.MODEL_TYPE,
widget.order.pk,
prefix: widget.order.reference,
)
.then((result) => refresh(context)); .then((result) => refresh(context));
} }
@ -303,25 +295,15 @@ class _PurchaseOrderDetailState
} }
} }
InvenTreeParameter() InvenTreePurchaseOrderAttachment().countAttachments(widget.order.pk).then((
.countParameters(InvenTreePurchaseOrder.MODEL_TYPE, widget.order.pk) int value,
.then((int value) { ) {
if (mounted) { if (mounted) {
setState(() { setState(() {
parameterCount = value; attachmentCount = 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) {
@ -583,31 +565,30 @@ class _PurchaseOrderDetailState
), ),
); );
ListTile? parameterTile = ShowParametersItem( // Attachments
context, tiles.add(
InvenTreePurchaseOrder.MODEL_TYPE, ListTile(
widget.order.pk, title: Text(L10().attachments),
parameterCount, leading: Icon(TablerIcons.file, color: COLOR_ACTION),
widget.order.canEdit, trailing: LinkIcon(
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,16 +3,13 @@ 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";
@ -45,7 +42,6 @@ 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() {
@ -112,12 +108,8 @@ 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 {
InvenTreeAttachment() InvenTreeSalesOrderAttachment()
.uploadImage( .uploadImage(widget.order.pk, prefix: widget.order.reference)
InvenTreeSalesOrder.MODEL_TYPE,
widget.order.pk,
prefix: widget.order.reference,
)
.then((result) => refresh(context)); .then((result) => refresh(context));
} }
@ -274,25 +266,15 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
true, true,
); );
InvenTreeParameter() InvenTreeSalesOrderAttachment().countAttachments(widget.order.pk).then((
.countParameters(InvenTreeSalesOrder.MODEL_TYPE, widget.order.pk) int value,
.then((int value) { ) {
if (mounted) { if (mounted) {
setState(() { setState(() {
parameterCount = value; attachmentCount = 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()
@ -510,31 +492,30 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
), ),
); );
ListTile? parameterTile = ShowParametersItem( // Attachments
context, tiles.add(
InvenTreeSalesOrder.MODEL_TYPE, ListTile(
widget.order.pk, title: Text(L10().attachments),
parameterCount, leading: Icon(TablerIcons.file, color: COLOR_ACTION),
widget.order.canEdit, trailing: LinkIcon(
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,7 +8,6 @@ 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";
@ -92,11 +91,8 @@ class _SOShipmentDetailWidgetState
}); });
} }
InvenTreeAttachment() InvenTreeSalesOrderShipmentAttachment()
.countAttachments( .countAttachments(widget.shipment.pk)
InvenTreeSalesOrderShipment.MODEL_TYPE,
widget.shipment.pk,
)
.then((int value) { .then((int value) {
if (mounted) { if (mounted) {
setState(() { setState(() {
@ -108,12 +104,8 @@ 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 {
InvenTreeAttachment() InvenTreeSalesOrderShipmentAttachment()
.uploadImage( .uploadImage(widget.shipment.pk, prefix: widget.shipment.reference)
InvenTreeSalesOrderShipment.MODEL_TYPE,
widget.shipment.pk,
prefix: widget.shipment.reference,
)
.then((result) => refresh(context)); .then((result) => refresh(context));
} }
@ -347,19 +339,30 @@ class _SOShipmentDetailWidgetState
), ),
); );
ListTile? attachmentTile = ShowAttachmentsItem( // Attachments
context, tiles.add(
InvenTreeSalesOrderShipment.MODEL_TYPE, ListTile(
widget.shipment.pk, title: Text(L10().attachments),
widget.shipment.reference, leading: Icon(TablerIcons.file, color: COLOR_ACTION),
attachmentCount, trailing: LinkIcon(
widget.shipment.canEdit, text: attachmentCount > 0 ? attachmentCount.toString() : null,
),
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

@ -4,8 +4,6 @@ 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";
@ -17,10 +15,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";
@ -51,11 +49,13 @@ 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,6 +152,10 @@ 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,
@ -208,30 +212,13 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
} }
// Request the number of attachments // Request the number of attachments
if (api.supportsModernAttachments) { InvenTreePartAttachment().countAttachments(part.pk).then((int value) {
InvenTreeAttachment() if (mounted) {
.countAttachments(InvenTreePart.MODEL_TYPE, part.pk) setState(() {
.then((int value) { attachmentCount = 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) {
@ -609,31 +596,29 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
), ),
); );
ListTile? parameterTile = ShowParametersItem( tiles.add(
context, ListTile(
InvenTreePart.MODEL_TYPE, title: Text(L10().attachments),
part.pk, leading: Icon(TablerIcons.file, color: COLOR_ACTION),
parameterCount, trailing: LinkIcon(
part.canEdit, text: attachmentCount > 0 ? attachmentCount.toString() : null,
),
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;
} }
@ -727,6 +712,10 @@ 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;
} }
@ -739,6 +728,11 @@ 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

@ -1,12 +1,8 @@
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/widget/link_icon.dart"; import "package:inventree/inventree/part.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";
@ -14,18 +10,16 @@ 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 ParameterWidget extends StatefulWidget { class PartParameterWidget extends StatefulWidget {
const ParameterWidget(this.modelType, this.modelId, this.editable) : super(); const PartParameterWidget(this.part);
final String modelType; final InvenTreePart part;
final int modelId;
final bool editable;
@override @override
_ParameterWidgetState createState() => _ParameterWidgetState(); _ParameterWidgetState createState() => _ParameterWidgetState();
} }
class _ParameterWidgetState extends RefreshableState<ParameterWidget> { class _ParameterWidgetState extends RefreshableState<PartParameterWidget> {
_ParameterWidgetState(); _ParameterWidgetState();
@override @override
@ -40,16 +34,9 @@ class _ParameterWidgetState extends RefreshableState<ParameterWidget> {
@override @override
Widget getBody(BuildContext context) { Widget getBody(BuildContext context) {
Map<String, String> filters = { Map<String, String> filters = {"part": widget.part.pk.toString()};
"model_type": widget.modelType,
"model_id": widget.modelId.toString(),
};
return Column( return Column(children: [Expanded(child: PaginatedParameterList(filters))]);
children: [
Expanded(child: PaginatedParameterList(filters, widget.editable)),
],
);
} }
} }
@ -57,11 +44,9 @@ class _ParameterWidgetState extends RefreshableState<ParameterWidget> {
* 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, this.editable) const PaginatedParameterList(Map<String, String> filters)
: super(filters: filters); : super(filters: filters);
final bool editable;
@override @override
String get searchTitle => L10().parameters; String get searchTitle => L10().parameters;
@ -90,7 +75,7 @@ class _PaginatedParameterState
int offset, int offset,
Map<String, String> params, Map<String, String> params,
) async { ) async {
final page = await InvenTreeParameter().listPaginated( final page = await InvenTreePartParameter().listPaginated(
limit, limit,
offset, offset,
filters: params, filters: params,
@ -99,7 +84,7 @@ class _PaginatedParameterState
return page; return page;
} }
Future<void> editParameter(InvenTreeParameter parameter) async { Future<void> editParameter(InvenTreePartParameter parameter) async {
// Checkbox values are handled separately // Checkbox values are handled separately
if (parameter.is_checkbox) { if (parameter.is_checkbox) {
return; return;
@ -116,7 +101,7 @@ class _PaginatedParameterState
@override @override
Widget buildItem(BuildContext context, InvenTreeModel model) { Widget buildItem(BuildContext context, InvenTreeModel model) {
InvenTreeParameter parameter = model as InvenTreeParameter; InvenTreePartParameter parameter = model as InvenTreePartParameter;
String title = parameter.name; String title = parameter.name;
@ -131,7 +116,7 @@ class _PaginatedParameterState
? Switch( ? Switch(
value: parameter.as_bool, value: parameter.as_bool,
onChanged: (bool value) { onChanged: (bool value) {
if (widget.editable) { if (parameter.canEdit) {
showLoadingOverlay(); showLoadingOverlay();
parameter.update(values: {"data": value.toString()}).then(( parameter.update(values: {"data": value.toString()}).then((
value, value,
@ -146,47 +131,10 @@ class _PaginatedParameterState
onTap: parameter.is_checkbox onTap: parameter.is_checkbox
? null ? null
: () async { : () async {
if (widget.editable) { if (parameter.canEdit) {
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

@ -7,7 +7,6 @@ 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";
@ -256,15 +255,15 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
} }
// Request the number of attachments // Request the number of attachments
InvenTreeAttachment() InvenTreeStockItemAttachment().countAttachments(widget.item.pk).then((
.countAttachments(InvenTreeStockItem.MODEL_TYPE, widget.item.pk) int value,
.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) {
@ -838,19 +837,29 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
), ),
); );
ListTile? attachmentTile = ShowAttachmentsItem( tiles.add(
context, ListTile(
InvenTreeStockItem.MODEL_TYPE, title: Text(L10().attachments),
widget.item.pk, leading: Icon(TablerIcons.file, color: COLOR_ACTION),
L10().stockItem, trailing: LinkIcon(
attachmentCount, text: attachmentCount > 0 ? attachmentCount.toString() : null,
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;
} }
} }

View file

@ -1,60 +0,0 @@
#!/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)."