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.
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.
| Line item | Product number | Type | Qty | Amount |
|---|---|---|---|---|
| Chinos, slim fit | HOSE-CHI-32 | Product | 1 | €79.90 |
| Leather belt, black | GUERT-LED-90 | Product | 1 | €44.90 |
| Business shirt, white | HEMD-BUS-M | Product | 1 | €59.90 |
| Bundle discount | HOSE-CHI-32-bundle-discount | Discount | 1 | − €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.
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.
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-BUNDLEand every discount line is called that, whatever the product. - Built from custom fields, if your numbering follows a scheme of its own.
{{ product.productNumber }}-bundle{{ product.productNumber }}-bundle-discountThe chinos HOSE-CHI-32 therefore produce HOSE-CHI-32-bundle and HOSE-CHI-32-bundle-discount.
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.
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.
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.
Other ways to put a package together.
Fixed bundle
Every component is set. The customer takes the package as you put it together, or not at all.
Read on → Barbecue season setSelectable bundle
The customer removes what they already own, and the price follows along immediately.
Read on → Skincare set for 99 eurosFixed package price
The package costs a round figure, no matter what the individual items add up to.
Read on →Everything about the plugin on one page.
Discount types, bundle types, variant selection, setup in three steps and the comparison with native Shopware.