mirror of
https://github.com/HendrikRauh/inventree-app.git
synced 2026-01-13 03:26:24 +00:00
Compare commits
10 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
96627adf7b | ||
|
|
0546fba37f | ||
|
|
5f623c0594 | ||
|
|
bf19ace3e9 | ||
|
|
8c15bdafdf | ||
|
|
571ff1880f | ||
|
|
864c3eea76 | ||
|
|
346b1a150f | ||
|
|
bb10117f01 | ||
|
|
0f31638bdc |
45 changed files with 2063 additions and 1607 deletions
14
.envrc
Normal file
14
.envrc
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
# Check if nix is available
|
||||||
|
if command -v nix &> /dev/null; then
|
||||||
|
use flake
|
||||||
|
|
||||||
|
echo "✅ Nix development environment loaded"
|
||||||
|
else
|
||||||
|
# Nix is not available - show instructions for non-Nix users
|
||||||
|
echo "⚠️ Nix not detected. Please ensure the following are installed manually:"
|
||||||
|
echo " - Java JDK 17"
|
||||||
|
echo " - Python 3 with invoke package"
|
||||||
|
echo " - Android SDK"
|
||||||
|
echo " - FVM (Flutter Version Management)"
|
||||||
|
echo "💡 To use Nix: Install from https://nixos.org/download.html"
|
||||||
|
fi
|
||||||
5
.github/workflows/android.yaml
vendored
5
.github/workflows/android.yaml
vendored
|
|
@ -3,6 +3,9 @@
|
||||||
name: Android
|
name: Android
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
|
@ -30,7 +33,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }}
|
flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }}
|
||||||
channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }}
|
channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }}
|
||||||
cache: true
|
cache: false
|
||||||
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
|
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
|
||||||
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:"
|
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:"
|
||||||
pub-cache-key: "flutter-pub:os:-:channel:-:version:-:arch:-:hash:"
|
pub-cache-key: "flutter-pub:os:-:channel:-:version:-:arch:-:hash:"
|
||||||
|
|
|
||||||
6
.github/workflows/ios.yaml
vendored
6
.github/workflows/ios.yaml
vendored
|
|
@ -3,6 +3,9 @@
|
||||||
name: iOS
|
name: iOS
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
|
@ -33,7 +36,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }}
|
flutter-version: ${{ steps.fvm-config-action.outputs.FLUTTER_VERSION }}
|
||||||
channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }}
|
channel: ${{ steps.fvm-config-action.outputs.FLUTTER_CHANNEL }}
|
||||||
cache: true
|
cache: false
|
||||||
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
|
cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:"
|
||||||
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:"
|
cache-path: "${{ runner.tool_cache }}/flutter/:channel:-:version:-:arch:"
|
||||||
pub-cache-key: "flutter-pub:os:-:channel:-:version:-:arch:-:hash:"
|
pub-cache-key: "flutter-pub:os:-:channel:-:version:-:arch:-:hash:"
|
||||||
|
|
@ -49,6 +52,7 @@ jobs:
|
||||||
dart pub global activate fvm
|
dart pub global activate fvm
|
||||||
fvm install
|
fvm install
|
||||||
fvm flutter pub get
|
fvm flutter pub get
|
||||||
|
fvm flutter precache --ios
|
||||||
cd ios
|
cd ios
|
||||||
pod repo update
|
pod repo update
|
||||||
pod install
|
pod install
|
||||||
|
|
|
||||||
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -8,6 +8,8 @@
|
||||||
.buildlog/
|
.buildlog/
|
||||||
.history
|
.history
|
||||||
.svn/
|
.svn/
|
||||||
|
.direnv
|
||||||
|
flake.nix.bak
|
||||||
|
|
||||||
coverage/*
|
coverage/*
|
||||||
|
|
||||||
|
|
|
||||||
47
NOTE.md
Normal file
47
NOTE.md
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
## Codeänderung
|
||||||
|
|
||||||
|
- android/app/build.gradle: compileSdkVersion/targetSdkVersion auf 36 angehoben,
|
||||||
|
weil mehrere Plugins SDK 36 voraussetzen.
|
||||||
|
|
||||||
|
## Devbuild (out of the box)
|
||||||
|
|
||||||
|
```sh
|
||||||
|
invoke translate
|
||||||
|
flutter build apk --debug
|
||||||
|
```
|
||||||
|
|
||||||
|
## Releasebuild (benötigt Signatur; interaktiv)
|
||||||
|
|
||||||
|
Signatur erstellen; Passwörter merken!:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
keytool -genkey -v -keystore ~/inventree-release-key.jks \
|
||||||
|
-keyalg RSA -keysize 2048 \
|
||||||
|
-alias inventree
|
||||||
|
```
|
||||||
|
|
||||||
|
android/key.properties anlegen mit:
|
||||||
|
|
||||||
|
```properties
|
||||||
|
storePassword=DEIN_STORE_PASSWORD
|
||||||
|
keyPassword=DEIN_KEY_PASSWORD
|
||||||
|
keyAlias=inventree
|
||||||
|
storeFile=/.../inventree-release-key.jks
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
invoke translate
|
||||||
|
fvm flutter build apk --release --no-tree-shake-icons
|
||||||
|
```
|
||||||
|
|
||||||
|
## Pipe
|
||||||
|
|
||||||
|
1. nix installieren (für flake nutzung) (optional aber dann reproduzierbar)
|
||||||
|
2. flake anwenden
|
||||||
|
|
||||||
|
## Problems that occurred
|
||||||
|
|
||||||
|
### Flutter Java Version Problem
|
||||||
|
|
||||||
|
- unset flutter jdk-dir (`flutter config --jdk-dir=""`)
|
||||||
|
- a specified java version in the flutter config leads to a java
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
### x.xx.x - Month Year
|
||||||
|
---
|
||||||
|
|
||||||
|
- Fixes bug which launched camera twice when uploading an attachment
|
||||||
|
|
||||||
### 0.21.1 - November 2025
|
### 0.21.1 - November 2025
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
78
flake.lock
generated
Normal file
78
flake.lock
generated
Normal file
|
|
@ -0,0 +1,78 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1767892417,
|
||||||
|
"narHash": "sha256-dhhvQY67aboBk8b0/u0XB6vwHdgbROZT3fJAjyNh5Ww=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-flutter": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1751285371,
|
||||||
|
"narHash": "sha256-/hDU+2AUeFFu5qGHO/UyFMc4UG/x5Cw5uXO36KGTk6c=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "b9c03fbbaf84d85bb28eee530c7e9edc4021ca1b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "b9c03fbbaf84d85bb28eee530c7e9edc4021ca1b",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"nixpkgs-flutter": "nixpkgs-flutter"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
137
flake.nix
Normal file
137
flake.nix
Normal file
|
|
@ -0,0 +1,137 @@
|
||||||
|
{
|
||||||
|
description = "InvenTree App Development Environment - CTBK";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
nixpkgs-flutter.url = "github:NixOS/nixpkgs/b9c03fbbaf84d85bb28eee530c7e9edc4021ca1b";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
flake-utils,
|
||||||
|
nixpkgs-flutter,
|
||||||
|
}:
|
||||||
|
flake-utils.lib.eachDefaultSystem (
|
||||||
|
system:
|
||||||
|
let
|
||||||
|
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
android_sdk.accept_license = true;
|
||||||
|
};
|
||||||
|
overlays = [
|
||||||
|
(final: prev: {
|
||||||
|
flutter-pkg = import (self.inputs.nixpkgs-flutter) { inherit system; };
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
androidSdk =
|
||||||
|
(pkgs.androidenv.composeAndroidPackages {
|
||||||
|
platformVersions = [
|
||||||
|
"36"
|
||||||
|
"35"
|
||||||
|
"34"
|
||||||
|
];
|
||||||
|
buildToolsVersions = [
|
||||||
|
"36.0.0"
|
||||||
|
"34.0.0"
|
||||||
|
];
|
||||||
|
includeEmulator = true;
|
||||||
|
includeNDK = true;
|
||||||
|
ndkVersions = [ "26.1.10909125" ];
|
||||||
|
cmakeVersions = [
|
||||||
|
"3.31.6"
|
||||||
|
"3.22.1"
|
||||||
|
];
|
||||||
|
}).androidsdk;
|
||||||
|
|
||||||
|
# FVM wrapper for NixOS - maps fvm commands to Nix-managed Flutter
|
||||||
|
fvm-wrapper = pkgs.writeShellScriptBin "fvm" ''
|
||||||
|
case "$1" in
|
||||||
|
use)
|
||||||
|
# 'fvm use' is a no-op on NixOS since Flutter is version-managed by Nix
|
||||||
|
echo "✓ Using Flutter from Nix ($(flutter --version | head -n1))"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
flutter)
|
||||||
|
# 'fvm flutter ...' becomes 'flutter ...'
|
||||||
|
shift
|
||||||
|
exec flutter "$@"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "fvm wrapper: command '$1' not implemented (using Nix-managed Flutter)" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
devShells.default = pkgs.mkShell {
|
||||||
|
buildInputs =
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
# Mobile development
|
||||||
|
pkgs.flutter-pkg.flutter
|
||||||
|
fvm-wrapper
|
||||||
|
jdk17
|
||||||
|
|
||||||
|
# Build tools
|
||||||
|
android-tools
|
||||||
|
gradle
|
||||||
|
|
||||||
|
# Python & task runner
|
||||||
|
python3
|
||||||
|
python3Packages.invoke
|
||||||
|
jq
|
||||||
|
|
||||||
|
# System dependencies for Flutter on Linux
|
||||||
|
git
|
||||||
|
curl
|
||||||
|
unzip
|
||||||
|
which
|
||||||
|
]
|
||||||
|
++ lib.optionals stdenv.isLinux [
|
||||||
|
gtk3
|
||||||
|
glib
|
||||||
|
pcre
|
||||||
|
libepoxy
|
||||||
|
libxkbcommon
|
||||||
|
dbus
|
||||||
|
at-spi2-core
|
||||||
|
file
|
||||||
|
];
|
||||||
|
|
||||||
|
shellHook = ''
|
||||||
|
export ANDROID_HOME="${androidSdk}/libexec/android-sdk"
|
||||||
|
export ANDROID_SDK_ROOT="$ANDROID_HOME"
|
||||||
|
export PATH="$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools/bin:$PATH"
|
||||||
|
export JAVA_HOME="${pkgs.jdk17}"
|
||||||
|
export GRADLE_OPTS="-Dorg.gradle.project.android.aapt2FromMavenOverride=$ANDROID_HOME/build-tools/34.0.0/aapt2"
|
||||||
|
|
||||||
|
echo "🚀 InvenTree App Development Environment - CTBK"
|
||||||
|
echo "📦 Tools: Flutter, FVM, JDK17, Android SDK"
|
||||||
|
echo "📋 Run: invoke android # Build Android app"
|
||||||
|
'';
|
||||||
|
|
||||||
|
LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath (
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
gtk3
|
||||||
|
glib
|
||||||
|
pcre
|
||||||
|
libepoxy
|
||||||
|
libxkbcommon
|
||||||
|
dbus
|
||||||
|
at-spi2-core
|
||||||
|
]
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -353,6 +353,10 @@ class InvenTreeAPI {
|
||||||
// Supports separate search against "supplier" / "customer" / "manufacturer"
|
// Supports separate search against "supplier" / "customer" / "manufacturer"
|
||||||
bool get supportsSplitCompanySearch => apiVersion >= 315;
|
bool get supportsSplitCompanySearch => apiVersion >= 315;
|
||||||
|
|
||||||
|
// Does the server support the "modern" (consolidated) parameter API?
|
||||||
|
// Ref: https://github.com/inventree/InvenTree/pull/10699
|
||||||
|
bool get supportsModernParameters => apiVersion >= 429;
|
||||||
|
|
||||||
// Cached list of plugins (refreshed when we connect to the server)
|
// Cached list of plugins (refreshed when we connect to the server)
|
||||||
List<InvenTreePlugin> _plugins = [];
|
List<InvenTreePlugin> _plugins = [];
|
||||||
|
|
||||||
|
|
|
||||||
176
lib/inventree/attachment.dart
Normal file
176
lib/inventree/attachment.dart
Normal file
|
|
@ -0,0 +1,176 @@
|
||||||
|
import "dart:io";
|
||||||
|
|
||||||
|
import "package:flutter/cupertino.dart";
|
||||||
|
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
||||||
|
import "package:inventree/api.dart";
|
||||||
|
import "package:inventree/inventree/model.dart";
|
||||||
|
import "package:inventree/inventree/sentry.dart";
|
||||||
|
import "package:inventree/l10.dart";
|
||||||
|
import "package:inventree/widget/fields.dart";
|
||||||
|
import "package:inventree/widget/snacks.dart";
|
||||||
|
import "package:path/path.dart" as path;
|
||||||
|
|
||||||
|
class InvenTreeAttachment extends InvenTreeModel {
|
||||||
|
// Class representing an "attachment" file
|
||||||
|
InvenTreeAttachment() : super();
|
||||||
|
|
||||||
|
InvenTreeAttachment.fromJson(Map<String, dynamic> json)
|
||||||
|
: super.fromJson(json);
|
||||||
|
|
||||||
|
@override
|
||||||
|
InvenTreeAttachment createFromJson(Map<String, dynamic> json) =>
|
||||||
|
InvenTreeAttachment.fromJson(json);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get URL => "attachment/";
|
||||||
|
|
||||||
|
@override
|
||||||
|
Map<String, Map<String, dynamic>> formFields() {
|
||||||
|
Map<String, Map<String, dynamic>> fields = {"link": {}, "comment": {}};
|
||||||
|
|
||||||
|
if (!hasLink) {
|
||||||
|
fields.remove("link");
|
||||||
|
}
|
||||||
|
|
||||||
|
return fields;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The model type of the instance this attachment is associated with
|
||||||
|
String get modelType => getString("model_type");
|
||||||
|
|
||||||
|
// The ID of the instance this attachment is associated with
|
||||||
|
int get modelId => getInt("model_id");
|
||||||
|
|
||||||
|
String get attachment => getString("attachment");
|
||||||
|
|
||||||
|
bool get hasAttachment => attachment.isNotEmpty;
|
||||||
|
|
||||||
|
// Return the filename of the attachment
|
||||||
|
String get filename {
|
||||||
|
return attachment.split("/").last;
|
||||||
|
}
|
||||||
|
|
||||||
|
IconData get icon {
|
||||||
|
String fn = filename.toLowerCase();
|
||||||
|
|
||||||
|
if (fn.endsWith(".pdf")) {
|
||||||
|
return TablerIcons.file_type_pdf;
|
||||||
|
} else if (fn.endsWith(".csv")) {
|
||||||
|
return TablerIcons.file_type_csv;
|
||||||
|
} else if (fn.endsWith(".doc") || fn.endsWith(".docx")) {
|
||||||
|
return TablerIcons.file_type_doc;
|
||||||
|
} else if (fn.endsWith(".xls") || fn.endsWith(".xlsx")) {
|
||||||
|
return TablerIcons.file_type_xls;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Image formats
|
||||||
|
final List<String> img_formats = [".png", ".jpg", ".gif", ".bmp", ".svg"];
|
||||||
|
|
||||||
|
for (String fmt in img_formats) {
|
||||||
|
if (fn.endsWith(fmt)) {
|
||||||
|
return TablerIcons.file_type_jpg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return TablerIcons.file;
|
||||||
|
}
|
||||||
|
|
||||||
|
String get comment => getString("comment");
|
||||||
|
|
||||||
|
DateTime? get uploadDate {
|
||||||
|
if (jsondata.containsKey("upload_date")) {
|
||||||
|
return DateTime.tryParse((jsondata["upload_date"] ?? "") as String);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return a count of how many attachments exist against the specified model ID
|
||||||
|
Future<int> countAttachments(String modelType, int modelId) async {
|
||||||
|
Map<String, String> filters = {};
|
||||||
|
|
||||||
|
if (!api.supportsModernAttachments) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
filters["model_type"] = modelType;
|
||||||
|
filters["model_id"] = modelId.toString();
|
||||||
|
|
||||||
|
return count(filters: filters);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> uploadAttachment(
|
||||||
|
File attachment,
|
||||||
|
String modelType,
|
||||||
|
int modelId, {
|
||||||
|
String comment = "",
|
||||||
|
Map<String, String> fields = const {},
|
||||||
|
}) async {
|
||||||
|
// Ensure that the correct reference field is set
|
||||||
|
Map<String, String> data = Map<String, String>.from(fields);
|
||||||
|
|
||||||
|
String url = URL;
|
||||||
|
|
||||||
|
if (comment.isNotEmpty) {
|
||||||
|
data["comment"] = comment;
|
||||||
|
}
|
||||||
|
|
||||||
|
data["model_type"] = modelType;
|
||||||
|
data["model_id"] = modelId.toString();
|
||||||
|
|
||||||
|
final APIResponse response = await InvenTreeAPI().uploadFile(
|
||||||
|
url,
|
||||||
|
attachment,
|
||||||
|
method: "POST",
|
||||||
|
name: "attachment",
|
||||||
|
fields: data,
|
||||||
|
);
|
||||||
|
|
||||||
|
return response.successful();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<bool> uploadImage(
|
||||||
|
String modelType,
|
||||||
|
int modelId, {
|
||||||
|
String prefix = "InvenTree",
|
||||||
|
}) async {
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
await FilePickerDialog.pickImageFromCamera().then((File? file) {
|
||||||
|
if (file != null) {
|
||||||
|
String dir = path.dirname(file.path);
|
||||||
|
String ext = path.extension(file.path);
|
||||||
|
String now = DateTime.now().toIso8601String().replaceAll(":", "-");
|
||||||
|
|
||||||
|
// Rename the file with a unique name
|
||||||
|
String filename = "${dir}/${prefix}_image_${now}${ext}";
|
||||||
|
|
||||||
|
try {
|
||||||
|
return file.rename(filename).then((File renamed) {
|
||||||
|
return uploadAttachment(renamed, modelType, modelId).then((
|
||||||
|
success,
|
||||||
|
) {
|
||||||
|
result = success;
|
||||||
|
showSnackIcon(
|
||||||
|
result ? L10().imageUploadSuccess : L10().imageUploadFailure,
|
||||||
|
success: result,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} catch (error, stackTrace) {
|
||||||
|
sentryReportError("uploadImage", error, stackTrace);
|
||||||
|
showSnackIcon(L10().imageUploadFailure, success: false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Download this attachment file
|
||||||
|
*/
|
||||||
|
Future<void> downloadAttachment() async {
|
||||||
|
await InvenTreeAPI().downloadFile(attachment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -111,31 +111,6 @@ class InvenTreeCompany extends InvenTreeModel {
|
||||||
InvenTreeCompany.fromJson(json);
|
InvenTreeCompany.fromJson(json);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Class representing an attachment file against a Company object
|
|
||||||
*/
|
|
||||||
class InvenTreeCompanyAttachment extends InvenTreeAttachment {
|
|
||||||
InvenTreeCompanyAttachment() : super();
|
|
||||||
|
|
||||||
InvenTreeCompanyAttachment.fromJson(Map<String, dynamic> json)
|
|
||||||
: super.fromJson(json);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get REFERENCE_FIELD => "company";
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get REF_MODEL_TYPE => "company";
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get URL => InvenTreeAPI().supportsModernAttachments
|
|
||||||
? "attachment/"
|
|
||||||
: "company/attachment/";
|
|
||||||
|
|
||||||
@override
|
|
||||||
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
|
|
||||||
InvenTreeCompanyAttachment.fromJson(json);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The InvenTreeSupplierPart class represents the SupplierPart model in the InvenTree database
|
* The InvenTreeSupplierPart class represents the SupplierPart model in the InvenTree database
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
import "dart:async";
|
import "dart:async";
|
||||||
import "dart:io";
|
|
||||||
|
|
||||||
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
||||||
import "package:flutter/material.dart";
|
import "package:flutter/material.dart";
|
||||||
|
|
@ -15,7 +14,6 @@ import "package:inventree/helpers.dart";
|
||||||
import "package:inventree/inventree/sentry.dart";
|
import "package:inventree/inventree/sentry.dart";
|
||||||
|
|
||||||
import "package:inventree/widget/dialogs.dart";
|
import "package:inventree/widget/dialogs.dart";
|
||||||
import "package:inventree/widget/fields.dart";
|
|
||||||
|
|
||||||
// Paginated response object
|
// Paginated response object
|
||||||
class InvenTreePageResponse {
|
class InvenTreePageResponse {
|
||||||
|
|
@ -934,171 +932,3 @@ class InvenTreeUserSetting extends InvenTreeGlobalSetting {
|
||||||
@override
|
@override
|
||||||
String get URL => "settings/user/";
|
String get URL => "settings/user/";
|
||||||
}
|
}
|
||||||
|
|
||||||
class InvenTreeAttachment extends InvenTreeModel {
|
|
||||||
// Class representing an "attachment" file
|
|
||||||
InvenTreeAttachment() : super();
|
|
||||||
|
|
||||||
InvenTreeAttachment.fromJson(Map<String, dynamic> json)
|
|
||||||
: super.fromJson(json);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get URL => "attachment/";
|
|
||||||
|
|
||||||
@override
|
|
||||||
Map<String, Map<String, dynamic>> formFields() {
|
|
||||||
Map<String, Map<String, dynamic>> fields = {"link": {}, "comment": {}};
|
|
||||||
|
|
||||||
if (!hasLink) {
|
|
||||||
fields.remove("link");
|
|
||||||
}
|
|
||||||
|
|
||||||
return fields;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Override this reference field for any subclasses
|
|
||||||
// Note: This is used for the *legacy* attachment API
|
|
||||||
String get REFERENCE_FIELD => "";
|
|
||||||
|
|
||||||
// Override this reference field for any subclasses
|
|
||||||
// Note: This is used for the *modern* attachment API
|
|
||||||
String get REF_MODEL_TYPE => "";
|
|
||||||
|
|
||||||
String get attachment => getString("attachment");
|
|
||||||
|
|
||||||
bool get hasAttachment => attachment.isNotEmpty;
|
|
||||||
|
|
||||||
// Return the filename of the attachment
|
|
||||||
String get filename {
|
|
||||||
return attachment.split("/").last;
|
|
||||||
}
|
|
||||||
|
|
||||||
IconData get icon {
|
|
||||||
String fn = filename.toLowerCase();
|
|
||||||
|
|
||||||
if (fn.endsWith(".pdf")) {
|
|
||||||
return TablerIcons.file_type_pdf;
|
|
||||||
} else if (fn.endsWith(".csv")) {
|
|
||||||
return TablerIcons.file_type_csv;
|
|
||||||
} else if (fn.endsWith(".doc") || fn.endsWith(".docx")) {
|
|
||||||
return TablerIcons.file_type_doc;
|
|
||||||
} else if (fn.endsWith(".xls") || fn.endsWith(".xlsx")) {
|
|
||||||
return TablerIcons.file_type_xls;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Image formats
|
|
||||||
final List<String> img_formats = [".png", ".jpg", ".gif", ".bmp", ".svg"];
|
|
||||||
|
|
||||||
for (String fmt in img_formats) {
|
|
||||||
if (fn.endsWith(fmt)) {
|
|
||||||
return TablerIcons.file_type_jpg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return TablerIcons.file;
|
|
||||||
}
|
|
||||||
|
|
||||||
String get comment => getString("comment");
|
|
||||||
|
|
||||||
DateTime? get uploadDate {
|
|
||||||
if (jsondata.containsKey("upload_date")) {
|
|
||||||
return DateTime.tryParse((jsondata["upload_date"] ?? "") as String);
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Return a count of how many attachments exist against the specified model ID
|
|
||||||
Future<int> countAttachments(int modelId) {
|
|
||||||
Map<String, String> filters = {};
|
|
||||||
|
|
||||||
if (InvenTreeAPI().supportsModernAttachments) {
|
|
||||||
filters["model_type"] = REF_MODEL_TYPE;
|
|
||||||
filters["model_id"] = modelId.toString();
|
|
||||||
} else {
|
|
||||||
filters[REFERENCE_FIELD] = modelId.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
return count(filters: filters);
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<bool> uploadAttachment(
|
|
||||||
File attachment,
|
|
||||||
int modelId, {
|
|
||||||
String comment = "",
|
|
||||||
Map<String, String> fields = const {},
|
|
||||||
}) async {
|
|
||||||
// Ensure that the correct reference field is set
|
|
||||||
Map<String, String> data = Map<String, String>.from(fields);
|
|
||||||
|
|
||||||
String url = URL;
|
|
||||||
|
|
||||||
if (comment.isNotEmpty) {
|
|
||||||
data["comment"] = comment;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (InvenTreeAPI().supportsModernAttachments) {
|
|
||||||
url = "attachment/";
|
|
||||||
data["model_id"] = modelId.toString();
|
|
||||||
data["model_type"] = REF_MODEL_TYPE;
|
|
||||||
} else {
|
|
||||||
if (REFERENCE_FIELD.isEmpty) {
|
|
||||||
sentryReportMessage(
|
|
||||||
"uploadAttachment called with empty 'REFERENCE_FIELD'",
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
data[REFERENCE_FIELD] = modelId.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
final APIResponse response = await InvenTreeAPI().uploadFile(
|
|
||||||
url,
|
|
||||||
attachment,
|
|
||||||
method: "POST",
|
|
||||||
name: "attachment",
|
|
||||||
fields: data,
|
|
||||||
);
|
|
||||||
|
|
||||||
return response.successful();
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<bool> uploadImage(int modelId, {String prefix = "InvenTree"}) async {
|
|
||||||
bool result = false;
|
|
||||||
|
|
||||||
await FilePickerDialog.pickImageFromCamera().then((File? file) {
|
|
||||||
if (file != null) {
|
|
||||||
String dir = path.dirname(file.path);
|
|
||||||
String ext = path.extension(file.path);
|
|
||||||
String now = DateTime.now().toIso8601String().replaceAll(":", "-");
|
|
||||||
|
|
||||||
// Rename the file with a unique name
|
|
||||||
String filename = "${dir}/${prefix}_image_${now}${ext}";
|
|
||||||
|
|
||||||
try {
|
|
||||||
file.rename(filename).then((File renamed) {
|
|
||||||
uploadAttachment(renamed, modelId).then((success) {
|
|
||||||
result = success;
|
|
||||||
showSnackIcon(
|
|
||||||
result ? L10().imageUploadSuccess : L10().imageUploadFailure,
|
|
||||||
success: result,
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
} catch (error, stackTrace) {
|
|
||||||
sentryReportError("uploadImage", error, stackTrace);
|
|
||||||
showSnackIcon(L10().imageUploadFailure, success: false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Download this attachment file
|
|
||||||
*/
|
|
||||||
Future<void> downloadAttachment() async {
|
|
||||||
await InvenTreeAPI().downloadFile(attachment);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
77
lib/inventree/parameter.dart
Normal file
77
lib/inventree/parameter.dart
Normal file
|
|
@ -0,0 +1,77 @@
|
||||||
|
import "package:inventree/inventree/model.dart";
|
||||||
|
|
||||||
|
class InvenTreeParameter extends InvenTreeModel {
|
||||||
|
InvenTreeParameter() : super();
|
||||||
|
|
||||||
|
InvenTreeParameter.fromJson(Map<String, dynamic> json) : super.fromJson(json);
|
||||||
|
|
||||||
|
@override
|
||||||
|
InvenTreeParameter createFromJson(Map<String, dynamic> json) =>
|
||||||
|
InvenTreeParameter.fromJson(json);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get URL => "parameter/";
|
||||||
|
|
||||||
|
@override
|
||||||
|
Map<String, Map<String, dynamic>> formFields() {
|
||||||
|
Map<String, Map<String, dynamic>> fields = {
|
||||||
|
"header": {
|
||||||
|
"type": "string",
|
||||||
|
"read_only": true,
|
||||||
|
"label": name,
|
||||||
|
"help_text": description,
|
||||||
|
"value": "",
|
||||||
|
},
|
||||||
|
"data": {"type": "string"},
|
||||||
|
"note": {},
|
||||||
|
};
|
||||||
|
|
||||||
|
return fields;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get name => getString("name", subKey: "template_detail");
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get description => getString("description", subKey: "template_detail");
|
||||||
|
|
||||||
|
String get value => getString("data");
|
||||||
|
|
||||||
|
String get valueString {
|
||||||
|
String v = value;
|
||||||
|
|
||||||
|
if (units.isNotEmpty) {
|
||||||
|
v += " ";
|
||||||
|
v += units;
|
||||||
|
}
|
||||||
|
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool get as_bool => value.toLowerCase() == "true";
|
||||||
|
|
||||||
|
String get units => getString("units", subKey: "template_detail");
|
||||||
|
|
||||||
|
bool get is_checkbox =>
|
||||||
|
getBool("checkbox", subKey: "template_detail", backup: false);
|
||||||
|
|
||||||
|
// The model type of the instance this attachment is associated with
|
||||||
|
String get modelType => getString("model_type");
|
||||||
|
|
||||||
|
// The ID of the instance this attachment is associated with
|
||||||
|
int get modelId => getInt("model_id");
|
||||||
|
|
||||||
|
// Return a count of how many parameters exist against the specified model ID
|
||||||
|
Future<int> countParameters(String modelType, int modelId) async {
|
||||||
|
Map<String, String> filters = {};
|
||||||
|
|
||||||
|
if (!api.supportsModernParameters) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
filters["model_type"] = modelType;
|
||||||
|
filters["model_id"] = modelId.toString();
|
||||||
|
|
||||||
|
return count(filters: filters);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -132,68 +132,6 @@ class InvenTreePartTestTemplate extends InvenTreeModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
Class representing the PartParameter database model
|
|
||||||
*/
|
|
||||||
class InvenTreePartParameter extends InvenTreeModel {
|
|
||||||
InvenTreePartParameter() : super();
|
|
||||||
|
|
||||||
InvenTreePartParameter.fromJson(Map<String, dynamic> json)
|
|
||||||
: super.fromJson(json);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get URL => "part/parameter/";
|
|
||||||
|
|
||||||
@override
|
|
||||||
List<String> get rolesRequired => ["part"];
|
|
||||||
|
|
||||||
@override
|
|
||||||
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
|
|
||||||
InvenTreePartParameter.fromJson(json);
|
|
||||||
|
|
||||||
@override
|
|
||||||
Map<String, Map<String, dynamic>> formFields() {
|
|
||||||
Map<String, Map<String, dynamic>> fields = {
|
|
||||||
"header": {
|
|
||||||
"type": "string",
|
|
||||||
"read_only": true,
|
|
||||||
"label": name,
|
|
||||||
"help_text": description,
|
|
||||||
"value": "",
|
|
||||||
},
|
|
||||||
"data": {"type": "string"},
|
|
||||||
};
|
|
||||||
|
|
||||||
return fields;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get name => getString("name", subKey: "template_detail");
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get description => getString("description", subKey: "template_detail");
|
|
||||||
|
|
||||||
String get value => getString("data");
|
|
||||||
|
|
||||||
String get valueString {
|
|
||||||
String v = value;
|
|
||||||
|
|
||||||
if (units.isNotEmpty) {
|
|
||||||
v += " ";
|
|
||||||
v += units;
|
|
||||||
}
|
|
||||||
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool get as_bool => value.toLowerCase() == "true";
|
|
||||||
|
|
||||||
String get units => getString("units", subKey: "template_detail");
|
|
||||||
|
|
||||||
bool get is_checkbox =>
|
|
||||||
getBool("checkbox", subKey: "template_detail", backup: false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class representing the Part database model
|
* Class representing the Part database model
|
||||||
*/
|
*/
|
||||||
|
|
@ -547,28 +485,3 @@ class InvenTreePartPricing extends InvenTreeModel {
|
||||||
double? get saleHistoryMin => getDoubleOrNull("sale_history_min");
|
double? get saleHistoryMin => getDoubleOrNull("sale_history_min");
|
||||||
double? get saleHistoryMax => getDoubleOrNull("sale_history_max");
|
double? get saleHistoryMax => getDoubleOrNull("sale_history_max");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Class representing an attachment file against a Part object
|
|
||||||
*/
|
|
||||||
class InvenTreePartAttachment extends InvenTreeAttachment {
|
|
||||||
InvenTreePartAttachment() : super();
|
|
||||||
|
|
||||||
InvenTreePartAttachment.fromJson(Map<String, dynamic> json)
|
|
||||||
: super.fromJson(json);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get REFERENCE_FIELD => "part";
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get REF_MODEL_TYPE => "part";
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get URL => InvenTreeAPI().supportsModernAttachments
|
|
||||||
? "attachment/"
|
|
||||||
: "part/attachment/";
|
|
||||||
|
|
||||||
@override
|
|
||||||
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
|
|
||||||
InvenTreePartAttachment.fromJson(json);
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -336,28 +336,3 @@ class InvenTreePOExtraLineItem extends InvenTreeExtraLineItem {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Class representing an attachment file against a PurchaseOrder object
|
|
||||||
*/
|
|
||||||
class InvenTreePurchaseOrderAttachment extends InvenTreeAttachment {
|
|
||||||
InvenTreePurchaseOrderAttachment() : super();
|
|
||||||
|
|
||||||
InvenTreePurchaseOrderAttachment.fromJson(Map<String, dynamic> json)
|
|
||||||
: super.fromJson(json);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get REFERENCE_FIELD => "order";
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get REF_MODEL_TYPE => "purchaseorder";
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get URL => InvenTreeAPI().supportsModernAttachments
|
|
||||||
? "attachment/"
|
|
||||||
: "order/po/attachment/";
|
|
||||||
|
|
||||||
@override
|
|
||||||
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
|
|
||||||
InvenTreePurchaseOrderAttachment.fromJson(json);
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -334,7 +334,7 @@ class InvenTreeSalesOrderShipment extends InvenTreeModel {
|
||||||
/*
|
/*
|
||||||
* Class representing an allocation of stock against a SalesOrderShipment
|
* Class representing an allocation of stock against a SalesOrderShipment
|
||||||
*/
|
*/
|
||||||
class InvenTreeSalesOrderAllocation extends InvenTreeAttachment {
|
class InvenTreeSalesOrderAllocation extends InvenTreeModel {
|
||||||
InvenTreeSalesOrderAllocation() : super();
|
InvenTreeSalesOrderAllocation() : super();
|
||||||
|
|
||||||
InvenTreeSalesOrderAllocation.fromJson(Map<String, dynamic> json)
|
InvenTreeSalesOrderAllocation.fromJson(Map<String, dynamic> json)
|
||||||
|
|
@ -428,48 +428,3 @@ class InvenTreeSalesOrderAllocation extends InvenTreeAttachment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Class representing an attachment file against a SalesOrder object
|
|
||||||
*/
|
|
||||||
class InvenTreeSalesOrderAttachment extends InvenTreeAttachment {
|
|
||||||
InvenTreeSalesOrderAttachment() : super();
|
|
||||||
|
|
||||||
InvenTreeSalesOrderAttachment.fromJson(Map<String, dynamic> json)
|
|
||||||
: super.fromJson(json);
|
|
||||||
|
|
||||||
@override
|
|
||||||
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
|
|
||||||
InvenTreeSalesOrderAttachment.fromJson(json);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get REFERENCE_FIELD => "order";
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get REF_MODEL_TYPE => "salesorder";
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get URL => InvenTreeAPI().supportsModernAttachments
|
|
||||||
? "attachment/"
|
|
||||||
: "order/so/attachment/";
|
|
||||||
}
|
|
||||||
|
|
||||||
class InvenTreeSalesOrderShipmentAttachment extends InvenTreeAttachment {
|
|
||||||
InvenTreeSalesOrderShipmentAttachment() : super();
|
|
||||||
|
|
||||||
InvenTreeSalesOrderShipmentAttachment.fromJson(Map<String, dynamic> json)
|
|
||||||
: super.fromJson(json);
|
|
||||||
|
|
||||||
@override
|
|
||||||
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
|
|
||||||
InvenTreeSalesOrderShipmentAttachment.fromJson(json);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get REFERENCE_FIELD => "shipment";
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get REF_MODEL_TYPE => "salesordershipment";
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get URL => "attachment/";
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -575,31 +575,6 @@ class InvenTreeStockItem extends InvenTreeModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Class representing an attachment file against a StockItem object
|
|
||||||
*/
|
|
||||||
class InvenTreeStockItemAttachment extends InvenTreeAttachment {
|
|
||||||
InvenTreeStockItemAttachment() : super();
|
|
||||||
|
|
||||||
InvenTreeStockItemAttachment.fromJson(Map<String, dynamic> json)
|
|
||||||
: super.fromJson(json);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get REFERENCE_FIELD => "stock_item";
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get REF_MODEL_TYPE => "stockitem";
|
|
||||||
|
|
||||||
@override
|
|
||||||
String get URL => InvenTreeAPI().supportsModernAttachments
|
|
||||||
? "attachment/"
|
|
||||||
: "stock/attachment/";
|
|
||||||
|
|
||||||
@override
|
|
||||||
InvenTreeModel createFromJson(Map<String, dynamic> json) =>
|
|
||||||
InvenTreeStockItemAttachment.fromJson(json);
|
|
||||||
}
|
|
||||||
|
|
||||||
class InvenTreeStockLocation extends InvenTreeModel {
|
class InvenTreeStockLocation extends InvenTreeModel {
|
||||||
InvenTreeStockLocation() : super();
|
InvenTreeStockLocation() : super();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@
|
||||||
"@barcodeReceivePart": {},
|
"@barcodeReceivePart": {},
|
||||||
"barcodeScanPaused": "Skenování čárových kódů pozastaveno",
|
"barcodeScanPaused": "Skenování čárových kódů pozastaveno",
|
||||||
"@barodeScanPaused": {},
|
"@barodeScanPaused": {},
|
||||||
"barcodeScanPause": "Tap to pause scanning",
|
"barcodeScanPause": "Kliknutím pozastavíte skenování",
|
||||||
"@barcodeScanPause": {},
|
"@barcodeScanPause": {},
|
||||||
"barcodeScanAssign": "Skenovat pro přiřazení čárového kódu",
|
"barcodeScanAssign": "Skenovat pro přiřazení čárového kódu",
|
||||||
"@barcodeScanAssign": {},
|
"@barcodeScanAssign": {},
|
||||||
|
|
@ -472,9 +472,9 @@
|
||||||
"@itemUpdated": {},
|
"@itemUpdated": {},
|
||||||
"keywords": "Klíčová slova",
|
"keywords": "Klíčová slova",
|
||||||
"@keywords": {},
|
"@keywords": {},
|
||||||
"labelDriver": "Label Driver",
|
"labelDriver": "Ovladač pro popisky",
|
||||||
"@labelDriver": {},
|
"@labelDriver": {},
|
||||||
"labelSelectDriver": "Select Label Printer Driver",
|
"labelSelectDriver": "Vyberte ovladač pro tiskárnu štítků",
|
||||||
"@labelSelectDriver": {},
|
"@labelSelectDriver": {},
|
||||||
"labelPrinting": "Tisk štítku",
|
"labelPrinting": "Tisk štítku",
|
||||||
"@labelPrinting": {},
|
"@labelPrinting": {},
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -102,7 +102,7 @@
|
||||||
"@barcodeReceivePart": {},
|
"@barcodeReceivePart": {},
|
||||||
"barcodeScanPaused": "Barcode-Scannen angehalten",
|
"barcodeScanPaused": "Barcode-Scannen angehalten",
|
||||||
"@barodeScanPaused": {},
|
"@barodeScanPaused": {},
|
||||||
"barcodeScanPause": "Tap to pause scanning",
|
"barcodeScanPause": "Tippen um das Scannen zu pausieren",
|
||||||
"@barcodeScanPause": {},
|
"@barcodeScanPause": {},
|
||||||
"barcodeScanAssign": "Scannen um Barcode zuzuweisen",
|
"barcodeScanAssign": "Scannen um Barcode zuzuweisen",
|
||||||
"@barcodeScanAssign": {},
|
"@barcodeScanAssign": {},
|
||||||
|
|
@ -472,9 +472,9 @@
|
||||||
"@itemUpdated": {},
|
"@itemUpdated": {},
|
||||||
"keywords": "Schlüsselwörter",
|
"keywords": "Schlüsselwörter",
|
||||||
"@keywords": {},
|
"@keywords": {},
|
||||||
"labelDriver": "Label Driver",
|
"labelDriver": "Etikettendrucker Treiber",
|
||||||
"@labelDriver": {},
|
"@labelDriver": {},
|
||||||
"labelSelectDriver": "Select Label Printer Driver",
|
"labelSelectDriver": "Etikettendrucker Treiber auswählen",
|
||||||
"@labelSelectDriver": {},
|
"@labelSelectDriver": {},
|
||||||
"labelPrinting": "Etikettendruck",
|
"labelPrinting": "Etikettendruck",
|
||||||
"@labelPrinting": {},
|
"@labelPrinting": {},
|
||||||
|
|
@ -944,29 +944,29 @@
|
||||||
"@shipment": {},
|
"@shipment": {},
|
||||||
"shipments": "Lieferungen",
|
"shipments": "Lieferungen",
|
||||||
"@shipments": {},
|
"@shipments": {},
|
||||||
"shipmentsPending": "Ausstehende Sendungen",
|
"shipmentsPending": "Ausstehende Lieferungen",
|
||||||
"@shipmentsPending": {},
|
"@shipmentsPending": {},
|
||||||
"shipmentAdd": "Lieferung hinzufügen",
|
"shipmentAdd": "Lieferung hinzufügen",
|
||||||
"@shipmentAdd": {},
|
"@shipmentAdd": {},
|
||||||
"shipmentCheck": "Sendung prüfen",
|
"shipmentCheck": "Lieferung überprüfen",
|
||||||
"@shipmentCheck": {},
|
"@shipmentCheck": {},
|
||||||
"shipmentCheckDetail": "Diese Sendung als geprüft markieren",
|
"shipmentCheckDetail": "Diese Lieferung als geprüft markieren",
|
||||||
"@shipmentCheckDetail": {},
|
"@shipmentCheckDetail": {},
|
||||||
"shipmentChecked": "Sendung geprüft",
|
"shipmentChecked": "Lieferung überprüft",
|
||||||
"@shipmentChecked": {},
|
"@shipmentChecked": {},
|
||||||
"shipmentDate": "Versanddatum",
|
"shipmentDate": "Versanddatum",
|
||||||
"@shipmentDate": {},
|
"@shipmentDate": {},
|
||||||
"shipmentEdit": "Sendung bearbeiten",
|
"shipmentEdit": "Lieferung bearbeiten",
|
||||||
"@shipmentEdit": {},
|
"@shipmentEdit": {},
|
||||||
"shipmentReference": "Shipment Reference",
|
"shipmentReference": "Sendungsreferenz",
|
||||||
"@shipmentReference": {},
|
"@shipmentReference": {},
|
||||||
"shipmentSend": "Lieferung versenden",
|
"shipmentSend": "Lieferung versenden",
|
||||||
"@shipmentSend": {},
|
"@shipmentSend": {},
|
||||||
"shipmentUncheck": "Uncheck Shipment",
|
"shipmentUncheck": "Lieferung ungeprüft markieren",
|
||||||
"@shipmentUncheck": {},
|
"@shipmentUncheck": {},
|
||||||
"shipmentUncheckDetail": "Mark this shipment as unchecked",
|
"shipmentUncheckDetail": "Diese Lieferung als ungeprüft markieren",
|
||||||
"@shipmentUncheckDetail": {},
|
"@shipmentUncheckDetail": {},
|
||||||
"shipmentUpdated": "Shipment Updated",
|
"shipmentUpdated": "Lieferung Aktualisiert",
|
||||||
"@shipmentUpdated": {},
|
"@shipmentUpdated": {},
|
||||||
"shipped": "Versandt",
|
"shipped": "Versandt",
|
||||||
"@shipped": {},
|
"@shipped": {},
|
||||||
|
|
@ -1102,7 +1102,7 @@
|
||||||
"@timeout": {
|
"@timeout": {
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"toggleTorch": "Toggle Torch",
|
"toggleTorch": "Taschenlampe umschalten",
|
||||||
"@toggleTorch": {},
|
"@toggleTorch": {},
|
||||||
"tokenError": "Token-Fehler",
|
"tokenError": "Token-Fehler",
|
||||||
"@tokenError": {},
|
"@tokenError": {},
|
||||||
|
|
@ -1182,7 +1182,7 @@
|
||||||
"@priceRange": {},
|
"@priceRange": {},
|
||||||
"priceOverrideMin": "Mindestpreis überschreiben",
|
"priceOverrideMin": "Mindestpreis überschreiben",
|
||||||
"@priceOverrideMin": {},
|
"@priceOverrideMin": {},
|
||||||
"priceOverrideMax": "Maximum Price Override",
|
"priceOverrideMax": "Maximalen Preis ignorieren",
|
||||||
"@priceOverrideMax": {},
|
"@priceOverrideMax": {},
|
||||||
"salePrice": "Verkaufspreis",
|
"salePrice": "Verkaufspreis",
|
||||||
"@salePrice": {},
|
"@salePrice": {},
|
||||||
|
|
@ -1198,7 +1198,7 @@
|
||||||
"@variantCost": {},
|
"@variantCost": {},
|
||||||
"overallPricing": "Gesamt Preise",
|
"overallPricing": "Gesamt Preise",
|
||||||
"@overallPricing": {},
|
"@overallPricing": {},
|
||||||
"pricingOverrides": "Pricing Overrides",
|
"pricingOverrides": "Preisgestaltung ignorieren",
|
||||||
"@pricingOverrides": {},
|
"@pricingOverrides": {},
|
||||||
"currency": "Währung",
|
"currency": "Währung",
|
||||||
"@currency": {},
|
"@currency": {},
|
||||||
|
|
|
||||||
|
|
@ -962,7 +962,7 @@
|
||||||
"@shipmentReference": {},
|
"@shipmentReference": {},
|
||||||
"shipmentSend": "Send Shipment",
|
"shipmentSend": "Send Shipment",
|
||||||
"@shipmentSend": {},
|
"@shipmentSend": {},
|
||||||
"shipmentUncheck": "Uncheck Shipment",
|
"shipmentUncheck": "Deseleccionar Envío",
|
||||||
"@shipmentUncheck": {},
|
"@shipmentUncheck": {},
|
||||||
"shipmentUncheckDetail": "Mark this shipment as unchecked",
|
"shipmentUncheckDetail": "Mark this shipment as unchecked",
|
||||||
"@shipmentUncheckDetail": {},
|
"@shipmentUncheckDetail": {},
|
||||||
|
|
@ -1068,7 +1068,7 @@
|
||||||
"@suppliers": {},
|
"@suppliers": {},
|
||||||
"supplierReference": "Referencia del proveedor",
|
"supplierReference": "Referencia del proveedor",
|
||||||
"@supplierReference": {},
|
"@supplierReference": {},
|
||||||
"switchCamera": "Switch Camera",
|
"switchCamera": "Cambiar Cámara",
|
||||||
"@switchCamera": {},
|
"@switchCamera": {},
|
||||||
"takePicture": "Tomar una foto",
|
"takePicture": "Tomar una foto",
|
||||||
"@takePicture": {},
|
"@takePicture": {},
|
||||||
|
|
@ -1148,7 +1148,7 @@
|
||||||
"@uploadFailed": {},
|
"@uploadFailed": {},
|
||||||
"uploadSuccess": "Archivo subido",
|
"uploadSuccess": "Archivo subido",
|
||||||
"@uploadSuccess": {},
|
"@uploadSuccess": {},
|
||||||
"uploadImage": "Upload Image",
|
"uploadImage": "Subir Imagen",
|
||||||
"@uploadImage": {},
|
"@uploadImage": {},
|
||||||
"usedIn": "Usado en",
|
"usedIn": "Usado en",
|
||||||
"@usedIn": {},
|
"@usedIn": {},
|
||||||
|
|
|
||||||
|
|
@ -36,17 +36,17 @@
|
||||||
"@appDetails": {},
|
"@appDetails": {},
|
||||||
"allocated": "اختصاص داده شده",
|
"allocated": "اختصاص داده شده",
|
||||||
"@allocated": {},
|
"@allocated": {},
|
||||||
"aspectRatio16x9": "16:9",
|
"aspectRatio16x9": "۱۶ به ۹",
|
||||||
"@aspectRatio16x9": {},
|
"@aspectRatio16x9": {},
|
||||||
"aspectRatio3x2": "3:2",
|
"aspectRatio3x2": "۳ به ۲",
|
||||||
"@aspectRatio3x2": {},
|
"@aspectRatio3x2": {},
|
||||||
"aspectRatio4x3": "4:3",
|
"aspectRatio4x3": "۴ به ۳",
|
||||||
"@aspectRatio4x3": {},
|
"@aspectRatio4x3": {},
|
||||||
"aspectRatioSquare": "Square (1:1)",
|
"aspectRatioSquare": "مربعی (۱ به ۱)",
|
||||||
"@aspectRatioSquare": {},
|
"@aspectRatioSquare": {},
|
||||||
"allocateStock": "موجودی اختصاص داده شده",
|
"allocateStock": "موجودی اختصاص داده شده",
|
||||||
"@allocateStock": {},
|
"@allocateStock": {},
|
||||||
"allocatedStock": "Allocated Stock",
|
"allocatedStock": "موجودی اختصاص داده شده",
|
||||||
"@allocatedStock": {},
|
"@allocatedStock": {},
|
||||||
"appReleaseNotes": "نمایش یادداشت های انتشار برنامه",
|
"appReleaseNotes": "نمایش یادداشت های انتشار برنامه",
|
||||||
"@appReleaseNotes": {},
|
"@appReleaseNotes": {},
|
||||||
|
|
@ -102,7 +102,7 @@
|
||||||
"@barcodeReceivePart": {},
|
"@barcodeReceivePart": {},
|
||||||
"barcodeScanPaused": "اسکن بارکد متوقف شد",
|
"barcodeScanPaused": "اسکن بارکد متوقف شد",
|
||||||
"@barodeScanPaused": {},
|
"@barodeScanPaused": {},
|
||||||
"barcodeScanPause": "Tap to pause scanning",
|
"barcodeScanPause": "برای توقف اسکن لمس کنید",
|
||||||
"@barcodeScanPause": {},
|
"@barcodeScanPause": {},
|
||||||
"barcodeScanAssign": "برای اختصاص بارکد اسکن کنید",
|
"barcodeScanAssign": "برای اختصاص بارکد اسکن کنید",
|
||||||
"@barcodeScanAssign": {},
|
"@barcodeScanAssign": {},
|
||||||
|
|
@ -180,9 +180,9 @@
|
||||||
"@companyUpdated": {},
|
"@companyUpdated": {},
|
||||||
"companies": "شرکتها",
|
"companies": "شرکتها",
|
||||||
"@companies": {},
|
"@companies": {},
|
||||||
"complete": "Complete",
|
"complete": "تکمیل",
|
||||||
"@complete": {},
|
"@complete": {},
|
||||||
"completeOrder": "Complete Order",
|
"completeOrder": "تکمیل سفارش",
|
||||||
"@completeOrder": {},
|
"@completeOrder": {},
|
||||||
"completionDate": "تاریخ تکمیل",
|
"completionDate": "تاریخ تکمیل",
|
||||||
"@completionDate": {},
|
"@completionDate": {},
|
||||||
|
|
@ -204,9 +204,9 @@
|
||||||
},
|
},
|
||||||
"credits": "اعتبارات",
|
"credits": "اعتبارات",
|
||||||
"@credits": {},
|
"@credits": {},
|
||||||
"crop": "Crop",
|
"crop": "برش",
|
||||||
"@crop": {},
|
"@crop": {},
|
||||||
"cropImage": "Crop Image",
|
"cropImage": "برش تصویر",
|
||||||
"@cropImage": {},
|
"@cropImage": {},
|
||||||
"customer": "مشتری",
|
"customer": "مشتری",
|
||||||
"@customer": {},
|
"@customer": {},
|
||||||
|
|
@ -228,11 +228,11 @@
|
||||||
"@delete": {},
|
"@delete": {},
|
||||||
"deleteFailed": "عملیات حذف ناموفق بوده است",
|
"deleteFailed": "عملیات حذف ناموفق بوده است",
|
||||||
"@deleteFailed": {},
|
"@deleteFailed": {},
|
||||||
"deleteImageConfirmation": "Are you sure you want to delete this image?",
|
"deleteImageConfirmation": "آیا مطمئن هستید که میخواهید این تصویر را حذف کنید؟",
|
||||||
"@deleteImageConfirmation": {},
|
"@deleteImageConfirmation": {},
|
||||||
"deleteImageTooltip": "Delete Image",
|
"deleteImageTooltip": "حذف تصویر",
|
||||||
"@deleteImageTooltip": {},
|
"@deleteImageTooltip": {},
|
||||||
"deleteImage": "Delete Image",
|
"deleteImage": "حذف تصویر",
|
||||||
"@deleteImage": {},
|
"@deleteImage": {},
|
||||||
"deletePart": "حذف قسمت",
|
"deletePart": "حذف قسمت",
|
||||||
"@deletePart": {},
|
"@deletePart": {},
|
||||||
|
|
@ -240,7 +240,7 @@
|
||||||
"@deletePartDetail": {},
|
"@deletePartDetail": {},
|
||||||
"deleteSuccess": "عملیات حذف با موفقیت انجام شد",
|
"deleteSuccess": "عملیات حذف با موفقیت انجام شد",
|
||||||
"@deleteSuccess": {},
|
"@deleteSuccess": {},
|
||||||
"deliveryDate": "Delivery Date",
|
"deliveryDate": "تاریخ تحویل",
|
||||||
"@deliveryDate": {},
|
"@deliveryDate": {},
|
||||||
"description": "توضیحات",
|
"description": "توضیحات",
|
||||||
"@description": {},
|
"@description": {},
|
||||||
|
|
@ -254,9 +254,9 @@
|
||||||
},
|
},
|
||||||
"documentation": "مستندات",
|
"documentation": "مستندات",
|
||||||
"@documentation": {},
|
"@documentation": {},
|
||||||
"downloadComplete": "Download Complete",
|
"downloadComplete": "دانلود انجام شد",
|
||||||
"@downloadComplete": {},
|
"@downloadComplete": {},
|
||||||
"downloadError": "Error downloading image",
|
"downloadError": "خطای دانلود تصویر",
|
||||||
"@downloadError": {},
|
"@downloadError": {},
|
||||||
"downloading": "در حال دانلود فایل",
|
"downloading": "در حال دانلود فایل",
|
||||||
"@downloading": {},
|
"@downloading": {},
|
||||||
|
|
@ -282,7 +282,7 @@
|
||||||
"@editItem": {},
|
"@editItem": {},
|
||||||
"editLineItem": "ویرایش ایتم خط",
|
"editLineItem": "ویرایش ایتم خط",
|
||||||
"@editLineItem": {},
|
"@editLineItem": {},
|
||||||
"email": "Email",
|
"email": "پست الکترونیکی",
|
||||||
"@email": {},
|
"@email": {},
|
||||||
"enterPassword": "رمز عبور را وارد کنید",
|
"enterPassword": "رمز عبور را وارد کنید",
|
||||||
"@enterPassword": {},
|
"@enterPassword": {},
|
||||||
|
|
@ -384,9 +384,9 @@
|
||||||
"@homeShowPo": {},
|
"@homeShowPo": {},
|
||||||
"homeShowPoDescription": "نمایش دکمه سفارش خرید در صفحه خانه",
|
"homeShowPoDescription": "نمایش دکمه سفارش خرید در صفحه خانه",
|
||||||
"@homeShowPoDescription": {},
|
"@homeShowPoDescription": {},
|
||||||
"homeShowShipments": "Show Shipments",
|
"homeShowShipments": "نمایش محموله",
|
||||||
"@homeShowShipments": {},
|
"@homeShowShipments": {},
|
||||||
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
|
"homeShowShipmentsDescription": "نمایش محموله در انتظار ارسال بر روی صفحه اصلی",
|
||||||
"@homeShowShipmentsDescription": {},
|
"@homeShowShipmentsDescription": {},
|
||||||
"homeShowSo": "نمایش سفارش های فروش",
|
"homeShowSo": "نمایش سفارش های فروش",
|
||||||
"@homeShowSo": {},
|
"@homeShowSo": {},
|
||||||
|
|
@ -454,9 +454,9 @@
|
||||||
"@invalidSupplierPart": {},
|
"@invalidSupplierPart": {},
|
||||||
"invalidUsernamePassword": "ترکیب نام کاربری / رمز عبور نامعتبر",
|
"invalidUsernamePassword": "ترکیب نام کاربری / رمز عبور نامعتبر",
|
||||||
"@invalidUsernamePassword": {},
|
"@invalidUsernamePassword": {},
|
||||||
"invoice": "Invoice",
|
"invoice": "صورتحساب",
|
||||||
"@invoice": {},
|
"@invoice": {},
|
||||||
"invoiceNumber": "Invoice Number",
|
"invoiceNumber": "شماره صورتحساب",
|
||||||
"@invoiceNumber": {},
|
"@invoiceNumber": {},
|
||||||
"issue": "موضوع",
|
"issue": "موضوع",
|
||||||
"@issue": {},
|
"@issue": {},
|
||||||
|
|
@ -472,9 +472,9 @@
|
||||||
"@itemUpdated": {},
|
"@itemUpdated": {},
|
||||||
"keywords": "کلمات کلیدی",
|
"keywords": "کلمات کلیدی",
|
||||||
"@keywords": {},
|
"@keywords": {},
|
||||||
"labelDriver": "Label Driver",
|
"labelDriver": "درایور چاپگر برچسب",
|
||||||
"@labelDriver": {},
|
"@labelDriver": {},
|
||||||
"labelSelectDriver": "Select Label Printer Driver",
|
"labelSelectDriver": "انتخاب درایور چاپگر برچسب",
|
||||||
"@labelSelectDriver": {},
|
"@labelSelectDriver": {},
|
||||||
"labelPrinting": "چاپ لیبل",
|
"labelPrinting": "چاپ لیبل",
|
||||||
"@labelPrinting": {},
|
"@labelPrinting": {},
|
||||||
|
|
@ -514,7 +514,7 @@
|
||||||
"@locationCreate": {},
|
"@locationCreate": {},
|
||||||
"locationCreateDetail": "مکان سهام جدید ایجاد کنید",
|
"locationCreateDetail": "مکان سهام جدید ایجاد کنید",
|
||||||
"@locationCreateDetail": {},
|
"@locationCreateDetail": {},
|
||||||
"locationDefault": "Default Location",
|
"locationDefault": "مکان پیشفرض",
|
||||||
"@locationDefault": {},
|
"@locationDefault": {},
|
||||||
"locationNotSet": "هیچ مکانی مشخص نشده است",
|
"locationNotSet": "هیچ مکانی مشخص نشده است",
|
||||||
"@locationNotSet": {},
|
"@locationNotSet": {},
|
||||||
|
|
@ -544,9 +544,9 @@
|
||||||
"@missingData": {},
|
"@missingData": {},
|
||||||
"name": "نام",
|
"name": "نام",
|
||||||
"@name": {},
|
"@name": {},
|
||||||
"no": "No",
|
"no": "خیر",
|
||||||
"@no": {},
|
"@no": {},
|
||||||
"notApplicable": "N/A",
|
"notApplicable": "موجود نیست",
|
||||||
"@notApplicable": {},
|
"@notApplicable": {},
|
||||||
"notConnected": "متصل نیست",
|
"notConnected": "متصل نیست",
|
||||||
"@notConnected": {},
|
"@notConnected": {},
|
||||||
|
|
@ -562,11 +562,11 @@
|
||||||
"@noResponse": {},
|
"@noResponse": {},
|
||||||
"noResults": "بدون نتیجه",
|
"noResults": "بدون نتیجه",
|
||||||
"@noResults": {},
|
"@noResults": {},
|
||||||
"noImageAvailable": "No image available",
|
"noImageAvailable": "هیچ تصویری موجود نیست",
|
||||||
"@noImageAvailable": {},
|
"@noImageAvailable": {},
|
||||||
"noPricingAvailable": "No pricing available",
|
"noPricingAvailable": "هیچ قیمتی موجود نیست",
|
||||||
"@noPricingAvailable": {},
|
"@noPricingAvailable": {},
|
||||||
"noPricingDataFound": "No pricing data found for this part",
|
"noPricingDataFound": "هیچ اطلاعات قیمتی برای این قطعه یافت نشد",
|
||||||
"@noPricingDataFound": {},
|
"@noPricingDataFound": {},
|
||||||
"noSubcategories": "بدون زیر دسته بندی",
|
"noSubcategories": "بدون زیر دسته بندی",
|
||||||
"@noSubcategories": {},
|
"@noSubcategories": {},
|
||||||
|
|
@ -630,9 +630,9 @@
|
||||||
"@partsNone": {},
|
"@partsNone": {},
|
||||||
"partNoResults": "هیچ قطعه ای مطابق با جست و جو یافت نشد",
|
"partNoResults": "هیچ قطعه ای مطابق با جست و جو یافت نشد",
|
||||||
"@partNoResults": {},
|
"@partNoResults": {},
|
||||||
"partPricing": "Part Pricing",
|
"partPricing": "قیمتگذاری قطعات",
|
||||||
"@partPricing": {},
|
"@partPricing": {},
|
||||||
"partPricingSettingDetail": "Display part pricing information",
|
"partPricingSettingDetail": "نمایش اطلاعات قیمتگذاری قطعات",
|
||||||
"@pricingSettingDetail": {},
|
"@pricingSettingDetail": {},
|
||||||
"partSettings": "تنظیمات قطعه",
|
"partSettings": "تنظیمات قطعه",
|
||||||
"@partSettings": {},
|
"@partSettings": {},
|
||||||
|
|
@ -660,13 +660,13 @@
|
||||||
"@password": {},
|
"@password": {},
|
||||||
"passwordEmpty": "رمز عبور نمی تواند خالی باشد",
|
"passwordEmpty": "رمز عبور نمی تواند خالی باشد",
|
||||||
"@passwordEmpty": {},
|
"@passwordEmpty": {},
|
||||||
"pending": "Pending",
|
"pending": "در حال بررسی",
|
||||||
"@pending": {},
|
"@pending": {},
|
||||||
"permissionAccountDenied": "حساب شما مجوزهای لازم برای انجام این عمل را ندارد",
|
"permissionAccountDenied": "حساب شما مجوزهای لازم برای انجام این عمل را ندارد",
|
||||||
"@permissionAccountDenied": {},
|
"@permissionAccountDenied": {},
|
||||||
"permissionRequired": "نیازمند مجوز",
|
"permissionRequired": "نیازمند مجوز",
|
||||||
"@permissionRequired": {},
|
"@permissionRequired": {},
|
||||||
"phone": "Phone",
|
"phone": "تماس",
|
||||||
"@phone": {},
|
"@phone": {},
|
||||||
"printLabel": "پرینت برچسب",
|
"printLabel": "پرینت برچسب",
|
||||||
"@printLabel": {},
|
"@printLabel": {},
|
||||||
|
|
@ -762,7 +762,7 @@
|
||||||
"@reference": {},
|
"@reference": {},
|
||||||
"refresh": "تازه سازی",
|
"refresh": "تازه سازی",
|
||||||
"@refresh": {},
|
"@refresh": {},
|
||||||
"rotateClockwise": "Rotate 90° clockwise",
|
"rotateClockwise": "چرخش °90 درجه در جهت عقربه های ساعت",
|
||||||
"@rotateClockwise": {},
|
"@rotateClockwise": {},
|
||||||
"refreshing": "در حال تازه سازی",
|
"refreshing": "در حال تازه سازی",
|
||||||
"@refreshing": {},
|
"@refreshing": {},
|
||||||
|
|
@ -940,33 +940,33 @@
|
||||||
"@serverNotConnected": {},
|
"@serverNotConnected": {},
|
||||||
"serverNotSelected": "سرور انتخاب نشده است",
|
"serverNotSelected": "سرور انتخاب نشده است",
|
||||||
"@serverNotSelected": {},
|
"@serverNotSelected": {},
|
||||||
"shipment": "Shipment",
|
"shipment": "محموله",
|
||||||
"@shipment": {},
|
"@shipment": {},
|
||||||
"shipments": "محموله ها",
|
"shipments": "محموله ها",
|
||||||
"@shipments": {},
|
"@shipments": {},
|
||||||
"shipmentsPending": "Pending Shipments",
|
"shipmentsPending": "محموله در انتظار ارسال",
|
||||||
"@shipmentsPending": {},
|
"@shipmentsPending": {},
|
||||||
"shipmentAdd": "افزودن محموله",
|
"shipmentAdd": "افزودن محموله",
|
||||||
"@shipmentAdd": {},
|
"@shipmentAdd": {},
|
||||||
"shipmentCheck": "Check Shipment",
|
"shipmentCheck": "بررسی محموله",
|
||||||
"@shipmentCheck": {},
|
"@shipmentCheck": {},
|
||||||
"shipmentCheckDetail": "Mark this shipment as checked",
|
"shipmentCheckDetail": "این محموله را بررسی شده علامت گذاری کن",
|
||||||
"@shipmentCheckDetail": {},
|
"@shipmentCheckDetail": {},
|
||||||
"shipmentChecked": "Shipment Checked",
|
"shipmentChecked": "محموله بررسی شده",
|
||||||
"@shipmentChecked": {},
|
"@shipmentChecked": {},
|
||||||
"shipmentDate": "Shipment Date",
|
"shipmentDate": "تاریخ ارسال",
|
||||||
"@shipmentDate": {},
|
"@shipmentDate": {},
|
||||||
"shipmentEdit": "Edit Shipment",
|
"shipmentEdit": "تغییر محموله",
|
||||||
"@shipmentEdit": {},
|
"@shipmentEdit": {},
|
||||||
"shipmentReference": "Shipment Reference",
|
"shipmentReference": "کد محموله",
|
||||||
"@shipmentReference": {},
|
"@shipmentReference": {},
|
||||||
"shipmentSend": "Send Shipment",
|
"shipmentSend": "ارسال محموله",
|
||||||
"@shipmentSend": {},
|
"@shipmentSend": {},
|
||||||
"shipmentUncheck": "Uncheck Shipment",
|
"shipmentUncheck": "محموله بررسی نشده",
|
||||||
"@shipmentUncheck": {},
|
"@shipmentUncheck": {},
|
||||||
"shipmentUncheckDetail": "Mark this shipment as unchecked",
|
"shipmentUncheckDetail": "این محموله را بررسی نشده علامت گذاری کن",
|
||||||
"@shipmentUncheckDetail": {},
|
"@shipmentUncheckDetail": {},
|
||||||
"shipmentUpdated": "Shipment Updated",
|
"shipmentUpdated": "محموله به روز رسانی شد",
|
||||||
"@shipmentUpdated": {},
|
"@shipmentUpdated": {},
|
||||||
"shipped": "ارسال شده",
|
"shipped": "ارسال شده",
|
||||||
"@shipped": {},
|
"@shipped": {},
|
||||||
|
|
@ -1112,7 +1112,7 @@
|
||||||
"@tokenMissingFromResponse": {},
|
"@tokenMissingFromResponse": {},
|
||||||
"totalPrice": "قیمت کل",
|
"totalPrice": "قیمت کل",
|
||||||
"@totalPrice": {},
|
"@totalPrice": {},
|
||||||
"trackingNumber": "Tracking Number",
|
"trackingNumber": "کد رهگیری",
|
||||||
"@trackingNumber": {},
|
"@trackingNumber": {},
|
||||||
"transfer": "انتقال",
|
"transfer": "انتقال",
|
||||||
"@transfer": {
|
"@transfer": {
|
||||||
|
|
@ -1148,7 +1148,7 @@
|
||||||
"@uploadFailed": {},
|
"@uploadFailed": {},
|
||||||
"uploadSuccess": "فایل اپلود شد",
|
"uploadSuccess": "فایل اپلود شد",
|
||||||
"@uploadSuccess": {},
|
"@uploadSuccess": {},
|
||||||
"uploadImage": "Upload Image",
|
"uploadImage": "بارگذاری تصویر",
|
||||||
"@uploadImage": {},
|
"@uploadImage": {},
|
||||||
"usedIn": "استفاده شده در",
|
"usedIn": "استفاده شده در",
|
||||||
"@usedIn": {},
|
"@usedIn": {},
|
||||||
|
|
@ -1174,34 +1174,34 @@
|
||||||
"@viewSupplierPart": {},
|
"@viewSupplierPart": {},
|
||||||
"website": "وب سایت",
|
"website": "وب سایت",
|
||||||
"@website": {},
|
"@website": {},
|
||||||
"yes": "Yes",
|
"yes": "بله",
|
||||||
"@yes": {},
|
"@yes": {},
|
||||||
"price": "Price",
|
"price": "قیمت",
|
||||||
"@price": {},
|
"@price": {},
|
||||||
"priceRange": "Price Range",
|
"priceRange": "بازه قیمت",
|
||||||
"@priceRange": {},
|
"@priceRange": {},
|
||||||
"priceOverrideMin": "Minimum Price Override",
|
"priceOverrideMin": "قیمت دستی مینیمم",
|
||||||
"@priceOverrideMin": {},
|
"@priceOverrideMin": {},
|
||||||
"priceOverrideMax": "Maximum Price Override",
|
"priceOverrideMax": "قیمت دستی ماکزیمم",
|
||||||
"@priceOverrideMax": {},
|
"@priceOverrideMax": {},
|
||||||
"salePrice": "Sale Price",
|
"salePrice": "قیمت حراج",
|
||||||
"@salePrice": {},
|
"@salePrice": {},
|
||||||
"saleHistory": "Sale History",
|
"saleHistory": "تاریخچه حراج",
|
||||||
"@saleHistory": {},
|
"@saleHistory": {},
|
||||||
"supplierPricing": "Supplier Pricing",
|
"supplierPricing": "قیمت تامین کننده",
|
||||||
"@supplierPricing": {},
|
"@supplierPricing": {},
|
||||||
"bomCost": "BOM Cost",
|
"bomCost": "هزینه تمام شده",
|
||||||
"@bomCost": {},
|
"@bomCost": {},
|
||||||
"internalCost": "Internal Cost",
|
"internalCost": "هزینه داخلی",
|
||||||
"@internalCost": {},
|
"@internalCost": {},
|
||||||
"variantCost": "Variant Cost",
|
"variantCost": "هزینه متغیر",
|
||||||
"@variantCost": {},
|
"@variantCost": {},
|
||||||
"overallPricing": "Overall Pricing",
|
"overallPricing": "قیمت نهایی",
|
||||||
"@overallPricing": {},
|
"@overallPricing": {},
|
||||||
"pricingOverrides": "Pricing Overrides",
|
"pricingOverrides": "قیمت دستی",
|
||||||
"@pricingOverrides": {},
|
"@pricingOverrides": {},
|
||||||
"currency": "Currency",
|
"currency": "واحد پول",
|
||||||
"@currency": {},
|
"@currency": {},
|
||||||
"priceBreaks": "Price Breaks",
|
"priceBreaks": "کاهش قیمت",
|
||||||
"@priceBreaks": {}
|
"@priceBreaks": {}
|
||||||
}
|
}
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
"@aspectRatioSquare": {},
|
"@aspectRatioSquare": {},
|
||||||
"allocateStock": "Készlet foglalása",
|
"allocateStock": "Készlet foglalása",
|
||||||
"@allocateStock": {},
|
"@allocateStock": {},
|
||||||
"allocatedStock": "Allocated Stock",
|
"allocatedStock": "Lefoglalt Készlet",
|
||||||
"@allocatedStock": {},
|
"@allocatedStock": {},
|
||||||
"appReleaseNotes": "Kiadási közlemények",
|
"appReleaseNotes": "Kiadási közlemények",
|
||||||
"@appReleaseNotes": {},
|
"@appReleaseNotes": {},
|
||||||
|
|
@ -102,7 +102,7 @@
|
||||||
"@barcodeReceivePart": {},
|
"@barcodeReceivePart": {},
|
||||||
"barcodeScanPaused": "Vonalkód olvasás megállítva",
|
"barcodeScanPaused": "Vonalkód olvasás megállítva",
|
||||||
"@barodeScanPaused": {},
|
"@barodeScanPaused": {},
|
||||||
"barcodeScanPause": "Tap to pause scanning",
|
"barcodeScanPause": "Érintse meg a szkennelés szüneteltetéséhez",
|
||||||
"@barcodeScanPause": {},
|
"@barcodeScanPause": {},
|
||||||
"barcodeScanAssign": "Kódolvasás a hozzárendeléshez",
|
"barcodeScanAssign": "Kódolvasás a hozzárendeléshez",
|
||||||
"@barcodeScanAssign": {},
|
"@barcodeScanAssign": {},
|
||||||
|
|
@ -240,7 +240,7 @@
|
||||||
"@deletePartDetail": {},
|
"@deletePartDetail": {},
|
||||||
"deleteSuccess": "Törlés sikeres",
|
"deleteSuccess": "Törlés sikeres",
|
||||||
"@deleteSuccess": {},
|
"@deleteSuccess": {},
|
||||||
"deliveryDate": "Delivery Date",
|
"deliveryDate": "Szállítási Dátum",
|
||||||
"@deliveryDate": {},
|
"@deliveryDate": {},
|
||||||
"description": "Leírás",
|
"description": "Leírás",
|
||||||
"@description": {},
|
"@description": {},
|
||||||
|
|
@ -384,9 +384,9 @@
|
||||||
"@homeShowPo": {},
|
"@homeShowPo": {},
|
||||||
"homeShowPoDescription": "Beszerzési rendelések gomb megjelenítése a főoldalon",
|
"homeShowPoDescription": "Beszerzési rendelések gomb megjelenítése a főoldalon",
|
||||||
"@homeShowPoDescription": {},
|
"@homeShowPoDescription": {},
|
||||||
"homeShowShipments": "Show Shipments",
|
"homeShowShipments": "Szállítmányok Mutatása",
|
||||||
"@homeShowShipments": {},
|
"@homeShowShipments": {},
|
||||||
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
|
"homeShowShipmentsDescription": "Függőben lévő szállítmányok megjelenítése a kezdőképernyőn",
|
||||||
"@homeShowShipmentsDescription": {},
|
"@homeShowShipmentsDescription": {},
|
||||||
"homeShowSo": "Vevői rendelések megmutatása",
|
"homeShowSo": "Vevői rendelések megmutatása",
|
||||||
"@homeShowSo": {},
|
"@homeShowSo": {},
|
||||||
|
|
@ -454,9 +454,9 @@
|
||||||
"@invalidSupplierPart": {},
|
"@invalidSupplierPart": {},
|
||||||
"invalidUsernamePassword": "Érvénytelen felhasználónév/jelszó kombináció",
|
"invalidUsernamePassword": "Érvénytelen felhasználónév/jelszó kombináció",
|
||||||
"@invalidUsernamePassword": {},
|
"@invalidUsernamePassword": {},
|
||||||
"invoice": "Invoice",
|
"invoice": "Számla",
|
||||||
"@invoice": {},
|
"@invoice": {},
|
||||||
"invoiceNumber": "Invoice Number",
|
"invoiceNumber": "Számlaszám",
|
||||||
"@invoiceNumber": {},
|
"@invoiceNumber": {},
|
||||||
"issue": "Kiküldés",
|
"issue": "Kiküldés",
|
||||||
"@issue": {},
|
"@issue": {},
|
||||||
|
|
@ -472,9 +472,9 @@
|
||||||
"@itemUpdated": {},
|
"@itemUpdated": {},
|
||||||
"keywords": "Kulcsszavak",
|
"keywords": "Kulcsszavak",
|
||||||
"@keywords": {},
|
"@keywords": {},
|
||||||
"labelDriver": "Label Driver",
|
"labelDriver": "Címke Meghajtó",
|
||||||
"@labelDriver": {},
|
"@labelDriver": {},
|
||||||
"labelSelectDriver": "Select Label Printer Driver",
|
"labelSelectDriver": "Címkenyomtató Meghajtó Kiválasztása",
|
||||||
"@labelSelectDriver": {},
|
"@labelSelectDriver": {},
|
||||||
"labelPrinting": "Címke nyomtatás",
|
"labelPrinting": "Címke nyomtatás",
|
||||||
"@labelPrinting": {},
|
"@labelPrinting": {},
|
||||||
|
|
@ -514,7 +514,7 @@
|
||||||
"@locationCreate": {},
|
"@locationCreate": {},
|
||||||
"locationCreateDetail": "Új készlet hely létrehozása",
|
"locationCreateDetail": "Új készlet hely létrehozása",
|
||||||
"@locationCreateDetail": {},
|
"@locationCreateDetail": {},
|
||||||
"locationDefault": "Default Location",
|
"locationDefault": "Alapértelmezett Hely",
|
||||||
"@locationDefault": {},
|
"@locationDefault": {},
|
||||||
"locationNotSet": "Nincs megadva hely",
|
"locationNotSet": "Nincs megadva hely",
|
||||||
"@locationNotSet": {},
|
"@locationNotSet": {},
|
||||||
|
|
@ -544,7 +544,7 @@
|
||||||
"@missingData": {},
|
"@missingData": {},
|
||||||
"name": "Név",
|
"name": "Név",
|
||||||
"@name": {},
|
"@name": {},
|
||||||
"no": "No",
|
"no": "Nem",
|
||||||
"@no": {},
|
"@no": {},
|
||||||
"notApplicable": "N/A",
|
"notApplicable": "N/A",
|
||||||
"@notApplicable": {},
|
"@notApplicable": {},
|
||||||
|
|
@ -660,7 +660,7 @@
|
||||||
"@password": {},
|
"@password": {},
|
||||||
"passwordEmpty": "Jelszó nem lehet üres",
|
"passwordEmpty": "Jelszó nem lehet üres",
|
||||||
"@passwordEmpty": {},
|
"@passwordEmpty": {},
|
||||||
"pending": "Pending",
|
"pending": "Függőben",
|
||||||
"@pending": {},
|
"@pending": {},
|
||||||
"permissionAccountDenied": "Nincs meg a szükséges jogosultságod, hogy végrehajtsd ezt a műveletet",
|
"permissionAccountDenied": "Nincs meg a szükséges jogosultságod, hogy végrehajtsd ezt a műveletet",
|
||||||
"@permissionAccountDenied": {},
|
"@permissionAccountDenied": {},
|
||||||
|
|
@ -940,33 +940,33 @@
|
||||||
"@serverNotConnected": {},
|
"@serverNotConnected": {},
|
||||||
"serverNotSelected": "Nincs kiszolgáló választva",
|
"serverNotSelected": "Nincs kiszolgáló választva",
|
||||||
"@serverNotSelected": {},
|
"@serverNotSelected": {},
|
||||||
"shipment": "Shipment",
|
"shipment": "Szállítmány",
|
||||||
"@shipment": {},
|
"@shipment": {},
|
||||||
"shipments": "Szállítmányok",
|
"shipments": "Szállítmányok",
|
||||||
"@shipments": {},
|
"@shipments": {},
|
||||||
"shipmentsPending": "Pending Shipments",
|
"shipmentsPending": "Függőben Lévő Szállítmányok",
|
||||||
"@shipmentsPending": {},
|
"@shipmentsPending": {},
|
||||||
"shipmentAdd": "Szállítmány hozzáadása",
|
"shipmentAdd": "Szállítmány hozzáadása",
|
||||||
"@shipmentAdd": {},
|
"@shipmentAdd": {},
|
||||||
"shipmentCheck": "Check Shipment",
|
"shipmentCheck": "Szállítmány Ellenőrzése",
|
||||||
"@shipmentCheck": {},
|
"@shipmentCheck": {},
|
||||||
"shipmentCheckDetail": "Mark this shipment as checked",
|
"shipmentCheckDetail": "Jelölje meg ezt a szállítmányt ellenőrzöttként",
|
||||||
"@shipmentCheckDetail": {},
|
"@shipmentCheckDetail": {},
|
||||||
"shipmentChecked": "Shipment Checked",
|
"shipmentChecked": "Szállítmány Ellenőrizve",
|
||||||
"@shipmentChecked": {},
|
"@shipmentChecked": {},
|
||||||
"shipmentDate": "Shipment Date",
|
"shipmentDate": "Szállítmány Dátuma",
|
||||||
"@shipmentDate": {},
|
"@shipmentDate": {},
|
||||||
"shipmentEdit": "Edit Shipment",
|
"shipmentEdit": "Szállítmány Szerkesztése",
|
||||||
"@shipmentEdit": {},
|
"@shipmentEdit": {},
|
||||||
"shipmentReference": "Shipment Reference",
|
"shipmentReference": "Szállítmány Hivatkozás",
|
||||||
"@shipmentReference": {},
|
"@shipmentReference": {},
|
||||||
"shipmentSend": "Send Shipment",
|
"shipmentSend": "Szállítmány Küldése",
|
||||||
"@shipmentSend": {},
|
"@shipmentSend": {},
|
||||||
"shipmentUncheck": "Uncheck Shipment",
|
"shipmentUncheck": "Szállítmány Ellenőrzés Visszavonása",
|
||||||
"@shipmentUncheck": {},
|
"@shipmentUncheck": {},
|
||||||
"shipmentUncheckDetail": "Mark this shipment as unchecked",
|
"shipmentUncheckDetail": "Jelölje meg ezt a szállítmányt nem ellenőrzöttként",
|
||||||
"@shipmentUncheckDetail": {},
|
"@shipmentUncheckDetail": {},
|
||||||
"shipmentUpdated": "Shipment Updated",
|
"shipmentUpdated": "Szállítmány Frissítve",
|
||||||
"@shipmentUpdated": {},
|
"@shipmentUpdated": {},
|
||||||
"shipped": "Kiszállítva",
|
"shipped": "Kiszállítva",
|
||||||
"@shipped": {},
|
"@shipped": {},
|
||||||
|
|
@ -1112,7 +1112,7 @@
|
||||||
"@tokenMissingFromResponse": {},
|
"@tokenMissingFromResponse": {},
|
||||||
"totalPrice": "Teljes ár",
|
"totalPrice": "Teljes ár",
|
||||||
"@totalPrice": {},
|
"@totalPrice": {},
|
||||||
"trackingNumber": "Tracking Number",
|
"trackingNumber": "Nyomkövetési Szám",
|
||||||
"@trackingNumber": {},
|
"@trackingNumber": {},
|
||||||
"transfer": "Áthelyezés",
|
"transfer": "Áthelyezés",
|
||||||
"@transfer": {
|
"@transfer": {
|
||||||
|
|
@ -1174,7 +1174,7 @@
|
||||||
"@viewSupplierPart": {},
|
"@viewSupplierPart": {},
|
||||||
"website": "Weboldal",
|
"website": "Weboldal",
|
||||||
"@website": {},
|
"@website": {},
|
||||||
"yes": "Yes",
|
"yes": "Igen",
|
||||||
"@yes": {},
|
"@yes": {},
|
||||||
"price": "Ár",
|
"price": "Ár",
|
||||||
"@price": {},
|
"@price": {},
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@
|
||||||
"@barcodeReceivePart": {},
|
"@barcodeReceivePart": {},
|
||||||
"barcodeScanPaused": "Scansione codice a barre in pausa",
|
"barcodeScanPaused": "Scansione codice a barre in pausa",
|
||||||
"@barodeScanPaused": {},
|
"@barodeScanPaused": {},
|
||||||
"barcodeScanPause": "Tap to pause scanning",
|
"barcodeScanPause": "Tocca per mettere in pausa la scansione",
|
||||||
"@barcodeScanPause": {},
|
"@barcodeScanPause": {},
|
||||||
"barcodeScanAssign": "Scansiona per assegnare codice a barre",
|
"barcodeScanAssign": "Scansiona per assegnare codice a barre",
|
||||||
"@barcodeScanAssign": {},
|
"@barcodeScanAssign": {},
|
||||||
|
|
@ -472,9 +472,9 @@
|
||||||
"@itemUpdated": {},
|
"@itemUpdated": {},
|
||||||
"keywords": "Parole Chiave",
|
"keywords": "Parole Chiave",
|
||||||
"@keywords": {},
|
"@keywords": {},
|
||||||
"labelDriver": "Label Driver",
|
"labelDriver": "Driver Etichetta",
|
||||||
"@labelDriver": {},
|
"@labelDriver": {},
|
||||||
"labelSelectDriver": "Select Label Printer Driver",
|
"labelSelectDriver": "Seleziona Il Driver Della Stampante Etichette",
|
||||||
"@labelSelectDriver": {},
|
"@labelSelectDriver": {},
|
||||||
"labelPrinting": "Etichetta in stampa",
|
"labelPrinting": "Etichetta in stampa",
|
||||||
"@labelPrinting": {},
|
"@labelPrinting": {},
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
"@aspectRatioSquare": {},
|
"@aspectRatioSquare": {},
|
||||||
"allocateStock": "Voorraad Toewijzen",
|
"allocateStock": "Voorraad Toewijzen",
|
||||||
"@allocateStock": {},
|
"@allocateStock": {},
|
||||||
"allocatedStock": "Allocated Stock",
|
"allocatedStock": "Toegewezen voorraad",
|
||||||
"@allocatedStock": {},
|
"@allocatedStock": {},
|
||||||
"appReleaseNotes": "App release notities weergeven",
|
"appReleaseNotes": "App release notities weergeven",
|
||||||
"@appReleaseNotes": {},
|
"@appReleaseNotes": {},
|
||||||
|
|
@ -102,7 +102,7 @@
|
||||||
"@barcodeReceivePart": {},
|
"@barcodeReceivePart": {},
|
||||||
"barcodeScanPaused": "Barcode scannen gepauzeerd",
|
"barcodeScanPaused": "Barcode scannen gepauzeerd",
|
||||||
"@barodeScanPaused": {},
|
"@barodeScanPaused": {},
|
||||||
"barcodeScanPause": "Tap to pause scanning",
|
"barcodeScanPause": "Klik om scannen te pauzeren",
|
||||||
"@barcodeScanPause": {},
|
"@barcodeScanPause": {},
|
||||||
"barcodeScanAssign": "Scan om streepjescode toe te wijzen",
|
"barcodeScanAssign": "Scan om streepjescode toe te wijzen",
|
||||||
"@barcodeScanAssign": {},
|
"@barcodeScanAssign": {},
|
||||||
|
|
@ -240,7 +240,7 @@
|
||||||
"@deletePartDetail": {},
|
"@deletePartDetail": {},
|
||||||
"deleteSuccess": "Succesvol verwijderd",
|
"deleteSuccess": "Succesvol verwijderd",
|
||||||
"@deleteSuccess": {},
|
"@deleteSuccess": {},
|
||||||
"deliveryDate": "Delivery Date",
|
"deliveryDate": "Leveringsdatum",
|
||||||
"@deliveryDate": {},
|
"@deliveryDate": {},
|
||||||
"description": "Omschrijving",
|
"description": "Omschrijving",
|
||||||
"@description": {},
|
"@description": {},
|
||||||
|
|
@ -384,9 +384,9 @@
|
||||||
"@homeShowPo": {},
|
"@homeShowPo": {},
|
||||||
"homeShowPoDescription": "Inkooporder knop op startscherm weergeven",
|
"homeShowPoDescription": "Inkooporder knop op startscherm weergeven",
|
||||||
"@homeShowPoDescription": {},
|
"@homeShowPoDescription": {},
|
||||||
"homeShowShipments": "Show Shipments",
|
"homeShowShipments": "Verzending weergeven",
|
||||||
"@homeShowShipments": {},
|
"@homeShowShipments": {},
|
||||||
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
|
"homeShowShipmentsDescription": "Toon Leveringen in afwachting op het startscherm",
|
||||||
"@homeShowShipmentsDescription": {},
|
"@homeShowShipmentsDescription": {},
|
||||||
"homeShowSo": "Toon Verkooporders",
|
"homeShowSo": "Toon Verkooporders",
|
||||||
"@homeShowSo": {},
|
"@homeShowSo": {},
|
||||||
|
|
@ -454,9 +454,9 @@
|
||||||
"@invalidSupplierPart": {},
|
"@invalidSupplierPart": {},
|
||||||
"invalidUsernamePassword": "Ongeldige gebruikersnaam / wachtwoord combinatie",
|
"invalidUsernamePassword": "Ongeldige gebruikersnaam / wachtwoord combinatie",
|
||||||
"@invalidUsernamePassword": {},
|
"@invalidUsernamePassword": {},
|
||||||
"invoice": "Invoice",
|
"invoice": "Factuur",
|
||||||
"@invoice": {},
|
"@invoice": {},
|
||||||
"invoiceNumber": "Invoice Number",
|
"invoiceNumber": "Factuur nummer",
|
||||||
"@invoiceNumber": {},
|
"@invoiceNumber": {},
|
||||||
"issue": "Probleem",
|
"issue": "Probleem",
|
||||||
"@issue": {},
|
"@issue": {},
|
||||||
|
|
@ -472,9 +472,9 @@
|
||||||
"@itemUpdated": {},
|
"@itemUpdated": {},
|
||||||
"keywords": "Trefwoorden",
|
"keywords": "Trefwoorden",
|
||||||
"@keywords": {},
|
"@keywords": {},
|
||||||
"labelDriver": "Label Driver",
|
"labelDriver": "Label printer",
|
||||||
"@labelDriver": {},
|
"@labelDriver": {},
|
||||||
"labelSelectDriver": "Select Label Printer Driver",
|
"labelSelectDriver": "Selecteer Label Printer Driver",
|
||||||
"@labelSelectDriver": {},
|
"@labelSelectDriver": {},
|
||||||
"labelPrinting": "Label afdrukken",
|
"labelPrinting": "Label afdrukken",
|
||||||
"@labelPrinting": {},
|
"@labelPrinting": {},
|
||||||
|
|
@ -514,7 +514,7 @@
|
||||||
"@locationCreate": {},
|
"@locationCreate": {},
|
||||||
"locationCreateDetail": "Creëer nieuwe voorraadlocatie",
|
"locationCreateDetail": "Creëer nieuwe voorraadlocatie",
|
||||||
"@locationCreateDetail": {},
|
"@locationCreateDetail": {},
|
||||||
"locationDefault": "Default Location",
|
"locationDefault": "Standaard locatie",
|
||||||
"@locationDefault": {},
|
"@locationDefault": {},
|
||||||
"locationNotSet": "Geen locatie opgegeven",
|
"locationNotSet": "Geen locatie opgegeven",
|
||||||
"@locationNotSet": {},
|
"@locationNotSet": {},
|
||||||
|
|
@ -544,9 +544,9 @@
|
||||||
"@missingData": {},
|
"@missingData": {},
|
||||||
"name": "Naam",
|
"name": "Naam",
|
||||||
"@name": {},
|
"@name": {},
|
||||||
"no": "No",
|
"no": "Nee",
|
||||||
"@no": {},
|
"@no": {},
|
||||||
"notApplicable": "N/A",
|
"notApplicable": "N.v.t. ",
|
||||||
"@notApplicable": {},
|
"@notApplicable": {},
|
||||||
"notConnected": "Niet verbonden",
|
"notConnected": "Niet verbonden",
|
||||||
"@notConnected": {},
|
"@notConnected": {},
|
||||||
|
|
@ -660,7 +660,7 @@
|
||||||
"@password": {},
|
"@password": {},
|
||||||
"passwordEmpty": "Wachtwoord mag niet leeg zijn",
|
"passwordEmpty": "Wachtwoord mag niet leeg zijn",
|
||||||
"@passwordEmpty": {},
|
"@passwordEmpty": {},
|
||||||
"pending": "Pending",
|
"pending": "In behandeling",
|
||||||
"@pending": {},
|
"@pending": {},
|
||||||
"permissionAccountDenied": "U heeft niet de vereiste rechten om deze actie uit te voeren",
|
"permissionAccountDenied": "U heeft niet de vereiste rechten om deze actie uit te voeren",
|
||||||
"@permissionAccountDenied": {},
|
"@permissionAccountDenied": {},
|
||||||
|
|
@ -940,33 +940,33 @@
|
||||||
"@serverNotConnected": {},
|
"@serverNotConnected": {},
|
||||||
"serverNotSelected": "Server niet geselecteerd",
|
"serverNotSelected": "Server niet geselecteerd",
|
||||||
"@serverNotSelected": {},
|
"@serverNotSelected": {},
|
||||||
"shipment": "Shipment",
|
"shipment": "Levering",
|
||||||
"@shipment": {},
|
"@shipment": {},
|
||||||
"shipments": "Verzendingen",
|
"shipments": "Verzendingen",
|
||||||
"@shipments": {},
|
"@shipments": {},
|
||||||
"shipmentsPending": "Pending Shipments",
|
"shipmentsPending": "Leveringen in behandeling",
|
||||||
"@shipmentsPending": {},
|
"@shipmentsPending": {},
|
||||||
"shipmentAdd": "Verzending toevoegen",
|
"shipmentAdd": "Verzending toevoegen",
|
||||||
"@shipmentAdd": {},
|
"@shipmentAdd": {},
|
||||||
"shipmentCheck": "Check Shipment",
|
"shipmentCheck": "Controleer Levering",
|
||||||
"@shipmentCheck": {},
|
"@shipmentCheck": {},
|
||||||
"shipmentCheckDetail": "Mark this shipment as checked",
|
"shipmentCheckDetail": "Markeer deze levering als gecontroleerd",
|
||||||
"@shipmentCheckDetail": {},
|
"@shipmentCheckDetail": {},
|
||||||
"shipmentChecked": "Shipment Checked",
|
"shipmentChecked": "Levering gecontroleerd",
|
||||||
"@shipmentChecked": {},
|
"@shipmentChecked": {},
|
||||||
"shipmentDate": "Shipment Date",
|
"shipmentDate": "Leverings Datum",
|
||||||
"@shipmentDate": {},
|
"@shipmentDate": {},
|
||||||
"shipmentEdit": "Edit Shipment",
|
"shipmentEdit": "Wijzig levering",
|
||||||
"@shipmentEdit": {},
|
"@shipmentEdit": {},
|
||||||
"shipmentReference": "Shipment Reference",
|
"shipmentReference": "Shipment Reference",
|
||||||
"@shipmentReference": {},
|
"@shipmentReference": {},
|
||||||
"shipmentSend": "Send Shipment",
|
"shipmentSend": "Verzending versturen",
|
||||||
"@shipmentSend": {},
|
"@shipmentSend": {},
|
||||||
"shipmentUncheck": "Uncheck Shipment",
|
"shipmentUncheck": "Verzending uitvinken",
|
||||||
"@shipmentUncheck": {},
|
"@shipmentUncheck": {},
|
||||||
"shipmentUncheckDetail": "Mark this shipment as unchecked",
|
"shipmentUncheckDetail": "Markeer deze levering als niet gecontroleerd",
|
||||||
"@shipmentUncheckDetail": {},
|
"@shipmentUncheckDetail": {},
|
||||||
"shipmentUpdated": "Shipment Updated",
|
"shipmentUpdated": "Verzending bijgewerkt",
|
||||||
"@shipmentUpdated": {},
|
"@shipmentUpdated": {},
|
||||||
"shipped": "Verzonden",
|
"shipped": "Verzonden",
|
||||||
"@shipped": {},
|
"@shipped": {},
|
||||||
|
|
@ -1112,7 +1112,7 @@
|
||||||
"@tokenMissingFromResponse": {},
|
"@tokenMissingFromResponse": {},
|
||||||
"totalPrice": "Totaalprijs",
|
"totalPrice": "Totaalprijs",
|
||||||
"@totalPrice": {},
|
"@totalPrice": {},
|
||||||
"trackingNumber": "Tracking Number",
|
"trackingNumber": "Traceernummer",
|
||||||
"@trackingNumber": {},
|
"@trackingNumber": {},
|
||||||
"transfer": "Verplaats",
|
"transfer": "Verplaats",
|
||||||
"@transfer": {
|
"@transfer": {
|
||||||
|
|
@ -1174,7 +1174,7 @@
|
||||||
"@viewSupplierPart": {},
|
"@viewSupplierPart": {},
|
||||||
"website": "Website",
|
"website": "Website",
|
||||||
"@website": {},
|
"@website": {},
|
||||||
"yes": "Yes",
|
"yes": "Ja",
|
||||||
"@yes": {},
|
"@yes": {},
|
||||||
"price": "Prijs",
|
"price": "Prijs",
|
||||||
"@price": {},
|
"@price": {},
|
||||||
|
|
|
||||||
|
|
@ -1202,6 +1202,6 @@
|
||||||
"@pricingOverrides": {},
|
"@pricingOverrides": {},
|
||||||
"currency": "Waluta",
|
"currency": "Waluta",
|
||||||
"@currency": {},
|
"@currency": {},
|
||||||
"priceBreaks": "Price Breaks",
|
"priceBreaks": "Widełki cenowe",
|
||||||
"@priceBreaks": {}
|
"@priceBreaks": {}
|
||||||
}
|
}
|
||||||
|
|
@ -102,7 +102,7 @@
|
||||||
"@barcodeReceivePart": {},
|
"@barcodeReceivePart": {},
|
||||||
"barcodeScanPaused": "Scanare cod de bare întreruptă",
|
"barcodeScanPaused": "Scanare cod de bare întreruptă",
|
||||||
"@barodeScanPaused": {},
|
"@barodeScanPaused": {},
|
||||||
"barcodeScanPause": "Tap to pause scanning",
|
"barcodeScanPause": "Atingeți pentru a întrerupe scanarea",
|
||||||
"@barcodeScanPause": {},
|
"@barcodeScanPause": {},
|
||||||
"barcodeScanAssign": "Scanează pentru a atribui cod de bare",
|
"barcodeScanAssign": "Scanează pentru a atribui cod de bare",
|
||||||
"@barcodeScanAssign": {},
|
"@barcodeScanAssign": {},
|
||||||
|
|
@ -472,9 +472,9 @@
|
||||||
"@itemUpdated": {},
|
"@itemUpdated": {},
|
||||||
"keywords": "Cuvinte cheie",
|
"keywords": "Cuvinte cheie",
|
||||||
"@keywords": {},
|
"@keywords": {},
|
||||||
"labelDriver": "Label Driver",
|
"labelDriver": "Etichetează șofer",
|
||||||
"@labelDriver": {},
|
"@labelDriver": {},
|
||||||
"labelSelectDriver": "Select Label Printer Driver",
|
"labelSelectDriver": "Selectați șofer de imprimante etichetă",
|
||||||
"@labelSelectDriver": {},
|
"@labelSelectDriver": {},
|
||||||
"labelPrinting": "Printare etichete",
|
"labelPrinting": "Printare etichete",
|
||||||
"@labelPrinting": {},
|
"@labelPrinting": {},
|
||||||
|
|
@ -822,386 +822,386 @@
|
||||||
"@response504": {},
|
"@response504": {},
|
||||||
"response505": "Versiunea HTTP nu este suportată",
|
"response505": "Versiunea HTTP nu este suportată",
|
||||||
"@response505": {},
|
"@response505": {},
|
||||||
"responseData": "Response data",
|
"responseData": "Date Răspuns",
|
||||||
"@responseData": {},
|
"@responseData": {},
|
||||||
"responseInvalid": "Invalid Response Code",
|
"responseInvalid": "Cod de răspuns nevalid",
|
||||||
"@responseInvalid": {},
|
"@responseInvalid": {},
|
||||||
"responseUnknown": "Unknown Response",
|
"responseUnknown": "Răspuns necunoscut",
|
||||||
"@responseUnknown": {},
|
"@responseUnknown": {},
|
||||||
"result": "Result",
|
"result": "Rezultat",
|
||||||
"@result": {
|
"@result": {
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"returned": "Returned",
|
"returned": "Returnat",
|
||||||
"@returned": {},
|
"@returned": {},
|
||||||
"salesOrder": "Sales Order",
|
"salesOrder": "Comenzi de Vânzare",
|
||||||
"@salesOrder": {},
|
"@salesOrder": {},
|
||||||
"salesOrders": "Sales Orders",
|
"salesOrders": "Comenzi de Vânzare",
|
||||||
"@salesOrders": {},
|
"@salesOrders": {},
|
||||||
"salesOrderEnable": "Enable Sales Orders",
|
"salesOrderEnable": "Activează Comenzile de Vânzări",
|
||||||
"@salesOrderEnable": {},
|
"@salesOrderEnable": {},
|
||||||
"salesOrderEnableDetail": "Enable sales order functionality",
|
"salesOrderEnableDetail": "Activați funcționalitatea comenzilor de vânzare",
|
||||||
"@salesOrderEnableDetail": {},
|
"@salesOrderEnableDetail": {},
|
||||||
"salesOrderShowCamera": "Camera Shortcut",
|
"salesOrderShowCamera": "Scurtătura Cameră",
|
||||||
"@salesOrderShowCamera": {},
|
"@salesOrderShowCamera": {},
|
||||||
"salesOrderShowCameraDetail": "Enable image upload shortcut on sales order screen",
|
"salesOrderShowCameraDetail": "Activează scurtătura de încărcare a imaginilor pe ecranul comenzii de vânzare",
|
||||||
"@salesOrderShowCameraDetail": {},
|
"@salesOrderShowCameraDetail": {},
|
||||||
"salesOrderSettings": "Sales order settings",
|
"salesOrderSettings": "Setările comenzii de vânzare",
|
||||||
"@salesOrderSettings": {},
|
"@salesOrderSettings": {},
|
||||||
"salesOrderCreate": "New Sales Order",
|
"salesOrderCreate": "Comandă de vânzări nouă",
|
||||||
"@saleOrderCreate": {},
|
"@saleOrderCreate": {},
|
||||||
"salesOrderEdit": "Edit Sales Order",
|
"salesOrderEdit": "Editează Comanda de Vânzare",
|
||||||
"@salesOrderEdit": {},
|
"@salesOrderEdit": {},
|
||||||
"salesOrderUpdated": "Sales order updated",
|
"salesOrderUpdated": "Comanda de vanzare actualizată",
|
||||||
"@salesOrderUpdated": {},
|
"@salesOrderUpdated": {},
|
||||||
"save": "Save",
|
"save": "Salvaţi",
|
||||||
"@save": {
|
"@save": {
|
||||||
"description": "Save"
|
"description": "Save"
|
||||||
},
|
},
|
||||||
"scanBarcode": "Scan Barcode",
|
"scanBarcode": "Scanați codul de bare",
|
||||||
"@scanBarcode": {},
|
"@scanBarcode": {},
|
||||||
"scanSupplierPart": "Scan supplier part barcode",
|
"scanSupplierPart": "Scanare cod de bare furnizor",
|
||||||
"@scanSupplierPart": {},
|
"@scanSupplierPart": {},
|
||||||
"scanIntoLocation": "Scan Into Location",
|
"scanIntoLocation": "Scanare în locație",
|
||||||
"@scanIntoLocation": {},
|
"@scanIntoLocation": {},
|
||||||
"scanIntoLocationDetail": "Scan this item into location",
|
"scanIntoLocationDetail": "Scanează acest articol în locație",
|
||||||
"@scanIntoLocationDetail": {},
|
"@scanIntoLocationDetail": {},
|
||||||
"scannerExternal": "External Scanner",
|
"scannerExternal": "Scanner extern",
|
||||||
"@scannerExternal": {},
|
"@scannerExternal": {},
|
||||||
"scannerExternalDetail": "Use external scanner to read barcodes (wedge mode)",
|
"scannerExternalDetail": "Utilizează scanerul extern pentru a citi codurile de bare (modul wedge)",
|
||||||
"@scannerExternalDetail": {},
|
"@scannerExternalDetail": {},
|
||||||
"scanReceivedParts": "Scan Received Parts",
|
"scanReceivedParts": "Scanați capitolele primite",
|
||||||
"@scanReceivedParts": {},
|
"@scanReceivedParts": {},
|
||||||
"search": "Search",
|
"search": "Caută",
|
||||||
"@search": {
|
"@search": {
|
||||||
"description": "search"
|
"description": "search"
|
||||||
},
|
},
|
||||||
"searching": "Searching",
|
"searching": "Căutare",
|
||||||
"@searching": {},
|
"@searching": {},
|
||||||
"searchLocation": "Search for location",
|
"searchLocation": "Căutați locația",
|
||||||
"@searchLocation": {},
|
"@searchLocation": {},
|
||||||
"searchParts": "Search Parts",
|
"searchParts": "Caută componente",
|
||||||
"@searchParts": {},
|
"@searchParts": {},
|
||||||
"searchStock": "Search Stock",
|
"searchStock": "Căutare Stoc",
|
||||||
"@searchStock": {},
|
"@searchStock": {},
|
||||||
"select": "Select",
|
"select": "Selectează",
|
||||||
"@select": {},
|
"@select": {},
|
||||||
"selectFile": "Select File",
|
"selectFile": "Selectează fișier",
|
||||||
"@selectFile": {},
|
"@selectFile": {},
|
||||||
"selectImage": "Select Image",
|
"selectImage": "Selectează imagine",
|
||||||
"@selectImage": {},
|
"@selectImage": {},
|
||||||
"selectLocation": "Select a location",
|
"selectLocation": "Selectați o locație",
|
||||||
"@selectLocation": {},
|
"@selectLocation": {},
|
||||||
"send": "Send",
|
"send": "Trimite",
|
||||||
"@send": {},
|
"@send": {},
|
||||||
"serialNumber": "Serial Number",
|
"serialNumber": "Număr de serie",
|
||||||
"@serialNumber": {},
|
"@serialNumber": {},
|
||||||
"serialNumbers": "Serial Numbers",
|
"serialNumbers": "Număr de serie",
|
||||||
"@serialNumbers": {},
|
"@serialNumbers": {},
|
||||||
"server": "Server",
|
"server": "Server",
|
||||||
"@server": {},
|
"@server": {},
|
||||||
"serverAddress": "Server Address",
|
"serverAddress": "Adresă server",
|
||||||
"@serverAddress": {},
|
"@serverAddress": {},
|
||||||
"serverApiRequired": "Required API Version",
|
"serverApiRequired": "Versiunea API necesară",
|
||||||
"@serverApiRequired": {},
|
"@serverApiRequired": {},
|
||||||
"serverApiVersion": "Server API Version",
|
"serverApiVersion": "Versiune API server",
|
||||||
"@serverApiVersion": {},
|
"@serverApiVersion": {},
|
||||||
"serverAuthenticationError": "Authentication Error",
|
"serverAuthenticationError": "Eroare autentificare",
|
||||||
"@serverAuthenticationError": {},
|
"@serverAuthenticationError": {},
|
||||||
"serverCertificateError": "Cerficate Error",
|
"serverCertificateError": "Cerficate Error",
|
||||||
"@serverCertificateError": {},
|
"@serverCertificateError": {},
|
||||||
"serverCertificateInvalid": "Server HTTPS certificate is invalid",
|
"serverCertificateInvalid": "Certificatul HTTPS al serverului nu este valid",
|
||||||
"@serverCertificateInvalid": {},
|
"@serverCertificateInvalid": {},
|
||||||
"serverConnected": "Connected to Server",
|
"serverConnected": "Conectare la server",
|
||||||
"@serverConnected": {},
|
"@serverConnected": {},
|
||||||
"serverConnecting": "Connecting to server",
|
"serverConnecting": "Se conecteaza la server",
|
||||||
"@serverConnecting": {},
|
"@serverConnecting": {},
|
||||||
"serverCouldNotConnect": "Could not connect to server",
|
"serverCouldNotConnect": "Nu s-a putut conecta la server",
|
||||||
"@serverCouldNotConnect": {},
|
"@serverCouldNotConnect": {},
|
||||||
"serverEmpty": "Server cannot be empty",
|
"serverEmpty": "Serverul nu poate fi gol",
|
||||||
"@serverEmpty": {},
|
"@serverEmpty": {},
|
||||||
"serverError": "Server Error",
|
"serverError": "Eroare de server",
|
||||||
"@serverError": {},
|
"@serverError": {},
|
||||||
"serverDetails": "Server Details",
|
"serverDetails": "Detalii despre server",
|
||||||
"@serverDetails": {},
|
"@serverDetails": {},
|
||||||
"serverMissingData": "Server response missing required fields",
|
"serverMissingData": "Răspuns server lipsă câmpuri obligatorii",
|
||||||
"@serverMissingData": {},
|
"@serverMissingData": {},
|
||||||
"serverOld": "Old Server Version",
|
"serverOld": "Versiunea veche a serverului",
|
||||||
"@serverOld": {},
|
"@serverOld": {},
|
||||||
"serverSettings": "Server Settings",
|
"serverSettings": "Setări server",
|
||||||
"@serverSettings": {},
|
"@serverSettings": {},
|
||||||
"serverStart": "Server must start with http[s]",
|
"serverStart": "Serverul trebuie să înceapă cu http[s]",
|
||||||
"@serverStart": {},
|
"@serverStart": {},
|
||||||
"settings": "Settings",
|
"settings": "Setări",
|
||||||
"@settings": {},
|
"@settings": {},
|
||||||
"serverInstance": "Server Instance",
|
"serverInstance": "Instanță server",
|
||||||
"@serverInstance": {},
|
"@serverInstance": {},
|
||||||
"serverNotConnected": "Server not connected",
|
"serverNotConnected": "Serverul nu este conectat",
|
||||||
"@serverNotConnected": {},
|
"@serverNotConnected": {},
|
||||||
"serverNotSelected": "Server not selected",
|
"serverNotSelected": "Serverul nu este selectat",
|
||||||
"@serverNotSelected": {},
|
"@serverNotSelected": {},
|
||||||
"shipment": "Shipment",
|
"shipment": "Expediere",
|
||||||
"@shipment": {},
|
"@shipment": {},
|
||||||
"shipments": "Shipments",
|
"shipments": "Livrări",
|
||||||
"@shipments": {},
|
"@shipments": {},
|
||||||
"shipmentsPending": "Pending Shipments",
|
"shipmentsPending": "Livrări în așteptare",
|
||||||
"@shipmentsPending": {},
|
"@shipmentsPending": {},
|
||||||
"shipmentAdd": "Add Shipment",
|
"shipmentAdd": "Adaugă livrare",
|
||||||
"@shipmentAdd": {},
|
"@shipmentAdd": {},
|
||||||
"shipmentCheck": "Check Shipment",
|
"shipmentCheck": "Verifica livrare",
|
||||||
"@shipmentCheck": {},
|
"@shipmentCheck": {},
|
||||||
"shipmentCheckDetail": "Mark this shipment as checked",
|
"shipmentCheckDetail": "Marchează livrarea ca verificată",
|
||||||
"@shipmentCheckDetail": {},
|
"@shipmentCheckDetail": {},
|
||||||
"shipmentChecked": "Shipment Checked",
|
"shipmentChecked": "Livrare verificată",
|
||||||
"@shipmentChecked": {},
|
"@shipmentChecked": {},
|
||||||
"shipmentDate": "Shipment Date",
|
"shipmentDate": "Data livrării",
|
||||||
"@shipmentDate": {},
|
"@shipmentDate": {},
|
||||||
"shipmentEdit": "Edit Shipment",
|
"shipmentEdit": "Editare livrare",
|
||||||
"@shipmentEdit": {},
|
"@shipmentEdit": {},
|
||||||
"shipmentReference": "Shipment Reference",
|
"shipmentReference": "Referință livrare",
|
||||||
"@shipmentReference": {},
|
"@shipmentReference": {},
|
||||||
"shipmentSend": "Send Shipment",
|
"shipmentSend": "Livrare Trimisa",
|
||||||
"@shipmentSend": {},
|
"@shipmentSend": {},
|
||||||
"shipmentUncheck": "Uncheck Shipment",
|
"shipmentUncheck": "Debifează livrare",
|
||||||
"@shipmentUncheck": {},
|
"@shipmentUncheck": {},
|
||||||
"shipmentUncheckDetail": "Mark this shipment as unchecked",
|
"shipmentUncheckDetail": "Marchează livrarea ca nebifat",
|
||||||
"@shipmentUncheckDetail": {},
|
"@shipmentUncheckDetail": {},
|
||||||
"shipmentUpdated": "Shipment Updated",
|
"shipmentUpdated": "Livrare actualizată",
|
||||||
"@shipmentUpdated": {},
|
"@shipmentUpdated": {},
|
||||||
"shipped": "Shipped",
|
"shipped": "Livrat",
|
||||||
"@shipped": {},
|
"@shipped": {},
|
||||||
"sku": "SKU",
|
"sku": "SKU",
|
||||||
"@sku": {},
|
"@sku": {},
|
||||||
"sounds": "Sounds",
|
"sounds": "Sunete",
|
||||||
"@sounds": {},
|
"@sounds": {},
|
||||||
"soundOnBarcodeAction": "Play audible tone on barcode action",
|
"soundOnBarcodeAction": "Redă ton sonor la acțiunea codului de bare",
|
||||||
"@soundOnBarcodeAction": {},
|
"@soundOnBarcodeAction": {},
|
||||||
"soundOnServerError": "Play audible tone on server error",
|
"soundOnServerError": "Redă sunetul sonor la eroarea serverului",
|
||||||
"@soundOnServerError": {},
|
"@soundOnServerError": {},
|
||||||
"startDate": "Start Date",
|
"startDate": "Data inceput",
|
||||||
"@startDate": {},
|
"@startDate": {},
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
"@status": {},
|
"@status": {},
|
||||||
"statusCode": "Status Code",
|
"statusCode": "Status Code",
|
||||||
"@statusCode": {},
|
"@statusCode": {},
|
||||||
"stock": "Stock",
|
"stock": "Stoc",
|
||||||
"@stock": {
|
"@stock": {
|
||||||
"description": "stock"
|
"description": "stock"
|
||||||
},
|
},
|
||||||
"stockDetails": "Current available stock quantity",
|
"stockDetails": "Stoc disponibil curent",
|
||||||
"@stockDetails": {},
|
"@stockDetails": {},
|
||||||
"stockItem": "Stock Item",
|
"stockItem": "Articol Stoc",
|
||||||
"@stockItem": {
|
"@stockItem": {
|
||||||
"description": "stock item title"
|
"description": "stock item title"
|
||||||
},
|
},
|
||||||
"stockItems": "Stock Items",
|
"stockItems": "Articol Stoc",
|
||||||
"@stockItems": {},
|
"@stockItems": {},
|
||||||
"stockItemCreate": "New Stock Item",
|
"stockItemCreate": "Element nou în stoc",
|
||||||
"@stockItemCreate": {},
|
"@stockItemCreate": {},
|
||||||
"stockItemCreateDetail": "Create new stock item in this location",
|
"stockItemCreateDetail": "Crează element nou în stoc în această locație",
|
||||||
"@stockItemCreateDetail": {},
|
"@stockItemCreateDetail": {},
|
||||||
"stockItemDelete": "Delete Stock Item",
|
"stockItemDelete": "Şterge elementul din stoc",
|
||||||
"@stockItemDelete": {},
|
"@stockItemDelete": {},
|
||||||
"stockItemDeleteConfirm": "Are you sure you want to delete this stock item?",
|
"stockItemDeleteConfirm": "Sunteţi sigur că doriţi să ştergeţi acest articol din stoc?",
|
||||||
"@stockItemDeleteConfirm": {},
|
"@stockItemDeleteConfirm": {},
|
||||||
"stockItemDeleteFailure": "Could not delete stock item",
|
"stockItemDeleteFailure": "Nu s-a putut șterge articolul din stoc",
|
||||||
"@stockItemDeleteFailure": {},
|
"@stockItemDeleteFailure": {},
|
||||||
"stockItemDeleteSuccess": "Stock item deleted",
|
"stockItemDeleteSuccess": "Articol șters",
|
||||||
"@stockItemDeleteSuccess": {},
|
"@stockItemDeleteSuccess": {},
|
||||||
"stockItemHistory": "Stock History",
|
"stockItemHistory": "Istoric Stoc",
|
||||||
"@stockItemHistory": {},
|
"@stockItemHistory": {},
|
||||||
"stockItemHistoryDetail": "Display historical stock tracking information",
|
"stockItemHistoryDetail": "Afişează informaţii istorice de urmărire stoc",
|
||||||
"@stockItemHistoryDetail": {},
|
"@stockItemHistoryDetail": {},
|
||||||
"stockItemTransferred": "Stock item transferred",
|
"stockItemTransferred": "Articol stoc transferat",
|
||||||
"@stockItemTransferred": {},
|
"@stockItemTransferred": {},
|
||||||
"stockItemUpdated": "Stock item updated",
|
"stockItemUpdated": "Articol stoc actualizat",
|
||||||
"@stockItemUpdated": {},
|
"@stockItemUpdated": {},
|
||||||
"stockItemsNotAvailable": "No stock items available",
|
"stockItemsNotAvailable": "Nu sunt articole disponibile în stoc",
|
||||||
"@stockItemsNotAvailable": {},
|
"@stockItemsNotAvailable": {},
|
||||||
"stockItemNotes": "Stock Item Notes",
|
"stockItemNotes": "Note element de stoc",
|
||||||
"@stockItemNotes": {},
|
"@stockItemNotes": {},
|
||||||
"stockItemUpdateSuccess": "Stock item updated",
|
"stockItemUpdateSuccess": "Articol stoc actualizat",
|
||||||
"@stockItemUpdateSuccess": {},
|
"@stockItemUpdateSuccess": {},
|
||||||
"stockItemUpdateFailure": "Stock item update failed",
|
"stockItemUpdateFailure": "Actualizarea articolului stoc a eșuat",
|
||||||
"@stockItemUpdateFailure": {},
|
"@stockItemUpdateFailure": {},
|
||||||
"stockLocation": "Stock Location",
|
"stockLocation": "Locația stocului",
|
||||||
"@stockLocation": {
|
"@stockLocation": {
|
||||||
"description": "stock location"
|
"description": "stock location"
|
||||||
},
|
},
|
||||||
"stockLocations": "Stock Locations",
|
"stockLocations": "Locația stocului",
|
||||||
"@stockLocations": {},
|
"@stockLocations": {},
|
||||||
"stockTopLevel": "Top level stock location",
|
"stockTopLevel": "Locație stoc nivel superior",
|
||||||
"@stockTopLevel": {},
|
"@stockTopLevel": {},
|
||||||
"strictHttps": "Use Strict HTTPS",
|
"strictHttps": "Folosește HTTPS Strict",
|
||||||
"@strictHttps": {},
|
"@strictHttps": {},
|
||||||
"strictHttpsDetails": "Enforce strict checking of HTTPs certificates",
|
"strictHttpsDetails": "Impune controlul strict al certificatelor HTTP",
|
||||||
"@strictHttpsDetails": {},
|
"@strictHttpsDetails": {},
|
||||||
"subcategory": "Subcategory",
|
"subcategory": "Subcategorie",
|
||||||
"@subcategory": {},
|
"@subcategory": {},
|
||||||
"subcategories": "Subcategories",
|
"subcategories": "Subcategorii",
|
||||||
"@subcategories": {},
|
"@subcategories": {},
|
||||||
"sublocation": "Sublocation",
|
"sublocation": "Sublocare",
|
||||||
"@sublocation": {},
|
"@sublocation": {},
|
||||||
"sublocations": "Sublocations",
|
"sublocations": "Sublocare",
|
||||||
"@sublocations": {},
|
"@sublocations": {},
|
||||||
"sublocationNone": "No Sublocations",
|
"sublocationNone": "Fără sublocări",
|
||||||
"@sublocationNone": {},
|
"@sublocationNone": {},
|
||||||
"sublocationNoneDetail": "No sublocations available",
|
"sublocationNoneDetail": "Nu există sublocații disponibile",
|
||||||
"@sublocationNoneDetail": {},
|
"@sublocationNoneDetail": {},
|
||||||
"submitFeedback": "Submit Feedback",
|
"submitFeedback": "Trimiteți feedback",
|
||||||
"@submitFeedback": {},
|
"@submitFeedback": {},
|
||||||
"suppliedParts": "Supplied Parts",
|
"suppliedParts": "Piese furnizate",
|
||||||
"@suppliedParts": {},
|
"@suppliedParts": {},
|
||||||
"supplier": "Supplier",
|
"supplier": "Furnizor",
|
||||||
"@supplier": {},
|
"@supplier": {},
|
||||||
"supplierPart": "Supplier Part",
|
"supplierPart": "Piesă Furnizor",
|
||||||
"@supplierPart": {},
|
"@supplierPart": {},
|
||||||
"supplierPartEdit": "Edit Supplier Part",
|
"supplierPartEdit": "Editați articol furnizorului",
|
||||||
"@supplierPartEdit": {},
|
"@supplierPartEdit": {},
|
||||||
"supplierPartNumber": "Supplier Part Number",
|
"supplierPartNumber": "Cod furnizor",
|
||||||
"@supplierPartNumber": {},
|
"@supplierPartNumber": {},
|
||||||
"supplierPartUpdated": "Supplier Part Updated",
|
"supplierPartUpdated": "Cod furnizor actualizat",
|
||||||
"@supplierPartUpdated": {},
|
"@supplierPartUpdated": {},
|
||||||
"supplierParts": "Supplier Parts",
|
"supplierParts": "Piese Furnizor",
|
||||||
"@supplierParts": {},
|
"@supplierParts": {},
|
||||||
"suppliers": "Suppliers",
|
"suppliers": "Furnizori",
|
||||||
"@suppliers": {},
|
"@suppliers": {},
|
||||||
"supplierReference": "Supplier Reference",
|
"supplierReference": "Cod furnizor",
|
||||||
"@supplierReference": {},
|
"@supplierReference": {},
|
||||||
"switchCamera": "Switch Camera",
|
"switchCamera": "Comutați Camera",
|
||||||
"@switchCamera": {},
|
"@switchCamera": {},
|
||||||
"takePicture": "Take Picture",
|
"takePicture": "Faceți o fotografie",
|
||||||
"@takePicture": {},
|
"@takePicture": {},
|
||||||
"targetDate": "Target Date",
|
"targetDate": "Data țintă",
|
||||||
"@targetDate": {},
|
"@targetDate": {},
|
||||||
"templatePart": "Parent Template Part",
|
"templatePart": "Capitol șablon părinte",
|
||||||
"@templatePart": {},
|
"@templatePart": {},
|
||||||
"testName": "Test Name",
|
"testName": "Nume test",
|
||||||
"@testName": {},
|
"@testName": {},
|
||||||
"testPassedOrFailed": "Test passed or failed",
|
"testPassedOrFailed": "Testul a trecut sau a eșuat",
|
||||||
"@testPassedOrFailed": {},
|
"@testPassedOrFailed": {},
|
||||||
"testsRequired": "Required Tests",
|
"testsRequired": "Teste necesare",
|
||||||
"@testsRequired": {},
|
"@testsRequired": {},
|
||||||
"testResults": "Test Results",
|
"testResults": "Rezultatele testului",
|
||||||
"@testResults": {
|
"@testResults": {
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"testResultsDetail": "Display stock item test results",
|
"testResultsDetail": "Afișează rezultatele testului produsului în stoc",
|
||||||
"@testResultsDetail": {},
|
"@testResultsDetail": {},
|
||||||
"testResultAdd": "Add Test Result",
|
"testResultAdd": "Adăugare rezultat test",
|
||||||
"@testResultAdd": {},
|
"@testResultAdd": {},
|
||||||
"testResultNone": "No Test Results",
|
"testResultNone": "Niciun rezultat de test",
|
||||||
"@testResultNone": {},
|
"@testResultNone": {},
|
||||||
"testResultNoneDetail": "No test results available",
|
"testResultNoneDetail": "Nici un rezultat de test disponibil",
|
||||||
"@testResultNoneDetail": {},
|
"@testResultNoneDetail": {},
|
||||||
"testResultUploadFail": "Error uploading test result",
|
"testResultUploadFail": "Eroare încărcare rezultat test",
|
||||||
"@testResultUploadFail": {},
|
"@testResultUploadFail": {},
|
||||||
"testResultUploadPass": "Test result uploaded",
|
"testResultUploadPass": "Rezultat test încărcat",
|
||||||
"@testResultUploadPass": {},
|
"@testResultUploadPass": {},
|
||||||
"timeout": "Timeout",
|
"timeout": "Timeout",
|
||||||
"@timeout": {
|
"@timeout": {
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"toggleTorch": "Toggle Torch",
|
"toggleTorch": "Comutare lanternă",
|
||||||
"@toggleTorch": {},
|
"@toggleTorch": {},
|
||||||
"tokenError": "Token Error",
|
"tokenError": "Eroare token",
|
||||||
"@tokenError": {},
|
"@tokenError": {},
|
||||||
"tokenMissing": "Missing Token",
|
"tokenMissing": "Token lipsă",
|
||||||
"@tokenMissing": {},
|
"@tokenMissing": {},
|
||||||
"tokenMissingFromResponse": "Access token missing from response",
|
"tokenMissingFromResponse": "Token-ul de acces lipsește din răspuns",
|
||||||
"@tokenMissingFromResponse": {},
|
"@tokenMissingFromResponse": {},
|
||||||
"totalPrice": "Total Price",
|
"totalPrice": "Preț total",
|
||||||
"@totalPrice": {},
|
"@totalPrice": {},
|
||||||
"trackingNumber": "Tracking Number",
|
"trackingNumber": "Număr de urmărire",
|
||||||
"@trackingNumber": {},
|
"@trackingNumber": {},
|
||||||
"transfer": "Transfer",
|
"transfer": "Transfer",
|
||||||
"@transfer": {
|
"@transfer": {
|
||||||
"description": "transfer"
|
"description": "transfer"
|
||||||
},
|
},
|
||||||
"transferStock": "Transfer Stock",
|
"transferStock": "Transfera stoc",
|
||||||
"@transferStock": {
|
"@transferStock": {
|
||||||
"description": "transfer stock"
|
"description": "transfer stock"
|
||||||
},
|
},
|
||||||
"transferStockDetail": "Transfer item to a different location",
|
"transferStockDetail": "Transferați articolul într-o locație diferită",
|
||||||
"@transferStockDetail": {},
|
"@transferStockDetail": {},
|
||||||
"transferStockLocation": "Transfer Stock Location",
|
"transferStockLocation": "Transfer locație stoc",
|
||||||
"@transferStockLocation": {},
|
"@transferStockLocation": {},
|
||||||
"transferStockLocationDetail": "Transfer this stock location into another",
|
"transferStockLocationDetail": "Transferați această locație a stocului în alta",
|
||||||
"@transferStockLocationDetail": {},
|
"@transferStockLocationDetail": {},
|
||||||
"translate": "Translate",
|
"translate": "Traduceți",
|
||||||
"@translate": {},
|
"@translate": {},
|
||||||
"translateHelp": "Help translate the InvenTree app",
|
"translateHelp": "Ajută la traducerea aplicației InvenTree",
|
||||||
"@translateHelp": {},
|
"@translateHelp": {},
|
||||||
"unavailable": "Unavailable",
|
"unavailable": "Indisponibil",
|
||||||
"@unavailable": {},
|
"@unavailable": {},
|
||||||
"unavailableDetail": "Item is not available",
|
"unavailableDetail": "Articolul nu este disponibil",
|
||||||
"@unavailableDetail": {},
|
"@unavailableDetail": {},
|
||||||
"unitPrice": "Unit Price",
|
"unitPrice": "Preţ Unitar",
|
||||||
"@unitPrice": {},
|
"@unitPrice": {},
|
||||||
"units": "Units",
|
"units": "Unități",
|
||||||
"@units": {},
|
"@units": {},
|
||||||
"unknownResponse": "Unknown Response",
|
"unknownResponse": "Răspuns necunoscut",
|
||||||
"@unknownResponse": {},
|
"@unknownResponse": {},
|
||||||
"upload": "Upload",
|
"upload": "Încărcaţi",
|
||||||
"@upload": {},
|
"@upload": {},
|
||||||
"uploadFailed": "File upload failed",
|
"uploadFailed": "Încărcare fișier eșuată",
|
||||||
"@uploadFailed": {},
|
"@uploadFailed": {},
|
||||||
"uploadSuccess": "File uploaded",
|
"uploadSuccess": "Fişier încărcat",
|
||||||
"@uploadSuccess": {},
|
"@uploadSuccess": {},
|
||||||
"uploadImage": "Upload Image",
|
"uploadImage": "Încărcare imagine",
|
||||||
"@uploadImage": {},
|
"@uploadImage": {},
|
||||||
"usedIn": "Used In",
|
"usedIn": "Folosite în",
|
||||||
"@usedIn": {},
|
"@usedIn": {},
|
||||||
"usedInDetails": "Assemblies which require this part",
|
"usedInDetails": "Ansambluri care necesită aceast articol",
|
||||||
"@usedInDetails": {},
|
"@usedInDetails": {},
|
||||||
"username": "Nume utilizator",
|
"username": "Nume utilizator",
|
||||||
"@username": {},
|
"@username": {},
|
||||||
"usernameEmpty": "Numele de utilizator nu poate fi gol",
|
"usernameEmpty": "Numele de utilizator nu poate fi gol",
|
||||||
"@usernameEmpty": {},
|
"@usernameEmpty": {},
|
||||||
"value": "Value",
|
"value": "Valoare",
|
||||||
"@value": {
|
"@value": {
|
||||||
"description": "value"
|
"description": "value"
|
||||||
},
|
},
|
||||||
"valueCannotBeEmpty": "Value cannot be empty",
|
"valueCannotBeEmpty": "Valoarea nu poate fi goală",
|
||||||
"@valueCannotBeEmpty": {},
|
"@valueCannotBeEmpty": {},
|
||||||
"valueRequired": "Value is required",
|
"valueRequired": "Valoarea este obligatorie",
|
||||||
"@valueRequired": {},
|
"@valueRequired": {},
|
||||||
"variants": "Variants",
|
"variants": "Variante",
|
||||||
"@variants": {},
|
"@variants": {},
|
||||||
"version": "Version",
|
"version": "Verisune",
|
||||||
"@version": {},
|
"@version": {},
|
||||||
"viewSupplierPart": "View Supplier Part",
|
"viewSupplierPart": "Vezi capitol furnizor",
|
||||||
"@viewSupplierPart": {},
|
"@viewSupplierPart": {},
|
||||||
"website": "Website",
|
"website": "Website",
|
||||||
"@website": {},
|
"@website": {},
|
||||||
"yes": "Yes",
|
"yes": "Da",
|
||||||
"@yes": {},
|
"@yes": {},
|
||||||
"price": "Price",
|
"price": "Preț",
|
||||||
"@price": {},
|
"@price": {},
|
||||||
"priceRange": "Price Range",
|
"priceRange": "Interval de preț",
|
||||||
"@priceRange": {},
|
"@priceRange": {},
|
||||||
"priceOverrideMin": "Minimum Price Override",
|
"priceOverrideMin": "Suprascriere Preț Minim",
|
||||||
"@priceOverrideMin": {},
|
"@priceOverrideMin": {},
|
||||||
"priceOverrideMax": "Maximum Price Override",
|
"priceOverrideMax": "Suprascriere de preț maximă",
|
||||||
"@priceOverrideMax": {},
|
"@priceOverrideMax": {},
|
||||||
"salePrice": "Sale Price",
|
"salePrice": "Preț de vânzare",
|
||||||
"@salePrice": {},
|
"@salePrice": {},
|
||||||
"saleHistory": "Sale History",
|
"saleHistory": "Istoric vanzari",
|
||||||
"@saleHistory": {},
|
"@saleHistory": {},
|
||||||
"supplierPricing": "Supplier Pricing",
|
"supplierPricing": "Prețurile furnizorului",
|
||||||
"@supplierPricing": {},
|
"@supplierPricing": {},
|
||||||
"bomCost": "BOM Cost",
|
"bomCost": "Cost BOM",
|
||||||
"@bomCost": {},
|
"@bomCost": {},
|
||||||
"internalCost": "Internal Cost",
|
"internalCost": "Cost intern",
|
||||||
"@internalCost": {},
|
"@internalCost": {},
|
||||||
"variantCost": "Variant Cost",
|
"variantCost": "Cost variantă",
|
||||||
"@variantCost": {},
|
"@variantCost": {},
|
||||||
"overallPricing": "Overall Pricing",
|
"overallPricing": "Preț general",
|
||||||
"@overallPricing": {},
|
"@overallPricing": {},
|
||||||
"pricingOverrides": "Pricing Overrides",
|
"pricingOverrides": "Suprascrieri preturi",
|
||||||
"@pricingOverrides": {},
|
"@pricingOverrides": {},
|
||||||
"currency": "Currency",
|
"currency": "Monedă",
|
||||||
"@currency": {},
|
"@currency": {},
|
||||||
"priceBreaks": "Price Breaks",
|
"priceBreaks": "Reduceri de preț",
|
||||||
"@priceBreaks": {}
|
"@priceBreaks": {}
|
||||||
}
|
}
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
"@aspectRatioSquare": {},
|
"@aspectRatioSquare": {},
|
||||||
"allocateStock": "Выделить запас",
|
"allocateStock": "Выделить запас",
|
||||||
"@allocateStock": {},
|
"@allocateStock": {},
|
||||||
"allocatedStock": "Allocated Stock",
|
"allocatedStock": "Зарезервированные остатки",
|
||||||
"@allocatedStock": {},
|
"@allocatedStock": {},
|
||||||
"appReleaseNotes": "Показать заметки о выпуске приложения",
|
"appReleaseNotes": "Показать заметки о выпуске приложения",
|
||||||
"@appReleaseNotes": {},
|
"@appReleaseNotes": {},
|
||||||
|
|
@ -102,7 +102,7 @@
|
||||||
"@barcodeReceivePart": {},
|
"@barcodeReceivePart": {},
|
||||||
"barcodeScanPaused": "Сканирование штрих-кода приостановлено",
|
"barcodeScanPaused": "Сканирование штрих-кода приостановлено",
|
||||||
"@barodeScanPaused": {},
|
"@barodeScanPaused": {},
|
||||||
"barcodeScanPause": "Tap to pause scanning",
|
"barcodeScanPause": "Нажмите, чтобы приостановить сканирование",
|
||||||
"@barcodeScanPause": {},
|
"@barcodeScanPause": {},
|
||||||
"barcodeScanAssign": "Сканировать для присвоения штрих-кода",
|
"barcodeScanAssign": "Сканировать для присвоения штрих-кода",
|
||||||
"@barcodeScanAssign": {},
|
"@barcodeScanAssign": {},
|
||||||
|
|
@ -240,7 +240,7 @@
|
||||||
"@deletePartDetail": {},
|
"@deletePartDetail": {},
|
||||||
"deleteSuccess": "Удаление успешно завершено",
|
"deleteSuccess": "Удаление успешно завершено",
|
||||||
"@deleteSuccess": {},
|
"@deleteSuccess": {},
|
||||||
"deliveryDate": "Delivery Date",
|
"deliveryDate": "Дата доставки",
|
||||||
"@deliveryDate": {},
|
"@deliveryDate": {},
|
||||||
"description": "Описание",
|
"description": "Описание",
|
||||||
"@description": {},
|
"@description": {},
|
||||||
|
|
@ -384,9 +384,9 @@
|
||||||
"@homeShowPo": {},
|
"@homeShowPo": {},
|
||||||
"homeShowPoDescription": "Показывать кнопку заказа на главном экране",
|
"homeShowPoDescription": "Показывать кнопку заказа на главном экране",
|
||||||
"@homeShowPoDescription": {},
|
"@homeShowPoDescription": {},
|
||||||
"homeShowShipments": "Show Shipments",
|
"homeShowShipments": "Показать отгрузки",
|
||||||
"@homeShowShipments": {},
|
"@homeShowShipments": {},
|
||||||
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
|
"homeShowShipmentsDescription": "Показывать ожидающие отгрузки на главном экране",
|
||||||
"@homeShowShipmentsDescription": {},
|
"@homeShowShipmentsDescription": {},
|
||||||
"homeShowSo": "Показать заказы на продажу",
|
"homeShowSo": "Показать заказы на продажу",
|
||||||
"@homeShowSo": {},
|
"@homeShowSo": {},
|
||||||
|
|
@ -454,9 +454,9 @@
|
||||||
"@invalidSupplierPart": {},
|
"@invalidSupplierPart": {},
|
||||||
"invalidUsernamePassword": "Неверная комбинация имени пользователя и пароля",
|
"invalidUsernamePassword": "Неверная комбинация имени пользователя и пароля",
|
||||||
"@invalidUsernamePassword": {},
|
"@invalidUsernamePassword": {},
|
||||||
"invoice": "Invoice",
|
"invoice": "Счет",
|
||||||
"@invoice": {},
|
"@invoice": {},
|
||||||
"invoiceNumber": "Invoice Number",
|
"invoiceNumber": "Номер счета",
|
||||||
"@invoiceNumber": {},
|
"@invoiceNumber": {},
|
||||||
"issue": "Оформить",
|
"issue": "Оформить",
|
||||||
"@issue": {},
|
"@issue": {},
|
||||||
|
|
@ -472,9 +472,9 @@
|
||||||
"@itemUpdated": {},
|
"@itemUpdated": {},
|
||||||
"keywords": "Ключевые слова",
|
"keywords": "Ключевые слова",
|
||||||
"@keywords": {},
|
"@keywords": {},
|
||||||
"labelDriver": "Label Driver",
|
"labelDriver": "Драйвер принтера этикеток",
|
||||||
"@labelDriver": {},
|
"@labelDriver": {},
|
||||||
"labelSelectDriver": "Select Label Printer Driver",
|
"labelSelectDriver": "Выберите драйвер принтера этикеток",
|
||||||
"@labelSelectDriver": {},
|
"@labelSelectDriver": {},
|
||||||
"labelPrinting": "Печать этикеток",
|
"labelPrinting": "Печать этикеток",
|
||||||
"@labelPrinting": {},
|
"@labelPrinting": {},
|
||||||
|
|
@ -514,7 +514,7 @@
|
||||||
"@locationCreate": {},
|
"@locationCreate": {},
|
||||||
"locationCreateDetail": "Создать новое расположение склада",
|
"locationCreateDetail": "Создать новое расположение склада",
|
||||||
"@locationCreateDetail": {},
|
"@locationCreateDetail": {},
|
||||||
"locationDefault": "Default Location",
|
"locationDefault": "Расположение по умолчанию",
|
||||||
"@locationDefault": {},
|
"@locationDefault": {},
|
||||||
"locationNotSet": "Не указано месторасположение",
|
"locationNotSet": "Не указано месторасположение",
|
||||||
"@locationNotSet": {},
|
"@locationNotSet": {},
|
||||||
|
|
@ -544,9 +544,9 @@
|
||||||
"@missingData": {},
|
"@missingData": {},
|
||||||
"name": "Название",
|
"name": "Название",
|
||||||
"@name": {},
|
"@name": {},
|
||||||
"no": "No",
|
"no": "Нет",
|
||||||
"@no": {},
|
"@no": {},
|
||||||
"notApplicable": "N/A",
|
"notApplicable": "Н/Д",
|
||||||
"@notApplicable": {},
|
"@notApplicable": {},
|
||||||
"notConnected": "Соединение не установлено",
|
"notConnected": "Соединение не установлено",
|
||||||
"@notConnected": {},
|
"@notConnected": {},
|
||||||
|
|
@ -660,7 +660,7 @@
|
||||||
"@password": {},
|
"@password": {},
|
||||||
"passwordEmpty": "Пароль не может быть пустым",
|
"passwordEmpty": "Пароль не может быть пустым",
|
||||||
"@passwordEmpty": {},
|
"@passwordEmpty": {},
|
||||||
"pending": "Pending",
|
"pending": "В обработке",
|
||||||
"@pending": {},
|
"@pending": {},
|
||||||
"permissionAccountDenied": "Ваш аккаунт не имеет разрешения на выполнение этого действия",
|
"permissionAccountDenied": "Ваш аккаунт не имеет разрешения на выполнение этого действия",
|
||||||
"@permissionAccountDenied": {},
|
"@permissionAccountDenied": {},
|
||||||
|
|
@ -940,33 +940,33 @@
|
||||||
"@serverNotConnected": {},
|
"@serverNotConnected": {},
|
||||||
"serverNotSelected": "Сервер не выбран",
|
"serverNotSelected": "Сервер не выбран",
|
||||||
"@serverNotSelected": {},
|
"@serverNotSelected": {},
|
||||||
"shipment": "Shipment",
|
"shipment": "Отгрузка",
|
||||||
"@shipment": {},
|
"@shipment": {},
|
||||||
"shipments": "Поставки",
|
"shipments": "Поставки",
|
||||||
"@shipments": {},
|
"@shipments": {},
|
||||||
"shipmentsPending": "Pending Shipments",
|
"shipmentsPending": "Ожидающие отгрузки",
|
||||||
"@shipmentsPending": {},
|
"@shipmentsPending": {},
|
||||||
"shipmentAdd": "Новое Отправление",
|
"shipmentAdd": "Новое Отправление",
|
||||||
"@shipmentAdd": {},
|
"@shipmentAdd": {},
|
||||||
"shipmentCheck": "Check Shipment",
|
"shipmentCheck": "Проверить отгрузку",
|
||||||
"@shipmentCheck": {},
|
"@shipmentCheck": {},
|
||||||
"shipmentCheckDetail": "Mark this shipment as checked",
|
"shipmentCheckDetail": "Отметить этот груз как проверенный",
|
||||||
"@shipmentCheckDetail": {},
|
"@shipmentCheckDetail": {},
|
||||||
"shipmentChecked": "Shipment Checked",
|
"shipmentChecked": "Отгрузка проверена",
|
||||||
"@shipmentChecked": {},
|
"@shipmentChecked": {},
|
||||||
"shipmentDate": "Shipment Date",
|
"shipmentDate": "Дата отгрузки",
|
||||||
"@shipmentDate": {},
|
"@shipmentDate": {},
|
||||||
"shipmentEdit": "Edit Shipment",
|
"shipmentEdit": "Редактировать отгрузку",
|
||||||
"@shipmentEdit": {},
|
"@shipmentEdit": {},
|
||||||
"shipmentReference": "Shipment Reference",
|
"shipmentReference": "Ссылка на отгрузку",
|
||||||
"@shipmentReference": {},
|
"@shipmentReference": {},
|
||||||
"shipmentSend": "Send Shipment",
|
"shipmentSend": "Отправить отгрузку",
|
||||||
"@shipmentSend": {},
|
"@shipmentSend": {},
|
||||||
"shipmentUncheck": "Uncheck Shipment",
|
"shipmentUncheck": "Снять отметку с отгрузки",
|
||||||
"@shipmentUncheck": {},
|
"@shipmentUncheck": {},
|
||||||
"shipmentUncheckDetail": "Mark this shipment as unchecked",
|
"shipmentUncheckDetail": "Отметить этот груз как непроверенный",
|
||||||
"@shipmentUncheckDetail": {},
|
"@shipmentUncheckDetail": {},
|
||||||
"shipmentUpdated": "Shipment Updated",
|
"shipmentUpdated": "Отгрузка обновлена",
|
||||||
"@shipmentUpdated": {},
|
"@shipmentUpdated": {},
|
||||||
"shipped": "Отгружено",
|
"shipped": "Отгружено",
|
||||||
"@shipped": {},
|
"@shipped": {},
|
||||||
|
|
@ -1112,7 +1112,7 @@
|
||||||
"@tokenMissingFromResponse": {},
|
"@tokenMissingFromResponse": {},
|
||||||
"totalPrice": "Общая стоимость",
|
"totalPrice": "Общая стоимость",
|
||||||
"@totalPrice": {},
|
"@totalPrice": {},
|
||||||
"trackingNumber": "Tracking Number",
|
"trackingNumber": "Номер отслеживания",
|
||||||
"@trackingNumber": {},
|
"@trackingNumber": {},
|
||||||
"transfer": "Перемещение",
|
"transfer": "Перемещение",
|
||||||
"@transfer": {
|
"@transfer": {
|
||||||
|
|
@ -1174,7 +1174,7 @@
|
||||||
"@viewSupplierPart": {},
|
"@viewSupplierPart": {},
|
||||||
"website": "Сайт",
|
"website": "Сайт",
|
||||||
"@website": {},
|
"@website": {},
|
||||||
"yes": "Yes",
|
"yes": "Да",
|
||||||
"@yes": {},
|
"@yes": {},
|
||||||
"price": "Цена",
|
"price": "Цена",
|
||||||
"@price": {},
|
"@price": {},
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@
|
||||||
"@barcodeReceivePart": {},
|
"@barcodeReceivePart": {},
|
||||||
"barcodeScanPaused": "Streckkodsskanning pausad",
|
"barcodeScanPaused": "Streckkodsskanning pausad",
|
||||||
"@barodeScanPaused": {},
|
"@barodeScanPaused": {},
|
||||||
"barcodeScanPause": "Tap to pause scanning",
|
"barcodeScanPause": "Tryck för att pausa skanning",
|
||||||
"@barcodeScanPause": {},
|
"@barcodeScanPause": {},
|
||||||
"barcodeScanAssign": "Skanna för att tilldela streckkod",
|
"barcodeScanAssign": "Skanna för att tilldela streckkod",
|
||||||
"@barcodeScanAssign": {},
|
"@barcodeScanAssign": {},
|
||||||
|
|
@ -228,7 +228,7 @@
|
||||||
"@delete": {},
|
"@delete": {},
|
||||||
"deleteFailed": "Borttagning misslyckades",
|
"deleteFailed": "Borttagning misslyckades",
|
||||||
"@deleteFailed": {},
|
"@deleteFailed": {},
|
||||||
"deleteImageConfirmation": "Are you sure you want to delete this image?",
|
"deleteImageConfirmation": "Är du säker på att du vill radera denna bild?",
|
||||||
"@deleteImageConfirmation": {},
|
"@deleteImageConfirmation": {},
|
||||||
"deleteImageTooltip": "Radera bild",
|
"deleteImageTooltip": "Radera bild",
|
||||||
"@deleteImageTooltip": {},
|
"@deleteImageTooltip": {},
|
||||||
|
|
@ -240,7 +240,7 @@
|
||||||
"@deletePartDetail": {},
|
"@deletePartDetail": {},
|
||||||
"deleteSuccess": "Borttagning lyckad",
|
"deleteSuccess": "Borttagning lyckad",
|
||||||
"@deleteSuccess": {},
|
"@deleteSuccess": {},
|
||||||
"deliveryDate": "Delivery Date",
|
"deliveryDate": "Leveransdatum",
|
||||||
"@deliveryDate": {},
|
"@deliveryDate": {},
|
||||||
"description": "Beskrivning",
|
"description": "Beskrivning",
|
||||||
"@description": {},
|
"@description": {},
|
||||||
|
|
@ -384,9 +384,9 @@
|
||||||
"@homeShowPo": {},
|
"@homeShowPo": {},
|
||||||
"homeShowPoDescription": "Visa knappen för inköpsorder på startskärmen",
|
"homeShowPoDescription": "Visa knappen för inköpsorder på startskärmen",
|
||||||
"@homeShowPoDescription": {},
|
"@homeShowPoDescription": {},
|
||||||
"homeShowShipments": "Show Shipments",
|
"homeShowShipments": "Visa leveranser",
|
||||||
"@homeShowShipments": {},
|
"@homeShowShipments": {},
|
||||||
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
|
"homeShowShipmentsDescription": "Visa väntande leveranser på startskärmen",
|
||||||
"@homeShowShipmentsDescription": {},
|
"@homeShowShipmentsDescription": {},
|
||||||
"homeShowSo": "Visa försäljningsorder",
|
"homeShowSo": "Visa försäljningsorder",
|
||||||
"@homeShowSo": {},
|
"@homeShowSo": {},
|
||||||
|
|
@ -514,7 +514,7 @@
|
||||||
"@locationCreate": {},
|
"@locationCreate": {},
|
||||||
"locationCreateDetail": "Skapa ny lagerplats",
|
"locationCreateDetail": "Skapa ny lagerplats",
|
||||||
"@locationCreateDetail": {},
|
"@locationCreateDetail": {},
|
||||||
"locationDefault": "Default Location",
|
"locationDefault": "Förvald plats",
|
||||||
"@locationDefault": {},
|
"@locationDefault": {},
|
||||||
"locationNotSet": "Ingen plats specificerad",
|
"locationNotSet": "Ingen plats specificerad",
|
||||||
"@locationNotSet": {},
|
"@locationNotSet": {},
|
||||||
|
|
@ -564,9 +564,9 @@
|
||||||
"@noResults": {},
|
"@noResults": {},
|
||||||
"noImageAvailable": "Ingen bild tillgänglig",
|
"noImageAvailable": "Ingen bild tillgänglig",
|
||||||
"@noImageAvailable": {},
|
"@noImageAvailable": {},
|
||||||
"noPricingAvailable": "No pricing available",
|
"noPricingAvailable": "Ingen prisinformation tillgänglig",
|
||||||
"@noPricingAvailable": {},
|
"@noPricingAvailable": {},
|
||||||
"noPricingDataFound": "No pricing data found for this part",
|
"noPricingDataFound": "Inga prisuppgifter hittades för denna artikel",
|
||||||
"@noPricingDataFound": {},
|
"@noPricingDataFound": {},
|
||||||
"noSubcategories": "Inga underkategorier",
|
"noSubcategories": "Inga underkategorier",
|
||||||
"@noSubcategories": {},
|
"@noSubcategories": {},
|
||||||
|
|
@ -630,7 +630,7 @@
|
||||||
"@partsNone": {},
|
"@partsNone": {},
|
||||||
"partNoResults": "Inga artiklar som matchar sökfrågan",
|
"partNoResults": "Inga artiklar som matchar sökfrågan",
|
||||||
"@partNoResults": {},
|
"@partNoResults": {},
|
||||||
"partPricing": "Part Pricing",
|
"partPricing": "Artikelpris",
|
||||||
"@partPricing": {},
|
"@partPricing": {},
|
||||||
"partPricingSettingDetail": "Display part pricing information",
|
"partPricingSettingDetail": "Display part pricing information",
|
||||||
"@pricingSettingDetail": {},
|
"@pricingSettingDetail": {},
|
||||||
|
|
@ -762,7 +762,7 @@
|
||||||
"@reference": {},
|
"@reference": {},
|
||||||
"refresh": "Uppdatera",
|
"refresh": "Uppdatera",
|
||||||
"@refresh": {},
|
"@refresh": {},
|
||||||
"rotateClockwise": "Rotate 90° clockwise",
|
"rotateClockwise": "Rotera 90° medurs",
|
||||||
"@rotateClockwise": {},
|
"@rotateClockwise": {},
|
||||||
"refreshing": "Uppdaterar",
|
"refreshing": "Uppdaterar",
|
||||||
"@refreshing": {},
|
"@refreshing": {},
|
||||||
|
|
@ -940,7 +940,7 @@
|
||||||
"@serverNotConnected": {},
|
"@serverNotConnected": {},
|
||||||
"serverNotSelected": "Servern är inte vald",
|
"serverNotSelected": "Servern är inte vald",
|
||||||
"@serverNotSelected": {},
|
"@serverNotSelected": {},
|
||||||
"shipment": "Shipment",
|
"shipment": "Försändelse",
|
||||||
"@shipment": {},
|
"@shipment": {},
|
||||||
"shipments": "Frakt",
|
"shipments": "Frakt",
|
||||||
"@shipments": {},
|
"@shipments": {},
|
||||||
|
|
@ -954,7 +954,7 @@
|
||||||
"@shipmentCheckDetail": {},
|
"@shipmentCheckDetail": {},
|
||||||
"shipmentChecked": "Shipment Checked",
|
"shipmentChecked": "Shipment Checked",
|
||||||
"@shipmentChecked": {},
|
"@shipmentChecked": {},
|
||||||
"shipmentDate": "Shipment Date",
|
"shipmentDate": "Leveransdatum",
|
||||||
"@shipmentDate": {},
|
"@shipmentDate": {},
|
||||||
"shipmentEdit": "Edit Shipment",
|
"shipmentEdit": "Edit Shipment",
|
||||||
"@shipmentEdit": {},
|
"@shipmentEdit": {},
|
||||||
|
|
@ -1112,7 +1112,7 @@
|
||||||
"@tokenMissingFromResponse": {},
|
"@tokenMissingFromResponse": {},
|
||||||
"totalPrice": "Totalpris",
|
"totalPrice": "Totalpris",
|
||||||
"@totalPrice": {},
|
"@totalPrice": {},
|
||||||
"trackingNumber": "Tracking Number",
|
"trackingNumber": "Sändningsnummer",
|
||||||
"@trackingNumber": {},
|
"@trackingNumber": {},
|
||||||
"transfer": "Överföring",
|
"transfer": "Överföring",
|
||||||
"@transfer": {
|
"@transfer": {
|
||||||
|
|
@ -1184,11 +1184,11 @@
|
||||||
"@priceOverrideMin": {},
|
"@priceOverrideMin": {},
|
||||||
"priceOverrideMax": "Maximum Price Override",
|
"priceOverrideMax": "Maximum Price Override",
|
||||||
"@priceOverrideMax": {},
|
"@priceOverrideMax": {},
|
||||||
"salePrice": "Sale Price",
|
"salePrice": "Försäljningspris",
|
||||||
"@salePrice": {},
|
"@salePrice": {},
|
||||||
"saleHistory": "Sale History",
|
"saleHistory": "Sale History",
|
||||||
"@saleHistory": {},
|
"@saleHistory": {},
|
||||||
"supplierPricing": "Supplier Pricing",
|
"supplierPricing": "Leverantörspriser",
|
||||||
"@supplierPricing": {},
|
"@supplierPricing": {},
|
||||||
"bomCost": "BOM Cost",
|
"bomCost": "BOM Cost",
|
||||||
"@bomCost": {},
|
"@bomCost": {},
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
},
|
},
|
||||||
"about": "Hakkında",
|
"about": "Hakkında",
|
||||||
"@about": {},
|
"@about": {},
|
||||||
"accountDetails": "Hesap Detayları",
|
"accountDetails": "Hesap Ayrıntıları",
|
||||||
"@accountDetails": {},
|
"@accountDetails": {},
|
||||||
"actions": "Eylemler",
|
"actions": "Eylemler",
|
||||||
"@actions": {
|
"@actions": {
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
"@appCredits": {},
|
"@appCredits": {},
|
||||||
"appDetails": "Uygulama Ayrıntıları",
|
"appDetails": "Uygulama Ayrıntıları",
|
||||||
"@appDetails": {},
|
"@appDetails": {},
|
||||||
"allocated": "Tahsis edildi",
|
"allocated": "Tahsis Edildi",
|
||||||
"@allocated": {},
|
"@allocated": {},
|
||||||
"aspectRatio16x9": "16:9",
|
"aspectRatio16x9": "16:9",
|
||||||
"@aspectRatio16x9": {},
|
"@aspectRatio16x9": {},
|
||||||
|
|
@ -44,11 +44,11 @@
|
||||||
"@aspectRatio4x3": {},
|
"@aspectRatio4x3": {},
|
||||||
"aspectRatioSquare": "Kare (1:1)",
|
"aspectRatioSquare": "Kare (1:1)",
|
||||||
"@aspectRatioSquare": {},
|
"@aspectRatioSquare": {},
|
||||||
"allocateStock": "Tahsisli stok",
|
"allocateStock": "Stoku Tahsis Et",
|
||||||
"@allocateStock": {},
|
"@allocateStock": {},
|
||||||
"allocatedStock": "Tahsis Edilen Stok",
|
"allocatedStock": "Tahsis Edilen Stok",
|
||||||
"@allocatedStock": {},
|
"@allocatedStock": {},
|
||||||
"appReleaseNotes": "Uygulama yayınlama notlarını göster",
|
"appReleaseNotes": "Uygulama yayınlama notlarını görüntüle",
|
||||||
"@appReleaseNotes": {},
|
"@appReleaseNotes": {},
|
||||||
"appSettings": "Uygulama Ayarları",
|
"appSettings": "Uygulama Ayarları",
|
||||||
"@appSettings": {},
|
"@appSettings": {},
|
||||||
|
|
@ -60,7 +60,7 @@
|
||||||
"@assignedToMeDetail": {},
|
"@assignedToMeDetail": {},
|
||||||
"attachments": "Ekler",
|
"attachments": "Ekler",
|
||||||
"@attachments": {},
|
"@attachments": {},
|
||||||
"attachImage": "Resim ekle",
|
"attachImage": "Görsel Ekle",
|
||||||
"@attachImage": {
|
"@attachImage": {
|
||||||
"description": "Attach an image"
|
"description": "Attach an image"
|
||||||
},
|
},
|
||||||
|
|
@ -98,11 +98,11 @@
|
||||||
"@barcodeNotAssigned": {},
|
"@barcodeNotAssigned": {},
|
||||||
"barcodeScanPart": "Parça barkodnu tara",
|
"barcodeScanPart": "Parça barkodnu tara",
|
||||||
"@barcodeScanPart": {},
|
"@barcodeScanPart": {},
|
||||||
"barcodeReceivePart": "Tesellüm barkodunu tara",
|
"barcodeReceivePart": "Parçayı teslim almak için barkodu tarayın",
|
||||||
"@barcodeReceivePart": {},
|
"@barcodeReceivePart": {},
|
||||||
"barcodeScanPaused": "Barkod tarama duraklatıldı",
|
"barcodeScanPaused": "Barkod tarama duraklatıldı",
|
||||||
"@barodeScanPaused": {},
|
"@barodeScanPaused": {},
|
||||||
"barcodeScanPause": "Tap to pause scanning",
|
"barcodeScanPause": "Taramayı duraklatmak için dokunun",
|
||||||
"@barcodeScanPause": {},
|
"@barcodeScanPause": {},
|
||||||
"barcodeScanAssign": "Atanmış barkodu tara",
|
"barcodeScanAssign": "Atanmış barkodu tara",
|
||||||
"@barcodeScanAssign": {},
|
"@barcodeScanAssign": {},
|
||||||
|
|
@ -116,7 +116,7 @@
|
||||||
"@barcodeScanDelayDetail": {},
|
"@barcodeScanDelayDetail": {},
|
||||||
"barcodeScanGeneral": "Bir InvenTree barkodu tara",
|
"barcodeScanGeneral": "Bir InvenTree barkodu tara",
|
||||||
"@barcodeScanGeneral": {},
|
"@barcodeScanGeneral": {},
|
||||||
"barcodeScanInItems": "Stok ögelerini bu konum içine tara",
|
"barcodeScanInItems": "Stok kalemlerini bu konumun içine tara",
|
||||||
"@barcodeScanInItems": {},
|
"@barcodeScanInItems": {},
|
||||||
"barcodeScanLocation": "Stok konumu tara",
|
"barcodeScanLocation": "Stok konumu tara",
|
||||||
"@barcodeScanLocation": {},
|
"@barcodeScanLocation": {},
|
||||||
|
|
@ -128,7 +128,7 @@
|
||||||
"@barcodeScanIntoLocationSuccess": {},
|
"@barcodeScanIntoLocationSuccess": {},
|
||||||
"barcodeScanIntoLocationFailure": "Madde taranmış değil",
|
"barcodeScanIntoLocationFailure": "Madde taranmış değil",
|
||||||
"@barcodeScanIntoLocationFailure": {},
|
"@barcodeScanIntoLocationFailure": {},
|
||||||
"barcodeScanItem": "Stok öğesi tara",
|
"barcodeScanItem": "Stok kalemi tara",
|
||||||
"@barcodeScanItem": {},
|
"@barcodeScanItem": {},
|
||||||
"barcodeTones": "Barkod Tonları",
|
"barcodeTones": "Barkod Tonları",
|
||||||
"@barcodeTones": {},
|
"@barcodeTones": {},
|
||||||
|
|
@ -138,15 +138,15 @@
|
||||||
"@barcodeUnknown": {},
|
"@barcodeUnknown": {},
|
||||||
"batchCode": "Grup kodu",
|
"batchCode": "Grup kodu",
|
||||||
"@batchCode": {},
|
"@batchCode": {},
|
||||||
"billOfMaterials": "Fatura materyalleri",
|
"billOfMaterials": "Ürün Ağacı",
|
||||||
"@billOfMaterials": {},
|
"@billOfMaterials": {},
|
||||||
"bom": "BOM",
|
"bom": "BOM",
|
||||||
"@bom": {},
|
"@bom": {},
|
||||||
"bomEnable": "Malzeme Listesini Görüntüle",
|
"bomEnable": "Ürün Ağacını Görüntüle",
|
||||||
"@bomEnable": {},
|
"@bomEnable": {},
|
||||||
"build": "Oluştur",
|
"build": "Üret",
|
||||||
"@build": {},
|
"@build": {},
|
||||||
"building": "Oluşturma",
|
"building": "Üretiliyor",
|
||||||
"@building": {},
|
"@building": {},
|
||||||
"cameraCreationError": "Kamera Kontrolcüsü Açılamadı",
|
"cameraCreationError": "Kamera Kontrolcüsü Açılamadı",
|
||||||
"@cameraCreationError": {},
|
"@cameraCreationError": {},
|
||||||
|
|
@ -176,7 +176,7 @@
|
||||||
"@companyEdit": {},
|
"@companyEdit": {},
|
||||||
"companyNoResults": "Sorguyla eşleşen şirket yok",
|
"companyNoResults": "Sorguyla eşleşen şirket yok",
|
||||||
"@companyNoResults": {},
|
"@companyNoResults": {},
|
||||||
"companyUpdated": "Firma bilgileri güncellendi",
|
"companyUpdated": "Şirket bilgileri güncellendi",
|
||||||
"@companyUpdated": {},
|
"@companyUpdated": {},
|
||||||
"companies": "Şirketler",
|
"companies": "Şirketler",
|
||||||
"@companies": {},
|
"@companies": {},
|
||||||
|
|
@ -206,7 +206,7 @@
|
||||||
"@credits": {},
|
"@credits": {},
|
||||||
"crop": "Kırp",
|
"crop": "Kırp",
|
||||||
"@crop": {},
|
"@crop": {},
|
||||||
"cropImage": "Resmi Kırp",
|
"cropImage": "Görseli Kırp",
|
||||||
"@cropImage": {},
|
"@cropImage": {},
|
||||||
"customer": "Müşteri",
|
"customer": "Müşteri",
|
||||||
"@customer": {},
|
"@customer": {},
|
||||||
|
|
@ -228,11 +228,11 @@
|
||||||
"@delete": {},
|
"@delete": {},
|
||||||
"deleteFailed": "Silme işlemi başarısız",
|
"deleteFailed": "Silme işlemi başarısız",
|
||||||
"@deleteFailed": {},
|
"@deleteFailed": {},
|
||||||
"deleteImageConfirmation": "Bu resmi silmek istediğinizden emin misiniz?",
|
"deleteImageConfirmation": "Bu görseli silmek istediğinize emin misiniz?",
|
||||||
"@deleteImageConfirmation": {},
|
"@deleteImageConfirmation": {},
|
||||||
"deleteImageTooltip": "Görüntüyü Sil",
|
"deleteImageTooltip": "Görseli Sil",
|
||||||
"@deleteImageTooltip": {},
|
"@deleteImageTooltip": {},
|
||||||
"deleteImage": "Resmi sil",
|
"deleteImage": "Görseli sil",
|
||||||
"@deleteImage": {},
|
"@deleteImage": {},
|
||||||
"deletePart": "Parça Sil",
|
"deletePart": "Parça Sil",
|
||||||
"@deletePart": {},
|
"@deletePart": {},
|
||||||
|
|
@ -244,11 +244,11 @@
|
||||||
"@deliveryDate": {},
|
"@deliveryDate": {},
|
||||||
"description": "Açıklama",
|
"description": "Açıklama",
|
||||||
"@description": {},
|
"@description": {},
|
||||||
"destination": "Varış Yeri",
|
"destination": "Hedef",
|
||||||
"@destination": {},
|
"@destination": {},
|
||||||
"destroyed": "Yok edildi",
|
"destroyed": "Yok edildi",
|
||||||
"@destroyed": {},
|
"@destroyed": {},
|
||||||
"details": "Detaylar",
|
"details": "Ayrıntılar",
|
||||||
"@details": {
|
"@details": {
|
||||||
"description": "details"
|
"description": "details"
|
||||||
},
|
},
|
||||||
|
|
@ -278,9 +278,9 @@
|
||||||
"@editPart": {
|
"@editPart": {
|
||||||
"description": "edit part"
|
"description": "edit part"
|
||||||
},
|
},
|
||||||
"editItem": "Parçayı Düzenle",
|
"editItem": "Stok kalemi düzenle",
|
||||||
"@editItem": {},
|
"@editItem": {},
|
||||||
"editLineItem": "Satır Ögesini Düzenle",
|
"editLineItem": "Satırı Düzenle",
|
||||||
"@editLineItem": {},
|
"@editLineItem": {},
|
||||||
"email": "E-posta",
|
"email": "E-posta",
|
||||||
"@email": {},
|
"@email": {},
|
||||||
|
|
@ -316,9 +316,9 @@
|
||||||
"@expiryExpired": {},
|
"@expiryExpired": {},
|
||||||
"expiryStale": "Eskimiş",
|
"expiryStale": "Eskimiş",
|
||||||
"@expiryStale": {},
|
"@expiryStale": {},
|
||||||
"extraLineItem": "Fazladan Satır Ögesi",
|
"extraLineItem": "Ek Kalem",
|
||||||
"@extraLineItem": {},
|
"@extraLineItem": {},
|
||||||
"extraLineItems": "Fazladan Satır Ögeleri",
|
"extraLineItems": "Ek Kalemler",
|
||||||
"@extraLineItems": {},
|
"@extraLineItems": {},
|
||||||
"feedback": "Geri Bildirim",
|
"feedback": "Geri Bildirim",
|
||||||
"@feedback": {},
|
"@feedback": {},
|
||||||
|
|
@ -348,7 +348,7 @@
|
||||||
"@filterInStockDetail": {},
|
"@filterInStockDetail": {},
|
||||||
"filterSerialized": "Sıralandırılmış",
|
"filterSerialized": "Sıralandırılmış",
|
||||||
"@filterSerialized": {},
|
"@filterSerialized": {},
|
||||||
"filterSerializedDetail": "Sıralandırılmış stok ürünkerini göster",
|
"filterSerializedDetail": "Seri numaralı stok kalemlerini göster",
|
||||||
"@filterSerializedDetail": {},
|
"@filterSerializedDetail": {},
|
||||||
"filterTemplate": "Şablon",
|
"filterTemplate": "Şablon",
|
||||||
"@filterTemplate": {},
|
"@filterTemplate": {},
|
||||||
|
|
@ -392,9 +392,9 @@
|
||||||
"@homeShowSo": {},
|
"@homeShowSo": {},
|
||||||
"homeShowSoDescription": "Satış siparişleri tuşunu giriş ekranında göster",
|
"homeShowSoDescription": "Satış siparişleri tuşunu giriş ekranında göster",
|
||||||
"@homeShowSoDescription": {},
|
"@homeShowSoDescription": {},
|
||||||
"homeShowSubscribed": "Parça bildirimlerine abone ol",
|
"homeShowSubscribed": "Takip Edilen Parçalar",
|
||||||
"@homeShowSubscribed": {},
|
"@homeShowSubscribed": {},
|
||||||
"homeShowSubscribedDescription": "Abone olunan bölümleri ana ekranda göster",
|
"homeShowSubscribedDescription": "Takip edilen parçaları ana ekranda göster",
|
||||||
"@homeShowSubscsribedDescription": {},
|
"@homeShowSubscsribedDescription": {},
|
||||||
"homeShowSuppliers": "Tedarikçileri Göster",
|
"homeShowSuppliers": "Tedarikçileri Göster",
|
||||||
"@homeShowSuppliers": {},
|
"@homeShowSuppliers": {},
|
||||||
|
|
@ -408,13 +408,13 @@
|
||||||
"@homeShowCustomers": {},
|
"@homeShowCustomers": {},
|
||||||
"homeShowCustomersDescription": "Müşteri butonunu ana ekranda göster",
|
"homeShowCustomersDescription": "Müşteri butonunu ana ekranda göster",
|
||||||
"@homeShowCustomersDescription": {},
|
"@homeShowCustomersDescription": {},
|
||||||
"imageUploadFailure": "Fotoğraf yükleme başarısız",
|
"imageUploadFailure": "Görsel yükleme başarısız",
|
||||||
"@imageUploadFailure": {},
|
"@imageUploadFailure": {},
|
||||||
"imageUploadSuccess": "Resim yüklendi",
|
"imageUploadSuccess": "Görsel yüklendi",
|
||||||
"@imageUploadSuccess": {},
|
"@imageUploadSuccess": {},
|
||||||
"inactive": "Pasif",
|
"inactive": "Pasif",
|
||||||
"@inactive": {},
|
"@inactive": {},
|
||||||
"inactiveCompany": "Bu şirket inaktif olarak imlendi",
|
"inactiveCompany": "Bu şirket pasif olarak işaretlendi",
|
||||||
"@inactiveCompany": {},
|
"@inactiveCompany": {},
|
||||||
"inactiveDetail": "Bu parça pasif olarak işaretlendi",
|
"inactiveDetail": "Bu parça pasif olarak işaretlendi",
|
||||||
"@inactiveDetail": {},
|
"@inactiveDetail": {},
|
||||||
|
|
@ -432,9 +432,9 @@
|
||||||
"@internalPartNumber": {},
|
"@internalPartNumber": {},
|
||||||
"info": "Bilgi",
|
"info": "Bilgi",
|
||||||
"@info": {},
|
"@info": {},
|
||||||
"inProduction": "Yapım Aşamasında",
|
"inProduction": "Üretimde",
|
||||||
"@inProduction": {},
|
"@inProduction": {},
|
||||||
"inProductionDetail": "Bu ürün üretim aşamasında",
|
"inProductionDetail": "Bu stok kalemi üretimdedir",
|
||||||
"@inProductionDetail": {},
|
"@inProductionDetail": {},
|
||||||
"internalPart": "İç Parça",
|
"internalPart": "İç Parça",
|
||||||
"@internalPart": {},
|
"@internalPart": {},
|
||||||
|
|
@ -448,7 +448,7 @@
|
||||||
"@invalidPartCategory": {},
|
"@invalidPartCategory": {},
|
||||||
"invalidStockLocation": "Geçersiz Stok Konumu",
|
"invalidStockLocation": "Geçersiz Stok Konumu",
|
||||||
"@invalidStockLocation": {},
|
"@invalidStockLocation": {},
|
||||||
"invalidStockItem": "Geçersiz Stok Parçası",
|
"invalidStockItem": "Geçersiz Stok Kalemi",
|
||||||
"@invalidStockItem": {},
|
"@invalidStockItem": {},
|
||||||
"invalidSupplierPart": "Geçersiz Tedarikçi Parçası",
|
"invalidSupplierPart": "Geçersiz Tedarikçi Parçası",
|
||||||
"@invalidSupplierPart": {},
|
"@invalidSupplierPart": {},
|
||||||
|
|
@ -462,7 +462,7 @@
|
||||||
"@issue": {},
|
"@issue": {},
|
||||||
"issueDate": "Sorun Tarihi",
|
"issueDate": "Sorun Tarihi",
|
||||||
"@issueDate": {},
|
"@issueDate": {},
|
||||||
"issueOrder": "Sipariş Ver",
|
"issueOrder": "Sipariş Düzenle",
|
||||||
"@issueOrder": {},
|
"@issueOrder": {},
|
||||||
"itemInLocation": "Parça zaten konumda",
|
"itemInLocation": "Parça zaten konumda",
|
||||||
"@itemInLocation": {},
|
"@itemInLocation": {},
|
||||||
|
|
@ -472,13 +472,13 @@
|
||||||
"@itemUpdated": {},
|
"@itemUpdated": {},
|
||||||
"keywords": "Anahtar kelimeler",
|
"keywords": "Anahtar kelimeler",
|
||||||
"@keywords": {},
|
"@keywords": {},
|
||||||
"labelDriver": "Label Driver",
|
"labelDriver": "Etiket Sürücü",
|
||||||
"@labelDriver": {},
|
"@labelDriver": {},
|
||||||
"labelSelectDriver": "Select Label Printer Driver",
|
"labelSelectDriver": "Etiket Yazıcı Sürücüsü Seçin",
|
||||||
"@labelSelectDriver": {},
|
"@labelSelectDriver": {},
|
||||||
"labelPrinting": "Etiket Yazdırma",
|
"labelPrinting": "Etiket Yazdırma",
|
||||||
"@labelPrinting": {},
|
"@labelPrinting": {},
|
||||||
"labelPrintingDetail": "Etiket yazdırmayı aktifleştir",
|
"labelPrintingDetail": "Etiket yazdırmayı etkinleştir",
|
||||||
"@labelPrintingDetail": {},
|
"@labelPrintingDetail": {},
|
||||||
"labelTemplate": "Etiket Şablonu",
|
"labelTemplate": "Etiket Şablonu",
|
||||||
"@labelTemplate": {},
|
"@labelTemplate": {},
|
||||||
|
|
@ -492,21 +492,21 @@
|
||||||
"@languageDefault": {},
|
"@languageDefault": {},
|
||||||
"languageSelect": "Dil Seçin",
|
"languageSelect": "Dil Seçin",
|
||||||
"@languageSelect": {},
|
"@languageSelect": {},
|
||||||
"lastStocktake": "Son stok tutma",
|
"lastStocktake": "Son Stok Sayımı",
|
||||||
"@lastStocktake": {},
|
"@lastStocktake": {},
|
||||||
"lastUpdated": "Son güncelleme",
|
"lastUpdated": "Son güncelleme",
|
||||||
"@lastUpdated": {},
|
"@lastUpdated": {},
|
||||||
"level": "Düzey",
|
"level": "Seviye",
|
||||||
"@level": {},
|
"@level": {},
|
||||||
"lineItemAdd": "Satır Ögesi Ekle",
|
"lineItemAdd": "Satır Ekle",
|
||||||
"@lineItemAdd": {},
|
"@lineItemAdd": {},
|
||||||
"lineItem": "Parça Sırası",
|
"lineItem": "Satır",
|
||||||
"@lineItem": {},
|
"@lineItem": {},
|
||||||
"lineItems": "Parçalar Sırası",
|
"lineItems": "Satırlar",
|
||||||
"@lineItems": {},
|
"@lineItems": {},
|
||||||
"lineItemUpdated": "Satır ögesi güncellendi",
|
"lineItemUpdated": "Satır güncellendi",
|
||||||
"@lineItemUpdated": {},
|
"@lineItemUpdated": {},
|
||||||
"locateItem": "Stok ögesi bul",
|
"locateItem": "Stok kalemi bul",
|
||||||
"@locateItem": {},
|
"@locateItem": {},
|
||||||
"locateLocation": "Stok konumu bul",
|
"locateLocation": "Stok konumu bul",
|
||||||
"@locateLocation": {},
|
"@locateLocation": {},
|
||||||
|
|
@ -514,7 +514,7 @@
|
||||||
"@locationCreate": {},
|
"@locationCreate": {},
|
||||||
"locationCreateDetail": "Yeni stok konumu oluştur",
|
"locationCreateDetail": "Yeni stok konumu oluştur",
|
||||||
"@locationCreateDetail": {},
|
"@locationCreateDetail": {},
|
||||||
"locationDefault": "Default Location",
|
"locationDefault": "Varsayılan Konum",
|
||||||
"@locationDefault": {},
|
"@locationDefault": {},
|
||||||
"locationNotSet": "Belirtilmiş konum yok",
|
"locationNotSet": "Belirtilmiş konum yok",
|
||||||
"@locationNotSet": {},
|
"@locationNotSet": {},
|
||||||
|
|
@ -562,7 +562,7 @@
|
||||||
"@noResponse": {},
|
"@noResponse": {},
|
||||||
"noResults": "Sonuç Yok",
|
"noResults": "Sonuç Yok",
|
||||||
"@noResults": {},
|
"@noResults": {},
|
||||||
"noImageAvailable": "Kullanılabilir resim yok",
|
"noImageAvailable": "Görsel yok",
|
||||||
"@noImageAvailable": {},
|
"@noImageAvailable": {},
|
||||||
"noPricingAvailable": "Fiyatlandırma mevcut değil",
|
"noPricingAvailable": "Fiyatlandırma mevcut değil",
|
||||||
"@noPricingAvailable": {},
|
"@noPricingAvailable": {},
|
||||||
|
|
@ -588,9 +588,9 @@
|
||||||
"@orientationPortrait": {},
|
"@orientationPortrait": {},
|
||||||
"orientationSystem": "Sistem",
|
"orientationSystem": "Sistem",
|
||||||
"@orientationSystem": {},
|
"@orientationSystem": {},
|
||||||
"outstanding": "Beklemede",
|
"outstanding": "Açık",
|
||||||
"@outstanding": {},
|
"@outstanding": {},
|
||||||
"outstandingOrderDetail": "Bekleyen siparişleri göster",
|
"outstandingOrderDetail": "Açık siparişleri göster",
|
||||||
"@outstandingOrderDetail": {},
|
"@outstandingOrderDetail": {},
|
||||||
"overdue": "Gecikmede",
|
"overdue": "Gecikmede",
|
||||||
"@overdue": {},
|
"@overdue": {},
|
||||||
|
|
@ -602,7 +602,7 @@
|
||||||
"@packageName": {},
|
"@packageName": {},
|
||||||
"parameters": "Parametreler",
|
"parameters": "Parametreler",
|
||||||
"@parameters": {},
|
"@parameters": {},
|
||||||
"parametersSettingDetail": "Parça parametrelerini göster",
|
"parametersSettingDetail": "Parça parametrelerini görüntüle",
|
||||||
"@parametersSettingDetail": {},
|
"@parametersSettingDetail": {},
|
||||||
"parent": "Üst",
|
"parent": "Üst",
|
||||||
"@parent": {},
|
"@parent": {},
|
||||||
|
|
@ -624,7 +624,7 @@
|
||||||
"@parts": {
|
"@parts": {
|
||||||
"description": "Part (multiple)"
|
"description": "Part (multiple)"
|
||||||
},
|
},
|
||||||
"partNotSalable": "Parça satılabilir olarak imlenmemiş",
|
"partNotSalable": "Parça satılabilir olarak işaretli değil",
|
||||||
"@partNotSalable": {},
|
"@partNotSalable": {},
|
||||||
"partsNone": "Parça Yok",
|
"partsNone": "Parça Yok",
|
||||||
"@partsNone": {},
|
"@partsNone": {},
|
||||||
|
|
@ -636,7 +636,7 @@
|
||||||
"@pricingSettingDetail": {},
|
"@pricingSettingDetail": {},
|
||||||
"partSettings": "Parça Ayarları",
|
"partSettings": "Parça Ayarları",
|
||||||
"@partSettings": {},
|
"@partSettings": {},
|
||||||
"partsStarred": "Sürekli Gelen parçalar",
|
"partsStarred": "Takip Edilen Parçalar",
|
||||||
"@partsStarred": {},
|
"@partsStarred": {},
|
||||||
"partsStarredNone": "Yıldızlı parça yok",
|
"partsStarredNone": "Yıldızlı parça yok",
|
||||||
"@partsStarredNone": {},
|
"@partsStarredNone": {},
|
||||||
|
|
@ -648,7 +648,7 @@
|
||||||
"@partCategoryTopLevel": {},
|
"@partCategoryTopLevel": {},
|
||||||
"partCategories": "Parça Kategorileri",
|
"partCategories": "Parça Kategorileri",
|
||||||
"@partCategories": {},
|
"@partCategories": {},
|
||||||
"partDetails": "Parça detayları",
|
"partDetails": "Parça Ayrıntıları",
|
||||||
"@partDetails": {},
|
"@partDetails": {},
|
||||||
"partNotes": "Parça notları",
|
"partNotes": "Parça notları",
|
||||||
"@partNotes": {},
|
"@partNotes": {},
|
||||||
|
|
@ -710,15 +710,15 @@
|
||||||
"@projectCode": {},
|
"@projectCode": {},
|
||||||
"purchaseOrderConfirmScan": "Tarama Verisini Onayla",
|
"purchaseOrderConfirmScan": "Tarama Verisini Onayla",
|
||||||
"@purchaseOrderConfirmScan": {},
|
"@purchaseOrderConfirmScan": {},
|
||||||
"purchaseOrderConfirmScanDetail": "Taranan Ürünlerin Detaylarını Onayla",
|
"purchaseOrderConfirmScanDetail": "Kalemleri tararken ayrıntıları onayla",
|
||||||
"@purchaseOrderConfirmScanDetail": {},
|
"@purchaseOrderConfirmScanDetail": {},
|
||||||
"purchaseOrderEnable": "Satın Alma Emirlerini Etkinleştir",
|
"purchaseOrderEnable": "Satın Alma Siparişlerini Etkinleştir",
|
||||||
"@purchaseOrderEnable": {},
|
"@purchaseOrderEnable": {},
|
||||||
"purchaseOrderEnableDetail": "Satın Alma Emirlerinin İşlevselliğini Etkinleştir",
|
"purchaseOrderEnableDetail": "Satın Alma Emirlerinin İşlevselliğini Etkinleştir",
|
||||||
"@purchaseOrderEnableDetail": {},
|
"@purchaseOrderEnableDetail": {},
|
||||||
"purchaseOrderShowCamera": "Kamera Kısayolu",
|
"purchaseOrderShowCamera": "Kamera Kısayolu",
|
||||||
"@purchaseOrderShowCamera": {},
|
"@purchaseOrderShowCamera": {},
|
||||||
"purchaseOrderShowCameraDetail": "Satın alma emirleri ekranında fotoğraf yükleme kısayolunu etkinleştir",
|
"purchaseOrderShowCameraDetail": "Satın alma siparişi ekranında görsel yükleme kısayolunu etkinleştir",
|
||||||
"@purchaseOrderShowCameraDetail": {},
|
"@purchaseOrderShowCameraDetail": {},
|
||||||
"purchaseOrder": "Satınalma Siparişi",
|
"purchaseOrder": "Satınalma Siparişi",
|
||||||
"@purchaseOrder": {},
|
"@purchaseOrder": {},
|
||||||
|
|
@ -728,7 +728,7 @@
|
||||||
"@purchaseOrderEdit": {},
|
"@purchaseOrderEdit": {},
|
||||||
"purchaseOrderSettings": "Satın Alma Emri Ayarları",
|
"purchaseOrderSettings": "Satın Alma Emri Ayarları",
|
||||||
"@purchaseOrderSettings": {},
|
"@purchaseOrderSettings": {},
|
||||||
"purchaseOrders": "Satınalma Siparişleri",
|
"purchaseOrders": "Satın Alma Siparişleri",
|
||||||
"@purchaseOrders": {},
|
"@purchaseOrders": {},
|
||||||
"purchaseOrderUpdated": "Satın Alma Siparişi güncellendi",
|
"purchaseOrderUpdated": "Satın Alma Siparişi güncellendi",
|
||||||
"@purchaseOrderUpdated": {},
|
"@purchaseOrderUpdated": {},
|
||||||
|
|
@ -750,13 +750,13 @@
|
||||||
"@queryEmpty": {},
|
"@queryEmpty": {},
|
||||||
"queryNoResults": "Sorgu için sonuç yok",
|
"queryNoResults": "Sorgu için sonuç yok",
|
||||||
"@queryNoResults": {},
|
"@queryNoResults": {},
|
||||||
"received": "Alınan",
|
"received": "Teslim Alındı",
|
||||||
"@received": {},
|
"@received": {},
|
||||||
"receivedFilterDetail": "Alınan ögeleri göster",
|
"receivedFilterDetail": "Teslim alınan kalemleri göster",
|
||||||
"@receivedFilterDetail": {},
|
"@receivedFilterDetail": {},
|
||||||
"receiveItem": "Alınan Öğeler",
|
"receiveItem": "Kalemi Teslim Al",
|
||||||
"@receiveItem": {},
|
"@receiveItem": {},
|
||||||
"receivedItem": "Alınan stok parçaları",
|
"receivedItem": "Teslim alınan stok kalemleri",
|
||||||
"@receivedItem": {},
|
"@receivedItem": {},
|
||||||
"reference": "Referans",
|
"reference": "Referans",
|
||||||
"@reference": {},
|
"@reference": {},
|
||||||
|
|
@ -838,13 +838,13 @@
|
||||||
"@salesOrder": {},
|
"@salesOrder": {},
|
||||||
"salesOrders": "Satış Siparişleri",
|
"salesOrders": "Satış Siparişleri",
|
||||||
"@salesOrders": {},
|
"@salesOrders": {},
|
||||||
"salesOrderEnable": "Satış Emirlerini Etkinleştir",
|
"salesOrderEnable": "Satış Siparişlerini Etkinleştir",
|
||||||
"@salesOrderEnable": {},
|
"@salesOrderEnable": {},
|
||||||
"salesOrderEnableDetail": "Satış Siparişlerinin İşlevselliğini Etkinleştir",
|
"salesOrderEnableDetail": "Satış Siparişlerinin İşlevselliğini Etkinleştir",
|
||||||
"@salesOrderEnableDetail": {},
|
"@salesOrderEnableDetail": {},
|
||||||
"salesOrderShowCamera": "Kamera Kısayolu",
|
"salesOrderShowCamera": "Kamera Kısayolu",
|
||||||
"@salesOrderShowCamera": {},
|
"@salesOrderShowCamera": {},
|
||||||
"salesOrderShowCameraDetail": "Satış emirleri ekranında fotoğraf yükleme kısayolunu etkinleştir",
|
"salesOrderShowCameraDetail": "Satış siparişi ekranında görsel yükleme kısayolunu etkinleştir",
|
||||||
"@salesOrderShowCameraDetail": {},
|
"@salesOrderShowCameraDetail": {},
|
||||||
"salesOrderSettings": "Satış emirleri ayarları",
|
"salesOrderSettings": "Satış emirleri ayarları",
|
||||||
"@salesOrderSettings": {},
|
"@salesOrderSettings": {},
|
||||||
|
|
@ -860,7 +860,7 @@
|
||||||
},
|
},
|
||||||
"scanBarcode": "Barkod Tara",
|
"scanBarcode": "Barkod Tara",
|
||||||
"@scanBarcode": {},
|
"@scanBarcode": {},
|
||||||
"scanSupplierPart": "Sağlayıcı parça barkodunu tara",
|
"scanSupplierPart": "Tedarikçi parça barkodunu tara",
|
||||||
"@scanSupplierPart": {},
|
"@scanSupplierPart": {},
|
||||||
"scanIntoLocation": "Konuma Tara",
|
"scanIntoLocation": "Konuma Tara",
|
||||||
"@scanIntoLocation": {},
|
"@scanIntoLocation": {},
|
||||||
|
|
@ -870,7 +870,7 @@
|
||||||
"@scannerExternal": {},
|
"@scannerExternal": {},
|
||||||
"scannerExternalDetail": "Barkodları okumak için harici tarayıcı kullan (keyboard wedge modu)",
|
"scannerExternalDetail": "Barkodları okumak için harici tarayıcı kullan (keyboard wedge modu)",
|
||||||
"@scannerExternalDetail": {},
|
"@scannerExternalDetail": {},
|
||||||
"scanReceivedParts": "Alınan Parçaları Tara",
|
"scanReceivedParts": "Teslim Alınan Parçaları Tara",
|
||||||
"@scanReceivedParts": {},
|
"@scanReceivedParts": {},
|
||||||
"search": "Ara",
|
"search": "Ara",
|
||||||
"@search": {
|
"@search": {
|
||||||
|
|
@ -888,7 +888,7 @@
|
||||||
"@select": {},
|
"@select": {},
|
||||||
"selectFile": "Dosya Seç",
|
"selectFile": "Dosya Seç",
|
||||||
"@selectFile": {},
|
"@selectFile": {},
|
||||||
"selectImage": "Resim Seç",
|
"selectImage": "Görsel Seç",
|
||||||
"@selectImage": {},
|
"@selectImage": {},
|
||||||
"selectLocation": "Bir yer seçin",
|
"selectLocation": "Bir yer seçin",
|
||||||
"@selectLocation": {},
|
"@selectLocation": {},
|
||||||
|
|
@ -922,7 +922,7 @@
|
||||||
"@serverEmpty": {},
|
"@serverEmpty": {},
|
||||||
"serverError": "Sunucu Hatası",
|
"serverError": "Sunucu Hatası",
|
||||||
"@serverError": {},
|
"@serverError": {},
|
||||||
"serverDetails": "Sunucu Detayları",
|
"serverDetails": "Sunucu Ayrıntıları",
|
||||||
"@serverDetails": {},
|
"@serverDetails": {},
|
||||||
"serverMissingData": "Sunucu yanıtında gerekli alanlar eksik",
|
"serverMissingData": "Sunucu yanıtında gerekli alanlar eksik",
|
||||||
"@serverMissingData": {},
|
"@serverMissingData": {},
|
||||||
|
|
@ -948,11 +948,11 @@
|
||||||
"@shipmentsPending": {},
|
"@shipmentsPending": {},
|
||||||
"shipmentAdd": "Gönderi Ekle",
|
"shipmentAdd": "Gönderi Ekle",
|
||||||
"@shipmentAdd": {},
|
"@shipmentAdd": {},
|
||||||
"shipmentCheck": "Teslimatı Kontrol Et",
|
"shipmentCheck": "Sevkiyatı Kontrol Et",
|
||||||
"@shipmentCheck": {},
|
"@shipmentCheck": {},
|
||||||
"shipmentCheckDetail": "Bu teslimatı kontrol edildi olarak işaretle",
|
"shipmentCheckDetail": "Bu sevkiyatı kontrol edildi olarak işaretle",
|
||||||
"@shipmentCheckDetail": {},
|
"@shipmentCheckDetail": {},
|
||||||
"shipmentChecked": "Teslimat Kontrol Edildi",
|
"shipmentChecked": "Sevkiyat Kontrol Edildi",
|
||||||
"@shipmentChecked": {},
|
"@shipmentChecked": {},
|
||||||
"shipmentDate": "Teslimat Tarihi",
|
"shipmentDate": "Teslimat Tarihi",
|
||||||
"@shipmentDate": {},
|
"@shipmentDate": {},
|
||||||
|
|
@ -962,7 +962,7 @@
|
||||||
"@shipmentReference": {},
|
"@shipmentReference": {},
|
||||||
"shipmentSend": "Teslimatı Gönder",
|
"shipmentSend": "Teslimatı Gönder",
|
||||||
"@shipmentSend": {},
|
"@shipmentSend": {},
|
||||||
"shipmentUncheck": "Teslimat İşaretini Kaldır",
|
"shipmentUncheck": "Sevkiyat Kontrolünü Kaldır",
|
||||||
"@shipmentUncheck": {},
|
"@shipmentUncheck": {},
|
||||||
"shipmentUncheckDetail": "Bu teslimatı kontrol edilmedi olarak işaretle",
|
"shipmentUncheckDetail": "Bu teslimatı kontrol edilmedi olarak işaretle",
|
||||||
"@shipmentUncheckDetail": {},
|
"@shipmentUncheckDetail": {},
|
||||||
|
|
@ -998,25 +998,25 @@
|
||||||
"@stockItems": {},
|
"@stockItems": {},
|
||||||
"stockItemCreate": "Yeni Stok Kalemi",
|
"stockItemCreate": "Yeni Stok Kalemi",
|
||||||
"@stockItemCreate": {},
|
"@stockItemCreate": {},
|
||||||
"stockItemCreateDetail": "Bu konuma yeni stok kalemi oluştur",
|
"stockItemCreateDetail": "Bu konumda yeni stok kalemi oluştur",
|
||||||
"@stockItemCreateDetail": {},
|
"@stockItemCreateDetail": {},
|
||||||
"stockItemDelete": "Stok parçasını sil",
|
"stockItemDelete": "Stok parçasını sil",
|
||||||
"@stockItemDelete": {},
|
"@stockItemDelete": {},
|
||||||
"stockItemDeleteConfirm": "Bu stock ögesini silmek istediğinize emin misiniz?",
|
"stockItemDeleteConfirm": "Bu stok kalemini silmek istediğinize emin misiniz?",
|
||||||
"@stockItemDeleteConfirm": {},
|
"@stockItemDeleteConfirm": {},
|
||||||
"stockItemDeleteFailure": "Stok parçası silinemedi",
|
"stockItemDeleteFailure": "Stok kalemi silinemedi",
|
||||||
"@stockItemDeleteFailure": {},
|
"@stockItemDeleteFailure": {},
|
||||||
"stockItemDeleteSuccess": "Stok ögesi silindi",
|
"stockItemDeleteSuccess": "Stok kalemi silindi",
|
||||||
"@stockItemDeleteSuccess": {},
|
"@stockItemDeleteSuccess": {},
|
||||||
"stockItemHistory": "Stok Geçmişi",
|
"stockItemHistory": "Stok Geçmişi",
|
||||||
"@stockItemHistory": {},
|
"@stockItemHistory": {},
|
||||||
"stockItemHistoryDetail": "Geçmiş stok takip bilgisini göster",
|
"stockItemHistoryDetail": "Geçmiş stok takip bilgisini görüntüle",
|
||||||
"@stockItemHistoryDetail": {},
|
"@stockItemHistoryDetail": {},
|
||||||
"stockItemTransferred": "Stok ögesi aktarıldı",
|
"stockItemTransferred": "Stok kalemi aktarıldı",
|
||||||
"@stockItemTransferred": {},
|
"@stockItemTransferred": {},
|
||||||
"stockItemUpdated": "Stok ögesi güncellendi",
|
"stockItemUpdated": "Stok kalemi güncellendi",
|
||||||
"@stockItemUpdated": {},
|
"@stockItemUpdated": {},
|
||||||
"stockItemsNotAvailable": "Kullanılabilir stok ögesi yok",
|
"stockItemsNotAvailable": "Stok kalemi bulunmamaktadır",
|
||||||
"@stockItemsNotAvailable": {},
|
"@stockItemsNotAvailable": {},
|
||||||
"stockItemNotes": "Stok Kalemi Notları",
|
"stockItemNotes": "Stok Kalemi Notları",
|
||||||
"@stockItemNotes": {},
|
"@stockItemNotes": {},
|
||||||
|
|
@ -1056,11 +1056,11 @@
|
||||||
"@supplier": {},
|
"@supplier": {},
|
||||||
"supplierPart": "Tedarikçi Parçası",
|
"supplierPart": "Tedarikçi Parçası",
|
||||||
"@supplierPart": {},
|
"@supplierPart": {},
|
||||||
"supplierPartEdit": "Sağlayıcı Parçasını Düzenle",
|
"supplierPartEdit": "Tedarikçi Parçasını Düzenle",
|
||||||
"@supplierPartEdit": {},
|
"@supplierPartEdit": {},
|
||||||
"supplierPartNumber": "Sağlayıcı Parça Numarası",
|
"supplierPartNumber": "Tedarikçi Parça Numarası",
|
||||||
"@supplierPartNumber": {},
|
"@supplierPartNumber": {},
|
||||||
"supplierPartUpdated": "Sağlayıcı Parçası Güncellendi",
|
"supplierPartUpdated": "Tedarikçi Parçası Güncellendi",
|
||||||
"@supplierPartUpdated": {},
|
"@supplierPartUpdated": {},
|
||||||
"supplierParts": "Tedarikçi Parçaları",
|
"supplierParts": "Tedarikçi Parçaları",
|
||||||
"@supplierParts": {},
|
"@supplierParts": {},
|
||||||
|
|
@ -1086,7 +1086,7 @@
|
||||||
"@testResults": {
|
"@testResults": {
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"testResultsDetail": "Stok ögesi test sonuçlarını görüntüle",
|
"testResultsDetail": "Stok kalemi test sonuçlarını görüntüle",
|
||||||
"@testResultsDetail": {},
|
"@testResultsDetail": {},
|
||||||
"testResultAdd": "Test Sonucu Ekle",
|
"testResultAdd": "Test Sonucu Ekle",
|
||||||
"@testResultAdd": {},
|
"@testResultAdd": {},
|
||||||
|
|
@ -1148,7 +1148,7 @@
|
||||||
"@uploadFailed": {},
|
"@uploadFailed": {},
|
||||||
"uploadSuccess": "Dosya yüklendi",
|
"uploadSuccess": "Dosya yüklendi",
|
||||||
"@uploadSuccess": {},
|
"@uploadSuccess": {},
|
||||||
"uploadImage": "Resim Yükleyin",
|
"uploadImage": "Görsel Yükle",
|
||||||
"@uploadImage": {},
|
"@uploadImage": {},
|
||||||
"usedIn": "Burada Kullanıldı",
|
"usedIn": "Burada Kullanıldı",
|
||||||
"@usedIn": {},
|
"@usedIn": {},
|
||||||
|
|
@ -1166,7 +1166,7 @@
|
||||||
"@valueCannotBeEmpty": {},
|
"@valueCannotBeEmpty": {},
|
||||||
"valueRequired": "Değer gereklidir",
|
"valueRequired": "Değer gereklidir",
|
||||||
"@valueRequired": {},
|
"@valueRequired": {},
|
||||||
"variants": "Türevler",
|
"variants": "Varyantlar",
|
||||||
"@variants": {},
|
"@variants": {},
|
||||||
"version": "Sürüm",
|
"version": "Sürüm",
|
||||||
"@version": {},
|
"@version": {},
|
||||||
|
|
@ -1188,13 +1188,13 @@
|
||||||
"@salePrice": {},
|
"@salePrice": {},
|
||||||
"saleHistory": "Satış Geçmişi",
|
"saleHistory": "Satış Geçmişi",
|
||||||
"@saleHistory": {},
|
"@saleHistory": {},
|
||||||
"supplierPricing": "Sağlayıcı Fiyatlandırması",
|
"supplierPricing": "Tedarikçi Fiyatlandırması",
|
||||||
"@supplierPricing": {},
|
"@supplierPricing": {},
|
||||||
"bomCost": "BoM Maliyeti",
|
"bomCost": "BoM Maliyeti",
|
||||||
"@bomCost": {},
|
"@bomCost": {},
|
||||||
"internalCost": "Dahili Maliyet",
|
"internalCost": "Dahili Maliyet",
|
||||||
"@internalCost": {},
|
"@internalCost": {},
|
||||||
"variantCost": "Türev Maliyeti",
|
"variantCost": "Varyant Maliyeti",
|
||||||
"@variantCost": {},
|
"@variantCost": {},
|
||||||
"overallPricing": "Genel Fiyatlandırma",
|
"overallPricing": "Genel Fiyatlandırma",
|
||||||
"@overallPricing": {},
|
"@overallPricing": {},
|
||||||
|
|
@ -1202,6 +1202,6 @@
|
||||||
"@pricingOverrides": {},
|
"@pricingOverrides": {},
|
||||||
"currency": "Para Birimi",
|
"currency": "Para Birimi",
|
||||||
"@currency": {},
|
"@currency": {},
|
||||||
"priceBreaks": "Fiyat Aralığı",
|
"priceBreaks": "Fiyat Kademeleri",
|
||||||
"@priceBreaks": {}
|
"@priceBreaks": {}
|
||||||
}
|
}
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
"@aspectRatioSquare": {},
|
"@aspectRatioSquare": {},
|
||||||
"allocateStock": "Виділити запас",
|
"allocateStock": "Виділити запас",
|
||||||
"@allocateStock": {},
|
"@allocateStock": {},
|
||||||
"allocatedStock": "Allocated Stock",
|
"allocatedStock": "Виділений Запас",
|
||||||
"@allocatedStock": {},
|
"@allocatedStock": {},
|
||||||
"appReleaseNotes": "Показати примітки до випуску",
|
"appReleaseNotes": "Показати примітки до випуску",
|
||||||
"@appReleaseNotes": {},
|
"@appReleaseNotes": {},
|
||||||
|
|
@ -102,7 +102,7 @@
|
||||||
"@barcodeReceivePart": {},
|
"@barcodeReceivePart": {},
|
||||||
"barcodeScanPaused": "Сканування штрих-кодів призупинено",
|
"barcodeScanPaused": "Сканування штрих-кодів призупинено",
|
||||||
"@barodeScanPaused": {},
|
"@barodeScanPaused": {},
|
||||||
"barcodeScanPause": "Tap to pause scanning",
|
"barcodeScanPause": "Торкніться або утримуйте, щоб призупинити сканування",
|
||||||
"@barcodeScanPause": {},
|
"@barcodeScanPause": {},
|
||||||
"barcodeScanAssign": "Сканувати щоб призначити штрих-код",
|
"barcodeScanAssign": "Сканувати щоб призначити штрих-код",
|
||||||
"@barcodeScanAssign": {},
|
"@barcodeScanAssign": {},
|
||||||
|
|
@ -228,11 +228,11 @@
|
||||||
"@delete": {},
|
"@delete": {},
|
||||||
"deleteFailed": "Помилка видалення",
|
"deleteFailed": "Помилка видалення",
|
||||||
"@deleteFailed": {},
|
"@deleteFailed": {},
|
||||||
"deleteImageConfirmation": "Are you sure you want to delete this image?",
|
"deleteImageConfirmation": "Ви дійсно хочете видалити це зображення?",
|
||||||
"@deleteImageConfirmation": {},
|
"@deleteImageConfirmation": {},
|
||||||
"deleteImageTooltip": "Delete Image",
|
"deleteImageTooltip": "Видалити Зображення",
|
||||||
"@deleteImageTooltip": {},
|
"@deleteImageTooltip": {},
|
||||||
"deleteImage": "Delete Image",
|
"deleteImage": "Видалити Зображення",
|
||||||
"@deleteImage": {},
|
"@deleteImage": {},
|
||||||
"deletePart": "Видалити деталь",
|
"deletePart": "Видалити деталь",
|
||||||
"@deletePart": {},
|
"@deletePart": {},
|
||||||
|
|
@ -240,7 +240,7 @@
|
||||||
"@deletePartDetail": {},
|
"@deletePartDetail": {},
|
||||||
"deleteSuccess": "Операція видалення пройшла успішно",
|
"deleteSuccess": "Операція видалення пройшла успішно",
|
||||||
"@deleteSuccess": {},
|
"@deleteSuccess": {},
|
||||||
"deliveryDate": "Delivery Date",
|
"deliveryDate": "Дата Доставки",
|
||||||
"@deliveryDate": {},
|
"@deliveryDate": {},
|
||||||
"description": "Опис",
|
"description": "Опис",
|
||||||
"@description": {},
|
"@description": {},
|
||||||
|
|
@ -384,9 +384,9 @@
|
||||||
"@homeShowPo": {},
|
"@homeShowPo": {},
|
||||||
"homeShowPoDescription": "Показувати кнопку замовлення на домашньому екрані",
|
"homeShowPoDescription": "Показувати кнопку замовлення на домашньому екрані",
|
||||||
"@homeShowPoDescription": {},
|
"@homeShowPoDescription": {},
|
||||||
"homeShowShipments": "Show Shipments",
|
"homeShowShipments": "Показати відправлення",
|
||||||
"@homeShowShipments": {},
|
"@homeShowShipments": {},
|
||||||
"homeShowShipmentsDescription": "Show pending shipments on the home screen",
|
"homeShowShipmentsDescription": "Показати відкладені відправлення на головному екрані",
|
||||||
"@homeShowShipmentsDescription": {},
|
"@homeShowShipmentsDescription": {},
|
||||||
"homeShowSo": "Показати замовлення",
|
"homeShowSo": "Показати замовлення",
|
||||||
"@homeShowSo": {},
|
"@homeShowSo": {},
|
||||||
|
|
@ -454,15 +454,15 @@
|
||||||
"@invalidSupplierPart": {},
|
"@invalidSupplierPart": {},
|
||||||
"invalidUsernamePassword": "Неправильна комбінація імені користувача та пароля",
|
"invalidUsernamePassword": "Неправильна комбінація імені користувача та пароля",
|
||||||
"@invalidUsernamePassword": {},
|
"@invalidUsernamePassword": {},
|
||||||
"invoice": "Invoice",
|
"invoice": "Інвойс",
|
||||||
"@invoice": {},
|
"@invoice": {},
|
||||||
"invoiceNumber": "Invoice Number",
|
"invoiceNumber": "Номер Інвойсу",
|
||||||
"@invoiceNumber": {},
|
"@invoiceNumber": {},
|
||||||
"issue": "Issue",
|
"issue": "Видача",
|
||||||
"@issue": {},
|
"@issue": {},
|
||||||
"issueDate": "Issue Date",
|
"issueDate": "Дата Видачі",
|
||||||
"@issueDate": {},
|
"@issueDate": {},
|
||||||
"issueOrder": "Issue Order",
|
"issueOrder": "Оформити Замовлення",
|
||||||
"@issueOrder": {},
|
"@issueOrder": {},
|
||||||
"itemInLocation": "Товар вже на місці",
|
"itemInLocation": "Товар вже на місці",
|
||||||
"@itemInLocation": {},
|
"@itemInLocation": {},
|
||||||
|
|
@ -472,9 +472,9 @@
|
||||||
"@itemUpdated": {},
|
"@itemUpdated": {},
|
||||||
"keywords": "Ключові слова",
|
"keywords": "Ключові слова",
|
||||||
"@keywords": {},
|
"@keywords": {},
|
||||||
"labelDriver": "Label Driver",
|
"labelDriver": "Драйвер Етикеток",
|
||||||
"@labelDriver": {},
|
"@labelDriver": {},
|
||||||
"labelSelectDriver": "Select Label Printer Driver",
|
"labelSelectDriver": "Вибрати Драйвер Принтера Етикеток",
|
||||||
"@labelSelectDriver": {},
|
"@labelSelectDriver": {},
|
||||||
"labelPrinting": "Друк Ярликів",
|
"labelPrinting": "Друк Ярликів",
|
||||||
"@labelPrinting": {},
|
"@labelPrinting": {},
|
||||||
|
|
@ -482,9 +482,9 @@
|
||||||
"@labelPrintingDetail": {},
|
"@labelPrintingDetail": {},
|
||||||
"labelTemplate": "Шаблон Ярлика",
|
"labelTemplate": "Шаблон Ярлика",
|
||||||
"@labelTemplate": {},
|
"@labelTemplate": {},
|
||||||
"labelSelectTemplate": "Select Label Template",
|
"labelSelectTemplate": "Вибрати Шаблон Етикетки",
|
||||||
"@labelSelectTemplate": {},
|
"@labelSelectTemplate": {},
|
||||||
"labelSelectPrinter": "Select Label Printer",
|
"labelSelectPrinter": "Вибрати Принтер Етикеток",
|
||||||
"@labelSelectPrinter": {},
|
"@labelSelectPrinter": {},
|
||||||
"language": "Мова",
|
"language": "Мова",
|
||||||
"@language": {},
|
"@language": {},
|
||||||
|
|
@ -492,19 +492,19 @@
|
||||||
"@languageDefault": {},
|
"@languageDefault": {},
|
||||||
"languageSelect": "Вибір мови",
|
"languageSelect": "Вибір мови",
|
||||||
"@languageSelect": {},
|
"@languageSelect": {},
|
||||||
"lastStocktake": "Last Stocktake",
|
"lastStocktake": "Остання інвентаризація",
|
||||||
"@lastStocktake": {},
|
"@lastStocktake": {},
|
||||||
"lastUpdated": "Останнє оновлення",
|
"lastUpdated": "Останнє оновлення",
|
||||||
"@lastUpdated": {},
|
"@lastUpdated": {},
|
||||||
"level": "Рівень",
|
"level": "Рівень",
|
||||||
"@level": {},
|
"@level": {},
|
||||||
"lineItemAdd": "Add Line Item",
|
"lineItemAdd": "Додати Позицію",
|
||||||
"@lineItemAdd": {},
|
"@lineItemAdd": {},
|
||||||
"lineItem": "Line Item",
|
"lineItem": "Позиція",
|
||||||
"@lineItem": {},
|
"@lineItem": {},
|
||||||
"lineItems": "Line Items",
|
"lineItems": "Позиції",
|
||||||
"@lineItems": {},
|
"@lineItems": {},
|
||||||
"lineItemUpdated": "Line item updated",
|
"lineItemUpdated": "Позицію оновлено",
|
||||||
"@lineItemUpdated": {},
|
"@lineItemUpdated": {},
|
||||||
"locateItem": "Знайти елемент запасів",
|
"locateItem": "Знайти елемент запасів",
|
||||||
"@locateItem": {},
|
"@locateItem": {},
|
||||||
|
|
@ -514,7 +514,7 @@
|
||||||
"@locationCreate": {},
|
"@locationCreate": {},
|
||||||
"locationCreateDetail": "Створити нове розташування на складі",
|
"locationCreateDetail": "Створити нове розташування на складі",
|
||||||
"@locationCreateDetail": {},
|
"@locationCreateDetail": {},
|
||||||
"locationDefault": "Default Location",
|
"locationDefault": "Розташування за замовчуванням",
|
||||||
"@locationDefault": {},
|
"@locationDefault": {},
|
||||||
"locationNotSet": "Розташування не вказано",
|
"locationNotSet": "Розташування не вказано",
|
||||||
"@locationNotSet": {},
|
"@locationNotSet": {},
|
||||||
|
|
@ -544,9 +544,9 @@
|
||||||
"@missingData": {},
|
"@missingData": {},
|
||||||
"name": "Назва",
|
"name": "Назва",
|
||||||
"@name": {},
|
"@name": {},
|
||||||
"no": "No",
|
"no": "Ні",
|
||||||
"@no": {},
|
"@no": {},
|
||||||
"notApplicable": "N/A",
|
"notApplicable": "Н/Д",
|
||||||
"@notApplicable": {},
|
"@notApplicable": {},
|
||||||
"notConnected": "Не під’єднано",
|
"notConnected": "Не під’єднано",
|
||||||
"@notConnected": {},
|
"@notConnected": {},
|
||||||
|
|
@ -564,19 +564,19 @@
|
||||||
"@noResults": {},
|
"@noResults": {},
|
||||||
"noImageAvailable": "Немає доступного зображення",
|
"noImageAvailable": "Немає доступного зображення",
|
||||||
"@noImageAvailable": {},
|
"@noImageAvailable": {},
|
||||||
"noPricingAvailable": "No pricing available",
|
"noPricingAvailable": "Ціни не вказано",
|
||||||
"@noPricingAvailable": {},
|
"@noPricingAvailable": {},
|
||||||
"noPricingDataFound": "No pricing data found for this part",
|
"noPricingDataFound": "Для цієї деталі не знайдено даних про ціну",
|
||||||
"@noPricingDataFound": {},
|
"@noPricingDataFound": {},
|
||||||
"noSubcategories": "No Subcategories",
|
"noSubcategories": "Немає Підкатегорій",
|
||||||
"@noSubcategories": {},
|
"@noSubcategories": {},
|
||||||
"noSubcategoriesAvailable": "No subcategories available",
|
"noSubcategoriesAvailable": "Немає доступних підкатегорій",
|
||||||
"@noSubcategoriesAvailable": {},
|
"@noSubcategoriesAvailable": {},
|
||||||
"numberInvalid": "Некоректний номер",
|
"numberInvalid": "Некоректний номер",
|
||||||
"@numberInvalid": {},
|
"@numberInvalid": {},
|
||||||
"onOrder": "On Order",
|
"onOrder": "У замовленні",
|
||||||
"@onOrder": {},
|
"@onOrder": {},
|
||||||
"onOrderDetails": "Items currently on order",
|
"onOrderDetails": "Позиції в поточних замовленнях",
|
||||||
"@onOrderDetails": {},
|
"@onOrderDetails": {},
|
||||||
"orientation": "Орієнтація екрана",
|
"orientation": "Орієнтація екрана",
|
||||||
"@orientation": {},
|
"@orientation": {},
|
||||||
|
|
@ -632,7 +632,7 @@
|
||||||
"@partNoResults": {},
|
"@partNoResults": {},
|
||||||
"partPricing": "Ціна деталі",
|
"partPricing": "Ціна деталі",
|
||||||
"@partPricing": {},
|
"@partPricing": {},
|
||||||
"partPricingSettingDetail": "Display part pricing information",
|
"partPricingSettingDetail": "Відображати інформацію про ціни на деталь",
|
||||||
"@pricingSettingDetail": {},
|
"@pricingSettingDetail": {},
|
||||||
"partSettings": "Налаштування позиції",
|
"partSettings": "Налаштування позиції",
|
||||||
"@partSettings": {},
|
"@partSettings": {},
|
||||||
|
|
@ -652,7 +652,7 @@
|
||||||
"@partDetails": {},
|
"@partDetails": {},
|
||||||
"partNotes": "Примітки до позиції",
|
"partNotes": "Примітки до позиції",
|
||||||
"@partNotes": {},
|
"@partNotes": {},
|
||||||
"partStock": "Part Stock",
|
"partStock": "Наявність На Складі",
|
||||||
"@partStock": {
|
"@partStock": {
|
||||||
"description": "part stock"
|
"description": "part stock"
|
||||||
},
|
},
|
||||||
|
|
@ -660,7 +660,7 @@
|
||||||
"@password": {},
|
"@password": {},
|
||||||
"passwordEmpty": "Пароль не може бути порожнім",
|
"passwordEmpty": "Пароль не може бути порожнім",
|
||||||
"@passwordEmpty": {},
|
"@passwordEmpty": {},
|
||||||
"pending": "Pending",
|
"pending": "В очікуванні",
|
||||||
"@pending": {},
|
"@pending": {},
|
||||||
"permissionAccountDenied": "Ваш обліковий запис не має необхідних прав для виконання цієї дії",
|
"permissionAccountDenied": "Ваш обліковий запис не має необхідних прав для виконання цієї дії",
|
||||||
"@permissionAccountDenied": {},
|
"@permissionAccountDenied": {},
|
||||||
|
|
@ -712,27 +712,27 @@
|
||||||
"@purchaseOrderConfirmScan": {},
|
"@purchaseOrderConfirmScan": {},
|
||||||
"purchaseOrderConfirmScanDetail": "Підтвердити подробиці при скануванні в позицій",
|
"purchaseOrderConfirmScanDetail": "Підтвердити подробиці при скануванні в позицій",
|
||||||
"@purchaseOrderConfirmScanDetail": {},
|
"@purchaseOrderConfirmScanDetail": {},
|
||||||
"purchaseOrderEnable": "Enable Purchase Orders",
|
"purchaseOrderEnable": "Увімкнути Закупівлю",
|
||||||
"@purchaseOrderEnable": {},
|
"@purchaseOrderEnable": {},
|
||||||
"purchaseOrderEnableDetail": "Enable purchase order functionality",
|
"purchaseOrderEnableDetail": "Увімкнути функціонал закупівлі",
|
||||||
"@purchaseOrderEnableDetail": {},
|
"@purchaseOrderEnableDetail": {},
|
||||||
"purchaseOrderShowCamera": "Camera Shortcut",
|
"purchaseOrderShowCamera": "Швидкий Доступ до Камери",
|
||||||
"@purchaseOrderShowCamera": {},
|
"@purchaseOrderShowCamera": {},
|
||||||
"purchaseOrderShowCameraDetail": "Enable image upload shortcut on purchase order screen",
|
"purchaseOrderShowCameraDetail": "Увімкнути ярлик для завантаження зображень на екрані закупівель",
|
||||||
"@purchaseOrderShowCameraDetail": {},
|
"@purchaseOrderShowCameraDetail": {},
|
||||||
"purchaseOrder": "Purchase Order",
|
"purchaseOrder": "Замовлення на Закупівлю",
|
||||||
"@purchaseOrder": {},
|
"@purchaseOrder": {},
|
||||||
"purchaseOrderCreate": "New Purchase Order",
|
"purchaseOrderCreate": "Нове Замовлення на Закупівлю",
|
||||||
"@purchaseOrderCreate": {},
|
"@purchaseOrderCreate": {},
|
||||||
"purchaseOrderEdit": "Edit Purchase Order",
|
"purchaseOrderEdit": "Редагувати Замовлення на Закупівлю",
|
||||||
"@purchaseOrderEdit": {},
|
"@purchaseOrderEdit": {},
|
||||||
"purchaseOrderSettings": "Purchase order settings",
|
"purchaseOrderSettings": "Налаштування замовлення на закупівлю",
|
||||||
"@purchaseOrderSettings": {},
|
"@purchaseOrderSettings": {},
|
||||||
"purchaseOrders": "Purchase Orders",
|
"purchaseOrders": "Закупівлі",
|
||||||
"@purchaseOrders": {},
|
"@purchaseOrders": {},
|
||||||
"purchaseOrderUpdated": "Purchase order updated",
|
"purchaseOrderUpdated": "Замовлення на закупівлю оновлено",
|
||||||
"@purchaseOrderUpdated": {},
|
"@purchaseOrderUpdated": {},
|
||||||
"purchasePrice": "Purchase Price",
|
"purchasePrice": "Закупівельна Ціна",
|
||||||
"@purchasePrice": {},
|
"@purchasePrice": {},
|
||||||
"quantity": "Кількість",
|
"quantity": "Кількість",
|
||||||
"@quantity": {
|
"@quantity": {
|
||||||
|
|
@ -740,7 +740,7 @@
|
||||||
},
|
},
|
||||||
"quantityAvailable": "Доступна кількість",
|
"quantityAvailable": "Доступна кількість",
|
||||||
"@quantityAvailable": {},
|
"@quantityAvailable": {},
|
||||||
"quantityEmpty": "Quantity is empty",
|
"quantityEmpty": "Кількість не вказана",
|
||||||
"@quantityEmpty": {},
|
"@quantityEmpty": {},
|
||||||
"quantityInvalid": "Некоректна кількість",
|
"quantityInvalid": "Некоректна кількість",
|
||||||
"@quantityInvalid": {},
|
"@quantityInvalid": {},
|
||||||
|
|
@ -752,13 +752,13 @@
|
||||||
"@queryNoResults": {},
|
"@queryNoResults": {},
|
||||||
"received": "Отримано",
|
"received": "Отримано",
|
||||||
"@received": {},
|
"@received": {},
|
||||||
"receivedFilterDetail": "Show received items",
|
"receivedFilterDetail": "Показувати отримані позиції",
|
||||||
"@receivedFilterDetail": {},
|
"@receivedFilterDetail": {},
|
||||||
"receiveItem": "Receive Item",
|
"receiveItem": "Прийняти Позицію",
|
||||||
"@receiveItem": {},
|
"@receiveItem": {},
|
||||||
"receivedItem": "Received Stock Item",
|
"receivedItem": "Отримана Складська Позиція",
|
||||||
"@receivedItem": {},
|
"@receivedItem": {},
|
||||||
"reference": "Reference",
|
"reference": "Номер документа",
|
||||||
"@reference": {},
|
"@reference": {},
|
||||||
"refresh": "Оновити",
|
"refresh": "Оновити",
|
||||||
"@refresh": {},
|
"@refresh": {},
|
||||||
|
|
@ -766,7 +766,7 @@
|
||||||
"@rotateClockwise": {},
|
"@rotateClockwise": {},
|
||||||
"refreshing": "Оновлення",
|
"refreshing": "Оновлення",
|
||||||
"@refreshing": {},
|
"@refreshing": {},
|
||||||
"rejected": "Rejected",
|
"rejected": "Відхилено",
|
||||||
"@rejected": {},
|
"@rejected": {},
|
||||||
"releaseNotes": "Замітки до випуску",
|
"releaseNotes": "Замітки до випуску",
|
||||||
"@releaseNotes": {},
|
"@releaseNotes": {},
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@
|
||||||
"@barcodeReceivePart": {},
|
"@barcodeReceivePart": {},
|
||||||
"barcodeScanPaused": "条形码扫描已暂停",
|
"barcodeScanPaused": "条形码扫描已暂停",
|
||||||
"@barodeScanPaused": {},
|
"@barodeScanPaused": {},
|
||||||
"barcodeScanPause": "Tap to pause scanning",
|
"barcodeScanPause": "点击以暂停扫描",
|
||||||
"@barcodeScanPause": {},
|
"@barcodeScanPause": {},
|
||||||
"barcodeScanAssign": "扫描以分配条形码",
|
"barcodeScanAssign": "扫描以分配条形码",
|
||||||
"@barcodeScanAssign": {},
|
"@barcodeScanAssign": {},
|
||||||
|
|
@ -472,9 +472,9 @@
|
||||||
"@itemUpdated": {},
|
"@itemUpdated": {},
|
||||||
"keywords": "关键词",
|
"keywords": "关键词",
|
||||||
"@keywords": {},
|
"@keywords": {},
|
||||||
"labelDriver": "Label Driver",
|
"labelDriver": "标签打印机",
|
||||||
"@labelDriver": {},
|
"@labelDriver": {},
|
||||||
"labelSelectDriver": "Select Label Printer Driver",
|
"labelSelectDriver": "选择标签打印机",
|
||||||
"@labelSelectDriver": {},
|
"@labelSelectDriver": {},
|
||||||
"labelPrinting": "打印标签",
|
"labelPrinting": "打印标签",
|
||||||
"@labelPrinting": {},
|
"@labelPrinting": {},
|
||||||
|
|
@ -514,7 +514,7 @@
|
||||||
"@locationCreate": {},
|
"@locationCreate": {},
|
||||||
"locationCreateDetail": "创建新库存地点",
|
"locationCreateDetail": "创建新库存地点",
|
||||||
"@locationCreateDetail": {},
|
"@locationCreateDetail": {},
|
||||||
"locationDefault": "Default Location",
|
"locationDefault": "默认位置",
|
||||||
"@locationDefault": {},
|
"@locationDefault": {},
|
||||||
"locationNotSet": "没有指定仓储位置",
|
"locationNotSet": "没有指定仓储位置",
|
||||||
"@locationNotSet": {},
|
"@locationNotSet": {},
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,6 @@ const String INV_LABEL_DEFAULT_PRINTER = "defaultLabelPrinter";
|
||||||
const String INV_LABEL_DEFAULT_PLUGIN = "defaultLabelPlugin";
|
const String INV_LABEL_DEFAULT_PLUGIN = "defaultLabelPlugin";
|
||||||
|
|
||||||
// Part settings
|
// Part settings
|
||||||
const String INV_PART_SHOW_PARAMETERS = "partShowParameters";
|
|
||||||
const String INV_PART_SHOW_BOM = "partShowBom";
|
const String INV_PART_SHOW_BOM = "partShowBom";
|
||||||
const String INV_PART_SHOW_PRICING = "partShowPricing";
|
const String INV_PART_SHOW_PRICING = "partShowPricing";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ class InvenTreePartSettingsWidget extends StatefulWidget {
|
||||||
class _InvenTreePartSettingsState extends State<InvenTreePartSettingsWidget> {
|
class _InvenTreePartSettingsState extends State<InvenTreePartSettingsWidget> {
|
||||||
_InvenTreePartSettingsState();
|
_InvenTreePartSettingsState();
|
||||||
|
|
||||||
bool partShowParameters = true;
|
|
||||||
bool partShowBom = true;
|
bool partShowBom = true;
|
||||||
bool partShowPricing = true;
|
bool partShowPricing = true;
|
||||||
bool stockShowHistory = false;
|
bool stockShowHistory = false;
|
||||||
|
|
@ -28,10 +27,6 @@ class _InvenTreePartSettingsState extends State<InvenTreePartSettingsWidget> {
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> loadSettings() async {
|
Future<void> loadSettings() async {
|
||||||
partShowParameters = await InvenTreeSettingsManager().getBool(
|
|
||||||
INV_PART_SHOW_PARAMETERS,
|
|
||||||
true,
|
|
||||||
);
|
|
||||||
partShowBom = await InvenTreeSettingsManager().getBool(
|
partShowBom = await InvenTreeSettingsManager().getBool(
|
||||||
INV_PART_SHOW_BOM,
|
INV_PART_SHOW_BOM,
|
||||||
true,
|
true,
|
||||||
|
|
@ -68,23 +63,6 @@ class _InvenTreePartSettingsState extends State<InvenTreePartSettingsWidget> {
|
||||||
body: Container(
|
body: Container(
|
||||||
child: ListView(
|
child: ListView(
|
||||||
children: [
|
children: [
|
||||||
ListTile(
|
|
||||||
title: Text(L10().parameters),
|
|
||||||
subtitle: Text(L10().parametersSettingDetail),
|
|
||||||
leading: Icon(TablerIcons.list),
|
|
||||||
trailing: Switch(
|
|
||||||
value: partShowParameters,
|
|
||||||
onChanged: (bool value) {
|
|
||||||
InvenTreeSettingsManager().setValue(
|
|
||||||
INV_PART_SHOW_PARAMETERS,
|
|
||||||
value,
|
|
||||||
);
|
|
||||||
setState(() {
|
|
||||||
partShowParameters = value;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
ListTile(
|
ListTile(
|
||||||
title: Text(L10().bom),
|
title: Text(L10().bom),
|
||||||
subtitle: Text(L10().bomEnable),
|
subtitle: Text(L10().bomEnable),
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,13 @@ import "dart:io";
|
||||||
|
|
||||||
import "package:flutter/material.dart";
|
import "package:flutter/material.dart";
|
||||||
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
||||||
|
import "package:inventree/api.dart";
|
||||||
|
import "package:inventree/inventree/attachment.dart";
|
||||||
|
import "package:inventree/widget/link_icon.dart";
|
||||||
import "package:one_context/one_context.dart";
|
import "package:one_context/one_context.dart";
|
||||||
|
|
||||||
import "package:inventree/api.dart";
|
|
||||||
import "package:inventree/l10.dart";
|
import "package:inventree/l10.dart";
|
||||||
import "package:inventree/app_colors.dart";
|
import "package:inventree/app_colors.dart";
|
||||||
|
|
||||||
import "package:inventree/inventree/model.dart";
|
|
||||||
|
|
||||||
import "package:inventree/widget/fields.dart";
|
import "package:inventree/widget/fields.dart";
|
||||||
import "package:inventree/widget/progress.dart";
|
import "package:inventree/widget/progress.dart";
|
||||||
import "package:inventree/widget/snacks.dart";
|
import "package:inventree/widget/snacks.dart";
|
||||||
|
|
@ -23,13 +22,13 @@ import "package:inventree/widget/refreshable_state.dart";
|
||||||
*/
|
*/
|
||||||
class AttachmentWidget extends StatefulWidget {
|
class AttachmentWidget extends StatefulWidget {
|
||||||
const AttachmentWidget(
|
const AttachmentWidget(
|
||||||
this.attachmentClass,
|
this.modelType,
|
||||||
this.modelId,
|
this.modelId,
|
||||||
this.imagePrefix,
|
this.imagePrefix,
|
||||||
this.hasUploadPermission,
|
this.hasUploadPermission,
|
||||||
) : super();
|
) : super();
|
||||||
|
|
||||||
final InvenTreeAttachment attachmentClass;
|
final String modelType;
|
||||||
final int modelId;
|
final int modelId;
|
||||||
final bool hasUploadPermission;
|
final bool hasUploadPermission;
|
||||||
final String imagePrefix;
|
final String imagePrefix;
|
||||||
|
|
@ -54,15 +53,15 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: Icon(TablerIcons.camera),
|
icon: Icon(TablerIcons.camera),
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
widget.attachmentClass.uploadImage(
|
InvenTreeAttachment()
|
||||||
|
.uploadImage(
|
||||||
|
widget.modelType,
|
||||||
widget.modelId,
|
widget.modelId,
|
||||||
prefix: widget.imagePrefix,
|
prefix: widget.imagePrefix,
|
||||||
);
|
)
|
||||||
FilePickerDialog.pickImageFromCamera().then((File? file) {
|
.then((_) {
|
||||||
upload(context, file).then((_) {
|
|
||||||
refresh(context);
|
refresh(context);
|
||||||
});
|
});
|
||||||
});
|
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
IconButton(
|
IconButton(
|
||||||
|
|
@ -83,8 +82,9 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
|
||||||
|
|
||||||
showLoadingOverlay();
|
showLoadingOverlay();
|
||||||
|
|
||||||
final bool result = await widget.attachmentClass.uploadAttachment(
|
final bool result = await InvenTreeAttachment().uploadAttachment(
|
||||||
file,
|
file,
|
||||||
|
widget.modelType,
|
||||||
widget.modelId,
|
widget.modelId,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -168,25 +168,24 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
|
||||||
Future<void> request(BuildContext context) async {
|
Future<void> request(BuildContext context) async {
|
||||||
Map<String, String> filters = {};
|
Map<String, String> filters = {};
|
||||||
|
|
||||||
if (InvenTreeAPI().supportsModernAttachments) {
|
filters["model_type"] = widget.modelType;
|
||||||
filters["model_type"] = widget.attachmentClass.REF_MODEL_TYPE;
|
|
||||||
filters["model_id"] = widget.modelId.toString();
|
filters["model_id"] = widget.modelId.toString();
|
||||||
} else {
|
|
||||||
filters[widget.attachmentClass.REFERENCE_FIELD] = widget.modelId
|
|
||||||
.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
await widget.attachmentClass.list(filters: filters).then((var results) {
|
List<InvenTreeAttachment> _attachments = [];
|
||||||
attachments.clear();
|
|
||||||
|
|
||||||
|
InvenTreeAttachment().list(filters: filters).then((var results) {
|
||||||
for (var result in results) {
|
for (var result in results) {
|
||||||
if (result is InvenTreeAttachment) {
|
if (result is InvenTreeAttachment) {
|
||||||
attachments.add(result);
|
_attachments.add(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mounted) {
|
||||||
|
setState(() {
|
||||||
|
attachments = _attachments;
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
setState(() {});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -240,3 +239,40 @@ class _AttachmentWidgetState extends RefreshableState<AttachmentWidget> {
|
||||||
return tiles;
|
return tiles;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return a ListTile to display attachments for the specified model
|
||||||
|
*/
|
||||||
|
ListTile? ShowAttachmentsItem(
|
||||||
|
BuildContext context,
|
||||||
|
String modelType,
|
||||||
|
int modelId,
|
||||||
|
String imagePrefix,
|
||||||
|
int attachmentCount,
|
||||||
|
bool hasUploadPermission,
|
||||||
|
) {
|
||||||
|
if (!InvenTreeAPI().supportsModernAttachments) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ListTile(
|
||||||
|
title: Text(L10().attachments),
|
||||||
|
leading: Icon(TablerIcons.file, color: COLOR_ACTION),
|
||||||
|
trailing: LinkIcon(
|
||||||
|
text: attachmentCount > 0 ? attachmentCount.toString() : null,
|
||||||
|
),
|
||||||
|
onTap: () {
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => AttachmentWidget(
|
||||||
|
modelType,
|
||||||
|
modelId,
|
||||||
|
imagePrefix,
|
||||||
|
hasUploadPermission,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
import "package:flutter/material.dart";
|
import "package:flutter/material.dart";
|
||||||
import "package:flutter_speed_dial/flutter_speed_dial.dart";
|
import "package:flutter_speed_dial/flutter_speed_dial.dart";
|
||||||
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
||||||
|
import "package:inventree/inventree/attachment.dart";
|
||||||
|
import "package:inventree/inventree/parameter.dart";
|
||||||
|
|
||||||
import "package:inventree/l10.dart";
|
import "package:inventree/l10.dart";
|
||||||
import "package:inventree/api.dart";
|
import "package:inventree/api.dart";
|
||||||
|
|
@ -13,6 +15,7 @@ import "package:inventree/widget/attachment_widget.dart";
|
||||||
import "package:inventree/widget/link_icon.dart";
|
import "package:inventree/widget/link_icon.dart";
|
||||||
import "package:inventree/widget/order/purchase_order_list.dart";
|
import "package:inventree/widget/order/purchase_order_list.dart";
|
||||||
import "package:inventree/widget/order/sales_order_list.dart";
|
import "package:inventree/widget/order/sales_order_list.dart";
|
||||||
|
import "package:inventree/widget/parameter_widget.dart";
|
||||||
import "package:inventree/widget/refreshable_state.dart";
|
import "package:inventree/widget/refreshable_state.dart";
|
||||||
import "package:inventree/widget/snacks.dart";
|
import "package:inventree/widget/snacks.dart";
|
||||||
import "package:inventree/widget/company/supplier_part_list.dart";
|
import "package:inventree/widget/company/supplier_part_list.dart";
|
||||||
|
|
@ -37,6 +40,7 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
|
||||||
int outstandingPurchaseOrders = 0;
|
int outstandingPurchaseOrders = 0;
|
||||||
int outstandingSalesOrders = 0;
|
int outstandingSalesOrders = 0;
|
||||||
|
|
||||||
|
int parameterCount = 0;
|
||||||
int attachmentCount = 0;
|
int attachmentCount = 0;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -184,9 +188,19 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
InvenTreeCompanyAttachment().countAttachments(widget.company.pk).then((
|
InvenTreeParameter()
|
||||||
value,
|
.countParameters(InvenTreeCompany.MODEL_TYPE, widget.company.pk)
|
||||||
) {
|
.then((value) {
|
||||||
|
if (mounted) {
|
||||||
|
setState(() {
|
||||||
|
parameterCount = value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
InvenTreeAttachment()
|
||||||
|
.countAttachments(InvenTreeCompany.MODEL_TYPE, widget.company.pk)
|
||||||
|
.then((value) {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
setState(() {
|
setState(() {
|
||||||
attachmentCount = value;
|
attachmentCount = value;
|
||||||
|
|
@ -393,29 +407,31 @@ class _CompanyDetailState extends RefreshableState<CompanyDetailWidget> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
tiles.add(
|
ListTile? parameterTile = ShowParametersItem(
|
||||||
ListTile(
|
|
||||||
title: Text(L10().attachments),
|
|
||||||
leading: Icon(TablerIcons.file, color: COLOR_ACTION),
|
|
||||||
trailing: LinkIcon(
|
|
||||||
text: attachmentCount > 0 ? attachmentCount.toString() : null,
|
|
||||||
),
|
|
||||||
onTap: () {
|
|
||||||
Navigator.push(
|
|
||||||
context,
|
context,
|
||||||
MaterialPageRoute(
|
InvenTreeCompany.MODEL_TYPE,
|
||||||
builder: (context) => AttachmentWidget(
|
widget.company.pk,
|
||||||
InvenTreeCompanyAttachment(),
|
parameterCount,
|
||||||
|
widget.company.canEdit,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (parameterTile != null) {
|
||||||
|
tiles.add(parameterTile);
|
||||||
|
}
|
||||||
|
|
||||||
|
ListTile? attachmentTile = ShowAttachmentsItem(
|
||||||
|
context,
|
||||||
|
InvenTreeCompany.MODEL_TYPE,
|
||||||
widget.company.pk,
|
widget.company.pk,
|
||||||
widget.company.name,
|
widget.company.name,
|
||||||
InvenTreeCompany().canEdit,
|
attachmentCount,
|
||||||
),
|
widget.company.canEdit,
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (attachmentTile != null) {
|
||||||
|
tiles.add(attachmentTile);
|
||||||
|
}
|
||||||
|
|
||||||
return tiles;
|
return tiles;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
import "package:flutter/material.dart";
|
import "package:flutter/material.dart";
|
||||||
import "package:flutter_speed_dial/flutter_speed_dial.dart";
|
import "package:flutter_speed_dial/flutter_speed_dial.dart";
|
||||||
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
||||||
|
import "package:inventree/inventree/attachment.dart";
|
||||||
|
import "package:inventree/inventree/parameter.dart";
|
||||||
|
|
||||||
import "package:inventree/l10.dart";
|
import "package:inventree/l10.dart";
|
||||||
import "package:inventree/api.dart";
|
import "package:inventree/api.dart";
|
||||||
|
|
@ -8,6 +10,8 @@ import "package:inventree/app_colors.dart";
|
||||||
|
|
||||||
import "package:inventree/inventree/company.dart";
|
import "package:inventree/inventree/company.dart";
|
||||||
import "package:inventree/inventree/part.dart";
|
import "package:inventree/inventree/part.dart";
|
||||||
|
import "package:inventree/widget/attachment_widget.dart";
|
||||||
|
import "package:inventree/widget/parameter_widget.dart";
|
||||||
|
|
||||||
import "package:inventree/widget/refreshable_state.dart";
|
import "package:inventree/widget/refreshable_state.dart";
|
||||||
import "package:inventree/widget/snacks.dart";
|
import "package:inventree/widget/snacks.dart";
|
||||||
|
|
@ -31,6 +35,9 @@ class _ManufacturerPartDisplayState
|
||||||
extends RefreshableState<ManufacturerPartDetailWidget> {
|
extends RefreshableState<ManufacturerPartDetailWidget> {
|
||||||
_ManufacturerPartDisplayState();
|
_ManufacturerPartDisplayState();
|
||||||
|
|
||||||
|
int parameterCount = 0;
|
||||||
|
int attachmentCount = 0;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String getAppBarTitle() => L10().manufacturerPart;
|
String getAppBarTitle() => L10().manufacturerPart;
|
||||||
|
|
||||||
|
|
@ -42,7 +49,34 @@ class _ManufacturerPartDisplayState
|
||||||
|
|
||||||
if (!result) {
|
if (!result) {
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
InvenTreeParameter()
|
||||||
|
.countParameters(
|
||||||
|
InvenTreeManufacturerPart.MODEL_TYPE,
|
||||||
|
widget.manufacturerPart.pk,
|
||||||
|
)
|
||||||
|
.then((value) {
|
||||||
|
if (mounted) {
|
||||||
|
setState(() {
|
||||||
|
parameterCount = value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
InvenTreeAttachment()
|
||||||
|
.countAttachments(
|
||||||
|
InvenTreeManufacturerPart.MODEL_TYPE,
|
||||||
|
widget.manufacturerPart.pk,
|
||||||
|
)
|
||||||
|
.then((value) {
|
||||||
|
if (mounted) {
|
||||||
|
setState(() {
|
||||||
|
attachmentCount = value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> editManufacturerPart(BuildContext context) async {
|
Future<void> editManufacturerPart(BuildContext context) async {
|
||||||
|
|
@ -91,11 +125,6 @@ class _ManufacturerPartDisplayState
|
||||||
List<Widget> getTiles(BuildContext context) {
|
List<Widget> getTiles(BuildContext context) {
|
||||||
List<Widget> tiles = [];
|
List<Widget> tiles = [];
|
||||||
|
|
||||||
if (loading) {
|
|
||||||
tiles.add(progressIndicator());
|
|
||||||
return tiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Internal Part
|
// Internal Part
|
||||||
tiles.add(
|
tiles.add(
|
||||||
ListTile(
|
ListTile(
|
||||||
|
|
@ -174,6 +203,31 @@ class _ManufacturerPartDisplayState
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ListTile? parameterTile = ShowParametersItem(
|
||||||
|
context,
|
||||||
|
InvenTreeManufacturerPart.MODEL_TYPE,
|
||||||
|
widget.manufacturerPart.pk,
|
||||||
|
parameterCount,
|
||||||
|
widget.manufacturerPart.canEdit,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (parameterTile != null) {
|
||||||
|
tiles.add(parameterTile);
|
||||||
|
}
|
||||||
|
|
||||||
|
ListTile? attachmentTile = ShowAttachmentsItem(
|
||||||
|
context,
|
||||||
|
InvenTreeManufacturerPart.MODEL_TYPE,
|
||||||
|
widget.manufacturerPart.pk,
|
||||||
|
widget.manufacturerPart.MPN,
|
||||||
|
attachmentCount,
|
||||||
|
widget.manufacturerPart.canEdit,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (attachmentTile != null) {
|
||||||
|
tiles.add(attachmentTile);
|
||||||
|
}
|
||||||
|
|
||||||
return tiles;
|
return tiles;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,9 @@ import "package:flutter/material.dart";
|
||||||
import "package:flutter_speed_dial/flutter_speed_dial.dart";
|
import "package:flutter_speed_dial/flutter_speed_dial.dart";
|
||||||
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
||||||
import "package:inventree/helpers.dart";
|
import "package:inventree/helpers.dart";
|
||||||
|
import "package:inventree/inventree/attachment.dart";
|
||||||
|
import "package:inventree/inventree/parameter.dart";
|
||||||
|
import "package:inventree/widget/attachment_widget.dart";
|
||||||
import "package:inventree/widget/link_icon.dart";
|
import "package:inventree/widget/link_icon.dart";
|
||||||
|
|
||||||
import "package:inventree/app_colors.dart";
|
import "package:inventree/app_colors.dart";
|
||||||
|
|
@ -11,6 +14,7 @@ import "package:inventree/barcode/barcode.dart";
|
||||||
|
|
||||||
import "package:inventree/inventree/part.dart";
|
import "package:inventree/inventree/part.dart";
|
||||||
import "package:inventree/inventree/company.dart";
|
import "package:inventree/inventree/company.dart";
|
||||||
|
import "package:inventree/widget/parameter_widget.dart";
|
||||||
|
|
||||||
import "package:inventree/widget/progress.dart";
|
import "package:inventree/widget/progress.dart";
|
||||||
import "package:inventree/widget/refreshable_state.dart";
|
import "package:inventree/widget/refreshable_state.dart";
|
||||||
|
|
@ -35,6 +39,9 @@ class _SupplierPartDisplayState
|
||||||
extends RefreshableState<SupplierPartDetailWidget> {
|
extends RefreshableState<SupplierPartDetailWidget> {
|
||||||
_SupplierPartDisplayState();
|
_SupplierPartDisplayState();
|
||||||
|
|
||||||
|
int parameterCount = 0;
|
||||||
|
int attachmentCount = 0;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String getAppBarTitle() => L10().supplierPart;
|
String getAppBarTitle() => L10().supplierPart;
|
||||||
|
|
||||||
|
|
@ -97,7 +104,34 @@ class _SupplierPartDisplayState
|
||||||
|
|
||||||
if (!result) {
|
if (!result) {
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
InvenTreeParameter()
|
||||||
|
.countParameters(
|
||||||
|
InvenTreeSupplierPart.MODEL_TYPE,
|
||||||
|
widget.supplierPart.pk,
|
||||||
|
)
|
||||||
|
.then((value) {
|
||||||
|
if (mounted) {
|
||||||
|
setState(() {
|
||||||
|
parameterCount = value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
InvenTreeAttachment()
|
||||||
|
.countAttachments(
|
||||||
|
InvenTreeSupplierPart.MODEL_TYPE,
|
||||||
|
widget.supplierPart.pk,
|
||||||
|
)
|
||||||
|
.then((value) {
|
||||||
|
if (mounted) {
|
||||||
|
setState(() {
|
||||||
|
attachmentCount = value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -286,6 +320,31 @@ class _SupplierPartDisplayState
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ListTile? parameterTile = ShowParametersItem(
|
||||||
|
context,
|
||||||
|
InvenTreeSupplierPart.MODEL_TYPE,
|
||||||
|
widget.supplierPart.pk,
|
||||||
|
parameterCount,
|
||||||
|
widget.supplierPart.canEdit,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (parameterTile != null) {
|
||||||
|
tiles.add(parameterTile);
|
||||||
|
}
|
||||||
|
|
||||||
|
ListTile? attachmentTile = ShowAttachmentsItem(
|
||||||
|
context,
|
||||||
|
InvenTreeSupplierPart.MODEL_TYPE,
|
||||||
|
widget.supplierPart.pk,
|
||||||
|
widget.supplierPart.SKU,
|
||||||
|
attachmentCount,
|
||||||
|
widget.supplierPart.canEdit,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (attachmentTile != null) {
|
||||||
|
tiles.add(attachmentTile);
|
||||||
|
}
|
||||||
|
|
||||||
return tiles;
|
return tiles;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ import "package:inventree/app_colors.dart";
|
||||||
import "package:inventree/barcode/barcode.dart";
|
import "package:inventree/barcode/barcode.dart";
|
||||||
import "package:inventree/barcode/purchase_order.dart";
|
import "package:inventree/barcode/purchase_order.dart";
|
||||||
import "package:inventree/helpers.dart";
|
import "package:inventree/helpers.dart";
|
||||||
|
import "package:inventree/inventree/attachment.dart";
|
||||||
|
import "package:inventree/inventree/parameter.dart";
|
||||||
import "package:inventree/l10.dart";
|
import "package:inventree/l10.dart";
|
||||||
|
|
||||||
import "package:inventree/inventree/model.dart";
|
import "package:inventree/inventree/model.dart";
|
||||||
|
|
@ -21,6 +23,7 @@ import "package:inventree/widget/order/po_line_list.dart";
|
||||||
|
|
||||||
import "package:inventree/widget/attachment_widget.dart";
|
import "package:inventree/widget/attachment_widget.dart";
|
||||||
import "package:inventree/widget/notes_widget.dart";
|
import "package:inventree/widget/notes_widget.dart";
|
||||||
|
import "package:inventree/widget/parameter_widget.dart";
|
||||||
import "package:inventree/widget/progress.dart";
|
import "package:inventree/widget/progress.dart";
|
||||||
import "package:inventree/widget/refreshable_state.dart";
|
import "package:inventree/widget/refreshable_state.dart";
|
||||||
import "package:inventree/widget/snacks.dart";
|
import "package:inventree/widget/snacks.dart";
|
||||||
|
|
@ -50,6 +53,7 @@ class _PurchaseOrderDetailState
|
||||||
|
|
||||||
int completedLines = 0;
|
int completedLines = 0;
|
||||||
int attachmentCount = 0;
|
int attachmentCount = 0;
|
||||||
|
int parameterCount = 0;
|
||||||
|
|
||||||
bool showCameraShortcut = true;
|
bool showCameraShortcut = true;
|
||||||
bool supportProjectCodes = false;
|
bool supportProjectCodes = false;
|
||||||
|
|
@ -174,8 +178,12 @@ class _PurchaseOrderDetailState
|
||||||
|
|
||||||
/// Upload an image against the current PurchaseOrder
|
/// Upload an image against the current PurchaseOrder
|
||||||
Future<void> _uploadImage(BuildContext context) async {
|
Future<void> _uploadImage(BuildContext context) async {
|
||||||
InvenTreePurchaseOrderAttachment()
|
InvenTreeAttachment()
|
||||||
.uploadImage(widget.order.pk, prefix: widget.order.reference)
|
.uploadImage(
|
||||||
|
InvenTreePurchaseOrder.MODEL_TYPE,
|
||||||
|
widget.order.pk,
|
||||||
|
prefix: widget.order.reference,
|
||||||
|
)
|
||||||
.then((result) => refresh(context));
|
.then((result) => refresh(context));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -295,9 +303,19 @@ class _PurchaseOrderDetailState
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
InvenTreePurchaseOrderAttachment().countAttachments(widget.order.pk).then((
|
InvenTreeParameter()
|
||||||
int value,
|
.countParameters(InvenTreePurchaseOrder.MODEL_TYPE, widget.order.pk)
|
||||||
) {
|
.then((int value) {
|
||||||
|
if (mounted) {
|
||||||
|
setState(() {
|
||||||
|
parameterCount = value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
InvenTreeAttachment()
|
||||||
|
.countAttachments(InvenTreePurchaseOrder.MODEL_TYPE, widget.order.pk)
|
||||||
|
.then((int value) {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
setState(() {
|
setState(() {
|
||||||
attachmentCount = value;
|
attachmentCount = value;
|
||||||
|
|
@ -565,30 +583,31 @@ class _PurchaseOrderDetailState
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
// Attachments
|
ListTile? parameterTile = ShowParametersItem(
|
||||||
tiles.add(
|
|
||||||
ListTile(
|
|
||||||
title: Text(L10().attachments),
|
|
||||||
leading: Icon(TablerIcons.file, color: COLOR_ACTION),
|
|
||||||
trailing: LinkIcon(
|
|
||||||
text: attachmentCount > 0 ? attachmentCount.toString() : null,
|
|
||||||
),
|
|
||||||
onTap: () {
|
|
||||||
Navigator.push(
|
|
||||||
context,
|
context,
|
||||||
MaterialPageRoute(
|
InvenTreePurchaseOrder.MODEL_TYPE,
|
||||||
builder: (context) => AttachmentWidget(
|
widget.order.pk,
|
||||||
InvenTreePurchaseOrderAttachment(),
|
parameterCount,
|
||||||
|
widget.order.canEdit,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (parameterTile != null) {
|
||||||
|
tiles.add(parameterTile);
|
||||||
|
}
|
||||||
|
|
||||||
|
ListTile? attachmentTile = ShowAttachmentsItem(
|
||||||
|
context,
|
||||||
|
InvenTreePurchaseOrder.MODEL_TYPE,
|
||||||
widget.order.pk,
|
widget.order.pk,
|
||||||
widget.order.reference,
|
widget.order.reference,
|
||||||
|
attachmentCount,
|
||||||
widget.order.canEdit,
|
widget.order.canEdit,
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (attachmentTile != null) {
|
||||||
|
tiles.add(attachmentTile);
|
||||||
|
}
|
||||||
|
|
||||||
return tiles;
|
return tiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,16 @@ import "package:flutter_speed_dial/flutter_speed_dial.dart";
|
||||||
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
||||||
import "package:inventree/barcode/barcode.dart";
|
import "package:inventree/barcode/barcode.dart";
|
||||||
import "package:inventree/barcode/sales_order.dart";
|
import "package:inventree/barcode/sales_order.dart";
|
||||||
|
import "package:inventree/inventree/attachment.dart";
|
||||||
import "package:inventree/inventree/company.dart";
|
import "package:inventree/inventree/company.dart";
|
||||||
|
import "package:inventree/inventree/parameter.dart";
|
||||||
import "package:inventree/inventree/sales_order.dart";
|
import "package:inventree/inventree/sales_order.dart";
|
||||||
import "package:inventree/preferences.dart";
|
import "package:inventree/preferences.dart";
|
||||||
import "package:inventree/widget/link_icon.dart";
|
import "package:inventree/widget/link_icon.dart";
|
||||||
import "package:inventree/widget/order/so_extra_line_list.dart";
|
import "package:inventree/widget/order/so_extra_line_list.dart";
|
||||||
import "package:inventree/widget/order/so_line_list.dart";
|
import "package:inventree/widget/order/so_line_list.dart";
|
||||||
import "package:inventree/widget/order/so_shipment_list.dart";
|
import "package:inventree/widget/order/so_shipment_list.dart";
|
||||||
|
import "package:inventree/widget/parameter_widget.dart";
|
||||||
import "package:inventree/widget/refreshable_state.dart";
|
import "package:inventree/widget/refreshable_state.dart";
|
||||||
|
|
||||||
import "package:inventree/l10.dart";
|
import "package:inventree/l10.dart";
|
||||||
|
|
@ -42,6 +45,7 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
|
||||||
bool showCameraShortcut = true;
|
bool showCameraShortcut = true;
|
||||||
bool supportsProjectCodes = false;
|
bool supportsProjectCodes = false;
|
||||||
int attachmentCount = 0;
|
int attachmentCount = 0;
|
||||||
|
int parameterCount = 0;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String getAppBarTitle() {
|
String getAppBarTitle() {
|
||||||
|
|
@ -108,8 +112,12 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
|
||||||
|
|
||||||
/// Upload an image for this order
|
/// Upload an image for this order
|
||||||
Future<void> _uploadImage(BuildContext context) async {
|
Future<void> _uploadImage(BuildContext context) async {
|
||||||
InvenTreeSalesOrderAttachment()
|
InvenTreeAttachment()
|
||||||
.uploadImage(widget.order.pk, prefix: widget.order.reference)
|
.uploadImage(
|
||||||
|
InvenTreeSalesOrder.MODEL_TYPE,
|
||||||
|
widget.order.pk,
|
||||||
|
prefix: widget.order.reference,
|
||||||
|
)
|
||||||
.then((result) => refresh(context));
|
.then((result) => refresh(context));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -266,9 +274,19 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
|
||||||
true,
|
true,
|
||||||
);
|
);
|
||||||
|
|
||||||
InvenTreeSalesOrderAttachment().countAttachments(widget.order.pk).then((
|
InvenTreeParameter()
|
||||||
int value,
|
.countParameters(InvenTreeSalesOrder.MODEL_TYPE, widget.order.pk)
|
||||||
) {
|
.then((int value) {
|
||||||
|
if (mounted) {
|
||||||
|
setState(() {
|
||||||
|
parameterCount = value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
InvenTreeAttachment()
|
||||||
|
.countAttachments(InvenTreeSalesOrder.MODEL_TYPE, widget.order.pk)
|
||||||
|
.then((int value) {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
setState(() {
|
setState(() {
|
||||||
attachmentCount = value;
|
attachmentCount = value;
|
||||||
|
|
@ -492,30 +510,31 @@ class _SalesOrderDetailState extends RefreshableState<SalesOrderDetailWidget> {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
// Attachments
|
ListTile? parameterTile = ShowParametersItem(
|
||||||
tiles.add(
|
|
||||||
ListTile(
|
|
||||||
title: Text(L10().attachments),
|
|
||||||
leading: Icon(TablerIcons.file, color: COLOR_ACTION),
|
|
||||||
trailing: LinkIcon(
|
|
||||||
text: attachmentCount > 0 ? attachmentCount.toString() : null,
|
|
||||||
),
|
|
||||||
onTap: () {
|
|
||||||
Navigator.push(
|
|
||||||
context,
|
context,
|
||||||
MaterialPageRoute(
|
InvenTreeSalesOrder.MODEL_TYPE,
|
||||||
builder: (context) => AttachmentWidget(
|
widget.order.pk,
|
||||||
InvenTreeSalesOrderAttachment(),
|
parameterCount,
|
||||||
|
widget.order.canEdit,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (parameterTile != null) {
|
||||||
|
tiles.add(parameterTile);
|
||||||
|
}
|
||||||
|
|
||||||
|
ListTile? attachmentTile = ShowAttachmentsItem(
|
||||||
|
context,
|
||||||
|
InvenTreeSalesOrder.MODEL_TYPE,
|
||||||
widget.order.pk,
|
widget.order.pk,
|
||||||
widget.order.reference,
|
widget.order.reference,
|
||||||
|
attachmentCount,
|
||||||
widget.order.canEdit,
|
widget.order.canEdit,
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (attachmentTile != null) {
|
||||||
|
tiles.add(attachmentTile);
|
||||||
|
}
|
||||||
|
|
||||||
return tiles;
|
return tiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
||||||
import "package:inventree/api.dart";
|
import "package:inventree/api.dart";
|
||||||
import "package:inventree/api_form.dart";
|
import "package:inventree/api_form.dart";
|
||||||
import "package:inventree/app_colors.dart";
|
import "package:inventree/app_colors.dart";
|
||||||
|
import "package:inventree/inventree/attachment.dart";
|
||||||
import "package:inventree/inventree/sales_order.dart";
|
import "package:inventree/inventree/sales_order.dart";
|
||||||
import "package:inventree/l10.dart";
|
import "package:inventree/l10.dart";
|
||||||
import "package:inventree/preferences.dart";
|
import "package:inventree/preferences.dart";
|
||||||
|
|
@ -91,8 +92,11 @@ class _SOShipmentDetailWidgetState
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
InvenTreeSalesOrderShipmentAttachment()
|
InvenTreeAttachment()
|
||||||
.countAttachments(widget.shipment.pk)
|
.countAttachments(
|
||||||
|
InvenTreeSalesOrderShipment.MODEL_TYPE,
|
||||||
|
widget.shipment.pk,
|
||||||
|
)
|
||||||
.then((int value) {
|
.then((int value) {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
setState(() {
|
setState(() {
|
||||||
|
|
@ -104,8 +108,12 @@ class _SOShipmentDetailWidgetState
|
||||||
|
|
||||||
/// Upload an image for this shipment
|
/// Upload an image for this shipment
|
||||||
Future<void> _uploadImage(BuildContext context) async {
|
Future<void> _uploadImage(BuildContext context) async {
|
||||||
InvenTreeSalesOrderShipmentAttachment()
|
InvenTreeAttachment()
|
||||||
.uploadImage(widget.shipment.pk, prefix: widget.shipment.reference)
|
.uploadImage(
|
||||||
|
InvenTreeSalesOrderShipment.MODEL_TYPE,
|
||||||
|
widget.shipment.pk,
|
||||||
|
prefix: widget.shipment.reference,
|
||||||
|
)
|
||||||
.then((result) => refresh(context));
|
.then((result) => refresh(context));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -339,30 +347,19 @@ class _SOShipmentDetailWidgetState
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
// Attachments
|
ListTile? attachmentTile = ShowAttachmentsItem(
|
||||||
tiles.add(
|
|
||||||
ListTile(
|
|
||||||
title: Text(L10().attachments),
|
|
||||||
leading: Icon(TablerIcons.file, color: COLOR_ACTION),
|
|
||||||
trailing: LinkIcon(
|
|
||||||
text: attachmentCount > 0 ? attachmentCount.toString() : null,
|
|
||||||
),
|
|
||||||
onTap: () {
|
|
||||||
Navigator.push(
|
|
||||||
context,
|
context,
|
||||||
MaterialPageRoute(
|
InvenTreeSalesOrderShipment.MODEL_TYPE,
|
||||||
builder: (context) => AttachmentWidget(
|
|
||||||
InvenTreeSalesOrderShipmentAttachment(),
|
|
||||||
widget.shipment.pk,
|
widget.shipment.pk,
|
||||||
widget.shipment.reference,
|
widget.shipment.reference,
|
||||||
|
attachmentCount,
|
||||||
widget.shipment.canEdit,
|
widget.shipment.canEdit,
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (attachmentTile != null) {
|
||||||
|
tiles.add(attachmentTile);
|
||||||
|
}
|
||||||
|
|
||||||
return tiles;
|
return tiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,12 @@
|
||||||
import "package:flutter/material.dart";
|
import "package:flutter/material.dart";
|
||||||
|
import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
||||||
|
import "package:inventree/api.dart";
|
||||||
|
import "package:inventree/app_colors.dart";
|
||||||
import "package:inventree/inventree/model.dart";
|
import "package:inventree/inventree/model.dart";
|
||||||
|
import "package:inventree/inventree/parameter.dart";
|
||||||
|
|
||||||
import "package:inventree/l10.dart";
|
import "package:inventree/l10.dart";
|
||||||
import "package:inventree/inventree/part.dart";
|
import "package:inventree/widget/link_icon.dart";
|
||||||
import "package:inventree/widget/paginator.dart";
|
import "package:inventree/widget/paginator.dart";
|
||||||
import "package:inventree/widget/progress.dart";
|
import "package:inventree/widget/progress.dart";
|
||||||
import "package:inventree/widget/refreshable_state.dart";
|
import "package:inventree/widget/refreshable_state.dart";
|
||||||
|
|
@ -10,16 +14,18 @@ import "package:inventree/widget/refreshable_state.dart";
|
||||||
/*
|
/*
|
||||||
* Widget for displaying a list of parameters associated with a given Part instance
|
* Widget for displaying a list of parameters associated with a given Part instance
|
||||||
*/
|
*/
|
||||||
class PartParameterWidget extends StatefulWidget {
|
class ParameterWidget extends StatefulWidget {
|
||||||
const PartParameterWidget(this.part);
|
const ParameterWidget(this.modelType, this.modelId, this.editable) : super();
|
||||||
|
|
||||||
final InvenTreePart part;
|
final String modelType;
|
||||||
|
final int modelId;
|
||||||
|
final bool editable;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_ParameterWidgetState createState() => _ParameterWidgetState();
|
_ParameterWidgetState createState() => _ParameterWidgetState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _ParameterWidgetState extends RefreshableState<PartParameterWidget> {
|
class _ParameterWidgetState extends RefreshableState<ParameterWidget> {
|
||||||
_ParameterWidgetState();
|
_ParameterWidgetState();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -34,9 +40,16 @@ class _ParameterWidgetState extends RefreshableState<PartParameterWidget> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget getBody(BuildContext context) {
|
Widget getBody(BuildContext context) {
|
||||||
Map<String, String> filters = {"part": widget.part.pk.toString()};
|
Map<String, String> filters = {
|
||||||
|
"model_type": widget.modelType,
|
||||||
|
"model_id": widget.modelId.toString(),
|
||||||
|
};
|
||||||
|
|
||||||
return Column(children: [Expanded(child: PaginatedParameterList(filters))]);
|
return Column(
|
||||||
|
children: [
|
||||||
|
Expanded(child: PaginatedParameterList(filters, widget.editable)),
|
||||||
|
],
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -44,9 +57,11 @@ class _ParameterWidgetState extends RefreshableState<PartParameterWidget> {
|
||||||
* Widget for displaying a paginated list of Part parameters
|
* Widget for displaying a paginated list of Part parameters
|
||||||
*/
|
*/
|
||||||
class PaginatedParameterList extends PaginatedSearchWidget {
|
class PaginatedParameterList extends PaginatedSearchWidget {
|
||||||
const PaginatedParameterList(Map<String, String> filters)
|
const PaginatedParameterList(Map<String, String> filters, this.editable)
|
||||||
: super(filters: filters);
|
: super(filters: filters);
|
||||||
|
|
||||||
|
final bool editable;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get searchTitle => L10().parameters;
|
String get searchTitle => L10().parameters;
|
||||||
|
|
||||||
|
|
@ -75,7 +90,7 @@ class _PaginatedParameterState
|
||||||
int offset,
|
int offset,
|
||||||
Map<String, String> params,
|
Map<String, String> params,
|
||||||
) async {
|
) async {
|
||||||
final page = await InvenTreePartParameter().listPaginated(
|
final page = await InvenTreeParameter().listPaginated(
|
||||||
limit,
|
limit,
|
||||||
offset,
|
offset,
|
||||||
filters: params,
|
filters: params,
|
||||||
|
|
@ -84,7 +99,7 @@ class _PaginatedParameterState
|
||||||
return page;
|
return page;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> editParameter(InvenTreePartParameter parameter) async {
|
Future<void> editParameter(InvenTreeParameter parameter) async {
|
||||||
// Checkbox values are handled separately
|
// Checkbox values are handled separately
|
||||||
if (parameter.is_checkbox) {
|
if (parameter.is_checkbox) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -101,7 +116,7 @@ class _PaginatedParameterState
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget buildItem(BuildContext context, InvenTreeModel model) {
|
Widget buildItem(BuildContext context, InvenTreeModel model) {
|
||||||
InvenTreePartParameter parameter = model as InvenTreePartParameter;
|
InvenTreeParameter parameter = model as InvenTreeParameter;
|
||||||
|
|
||||||
String title = parameter.name;
|
String title = parameter.name;
|
||||||
|
|
||||||
|
|
@ -116,7 +131,7 @@ class _PaginatedParameterState
|
||||||
? Switch(
|
? Switch(
|
||||||
value: parameter.as_bool,
|
value: parameter.as_bool,
|
||||||
onChanged: (bool value) {
|
onChanged: (bool value) {
|
||||||
if (parameter.canEdit) {
|
if (widget.editable) {
|
||||||
showLoadingOverlay();
|
showLoadingOverlay();
|
||||||
parameter.update(values: {"data": value.toString()}).then((
|
parameter.update(values: {"data": value.toString()}).then((
|
||||||
value,
|
value,
|
||||||
|
|
@ -131,10 +146,47 @@ class _PaginatedParameterState
|
||||||
onTap: parameter.is_checkbox
|
onTap: parameter.is_checkbox
|
||||||
? null
|
? null
|
||||||
: () async {
|
: () async {
|
||||||
if (parameter.canEdit) {
|
if (widget.editable) {
|
||||||
editParameter(parameter);
|
editParameter(parameter);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return a ListTile to display parameters for the specified model
|
||||||
|
*/
|
||||||
|
ListTile? ShowParametersItem(
|
||||||
|
BuildContext context,
|
||||||
|
String modelType,
|
||||||
|
int modelId,
|
||||||
|
int parameterCount,
|
||||||
|
bool editable,
|
||||||
|
) {
|
||||||
|
// Note: Currently cannot add parameters from the app,
|
||||||
|
// So, if there are no parameters, do not show the item
|
||||||
|
if (parameterCount == 0) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!InvenTreeAPI().supportsModernParameters) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ListTile(
|
||||||
|
title: Text(L10().parameters),
|
||||||
|
leading: Icon(TablerIcons.list_details, color: COLOR_ACTION),
|
||||||
|
trailing: LinkIcon(
|
||||||
|
text: parameterCount > 0 ? parameterCount.toString() : null,
|
||||||
|
),
|
||||||
|
onTap: () {
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => ParameterWidget(modelType, modelId, editable),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
@ -4,6 +4,8 @@ import "package:flutter_tabler_icons/flutter_tabler_icons.dart";
|
||||||
|
|
||||||
import "package:inventree/app_colors.dart";
|
import "package:inventree/app_colors.dart";
|
||||||
import "package:inventree/barcode/barcode.dart";
|
import "package:inventree/barcode/barcode.dart";
|
||||||
|
import "package:inventree/inventree/attachment.dart";
|
||||||
|
import "package:inventree/inventree/parameter.dart";
|
||||||
import "package:inventree/l10.dart";
|
import "package:inventree/l10.dart";
|
||||||
import "package:inventree/helpers.dart";
|
import "package:inventree/helpers.dart";
|
||||||
|
|
||||||
|
|
@ -15,10 +17,10 @@ import "package:inventree/preferences.dart";
|
||||||
|
|
||||||
import "package:inventree/widget/attachment_widget.dart";
|
import "package:inventree/widget/attachment_widget.dart";
|
||||||
import "package:inventree/widget/link_icon.dart";
|
import "package:inventree/widget/link_icon.dart";
|
||||||
|
import "package:inventree/widget/parameter_widget.dart";
|
||||||
import "package:inventree/widget/part/bom_list.dart";
|
import "package:inventree/widget/part/bom_list.dart";
|
||||||
import "package:inventree/widget/part/part_list.dart";
|
import "package:inventree/widget/part/part_list.dart";
|
||||||
import "package:inventree/widget/notes_widget.dart";
|
import "package:inventree/widget/notes_widget.dart";
|
||||||
import "package:inventree/widget/part/part_parameter_widget.dart";
|
|
||||||
import "package:inventree/widget/part/part_pricing.dart";
|
import "package:inventree/widget/part/part_pricing.dart";
|
||||||
import "package:inventree/widget/progress.dart";
|
import "package:inventree/widget/progress.dart";
|
||||||
import "package:inventree/widget/part/category_display.dart";
|
import "package:inventree/widget/part/category_display.dart";
|
||||||
|
|
@ -49,13 +51,11 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
|
||||||
|
|
||||||
InvenTreeStockLocation? defaultLocation;
|
InvenTreeStockLocation? defaultLocation;
|
||||||
|
|
||||||
int parameterCount = 0;
|
|
||||||
|
|
||||||
bool allowLabelPrinting = false;
|
bool allowLabelPrinting = false;
|
||||||
bool showParameters = false;
|
|
||||||
bool showBom = false;
|
bool showBom = false;
|
||||||
bool showPricing = false;
|
bool showPricing = false;
|
||||||
|
|
||||||
|
int parameterCount = 0;
|
||||||
int attachmentCount = 0;
|
int attachmentCount = 0;
|
||||||
int bomCount = 0;
|
int bomCount = 0;
|
||||||
int usedInCount = 0;
|
int usedInCount = 0;
|
||||||
|
|
@ -152,10 +152,6 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
|
||||||
INV_PART_SHOW_PRICING,
|
INV_PART_SHOW_PRICING,
|
||||||
true,
|
true,
|
||||||
);
|
);
|
||||||
showParameters = await InvenTreeSettingsManager().getBool(
|
|
||||||
INV_PART_SHOW_PARAMETERS,
|
|
||||||
true,
|
|
||||||
);
|
|
||||||
showBom = await InvenTreeSettingsManager().getBool(INV_PART_SHOW_BOM, true);
|
showBom = await InvenTreeSettingsManager().getBool(INV_PART_SHOW_BOM, true);
|
||||||
allowLabelPrinting = await InvenTreeSettingsManager().getBool(
|
allowLabelPrinting = await InvenTreeSettingsManager().getBool(
|
||||||
INV_ENABLE_LABEL_PRINTING,
|
INV_ENABLE_LABEL_PRINTING,
|
||||||
|
|
@ -212,13 +208,30 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Request the number of attachments
|
// Request the number of attachments
|
||||||
InvenTreePartAttachment().countAttachments(part.pk).then((int value) {
|
if (api.supportsModernAttachments) {
|
||||||
|
InvenTreeAttachment()
|
||||||
|
.countAttachments(InvenTreePart.MODEL_TYPE, part.pk)
|
||||||
|
.then((int value) {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
setState(() {
|
setState(() {
|
||||||
attachmentCount = value;
|
attachmentCount = value;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Request the number of parameters
|
||||||
|
if (api.supportsModernParameters) {
|
||||||
|
InvenTreeParameter()
|
||||||
|
.countParameters(InvenTreePart.MODEL_TYPE, part.pk)
|
||||||
|
.then((int value) {
|
||||||
|
if (mounted) {
|
||||||
|
setState(() {
|
||||||
|
parameterCount = value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// If show pricing information?
|
// If show pricing information?
|
||||||
if (showPricing) {
|
if (showPricing) {
|
||||||
|
|
@ -596,29 +609,31 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
tiles.add(
|
ListTile? parameterTile = ShowParametersItem(
|
||||||
ListTile(
|
|
||||||
title: Text(L10().attachments),
|
|
||||||
leading: Icon(TablerIcons.file, color: COLOR_ACTION),
|
|
||||||
trailing: LinkIcon(
|
|
||||||
text: attachmentCount > 0 ? attachmentCount.toString() : null,
|
|
||||||
),
|
|
||||||
onTap: () {
|
|
||||||
Navigator.push(
|
|
||||||
context,
|
context,
|
||||||
MaterialPageRoute(
|
InvenTreePart.MODEL_TYPE,
|
||||||
builder: (context) => AttachmentWidget(
|
part.pk,
|
||||||
InvenTreePartAttachment(),
|
parameterCount,
|
||||||
|
part.canEdit,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (parameterTile != null) {
|
||||||
|
tiles.add(parameterTile);
|
||||||
|
}
|
||||||
|
|
||||||
|
ListTile? attachmentTile = ShowAttachmentsItem(
|
||||||
|
context,
|
||||||
|
InvenTreePart.MODEL_TYPE,
|
||||||
part.pk,
|
part.pk,
|
||||||
L10().part,
|
L10().part,
|
||||||
|
attachmentCount,
|
||||||
part.canEdit,
|
part.canEdit,
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (attachmentTile != null) {
|
||||||
|
tiles.add(attachmentTile);
|
||||||
|
}
|
||||||
|
|
||||||
return tiles;
|
return tiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -712,10 +727,6 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
|
||||||
List<Widget> getTabIcons(BuildContext context) {
|
List<Widget> getTabIcons(BuildContext context) {
|
||||||
List<Widget> icons = [Tab(text: L10().details), Tab(text: L10().stock)];
|
List<Widget> icons = [Tab(text: L10().details), Tab(text: L10().stock)];
|
||||||
|
|
||||||
if (showParameters) {
|
|
||||||
icons.add(Tab(text: L10().parameters));
|
|
||||||
}
|
|
||||||
|
|
||||||
return icons;
|
return icons;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -728,11 +739,6 @@ class _PartDisplayState extends RefreshableState<PartDetailWidget> {
|
||||||
),
|
),
|
||||||
PaginatedStockItemList({"part": part.pk.toString()}),
|
PaginatedStockItemList({"part": part.pk.toString()}),
|
||||||
];
|
];
|
||||||
|
|
||||||
if (showParameters) {
|
|
||||||
tabs.add(PaginatedParameterList({"part": part.pk.toString()}));
|
|
||||||
}
|
|
||||||
|
|
||||||
return tabs;
|
return tabs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import "package:inventree/app_colors.dart";
|
||||||
import "package:inventree/barcode/barcode.dart";
|
import "package:inventree/barcode/barcode.dart";
|
||||||
import "package:inventree/barcode/stock.dart";
|
import "package:inventree/barcode/stock.dart";
|
||||||
import "package:inventree/helpers.dart";
|
import "package:inventree/helpers.dart";
|
||||||
|
import "package:inventree/inventree/attachment.dart";
|
||||||
import "package:inventree/inventree/sales_order.dart";
|
import "package:inventree/inventree/sales_order.dart";
|
||||||
import "package:inventree/l10.dart";
|
import "package:inventree/l10.dart";
|
||||||
import "package:inventree/api.dart";
|
import "package:inventree/api.dart";
|
||||||
|
|
@ -255,9 +256,9 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Request the number of attachments
|
// Request the number of attachments
|
||||||
InvenTreeStockItemAttachment().countAttachments(widget.item.pk).then((
|
InvenTreeAttachment()
|
||||||
int value,
|
.countAttachments(InvenTreeStockItem.MODEL_TYPE, widget.item.pk)
|
||||||
) {
|
.then((int value) {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
setState(() {
|
setState(() {
|
||||||
attachmentCount = value;
|
attachmentCount = value;
|
||||||
|
|
@ -837,29 +838,19 @@ class _StockItemDisplayState extends RefreshableState<StockDetailWidget> {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
tiles.add(
|
ListTile? attachmentTile = ShowAttachmentsItem(
|
||||||
ListTile(
|
|
||||||
title: Text(L10().attachments),
|
|
||||||
leading: Icon(TablerIcons.file, color: COLOR_ACTION),
|
|
||||||
trailing: LinkIcon(
|
|
||||||
text: attachmentCount > 0 ? attachmentCount.toString() : null,
|
|
||||||
),
|
|
||||||
onTap: () {
|
|
||||||
Navigator.push(
|
|
||||||
context,
|
context,
|
||||||
MaterialPageRoute(
|
InvenTreeStockItem.MODEL_TYPE,
|
||||||
builder: (context) => AttachmentWidget(
|
|
||||||
InvenTreeStockItemAttachment(),
|
|
||||||
widget.item.pk,
|
widget.item.pk,
|
||||||
L10().stockItem,
|
L10().stockItem,
|
||||||
|
attachmentCount,
|
||||||
widget.item.canEdit,
|
widget.item.canEdit,
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (attachmentTile != null) {
|
||||||
|
tiles.add(attachmentTile);
|
||||||
|
}
|
||||||
|
|
||||||
return tiles;
|
return tiles;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
60
update-flutter-nix.sh
Normal file
60
update-flutter-nix.sh
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 0. Abhängigkeiten prüfen
|
||||||
|
for cmd in jq curl sed nix; do
|
||||||
|
command -v $cmd >/dev/null 2>&1 || { echo "Fehler: $cmd nicht installiert!"; exit 1; }
|
||||||
|
done
|
||||||
|
|
||||||
|
# 1. Version aus .fvmrc extrahieren
|
||||||
|
if [ ! -f .fvmrc ]; then
|
||||||
|
echo "Fehler: .fvmrc nicht gefunden!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
FLUTTER_VERSION=$(jq -r .flutter .fvmrc)
|
||||||
|
echo "Gesuchte Flutter Version: $FLUTTER_VERSION"
|
||||||
|
|
||||||
|
# 2. Commit-Hash und Version aus Devbox-API holen
|
||||||
|
API_URL="https://search.devbox.sh/v2/pkg?name=flutter"
|
||||||
|
RELEASES_JSON=$(curl -s "$API_URL")
|
||||||
|
|
||||||
|
# Alle Versionen extrahieren und sortieren
|
||||||
|
ALL_VERSIONS=$(echo "$RELEASES_JSON" | jq -r '.releases[].version' | sort -V)
|
||||||
|
|
||||||
|
# Finde die gewünschte oder nächsthöhere Version
|
||||||
|
FOUND_VERSION=$(echo "$ALL_VERSIONS" | awk -v v="$FLUTTER_VERSION" '$0 >= v { print; exit }')
|
||||||
|
|
||||||
|
if [ -z "$FOUND_VERSION" ]; then
|
||||||
|
echo "Fehler: Keine passende Flutter-Version gefunden."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$FOUND_VERSION" != "$FLUTTER_VERSION" ]; then
|
||||||
|
echo "Hinweis: Exakte Version nicht gefunden, benutze stattdessen Version $FOUND_VERSION."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Commit-Hash für x86_64-linux extrahieren
|
||||||
|
COMMIT=$(echo "$RELEASES_JSON" | jq -r --arg v "$FOUND_VERSION" '.releases[] | select(.version==$v) | .platforms[] | select(.system=="x86_64-linux") | .commit_hash' | head -n 1)
|
||||||
|
|
||||||
|
if [ -z "$COMMIT" ] || [ "$COMMIT" == "null" ]; then
|
||||||
|
echo "Fehler: Kein Commit-Hash für Version $FOUND_VERSION und Plattform x86_64-linux gefunden."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Gefundener Commit: $COMMIT (Version: $FOUND_VERSION)"
|
||||||
|
|
||||||
|
|
||||||
|
# 3. Die flake.nix patchen (Backup anlegen)
|
||||||
|
sed -i.bak "s|nixpkgs-flutter.url = \"github:NixOS/nixpkgs/[a-f0-9]*\";|nixpkgs-flutter.url = \"github:NixOS/nixpkgs/$COMMIT\";|" flake.nix
|
||||||
|
|
||||||
|
# 4. Den Flake-Lock aktualisieren
|
||||||
|
nix flake update nixpkgs-flutter
|
||||||
|
|
||||||
|
# 5. Optional: direnv reload
|
||||||
|
if command -v direnv >/dev/null 2>&1; then
|
||||||
|
direnv reload
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Erfolgreich! Die flake.nix nutzt nun den Commit für Flutter $FLUTTER_VERSION (oder höher)."
|
||||||
Loading…
Add table
Add a link
Reference in a new issue