init commit
All checks were successful
build-api-image / build (push) Successful in 51s

This commit is contained in:
Antonio Lopes dos Santos
2026-08-04 16:52:02 -03:00
commit afec302c3e
11594 changed files with 1636728 additions and 0 deletions

View File

@@ -0,0 +1,178 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Fabricante\Fabricante;
use App\Models\Cadastro\Material\Material;
use App\Models\Integracao\Bnafar\Medicamento;
use App\Models\Model;
class EntradaItem extends Model
{
protected $table = 'almoxarifado_entrada_item';
protected $casts = [
'validade_lote' => 'datetime:d/m/Y',
'estornado_em' => 'datetime:d/m/Y',
];
protected $fillable = [
'entrada_id',
'material_id',
'integracao_bnafar_medicamento_id',
'quantidade',
'lote',
'validade_lote',
'valor_total',
'valor_unitario',
'numero_empenho',
'despesas',
'numero_autorizacao_fornecimento',
'fabricante_id',
'codigo_barras',
'estornado_em',
'saida_item_estornado_id',
];
protected $hidden = [
'entrada_id',
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
protected $appends = [
'possui_lote',
'valor_unitario_formatted',
'valor_total_formatted',
'despesas_formatted',
'estornado',
];
public static function boot()
{
parent::boot();
self::saved(function($model) {
$model = (object) $model->fresh()->getRawOriginal();
EntradaItemLog::create([
'entrada_item_id' => $model->id,
'entrada_id' => $model->entrada_id,
'material_id' => $model->material_id,
'integracao_bnafar_medicamento_id' => $model->integracao_bnafar_medicamento_id,
'quantidade' => $model->quantidade,
'lote' => $model->lote,
'validade_lote' => $model->validade_lote,
'valor_total' => $model->valor_total,
'valor_unitario' => $model->valor_unitario,
'numero_empenho' => $model->numero_empenho,
'despesas' => $model->despesas,
'numero_autorizacao_fornecimento' => $model->numero_autorizacao_fornecimento,
'fabricante_id' => $model->fabricante_id,
'codigo_barras' => $model->codigo_barras,
'estornado_em' => $model->estornado_em,
'saida_item_estornado_id' => $model->saida_item_estornado_id,
]);
});
}
public function entrada()
{
return $this->belongsTo(Entrada::class);
}
public function material()
{
return $this->belongsTo(Material::class);
}
public function integracaoBnafarMedicamento()
{
return $this->belongsTo(Medicamento::class);
}
public function fabricante()
{
return $this->belongsTo(Fabricante::class);
}
public function saidaItemEstornado()
{
return $this->belongsTo(SaidaItem::class);
}
public function saidaItens()
{
return $this->belongsToMany(SaidaItem::class, 'almoxarifado_saida_item_entrada_item')
->using(SaidaItemEntradaItem::class)
->as('pivotSaidaItemEntradaItem')
->withPivot(['quantidade_saida', 'entrada_item_estornado_id'])
->withTimestamps();
}
public function saidaItensTransferencia()
{
return $this->belongsToMany(
SaidaItem::class,
'almoxarifado_saida_item_entrada_item_transferencia',
'entrada_item_destino_id',
'saida_item_origem_id',
)
->using(SaidaItemEntradaItemTransferencia::class)
->as('pivotSaidaItemEntradaItemTransferencia')
->withTimestamps();
}
public function reservaItens()
{
return $this->belongsToMany(ReservaItem::class, 'almoxarifado_reserva_item_entrada_item')
->using(ReservaItemEntradaItem::class)
->as('pivotReservaItemEntradaItem')
->withPivot(['quantidade_saida'])
->withTimestamps();
}
public function requisicaoRespotaItens()
{
return $this->belongsToMany(RequisicaoRespostaItem::class, 'almoxarifado_requisicao_resposta_item_entrada_item')
->using(RequisicaoRespostaItemEntradaItem::class)
->as('pivotRequisicaoRespostaItemEntradaItem')
->withTimestamps();
}
public function getPossuiLoteAttribute()
{
return !is_null($this->lote);
}
public function getValorUnitarioFormattedAttribute()
{
return number_format($this->valor_unitario, 6, ',', '.');
}
public function getValorTotalFormattedAttribute()
{
return number_format($this->valor_total, 6, ',', '.');
}
public function getDespesasFormattedAttribute()
{
return number_format($this->despesas, 6, ',', '.');
}
public function getEstornadoAttribute()
{
return !is_null($this->estornado_em);
}
public function getHasSaidasFinalizadasAttribute()
{
return $this->saidaItens()
->whereHas('saida', fn ($q) => $q->where('finalizada', true))
->count() > 0;
}
}