This commit is contained in:
178
api/app/Models/Almoxarifado/EntradaItem.php
Normal file
178
api/app/Models/Almoxarifado/EntradaItem.php
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user