Laravel Taxify provides a set of helper functions and classes to simplify tax (VAT) calculations within Laravel applications. that allow developers to easily integrate tax calculation functionalities into their projects with multi tax profiles settings and (fixed, percentage) ways. it's offers a straightforward and efficient solution Designed to streamline the process of handling taxes.
Laravel 8.x or up
, for version 2.x .
composer require omaralalwi/laravel-taxify
publish the package's configuration file:
php artisan vendor:publish --tag=laravel-taxify-config
For applications running Laravel versions 7.x
and older, use version 1.0.4
.
composer require omaralalwi/laravel-taxify:^1.0.4
laravel taxify many of helper functions to simplify usage.
calculateTax()
.calculateTaxForCollection()
.getTaxAmount()
.getTaxRate()
.getTaxType()
.getTaxRateAsPercentage()
.
- use
calculateTax
to get Tax As object (default).
$amount = 250;
$taxAmount = calculateTax($amount,'profileName')->tax_amount; // 37.5
Another way to get Detailed Result.
$amount = 250;
$tax = calculateTax($amount,'profileName');
Result (Object)
$tax = {
"amount_with_tax": 287.5,
"tax_amount": 37.5,
"tax_rate": 0.15,
}
Another way you can pass $asArray (third param) as true to get result as array
$amount = 250;
$tax = calculateTax($amount,'profileName',true);
Result
$tax = [
"amount_with_tax" => 287.5,
"tax_amount" => 37.5,
"tax_rate" => 0.15,
]
Another way get tax_amount only , as array
$amount = 250;
$taxAmount = calculateTax($amount,'',true)['tax_amount'];
Note: the second param refer to profile, we mad it null to take default profile, second param can take (default
, null,''') all three values mean default
.
like calculateTax but this for a many amounts .
- use
calculateTaxForCollection
to get a tax for a collection of amounts by passing amounts as array (first param) -> Result wanted as object (default).
// you can pass number as float or integer
$productAmount = 250;
$featureAmount = 70.5;
$sarrantyAmount = 30.60;
$chargeAmount = 90;
$tax = calculateTaxForCollection([$productAmount,$featureAmount, $sarrantyAmount, $chargeAmount]);
Result (object)
$tax = {
"amount_with_tax": 507.265,
"tax_amount": 66.165,
"tax_rate": 0.15,
}
$taxAmount = $tax->tax_amount // 507.265
to get a tax for a collection of amounts as array result , just pass third param as true
like this.
$tax = calculateTaxForCollection([$productAmount,$featureAmount, $sarrantyAmount, $chargeAmount],'',true);
Result (array)
$tax = [
"amount_with_tax" => 507.265,
"tax_amount" => 66.165,
"tax_rate" => 0.15,
]
- use
getTaxAmount
to get Tax Amount as number
$amount = 250;
getTaxAmount($amount); // Result 25
- use
getTaxRate
to get Tax Rate or amount (according to tax type for specified profile in config file)
getTaxRate()
// Result 0.15
getTaxRate('sales') // fore specific profile
// Result 50 , here the result is fixed number because the profile type is fixed amount Not percentage
if profile tax type is fixed
will return the amount (read the tax rate as amount), else will return the tax rate.
Note: for default profile no need to pass `profileName.
- use
getTaxType
to you can get Tax Type
getTaxType('profileName')
// Result: fixed or percentage // depend on profile settings
you can get Tax Rate As Percentage
- you can get a tax rate percentage (for percentage type only)
getTaxRateAsPercentage(); // Result '10.00%'
Note: for default profile no need to pass it
after you published config file .
You can configure Laravel Taxify by adding the following default configuration keys to your .env
file. If you do not add these, the default values will be used.
For a percentage tax type:
DEFAULT_TAXIFY_PROFILE="default"
TAXIFY_DEFAULT_RATE="0.10"
TAXIFY_DEFAULT_TYPE="percentage"
example configuration for fixed tax type:
DEFAULT_TAXIFY_PROFILE="default"
TAXIFY_DEFAULT_RATE=50
TAXIFY_DEFAULT_TYPE="fixed"
Note: The TAXIFY_DEFAULT_RATE
is a number representing the rate when the type is percentage
or the amount when type is fixed
.
You can add more than one of tax profile in config/taxify.php .
- Calculate tax for individual amounts or a collection of amounts
- Retrieve tax amount, rate, and type for any profile as individual.
- Retrieve tax
amount_with_tax
andtax_amount
andtax_rate
for any profile as individual for one amount or a collection of amounts - Get tax rate as a percentage (for percentage type only)
- Customizable configuration options through environment variables easy.
- helper functions easy-to-use.
- support all php and laravel versions.
- Exception Handling: Robust error handling to ensure smooth operation and easy debugging.
- Logging: Automatic logging of errors and exceptions for better error tracking and debugging.
- Unit Tests.
php artisan test --filter TaxifyTest
Please see CONTRIBUTING for details.
this todo list , contain the tasks that we planning to working on them, you can choose one of them and develop it if you want to contribute.
If you discover any security related issues, please email omaralwi2010@gmail.com
.
The MIT License (MIT). Please see License File for more information.
-
Lexi Translate simplify managing translations for multilingual Eloquent models with power of morph relationships and caching .
-
Gpdf Open Source HTML to PDF converter for PHP & Laravel Applications, supports Arabic content out-of-the-box and other languages..
-
laravel Deployer Streamlined Deployment for Laravel and Node.js apps, with Zero-Downtime and various environments and branches.
-
laravel Trash Cleaner clean logs and debug files for debugging packages.
-
laravel Time Craft simple trait and helper functions that allow you, Effortlessly manage date and time queries in Laravel apps.
-
Laravel Startkit Laravel Admin Dashboard, Admin Template with Frontend Template, for scalable Laravel projects.