Your pricing framework, written as columns.
Vendor and index costs, a target margin from your policy, list price, program discount and net price. Change a formula on the model and every price list built from it recomputes on its next refresh.
| Name | Type | Formula |
|---|---|---|
| Vendor Cost | Money | From data |
| Index Cost | Money | round('Copper Weight' * lookup(source="datasets", name="Commodity Indexes", result="Index Price", match_by=['Copper Index':'Index Code'], sort_by="-Effective Date", agg="first") + 'Zinc Weight' * lookup(source="datasets", name="Commodity Indexes", result="Index Price", match_by=['Zinc Index':'Index Code'], sort_by="-Effective Date", agg="first") + 'Conversion Cost', 2) |
| Unit Cost | Money | if('Product Group' == "Brass valves", 'Index Cost', 'Vendor Cost') |
| Target Margin | Percentage | lookup(source="rulesets", name="Margin Corridors", result="Target Margin", match_by=['Customer Segment':'Customer Segment', 'Product Group':'Product Group']) |
| List Price | Money | round(('Unit Cost' + 'Cost to Serve') / (1 - 'Target Margin'), 2) |
| Program Discount | Percentage | coalesce(lookup(source="datasets", name="Customer Programs", result="Discount", match_by=['Product Group':'Product Group']), 0) |
| Net Price | Money | round('List Price' * (1 - 'Program Discount') + 'Handling Fee', 2) |