File manager - Edit - /var/www/html/gop/api/app/Models/FaseServicoSubitem.php
Back
<?php namespace App\Models; use App\Casts\Money; use Illuminate\Database\Eloquent\Casts\Attribute; class FaseServicoSubitem extends BaseModel { protected $table = 'fase_servico_subitens'; protected $fillable = [ 'nome', 'descricao', 'quantidade', 'unidade', 'preco_unitario', 'porcentagem', 'fase_servico_id', 'bdi', ]; protected $casts = [ 'preco_unitario' => Money::class, ]; protected $appends = [ 'porcentagem_medida', 'ultima_medicao', 'modificacoes', 'valor_total', ]; protected function porcentagemMedida(): Attribute { $ultimaMedicao = $this->medicoes()->latest()->first(); $quantidadeMedida = $ultimaMedicao?->quantidade ?: 0; $quantidadeTotal = $this->quantidade + $this->acrescidos->sum('quantidade') - $this->suprimidos->sum('quantidade'); $porcentagem = ($quantidadeMedida / $quantidadeTotal) * 100; return new Attribute( get: fn () => $porcentagem, ); } protected function ultimaMedicao(): Attribute { $ultimaMedicao = $this->medicoes()->latest()->first(); return new Attribute( get: fn () => $ultimaMedicao?->quantidade, ); } protected function valorTotal(): Attribute { return new Attribute( get: fn () => $this->quantidade * $this->preco_unitario * (1 + $this->bdi / 100), ); } protected function modificacoes(): Attribute { $quantidadeAcrescida = $this->acrescidos->sum('quantidade'); $valorAcrescido = $this->acrescidos->pluck('valor_total')->sum(); $quantidadeSuprimida = $this->suprimidos->sum('quantidade'); $valorSuprimido = $this->suprimidos->pluck('valor_total')->sum(); return new Attribute( get: fn () => [ 'quantidade_acrescida' => $quantidadeAcrescida, 'valor_acrescido' => $valorAcrescido, 'quantidade_suprimida' => $quantidadeSuprimida, 'valor_suprimido' => $valorSuprimido, 'quantidade_total' => $this->quantidade + $quantidadeAcrescida - $quantidadeSuprimida, 'valor_total' => $this->quantidade * (float) $this->preco_unitario * (1 + $this->bdi / 100) + $valorAcrescido - $valorSuprimido, ], ); } public function servico() { return $this->belongsTo(FaseServico::class); } public function medicoes() { return $this->hasMany(Medicao::class); } public function acrescidos() { return $this->hasMany(Acrescido::class); } public function suprimidos() { return $this->hasMany(Suprimido::class); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.01 |
proxy
|
phpinfo
|
Settings