'boolean', ]; public function company(): BelongsTo { return $this->belongsTo(Company::class, 'company_id'); } public function defaultSalesTax(): HasOne { return $this->hasOne(DefaultSetting::class, 'sales_tax_id'); } public function defaultPurchaseTax(): HasOne { return $this->hasOne(DefaultSetting::class, 'purchase_tax_id'); } public function createdBy(): BelongsTo { return $this->belongsTo(FilamentCompanies::userModel(), 'created_by'); } public function updatedBy(): BelongsTo { return $this->belongsTo(FilamentCompanies::userModel(), 'updated_by'); } public function items(): HasMany { return $this->hasMany(Item::class); } public function document_items(): HasMany { return $this->hasMany(DocumentItem::class); } public function bill_items(): HasMany { return $this->document_items()->where('type', 'bill'); } public function invoice_items(): HasMany { return $this->document_items()->where('type', 'invoice'); } public static function getComputationTypes(): array { return [ 'fixed' => 'Fixed', 'percentage' => 'Percentage', 'compound' => 'Compound', ]; } public static function getTaxTypes(): array { return [ 'sales' => 'Sales', 'purchase' => 'Purchase', 'none' => 'None', ]; } public static function getTaxScopes(): array { return [ 'product' => 'Product', 'service' => 'Service', ]; } protected static function newFactory(): Factory { return TaxFactory::new(); } }