. */ declare(strict_types=1); namespace FireflyIII\Models; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; /** * @mixin IdeHelperRecurrenceTransaction */ class RecurrenceTransaction extends Model { use ReturnsIntegerIdTrait; use SoftDeletes; protected $casts = [ 'created_at' => 'datetime', 'updated_at' => 'datetime', 'deleted_at' => 'datetime', 'amount' => 'string', 'foreign_amount' => 'string', 'description' => 'string', ]; protected $fillable = [ 'recurrence_id', 'transaction_currency_id', 'foreign_currency_id', 'source_id', 'destination_id', 'amount', 'foreign_amount', 'description', ]; /** @var string The table to store the data in */ protected $table = 'recurrences_transactions'; public function destinationAccount(): BelongsTo { return $this->belongsTo(Account::class, 'destination_id'); } public function foreignCurrency(): BelongsTo { return $this->belongsTo(TransactionCurrency::class); } public function recurrence(): BelongsTo { return $this->belongsTo(Recurrence::class); } public function recurrenceTransactionMeta(): HasMany { return $this->hasMany(RecurrenceTransactionMeta::class, 'rt_id'); } public function sourceAccount(): BelongsTo { return $this->belongsTo(Account::class, 'source_id'); } public function transactionCurrency(): BelongsTo { return $this->belongsTo(TransactionCurrency::class); } public function transactionType(): BelongsTo { return $this->belongsTo(TransactionType::class); } protected function amount(): Attribute { return Attribute::make( get: static fn ($value) => (string)$value, ); } protected function destinationId(): Attribute { return Attribute::make( get: static fn ($value) => (int)$value, ); } protected function foreignAmount(): Attribute { return Attribute::make( get: static fn ($value) => (string)$value, ); } protected function recurrenceId(): Attribute { return Attribute::make( get: static fn ($value) => (int)$value, ); } protected function sourceId(): Attribute { return Attribute::make( get: static fn ($value) => (int)$value, ); } protected function transactionCurrencyId(): Attribute { return Attribute::make( get: static fn ($value) => (int)$value, ); } protected function userId(): Attribute { return Attribute::make( get: static fn ($value) => (int)$value, ); } }