How a bundle arrives in your warehouse system.

A package price is quickly set up. The question that comes after it: what does the warehouse system read out of the order? This page describes exactly that, with the values that apply out of the box and the four switches you change them with.

4line items, not one
Every component stands on its own in the order, with its real product number
0interfaces needed
The order consists of regular Shopware line items, no integration needs more
2routes for the discount
The plugin's own line item type or a standard Shopware voucher, by switch
numbering schemes
Bundle line and discount line carry the number your template defines
The order

What the order contains when a customer buys a package.

An example: chinos as the main product, a belt and a shirt with them, ten percent off the package. This is what the order looks like out of the box.

Order 10042four line items, flat
Line itemProduct numberTypeQtyAmount
Chinos, slim fitHOSE-CHI-32Product1€79.90
Leather belt, blackGUERT-LED-90Product1€44.90
Business shirt, whiteHEMD-BUS-MProduct1€59.90
Bundle discountHOSE-CHI-32-bundle-discountDiscount1− €18.47

No collective item. The three products carry their real numbers, are booked out individually and can be returned individually. The bundle line itself was removed because it is not a stocked article.

The switches

Four settings decide how it looks.

All four sit in the plugin configuration under Checkout and Order. The values given apply out of the box.

Dissolve parent-child relationship

Active: the components sit next to one another in the order. Off: the bundle line stays as a bracket with the components below it.

Out of the box: active, so flat.

Remove parent product

The bundle line is not a stocked article. Active removes it from the order so that it does not land in the warehouse system as a ghost line item.

Out of the box: active, the line is dropped.

Store discount as voucher

Off, the discount line carries a line item type of the plugin. Active turns it into a standard Shopware voucher, the same type a promotion produces.

Out of the box: off, own type.

Adopt custom fields of the products

The custom fields of the components travel into the respective order line item. Integrations evaluating their own markers on the product find them here too.

Out of the box: active.

Product numbers

You decide the numbers, not the plugin.

Two line items only come into being in the cart and do not exist as products in your catalogue: the bundle bracket and the discount line. Both need a number so the warehouse system can book them.

  • They are Twig templates, not fixed strings. You have access to every field of the main product.
  • A fixed value works too: enter DISCOUNT-BUNDLE and every discount line is called that, whatever the product.
  • Built from custom fields, if your numbering follows a scheme of its own.
Configuration › Checkoutvalues out of the box
Product number of the bundle{{ product.productNumber }}-bundle
Product number of the bundle discount{{ product.productNumber }}-bundle-discount

The chinos HOSE-CHI-32 therefore produce HOSE-CHI-32-bundle and HOSE-CHI-32-bundle-discount.

The tax case

Mixed VAT rates inside one package.

The point where evaluations drift apart, and the reason the discount type is not merely a marketing question.

Percentage discount

Every component gives up the same percentage. The reduction therefore splits proportionally across the tax rates of the components. If 7 and 19 percent sit in the package, the ratio is preserved.

uncritical

Fixed amount and fixed package price

The discount line carries the tax rate of the main product, and for the entire amount. In a package of 7 and 19 percent that shifts the VAT shown.

work it out first

Anyone with a single tax rate in their range can skip this section. Anyone combining food with accessories, or books with non-book, should pick the discount type deliberately and send a test order through the warehouse system before the first package goes live.

What does a bundle order look like in the warehouse system?

Out of the box, a flat list: every component is its own order line item with its real product number, its quantity and its tax rate, plus one line for the discount. There is no collective item hiding the contents. Any integration therefore reads the order the same way it reads every other order.

Is the parent-child relationship kept?

Only if you need it. The switch "dissolve parent-child relationship" is active out of the box, so the line items sit next to each other rather than nested. Anyone who wants to evaluate the grouping in the target system turns it off and gets the bundle line as a container with the components below it.

What happens to the container product in the order?

It is removed out of the box, because it is not a stocked article and would only show up as a ghost line item in the warehouse system. The switch "remove parent product" is active. If you need the line as a bracket, turn it off; it then carries the product number from your template.

Will my system cope with the discount line item?

Out of the box the discount line carries a line item type of its own. If your integration cannot handle it, switch on "store discount as voucher": the discount then sits in the order as a standard Shopware voucher, meaning the same line item type a promotion or a voucher code produces. Every integration knows that type.

Which product numbers do the bundle line and the discount carry?

Both come from a Twig template you change in the configuration under "Checkout". Out of the box they read {{ product.productNumber }}-bundle and {{ product.productNumber }}-bundle-discount. You have access to every field of the main product, so you can also set a fixed number or build one from a custom field to match your numbering scheme.

How is the discount split across mixed VAT rates?

That depends on the discount type and is the point where most evaluations drift apart. With a percentage discount the reduction is split proportionally across the tax rates of the components, because every article gives up the same percentage. With a fixed amount and a fixed package price the entire discount line carries the tax rate of the main product. If a package combines 7 and 19 percent, that is a difference in VAT you should know about.

Are the custom fields of the products passed along?

Yes, out of the box. The switch "adopt custom fields of the products" is active, so the custom fields of the components end up in the respective order line item. Integrations that evaluate their own markers on the product will find them in bundle orders too.

What is the technical name of the discount line item type?

Without the voucher switch it carries the type dvsn-bundle-discount, the components carry dvsn-bundle-product and the container dvsn-bundle. Anyone writing their own integration filters on those. With the voucher switch on, the discount line becomes the standard type promotion instead, the one Shopware also uses for promotions and voucher codes.

Everything about the plugin on one page.

Discount types, bundle types, variant selection, setup in three steps and the comparison with native Shopware.