feimx/tax

本包允许对金额进行税务计算

1.1.3 2018-04-18 06:00 UTC

This package is auto-updated.

Last update: 2024-09-20 05:21:14 UTC


README

Latest Version on Packagist Build Status Quality Score Total Downloads

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)。有关更多信息,请参阅 许可证文件