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,26 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class BalanceteFechamento extends Model
{
protected $table = 'almoxarifado_balancete_fechamento';
protected $fillable = [
'mes',
'ano',
'saldo_fisico',
'saldo_financeiro',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
}

View File

@@ -0,0 +1,47 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\SujeitoAtencao\Paciente;
use App\Models\Cadastro\SujeitoAtencao\Usuario;
use App\Models\Model;
class Dispensacao extends Model
{
protected $table = 'almoxarifado_dispensacao';
protected $casts = [
'data_dispensacao' => 'datetime:Y-m-d',
];
protected $fillable = [
'paciente_id',
'usuario_id',
'data_dispensacao',
'observacao',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function usuario()
{
return $this->belongsTo(Usuario::class);
}
public function paciente()
{
return $this->belongsTo(Paciente::class);
}
public function itens()
{
return $this->hasMany(DispensacaoItem::class);
}
}

View File

@@ -0,0 +1,50 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Material\Material;
use App\Models\Model;
class DispensacaoItem extends Model
{
protected $table = 'almoxarifado_dispensacao_item';
protected $casts = [
'dispensado_em' => 'datetime:Y-m-d',
];
protected $fillable = [
'dispensacao_id',
'material_id',
'saida_item_id',
'quantidade',
'dispensado_em',
'observacao',
'estornado',
'supervisor_id',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function dispensacao()
{
return $this->belongsTo(Dispensacao::class);
}
public function material()
{
return $this->belongsTo(Material::class);
}
public function saidaItem()
{
return $this->belongsTo(SaidaItem::class);
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class DocumentoTipo extends Model
{
protected $table = 'almoxarifado_documento_tipo';
protected $fillable = [
'id',
'nome',
];
protected $hidden = [
'created_at',
'updated_at',
];
}

View File

@@ -0,0 +1,78 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Estabelecimento\CentroCusto;
use App\Models\Model;
class Entrada extends Model
{
protected $table = 'almoxarifado_entrada';
protected $casts = [
'finalizada' => 'boolean',
'finalizada_em' => 'datetime:d/m/Y',
];
protected $fillable = [
'centro_custo_id',
'tipo_id',
'finalizada',
'finalizada_em',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
protected $with = [
'documento',
];
public static function boot()
{
parent::boot();
self::saved(function($model) {
$model = (object) $model->fresh()->getRawOriginal();
EntradaLog::create([
'entrada_id' => $model->id,
'centro_custo_id' => $model->centro_custo_id,
'tipo_id' => $model->tipo_id,
'finalizada' => $model->finalizada,
'finalizada_em' => $model->finalizada_em,
]);
});
}
public function centroCusto()
{
return $this->belongsTo(CentroCusto::class);
}
public function tipo()
{
return $this->belongsTo(EntradaTipo::class);
}
public function documento()
{
return $this->hasOne(EntradaDocumento::class);
}
public function itens()
{
return $this->hasMany(EntradaItem::class);
}
public function requisicaoResposta()
{
return $this->hasOne(RequisicaoResposta::class);
}
}

View File

@@ -0,0 +1,74 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Fornecedor\Fornecedor;
use App\Models\Cadastro\OrigemProgramatica;
use App\Models\Model;
class EntradaDocumento extends Model
{
protected $table = 'almoxarifado_entrada_documento';
protected $casts = [
'data' => 'datetime:d/m/Y',
];
protected $fillable = [
'entrada_id',
'fornecedor_id',
'origem_programatica_id',
'tipo_id',
'numero_pedido',
'numero',
'data',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public static function boot()
{
parent::boot();
self::saved(function($model) {
$model = (object) $model->fresh()->getRawOriginal();
EntradaDocumentoLog::create([
'entrada_documento_id' => $model->id,
'entrada_id' => $model->entrada_id,
'tipo_id' => $model->tipo_id,
'fornecedor_id' => $model->fornecedor_id,
'numero_pedido' => $model->numero_pedido,
'numero' => $model->numero,
'data' => $model->data,
]);
});
}
public function entrada()
{
return $this->belongsTo(Entrada::class);
}
public function fornecedor()
{
return $this->belongsTo(Fornecedor::class);
}
public function origemProgramatica()
{
return $this->belongsTo(OrigemProgramatica::class);
}
public function documentoTipo()
{
return $this->belongsTo(DocumentoTipo::class);
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class EntradaDocumentoLog extends Model
{
protected $table = 'almoxarifado_entrada_documento_log';
protected $casts = [
'data' => 'datetime:d/m/Y',
];
protected $fillable = [
'entrada_documento_id',
'entrada_id',
'fornecedor_id',
'tipo_id',
'numero_pedido',
'numero',
'data',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
}

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;
}
}

View File

@@ -0,0 +1,44 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class EntradaItemLog extends Model
{
protected $table = 'almoxarifado_entrada_item_log';
protected $casts = [
'validade_lote' => 'datetime:d/m/Y',
'estornado_em' => 'datetime:d/m/Y',
];
protected $fillable = [
'entrada_item_id',
'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',
];
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class EntradaLog extends Model
{
protected $table = 'almoxarifado_entrada_log';
protected $casts = [
'finalizada' => 'boolean',
'finalizada_em' => 'datetime:d/m/Y',
];
protected $fillable = [
'entrada_id',
'centro_custo_id',
'tipo_id',
'finalizada',
'finalizada_em',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class EntradaTipo extends Model
{
protected $table = 'almoxarifado_entrada_tipo';
protected $fillable = [
'id',
'nome',
];
protected $hidden = [
'created_at',
'updated_at',
];
}

View File

@@ -0,0 +1,50 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Material\Material;
use App\Models\Integracao\Bnafar\Medicamento;
use App\Models\Model;
class Inventario extends Model
{
protected $table = 'almoxarifado_inventario';
protected $casts = [
'finalizado' => 'boolean',
'finalizado_em' => 'datetime:d/m/Y',
'validade_lote' => 'datetime:d/m/Y',
'is_novo_lote' => 'boolean',
];
protected $fillable = [
'finalizado',
'finalizado_em',
'inventario_id',
'material_id',
'integracao_bnafar_medicamento_id',
'lote',
'validade_lote',
'contagem',
'is_novo_lote',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function material()
{
return $this->belongsTo(Material::class);
}
public function integracaoBnafarMedicamento()
{
return $this->belongsTo(Medicamento::class);
}
}

View File

@@ -0,0 +1,52 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class MotivoBaixa extends Model
{
use SoftDeletes;
protected $table = 'almoxarifado_motivo_baixa';
protected $casts = [
'justificar' => 'boolean',
];
protected $fillable = [
'tipo_id',
'descricao',
'justificar',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
'deleted_at',
'deleted_lotacao_id',
'deleted_centro_custo_id',
];
public function tipo()
{
return $this->belongsTo(MotivoBaixaTipo::class);
}
public function baixas()
{
return $this->hasMany(SaidaBaixa::class, 'motivo_id');
}
public function getIsAllowedToDeleteAttribute()
{
return $this->hasNoOne([
'baixas',
]);
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class MotivoBaixaTipo extends Model
{
protected $table = 'almoxarifado_motivo_baixa_tipo';
protected $fillable = [
'id',
'nome',
];
protected $hidden = [
'created_at',
'updated_at',
];
}

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Estabelecimento\CentroCusto;
use App\Models\Cadastro\Grupo\Grupo;
use App\Models\Model;
class ParametrizacaoControleEstoqueGrupo extends Model
{
protected $table = 'almoxarifado_parametrizacao_controle_estoque_grupo';
protected $fillable = [
'centro_custo_id',
'grupo_id',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function centroCusto()
{
return $this->belongsTo(CentroCusto::class);
}
public function grupo()
{
return $this->belongsTo(Grupo::class);
}
public function subgrupos()
{
return $this->hasMany(ParametrizacaoControleEstoqueSubgrupo::class);
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Subgrupo\Subgrupo;
use App\Models\Model;
class ParametrizacaoControleEstoqueSubgrupo extends Model
{
protected $table = 'almoxarifado_parametrizacao_controle_estoque_subgrupo';
protected $fillable = [
'subgrupo_id',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function parametrizacaoControleEstoqueGrupo()
{
return $this->belongsTo(ParametrizacaoControleEstoqueGrupo::class);
}
public function subgrupo()
{
return $this->belongsTo(Subgrupo::class);
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Grupo\Grupo;
use App\Models\Cadastro\Material\Material;
use App\Models\Model;
class ParametrizacaoDispensacaoMateriais extends Model
{
protected $table = 'almoxarifado_parametrizacao_dispensacao';
protected $fillable = [
'grupo_id',
'material_id',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function grupo()
{
return $this->belongsTo(Grupo::class);
}
public function material()
{
return $this->belongsTo(Material::class);
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Estabelecimento\CentroCusto;
use App\Models\Model;
class ParametrizacaoDispensacaoUnidade extends Model
{
protected $table = 'almoxarifado_parametrizacao_dispensacao_unidade';
protected $fillable = [
'centro_custo_id',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function centroCusto()
{
return $this->belongsTo(CentroCusto::class);
}
}

View File

@@ -0,0 +1,53 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Estabelecimento\CentroCusto;
use App\Models\Cadastro\Material\Material;
use App\Models\Model;
class ParametrizacaoEstoque extends Model
{
protected $table = 'almoxarifado_parametrizacao_estoque';
protected $fillable = [
'centro_custo_id',
'material_id',
'estoque_minimo',
'estoque_maximo',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
protected $appends = [
'has_estoque_minimo',
'has_estoque_maximo',
];
public function centroCusto()
{
return $this->belongsTo(CentroCusto::class);
}
public function material()
{
return $this->belongsTo(Material::class);
}
public function getHasEstoqueMinimo()
{
return !is_null($this->estoque_minimo);
}
public function getHasEstoqueMaximo()
{
return !is_null($this->estoque_maximo);
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Estabelecimento\CentroCusto;
use App\Models\Cadastro\Grupo\Grupo;
use App\Models\Model;
class ParametrizacaoPortalDivulgacaoGrupo extends Model
{
protected $table = 'almoxarifado_parametrizacao_portal_divulgacao_grupo';
protected $fillable = [
'centro_custo_id',
'grupo_id',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function centroCusto()
{
return $this->belongsTo(CentroCusto::class);
}
public function grupo()
{
return $this->belongsTo(Grupo::class);
}
public function subgrupos()
{
return $this->hasMany(ParametrizacaoPortalDivulgacaoSubgrupo::class);
}
public function material()
{
return $this->hasMany(ParametrizacaoPortalDivulgacaoMaterialgrupo::class);
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class ParametrizacaoPortalDivulgacaoMaterialgrupo extends Model
{
protected $table = 'almoxarifado_parametrizacao_portal_divulgacao_item';
protected $fillable = [
'grupo_id',
'material_id',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function parametrizacaoPortalDivulgacaoGrupo()
{
return $this->belongsTo(ParametrizacaoPortalDivulgacaoGrupo::class);
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Subgrupo\Subgrupo;
use App\Models\Model;
class ParametrizacaoPortalDivulgacaoSubgrupo extends Model
{
protected $table = 'almoxarifado_parametrizacao_portal_divulgacao_subgrupo';
protected $fillable = [
'subgrupo_id',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function parametrizacaoPortalDivulgacaoGrupo()
{
return $this->belongsTo(ParametrizacaoPortalDivulgacaoGrupo::class);
}
public function subgrupo()
{
return $this->belongsTo(Subgrupo::class);
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class ParametrizacaoRequisicao extends Model
{
protected $table = 'almoxarifado_parametrizacao_requisicao';
protected $casts = [
'numero_requisicao_automatico' => 'boolean',
'permite_requisitar_materiais_sem_estoque' => 'boolean',
'motivo_obrigatorio' => 'boolean'
];
protected $fillable = [
'numero_requisicao_automatico',
'permite_requisitar_materiais_sem_estoque',
'prazo_validade',
'motivo_obrigatorio'
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
}

View File

@@ -0,0 +1,46 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Estabelecimento\CentroCusto;
use App\Models\Model;
class Requisicao extends Model
{
protected $table = 'almoxarifado_requisicao';
protected $fillable = [
'status_id',
'centro_custo_id',
'numero',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function status()
{
return $this->belongsTo(RequisicaoStatus::class);
}
public function centroCusto()
{
return $this->belongsTo(CentroCusto::class);
}
public function itens()
{
return $this->hasMany(RequisicaoItem::class);
}
public function respostas()
{
return $this->hasMany(RequisicaoResposta::class);
}
}

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Material\Material;
use App\Models\Model;
class RequisicaoItem extends Model
{
protected $table = 'almoxarifado_requisicao_item';
protected $fillable = [
'material_id',
'quantidade',
];
protected $hidden = [
'requisicao_id',
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function requisicao()
{
return $this->belongsTo(Requisicao::class);
}
public function material()
{
return $this->belongsTo(Material::class);
}
public function respostaItens()
{
return $this->hasMany(RequisicaoRespostaItem::class);
}
}

View File

@@ -0,0 +1,37 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Estabelecimento\CentroCusto;
use App\Models\Cadastro\Material\Material;
use App\Models\Model;
class RequisicaoPermissao extends Model
{
protected $table = 'almoxarifado_requisicao_permissao';
protected $fillable = [
'centro_custo_requisitante_id',
'material_id',
'estoque_maximo',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function centroCustoRequisitante()
{
return $this->belongsTo(CentroCusto::class);
}
public function material()
{
return $this->belongsTo(Material::class);
}
}

View File

@@ -0,0 +1,72 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\SujeitoAtencao\Lotacao;
use App\Models\Model;
class RequisicaoResposta extends Model
{
protected $table = 'almoxarifado_requisicao_resposta';
protected $casts = [
'enviada_em' => 'datetime:d/m/Y H:i:s',
'recebida_em' => 'datetime:d/m/Y H:i:s',
];
protected $fillable = [
'status_id',
'requisicao_id',
'reserva_id',
'saida_id',
'entrada_id',
'observacoes',
'enviada_em',
'enviada_lotacao_id',
'recebida_em',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function status()
{
return $this->belongsTo(RequisicaoRespostaStatus::class);
}
public function requisicao()
{
return $this->belongsTo(Requisicao::class);
}
public function reserva()
{
return $this->belongsTo(Reserva::class);
}
public function saida()
{
return $this->belongsTo(Saida::class);
}
public function entrada()
{
return $this->belongsTo(Entrada::class);
}
public function enviadaLotacao()
{
return $this->belongsTo(Lotacao::class);
}
public function itens()
{
return $this->hasMany(RequisicaoRespostaItem::class);
}
}

View File

@@ -0,0 +1,88 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class RequisicaoRespostaItem extends Model
{
protected $table = 'almoxarifado_requisicao_resposta_item';
protected $fillable = [
'requisicao_item_id',
'reserva_item_id',
'saida_item_id',
'motivo_id',
'motivo_outro',
];
protected $hidden = [
'requisicao_resposta_id',
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
protected $appends = [
'quantidade_entrada',
'quantidade_recebimento',
];
public function requisicaoResposta()
{
return $this->belongsTo(RequisicaoResposta::class);
}
public function requisicaoItem()
{
return $this->belongsTo(RequisicaoItem::class);
}
public function reservaItem()
{
return $this->belongsTo(ReservaItem::class);
}
public function saidaItem()
{
return $this->belongsTo(SaidaItem::class);
}
public function motivo()
{
return $this->belongsTo(RequisicaoRespostaItemMotivo::class);
}
public function entradaItens()
{
return $this->belongsToMany(EntradaItem::class, 'almoxarifado_requisicao_resposta_item_entrada_item')
->using(RequisicaoRespostaItemEntradaItem::class)
->as('pivotRequisicaoRespostaItemEntradaItem')
->withTimestamps();
}
public function recebimentos()
{
return $this->hasMany(RequisicaoRespostaItemRecebimento::class);
}
public function getQuantidadeEntradaAttribute()
{
$quantidade = 0;
$this->entradaItens->map(function ($entradaItem) use (&$quantidade) {
$quantidade += (int) $entradaItem->quantidade;
});
return $quantidade;
}
public function getQuantidadeRecebimentoAttribute()
{
return $this->recebimentos->sum('quantidade');
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Pivot;
class RequisicaoRespostaItemEntradaItem extends Pivot
{
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
}

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class RequisicaoRespostaItemMotivo extends Model
{
protected $table = 'almoxarifado_requisicao_resposta_item_motivo';
protected $fillable = [
'id',
'nome',
];
protected $hidden = [
'created_at',
'updated_at',
];
public function requisicaoRespostaItens()
{
return $this->hasMany(RequisicaoRespostaItem::class, 'motivo_id');
}
}

View File

@@ -0,0 +1,37 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class RequisicaoRespostaItemRecebimento extends Model
{
protected $table = 'almoxarifado_requisicao_resposta_item_recebimento';
protected $casts = [
'validade_lote' => 'datetime:d/m/Y',
];
protected $fillable = [
'entrada_item_origem_id',
'quantidade',
'lote',
'validade_lote',
'controlava_estoque'
];
protected $hidden = [
'requisicao_resposta_item_id',
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function requisicaoRespostaItem()
{
return $this->belongsTo(RequisicaoRespostaItem::class);
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class RequisicaoRespostaStatus extends Model
{
protected $table = 'almoxarifado_requisicao_resposta_status';
protected $fillable = [
'id',
'nome',
];
protected $hidden = [
'created_at',
'updated_at',
];
public function requisicaoRespostas()
{
return $this->hasMany(RequisicaoResposta::class, 'status_id');
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class RequisicaoStatus extends Model
{
protected $table = 'almoxarifado_requisicao_status';
protected $fillable = [
'id',
'nome',
];
protected $hidden = [
'created_at',
'updated_at',
];
public function requisicoes()
{
return $this->hasMany(Requisicao::class, 'status_id');
}
}

View File

@@ -0,0 +1,38 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class Reserva extends Model
{
protected $table = 'almoxarifado_reserva';
protected $fillable = [
'motivo_id',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function motivo()
{
return $this->belongsTo(ReservaMotivo::class);
}
public function itens()
{
return $this->hasMany(ReservaItem::class);
}
public function requisicaoResposta()
{
return $this->hasOne(RequisicaoResposta::class);
}
}

View File

@@ -0,0 +1,70 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Material\Material;
use App\Models\Model;
class ReservaItem extends Model
{
protected $table = 'almoxarifado_reserva_item';
protected $casts = [
'escolheu_entrada_item_manualmente' => 'boolean',
];
protected $fillable = [
'material_id',
'escolheu_entrada_item_manualmente',
];
protected $hidden = [
'reserva_id',
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
protected $appends = [
'quantidade',
];
public function reserva()
{
return $this->belongsTo(Reserva::class);
}
public function material()
{
return $this->belongsTo(Material::class);
}
public function entradaItens()
{
return $this->belongsToMany(EntradaItem::class, 'almoxarifado_reserva_item_entrada_item')
->using(ReservaItemEntradaItem::class)
->as('pivotReservaItemEntradaItem')
->withPivot(['quantidade_saida'])
->withTimestamps();
}
public function requisicaoRespostaItem()
{
return $this->hasOne(RequisicaoRespostaItem::class);
}
public function getQuantidadeAttribute()
{
$quantidade = 0;
$this->entradaItens->map(function ($entradaItem) use (&$quantidade) {
$quantidade += (int) $entradaItem->pivotReservaItemEntradaItem->quantidade_saida;
});
return $quantidade;
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Pivot;
class ReservaItemEntradaItem extends Pivot
{
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
}

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class ReservaMotivo extends Model
{
protected $table = 'almoxarifado_reserva_motivo';
protected $fillable = [
'id',
'nome',
];
protected $hidden = [
'created_at',
'updated_at',
];
public function reservas()
{
return $this->hasMany(Reserva::class, 'motivo_id');
}
}

View File

@@ -0,0 +1,77 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Estabelecimento\CentroCusto;
use App\Models\Model;
class Saida extends Model
{
protected $table = 'almoxarifado_saida';
protected $casts = [
'finalizada' => 'boolean',
'finalizada_em' => 'datetime:d/m/Y',
];
protected $fillable = [
'centro_custo_id',
'tipo_id',
'finalizada',
'finalizada_em',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
protected $with = [
'requisicao',
'baixa',
];
public function centroCusto()
{
return $this->belongsTo(CentroCusto::class);
}
public function tipo()
{
return $this->belongsTo(SaidaTipo::class);
}
public function requisicao()
{
return $this->hasOne(SaidaRequisicao::class);
}
public function transferencia()
{
return $this->hasOne(SaidaTransferencia::class);
}
public function baixa()
{
return $this->hasOne(SaidaBaixa::class);
}
public function itens()
{
return $this->hasMany(SaidaItem::class);
}
public function requisicaoResposta()
{
return $this->hasOne(RequisicaoResposta::class);
}
public function itensRecusadosTransferencia()
{
return $this->hasMany(SaidaItemRecusadoTransferencia::class);
}
}

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\SujeitoAtencao\Usuario;
use App\Models\Model;
class SaidaBaixa extends Model
{
protected $table = 'almoxarifado_saida_baixa';
protected $fillable = [
'saida_id',
'motivo_id',
'justificativa',
'usuario_solicitante_id',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function saida()
{
return $this->belongsTo(Saida::class);
}
public function motivo()
{
return $this->belongsTo(MotivoBaixa::class);
}
public function usuarioSolicitante()
{
return $this->belongsTo(Usuario::class);
}
}

View File

@@ -0,0 +1,98 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Material\Material;
use App\Models\Farmacia\ReceitaItemEntrega;
use App\Models\Model;
class SaidaItem extends Model
{
protected $table = 'almoxarifado_saida_item';
protected $casts = [
'escolheu_entrada_item_manualmente' => '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;
}
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Pivot;
class SaidaItemEntradaItem extends Pivot
{
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
}

View File

@@ -0,0 +1,17 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Pivot;
class SaidaItemEntradaItemTransferencia extends Pivot
{
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class SaidaItemRecusadoTransferencia extends Model
{
protected $table = 'almoxarifado_saida_item_recusado_transferencia';
protected $fillable = [
'saida_id',
'saida_item_id',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function saida()
{
return $this->belongsTo(Saida::class);
}
public function saidaItem()
{
return $this->belongsTo(SaidaItem::class);
}
}

View File

@@ -0,0 +1,48 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Estabelecimento\CentroCusto;
use App\Models\Cadastro\SujeitoAtencao\Usuario;
use App\Models\Model;
class SaidaRequisicao extends Model
{
protected $table = 'almoxarifado_saida_requisicao';
protected $casts = [
'data' => 'datetime:d/m/Y',
];
protected $fillable = [
'saida_id',
'centro_custo_id',
'usuario_id',
'numero',
'data',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function saida()
{
return $this->belongsTo(Saida::class);
}
public function centroCusto()
{
return $this->belongsTo(CentroCusto::class);
}
public function usuario()
{
return $this->belongsTo(Usuario::class);
}
}

View File

@@ -0,0 +1,25 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Model;
class SaidaTipo extends Model
{
protected $table = 'almoxarifado_saida_tipo';
protected $fillable = [
'id',
'nome',
];
protected $hidden = [
'created_at',
'updated_at',
];
public function saidas()
{
return $this->hasMany(Saida::class, 'tipo_id');
}
}

View File

@@ -0,0 +1,49 @@
<?php
namespace App\Models\Almoxarifado;
use App\Models\Cadastro\Estabelecimento\CentroCusto;
use App\Models\Cadastro\SujeitoAtencao\Usuario;
use App\Models\Model;
class SaidaTransferencia extends Model
{
protected $table = 'almoxarifado_saida_transferencia';
protected $casts = [
'confirmado' => 'boolean',
'recusado' => 'boolean',
];
protected $fillable = [
'saida_id',
'centro_custo_id',
'usuario_id',
'confirmado',
'recusado',
];
protected $hidden = [
'created_at',
'created_lotacao_id',
'created_centro_custo_id',
'updated_at',
'updated_lotacao_id',
'updated_centro_custo_id',
];
public function saida()
{
return $this->belongsTo(Saida::class);
}
public function centroCusto()
{
return $this->belongsTo(CentroCusto::class);
}
public function usuario()
{
return $this->belongsTo(Usuario::class);
}
}