您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

JournalEntry.php 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace App\Models\Accounting;
  3. use App\Casts\JournalEntryCast;
  4. use App\Collections\Accounting\JournalEntryCollection;
  5. use App\Concerns\Blamable;
  6. use App\Concerns\CompanyOwned;
  7. use App\Enums\Accounting\JournalEntryType;
  8. use App\Models\Banking\BankAccount;
  9. use Database\Factories\Accounting\JournalEntryFactory;
  10. use Illuminate\Database\Eloquent\Factories\Factory;
  11. use Illuminate\Database\Eloquent\Factories\HasFactory;
  12. use Illuminate\Database\Eloquent\Model;
  13. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  14. class JournalEntry extends Model
  15. {
  16. use Blamable;
  17. use CompanyOwned;
  18. use HasFactory;
  19. protected $fillable = [
  20. 'company_id',
  21. 'account_id',
  22. 'transaction_id',
  23. 'type',
  24. 'amount',
  25. 'description',
  26. 'created_by',
  27. 'updated_by',
  28. ];
  29. protected $casts = [
  30. 'type' => JournalEntryType::class,
  31. 'amount' => JournalEntryCast::class,
  32. ];
  33. public function account(): BelongsTo
  34. {
  35. return $this->belongsTo(Account::class, 'account_id');
  36. }
  37. public function transaction(): BelongsTo
  38. {
  39. return $this->belongsTo(Transaction::class, 'transaction_id');
  40. }
  41. public function bankAccount(): BelongsTo
  42. {
  43. return $this->account()->where('accountable_type', BankAccount::class);
  44. }
  45. public function isUncategorized(): bool
  46. {
  47. return $this->account->isUncategorized();
  48. }
  49. protected static function newFactory(): Factory
  50. {
  51. return JournalEntryFactory::new();
  52. }
  53. public function newCollection(array $models = []): JournalEntryCollection
  54. {
  55. return new JournalEntryCollection($models);
  56. }
  57. }