Description
Laravel package for dynamic discounts with custom conditions.
Define Conditions
use Illuminate\Support\ServiceProvider;use Safemood\Discountify\Facades\Condition;use Carbon\Carbon; class AppServiceProvider extends ServiceProvider{ public function boot() { // If items are more than 2, apply a 10% discount. Condition::define('more_than_2_products_10', fn (array $items) => count($items) > 2, 10) // If the date is within a 7-day interval starting March 1, 2024, apply a 15% discount. ->add([ [ 'slug' => 'promo_early_spring_sale_2024', 'condition' => fn ($items) => now()->between( Carbon::createFromDate(2024, 3, 1), Carbon::createFromDate(2024, 3, 15)->addDays(7) ), 'discount' => 15, ], // If 'special' items are in the cart, apply a 10% discount. [ 'slug' => 'special_type_product_10', 'condition' => fn ($items) => in_array('special', array_column($items, 'type')), 'discount' => 10, ], ]) // If the user has a renewal, apply a 10% discount. ->defineIf('client_has_renewal_10', auth()->user()->hasRenewal(), 10); }}
Set Items, Global Discount, and Tax Rate
$items = [ ['id' => '1', 'quantity' => 2, 'price' => 50], ['id' => '2', 'quantity' => 1, 'price' => 100, 'type' => 'special'], ]; // Set the items in the cartDiscountify::setItems($items) // Set a global discount for all items in the cart ->setGlobalDiscount(15) // Set a global tax rate for all items in the cart ->setGlobalTaxRate(19);
Calculate Total Amounts
// Calculate the total amount considering the set conditions and discounts $total = Discountify::total(); // Calculate total amount with detailed breakdown// (array contains total, subtotal, tax amount, total after discount, savings, tax rate, discount rate)$total = Discountify::totalDetailed(); // Calculate the total amount with the applied global discount $totalWithDiscount = Discountify::totalWithDiscount(); // Calculate the total amount with taxes applied based on the set global tax rate $totalWithTaxes = Discountify::tax(); // Calculate the total tax amount based on the given tax rate (19 in this case) (before discounts) $taxAmount = Discountify::taxAmount(19); // Calculate tax amount with tax applied after discounts $taxAmount = Discountify::calculateTaxAmount(19, true); // Calculate the amount saved$savings = Discountify::savings();
Recent Courses on Laravel Daily
[NEW] Practical Laravel Security: Packages, Secrets, Supply-Chain Attacks
7 lessons
43 min read
AI Agents/IDEs for Laravel: May 2026 (Claude Code, Codex, OpenCode, etc)
7 lessons
52 min
How to Build Laravel 13 API From Scratch
30 lessons
1 h 23 min