'boolean', 'estornado_em' => 'datetime:d/m/Y', ]; protected $fillable = [ 'saida_id', 'material_id', 'escolheu_entrada_item_manualmente', 'estornado_em', ]; protected $hidden = [ 'saida_id', 'created_at', 'created_lotacao_id', 'created_centro_custo_id', 'updated_at', 'updated_lotacao_id', 'updated_centro_custo_id', ]; protected $appends = [ 'estornado', 'quantidade' ]; public function saida() { return $this->belongsTo(Saida::class); } public function material() { return $this->belongsTo(Material::class); } public function entradaItens() { return $this->belongsToMany(EntradaItem::class, 'almoxarifado_saida_item_entrada_item') ->using(SaidaItemEntradaItem::class) ->as('pivotSaidaItemEntradaItem') ->withPivot(['quantidade_saida', 'entrada_item_estornado_id']) ->withTimestamps(); } public function entradaItensTransferencia() { return $this->belongsToMany( EntradaItem::class, 'almoxarifado_saida_item_entrada_item_transferencia', 'saida_item_origem_id', 'entrada_item_destino_id', ) ->using(SaidaItemEntradaItemTransferencia::class) ->as('pivotSaidaItemEntradaItemTransferencia') ->withTimestamps(); } public function requisicaoRespostaItem() { return $this->hasOne(RequisicaoRespostaItem::class); } public function farmaciaReceitaItemEntrega() { return $this->hasOne(ReceitaItemEntrega::class); } public function getEstornadoAttribute() { return !is_null($this->estornado_em); } public function getQuantidadeAttribute() { $quantidade = 0; $this->entradaItens->map(function ($entradaItem) use (&$quantidade) { $quantidade += (int) $entradaItem->pivotSaidaItemEntradaItem->quantidade_saida; }); return $quantidade; } }