feimx / tax
本包允许对金额进行税务计算
Requires
- php: ^7.1
- illuminate/support: ~5.6
- nesbot/carbon: ^1.20
Requires (Dev)
- larapack/dd: ^1.0
- orchestra/testbench: ~3.5.0|~3.6.0
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-09-20 05:21:14 UTC
README
feimx/tax 包提供了一个简单的方法来计算金额的税费。
基本用法
$taxManager = new FeiMx\Tax\TaxManager($amount = 100); $taxManager->addTax('iva'); echo $taxManager->total(); // 116.000000
安装
您可以通过composer安装此包
composer require feimx/tax
// config/app.php 'providers' => [ FeiMx\Tax\TaxServiceProvider::class, ];
注意: 如果您的Laravel版本是 >=5.5,您不需要注册提供者。
注意: 如果您不使用Laravel,则此操作不是必需的。
您可以选择使用以下命令发布配置文件
php artisan vendor:publish --provider="FeiMx\Tax\TaxServiceProvider" --tag="config"
这是发布配置文件的内容
return [ /** * Used The fallback type determines the type to use when the current one * is not available. You may change the value to correspond to any of * provided types */ 'fallback' => 'default', /** * List of taxes with their types ans percentages * You can add more types and percentages. */ 'taxes' => [ 'iva' => [ 'default' => 0.16, 'retention' => -0.106667, ], 'isr' => [ 'default' => -0.106667, ], 'ieps' => [ 'default' => 0.08, 'retention' => -0.08, 'primary' => 0.11, 'secondary' => 0.13, ], ], ];
注意: 如果您不使用Laravel,则此操作不是必需的。
您可以选择使用以下命令发布迁移文件
php artisan vendor:publish --provider="FeiMx\Tax\TaxServiceProvider" --tag="migrations"
注意: 如果您不使用Laravel,则此操作不是必需的。
使用
首先需要创建一个新的 TaxManager 实例
$taxManager = new FeiMx\Tax\TaxManager($amount = 100);
其次,您需要添加计算最终金额所需的税费:第一个参数可以是税费名称 ['iva', 'ieps', 'isr'] 或 FeiMx\Tax\Contracts\TaxContract 的实例。存在3个税费对象
$iva = new \FeiMx\Tax\Taxes\IVA($retention = false); $isr = new \FeiMx\Tax\Taxes\ISR($retention = false); $ieps = new \FeiMx\Tax\Taxes\IEPS($retention = false); $taxManager->addTax($tax = 'iva', $retention = false); $taxManager->addTax($iva);
注意: 您可以通过传递字符串来指定配置文件中给定的税费类型,而不是保留布尔参数。
$iva = new \FeiMx\Tax\Taxes\IVA('free'); $taxManager->addTax($tax = 'iva', 'free');
您可以一次添加多个税费
$taxManager->addTaxes([ 'iva', $isr, $ieps, ]);
现在您可以得到最终金额
$taxManager->total(); // or $taxManager->total;
您可以得到给定数据的列表
$taxManager->get();
这是get方法的内部内容
[
'amount' => 100,
'total' => '105.333300',
'taxes' => [
[
'tax' => 'iva',
'amount' => '16.000000',
],
[
'tax' => 'isr',
'amount' => '-10.666700',
],
],
];
模型
您可以将可征税特性分配给您的模型。
use FeiMx\Tax\Traits\Taxable; class Product extends Model { use Taxable; protected $fillable = ['price']; }
您可以为您的模型分配税费组
$product = Product::first(); $taxGroup = \FeiMx\Tax\Models\TaxGroup::first(); $product->assignTaxGroup($taxGroup);
您可以通过传递名称和多个税费组来实现这一点
$product->assignTaxGroup('iva'); $product->assignTaxGroup('iva', 'isr'); $product->assignTaxGroup(['iva', 'isr']); $product->assignTaxGroup(collect(['iva', $taxGroup]));
您也可以同步
$product->syncTaxGroups('iva'); $product->syncTaxGroups('iva', 'isr'); $product->syncTaxGroups(['iva', 'isr']);
并且您可以删除
$product->removeTaxGroup('iva'); $product->removeTaxGroup($taxGroup);
您可以通过验证模型是否具有税费组来验证
$product->hasTaxGroup('iva'); $product->hasTaxGroup($taxGroup); $product->hasTaxGroup([$taxGroup, 'iva']);
要获取税费后的总金额,必须知道使用哪个列,默认情况下我们使用 price 列,但您可以使用其他列
class Product extends Model { use Taxable; protected $fillable = ['price']; public static function priceColumn() { return 'price'; } }
现在您可以获取给定税费组的总计
$product->total($taxGroup);
并且您可以获取TaxManager的get方法的内容
$product->getAmounts($taxGroup);
测试
composer test
变更日志
请参阅 CHANGELOG 获取有关最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 获取详细信息。
安全
如果您发现任何安全问题,请通过电子邮件 yorch@fei.com.mx 而不是使用问题跟踪器来报告。
鸣谢
支持我们
FEI 是一家位于墨西哥尤卡坦的数字发票初创公司。您可以在我们的网站上找到我们所有开源项目的概述 在这里。
您的业务是否依赖于我们的贡献?通过 Patreon 与我们联系并支持我们。所有承诺都将用于分配人力以维护和新奇事物。
许可证
MIT许可证(MIT)。有关更多信息,请参阅 许可证文件。