1. Go to this page and download the library: Download safemood/discountify library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
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);
}
}
$items = [
['id' => '1', 'quantity' => 2, 'price' => 50],
['id' => '2', 'quantity' => 1, 'price' => 100, 'type' => 'special'],
];
// Set the items in the cart
Discountify::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 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();
namespace App\Conditions;
use Safemood\Discountify\Contracts\ConditionInterface;
class OrderTotalDiscount implements ConditionInterface
{
public bool $skip = true; // Set to true to skip the condition
public string $slug = 'order_total';
public int $discount = 10;
public function __invoke(array $items): bool
{
return count($items) > 5;
}
}
Condition::define('condition2', fn ($items) => false, 20, true); // Will be skipped
Condition::add([
['slug' => 'condition1', 'condition' => fn ($items) => true, 'discount' => 10, 'skip' => false], // Won't be skipped
['slug' => 'condition2', 'condition' => fn ($items) => false, 'discount' => 20, 'skip' => true], // Will be skipped
['slug' => 'condition3', 'condition' => fn ($items) => true, 'discount' => 30], // Will not be skipped (default skip is false)
]);
// app/Providers/EventServiceProvider.php
use Illuminate\Support\Facades\Event;
use Safemood\Discountify\Events\DiscountAppliedEvent;
public function boot(): void
{
Event::listen(function (DiscountAppliedEvent $event) {
// Your event handling logic here
// Ex : Mail to customer
// dd($event);
});
Event::listen(function (CouponAppliedEvent $event) { // Added
// Your event handling logic for CouponAppliedEvent here
// Example: Log coupon usage
// dd($event);
});
}