Changes so the edeting function can also adeit all the Codes and the entire mamunt of an itemgroup
Release Inventarsystem / release-docker (push) Successful in 2m14s

This commit is contained in:
2026-08-11 23:49:20 +02:00
parent 9164cd030d
commit 08bea97f0f
3 changed files with 161 additions and 27 deletions
+30 -7
View File
@@ -763,17 +763,24 @@
<textarea id="beschreibung" name="beschreibung" rows="4" class="form-control" required>{{ item.Beschreibung if item.Beschreibung else '' }}</textarea>
</div>
<!-- Barcode / Code_4 -->
<!-- Barcode / Basis-Code -->
<div class="form-group" id="primary_code_group">
<label for="code_4">Barcode / Artikel-Code:</label>
<label for="code_4">Basis-Code (Haupt-Barcode)</label>
<div style="display: flex; gap: 10px;">
<input type="text" id="code_4" name="code_4" class="form-control" value="{{ item.Code_4 if item.Code_4 else '' }}" required>
<button type="button" id="scan-code4-btn" class="btn btn-primary">Barcode scannen</button>
<button type="button" id="scan-code4-btn" class="btn btn-primary" style="white-space: nowrap;">Barcode scannen</button>
</div>
<div id="code4-scanner" style="display:none; margin-top: 10px;"></div>
<small id="code4-scan-status" class="form-text text-muted"></small>
</div>
<!-- Weitere Einzelcodes -->
<div class="form-group" id="individual_codes_group">
<label for="individual_codes">Weitere Einzelcodes (je Zeile ein Code)</label>
<textarea id="individual_codes" name="individual_codes" rows="4" class="form-control">{{ item.IndividualCodes if item.IndividualCodes else '' }}</textarea>
<small style="display:block; color:#666; margin-top: 5px;">Der Scanner füllt zuerst den Basis-Code; weitere gescannte Codes werden hier automatisch zeilenweise angehängt.</small>
</div>
{% if show_library_features %}
<!-- Bibliotheks-Klassifizierung -->
<div class="filter-inputs">
@@ -917,8 +924,10 @@
function startCode4Scanner() {
const scannerBox = document.getElementById('code4-scanner');
const scanButton = document.getElementById('scan-code4-btn');
const codeField = document.getElementById('code_4');
if (!scannerBox || !scanButton || !codeField) return;
const baseCodeField = document.getElementById('code_4');
const individualCodesField = document.getElementById('individual_codes');
if (!scannerBox || !scanButton || !baseCodeField) return;
if (scannerBox.style.display !== 'none') {
killScannerHardware(); scannerBox.style.display = 'none'; scanButton.textContent = 'Barcode scannen'; return;
@@ -931,11 +940,25 @@
code4LastScanned = decodedText; code4LastScannedAt = now;
killScannerHardware(); scannerBox.style.display = 'none'; scanButton.textContent = 'Barcode scannen';
codeField.value = decodedText;
validateCodeField(codeField, getItemId());
// Intelligentes Eintragen: Entweder Basis-Code oder Textarea
if (!baseCodeField.value.trim()) {
baseCodeField.value = decodedText;
} else {
let currentCodes = individualCodesField.value.split('\n').map(c => c.trim()).filter(c => c);
if (!currentCodes.includes(decodedText) && baseCodeField.value.trim() !== decodedText) {
currentCodes.push(decodedText);
individualCodesField.value = currentCodes.join('\n');
}
}
}, 'Scanner läuft...', (msg) => { document.getElementById('code4-scan-status').textContent = msg; });
}
document.addEventListener('DOMContentLoaded', function() {
const scanCodeBtn = document.getElementById('scan-code4-btn');
if (scanCodeBtn) scanCodeBtn.addEventListener('click', startCode4Scanner);
});
function validateCodeField(input, excludeId) {
const code = input.value.trim();
if (!code) return;