The quantity of a child "1" must be a multiple of the parent quantity "50"

Hi,

ich versuche eine Bestellung auszuführen, die ein LineItem hat, und das LineItem hat ein Child. Das Child Quantity muss immer 1 sein, unabhängig davon wie viele die Menge vom LineItemParent ist.

Deswegen bekommt man aber diese Fehlermeldung:

The quantity of a child „1“ must be a multiple of the parent quantity „50“

Also, das Prolbem passiert in Shopware\Core\Checkout\Cart\LineItem\LineItem::validateChildQuantity.

Shopware\Core\Checkout\Cart\LineItem\LineItem wurde nicht als Service registriert.

Wie könnte ich es überschreiben oder das Problem lösen?! Es hatte in vorheriger SW Version funktioniert.

Danke!

Child Quantity 1 und Parent Quantity 50 ist erlaubt, sofern Parent nicht „stackable“ ist. Hilft dir das weiter?

Danke!

Aber der Kunde darf Parents Menge ändern… Also das soll stackable bleiben.

Nur müssten die Children nicht stackable sein.

@Milad Konkret wird die Exception hier geworfen, in der Klasse, die du oben schon erwähnt hattest:

    /**
     * @throws InvalidChildQuantityException
     */
    private function validateChildQuantity(LineItem $child): void
    {
        $childQuantity = $child->getQuantity();
        $parentQuantity = $this->getQuantity();
        if ($childQuantity % $parentQuantity !== 0) {
            if ($childQuantity !== 1) {
                throw new InvalidChildQuantityException($childQuantity, $parentQuantity);
            }

            // A quantity of 1 for a child line item is allowed, if the parent line item is not stackable
            if ($this->isStackable()) {
                throw new InvalidChildQuantityException($childQuantity, $parentQuantity);
            }
        }
    }

Normalerweise soll eben die childQuantity ein Mehrfaches der parentQuantity sein, d.h. bei parentQuantity = 50, sollte childQuantity 50, 100, 150, usw. sein außer childQuantity ist 1 und Parent ist nicht stackable.

Könntest du vielleicht childQuantity 50 einstellen oder ginge das in deinem Fall nicht?

Diese Überprüfung wird bei addChild und setChildren durchgeführt, also zentrale SW-Funktionen. Eine elegante Möglichkeit diese zu Umgehen fällt mir leider spontan nicht ein. Decorator ginge eigentlich immer, aber diese Klasse hat so viele public Funktion, das hätte nichts mit „elegant“ zu tun…

Guten Morgen,
wir stehen vor demselben Problem.

Parent soll stackable bleiben, nur ein Child hat eben die Quantity 1, da das ein fixer Preis ist und eben
nicht mengenabhängig. Den fixen Preis durch die Menge vom parent teilen, macht auch nicht viel Sinn,
da dann wieder Rundungsfehler reinkommen, ausserdem wäre das super unschön, finde ich.

Eine Lösung ist wohl nicht in Sicht?

Viele Grüße,
Werner.