In Drupal Commerce, I'm trying to come up with a rule the bypasses shipping if virtual product types are put into the cart, but ONLY if all products are virtual; if physical products are put in, then the rule wouldn't fire because these products need to be shipped.
Below, for reference, is a solution for virtual products; it's close but it won't suffice if combined with both physical and virtual products.
Install Commerce Rules Extra
- Create a rule for Event: Process checkout pane
- Add Action: Change pane properties
- Value: Shipping information
- Page to move to:
<do not change>
- Enabled: uncheck
- Add Condition: e.g. by Order contains products of particular product types, or based on Commerce order contains shippable products supplied by Commerce Physical Product. You may have to clear caches before this takes effect.