| Current Path : /home/users/unlimited/www/api.xalonx.com/vendor/bavix/laravel-wallet/tests/Infra/Models/ |
| Current File : /home/users/unlimited/www/api.xalonx.com/vendor/bavix/laravel-wallet/tests/Infra/Models/ItemTax.php |
<?php
declare(strict_types=1);
namespace Bavix\Wallet\Test\Infra\Models;
use Bavix\Wallet\Interfaces\Customer;
use Bavix\Wallet\Interfaces\ProductLimitedInterface;
use Bavix\Wallet\Interfaces\Taxable;
use Bavix\Wallet\Models\Wallet;
use Bavix\Wallet\Services\CastService;
use Bavix\Wallet\Traits\HasWallet;
use Illuminate\Database\Eloquent\Model;
/**
* @property string $name
* @property int $quantity
* @property int $price
*
* @method int getKey()
*/
final class ItemTax extends Model implements ProductLimitedInterface, Taxable
{
use HasWallet;
/**
* @var array<int,string>
*/
protected $fillable = ['name', 'quantity', 'price'];
public function getTable(): string
{
return 'items';
}
public function canBuy(Customer $customer, int $quantity = 1, bool $force = false): bool
{
$result = $this->quantity >= $quantity;
if ($force) {
return $result;
}
return $result && ! $customer->paid($this);
}
public function getAmountProduct(Customer $customer): int
{
/** @var Wallet $wallet */
$wallet = app(CastService::class)->getWallet($customer);
return $this->price + (int) $wallet->holder_id;
}
public function getMetaProduct(): ?array
{
return null;
}
/**
* Specify the percentage of the amount. For example, the product costs $100, the equivalent of 15%. That's $115.
*
* Minimum 0; Maximum 100 Example: return 7.5; // 7.5%
*/
public function getFeePercent(): float|int
{
return 7.5;
}
}