Schnellbuchungs-Karten: gueltige Einheit statt "article"
Die Ein-/Auslagern-Karten schickten unit: "article" - eine Einheit, die der Server nicht kennt (services/units.py akzeptiert nur package/packung bzw. die Basiseinheiten g/ml/stück). Jede Buchung ueber die Karte scheiterte damit an "Unbekannte Einheit: article", in der Web-Oberflaeche wie in der App. Jetzt wird die Menge in Artikeleinheiten gebucht: gibt es ein Gebinde, ist das eine Packung, sonst die Basiseinheit des Produkts. Gegen ein laufendes Backend geprueft (package und Basiseinheit je 200). Aufgefallen beim Testen der Ablauf-Benachrichtigungen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -108,17 +108,18 @@ struct QuickBookingCard: View {
|
|||||||
fehler = nil
|
fehler = nil
|
||||||
meldung = nil
|
meldung = nil
|
||||||
do {
|
do {
|
||||||
// "article" ist die Einheit, in der der Artikel gefuehrt wird -
|
// Menge in Artikeleinheiten: Gebinde -> Packung, sonst Basiseinheit.
|
||||||
// genau die, die in der Karte steht.
|
// Der Server kennt kein "article".
|
||||||
|
let unit = (artikel.packageSize ?? 0) > 0 ? "package" : artikel.baseUnit
|
||||||
if einlagern {
|
if einlagern {
|
||||||
let zeile = CheckInLine(quantity: wert, bestBefore: nil,
|
let zeile = CheckInLine(quantity: wert, bestBefore: nil,
|
||||||
bestBeforePrecision: "day", locationId: nil)
|
bestBeforePrecision: "day", locationId: nil)
|
||||||
_ = try await APIClient.shared.checkInBatch(
|
_ = try await APIClient.shared.checkInBatch(
|
||||||
BatchCheckInRequest(productId: artikel.id, unit: "article", lines: [zeile]))
|
BatchCheckInRequest(productId: artikel.id, unit: unit, lines: [zeile]))
|
||||||
} else {
|
} else {
|
||||||
_ = try await APIClient.shared.checkOut(
|
_ = try await APIClient.shared.checkOut(
|
||||||
CheckOutRequest(productId: artikel.id, quantity: wert,
|
CheckOutRequest(productId: artikel.id, quantity: wert,
|
||||||
unit: "article", lotId: nil))
|
unit: unit, lotId: nil))
|
||||||
}
|
}
|
||||||
meldung = "\(formatAmount(wert)) \(einlagern ? "eingelagert" : "ausgelagert")."
|
meldung = "\(formatAmount(wert)) \(einlagern ? "eingelagert" : "ausgelagert")."
|
||||||
menge = "1"
|
menge = "1"
|
||||||
|
|||||||
@@ -127,14 +127,15 @@ function KarteSchnellbuchung({ richtung }) {
|
|||||||
setFehler(null);
|
setFehler(null);
|
||||||
setMeldung(null);
|
setMeldung(null);
|
||||||
try {
|
try {
|
||||||
// "article" ist die Einheit, in der der Artikel gefuehrt wird (Gebinde
|
// Die Menge zaehlt in Artikeleinheiten: Gibt es ein Gebinde, ist das eine
|
||||||
// oder Basiseinheit) - genau das, was in der Karte steht.
|
// Packung, sonst die Basiseinheit. Der Server kennt kein "article".
|
||||||
|
const unit = artikel.package_size > 0 ? "package" : artikel.base_unit;
|
||||||
if (einlagern) {
|
if (einlagern) {
|
||||||
await api.checkInBatch({
|
await api.checkInBatch({
|
||||||
product_id: artikel.id, unit: "article", lines: [{ quantity: zahl }],
|
product_id: artikel.id, unit, lines: [{ quantity: zahl }],
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
await api.checkOut({ product_id: artikel.id, quantity: zahl, unit: "article" });
|
await api.checkOut({ product_id: artikel.id, quantity: zahl, unit });
|
||||||
}
|
}
|
||||||
setMeldung(`${fmt(zahl)} ${einlagern ? "eingelagert" : "ausgelagert"}.`);
|
setMeldung(`${fmt(zahl)} ${einlagern ? "eingelagert" : "ausgelagert"}.`);
|
||||||
setMenge("1");
|
setMenge("1");
|
||||||
|
|||||||
Reference in New Issue
Block a user