$documents * @property-read int|null $documents_count * @property-read mixed $hashed_id * @property-read \App\Models\User $user * @property-read \App\Models\Vendor|null $vendor * @method static \Illuminate\Database\Eloquent\Builder|BaseModel company() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel exclude($columns) * @method static \Database\Factories\ProductFactory factory($count = null, $state = []) * @method static \Illuminate\Database\Eloquent\Builder|Product filter(\App\Filters\QueryFilters $filters) * @method static \Illuminate\Database\Eloquent\Builder|Product newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Product newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Product onlyTrashed() * @method static \Illuminate\Database\Eloquent\Builder|Product query() * @method static \Illuminate\Database\Eloquent\Builder|BaseModel scope() * @method static \Illuminate\Database\Eloquent\Builder|Product whereAssignedUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereCompanyId($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereCost($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereCustomValue1($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereCustomValue2($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereCustomValue3($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereCustomValue4($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereDeletedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereInStockQuantity($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereIsDeleted($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereMaxQuantity($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereNotes($value) * @method static \Illuminate\Database\Eloquent\Builder|Product wherePrice($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereProductImage($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereProductKey($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereProjectId($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereQuantity($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereStockNotification($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereStockNotificationThreshold($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxName1($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxName2($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxName3($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxRate1($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxRate2($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxRate3($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereUserId($value) * @method static \Illuminate\Database\Eloquent\Builder|Product whereVendorId($value) * @method static \Illuminate\Database\Eloquent\Builder|Product withTrashed() * @method static \Illuminate\Database\Eloquent\Builder|Product withoutTrashed() * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property int|null $tax_id * @property-read \Illuminate\Database\Eloquent\Collection $documents * @method static \Illuminate\Database\Eloquent\Builder|Product whereTaxId($value) * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property-read \Illuminate\Database\Eloquent\Collection $documents * @property-read \Illuminate\Database\Eloquent\Collection $documents * @mixin \Eloquent */ class Product extends BaseModel { use MakesHash; use SoftDeletes; use Filterable; public const PRODUCT_TYPE_PHYSICAL = 1; public const PRODUCT_TYPE_SERVICE = 2; public const PRODUCT_TYPE_DIGITAL = 3; public const PRODUCT_TYPE_SHIPPING = 4; public const PRODUCT_TYPE_EXEMPT = 5; public const PRODUCT_TYPE_REDUCED_TAX = 6; public const PRODUCT_TYPE_OVERRIDE_TAX = 7; public const PRODUCT_TYPE_ZERO_RATED = 8; public const PRODUCT_TYPE_REVERSE_TAX = 9; protected $fillable = [ 'custom_value1', 'custom_value2', 'custom_value3', 'custom_value4', 'product_key', 'notes', 'cost', 'price', 'quantity', 'tax_name1', 'tax_name2', 'tax_name3', 'tax_rate1', 'tax_rate2', 'tax_rate3', 'in_stock_quantity', 'stock_notification_threshold', 'stock_notification', 'max_quantity', 'product_image', 'tax_id', ]; protected $touches = []; public function getEntityType() { return self::class; } public function company() { return $this->belongsTo(Company::class); } public function user() { return $this->belongsTo(User::class)->withTrashed(); } public function vendor() { return $this->belongsTo(Vendor::class)->withTrashed(); } public function assigned_user() { return $this->belongsTo(User::class, 'assigned_user_id', 'id')->withTrashed(); } public function documents() { return $this->morphMany(Document::class, 'documentable'); } public function translate_entity() { return ctrans('texts.product'); } public function markdownNotes() { $converter = new CommonMarkConverter([ 'allow_unsafe_links' => false, 'renderer' => [ 'soft_break' => '
', ], ]); return $converter->convert($this->notes); } }