You define shipping rules. When a new order arrives it gets processed
by these rules, producing delivery options (rates).
Each rule's job is to grab order items out of the flow and mince them into one or more rates (delivery options). Which items would be captured by a rule is defined by conditions. Items which don't match rule conditions fall-through to a next rule.
So, overall, the system works by iterating over a list of defined rules, checking items against each rule's conditions until all items get captured (or there are no more rules). This looks like a child playing with a shape-sorter bucket: Where a child is the system, a shape is an order and each hole is a rule conditions set.
- For example, you can have rules to handle different order destinations:
- Or lightweight and heavy packages: