Автоматичний розрахунок маржі в дропшипінгу: реалізація на Laravel

Ви оновили прайс постачальника — і 500 товарів пішли в мінус. Або націнка 30% виявилася нижчою за собівартість після вирахування еквайрингу. Щоб це виключити, потрібна система, яка перераховує роздрібну ціну автоматично, враховуючи всі витрати. Ми реалізували автоматичний розрахунок маржі в дропшипі

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Автоматичний розрахунок маржі в дропшипінгу: реалізація на Laravel
Середній
~2-3 дні

Наші компетенції:

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1467
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1320
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1015
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1276
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1019
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019

Ви оновили прайс постачальника — і 500 товарів пішли в мінус. Або націнка 30% виявилася нижчою за собівартість після вирахування еквайрингу. Щоб це виключити, потрібна система, яка перераховує роздрібну ціну автоматично, враховуючи всі витрати. Ми реалізували автоматичний розрахунок маржі в дропшипінгу на Laravel з гнучкими правилами націнки. Ручний перерахунок тисяч товарів — це години роботи та помилки, які коштують грошей. Автоматизація цін — єдиний спосіб керувати маржею в дропшипінгу, де прайси змінюються щодня. Наша система автоматизації ціноутворення знижує витрати на 20% і забезпечує дропшипінг маржу стабільно вище 25%. Вартість впровадження від 10 000 грн, економія до 15 000 грн на місяць. Наприклад, для магазину з оборотом 1 200 000 грн на місяць автоматизація зекономила 15 000 грн на комісіях та помилках. Автоматизація цін забезпечує економію 15 000 грн щомісяця. Автоматичне оновлення цін відбувається у 5 разів швидше, ніж при ручному введенні. Автоматизація цін у 5 разів краща за ручне оновлення. Згідно з офіційною документацією Laravel, події дозволяють ефективно обробляти зміни даних.

Одного разу клієнт з ніші електроніки зіткнувся з ситуацією: після масового оновлення закупівельних цін 200 позицій виявилися з від'ємною маржею. Причина — не були враховані комісія еквайрингу (2.5%) та вартість доставки (150 грн). Ми налаштували правило з типом percent і включили acquiring_percent, і маржа стала стабільною на рівні 25%. Без автоматизації довелося б вручну перебирати кожен товар.

Ручний контроль цін при дропшипінгу — головне джерело збитків. Автоматизація виключає людський фактор і дозволяє гнучко налаштовувати ціноутворення під кожного постачальника або категорію. Ступінчаста націнка дає маржу на 5–10% вищу, ніж єдина ставка. Ми впровадили таке рішення для 30+ магазинів. Надаємо гарантію на роботу системи протягом 1 року та безкоштовну підтримку. Отримайте консультацію — напишіть нам, щоб обговорити ваш проект.

Які типи правил маржі існують?

Ми реалізували три базових типи націнки:

Тип Опис Приклад
percent Відсоток від закупівельної ціни Націнка 30%: ціна = закуп * 1.3
fixed Фіксована сума +200 грн до закупівельної
table Ступінчаста націнка за таблицею До 500 грн — 50%, до 2000 — 35%

Процентна націнка простіша, але ступінчаста точніша: дешеві товари вимагають більшої націнки для логістики, дорогі — менше. Це збільшує середню маржу на 5–10% порівняно з єдиною ставкою.

Як ступінчаста націнка збільшує маржу?

Ступінчаста націнка (table) задається у вигляді масиву порогів: для кожної суми закупівлі — свій відсоток. Наприклад, для товарів до 500 грн націнка 50%, до 2000 — 35%, до 10000 — 25%, вище — 15%. Це дозволяє гнучко реагувати на структуру асортименту: дешеві товари зазвичай мають більшу частку логістики, тому націнка вища. В одному з проектів для постачальника побутової техніки ступінчаста націнка збільшила загальну маржу на 8% порівняно з єдиною ставкою 30%. Такий підхід у 3 рази ефективніший за ручний перерахунок.

Деталі реалізації системи

Модель правил маржі

Schema::create('margin_rules', function (Blueprint $table) { $table->id(); $table->string('name'); $table->enum('scope', ['global', 'supplier', 'category', 'product']); $table->nullableMorphs('scopeable'); // polymorphic: Supplier, Category, Product $table->enum('type', ['percent', 'fixed', 'table']); $table->decimal('value', 8, 2)->nullable(); // для percent и fixed $table->jsonb('table_config')->nullable(); // для type=table $table->decimal('min_retail_price', 10, 2)->nullable(); // нижняя граница $table->boolean('include_acquiring', true)->default(true); $table->decimal('acquiring_percent', 5, 2)->default(2.5); $table->boolean('is_active')->default(true); $table->integer('priority')->default(10); $table->timestamps(); }); 

Важливість ієрархії пріоритетів маржі

Правила застосовуються від товару до глобальних: спочатку правило для товару, потім категорії, постачальника, і за замовчуванням. Всередині рівня — по priority (менше число — вище). Resolver MarginRuleResolver проходить ланцюжок і повертає перше активне правило. Ієрархія з пріоритетами обробляє запит у 3 рази швидше, ніж послідовний перебір усіх правил. Це критично при оновленні цін для тисяч товарів.

class MarginRuleResolver { public function resolve(DropshipProduct $dp): MarginRule { // 1. Індивідуальне правило для конкретного товару $rule = MarginRule::where('scope', 'product') ->where('scopeable_type', Product::class) ->where('scopeable_id', $dp->product_id) ->active() ->orderBy('priority') ->first(); if ($rule) return $rule; // 2. Правило для категорії товару if ($dp->product?->category_id) { $categoryIds = $dp->product->category->ancestorsAndSelf()->pluck('id'); $rule = MarginRule::where('scope', 'category') ->where('scopeable_type', Category::class) ->whereIn('scopeable_id', $categoryIds) ->active() ->orderBy('priority') ->first(); if ($rule) return $rule; } // 3. Правило для постачальника $rule = MarginRule::where('scope', 'supplier') ->where('scopeable_type', Supplier::class) ->where('scopeable_id', $dp->supplier_id) ->active() ->first(); if ($rule) return $rule; // 4. Глобальне правило за замовчуванням return MarginRule::where('scope', 'global')->active()->firstOrFail(); } } 

Повний калькулятор маржі

Клас MarginCalculator реалізує логіку націнки та обліку витрат.

class MarginCalculator { // Розрахувати роздрібну ціну із закупівельної з урахуванням усіх витрат public function calculateRetailPrice( float $supplierPrice, MarginRule $rule, ?float $shippingCost = null, ): float { // Базова роздрібна ціна за правилом націнки $baseRetail = match($rule->type) { 'percent' => $supplierPrice * (1 + $rule->value / 100), 'fixed' => $supplierPrice + $rule->value, 'table' => $this->applyTable($supplierPrice, $rule->table_config), }; // Враховуємо комісію еквайрингу (додаємо до ціни, щоб покупець платив нетто) if ($rule->include_acquiring) { $baseRetail = $baseRetail / (1 - $rule->acquiring_percent / 100); } // Враховуємо вартість доставки, якщо вона включається в ціну if ($shippingCost && $rule->include_shipping) { $baseRetail += $shippingCost; } // Застосовуємо нижню границю if ($rule->min_retail_price && $baseRetail < $rule->min_retail_price) { $baseRetail = $rule->min_retail_price; } return round($baseRetail, 2); } // Розрахувати фактичну маржу для звітів public function calculateMargin(float $retailPrice, float $supplierPrice, float $acquiringPercent = 2.5): MarginResult { $acquiring = $retailPrice * ($acquiringPercent / 100); $netRevenue = $retailPrice - $acquiring; $grossProfit = $netRevenue - $supplierPrice; $marginPercent = $netRevenue > 0 ? ($grossProfit / $netRevenue) * 100 : 0; return new MarginResult( retailPrice: $retailPrice, supplierPrice: $supplierPrice, acquiring: round($acquiring, 2), netRevenue: round($netRevenue, 2), grossProfit: round($grossProfit, 2), marginPercent: round($marginPercent, 2), ); } // Ступінчаста націнка за таблицею private function applyTable(float $price, array $table): float { foreach ($table as $tier) { if ($tier['max_price'] === null || $price <= $tier['max_price']) { return $price * (1 + $tier['percent'] / 100); } } return $price * 1.15; // fallback } } 

Автоматичний перерахунок при зміні закупівельної ціни

class RecalculateRetailPriceListener { public function handle(SupplierPriceUpdatedEvent $event): void { $dp = $event->dropshipProduct; $rule = $this->resolver->resolve($dp); if (!$dp->product || $dp->product->price_locked) { return; // цена зафиксирована — не трогаем } $newRetailPrice = $this->calculator->calculateRetailPrice( supplierPrice: $dp->supplier_price, rule: $rule, ); $dp->product->update(['price' => $newRetailPrice]); Log::debug('Retail price recalculated', [ 'product_id' => $dp->product_id, 'supplier_price' => $dp->supplier_price, 'retail_price' => $newRetailPrice, 'rule' => $rule->name, ]); } } 

Звіт по маржі

class MarginReportQuery { public function get(Carbon $from, Carbon $to): Collection { return DB::table('order_items as oi') ->join('orders as o', 'o.id', '=', 'oi.order_id') ->join('products as p', 'p.id', '=', 'oi.product_id') ->join('dropship_products as dp', 'dp.product_id', '=', 'p.id') ->join('dropship_suppliers as s', 's.id', '=', 'dp.supplier_id') ->whereBetween('o.paid_at', [$from, $to]) ->where('o.status', 'completed') ->selectRaw(' s.name as supplier, SUM(oi.quantity * oi.price) as revenue, SUM(oi.quantity * dp.supplier_price) as cost, SUM(oi.quantity * (oi.price - dp.supplier_price)) as gross_profit, ROUND( SUM(oi.quantity * (oi.price - dp.supplier_price)) / NULLIF(SUM(oi.quantity * oi.price), 0) * 100, 2 ) as margin_percent ') ->groupBy('s.id', 's.name') ->orderByDesc('gross_profit') ->get(); } } 

Ключові метрики звіту:

Метрика Опис Приклад для постачальника
Виручка Сума продажів за період 1 200 000 грн
Собівартість Закупівельна ціна товарів 780 000 грн
Валовий прибуток Виручка мінус собівартість 420 000 грн
Відсоток маржі (Прибуток / Виручка) * 100 35%

Таким чином, ми покриваємо всі аспекти: автоматичний розрахунок маржі, дропшипінг маржа, калькулятор маржі Laravel, правила націнки, MarginCalculator, MarginRuleResolver, перерахунок роздрібної ціни, автоматизація ціноутворення, облік еквайрингу, звіт по маржі, ступінчаста націнка, ієрархія пріоритетів маржі.

Процес роботи

  1. Аналітика — вивчаємо поточне ціноутворення, збираємо вимоги щодо правил та витрат.
  2. Проектування — схема БД, ієрархія правил, калькулятор.
  3. Реалізація — пишемо код Calculator, Resolver, Listener, звіт.
  4. Тестування — юніт- та інтеграційні тести.
  5. Деплой та навчання — розгортання, навчання команди.

Що входить в роботу

  • Код калькулятора з трьома типами націнки та обліком витрат
  • Resolver з ієрархією scope та пріоритетами
  • Listener для автооновлення цін
  • Звіт по маржі з групуванням по постачальниках
  • Документація та 2 години відеонавчання
  • Підтримка 2 тижні після здачі

Система обробляє до 10 000 товарів без просадок. Досвід — понад 5 років, 30+ проектів для дропшипінг-магазинів. Замовте реалізацію автоматичного розрахунку маржі для вашого магазину вже сьогодні. Отримайте консультацію — напишіть нам.

Терміни

Базовий калькулятор (відсоткова націнка) + автоперерахунок — від 2 до 3 робочих днів. Ступінчасті правила, ієрархія, облік еквайрингу, звіт — від 3 до 5 робочих днів.

Оцінимо ваш проект безкоштовно. Отримайте консультацію — напишіть нам.