Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

Currency.php 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. 'created_by',
  29. 'updated_by',
  30. ];
  31. protected $casts = [
  32. 'enabled' => 'boolean',
  33. 'symbol_first' => 'boolean',
  34. ];
  35. public function accounts(): HasMany
  36. {
  37. return $this->hasMany(Account::class, 'currency_code', 'code');
  38. }
  39. public function company(): BelongsTo
  40. {
  41. return $this->belongsTo(FilamentCompanies::companyModel(), 'company_id');
  42. }
  43. public static function getCurrencyCodes(): array
  44. {
  45. $allCodes = array_keys(Config::get('money'));
  46. $storedCodes = static::query()
  47. ->where('company_id', Auth::user()->currentCompany->id)
  48. ->pluck('code')
  49. ->toArray();
  50. $codes = array_diff($allCodes, $storedCodes);
  51. return array_combine($codes, $codes);
  52. }
  53. protected static function newFactory(): Factory
  54. {
  55. return CurrencyFactory::new();
  56. }
  57. }