Development of a 1C-Bitrix pricing rules module

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.
Our competencies:
Development stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Website development for FIXPER company
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    747
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    976

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