'int', 'month' => 'int', 'year' => 'int', 'number' => 'int', 'net' => 'float', 'tax_rate' => 'float', 'tax' => 'float', 'taxable' => 'bool', 'total' => 'float', 'paid_out' => 'bool', 'cancellation' => 'bool', 'cancellation_id' => 'int', 'status' => 'int', 'infos' => 'array' ]; protected $dates = [ 'date', 'paid_out_date', 'cancellation_date' ]; protected $fillable = [ 'user_id', 'month', 'year', 'date', 'full_number', 'number', 'net', 'tax_rate', 'tax', 'total', 'taxable', 'filename', 'dir', 'disk', 'infos', 'paid_out', 'paid_out_date', 'cancellation', 'cancellation_id', 'cancellation_date', 'status' ]; public static $statusTypes = [ 0 => 'offen', 1 => 'bezahlt', 2 => 'prüfen', 10 => 'storniert' ]; public static $statusColors = [ 0 => 'warning', 1 => 'success', 2 => 'secondary', 10 => 'danger', ]; public function user() { return $this->belongsTo(User::class); } public function user_credit_items() { return $this->hasMany(UserCreditItem::class); } public function isCredit(){ return $this->filename ? true : false; } public function getDateAttribute($value) { return $value ? Carbon::parse($value)->format(\Util::formatDateDB()) : ""; } public function setDateAttribute( $value ) { $this->attributes['date'] = isset($value) ? (new Carbon($value))->format('Y-m-d') : NULL; } public function getDateRaw(){ return isset($this->attributes['date']) ? $this->attributes['date'] : NULL; } public function getFormattedTax() { return formatNumber($this->attributes['tax']); } public function getFormattedNet() { return formatNumber($this->attributes['net']); } public function getFormattedTotal() { return formatNumber($this->attributes['total']); } public function getStatusType(){ return isset(self::$statusTypes[$this->status]) ? self::$statusTypes[$this->status] : ""; } public function getStatusColor(){ return isset(self::$statusColors[$this->status]) ? self::$statusColors[$this->status] : "default"; } public function getDownloadPath($full = false){ if(!$full){ return $this->dir.$this->filename; } return \Storage::disk($this->disk)->path($this->dir.$this->filename); } }