@startuml partition "For every cart position" { (*) --> "Get default price from product" --> if "Product has variations?" then -->[yes] "Override with price from variation" --> if "Event series?" then -->[yes] "Override with price from subevent" -down-> "Store as listed_price" else -down->[no] "Store as listed_price" endif else -down->[no] "Store as listed_price" endif --> if "Voucher applied?" then -->[yes] "Apply voucher pricing" --> "Store as price_after_voucher" else -->[no] "Store as price_after_voucher" endif --> "Apply custom price if product allows\nApply tax rule\nSubtract bundled products" --> "Store as line_price (gross), tax_rate" } --> "Apply discount engine" --> "Apply tax rounding" --> "Store as price (gross)" @enduml