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
Release Inventarsystem / release-docker (push) Successful in 2m14s
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user