Mindestbestand auch fuer Gegenstaende (Web-Formular + iOS)

Gegenstaende (Verbrauchsmaterial wie Sonnencreme) koennen jetzt einen Mindestbestand haben - im Web-Produktformular ein Gesamt-Feld (Stueck) plus Mindestbestand je Lagerort, auf iOS ein Gesamt-Feld in der Detailansicht. Umrechnung wie bei Lebensmitteln (fuer Stueck-Artikel = Stueckzahl); iOS sendet min_stock nur bei Gegenstaenden, damit Lebensmittel-Modi unberuehrt bleiben. Backend/Einkaufsliste unterstuetzen das bereits. Namen (Lebensmittel/Gegenstaende) bleiben.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-07-27 19:48:41 +02:00
parent 9551751732
commit 1dc249eb79
3 changed files with 68 additions and 2 deletions

View File

@@ -494,6 +494,12 @@ struct ProductUpdateRequest: Encodable {
var shopId: Int? = nil
var productUrl: String? = nil
var fieldValues: [String: String?]? = nil
// Mindestbestand nur senden, wenn ausdrücklich gewünscht sonst bliebe der
// erfasste Modus (z.B. 5 kg") sonst erhalten und wird nicht überschrieben.
var minStock: Double? = nil
var minStockInPackages: Bool? = nil
var minStockUnitId: Int? = nil
var sendMinStock = false
enum CodingKeys: String, CodingKey {
case name, brand
@@ -505,6 +511,9 @@ struct ProductUpdateRequest: Encodable {
case shopId = "shop_id"
case productUrl = "product_url"
case fieldValues = "field_values"
case minStock = "min_stock"
case minStockInPackages = "min_stock_in_packages"
case minStockUnitId = "min_stock_unit_id"
}
func encode(to encoder: Encoder) throws {
@@ -520,6 +529,11 @@ struct ProductUpdateRequest: Encodable {
try container.encode(productUrl, forKey: .productUrl)
// Feldwerte nur senden, wenn gesetzt sonst nichts an den Feldern ändern.
if let fieldValues { try container.encode(fieldValues, forKey: .fieldValues) }
if sendMinStock {
try container.encode(minStock, forKey: .minStock)
try container.encode(minStockInPackages, forKey: .minStockInPackages)
try container.encode(minStockUnitId, forKey: .minStockUnitId)
}
}
}