Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

Currency.php 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace App\Models\Setting;
  3. use App\Models\Banking\Account;
  4. use Database\Factories\CurrencyFactory;
  5. use Illuminate\Database\Eloquent\Factories\Factory;
  6. use Illuminate\Database\Eloquent\Factories\HasFactory;
  7. use Illuminate\Database\Eloquent\Model;
  8. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  9. use Illuminate\Database\Eloquent\Relations\HasMany;
  10. use Illuminate\Support\Facades\Auth;
  11. use Illuminate\Support\Facades\Config;
  12. use Wallo\FilamentCompanies\FilamentCompanies;
  13. class Currency extends Model
  14. {
  15. use HasFactory;
  16. protected $table = 'currencies';
  17. protected $fillable = [
  18. 'name',
  19. 'code',
  20. 'rate',
  21. 'precision',
  22. 'symbol',
  23. 'symbol_first',
  24. 'decimal_mark',
  25. 'thousands_separator',
  26. 'enabled',
  27. 'company_id',
  28. ];
  29. protected $casts = [
  30. 'enabled' => 'boolean',
  31. 'symbol_first' => 'boolean',
  32. ];
  33. public function accounts(): HasMany
  34. {
  35. return $this->hasMany(Account::class, 'currency_code', 'code');
  36. }
  37. public function company(): BelongsTo
  38. {
  39. return $this->belongsTo(FilamentCompanies::companyModel(), 'company_id');
  40. }
  41. public static function getCurrencyCodes(): array
  42. {
  43. $allCodes = array_keys(Config::get('money'));
  44. $storedCodes = static::query()
  45. ->where('company_id', Auth::user()->currentCompany->id)
  46. ->pluck('code')
  47. ->toArray();
  48. $codes = array_diff($allCodes, $storedCodes);
  49. return array_combine($codes, $codes);
  50. }
  51. protected static function newFactory(): Factory
  52. {
  53. return CurrencyFactory::new();
  54. }
  55. }