Developing a Pricing Rules Module for 1C-Bitrix
Prices in an online store aren't static. Discounts for bulk orders, seasonal markups, B2B partner rates, clearance prices — all need different rules. Standard Bitrix pricing doesn't handle complex rules. Pricing rules module allows flexible price management via rules.
Price Rule Types
- Bulk discount — quantity ≥ 10 → 5% discount
- User group discount — VIP customers → 10%
- Category markup — Electronics → +15%
- Time-based — Black Friday → -30%
- Regional pricing — Moscow → 1500₽, SPB → 1600₽
- Cart sum threshold — order > 5000₽ → free shipping
Rule Engine
Rule evaluation order-sensitive:
class PricingEngine
{
public function calculate(Product $product, User $user, Order $cart): float
{
$basePrice = $product->getPrice();
$rules = RuleTable::getActive();
$discount = 0;
foreach ($rules as $rule) {
if ($rule->matches($product, $user, $cart)) {
$discount = max($discount, $rule->getDiscount());
}
}
return max(0, $basePrice * (1 - $discount));
}
}
Configuration
Admin interface for creating rules:
- Condition builder (product, user group, cart sum, date)
- Action (fixed discount, percentage, fixed price)
- Priority (rule execution order)
- Date range (when active)
Frontend Integration
On product page and in cart, display:
- Base price
- Applied discounts
- Final price
- Reason ("Bulk discount for 10+ items")
Development Timeline
| Stage | Duration |
|---|---|
| Basic rules engine (5-6 rule types) | 6–8 days |
| Admin UI, advanced conditions | 12–16 days |
| Frontend display, notifications | 16–20 days |







